Кратко

  • У каждого уровня ULP в RFC 5109 собственные маска пакетов и длина защиты; решаемость одного уровня не доказывает полноту остальных.
  • Отдельные пути для медиа и FEC разделяют наличие защиты, своевременное прибытие, реконструкцию, декодирование и воспроизведение.

Защита, которая опоздала

RFC 5109 допускает передачу FEC отдельной RTP-сессией. Это позволяет медиа и защите иметь разные адреса, порты, ресурсы и судьбу в сети. Такой дизайн полезен, но разрушает простую фразу «поток был защищён». FEC может быть согласован и отправлен, но потеряться, прийти позже дедлайна или не найти правильную ассоциацию на приёмнике.

При offer/answer получатель вправе отвергнуть отдельную FEC-сессию и принять медиа. Поскольку исходные медиапакеты не меняются, терминал без поддержки FEC всё равно может работать. Видимое воспроизведение не доказывает, что защита была принята или использована.

Для отдельного потока вне полезной нагрузки задаются адрес и порт, динамический payload type и связь с защищаемым медиа. Есть и вариант с избыточным кодированием RFC 2198. В обоих случаях аудит должен хранить предложение, ответ, поколение связи, фактическое прибытие и уравнение, использованное до срока.

Неравная защита — это набор поверхностей

ULP делит данные пакета на уровни убывающей важности. Начало можно защищать меньшими группами сильнее, хвост — большими группами слабее. Один FEC-пакет способен нести несколько уровней, но каждый имеет собственный набор участников и длину.

Заголовок уровня содержит 16-битную Protection Length и маску на 16 или 48 бит. Если базовый номер равен N, бит i включает пакет N+i в уравнение этого уровня. Маска говорит, какие пакеты участвуют; длина — какие байты. Они не сообщают, какие остальные операнды реально доступны и вовремя ли они пришли.

Пакет, защищённый на уровне p, должен быть защищён и на p-1; FEC-пакет с уровнем p несёт предыдущий уровень. Но группы могут отличаться, а соседние уровни одного медиапакета могут находиться в разных FEC-пакетах. Один флаг покрытия не описывает эту геометрию.

Один уровень решился, другой нет

Если целевой пакет — единственное неизвестное в уравнении уровня 0, XOR восстанавливает поля RTP, ожидаемую общую длину и защищённый префикс. Если на более высоком уровне отсутствует ещё один пакет, остаются две неизвестные и хвост не восстанавливается.

RFC 5109 предписывает сравнить общую длину, полученную через уровень 0, с фактической длиной восстановленной нагрузки. Несовпадение означает частичный результат. Наличие заголовка не превращает префикс в полный пакет.

Восстановление состоит из выбора комбинации и реконструкции байтов. Алгоритм выбора локален: он обменивает сложность и время на шанс найти решаемую систему. После выбора процедура для уровня n читает Ln, берёт строки в нужном смещении, дополняет короткие нулями, выполняет XOR и помещает результат в его диапазон. Только совмещение уровней и проверка длины подтверждают полноту.

Следовательно, журнал должен содержать базу, маску, уровень, длину, доступные операнды, число неизвестных, интервал байтов и время результата. Поздно решённое уравнение может быть полезно для анализа, но не для уже пропущенного playout.

Вычисление не создаёт доверия

Паритет не аутентифицирует данные. Изменение FEC способно испортить результат, задать чрезмерную длину и увеличить вычислительную нагрузку. RFC рекомендует проверять разумность входа до реконструкции и валидировать выход перед использованием.

При отдельных потоках нужны целостность, правильное поколение ключей и ассоциации, пределы длины и CPU. Затем отдельное решение принимает декодер. Непрерывно отсутствующий хвост может быть удобнее рассеянных дыр для некоторых форматов, но стандарт не гарантирует пригодность конкретного префикса.

Избыточность тоже входит в очередь

Больше FEC обычно усиливает защиту и всегда расходует пропускную способность. Если потери вызваны перегрузкой, автоматическое увеличение избыточности усугубляет причину. RFC 5109 запрещает существенно увеличивать общий объём медиа плюс FEC при росте потерь и требует мониторинга в best effort.

Поэтому изменение уровней и групп оценивают вместе с общей и медиаскоростью, очередью, потерями, временем реконструкции и опозданиями. Рост доли восстановленных префиксов может сопровождаться ухудшением сервиса.

Граница утверждения

RFC 5109 опубликован в декабре 2007 года как Standards Track, заменяет RFC 2733 и 3009, исправляет несогласованности RTP и добавляет неравную защиту. Его FEC-формат не совместим назад, хотя неизменённое медиа остаётся доступным. Это свойство протокола, не свидетельство внедрения.

Маска охватывает до 48 смещений, операция использует XOR. Источники не устанавливают конкретного оператора, продукта, кодека, измеренной доли потерь, восстановления или качества. Стандарт позволяет доказать намерение защиты и диапазон реконструкции; он не выдаёт квитанцию за целый сервис.

Источники