Безопасный надежный транспорт - Secure Reliable Transport

Безопасный надежный транспорт (SRT) - это протокол передачи видео с открытым исходным кодом, в котором используется UDP транспортный протокол.

Обзор

SRT обеспечивает подключение и управление, надежную передачу, аналогичную TCP, однако, это происходит в прикладной уровень, с помощью UDP протокол в качестве основного транспортного уровня. Он поддерживает восстановление пакетов при сохранении низкой задержки (по умолчанию: 120 мс). SRT также поддерживает шифрование с использованием AES.

Протокол был получен из UDT проект,[1] который был разработан для быстрой передачи файлов. Он обеспечил механизм надежности за счет использования аналогичных методов для соединения, порядковых номеров, подтверждений и повторной передачи потерянных пакетов. Он использует избирательную и немедленную (на основе NAK) повторную передачу.

Для поддержки режима прямой трансляции SRT добавила несколько функций:

  1. Управляемая задержка с передачей времени от источника (доставка пакетов на основе временных меток)
  2. Удобный контроль скорости отправителя
  3. Условное "слишком позднее" отбрасывание пакета (предотвращает блокировка передней линии вызвано потерянным пакетом, который не был восстановлен вовремя)
  4. Неторопливая повторная передача пакетов (периодический NAK-отчет)

Заголовок пакета

Пакеты SRT создаются на уровне приложения и передаются на транспортный уровень для доставки. Каждая единица носителя SRT или управляющих данных, созданная приложением, начинается с заголовка пакета SRT.[2]

Заголовок пакета SRT
СмещенияОктет0123
ОктетНемного[а]012345678910111213141516171819202122232425262728293031
00FЗначение поля зависит от типа пакета
432Значение поля зависит от типа пакета
864Отметка времени
1296Идентификатор целевого сокета
......Содержимое пакета
(зависит от типа пакета)

Пакет данных

Заголовок пакета данных SRT
СмещенияОктет0123
ОктетНемного[а]012345678910111213141516171819202122232425262728293031
000Порядковый номер пакета
432PPОKKрНомер сообщения
864Отметка времени
1296Идентификатор целевого сокета
......Данные

Поля в заголовке следующие:

  • Порядковый номер пакета (31 бит)
  • PP (2 бита): флаг позиции пакета
  • О (1 бит): флаг заказа
  • KK (2 бита): флаг шифрования на основе ключа
  • р (1 бит): флаг повторно переданного пакета
  • Номер сообщения (26 бит)
  • Данные (переменная длина)

Контрольный пакет

Заголовок пакета управления SRT
СмещенияОктет0123
ОктетНемного[а]012345678910111213141516171819202122232425262728293031
001Тип управленияПодтип
432Информация по типу
864Отметка времени
1296Идентификатор целевого сокета
......Контрольное информационное поле (CIF)

Поля в заголовке следующие:

  • Тип управления (15 бит): Тип пакета управления
  • Подтип (16 бит)
  • Информация по типу (32 бит)
  • Контрольное информационное поле (переменная длина)

История

Безопасный надежный транспорт - это протокол передачи видео с открытым исходным кодом, первоначально разработанный Haivision. Согласно с SRT Альянс, организация, которая продвигает технологию, оптимизирует производительность потоковой передачи. Это помогает минимизировать влияние джиттера и изменений полосы пропускания, а механизмы исправления ошибок помогают минимизировать потерю пакетов. SRT поддерживает сквозное шифрование с AES.[3] При выполнении повторных передач SRT пытается повторно передать пакеты только в течение ограниченного периода времени в зависимости от задержки, настроенной приложением.[4]

По словам Марка Симонтовски, архитектора SRT, помимо отправки транспортных потоков MPEG через общедоступный Интернет, он также используется для подключения к Интернету вещей, обмена метаданными, в качестве протокола связи, а также для доставки несжатых данных.[5]

Эталонная реализация протокола изначально была опубликована под Стандартная общественная лицензия ограниченного применения версия 2.1,[6] но был перелицензирован под Общественная лицензия Mozilla 22 марта 2018 г.[7]

