Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

Обзор [ править ]

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

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

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

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

Заголовок пакета [ править ]

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

Пакет данных [ править ]

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

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

Контрольный пакет [ править ]

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

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

История [ править ]

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

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

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

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

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

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

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

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

SRT Alliance [ править ]

SRT Alliance - это организация, члены которой разрабатывают, используют и продвигают протокол Secure Reliable Transport и программное обеспечение на его основе. Членами-учредителями альянса являются 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. ^ a b c Биты отсортированы от наиболее значимого до наименее значимого; битовое смещение 0 - это самый старший бит первого октета. Октеты передаются в сетевом порядке . Порядок передачи битов зависит от среды.

Ссылки [ править ]

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

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • OBS Studio
  • Исходный код библиотеки SRT
  • Слайды: Обзор протокола SRT - IETF 107 (рассылка)