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.
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.
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.
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 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.
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