2018-04-21

SRT Secure Reliable Transport とは何か?

最近、注目されている次世代のストリーミング転送技術であるSRT Secure Reliable Transportはご存じでしょうか?


SRT Secure Reliable Transport とは何か?

最近、注目されている次世代のストリーミング転送技術であるSRT Secure Reliable Transportはご存じでしょうか?

SRT Low Latency Streaming Protocol | Haivision
_SRT is applied to contribution and distribution endpoints as part of a video stream workflow. After encoding (or…_www.haivision.com

SRTとは、ビデオストリームを暗号化(Secure)、重大なパケット損失から回復する(Reliable)、変化するネットワーク条件に動的に適応する(Transport)の3つに力を入れている技術です。

元々、SRTは米Haivision社が開発した技術で、現在は米Wowza社とSRT Allianceを結成し、更なる普及を目指しています。現在、SRTはHaivisionの製品やWowza Streaming Engineなどで利用できます。

現在主流のストリーミングフォーマットとしては、RTMPがありますが、プロトコル上の制約により、大容量の配信には不向きだったり、遅延の問題などがありました。

SRTの大きな特徴として、TCPではなく、UDPを拡張したUDP based Data Transfer Protocol(UDT)を採用しています。

UDTとは、TCPのデメリットである長距離通信でスループットが出ない問題を解決するために米イリノイ大学シカゴ校などの研究チームが開発したプロトコルです。UDTはUDPをベースに作られていて、独自のフロー制御や輻輳制御を実装しています。

そもそも、TCPで何故スループットが出ないかと言うと、フロー開始時のウィンドウサイズを制限していることや、フロー制御と輻輳制御がRTTを基準に行われていることが原因です。

そこで、UDTはパケットペアを利用して受信側の利用可能帯域幅の計測を行い、それに基づいたレートベースの制御を行います。

そのため、TCPと比べて高スループットで大容量のデータ転送が可能になるほか、UDTではパケットベースのシーケンシングやACK/NACKによるパケット損失率の測定および再送信も備わっているため、既存のUDPと比べると高い信頼性があります。

また、SRTでは独自に開発した前方誤り訂正(FEC)でパケットのリカバーもしているため、パケットロスに対してはかなり強いと言えるでしょう。デモムービーが公開されていますので、是非一度ご覧ください。

さて、そんなSRTですが昨年の4月にGitHub上でオープンソースとして公開されました。

Haivision/srt
_srt - Secure, Reliable, Transport_github.com

OSSになったことで、誰でもSRTを試せるようになったので、皆さんも一度いかがでしょうか?

今後、SRTがどうなっていくのか期待したいところです。

【追記】

FFmpeg 4.0でlibsrtがサポートしたようです。