RTC @scale 2024 | Повышение устойчивости сети связи в реальном времени (RTC) с помощью кодов LTR и RS
RTC @scale 2024 | Повышение устойчивости сети связи в реальном времени (RTC) с помощью кодов LTR и RS

введение

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

Видео зависает

Автор Воля Видео зависает рассматривается как показатель степени связности вызова. Поскольку исходные данные огромны, их необходимо закодировать (т. е. сжать), прежде чем их можно будет передать через сеть. иметь базовый RTC В настройках видеокадр можно запрограммировать как ключевой. кадрили P рамка.ключевой кадр больше, но его можно декодировать независимо, а кадр P меньше, но его код решения необходимо декодировать, обратитесь к кадру. Когда пакет данных потерян и уничтожен. P видео будет продолжать зависать при освобождении кадров, если только цепочка кодов не будет восстановлена ​​(через ретранслировать) и не будет запущена новая цепочка (с использованием ключевой кадр). В активной перспективе для кодовой цепочки предусмотрено резервное звено, то есть прямое исправление ошибки (FEC), предотвращающие обрыв цепи.

в типичном RTC видеосеть Гибкая настройка в процессе,ретранслировать、ключевой кадри FEC Работайте вместе, чтобы предотвратить Видео зависит. В прошлом оптимизация этих трех механизмов значительно улучшала качество обслуживания, однако это не остановило развитие технологий следующего поколения: длительная; система отсчета (LTR) и код Рида-Соломона (RS код) Прямое исправление ошибок (FEC)。

Figure 1:Video freeze caused by packet loss

Существующие решения

ретранслировать

Когда получатель обнаруживает пробел в порядковом номере прибытия,Он просит отправителя выполнить ретранслировать. Хотя ретранслировать очень эффективно для некоторых сетей,Но есть две ситуации, когда это не работает:

  1. Большое время в пути туда и обратно (RTT): видео будет значительно приостановлено, прежде чем полностью восстановится, и FEC Эту ситуацию можно облегчить.
  2. Внезапная потеря: по сравнению с восстановлением каждого потерянного пакета из-за высокой пропускной способности, восстановление ключевой. кадриз имеет меньше накладных расходов.

Прямое исправление ошибок (FEC)

Когда сеть RTT ретранслировать хорошо работает, когда он низкий, но менее эффективен, если буфер джиттера недостаточно длинный, чтобы позволить ретранслироватьприезжать. ТЭК Восстановление потерь в реальном времени достигается путем отправки данных четности вместе с исходными данными.

Таким образом, видео FEC имеет широкий спектр применения в RTC:

  • Обнаружение пропускной способности
  • Проактивная защита неиспользуемой полосы пропускания
  • Пропускная способность среды передачи данных от реактивной защиты

WebRTC Предоставляется на основе XOR видео FEC Надежная реализация FlexFec и ULPFEC (Защита неравномерного уровня прямое исправление ошибки) пакет. С алгоритмической точки зрения, основанной на XOR из FEC Есть фундаментальный недостаток: он плохо адаптируется к большему количеству данных. По мере увеличения количества пакетов в группе защиты производительность восстановления снижается экспоненциально. как Код MDS (максимальное расстояние разделения), Рид-Соломон Код генерации имеет лучшие свойства восстановления и может использоваться с RTC Трафик растет и расширяется бесконечно.

ключевой кадр

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

Однако,ключевой кадриз Существенной проблемой является их размер, который обычно меньше P Рамка намного больше. Возникает дилемма: передать полноразмерную ключевую кадр вместо P Кадры могут усугубить перегрузку сети, в то время как сжатие ключевой кадр может привести к значительному снижению качества. Такое сжатие может вызвать мерцание, что ухудшает работу пользователя.

LTR Структура обеспечивает осуществимое решение. Они существуют при условии возмещения убытков с ключевой кадр аналогичен из эффективности, но меньше по размеру и лучше по качеству. В следующем разделе Воля углубляется в LTR из концепции ивысотный. design, узнайте, как он решает эти проблемы.

длинная система отсчета

LTR Это функция, которая позволяет кодеку сохранять определенные кадры в памяти для использования в качестве эталона для кодирования будущих кадров. Эта концепция используется в различных кодеках, в том числе H.264、H.265 (HEVC) и VP8。

LTR Предоставляет новый способ эффективного восстановления после потерь. Такие как картина 2 Как показано, если декодер из-за 5 Если пакет данных потерян в кадре и заблокирован, получатель может получить последнее решение на основе своего LTR (в данном случае из кадра 3) для декодирования кадра 7。

Figure 2: How LTR help with video freeze with packet loss

