x x x x x
x x x x x
x x x x x
x x x
Fachhochschule Köln
University of Applied Sciences Cologne
Diplomarbeit
von
Andreas Orthen
Köln 2006
INHALTSVERZEICHNIS INHALTSVERZEICHNIS
Inhaltsverzeichnis
1 Danksagung 1
2 Einführung 2
4 Grundlagen 4
4.1 Internettelefonie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4.2 Internet Protocol (IP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.2.1 Internet Protocol Version 4 (IPv4) . . . . . . . . . . . . . . . . . . . . 6
4.2.2 Internet Protocol Version 6 (IPv6) . . . . . . . . . . . . . . . . . . . . 8
4.3 Transmission Control Protocol (TCP) . . . . . . . . . . . . . . . . . . . . . . 10
4.4 User Datagramm Protocol (UDP) . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.5 Realtime Transport Protocol (RTP) . . . . . . . . . . . . . . . . . . . . . . . . 14
4.5.1 Realtime Transport Control Protocol (RTCP) . . . . . . . . . . . . . . 15
4.5.2 Codec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.6 Session Initialisation Protocol (SIP) . . . . . . . . . . . . . . . . . . . . . . . 17
4.6.1 SIP-Elemente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.6.2 SIP-Signalisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.6.3 SIP-Request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.6.4 SIP-Response . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.6.5 Anmeldung an einem SIP-Server . . . . . . . . . . . . . . . . . . . . . 20
4.6.6 SIP-Verbindungsaufbau und -abbau . . . . . . . . . . . . . . . . . . . 21
4.6.7 Session Description Protocol (SDP) . . . . . . . . . . . . . . . . . . . 25
4.7 Störfaktoren bei VoIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.7.1 Echo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.7.2 Delay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.7.3 Jitter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.7.4 Packet Loss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.8 Quality of Service (QoS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.8.1 Priorisierung von MAC-Frames . . . . . . . . . . . . . . . . . . . . . 32
4.8.2 Type Of Service (TOS) . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.8.3 Differentiated Services (DiffServ) . . . . . . . . . . . . . . . . . . . . 33
4.8.4 Integrated Services (IntServ) . . . . . . . . . . . . . . . . . . . . . . . 35
4.9 Messungen der Sprachqualität . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.9.1 Listening Quality und MOS (Mean Opinion Score) . . . . . . . . . . . 35
4.9.2 Conversational Quality und Perceptual Speech Quality Measure (PSQM) 36
4.9.3 ITU E-Modell und VQmon . . . . . . . . . . . . . . . . . . . . . . . . 37
4.9.4 R-Faktor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.10 Echtzeitverhalten und Latenzzeiten des Linux-Kernels . . . . . . . . . . . . . 39
1
INHALTSVERZEICHNIS INHALTSVERZEICHNIS
6 Entwicklung 48
6.1 Modifikationen im Quellcode von gensend.bin und genrecv.bin . . . . . . . . . 48
6.2 Erweiterungen im RTP-Proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.3 Auswertungsapplikation calculate . . . . . . . . . . . . . . . . . . . . . . . . 55
6.3.1 R-Faktor Berechnung . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
6.3.2 MOS-Wert Berechnung . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.4 Webfrontend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.5 Steuerprogramme client und server . . . . . . . . . . . . . . . . . . . . . . . . 64
6.6 Steuer- und Konfigurationsskripte . . . . . . . . . . . . . . . . . . . . . . . . 65
6.7 Funktionstest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
7 Installation 70
7.1 Systemvoraussetzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
7.2 Debian Zusatzpakete installieren . . . . . . . . . . . . . . . . . . . . . . . . . 70
7.3 Benutzer einrichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
7.4 Apache Webserver einrichten . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
7.5 SER einrichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
7.6 RTP-Proxy einrichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
7.7 Konfigurationsskripte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
7.8 Webbrowser Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
8 Bedienung 75
8.1 Eingabemasken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
8.2 Ausgabemasken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
2
INHALTSVERZEICHNIS INHALTSVERZEICHNIS
9 Messungen 81
10 Kritische Betrachtung 84
11 Fazit 85
12 Abkürzungsverzeichnis 86
14 Anhang 93
3
1 DANKSAGUNG
1 Danksagung
Ich möchte mich an dieser Stelle besonders bei meinen Eltern, meinen Großeltern, meiner
Freundin und meinen Freunden bedanken, die mich während meiner Studienzeit und beson-
ders in den schwierigen Phasen während der Diplomarbeit unterstützt haben. Ebenso bedanke
ich mich bei allen Mitarbeitern des Fachbereichs Datennetze sowie bei den Studenten, die mir
Tipps und Ratschläge gegeben haben. Einen besonderen Dank für die gute Zusammenarbeit und
die außerordentliche Hilfsbereitschaft möchte ich den Mitarbeitern und Studenten des QoSSIP-
Projekts aussprechen. Weiterhin möchte ich mich herzlich bei meinem Referenten Prof. Dr.
Andreas Grebe und meinem Korreferenten Dipl.-Ing. Stefan Abu Salah bedanken.
1
2 EINFÜHRUNG
2 Einführung
Der Gedanke, Sprache über Computernetzwerke zu übertragen, stammt aus den 70er Jahren.
1973 fand die erste Sprachübertragung mittels eines paketorientierten Protokolls zwischen Ka-
lifornien und Massachusetts statt. Mitte der 80er Jahren wurde ISDN (Integrated Services Digi-
tal Network)1 als integrierender Dienst für Sprache, Daten, Video und Text eingeführt. Dieser
Ansatz kam aus der Sprachtelekommunikation und basiert auf einer Leitungsvermittlung und
auf 64 kBit/s Datenkanälen. 1995 stellte die Firma Vocaltec ihr Internettelefon Internet Phone
vor. Internet Phone arbeitet im Halbduplex-Verfahren ähnlich wie ein Funkgerät. Dieses Tele-
fon wurde direkt am Computer angeschlossen, um eine bessere Sprachqualität zu erzielen. Zu
dieser Zeit waren Computer jedoch noch nicht in der Lage, Analog-Digital-Wandlungen selbst
durchzuführen. Die von Vocaltec vorangetriebene Idee, Sprache über vernetzte Computer zu
übertragen, wurde von der Entwicklergemeinde euphorisch aufgegriffen. In den darauffolgen-
den Jahren entstand eine Flut von Softphones2 und Gateways3 , welche die Verbindung vom
Computer ins Telefonnetz PSTN (Public Switched Telephone Network) auf einfache Weise
ermöglichten.
Im Zuge der zunehmenden Aufmerksamkeit für dieses Thema wurden alsbald Standards für
Echtzeitdatenübertragung im Internet verabschiedet, welche die Basis paketbasierter Telefonie
bildeten. In diesem Zeitraum wurden auch Begriffe wie Internettelefonie und VoIP (Voice over
IP) geprägt . Bis zum Jahr 2000 hatten alle namhaften Internetfirmen und Institute erste Unter-
suchungen zur Sprachqualität und Realisierung von VoIP in den unterschiedlichsten Szenarien
durchgeführt. Es wurden Messverfahren zur Bestimmung von Sprachqualität in paketvermittel-
ten Netzen standardisiert. Federführend bei der Standardisierung vieler Mess- und Kompressi-
onsverfahren war und ist die ITU (International Telecommunication Union). Die meisten der
entwickelten Verfahren und Auswertungsalgorithmen stehen jedoch unter kommerziellen Li-
zenzen und finden nur Anwendung in teurer professioneller Messsoftware. Im semiprofessio-
nellen Bereich werden jedoch häufig einfache, sich auf die wesentlichen Faktoren stützende
und kostengünstige Lösungen benötigt, die als alleinstehende Applikationen Administratoren
wichtige Netzkenndaten liefern oder den Endanwender eingebettet, in Softphones oder VoIP-
Applikationen, über Qualität der Sprache und Übertragungsstrecke informieren.
1
Im Folgenden werden Fachbegriffe in der Regel in der englischen Sprache geschrieben, da Englisch die Fach-
sprache der IT ist und die Basis für Abkürzungen darstellt. So zum Beispiel ISDN für Integrated Services Digital
Network.
2
Softphone ist ein Telefon, das die Soundkarte des Computers nutzt und aus einer Softwareapplikation besteht.
3
Gateways erlauben Netzwerken, die auf unterschiedlichen Protokollen basieren, miteinander zu kommunizieren.
2
3 MOTIVATION UND AUFGABENSTELLUNG
Nach der Fertigstellung der Messapplikation soll diese für Messungen an einer 2Mbit MPLS
(Multiprotocol Label Switching)6 Strecke zwischen der Fachhochschule-Köln und der Fach-
hochschule-Frankfurt zur Verfügung stehen. Eine weitere Anforderung an das Messwerkzeug
4
DSP ist die Hardware die der kontinuierlichen digitalen Bearbeitung analoger Signale dient.
5
Die Internetseite des QoSSIP-Projekts ist http://www.qossip.de/.
6
MPLS arbeitet zwischen den Schichten 2 und 3 des OSI-Schichtenmodells. In dieser Schicht werden die Datenpa-
kete mit QoS geroutet.
3
4 GRUNDLAGEN
4 Grundlagen
4.1 Internettelefonie
Unter VoIP (Voice over IP) wird der Transfer von Sprachdaten in Paketen durch das Inter-
net Protokoll (IP) verstanden. Als Übertragungsmedium benutzt VoIP das weltweit verfügbare
Internet. Für den Transfer von Audiodaten sind folgende Punkte wichtig: Die Steuerung der
Verbindungssignalisierung sowie die Übertragung der Sprachdaten in Paketen. Ersteres wird
durch Protokolle wie H.3237 oder SIP (Session Initiation Protocol) erreicht, die für das Routing
zum Gesprächspartner sowie den Verbindungsaufbau verantwortlich sind. Diese werden auch
als Signalisierungsprotokolle bezeichnet. Die Datenübertragung der Audiodaten wird anschlie-
ßend durch ein separates Protokoll, das sogenannte RTP (Real Time Protocol) realisiert.
Eine der größten Anforderungen an das Internet bei der Übertragung von VoIP-Daten ist die
Echtzeitfähigkeit. Das dem Internet zugrunde liegende Internet Protokoll wurde ursprünglich
für reine Datenübertragung konzipiert und besitzt daher keine effizienten Mechanismen, die die
Priorisierung von Datenpaketen oder QoS (Quality of Service) ermöglichen. Dies ist jedoch für
die Übertragung von Audio- und Videodaten unerlässlich.
Im Vergleich zu VoIP, bekommt im PSTN (Public Switched Telephone Network) jeder Teil-
nehmer, nach erfolgreichem Gesprächsaufbau, eine Leitung exklusiv zur Verfügung gestellt.
Dadurch bekommt er eine feste Bandbreite zugeteilt, die wiederum eine gute Sprachqualität
garantiert. VoIP jedoch kann nur durch die Bereitstellung von genügend Bandbreite und die
Priorisierung der Echtzeitpakete durch QoS einen gleichwertigen Standard erreichen.
Einführend zeigt Abbildung 1 eine Übersicht, welche die Protokoll-Hierarchie aufzeigt. Die in
der vorliegenden Diplomarbeit verwendeten Protokolle sind fett umrandet und werden in den
folgenden Unterkapiteln geauer beschrieben.
7
H.323 ist ein Protokoll der ITU-T, welches Q.931 als Signalisierung benutzt.
4
4.2 Internet Protocol (IP) 4 GRUNDLAGEN
Abbildung 1: Protokoll-Hierarchie
8
ISO steht für International Organization Standardization, OSI steht für Open Systems Interconnection.
9
RFC ist die Abkürzung für Request for Comments.
10
Als routing bezeichnet man das Festlegen von Wegen für Nachrichtenströme oder IP-Datenpakete.
5
4.2 Internet Protocol (IP) 4 GRUNDLAGEN
Abkürzung Erklärung
AH Application-Header
PH Presentation-Header
SH Session-Header
TH Transport-Header
NH Network-Header
DH Data Link-Header
DT Data Transport-Header
Tabelle 1: Erklärung der Abkürzungen im ISO OSI-Schichtmodell
Aufbauend auf der Grundfunktionalität von IP werden nun die beiden zur Zeit existierenden
Versionen vorstellt. In der vorliegenden Diplomarbeit wird ausschließlich die IP Version 4 be-
nutzt. Mit der Beschreibung des IP Version 6 sollen die Probleme die IP Version 4 hat, verdeut-
licht werden.
IPv4 (Internet Protocol Version 4, RFC 791 und RFC 1122), früher nur als IP bezeichnet, ist die
erste Version des Internet Protokolls. Diese Version ist zudem weltweit die am meisten verwen-
dete. Da IPv4 32-Bit-Adressen benutzt, sind maximal 232 = 4.294.967.296 eindeutige Adressen
möglich. Die jetzt bereits begrenzte Anzahl der zur Verfügung stehenden IPv4-Adressen stell-
ten unter anderem ein Problem für den wachsenden VoIP und Telekommunikationsmarkt dar, da
immer mehr internetfähige Geräte angeboten werden. Viele Neuentwicklungen in diesen Berei-
6
4.2 Internet Protocol (IP) 4 GRUNDLAGEN
Veranschaulicht wird der Aufbau eines IPv4-Datagramms mit der folgenden Abbildung 3. Die
Felder des IPv4-Datagramms werden in Tabelle 2 erläutert. Wichtig sind hierbei zum einen
die Source- und Destination-Address-Felder, und zum anderen das TOS-Feld (Type of Service
Field), welches in Kapitel 4.8.2 genauer betrachtet wird.
11
PAT ist ein Verfahren in IPv4-Netzwerken zur Portumsetzung. Der Port und die IP-Adresse einer IPv4-Schnittstelle
wird anhand einer Tabelle auf den Port und die IP-Adresse einer anderen meist lokalen Schnittstelle umgeschrie-
ben.
12
NAT ist ein Verfahren in IPv4-Netzwerken zur Adressumsetzung. Die IP-Adresse einer IPv4-Schnittstelle wird
anhand einer Tabelle auf die IP-Adresse einer anderen meist lokalen Schnittstelle umgeschrieben.
7
4.2 Internet Protocol (IP) 4 GRUNDLAGEN
Abkürzung Erklärung
Version IP Version. Derzeit Version 4 oder 6.
IHL Internet Header Length. Dieser Wert gibt an, wie lange der gesamte IP-
Header ist.
Type of Service TOS siehe Kapitel 4.8.2.
Total Length Gibt die Länge des gesamten Pakets (inklusive Header) in Bytes an.
Identification Dieses und die beiden folgenden Felder, Flags und Fragment Offset,
steuern die Reassembly (Zusammensetzung von zuvor fragmentierten
IP-Datenpaketen).
Flags Kontroll-Schalter
Fragment Offset Eine Nummer, die bei fragmentierten Paketen besagt, welche Position
das Paket innerhalb der Fragmente einnimmt. Der Offset wird in 64 Bit/
8 Byte-Schritten angegeben, wobei das erste Fragment den Wert null
hat.
Time To Live Ein Wert, der die Lebenszeit“ des Pakets angibt. Bei jedem Hop (Beim
”
(TTL) Routing wird ein Hop als Weiterleitung von einem Router zu einem
anderen Router bezeichnet.) wird die TTL dekrementiert. Hat dieses
Feld den Wert null, muss das Paket verworfen werden.
Protocol Dieses Feld bezeichnet das Folgeprotokoll. Ein IP-Paket enthält bei-
spielsweise ein UDP-Paket, wenn der Wert 0x11 (Dual 17) ausgegeben
wird.
Header Checks- Eine Prüfsumme ausschließlich für den Header (IP selbst hat keine Me-
um chanismen zur Prüfung der Nutzlast auf Korrektheit). Dieser Wert wird
bei jeder Station neu verifiziert und berechnet, weil die TTL bei jedem
Hop verändert wird.
Source Address Enthält die Quelladresse des IP-Pakets in network byte order
Destination Enthält die Zieladresse und hat das gleiche Format wie die Quelladres-
Address se.
Options Die Optionen müssen ein Vielfaches von 32 Bit lang sein. Sind sie das
nicht, werden sie mit 0 Bits aufgefüllt.
Padding Dies ist der Bereich zum Auffüllen der Optionen mit 0 Bits.
Tabelle 2: Erklärung der Felder im IPv4-Datagramm
Obwohl in der vorliegenden Diplomarbeit IPv6 (Internet Protokoll Version 6, RFC 2460) nicht
verwendet wird, werden in dieser kurzen Einführung die Möglichkeiten, die IPv6 bietet auf-
geführt um einen Ausblick in die Zukunft von IP zu geben. IPv6 ist die neuste Internet Pro-
tokoll Version und verwendet 128 Bit Adressen. Mit 2128 = 3,4 * 1038 (340,28 Sextillionen)
eindeutigen Adressen ist IPv6 in der Lage, den heutigen Ansprüchen zu genügen. Wegen des
hohen Migrationsaufwands und der damit verbundenen Kosten setzt sich IPv6 jedoch nur sehr
langsam durch. Derzeit sind IPv6-Netze eher Insellösungen für größere Firmennetze. Vor allem
große Carrier und Provider halten sich mit dem Angebot von IPv6-Adressen noch sehr zurück.
Dabei bietet IPv6 mehr als nur einen erweiterten Adressraum. Wesentliche Erneuerungen sind
der erweiterte Support für Erweiterungen und Optionen, die Fähigkeit, den Datenfluss zu mar-
kieren und die Möglichkeit der Authentifizierung und Sicherstellung der Datenvertraulichkeit.
8
4.2 Internet Protocol (IP) 4 GRUNDLAGEN
IPv6 zeigt Methoden zur Lösung von IPv4-Problemen wie Autokonfiguration, Umnumme-
rierung und Unique Local Addresses auf. Des Weiteren wurde eine Erweiterung des IPv6-
Standards unter dem Namen Mobile IPv6 (RFC 3775) in das IPv6-Protokoll integriert, wel-
ches die weltweite Erreichbarkeit einer IPv6-Adresse mit Hilfe eines sogenannten HA (Home
Agent) ermöglicht. Der nähere Aufbau von IPv6 wird in der folgenden Abbildung 4 und der
dazugehörigen Tabelle 3 deutlich.
Abkürzung Erklärung
Version IP-Versionsnummer
Traffic Class Von QoS verwendetes 8-Bit-Feld.
Flow Label Ebenfalls für QoS oder Echtzeitanwendungen verwendeter Wert. Pake-
te, die ein Flow Label tragen, werden alle gleich behandelt.
Payload Length Länge des IPv6-Paketinhaltes (ohne Header aber inklusive der
Erweiterungs-Header).
Next Header Identifiziert den Typ des nächsten Erweiterungs-Headers.
Hop Limit Entspricht dem TTL-Wert von IPv4, Tabelle 2.
Source Address Adresse des Senders.
Destination Adresse des Empfängers.
Address
Tabelle 3: Erklärung der Felder im IPv6-Datagramm
9
4.3 Transmission Control Protocol (TCP) 4 GRUNDLAGEN
Das IP-Protokoll ist die Grundlage für die Protokolle TCP (Transmission Control Protocol) und
UDP (User Datagramm Protocol). Im Rahmen der vorliegenden Diplomarbeit wird das TCP
zur Signalisierung und Steuerung verwendet, während UDP die Basis für das VoIP RTP bildet.
Möchte ein Client eine TCP-Verbindung aufbauen, generiert er einen eigenen Endpunkt aus
seinem Hostnamen und einer noch freien Portnummer. Mit Hilfe eines ihm bekannten Ports
13
Host ist eine netzwerkfähige Komponente.
10
4.3 Transmission Control Protocol (TCP) 4 GRUNDLAGEN
und der IP-Adresse des Servers kann dann eine Verbindung aufgebaut werden. Für den Aufbau
der Verbindung sind insgesamt drei Pakete erforderlich (Abb.: 5).
Während der Datenübertragungsphase (Active Open) sind auf Protokollebene die Rollen von
Client und Server vollkommen symmetrisch. Jeder der beteiligten Hosts kann eine Datenübertragung
einleiten. Während des Abbaus von einer Seite der TCP-Verbindung kann die Gegenseite jedoch
noch weitere Daten übertragen, das heißt die Verbindung kann halb offen sein. Ein 4-Wege-
Handshake, auch TCP-Teardown genannt, wird benutzt, um die Verbindung abzubauen (Abb.:
6). Abbildung 7 gibt einen Überblick über das TCP-Datagramm.
11
4.4 User Datagramm Protocol (UDP) 4 GRUNDLAGEN
Abkürzung Erklärung
Source Port Gibt die Portnummer der Senderseite an.
Destination PortGibt die Portnummer der Empfängerseite an.
Sequence Num- Sequenznummer des ersten Daten-Oktetts (Bytes) dieses TCP-Pakets
ber oder die Initialisierungs-Sequenznummer, falls das SYN-Flag gesetzt
ist. Nach der Datenübertragung dient sie zur Sortierung der TCP-
Segmente, da diese in unterschiedlicher Reihenfolge beim Empfänger
ankommen können.
Acknowledgement Gibt die Sequenznummer an, die der Sender dieses TCP-Segments als
Number nächstes erwartet. Sie ist nur gültig, wenn das ACK-Flag gesetzt ist.
Data Offset Länge des TCP-Headers in 32 Bit Blöcken, ohne Payload. Hier wird die
Startadresse der Nutzdaten identifiziert.
Reserved Das Reserved-Feld wird derzeit nicht verwendet und muss null sein.
Flags Möglich sind URG-Flag, ACK-Flag, PSH-Flag, RST-Flag, SYN-Flag
und FIN-Flag. Weiterführende Informationen finden sich in der RFC
1323.
Window Ist die Anzahl der Daten-Oktetts (Bytes), beginnend bei dem durch das
Acknowledgementfeld indizierten Daten-Oktett, die der Sender dieses
TCP-Pakets bereit ist, zu empfangen.
Checksum Die Prüfsumme dient zur Erkennung von Übertragungsfehlern und wird
über den Header und die Daten berechnet.
Urgent Pointer Zusammen mit der Sequenz-Nummer gibt dieser Wert die genaue Po-
sition der Daten im Datenstrom an. Der Wert ist nur gültig, wenn das
URG-Flag gesetzt ist.
Options Das Options-Feld ist unterschiedlich groß und enthält Zusatzinforma-
tionen. Die Optionen müssen ein Vielfaches von 32 Bit lang sein, sonst
werden sie aufgefüllt (padding). Es werden Verbindungsdaten ausge-
handelt, die nicht im TCP-Header enthalten sind, wie zum Beispiel die
Maximalgröße des Nutzdatenfeldes.
Tabelle 4: Erklärung der Felder im TCP-Datagramm
12
4.4 User Datagramm Protocol (UDP) 4 GRUNDLAGEN
zu jedem einzelnen eine direkte Verbindung aufzubauen. Bei UDP werden solche Datenpakete
gleichzeitig versendet. Genau diese Eigenschaft macht UDP für Audio- und Videoapplikatio-
nen so interessant. Datenpakete werden zum Beispiel bei einem Streaming-Server in einem
Datenstrom übertagen. Geht ein UDP-Paket verloren, wird der User dies höchstens als kurze
Tonstörung wahrnehmen. Läuft dieselbe Applikation beispielsweise über TCP und würde dort
ein Paket verloren gehen, müsste TCP dieses Paket erneut anfordern. Dieser Vorgang kostet
jedoch Zeit und kann bei einer Vielzahl verlorener Pakete zu einem Datenstau führen, der eine
konstante Datenübertragung massiv stört. Für den Anwender würde sich ein solcher Datenstau
als Unterbrechnung im Gespräch bemerkbar machen. UDP hingegen beeinträchtigt ein verlo-
renes Paket kaum und die Darstellung wird mit einer nur kleinen Audiostörung weitergeführt.
UDP ist damit die zu bevorzugende Variante.
Die Abbildung 8 zeigt anschaulich den einfachen Aufbau des UDP-Datagramms im Vergleich
zu TCP (Abb.: 4.3). Das UDP-Datagramm liefert die Ports für die verwendeten VoIP-Programme,
die auf UDP aufbauen.
Abkürzung Erklärung
Source Port Der Quell-Port gibt die Portnummer der senden Applikation an. Diese
Information wird benötigt, damit der Empfänger auf das Paket antwor-
ten kann. Da UDP verbindungslos ist, ist der Quell-Port optional und
kann auch auf den Wert 0 gesetzt werden.
Destination Port Der Zielport gibt an, welche Applikation das Paket empfangen soll.
Length Das Längenfeld gibt die Größe des Pakets in Bytes an und besteht aus
Header und Daten.
Checksum In dem Prüfsummenfeld kann eine 16 Bit große Prüfsumme mitgesen-
det werden. Die Prüfsumme wird über den Header, den sogenannten
Pseudo-Header, und die Daten gebildet. Die Prüfsumme ist optional.
Data Octetes Im Feld Daten Bytes werden die UDP-Nutzdaten übertragen, exempla-
risch RTP-Datagramme.
Tabelle 5: Erklärung der Felder im UDP-Datagramm
13
4.5 Realtime Transport Protocol (RTP) 4 GRUNDLAGEN
15
RSVP (Resource Reservation Protocol, RFC 2205) ist ein weiteres Signalisierungsprotokoll, welches QoS be-
herrscht.
16
Beim asymmetrisches Routen ist der Weg eines Datenpakets durch das IP-Netz unterschiedlich.
14
4.5 Realtime Transport Protocol (RTP) 4 GRUNDLAGEN
Abkürzung Erklärung
V Versionsnummer, Standard ist hier die Version 2 nach RFC 1889.Versi-
on 0 und 1 wurden von dem Audiotool vat benutzt.
P Padding, wird benutzt wenn dem Header ein oder mehrere Padding oc-
tets folgen. Das Flag wird benutzt da, Padding vom Payload abgegrenzt
werden muss.
X Extension, ist dieses Flag gesetzt, folgt genau eine Header-Erweiterung.
CC CSRC Count, gibt die Anzahl der CSRC-Intifier wieder.
M Unspezifiziert
PT Payload Type, gibt das Format der Palyload Daten an. Es sind 7 Bit als
PT reserviert. Der PT enthält Informationen wie der Payload dekodiert
wird. Es existieren schon definierte PT, aber auch eine frei PT-Wahl ist
möglich.
Sequence Number Die Sequenz Nummer ist für jedes RTP-Paket eindeutig und wird fort-
laufend inkrementiert. Die Sequenz Nummer ist wichtig für die Bestim-
mung der Reihenfolge der Pakete.
SSRC Synchronization Source Identifier, kann die Senderidentifikation enthal-
ten. Ist in der Übertragungsstrecke ein Mixer zwischengeschaltet, so
wird SSRC überschrieben.
CSRC Contributing Source Identifiers, definiert die Liste der Empfänger. Es
müssen genau so viele Listeneinträge vorhanden sein, wie im CC ver-
merkt. Da das CC Feld optional ist, kann auch der Wert 0 existieren.
Tabelle 6: Erklärung der Felder im RTP-Datagramm
Das RTCP (Realtime Transport Control Protocol, RFC 1890) hat die Hauptaufgabe, aktuelle
Informationen über die Qualität der Datenverteilung im Netzwerk zu liefern. Dieses Feedback
ermöglicht den Applikationen, den von ihnen generierten Datenstrom an die Netzbedingun-
gen anzupasssen, beispielsweise durch Reduktion der Datenrate bei geringer Dienstgüte, und
so Fehler einzugrenzen. Deshalb wird RTCP auch als Steuerungsprotokoll für RTP bezeich-
net. Es werden dazu periodisch SR (Sender Reports) und RR (Receiver Reports) übertragen.
Die zweite wichtige Aufgabe ist die Übertragung einer konstanten und eindeutigen Kennzeich-
nung, dem CNAME (Canonical Name). Optional kann jeder Teilnehmer via SDES (Source
Description) grundlegende Informationen über sich selbst versenden, welche unter anderem in
der Anwendung der Empfängerseite angezeigt werden können. In der vorliegenden Diplomar-
beit kann nicht näher auf das Protokoll eingegangen werden, da es in dem verwendeten RTP-
Protokollstack17 nicht genutzt wurde.
17
Protokollstack ist eine konzeptuelle Architektur von Netzprotokollen.
15
4.5 Realtime Transport Protocol (RTP) 4 GRUNDLAGEN
4.5.2 Codec
Datenstöme aus Audio- und Videodaten werden in der Regel zwischen den Endpunkten kodiert
versendet. Codec ist ein Akronym aus den englischen Begriffen coder und decoder. Codieren
ist in diesem Fall nicht mit Verschlüsseln zu verwechseln, vielmehr besteht die Aufgabe des
Codierens in der Reduktion des Nutzdatenaufkommens. Dadurch verringert sich die für die
Übertragung des digitalen Signals notwendige Bandbreite. Mittlerweile gibt es eine Vielzahl
an Codecs mit unterschiedlichen Zielsetzungen und Anwendungsfeldern. Der in der ISDN-
Festnetz-Telefonie gängige Sprachcodec G.711 wird hier oft als Referenzcodec genutzt. G.711
benutzt PCM (Puls Code Modulation) und die Audiodaten werden nicht komprimiert. Ein Vor-
teil von G.711 bei der Verwendung in VoIP-Netzen ist, dass keine Umkodierung bei der Ver-
mittlung ins PSTN notwendig ist.
Das Verhältnis von Frequenz und Abtastrate wird in der Regel durch das Nyquist-Theorem
beschrieben. Die Abtastrate muss mindestens doppelt so hoch angesetzt werden wie die höchste
abzutastende Frequenz. Der Frequenzbereich der menschlichen Sprache liegt unterhalb einer
Schwelle von 4000 Hz. Daraus ergibt sich eine Abtastrate von 8000 Hz. Da jeder Tastwert in
acht Bit gespeichert wird, ergibt sich hieraus eine Bandbreite von 64 kBit/s. Das entspricht auch
der Bandbreite, die G.711 benötigt.
Kriterien, nach denen ein Sprachcodec für VoIP-Anwendungen ausgesucht wird, sehen wie
folgt aus:
• Welchen Frequenzbereich soll der Codec abdecken und wie viele Kanäle werden benutzt?
• Welche Mechanismen wendet der Codec an, wenn Pakete verlorenen gehen?
In Tabelle 7 ist eine Liste von ITU-T-Sprachcodecs, die quelloffen und frei benutzbar sind, dar-
gestellt. Alle hier beschriebenen Codecs haben einen MOS-Wert (Mean Opinion Score Value,
Kap.: 4.9.1), der größer als 4,0 ist, da bei der Verwendung von VoIP im kommerziellen Einsatz
die Qualität eines Codecs den Ansprüchen von ISDN-Telefonie genügen muss.
16
4.6 Session Initialisation Protocol (SIP) 4 GRUNDLAGEN
17
4.6 Session Initialisation Protocol (SIP) 4 GRUNDLAGEN
bau.
4.6.1 SIP-Elemente
Die Endpunkte einer SIP-Verbindung werden allgemein als UA (User Agent) bezeichnet. Ein
UA nimmt die Eingabe von einem Benutzer entgegen und baut eine Multimediasitzung auf oder
ab. Als UAC (User Agent Client) wird die Seite bezeichnet, die einen Request generiert und
versendet. Die Gegenstelle, die den Request annimmt und einen Response sendet, ist als UAS
(User Agent Server) bekannt. Ein UA muss beide Anwendungsformen beherrschen. Requests
und Responses werden mit Hilfe eines Proxy-Servers geroutet. Ein Proxy-Server nimmt Re-
quests von einem UAC oder Responses von einem UAS an und leitet sie weiter. Ein SIP-Proxy
muss dabei den SIP-Request nicht interpretieren können, um ihn weiterzuleiten.
4.6.2 SIP-Signalisierung
Beschreibung Aktion
INVITE Aufbau oder Modifizierung einer Session
REGISTER Registrierung eines Teilnehmers
BYE Beenden einer Session
ACK Bestätigung für eine Session
CANCEL Annulieren einer vorläufigen Session
OPTIONS Erfragen der Fähigkeiten eines UAs
Tabelle 8: Erklärung der SIP-Methoden
18
4.6 Session Initialisation Protocol (SIP) 4 GRUNDLAGEN
4.6.3 SIP-Request
Ein SIP-Request ist wie schon erwähnt die Anfrage eines SIP-Teilnehmers an einen anderen
Teilnehmer oder an einenen Proxy-Server. Bei diesem Vorgang werden die in Tabelle 8 be-
schriebenen Methoden genutzt.
4.6.4 SIP-Response
Ein SIP-Response ist die Antwort eines UAS- oder SIP-Servers auf den Request eines UAC. Ein
Response kann zusätzliche Header beinhalten, die vom UAC benötigt werden, oder er kann ei-
ne einfache Bestätigung sein, um dem UAC mitzuteilen, dass er den Request nicht noch einmal
senden muss. Viele Response-Nachrichten veranlassen den UAC zu weiteren Schritten. Respon-
ses werden in insgesamt sechs verschiedene Klassen eingeteilt. Die ersten fünf davon sind dem
HTTP entnommen, die sechste existiert nur für das SIP. Sie sind in Tabelle 10 aufgelistet (Lit.:
(24)).
19
4.6 Session Initialisation Protocol (SIP) 4 GRUNDLAGEN
Im folgenden Beispiel ist die Anmeldung des Teilnehmers han@192.168.0.66 an den SIP-
Server dargestellt. Der SIP-Server prüft hier keine Authentifizierung.
20
4.6 Session Initialisation Protocol (SIP) 4 GRUNDLAGEN
Die Antwort des SIP-Servers auf die Anmeldungsanfrage ist die Methode OK. Damit ist die
Anmeldung am Server erfolgreich abgeschlossen.
Im folgenden Diagramm 12 ist beispielhaft der Verbindungsaufbau und -abbau zweier Soft-
phones (kphone) über den SIP-Server SER (SIP Express Router) des Fraunhofer Fokus Insti-
tuts18 zu sehen. In diesem Beispiel (Abb.: 11) ruft der am SIP Express Router (IP-Adresse
192.168.0.2) angemeldete Teilnehmer han@192.168.0.66 den Teilnehmer lea@192.168.0.103
an. Der Verbindungsaufbau beginnt mit Zeile 3396 der tethereal Aufzeichnung (Abb.: 12) und
endet in Zeile 21257. Im Bereich von 21267 bis 32411 ist die SIP-Verbindung aufgebaut und
die Kommunikation wird über RTP abgehandelt. Dies ist in dem Diagramm nur durch die UDP
Bestätigung zu vermuten. Ab Zeile 32412 der tethereal Aufzeichnungsdatei ist der Verbindungs-
abbau, der durch den Teilnehmer lea@192.168.0.103 initialisiert wurde, dargestellt. Der SIP-
Verbindungsabbau endet ordnungsgemäß in Zeile 32430 durch die OK Bestätigung des BYE.
18
Das Fraunhofer Institut für offene Kommunikationssysteme FOKUS ist eine Einrichtung der Fraunhofer Gesell-
schaft zur Förderung der angewandten Forschung e.V.
21
4.6 Session Initialisation Protocol (SIP) 4 GRUNDLAGEN
Die folgenden Listings sind Auszüge aus dem SIP-Verbindungsaufbau. Es ist die Kommunika-
tion zwischen dem Anrufer han@192.168.0.66 (UAC) und dem SIP-Server 192.168.0.2 (UAS).
Die Auszüge beinhalten der Übersicht halber die SDP (Session Discription Protocol) Nachrich-
ten auf die im nächsten Unterkapitel noch genauer eingegangen wird. Weiter ist zu erkennen wie
der SIP-Server die Nachrichten unverändert an den angerufenen Teilnehmer lea@192.168.0.2
weiterleitet. Die Kommunikation zwischen dem SIP-Server 192.168.0.2 (UAC) und dem ange-
rufenen Teilnehmer lea@192.168.0.2 (UAS) verläuft analog zu den beschriebenen Methoden.
Es wurde deshalb auf das Listing verzichtet. Die Zeilenangaben beziehen sich auf die Abbil-
dung 12.
22
4.6 Session Initialisation Protocol (SIP) 4 GRUNDLAGEN
23
4.6 Session Initialisation Protocol (SIP) 4 GRUNDLAGEN
24
4.6 Session Initialisation Protocol (SIP) 4 GRUNDLAGEN
Bei SDP (Session Description Protocol, RFC 2327) handelt es sich nicht um ein eigenständiges
Protokoll, sondern vielmehr ist SDP in SIP eingebettet. In Listing 3 ist zu erkennen, dass SDP-
Daten im SIP eingebettet sind. SDP hat die Aufgabe, die zwischen den Endpunkten zu verwen-
denden Codecs, Transportprotokolle und Übertragungsparameter auszuhandeln. Das folgende
Listing ist ein Auszug aus dem Listing 3 und führt die SDP-Flags auf.
Die Informationen des SDP werden vom SIP-Server verarbeitet. Darüber hinaus umfassen die
SDP-Nachrichten den Sitzungsnamen, Informationen über den Empfang der Sitzung und me-
dienunterstützende Informationen.
25
4.6 Session Initialisation Protocol (SIP) 4 GRUNDLAGEN
Flag Beschreibung
v Protokoll Version
o Ersteller der Session und Session-Identifizierung
s Name der Session
i zusätzliche Session-Informationen (optional)
u URI mit der weiterführenden Beschreibung (optional)
e E-Mail-Adresse (optional)
p Telefon Nummer (optional)
c Verbindungsinformation (wird nicht benötigt, falls bei allen Medien angegeben, op-
tional)
b Information über die Bandbreite (optional)
Eine oder mehrere Zeit-Beschreibungen (Tab.: 12)
z Zeitzonen-Anpassungen (optional)
k Verschlüsselungsschlüssel (encryption key) (optional)
a ein oder mehrere Session Attribute (optional)
Keine oder mehrere Medien-Beschreibungen (Tab.: 13)
Tabelle 11: Medien-Flags im SDP-Feld (RFC 2327)
Flag Beschreibung
t Zeit, während der die Session aktiv ist
r keine oder mehr Wiederholungen (optional)
Flag Beschreibung
m Medienname und Adresse für den Medientransport, in der Regel IP-Adresse und
Port
i Titel des Mediums (optional)
c Verbindungs-Informationen, optional wenn diese nicht in der Session definiert sind
(s. o, optional)
b Information über die Bandbreite (optional)
k Verschlüsselungsschlüssel (encryption key, optional)
a ein oder mehrere Session-Attribute (optional)
Tabelle 13: Beschreibung der möglichen SDP-Medien-Flags (RFC 2327)
26
4.7 Störfaktoren bei VoIP 4 GRUNDLAGEN
4.7.1 Echo
Jeder Teilnehmer eines Gesprächs kann seine Stimme hören – zum einen direkt durch die Luft
vom Mund zum Ohr, und zum anderen durch die Resonanz des Schädels. Bei einem Telefon-
oder VoIP-Gespräch kommen noch zwei weitere Möglichkeiten hinzu. Eine ist die gedämpfte
Rückkopplung des vom Mikrofon aufgezeichneten Signals auf den Kopfhörer oder die Hör-
muschel. Diese Sprachrückkopplung ist gewollt. Die zweite tritt durch die Übertragung der
Stimme im technischen System auf und ist meistens mit einer bemerkbaren Laufzeitverzögerung
verbunden. Diese wird in der Regel als sehr störend empfunden und wird als Echo bezeichnet.
Man unterscheidet zwischen Sprecherecho (talker echo) und Hörerecho (listener echo).
Bei dem Sprecherecho hört der Sprecher seine eigene Stimme verzögert und stark gedämpft.
Dieses Echo wird durch die Reflektion der Sprache beim Gesprächspartner erzeugt. Bei Über-
gängen zwischen Telefonnetzen, zum Beispiel VoIP auf analoges PSTN, wird das Echo in der
Richtungstrenneinheit (Gabelschaltung oder Hybrid genannt) erzeugt. Ursache ist die physikali-
sche Drahtwandlung in der Vermittlungsstelle. Diese ist nicht genau auf den Wellenwiderstand
angepasst und erzeugt Leitungsreflektionen, die sich für den Hörer als Echo bemerkbar ma-
chen. Das ursprüngliche Signal ist allerdings stark gedämpft. Viel größere Echo-Quellen sind
beispielsweise Freisprechanlagen bei Mobiltelefonen oder die Verwendung eines im Laptop
27
4.7 Störfaktoren bei VoIP 4 GRUNDLAGEN
4.7.2 Delay
Als Delay wird die Verzögerung von Datenpaketen und damit die Verzögerung der in den Pa-
keten enthaltenen Sprachdaten bezeichnet. Delay ist ein wichtiger Faktor bei der Bestimmung
der Dienstgüte in VoIP-Netzen und kann in die folgenden Kategorien unterteilt werden:
• Algorithmische Verzögerung, die durch Eigenschaften des zur Verarbeitung oder Übertragung des
Signals verwendeten Kodier-Algorithmus entsteht.
• Verarbeitungsverzögerung, die durch die zur Weiterverarbeitung des Signals benötigte Zeit be-
stimmt ist.
• Serialisierungsverzögerung, die Zeit, die notwendig ist, um eine Dateneinheit komplett auf das
Medium zu schicken.
28
4.7 Störfaktoren bei VoIP 4 GRUNDLAGEN
Bei der Verwendung von Sprachcodecs ist auch von Bedeutung, wie lange ein RTP-Paket
benötigt, bis der Payload mit Sprachdaten gefüllt ist. Bei dem Codec G.711 ist diese Zeit bei
einer Paketgröße von 160 Byte 20 ms. Steigt jedoch der Grad der Komprimierung, steigt auto-
matisch auch die Aufzeichnungszeit, die pro Datenpaket übertragen wird. Bei der Verwendung
kleiner Datenpakete hingegen steigt der Overhead des Protokoll-Headers proportional zum Pay-
load an und setzt der Paketgröße eine wirtschaftliche Untergrenze.
Im Kapitel 4.9 wird auf die Interaktion von Gesprächspartnern und die daraus folgenden Forde-
rungen an die Delay-Zeiten bei VoIP-Übertragungen näher eingegangen. Abbildung 14 veran-
schaulicht den Zusammenhang zwischen Verarbeitungsverzögerung und Transportverzögerung.
Die Abbildung enthält außerdem weitere Informationen, auf die zu einem späteren Zeitpunkt
noch näher eingegangen wird.
Flag Beschreibung
round trip delay in host time Beschreibt die Paketumlaufzeit wie sie von der Ap-
plikation aufgezeichnet wird und beinhaltet alle Ver-
arbeitungszeiten
round trip delay in wire time Paketumlaufzeit ohne Enpfangs- und Verarbeitungs-
zeiten
one way delay in wire time Zeitspanne, die zwischen der Sendeprozessverarbei-
tung und dem Eintreffen des Pakets beim Empfänger
vergeht
T Delay Zeiten (host time)
Tabelle 14: Erklärung der Felder der Grafik Verarbeitungsverzögerung und Transport-
verzögerung
29
4.7 Störfaktoren bei VoIP 4 GRUNDLAGEN
4.7.3 Jitter
Jitter wird als die Varianz der Latenzzeit bei der Übertragung von Datenpaketen bezeichnet,
oder anders ausgedrückt, als die durchschnittliche Schwankung der Verzögerungszeiten in pa-
ketvermittelten Übertragungssystemen. Ursache für Jitter können Schwankungen bei der Verar-
beitung in einem Netzelement sein oder unterschiedliche Paketwege durch das Übertragungs-
netzwerk. Da die paketvermittelte Übertragung über das Internet auch das Überholen von Pa-
keten (Sequenzfehler)20 zulässt, muss spätestens am Ende der Übertragungsstrecke die Pake-
treihenfolge wieder hergestellt werden. Dies geschieht durch einen Jitter-Buffer, der die Da-
tenpakete zwischenspeichert und anhand ihrer Sequenznummern sortiert. Wird ein zeitlicher
Schwellwert überschritten, wird das Paket verworfen. Oft ist es schon im Netzwerk nötig, den
Jitter zu begrenzen. Aus diesem Grund besitzen viele aktive Netzkomponenten, wie unter an-
derem Router, einen Jitter-Buffer, der in vordefinierten Grenzen konfiguriert werden kann. Eine
typische Konfiguration ist 30 ms bis 50 ms. In anpassungsfähigen Netzen kann der Jitter-Buffer
auch 100 ms bis 200 ms betragen. Ein Jitter von bis zu 100 ms wird als akzeptabel angenommen.
Zu beachten ist aber, dass Jitter-Buffer signifikant die Verzögerungszeiten beinflussen.
In der RFC 3550, in der RTP (Kap.: 4.5) beschrieben wird, ist auch eine Berechnung für Jitter
aufgeführt. Zuerst muss das Delay (Kap.: 4.7.2) D bestimmt werden:
Si ist der RTP-Zeitstempel für das Paket i. Ri ist der RTP-Zeitstempel für das Paket i bei der
Ankunft. j ist das Folgepaket von i. Nach der Berechnung von D kann der Jitter J bestimmt
werden:
In dieser Formel ist i − 1 das vorherige Paket und i das aktuelle Paket. Diese Formel dient als
Berechnungsgrundlage für die Jitterberechnung in der vorliegenden Diplomarbeit. Anzumerken
ist, dass das VQmon-Modell (Kap.: 4.9.3) eine erweiterte Jitter-Berechnung enthält.
Unter Paketverlust (Packet Loss) versteht man den Verlust einzelner Datenpakete eines zusam-
menhängenden Datenstroms. Ursachen für den Paketverlust können Netzstörungen, Ablauf der
TTL (Time To Live) oder das Verwerfen des Pakets durch einen Jitter-Buffer sein. Das TCP
kann Paketverluste wahrnehmen und fordert das Neuversenden des verlorengegangenen Pakets
vom Sender an. UDP bietet für Paketverluste keine Schutzmaßnahmen. Da Sprachübertragung
in UDP-Netzen fast ausschließlich über RTP, das auf UDP basiert, stattfindet, ist es wichtig, den
Paketverlust so gering wie möglich zu halten.
20
Sequenzfehler treten auf, wenn die Pakete beim Empfänger nicht, in der durch die Sequenznummer vorgegebenen
Reihenfolge, ankommen.
30
4.7 Störfaktoren bei VoIP 4 GRUNDLAGEN
Wird bei der Sprachübertragung ein Codec benutzt, der Sprachdaten komprimiert, steigt die Ge-
wichtung eines verlorengegangenen Pakets. Entsteht bei einem G.711 Codec durch den Verlust
eines Datenpakets eine Lücke von 20 ms in der Sprachwiedergabe, sind diese bei der Verwen-
dung von Codecs mit Komprimierung circa drei- bis sechsmal so groß. Bei manchen Codecs
werden die verlorenen Datenpakete durch künstliche Datenpakete mit Zufallswerten ersetzt, um
das sehr störende Knacken im Hörer des Empfängers zu vermeiden. Paketverluste wirken sich
in starkem Maß auf die Dienstgüte der Sprachverbindung aus. Dies wird im weiteren Verlauf
der vorliegenden Diplomarbeit noch verdeutlicht.
31
4.8 Quality of Service (QoS) 4 GRUNDLAGEN
In lokalen Netzen ist es möglich, auf Ethernet-Basis, ISO OSI-Modell Schichtebene 2 (Abb.:
2), verschiedene Prioritäten für sogenannte MAC-Frames (Media Access Control Frames) zu
setzen. Es können 3-User-Priority-Bits im VLAN-Tag des MAC-Header (RFC 1042) gesetzt
werden, um eine Priorisierung der MAC-Frames zu erreichen. Beschrieben wird das Priorisieren
von MAC-Frames in den Standards IEEE 802.1p und IEEE 802.1Q.
Die als Sprache priorisierten Frames bekommen in Switchen des lokalen Netzwerks Vorrang,
und ihre Übermittlungszeit wird reduziert. Sollen Daten über das lokale Netzwerk hinaus über-
tragen werden, müssen die Prioritäten des MAC-Frames im TOS/DS-Feld des IP-Datagramms
abgebildet werden.
Hinter dem TOS (Type Of Service, RFC 1349) -Konzept steht der Gedanke, Wege durch das
Internet als mehr oder weniger rentabel zu bezeichnen. Die Rentabilität einer Strecke hängt
stark von der verwendeten Applikation ab. Strecken, die viele Netzwerkkomponenten haben,
benutzen oft Zwischenspeicher, um den Jitter (Kap.: 4.7.3) zu minimieren. Das hat jedoch fol-
genden Nachteil: Durch die Jitter-Buffer steigt automatisch die Verzögerungszeit. Das ist für
Echtzeitanwendungen sehr störend. Die Internetkomponenten selbst können aus diesem Grund
nicht automatisch, das heißt eigenständig, die günstigste Strecke herausfinden, sondern man
muss anhand der Applikation auf höherer Ebene bereits abwägen, welche Anforderungen an
das Netz gestellt werden.
Die Möglichkeit, TOS zu verwenden, war in der IP-Spezifikation von Beginn an vorgesehen,
wurde aber in der Vergangenheit kaum genutzt. Routing-Protokolle wie OSPF und IS-IS bein-
halten schon lange die Option, Pakete anhand ihrer TOS zu routen.
Die Idee, die TOS zugrunde liegt, ist, dass der Endanwender nicht die Möglichkeit hat, den
TOS-Wert zu ändern. Sonst würden sicherlich in kürzester Zeit alle Benutzer die höchste Prio-
rität für ihre Internetdienste wählen. Dies würde dem Gedanken einer dienstorientierten Prio-
32
4.8 Quality of Service (QoS) 4 GRUNDLAGEN
risierung entgegenwirken und ein Güteklassenkonzept innerhalb eines Diensts fast unmöglich
machen.
Für TOS sind 8 Bit im IPv4-Datagramm re-
serviert, die in drei Felder unterteilt sind. Die
ersten 3 Bit sind als Precedence definiert. Vor-
gabewerte sind der Tabelle 15 zu entnehmen.
Das Precedence-Feld bezeichnet die Dring-
lichkeit des IP-Datagramms. Das zweite Feld
Abbildung 15: TOS-Datagramm (RFC 1349)
ist als TOS gekennzeichnet und ist das Haupt-
feld des TOS-Oktetts. Es gibt Auskunft über das Abwägen von Datendurchsatz (Throughput),
Verzögerung (Delay), Ausfallsicherheit (Reliability) und Kosten (Cost). In der Vergangenheit
gab es einige Unklarheiten über die Größe dieses TOS-Felds. RFC 791 deklariete es als 3-Bit-
Feld. Nach RFC 1349 besitzt das TOS-Feld heute 4 Bit. Das dritte Feld wird als MBZ (Must
Be Zero) definiert und wird derzeit nicht genutzt.
Die in Tabelle 16 angezeigten binären Werte werden als TOS-Werte bezeichnet. 0000 kommt
die Sonderrolle des Default-Werts zu. TOS ist als Integer-Wert festgelegt. Logische AND und
OR Operatoren auf zwei TOS-Werte sind nicht zulässig. In TOS sind auch alle weiteren, hier
nicht aufgeführten Kombinationen zulässig.
DiffServ (Differentiated Services, RFC 2474 und 2475) beschreibt ein weiteres QoS-Verfahren
zur Priorisierung von IP-Datenpaketen. Die Daten werden hierbei nur am Eingang des DiffServ-
Netzes bearbeitet und in festgelegte QoS-Klassen eingeteilt. Dazu wird das DSCP-Feld (Abb.:
16) (Differentiated Services Code Point Field) im DiffServ-Header entsprechend markiert.
33
4.8 Quality of Service (QoS) 4 GRUNDLAGEN
DiffServ nutzt zur Signalisierung der Priorität die ersten 6 Bit des schon vorhandenen TOS-
Byte im IP-Datagramm des IPv4 (Abb.: 3) oder das Traffic Class Field im IP-Datagramm des
IPv6 (Abb.: 4). Die Priorisierung dient dazu, die einzelnen Datenströme eines Verkehrsbündels
auseinander zu halten. Das DSCP-Feld hat im Gegensatz zu TOS eine Länge von 6 Bit und
kann daher 26 =64 Klassen repräsentieren. Diese werden in der Regel aber nicht alle ausge-
nutzt, da bestehende Transportnetze, wie beispielsweise ATM-Netze (Asynchronous Transfer
Mode Networks)21 Bei DiffServ sind die Dienste in wenige QoS-Klassen unterteilt, wobei jeder
Dienstklasse ein Satz an Regeln zur Verfügung steht.
Die Klassifizierung der IP-Pakete nach DiffServ geschieht durch das Setzen der DSCP-Bits.
Dies kann entweder durch eine Applikation im Quell-Rechner geschehen, oder es kann durch
einen Router am Eingang des Transitnetzes vorgenommen werden. IP-Pakete mit gleichem
DSCP-Wert bilden einen Strom von IP-Paketen, der im Netz gleich behandelt wird. Es muss
eine Instanz geben, die eine Zuweisung von DSCP-Wert und Netzdienst übernimmt. Um die
Behandlung der IP-Pakete nach DiffServ zu spezifizieren, werden Behandlungsklassen, die
sogenannten PHB’s (Per Hop Behaviours), eingeführt. Oft werden einer Behandlungsklasse
mehrere DSCP-Werte zugeordnet. Ein PHB-Wert entspricht einer CoS (Class of Service) ei-
nes Übermittlungsnetzes. PHB bestimmt das Verhalten eines Routers beim Weiterleiten der
IP-Pakete unter Berücksichtigung des DSCP-Werts.
DiffServ wurde entwickelt, um QoS-Anfor-
derungen in Backbone- bzw. Transit-IP-Netzen
sicherzustellen. Ein DiffServ IP-Netz, beispiels-
weise ein Unternehmensnetz oder das Netz
eines NSP (Network Service Provider), bildet
eine DiffServ-Domäne (DiffServ-Domain). In
Abbildung 16: DiffServ-Datagramm (RFC
dieser Domäne ist die Art und Weise der QoS-
2474)
Unterstützung in Form eines SLA (Service
Level Agreement) festgelegt. Es sind folgen-
de Typen von Routern zu unterscheiden: Eingangsrouter, interner Router und Ausgangsrouter.
Eingangsrouter (Ingress Router) übernehmen die Unterteilung in Klassen. Jede Klasse wird
mit einer Angabe im DS-Feld markiert. Die durchschnittliche Datenrate wird über die mittlere
Anzahl der Datenpakete pro festgelegter Zeiteinheit abgeschätzt. Sobald die vereinbarte Band-
breite überschritten wird, werden einige IP-Pakete am Netzeingang direkt verworfen (dropping)
oder kurz verzögert (shaping). Auf diese Weise wird eine Zugangskontrolle realisiert, um die für
die Klasse von IP-Paketen vereinbarte Bandbreite zu gewährleisten. Im internen Router (Interi-
or Router) findet keine Zugangskontrolle statt. Pakete werden gemäß ihrer Klasse in leitungs-
abhängige Warteschleifen eingereiht (queueing). Ausgangsrouter (Egress Router) können den
Datenverkehr formen (shaping). Hier kann zum Beispiel ein Jitter-Ausgangszwischenspeicher
dazu führen, dass die IP-Pakete die DiffServ-Domäne im gleichen Abstand verlassen.
Eine Vernetzung von mehreren DiffServ-Domänen bildet eine DiffServ-Region. Zu erwähnen
ist noch, dass die QoS-Anforderungen an die gesamte Ende-zu-Ende-Strecke nicht erfüllt wer-
21
ATM ist eine Technik, bei der der Datenverkehr in kleinen Pakete, auch Zellen genannt, übertragen wird. Die
Pakete haben eine feste Länge von 53 Byte.
34
4.9 Messungen der Sprachqualität 4 GRUNDLAGEN
den, sobald die Kommunikation über ein IP-Teilnetz verläuft, in dem kein DiffServ unterstützt
wird.
IntServ (Integrated Services, RFC 1633) ist ein weiteres Verfahren zur Parameterisierung von
IP-Datenpaketen und somit zur QoS-Sicherstellung. Um dies zu erreichen, wird bei dem IntServ-
Modell davon ausgegangen, dass die zur Verfügung stehenden Ressourcen explizit verwaltet
werden müssen, so dass keine Dienstgarantien ohne Ressourcen-Reservierung erfolgen kann
und dass die Ende-zu-Ende-Verzögerungen begrenzt werden müssen. Bei IntServ fragt der Host
bei den Routern im Internet oder im Intranet an, ob die Ressourcen für einen Verkehrsfluss vom
Sender zum Empfänger vorhanden sind. Danach stellen die Vermittlungssysteme die Verbin-
dung in der gewünschten Qualität her und halten sie bis zum Übertragungsende aufrecht. Das
Konzept sieht mehrere Prioritätsklassen vor, die unterschiedlichen QoS-Klassen entsprechen.
35
4.9 Messungen der Sprachqualität 4 GRUNDLAGEN
Die Teilnehmer beurteilen dann die Listening Quality der vorgespielten Audiosamples. Diese
Form subjektiver Messung wird als ACR (Absolute Category Rating) bezeichnet. Dabei wird
die Sprachqualität in fünf Beeinträchtigungsstufen unterteilt, welche in Tabelle 17 vorgestellt
werden. Der Mittelwert jeder Sample-Messung bildet den MOS-Wert. Zur Bestimmung des
MOS-Werts sollten mindestens 16 Probanden beiden Geschlechts herangezogen werden.
Bei der Bestimmung eines Werts wie dem MOS-Wert ist zu bedenken, dass dieser Wert subjek-
tiv ist. Die Messergebnisse können deshalb deutlich schwanken. Wie schon im Kapitel 4.5.2 in
der Tabelle 7 aufgeführt, wird einem Codec oft ein MOS-Wert zugeordnet.
Die von der Industrie zur Bestimmung des MOS-Werts benutzen Sprachsamples basieren auf
phonetisch ausgeglichenen Texten. Sie beinhalten Laute, die typisch für die jeweilige Spra-
che sind. Außerdem werden Aufzeichnungsgeräte mit 16 Bit oder mehr verwendet, welche auf
normierte Pegel und Signalcharakteristik geeicht sind. Das ITU und OSR (Open Speech Repo-
sitory) stellen solche Sprachsamples zur Verfügung.
Als Ergänzung zu ACR werden andere subjetive Messmethoden benutzt. DCR (Degradation
Category Rating) und CCR (Comparison Category Rating) sind Beispiele dafür. DCR bewer-
tet den Grad der Veränderung der beeinträchtigten Audiosamples und liefert den sogenannten
DMOS-Wert. CCR vergleicht zwei Dateien vor und nach der Übertragung mittels VoIP und bil-
det daraus den CMOS-Wert. D und C vor MOS stehen jeweils für das verwendete Messverfah-
ren DCR und CCR. Um zwischen Listening und Conversational Auswertungen unterscheiden
zu können, führte das ITU die Bezeichnungen MOS-LQ für MOS Listening Quality und MOS-
CQ für MOS Conversation Qualtity ein. Zusätzlich wurde noch der Suffix S, O und E etabliert,
die für (S)ubjective, (O)bjective und (E)stimated stehen.
Zur Bestimmung der Sprachqualität während einer Konversation müssen Probanden typische
Kommunikationsszenarien durchspielen. Kommunikationsszenarien können Gespräche mit Mo-
nologcharakter, aber auch schnelle Wortwechsel mit vielen Sprachüberschneidungen sein. Eine
Qualitätsausage über diese Gespräche ist natürlich ungemein schwieriger und ungenauer als
die Bestimmung von MOS-LQ-Werten (16). Ein Beispiel ist der Delay-Effekt. Während eines
längeren Monologs fällt ein Delay von mehreren hundert Millisekunden kaum auf. Bei einer
hohen Anzahl von Wortwechseln zwischen den Gesprächspartnern hingegen kann schon ein
kurzes Delay das Gespräch stark beeinträchtigen. Ein weiterer wichtiger Faktor bei interaktiven
36
4.9 Messungen der Sprachqualität 4 GRUNDLAGEN
Gesprächen ist die Interpretation der Gesprächsqualität. Vergleicht man die Aussagen über die
Qualität der Sprachkommunikation zweier Geschäftspartner über ein Gespräch mit den Aussa-
gen zweier Freunde über ein Gespräch, das über das gleiche Übertragungssystem geführt wur-
de, wird man feststellen, dass das Ergebnis sehr unterschiedlich ausfallen kann. In der Regel
wird bei einem Geschäftsgespräch die Toleranz gegenüber Qualitätseinbußen zu der gewohnten
ISDN-Qualität sehr gering sein. Das heißt, schon bei geringen Verzögerungen und Störungen
wird die Qualität als schlecht eingestuft. Freunde, die die Wortwahl und Redewendung des an-
deren kennen, bezeichnen die Sprachqualität des Gesprächs hingegen als gut. Vielleicht spielt
auch das Wissen eine Rolle, dass in der Regel eine VoIP-Verbindung günstiger ist als ein Te-
lefongespräch. Dies wiederum lässt die Akzeptanz gegenüber einer nicht so guten Verbindung
subjektiv steigen.
Das ITU unternahm Anstrengungen, ergänzend zu subjektiven Qualitätsmessungen kostengüns-
tige objektive Messverfahren zu entwickeln. Dabei entstand PSQM (Perceptual Speech Quality
Measure, P.862). Diese Messtechnik misst die Verzerrungen einer Sprachübertragung in Bezug
auf ein Referenzsample. Audiodaten, die über ein Netzwerk übertragen und beim Empfänger
gespeichert werden, werden mit den Referenzdaten, die beiden Seiten vorliegen, verglichen. Bei
der anschließenden Analyse werden die empfangenen Daten in kleine, überlappende Blöcke
unterteilt und durch eine Fourier-Transformation der einzelnen Blöcke ausgewertet.
Der daraus resultierende PESQ-Wert hat wie MOS einen Wertebereich von 0 bis 5, ist aber
nicht mit dem MOS-Wert gleichzusetzen, da die Skalierung unterschiedlich ist. Für PSQM-
Messungen benötigt man immer sowohl die Quell- oder Referenzdatei, als auch die empfangene
Datei, um die relative Verzerrung zu bestimmen.
Ein weiterer ITU-Standard ist der P.563, welcher nur mit der empfangenen Audiodatei aus-
kommt. Da die Messergebnisse aber im Vergleich zu P.862 weiter auseinanderliegen, ist es
notwendig, aus einer Vielzahl von Messungen den Mittelwert zu bilden. Dadurch erhält man
eine aussagekräftige Qualitätsmetrik, die aber nicht für einzelne Messungen aussagekräftig ist.
Die vorgestellten Algorithmen P.861, P.862 und P.563 benötigen einen großen Rechenaufwand
von circa 100 MIPS24 pro VoIP-Gespräch. Für viele Anwendungsbereiche ist dies unpraktika-
bel. Außerdem stehen die Algorithmen unter kommerziellen Lizenzen und dürfen daher nicht
frei verwendet werden.
37
4.9 Messungen der Sprachqualität 4 GRUNDLAGEN
4.9.4 R-Faktor
Anhand des sogenannten R-Faktors soll die Dienstgüte einer Verbindung beschrieben werden.
Der R-Faktor beschreibt die Mund-zu-Ohr (mouth to ear) Charakteristik der Sprache, die über
ein digitales Kommunikationsnetzwerk übertragen wird. Der Wertebereich des R-Faktors liegt
zwischen 0 und 120. 50 bis 94 ist ein typischer Wertebereich für schmalbandige Telefonie25
und 50 bis 110 für Breitbandtelefonie. Der R-Faktor kann in den MOS-LQ- und MOS-CQ-
Wert umgerechnet werden. Die Berechnung der R-Faktoren basiert auf der Annahme, dass die
Sprachstörungseffekte aufaddiert werden können.
Da die Ermittlung des R-Faktors ein Grundbestandteil der zu entwickelnden Applikation zur
Bestimmung der Dienstgüte ist, wird die Berechnung des R-Faktors in Kapitel 6.3.1 genau-
er beschrieben. Ein vereinfachtes E-Modell beschreibt das ITU-T Dokument TD43 der Study
Group 12. In diesem Dokument wird ausführlich auf die Zusammenhänge der Audiofaktoren
eingegangen.
Diese verwendeten ITU-T Dokumente dürfen nicht elektronisch kopiert werden. Nach einer
kostenlosen Anmeldung können die Dokumente aber direkt von der ITU-T Internetseite
http://www.itu.int/home/ heruntergeladen werden. Dies betrifft die Dokumente Recommenda-
tion G.107, Dokument TD43 und Supplement 3 der P-Serie. Eine Kopie des Inhalts in nicht
elektronischer Form und die Verwendung der mathematischen Formeln ist ausdrücklich erlaubt.
25
In vielen Literaturangaben wird der schmalbandige Wertebereich auch von 0 bis 100 angegeben.
38
4.10 Echtzeitverhalten und Latenzzeiten des Linux-Kernels 4 GRUNDLAGEN
39
4.11 Zeitmessung mit Linux unter Verwendung von GNU C 4 GRUNDLAGEN
zählt dabei die Sekunden und Nanosekunden, die seit dem 1.1.1970 verstrichen sind. Da die
Speicherung dieser Variablen mehr als 32 Bit benötigt, führt der Zugriff aber zu einem kriti-
schen Abschnitt. xtime bedient sich außerdem der Hardware moderner Prozessoren, die einen
Taktzyklenzähler, den TSC (Time Stamp Counter), haben. Dieser wird mit jedem Taktsignal
inkrementiert. Bei Prozessoren größer 1 GHz erreicht der TSC eine Auflösung im Nanosekun-
denbereich.
Für das Auslesen des Zeitwertes mit xtime gibt es zwei Möglichkeiten. Eine ist die Funktion
current kernel time(), welche die Zeit in der Struktur timespec zurückgibt:
Die andere Möglichkeit stellt die Funktion do gettimeofday() dar, welche eine Zeitrückgabe in
die Struktur timeval macht:
Prozessoren, die Frequenzscaling unterstützen, wie die meisten Mobile-Prozessoren, ändern die
Taktfrequenz während des laufenden Betriebs. Da in der Entwicklungsphase ein Notebook mit
Pentium Mobile Prozessor benutzt wurde, der Frequenzscaling unterstützt, soll im Folgenden
erklärt werden, warum Frequenzscaling keinen Einfluss auf die Echtzeitmessung hat. Wenn
eine Taktfrequenzänderung von der CPU initiiert wird, stellt dies kein Problem für die TSC-
Zeitmessung dar. Über den Notifer-Mechanismus wird die Funktion cpufreq register notifier()
aufgerufen. Über diese Funktion kann der Programmierer Taktfrequenzänderungen erkennen
und angepassen. Die Funktion xtime übernimmt diese Anpassungen automatisch. Auf das di-
rekte Auslesen des TSC unter Linux kann an dieser Stelle nicht näher eingegangen werden.
40
5 EINFÜHRUNG IN DAS PROJEKT
41
5.1 Verwendete Open Source Software 5 EINFÜHRUNG IN DAS PROJEKT
Debian GNU38 /Linux ist ein OS (Operating System), das sich durch eine hohe Performance
und Stabilität auszeichnet. Eine Besonderheit gegenüber anderen Linux-Distributionen ist das
Paketmanagement apt, mit dem eine Vielzahl von Programmen sehr einfach installiert werden
kann. Dabei wird zwischen vorkompilierten Programmen und dem Quellcode unterschieden.
Debian ist eine kostenlose GNU/Linux-Distribution. Es liefert alle Entwicklungswerkzeuge,
die für die Entwicklung der Applikation nötig sind.
Asterisk ist eine PBX-Software (Private Branch Exchange Software), die ursprünglich von der
Firma Digium entwickelt wurde. Da Asterisk alle Funktionalitäten einer herkömmlichen Tele-
fonanlage abdeckt, der Quellcode unter der GPL (GNU Public License) Version 2 offengelegt
ist und Asterisk eine Vielzahl von Protokollen unterstützt, wird das Projekt von kommerziellen
Firmen sowie von der Community aktiv weiterentwickelt.
Wichtige Protokolle, die Asterisk unterstützt, sind hier aufgelistet:
• H.323
• G.711 (a/u-Law)
• G.726
37
Die Community ist eine Vielzahl freiwilliger Mitarbeiter, die in der ganzen Welt an Open Source Projekten arbei-
ten.
38
GNU bedeutet GNU is Not Unix.
42
5.1 Verwendete Open Source Software 5 EINFÜHRUNG IN DAS PROJEKT
Asterisk kann zwischen den unterschiedlichen Protokollen und Codecs vermitteln und bietet
Gateway-Möglichkeiten ins PSTN-Netz. Zudem ermöglicht Asterisk einen Echo-Modus, wel-
cher gesendete Audiodaten zeitverzögert spiegelt. Leider ist Asterisk nicht für die Aufzeich-
nung der IP-spezifischen Parameter geeignet, da Datenpakete von der Asterisk Software bis zum
RTP-Payload entpackt und Software intern weiterverarbeitet werden. Mit neuen Zeitstempeln
und Sequenznummern versehen werde diese anschließend vom Asterisk zum Zielhost weiter-
geleitet. Da die neuen Zeitstempel und Sequenznummern keinen Bezug zu den ursprünglichen
Zeitstempeln im RTP-Header haben, eignet sich der Asterisk-Server nicht für die Messung der
IP-spezifischen Parameter.
Der schon im Kapitel 4.6 erwähnte Signalisierungsserver SER (SIP Express Router) ist hoch-
performat und kann sowohl als
• Registrar-Server
• Redict-Server
• Proxy-Server
betrieben werden. Die Installation und Konfiguration unter Debian-GNU/Linux ist sehr einfach.
SER ist im Gegensatz zum Asterisk-Server ein reiner Signalisierungsserver. Über das Erweite-
rungsmodul Nathelper kann der SER mit einem Zusatzprogramm, dem RTP-Proxy, Signalisier-
ungs- und Steuerdaten austauschen. Dies ermöglicht dem SER nach dem Sessionaufbau als
RTP-Proxy für VoIP-Daten, die über RTP übertragen werden, zu agieren. Im folgenden Unter-
kapitel wird der RTP-Proxy näher beschrieben.
5.1.4 RTP-Proxy
Der von Maxim Sobolev für die Firma PortaOne entwickelte RTP-Proxy ist ein eigenständiges
Programm, das über die Nathelper-Schnittstelle des SER angesprochen wird. Da der RTP-
Proxy im Gegensatz zu dem eben vorgestellten Asterisk-Projekt nur RTP-Datenströme entge-
gennimmt und diese an einen Zielhost weiterleitet, ist die Funktionsweise kaum zu vergleichen.
Der RTP-Proxy öffnet einen Socket SOCK DGRAM 39 auf UDP-Ebene; somit wird der RTP-
Header (Abb.: 9) nicht verändert. Sequenznummer und Timestamp, die bei der Erzeugung eines
RTP-Pakets generiert werden, können auf der Empfangsseite ausgewertet und als Messgrößen
herangezogen werden. Der Socket SOCK DGRAM ist in IPv4 und IPv6 für verbindungslose
und unzuverlässige Datagramme mit fester Paketgröße, wie dem UDP, implementiert.
Im Folgenden wird auf die Funktionsweise des RTP-Proxy näher eingegangen. Der RTP-Proxy
reagiert auf INVITE Nachrichten, die den SER erreichen. Die Caller-ID wird ausgelesen und an
39
Der SOCK DGRAM ist ein spezieller Socket für dsa verbindungslose Protokoll UDP.
43
5.1 Verwendete Open Source Software 5 EINFÜHRUNG IN DAS PROJEKT
den RTP-Proxy per Socket Kommunikation weitergegeben. Der RTP-Proxy überprüft darauf-
hin, ob dieser Caller-ID bereits eine UDP-Sitzung zugeordnet wurde. Ist dies nicht der Fall, wird
für eine neue Sitzung ein UDP-Port reserviert und die Portnummer an den SER zurückgeliefert.
Der SER ersetzt daraufhin im SDP das m-Flag (Tab.: 11) mit der IP-Adresse und Port des RTP-
Proxys.
Wird nun vom SER ein sogenannter non-negative SIP-Reply mit SDP-Daten empfangen, wird
die Caller-ID vom Nathelper-Modul des SER erneut an den RTP-Proxy gesendet. Der RTP-
Proxy prüft anhand einer internen Liste, ob für diese Caller-ID schon eine Session zugewiesen
ist und gibt einen Fehlercode zurück, wenn keine Session existiert. Wird ein positive SIP-Reply
am SER empfangen, werden die SDP-Daten in den Ursprungszustand zurückgesetzt. Nach dem
Erzeugen einer neuen Sitzung horcht der RTP-Proxy an dem für diese Sitzung vorgemerkten
Port.
Zu erwähnen ist auch, dass für jede der beiden UA’s eine Session erstellt wird. Werden nun Da-
tenpakete an einen der UDP-Ports geschickt, füllt sich eine Datenstruktur im RTP-Proxy. Sind
die Datenstrukturen beider Sockets voll, werden diese untereinander ausgetauscht. Der RTP-
Proxy speichert die Leerlaufzeit der einzelnen Sessions und löscht ungenutzte Verbindungen
per Default nach 60 Sekunden.
Nach einigen Funktionstests am SER mit RTP-Proxy und dem Softphone kphone als UA, das im
folgenden Unterkapitel näher beschrieben wird, und der Datenauswertung durch das Programm
ethereal, hat sich der SER mit RTP-Proxy als geeignetes Serverprogramm für den Verbindungs-
aufbau und die Übertragung der RTP-Daten herausgestellt.
Das einfache KDE (K Desktop Environment) Softphone kphone, mit dem schon der Verbin-
dungsaufbau zum Asterisk und SER realisiert wurde, steht unter der GPL Version 2 und ist in
der Programmiersprache C++ geschrieben. Der SIP UA kphone verwendet die Codecs G.711 a-
/u-law, GSM, iLBC und spexx. Durch Tests und die Analyse des Quellcodes stellte sich heraus,
dass kphone keine Möglichkeit besitzt, mehrere Sessions gleichzeitig aufzubauen. Außerdem
ist es nicht möglich, mehrere Instanzen von kphone parallel auf einem Computer auszuführen.
Ein weiterer Nachteil ist, dass kphone auf dem QT-Toolkit40 basiert. Aus diesem Grund ist ein
Einsatz auf Computern ohne X-Server41 nicht möglich.
Auch Softclients wie linphone, twinkle oder ekiga weisen die gleichen negativen Aspekte auf,
die sie für die Verwendung in dem Projekt unbrauchbar machen. Lediglich für Tests und Feh-
leranalysen, zum Beispiel um die Funktion des RTP-Proxys zu prüfen, werden die Softphones
als UA verwendet.
40
QT (QT-Toolkit) ist ein Entwicklungstool für grafische Oberflächen und wurde von der Firma Tolltech entwickelt.
41
Der X-Server ist ein Dienst auf einem Computer, der eine grafische Oberfläche dem X-Client zur Verfügung stellt.
Auf den X-Server baut das X-Window-System auf.
44
5.1 Verwendete Open Source Software 5 EINFÜHRUNG IN DAS PROJEKT
Der SIP- und RTP-Stack der Firma Vovida, welcher unter der Vovida Software License steht und
die Veränderung des Quellcodes für nicht komerzielle Zwecke zulässt, stellt ein API (Applica-
tion Programming Interface) für SIP basierte Applikationen in der objektorientierten Program-
miersprache C++ dar und ist voll kompatibel zur RFC 2543. Der Quellcode ist sehr übersichtlich
in Aufgabengruppen unterteilt. SIPSet bietet eine breite Palette an Beispielprogrammen, unter
anderem ein SIP-UA GUI (Graphical User Interface). Der Vovida RTP-Stack unterstützt die
ITU-T Codecs G.711 u/a-law, G.723, G.726 und G.728.
Mit Hilfe der SIPSet API wurde im gleichen Zeitraum von Kim Ernst im Rahmen einer Di-
plomarbeit ein RTP-Lastgenerator entwickelt, welcher SIP zum Sessionaufbau nutzt. Aus die-
sem Grund konnte schon bei der Entwicklung des Lastgenerators auf die weitere Verwendung
in diesem Projekt Einfluss genommen werden. Außerdem konnten Synergien genutzt werden,
da die Projekte aufeinander aufbauen und somit die gleichen Applikationen verwendet werden.
Der RTP-Lastgenerator besteht aus einem Sendeprogramm (gensend) und einem Empfangspro-
gramm (genrcv). In der vorliegenden Diplomarbeit wird der Lastgenerator als RTP-Generator
bezeichnet, da der Generator für Messungen nicht mit der Last Option gestartet wird. Des Wei-
teren heißen die Programme gensend.bin und genrcv.bin, um zu verdeutlichen, dass es sich um
Binärprogramme handelt.
Gnuplot (Version 4.0, GPL Versinon 2) ist ein Kommandozeilen gesteuerter interaktiver Daten-
und Funktionsplotter, der ursprünglich für die Visualisierung von mathematischen Funktionen
und Gleichungen entwickelt wurde. Gnuplot bietet eine große Auswahl an Funktionen, die es
dem Benutzer sehr einfach machen, Funktionen zu visualisieren. Außerdem bietet Gnuplot die
Möglichkeit, Dateien mit Messdatensätzen zu lesen und diese anhand einer komplexen Syntax
zu visualisieren. Gnuplot wird in der vorliegenden Diplomarbeit zur visuellen Aufarbeitungen
der gemessenen Daten als 2D-Plotter benutzt.
gnuplot i ist ein ANSI (American National Standards Institute) C-Interface für Gnuplot. Es bie-
tet Applikationen, die in der Programmiersprache C geschrieben sind, die Möglichkeit, Gnuplot
interaktiv zu nutzen. Viele Gnuplot Funktionen wurden in gnuplot i abgebildet. Außerdem las-
sen sich im Quellcode von gnuplot i sehr einfach neue Funktionen implementieren.
45
5.1 Verwendete Open Source Software 5 EINFÜHRUNG IN DAS PROJEKT
Analysator-Tools ist, dass man es als normaler Benutzer über das sogenannte sticky Bit“ auf-
”
rufen kann. Normalerweise müssen Programme dieser Art explizit als Benutzer root42 aufge-
rufen werden. Beispiele hierfür sind Programme wie ifconfig oder tcpdump. Dies hätte jedoch
neue Probleme in der Entwicklungsphase hervorgerufen. In der vorliegenden Diplomarbeit wird
tethereal einerseits von dem im nächsten Kapitel beschriebenen Programm callflow und ande-
rerseits zum Aufzeichnen der one way Datensätze auf dem RTP-Proxy-Computer verwendet.
Ethereal ist ebenfalls ein Netzwerk-Protokoll-Analysator, der unter der GPL Lizenz 2 steht. Er
besitzt aber im Gegensatz zu tethereal ein GUI (Graphical User Interface)43 . Es erlaubt, die
Daten eines Netzwerks in Echtzeit einzusehen und zu analysieren. Dabei können die Daten
ebenfalls im Capture-Format gespeichert werden. Jedes Paket kann annähernd in Echtzeit (live)
angezeigt werden. Zahlreiche Zusatzfunktionen machen das Programm zu einem sehr guten
Analysetool. Ethernet-Dateien im Capture-Format liefern im Rahmen der Entwicklung eine
gute Vergleichsreferenz zu den gemessenen Daten.
Das Programm callflow ist ein Sequence Diagram Generator. Basierend auf einer Sammlung
von Shell-Skripten unter der Verwendung des Programms awk ist callflow in der Lage, tethereal
und ethereal Capture-Dateien auszulesen. Für die Visualisierung benutzt callflow das in der
Programmiersprache Java geschriebene Framework batik.
Resultat von callflow ist ein übersichtliches Sequenz-Diagramm einer Datei mit Aufzeich-
nungsdaten im Capture-Format. Über Filter ist callflow besonders gut geeignet für die Visua-
lisierung der SIP-Signalisierung. Es ermöglicht eine schnelle Fehleranalye, wenn beim SIP-
Verbindungsaufbau und -abbau Fehler auftreten. In der Abbildung 12 wurde zur Verdeutlichung
eine callflow Ausgabe verwendet.
Der Apache Webapplikationsserver ist ein robuster und sehr verbreiteter Webserver, der unter
der Apache Lizenz steht. Er ist unter dem verwendeten Betriebssystem einfach einzurichten
und wird in der vorliegenden Diplomarbeit zur Bereitstellung des Webinterface genutzt. PHP
ist dabei eine effiziente Programmiersprache, da sie direkt in HTTP eingebettet wird und daher
oft in Webapplikationen Anwendung findet. Über das Modul php module wird PHP in den
Apache Webserver eingebunden.
ImageMagick ist eine Software Suite, die das Erstellen und Bearbeiten von Bildern ermöglicht.
Die Programmsammlung ist quelloffen und steht unter einer eigenen Lizenz. ImageMagick un-
terstützt eine Vielzahl von Programmiersprachen, unter anderem auch C, C++ und PHP. Image-
42
Der Benutzer root ist der administrative Benutzer unter Linux und hat vollen Systemzugriff.
43
Ein GUI ist eine grafische Benutzeroberfläche.
46
5.1 Verwendete Open Source Software 5 EINFÜHRUNG IN DAS PROJEKT
Im Rahmen der Planungsphase wurden viele weitere Projekte untersucht, die für Teilgebiete
der Aufgabenstellung gut geeignet sind. Benutzt wurde jedoch lediglich iperf, da mit diesem
Programm eine Netzlast ähnlich der des Lastgenerators erstellt und verglichen werden kann.
• iperf ist ein leistungsfähiger Netzwerk-Performence-Tester, der auf dem Client/Server-Prinzip ba-
siert. Das Programm iperf benutzt jedoch keinen SIP zur Signalisierung und kann nur eine Instanz
aufbauen. Des Weiteren kann es Jitter und Delay in Echtzeit anzeigen.
• sipp ist ein Konsole SIP UA zum Testen von SIP-Verbindungen. Das Programm sipp kann sehr
viele Signalisierungen gleichzeitig durchführen und Ausgabedateien im CSV-Format generieren.
Da aber Programme wie kphone zum Testen des SIP-Verbindungsaufbaus einfacher zu bedienen
sind, wurde sipp lediglich in der Planungsphase verwendet, um die Skalierbarkeit des SER-Servers
zu testen.
• rat ist ein Softphone, das in der Ursprungsversion nur über die Konsole gesteuert werden konnte.
Da rat ansonsten die gleichen Defizite wie kphone hat, wurde es nur in der Testphase als UA auf
Computern ohne X-Server verwendet.
• live555 ist ein API für Multimediastandards wie RTP, RTCP, RTSP und SIP mit einer großen
Anzahl an Beispiel-Quellcode und Demonstrationstools. Softwareprojekte wie der Linux mplayer
benutzten die livelib für Streaming-Applikationen. Für weitere Projekte, besonders für die Analyse
von Audio- und Videodaten, ist dieses API ebenfalls sehr gut geeignet.
47
6 ENTWICKLUNG
6 Entwicklung
In diesem Kapitel wird die Entwicklung der Applikationen näher beschrieben. Dabei kann zwi-
schen zwei Entwicklungsphasen unterschieden werden: Die Entwicklung der Echtzeitapplika-
tionen und die Entwicklung der Auswertungs- und Anzeigeapplikationen. Abbildung 17 gibt
eine Übersicht über die Prozesse, die während einer VoIP-Verbindung in der Echtzeit-Phase ak-
tiv sind. Als Entwicklungsplattform wurde für die C/C++ Programme Kdevelop 3.3.2 mit dem
Kompiler gcc 4.0.3-3 verwendet. Die Web- und PHP-Applikationen wurden mit dem Quanta
3.5.2 HTML-Editor erstellt. Für Shell-Skripte und die Programmierung auf einem entfernten
Computer (remote programming) wurde der Konsolen-Editor vim in der Version 7.0 benutzt.
Als einer der ersten Schritte war es wichtig, die IP-spezifischen Messdaten auszulesen und in
Dateien zu sichern. Die Daten müssen in Echtzeit aus dem jeweiligen Protokoll-Header während
der offenen RTP-Verbindung entnommen werden. Eine Überlegung war, die Daten vor dem Ver-
senden durch das Programm gensend.bin und direkt nach dem Empfangen durch das Programm
genrecv.bin zu sichern. Dies muss für alle Sessions gelten, die aufgezeichnet werden sollen.
Außerdem muss dies unter Berücksichtigung der Echtzeitkriterien realisiert werden.
48
6.1 Modifikationen im Quellcode von gensend.bin und genrecv.bin 6 ENTWICKLUNG
deklariert. In der Datei RtpTransmitter.cxx im Quellcode von gensend werden die zu speichern-
den Parameter ausgelesen und an eine Message-Queue übergeben (Listing 13). Eine Message-
Queue ist ein asynchrones Protokoll, das zur IPC (Inter Process Communication) verwendet
wird. Die Message-Queue wird in der Funktion main.cpp initialisiert (Listing 14). Das Gene-
rieren der Zeitstempel, die an die Message-Queue als Sendezeitstempel übergeben werden, ist
ebenfalls in der Datei RtpTransmitter.cxx realisiert. Dazu wird die in Kapitel 4.11 vorgestellte
Funktion do gettimeofday() benutzt. In der Datei main.cpp werden die über die Message-Queue
empfangenen Daten in eine Datei mit dem festen Dateinamen /tmp/sender-output.csv durch
Kommas getrennt geschrieben (Listing 14). Dieses Format hat den Vorteil, dass Datensätze je
nach Wunsch auch in Applikationen wie beispielsweise Open Office zur Weiterverarbeitung
geöffnet werden können. Eine Liste der aufgezeichneten Werte kann der Tabelle 18 entnommen
werden.
49
6.1 Modifikationen im Quellcode von gensend.bin und genrecv.bin 6 ENTWICKLUNG
Wert Programmvariable
Sequenznummer seqnum2
TOS ipTos
Sende-Port lclRtpPort
Empfangs-Port rmtRtpPort
Zeitstempel time
Zeitstempel pltime
Session session
Tabelle 18: Aufgezeichnete Daten
Die für die Sendedaten verwendete Datei /tmp/sender-output.csv beinhaltet dabei die Daten
aller Sessions, die zum Aufnahmezeitpunkt gestartet wurden. Die Datei wird zu Beginn einer
Messung gelöscht und neu angelegt.
50
6.1 Modifikationen im Quellcode von gensend.bin und genrecv.bin 6 ENTWICKLUNG
Die Aufzeichnung der Daten beim Empfangen im Prozess receiver.bin gestaltet sich ähnlich.
In der Quellcode-Datei RtpReceiver.cxx des Empfängerprogramms genrecv.bin werden die Da-
ten ausgelesen und an eine Message-Queue weitergereicht. Diese ist im Programm main.cpp
der Empfängerapplikation definiert. Der Unterschied zur Sendeapplikation ist, dass die zu spei-
chernden Daten aus dem Socket ausgelesen werden müssen und der von gensend.bin gene-
rierte Timestamp durch einen neuen Timestamp, der lokal generiert wird, überschrieben wird.
Somit ist sichergestellt, dass alle anderen Aufzeichnungswerte des empfangenen RTP-Pakets
unverändert bleiben und nicht vertauscht werden. Es wird lediglich ein neuer Timestamp hin-
zugefügt.
Genauer erklärt bedeutet dies, dass das Feld pltime auf der Empfängerseite mit einem loka-
len Timestamp, der beim Empfangen des Pakets über die Funktion do gettimeofday() erzeugt
wird, überschrieben wird. Im Quellcode von main.cpp wird das Format der festgelegten Ausga-
bedatei /tmp/receiver-output.csv beschrieben, in die die von der Message-Queue übergebenen
Aufzeichnungsdaten gespeichert werden. Das Format der beiden Aufzeichnungsdateien ist da-
bei gleich. Die Listings 15 und 16 zeigen das verwendete Format an. In Tabelle 19 werden die
aufgezeichneten Daten erklärt.
Spalte Bezeichnung
1 Paketnummer
2 Sequenznummer
3 nicht genutzt
4 Zeitstempel gekürzt
5 Sessionnummer
6 TOS-Wert
7 Sender-Port
8 Empfänger-Port
Tabelle 19: Beschreibung der aufgezeichneten Daten-Felder
51
6.2 Erweiterungen im RTP-Proxy 6 ENTWICKLUNG
Des Weiteren ist anzumerken, dass die Message-Queue eine Größe von 500 Byte hat und somit
automatisch auch einen Datenpuffer zwischen der Netzwerkkarte und dem langsam schreiben-
den I/O-Scheduler darstellt.
Um Fehler schneller erkennen zu können, wurde eine Ausgabeschnittstelle hinzugefügt. So-
wohl die Sende- aus auch die Empfängerapplikation schreiben Informationen auf die Konsole.
Außerdem generieren die Programme jeweils eine HTML Datei, die im Webfrontend später
angezeigt wird.
52
6.2 Erweiterungen im RTP-Proxy 6 ENTWICKLUNG
Payload zugreifen, aber nicht auf den IP-Header. Protokoll-Header unterhalb von UDP werden
in diesem Beispiel ausschließlich vom Betriebssystemkern (OS kernel) verwaltet.
Ein möglicher Grund für die Verwendung des Sockets SOCK DGRAM ist neben der einfa-
cheren Programmierung, da der Betriebssystemkern viele Aufgaben übernimmt, sicherlich das
Sicherheitskonzept von Linux. Wird ein Socket auf unterer Protokollebene initialisiert, muss
dieser mit root Rechten ausgeführt werden. Dies ist für ein Programm wie den RTP-Proxy, der
angreifbare Sockets direkt zum Internet verwaltet, nicht empfehlenswert.
Der SOCK DGRAM kann, wie beschrieben Datenpakete lediglich bis zum UDP-Header öffnen.
Im RTP-Proxy ist zwar eine Möglichkeit implementiert, die über den Funktionsaufruf set-
sockopt den Wert des TOS-Felds überschreibt, dieser Wert kann aber nur beim Starten des
RTP-Proxys übergeben werden und gilt für alle initialisierten Sessions gleichermaßen.
Es galt nun, den Quellcode des RTP-Proxys so zu modifizieren, dass die TOS-Werte der Sen-
destruktur gleich den TOS-Werten der Empfangsstruktur sind. Ein Ansatz war das Ersetzen
des SOCK DGRAM durch einen Socket vom Strukturtyp PF INET, der einen Zugang zum
IPv4-Header ermöglicht hätte. Grundgedanke war das Verschieben des vom PF INET erstellten
Socketzeigers um den Wert des IP-Headers, der dann in einem neuen Socketzeiger gespeichert
werden sollte. Im weiteren Verlauf sollte das Programm dann den geänderten Socketzeiger
benutzen, um auf der Header-Struktur eines SOCK DGRAM zu arbeiten. Die Daten des IP-
Headers sollten vor dem Verschieben des Socketzeigers in einer IPv4 entsprechenden Struktur
gespeichert werden. Damit hätte man sehr elegant Zugriff zu den Werten des IP-Headers er-
langt, und der Ablauf des Programms hätte nur an einer Stelle geändert werden müssen. Leider
war dieser Ansatz nicht realisierbar, da der RTP-Proxy, wie in Kapitel 5.1.4 beschrieben, eine
Session als Sessionpaar aufbaut. Dies scheint mit dem modifizierten Socket vom Typ PF INET
nicht zu funktionieren, denn IP-Header und RTP-Header der einzelnen Sessions werden dabei
willkürlich vertauscht.
Eine weitere Lösungsmöglichkeit für das Auslesen der TOS-Werte im RTP-Proxy war das
Benutzen eines externen Programms, das ansich schon einen Socket vom Typ PF INET be-
nutzt. Netzwerk-Analysatoren benutzen oft Socket-Verbindungen auf unterer Protokollebene
und wären für diese Aufgabe gut geeignet. Ein sogenanntes Sniffer-Programm sollte den TOS-
Wert auslesen und über eine Message-Queue oder eine andere IPC an den RTP-Proxy weiter-
leiten. Zum Auslesen wurde das Programm dietsniff benutzt, das ebenfalls in der Programmier-
53
6.2 Erweiterungen im RTP-Proxy 6 ENTWICKLUNG
sprache C geschrieben ist, und um eine Message-Queue ergänzt. Im RTP-Proxy wurde ebenfalls
eine Message-Queue implementiert, die die vom modifizierten Programm dietsniff aufgezeich-
neten TOS-Werte empfängt und über die bekannte Funktion setsockopt den TOS-Wert der
ausgehenden RTP-Pakete setzt. Nach einigen Tests stellte sich jedoch heraus, dass dieser An-
satz nur dann praktikabel ist, wenn der RTP-Proxy lediglich ein Sessionpaar geöffnet hat. Für
mehrere Sessions ist die IPC über eine Message-Queue zu langsam und zu störempfindlich, so
dass die TOS-Werte im RTP-Proxy zu langsam oder falschen Sessions zugeordnet werden. Für
die vorgesehene Applikation ist dieser Lösungsansatz daher unbrauchbar.
Da der Zeitaufwand für die beschriebenen Lösungsversuche sehr hoch war, wurde nun eine ein-
fache und schnell zu implementierende Lösung gesucht. Gesucht wurde eine Verbindung zwi-
schen dem Sessionaufbau über SIP/SDP und dem RTP-Proxy. Der Gedanke, der diesem Ansatz
zugrunde liegt, ist die Verwendung der SIP-Signalisierung als einer Art Steuerkanal zwischen
dem sendenden UAC gensend.bin, welcher den TOS-Wert setzt, und dem SER. Dies bietet die
Möglichkeit, den TOS-Wert immer in Verbindung mit der aufgebauten SIP-Session dem RTP-
Proxy zu übergeben. Hierfür bot sich die call id im SIP-Verbindungsaufbau an. Diese wird
beim SIP-Aufbau im Sender gensend.bin über einen Zufallswert generiert. Die ursprüngliche
Caller-ID, zum Beispiel 855655123@192.168.0.103, wurde um die folgenden Zeichen ergänzt:
855655123tos5@192.168.0.103. Aus der Tabelle 21 ist zu entnehmen, wie sich der genaue Er-
weiterungssyntax zusammensetzt.
Bezeichnung Struktur
Zufallszahl Zufällige Zahlenfolge
Identifier tos
TOS-Wert 1-3 Felder
Endmarker @
Hostname IP / Hostname
Tabelle 21: Caller-ID Erweiterung
Im RTP-Proxy ist die caller id in der Struktur rtpp session gespeichert. Diese ist in der Da-
tei rtpp session.h definiert. In der Quelldatei main.c wird diese Struktur über den Zeiger sp
angesprochen. sp → f ds[sidx] spricht die jeweilige Speicherstruktur zum Versenden der RTP-
Daten an. sidx ist hierbei der Sessiondeskriptor, der die einzelnen Sessions identifiziert. Über
die Variable sp → calli d wird die Caller-ID der jeweiligen Session ausgelesen und in einem
weiteren Schritt ausgewertet. Der TOS-Wert, der aus der Caller-ID extrahiert wird, kann dann
über den Funktionsaufruf setsockopt gesetzt werden.
54
6.3 Auswertungsapplikation calculate 6 ENTWICKLUNG
Die Änderungen im Quelltext der Sendeapplikation gensend.bin, die für die Übertragung der
modifizierten Caller-ID notwendig sind, sind geringfügig. Bei der Erstellung der Caller-ID wird
nach der generierten Zufallszahl die weitere Syntax aus Tabelle 21 eingefügt.
Die wichtigsten Strukuren und deren Aufgaben sind in Tabelle 22 aufgeführt. Die Datenstru-
kuren sind für die maximale Anzahl von zehn Aufzeichnungs-Sessions mit einer maximalen
Anzahl von 216 Paketen ausgelegt.
Als nächstes werden die Funktionen, die im Programm calculate verwendet werden und deren
Aufgabe vorgestellt. Diese sind in Tabelle 23 dargestellt.
Um einen genaueren Überblick über die Funktionsweise des Programms calculate zu geben,
wurde ein Programmablaufplan erstellt, der die wichtigsten Programmabschnitte verdeutlicht.
55
6.3 Auswertungsapplikation calculate 6 ENTWICKLUNG
Funktionsname Funktionsbeschreibung
shorttime Diese Funktion kürzt die Timestamps um die führenden 7
Stellen und speichert die Werte in Variablen des Typs unsi-
gned long ab.
Rfactor Berechnet den R-Faktor aus den vorgegebenen E-Modell
Parametern und den ermittelten Messwerten.
mosfactor Rechnet den ermittelten R-Faktor in den MOS-Faktor um.
Tabelle 23: calculate Funktionen
Abbildung 19 und 20 geben dabei einen Überblick über den Ablauf des Programms. In der
Abbildung sind deutlich die Ein- und Ausgabedateien zu sehen, die als Schnittstellen zu wei-
teren Programmen der Applikation dienen. Die Variable x (x ∈ N) entspricht der ermittelten
Sessionnummer. Außerdem ist in dem Ablaufplan aufgezeigt, zu welchem Zeitpunkt externe
Programme wie ImageMagick und Gnuplot aufgerufen werden.
56
6.3 Auswertungsapplikation calculate 6 ENTWICKLUNG
Die Abbildung 21 verdeutlicht den Funktionsblock, Session basierte Berechnung, aus Abbil-
dung 19. Der Programmablauf, wie also die Datensätze einer Session ausgelesen in Strukturen
gespeichert und verarbeitet werden, soll daraus ersichtlich werden.
In den Programmablaufplänen wurden Teilblöcke des Programms in Funktionsblöcken des Ab-
laufplans zusammengefasst. Auf Zwischenstufen wie die Berechnung oder die Ermittlung von
Hilfsvariablen wird nicht näher eingegangen.
Da die von calculate verwendeten Funktionen Rfactor und mosfactor dem Quellcode nicht ver-
ständlich entnommen werden können, werden in den folgenden Unterkapiteln 6.3.1 und 6.3.2
die Funktionen anhand der zugrunde liegenden Formeln beschrieben.
57
6.3 Auswertungsapplikation calculate 6 ENTWICKLUNG
58
6.3 Auswertungsapplikation calculate 6 ENTWICKLUNG
Der R-Faktor wurde bereits im Kapitel 4.9.4 vorgestellt. Da die vom ITU-T in der Recommen-
dation G.107 präsentierten Formeln als Berechnungsgrundlage dienen, wird an dieser Stelle
noch einmal auf den Zusammenhang der im Webfrontend auszuwählenden Stellgrößen und de-
ren Gewichtung in den Formeln des E-Modells eingegangen. Basierend auf dem OPINE-Modell
(Overall Performance Index Model), welches im ITU-T Supplement 3 der P-Serie beschrieben
wird, wurde das E-Modell vom ITU-T entwickelt und wird durch im Folgenden beschriebenen
Formeln konkretisiert.
Grundgedanke des Modells ist die Annahme, dass die Übertragungsparameter der zu betrach-
tenden Verbindung ebenso wie die psychologischen Faktoren aufaddiert werden können. Die
59
6.3 Auswertungsapplikation calculate 6 ENTWICKLUNG
R = Ro − Is − Id − Ie − ef f + A
• Is beschreibt alle Störungen, die bei der aktiven Sprachübertragung, beispielsweise bei
einem VoIP-Gespräch, auftreten.
• Id beinhaltet eine Auswertung der Störungen, die sich aus der Verzögerung und der ver-
wendeten Hardware ermitteln lassen.
• Der A Faktor ist ein Kompensations-Faktor, der vom Benutzer für eine Messumgebung
festgelegt werden kann.
Ro = 15 − 1, 5[SLR + N o]
Nc N os N or Nfo
N o = 10log[10 10 + 10 10 + 10 10 + 10 10 ]
N c ist die Summe der Signalleistungen der Schaltungsgeräusche bezogen auf den 0dBr Punkt.
N os ist das equivalente Schaltungsgeräusch am 0dBr-Punkt, welches durch das Raumgeräusch
P s auf der Senderseite verursacht wird.
60
6.3 Auswertungsapplikation calculate 6 ENTWICKLUNG
Das senderseitige Raumgeräusch wird genauso wie das Raumgeräusch der Empfängerseite be-
stimmt und in den zu N os gleichwertigen Schaltungsgeräusch-Faktor N or umgewandelt, der
sich wiederum auf den 0 dBr Punkt bezieht.
P re ist der effektive Raumgeräuschpegel, der durch die Erweiterung von P r durch die Neben-
geräusche des Hörerweges hervorgerufen wird. P r ist das Raumgeräusch auf der Empfängerseite.
(10−LST R
P re = P r + 10log[1 + 10 10 ]
N f o repräsentiert den Hintergrundgeräuschpegel (noise floor) beim Empfänger und ist als
N f o = N f or + RLR definiert. N f or ist fest auf einen Pegel von -64dB zum 0dBr-Punkt
gesetzt.
Simultane Störfaktoren: Is
Is ist der Störfaktor , der die Summe aller Störungen, die mehr oder weniger simultan bei der
Sprachübertragung auftreten, erfasst. Is ist unterteilt in drei weitere spezifizierte Störfaktoren.
Is = Iolr + Ist + Iq, wobei Iolr die Verminderung der Sprachqualtität bei niedrigen OLR
Werten repräsentiert.
Xolr 8 1 Xolr
Iolr = 20[[1 + ( ) ]8 − ]
8 8
Ist spiegelt in dieser Formel die Störungen wieder, die durch nicht optimale Nebengeräusche
verursacht wurden:
SRo = ST M Ro
−T T ELR
ST M R
+e 4 ∗10 10
ST M Ro = −10log[10 10 ]
Dabei ist ST M R das sogenannte sidetone masking rating und T ELR das talker echo loud-
ness rating. Der Störfaktor Iq ist ein Maß für die Störungen und Verzerrungen, welche durch
die Quantisierung hervorgerufen werden.
61
6.3 Auswertungsapplikation calculate 6 ENTWICKLUNG
Ro − 100 46 G
Y = + −
15 8.4 9
46 G
Z= −
30 30
Verzögerungs-Störfaktor: Id
Id repräsentiert alle Störsignale, die eine Verzögerung der Sprache hervorrufen und wird in die
Faktoren Id = Idte + Idle + Idd unterteilt.
Dabei ist Idte eine Abschätzung der Störungen, die durch das Sprachecho des Sprechers (talker
echo) erzeugt werden.
r
Roe − Re Roe − Re2
Idte = [ + + 100 − 1](1 − e−T )
2 4
T
1 + 10 2
T ERV = T ELR − 40log T
+ 6e−0,3∗T
1 + 150
Für Werte von T < 1 ms bleibt das Sprachecho unbeachtet und wird als Wert 0 angenommen.
Die Berechnungsalgorithmen kombinieren außerdem den Einfluß von ST M R mit dem Spra-
checho. Bei Gesprächen mit einem hohen ST M R-Wert bekommt das Sprachecho eine höhere
Bedeutung. T ERV und Idte sind auf einen ST M R-Wert von < 9 dB angeglichen. Trifft der
Fall ein, dass ST M R < 9 dB ist, muss in der Gleichung für T ERV , T ERV durch T ERV s
ersetzt werden, wenn T ERV s = T ERV + Ist 2
ist.
Für den Fall, dass 9 dB≤ ST M R ≤ 20 dB ist, muss in den vorangegangenen Gleichungen die
ursprüngliche Berechnung für T ERV angewendet werden.
√
Ist ST M R > 20dB, muss Idte durch Idtes = Idte2 + Ist2 ersetzt werden.
62
6.3 Auswertungsapplikation calculate 6 ENTWICKLUNG
net:
1 x 1
Idd = 25[(1 + x6 ) 6 − 3(1 + [ ]6 ) 6 + 2
3
Ta
log( 100 )
x=
log(2)
Ausrüstungs-Störfaktor: Ie
Ie ist ein Faktor, der den verwendeten Codec wiederspiegelt. Dieser ist von den für den Co-
dec ermittelten MOS-Test-Ergebnissen und den Netzerfahrungen mit diesem Codec abhängig.
Tabellen, denen Ie in Abhängigkeit vom Paketverlust und Codec entnommen werden konnte,
dienten früher zur Bestimmung des Werts. Ie ist heute der Störfaktor bei einem Paketverlust
von 0%. Bpl wird als packet loss robustness Faktor bezeichnet und gibt die Unempfindlichkeit
des verwendeten Codecs gegenüber Paketverlusten an. Da die Bestimmung der Dienstgüte in
der vorliegenden Diplomarbeit mit dem G.711 (PCM) Codec durchgeführt wird, ist Ie = 0 und
Bpl = 1, wie es im Webfrontend als Default-Wert eingetragen ist. P pl ist der zu erwartende
Paketverlust in Prozent. Der neue Ie-Wert in dieser aufgeschlüsselten Form wird Ie − ef f ge-
nannt (effective equipment impairment factor).
P pl
Ie − ef f = Ie + (95 − Ie) ∗ P pl
BurstR
+ Bpl
BurstR ist der sogenannte Burstquotient (Burst Ratio) und ist folgendermaßen definiert: BurstR
ist der Quotient aus der durchschnittlich beobachteten Burst-Länge beim Empfänger und der
mittlere Länge der Bursts, die für ein Netzwerk bei zufälligem Verlust erwartet werden.
Ist der Paketverlust in einem Netzwerk zufällig, wie in der vorliegenden Diplomarbeit angenom-
men, nimmt BurstR den Wert 1 an. Bei einer Anhäufung von Paketverlusten nimmt BurstR
den Wert > 1 an. Ist der Wert größer 1, ist der Paketverlust Burst abhängig. Eine Absicherung
des Netzwerks gegenüber burstartigem Packet Loss bieten Verfahren wie das Interleaving. Ge-
nauere Informationen zum Ie Faktor finden sich in Appendix I/ITU-T G.113[5].
Vorteils-Faktor: A
A ist ein gegebener Wert, der für verschiedene Gesprächsszenarien jeweils einen Vorteilsfaktor
darstellt. Mobiltelefonieren in einem Gebäude zum Beispiel wird A mit dem Wert 5 gewichtet.
Auch in diesem Fall sollte der Default-Wert 0, der für ein konventionelles Gespräch reserviert
ist, genutzt werden.
Wie bereits mehrfach erwähnt, lässt sich der MOS-Wert aus dem R-Faktor berechnen. Zu Be-
ginn muss eine Fallunterscheidung gemacht werden, da der MOS-Wert aus einem positiven
R-Faktor ermittelt werden muss. Für R-Werte kleiner null wird der MOS-Wert auf 1 gesetzt. Ist
63
6.4 Webfrontend 6 ENTWICKLUNG
der ermittelte R-Faktor größer null, wird zur Berechnung des MOS-Werts die unten stehende
Formel die dem ITU-T G.107 E-Modell entnommen ist, verwendet. Die Variable R ist der mit
der Grundformel des E-Modells R = Ro − Is − Id − Ie − ef f + A ermittelte R-Faktor. Für die
weiteren Berechnungen werden die vom ITU-T vorgegebenen Default-Werte verwendet, die im
Webfrontend (Kap.: 6.4) übernommen wurden und in Tabelle 29 ersichtlich sind.
6.4 Webfrontend
Um eine möglichst einfache Bedienung der Applikation gewährleisten zu können, wurde eine
Webapplikation mit den Programmiersprachen HTML, JavaScript und PHP Version 4 entwi-
ckelt. Der Aufbau dieser Applikation ist recht übersichtlich gehalten. Im Wesentlichen besteht
das Webfrontend aus den in Tabelle 24 vorgestellten Dateien.
Das Zusammenspiel der einzelnen PHP-Dateien wird im Programmablaufplan (Abb.: 22) dar-
gestellt. Um eine gute Übersicht zu gewährleisten, wurden Eingriffe durch den Benutzer mit
gestrichelten Linien markiert, die vom vorhergesehenen Programmablauf abweichen.
Ein wichtiges Hilfsmittel für den Benutzer stellen die Informationsschaltflächen bei Eingabe-
oder Auswahlfeldern dar. Hier wird dem Benutzer jeweils eine kurze Information über die Funk-
tion und die Grenzwerte des einzustellenden Werts angezeigt. Die Informationsschaltflächen
sind in der Programmiersprache JavaScript realisiert worden (Anhang Listing: 20).
64
6.6 Steuer- und Konfigurationsskripte 6 ENTWICKLUNG
Dateiname Funktionsbeschreibung
index.html Ist die Haupseite, welche die Größe und Form des Rahmens
setzt und das Projekt Logo lädt.
generatorsettings.php Ist die Konfigurationsseite für sessionunabhängige Ein-
stellungen. Außerdem können die tethereal-Parameter ein-
gestellt werden. Auf dieser Seite kann eine theoretische
Abschätzung des R-Faktors vorgenommen werden. Die ein-
gestellten Daten fließen dann in die Messung mit ein.
action.php Zeigt die eingestellten Werte von generatorsettings.php an
und prüft diese Werte auf Fehler. Sollte eine falsche Ein-
stellung erkannt werden, erscheint diese rot.
session.php Wird in die Datei action.php eingebunden und ist die Ein-
stellungsmaske für die sessionspezifischen Werte. sessi-
on.php wird genauso oft eingebunden wie in der Datei ge-
neratorsettings.php im Feld Sessions angegeben.
action2.php In action2.php werden die Einstellungen von session.php
geprüft. Außerdem werden an dieser Stelle die Messun-
gen gestartet. Dies geschieht durch das Aufrufen von
Shell-Skripten, welche die Steuerung der Binärprogramme
übernehmen.
config.php Konfigurationsdatei für index.php
index.php Gibt die Messergebnisse auf dem Bildschirm aus. Dabei
wird die Anzahl der Spalten automatisch bestimmt. Über
die Datei config.php muss index.php angegeben werden,
wieviele Zeilen benötigt werden.
stopgen.php Wird der Generator im Last-Modus gestartet, muss er über
ein extra Programm gestoppt werden. Dieses PHP-Skript
ruft das Programm auf, das den Generator unterbricht.
Tabelle 24: Dateien des Webfrontends und deren Funktion
65
6.7 Funktionstest 6 ENTWICKLUNG
6.7 Funktionstest
Schon während der Entwicklung der Applikationen wurden Teilfunktionen getestet. So wur-
den die von gensend.bin und genrcv.bin aufgezeichneten Zeitstempel mit denen einer ethereal-
Aufzeichnung verglichen. Die Übertragung der TOS/DSCP-Werte wurde bei der Erweiterung
des RTP-Proxys eingehend getestet.
Nach der Fertigstellung des Programms calculate wurden Messungen über einen langen Zeit-
raum aufgezeichnet und mit den Ergebnissen aus Messungen mit dem Programm iperf ver-
glichen, um Aussagen über Packet Loss, Jitter und Delay zu erhalten. Zur Generierung von
Package Loss, Jitter und Delay diente in diesem Fall das Programm NetSim, das im Rahmen
des FH3 -Projekts von Stefan Abu Salah entwickelt wurde. Mit dem Programm NetSim können
DSCP-Klassen angelegt werden. Der Netzverkehr einer DSCP-Klasse kann dann mit definier-
tem Package Loss, Jitter und Delay belegt werden, um so künstlich Netzstörungen zu erzeugen.
Vom RTP-Generator aufgezeichnete Messungen wurden auf auffällige Merkmale wie Package
Loss und Sequenzfehler die duch Jitter hervorgerufen werden untersucht. Diese markanten Wer-
te wurden dann mit den Ausgabegrafiken des Webfrontends und einer ethereal-Aufzeichnung
verglichen.
66
6.7 Funktionstest 6 ENTWICKLUNG
67
6.7 Funktionstest 6 ENTWICKLUNG
Shell-Skript Funktionsbeschreibung
config.sh Erfragt vom Benutzer für die Installation notwendige Einstellun-
gen und speichert diese. Außerdem kopiert config.sh das Web-
frontend in das Webserver-Verzeichnis und passt die PHP-Dateien
an. Es ist optional möglich, die C/C++ Applikationen neu zu kom-
pilieren. Siehe auch Abbildung 23.
compile generator.sh Wird von config.sh aufgerufen und kompiliert die Programme
gensend.bin und genrcv.bin neu.
generator.sh Ist das Hauptskript zum Aufrufen des Generators. Es bereitet
das System auf das Starten des Generators durch Löschen al-
ter Datensätze und das Beenden noch laufender Prozesse vor.
Danach startet generator.sh die Programme genreceive.bin und
gensend.bin mit den vom PHP-Skript übergebenen Parametern.
Nach der Aufzeichnungsphase führt das Skript das Programm
calculate aus und kopiert die Ausgabedateien in das Webserver-
Verzeichnis.
steuer.sh Steuert die tethereal Aufrufe.
output.sh Kopiert die Log-Dateien in das Webserver-Verzeichnis.
regulator.sh Überprüft, ob das Programm server einen gültigen Befehl erhalten
hat.
generate-callflow.sh In diesem Skript wird das Programm callflow aufgerufen.
generate-callflow.sh übergibt callflow Filterregeln (filter) und
Aufträge (order), welche in den lokalen Dateien filter und order
gespeichert sind.
callflow.sh Ist das Hauptskript von callflow und steuert das Extrahieren der
benötigten Datensätze aus der tethereal Capture-Datei. Zu diesem
Zweck startet callflow.sh eine Vielzahl von grep, awk und sed
Aufrufen. Ergebnis ist die Ausgabe der Diagramme im Bildfor-
mat .svg und .jpeg.
Konfigurationsdatei Funktionsbeschreibung
.qossip config Beinhaltet systemspezifische Variablen, die von den Shell-
Skripten verwendet werden.
Tabelle 25: Steuer- und Konfigurationskripte
100 parallelen Sessions nur circa 9 MBit/s ( G.711, 89 kbit/s mit Overhead im LAN * 100 Ses-
sions) Netzlast erwartet werden. In der ersten Messung wurde bei einer Aufzeichnungssession
die Anzahl der Generatorsessions erhöht und das Delay gemessen.
68
6.7 Funktionstest 6 ENTWICKLUNG
Im Auswertungsdiagramm ist zu erkennen, dass die Delay Zeiten bei zunehmender Generator-
sessionzahl leicht ansteigen. Erklärt werden kann dies mit der zunehmende Verarbeitungszeit in
der Netzwerkschnittstelle. Für die Bestimmung des R-Faktors ist diese Abweichung jedoch so
gering, dass sie vernachlässigt werden kann. Der Einbruch bei der 5 Sessions lässt sich durch
die Messungenauigkeit erklären, da nur eine Messreihe verwendet wurde.
In einer weiteren Messung wurde die Anzahl der Aufzeichnungssessions erhöht. Die Anzahl
der Generatorsessions ist pro Aufzeichnungssession zehn. Bei gleichem Versuchsaufbau wurde
jeweils die erste Aufzeichnungssession ausgewertet.
Bei steigender Anzahl der Aufzeichnungssessions ist auch hier ein leichter Anstieg der De-
lay Zeit zu erkennen. Die Größenordnung ist aber annähernd gleich wie bei der Messung mit
nur einer Aufzeichnungssession. Die Aufzeichnung der Messdaten hat somit bis 100 Sessions
keinen Einfluss auf die Messergebnisse. Zu beachten ist, dass in den Diagrammen 25 und 26
Messungenauigkeit von 1 ms angenommen werden muss.
69
7 INSTALLATION
7 Installation
7.1 Systemvoraussetzungen
Die Installation setzt ein Debian GNU/Linux System voraus, das auf den stabilen Zweig des
Debian Repositories aufbaut. Das Netzwerk muss eingerichtet sein und als Default-Konsole
sollte die bash-Konsole vorhanden sein.
70
7.2 Debian Zusatzpakete installieren 7 INSTALLATION
Nach der Änderung muss die Paketdatenbank aktualisiert werden. Mit dem Befehl
apt-get update
Auf dem Computer, der später als SER-Server und RTP-Proxy arbeiten soll, müssen ebenfalls
einige Programme nachinstalliert werden. Die folgende Befehlszeile erweitert das System um
die benötigten Programme:
Nach der Installation der Debian-Pakete müssen einige Konfigurationsdateien angepasst wer-
den. Außerdem müssen Voraussetzungen geschaffen werden, damit die programmierten Appli-
kationen eine möglichst homogene Systemumgebung benutzen können.
46
Das X-Window-System ist eine Sammlung von Protokollen, Programmen und Standards zur Ansteuerung grafi-
scher Bildschirme.
47
xfce4 ist ein ressourcenschonender Fenstermanager.
71
7.3 Benutzer einrichten 7 INSTALLATION
adduser qossip
Damit sind die Änderungen der Konfigurationsdatei des Apache Webservers beendet. Der Auf-
ruf des Befehls
dpkg-reconfigure apache
gibt dem Benutzer jetzt die Möglichkeit, Module, die dem Webserver zur Verfügung stehen, zu
aktivieren. Das Modul mod php4 kann über das Konfigurations-GUI sehr leicht eingebunden
werden, ohne dass weitere Konfigurationsdateien editiert werden müssen.
Abschließend wird mit dem Befehl
/etc/init.d/apache restart
der Webserver neu gestartet. Die Änderungen der Konfiguration werden übernommen. Über ein
einfaches PHP-Skript kann nun überprüft werden, ob der Webserver ordnungsgemäß funktio-
niert. Im Editor wird eine Datei mit dem Namen info.php erzeugt, die den Inhalt von Listing
18 hat. Diese Datei wird im Hauptverzeichnis (Document root) des Webservers abgelegt. Das
Hauptverzeichnis des Webservers ist bei dem Apache Webserver in der Version 1.3 per Default
/var/www/.
72
7.5 SER einrichten 7 INSTALLATION
Über die URL http://localhost/info.php48 kann die PHP-Seite aufgerufen werden. Die Funkti-
on phpinfo() gibt Auskunft über PHP und die Funktion phpinfo(INFO MODULES) zeigt dem
Benutzer die geladenen PHP-Module.
loadmodule "/usr/lib/ser/modules/nathelper.so"
Erhält der SER eine SIP-Nachricht mit der Methode INVITE, müssen die Sessioninformatio-
nen, die für den RTP-Verbindungsaufbau notwendig sind, an den RTP-Proxy übermittelt wer-
den. Listing 19 enthält den zu ändernden Teil der SER-Konfigurationsdatei:
48
Beim Zugriff von einem entfernten Computer muss anstatt localhost die IP-Adresse oder der FQDN (Fully Quali-
fied Domain Name) angegeben werden.
73
7.6 RTP-Proxy einrichten 7 INSTALLATION
Der SER muss wie der Apache Webserver nach Abschluss der Konfiguration mit dem Befehl
/etc/init.d/ser restart
ln -s /etc/init.d/rtpproxy /etc/rc2.d/S20rtpproxy
7.7 Konfigurationsskripte
Die Datei mit den gepackten Programmen muss zuerst in das home-Verzeichnis des Benutzers
kopiert werden. Danach müssen die Daten mit dem folgenden Befehl entpackt werden:
./config.sh
Das Shell-Skript erfragt beim Anwender in der ersten Phase die Systemeinstellungen und spei-
chert diese in der Datei .qossip config im home-Verzeichnis des Benutzers. In einer zwei-
ten Phase können die benötigten Programme neu kompiliert werden. Die dritte Phase bietet
zusätzlich noch die Möglichkeit, den RTP-Proxy neu zu kompilieren und diesen über scp (secu-
re copy) in das Zielsystem zu kopieren. Das Vorkompilieren ist aber nur bei der Verwendung von
Computern mit gleicher Prozessorarchitektur möglich. Sollte das Zielsystem eine abweichende
Rechnerarchitektur vorweisen, ist es notwendig, den RTP-Proxy lokal neu zu kompilieren.
Alle PHP-Webseiten werden von dem aufgerufenen Skript auf die Systempfade, die in der Datei
.qossip config gespeichert wurden, angepasst. Außerdem werden die Datei- und Gruppenrechte
der verwendeten Webseiten, Skripte und Programme auf den angegebenen Benutzer angepasst.
Nachdem das Konfigurationsskript erfolgreich beendet wurde, kann im Webbrowser das Web-
frontend über folgende URL aufgerufen werden.
http://localhost/calculate/
74
7.8 Webbrowser Information 8 BEDIENUNG
8 Bedienung
Das Webfrontend wird im Browser über die URL http://localhost/calculate/ aufgerufen. Auf
dem Bildschirm erscheint die Startseite (Abb.: 27) mit der sessionunabhängigen Eingabemaske.
8.1 Eingabemasken
Über die Informationsschaltfelder erhält der Benutzer jeweils eine kurze Information über das
ausgewählte Eingabefeld. Zudem ist eine Vielzahl von Werten vorkonfiguriert, so dass für einen
Funktionstest nur die Sender IP-Adresse und die RTP-Proxy IP-Adresse eingegeben werden
müssen. Da diese Einstellungen in der Regel für eine ganze Messreihe gelten, werden die IP-
Adressen im Browser in einem Cookie gespeichert und werden, solange der Browser geöffnet
bleibt, wieder verwendet.
Das Eingabefeld, Number of Generator Calls, gibt, wie auch im Informationsfeld zu lesen
ist, die Anzahl der Aufzeichnungssessions an. Der Schalter (switch) Load-Flag kann für eine
Langzeit- oder Lastmessung genutzt werden. Wird die Load-Flag Option genutzt, werden keine
Messdaten aufgezeichnet. Um den Generator im Load-Modus zu stoppen, wird ein Zusatzfens-
ter, siehe Abbildung 28, geöffnet. Wird der Button Stop Generator gedrückt, wird der RTP-
Generator unterbrochen. Der Schalter Direct-Mode und das Verändern des Ausgabedateinamen
für tehereal im Eingabefeld von Capture-File konnten leider im Zeitrahmen der Diplomarbeit
nicht verwirklicht werden und müssen auf dem Default-Wert belassen werden.
Im unteren Bereich befindet sich die Eingabemaske für das E-Modell, das zur Berechnung des
R-Faktors und des MOS-Werts benötigt wird. Für nicht konkretisierte Messungen sollten hier
die Default-Werte genutzt werden. Eine theoretische Vorhersage über ein zu erwartendes Mes-
sergebnis ist über das E-Modell möglich. Der Button Calculate berechnet den R-Faktor mit
den für das E-Modell eingegebenen Werten. Die Werte Tr, T, Ta, Delay Configuration und Ppl
dienen hier nur für eine theoretische Berechnung.
75
8.1 Eingabemasken 8 BEDIENUNG
Wird nun der Button Next Step ausgewählt, werden die eingestellten Werte für die darauf-
folgende Messung verwendet. Daraufhin erscheint eine zweite Eingabemaske (Abb.: 29). Im
oberen Bereich sieht der Benutzer die wichtigen Eingaben von der Startseite. Außerdem fin-
det eine Fehlerkontrolle statt. Rot markierte Felder wurden von dem Programm als falsch oder
nicht eingegeben identifiziert und müssen erneut auf der Startseite eingegeben werden. Über
den Button Go Back gelangt der Benutzer wieder zur Startseite.
Im Bereich Advanced Generator Settings werden von dem Benutzer die für jede Session in-
dividuellen Werte erfragt. Informationen zu den Eingabefeldern können wie auf der Startseite
76
8.1 Eingabemasken 8 BEDIENUNG
durch das Auswählen der jeweiligen Informationsschaltfelder entnommen werden. Die Eingabe
wird durch den Button Next Step bestätigt. Eine Wichtige Anmerkung betrifft das Feld Inter-
valtime. Duch einen Verarbeitungsfehler im RTP-Generator ist die tasächliche Intervallzeit um
1 ms erhöht. Dies ist in der Ausgabegrafik ersichtlich. Durch das Abzielen des Wertes 1000 von
gewünschten Intervallzeit wird dies korregiert.
Als nächstes erscheint eine Webseite (Abb.: 30) mit Informationen über die Sessioneinstellun-
77
8.2 Ausgabemasken 8 BEDIENUNG
gen. Im Hintergrund wird die Messung gestartet. Die Messung ist beendet, wenn am unteren
Ende der Webseite, die nach der Messung erweitert wird, der Button Show Results erscheint.
Dies kann abhängig von den Einstellungen mitunter sehr lange dauern. Durch Aufrufen des
Button Show Results wird die Webseite mit der Messauswertung angezeigt.
8.2 Ausgabemasken
Auf der Ausgabe-Webseite (Abb.: 31) sieht der Benutzer zu jeder Messung fünf Ausgabegrafi-
ken. Die erste Grafik ist eine Zusammenfassung der Messsession und der Messergebnisse dieser
Session. Außerdem wird dem Benutzer über das Emoticon-Smilie eine einfache optische Qua-
litätsbeurteilung gegeben. Die Einstufung der Emoticons in Bezug auf den R-Faktor und den
MOS-Wert wird durch das Betätigen des Informationsschalters auf der Ausgabeseite angezeigt.
In der zweiten Grafik wird die Varianz der Sendepaketgenauigkeit in rot angezeigt. Der Mittel-
wert aus den Daten ist grün dargestellt und sollte der eingestellten Intervallzeit entsprechen. Die
dritte Grafik stellt dem Anwender die Empfangsvarianz der Pakete dar, in der der Mittelwert in
grün angezeigt ist. Treten bei einer Messung Sequenzfehler auf, werden diese Pakete in der Far-
be Lila markiert. Gehen bei der Übertragung Pakete verloren, wird die erwartete Position des
Pakets mit einem blauen Kasten der Höhe 1 umrahmt. Die vierte Grafik gibt die Paketlaufzeit
78
8.2 Ausgabemasken 8 BEDIENUNG
round trip time an. In grün ist der Mittelwert dargestellt. Die fünfte Grafik stellt den Jitter dar.
Berechnet wird der Jitter wie in Kapitel 4.7.3 beschrieben. Auch hier ist der Mittelwert in grün
dargestellt.
79
8.2 Ausgabemasken 8 BEDIENUNG
Ergänzend zu den Messwerten ist es möglich, den Verbindungsaufbau von bis zu zehn aufge-
bauten Sessions anzusehen. Über den Link Callflow gelangt man zu dem Sequenz-Diagramm
(Abb.: 32). Über die Links Receiver Output und Sender Output kann überprüft werden, ob alle
gensend.bin und genrcv.bin Sessions ordnungsgemäß auf- und abgebaut wurden.
80
9 MESSUNGEN
9 Messungen
In diesem Kapitel wird anhand einiger exemplarischer Messungen die Funktionsweise der ent-
wickelten Applikation veranschaulicht. Dabei werden Störfaktoren im Netzwerk von dem Pro-
gramm NetSim simuliert. In dem Versuchsaufbau, der in Abbildung 33 dargestellt ist, befinden
sich die Computer in demselben Netzsegment49 . Der Computer, auf dem das Programm Net-
Sim gestartet ist, hat drei Netzwerkkarten. Die Netzwerkschittstellen eth1 und eth2 arbeiten
auf der ISO OSI-Schichtebene 2 im Bridging-Modus50 . Dabei wird eth0 wird zur Steuerung
von NetSim genutzt und ist für die Messung irrelevant. Während auf dem Notebook mit dem
Hostnamen jabba die Messapplikation läuft, stellt der Computer mit dem Hostnamen alert den
SER mit RTP-Proxy. Wie bereits im Kapitel 6.7 beschrieben, ist die Rechenleistung heutiger
Computer mehr als ausreichend und hat daher keinen Einfluss auf die Messergebnisse. Deshalb
wird auf eine genaue Hardwarebeschreibung verzichtet.
In der ersten Messung wurden im Programm NetSim zwei DSCP-Klassen definiert. Die Klasse
mit dem DSCP-Wert 0x0 ist dabei die Default-Klasse, dessen Datentransfer im Verlauf der
Messreihe gestört wurde. 0x3 ist die zweite Klasse und wurde nicht durch NetSim beeinflusst.
49
Netzsegment bedeutet an dieser Stelle, dass die Computer sich in demselben Subnetz befinden.
50
Eine Bridging verbindet in einem Computernetz zwei Segmente auf der Sicherungsschicht im ISO OSI-
Schichtmodell.
81
9 MESSUNGEN
Ziel der Messung war, zu bestimmen, wie stark NetSim die IP-spezifischen Parameter der
DSCP-Klasse 0x0 verschlechtert und ob die gemessenen Werte mit den in NetSim eingestellten
Werten übereinstimmen. Über die priorisierten Datenkanäle in NetSim wurden für beide Klas-
sen VoIP-Verbindungen aufgebaut, und mit Hilfe der Messapplikation wurde die Qualität der
Verbindung gemessen.
Übertragen auf ein reales Netzwerk mit der Möglichkeit für QoS wäre die Default-Klasse 0x0
das Netzwerk ohne Priorisierung. Die Klasse 0x3 wäre im Vergleich zur Default-Klasse bevor-
zugt, da eine quasi-Priorisierung der Klasse 0x3 vorliegt.
Zuerst wurde eine Messung ohne Last und einem Delay von 100 ms auf der Klasse 0x0 durch-
geführt. Da jedes Datenpaket zweimal NetSim durchläuft, ist die eingestellte Verzögerung mit
zwei zu multiplizieren, um einen theoretischen Erwartungswert zu erhalten. Danach wurde die
Verzögerung unter Netzlast gemessen. Zur Lasterzeugung dienten in diesem Fall mehrere flood
ping51 und ein Dateitransfer über scp. Diese Messung wurde dann mit doppelter Delay Zeit für
die Klasse 0x0 wiederholt. Das Ergebnis ist in Abbildung 34 grafisch dargestellt.
Die Verzögerung der Klasse 0x0 ist deutlich zu erkennen. Die Klasse 0x3 hingegen wird weni-
ger beeinflusst. Die gewählten Intervallzeiten decken dabei einen Bereich ab, der von gängigen
Codecs verwendet wird. Der MOS-Wert52 liegt bei der Verzögerung von 530 ms bei 3,9. Dies
entspricht immer noch einer zufriedenstellenden“ Sprachqualität (Anhang Abb.: 37). Die Er-
”
gebnisse aus der Messung für die Klasse 0x3 liegen in allen Messungen bei einem MOS-Wert
von 4,4.
51
Ein flood ping sendet so viele ICMP-Pakete wie möglich zur Empfängerseite und erzeut somit Netzlast.
52
Wird im Folgenden von MOS-Wert gesprochen, so bezieht sich das auf den MOS-LQ-Wert.
82
9 MESSUNGEN
In einer weiteren Messung werden zwei weitere DSCP-Klassen zu den bestehenden hinzu-
gefügt. Die vorgenommene Einstellung der Klassen ist der Tabelle 26 zu entnehmen. Nun wur-
de ein theoretischer Erwartungswert mit dem Berechnungswerkzeug für das E-Modell aus dem
Webfrontend ermittelt. Diese theoretischen Werte können ebenfalls der Tabelle 26 entnommen
werden. Es wurden wie bei der ersten Messung Sessions mit 1000 Paketen in den Intervall-
grenzen von 10 ms bis 30 ms aufgezeichnet. Die Auswertung der Messergebnisse ist in der
Abbildung 35 dargestellt. Zu erkennen ist, dass der theoretisch ermittelte Wert mit der Messung
beinahe übereinstimmt.
In der folgenden Messung wird das Verhältnis von MOS-Wert und Packet Loss verdeutlicht. Es
wurden zwei DSCP-Klassen angelegt mit identischen Parametern. In der Klasse 0x3 wurde im
Verlauf der Messung der Packet Loss, den das Programm NetSim erzeugt, skaliert. Das Resultat
ist in Abbildung 36 dargestellt und zeigt deutlich das Verhältnis von MOS-Wert zum Packet
Loss. Schon ein Packet Loss von 1% führt zu einem MOS-Wert, der mit nicht empfohlen“
”
bewertet wurde.
83
10 KRITISCHE BETRACHTUNG
10 Kritische Betrachtung
Aufgrund der Tatsache, dass die zu entwickelnden Applikationen Teil eines Forschungsprojekts
sind, konnte zu Beginn das Aufgabenfeld nicht genau abgesteckt werden. Erst im Verlauf der
Entwicklung konnten die Ziele konkretisiert und zeitlich abgeschätzt werden. Daraus ergeben
sich einige Kritikpunkte.
Zu Beginn der Planungsphase stand die Idee im Vordergrund, existierende freie VoIP-Mess-
programme zusammenzufassen und aus einer Vielzahl von Messungen deren Dienstgüte zu
bestimmen. Da es kaum geeignete Tools gibt, die lediglich hätten konfiguriert werden müssen,
änderte sich das Grundkonzept hin zur Entwicklung einer eigenständigen Applikation. Da die
Entwicklung und Programmierung sehr viel zeitaufwendiger ist, konnte auf Aspekte der prak-
tischen Analyse von Audiodaten leider nicht näher eingegangen werden. Die zeitgleiche Ent-
wicklung des RTP-Generators hatte zwar einerseits den Vorteil, dass Synergien bei der Ent-
wicklung an den Programmen des RTP-Generators genutzt werden konnten, andererseits aber
den Nachteil, dass funktionsfähige Generatorversionen erst in einem fortgeschrittenen Stadium
der Entwicklungsphase zur Verfügung standen.
Da sehr viele unterschiedliche Applikationen angepasst werden mussten, konnte keine einheit-
liche Programmiersprache verwendet werden. Aus diesem Grund mussten viele Schnittstellen
auf Kosten der Übersichtlichkeit geschaffen werden. Diese dienten einzig dem Datenaustausch
zwischen den Programmen. Weiter konnten nur exemplarische Messungen durchgeführt wer-
den, da die für die Messungen vorgesehene MPLS-Verbindung, welche über QoS-Merkmale
verfügt, zum Zeitpunkt der Fertigstellung der vorliegenden Diplomarbeit noch nicht zufrieden-
stellend funktioniert.
84
11 FAZIT
11 Fazit
Die entwickelten Applikationen bieten die Möglichkeit, die Dienstgüte einer oder mehrerer par-
alleler VoIP-Verbindungen anhand der RTP-Datenströme zu bestimmen. Theoretischer Anker
für die Dienstgütebestimmung (QoS) bildet in der vorliegenden Diplomarbeit das E-Modell,
und die vom RTP-Generator aufgezeichneten Messwerte bilden die Berechnungsgrundlage.
Für Messungen, die quantitativen Charakter haben, ist das Programm in der jetzigen Version
sehr gut geeignet. Die Applikationen arbeiten zuverlässig innerhalb der getesteten Grenzen.
Bedienung und Ausgaben sind übersichtlich und gut verständlich. Qualitative Messwerte sollten
allerdings erst nach einigen Referenzmessungen mit geeichten Messgeräten wie beispielsweise
Data Network Analyzer DA3400 von der Firma JDSU (Lit.: (23)) vorgenommen werden.
Die Erweiterung des RTP-Generators um die Möglichkeit, Audiodateien zu übertragen, um Au-
dio-Messungen in die Dienstgütebestimmung einfließen zu lassen, und die Entwicklung einer
erweiterten Steuereinheit zwischen RTP-Generator und RTP-Proxy wäre ein wünschenswerter
Ausblick in die Zukunft des Projekts.
Die in der vorliegenden Diplomarbeit erstellten Programme, Skripte und Konfigurationsdatei-
en wurden nur auszugsweise oder gar nicht dargestellt. Da circa 16 KByte Shell-Skripte, 78
KByte HTTP-,PHP- und JavaScript-Code, 110 KByte C/C++-Code und 40 KByte teilweise
veränderte Konfigurationsdateien erstellt wurden, wird auf eine Ausgabe im Anhang verzich-
tet. Der vollständige Quellcode befindet sich auf der CD, die der vorliegenden Diplomarbeit
beigelegt ist.
85
12 ABKÜRZUNGSVERZEICHNIS
12 Abkürzungsverzeichnis
Abkürzung Beschreibung
ACK Acknowledge
ACR Absolute Category Rating
ADPCM Adaptive Differential Pulse Code Modulation
ADSL Asymmetric Digital Subscriber Line
ANSI American National Standards Institute
API Application Programming Interface
ATM Asynchronous Transfer Mode
BMBF Bundesministerium für Bildung und Forschung
CCR Comparison Category Rating
CMOS CCR MOS
CNAME Canonical Name
CoS Class of Service
CPU Central Processing Unit
CSV Comma Separated Values
dB Dezibel
DCF77 D für Deutschland, C für Langwellensender, F wegen der Nähe zu
Frankfurt und 77 entsprechend der Trägerfrequenz
DCR Degradation Category Rating
DiffServ Differentiated Services
DMOS DCR MOS
DNS Domain Name Server
DS DiffServ
DSCP Differentiated Services Code Point
DSP Digital Signal Processor
ENUM Telephone Number Mapping
ETSI European Telecommunications Standardization Institute
FTP File Transfer Protocol
FQDN Fully Qualified Domain Name
GNU GNU is Not Unix
GPL GNU General Public License
GPS Global Positioning System
GUI Graphical User Interface
HA Home Agent
HEX Hexadezimalsystem
HTML Hypertext Markup Language
HTTP Hypertext Transfer Protocol
Hz Hertz
86
12 ABKÜRZUNGSVERZEICHNIS
Abkürzung Beschreibung
I/O Input/ Output
IANA Internet Assigned Numbers Authority
IAX Inter-Asterisk Exchange
ICMP Internet Control Message Protocol
ID Identification
IEEE Institute of Electrical and Electronics Engineers
IETF Internet Engineering Task Force
IHL Internet Header Length
IntServ Integrated Services
IP Internet Protocol RFC 791
IPC Inter Process Communication
IPv4 Internet Protocol Version 4
IPv6 Internet Protocol Version 6
IPX Internetwork Packet Exchange
IS-IS Intermediate System to Intermediate System Protocol
ISDN Integrated Services Digital Network
ISO International Organization for Standardization
ISP Internet Service Provider
ITU International Telecommunication Union
ITU-T International Telecommunication Union, Abteilung Telekommunika-
tion
JRE Java Runtime Environment
KDE K Desktop Environment
MAC Media Access Control
MBZ Must Be Zero
MIPS Million Instructions Per Second
MOS Mean Opinion Score
MOS-CQ MOS Conversation Qualtity
MOS-LQ MOS Listening Quality
MPLS Multiprotocol Label Switching
ms Millisekunde
NAT Network Address Translation
NSP Network Service Provider
NTP Network Time Protocol
OPINE Overall Performance Index Model for Network Evaluation
OS Operating System
OSI Open Systems Interconnection Reference
OSPF Open Shortest Path First
87
12 ABKÜRZUNGSVERZEICHNIS
Abkürzung Beschreibung
OSR Open Speech Repository
PAR Positive Acknowledgment with Re-transmission
PAT Port Address Translation
PBX Private Branch Exchange
PCM Puls Code Modulation
PCMA PCM A-Law
PCMU PCM U-LAW
PHB Per Hop Behaviours
PSQM Perceptual Speech Quality Measure
PSTN Public Switched Telephone Network
QoS Quality of Service
QoSSIP Projektname: Quality of Service Session Initiation Protocol
QT Firma Trolltech (früher Quasar Technologies)
R-CQ R-Faktor-Conversational Quality
RFC Requests for Comments
RR Receiver Reports
RSVP Resource Reservation Protocol
RTCP Realtime Transport Control Protocol
RTP Realtime Transport Protocol
RTSP Realtime Transport Streaming Protocol
SDES Source Description
SDP Session Description Protocol
SER SIP Express Router
SIP Session Initiation Protocol
SLA Service Level Agreement
SNMP Simple Network Management Protocol
SPX Sequence Packet Exchange
SR Sender Reports
SSH Secure Shell
SYN Synchronize
TCP Transmission Control Protocol
TDF Télédiffusion De France
TOS Type of Service
TSC Time Stamp Counter
TTC Telecommunication Technology Committee
TTL Time To Live
UA User Agent
UAC User Agent Client
88
13 RFC-VERZEICHNIS UND SOFTWARE-INTERNETSEITEN
Abkürzung Beschreibung
UAS User Agent Server
UDP User Datagram Protocol
URI Uniform Resource Identifier
URL Uniform Resource Locator
VLAN Virtual Local Area Network
VoIP Voice over Internet Protocol
VQmon Voice Quality Monitoring
RFC Bezeichnung
RFC 768 User Datagram Protocol
RFC 791 TRANSMISSION CONTROL PROTOCOL
RFC 1042 Standard for the Transmission of IP Datagrams over IEEE 802 Net-
works
RFC 1122 Requirements for Internet Hosts – Communication Layers
RFC 1323 TCP Extensions for High Performance
RFC 1349 Type of Service in the Internet Protocol Suite
RFC 1633 Integrated Services in the Internet Architecture: an Overview
RFC 1889 RTP: A Transport Protocol for Real-Time Applications
RFC 1890 RTP Profile for Audio and Video Conferences with Minimal Control
RFC 2205 Resource ReSerVation Protocol (RSVP)
RFC 2327 SDP: Session Description Protocol
RFC 2460 Internet Protocol, Version 6 (IPv6) Specification
RFC 2474 Definition of the Differentiated Services Field (DS Field) in the IPv4
and IPv6 Headers
RFC 2663 IP Network Address Translator (NAT) Terminology and Considerations
RFC 2806 URLs for Telephone Calls
RFC 2848 The PINT Service Protocol: Extensions to SIP and SDP for IP Access
to Telephone Call Services
RFC 2976 The SIP INFO Method
RFC 3261 SIP: Session Initiation Protocol
RFC 3262 Reliability of Provisional Responses in the Session Initiation Protocol
(SIP)
RFC 3311 The Session Initiation Protocol (SIP) UPDATE Method
RFC 3428 Session Initiation Protocol (SIP) Extension for Instant Messaging
RFC 3550 RTP: A Transport Protocol for Real-Time Applications
RFC 3515 The Session Initiation Protocol (SIP) Refer Method
RFC 3761 The E.164 to Uniform Resource Identifiers (URI) Dynamic Delegation
Discovery System (DDDS) Application (ENUM)
RFC 3775 Mobility Support in IPv6
Tabelle 27: In der Diplomarbeit verwendete Request for Comments
89
13 RFC-VERZEICHNIS UND SOFTWARE-INTERNETSEITEN
Software URL
Debian GNU/Li- http://www.debian.org/
nux
Asterisk PBX http://www.asterisk.org/
SIP Express Rou- http://www.iptel.org/ser
ter (SER)
RTP-Proxy http://www.portaone.com/resources/downloads
SIPSet API http://www.vovida.org
kphone http://sourceforge.net/projects/kphone
linphone http://www.linphone.org/
Twinkle http://www.twinklephone.com/
Ekiga http://www.gnomemeeting.org/
Gnuplot http://www.gnuplot.info/
Gnuplot i http://ndevilla.free.fr/gnuplot/
Tethereal http://www.ethereal.com
Ethereal http://www.ethereal.com
Callflow http://callflow.sourceforge.net/
Apache http://www.apache.de/
PHP http://www.php.net/downloads.php
ImageMAgick http://imagemagick.sourceforge.net/
Dietsniff http://www.ularx.de/dietsniff/
Iperf http://www.noc.ucf.edu/Tools/Iperf/default.htm
SIPP http://sipp.sourceforge.net/
RAT http://www.vrvs.org/
Live555 http://www.live555.com/
Gawk http://www.gnu.org/software/gawk/gawk.html
Sed http://sed.sourceforge.net/
Vim http://www.vim.org/
Bash http://www.gnu.org/software/bash/
Grep http://www.gnu.org/software/grep/
Xfce4 http://www.xfce.org/
Firefox http://www.firefox-browser.de/
x.org http://www.x.org/
Icon URL
Pinguin http://gallery.osdn.org.ua/photos/kleinhoern-de/headset.jpg
Emoticons http://commons.wikimedia.org/wiki/Category:Smilies
Tabelle 28: Internetseiten der verwendeten Software
90
LITERATUR LITERATUR
Literatur
[1] Adrian E. Conway, Yali Zhu: Analyzing Voice-over-IP Subjective Quality as a Functi-
”
on of Network QoS: A Simulation-Based Methodology and Tool“, Computer Science De-
partment, Worcester Polytechnic Institute, 100 Institute Road and Verizon Laboratories, 40
Sylvan Road, Waltham, MA 02451, USA
[2] Badach, Anatol: Voice over IP Die Technik“, Carl Hanser Verlag, 2005, 3-446-40304-3
”
[3] Gräfe, Martin: C und Linux“, Hanser, 2005, ISB N 3-446-22973-6
”
[4] Domenico Papaleo und Stefano Salsano: ”The Linux Traffic Generator”, INFOCOM De-
partment Report, 1999, University of Rome La Sapienza“
”
[5] Hein, Mathias: TCP/IP“, mitp-Verlag, 2003, ISBN 3-8266-4094-2
”
[7] ITU-T Study Group 12: ITU-T Recommendation G.107 The E-model, a computational
”
model for use in transmission planning“, 2005, ITU-T
[7] ITU-T Study Group 12: ITU-T Recommendation Dokument TD43“, 2005, ITU-T
”
[8] Jarmo Prokkola, Mikko Hanski: QoS Measurement Methods and Tools“ 2003, VTT
”
TECHNICAL RESEARCH CENTRE
[11] Cisco, QoS for Voice over IP Solutions Guide“, 2003, Cisco Systems, Inc
”
[12] Trick, U., Weber, F.: SIP, TCP/IP und Telekommunikationsnetze“, Oldenburg-Verlag,
”
2005, 3-486-57796-4
[13] Rubini, Alessandro: Linux Device Drivers“, O‘Reilly & Associates, INC, 1998, 1-56592-
”
292-1
[16] Rupp, S., Siegmund, G. and Lautenschlager, W.: SIP - Multimediale Dienste im Internet”,
”
dpunkt-Verlag, 2002, 3-89864-167-8
[16] Telchemy Inc., Voice quality measurement: Understanding VoIP“,Alan Clark, Juni 2006
”
[17] http://www.zotteljedi.de/doc/socket-buch/socket-buch.pdf, Fe-
lix Opatz, Stand Juni 2006
91
LITERATUR LITERATUR
[18] http://www.fh-wedel.de/∼si/seminare/ws01/Ausarbeitung/6.
linuxrt/LinuxRT0.htm, Echtzeit für Linux, Stand Juni 2006
[19] http://www.linux.com/guides/nag2/x-087-2-firewall.tos.
manipulation.shtml, TOS Bit Manipulation, Stand Juni 2006
[21] http://www.voip-info.org/wiki/index.php?page=How+to+debug+
and+troubleshoot+VoIP, Debug and Troubleshoot VOIP, Stand Juni 2006
[24] http://www.voip-wiki.de/tiki-index.php?page=Sip+Response+
Code, SIP Response Code, Stand Juni 2006
92
14 ANHANG
14 Anhang
93
E-M odell K onfigurations-Referenz
Sender Seite Empfänger Seite
OL R Dr - Faktor
Ds - Faktor
SL R s R L SR
0 dB r Punkt
Codieren / Codieren /
Quantisierungs- Dekodieren Dekodieren
V erzerrung QDU
94
Übertragungsnetzwerk
Quantisierungs-
V erzerrung QDU
Raum-Hintergrundgeräusche
Pr
Raum-Hintergrundgeräusche Ps Rückkopplungsfaktoren
STM R , L STR und TEL R
gensend.bin RTP-Proxy
round trip time Tr genrecv.bin
M ittlere „Einweg“ V erzögerung T, A bsolute V erzögerung Ta
ANHANG
95
Ausrüstungs-Beeinträchtigungs-Faktor Equipment impairment factor Ie 0 0 bis 40
Robustheit bei Paketverlust Packet-loss Robustness Factor Bpl 1 1 bis 40 *3
Wahrscheinlichkeit von Paketverlust Random Packet-loss Probability Ppl 0 0 bis 20 *3
Schaltungsgeräusche Circuit noise referred to 0 dBr-point Nc dBm0p -70 -80 bis -40
Empfängerseitiger Geräuschpegel Noise floor at the receive Side Nfor dBmp -64 *3
Senderseitiges Raum Hingergrundger. Room noise at the send side Ps dB(A) 35 35 bis 85
Empfängerseitiges Raum Hintergrundger. Room noise at the receive side Pr dB(A) 35 35 bis 85
Erwartungswert-Faktor Advantage factor A 0 0 to 20
*1 Absolut-Werte zwischen dem Empfänger und dem 0 dB Punkt *1 Total values between microphone or receiver and 0 dBr-point
*2 Feste Relation: LSTR = STMR + D *2 Fixed relation: LSTR = STMR + D
*3 wird z.Z. noch untersucht *3 Currently under study
14
96
14 ANHANG
97
14 ANHANG
61 switch ( option )
62 {
63
64 case ’ i ’ :
65 s t r c a t ( buffer , ” ” );
66 s t r c a t ( buffer , argv [ i ] ) ;
67 s t r c a t ( buffer , ” ” );
68 s t r c a t ( buffer , argv [ i + 1 ] ) ;
69 s t r c a t ( buffer , ” ” );
70 i = i +2;
71 break ;
72 case ’ a ’ :
73 s t r c a t ( buffer , ” ” );
74 s t r c a t ( buffer , argv [ i ] ) ;
75 s t r c a t ( buffer , ” ” );
76 s t r c a t ( buffer , argv [ i + 1 ] ) ;
77 s t r c a t ( buffer , ” ” );
78 i = i +2;
79 break ;
80 c a s e ’w ’ :
81 s t r c a t ( buffer , ” ” );
82 s t r c a t ( buffer , argv [ i ] ) ;
83 s t r c a t ( buffer , ” ” );
84 s t r c a t ( buffer , argv [ i + 1 ] ) ;
85 s t r c a t ( buffer , ” ” );
86 i = i +2;
87 break ;
88
89 case ’k ’ :
90 s t r c a t ( buffer , ” ” ) ;
91 s t r c a t ( buffer , argv [ i ] ) ;
92 s t r c a t ( buffer , ” ” ) ;
93 i = i +1;
94 break ;
95
96 case ’ ? ’ :
97 break ;
98 }
99
100 / / fgets ( buffer ,255 , stdin );
101 n = w r i t e ( sockfd , buffer , s t r l e n ( b u f f e r ) ) ;
102 i f ( n < 0)
103 e r r o r ( ”ERROR w r i t i n g t o s o c k e t ” ) ;
104 bzero ( buffer , 256);
105 n = read ( sockfd , buffer , 255);
106 i f ( n < 0)
107 e r r o r ( ”ERROR r e a d i n g from s o c k e t ” ) ;
108 p r i n t f ( ”%s \n ” , b u f f e r ) ;
109 close ( sockfd ) ;
110 return 0;
111 }
98
14 ANHANG
99
14 ANHANG
Funktionsmessungen
Variierende Generatorsessions
Packetsize: 160
Number of Packets: 1000
Intervaltime: 20000
Messungen: 5
Packet Loss: 0
Sessions 1
Sender Avarage Empfänger Average round trip time
1 21 21,04 0,74
2 21 21,05 0,59
3 21 21,02 0,47
4 21 21,02 0,53
5 21 21,04 0,87
SUM/5 21 21,03 0,64
Sessions 3
Sender Avarage Empfänger Average round trip time
1 21 21,03 5,93
2 21 21,99 2,02
3 21 21 0,8
4 21 21 2,05
5 21 21,01 0,74
SUM/5 21 21,21 2,31
Sessions 5
Sender Avarage Empfänger Average round trip time
1 21 21 0,75
2 21 21 1,85
3 21 21,03 1,37
4 21 21 1,47
5 21 21 3,92
SUM/5 21 21,01 1,87
Sessions 10
Sender Avarage Empfänger Average round trip time
1 21 21 1,74
2 21 21 1,7
3 21 21 3,2
4 21 21 1,76
5 21 21 1,66
SUM/5 21 21 2,01
100
14 ANHANG
Sessions 20
Sender Avarage Empfänger Average round trip time
1 21 21 4,5
2 21 21 4,51
3 21 21 2,09
4 21 21 5,03
5 21 21 5,03
SUM/5 21 21 4,23
Sessions 50
Sender Avarage Empfänger Average round trip time
1 21 21 6,18
2 21 21 5,13
3 21 21,12 7,21
4 21 21,7 7,33
5 21 21,14 7,23
SUM/5 21 21,19 6,62
Sessions 100
Sender Avarage Empfänger Average round trip time
1 21 22,5 9,37
2 21 21,76 9,81
3 21 21,77 9,31
4 21 21,33 9,44
5 21 22 9,77
SUM/5 21 21,87 9,54
Auswertung:
Sessions 1 3 5
Sender Avarage 21 21 21
Empfänger Average 21,03 21,21 21,01
round trip time 0,64 2,31 1,87
Jitter 0,07 0,18 0,14
Auswertung: 20 50 100
Sessions 21 21 21
Sender Avarage 21 21,19 21,87
Empfänger Average 4,23 6,26 9,45
round trip time 0,34 0,39 0,59
Jitter
101
14 ANHANG
Variierende Aufzeichnungssessions
Packetsize: 160
Number of Packets: 1000
Intervaltime: 20000
Messungen: 5
Packet Loss: 0
Sessions 1
Sender Avarage Empfänger Average round trip time
1 21 21,04 0,74
2 21 21,05 0,59
3 21 21,02 0,47
4 21 21,02 0,53
5 21 21,04 0,87
SUM/5 21 21,03 0,64
Sessions 3
Sender Avarage Empfänger Average round trip time
1 21 21 1,22
2 21 21 0,81
3 21 21 1,18
4 21 21 0,42
5 21 21 0,64
SUM/5 21 21 0,85
Sessions 5
Sender Avarage Empfänger Average round trip time
1 21 21 2,75
2 21 21 3,4
3 21 21 2,25
4 21 21 3,21
5 21 21 0,98
SUM/5 21 21 2,52
Sessions 9
Sender Avarage Empfänger Average round trip time
1 21 21 3,21
2 21 21 1,59
3 21 21 0,95
4 21 21,17 3,3
5 21 21 3,37
SUM/5 21 21,03 2,48
Auswertung:
Sessions 1 3 5
Sender Avarage 21 21 21
Empfänger Average 21,03 21 21
round trip time 0,64 0,85 2,52
Jitter 0,07 0,1 0,23
102
Messungen
Begriffserklärungen: Generator Host SER HOST
SA = Sender Average [ms] Jabba <---- level one ---- CentreCOM ----> ALERT
RA = Receiver Average [ms] 2X 100 MBit Switch
R = R-Faktor
MOS = Mean Opinion Score
RTT = Round Trip Time [ms]
Pl = Package Loss
DSCP = Differentiated Services Code Point
P = Packet
0x = Hexadezimal
I = Intervaltime [ms]
J = Jitter [ms]
E = Berechneter Erwartungswert
103
Einstellungen:
Befehl: netsim -s eth1 -d eth2 -I 2000 -L 0 -J 1 -D 100 -I 2000 --C1 0x3 --L1 0 --D1 1
Befehl: netsim -s eth1 -d eth2 -I 2000 -L 0 -J 1 -D 250 -I 2000 --C1 0x3 --L1 0 --D1 0 -J1 1
Messungen mit Last und doppelter RTT:
Netzlast 2x ping -f 1xscp
DSCP1 DSCP2 P I R1 R2 MOS1 MOS2 RTT1 RTT2 PL1 PL2
104
0x0 0x3 1000 10 77 93 3,9 4,4 527,33 30,69 0 0
1000 15 77 92 3,9 4,4 527,35 25,91 0 0
1000 20 77 93 3,9 4,4 519,34 21,45 0 0
1000 25 77 93 3,9 4,4 518,2 20,15 0 0
1000 30 78 93 3,9 4,4 517,4 19,34 0 0
E 79 93
14
ANHANG
Messung mit Last und 4 DSCP-Klassen:
DSCP 0x0 0x3 0x5 0x7
Interval 2000 2000 2000 2000
Delay 500 0 500 500
Jitter 1 1 10000 10000
Packet Loss 0 0 0 1000
Netzlast 0 0
netsim -s eth1 -d eth2 -I 2000 -L 0 -J 1 -D 250 -I 2000 --C1 0x3 --L1 0 --D1 0 -J1 1
... --C2 '0x5' --L2 0 --D2 500 -J2 10000 --C3 '0x5' --L3 1000 --D3 500 -J3 10000
Netzlast 2x ping -f1x scp
0x0 def
0x3 c1
0x5 c2
105
0x7 c3
P I R1 R2 R3 R4 MOS1 MOS2 MOS3 MOS4 RTT1 RTT2 RTT3 RTT4
1000 10 54 66 31 0 2,8 3,4 1,7 1 548,54 44,5 1045,3 1027,9
1000 15 76 93 53 0 3,9 4,4 2,8 1 536,84 31,08 1032,81 1007,74
1000 20 77 93 53 0 3,9 4,4 2,8 1 523,8 24,58 1027,64 1004,35
1000 25 77 93 54 0 3,9 4,4 2,8 1 525,52 22,52 1026,24 1008,92
1000 30 77 93 54 0 3,9 4,4 2,8 1 522,67 18,53 1027,01 1012,78
E 79 93 54 0
106
1000 1,00 93 38 4,4 2 10,46 6,8 0 14 0,65 0,43
1000 2,00 93 19 4,4 1,2 5,57 11,19 0 34 0,36 0,72
1000 3,00 93 11 4,4 1,1 11,06 12,1 0 64 0,35 0,45
1000 4,00 93 8 4,4 1 5,57 10 0 86 0,35 0,68
1000 5,00 93 8 4,4 1 5,46 9,67 0 86 0,34 0,66
14
ANHANG