25.11.2016

Funktionsweise von VoIP und Wireshark Analyse der Sprachqualität eines VoIP Anrufes

Der erste Teil des Artikels ist theoretischer Natur und erklärt einige Grundlagen von VoIP. Der zweite Teil zeigt wie VoIP Anrufe mittels Wireshark aufgezeichnet, angehört und die Sprachqualität des Anrufes analysiert werden kann.

Mit Voice over IP (VoIP) hat sich mittlerweile eine moderne, weitgehend offene und standardisierte Methode der Telefonie über das paketorientierte Internet Protocol (IP) etabliert. Grundsätzlich gilt für VoIP, dass Telefongespräche weitgehend unabhängig vom Aufbau des lokalen Netzwerks über das Internet übertragen werden. Aufgrund der relativ einfachen Implementierung, der Skalierbarkeit und der Kostenersparnissen im Betrieb werden die älteren Standards der analogen und ISDN-Telefonie zunehmend von VoIP abgelöst.

Zu Beginn des Artikels werden VoIP Grundlagen besprochen und anschließend anhand eines praktisches Beispiels mit der freien Netzwerkanalyse Software Wireshark die Möglichkeiten der Fehleridentifizierung aufgezeigt sowie grundlegende Gütekriterien eines VoIP-Gesprächs geklärt.

VoIP kennt eine Vielzahl offener und proprietärer Standards. Deshalb sei einführend und gleichzeitig einschränkend angemerkt, dass in diesem Rahmen ausschließlich das Session Initiation Protocol (SIP) zur Steuerung eines VoIP-Gesprächs in Kombination mit dem paketbasierten Real-Time Transport Protocol (RTP), welches für den eigentlichen Transfer der Sprache zuständig ist, berücksichtigt werden.

Der zweite Teil des Artikels soll eine Brücke zwischen den Grundlagen von VoIP und der Praxis schlagen. VoIP-Gespräche können mittels Wireshark aufgezeichnet und anhand ihrer technischen Spezifika ausgewertet werden. Dabei werden wir besonders auf Paketverluste (Packet loss), Laufzeiten sowie Laufzeitschwankungen (Jitter) als auch allgemein auf die beobachtbaren Gütekriterien eingehen und entsprechende Hinweise anbringen, welche für die Gesprächsqualität im Zusammenhang mit VoIP ausschlaggebend und zu beachten sind.

Teil 1: Grundlagen von VoIP - OSI-Modell, Codecs und MOS Wert


Der Gesprächsablauf gestaltet sich für beide Teilnehmer gleich und kann relativ einfach anhand des Standard OSI-Modells nachvollzogen werden:

OSI-Schicht OSI-Schichtname VoIP Protokoll und Funktion
7 Anwendung Software Applikationen wie zum Beispiel SIP Clients am Computer oder Smartphone Apps
6 Darstellung Umwandlung der Sprache über Codecs (analog in digital und umgekehrt)
5 Sitzung Auf- und Abbau sowie Steuerung der Verbindung - in unserem Fall über SIP
4 Transport Der Transport der Sprachdaten über RTP und UDP
3 Vermittlung Adressierung und Vermittlung über das IP
2 Sicherung Sicherung der Verbindung (zuverlässige und fehlerfreie Übertragung)
1 Bitübertragung Physikalische Übertragung unter anderem mittels Ethernet-Protokoll

Tabelle 1: Das OSI-Schichtenmodell am Beispiel VoIP erklärt

Ohne näher auf die Anwendungsschicht einzugehen, richtet sich unser Blick direkt auf die Darstellungsschicht. Fakt ist, dass kein Mensch digital spricht. Deswegen muss die akustische Sprache ausgehend vom Gesprächsinitiator über Abtastung, Quantisierung und Kodierung digitalisiert und auf der Empfängerseite wieder in akustische Signale umgewandelt werden. Es stehen für diesen Vorgang bei VoIP eine Vielzahl von Codecs wie beispielsweise G.711A (a-law Verfahren), G.722, G.723 und G.729 zur Verfügung, welche sich über die Abtastung pro Sekunde (Sampling), die Quantisierung und eben auch Kodierung sowie die sich daraus ergebenden Bitraten unterscheiden. Als Faustregel gilt, dass höhere Bitraten von Codecs eine besser Sprachqualität und umgekehrt bedeuten. Während bei einer besseren Sprachqualität die Anforderungen an die Bandbreite steigen, sinken gleichzeitig die Ansprüche an die Rechenleistung, denn die Sprache muss nicht oder nur geringfügig komprimiert werden. Umgekehrt bedeutet dies aber auch, dass geringe Anforderungen an die Sprachqualität zwar die Bitraten und somit den Bandbreitenbedarf senken, der Rechenbedarf aber durch die (De)Komprimierung simultan dazu steigt. Die Auswahl des geeigneten Codecs stellt somit einen Kompromiss zwischen Sprachqualität, Bandbreite und Rechenleistung dar, in dessen Zusammenhang natürlich auch die gewünschte Komprimierung eine gewichtige Rolle einnimmt.