SRT поддерживается в свободное программное обеспечение мультимедийные рамки GStreamer, FFmpeg, OBS Studio И в VLC бесплатный программный медиаплеер.[4][8]

В Протокол передачи данных на основе UDP (UDT) был базой для проекта SRT.[9]API SRT C в значительной степени основан на UDT API.[10]

SRT был разработан для передачи видео в реальном времени с малой задержкой.[9][3]

Haivision выпустила протокол SRT и эталонную реализацию как открытый исходный код на конференции 2017 г. NAB Показать.[9]

В марте 2020 года индивидуальный Интернет-проект, draft-sharabayko-mops-srt,[11] был передан на рассмотрение рабочей группе Media OPerationS (MOPS) Инженерная группа Интернета.

SRT Альянс

SRT Альянс это организация, члены которой разрабатывают, используют и продвигают Безопасный надежный транспорт протокол и программное обеспечение на его основе. Членами-учредителями альянса являются Haivision и Wowza.[12]

Реализации

В настоящее время имеется одна доступная реализация - библиотека SRT с открытым исходным кодом.

API языка C в основном основан на предыдущем API UDT с дальнейшими изменениями по мере добавления новых функций. API очень похож на API TCP.

SRT предлагает фактически три режима работы, первые два из которых были заимствованы из UDT:

  • Файловый режим: как TCP
  • Режим файла-сообщения: аналогично SCTP протокол - отправка блоков данных с четко определенными границами
  • Живой режим: данные должны отправляться небольшими пакетами (обычно до 1316 байт, если передаваемый поток MPEG-TS ) с уже соответствующими временными интервалами между ними. Затем на стороне получателя доставляются одни и те же отдельные пакеты с одинаковыми временными интервалами между ними.

Библиотека SRT также предлагает следующие функции:

  1. Шифрование с использованием предварительного общего ключа. Первоначально поддержка шифрования была предоставлена ​​OpenSSL, теперь также можно использовать Nettle (GNU TLS) или mbedTLS.
  2. Управление доступом SRT (также известное как «StreamID») может использоваться приложениями для идентификации ресурсов и использования метода доступа с использованием пароля пользователя при использовании одного и того же номера порта службы для различных целей.[13]
  3. Необязательный Прямая коррекция ошибок механизм.

Дополнительную и более подробную документацию можно найти в Документация по исходному коду.

Заметки

  1. ^ а б c Биты отсортированы от наиболее значимого до наименее значимого; битовое смещение 0 - это самый старший бит первого октета. Октеты передаются в сетевой заказ. Порядок передачи битов зависит от среды.

использованная литература

  1. ^ «UDT: устранение узких мест при передаче данных». udt.sourceforge.io. Получено 2020-08-27.
  2. ^ "draft-sharabayko-mops-srt-00 - Протокол СТО". datatracker.ietf.org. Получено 2020-08-27.
  3. ^ а б Haivision. «Безопасный, надежный, транспортный». GitHub.
  4. ^ а б Оливье Крет (16 февраля 2018 г.). "SRT в GStreamer".
  5. ^ «Он объединяет все воедино: интервью с Марком Цимонтовски, евангелистом SRT». Блог Medialooks. 5 ноября 2019.
  6. ^ Майкл Ларабель (24 апреля 2017 г.). «Протокол передачи видео SRT с открытым исходным кодом». Фороникс.
  7. ^ Роман рнди (22 марта 2018). "Изменить лицензию на MPLv2.0 · Haivision / srt @ a75d4c4". GitHub.
  8. ^ Оливье Крет (июнь 2018 г.). «Безопасное видео достигает совершеннолетия». Журнал Linux Format (237).
  9. ^ а б c Марк Цимонтовски.«Почему мы создали SRT и разница между SRT и UDT».
  10. ^ "Документы API Haivision srt"
  11. ^ Шарабайко М.П .; Шарабайко, М.А. (2020). Протокол SRT. IETF. I-D draft-sharabayko-mops-srt. Получено 26 марта 2020.
  12. ^ «Microsoft присоединяется к проекту потоковой передачи с открытым исходным кодом SRT». Вещательный мост. 17 сентября 2018.
  13. ^ «Рекомендации по контролю доступа SRT». 7 ноября 2019.

внешние ссылки