Ob Voice over IP (VoIP) oder Streaming eines Live-Videos: Die üblichen Internetprotokolle sind nicht für Echtzeitübertragungen ausgelegt. Für den Transfer von audiovisuellen Daten über IP-basierte Netzwerke wurde deshalb das Protokoll RTP entwickelt.
Was ist RTP?
Das Ziel von
RTP (
Real-Time Transport Protocol) ist das stetige Übertragen via
IP von Daten, deren Realzeit-Verhalten sehr relevant ist (Audio, Video usw.). Die wichtigste Aufgabe von RTP ist es, IP-Paketen mit Sprach- oder Videoinformationen sowie entsprechende Sequenznummern zu erzeugen und sie zu befähigen, in der nächst tiefer liegenden Ebene die Ordnung der Pakete zu verändern.
Allgemeiner betrachtet erlaubt RTP:
das Identifizieren der übertragenen Information,
das Eingliedern von Zeitmarken und Sequenznummern in die transportierte Information,
das Überwachen der Ankunft der Pakete.
Zusätzlich kann RTP von Muticast-Paketen getragen werden, damit Gespräche mehrere Ziele gleichzeitig erreichen können.
Was ist RTCP?
Das Protokoll
RTCP (
Real-time Transfert Control Protocole) beruht auf der zeitsequenziellen Übertragung von Kontrollpaketen von sämtlichen Teilnehmern einer Sitzung. Es handelt sich um ein RTP-Stromkontrollprotokoll, mit dem Grundinformationen und die Dienstgüte auf die Teilnehmer einer Sitzung verteilt werden.
Verwendung von RTP und RTCP
RTP dient der Verwaltung von Multimedia-Strömen (Sprache, Video) über IP. RTP läuft mit dem UDP-Protokoll. Der RTP-Header enthält Informationen über Synchronisation sowie Nummerierung. Die Datenkodierung hängt vom Typ der Datenkompression ab.
Je Stromtyp wird ein RTP-Kanal eingesetzt: eins für Audio und eins für Video. RTP bietet einen Dienst von Anfang bis zum Ende. Er setzt einen Header zu mit Informationen über notwendiges Timing der Synchronisierung des Realzeit-Stroms vom Typ Ton und Bild.
RTP und RTCP ermöglichen jedes für sich den Transport und die Kontrolle von Datenflüssen mit Realtime-Eigenschaften. RTP und RTCP sind Protokolle auf Applikationsebene und nutzen die Protokolle der niedrigeren Schicht TCP oder UDP, aber vor allem UDP.
RTP und RTCP funktionieren genauso gut im Modus Unicast (
point-to-point) sowie den Modus Multicast (
multipoint). Sie nutzen jedes für sich einen separaten
Port, getrennt durch ein Portpaar. RTP nutzt den geraden Port und RTCP den ungeraden unmittelbar darüber liegenden Port.
Der RTP-Header
Der RTP-Header beinhaltet folgende Informationen:
<--------------------------- 32 bits --------------------------->
| V=2 | P | X | CC | M | Sequence number |
| Timestamp |
| Identifier der Synchronisierungsquelle (SSRC) |
| Identifier der Contributor-Quelle (CSRC) |
Hier die Erläuterung der einzelnen Felder im Header:
Das Feld
Version V (2 bit) zeigt die Protokoll-Version an (V=2).
Das Feld
Padding P (1 bit). Wenn P=1 ist, enthält das Paket zusätzliche Füll-Bytes (
padding) zum Füllen des letzten Pakets.
Das Feld
Extension X (1 bit). Wenn X=1 ist, folgt auf den Header ein Erweiterungspaket.
Die Felder
CSRC count CC (4 bit) enthalten die Zahl der CSRC, die nach dem Header kommen.
Das Feld
Marker M (1 bit). Seine Bedeutung hängt vom Applikationsprofil (
profile) ab.
Das Feld
Payload Type PT (7 bit) zeigt die Art der Nutzdaten (
payload) an (Audio, Video, Bild, Text, HTML usw.).
Das Feld
Sequence number (16 bit). Sein erster Wert ist willkürlich, dann wird es mit jedem gesendeten Paket um 1 erhöht. Es kann dazu dienen, verlorene Pakete ausfindig zu machen.
Das Feld
Timestamp (32 bit) zeigt den Zeitpunkt an, an dem das erste Byte im RTP-Paket ausgemustert wurde.
Das Feld
SSRC (32 bit) und identifiziert eindeutig die Synchronisierungsquelle. Sein Wert wird von der Applikation willkürlich gewählt.
Das Feld
CSRC (32 bit) identifiziert die beitragenden Quellen.
Der RTCP-Header
Das Ziel von RTCP ist die Lieferung von verschiedenen Informationstypen und eine Rückmeldung über die Empfangsqualität.
Der Header beinhaltet die folgenden Informationen.
Das Feld
Version (2 bit).
Das Feld
Padding (1 bit): Zeigt eine Füllung an, deren Größe im letzten Byte steht.
Das Feld
Reception Report Count (5 bit): Bezeichnet die Anzahl der Meldungen im Paket.
Das Feld
Paket Type (8 bit)
Das Feld
Length (16 bit): Gibt die Länge des Pakets an.
Das Feld
SSRC (32 bit): Identifiziert den mit der Quelle verbundenen Empfänger.
Das Feld
NTP Timestamp (64 bit)
Das Feld
RTP Timestamp (32 bit)
Das Feld
Sender's Packet Count (32 bit)
Das Feld
Sender's Octet Count (32 bit)
Das Feld
SSRC-n (32 bit): Quellnummer der analysierten Daten.
Das Feld
Fraction Lost (8 bit)
Das Feld
Cumulative Number of Packets Lost (24 bit)
Das Feld
Extended Highest Sequence Number Received (32 bit)
Das Feld
Interarrival Jitter ( 32 bit); Dies ist eine Abschätzung des Zeitintervalls eines RTP-Datenpakets gemessen am Timestamp in Form einer ganzen Zahl. Es handelt sich tatsächlich um die relative Durchgangszeit zwischen zwei Datenpaketen. Die Formel dafür ist:
J=J+(|D(i-1,i)|-J)/16
Der Interarrival Jitter wird berechnet bei jedem Datenpaket aus der Quelle SSRC_n.
i = erstes Paket
i-1 = voriges Paket
D = Differenz
J = zweites Paket
Das Feld
Last SR Timestamp (32 bits)
Das Feld
Delay since last SR (32 bits)
Foto: © Franck Boston - Shutterstock.com