Planung und Datenübertragungsprotokolle

Der Kern von Perfect Streamer ist die zuverlässige Übertragung von MPEG-TS-Streams zwischen Knoten über ein öffentliches Netz mit Paketverlust und Verzögerungen. Dieser Abschnitt beschreibt das Übertragungsmodell, die Transportprotokolle und wie ein Kanal geplant wird: Auswahl eines Protokolls sowie Berechnung von Bandbreite, Latenz und Ports. Detaillierte Einstellungen einzelner Felder finden Sie in der kontextbezogenen Beschreibung der Weboberfläche (Weboberfläche), und die Streamverarbeitung auf einem Knoten im Abschnitt Streamer: Implementierungsdetails.

Übertragungsmodell: Stream, Sender, Receiver, Peer

Die Arbeitseinheit ist ein Stream (Stream), ein einzelner MPEG-TS-Kanal. Für jeden Stream werden ein Sender-Server (Sender) und ein oder mehrere Empfänger (Receiver) konfiguriert; eine Sender-Empfänger-Kopplung wird als Peer bezeichnet.

Die Konfiguration läuft auf Listen von Eingängen (input) und Ausgängen (output) für jeden Stream hinaus:

  • auf dem Sender steht input für die MPEG-TS-Quellen und output für die Übertragung an die Empfänger;

  • auf dem Empfänger steht input für den Empfang des Streams vom Sender.

Mehrere Eingänge in der Liste bieten Quellenredundanz, mehrere Ausgänge die gleichzeitige Verteilung eines einzelnen Kanals an viele Empfänger und über verschiedene Protokolle.

Bei Protokollen, bei denen der Empfänger die Verbindung initiiert, ist NAT auf seiner Seite kein Hindernis: Der Empfänger verbindet sich selbst mit dem Sender, und eine Weiterleitung eingehender Ports auf dem Empfänger ist nicht erforderlich.

Peer-Protokolle für zuverlässige Übertragung

Für die Übertragung zwischen Sender und Empfänger stehen vier Peer-Protokolle zur Verfügung. Sie gliedern sich nach dem Prinzip der Verlustkompensation in zwei Klassen:

  • ARQ (Automatic Repeat reQuest) — verlorene Pakete werden auf Anforderung des Empfängers erneut übertragen. Erfordert einen Rückkanal und einen Puffer auf dem Empfänger; die Wiederherstellungstiefe ist konfigurierbar. Zu dieser Klasse gehören PS1, SRT und RIST.

  • FEC (Forward Error Correction) — dem Stream werden fortlaufend redundante Daten hinzugefügt, mit denen sich Verluste ohne Rückkanal wiederherstellen lassen. Zu dieser Klasse gehört Pro-MPEG COP3/RTP+FEC (SMPTE 2022-1/2).

PS1 (Perfect Stream)

Ein selbst entwickeltes Protokoll auf UDP-Basis. Es arbeitet nach dem ARQ-Prinzip mit selektiver Neuübertragung. Es zeichnet sich durch geringen Ressourcenverbrauch aus und überträgt Streams mit hoher Bitrate, einschließlich eines vollständigen MPTS.

Der Empfänger initiiert die Verbindung, daher erfordert der Sender eine Authentifizierung: Empfänger werden als Peer mit Login und Passwort eingetragen oder per IP autorisiert. Die Latenz wird durch den Puffer des Empfängers bestimmt (Fenster für Jitter-Beseitigung und Neuübertragung); der Puffer des Senders muss größer sein als die Puffer der Empfänger. Beim Wechsel der aktiven Quelle auf dem Sender verbinden sich die Empfänger nicht neu: Die Unterbrechung wird durch die übliche Neuübertragung behoben.

PS1 ist ein proprietäres Protokoll und funktioniert nur zwischen Perfect-Streamer-Knoten. Es eignet sich am besten für eine Punkt-zu-Mehrpunkt-Konfiguration: ein Sender und viele Empfänger.

SRT

Ein offenes Protokoll auf UDP-Basis (UDT). Es ist weit verbreitet und kompensiert Paketverluste gut. Es unterstützt die Modi listener und caller und ist dadurch kompatibel mit SRT-Geräten von Drittanbietern und Cloud-Diensten.

Im listener-Modus auf dem Sender verbinden sich mehrere Empfänger mit einem einzelnen Stream; zur Autorisierung werden Empfänger als Peer eingetragen, eine Autorisierung per IP ist möglich. Die initiierende Seite (caller) kann sich sowohl auf dem Empfänger als auch auf dem Sender befinden. Die Bandbreitenreserve für die Neuübertragung wird in Prozent über der Stream-Bitrate festgelegt.

Auf dicht belegten Empfangsknoten mit einer großen Anzahl von SRT-Eingängen im caller-Modus kann die integrierte Pufferung des SRT-Empfängers (TSBPD) deaktiviert werden: Die Synchronisation übernimmt dann der Jitter-Puffer des Knotens (Synchronisation), was die CPU-Last spürbar senkt.

