• Lesedauer:13 min Lesezeit
  • Beitrags-Kategorie:IT
  • Beitrags-Autor:
  • Beitrags-Kommentare:0 Kommentare

Haben Sie sich schon einmal gefragt, warum sich die VoIP Sprachqualität von Gespräch zu Gespräch unterscheidet? Man sollte meinen die heutigen Geräte besitzen genügend Rechenleistung, um eine ordentliche Qualität zu liefern. Auch die Bandbreite sollte heute eher nicht der limitierende Faktor sein. Es gibt in der Praxis etliche Faktoren, die Einfluss auf die VoIP Sprachqualität haben. Auf den wichtigen Faktor Codec soll im Folgenden eingegangen werden.
Zunächst muss ich Sie leider mit einigen Grundlagen belästigen, ich halte diese jedoch so absolut kurz wie nur möglich.

MOS-Qualitätsskala

WertQualitätBedeutung
5ausgezeichnetEs ist keine Anstrengung nötig, um die Sprache zu verstehen.
4gutDurch aufmerksames Hören kann die Sprache ohne Anstrengung wahrgenommen werden.
3ordentlichDie Sprache kann mit leichter Anstrengung wahrgenommen werden.
2mäßigEs bedarf großer Konzentration und Anstrengung, um die übermittelte Sprache zu verstehen.
1mangelhaftTrotz großer Anstrengung kann man sich nicht verständigen.
MOS-Qualitätsskala, Quelle: https://de.wikipedia.org/wiki/Mean_Opinion_Score

Protokolle

VoIP, SIP, SDP und RTP

VoIP

Hinter der Abkürzung VoIP steht Voice over IP. Einfach gesagt die Sprachübertragung über ein IP-Datennetz. Es handelt sich also nicht um ein Protokoll, sondern einen beschreibenden Begriff.

SIP – Session Initiation Protocol

Dieses Protokoll findet sehr häufig seinen Einsatz im VoIP Umfeld. Fast immer, wenn es um VoIP-Telefonie geht, werden Sie auf SIP stoßen.
Ein Signalisierungsprotokoll, dass den Verbindungsaufbau und den Abbruch eines Gesprächs regelt. Für die Übertragung des eigentlichen Gesprächs ist das SIP nicht zuständig. Hierfür wird häufig RTP (Real-Time Transport Protocol) genutzt.

SDP – Session Description Protocol / Sitzungsbeschreibungsprotokoll

Mit SDP werden Eigenschaften von Multimediadatenströmen beschrieben. Es dient zur Darstellung bzw. Ankündigung der Fähigkeiten des Endpunktes. Zum Beispiel wird mittels SDP beschrieben, welche Codecs zur Verfügung stehen. Dies ist für unsere Fragestellung relevant.

RTP (Real-Time Transport Protocol)

Protokoll zur Übertragung von audio(visuellen) Daten. RTP nutzt hierzu UDP. Mittels RTP wird also die eigentliche Sprache des Gesprächs übertragen.

Codecs

Was ist ein Codec?

Codec ist eine Abkürzung der englischen Begriffe für Kompression und Decodierung. Damit wird ein Verfahren bezeichnet, das eine Audio-, Video- oder Bilddatei nach einem bestimmten Algorithmus komprimiert und decodiert. Um eine komprimierte Datei zu öffnen, muss zur Decodierung der gleiche Codec wie zur Kompression verwendet werden.

https://www.e-teaching.org/materialien/glossar/codec

Wir beziehen uns im Folgenden lediglich auf Audio-Codecs.

Codecs Festnetz

G.711 – PCM

Dies ist der älteste Codec. Qualitativ ist dies mit einem ISDN Gespräch direkt vergleichbar, da G.711 hier bereits zum Einsatz kam.
Hier kommt das sog. PCM-Verfahren zum Einsatz, dabei existieren 2 Varianten, die mit  µ-Law/a-Law bezeichnet sind. Die Datenrate von G.711 beträgt genau 64 kBit/s mit einer Bandbreite von 3,1 kHz.
G.711 besitzt einen MOS-Wert von 4,4.

