Secure Reliable Transport ( SRT ) は、 UDPトランスポートプロトコルを利用するオープンソースのビデオトランスポートプロトコルです。SRTプロトコル仕様は、IETFからインターネットドラフトとして入手できます。[1]
概要
SRT は、 TCPに似た接続と制御、信頼性の高い伝送を提供しますが、これはアプリケーション層で行われ、基礎となるトランスポート層としてUDPプロトコルが使用されます。低遅延 (デフォルト: 120 ミリ秒) を維持しながらパケット回復をサポートします。SRT は、 AESを使用した暗号化もサポートします。
このプロトコルは、高速ファイル転送用に設計されたUDTプロジェクト[2]から派生したものです。接続、シーケンス番号、確認応答、失われたパケットの再送信に同様の方法を利用することで、信頼性メカニズムを提供しました。選択的かつ即時(NAKベース)の再送信を利用します。
SRT は、ライブ ストリーミング モードをサポートするために、さらにいくつかの機能を追加しました。
- ソースタイム伝送(タイムスタンプベースのパケット配信)による制御された遅延
- 送信速度制御の緩和
- 条件付き「遅すぎる」パケットドロップ(時間内に回復されなかった失われたパケットによるヘッドオブラインブロッキングを防止)
- 熱心なパケット再送信(定期的なNAKレポート)
パケットヘッダー
SRTパケットはアプリケーション層で作成され、トランスポート層に渡されて配信されます。アプリケーションによって作成されたSRTメディアまたは制御データの各ユニットは、SRTパケットヘッダーで始まります。[1]
データパケット
ヘッダー内のフィールドは次のとおりです。
- パケットシーケンス番号(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の設計者であるMarc Cymontkowski氏によると、SRTは公衆インターネット経由でMPEGトランスポートストリームを送信するだけでなく、IoT接続、メタデータ交換、通信プロトコル、非圧縮データ配信にも使用されているとのことです。[5]
このプロトコルのリファレンス実装は、もともとLesser General Public Licenseバージョン2.1の下で公開されましたが、[6] 2018年3月22日にMozilla Public Licenseの下で再ライセンスされました。[7]
SRTは、フリーソフトウェア マルチメディアフレームワークの GStreamer、FFmpeg、OBS Studio、およびフリーソフトウェアメディアプレーヤーのVLCでサポートされています。[4] [8]
UDPベースのデータ転送プロトコル(UDT)プロジェクトはSRTプロジェクトの基盤となっている。[9] SRT C APIは主にUDT APIに基づいて設計されている[10]
SRTは低遅延のライブビデオ伝送用に設計されました。[9] [3]
Haivisionは2017年のNABショーでSRTプロトコルとリファレンス実装をオープンソースとしてリリースした。[9]
2020年3月、個別のインターネットドラフトdraft-sharabayko-mops-srt [1]が、インターネットエンジニアリングタスクフォースのメディアオペレーション(MOPS)ワーキンググループに検討のために提出されました。
SRTアライアンス
SRTアライアンスは、Secure Reliable Transportプロトコルとそれに基づくソフトウェアを開発、使用、推進する組織です。アライアンスの創設メンバーはHaivisionとWowza Streaming Engineです。[11]
実装
現在利用可能な実装は 1 つあり、それはオープンソースの SRT ライブラリです。
C 言語 API は主に以前の UDT API に基づいており、新機能が追加されるたびにさらに変更されます。この API は TCP の API と非常によく似ています。
SRT は実際には 3 つの動作モードを提供しており、そのうち最初の 2 つは UDT から派生したものです。
- ファイルストリームモード: TCPと同様
- ファイルメッセージモード: SCTPプロトコルに類似 - 明確に定義された境界を持つデータブロックを送信します
- ライブ モード: データは、適切な時間間隔を置いた小さなパケット (送信ストリームがMPEG-TSの場合、通常は最大 1316 バイト) で送信されます。同じ時間間隔を置いた同じ単一パケットが受信側に配信されます。
SRT ライブラリは次の機能も提供します:
- 事前共有キーを使用した暗号化。暗号化サポートは元々 OpenSSL によって提供されていましたが、現在は Nettle (GNU TLS) または mbedTLS も使用できます。
- SRTアクセス制御(別名「StreamID」)は、アプリケーションがリソースを識別し、同じサービスポート番号を複数の目的で使用しながらユーザーパスワードアクセス方式を使用するために使用できます。[12]
- オプションの前方誤り訂正メカニズム。
さらに詳しいドキュメントについては、ソース コード ドキュメントを参照してください。
参照
- 信頼性の高いインターネットストリームトランスポートは、「プロシューマー」SRTとは対照的に、プロフェッショナルプロトコルの市場のギャップを埋めることを目的としています。[13]
注記
- ^ abc ビットは最上位から最下位の順に並べられ、ビット オフセット 0 は最初のオクテットの最上位ビットです。オクテットはネットワーク順に送信されます。ビットの送信順序はメディアによって異なります。
参考文献
- ^ abc Sharabayko, MP; Sharabayko, MA (2021). SRTプロトコル。IETF。ID draft -sharabayko-srt-01 。 2023年10月20日閲覧。
- ^ 「UDT: データ転送ボトルネックの解消」udt.sourceforge.io . 2020年8月27日閲覧。
- ^ ab Haivision (2021年9月26日). 「安全で信頼性の高いトランスポート」. GitHub.
- ^ ab オリヴィエ・クレット (2018 年 2 月 16 日)。 「GStreamer の SRT」。
- ^ 「すべてを結びつける:SRTの伝道師、マーク・シモントコウスキー氏へのインタビュー」。Medialooks Blog。2019年11月5日。
- ^ Michael Larabel (2017 年 4 月 24 日). 「SRT ビデオ トランスポート プロトコルがオープンソース化」. Phoronix.
- ^ ローマ rndi (2018 年 3 月 22 日)。 「ライセンスをMPLv2.0に変更 · Haivision/srt@a75d4c4」。 GitHub。
- ^ Olivier Crête (2018 年 6 月)。「セキュア ビデオが成熟期を迎える」。Linux Format マガジン。第 237 号。
- ^ abc Marc Cymontkowski. 「SRT を作成した理由と SRT と UDT の違い」
- ^ 「Haivision srt API ドキュメント」
- ^ 「Microsoft が SRT オープンソース ストリーミング プロジェクトに参加」。The Broadcast Bridge。2018年 9 月 17 日。
- ^ 「SRT アクセス制御ガイドライン」。GitHub。2019年 11 月 7 日。
- ^ 「SRTよりもRISTを選ぶべき5つの理由」RISTフォーラム。2020年5月27日。 2021年12月4日閲覧。
外部リンク
- 公式サイト