Nichtsdestotrotz muss für jedes VoIP-Gespräch abhängig von dem gewählten Codec ein Minimum an Bandbreite sowohl für den Down- als auch Upload über die gesamte Gesprächsdauer zur Verfügung stehen. Als Richtwerte werden für ein Gespräch zwischen 34 und 90 kBit pro Sekunde und Richtung benötigt, um eine gute Sprachqualität zu erreichen. Über einen entsprechenden Codec und dessen Komprimierung können natürlich auch geringere Bandbreiten erzielt werden, doch verschlechtert sich die Sprachqualität grundsätzlich mit abnehmender Bandbreite.

Somit zeigt sich schon an diesem Punkt, dass die Gesprächsqualität durch die Auswahl eines Codecs entschieden beeinflusst wird. Unmittelbar daran anknüpfend ist somit die Frage adäquater Bandbreiten bei VoIP ein sensibler Punkt. Um entsprechende Bandbreiten für die Gesprächsdauer und damit die gewünschte Sprachqualität sicherzustellen, kann Quality of Service (QoS) eingesetzt werden. Damit kann Bandbreite für verzögerungssensiblen Echtzeit-Datenverkehr bzw. Dienste wie VoIP reserviert werden. Die Sprachdaten (RTP-Pakete) werden dabei gegenüber anderen Datenpaketen im Netzwerkverkehr bevorzugt behandelt, das heißt im konkreten Anwendungsfall priorisiert übertragen. Dadurch kann eine konstante, gute Sprachqualität erzielt werden.

Auf der Sitzungsebene kommt in unserem Fall SIP zum Einsatz, welches ausschließlich für die Steuerung des Gesprächs (Verbindungsauf- und Abbau) zuständig ist. Eine Rufnummer einschließlich eines SIP-Kontos muss bei einem VoIP-Provider erworben werden.

Erst nach einem erfolgreichen Verbindungsaufbau werden die Sprachdaten selbst übertragen. Dies geschieht über RTP, welches die digitalisierte Sprache in 20 bis 30ms Teilen als RTP-Pakete verschickt. Pro Sekunde fallen somit durchschnittlich 50 Sprachpakete an. Abschließend und ohne noch tiefer auf den weiteren Ablauf aus Tabelle 1 einzugehen, werden die RTP-Pakete in UDP-Pakete verpackt, mit einem IP-Header zur korrekten Adressierung versehen und über das physikalische Medium zur Gegenseite übertragen.

Bevor wir gleich auf das praktische Beispiel übergehen, sollen noch ein paar technische Begriffe erwähnt werden. Abgesehen von den Faktoren Bandbreite und Codec sind bei VoIP und dessen Gesprächsqualität in der Praxis weitere Aspekte zu beachten. Hinzu kommt, dass bei der paketorientierten Übertragung von Sprachdaten Paketverluste, Laufzeiten und Laufzeitschwankungen (Jitter) beachtet und ausgeglichen werden müssen.

Dennoch drängt sich die Frage auf inwieweit all diese Faktoren eine allgemeine Qualitätsbewertung für VoIP erlauben und dessen (gefühlte) Sprachqualität messbar machen? Für genau diese Fragen liefert die MOS-Bewertungsskala eine Antwort, da sie die (gefühlte) Sprachqualität anhand von Referenzwerten beschreibt.

MOS-Wert (von und bis) Subjektive Einstufung der Benutzer
Über 4,35 Alle Benutzer sind sehr zufrieden
4,00 bis 4,35 Nicht mehr jeder Benutzer ist sehr zufrieden, die meisten sind es
3,60 bis 4,00 Einige Benutzer sind unzufrieden
3,10 bis 3,60 Die Mehrheit der Benutzer ist unzufrieden
Unter 3,10 Alle Benutzer sind unzufrieden