иключевой кадр По сравнению с LTR-P Размер меньше,но качество выше. ЛТР-П Сопоставимыйключевой кадр Маленький 40% приезжать 50%, но он предлагает P Кадр аналогичного качества видео (если вдали от LTR не очень далеко). Следующая картина иллюстрирует ключевую кадри P Различия между кадрами:

Figure 3: Key frame on the left. LTR-P on the right.

Учитывая разницу в качестве, LTR-P Может стать основой для улучшения возмещения убытков. Больше нет необходимости разрешать каждый потерянный из пакетов, теперь существующий получатель может разрешать кодиз в соответствии с последним; LTR запрос кадра ЛТР-П. В существующих сетях с высокими потерями это гораздо эффективнее, чем ретранслировать.

высотный дизайн

картина 4 показал LTR извысотный дизайн. по сути,LTR Обычно работает при запуске следующего процесса (для аппаратного и программного обеспечения H.264 кодер):

  1. Редактор периодически ограничивать LTR。
  2. логотип LTR и его зависимость от уникального токена Воля отправляется получателю и подтверждается как разрешимый код. LTR рамка.
  3. существоватькогда это необходимо,Редактор будет ссылаться на подтвержденный кадр из LTR из LTR-P.

Хотявысотный Дизайн выглядит просто, но есть некоторые проблемы, которые необходимо решить, чтобы он заработал. Ниже приводится развертывание LTR При возникновении некоторых проблем:

Figure 4: System diagram for the LTR design

Проблемы развертывания LTR в META

Хотядлинная система отсчетасчитаетсяключевой кадризация заменяет решение, но важно четко понимать, LTR Не предназначен для замены ключевой кадр。ключевой Кодирование кадра не требует пояснений, тогда как LTR Для корректного решения задачи все равно необходимо сохранить в памяти соответствующую из системы отсчета. Эта разница означает, что если какие-либо крайние случаи не охвачены, это может привести к длительным паузам. Например, существовать LTR из A/B В ходе теста было замечено, что частота приезжать без видео значительно снизилась (ок. 2%), что показывает LTR иключевой кадрсуществовать До сих пор существует пробел в возможностях восстановления потерянных пакетов. Ниже приводится развертывание LTR Есть несколько серьезных проблем, которые необходимо преодолеть:

Погрузитесь во внутреннее поведение OPENH264.

OpenH264 Обеспечивает комплексное API поддержка реализации LTR Связанные с большинством функций (например. LTR ограничитьиподтверждение), что значительно упрощает процесс проектирования и реализации. Однако существующие принципы работы не полностью изучены в тех случаях, когда они применяются. API Могут возникнуть проблемы при развертывании. Например, одна заметная проблема связана с внутренним поведением компилятора, который игнорирует LTR-P запросить, сгенерировать P рамка,прямойприезжатьгенерироватьключевой Только после кадра новая информация получила четкое подтверждение. ЛТР. Это привело к тупиковой ситуации, когда получатель постоянно запрашивал LTR-P, в то время как отправитель отправляет нерасшифрованное сообщение. P рамка. путем сброса IDR Оболочка кода после редактирования подтверждена из LTR статус для решения этой проблемы.

Понять взаимодействие между WEBRTC и LTR

Воля LTR интегрированныйприезжать WebRTC очень сложен и требует детального понимания WebRTC Как обращаться с эталонной рамкой. Плохое управление и недостаточное понимание могут привести к проблемам. Например, сообщение существования отправляется после получения кадра (и до того, как кадр существования будет декодирован). LTR Подтверждено, что иногда будут длительные заморозки. Позже выяснилось, что эти лаги были вызваны LTR существованиеприжатез достигает декодера существования до того, как будет отброшен в буфер кадра, в результате чего отправитель не окажется в буфере получателя в соответствии с существованием. LTR генерировать ЛТР-П. только в LTR Подтверждено после декодирования LTR чтобы исправить эту проблему. После этого я перестал наблюдать приезжать LTR из Проблема долгосрочной задержки.

Оптимизация вокруг ключевого кадра

Хотя это было успешно реализовано LTR работает без проблем, но благодаря множеству ключей, разработанных с течением времени Специфическая оптимизация кадра, его развертывание также сталкивается со многими проблемами. Особенно важным вопросом является LTR-P В тот период было очевидно, что аудио/видео (A/V) Синхронный возврат, но ключевой С кадром этого не происходит. Углубленный анализ показал, что проблема связана со специализированной оптимизацией, которая очистила ключевую список кадров изретранслировать после переноса, тем самым значительно улучшая A/V синхронный. отсутствие понимания LTR Из Оптимизация привела к очевидным из A/V Синхронизировать различия. Этот сценарий иллюстрирует необходимость определить, что было применено к ключевой кадриз Оптимизацияи Исправить, чтобы обеспечить LTR Подобные функции включены для обеспечения такой же превосходной производительности.

