QoS in VoIP

Bei meinen Reisen durch die Weiten des Internets stoße ich immer wieder auf sehr interessante Projekte.
Dieses GIT-Projekt hier fiel mir besonders auf. Mit dieser Software lässt sich die Qualität der Sprachübertragung bei VoIP messen.

Ich werde in diesem Artikel die Grundlagen von VoIP-QoS näher erläutern.

Begriffe (natürlich zum Auswendiglernen):

  • VoIP – Voice over IP
  • QoS – Quality of Service
  • DiffServ – Differentiated Services
  • ToS – Type of Service
  • MOS – Mean Opinion Score
  • G711 – Eine digitale Codierung der analogen Sprache nach PCM
  • PCM – Pulse-Code-Modulation
  • ADC – Analog-Digital-Converter
  • SNR – Signal-Noise-Ratio
  • RTP – Realtime Protocol

Vorstellung des Git Projektes “VoIPMonitor”

Quelle (english) für den folgenden Absatz:
https://github.com/voipmonitor/sniffer

VoIPmonitor http://www.voipmonitor.org ist ein Open Source Live Network Packet Sniffer, der SIP-Sessions und deren RTP-Pakete analysiert. Er kann im Hintergrund als Daemon laufen oder analysiert bereits erfasste pcap-Dateien. Für jeden erkannten VoIP-Anruf berechnet VoIPmonitor eine Statistik über Verlust, Burst, Latenz und prognostiziert MOS (Bedeutung Opinion Score) entsprechend nach dem ITU-T G.107 E-Modell.

Diese Statistiken werden in einer MySQL-Datenbank gespeichert. Jeder Anruf wird dann noch seperat als pcap dump auf das Dateisystem gesichert. Eine Web-PHP-Anwendung (nicht Teil des git-Projektes) holt die Daten aus der Datenbank und zeigt Latenz und Verlust grafisch an.

VoIPmonitor erkennt auch nicht ordnungsgemäß abgebrochene Anrufe, zum Beispiel wenn BYE oder OK nicht korrekt signalisiert wurde. Um die Latenz genau in Verlustpakete umzuwandeln, simuliert VoIPmonitor einen festen und adaptiven Jitterpuffer.

Leistungsmerkmale des Voipmonitor

  • Schnelle C++ SIP/RTP Packetanalyse
  • Vorhersage MOS-LQE Wert, angelehnt am ITU-T G.107 E-Modell
  • Detailierte Verzögerungszeit- / Paketverlust-Statistik, wird in einer MySQL-Datenbank gespeichert
  • Jeder Call wird als seperates pcap-File gespeichert
  • Call-Rekorder

Das professionelle PHP-basierte grafische Frontend wird kommerziell von VoIPMonitor angeboten.

http://www.voipmonitor.org/demo/admin.php

Installation in Linux (Debian)

Gehen wir gleich mal in die Praxis und installieren wir uns den VoIPmonitor Sniffer.

# git clone https://github.com/voipmonitor/sniffer.git
# cd sniffer
# apt-get update
# apt-get install unixodbc-dev rddtool
# ./configure
# make
# make install

Falls es Probleme damit gibt, kann man auch die statische Variante installieren:

wget https://www.voipmonitor.org/current-stable-sniffer-static-64bit.tar.gz --content-disposition --no-check-certificate tar xzf voipmonitor-*-static.tar.gz cd voipmonitor-*-static

Nun noch die Datenbank in Mysql anlegen:

service mysql start
mysqladmin create voipmonitor 

Optional passen wir noch die Konfiguration des VoIPMonitor-Dienstes an:

# vi /etc/voipmonitor.conf
# /etc/init.d/voipmonitor start

MYSQL anpassen

Ich habe in der mysql Konfiguration noch das “granting” deaktiviert, somit muss ich fürs Erste in der voipmonitor.conf keine Anpassungen durchführen.

# in /etc/mysql/my.cnf folgende Zeile einfügen:
skip-grant-tables
# danach
service mysql restart

mit tail -f /var/log/syslog sieht man dann das live-logging des demons.

… Fortsetzung folgt