Planung und Datenübertragungsprotokolle

Der Kern von Perfect Streamer ist die zuverlässige Zustellung 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 ist input die MPEG-TS-Quellen, output die Übertragung an die Empfänger;

  • auf dem Empfänger ist input der 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, verbindet sich ein Empfänger hinter NAT selbst mit dem Sender — eine Weiterleitung eingehender Ports auf seiner Seite 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, die eine Wiederherstellung von Verlusten ohne Rückkanal ermöglichen. Zu dieser Klasse gehört Pro-MPEG / RTP+FEC.

PS1 (Perfect Stream)

Ein Eigenentwicklungsprotokoll 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 vollständigem 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 reguläre Neuübertragung ohne sichtbaren Neuaufbau der Verbindung behoben.

PS1 ist ein proprietäres Protokoll und funktioniert nur zwischen Perfect-Streamer-Knoten. Es ist besonders effizient in einer 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, was Kompatibilität mit SRT-Geräten von Drittanbietern und Cloud-Diensten bietet.

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 verfügbar. 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, was hohe Effizienz gewährleistet. 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 / RTP+FEC (SMPTE 2022-1/2)

Zustellung von MPEG-TS über RTP mit Vorwärtsfehlerkorrektur (FEC), ohne Rückkanal. Das Protokoll ist auch als Pro-MPEG COP3 bekannt. 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 / RTP+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, flexible Einstellung der Neuübertragungsreserve — 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 / RTP+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 / RTP+FEC). 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 — dieser Transport ist für Kanäle mit geringen Verlusten.

Ports. Jeder Lauschpunkt 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

Alle Peer-Protokolle unterstützen AES-Verschlüsselung mit einer gemeinsamen Passphrase, die auf beiden Seiten eingegeben wird. Für SRT wird zusätzlich die Schlüssellänge gewählt (128, 192 oder 256 Bit). Die Verschlüsselung ändert die Stream-Bitrate nicht.

Für Pro-MPEG ist die Verschlüsselung eine nicht standardmäßige Erweiterung, daher wird bei ihrer Aktivierung die Kompatibilität mit Software und Geräten von Drittanbietern nicht garantiert.

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 Ausgabe an ein Gerät (einschließlich SDI); 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-Verteilung (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 einzelnen Stream ermöglichen es, einen einzelnen Kanal gleichzeitig an viele Empfänger und über verschiedene Protokolle zu verteilen.

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.