Преодолев эти три проблемы, LTR Успешное развертывание без ущерба для каких-либо основных показателей качества. Это приводит к ситуации потери пакетов ключевой почти уменьшить количество кадров 20% без видео зависает。

RS-код видео FEC

За исключением того, что на основе XOR из FlexFEC снаружи, объединить Reed-Solomon Исправление ошибок кода значительно улучшило существующую производительность видеопотока с точки зрения восстановления потерянных пакетов. Преимущество проявляется не только в эталонном, но и в производственном тесте. От индикатора зависает.

Решение FEC с открытым исходным кодом на основе XOR

WebRTC на основе XOR из ФЭК (например, FlexFec и ULPFEC) обеспечивает зрелую реализацию. Все они используют эвристические правила для покрытия различных сценариев потери пакетов и, поскольку исходный код открыт, они работают достаточно хорошо. Однако есть два недостатка, которые мотивируют Reed-Solomon код FEC из Использовать:

  1. XOR FEC требует большой пропускной способности для достижения приемлемого диапазона потерь пакетов. Медиатрафик часто страдает от колебаний низкого качества и низкого разрешения.
  2. Скорость восстановления низкая. для k пакеты исходных данных, основанные на XOR из FEC Теоретически требуется
O(2^k / k)

пакет защитных данных для обеспечения восстановления.

Figure 5: K parity packets cannot recover k lost packets

FEC на основе XOR не масштабируется

гипотезасуществоватьвидеои FEC Нажмите между 50/50 Выделите полосу пропускания, затем для k пакеты видеоданных, с k причина XOR Редактор кодиз FEC пакет. Это также называется кодом (k, 2k).

Каждый пакет FEC может быть восстановлен.

O(k)

потерянные сцены, всего

O(2^k)

Потерянная сцена. Следовательно, на основе XOR из FEC на скорость восстановления влияет

O(k^2/2^k)

предел. когда k Превосходить 5 , скорость восстановления снижается экспоненциально. Другими словами, с современным RTC Приложения развиваются в сторону более высокого качества мультимедиа и более высокого трафика в зависимости от XOR из FEC Невозможно расширить.

Код RS FEC имеет хорошую масштабируемость.

RS код имеет более высокий коэффициент, чем код, основанный на XOR видео FEC Более превосходные свойства. Используйте то же самое из (т.е. к, 2к) Код редактора, RS Код генерации имеет константу из 100% скорость восстановления и бесконечно масштабируется по мере увеличения скорости трафика.

Figure 6: RS code workflow

Развертывание кода RS в META Messenger

Meta Используйте внутреннюю проприетарную версию Reed-Solomon От имени реализации кода для RTC видео FEC Алгоритмы обеспечивают поддержку. Для развертывания на мобильных клиентах RS поколениекод,Нужно реализовать алгоритм、Конфигурация кода кодека、Оптимизация памяти компилятора и оптимизация времени выполнения компилятора принимают осторожные решения.

Авторы тщательно спроектировали устойчивость существующей сети. (NR) Интеграция системы с целью RS поколениекоди FlexFec Могут динамически переключаться между собой и совместимы с временным разделением.

Подведение итогов и перспективы

Сложность борьбы с потерей пакетов подчеркивает необходимость постоянных инноваций. очевидно,Универсального подхода недостаточно,Алгоритм необходимо корректировать в соответствии с различными пользовательскими сценариями и условиями. Некоторые области, требующие будущих улучшений, включают:

  • расширять LTR Охват: Авторская программа Воля LTR Поддержка со стороны OpenH264 Расширить возможность проживания другими кодеками, например. AV1 и iOS Аппаратный редактор кода таким образом расширятьсуществовать из-за влияния на различные платформы.
  • NR Метод динамического выбора: В настоящее время в фокусе автора — Воля. LTR Интегрирован в базовые компоненты. Одна из проблем, которую необходимо срочно решить, — это как более эффективно использовать «Волю» в сочетании с другими решениями. Например, как решить, когда запрашивать кадры LTR, ключевой в различных сценариях потери иRTT? кадрилиретранслировать,ксуществовать Видео зависит баланс между накладными расходами на передачу?
  • видео FEC:Meta Позитивные существуют вверх по течению WebRTC Внесите свой вклад на основе XOR из Групповой звонок FEC выполнить。Промышленностьиз其他参и者可к利用该решение Лучше расширить приложение для групповых звонков.。в то же время,Автор все еще активно совершенствует механизм FEC.,Оставаться конкурентоспособными в меняющихся условиях.

Прилагаю видео выступления: видеоадрес

boy illustration
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.