RIST

Ein offenes Protokoll auf RTP/RTCP-Basis. Es arbeitet nach dem ARQ-Prinzip ohne ACK, nur mit NACK. Es verwendet Unicast und Multicast.

Die Profile Simple und Main sind implementiert: Simple belegt zwei aufeinanderfolgende UDP-Ports (der Basisport muss gerade sein), Main multiplext die Daten in einen einzelnen Port. Mehrere Pfade (Peers) mit gewichteter Lastverteilung werden unterstützt — für Redundanz und Aggregation. Bei Multicast können es viele Empfänger sein, mit Autorisierung per IP.

Pro-MPEG FEC

Übertragung von MPEG-TS über RTP mit Vorwärtsfehlerkorrektur (FEC), ohne Rückkanal. In PSS ist eine zweidimensionale FEC-Matrix implementiert (Zeilen und Spalten, SMPTE 2022-2).

Der Strom von RTP-Paketen wird in eine Matrix vorgegebener Größe gruppiert, entlang deren Zeilen und Spalten FEC-Pakete gebildet werden. Je kleiner die Matrix, desto besser die Wiederherstellung, aber desto höher der konstante Overhead. FEC-Kanäle belegen zwei zusätzliche Ports (port+2 und port+4), was bei der Platzierung mehrerer Streams auf einem Host oder in einer Multicast-Gruppe zu berücksichtigen ist.

Die Vorteile sind niedrige feste Latenz und Kompatibilität mit professioneller Sendetechnik. Die Nachteile sind konstanter zusätzlicher Verkehr und schwache Wiederherstellung bei hohen Verlusten (über ~0,2 %), daher ist das Protokoll für verwaltete Kanäle mit geringen Verlusten und nicht für das „schwere“ öffentliche Internet ausgelegt.

Auswahl des Übertragungsprotokolls

Protokoll

Prinzip

Rückkanal

Latenz

Kompatibilität

PS1

ARQ über UDP

erforderlich

konfigurierbar

nur zwischen Perfect-Streamer-Knoten

SRT

ARQ über UDP (UDT)

erforderlich

konfigurierbar

offen; SRT-Geräte von Drittanbietern und Cloud

RIST

ARQ (NACK) über RTP/RTCP

erforderlich

konfigurierbar

offen; RIST-Geräte von Drittanbietern; Unicast und Multicast

Pro-MPEG FEC

FEC über RTP

nicht erforderlich

niedrig, fest

offen (SMPTE 2022-1/2); professionelle Sendetechnik

Auswahlkriterien:

  • ein Kanal zwischen Perfect-Streamer-Knoten, hohe Bitrate oder vollständiges MPTS, Punkt-zu-Mehrpunkt-Verteilung — PS1;

  • Kompatibilität mit Geräten von Drittanbietern oder Cloud, Neuübertragungsreserve in Prozent über der Bitrate — SRT;

  • ein offener RTP-basierter Transport, Multicast, Lastverteilung über mehrere Pfade — RIST;

  • ein verwalteter Kanal mit geringen Verlusten, minimale Latenz ohne Rückkanal, professionelle Sendetechnik — Pro-MPEG FEC.

Planung von Bandbreite, Latenz und Ports

ARQ-Protokolle (PS1, SRT, RIST). Verluste werden durch Neuübertragung kompensiert, daher ist Folgendes vorzusehen:

  • einen Rückkanal vom Empfänger zum Sender;

  • eine Bandbreitenreserve über der nominalen Bitrate — Verlustspitzen verursachen Spitzen im Neuübertragungsverkehr;

  • einen Puffer auf dem Empfänger für die Kanallatenz. Je größer der Puffer, desto tiefer die Verlustwiederherstellung, aber desto höher die Ende-zu-Ende-Latenz; als Richtwert dienen mehrere RTT-Werte. Streams mit niedriger Bitrate erfordern einen zeitlich größeren Puffer, damit genügend Pakete in das Wiederherstellungsfenster passen.

FEC-Protokoll (Pro-MPEG). Redundante Pakete werden fortlaufend übertragen, unabhängig von den tatsächlichen Verlusten, daher ist der Overhead fest und hängt von der Größe der FEC-Matrix ab. Ein Rückkanal ist nicht erforderlich, die Latenz ist niedrig und fest, aber die Wiederherstellung ist begrenzt, daher eignet sich dieser Transport für Kanäle mit geringen Verlusten.

Ports. Jeder lauschende Endpunkt benötigt einen eindeutigen UDP-Port innerhalb des Hosts oder der Gruppe. Beachten Sie zusätzlich, dass das RIST-Simple-Profil zwei aufeinanderfolgende Ports belegt (den geraden Basisport und den nächsten) und Pro-MPEG den Basisport plus zwei FEC-Ports (port+2 und port+4). In einem Meshwork-Netz hilft ein gemeinsamer Katalog belegter Adressen und Ports, Kollisionen zu vermeiden (siehe Meshwork).