Tabelle 2: Die MOS-Bewertungsskala, welche die MOS Werte in Kategorien einteilt

Teil 2: Analyse von SIP, RTP Streams und VoIP-Gesprächen mit Wireshark


Für dieses Praxisbeispiel wird folgendes benötigt:

  • Einen SIP Software Client wie den Zoiper Client zum Absetzen und Annehmen von Gesprächen
  • Einen SIP Account, welcher sich bei der virtuellen Telefonanlage von Innosoft selbstständig einrichten lässt
  • Ein Netzwerkanalyse Tool und Sniffer wie Wireshark mit libpcap (in Wireshark enthalten) zur Aufzeichnung und Auswertung von VoIP-Gesprächen

Nach der Einrichtung des SIP Account beim Zoiper Client und der Installation von Wireshark wird Wireshark gestartet und die richtige Netzwerkschnittstelle für die Aufzeichnung ausgewählt. In unserem Fall ist der Computer über Ethernet an das Netzwerk angebunden. Nach der Auswahl zeichnet Wireshark alle über den Ethernet Port empfangenen und gesendeten Pakete auf und listet diese tabellarisch auf. Anschließend wird mit Zoiper ein oder mehrere Anruf(e) getätigt. Danach kann die Aufzeichnung des Netzwerkverkehrs durch Wireshark beendet werden. In Wireshark sind nun alle für VoIP relevanten Pakete sichtbar und können über den Anzeigefilter getrennt vom restlichen Netzwerkverkehr betrachtet werden. Dazu gibt man im Anzeigefilter beispielsweise SIP oder RTP ein und es werden nur noch die entsprechenden Pakete gelistet.

Uns interessiert vor allem der genauere Blick auf SIP für die Verbindungssteuerung und RTP für die Übertragung der Sprache. Unter dem Menüpunkt Telephonie und VoIP Anrufe listet Wireshark alle aufgezeichneten Anrufe Gespräche auf. Wir wählen einen Anruf aus und betätigen den Button Flow Sequenzen um zu folgender grafischen Darstellung des Kommunikationsablaufs zu gelangen:

Wireshark Flow Chart Diagramm von VoIP Gespräch

Bild 1: Grafische Anzeige des Kommunikationsablaufes eines VoIP Gesprächs mit SIP und RTP

Aus Bild 1 kann der Gesprächsablauf nachvollzogen werden. Nachdem der Anruf über das SIP INVITE-Paket eingeleitet und von dem Innosoft Server akzeptiert wurde, werden über das SDP die Gesprächsmodalitäten wie der zu verwendende Codec (z.B. G.711 mit gutem MOS-Wert von ungefähr 4,1) und das Transportprotokoll (RTP) ausgehandelt. Anschließend werden die Sprachdaten über die dargestellten RTP-Streams ausgetauscht. Die letzten beiden Zeilen zeigen die Beendigung des Gesprächs. SIP übernimmt bei VoIP den Aufbau, die Steuerung sowie den Abbau der Gesprächsverbindungen zwischen Server und Teilnehmer.

Ebenfalls im Menü Telephonie und im Untermenü VoIP Anrufe zu finden, öffnet der Button Streams abspielen ein Fenster mit Bild 2, welches die Möglichkeit bietet die verschiedenen RTP-Streams des Anrufes anzuhören. Hiermit bietet sich die Gelegenheit die Gesprächsqualität nach dem (subjektiven) Empfinden zu bewerten.

Wireshark RTP Streams eines VoIP Anrufes abspielen

Bild 2: Abspielen von G.711 RTP-Streams eines VoIP Anrufes in Wireshark

Die wichtigsten Informationen zur Gesprächsqualität finden sich unter Telephonie, RTP und RTP Streams. Bild 3 zeigt ein fehlerfreies Gespräch mit guten Laufzeiten, Jitter-Werten und keinen Paketverlusten, was eine sehr gute Gesprächsqualität bedeutet.

Die wichtigsten Parameter zur Analyse von RTP-Streams und damit der Gesprächsqualität stellen sicherlich Verloren (Paket loss), Max. Delta (ms) und die Mittlerer und Maximaler Jitter-Werte dar.

Analyse der Gesprächsqualität eines fehlerfreien RTP Streams

Bild 3: Abbildung von RTP-Streams mit einer sehr guter Gesprächsqualität in Wireshark