G.722

Dieser Codec wird gern mit dem Begriff HD-Voice oder HD-Telefonie beschrieben. Die VoIP Gesprächsqualität ist höher als bei G.711 und erreicht einen MOS-Wert von 4,5. Die Bandbreite beträgt 7 kHz.

G.729

Ein Codec der einen sehr geringen Bedarf an die Bandbreite stellt. Allerdings ist der MOS-Wert von ca. 3,7 bis 3,9, je nach Variante, auch noch geringer als bei G.711.

Codecs Mobilfunk

G.722.2 – Adaptive Multi-Rate (AMR)

Hauptsächlich im Mobilfunknetz zu finden. Gibt es auch in einer WB (WideBand) Version als AMR-WB.

Enhanced Voice Service (EVS)

EVS bietet eine Audiobandbreite von bis zu 20 kHz. Unterstützt wird EVS via VoLTE und Wi-Fi-Calling in den Mobilfunknetzen von Telefónica, Telekom und Vodafone.

https://de.wikipedia.org/wiki/HD-Telefonie#Enhanced_Voice_Services_%28EVS%2C_HD_Voice_Plus%29

Diagnose der VoIP Sprachqualität

Um nun festzustellen, welchen Codec Sie bei Ihrem Gespräch verwenden, bedarf es etwas Aufwands. Dieser ist jedoch überschaubar, wenn man sich damit einmal auseinandergesetzt hat.
Die Frage welche Codecs werden angeboten spielt eine essenzielle Rolle, genau wie die Erkenntnis auf welchen Codec sich die Gegenstellen geeinigt haben. Daher sollte man sich den Gesprächsaufbau einmal genauer ansehen.

Ablauf einer SIP Sitzung

Im Folgenden möchte ich noch kurz auf den Ablauf einer SIP Sitzung eingehen:

SIP Session / SitzungQuelle: © Alexander Busch
Ablauf einer SIP Sitzung
  1. Das Telefon des Anrufers sendet ein INVITE an das Ziel, also den gerufenen Teilnehmer. Hier finden Sie die im SDP angebotenen Codecs.
  2. Das Telefon des gerufenen Teilnehmers sendet die Antwort 100 Trying (Versuch des Verbindungsaufbaus) zurück.
  3. Beginnt das Telefon des Empfängers zu klingeln, sendet es die Antwort 180 Ringing (Anrufsignalisierung).
  4. Sobald der Empfänger das Gespräch annimmt, sendet sein Telefon die SIP-Antwort 200 OK. Hier finden Sie im SDP die ausgehandelten Codecs.
  5. Das Telefon des Anrufers bestätigt diesen Vorgang wiederum mit ACK (Bestätigung), um den Verbindungsaufbau abzuschließen.
  6. Die eigentliche Übertragung der Gesprächsdaten erfolgt nun via RTP.
  7. Beendet ein Teilnehmer das Gespräch, wird ein BYE-Request verschickt.
  8. Das Telefon des anderen Teilnehmers antwortet mit der SIP-Antwort 200 OK.

Uns interessiert hier insbesondere der Verbindungsaufbau. Dies ist Schritt 1 bis 5, im Bild ist dieser grün umrandet dargestellt.

Voraussetzungen

Ablauf

Erzeugen Sie einen Paketmitschnitt, während das Gespräch aufgebaut wird. Dies ist selbstverständlich etwas vom verwendeten Endgerät abhängig. Wenn Sie ein Softphone auf einem Rechner nutzen können Sie den Mitschnitt direkt mit Wireshark auf dem Rechner erstellen. Sollten Sie eine TK-Anlage verwenden, so bietet diese vielleicht als Diagnosemöglichkeit ein Trace zu speichern. Auch über einen Switch via Port-Mirroring kann ein Trace erstellt werden. Eine Suche in Google führt mit den Begriffen SIP Debugging Wireshark oder SIP Trace sicherlich zu den passenden Hinweisen für die entsprechenden Geräte.