Stream-Verschlüsselung

Die AES-Verschlüsselung wird durch eine gemeinsame Passphrase aktiviert, die auf beiden Seiten der Verbindung festgelegt wird; die Phrasen müssen übereinstimmen. Eine leere Phrase bedeutet Betrieb ohne Verschlüsselung. Die Verschlüsselung ändert die Bitrate des Streams nicht.

Unterstützung und zulässige Länge der Phrase unterscheiden sich je nach Protokoll:

Protokoll

Länge der Passphrase

Besonderheiten

PS1

10–64 Byte

—

SRT

10–79 Byte

Zusätzlich wird die Schlüssellänge gewählt: 128, 192 oder 256 Bit. Eine Phrase außerhalb der zulässigen Länge hält den Eingang oder Ausgang mit einer eindeutigen Fehlermeldung an.

RIST

wird nicht geprüft; verwendet werden die ersten 127 Byte

Nur im Profil Main. Im Profil Simple hat die Passphrase keine Wirkung.

Pro-MPEG

10–64 Byte

Eine nicht standardisierte Erweiterung: Bei ihrer Aktivierung wird die Kompatibilität mit Software und Geräten von Drittanbietern nicht garantiert.

Die Länge der Phrase wird in Byte gezählt, nicht in Zeichen: Ein kyrillischer Buchstabe belegt zwei Byte.

Weitere Eingänge und Ausgänge

Neben den Peer-Protokollen stehen Standardtransporte für Empfang und Übertragung zur Verfügung:

Protokoll

Eingang

Ausgang

Anmerkung

UDP

ja

ja

Unicast/Multicast, SSM, Schnittstellenauswahl; bis zu 7 TS-Pakete pro Datagramm

RTP

ja

ja

Wiederherstellung der Reihenfolge vertauschter Pakete

TCP

ja

—

Client-Modus; Empfang dort, wo UDP blockiert ist

HLS / HTTP

ja

ja

beim Empfang wird die Variante der adaptiven Wiedergabeliste anhand einer konfigurierbaren Nummer gewählt (standardmäßig die erste); Eingang nur für SPTS

RTSP

ja

—

IP-Kameras und RTSP-Server; Auto-Remux zu MPEG-TS; nur für SPTS

RTMP / RTMPS

ja

ja

Veröffentlichung an RTMP-Empfänger von Drittanbietern; H.264 und HEVC; nur für SPTS

file / device

ja

ja

Aufnahme in eine TS-Datei und MPEG-TS-Ausgabe an ein Gerät (zum Beispiel ASI); Schleifenwiedergabe aus einer Datei

pipe (FIFO)

ja

ja

Brücke zu einem externen Prozess über eine benannte Pipe

std (externe Anwendung)

ja

ja

Brücke zu nicht standardmäßigen Protokollen über eine Konsolenanwendung

Veröffentlichung und Empfang von RTMP sind in RTMP-Veröffentlichung und -Empfang beschrieben; RTSP, HLS/HTTP-Eingang, Dateien und Geräte, benannte Pipes und externe Anwendungen — in Sonstige Ein- und Ausgänge. Detaillierte Einstellungen jedes Transports finden sich im Abschnitt Weboberfläche. Die OTT-Auslieferung (HLS, LL-HLS, DASH) ist gesondert in OTT und DVR beschrieben.

Quellenredundanz und Verteilung

Redundanz. Für einen Stream können mehrere Eingänge festgelegt werden; aktiv ist immer nur einer. Beim Ausfall des aktiven Eingangs schaltet der Stream automatisch auf den nächsten in der Liste um und kann bei Wiederherstellung zur priorisierten Quelle zurückkehren. Dadurch lassen sich die primäre und die Reservequellen eines Kanals im Voraus planen; detaillierte Einstellungen der Eingangsumschaltung sind in SPTS-Streams beschrieben.

Verteilung. Mehrere Ausgänge für einen Stream verteilen einen Kanal gleichzeitig an viele Empfänger und über verschiedene Protokolle.

Anforderungen an den Eingangsstream

  • Konformität mit ISO/IEC 13818-1, Single Program (SPTS) oder Multi Program Transport Stream (MPTS).

  • Die Zusammensetzung der Spuren richtet sich nach dem gewählten Inhaltstyp des SPTS-Streams, siehe SPTS-Streams.

  • Verwürfelte (verschlüsselte) Streams werden unterstützt, siehe SPTS-Streams.

  • Zur Synchronisation muss der Stream gültige PCR-Marken enthalten.

Filterung, Modifikation und Bitratenmodi des Eingangsstreams sind in SPTS-Streams beschrieben, die Besonderheiten des Multiplex in MPTS-Streams.