Lab033. Общий пакет канала и приоритетное обслуживание 1. Git и конфигурация - Git-корень: C:/Users/user/Desktop/projects/SDR_Rover. - Ветка: main; HEAD: 3dbb7afa8332b49535d867f1eabca7bdd2b7cdde. - Исходное видео: 20.766667 с, 63 составных кадров, 3 кадра/с. - BASE 240x135 grayscale JPEG Q23; ROI 320x180 grayscale JPEG Q33. - Lab028: payload 512 байт; Lab030: FEC 12+3; Lab031: D=1. - Фактический внешний видеопоток до Lab033: 226.951 кбит/с; с общим заголовком: 240.240 кбит/с. - Аварийная команда: 0.024655; обычные команды: 10.256; телеметрия: 7.692 кбит/с. - Общая предложенная нагрузка: 258.214 кбит/с; суммарная служебная доля: 34.923%. 2. Формат общего заголовка - struct: !4sBBBBHIQHII; размер: 32 байта; network byte order, неявного padding нет. - Смещения: magic[4]@0, version:u8@4, traffic_class:u8@5, direction:u8@6, flags:u8@7, stream_id:u16@8, sequence_number:u32@10, generation_time_us:u64@14, deadline_ms:u16@22, payload_length:u32@24, packet_crc32:u32@28. - traffic_class: 1=EMERGENCY, 2=CONTROL, 3=TELEMETRY, 4=VIDEO; direction: 1=GROUND_TO_ROVER, 2=ROVER_TO_GROUND; flags в версии 1 равен нулю. - CRC32 защищает заголовок с нулевым packet_crc32 и всю полезную нагрузку. 3. Девять сочетаний скорости и планировщика speed | scheduler | offered/capacity | control P95 ms | emergency ms | telemetry P95 ms | video P95 ms | queue@end packets | drain extra s | final video 300 | FIFO | 0.8607 | 238.634 | 1.707 | 233.680 | 304.579 | 18 | 0.231867 | 1.000000 300 | Строгий приоритет | 0.8607 | 17.466 | 1.707 | 20.107 | 322.072 | 15 | 0.231867 | 1.000000 300 | Приоритет + замена | 0.8607 | 17.466 | 1.707 | 20.107 | 322.072 | 15 | 0.231867 | 1.000000 260 | FIFO | 0.9931 | 333.059 | 1.969 | 331.782 | 420.025 | 32 | 0.399200 | 1.000000 260 | Строгий приоритет | 0.9931 | 18.754 | 1.969 | 22.448 | 445.846 | 23 | 0.399200 | 1.000000 260 | Приоритет + замена | 0.9931 | 18.754 | 1.969 | 22.448 | 445.846 | 23 | 0.399200 | 1.000000 230 | FIFO | 1.1227 | 2240.535 | 881.113 | 2225.607 | 2417.731 | 181 | 2.547420 | 1.000000 230 | Строгий приоритет | 1.1227 | 21.848 | 11.548 | 25.111 | 2505.995 | 127 | 2.547420 | 1.000000 230 | Приоритет + замена | 1.1227 | 21.848 | 11.548 | 25.111 | 2505.995 | 127 | 2.547420 | 1.000000 4. Подробные показатели [300 кбит/с; FIFO] - Передано 1703 пакетов, 670280 байт; средняя/максимальная очередь 10.478/22 пакетов и 4452.4/12221 байт. - На конце видео: 18 пакетов, 8695.0 байт; полное освобождение 20.998534 с, дополнительно 0.231867 с. - Команды: mean/P95/max 106.072/238.634/296.186 мс; превышений 100 мс 203; промежутков >100 мс 63; max gap 344.480 мс; заменено 0. - Аварийная команда: start/total 0.000/1.707 мс; deadline 50 мс соблюдён; блокировал none, 0 байт, seq=-1, ожидание 0.000 мс. - Телеметрия: mean/P95/max 101.032/233.680/296.827 мс; превышений 500 мс 0 (0.000000); заменено 0. - Видео: опубликовано к концу источника 0.984127, после drain 1.000000, итог 1.000000; delay mean/P95/max 261.559/304.579/311.146 мс. - Возраст изображения mean/P95/max 423.846/580.000/643.333 мс; доля >1 с 0.000000; поздних кадров 0, max серия 0. [300 кбит/с; Строгий приоритет] - Передано 1703 пакетов, 670280 байт; средняя/максимальная очередь 8.050/22 пакетов и 4452.4/12221 байт. - На конце видео: 15 пакетов, 8695.0 байт; полное освобождение 20.998534 с, дополнительно 0.231867 с. - Команды: mean/P95/max 9.440/17.466/17.813 мс; превышений 100 мс 0; промежутков >100 мс 0; max gap 65.760 мс; заменено 0. - Аварийная команда: start/total 0.000/1.707 мс; deadline 50 мс соблюдён; блокировал none, 0 байт, seq=-1, ожидание 0.000 мс. - Телеметрия: mean/P95/max 12.424/20.107/20.373 мс; превышений 500 мс 0 (0.000000); заменено 0. - Видео: опубликовано к концу источника 0.984127, после drain 1.000000, итог 1.000000; delay mean/P95/max 276.337/322.072/330.773 мс. - Возраст изображения mean/P95/max 437.649/593.333/660.000 мс; доля >1 с 0.000000; поздних кадров 0, max серия 0. [300 кбит/с; Приоритет + замена] - Передано 1703 пакетов, 670280 байт; средняя/максимальная очередь 8.050/22 пакетов и 4452.4/12221 байт. - На конце видео: 15 пакетов, 8695.0 байт; полное освобождение 20.998534 с, дополнительно 0.231867 с. - Команды: mean/P95/max 9.440/17.466/17.813 мс; превышений 100 мс 0; промежутков >100 мс 0; max gap 65.760 мс; заменено 0. - Аварийная команда: start/total 0.000/1.707 мс; deadline 50 мс соблюдён; блокировал none, 0 байт, seq=-1, ожидание 0.000 мс. - Телеметрия: mean/P95/max 12.424/20.107/20.373 мс; превышений 500 мс 0 (0.000000); заменено 0. - Видео: опубликовано к концу источника 0.984127, после drain 1.000000, итог 1.000000; delay mean/P95/max 276.337/322.072/330.773 мс. - Возраст изображения mean/P95/max 437.649/593.333/660.000 мс; доля >1 с 0.000000; поздних кадров 0, max серия 0. [260 кбит/с; FIFO] - Передано 1703 пакетов, 670280 байт; средняя/максимальная очередь 14.800/37 пакетов и 6010.5/16512 байт. - На конце видео: 32 пакетов, 12974.0 байт; полное освобождение 21.165867 с, дополнительно 0.399200 с. - Команды: mean/P95/max 169.073/333.059/460.944 мс; превышений 100 мс 298; промежутков >100 мс 63; max gap 384.348 мс; заменено 0. - Аварийная команда: start/total 0.000/1.969 мс; deadline 50 мс соблюдён; блокировал none, 0 байт, seq=-1, ожидание 0.000 мс. - Телеметрия: mean/P95/max 163.317/331.782/463.898 мс; превышений 500 мс 0 (0.000000); заменено 0. - Видео: опубликовано к концу источника 0.984127, после drain 1.000000, итог 1.000000; delay mean/P95/max 329.072/420.025/436.185 мс. - Возраст изображения mean/P95/max 489.627/666.667/766.667 мс; доля >1 с 0.000000; поздних кадров 0, max серия 0. [260 кбит/с; Строгий приоритет] - Передано 1703 пакетов, 670280 байт; средняя/максимальная очередь 10.783/28 пакетов и 6010.2/16384 байт. - На конце видео: 23 пакетов, 12974.0 байт; полное освобождение 21.165867 с, дополнительно 0.399200 с. - Команды: mean/P95/max 10.282/18.754/20.667 мс; превышений 100 мс 0; промежутков >100 мс 0; max gap 63.477 мс; заменено 0. - Аварийная команда: start/total 0.000/1.969 мс; deadline 50 мс соблюдён; блокировал none, 0 байт, seq=-1, ожидание 0.000 мс. - Телеметрия: mean/P95/max 13.864/22.448/23.621 мс; превышений 500 мс 0 (0.000000); заменено 0. - Видео: опубликовано к концу источника 0.968254, после drain 1.000000, итог 1.000000; delay mean/P95/max 351.218/445.846/459.559 мс. - Возраст изображения mean/P95/max 511.188/693.333/783.333 мс; доля >1 с 0.000000; поздних кадров 0, max серия 0. [260 кбит/с; Приоритет + замена] - Передано 1703 пакетов, 670280 байт; средняя/максимальная очередь 10.783/28 пакетов и 6010.2/16384 байт. - На конце видео: 23 пакетов, 12974.0 байт; полное освобождение 21.165867 с, дополнительно 0.399200 с. - Команды: mean/P95/max 10.282/18.754/20.667 мс; превышений 100 мс 0; промежутков >100 мс 0; max gap 63.477 мс; заменено 0. - Аварийная команда: start/total 0.000/1.969 мс; deadline 50 мс соблюдён; блокировал none, 0 байт, seq=-1, ожидание 0.000 мс. - Телеметрия: mean/P95/max 13.864/22.448/23.621 мс; превышений 500 мс 0 (0.000000); заменено 0. - Видео: опубликовано к концу источника 0.968254, после drain 1.000000, итог 1.000000; delay mean/P95/max 351.218/445.846/459.559 мс. - Возраст изображения mean/P95/max 511.188/693.333/783.333 мс; доля >1 с 0.000000; поздних кадров 0, max серия 0. [230 кбит/с; FIFO] - Передано 1703 пакетов, 670280 байт; средняя/максимальная очередь 86.915/184 пакетов и 34309.1/76497 байт. - На конце видео: 181 пакетов, 73238.3 байт; полное освобождение 23.314087 с, дополнительно 2.547420 с. - Команды: mean/P95/max 1174.288/2240.535/2608.522 мс; превышений 100 мс 414; промежутков >100 мс 63; max gap 427.304 мс; заменено 0. - Аварийная команда: start/total 878.887/881.113 мс; deadline 50 мс НАРУШЕН; блокировал video, 608 байт, seq=461, ожидание 0.417 мс. - Телеметрия: mean/P95/max 1164.978/2225.607/2611.861 мс; превышений 500 мс 177 (0.850962); заменено 0. - Видео: опубликовано к концу источника 0.888889, после drain 1.000000, итог 1.000000; delay mean/P95/max 1347.217/2417.731/2576.186 мс. - Возраст изображения mean/P95/max 1506.487/2588.167/2906.667 мс; доля >1 с 0.771870; поздних кадров 42, max серия 42. [230 кбит/с; Строгий приоритет] - Передано 1703 пакетов, 670280 байт; средняя/максимальная очередь 59.750/132 пакетов и 34307.1/75969 байт. - На конце видео: 127 пакетов, 73238.3 байт; полное освобождение 23.314087 с, дополнительно 2.547420 с. - Команды: mean/P95/max 12.250/21.848/23.339 мс; превышений 100 мс 0; промежутков >100 мс 0; max gap 69.009 мс; заменено 0. - Аварийная команда: start/total 9.322/11.548 мс; deadline 50 мс соблюдён; блокировал video, 608 байт, seq=458, ожидание 9.322 мс. - Телеметрия: mean/P95/max 15.514/25.111/26.678 мс; превышений 500 мс 0 (0.000000); заменено 0. - Видео: опубликовано к концу источника 0.888889, после drain 1.000000, итог 1.000000; delay mean/P95/max 1445.995/2505.995/2583.977 мс. - Возраст изображения mean/P95/max 1594.537/2678.167/2916.667 мс; доля >1 с 0.804460; поздних кадров 47, max серия 47. [230 кбит/с; Приоритет + замена] - Передано 1703 пакетов, 670280 байт; средняя/максимальная очередь 59.750/132 пакетов и 34307.1/75969 байт. - На конце видео: 127 пакетов, 73238.3 байт; полное освобождение 23.314087 с, дополнительно 2.547420 с. - Команды: mean/P95/max 12.250/21.848/23.339 мс; превышений 100 мс 0; промежутков >100 мс 0; max gap 69.009 мс; заменено 0. - Аварийная команда: start/total 9.322/11.548 мс; deadline 50 мс соблюдён; блокировал video, 608 байт, seq=458, ожидание 9.322 мс. - Телеметрия: mean/P95/max 15.514/25.111/26.678 мс; превышений 500 мс 0 (0.000000); заменено 0. - Видео: опубликовано к концу источника 0.888889, после drain 1.000000, итог 1.000000; delay mean/P95/max 1445.995/2505.995/2583.977 мс. - Возраст изображения mean/P95/max 1594.537/2678.167/2916.667 мс; доля >1 с 0.804460; поздних кадров 47, max серия 47. 5. Интерпретация планировщиков - FIFO задерживает команды, потому что все ранее поступившие внешние видеопакеты остаются перед ними независимо от срочности. - Строгий приоритет после каждого окончания пакета выбирает управление раньше телеметрии и видео, поэтому сокращает очередь команд. - Уже начатая передача не прерывается: модель сериализует целый пакет как атомарную единицу и не задаёт фрагментацию общего пакета или возобновление передачи. - Поэтому нижняя граница задержки срочной команды включает остаток времени самого длинного пакета, уже занявшего ресурс. - Замена старого состояния новым не тратит канал на запоздалую команду, которая к моменту приёма уже не отражает актуальное управление. - Строгий приоритет перераспределяет порядок, но не уменьшает объём видео; при нагрузке выше пропускной способности видеопакеты продолжают накапливаться. - Длинная очередь видео увеличивает возраст изображения даже без потерь: полные, но старые кадры публикуются позже времени формирования. - Восстановление 100% кадров после drain подтверждает целостность, но не пригодность задержек канала для управления в реальном времени. 6. Допущения модели - Один общий абстрактный ресурс и одна расчётная скорость для обоих направлений; переключение направления не задерживает передачу. - Не выбран физический полудуплекс/дуплекс, TDD/FDD, модуляция, ретранслятор или физическое разделение восходящего и нисходящего каналов. - Ошибки и помехи отсутствуют; полностью переданный пакет доставляется без повреждений; видеопакеты не отбрасываются по возрасту. - После конца исходного видео новые данные не создаются, а очередь полностью освобождается. - При совпадении времени FIFO использует traffic_class, stream_id и sequence_number как устойчивое правило разрешения совпадений. - Средняя очередь рассчитана по времени на основном интервале и включает пакет, находящийся в передатчике; остаток байтов активного пакета учитывается пропорционально недопереданному времени. 7. Функциональные проверки - PASS 01_header_roundtrip: PASS - PASS 02_header_crc_detection: PASS - PASS 03_payload_crc_detection: PASS - PASS 04_video_wrapper_byte_exact: PASS - PASS 05_lab030_crc: PASS - PASS 06_lab028_crc: PASS - PASS 07_fifo_global_order: PASS - PASS 08_strict_priority: PASS - PASS 09_non_preemptive: PASS - PASS 10_intra_class_sequence: PASS - PASS 11_latest_state_scope: PASS - PASS 12_active_state_not_removed: PASS - PASS 13_emergency_never_replaced: PASS - PASS 14_300kbps_all_video: PASS - PASS 15_overload_visible: PASS - PASS 16_exact_transmission_duration: PASS - PASS 17_total_bits_accounting: PASS - PASS 18_reproducible_schedule: PASS - PASS 19_no_video_control_isolated: PASS - PASS 20_latest_state_reaches_receiver: PASS 8. Созданные файлы и итоговый Git status - protocol/link_packet.py - protocol/priority_scheduler.py - tests/lab033_priority_channel_scheduler.py - data/processed/lab033/lab033_summary.csv - data/processed/lab033/lab033_class_metrics.csv - data/processed/lab033/lab033_report.txt - data/processed/lab033/lab033_control_delay.png - data/processed/lab033/lab033_emergency_delay.png - data/processed/lab033/lab033_video_delay.png - data/processed/lab033/lab033_queue_length.png - data/processed/lab033/lab033_deadline_misses.png - data/processed/lab033/lab033_scheduler_comparison.png - Lab028-Lab032 и их сохранённые результаты не изменены. - Lab033 не добавлена в индекс и не закоммичена. ## main...origin/main ?? data/processed/lab033/ ?? protocol/link_packet.py ?? protocol/priority_scheduler.py ?? tests/lab033_priority_channel_scheduler.py