November 2016
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.
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
Für dieses Praxisbeispiel wird folgendes benötigt:
Wireshark
mit libpcap
(in Wireshark enthalten) zur Aufzeichnung und Auswertung von VoIP-GesprächenNach 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:
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.
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.
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.
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.
2003 - 2025 © Innosoft GmbH Impressum | AGB | Datenschutzhinweis