Der erste Blick richtet sich auf potenzielle Paketverluste. Die Sprachpakete werden mit dem UDP übertragen, welches als verbindungsloses Netzwerkprotokoll die Datenübertragung nicht absichert um unnötige Verzögerungen und Overhead zu vermeiden. Bei der Echtzeitübertragung von Sprachpaketen würde eine abgesicherte Datenübertragung, bei welcher verlorene Pakete erneut übertragen werden, auch keinen Sinn machen. Denn der Verlust von einzelnen Sprachpaketen, die nur 20 bis 30 ms an Sprache und somit ungefähr eine Silbe enthalten, ist nicht von Bedeutung. Das menschliche Gehirn ist in der Lage diesen Effekt auszugleichen. Sollte die Anzahl der direkt hintereinander fehlenden Pakete hoch sein, dann macht sich dies sehr wohl negativ durch Unterbrechungen und Ausfälle im Gespräch bemerkbar. Das bedeutet, dass wiederum die Sprachqualität negativ beeinflusst wird, da hierbei nicht nur einzelne Silben, sondern ganze Wörter oder Sätze verloren gehen. Grundsätzlich gilt, dass der eingesetzte Codec Paketverluste bis zu 5% ausgleichen können muss. Wenig verwunderlich nimmt aber der MOS-Wert und damit die Sprachqualität mit zunehmenden Paketverlusten deutlich ab. Häufig ist die Ursache von hohen Paketverlustraten in einer Überlastung des Netzwerks zu finden. Durch eine Priorisierung (QoS) des VoIP-Datenverkehrs kann diesem Effekt effektiv entgegengesteuert werden.

Die nächste für uns relevante Spalte ist Max. Delta und gibt die maximale Zeit zwischen 2 Paketen an. Idealerweise sollte dieser Wert bei ca. 20ms, also dem Wert der Packetization time liegen, jedoch ergeben sich durch das Netzwerk sowie den Sender Verzögerungen (Jitter) was in der Praxis zu abweichenden Werten führt. Die Laufzeit der Sprachpakete trägt maßgeblich zur Sprachgüte bei. Während Laufzeitverzögerungen unter 150ms noch als sehr gut bewertet werden, ergeben darüber liegende Werte bereits eine negative Beeinflussung des Gesprächs. Laufzeiten über 400ms sind als inakzeptabel einzustufen, da deutlich merkbare Gesprächsverzögerungen sowie Unterbrechungen auftreten. Abhilfe schafft hierbei meist eine erhöhte Bandbreite und/oder eine Priorisierung (QoS) des VoIP-Datenverkehrs.

Eng damit verbunden haben Laufzeitschwankungen (Jitter) gleichermaßen einen Einfluss auf die (gefühlte) Sprachqualität, da diese zu Effekten wie Stottern und Echos führen können. Es geht nicht ausschließlich darum den Jitter-Wert möglichst klein zu halten, wobei akzeptable Werte zwischen 3 und 10ms liegen dürften, sondern auch um die Kontinuität der Schwankungen. Dabei werden heute dynamische Jitterbuffer (Zwischenspeicher) eingesetzt, welche genau diesen Effekt vermindern bzw. ausgleichen sollen.

Bild 4 ist das negative Beispiel zu Bild 3 um die oben genannten Fehlerquellen zu veranschaulichen. Wireshark macht es dem Benutzer leicht und markiert die fehlerbehafteten Streams mit gelber Farbe. Ebenfalls direkt erkennbar sind sehr hohe Paketverlustraten sowie Laufzeiten zwischen den Paketen, was in diesem Fall zu einer unbrauchbaren Gesprächsqualität geführt hat. So wies das Gespräch aus Bild 4 starke Sprechverzögerungen wie auch Abbrüche auf.

RTP Stream mit schlechter Gesprächsqualität

Bild 4: Auflistung von RTP-Streams mit einer mangelhafter Gesprächsqualität aufgrund von Netzwerk Störungen

Somit ist abschließend festzuhalten, dass bei der Gesprächsqualität von VoIP neben dem verwendeten Codec vor allem die benötigte Bandbreite, Laufzeiten, Jitter sowie Paketverluste eine zentrale Rolle einnehmen. Eine mangelnde Gesprächsqualität und die unmittelbar negativ wahrnehmbaren Effekte wie Echos, Sprechverzögerungen sowie Gesprächsunterbrechungen treten sehr häufig als Ursache von zu geringen Bandbreiten, hohen Werten für Jitter, Laufzeiten sowie Paketverlusten auf.