Secure Reliable Transport
# Secure Reliable Transport

Secure Reliable Transport ist ein Videostreamingprotokoll. Es wurde 2017 von Haivision vorgestellt. Das Protokoll ist Open Source und frei von Herstellern implementierbar. Als UDP Protokoll ist es ein Rivale zum von Adobe entwickelten proprietären RTMP.
SRT ist ein „Point to Point“-Protokoll und dient zur direkten Verbindung von einem Sender und einem Empfänger, also Quelle und Senke. Broadcasting und Distribution an mehrere Empfänger wird nicht unterstützt. SRT unterstützt eine Ende-zu-Ende-Verschlüsselung mittels AES-128.
Ein häufiger Anwendungsbereich ist der Uplink, also die Videoübertragung von einem Außenreporter ins Studio, oder von einem Studio in ein Content Delivery Network (CDN). SRT ist nicht standardisiert.
Anders als viele alternative Protokolle wie zum Beispiel RTMP unterstützt SRT neuere Kodierungsverfahren wie H.265 HEVC. So kann bei gleichbleibender Bitrate eine höhere Videoqualität erreicht werden.

## Funktionsweise

Die beiden Enden der „Point to Point“-Verbindung werden entweder als Caller oder als Listener bezeichnet. Dabei gibt es keine klare Zuordnung von Modus und Verbindungsteilnehmer. Es kann also der Empfänger als Caller oder Listener arbeiten, ebenso aber auch der Sender.
Caller und Listener definieren nur, welches Ende den Verbindungsaufbau initiiert und die technischen Parameter der aufzubauenden Verbindung definiert.
Neben den Betriebsmodi Caller und Listener der Verbindungsteilnehmer gibt es noch einen Rendezvous-Modus. Hier versuchen beide Teilnehmer eine Verbindung herzustellen. Der Teilnehmer, dem es gelingt, kann dann mit seinen gesetzten Parametern die Verbindung aufbauen. Dieser Modus ist vor allem praktisch bei mehreren Firewalls und NATs, die überbrückt werden müssen. Gerade im Bereich der Außenberichterstattung kann dieser Modus genutzt werden um Sender die im Mobilfunknetz angebunden sind einfacher zu empfangen.
SRT hat keinen speziellen dezidierten Port. So kann theoretisch für jeden auf einem Computer laufenden Empfänger ein neuer Port zugewiesen und die Datenströme getrennt werden. Mehrere Programme bieten eine GUI um die Parameter zu definieren, anders als FFmpeg, welches als reines Konsolenprogramm nur direkte Links unterstützt. Ein direkter Link kann wie folgt aussehen und noch weitere Streamingparameter beinhalten:
* srt://ip.des.ser.vers:port?mode=caller
* srt://ip.des.ser.vers:port?mode=listener
* srt://ip.des.ser.vers:port?mode=rendezvous

## Implementierung

Stand Juli 2021 gibt es nur eine Implementierung des Protokolls, eine open-source Bibliothek geschrieben in der Programmiersprache C. SRT ermöglicht den Betrieb in mehreren Modi.
* Dateiübertragung mittels eines UDP Paketstreams
* File-stream Modus: wie TCP
* Live-Modus: Hier wird ein Videostream in einen MPEG-TS Transportstream gepackt und päckchenweise über das Netzwerk ausgeliefert.
Weitere Eigenschaften:
* Verschlüsselung mit einem Pre-shared Key mit Unterstützung von OpenSSL
* SRT Access Control (aka "StreamID") kann von Programmen genutzt werden um mehrere Streams zu separieren und zu schützen. Die mehreren Streams können dann auch über den gleichen Port empfangen und von der gleichen Empfängerinstanz verarbeitet werden.
* Optional auch Fehlerbehebung während des Streams mittels Vorwärtsfehlerkorrektur.

## SRT Allianz

Die SRT Allianz ist eine Organisation mit über 400 Mitgliedern. Diese entwickeln und verbreiten das Protokoll weiter und entwickeln eigene Programme und Implementierungen. Gründungsmitglieder sind Haivision und Wowza.