Auswertung

Öffnen Sie das Trace in Wireshark. Nun sollten Sie die Daten etwas eingrenzen. Dazu bietet sich die Funktion Telefonie -> VoIP Anrufe an. Hier sehen Sie im Idealfall bereits die passende Session und können diese als Filter anwenden. Alternativ filtern Sie auf das Protokoll SIP oder SDP via Anzeigefilter.
Suchen Sie nun den Gesprächsaufbau, Schritt 1 in obiger Abbildung. Sie finden in der Spalte Info dort den Text Request: INVITE sip: Rufnummer

SIP Session AufbauQuelle: © Alexander Busch
SIP Session Aufbau

Navigieren Sie durch die Protokolle im unteren Bereich des Fensters:

Session Initiation Protocol (INVITE) -> Message Body -> Session Description Protocol -> Media Description

VoIP Sprachqualität - rtpmap CodecsQuelle: © Alexander Busch
SDP Protokoll in Wireshark

Hier ist die Zeile Media Description von Interesse. Hier finden Sie eine Aufstellung aller gebotenen Codecs der Gegenstelle.
Diese sind in absteigender Priorität geordnet. Bei korrekter Konfiguration finden Sie hier zunächst die Codecs mit besserer Qualität.
Die Codecs befinden sich in der sogenannten rtpmap. Diese ordnet den Codecs bestimmte Nummern zu.
Hierbei gilt zu beachten, dass lediglich Werte von 0 bis 34 statisch definiert sind. Der Wertebereich von 35-95 ist reserviert und 96-127 sind dynamische Zuordnungen. Diese Zuordnungen sind also jeweils nur für den aktuellen Verbindungsaufbau gültig und weichen in der nächsten Session wahrscheinlich ab.

SDP Media DescriptionQuelle: © Alexander Busch
SDP Media Description

In diesem Beispiel schauen wir uns zunächst einmal die statischen Codecs an.
Hier finden sich die Nummer 9, 8 und 0. Diese stehen für G.722 (Nummer 9) und G.711 jeweils in A (Nummer 8) oder U-Law (Nummer 0). Die anderen Werte sind Nummer 109 für EVS und 104 für AMR-WB, sowie 102 für AMR. Nummer 110 und 108 stehen ebenfalls für AMR.

Damit haben wir eine Auswahl von nunmehr 8 Codecs für die Audioübertragung. Die Nummer 105 und 100 gehören zu den sogenannten “telephone-event” Codecs. Ein “telephone-event” ist ein DTMF-Signal, welches ebenfalls übertragen werden sollte.

Nachdem wir nun wissen welche Codecs zum Gesprächsaufbau angeboten wurden, wollen Sie ermitteln welche Auswahl getroffen wurde.
Wählen Sie dazu die Zeile Satus 200 Ok: (Dies entspricht Schritt 4 in obiger Abbildung)

Wireshark - INVITE 200 OKQuelle: © Alexander Busch

Hier navigieren wir ebenfalls wieder zu:

Session Initiation Protocol (INVITE) -> Message Body -> Session Description Protocol -> Media Description

Wireshark: Media Description SIP / RTP Codec 8Quelle: © Alexander Busch

Wie Sie sehen, wurde die Session mit Codec 8, also G.711 PCMA bestätigt. Demzufolge werden Sie in dieser Verbindung lediglich ISDN Qualität erleben.
Ursache ist in diesem Fall, dass das Endgerät keinen anderen angebotenen Codec bedienen konnte.

weitere Ursachen

Dieser Artikel bezieht sich nur auf den genutzten Codec. Dabei gibt es viele weitere Ursachen, die einen Einfluss auf die Qualität haben können.
Ich versuche hier noch einige Stichworte zu nennen: Bandbreite, Latenz / Paketlaufzeit, Jitter, Paketverlust, QoS, Verkabelung, Firewalls, Intrusion Detection Systeme….

Teile diesen Beitrag

Schreibe einen Kommentar