Diplom arbeit lotfi_faik_2005

  • 948 views
Uploaded on

Voice over IP - Accounting - SIP - RADIUS

Voice over IP - Accounting - SIP - RADIUS

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
948
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
2
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Fachhochschule Köln University of Applied Sciences Cologne 07 Fakultät für Informations-, Medien- und Elektrotechnik, Studiengang Elektrotechnik/NT Institut für Nachrichtentechnik Labor für Datennetze DiplomarbeitErweitertes Accounting in VoIP-Netzen auf der Basis von SIP und RADIUS Student: Lotfi Faik Matrikelnummer: 11023333 Abgabedatum: 25.02.2005 Referent: Prof. Dr.-Ing. Andreas Grebe Korreferent : Dr. Andreas Kumpf
  • 2. Hiermit versichere ich, daß ich die Diplomarbeit selbständig angefertigt und keine anderenals die angegebenen und bei Zitaten kenntlich gemachten Quellen und Hilfsmittel benutzthabe. Lotfi Faik
  • 3. Inhaltsverzeichnis i Inhaltsverzeichnis1. Einleitung .......................................................................................................... 1 1.1 Begriffserklärung ............................................................................................................. 2 1.2 Motivation und Zielsetzung ............................................................................................. 3 1.3 Aufbau der Arbeit............................................................................................................. 32. VoIP (IP-Telefonie)........................................................................................... 5 2.1 Grundsätzliche Unterschiede zu PSTN ............................................................................ 5 2.2 VoIP-Varianten ................................................................................................................ 6 2.2.1 PC-zu-PC-Telefonie .................................................................................................. 6 2.2.2 PC-zu-Telefon-Verbindungen................................................................................... 7 2.2.3 Telefon-zu-Telefon-Verbindungen ........................................................................... 8 2.3 Funktionsweise der IP-Telefonie ..................................................................................... 9 2.3.1 Netzaufbau ................................................................................................................ 9 2.3.2 Komponenten .......................................................................................................... 10 2.3.3 Anrufsignalisierung................................................................................................. 12 2.3.4 Medienübertragung ................................................................................................. 13 2.3.5 Transportprotokolle ................................................................................................. 13 2.4 Quality of Service........................................................................................................... 15 2.4.1 Verzögerung (Latency) ........................................................................................... 15 2.4.3 Jitter......................................................................................................................... 18 2.4.4 Echo......................................................................................................................... 19 2.4.5 Paketverluste (Packet Loss) .................................................................................... 20 2.4.6 Sprach-Aktivitäts-Entdeckung (Voice Activity Detection) .................................... 21 2.5 Codecs ............................................................................................................................ 22 2.5.1 Kodierungsverfahren............................................................................................... 24 2.5.2 Sprachdaten-Komprimierung .................................................................................. 26 2.5.3 Standards der Sprachkodierung............................................................................... 27 2.5.4 Qualität der Codecs ................................................................................................. 28 2.6 H.323-Standard .............................................................................................................. 30 2.6.1 Architektur .............................................................................................................. 30 2.6.2 H.323-Protokollsuite ............................................................................................... 31 2.6.2.1 RAS-(Registration Admission Status) Signalisierung ..................................... 31 2.6.2.2 Anruf-Kontroll-Signalisierung (H.225) ........................................................... 35 2.6.2.3 Medien-Kontroll-Signalisierung (H.245)......................................................... 35 2.6.2.4 Anruf-Signalisierung (Q.931) .......................................................................... 35 2.6.2.5 Unterstützung von Datenanwendungen nach T.120 ........................................ 36 2.6.2.6 Struktur von Anruf-SIG-Nachrichten beim H.225.0........................................ 36 2.6.3 H.323-Verbindungsablauf ....................................................................................... 37 2.6.4 Zusammenfassung................................................................................................... 38 2.7 SIP (Session Initiation Protocol) .................................................................................... 39 2.7.1 SIP-Protokollhierarchie........................................................................................... 39 2.7.1 SIP-Architektur ....................................................................................................... 39 2.7.2 Grundlegende Funktionsweise ................................................................................ 42 2.7.2.1 Adressierung..................................................................................................... 42
  • 4. Inhaltsverzeichnis ii 2.7.2.2 Das Auffinden eines Servers ............................................................................ 42 2.7.2.3 SIP-Transaktionen............................................................................................ 43 2.7.2.4 Das Auffinden eines Benutzers ........................................................................ 43 2.7.3 SIP-Message............................................................................................................ 43 2.7.3.1 SIP-Request...................................................................................................... 48 2.7.3.2 SIP-Response ................................................................................................... 49 2.7.4 SIP-Registrierung .................................................................................................... 50 2.7.4 SIP-Verbindungsablauf ........................................................................................... 52 2.8 SIP im Vergleich zu H.323 ............................................................................................ 53 2.8.1 Auf- und Abbau einer Verbindung.......................................................................... 53 2.8.2 Komplexität............................................................................................................. 53 2.8.3 Erweiterbarkeit ........................................................................................................ 54 2.8.4 Skalierbarkeit .......................................................................................................... 543. AAA (Authentication, Authorization, Accounting) und Billing .................... 55 3.1 AAA-Komponenten ....................................................................................................... 57 3.1.1 AAA-Clients............................................................................................................ 57 3.1.2 AAA-Server ............................................................................................................ 57 3.1.3 AAA-Proxies........................................................................................................... 57 3.2 AAA-Architektur ........................................................................................................... 58 3.3 AAA-Protokolle ............................................................................................................. 60 3.3.1 RADIUS .................................................................................................................. 60 3.3.2 TACACS ................................................................................................................. 60 3.3.3 DIAMETER ............................................................................................................ 604. RADIUS .......................................................................................................... 62 4.1 Einführung...................................................................................................................... 62 4.2 Radius-Eigenschaften..................................................................................................... 62 4.3 RADIUS-Spezifikationen............................................................................................... 64 4.3.1 Paketformat ............................................................................................................. 64 4.3.2 Pakettypen ............................................................................................................... 65 4.3.3 Attributformat.......................................................................................................... 66 4.3.4 Proxying .................................................................................................................. 67 4.4 Arbeitsablauf der RADIUS-Authentifizierung .............................................................. 67 4.5 RADIUS-Accounting ..................................................................................................... 69 4.5.1 Wie funktioniert Radius-Accounting? .................................................................... 69 4.5.2 Accounting-Pakettypen ........................................................................................... 69 4.5.3 Arbeitsablauf des RADIUS-Accounting................................................................. 705. Entwicklungsumgebung .................................................................................. 72 5.1 VoIP-Netz....................................................................................................................... 72 5.1 SER (SIP-Express-Router)............................................................................................. 73 5.2.1 Was ist SER?........................................................................................................... 73 5.2.2 Installation............................................................................................................... 74 5.2.3 Konfiguration .......................................................................................................... 75 a) Konfigurationsdatei.................................................................................................. 75 b) Datenbank und Datenbankbibliothek erstellen ........................................................ 77 5.2.4 Anwendung ............................................................................................................. 77 5.2.4.1 SER starten....................................................................................................... 77 5.2.4.2 Benutzer anlegen .............................................................................................. 77 5.2.4.3 Registrierte Benutzer ansehen.......................................................................... 78 5.2.5 SERWEB (Web-Interface von SER)....................................................................... 78
  • 5. Inhaltsverzeichnis iii 5.2.5.1 Installation........................................................................................................ 78 5.2.5.2 Konfiguration ................................................................................................... 78 5.2.5.3 Anwendung ...................................................................................................... 79 5.3 Freeradius ....................................................................................................................... 81 5.3.1 Was ist Freeradius? ................................................................................................. 81 5.3.2 Installation und Grundkonfiguration....................................................................... 81 a) Radiusclient.............................................................................................................. 81 b) Radiusserver............................................................................................................. 82 5.3.4 Radius-Server starten und testen ............................................................................. 84 5.4 SER und Freeradius........................................................................................................ 85 5.5 MySQL-Datenbank ........................................................................................................ 866. Implementierung ............................................................................................. 88 6.1 Erweiterungsanforderungen ........................................................................................... 88 6.2 Mobilität ......................................................................................................................... 89 6.2.1 Nomaden-IP-Adresse .............................................................................................. 89 6.2.1 Anschluss-IP-Adresse ............................................................................................. 91 6.3 Verbindungsdauer .......................................................................................................... 91 6.4 Type of Service .............................................................................................................. 93 6.5 Quality of Service........................................................................................................... 93 6.5.1 Verwendete Codecs................................................................................................. 93 6.5.2 Bandbreite ............................................................................................................... 94 6.6 Übertragenes Volumen................................................................................................... 95 6.7 Instant Messaging........................................................................................................... 96 6.8 Konferenz ....................................................................................................................... 987. Fazit ............................................................................................................... 100Abbildungs- und Tabellenverzeichnis............................................................... 102Literaturverzeichnis........................................................................................... 104Abkürzungenverzeichnis................................................................................... 106Anhang 1: SIP Status Code ............................................................................... 110Anhang 2: Dictionary File................................................................................. 111Anhang 3: RADIUS-Attribut-Typen................................................................. 117Anhang 4: Quell-Code-Änderungen ................................................................. 119
  • 6. 1. Einleitung 11. EinleitungDer in der ganzen Menschengeschichte unvergleichbare Fortschritt der Wissenschaft undTechnik im letzten Jahrhundert ist ohne die explosionsartige Entwicklung derKommunikation nicht vorzustellen.Sichere und zuverlässige Kommunikation ist eines der wichtigsten Bestandteile der heutigenGesellschaft. Dabei handelt es sich sowohl um die verbale Kommunikation als auch um denAustausch von Informationen über Fax oder Internet.Auf das Telefon kann man heutzutage nicht mehr verzichten. Es bietet eine schnelleMöglichkeit, direkt zu einer Person Kontakt aufzunehmen, und durch den Einsatz des mobilenTelefons ist das Wissen des Aufenthaltsorts irrelevant geworden.In den letzten zwanzig Jahren nahmen die technischen Möglichkeiten im Telefonieumfeld insehr kurzen Abständen rasant zu. So bietet z.B. ISDN1 vielfältige technische Möglichkeitenneben dem „Nur-Telefonieren“.Für die Übermittlung von nonverbalen Informationen bietet die Telefonie-Infrastruktur denFax-Service an, der jedoch primär für Texte, und nicht für Bilder geeignet ist.Parallel dazu hat das Internet auch in den vergangenen zwanzig Jahren immer mehr anBedeutung gewonnen, vor allem beim nonverbalen Informationsaustausch.Telefon und Internet sind jedoch zwei voneinander unabhängige Netzinfrastrukturen, diegetrennt gepflegt werden müssen.Seit einigen Jahren bietet IP-Telefonie Sprachübertragung über IP2-basierte Netze, also überdas Internet, mit dem langfristigen Ziel, das separate Telefonnetz einsparen zu können.Zunächst wird die Migration beider Netze nötig, wobei sich Komponenten beider Netze (IP-Netz und PSTN3) gemeinsam nutzen lassen.1 ISDN: Integrated Services Digital Network: Digitale Variante des herkömmlichen Telefonnetzes. ISDN stelltdie Integration vieler einzelner Dienste wie Telefonie, Fax, Telex, typische leitungs- oder paketvermittelteDatendienste etc. in ein einheitliches Mehrdienstenetz dar. Die Vorteile liegen in einer besseren Sprachqualität, einer höheren Datendurchsatzrate und ein schnelleresAnwählen andere Telefonnummern. Die Telekomfirmen bieten in der Regel bei einem ISDN-Anschluss einezweite Leitung sowie drei Rufnummern und weitere Serviceleistungen an.2 IP: Internet Protocol: Die Aufgabe des Internet-Protokolls (IP) besteht darin, Datenpakete von einem Senderüber mehrere Netze hinweg zu einem Empfänger zu transportieren. Die Übertragung ist paketorientiert,verbindungslos und nicht garantiert. IP garantiert weder die Einhaltung einer bestimmten Reihenfolge noch eineAblieferung beim Empfänger. Empfangsquittungen gibt es auf IP-Schicht nicht. Die maximale Länge von IP-Datenpaketen ist auf 65.535 Bytes beschränkt.3 PSTN: Public Switched Telephne Network. Öffentliches Telefonnetz, oft mit digitalen Vermittlungsstellen(Switches).
  • 7. 1. Einleitung 2 Abbildung 1: IP-Netz-PSTN-Migration Legende: PSTN: Public Switched Telephone Network, POTS4: Plain Old Telephone Service, SIP5: Session Initiation Protocol, IP Phone: Internet-Protocol-Telefon. Gateway: Verbindungseinrichtung zur Kopplung von Netwerken unterschiedlichster Art.1.1 BegriffserklärungBevor eine eindeutige Zielsetzung für diese Arbeit formuliert werden kann, sind grobeErklärungen der im gewählten Diplomarbeitstitel vorkommenden Begriffe unerlässlich.Ganz am Anfang ist der Begriff „AAA“ kurz zu erklären, damit andere von ihm abhängigeBegriffe deutlich werden.„AAA“ (Authentication, Authorization, Accounting) bezieht sich auf die AufgabenAuthentication: Authentifikation, Echtheit des Benutzers feststellen,Authorization: Autorisierung, Zugriffsberechtigung zu den gewünschten Diensten/Inhaltenprüfen undAccounting: Kontierung/Leistungserfassung, also die Protokollierung von Art und Umfangder genutzten Leistungen.4 Unter POTS ist die analoge Telefonie zu verstehen, die eine Bandbreite von 3,1 kHz hat, die imFrequenzbereich von 300 Hz bis 3,4 kHz liegt. Dieser Frequenzumfang ist so gewählt, dass dieSprachübertragung verständlich ist und der Sprechende mit seinen Stimmcharakteristiken erkannt werden kann.5 Das SIP-Protokoll ist ein Signalisierungsprotokoll für die IP-Telefonie, das im Rahmen dieser Diplomarbeitnoch tiefer behandelt wird.
  • 8. 1. Einleitung 3„VoIP“ ist die Abkürzung von „Voice over IP“ und wird auch auf Deutsch IP-Telefoniegenannt.„SIP“ ist das „Session Initiation Protocol“: Protokoll zur Verbindungssteuerung für VoIP.„RADIUS“ kürzt „Remote Authentication Dial-In User Service“ ab, und ist das wichtigsteAAA-Protokoll.„Billing“ Unter diesem weit gefassten Begriff versteht man die Abrechnung der IT-Leistungen für die Nutzung unterschiedlicher Netze und Dienste. Das Billing umfasst dieSammlung der Verbindungs- und Übertragungsdaten, die Zuordnung der Daten, das sogenannte Accounting, das Rating mit der Zuordnung der verschiedenen Tarife, dieRechnungsstellung, das Controlling und das Inkasso.Für die Bezahlung von Einkäufen im Web bietet sich das Online-Billing an, von dem esmehrere Bezahlsysteme gibt.1.2 Motivation und ZielsetzungDiese Diplomarbeit ist eine Zusammenarbeit der Fachhochschule Köln mit der Firma TECONSystems AG.Diese entwickelt eigene Produkte und Software-Lösungen im Kundenauftrag, wobei das IT-Accountig einer der Schwerpunkte ist.Im IP-Telefonie-Bereich hat TECON ein Verfahren entwickelt (GEOVIPA), das ursprünglichfür die geographische Verzonung von VoIP-Verbindungen erdacht wurde und während derEntwicklung verbessert und erweitert werden dürfte.Mit neuen und innovativen Abrechnungslösungen für VoIP will TECON für die zukünftigenAnforderungen im internationalen Markt „Akzente setzen“.Da das Billing Ziel aller Prozesse ist, gerade bei Service Providern, die für ihre Leistungenschließlich vergütet werden wollen, beabsichtigt TECON ihnen bei den neuenAbrechnungslösungen genügend Accounting-Daten anzubieten.Dies war der Hintergrund der Unterstützung dieser Diplomarbeit durch die Firma TECON.Ihrerseits wurde das RADIUS-Protokoll als Basis der Entwicklung vorgeschlagen, um imRahmen dieser Arbeit detaillierte Accounting-Daten gewinnen zu können.1.3 Aufbau der ArbeitIm ersten Teil dieser Diplomarbeit wird das nötige theoretische Wissen vorgestellt:Kapitel 2: Voice over IP und seine Standards,Kapitel 3: AAA, seine Architektur und seine Protokolle,
  • 9. 1. Einleitung 4Kapitel 4: Die Funktionalität von RADIUS und deren Attribute, sowie das RADIUS-Accounting und deren Konfigurationsoptionen.Im Zweiten Teil wird die Entwicklungsumgebung vorgestellt, dies erfolgt in dem Kapitel 5.In diesem Kapitel wird die Realisierung im Rahmen der Arbeit zusammengefasst, dabeiwurde eine Open-Source6-RADIUS-Variante (freeradius) installiert und in Betriebgenommen.Einen Open-Source-SIP-Server7, der eine einwandfreie Interoperabilität mit dem Freeradius-Server zeigt, wurde ebenfalls installiert und konfiguriert. Hier wurde der SIP-Express-Routereingesetzt.Im Dritten Teil (Kapitel 6) wurden die eigentlichen Entwicklungen und der Kern dieserDiplomarbeit vorgestellt. Die Arbeit umfasst insgesamt über 700 Zeilen selbst geschriebenenQuellcode.Kapitel 7 fasst die wesentlichen Ergebnisse zusammen und schließt mit einem Ausblick aufweiterführende Arbeiten.6 Der englische Ausdruck Open Source steht für quelloffen, einerseits in dem Sinne, dass der Quelltext einesProgramms frei erhältlich ist, andererseits für offene Quelle, also dass ein Werk frei zur Verfügung steht.7 SIP-Server ist eine Vermittlungsstelle der Teilnehmer im VoIP-Netz
  • 10. 2. VoIP (IP-Telefonie) 52. VoIP (IP8-Telefonie)Unter IP-Telefonie im klassischen Sinn wird die Übertragung von Gesprächen direkt über dasInternet durch die Nutzung des Internet-Protokolls (IP) verstanden. Man verwendet dafürverschiedene Begriffe, wie Internet Telefonie, IP Telefonie, Packet Voice und auch Voiceover IP.Die erste Lösung für die Sprachübertragung über das IP-Daten-Netz führte die israelischeFirma VocalTec im Jahr 1995 vor.2.1 Grundsätzliche Unterschiede zu PSTNIm klassischen Telefonnetz wird die Sprache in Form von unterschiedlich starkenelektrischen Impulsen über eine Leitung von einem Teilnehmer zum anderen übermittelt,dabei wird ein Kanal während der Kommunikation durchgehend durchgeschaltet und nachKommunikationsende wieder für andere Teilnehmer freigegeben.Bei VoIP wird die analoge Sprache in digitale Signale umgewandelt, die zu Paketenzusammengefasst und an den Telefonpartner verschickt werden. Zwischen zwei Paketen istdie Leitung frei für anderweitige Nutzung. Im Vergleich zur Telefonleitung, die für die Dauerdes gesamten Gesprächs belegt ist, können so Kapazitäten gewonnen werden.Außerdem ist grundsätzlich von der Digitalisierung der Sprachsignale eine im Vergleich zuranalogen Telefontechnik Verminderung der Sprachqualitätsverlusten zu erwarten.Doch in der Praxis macht das Telefonieren über das Internet die User noch nicht ganzglücklich, da die Qualität der Audioübertragung und die Fähigkeit des InternetsAudioübertragung zu bieten, noch zu wünschen lässt. Das Problem liegt dabei vor allem inder „veralteten“ Internet-Infrastruktur. Trotzdem ist das Interesse der Industrie an dieser Artder Kommunikation sehr hoch. Organisationen rund um die Erde suchen Lösungen, um dieKosten der immer wachsenden Kommunikation zu reduzieren. Viele Firmen suchen auchLösungen die Daten- und Audioübertragung auf ein Netzwerk zu legen und dadurch Kostenzu sparen. Dies kann erreicht werden, wenn ein paketvermitteltes Netzwerk wie IP verwendetwird, welches Daten und zur gleichen Zeit auch Audiodaten übertragen kann. Auch dieVideo-Kommunikation im IP-Umfeld wird erleichtert.Durch Softwarelösungen lassen sich noch zusätzliche Funktionen sehr einfach realisieren. AnKosten wird auch gespart, da nicht in neue Hardware investiert werden muss. Individuelle8 IP: Internet Protocol, eines der Basisprotokolle des Internet. Es gehört zu den verbindungslosen Protokollen,d.h. zwischen dem Sender und Empfänger der Daten muss keine direkte Verbindung bestehen.
  • 11. 2. VoIP (IP-Telefonie) 6Kundenanforderungen sind ebenso leichter zu realisieren, da durch modulareProgrammierung Arbeitsabläufe und Strukturen leichter verändert werden.2.2 VoIP-VariantenEs lassen sich drei VoIP-Varianten unterscheiden: Computer-zu-Computer, Computer-zu-Telefon und Telefon-zu-Telefon.Als das Thema Internet-Telefonie Ende 1994 aufkam, wurde darunter nur die Möglichkeitverstanden, kostengünstige Telefonate zwischen zwei Computern über das Internet zu führen.VoIP-Gateways ermöglichen seit 1996 Gespräche zwischen Computern und herkömmlichenTelefonen. Sie verbinden das Telefonnetz (PSTN) mit einem IP-Netz und integrierenComputer und Telefone in einem System.2.2.1 PC-zu-PC-TelefonieDie Sprachdaten werden zwischen zwei Computern ausgetauscht, die über das Internet bzw.ein anderes IP-Netz miteinander verbunden sind. Bei dieser Variante müssen beideTeilnehmer online sein, damit ein Gespräch zustande kommen kann. Abbildung 2: PC-zu-PC-VerbindungenAls weitere Voraussetzung müssen beide Computer „sprachfähig“ sein, was gewisseAnforderungen an Hard- und Software stellt. Neben einem Zugang zu einem IP-Netz und dernotwendigen IP-Telefonie-Software wird im Allgemeinen lediglich vorausgesetzt, dass dieComputer über eine Soundkarte, ein Mikrophon und die Möglichkeit zur Sprachausgabeverfügen.Anstelle der Kombination von Mikrophon und Lautsprecher wird sehr gerne ein Headseteingesetzt. Dadurch steigt die Verständlichkeit der Kommunikation, der Benutzer hat mehrKopffreiheit und die Gefahr der Rückkopplung wird geringer.Ein schneller Netzzugang, ein schneller Prozessor (einige Verfahren zur Sprachcodierungbenötigen diese Leistungsfähigkeit zur Echtzeitcodierung9) sowie spezielle DSP10-Karten9 Dabei muss das Signal mit minimaler Verzögerung kodierbar und dekodierbar sein.
  • 12. 2. VoIP (IP-Telefonie) 7tragen ebenfalls zur Verbesserung der Qualität bei. Diese Karten sind speziell für IP-Telefonieentwickelt worden. Es lässt sich ein normales Telefon anschließen, um über das Internet zutelefonieren, und die Karte verfügt über einen DSP-Chip zur Schnellen Codierung undDecodierung der Sprache.2.2.2 PC-zu-Telefon-VerbindungenUm PC-zu-Telefon-Verbindungen oder Telefon-zu-Telefon-Verbindungen mit VoIPrealisieren zu können, sind auf jeden Fall VoIP-Gateways notwendig, da sie dasleitungsvermittelte Telefonnetz mit dem paketorientierten Internet verbinden. Abbildung 3: PC-zu-Telefon-VerbindungenVoIP-Gateways lösen das Problem der Kontaktaufnahme, da sie nur noch die Eingabe derherkömmlichen Telefonnummer des Gesprächspartners erwarten. Ein Gateway verfügt übereine Schnittstelle zum Anschluss an das TCP/IP-Netz sowie eine ISDN-oderAnalogschnittstelle für den Anschluss an das Telefonnetz oder eine Nebenstellenanlage(PBX11).Auf der einen Seite erhält das Gateway das Telefonsignal, digitalisiert dieses, komprimiert es(wenn nötig), teilt es in Paketen auf und überträgt es über das IP-Netz. Beim Empfang vonDaten aus dem IP-Netz führt der Gateway die Aufgaben in umgekehrter Reihenfolge aus.Komprimierte Sprachdaten werden dekomprimiert und dann an das Telefonnetz geleitet.Die Anwendung (Application) eines Gateways verwaltet die Verbindungen und sorgt für dieUmwandlung zwischen Telefonnummer und IP-Adresse.10 DSP: Digital Signal Processor, spezieller Chip, der sinusförmige Signale (z.B. Sprache, Musik) durchmehrfaches Abtasten digitalisiert. Er wird z.B. in Soundkarten eingesetzt. [20]11 PBX: Private Branch Exchange: ist eine Nebenstellenanlage, die via Telefonleitungen das öffentlicheTelefonnetz mit den Endgeräten (Telefone, Faxgeräten) einer Firma oder eines großen Hauses verbindet, fürPrivathaushalte sind solche Lösungen oft überdimensioniert.Mit solchen Anlagen kann man viele Endgeräte gezielt miteinander verschalten und so ein eigenes Telefonnetzaufbauen. Speziell die Möglichkeit, innerhalb der Telefonanlage kostenlos telefonieren zu können, ist gerade fürFirmen sehr interessant.
  • 13. 2. VoIP (IP-Telefonie) 8Weitere Aufgaben, die von der Anwendung übernommen werden können, sind dieOrganisation von Datenbankzugriffen, die Gebührenverwaltung, das Führen vonVerbindungsnachweisen und das Protokollieren von Fehlern.2.2.3 Telefon-zu-Telefon-VerbindungenBei dieser Variante werden die Gespräche zwischen zwei herkömmlichen Telefonen geführt.An den Übergangspunkten zwischen Internet und Telefonnetz arbeiten jeweils Telefon-Gateways. Abbildung 4: Telefon-zu-Telefon-VerbindungenBei Internet-Telefonaten zwischen Telefonen werden die Daten zunächst über dasTelefonnetz an einen VoIP-Gateway in der Nähe des Empfängers übertragen. Die Auswahldes Zielgateways kann nach unterschiedlichen Kriterien erfolgen (Zuverlässigkeit,Geschwindigkeit oder Kosten der Verbindung). Der Zielgateway stellt die Verbindung in dasöffentliche oder private Telefonnetz her und leitet die Daten zum Empfänger weiter.Die deutsche Telekom ermöglichte Ende 1997 in einem Pilotprojekt ausgewählte Kunden dasFühren von Telefonaten über das Internet. Bei diesem Projekt arbeitete die Deutsche Telekommit dem Internet-Telefonie-Pionier VocalTec zusammen. Das Projekt wurde nach einerTestphase wieder eingestellt.Die deutsche ABC Bücherdienst GmbH in Regensburg setzte ein VoIP-Gateway-System desamerikanischen Unternehmens Lucent Technologies ein, um Telefongespräche zwischenStandorten in Deutschland und den USA über das Internet zu leiten. Die Qualität derVerbindungen wird von Seiten des deutschen Unternehmens positiv beurteilt.Wie bei allen Varianten, steht auch bei der Telefon-zu-Telefon-Variante möglicheKosteneinsparungen im Vordergrund. Potentielle Dienstanbieter sind neben den traditionellenTelefongesellschaften Unternehmen wie IDT, Global Exchange oder Delta Three, die als so
  • 14. 2. VoIP (IP-Telefonie) 9genannt Internet Telephony Service Provider (ITSP) VoIP-Dienste anbieten und sich zu denTelefongesellschaften der nächsten Generation entwickeln könnten. Als in Betrachtkommende Kunden für deren Dienste sieht die ITU12 die über 700 MillionenTelefonteilnehmer.Alle drei verschiedenen VoIP-Varianten (PC-zu-PC, PC-zu-Telefon und Telefon-zu-Telefon)können in einem integrierten Kommunikationssystem kombiniert werden. Ein System, in demmehrere Gateways zu einem großen System verbunden sind, wird auch als Virtual UnifiedNetwork bezeichnet.2.3 Funktionsweise der IP-TelefonieDieser Abschnitt erläutert einige Begriffe aus der IP-Telefonie und stellt den Netzaufbau undverschiedene Komponenten vor. Ferner wird erläutert, wie Endpunkte kontaktiert undMediendaten übertragen werden.Grundsätzlich müssen zwei Arten von Datenströmen unterschieden werden: • Signalisierungsdaten dienen zum Verbindungsaufbau, Steuerung von Verbindungseigenschaften und zum Verbindungsabbau. • Mediendaten enthalten die eigentlichen Sprachinformationen.Für beide Datenströme werden separate Verbindungen verwendet.2.3.1 NetzaufbauAbbildung 5 zeigt ein Beispiel für ein IP-Telefonie-Netz mit einem Telefonie-Server,Arbeitsplatz-Rechnern, die über IP-Telefonie-Software verfügen und IP-Telefonen. Übereinen Gateway kann eine Verbindung in das PSTN hergestellt werden.12 ITU: International Telecommunications Union (Sitz in Genf): seit Jahrzehnten bestehende internationaleOrganisation von Herstellern und staatlichen Einrichtungen im Bereich der Telekommunikation, die auchStandards und Normen definieren.
  • 15. 2. VoIP (IP-Telefonie) 10 Abbildung 5: IP-Telefonie-NetzaufbauAnders als bei der herkömmlichen Telefonie kann bei der IP-Telefonie ein Endpunkt direkteine Verbindung zu einem anderen Endpunkt aufbauen. Den Endpunkten ist es freigestellt, obsie den Telefonie-Server nutzen oder nicht. Wenn sie es tun, müssen sie sich dort registrieren.Eine Registrierung enthält unter anderem Informationen über den Endpunkt und dessenBenutzer. Eine der wichtigsten Informationen ist die Adresse für die Anrufsignalisierung.2.3.2 KomponentenEndpunktAn einem Endpunkt kann ein Benutzer ein Telefonat annehmen oder initiieren.Ein Endpunkt für Benutzerinteraktion kann ein IP-Telefon, also ein Telefon mitNetzanschlussund IP-Telefonie-Software, oder ein Rechner mit einer solchen Software sein. Endpunkteverwenden eine Hierarchie von Protokollen zur Anrufsignalisierung, Medienaushandlung undMediendatenerzeugung und -Paketisierung. Über ein GUI (Graphical User Interface) kannBenutzerinteraktion stattfinden.Telefonie-ServerEin Telefonie-Server ist eine zentrale Instanz einer IP-Telefonie-Umgebung. Endpunktekönnen sich bei ihm registrieren und erhalten Dienste von ihm wie z. B. die Lokalisierung
  • 16. 2. VoIP (IP-Telefonie) 11eines Benutzers. Dies ist wichtig, da nicht immer klar ist, an welchem Rechner sich derBenutzer gerade aufhält, da er eine IP-Telefonie-Anwendung auf jedem Rechner verwendenkann. Für die Benutzerlokalisierung befragt der Server eine Datenbank. Bei einerRegistrierung teilt der Benutzer einem Telefonie-Server mit, unter welchen Aliasnamen ererreichbar sein möchte. Ein Benutzer kann über eine Menge von Aliasnamen verfügen, die inder Regel ein Name gefolgt von einer Domäne, z. B. faik@dn.fh-koeln.de, sind. Ein Anruferkann bei einem Telefonie-Server erfragen, wo sich der gewünschte Gesprächspartnerbefindet. Der Server ist in der Lage, einem Aliasnamen eine entsprechende Transportadressezuzuordnen. In einem IP-Telefonnetz können mehrere Telefonie-Server parallel arbeiten.Sollte der gewünschte Benutzer bei einem anderen Server registriert sein, so kann der ersteServer bei dem anderen die Transportadresse des Benutzers erfragen, da er selber keineInformationen über den Benutzer besitzt. Für den Anrufer bleibt dieser Vorgang verborgen.Ein Telefonie-Server kann Anrufe genehmigen oder ablehnen. Die Entscheidung kann vonunterschiedlichen Faktoren abhängig sein. Denkbar sind Faktoren wie: - Wer ist der Benutzer? Hat dieser spezielle Privilegien? - Wie stark ist das Netz ausgelastet? Überschreitet ein weiteres Gespräch die Kapazität des Netzes? - Verursacht das Gespräch Kosten, die nicht entstehen dürfen?GatewayEin Gateway verbindet verschiedene Netze miteinander, wodurch z. B. ein Telefonat voneinem IP-Netz in das PSTN möglich ist. Ein Gateway übersetzt dazu die Anrufsignalisierungdes einen Netzes in die des anderen. Auch die Datenströme werden aufeinander abgebildetund übersetzt. Abbildung 6: Anrufbeispiel von PSTN nach IP
  • 17. 2. VoIP (IP-Telefonie) 12Abbildung 6 zeigt ein Anrufbeispiel von einem Anschluss im PSTN zu einem Rechner mit IP-Telefonie-Software. Betrachtet wird dabei nur die Anrufsignalisierung. Der Anrufer wählt diegewünschte Nummer. Da er von einem normalen Telefon anruft, stehen ihm nur Ziffern zurVerfügung. Die Nummer 218-9999 ist einem Gateway des Betreibers des IP-Netzeszugeordnet. Dort wird festgestellt, dass der Benutzer mit dem Aliasnamen 2800 gewünschtwird. Der Gateway wendet sich an einen Telefonie-Server, der feststellt, dass die Nummer2800 dem Benutzer „bunti“ zugeordnet ist, und dass dieser sich an dem Rechner mit der IP-Adresse 134.102.218.70 befindet. Daraufhin wird die Verbindung hergestellt.2.3.3 AnrufsignalisierungBei der Anrufsignalisierung baut der anrufende Endpunkt eine Verbindung zum angerufenenEndpunkt auf. In erster Linie geht es dabei darum, dass der angerufene Endpunkt weiß, dasseine Gesprächsverbindung aufgebaut werden soll. Er kann dabei zusätzliche Informationenüber den anrufenden Endpunkt erfahren, z. B. den Namen oder die Telefonnummer desAnrufers. In der IP-Telefonie ist der Kanal für die Anrufsignalisierung getrennt von demKanal für die Mediendaten. Abbildung 7: AnrufsignalisierungAbbildung 7 zeigt vereinfacht, wie der Verbindungsaufbau abläuft. Der anrufende Endpunkt(Endpunkt 1) signalisiert dem angerufenen Endpunkt (Endpunkt 2) seinen Verbindungs-Wunsch. Endpunkt 2 signalisiert Endpunkt 1, dass er den Wunsch verstanden hat (Ringing)und jetzt reagiert. Sobald der Benutzer das Gespräch angenommen hat, signalisiert Endpunktan Endpunkt 1, dass die Verbindung zustande gekommen ist (Connect). Nachdem Endpunkt 2
  • 18. 2. VoIP (IP-Telefonie) 13über den Verbindungswunsch Bescheid weiß, handeln die beiden Endpunkte den Codec13 aus,mit dem die Sprachinformationen übertragen werden. Anders als im PSTN können bei der IP-Telefonie verschiedene Kodierungsverfahren verwendet werden.Wenn die Anrufsignalisierungsphase beendet ist, bleibt der Kanal dennoch bestehen, daSteuerinformationen für das Gespräch weiterhin über diesen Kanal ausgetauscht werden.Diese Steuerinformationen können z. B. Übergabe an einen anderen Gesprächspartner oderBeenden des Gespräches sein.2.3.4 MedienübertragungDie Verbindung für die Mediendaten wird nach der Codec-Aushandlung geöffnet und erstbeim Beenden des Gespräches oder bei einer Änderung des Codecs wieder geschlossen.Bei der herkömmlichen Telefonie gibt es nur einen Kanal für die Mediendaten, derleitungsorientiert ist. VoIP ist hingegen - wie vorhin erwähnt - paketorientiert, wobei die zuübertragenen Daten (Pakete) verschiedene Wege nehmen.2.3.5 TransportprotokolleDie Nutzer von TCP/IP-Netzwerken haben grundsätzlich die Wahl zwischen TCP(Transmission Control Protocol, RFC14 793) und UDP (User Datagram Protocol, RFC 768)als Transportprotokoll. Abbildung 8: TCP und UDP im TCP/IP-Protokollstack15Der Unterschied zwischen den Transportprotokollen TCP und UDP liegt darin, dass das TCPein verbindungsorientiertes Protokoll ist. Das heißt, beim TCP-Protokoll wird zwischen zwei13 Codec: Abkürzung für Coder/Decoder oder Compressor/Decompressor [20] (siehe Kapitel 2.5)14 RFC: Die Requests for Comments (kurz RFCs; zu Deutsch etwa „Bitten um Kommentare“) sind eine Reihevon technischen und organisatorischen Dokumenten zum Internet, die am 7. April 1969 begonnen wurde.15 Standard von IEEE zum Aufbau lokaler Netzwerke, IEEE (Institute of Electrical and Electonicss Engineers)ist der weltweit größter professioneller Zusammenschluss von Ingenieuren.
  • 19. 2. VoIP (IP-Telefonie) 14Sockets (Verbindungsendpunkten) eine Verbindung aufrechterhalten, solange dieKommunikation zwischen Client und Server anhält.Beim UDP-Protokoll muss keine schon aufgebaute Verbindung zwischen Client und Serverbestehen, sondern dem so genannten Datagramm (Nutzinformation) wird nur der Endadressatmitgegeben, ob dieser nun erreichbar ist oder nicht.Es ist somit direkt eingeplant, dass das Datagramm seinen Kommunikationspartner gar nichterreicht, falls dieser zurzeit nicht bereit ist, Daten zu empfangen.TCP ist zur Übertragung von Datenströmen gut geeignet und effizient, solange derDatentransport nicht an Zeitgrenzen gekoppelt ist. Eine eigentlich positive Eigenschaft desTCP-Protokolls, nämlich nicht eingetroffene Datenpakete erneut anzufordern, hat einezeitverzögernde Wirkung auf den Datentransport, so dass man zumeist das UDP-Protokoll beiVoIP-Applikationen einsetzt.TCP wird dagegen in den meisten VoIP-Signalisierungsprotokollen für den Anrufaufbauverwendet.Da aber UDP ohne weitere Mittel zur Übertragung von isochronen16 Audio- und Videodatennicht ausreicht, benutzt man z.B. die IETF17-Empfehlungen RTP (Real Time TransferProtocol, RFC 1889) bzw. RTCP (Real Time Control Protocol).RTP und RTCP wurden als Echtzeit-Transportprotokolle entwickelt und dienen dem Ende-zu-Ende-Transport von Echtzeitdaten. Innerhalb des RTP-Headers befindet sich unter anderemein Datenfeld, das einen Zeitstempel (Timestamp) enthält, um die Echtzeitdaten zusynchronisieren.Die im folgenden kommenden Abschnitte 2.7 und 2.8 stellen zwei verschiedene Standards derIP-Telefonie vor: H.323 und SIP. Beide Standards definieren eine Anrufsignalisierung für IP-basierte Netze. Für den Transport der Mediendaten verwenden beide Standards RTP.16 Eine isochrone Übertragung zeichnet sich dadurch aus, dass die vom Sender zu übertragenden Datenpakete ineinem gleichmäßigen Abstand gesendet werden und beim Empfänger in gleichmäßigem Abstand ankommen.Die Verzögerung der zu übertragenden Daten muss in so engen Grenzen liegen, dass dies zu keinemFehlverhalten der Anwendung führt.Isochrone Anwendungen sind z.B. Sprach und Videoübertragungen von Live-Ereignissen.17 IETF ist eine internationale Organisation, die Standards für Internetprotokolle definiert. Die von der IETFfestgeschriebenen Standards werden in so genannten RFC’s veröffentlicht.
  • 20. 2. VoIP (IP-Telefonie) 152.4 Quality of ServiceDen Begriff Quality of Service (QoS) kann man definieren als die Fähigkeit, eine gewisseSicherheit bezüglich der Erfüllung von Dienstanforderungen (z.B.: Verständlichkeit derSprache, kein Echo etc) bieten zu können. Hinsichtlich der Sprachqualität könnte man QoSals eine Anzahl der folgenden Bedingungen für eine ausreichende Verständlichkeit derSprache definieren: Die Bandbreite muss ausreichend sein und dauerhaft zur Verfügung stehen Zeitdingungen wie Verzögerung (Delay) und Verzögerungsschwankung (Jitter) müssen eingehalten werden Geringer Prozentsatz an verloren gegangenen Daten und gute SprachkodiererDiese Bedingungen gelten sowohl für kanalorientierte GSTN-Netze18 als auch für diepaketorientierte IP-Telefonie. Eine QoS sollte immer Ende zu Ende zwischen zweikommunizierenden Partnern zur Verfügung stehen. Das bedeutet, dass QoS auf dem gesamtenWeg durch das Netz von allen Netzelementen unterstützt werden muss. Die paketoreintierteIP-Telefonie hat spezielle Eigenschaften wie lange Verzögerungen, Jitter und Paketverluste.Das Thema QoS ist einerseits durch viele ITU-Empfehlungen, Arbeiten von ETSI TIPHON19(Work Group 5) bzw. in der IETF und durch viele Forschungsprojekte abgedeckt. [18]2.4.1 Verzögerung (Latency)Ein großes Problem bei der Übertragung von Audio- oder Videodaten sind die Verzögerungs-(delay time) oder Wartezeiten des Empfängers während der er auf gesendete Daten wartenmuss.Es gibt zwei arten von Verzögerungen: die Ausbreitungsverzögerung (Propagation-Delay)und die Verarbeitungszögerung (Handling-Delay). Die Ausbreitungs-Verzögerung wird durchdie Lichtgeschwindigkeit in Glasfaser oder kupferbasierte Netzwerken verursacht.Die Verarbeitungsverzögerung, auch Prozess-Verzögerung genannt, umfasst vieleverschiedene Verzögerungsursachen (momentane Paketrate, Komprimierung und Paket-Switching) und wird durch Geräte verursacht, die den Frame durch das Netzwerk18 GSTN: General Switched Telefone Network, Bezeichnung für kanalorientierte Telefonnetze. Diese gliedernsich in das öffentliche Festnetz (PSTN) und das öffentliche Mobilfunknetz, das Public Land Mobile NetworkPLMN.19 TIPHON: Abkürzung für Telecommunications and Internet Protocol Harmonization Over Networks.Projekt des ETSI (European Telecommunications Standards Institute) zur Erarbeitung von Schnittstellen undRahmenvereinbarungen für die Architektur der Zusammenschaltung von leistungsvermittelnden undpaketorientierten öffentlichen Netzen. Dies dient v.a. der Internet-Telefonie auf der Basis der H.323-Protokollfamilie.
  • 21. 2. VoIP (IP-Telefonie) 16weiterleiten.Für die Sprachübertragung im klassischen Telefonnetz wurden maximale Ende-zu-Ende-Laufzeiten definiert, die für den nationalen Bereich 25 ms und für den internationalen Bereich150 ms betragen dürfen.Innerhalb eines normalen TCP/IP-Netzwerks kommt es bei der Datenübertragung zuVerzögerungen von bis zu mehreren 100 ms, die auf der Einteilung der Nutzinformationen ineinzelne Datenpakete sowie auf dem Zusammensetzen einzelner Datenpakete zu einemGanzen basieren.Auch aktive Netzwerkkomponenten, wie z.B. Switches oder Router beeinflussen dieVerzögerungszeiten der zu übertragenden Datenpakete innerhalb eines TCP/IP-Netwerkssehr. Verursachte Netzwerk-Hardware Bemerkungen VerzögerungNetzwerkkarte 0,2 – 1 ms Abhängig vom Netzwerk- karten-Typ (1000 – 10 MBit/s)Router 35 – 200 ms Abhängig vom Router-TypSwitch (Layer 2) 35 – 100 ms Abhängig vom Switch-TypSwitch (Layer 3) 70 – 250 ms Hardware-basierter SwitchSwitch (Layer 3) > 120 ms Software-basierter SwitchFirewalls oder Proxy-Server > 400 ms Tabelle 1: Typische Verzögerungszeiten durch klassische NetzwerkhardwareDagegen übertrug Cisco den Hauptteil des Framing und der Paketformung auf den DSP(siehe Kapitel 2.2.1), um den Router-Overhead möglichst gering zu halten. Der Real TimeTransport-Protokoll-(RTP)Header wird z.B. im DSP auf den Frame gesetzt, anstatt demRouter diese Aufgabe zu überlassen.Kommt es wegen mangelnder Bandbreite innerhalb eines TCP/IP-Netzwerks zu erhöhtenKollisionen20 und somit zu einer erhöhten Anzahl von Datenpaketen, die wiederholt vom20 Grund für Kollisionen ist es, dass bei dem CSMA/CD-Verfahren (Carreir Sense Muliple Access with CollisionDetection) eine sendwillige Station im Netzwerk horcht, ob Datenpakete übertragen werden. Ist dies nicht derFall, so fängt sie an, ihre Daten auf das Netzwerk zu geben. Tut dies gleichzeitig eine andere Station, kommt eszu einer Kollision, die zu einer Verwerfung der zu übertragenen Daten und zu einem Abbruch der Übertragungführt, sowie zu einer weiteren Verzögerung, bis die Stationen erneut versuchen, ihr Daten zu übertragen.
  • 22. 2. VoIP (IP-Telefonie) 17Sender zum Empfänger übertragen werden müssen, so wird die gesammte Verzögerungszeitrasant anwachsen.Die einfachste Art, für ausreichende Bandbreite zu sorgen, ist die Überdimensionierung desNetzes. Sie ist heute kurzfristig durchaus einsetzbar, in der Zukunft bei immer höherwerdenden Zugangsdatenraten und bei der hohen Konkurenzsituation zwischen denBetreibern allerdings teuer.Weiter Grund für die Verzögerung der Datenübertragung ist das Queuing. Wenn Paketewegen Datenstau an einer ausgehenden Schnittstelle in eine Queue (Warteschlange) gesetztwerden, resultiert daraus eine Queuing-Verzögerung. Die Queuing-Verzögerung tritt auf,wenn mehr Pakete ausgesendet werden, als die Schnittstelle in einem bestimmten Zeitraumverarbeiten kann. Dagegen werden Bandbreitenreservierungen und Verkehrspriorisierungeneingesetzt.Um eine Bandbreite reservieren zu können, benötigt man eine Einteilung des Verkehrs inverschiedene Qualitätsklassen. Dazu dienen Protokollfelder von TCP/IP wie das Type-of-Service-Feld im IPv4-Header bzw. das Trafic-Class-Feld im IPv6-Header. Abbildung 9 zeigtdas Type-of-Service (TOS)-Feld von IPv4. Precedence: Rangordnung D: Deley, Verzögerung Normal (0), Low (1) T: Throughput, Datenübertragungsbandbreite, Normal (0), High (1) R: Reability, Zuverlässigkeit Normal (0), High (1) C: Cost, Kosten Normal (0), Minimale Kosten (1) Abbildung 9: Type of Servise des IP-Headers des RFC 791 (IPv4) [16]Der Precedence-Bereich erlaubt es Routern in Zeiten großen Datenaufkommens, diejenigenDaten herauszufiltern und als erste weiterzutransportieren, die den höchsten Rang oder diehöchste Priorität haben. Der Bereich Type of Service beschreibt die Eigenschaft dergewünschten Datenübertragung.Es ist auch notwendig verschiedene Prioritätsklassen in Routern zu realisieren, dafür besitzenmoderne Router hardwaremäßig eine bestimmte Anzahl von Warteschlangen (Queues).
  • 23. 2. VoIP (IP-Telefonie) 18Außerdem erfolgt die Steuerung der einzelnen Warteschlangen über einen Mechanismus, derentscheidet, welche Pakete welcher Warteschlangen für die Einhaltung der QoS-Anforderungen als Nächstes nach einer festgelegten Regel gesendet werden (Scheduling).Man muss Scheduling-Methoden einsetzen, die den Spachverkehr bevorzugen. Dazu gehörtLLQ21, die von vielen genutzt wird, die VoIP-Netzwerke in Umgebungen mit geringenBandbreiten einsetzen (weniger als 768 Kbps).2.4.3 JitterEinfach ausgedrückt ist Jitter die Zeitschwankung zwischen der Ankunft einzelner Pakete.Jitter tritt nur in paketbasierten Netzwerken auf. In einer Paket-Sprach-Umgebung wirderwartet, dass der Sender die Sprachpakete zuverlässig in einem regelmäßigen Intervallüberträgt (z.B. alle 20 ms ein Frame). Diese Sprachpakete können verzögert werden und nichtim selben regelmäßigen Intervall an der empfangenden Station ankommen. Der Unterschiedzwischen dem Zeitpunkt, wann das Paket erwartet und dem Zeitpunkt, zu dem es wirklichempfangen wird, ist Jitter. [16]Daher wird ein Jitter-Puffer benötigt, der diese dynamische Paketverzögerung verschleiert. Abbildung 10: Delay und Jitter im paketbasierten Netzwerk [15]Viele Hersteller haben sich für den Einsatz von statischen Jitter entschieden, im Gegensatz zuCisco. In der Cisco IOS22-Software werden RTP-Zeitstempel verwendet, um zu bestimmen,wie groß der Jitter innerhalb des Netzwerks ist. Der Jitter-Puffer von Cisco wächst oder21 LLQ: Low Latency Queuing, dieser Queuing-Mechanismus wurde entwickelt, um Sprachverkehr absolutePriorität vor jedem anderen Verkehr auf einer Schnittstelle einzuräumen.22 IOS: Internetwork Operating System ist das Betriebssystem von Cisco-Routern und Switches. Dieses wirdbeim Einschalten des Gerätes aus dem nichflüchtigen Flash-Speicher in den Hautspeicher geladen und stellt diegrundlegenden Funktionen des Routing und/oder Switching zur Verfügung.
  • 24. 2. VoIP (IP-Telefonie) 19schrumpft dynamisch, je nach Verzögerungsvarianz der letzten empfangenen Paketen und istsomit ein dynamischer Jitter-Puffer.2.4.4 EchoUnter Echo versteht man das zeitversetzte Hören seiner eigenen Stimme durch Verzögerungauf der Übertragungsleitung und Rückkopplung beim Empfänger. Alle heutigenSprachdienste reflektieren einen gewissen Anteil des Signals zurück zum Sender.Man kann drei Arten von Echo unterscheiden: • Das elektrische Echo stammt aus einer Fehlanpassung der Impedanzen beim Übergang vom vieradrigen Netzwerk-Switch auf die Zweiadrige lokale Schleife (wie in Abbildung 11 gezeigt). Eine Impedanzanpassung ist wegen der unbekannten Impedanz der Zweidrahtleitung nicht möglich. • Das akustische Echo stammt aus der akustischen Rückkopplung zwischen Lautsprecher und Mikrofon. • Das einzige erwünschte Echo ist der so genannte „Sidetone“, der das Hören der eigenen Sprache im Lautsprecher des Telefons mit geringer Verzögerung bezeichnet.[18] Abbildung 11: Durch nicht abgestimmte Impedanzen erzeugtes Echo [16]Das Echo beeinflusst ganz wesentlich die Sprachqualität, wobei diese negative Beeinflussungvon der Verzögerung im Hin und Rückrichtung und dem Amplitudenunterschied zwischendem Ursprungs- und Echosignal ab. Dieser Amplitudenunterschied wird durch den FaktorTELR (Talker Echo Loudness Rating) in der ITU G.122 beschrieben.Maßnahmen zur Echokompensation sind ab einer Echo-Verzögerung von 20 – 30 msunausweichlich; eine billige Variante zur Echokompensation sind Echounterdrücker (EchoSupressors), die eine hohe Dämpfung in den Sendepfad einschalten, wenn der andereTeilnehmer spricht. Diese Methode wird vor allem in billigen Endgeräten bei
  • 25. 2. VoIP (IP-Telefonie) 20Freisprecheinrichtungen angewendet und hat den Nachteil einer Sprachunterdrückung, wennbeide Teilnehmer gleichzeitig sprechen.In der öffentlichen Telefonie werden Echosperren (Echo Cancellers) eingesetzt, die vielkomplexer als Echounterdrücker sind, Echosperren schätzen den Echoanteil des Empfängersim Retoureweg zum Sender und subtrahieren diesen Anteil vom tatsächlichen Signal. Dazuwird ein mathematisches Model zusammen mit dem Ursprungssignal dazu verwendet, dasEcho abzuschätzen. Moderne Echosperren können sich an das Signal und die Empfänger-Eigenschaften anpassen und werden mit digitalen Signalprozessoren (DSP’s) realisiert.Grundsätzlich sind Echosperren adaptive digitale Filter (FIR: Finite Impulse Response). BeimBeginn eines Gesprächs benötigt der Echokompensierer eine gewisse Zeit, um sich optimaleinzustellen. Für eine Echofreie Verbindung in beide Richtungen ist eine Echosperre anbeiden Enden notwendig.2.4.5 Paketverluste (Packet Loss)Verluste von Sprachpaketen sind in TCP/IP-Netzen keine Besonderheiten und haben zweiUrsachen:Die erste Ursache sind Verstopfungen im Netz, die zu einem hohen Füllgrad derWarteschlangen in den Routern und damit zu einem Verwurf von Paketen führen. Bei derVerwendung von TCP führ ein Paketverlust zu einer Wiederholung der Übertragung. Bei derÜbertragung der Sprache über TCP/IP würde eine wiederholte Übertragung nichts nützen, danur ein kleines Zeitfenster zu Rekonstruktion der Sprachinformation zu Verfügung steht unddaher UDP ohne Übertragungssicherheit verwendet wird. Um Paketverluste zu vermeiden,sind Mechanismen wie beispielsweise DiffServe für den hochprioren Sprachverkehrerforderlich, die einen garantierten Durchsatz bei minimalen Paketverlusten für priorisiertenVerkehr ermöglichen.Die zweite Ursache für den Verlust von Sprachpaketen sind hohe Verzögerungen, wodurchdie Pakete außerhalb des Jittebufferbereichs verzögert eintreffen und daher verworfen werden.Eine Verbesserung kann durch einen genügend großen Jitterbuffer erzielt werden, wasallerdings die Gesamtverzögerung vergrößert. [18]Verluste, die 5 – 10 Prozent aller Sprachpakete überschreiten, können die Sprachqualitätsignifikant verschlechtern wie folgende Abbildung 12 zeigt, dabei ist MOS (Mean OpinionScore) eine Größe zur Bewertung der Sprachqualität (1: Schlecht bis 5: exzellent), (sieheKapitel 2.5.3).
  • 26. 2. VoIP (IP-Telefonie) 21 5 4 MOS 3 2 1 1 3 5 7 9 11 13 15 17 19 Verlust von Sprachdaten [%] Abbildung 12: Verschlechterung der Sprachqualität durch Paketverluste [18]Wie aus der Abbildung ersichtlich ist, führen schon geringe Paketverlustraten kleiner 5Prozent zu Qualitätseinbußen. Daher ist ein geringer Paketverlust kleiner 2 Prozentanzustreben.Für die Erkennung von verloren gegangenen Paketen verwenden die Gateways dieSequenznummer im RTP-Headers. Die verlorenen Sprachpakete können zur Verbesserungder Sprachqualität rekonstruiert oder versteckt werden (Packet Loss Concealment – PLC).Die einfachste PLC-Methode ist die Stummschaltung (Silence Substitution) für Verlustratenunter 1 Prozent, indem bei Paketverlust einfach stumm geschaltet wird. Eine bessere,ebenfalls einfache Methode ist die Wiederholung des letzten Pakets (Packet Repetition), beider bei Paketverlust das letzte korrekt empfangene Sprachpaket wiedergegeben wird. Auchdieses häufig verwendete Verfahren ist nur bei geringeren Paketverlusten anwendbar.Bei höheren Paketverlusten sind ausgeklügeltere Maßnahmen notwendig: Eine Möglichkeitist die Paketinterpolation (Packet Interleaving), die die verlorenen Sprachpakete durch einsynthetisches Sprachmodell abschätzt. [18]2.4.6 Sprach-Aktivitäts-Entdeckung (Voice Activity Detection)Bei normalen Gesprächen spricht eine Person und die andere hört zu. Die heutigengebührenpflichtigen Netzwerke enthalten einen bidirektionalen Kanal mit 64000 Bit proSekunde (Bps), ganz gleich, ob irgendjemand spricht. Das bedeutet, dass bei einem normalenGespräch etwa 50 Prozent der gesamten Bandbreite verschwendet wird. Die Menge der
  • 27. 2. VoIP (IP-Telefonie) 22verschwendeten Bandbreite kann in Wahrheit noch viel höher sein, wie sich herausstellt,wenn Sie eine statistische Aufzeichnung der Unterbrechungen und Pausen im normalenSprachmuster einer Person vornehmen.Beim Einsatz des VoIP man diese „verschwendete“ Bandbreite für andere Zwecke nutzen,wenn die Sprach-Aktivitäts-Entdeckung (VAD: Voice-Activity-Detection) aktiviert ist. Wiein Abbildung 13 gezeigt, funktioniert VAD durch eine Messung der Sprachstärke in Dezibel(dB) und durch die Entscheidung, wann die Sprache nicht mehr in Frames eingebunden wird. Abbildung 13: Sprach-Aktivitäts-Entdeckung [16]Wenn die VAD einen Abfall der Sprachamplitude bemerkt, wartet sie gewöhnlich einebestimmte Zeitdauer, bevor sie aufhört, die Sprachframes in Pakete zu verpacken. Diese festeZeitdauer wird als Überhang {Hangover) bezeichnet und beträgt in der Regel 200 ms.Bei jeder Technologie treten Nachteile auf. VAD erfährt bestimmte innere Probleme bei derBestimmung, wann Sprache endet bzw. beginnt und bei der Unterscheidung zwischenSprache und Hintergrundrauschen. Wenn sich ein Gesprächsteilnehmer also in einem Raumvoller Geräusche befindet, kann VAD nicht zwischen Sprache und Hintergrundrauschenunterscheiden. Dies wird auch als Signal/Rausch-Grenzwert (Signal-to-Noise Threshold;siehe 13) bezeichnet. In diesen Szenarien deaktiviert sich die VAD zu Beginn des Anrufsselbständig.Ein weiteres Problem der VAD ist die Erkennung, wann die Sprache einsetzt. Gewöhnlichwird der Beginn eines Satzes abgeschnitten. Dieses Phänomen wird als Front-End-Speech-Clipping bezeichnet. Normalerweise bemerkt die zuhörende Person das Front-End-Speech-Clipping nicht. [16]2.5 Codecs
  • 28. 2. VoIP (IP-Telefonie) 23In Kapitel 2.1 wurde schon darauf hingewiesen, dass bevor ein Telefongespräch über dasInternet geführt werden kann, muss das analoge Audiosignal in ein digitales Signalumgewandelt werden.Dieser Prozess, sinnigerweise „Digitalisierung“ genannt, unterteilt sich in drei Schritte:Abtastung (oder auch Sampling), Quantisierung und Kodierung.Beim Sampling wird das analoge Signal in einer bestimmten Frequenz über die Zeitabgetastet und nur die zu diesen diskreten Zeitpunkten gemessenen Werte werden weiterberücksichtigt, alle anderen verworfen. Somit haben wir eine endliche Anzahl von Werten,die aber immer noch potentiell beliebig genau sein können. Dieses Problem wird durch denzweiten Schritt, die Quantisierung, gelöst. Die beliebig genauen Werte werden schlicht aufden nächsten diskreten Wert gerundet, die so genannten Quantisierungsintervalle. Bei diesemRunden entstehen natürlich Fehler, da nicht der exakte, sondern nur der gerundete Wertabgespeichert wird. Sind zu wenig Quantisierungsintervalle vorhanden, kann dieser Fehler zuhörbaren Qualitätseinbußen führen. Man nennt diesen Effekt daher auchQuantisierungsrauschen oder Quantisierungsfehler.Unter Kodierung versteht man ganz einfach die Beschreibung der Quantisierungsintervalledurch bestimmte binäre Codewörter. Dies schließt den Prozess analog-digital-Wandlung abund wir haben nun ein rein digitales Signal vorliegen. Das Wiederherstellen der analogenSignale aus den digitalen wird als Dekodierung bezeichnet.Ein Codec (Coder/Decoder) ist ein Algorithmus, der die Aufgabe der Kodierung undDekodierung erfüllt. Die Abkürzung Codec steht aber auch für (Compressor/Decompressor). Abbildung 14: Sprachkodierung für die Internetübtragung23 [27]Da oft nur eine geringe Bandbreite zur Verfügung steht, ist auch eine entsprechendeKomprimierung des Signals notwendig. Dabei wird eine möglichst hohe Sprachqualität bei23 De-Jitter-Buffer zur Paketverzögerungsverschleierung (Kapitel 2.4.3)
  • 29. 2. VoIP (IP-Telefonie) 24einer möglichst niedrigen Datenrate angestrebt. Wählt man dabei ein Kodierverfahren mitniedriger Bitrate und hoher Kompression, so ist beim Kodieren und Dekodieren vielRechenleistung notwendig. Steht diese nicht zur Verfügung, so muss zwangsläufig einVerfahren verwendet werden, bei dem die Bitrate höher ist.Das Sprachsignal wird beim Sender kodiert, über das Internet übertragen und beimEmpfänger dekodiert, also für die Wiedergabe in ein analoges Signal umgewandelt. Diewichtigste Forderung an das verwendete Kodierungsverfahren ist: das Signal muss inEchtzeit, das heißt mit minimaler Verzögerung, kodierbar und dekodierbar sein.Taugliche Verfahren lassen sich in den im kommenden Kapitel folgenden Hauptgruppeneinteilen. Abbildung 15: Sampling und 8-Bit-Kodierung eines Analogsignals [15]2.5.1 Kodierungsverfahren • Signalformkodierung Dabei wird das Analogsignal mit einer geeigneten Quantisierung, um die Originalform des Signals möglichst fehlerfrei zu reproduzieren. Die einfachste und am weitesten verbreitete Möglichkeit zur Realisierung dieses Verfahrens ist die Pulse Code Modulation (PCM). Das Nyquist-Theorem besagt, dass bei einer Aufnahme eines analogen Signals mit der doppelten Rate der höchsten noch interessanten Frequenz dieses Signals aus der Aufnahme heraus wieder genau in seiner analogen Form rekonstruiert werden kann. Da der meiste Sprachinhalt unter 4000 Hz liegt, ist eine Aufzeichnungsrate von 8000 Aufnahmen pro Sekunde (125 ms zwischen den Aufnahmen) erforderlich.
  • 30. 2. VoIP (IP-Telefonie) 25 PCM benutzt diese Abtastrate und eine 7- oder 8-Bit-Quantisierung. Das Ergebnis ergibt eine Datenrate von 56 Kbit/s (7Bits/Abtastung * 8 kHz) oder 64 Kbit/s (8Bits/Abtastung * 8 kHz). Bei PCM wird auf eine Komprimierung der Daten verzichtet, wodurch man auf breitbandige Übertragunswege angewiesen ist. Allgemein werden zwei grundlegende Varianten der PCM verwendet: µ-law (Nordamerika) und a-law (Europa). Diese Methoden erzielen eine Komprimierung durch eine logarithmische Einteilung der Quantisierungsintervalle. Eine andere häufig verwendete Möglichkeit der Signalkodierung ist die Differential Puls Code Modulation (DPCM). Im Unterschied zur PCM werden bei DPCM nicht die Amplituden der Sprachsignale kodiert, sondern die Unterschiede der Amplitude. Bei den Differenzen der Amplituden ist der Wertebereich naturgemäß kleiner, was zu weniger Datenaufkommen gegenüber der Standard-PCM führt. Nachteil dieses Verfahrens ist, dass bei schnellen Signalschwankungen schwerwiegende Quantisierungsfehler auftreten können. Durch anpassen der Schrittgröße des Quantisierers erreicht man eine Verbesserung der Sprachqualität, und dies ist das Prinzip der Adaptive Differential Puls Code Modulation (ADPCM). • Quellenkodierung (Analyse-Synthese-Verfahren) Quellenkodierer werden auch als Vocoder bezeichnet. Sie Versuchen das Eingangssignal durch Generierung eines künstlichen Signals in der Form zu reproduzieren, dass es sich dem Eingangssignal annähert. Dabei werden nur die Parameter eines Sprachmodels übertragen, somit sind die Datenraten extrem niedrig. Die leistungsfähigsten Vocoder sind die LPC-Vocoder (Linear Predictive Coding), sie arbeiten im Allgemeinen mit Bandbreiten von 2,4 Kbit/s. Quellenkodierer haben den niedrigsten Bandbreitenbedarf, werden in der IP-Telefonie jedoch nicht eingesetzt, da sie eine künstlich klingende Sprache erzeugen. • Hybride Verfahren Stellen eine Mischung aus den beiden oben genannten Verfahren dar und vereinen die Vorteile von Signalform- und Quellenkodierern. Die bekanntesten Methoden der hybriden Verfahren sind die CELP-Kodierung (Code Excitation Linear Predictive Coding), die ACELP (Algebraic Code Excitation Linear Predictive Coding), die auf kurze Verzögerungszeiten (<5 ms) optimierte LD-CELP (Low Delay Code Excitation Linear Predictive Coding), die CS-CELP (Conjugate
  • 31. 2. VoIP (IP-Telefonie) 26 Structure Code Excitation Linear Predictive Coding) und die MPMLQ (Multiple Maximum Likelihood Quantization). Die Bandbreiten erreichen zwischen 5,3 und 16 Kbit/s, die erzeugten Sprachqualitäten liegen zwischen „akzeptabel“ und „sehr gut“.2.5.2 Sprachdaten-KomprimierungDie Komprimierung (Reduktion der Datenmenge) der kodierten Daten ist unumgänglich, umeine vertretbare Übertragungszeit oder gar Streaming24 sicherzustellen.Man unterscheidet Grundsätzlich zwei Arten der Audiokomprimierung: Die verlustfreieKomprimierung und die verlustbehaftete Komprimierung. Verlustfreie Komprimierung: Bei dieser Komprimierungsart ist das Ursprungssignal auch nach der Komprimierung noch eindeutig widerherstellbar und es treten keinerlei qualitätsmindernde Effekte auf. Das Grundprinzip der verlustfreien Komprimierung ist die Differenzkodierung mit linearer Prediktion. Differenzkodierung wurde schon in Kapitel 2.5.1 erläutert. Unter Prediktion versteht man das Nutzen des Wissens über das bereits kodierten Signals zur Vorhersage des Folgesignals. Auch hier speichert man nur die Differenz zwischen dem Signal und seiner Vorhersage. Wendet man nun noch eine Hufmann-Kodierung25 an, kann man auf diese Weise eine Kompressionsrate von immerhin 1:2 erreichen. Auch wenn diese Datenreduktion bereits beachtlich ist, reicht sie jedoch nicht aus um eine effiziente Übertragung über das Internet zu ermöglichen. Verlustbehaftete Komprimierung: Bei dieser Methode verringert man die Qualität gezielt, um sehr hohe Kompressionsraten zu erreichen. Das Grundprinzip: Nicht oder kaum wahrnehmbare Anteile der Audiodaten müssen nicht mitkodiert werden. Wie bereits eher erwähnt hat das menschliche Gehör einen Wahrnehmungsbereich von ca. 20 bis 22 kHz. Das heißt, Signale die außerhalb dieses Bereiches liegen, müssen gar nicht erst mitkodiert werden. Aber auch Signale, die innerhalb dieses Frequenzbereiches liegen können unter Umständen vom Menschen nicht wahrgenommen werden. Ein solches Phänomen ist die so genannte „Verdeckung“.24 Streaming: Echtzeitübertragung (man hört, während man gleichzeitig noch herunterlädt)25 Häufig vorkommende Kodewörter werden kürzer kodiert als selten vorkommende
  • 32. 2. VoIP (IP-Telefonie) 27 Allgemein versteht man unter Verdeckung die Überlagerung eines leisen Signals durch ein lautes Signal, so dass das leise Signal nicht mehr wahrnehmbar ist (man sagt auch, das Signal liegt unter der so genannten Verdeckungsschwelle). Abbildung 16: Signalverdeckung2.5.3 Standards der SprachkodierungIm diesem Unterkapitel werden die populärsten VoIP-Kodierungsstandards erläutert und kurzbeschrieben (nach [16]). – G.711 – Beschreibt die bereits angesprochene PCM-Sprachkodierungstechnik. Die G.711-kodierte Sprache ist bereits in der korrekten Form für die digitale Sprachübertagung im öffentlichen Telefonnetzwerk oder durch Private Branch Exchanges (PBX’s) – G.726 – ADPCM-Kodierung mit 40, 32, 24 und 16 Kbps. Der Austausch der ADPCM-Sprache ist auch zwischen Paket-Sprach- und öffentlichen Telefon- oder PBX-Netzwerken unter der Voraussetzung möglich, dass Letztere über ADPCM- Fähigkeiten verfügen. – G.728 – Beschreibt eine 16 Kbps-Variante der CELP-Sprachkomprimierung mit geringer Verzögerung. – G.729 – Beschreibt die CELP-Komprimierung, mit der Sprache in 8 Kbps- Strömen kodiert werden kann. Zwei Varianten dieser Standards (G.729 und
  • 33. 2. VoIP (IP-Telefonie) 28 G.729a) unterscheiden sich stark in Hinsicht auf die Komplexität der Berechnung und beide ermöglichen im Allgemeinen Sprachqualitäten, die mit der 32 Kbps- ADPCM vergleichbar sind. – G.723.1 – Beschreibt eine Komprimierungstechnik, mit der Sprache mit einer geringen Bitrate komprimieren werden kann. Zwei Bitraten sind mit dieser Kodierung verbunden: 5,3 und 6,3 Kbps. Die höhere Bitrate basiert auf der MP- MLQ-Technologie und bietet eine bessere Qualität, Die geringere Bitrate basiert auf CELP, sie bietet gute Qualität und verleiht Systemdesignern zusätzliche Flexibilität.2.5.4 Qualität der CodecsDie Qualität der Codecs lässt sich nach den folgenden Qualitätsmerkmalen beurteilen. • Datenrate Die Datenrate ist ein wichtiges Qualitätsmerkmal, da eine Leitung nur eine begrenzte Bandbreite besitzt und bei einer geringen Datenrate entsprechend mehr Kapazität anderen Teilnehmern oder Anwendungen zur Verfügung steht. • Sprachqualität Ein Maß für die Sprachqualität wurde als Mean Opinion Score (MOS) definiert. Er beschreibt das statische Empfinden der Sprachqualität eines Benutzers als Zahlenwert (von 1: Schlecht bis 5: exzellent). Die Sprachqualität soll möglichst verständlich und natürlich klingen, sodass der Sprecher nicht nur verstanden, sondern auch anhand der Stimme identifiziert werden kann. • Verzögerung Das Dekodieren und Enkodieren ist je nach Verfahren mehr oder weniger aufwändig. Entsprechend wird Zeit zum Dekodieren und Enkodieren benötigt, wobei eine wahrnehmbare Verzögerung beim Telefonieren nicht akzeptabel ist. Insgesamt dürfen nicht mehr als 150 ms inklusive Transport benötigt werden.[18] Je aufwändiger ein Codec ist, desto länger dauern Encodieren wie auch Decodieren, und desto größer ist die Verzögerung. Es gibt auch einen Zusammenhang mit der Datenrate. Je
  • 34. 2. VoIP (IP-Telefonie) 29 stärker ein Signal komprimiert wurde, desto kleiner ist das Datenaufkommen und somit die Datenrate. • Komplexität des Verfahrens Das Verfahren darf nicht so komplex sein, dass der Aufwand, der betreiben werden muss, um einen Codec zu implementieren, die Grenze des Wirtschaftlichen übersteigt. Normalerweise ist dies kein Hindernis, das Hardware nicht teuer ist und ständig durch billigere und leistungsfähigere Nachfolger abgelöst wird.[18] In der Praxis gibt es keinen idealen Codec, der all diesen Erfordernissen am besten gerecht wird. Jeder Codec hat seine Vor- und Nachteile, so dass man nur den optimalen auswählen kann. Codec Nutzdatenrate Verzögerung Prozessorlast MOS (Kbps) ms MIPS26 G.711 (PCM) 64 0,125 0 4,1 G.726 (ADPCM) 32 0,125 6,5 3,85 G.728 (LD-CELP) 15 2 37,5 3,61 G.729 (CS-ACELP) 8 20 34 3,92 G.729a (CS-ACELP) 8 20 17 3,7 G.723.1 (MP-MLQ) 6,3 70 25 3,9 G.723.1 (ACELP) 5,3 70 25 3,65 Tabelle 2: Vergleich von Qualität und Komplexität verschiedener ITU-Codecs [18]26 MIPS: Million Instructions per Second
  • 35. 2. VoIP (IP-Telefonie) 302.6 H.323-StandardDer H.323 Standart (Packet Based Multimedia Communications Systems) ist eineRahmenempfehlung der ITU-T27 von 1996 bzw. 1998 (Rev. 2) welche auf ca. 50 Standardsverweist. Diese legen die technischen Voraussetzungen für die multimediale Kommunikationüber nonguaranteed QoS-Netzwerke fest. Wobei besonders auf Beschreibung derKomponenten, Verarbeitung der Medienströme (Audio, Video, Daten),Verbindungsmanagment und Interworking verschiedener Netzwerke eingegangen wird.2.6.1 ArchitekturH.323 beschreibt die Architektur und die Funktionen von einzelnen Systemkomponenten fürdie Übermittlung von Audio und Video in IP-Netzen. Die Summe aller Elemente (H.323Entities) in einem Netzwerk wird als H.323 Netzwerk bezeichnet.H.323 unterscheidet zwischen folgenden KomponentenTerminalEin H.323 Terminal ist ein Endgerät, mit dem eine bidirektionale Echtzeitkommunikation mitanderen Terminals bzw. Gateways oder einer MCU möglich ist.GatewayWie Terminals, so sind auch Gateways Endgeräte in einem H.323 Netzwerk. Gatewaysermöglichen die Verbindung eines H.323 Netzwerks zu anderen Netzwerken, wie z. B. demSCN.MCU (Multipoint Controler)Eine MCU ermöglicht den Aufbau einer Konferenzschaltung (Multipoint-Konferenz)zwischen mehreren Endgeräten.GatekeeperAls zentrale Stelle in einem H.323 Netzwerk übernimmt der Gatekeeper verschiedeneKontroll- und Verwaltungsaufgaben für alle registrierten Endgeräte. Eine Gruppe vonTerminals, die von einem Gatekeeper kontrolliert wird, bildet eine H.323-Zone (kurz Zone).27 ITU-T: Telecommunication Standardization Sector of ITU
  • 36. 2. VoIP (IP-Telefonie) 31 Abbildung 17: H.323-Komponenten2.6.2 H.323-ProtokollsuiteDie H.323-Protokollsuite basiert auf mehreren Protokollen, die in Abbildung 18 gezeigt sind.Die Protokollfamilie unterstützt Erlaubnis, Aufbau, Zustand, Trennung, Medienströme undMeldungen vom Anrufen in H.323-Systemen. Abbildung 18: H.323-Protokollhierarchie2.6.2.1 RAS-(Registration Admission Status) SignalisierungEs handelt sich hier um die Steuerung, die zwischen Terminals und Gatekeeper abläuft. DerGatekeeper stellt quasi eine Zentrale innerhalb einer H.323-Zone dar. Ein Terminal kann nur
  • 37. 2. VoIP (IP-Telefonie) 32dann eine Verbindung initiieren, wenn es beim Gatekeeper bereits registriert ist. BeimVerbindungsaufbau muss jedes Terminal jede neue Verbindung beim Gatekeeper anmelden,falls keine sog. pre-granted Admission, also eine „Vorausbewilligung“ vorliegt. Damit wirdauch die benötigte Bandbreite beim Gatekeeper angemeldet.Dafür wird ein RAS-Kanal zwischen Endpunkten und dem Gatekeeper über ein IP-Netzwerkeingerichtet. Diese unzuverlässige UDP-Verbindung überträgt die RAS-Meldungen, die dieRegistrierungs-, Erlaubnis-, Bandbreitenänderungs- und Zustandsprozeduren ausführen.Gatekeeper-EntdeckungInnerhalb einer Zone können mehrere Gatekeeper eingesetzt werden, um die Ausfallsicherheitzu erhöhen. Jeder Endpunkt einer Zone wird von einem Gatekeeper dieser Zone verwaltet.Somit muss jeder neue Endpunkt bei einem Gatekeeper registriert werden. Hierfür musszuerst ermittelt werden, welcher Gatekeeper für die Verwaltung des neuen Endpunkteszuständig ist. Jeder neue Endpunkt muss somit seinen Gatekeeper entdecken (auffinden).Abbildung 19 illustriert die Gatekeeper-Entdeckung.Um den Gatekeeper zu entdecken, sendet ein Endpunkt eine Multicast-NachrichtGatekeeperRequest (GRQ). Ein oder mehrere Gatekeeper können mit einer NachrichtGatekeeperConfirmation (GCF) antworten, in der sie dem Endpunkt ihre Bereitschaftsignalisieren, als dessen Gatekeeper zu fungieren. Falls mehrere Gatekeeper auf die Anfrageantworten, steht es dem Endpunkt frei, für welchen er sich entscheidet. Der Gatekeeper, derfür den Endpunkt nicht zuständig ist, antwortet mit GatekeeperReject (GRJ). Abbildung 19: Endeckung des zuständigen Gatekeeper (GK) [1]RegistrierungDie Registrierung beim Gatekeeper ist der Prozess, während dessen Ablauf ein neuerEndpunkt einer Zone den Gatekeeper über seine Adresse für Audio- undVideokommunikation informiert. Sie wird bei H.323 als Alias-Adresse bezeichnet.Da jedes IP-Telefon über eine Telefonnummer bzw. eine Alias-Adresse, in der Form
  • 38. 2. VoIP (IP-Telefonie) 33Tel-Nr@xyz.de, verfügen muss, handelt es sich hierbei um die Bekanntgabe seiner Alias-Adresse.Abbildung 20 illustriert die Registrierung. Ein Endpunkt sendet eine NachrichtRegistrationRequest (RRQ) zum Gatekeeper mit der Angabe seiner Alias-Adresse. DerGatekeeper muss bei der Registrierung die Alias-Adresse des Endpunktes zu seiner IP-Adresse zuordnen und dies in einer speziellen Tabelle mit den Zuordnungen Alias-Adresse=> IPAdresse eintragen.Der Gatekeeper kann entweder mit RegistrationConfirm (RCF) die Registrierung annehmenoder mit RegistrationReject (RRJ) die Registrierung ablehnen. Wie Abbildung 20 zeigt, kannsich ein Endpunkt beim Gatekeeper durch das Absenden von UnregistrationRequest (URQ)deregistrieren (abmelden). Der Gatekeeper kann die Deregistrierung entweder mitUnregistrationConfirm (UCF) bestätigen oder mit UnregistrationReject (URJ) ablehnen. Abbildung 20: Ablauf: a) der Registrierung, b) der Deregistrierung [1]Lokalisierung der EndpunkteEine Aufgabe jedes Gatekeepers besteht in der Verwaltung einer Tabelle mit der ZuordnungAlias-Adresse => IP-Adresse. Die Abfrage der IPAdresse eines Endpunktes wird bei H.225.0als Location-Prozess bezeichnet. Abbildung 21 veranschaulicht die Bedeutung diesesProzesses.Hier fragt der Endpunkt A seinen Gatekeeper GK1 nach der IP-Adresse des Endpunktes B,d.h. seines Kommunikationspartners, bereits bei der Anmeldung der zu initiierendenVerbindung mit der Nachricht ARQ ab.Befindet sich der Endpunkt B aber in einer anderen (H.323-)Zone, so muss GK1 die IP-Adresse des Endpunktes B vom Gatekeeper dieser Zone abfragen. Hierfür definiert H.225.0entsprechende Nachrichten.Wie Abbildung 21 zeigt, sendet der GK1 der Zone 1 an den GK2 der fremden Zone 2 dieNachricht LocationRequest (LRQ), in der er die Alias-Adresse des Endpunktes B angibt undnach seiner IP-Adresse fragt. Der GK2 antwortet normalerweise mit LocationConfirm (LCF),
  • 39. 2. VoIP (IP-Telefonie) 34in der die gewünschte IPAdresse enthalten ist. Falls der GK2 die gewünschte IP-Adresse nichtliefern kann, antwortet er mit LocationReject (LRJ). Abbildung 21: Verlauf eines Location-Prozesses [1]Zulassung von VerbindungenJeder Endpunkt darf nur dann eine abgehende Verbindung für Audio- bzw.Videokommunikation initiieren bzw. eine ankommende Verbindung annehmen, wenn diesvom Gatekeeper zugelassen wurde (Admission). Damit kann der Verbrauch derÜbertragungskapazität (Bandbreite) im IP-Netz vom Gatekeeper kontrolliert werden. Nachdem Ablauf der Kommunikation muss eine abgebaute Verbindung beim Gatekeeperabgemeldet werden, sodass er die reservierte Bandbreite für andere Verbindungen freigebenkann. Abbildung 22 zeigt die Zulassung (Admission) einer Verbindung für Audio- bzw.Videokommunikation und Freigabe der reservierten Bandbreite (Disengage) nach demAbbau der Verbindung. Abbildung 22: Funktionen Admission und Disengage [1]
  • 40. 2. VoIP (IP-Telefonie) 352.6.2.2 Anruf-Kontroll-Signalisierung (H.225)Um eine Verbindung zwischen zwei Endpunkten für die Übermittlung von Echtzeitmedien(Audio/Sprache, Video) aufbauen zu können, werden zwei Signalisierungsprotokolle H.225.0und H.245 als H.323-Signalisierung (kurz H.323-SIG) verwendet. H.225.0 definiert einAnruf-Signalisierungs-Protokoll (Anruf-SIG-Protokoll), nach dem der H.245-Kanal aufgebautund abgebaut wird. Über den H.245-Kanal werden logische RTP- und RTCP-Kanäle für dieAudio/Video-Kommunikation eingerichtet. H.225.0 nutzt einige Nachrichten des D-Kanal-Protokolls Q.930/Q931 vom ISDN. Bei H.225.0 handelt es sich im Prinzip um eineRealisierung des D-Kanal-Protokolls über TCP-Verbindungen.2.6.2.3 Medien-Kontroll-Signalisierung (H.245)Es handelt sich hier um die Steuerung beim Auf- und Abbau logischer Kanäle für die Audio-und Video-Übermittlung. Diese logischen Kanäle stellen die RTP-Sitzungen (Real TimeTransport Protocol) dar und entsprechen weitgehend den B-Kanälen im ISDN. Die Steuerungbeim Auf- und Abbau logischer Kanäle wird zwischen jeweils zwei Terminals über denH.245-Steuerungskanal ausgetauscht. Für die Übermittlung von H.245-Nachrichten wird dasProtokoll TCP verwendetDie wichtigsten Funktionen von H.245 sind: Austausch der Terminal-Fähigkeiten (Capability Exchange), Master/Slave-Festlegung28 (Master/Slave Determination), Aufbau und Abbau logischer RTP/RTCP-Kanäle für die Übermittlung verschiedener Medien (Audio, Video, Daten),2.6.2.4 Anruf-Signalisierung (Q.931)Der Q.931 Standard der ITU beinhaltet Prozeduren für den Auf- und Abbau einer Verbindungim ISDN. Die Signalisierung verläuft dabei über den D-Kanal des ISDN-Anschlusses.Für die Signalisierung in H.323 wird ebenfalls Q.931 verwendet. Diese Designentscheidungist historisch bedingt, da zu Beginn von H.323 versucht wurde, Standards und Protokolle ausdem ISDN (bzw. von H.320) zu übernehmen.28 Mit der Master/Slave-Festlegungsprozedur wird für einen bestimmten Anruf bestimmt, welcher Endpunkt derMaster und welcher der Slave ist. Die Beziehung bleibt für die Dauer des Anrufs bestehen und sie ist zuständigfür die Auflösung von Konflikten zwischen den Endpunkten. Die Master/Slave-Regeln kommen zum Einsatz,wenn beide Endpunkte zum selben Zeitpunkt ähnliche Aktionen anfordern.
  • 41. 2. VoIP (IP-Telefonie) 362.6.2.5 Unterstützung von Datenanwendungen nach T.120Der ITU-T-Standard T.120 beschreibt die Prinzipien der Datenkommunikation bei den PC-basierten Videokonferenzen und ist integrierbar in H.323. Parallel zur Sprach- undVideokommunikation kann zwischen jeweils zwei Terminals auch die Datenkommunikationnach T.120 stattfinden.2.6.2.6 Struktur von Anruf-SIG-Nachrichten beim H.225.0Als Anruf-SIG-Nachrichten beim H.225.0 werden die Q.931-Nachrichten in einer erweitertenForm verwendet. Abbildung 23 zeigt, wie die Anruf-SIG-Nachrichten strukturiert sind undwie sie in IP-Paketen übermittelt werden. Abbildung 23: H.225.0-Anruf-SIG-Nachrichten in IP-Paketen [1]Für den H.225.0-Einsatz werden die Q.931-Nachrichten um zusätzliche und H.225.0-spezifische Angaben erweitert, die man als User-to-User Information Elements (UUIEs)bezeichnet. UUIEs werden am Ende einer Q.931-Nachricht angehängt. Um die Länge dererweiterten Q.931-Nachricht, die eine H.225.0-Anruf-SIG-Nachricht darstellt, angeben zukönnen, wird der Header des Protokolls TPKT (Transport PacKeT) nach RFC 2126 derQ.931-Nachricht vorangestellt.Somit wird ein TPKT-Paket aus einer H.225.0-SIG-Nachricht gebildet und über eine TCP-Verbindung übermittelt.
  • 42. 2. VoIP (IP-Telefonie) 37Jede Q.931-Nachricht enthält immer folgende Angaben: Message type als Angabe des Nachrichtentyps (Setup, Alerting, ...). Call reference als Identifikation des Anrufes, d.h. auf welchen Anruf sich diese Signalisierung bezieht. Protocol discriminator als Identifikation des Protokolls Q.931. Informationselemente IEs (Information Elements) als Parameter der Nachricht, die oft optional sind.Die folgenden Q.931-Meldungen sind die am häufigsten verwendeten Signalisierungs-Meldungen in H.323-Netwerken:Setup: (Einrichtung) wird von der anrufenden Einheit zur angerufenen gesendet. Mit „Setup“ wird versucht, eine Verbindung einzurichten.Call-Proceeding: wird von der angerufenen Einheit zur anrufenden gesendet. Mit(Anruffortschritt) Call-Proceeding wird angezeigt, dass die Prozeduren zur Anrufeinrichtung gestartet wurden.Alerting: (Alarmierung) wird von der angerufenen Einheit gesendet, um mitzuteilen, dass das Klingeln an der angerufenen Seite gestartet wurde.Connect: (Verbinden) wird von der anrufenden Einheit zur angerufenen gesendet, die anzeigt, dass die angerufene Seite den Anruf beantwortete.Die Q.931-Nachrichten und UUIEs werden mit Hilfe von ASN.1 spezifiziert. ASN.1(Abstract Syntax Notation No. 1) spezifiziert. ASN.1 dient als Sprache für die Beschreibungvon Nachrichten der Protokolle in den Telekommunikationssystemen.2.6.3 H.323-VerbindungsablaufAbbildung 24 stellt ein Beispiel eines Verbindungsablaufes dar, bei dem die H.323-Protokollfamilie die Einrichtung eines Anrufs zwischen zwei Endpunkten erreicht. Wir gehendavon aus, dass es sich um einen Sprachanruf handelt und dass beide Endpunkte dieRegistrierung beim Gatekeeper bereits abgeschlossen haben.
  • 43. 2. VoIP (IP-Telefonie) 38 Abbildung 24: H.323-Verbindungsablauf [16]2.6.4 ZusammenfassungH.323 ist ein hybrides System, das aus zentralisierten intelligenten Gatekeepern, MCUs undweniger intelligenten Endpunkte zusammengesetzt ist. Obwohl der H.323-Standard inneueren Veröffentlichungen vervollständigt wurde, sind Probleme aufgetreten, wie z.B. langeAnruf Einrichtungszeiten, Overhead29 bei einem mit allen Features ausgestatteten Konferenz-Protokoll viele erforderliche Funktionen in jedem Gatekeeper und Skalierungsprobleme beiImplementierungen, bei denen Anrufe durch Gatekeeper geroutet werden. Wenn High-Density-Gateways für die Anbindung ans PSTN benötigt werden, werden Alternativen wiedas Simple Gateway Control Protocol (SGCP) und das Media Gateway Control Protocol(MGCP) entwickelt. Diese Anruf-Kontroll-Systeme ermöglichen eine effektivere undskalierbarere Lösung, um Implementierungen für Carrier befriedigen zu können.Entsprechend löst SIP (Session-lnitiation-Protokoll) einige Probleme des H.323 fürintelligente Endpunktkonfiguration und es wird als Alternative zu H.323 eingesetzt. SIP wirdausführlich in Kapitell 2.7 diskutiert.29 In der Kommunikation werden mit Overhead alle Informationen bezeichnet, die zusätzlich zu den Nutzdatenübertragen werden. Das sind Daten, die technisch erforderlich sind, wie Header in Datenpaketen, Routing- undKontrolldaten, Prüfzeichen usw.
  • 44. 2. VoIP (IP-Telefonie) 392.7 SIP (Session Initiation Protocol)Das Session Initiation Protocol (SIP, RFC 2543, RFC 3261) wurde 1999 durch die IETF(Internet Engineering Task Force) standardisiert und wird zur Kommunikation zwischen SIPfähigen Endgeräten und Servern oder zwischen Endgeräten genutzt.SIP wurde in Anlehnung an die Struktur des Internets entwickelt. Die Architektur ist verteiltbeziehungsweise modular. Das Protokoll ist im Klartext kodiert und der Aufbau ähnelt HTTPoder SMTP. Dadurch ist SIP im Gegensatz zu H.323 besser skalier- und erweiterbar (sieheKapitel 2.9)SIP wurde nicht ausschließlich für die Verwendung bei VoIP vorgesehen. Ziel bei derEntwicklung von SIP war die Definition eines umfassenden Kommunikationssystems. SIPkann beispielsweise auch bei der Steuerung von Geräten, zum Versenden vonKurznachrichten oder auch zum Verbindungsaufbau bei Onlinespielen zum Einsatz kommen.2.7.1 SIP-ProtokollhierarchieDas Versenden von SIP Nachrichten erfolgt bevorzugt über UDP; TCP ist jedoch optionalmöglich. Dabei wird zur Kommunikation zwischen Endgerät und Server standardmäßig derPort 5060 verwendet. Bei Sprachverbindungen werden die Audiodaten mittels Real TimeTransport Protocol RTP transportiert, dieses Protokoll versendet seine Pakete über UPD.Das Session Description Protocol (SDP) ist schwieriger einzuordnen. Es setzt auf dem SIPund dem RTP Protokoll auf, indem es seine Informationen im Body einer SIP-Nachrichtverpackt bzw. das RTP Protokoll ansteuert. Abbildung 25: SIP-Protokollhierarchie2.7.1 SIP-ArchitekturGegenüber H.323-Systemen werden für SIP-Systeme nur zwei Komponenten benötigt: UserAgent und SIP-Server, wobei SIP drei Server-Typen unterscheidet: Proxy-Server, LocationServer und Redirect Server.
  • 45. 2. VoIP (IP-Telefonie) 40User AgentAls User Agent (UA) werden alle SIP-fähigen Endgeräte (d.h. Softwaretelefon am PC,PDAs30, SIP-Telefone, aber auch PSTN-Gateways etc.) bezeichnet. Dabei wird meist nocheine (rein logische) Aufteilung in User Agent Client (UAC) und User Agent Server (UAS)vorgenommen, wobei jedoch jeder UA immer aus einem UAC und einem UAS besteht. Diesehaben folgende Aufgaben: - UAC’s stellen Anfragen und verarbeiten Antworten - UAS’s empfangen Anfragen und versende Antwortnachrichten Abbildung 26: User AgentProxy ServerDiese spielen eine zentrale Rolle in einem SIP-Netzwerk. Ihre Aufgabe ist es, das Routing derSIP-Nachrichten zum Aufbau einer SIP-Verbindung zu übernehmen. Verbindungsgesucheeines Anrufers können über mehrere Proxies bis zum Aufenthaltsort des Angerufenen geleitetwerden.Es wird dabei zwischen Stateless und Stateful Proxies unterschieden. Stateless Proxies leitenempfangene Nachrichten einfach weiter. Sie sind deshalb schneller als Stateful Proxies undfinden vor allem Verwendung als Loadbalancer und einfache Router. Allerdings sind sie nichtin der Lage, anspruchvolleres Routing wie z.B. Call Forking (mehrere Endgeräte könnengleichzeitig angerufen werden) zu betreiben.Stateful Proxies generieren für eine Anfrage einen Zustand (State) und behalten diesen, bisdie entsprechende Transaktion31 beendet ist. Dies kann im Falle einer INVITE (Einladung)-Nachricht relativ lang dauern (nämlich so lange, bis der Angerufene den Anruf annimmt oder30 Unter dem Begriff PDA (Personal Digital Assistent) werden handliche elektronische Geräte mit Kalender-,Adress-, Notiz- und ähnlichen Funktionen zusammengefasst31 Transaktion: Kompletter Zyklus einer Datenverarbeitung.
  • 46. 2. VoIP (IP-Telefonie) 41abweist). Aufgrund der Tatsache, dass Stateful Proxies diese Zustände für die Dauer derAnfrage aufrecht erhalten müssen, sind an diese höhere Leistungsanforderungen gestellt.Dafür sind sie aber auch in der Lage, weitergehende Dienste anzubieten und können auch voneinem Endgerät mehrfach versandte Nachrichten abfangen, da sie ja wissen, ob diese bereitsempfangen wurde.Location Server (Registrar)Damit ein Proxy weiß, wo der betreffende Benutzer zu finden ist, muss sich sein UA aneinem Location Server angemeldet haben. Dieser speichert dann den derzeitigenAufenthaltsort (d.h. IP-Adresse, Port und Benutzername) in einer sog. location database.Auf diese kann dann der Proxy-Server des Angerufenen zugreifen, um den Aufenthaltsortherauszufinden. Bei einem Registrar handelt es sich allerdings für gewöhnlich nur um einelogische Einheit - wegen der engen Verzahnung von Registrar und Proxy sind diese meist ineinem Gerät (Soft- oder Hardware) zusammengefasst.Redirect ServerAufgabe dieses Servers ist es, bei eingehenden Anfragen den gewünschten Empfänger in derlocation database nachzuschlagen. Die gefundenen Aufenthaltsorte - es ist bei SIP möglich,dass man sich zur gleichen Zeit mit verschiedenen Endgeräten von verschieden Orten aus mitdem gleichen Benutzer anmelden kann - werden dann dem Sender der Anfrage mit einerentsprechenden Nachricht zurückgesandt. Abbildung 27: Interaktion verschiedener SIP-Server
  • 47. 2. VoIP (IP-Telefonie) 422.7.2 Grundlegende Funktionsweise2.7.2.1 AdressierungAlle Objekte, die von SIP adressiert werden können, werden mit einem so genannten SIPUniform Resource Locator (URL) identifiziert. Das Format einer derartigen URL entsprichtder Form sip:user@host, was im Wesentlichen mit einer E-Mail Adresse vergleichbar ist. DerUser-Teil der URL ist frei wählbar. Es kann sich dabei entweder um eine Person bzw. eineTelefonnummer, um eine Gruppe von Personen oder um einen allgemeinen Dienst handeln,dem keine bestimmte Person zugeordnet werden kann. Der Hostteil kann aber einDomänename oder eine Netzwerkadresse sein. Die folgenden Beispiele zeigen zwei möglicheSIP-URLs: sip:snom1@ serserver.dn.fh-koeln.de sip:7654321@139.6.19.65Welche SIP URL ein Benutzer verwenden will, spielt grundsätzlich keine Rolle. Jedoch solltebeachtet werden, dass die Verwendung einer URL, welche aus dem Benutzernamen abgeleitetwerden kann (z.B. sip:Lotfi_faik@serserver.dn.fh-koeln.de), die Anonymität einer reinenTelefonnummer untergräbt.2.7.2.2 Das Auffinden eines ServersEin Client kann eine SIP-Anfrage entweder direkt an einen lokal konfigurierten Proxy-Serversenden oder an die IP-Adresse und den Port der zugehörigen SIP-URL. Das Senden einerdirekten SIP-Anfrage ist relativ einfach, da die Applikation des Endsystems den Proxy-Serverkennt. Das Senden einer SIP-Anfrage auf die zweite Weise ist aus den folgenden Gründenetwas komplizierter: - Der Client muss die IP-Adresse und Portnummer des Servers bestimmen, für den die Anfrage bestimmt ist. - Wenn die Portnummer in der angefragten SIP-URL nicht angegeben ist geben ist, ist der Standardport 5060. - Wenn der Protokolltyp in der Anfrage-SIP-URL nicht geben ist, muss der Client erst versuchen sich mit dem User Datagram Protocol (UDP) zu verbinden und anschließend mit dem Transmission Control Protocol (TCP). - Der Client fragt den Domain-Name-System (DNS-)Server nach der Host-IP-Adresse. Wenn dieser keine Adresse bestimmen kann, kann der Client den Server nicht finden und damit nicht mit der Anfrage fortfahren.
  • 48. 2. VoIP (IP-Telefonie) 432.7.2.3 SIP-TransaktionenNachdem die Adressen aufgelöst sind, sendet der Client eine oder mehrere SIP Anfragen undempfängt eine oder mehrere Antworten von dem angegebenen Server. Alle mit dieserAktivität verbundenen Anfragen und Antworten werden als Teil einer SIP-Transaktionbetrachtet. Aus Gründen der Einfachheit und Konsistenz stimmen die Headerfelder in allenAnfrage-Meldungen mit Headerfeldern in allen Antwort-Meldungen überein.SIP-Transaktionen können entweder per UDP oder per TCP übertragen werden. Im Falle desTCP können alle Anfrage und Antwort-Meldungen in Bezug auf eine einzige SIP Transaktionüber dieselbe TCP Verbindung übertragen werden. Über dieselbe TCP-Verbindung könnenauch separate SIP-Transaktionen zwischen den beiden Einheiten übertragen werden. Bei derVerwendung des UDP wird die Antwort an die Adresse gesendet, die im Headerfeld derAnfrage angegeben wurde.2.7.2.4 Das Auffinden eines BenutzersDie angerufene Seite könnte sich mit der Zeit von einem zu mehreren Endsystemen bewegen.Er oder sie könnte während der Teilnahme an einer Konferenz vom Local-Area-Netzwerk(LAN) der Firma in das eigene Büro zu Hause wechseln, das über den eigenen InternetService Provider (ISP) oder über eine öffentliche Internet Verbindung mit dem Internetverbunden ist. Um Standort-Dienste zu ermöglichen muss SIP daher Platz für die Flexibilitätund Mobilität der IP Endsysteme bieten. Die Standorte dieser Endsysteme könnten über denSIP-Server registriert werden oder auch über andere Standort-Server, die sich außerhalb desSIP befinden. Im letzteren Fall speichert der SIP-Server die Standliste mit Hilfe des externenStandort-Servers, der mehrere Möglichkeiten zurückgibt.Die Aktion und das Ergebnis einer Benutzerlokalisierung hängen vom verwendeten SIP-Servertyp ab. Ein SIP Redirect-Server gibt einfach die vollständige Standortliste zurück undbietet dem Client damit die Möglichkeit, den Benutzer direkt aufzufinden. Ein SIP-Proxy-Server kann die Adressen parallel durchprobieren, bis der Anruf erfolgreich ist.2.7.3 SIP-MessageWie erwähnt gibt es zwei Typen von Nachrichten, eine Request und eine Response. Beidehaben eine gleich aufgebaute Struktur. (Abbildung 28)
  • 49. 2. VoIP (IP-Telefonie) 44 Abbildung 28: Aufbau einer SIP-MessageDie Leerzeile (Blank Line) zwischen dem letzten Header und dem Message ist zwingend,auch wenn kein Message Body vorhanden ist.Jede Zeile, sei das eine Start-Line, eine Headerzeile oder eine Zeile aus dem Message Body,wird mit einem CRLF32 (Carriage Return Line Feed) abgeschlossen. Start-LineMit der Start-Line kann unterschieden werden, ob die SIP-Message ein Request oder einResponse ist, denn sie unterscheiden sich in der Syntax.Per [rfc3261] wird die Start-Line in einer Request Message als Request-Line definiert und dieResponse Message startet mit einer Status-Line. Das Format für die beiden Start-Lines siehtfolgendermaßen aus:Request: method SP33 request-URI SP SIP-Version CRLFResponse: SIP-Version SP status-code SP reason phrase CRLFDa die SIP-Version stets das Format SIP/X.X hat, kann mit Leichtigkeit festgestellt werden,ob es sich nun um eine Request oder Response handelt, denn es gibt keine Methode, die miteinem ’S’ beginnt.Auf die Methode in der Request sowie den Status-Code und die Reason Phrase in derResponse wird in noch kommenden entsprechenden Kapiteln eingegangen.32 Carriage Return: Ein Formatsteuerzeichen, das zur Rückbewegung der Schreibeinrichtung auf die ersteSchreibposition in derselben Zeile. Line Feed: Neue Zeile33 Space
  • 50. 2. VoIP (IP-Telefonie) 45 HeaderEs gibt drei verschiedene Typen der Headers. Gewisse Kopfzeilen sind sowohl in der Requestals auch in der Response Message enthalten. Diese Header werden auch General Headergenannt. Kopfzeilen, die Bezug auf den Message Body haben, werden im Entity Headerberücksichtigt. Die Request-Header enthalten zusätzliche Informationen, die ein Client miteiner Request Message dem Server mitteilen kann.Das Headerformat lautet: header name : SP header value CRLFVor und nach dem ’:’ dürfen beliebig viele Leerzeichen oder Tabulatoren eingefügt werden.Es sind nur die wichtigsten und notwendigen Header erläutert. • General Header: General Headers sind zwingend nötig in der Request und der Response. Call-ID: Mit der Call-ID wird eine SIP-Verbindung eindeutig identifiziert. Mit Hilfe dieses Headers kann eine Message einer Transaktion zugewiesen werden. Es können Duplikate erkennt werden, die z.B. auf dem Weg durch einen Forking Proxy entstehen. Die Call-ID ist einmalig und für jeden Anruf neu zu erstellen. CSeq: Das CSeq Header-Feld besteht aus einer Sequenznummer und dem Methodennamen. Der Anfangswert der CSeq-Nummer ist beliebig und wird bei jedem neuen Request inkrementiert. Es sei denn, dass es eine Wiederholung des Request ist. Einzige Ausnahmen sind die Methoden ACK und CANCEL, welche die CSeq-Nummer des Request, den sie bestätigen oder abbrechen, übernehmen. Der Server kopiert die CSeq von der Request in die entsprechende Response. Contact: Mittels des Contact-Feldes gibt der Sender an, wo er die Antworten des Empfängers erwartet. From: Dieses Feld beinhaltet einen optionalen Anzeigenamen und die Adresse des Erstellers eines Requests. Zusätzlich können Tags angefügt werden. Bei einer Response wird der From-Header direkt von der Request übernommen und sagt somit nichts über den Sender der Nachricht aus. To: Bezeichnet den beabsichtigten Empfänger eines Requests. Via: Mit Hilfe des Via-Headers kann der Weg der Message über mehrere Hops zurückverfolgt werden. So wird sichergestellt, dass eine Response denselben
  • 51. 2. VoIP (IP-Telefonie) 46 Weg wie der Request, in umgekehrter Reihenfolge, nimmt. Jeder Proxy fügt seine Adresse in diesem Header-Feld an. • Entity Header: Zur weiteren Beschreibung des noch folgenden Message Bodys, dienen diese Kopfzeilen. Sie weisen auf die Größe oder den Typ hin. Content-Type: Dieser Header beschreibt das Medium, welches im Message Body verwendet wird (z.B. SDP, HTML34 etc.). Content-length: Gibt die Anzahl Oktette im Message Body an. • Request Header: Diese Header sind nicht zwingend notwendig, verringern aber die Anzahl der SIP- Messages, die ausgetauscht werden müssen, um eine gültige Client-Server Verbindung zu erreichen. Accept: Der optionale Header teilt dem Server mit, welche Typen von Medien in der Response akzeptiert werden. Somit kann der Server von Anfang an den korrekten Typ versenden, sofern er ihn unterstützt, und muss seinerseits nicht auch noch eine Auswahl schicken, die zuerst noch ausgewertet werden müsste. Subject: Der freie Text, der hier angefügt werden kann, sollte Informationen über den laufenden Anruf geben Message BodyIm Message Body sind Informationen enthalten, die die Verbindung genauer umschreiben.Hier können verschiedene Protokolltypen zum Einsatz kommen. Unter anderem sind dieseSDP (Session Description Protocol), verschlüsselte SDP, HTML etc.Das SDP ist, wie der Name schon vermuten lässt, ein Protokoll zur Beschreibung vonmultimedialen Sitzungen, welches in der RFC 2327 spezifiziert ist. Jede SDP-Nachricht liegtim Klartext vor.34 HTML: Hyper Text Markup Language
  • 52. 2. VoIP (IP-Telefonie) 47 START-LINE INVITE sip:snom2@139.6.19.65 SIP/2.0 Via: SIP/2.0/UDP 1CSeq: 799 INVITE To: <sip:snom2@139.6.19.65> Content-Type: application/sdp From: "snom1" <sip: snom1@139.6.19.65 >;tag=64ACEA4F HEADER Call-ID: 1219380128@139.6.19.49 Subject: Important Call Content-Length: 183 User-Agent: KPhone/3.11 Contact: "snom1" <snom1@139.6.19.65;transport=udp> v=0 o=root 0 0 IN IP4 139.6.19.49 s=call c=IN IP4 139.6.19.49 BODY t=0 0 m=audio 32820 RTP/AVP35 0 97 3 a=rtpmap:0 PCMU/8000 a=rtpmap:3 GSM/8000 a=rtpmap:97 iLBC/8000 Abbildung 29: Beispiel einer SIP-Request (INVITE) mit SDP-BeschreibungIn der Abbildung 29 ist ein Beispiel für eine SDP-Nachricht zu sehen. Jede Zeile dieserNachricht besitzt die Form type=value. Der type besteht dabei immer aus genau einemBuchstaben. Für den Inhalt des value ist kein bestimmtes Format vorgeschrieben. Jedoch sinddie Interpretationsmöglichkeiten des value vom angegebenen type abhängig.Die Sitzungsbeschreibung setzt sich aus 3 Teilen zusammen: - Spezifikation der Sitzung (v-,o-,s- und c-Zeile) - Zeitbeschreibung (t-Zeile) - Medienbeschreibung (m- und a-Zeile)Am Anfang der Beispielnachricht ist in Zeile 1 die verwendete Protokollversion zu sehen. DieZeile 2 enthält Informationen über den Besitzer bzw. Initiator der Sitzung und eineIdentifikationsnummer für die Sitzung selbst, dessen Bezeichnung in Zeile 3 zu finden ist.Jede SDP-Nachricht muss Informationen über die Netzwerkverbindung der Sitzungbeinhalten. In der Beispielnachricht wird diese Information in der Zeile 4 angegeben. Siebesteht aus dem Netzwerktyp (IN = Internet), dem Adresstyp und der IP-Adresse, welche fürdie Sitzung verwendet wird. Üblicherweise wird diese IP-Adresse in Form einer Multicast-Adresse vorliegen.In der Zeile 5 wird eine Zeitspanne angegeben, in der die Sitzung gültig ist.In der Zeile 6 wird ein Attribut für das verwendete Medium angegeben, es wird einAudiokanal definiert, welcher auf Port 32820 über RTP gesendet wird, dabei beherrscht dasEndgerät die Audiocodecs deren Parameter 0, 97 und 3 sind.35 RTP/AVP: Realtime Transport Protocol/Audio Video Profiles)
  • 53. 2. VoIP (IP-Telefonie) 48In den Zeilen 7, 8 und 9 werden die Audiocodecs durch das Attribut rtpmap näher erläutert, eshandelt sich um die Codecs PCM µ-law, GSM und iLBC mit den Abtastraten (8000 Hz).In der folgenden Tabelle sind sämtliche SDP-Parameter kurz beschrieben. Tabelle 3: SDP-Parameter [7]2.7.3.1 SIP-RequestSIP Requests werden vom Client zum Server geschickt. Die Methoden unterscheiden dieNachrichten und lösen beim Server entsprechende Responses aus. Die sechs verschiedenenMethoden werden nachfolgend erläutert.ACK: Der Client bestätigt mit einem ACK, dass er vom Server eine Final-Response (z.B. 200 OK).BYE: Um einen Anruf zu beenden wird entweder vom Anrufer oder vom Angerufenen eine BYE-Request versendet.
  • 54. 2. VoIP (IP-Telefonie) 49CANCEL: Hat der Server nicht mit einer Final-Response auf eine Request geantwortet, kann der Client den Request mit einem CANCEL abbrechen.INVITE: INVITE wird benützt, um einen Anruf zu initialisierenOPTIONS: Der Client kann mit dieser Methode mehr über die Kapazitäten und die unterstützten Methoden des Servers erfahren.REGISTER: Clients können ihre aktuelle Position und damit die aktuelle Adresse registrieren lassen. SIP Server, welche REGISTER Requests behandeln können, werden Registrar genannt.2.7.3.2 SIP-ResponseJeder Request außer ACK muss mit einer geeigneten Response beantwortet werden. START-LINE SIP/2.0 200 OK From: <sip:snom1@139.6.19.65>;tag=43w10q722k CSeq: 4 NOTIFY Call-ID: 3c26700938ef-3fdv4sj9oz7m@139-6-19-49 HEADER To: <sip:139.6.19.49:5060>;tag=pq7h13pek3 Content-Length: 0 User-Agent: kphone/4.0 Contact: "snom1" <snom1@139.6.19.65;transport=udp> Abbildung 30: Beispiel einer SIP-ResponseMit einer Final-Response, deren Status Code 200-699 ist, wird eine SIP Transaktion beendet.Mit einer provisorischen Response, Status Code 1xx, wird die Transaktion nicht beendet. Ineiner Start-Line, genauer Status-Line, wird einem Status Code eine Reason Phrase angefügt,die den Status Code in Worten beschreibt. Jeder Status Code hat seine eigene Reason Phrase.Der Server kopiert größtenteils den Header, den er in einer Request erhält, in den Headerseiner Response. Falls der Server dem Client noch zusätzliche Informationen schicken will,fügt er den betreffenden Header an.Es wird zwischen sechs verschiedenen Klassen beim Status Code unterschieden (SieheTabelle 3 und auch Anhang 1). Das erste Zeichen bezeichnet die Kategorie.
  • 55. 2. VoIP (IP-Telefonie) 50 Code Bedeutung 1xx Provisional. Der Request wurde empfangen und wird nun verarbeitet 2xx Success. Die Anfrage wurde erfolgreich empfangen und verarbeitet 3xx Redirection. Der Anruf wird an einen anderen Server weitergeleitet 4xx Client Error. Es ist ein Fehler auf der Clientseite aufgetreten 5xx Server Error. Es ist ein Fehler auf der Serverseite aufgetreten 6xx Global Failure. Die Anfrage kann von keinem Server erfüllt werden Tabelle 4: SIP Status CodecsFalls vom Client ein spezifischer Status Code Cxx nicht verstanden wird, soll er ihn wie einC00 Code behandeln. Somit können auch ältere Terminals auf neuere Status Codes richtigreagieren und der User kann anhand der Beschreibung auf das Problem schließen.2.7.4 SIP-RegistrierungFür eine Registrierung schickt ein Endpunkt eine REGISTER-Nachricht an den Registrar. Inder Nachricht enthalten sind Informationen, unter welchen URL der Benutzer erreichbar istund wie lange die Registrierung gültig sein soll. Da sich ein Benutzer als ein anderer angebenkann, ist es bei SIP möglich, dass ein Registrar oder ein Proxy die Authentisierungeines Benutzers verlangen kann.SIP unterstützt zwei Methoden der Authentisierung: Basic und Digest. Bei der Basic-Authentisierung wird das Benutzerkennwort im Klartext vom Endpunkt an den Proxygeschickt.Da die Nachrichten abgefangen werden können, bietet diese Methode nur geringfügig mehrSicherheit als das Auslassen eines Kennwortes. Aus diesem Grund wird die Basic- Methodein neueren SIP-Versionen nicht mehr unterstützt. Bei der Digest-Authentisierung bekommtder Endpunkt vom Server einen Wert mitgeteilt, den er mit dem Benutzerkennwortverknüpfen soll. Über diesen verknüpften Wert wird ein MD536-Hash erstellt, der dann alsKennwort zum Server geschickt wird, in dessen Datenbank das Kennwort im Klartext36 MD5 (Message Digest Algorithm 5) ist ein in Authentifikationsprotokollen verwendeter Algorithmus, der aufeiner Einwegübertragung mittels Hashfunktion (kryptografische Prüfsumme) und einem Schlüssel basiert. Daherkönnen aus dem Ergebnis keine Rückschlüsse auf den Schlüssel erfolgen. Dem Verfahren nach wird aus einerbeliebig langen Nachricht eine 128 Bit lange Information, der Message Digest gebildet, der an dieunverschlüsselte Nachricht angehangen wird. Der Empfänger vergleicht den Message Digest mit dem von ihmaus der Information ermittelten Wert.
  • 56. 2. VoIP (IP-Telefonie) 51vorliegen muss, damit er dieselbe Operation wie der Endpunkt durchführen kann.Der Registrar kann ebenfalls über ein ausgelagertes Policy37-Modul verfügen. Um einebenutzerabhängige Politik zu betreiben, muss er nun das Policy-Modul befragen, ob derBenutzer autorisiert ist, sich zu registrieren. Im Rahmen dieser Diplomarbeit wird einRADIUS-Server eingesetzt, der u.a. die Aufgabe eines Policy-Moduls bei der Registrierungübernimmt. Abbildung 31: Ablauf einer SIP-RegistrierungNach Erhalt der Register-Nachricht muss der Registrar entscheiden, ob er den Benutzer sofortannimmt oder ablehnt, oder ob er weitere Informationen benötigt. Der Registrar fordert denBenutzer auf, sich zu authentisieren. In dieser Aufforderung ist der Initialwert für das Digest-Authentisierungsverfahren. Der Benutzer gibt seine Authentisierungsinformationen ein, undder Endpunkt übermittelt diese in einer neuen Register-Nachricht.Nachdem die Authentizität des Benutzers festgestellt worden ist, wendet sich der Registrar andas Policy-Modul, um herauszufinden, ob der Benutzer sich registrieren darf. Das Policy-Modul bestätigt die Registrierung und erteilt die Erlaubnis, die der Registrar an den Benutzerweiterleitet.Das Digest-Authentisierungsverfahren stellt sicher, dass Kennwörter nicht im Klartextübertragen werden. Auch aus abgehörten Nachrichten lässt sich das Kennwort nichtberechnen.37 Policy: Politik: Ein Registrar betreibt eine gewisse Politik, wenn er Benutzer anhand verschiedener Kriterienannimmt oder ablehnt.
  • 57. 2. VoIP (IP-Telefonie) 522.7.4 SIP-VerbindungsablaufIm folgenden Beispiel von Abbildung 32 sind zwei Benutzer (snom1 und snom2) an einemSIP Proxy angemeldet. Wenn snom1 snom2 anrufen möchte, schickt der UA von snom1 eineINVITE-Nachricht an den Proxy, der diese, da er vom Registrar den gegenwärtigenAufenthaltsort von snom2 kennt, an den UA von snom2 weiterschickt. Gleichzeitig informierter snom1 über den versuchten Verbindungsaufbau (TRYING) Der UA von snom2 schickt alsAntwort auf die INVITE-Nachricht über den Proxy ein RINGING zurück. Hebt snom2 nunden Hörer ab, wird eine OK-Nachricht versandt, die von snom1 mit ACK bestätigt wird.Ab diesem Zeitpunkt läuft die Verbindung direkt zwischen den UAs von snom1 und snom2,die einen RTP-Kanal für die Sprachdaten aushandeln und aufbauen und sich die Nachrichtenzum Verbindungsabbau auch direkt zusenden.Legt snom2 am Ende des Telefonats auf, wird eine BYE-Nachricht zu snom1 versandt, dieserantwortet darauf mit einer OK-Nachricht. So ist die Verbindung abgebaut. Abbildung 32: SIP-Verbindungsablauf
  • 58. 2. VoIP (IP-Telefonie) 532.8 SIP im Vergleich zu H.323Hinter H.323 und SIP stecken zwei völlig unterschiedliche Ansätze, um IP-Telefonie zubetreiben. Der grundlegende Unterschied zwischen H.323 und SIP liegt in der Herkunft derStandards: H.323 kommt aus der TK(Telekommunikation)-Welt und ist stark an ISDNangelehnt, SIP hingegen entstammt der IP-Welt und stützt sich entsprechend aufinternettypische Festlegungen.Dieser Abschnitt soll daher die wesentlichsten Unterschiede zwischen H.323 und SIPaufzeigen und einige Vergleiche anstellen.2.8.1 Auf- und Abbau einer VerbindungDie Signalisierung für den Verbindungsaufbau basiert bei H.323 Version 2 auf einemzuverlässigen Transportprotokoll, wie z. B. TCP. Für den Aufbau eines Gesprächs sind somitzwei Phasen notwendig: Der Aufbau der TCP-Verbindung und die Übertragung dernotwendigen Signalisierung für den Aufbau des Gesprächs.Erst bei H.323 Version 3 besteht die Möglichkeit, auch UDP für den Signalisierungskanal zuverwenden. Was die Signalisierung für einen Verbindungsaufbau betrifft, ist H.323 Version 3somit in etwa äquivalent mit SIP. Der Abbau einer Verbindung erfolgt ebenfalls auf ähnlicheWeise, da die H.323 ReleaseComplete Message ein Äquivalent zum BYE Request von SIPdarstellt.2.8.2 KomplexitätIn der Spezifikation von H.323 sind viele andere Protokolle involviert. Dazu gehören H.225.0als Signalisierungsprotokoll, H.245 für verschiedene Kontrollmechanismen, H.450 für dieSpezifikation von zusätzlichen Diensten (Supplementary Services), H.235 für Aspekte derSicherheit und Verschlüsselung und H.246 für die Interoperabilität mit Diensten aus demSCN (Switched Circuit Network). Auf Grund der engen Verzahnung der soeben genanntenProtokolle ergibt sich eine hohe Komplexität von H.323. So benötigt man z. B. für dieWeiterleitung eines Telefongesprächs (Call Forwarding) Teile aus dem H.450, H.225.0 unddem H.245 Standard. Ein weiterer Unterschied ist die Anzahl der definierten Elemente. H.323spezifiziert einige hundert verschiedener Elemente, wobei SIP mit der Definition von 37verschiedenen Headern auskommt. Daher ist es auch nicht verwunderlich, dass dieSpezifikationen der genannten Standards aus der H-Serie zusammen über 700 Seiten dicksind. Im Gegensatz dazu beträgt die Anzahl der Seiten aller notwendigen Spezifikationen fürSIP etwa 128.
  • 59. 2. VoIP (IP-Telefonie) 54Ein weiterer Unterschied ist die Syntax der verwendeten Messages. Alle H.323 Messagesliegen in einem Binärformat vor, das auf der Abstract Syntax Notation One (ASN.1) basiert.Als Ausgangsmaterial für Softwareentwicklungen auf der Basis von H.323 ist also zuersteinmal ein ASN.1-Parser notwendig, um aus den ASN.1-Definitionen aller Messagesentsprechenden Quellcode generieren zu können. Im Gegensatz dazu liegen alle Nachrichtenfür SIP als Text vor. Auch was die Fehlersuche betrifft ist eine Klartextdarstellung zubevorzugen, da keine externen Hilfsmittel benötigt werden, um Daten in eine für denMenschen lesbare Form zu konvertieren.2.8.3 ErweiterbarkeitAls Bewertungskriterium für ein Signalisierungsprotokoll spielt die Erweiterbarkeit einewesentliche Rolle. Denn schließlich hat die Einführung der IP-Telefonie gerade erstbegonnen. Und in Zukunft sind noch viele Erweiterungen und neue Forderungen zu erwarten,die vor allem Einflüsse auf die Signalisierungsprotokolle haben werden.H.323 verfügt über Erweiterungsmöglichkeiten. Diese liegen meist in Form vonnonstandardParam Feldern in der ASN.1-Definition der Messages vor. Diese Felder enthalteneinen herstellerspezifischen Code, gefolgt von einem Wert, welcher der Erweiterungentspricht. Dieser Ansatz erlaubt jedem Hersteller die Einführung von eigenen Erweiterungen,wobei jedoch zwei essentielle Nachteile existieren. Erstens können Erweiterungen nur an denStellen vorgenommen werden, die explizit mit nonstandardParam Feldern versehen sind. Undzweitens reduzieren Erweiterungen die Interoperabilität zwischen Produkten unterschiedlicherHersteller, da H.323 keine Möglichkeit vorsieht, Informationen über die vorhandenenErweiterungen auszutauschen.SIP verfügt ebenfalls über Erweiterungsmöglichkeiten mit neuen Features, wobei der großeVorteil ist, dass es nicht festlegt, welche Erweiterungen obligatorisch sind.2.8.4 SkalierbarkeitUnter Skalierbarkeit versteht man die flexible und exakte Anpassung einer Hardware oderSoftwarelösung an die Kundenanforderungen.Die Serverbelastung ist ein wichtiges Merkmal, an dem die Skalierbarkeit gemessen werdenkann. Die Signalisierungen bei SIP sind zustandslos und können bei Bedarf über UDPerfolgen. Speziell für Backbone38-Server ist die daraus resultierende Minimierung desProtokolloverhead eine Quelle für hohe Skalierbarkeit. Ein H.323 Gatekeeper benötigt38 Unter Backbone versteht man die breitbandigen Hauptdatenleitungen im Internet.
  • 60. 2. VoIP (IP-Telefonie) 55hingegen für jeden Signalisierungskanal eine eigene TCP-Verbindung. In zukünftigenVersionen von H.323 ist geplant, die Signalisierung alternativ auch über UDP zuermöglichen. Da ein Gatekeeper jedoch weiterhin für die gesamte Dauer eines Gesprächsdessen Status überwachen muss, ergibt dies für Gatekeeper in größeren Systemen einSkalierungsproblem.Eigenschaft H.323 SIPHerausgeber ITU-T IETFPhilosophie Genau definierte Auf- und Abbau einer Sitzung Systemarchitektur und von zwei oder mehreren Implementierungsrichtlinien. Teilnehmern. Regelung von Anrufaufbau, - Nur das Nötigste zum abbau, Steuerung und Medium. Verbindungsaufbau ist festgelegt.Anforderung Telekommunikationstechnik InternetRückwärtskompatibilität Leistungsmerkmale werden als Ältere und überholte Ergänzung zu den vorhandenen Leistungsmerkmale werden hinzugefügt. durch neue ersetzt.Architektur Steuerung durch einen Server. Steuerung durch den Client.Nachrichtenkodierung Binär TextbasiertKonferenzsteuerung Ja NeinSignalisierungsserver Gatekeeper SIP Proxy ServerMedientransportprotokoll RTP/RTCP RTP/RTCPCodec-Unterstützung ITU-Codecs BeliebigOpen-Source-Projekte www.openh323.org www.iptel.org Tabelle 5: Vergleich von H.323 und SIP3. AAA (Authentication, Authorization, Accounting) und Billing
  • 61. 3. AAA 56AAA ist die englische Abkürzung für Authentication (Authentifizierung), Authorization(Autorisierung) und Accounting (sinngemäß Buchhaltung/Buchführung), während Billing derProzess der Rechnungslegung ist. • AuthenticationAuthentication ist, aus Sicht des Nutzers, der Prozess, bei dem festgestellt wird, wer derjeweilige Nutzer ist, zum Beispiel durch Überprüfung des vom Nutzer angegebenen Namensund des dazugehörigen Passwortes. • AuthorizationAuthorization ist der Prozess, in welchem dem Nutzer bestimmte Rechte zugewiesen werden.Hier wird festgestellt, welche Aktivitäten, Ressourcen oder Dienste ein Nutzer in Anspruchnehmen darf.Authentication und Authorization gehen meist Hand in Hand. Sobald ein Nutzerauthentifiziert ist, wird er auch (unabhängig vom Systemstatus) autorisiert, bestimmte Dienstezu nutzen. • AccountingAccounting ist das Erfassen von Daten mit dem Inhalt, welche Dienste von wem, wann undwie lange (Zeitpunkte Dienstbeginn und Dienstende) in Anspruch genommen wurden. DieseDaten werden durch das Speichern (so genanntes Logging) von Verbindungen (auch alsSessions bezeichnet) im Zusammenhang mit den Nutzerinformationen erhoben.Die Accounting-Daten werden für verschiedene Zwecke ausgewertet. Zum einen primär zurRechnungsstellung (Fachbegriff: Billing), aber auch zur Kontrolle derAuthentifizierungsvorgänge, Analyse des Nutzerverhaltens (zum Beispiel für ISP’s39Ermittlung von so genannten Power-Usern bei Flatrate-Angeboten), Erfassung derSystemauslastung über einen bestimmten Zeitraum, um dadurch die Planung vonKapazitätserhöhungen zu ermöglichen und ähnliches. • BillingBilling (Rechnungslegung) ist der Prozess, aus den angefallenen Accounting-Daten dieInanspruchnahme eines Dienstes (zum Beispiel Internetzugang) über einen bestimmtenZeitraum (zum Beispiel Monat) von einem bestimmten Nutzer herauszufiltern, diese Datennach dem zugrunde liegenden Tarifsystem in einen entsprechenden Betrag umzurechnen unddem Nutzer in Rechnung zu stellen.39 ISP: Internet Service Provider
  • 62. 3. AAA 573.1 AAA-Komponenten3.1.1 AAA-ClientsAAA-Clients nehmen die Zugangsanforderung vom Benutzer entgegen. Hierbei handelt essich oft um Network Access Server (NAS), die Nutzern beispielsweise die Modemeinwahlermöglichen.Der AAA-Client gibt die Authentifizierungsanforderung an den lokalen AAA-Server weiter.3.1.2 AAA-ServerAAA-Server beantworten die Anfragen der Clients. Anhand einer Benutzerdatenbankentscheidet der Server, ob dem Nutzer die gewünschten Rechte gewährt werden. Kann derServer eine Anfrage nicht bearbeiten, da er die Identität des Benutzers nicht kennt, so leitet erdie Anfrage an einen ihm bekannten AAA-Server weiter.3.1.3 AAA-ProxiesAAA-Proxies sind AAA-Server, die AAA-Anfragen weiterleiten. Abbildung 33: AAA-Client, Server und Proxies
  • 63. 3. AAA 583.2 AAA-Architektur Abbildung 34: AAA-ArchitekturDie AAA-Aufgaben (Authentication, Authorization, Accounting) fallen an, wenn Benutzer,die nicht fest mit einem Netz verbunden sind, Zugang über mobile40 und bewegliche41Endgeräte verlangen.AAA definiert einen Rahmen für die genannten Aufgaben.Die AAA-Architektur (Abbildung 34) sieht einen AAA-Server vor, der eine Datenbank mitbenutzerspezifischen Informationen enthält.Die Benutzer kommunizieren mit AAA-Clients, die sich auf Netzwerkkomponenten wieNAS (Network Access Server) oder Routern befinden.Will ein Benutzer verschiedene Dienste nutzen (insbesondere Zugang zu einem Rechnernetz),so stellt er – möglicherweise per Modem, WLAN-Adapter oder auch durch eineTerminalsitzung – eine Verbindung zum jeweiligen Network Access Server her. Er meldetsich mit seiner Benutzerkennung und eventuell einem Passwort.40 Mobile Endgeräte können an verschiedenen Zugangspunkten an ein Netz angeschlossen werden41 Bewegliche Endgeräte: Roaming, der Zugangspunkt ändert sich während einer bestehenden Verbindung
  • 64. 3. AAA 59Der NAS agiert gegenüber dem lokalen AAA-Server als AAA-Client und übermittelt dieAuthentifizierungsanforderung mit einer Benutzerkennung. Kennt der Server die Identität desNutzers, befindet sich der Nutzer also in seiner heimischen Verwaltungszone, so kann derServer nach Prüfung des Passwortes die Nutzung der Dienstleistungen gestatten.Ist dem Server der Benutzer nicht bekannt, leitet er die Anforderung des Clients an ihmbekannte AAA-Server weiter. Dies setzt voraus, dass der Server möglichst viele weitereServer kennt und auch stets eine sichere Kommunikation zwischen den Servern gewährleistetist, eine so genannte Security Association muss zwischen den Servern bestehen.Damit Nutzer über Verwaltungszonen hinweg und auch außerhalb ihrer HeimatdomäneDienstleistungen nutzen können, werden Broker eingeführt (Abbildung 35).AAA-Server besitzen Security Associations mit Brokern, die wiederum Securtiy Associationsmit sehr vielen weiteren Servern besitzen. Der Broker kann eingehende Anforderungen an denentsprechenden Server weiterleiten.Die AAA-Architektur entspricht einem klassischen Client-Server-Modell. Dabei fordert stetsder Client die Dienste eines Servers an. Dies bedeutet insbesondere, dass der Server demClient nicht willkürlich Nachrichten senden kann, einer Nachricht an den Client geht immereine Anforderung des Clients an den Server voraus. Abbildung 35: AAA-Architektur ohne und mit Broker
  • 65. 3. AAA 603.3 AAA-ProtokolleKonkrete Protokolle für AAA sind RADIUS, TACACS und Diameter.3.3.1 RADIUSRADIUS (Remote Authentication Dial-In User Service, RFC 2058, RFC 2138 und 2139) istdas wichtigste AAA-Protokoll.RADIUS legt eine Client-Server-Architektur zu Grunde, ein RADIUS-Server kann auch alsProxy-Client für einen anderen RADIUS-Server stehen.Die Kommunikation zwischen Clients und Servern wird authentifiziert, Passwörter werdenbei der Übertragung verschlüsselt.Auch Authentifikationsmechanismen können unter anderem PAP42 und CHAP 43 verwendetwerden. [4]3.3.2 TACACSTACACS (Terminal Access Controller Access Control System, RFC 1492) ist ein Cisco-Protokoll für AAA.Es gab neuere Versionen von TACACS, XTACACS und zuletzt TACACS+.TACACS+ erfüllt ähnliche Aufgaben wie RADIUS.TACACS+ nutzt TCP als Transportprotokoll, während RADIUS auf UDP aufsetzt.In TACACS+ wird die gesamte Nutzlast verschlüsselt.Authentifikation und Autorisierung können in TACACS+ unabhängig voneinander gelöstwerden, während RADIUS die beiden Aufgaben zusammen behandelt. [4]3.3.3 DIAMETERDiameter ist (im Gegensatz zu RADIUS und TACACS+) für große Netze konzipiert.Es verwendet viele der in RADIUS enthaltenen Mechanismen, erweitert aber gleichzeitig dievon RADIUS gegebenen Grenzen. Diameter ist für Benutzer ausgelegt, die im Netz ihres ISP42 PAP: Password Authentication Protocol, dabei werden die User-ID und das Passwort ohne Sicherheitübertragen.43 CHAP: Challenge Handshake Authentication Protocol, der Client authentifiziert sich durch die KorrekteAusführung einer kryptographischen Operation auf einem vom Server vorgegeben Wert.
  • 66. 3. AAA 61mobil (Dial-In-User44) sind oder auch über Netze fremder ISP zugreifen wollen (Roaming-User45).Dazu wird zwischen dem Heimat- und dem Fremdnetz ein Diameter Broker eingesetzt, derAAA-relevante Nachrichten zwischen den beiden Netzen austauscht. [4]44 Benutzer wählt sich in das Netz seines Heimat-ISP ein45 Benutzer wählt sich in ein Fremnetz (Netz eines fremden ISP) ein, solange er sich im Bereich dieses Netzesbefindet. Die Verbindung zum Heimatnetz erfolgt über das Internet, die Authentifikation im Fremdnetz.
  • 67. 4. RADIUS 624. RADIUS4.1 EinführungRemote Authentication Dial-In User Service (RADIUS) ist ein Protokoll, welches unter derIETF (Internet Engineering Task Force) geführt wird und in den RFCs 2138 (RADIUSAuthentication) und 2139 (RADIUS Accounting) beschrieben ist. Durch diesen Ansatz giltdas Protokoll als Standard und wird von allen führenden Herstellern von Remote AccessHard- und Software unterstützt. Diese Unterstützung beruht auf einem zweiteiligen Konzept.Sämtliche Informationen, die der RADIUS-Server benötigt um alle Funktionen eines RemoteAccess Servers anzusprechen, werden in dem so genannten Dictionary File46 im ASCIIFormat beschrieben. Es gibt ein Dictionary, welches die Grundfunktionen für den RADIUS-Support beschreibt. Ein Remote Access Server muss diese Funktionen verstehen undverarbeiten können, um RADIUS kompatibel nach RFC zu sein.Zusätzlich kann ein Hersteller von Remote Access Hardware, Firewall oder auch VPNSoftware ein eigenes, herstellerbezogenes Dictionary47 bereitstellen, welches dem RADIUS-Server die erweiterten Funktionen zur Verfügung stellt.Somit steht eine flexible, genormte Schnittstelle zur Verfügung, die es ermöglicht, nahezujedes Gerät oder jede Software - die einen Remote-Zugang zum Netzwerk bereitstellt - in einzentrales RADIUS gestütztes System einzubeziehen.4.2 Radius-Eigenschaften • Client/Server-ModellEin Network Access Server (NAS) fungiert als RADIUS-Client. Der Client ist dafürverantwortlich die benötigten Benutzerinformationen an den RADIUS-Server zu übermittelnund auf der Grundlage der Antwort des Servers weiter mit der Anfrage zu verfahren. DerRADIUS-Server besitzt also die nötige Logik Benutzeranfragen zu bearbeiten, die Benutzerzu authentifizieren und autorisieren und anschließend alle notwendigenKonfigurationsinformationen an den Client zu senden, damit dieser den Dienst für den Nutzerstarten kann.46 Siehe Anhang 1: SIP Status Code.47 Im Rahmen dieser Diplomarbeit wird ein Dictionary vom SIP-Express-Router (Die Datei dictionary.ser(Anhang 2)) angewendet.
  • 68. 4. RADIUS 63 • UDP als TransportprotokollRADIUS ist ein zustandsloses48 (stateless) Protokoll, daher werden die RADIUS-Paketezwischen Client und Server per UDP statt TCP übertragen. Dabei verzichtet man bewusst aufdie Transportsicherheit von TCP. Ursache ist, dass die TCP-Mechanismen, die einem sicherenTransport dienen, nicht den Anforderungen von RADIUS genügen. Ist beispielsweise einRADIUS-Server nicht erreichbar, so soll der Client die Anfrage nach einigen wiederholtfehlgeschlagenen Versuchen sofort einem alternativer Server zustellen. Um jedoch nicht vonden Verzögerungen und Zeitbegrenzungen von TCP abhängig zu sein und selbst diese inweiten Grenzen manipulieren zu können, entschied man sich für UDP.Beim Transport wird genau ein RADIUS-Paket in einem UDP-Datenfeld gekapselt. Abbildung 36: UDP und RADIUS-Paket • NetzwerksicherheitAlle Transaktionen zwischen dem Client und einem RADIUS-Server werden durchsymmetrische Verschlüsselung (shared secret) authentifiziert. Der gemeinsame geheimeSchlüssel wird dabei niemals im Klartext über das Netzwerk übertragen. Zusätzlich werdenalle Benutzerpasswörter, die zwischen den Clients und einem Server übertragen werden,verschlüsselt. Damit wird versucht zu verhindern, dass ein Angreifer aus dem Mitlesen desNetzwerkverkehrs Rückschlüsse auf die verwendeten Passwörter ziehen kann. • Flexibler AuthentifizierungsmechanismusRADIUS arbeitet mit einer Vielzahl von möglichen Benutzerauthentifizierungsmechnismenzusammen. Dazu gehören PPP49, PAP50 oder CHAP51, UNIX login etc.48 Zustandsloses Protokoll: Bei dieser Art der Kommunikation werden keine Daten abgespeichert, die denZustand der Verhandlungen zwischen Client und Server konservieren. D. h., jede Unterhaltung zwischen denBeteiligten beginnt bei Null, und alle relevanten Daten müssen erneut ausgetauscht werden. Das bekanntesteBeispiel ist HTTP (Hyper Text Transfer Protocol) , das diese Zustandslosigkeit durch Cookies oder Session-IDskompensiert, die die Daten entweder auf dem lokalen System oder beim Seitenanbieter abspeichern.49 PPP: Point to Point Protocol50 Password authentication Protocol
  • 69. 4. RADIUS 64 • Erweiterbares ProtokollAlle Nachrichten im RADIUS-System umfassen Attribut-Länge-Wert 3-Tupel mit variablerLänge. Neue Attribute-Value-Paare (AVP) können leicht hinzugefügt werden, ohnebestehende Implementierungen dieses Protokolls zu stören.4.3 RADIUS-Spezifikationen4.3.1 PaketformatDas Radius-Protokoll setzt wie erwähnt auf UDP auf. Die Struktur eines Radius-Pakets istausgesprochen einfach. Es besteht aus fünf grundlegenden Elementen: einem Radius-Code,einem Identifier, einer Angabe zur Paketlänge, einem Authenticator und gegebenenfalls auseiner Reihe von Attributen. Abbildung 37: Struktur des RADIUS-PaketsDer Radius-Code beschreibt die Aufgabe des Datenpakets. Die Codes 1, 2 und 3 verwaltenden reinen Access vom Request bis zur Bestätigung oder Abweisung. Die Codes 4 und 5dienen dem Accounting, ihre Pakete werden zum Port 1813 (Accounting Port) anstatt demPort 1812 (Authentication Port) gesendet.51 CHAP: Challenge Handschake Authentication Protocol
  • 70. 4. RADIUS 65 Code Type of RADIUS-Message 1 Access-Request 2 Access-Accept 3 Access-Reject 4 Accounting-Request 5 Accounting-Response 11 Access-Challenge 12 Status-Server (under continued development) 13 Status-Client (under continued development) 255 Reserved Tabelle 6: RADIUS-CodesDer Identifier ist acht Bit lang und dient der Zuordnung von Anfragen und Antworten.Das sicherheitstechnisch wichtigste Feld eines Radius-Rahmens ist der Authenticator, der eineLänge von 16 Oktetts beziehungsweise vier 32-Bit-Worten hat. Dabei wird zwischen demRequest Authenticator und dem Response Authenticator unterschieden. Inhalt des RequestAuthenticators ist eine Zufallszahl, die das gesamte Feld ausfüllt. Die Länge dieserZufallszahl gewährleistet mit einer sehr hohen Wahrscheinlichkeit die Einmaligkeit diesesWertes. Damit bietet das System einen gewissen Schutz vor Hackerattacken. Mit demVersand des Request Authenticators werden die Zugangsdaten des Nutzers, der sich imgesicherten Netzwerk anmelden möchte, als Attribute übergeben. Der Radius-Server wirddiese Anfrage entweder mit einer Access-Accept-, Access-Reject- oder Access-Challenge-Nachricht beantworten, die ihrerseits mit einem 16 Oktett langen Response Authenticatorversehen ist. Dieser ist ein MD5-Hash-Fingerprint setzt sich zusammen aus dem empfangenenRadius-Paket einschließlich der Attribute sowie den geheimen Zugangsdaten, die auf demServer abgelegt sind, zusammensetzt. Die Attribute eines Radius-Pakets beinhalten allewichtigen Informationen, die zwischen dem RAS und dem Radius-Server ausgetauschtwerden müssen.4.3.2 PakettypenFür die Authentifizierung definiert RADIUS vier Pakettypen, deren Elementinhalte in derfolgenden Tabelle erläutert werden. Das Length-Element beinhaltet immer die Länge:Headers + Payload.
  • 71. 4. RADIUS 66 Element Identifier Authenticator AttributesPacket typeAccess-Request - User-Name Unique per unique over the lifetime - User-Password or CHAP-PasswordCode: 1 Request of a secret - NAS-IP-Address - NAS-Port - Optional AttributesAccess-Accept copy of the MD5(Code+ID+Length Identifier field of +RequestAuth+Attribut Zero or more AttributesCode: 2 the Access-Request es+Secret)Access-Reject copy of the MD5(Code+ID+Length Identifier field of +RequestAuth+Attribut Zero or more AttributesCode: 3 the Access-Request es+Secret)Access-Challenge copy of the MD5(Code+ID+Length Identifier field of +RequestAuth+Attribut Zero or more AttributesCode: 11 the Access-Request es+Secret) Tabelle 7: RADIUS-Authentifizierungspakettypen4.3.3 AttributformatAttribute werden in einer Liste mit variabler Länge im Anschluss an den Authenticatorübertragen. In den Attributen können natürlich Nutzernamen und Passwörter, aber auch IP-Adresse, Service-Typen, Status-Meldungen, Filter-IDs und - wichtig beim CHAP - einentsprechender Challenge-Wert übergeben werden. Attribute werden in Datensätzen variablerLänge übertragen, die jeweils aus drei Feldern bestehen. Das erste aus acht Bit bestehendeFeld benennt die Art des Attributes (siehe Anhang 3). Da nicht nur die Liste aller Attribute,sondern auch jeder einzelne Datensatz selbst in der Länge variabel ist, gibt das zweite Oktettdie Länge des Attributes an. Erst ab dem dritten Oktett werden die eigentlichen Informationenübertragen.
  • 72. 4. RADIUS 67 Abbildung 38: Attributenformat4.3.4 ProxyingDer Proxy-Mechanismus erlaubt es mehrere RADIUS-Server für die Validierung derBenutzer einzusetzen. Dies hat den Vorteil, dass die Verwaltung von Benutzerkennzeichenund Passwörter dezentral erfolgen kann.Im Unterschied zur Authentifizierung ohne Proxy-Server sendet der RADIUS-Client dieBenutzerdaten nicht direkt an einen RADIUS-Server, sondern zuerst an den Proxy-Server.Dieser verhält sich als RADIUS-Client gegenüber dem zuständigen RADIUS-Server undleitet die Daten an ihn weiter. Welcher Server zuständig ist, wird durch die Domäne(RADIUS-Realm) festgelegt, die der Benutzer beim Login in der Form Kennung@Domänemit angeben muss. Ein Realm ist im Prinzip eine Gruppe von User, der im Radius gewisseRechte hat.Zum Proxying benutzt RADIUS den UDP-Port 1814 (Proxy-Port).4.4 Arbeitsablauf der RADIUS-AuthentifizierungWenn ein Client dafür konfiguriert ist, das RADIUS-Protokoll zu benutzen, fordert er seinenNutzer dazu auf, sich gegenüber dem System zu identifizieren. Dies geschieht in der Regeldadurch, dass der Benutzer durch ein Login-Prompt angewiesen wird einen Benutzernamenund ein Passwort einzugeben. Durch die hohe Flexibilität von RADIUS können auchMechanismen wie PPP, PAP oder CHAP etc. zum Einsatz kommen.Anschließend erzeugt der Client einen „Access-Request“, den er an den RADIUS-Serversendet. Der „Access-Request“ enthält als Attribute den Benutzernamen, das Passwort, dieClient-ID und die Port-ID, auf die der Benutzer zugreift. In dem Fall, dass ein Passwort mitdem „Access-Request“ übertragen werden soll, wird dieses mit einem Digest-Algorithmus(MD5)-basiertem Chiffre verschlüsselt.Der „Access-Request“ wird anschließend über das Netzwerk an den RADIUS-Serverübertragen. Falls innerhalb einer Timeout-Zeitspanne nicht auf die Client-Anfragegeantwortet wird, so findet eine Wiederholung der Anfrage vom Client an den Server statt,solange bis der Client den Verbindungsversuch abbricht.
  • 73. 4. RADIUS 68Weil RADIUS Proxying unterstützt, kann ein RADIUS-Server als Proxy auftreten undAccess-Nachrichten an andere RADIUS-Server weiterleiten.Hat der gewünschte RADIUS-Server letztendlich den „Access-Request“ erhalten, validiert erden Client, von dem er die Nachricht erhalten hat. Validierung heißt in diesem Fall, dass derRADIUS-Server anhand der Client-ID überprüft, ob er sich mit diesem Client ein Geheimnisteilt, sprich ob ein gemeinsamer Schlüssel zur Dechiffrierung der Nachricht vorhanden ist.Erhält ein Server eine Nachricht von einem Client, der keine Bekannte ID hat, so muss dieseNachricht ohne eine Antwort vernichtet bzw. ignoriert werden.Wenn festgestellt wurde, dass der Client dem Server bekannt ist, kann der Server den„Access-Request“ bearbeiten. Zu diesem Zweck fragt der Server eine interne Datenbank ab,ob die Informationen zu dem anfragenden Benutzer lokal verfügbar sind. Wird ein solcherDatensatz gefunden, erhält der Server eine Liste mit Bedingungen, die erfüllt sein müssen, umdem Benutzer Zutritt zu gewähren. Dieses beinhaltet immer die Überprüfung des Passworts.Jetzt besteht noch die Möglichkeit, dass der Server einen weiteren Authentifikationsschrittdurch ein Challenges/Response-Schema verlangt. Dies geschieht dadurch, dass der Server miteinem „Access-Challenge“ auf den „Access-Request“ antwortet. Ein Challenge/Response-Schema ist eine weitaus sicherere Methode, da der Server eine dynamische Herausforderung(Challenge) erzeugt, die (eigentlich) nur der Benutzer selber durch z.B. eine Chipkarte odereinen nur ihm zugänglichen Algorithmus bewältigen bzw. beantworten kann. Abbildung 39: Authentifizierung durch Challenge/Response-SchemaNach Eingabe der Benutzerantwort erzeugt der Client eine neue „Access-Request“ Nachricht,in dem er die originale „Access-Request“ Nachricht mit einer neuen Request-ID ausstattetund das User-Passwort-Attribut durch die (verschlüsselte) Challenge-Response ersetzt. DieseNachricht wird nun an den Server zurückgeschickt.
  • 74. 4. RADIUS 69Wenn eine der Bedingungen nicht erfüllt sein sollte, sendet der Server ein „Access-Reject“,um dem Benutzer mitzuteilen, dass er keinen Zugriff auf das System bekommt.Wenn alle Bedingungen an den Benutzer erfüllt sind, wird die Liste derKonfigurationsvariablen in eine „Access-Accept“ Nachricht verpackt. Diese Variablendefinieren den Service-Typ (z.B. SLIP, PPP, Login User) und alle nötigen Informationen, umden Dienst zu starten. Zu diesen Informationen gehören bei z.B. einer PPP- oder SLIP-Verbindung die zugewiesene IPAdresse (Framed-IP-Address), Subnetzmaske, MTU52 etc.4.5 RADIUS-Accounting4.5.1 Wie funktioniert Radius-Accounting?Accounting ist kein Bestandteil des ursprünglichen RADIUS-Protokolls. RADIUS-Accounting wurde später in einer Erweiterung dem RADIUS-Protokoll hinzugefügt.Diese Protokollerweiterung beschreibt die Übertragung von Accounting-Informationen voneinem Network Access Server (NAS) zu einem RADIUS-Accounting-Server.Identisch zu den Merkmalen des ursprünglichen RADIUS-Protokolls fungiert auch beiRADIUS-Accounting der NAS als Client. Er hat die Aufgabe einem speziellen Accounting-Server die gesammelten Informationen zum Ressourcenverbrauch der Nutzer zukommen zulassen. Der RADIUS-Accounting-Server hat im Gegenzug die Aufgabe diese Informationenzu empfangen und zu speichern und dem Client die eingegangenen Accounting-Nachrichtenzu quittieren.Auch in dieser Architektur kann ein Accounting-Server als Proxy auftreten und Accounting-Nachrichten an andere Accounting-Server weiterleiten.Ebenfalls identisch ist, dass jegliche Transaktionen zwischen einem RADIUS-Client undeinem RADIUS-Accounting-Server durch einen symmetrischen Schlüssel authentifiziert undgesichert werden.4.5.2 Accounting-PakettypenFür das Accounting definiert RADIUS zwei Pakettypen, deren Elementinhalte in derfolgenden Tabelle erläutert werden. Das Length-Element beinhaltet immer die Länge:Headers + Payload.52 MTU: Maximum Transfer Unit: Ein Wert, der die maximale Größe der gesendeten Pakete bestimmt.
  • 75. 4. RADIUS 70 Element Identifier AttributesPacket typeAccounting-Request - Acct-Status-Type - User-NameCode: 4 Unique per Request - Acct-Session-ID - NAS-IP-Address - NAS-Port - Optional AttributesAccounting-Response copy of the Identifier field of the Access-Request Zero or more AttributesCode: 5 Tabelle 8: RADIUS-Accounting-Pakettypen4.5.3 Arbeitsablauf des RADIUS-AccountingWenn ein Client für die Benutzung von RADIUS-Accounting konfiguriert wurde, danngeschieht folgendes, wenn ein Benutzer einen Dienst in Anspruch nehmen möchte und dieserDienst dann auch gestartet wird: Der NAS generiert beim Start des Dienstes eine Accounting-Start Nachricht. Innerhalb dieser Nachricht übermittelt er, welcher Dienst gestartet wurde undwelcher Benutzer diesen Dienst in Anspruch nimmt.Nachdem die Nachricht zum Accounting-Server übertragen wurde generiert dieser alsAntwort eine Quittung (Accounting-Response), die bescheinigt, dass die Accounting-Nachricht angekommen ist.Wenn der Nutzer den Dienst nicht länger in Anspruch nehmen möchte oder der Dienst ausirgendeinem anderen Grunde gestoppt wurde, sendet der NAS eine Accouting-Stop Nachrichtan den Accounting-Server. Inhalt dieser Nachricht ist der Typ des Dienstes der „verbraucht“worden ist. Der Accounting-Server generiert wiederum eine Quittung, die den korrektenErhalt der Nachricht bestätigt.
  • 76. 4. RADIUS 71 Abbildung 40: RADIUS-Accounting [9]Die Accounting-Start bzw. Stop-Nachrichten werden, wie die anderen RADIUS-Nachrichtenauch, über möglicherweise verlustbehaftete Kanäle übertragen.Da, wie schon in den Anforderungen an Accounting definiert, eine korrekte Abrechnungverbrauchter Ressourcen ein extrem wichtiger und finanzkritischer Bereich ist, sollten aufjeden Fall Retransmission-Timer eingesetzt werden, damit die Accounting-Nachrichtensolange gesendet werden, bis der Accounting-Server den Erhalt quittiert und keineNachrichten verloren gehen.Die Clients haben ebenfalls die Möglichkeit ihre Accounting-Pakete an alternative Server zuschicken, falls der primäre Accounting-Server nicht zur Verfügung stehen sollte. Einalternativer Server kann entweder nach einer gewissen Anzahl von Fehlversuchen an denprimären Server ausgewählt werden, oder es wurde von vorne herein eine Ringstruktur vonBackup-Servern vorgesehen, die alle nacheinander abgefragt werden können.
  • 77. 5. Entwicklungsumgebung 725. Entwicklungsumgebung5.1 VoIP-NetzIn der folgenden Abbildung wird dargestellt, wo die VoIP-Test-Architektur imExperimentiernetz der Fachhochschule Köln aufgebaut wurde. Abbildung 41: VoIP-Testnetz im Experimentiernetz der FH-Köln
  • 78. 5. Entwicklungsumgebung 735.1 SER (SIP-Express-Router)5.2.1 Was ist SER?SER (SIP Express Router) ist ein Open-Source SIP-Proxy-, Redirect- und Registrarserver vondem Fraunhofer-Institut FOKUS.SER, entwickelt von der FOKUS-Gruppe iptel.org, ermöglicht sowohl Voice-over-IP-Diensteals auch Videokonferenz-, Messaging- und Voice-Mail-Dienste.Diese Dienste und andere sind auf iptel.org schnell und kostengünstig umzusetzen und invielen Ländern von nationalen Regulierungen ausgenommen, was sie für viele Unternehmensehr attraktiv macht. Vor allem branchenfremde Unternehmen haben die Möglichkeit,unkompliziert in den Telekommunikationsmarkt einzusteigen."SER" ist das zurzeit erfolgreichste auf dem Session Initiation Protocol (SIP, RFC3261)basierende Produkt im kommerziellen Internet-Telefonie-Einsatz."Unsere Technologie SER trägt entscheidend dazu bei, dass in der Telekommunikations-branche neue Player mit neuen Geschäftsmodellen erfolgreich sind" kommentiert Dr.Dorgham Sisalem, Leiter der Gruppe iptel.org bei Fraunhofer FOKUS die aktuelleEntwicklung im weltweiten Telekommunikationsmarkt.Der SIP Express Router ist eine freie Software und unterliegt der GNU-GPL53 General PublicLicense.Sowohl für die Einrichtung als auch für die Weiterentwicklung der Software findet man aufder Website von iptel.org eine enorme Unterstützung.53 GNU: Abkürzung für GNU’s Not UNIX. Softwaresammlung, die von der Free Software Foundation angelegtwurde und gepflegt wird. Es handelt sich fast ausschließlich um UNIX- bzw. LINUX-Software, die weitgehendkostenlos und ohne Copyright verbreitet wird. [20]GPL: Abkürzung für General Public License. Lizenz zur freien Nutzung von Software entsprechend Regeln vonGNU. [20]
  • 79. 5. Entwicklungsumgebung 74 Abbildung 42: Screenshot der Internetseite www.iptel.org5.2.2 InstallationAm komfortabelsten nimmt man die Binärdistribution von SER, so ist er direkt nach demEntpacken der Datei auf dem Rechner installiert.SER kann auf die verschiedenen Varianten von Linux und SUN Microsystems Solarisinstalliert werden.In diesem Abschnitt wird die Installation der SER- Binärdistribution auf einen SuSe-Linux-Rechner (Version 9.1) beschrieben. Shell> tar -zxvf ser_0.8.12_linux_i386.tar.gz(kompilierte Version: (Download aus: ftp://ftp.berlios.de/pub/ser/0.8.12/bin/ ))
  • 80. 5. Entwicklungsumgebung 755.2.3 Konfigurationa) KonfigurationsdateiSERs Konfigurationsdatei ser.cfg ist in vier Hauptabschnitte geteilt: o Globale Parameter: Hier werden die globalen SER-Einstellungen festgelegt.In unserer ser.cfg habe ich folgendes vorgenommen:#debug=9 #Auskommentieren für Debug-Modusfork=no #Andernfalls ( fork=yes ) erzeugt SER eigene #Kinderprozesse und läuft im Hintergrundlog_stderror=yes #log-messages zu standard error weiterleitenlisten=139.6.19.65 #SER kann mehrere IP-Adressen im Normalmodus #benutzen, aber nur eine im Debug-Modus, hier #wird sie festgelegt o Laden externer Module: Hier werden die gebrauchten externen Module geladen.Manche Module müssen nach einer gewissen Reihenfolge geladen werden.Durch Aufruf vom Modul „auth_db.so“ wird SER darauf hingewiesen bei derAuthentifizierung der User die User-Daten aus einer Datenbank zu holen, so muss einDatenbank-Modul z.B. „mysql.so“-Modul davor geladen werden.Dieser Abschnitt sieht bei uns so aus:loadmodule "/usr/local/lib/ser/modules/mysql.so"loadmodule "/usr/local/lib/ser/modules/sl.so"loadmodule "/usr/local/lib/ser/modules/tm.so"loadmodule "/usr/local/lib/ser/modules/rr.so"loadmodule "/usr/local/lib/ser/modules/maxfwd.so"loadmodule "/usr/local/lib/ser/modules/usrloc.so"loadmodule "/usr/local/lib/ser/modules/registrar.so"loadmodule "/usr/local/lib/ser/modules/auth.so"loadmodule "/usr/local/lib/ser/modules/auth_db.so"loadmodule "/usr/local/lib/ser/modules/acc.so"loadmodule "/usr/local/lib/ser/modules/exec.so"
  • 81. 5. Entwicklungsumgebung 76loadmodule "/usr/local/lib/ser/modules/group.so"loadmodule "/usr/local/lib/ser/modules/msilo.so"loadmodule "/usr/local/lib/ser/modules/print.so"loadmodule "/usr/local/lib/ser/modules/textops.so"loadmodule "/usr/local/lib/ser/modules/jabber.so"loadmodule "/usr/local/lib/ser/modules/uri.so"loadmodule "/usr/local/lib/ser/modules/vm.so"Funktionen und Abhängigkeiten der Module sind in http://www.iptel.org/ser/doc/moduleerleäutert. o Modulparameter: Parameter werden den Modulen durch den „modparam“- Ausdruck angepasst.- modparam("usrloc", "db_mode", 2)) #Datenbankzugriffsmodus- modparam("auth", "calculate_ha1", yes) #Der Server gewinnt Passwörter aus Berechnung von #HA1-Strings54- modparam("auth_db", "password_column", "password") #Name der Tabellenspalte „password“, die die #Benutzerpasswörter enthält o Routing-BlöckeHier wird das wichtigste Konzept jedes SIP-Servers bearbeitet, nämlich das Request-Routing.Dies legt den nächsten „Sprung“ (auf Englisch Hop) einer Request fest.In diesem Abschnitt wird unter anderem folgendes realisiert: - Erzwingen des statischen Routings über einen PSTN-Gateway, - Bestimmen des dynamischen Routings zu registrierten Benutzern und - Festlegen der Authentifikationsmethode.Zu dem letzen Punkt habe ich folgendes in diesem Abschnitt eingetragen:- if (!www_authorize("139.6.19.65", "subscriber")){ www_challenge("139.6.19.65", "0");54 HA1-String ist ein MD5-Hash von Benutzername, Passwort und Realm, HA1-Strings sind sicher, denn derServer braucht nicht den Passwortvolltext zu wissen, und das Passwort kann nicht direkt aus dem HA1-Stringgewonnen werden.
  • 82. 5. Entwicklungsumgebung 77 break; }; #Für Autorisierung wird auf den Host 139.6.19.65zugegriffen, Benutzernamen und #Passwörter werden in der Datenbanktabelle „subscriber“ #gefunden.b) Datenbank und Datenbankbibliothek erstellenZum Erstellen der SER-Datenbank reicht es folgendes einzugeben: Shell> /usr/sbin/ser_mysql.sh createund schon ist die DB mit allen Tabellen erstellt.Erstellt wird auch der Benutzer „admin“ in der Tabelle „user“ mit dem Passwort„heslo“.Notwendig ist es auch der symbolische Link auf die DB-Bibliothek libmysqlclient.soin /usr/lib zu erstellen: Shell>ln –s libmysqlclient.so.12.0.0 libmysqlclient.so.10In der Datei /etc/ld.so.conf muss auch /usr/lib hinzugefügt werden5.2.4 Anwendung5.2.4.1 SER startenBei laufendem MySQL-Server55 Shell> ser restartan der Konsole eingeben.Die Umgebungsvariable SIP_DOMAIN dürfen wir nicht vergessen, damit das serctl-Toolbenutzt werden kann Shell> export SIP_DOMAIN="139.6.19.65” Shell> serctl moniDurch den letzen Befehl wird die Funktionalität des SER-Servers überprüft.5.2.4.2 Benutzer anlegenBenutzer „snom1“ (Snom-Telefon) wird zur Datenbank wie folgt hinzugefügt: Shell> serctl ul add snom1 1234 sip:snom1@139.6.19.65Benutzername: snom155 Kurze Beschreibung der Installation und Bedienung wird in Kapitel 5.5 geschehen
  • 83. 5. Entwicklungsumgebung 78Passwort: 1234Realm (Domäne): 139.6.19.65Bei der Eingabe wird das admin-Passwort gefragt, und es lautet „heslo“Und ähnlich Benutzer snom2: Shell> serctl ul add snom2 1234 sip:snom2@139.6.19.655.2.4.3 Registrierte Benutzer ansehen Shell> serclt show userEs werden dann alle registrierten Benutzer angezeigt.5.2.5 SERWEB (Web-Interface von SER)SERWEB ist die Web-Toolbox vom SIP-Express-Router (SER) und sie kann für folgendeZwecke benutzt werden: Registrieren neuer Benutzer Verwaltung von Users-Accounts Ansehen von verpassten Anrufen Senden von sofortigen Kurzmitteilungen (IM: Instant Messages) Ansehen von gespeicherten IMs und Voicemail-Messages5.2.5.1 InstallationPacket entpacken Shell> tar -zvxf serweb_2004-01-04.tar.gz5.2.5.2 KonfigurationEs werden folgende Änderungen vorgenommen: • In der Datei config.php //configure database /* these are the defaults with which SER installs; if you changed the SER account for MySQL, you need to update here*/ $this->db_host="139.6.19.65"; //database host $this->db_name="ser"; //database name $this->db_user="ser"; //database conection user $this->db_pass="heslo"; //database conection password • In der Datei /etc/php.ini short_open_tag = On
  • 84. 5. Entwicklungsumgebung 79 register_globals = On • Apache (http-Server): Standard-Rechner: /serweb_2004-01-04/html/admin P.S.: Linux_Neustart erforderlich • Das Layout kann wie folgt definiert werden echo "<body><h1>" > html/prolog.html echo "</h1><hr>" > html/separator.html echo "</body>" > html/epilog.html • Auf den SER-fifo (named Pipe) darf jeder zugreifen Shell> chmod 777 /tmp/ser_fifo5.2.5.3 AnwendungHierunter steht ein Screenshot vom Anmeldefenster von SERWEB: Abbildung 43: Screenshot von SERWEB-Anmeldefenster
  • 85. 5. Entwicklungsumgebung 80Hier ein Screenshot vom User-Profil: Abbildung 44: Screenshot von SERWEB-UserprofilUnd Hierbei wird ein IM an snom1@139.6.19.65 versendet: Abbildung 45: Screenshot von SERWEB-Send-IM
  • 86. 5. Entwicklungsumgebung 815.3 Freeradius5.3.1 Was ist Freeradius?Freeradius ist eine Open Source RADIUS-Variante und steht unter der GPL (Genaral PublicLicense). Das Freeradius-Projekt wurde 1999 gestartet und wird immer nochweiterentwickelt.Im Sommer 2004 hat Freeradius seine erste Vollversion 1.0 erreicht.Freeradius zeichnet sich den Entwicklern zufolge durch hohe Skalierbarkeit, vom Embedded-System bis hin zu großen Installationen mit mehreren Millionen Nutzern aus. Zudem lässtsich die Software über diverse Module erweitern.Insgesamt bringt Freeradius mehr als 50 herstellerspezifische Dictionary-Dateien mitunterstützt mehr Protokolle zur Authentifzierung als die meisten kommerziellen Produkte.Volle Unterstützung so wie alle Freeradius-Versionen findet man in der Web-Site:www.freeradius.org.5.3.2 Installation und GrundkonfigurationIn den folgenden Unterabschnitten werde ich die Installation und Grundkonfiguration vomRadiusclient und Radiusserver schrittweise erklären.a) RadiusclientDie Datei “radiusclient-0.3.2.tar.gz” auspacken Shell> tar xvfz radiusclient-0.3.2.tar.gz Shell> cd radiusclient-0.3.2Die Library Kompilieren und installieren Shell>./configure Shell> make all Shell> make installBei Default-Konfiguration (Shell>./configure ohne Parameter) werden alleKonfigurationsdateien von der Radiusclient-Library ins Verzeichnis:/usr/local/etc/radiusclient gelegt.Danach müssen diese Änderungen in den folgenden Dateien durchgeführt werden:
  • 87. 5. Entwicklungsumgebung 82 • radiuclient.conf-File authserver 139.6.19.65 acctserver 139.6.19.65 Authentifizierungs- und Accounting-Server ist der mit der angegebenen IP-Adresse. • servers-File Aus dieser Datei holt sich der Radiusclient den Namen oder IP-Adresse der Server, mit denen er kommunizieren darf, und den dafür notwendigen Schlüssel. #Server Name or Client/Server pair Key #------------------------------------------- localhost/localhost mimia 139.6.19.65 mimia • dictionary-File Folgende Schritte müssen hier gefolgt werden: Die Datei „dictionary.ser“ aus : http://www.iptel.org/ser/doc/ser_radius/ser_radius.html downloaden und in /etc/radiusclient speichern. Inhalt der Datei „dictionary.ser“ an die Datei „dictionary“ anhängen: Shell> cat dictionary.ser >> dictionaryb) RadiusserverÄhnlich wie bei Radiusclient wird auch die Radiusserverinstallation durchgeführt Shell> tar -zxvf freeradius.tar.gz Shell> cd freeradius-1.0.0 Shell> ./configure Shell> make Shell> make installBei unserer Konfiguration (Shell> ./configure ohne Parameter) werden alleKonfigurationsdateien vom Radiusserver ins Verzeichnis: /usr/local/etc/raddbhingelegt.
  • 88. 5. Entwicklungsumgebung 83Hätte man ein anderes Verzeichnis für die Radiusserver-Dateien gewollt (z.B. /etc), dannhätte man Shell>./configure --sysconfdir=/etceingeben müssen.Um die Grundfunktionalität sicherzustellen, müssen diese Einträge in die folgenden Dateienerfasst werden. • clients.conf-File client 139.6.19.65 { secret = mimia shortname = localhost } Dadurch erfährt der Radiusserver, dass ein Radiusclient aus dem Host mit der eingegeben IP-Adresse mit ihm kommunizieren darf. Dem Radiusclient gelingt dies nur wenn er das eingetragene „secret“ (mimia) bei einer Authentifizierungs- Request mitschickt. • dictionary-File Die SER-Bibliothek wird hierdurch dem Radiusserver bekannt gemacht $INCLUDE /etc/radiusclient/dictionary.ser • radiusd.conf-File In Abschnitte „authorize“ und „authenticate“ den Eintrag „digest“ auskommentieren. Der Radiusclient wird dadurch eine Digest-Authentifizierung zulassen. • users-File In dieser Datei werden die Benutzer eingetragen. Zu Testzwecken wird der Benutzer „test“ mit dem Passwort „test“ erstellt. Der Benutzer Test benutzt die Authentifizierungsmethode „Digest“ und nach einer am Server erfolgreichen Authentifizierung bekommt er die Antwort, dafür folgender Eintrag: test Auth-Type := Digest, User-Password == "test" Reply-Message = Authenticated, Mr TEST" Ähnlich werden die im Labor zur Verfügung gestellten SIP-Telefone eingetragen. snom1@139.6.19.65 Auth-Type:=Digest,User-Password=="1234" Reply-Message="Authenticated, Mr SNOM1"
  • 89. 5. Entwicklungsumgebung 84 snom2@139.6.19.65 Auth-Type:=Digest,User-Password=="1234" Reply-Message="Authenticated, Mr SNOM2"5.3.4 Radius-Server starten und testenWir starten den Radiusserver, indem wir den Dämon „radiusd“ an der Konsole aufrufen Shell> radiusd -XUm den Server zu testen wird eine Datei „digest“ erstellt, deren Inhalt wie folgt aussieht: User-Name = "test", User-Password = "test" Digest-Response = "631d6d73147add2f9e437f59bbc3aeb7", Digest-Realm = "testrealm", Digest-Nonce = "1234abcd", Digest-Method = "INVITE", Digest-URI = "sip:5555551212@example.com", Digest-Algorithm = "MD5", Digest-User-Name = "test"Der „radclient”-Testtool wird benutzt, um eine „Authentication-Request“ (auth) mit demInhalt aus dem File „digest” (-f digest) mit dem secret „mimia“ zum demRadiusserver am Host 139.6.19.65 zuzuschicken. Shell> radclient -f digest 139.6.19.65 auth mimiaFalls der Server richtig funktioniert, dann bekommt der Client folgendes: Received response ID 8, code 2, length = 61 Reply-Message = Authenticated, Mr TEST"Somit ist der Radiusserver richtig installiert, konfiguriert und getestet.
  • 90. 5. Entwicklungsumgebung 855.4 SER und FreeradiusBei der SER-Binärdistribution sind die Radius-notwendigen Module nicht vorhanden.Man muss die SER-Quelldistributionsalternative nehmen, und die notwendigen Einstellungenvor dem Kompilieren durchführen, um die SER-Radius-Interoperabilität sicherzustellen.Die MySQL-Bibliethek- und Headerfiles werden auch benötigt, damit SER in der Lage ist,Daten mit einer MySQL-Datenbank austauschen zu können.Bei einer SuSe-Linux-Maschine (Version 9.1) begegnete ich ein unbehebbares Problem beider Radiusclient-Radiusserver-Kommunikation, dabei hatte das System den zuletzt erwähntenRadius-Server-Test nicht bestanden. Alternativ griff ich auf Red-Hat-Linux zu (Version 3.1).Dies war ein Rat von Herrn Jan Janak, einem der SER-Entwickler, um dem Problemauszuweichen.Die Installations- und Konfigurationsschritte bei der Red-Hat-Maschine wurden wie folgtvorgenommen • SER- und Freeradius-Packete downloaden und auspacken Shell> tar -zxvf ser_0.8.12_src.tar.gz (Datei-Download aus: ftp://ftp.berlios.de/pub/ser/0.8.12/src/) Shell> tar -zxvf freeradius.tar.gz (Datei-Download aus: www.freeradius.org) • mysql-devel-packet installieren (bibliothek und Headerfiles) Shell>rpm –ihv –nodeps –force MySQL-devel-3.22.25-1.i386.rpm • in /freeradius-1.0.0/src/modules/rlm_sql/drivers /rlm_sql_mysql/Makefile Den Eintrag: RLM_SQL_CFLAGS = -I/usr/include $(INCLTDL) ändern zu RLM_SQL_CFLAGS = -I/usr/include/mysql $(INCLTDL) • SER-0.8.12 erkennt die MySQL-Bibliothek unter den Namen libmysqlclient.so.10, dafür in /usr/lib/mysql den Symbolischen Link erstellen Shell> ln -s libmysqlclient.so.10 libmysqlclient.so
  • 91. 5. Entwicklungsumgebung 86 • Um einen Kompilierfehler zu verhindern musste ich in /freeradius-1.0.0/src/modules/rlm_sql/drivers “lib” umbenennen. Shell> mv lib Lib • SER muss den Pfad kennen, wo sich die Radiusclient-Library befindet, dafür in der Datei /etc/ld.so.conf den Pfad eingeben: /usr/local/lib/ und dann Shell> ldconfig –v • Für SER-Radius-Funktionalität muss im /ser_0.8.12/Makefile im Abschnitt „exclude_modules“ die Zeile: „auth_radius“, „group_radius“ und „uri_radius“ gelöscht oder auskommentiert werden. Diese enthält nämlich die SER-Radius-Module. • Um das Radius-Accounting zu aktivieren, muss man in der Datei /ser-0.8.12/modules/acc/Makefile beide Zeilen auskommentieren: DEFS+=-DRAD_ACC LIBS=-L$(LOCALBASE)/lib -lradiusclient • Erst nach diesen Einstellungen konnte ich SER und Freeradius auf Red-Hat-Linux fehlerfrei kompilieren und installieren, dies geschieht wie es in den Abschnitten 5.2.2, 5.2.3 und 5.3.2 beschrieben wurde.5.5 MySQL56-DatenbankEine Datenbank ist zur Speicherung und Verwaltung von Daten, vor allem bei größerenDatenmengen, eine Notwendigkeit.Aus diesem Grunde wird im Rahmen dieser Diplomarbeit, wie in Kapitel 5.2.4 zumBenutzererstellen, auf relationale Datenbanken zugegriffen. In Gebrauch sind MySQL-Datenbanken. Dafür muss ein MySQL-Server installiert werden, diesen kann man sowohl beiRedhat als auch bei SuSe bei der Distribution in den Installations-CDs finden.Nach der Installation muss die Basis-Datenbank „mysql“ erstellt werden: Shell> /usr/bin/mysql_install_db56 MySQL: ist eine SQL(Structured Query Language)-Datenbank. Wie auch Oracle, DB2 oder PostgreSQL istMySQL eine relationale Datenbank. Die Daten werden daher in zweidimensionalen Tabellen gespeichert.Michael „Monty“ Widenius schuf MySQL 1994 für die schwedische Firma TcX. Heute wird MySQL von derFirma MySQL AB weiterentwickelt. MySQL ist mit mehr als 4 Millionen Installationen und über 35.000Downloads pro Tag die populärste Open-Source-Datenbank der Welt
  • 92. 5. Entwicklungsumgebung 87Sämtliche Datenbanken und deren Tabellen werden nachher in /var/lib/Mysql zu findensein.Folgendes muss auch in die MySQL-Konfigurationsdatei /etc/my.cnf im Abschnitt[mysqld] eingetragen werden: max_connections = 500Zum Starten des MySQL-Servers:Redhat: Shell> /usr/bin/safe_mysqld --user=root &SuSe: Shell> /usr/bin/mysqld_safe --user=root &
  • 93. 5. Entwicklungsumgebung 886. Implementierung6.1 ErweiterungsanforderungenIm Hinblick auf sichere Abrechnungsszenarien zu VoIP sind von der Firma Tecon folgendeAnforderungen an die im Rahmen dieser Diplomarbeit durchgeführten SIP- und RADIUS-Protokoll-Erweiterungen gestellt. • Must - A-Rufnummer/IP-Adresse/URL/Mailadress etc. - B-Rufnummer/IP-Adresse/URL/Mailadresse etc. - Startzeit und Dauer der Verbindung - Übertragenes Volumen (Datenpakete) - Type of Service Kennzeichnungen (Voice, Fax, Konferenz, Video, SMS/MMS, etc.) - Quality of Service Parameter (Codecs, Bandbreiten etc.) • Should - A-Provider (ISP/Carrier) • Anschluss • Nomade - B-Provider (ISP/Carrier) • Anschluss • Nomade - MAC-Adresse des Gerätes des Nutzers und des Anschlusses - Roaming Informationen, d. h. Erkennung von Nomaden am fremden Anschluss • Nice-to-have - Gateway Nutzung (Netzübergänge und Transit) IP ↔ PSTN - Informationen zu Carrier und ISPIn den folgenden Abschnitten wird vorgestellt, wie die neuen Authentifizierungs- undAccountig-Daten gewonnen werden konnten. Die kompletten Quell-Code-Änderungenwerden zwar nicht in diesen Kapiteln aufgeführt, sind aber in Anhang 4 ausführlich undkommentiert vorgestellt.
  • 94. 6. Implementierung 896.2 MobilitätWichtiges und entscheidendes Konzept bei den neuen Kommunikationssystemen ist dieMobilität. Doch um Authentifizierungs-, Autorisierungs- und Accounting-Probleme zuüberwältigen schreibt GEOVIPA57 vor, zwei IP-Adressen für eine Verbindung registrieren zumüssen: Die Anschluss-IP-Adresse oder Physical Line IP-Address (kurz PLIP) und dieNomaden-IP-Adresse oder Charging IP-Address (kurz CHIP).Schließt ein Nomade sein VoIP-Endgerät an einem fremden Anschluss, so muss sowohl beider Registrierung als auch bei einem Verbindungsaufbau neben der Anschluss-IP-Adresse -was für die Lokalisierung des Anrufers z.B. bei Notrufen wichtig ist - auch die Nomaden-IP-Adresse mit den Accounting-Daten festgehalten werden.6.2.1 Nomaden-IP-AdresseDie Nomaden-IP-Adresse hängt direkt mit einem Kunden zusammen. Beispielsweisebekommt der Kunde „Faik“ von seinem ISP einen User-Name z.B. faik@tecon.de, mit dem ersich in Verbindung mit einem Passwort an dem ISP-Server anmelden kann. Der Kunde „Faik“bekommt auch eine Nomaden-IP-Adresse, die ihn kennzeichnet, auch wenn er an einemfremden Anschluss die Dienste seines ISP nutzen möchte. Um die Kosten muss sich derKunde Faik auch nicht kümmern, denn die Nomaden-IP-Adresse heißt schließlich auchAbrechnungs-IP-Adresse, sie dient auch dazu, dass die Kosten demjenigen, der die ISP-Dienste genossen hat, abgerechnet werden.Um die Nomaden-IP-Adresse in unserem System (SIP- und Radius-Server) zuimplementieren, wird das Prinzip der Framed-IP-Address bei RADIUS genutzt (siehe Kapitel4.4). Bei einer Registrierung bekommt der Benutzer eine für ihn spezifische IP-Adressezugeteilt. Dies wird durch Einfügen der Framed-IP-Address-Zuweisungs-Zeile in der „users-Datei“ von Radius realisiert, z.B. für den User „snom1“:snom1@139.6.19.65 Auth-Type := Digest,User-Password=="1234" Framed-IP-Address = 139.6.19.58 Reply-Message = "Authenticated, Mr SNOM1"Bei einer Registrierung holt der RADIUS-Server die Framed-IP-Adresse von seiner Benutzer-Datenbank (in unserem Falle die users-Datei) und fügt sie an die Attribut-Liste des Access-Accept-Pakets. Die Authentifizierungsdaten wurden aber davor in die Log-Datei eingetragen.57 GEOVIPA ist eine Verfahrensbeschreibung der Fa. Tecon für die geographische Verzonung von VoIP zurAuthentifizierung der Verkehrsursprünge zur Abrechnung und der Erkennung von Verbindungsursprüngen fürNotrufe und Mehrwertdiensten.
  • 95. 6. Implementierung 90Bevor das Access-Accept-Paket zum SIP-Server mit der Framed-IP-Adresse zurückgesendetwird, wird diese aus dem Paket abgelesen und in die Log-Datei als Nomaden-IP-Adresseeingetragen (siehe Quell-Code-Anhang-Zeilen 53 bis 77). Abbildung 46: Nomaden-IP-Adresse (CHIP)Bei einer Verbindung ist ein anderes Vorgehen notwendig.Um überhaupt die Framed-IP-Address bei einer Verbindung zur Verfügung zu stellen, müssenfolgende Einträge in der RADIUS-Konfigurations-Datei „acct_users“ erfasst werden:snom1@139.6.19.65 Acct-Status-Type == Start Framed-IP-Address = 139.6.19.58, Exec-Program = "/path/to/exec/acct/start"snom1@139.6.19.65 Acct-Status-Type == Stop Framed-IP-Address = 139.6.19.58, Exec-Program = "/path/to/exec/acct/stop"Der zweite und entscheidende Schritt ist es, ein RADIUS-Value-Pair zu erstellen, mit demWert der Framed-IP-Adresse zu füllen und schließlich an die Liste der Paket-Attributeanzuhängen. So wird die Nomaden-IP-Adresse Bestandteil des noch von RADIUS zubearbeitenden Accounting-Requests. (siehe Quell-Code-Anhang-Zeilen 89 bis 93).Damit das neue Value-Pair als Nomaden-IP-Adresse und nicht als Framed-IP-Adresse in dieAccounting-Log-Datei eingetragen wird, ist folgende Code-Änderung in der Datei:/freeradius-1.0.0/src/modules/rlm_detail/rlm_detail.c nötig: if (pair->attribute == PW_FRAMED_IP_ADDRESS){ fputs("# NEU # ",outfp); //Attr. fprintf(outfp,"Nomaden-IP-Adresse=%s", pair->strvalue);
  • 96. 6. Implementierung 91 fputs("tn", outfp);So kommt folgender Eintrag in der Log-Datei zustande: # NEU # Nomaden-IP-Adresse = 139.6.19.586.2.1 Anschluss-IP-AdresseDie Anschluss-IP-Adresse hängt nicht mit einem User, sondern mit einem Gerät zusammen,und daher der Name Physical Line IP-Address (PLIP).Die Geräte-IP-Adresse ist dem RADIUS-Server nicht bekannt, denn dieser kann nur anzeigen,was ihm von dem SIP-Proxy-Server zur Verfügung gestellt wird, und in Log-Dateieneintragen.Aus diesem Grund muss auch das SIP-Protokoll erweitert werden.Der SIP-Server bekommt von dem User sowohl bei einer Registrierung als auch bei einemVerbindungswunsch die IP-Adresse des Geräts, so dass diese beim Bearbeiten der Anfragenim SIP-Server zur Verfügung steht.Das zum RADIUS-Server zu sendende Register- oder Accounting-Paket wird dann um einAttribut mit dem Wert der Anschluss-IP-Adresse erweitert (siehe Quell-Code-Anhang-Zeilen292 bis 297). Abbildung 47: Anschluss-IP-Adresse (PLIP)Und Schon steht die Anschluss-IP-Adresse auch dem RADIUS-Server zur Verfügung und siekann in die Log-Datei eingetragen werden (siehe Quell-Code-Anhang-Zeilen 34,35 und 36).6.3 VerbindungsdauerDas Bestimmen der Dauer einer VoIP-Verbindung erscheint am einfachsten zuimplementieren, denn ein RADIUS-Server registriert jeden Request-Eintreff-Zeitpunkt, denso genannten Zeitstempel (Time Stamp). Es würde also reichen die Differenz beiderZeitstempel zu berechnen, um die Verbindungsdauer zu erhalten.Doch RADIUS ist ein zustandsloses Protokoll, bei dem keine Daten abgespeichert werden,die den Zustand der Verhandlungen zwischen Client und Server konservieren. Ein RADIUS-
  • 97. 6. Implementierung 92Server behandelt z.B. ein ankommendes Accounting-Stop-Packet nicht in direktemZusammenhang mit dem davor eingetroffenen Accounting-Start-Paket.Diese Zustandslosigkeit kann durch Verwendung der Session-ID58 kompensiert werden,indem die Zeitstempel der Accounting-Stop- und Accounting-Start-Pakete einer Verbindungmit der dazugehörigen Session-ID gespeichert werden.Bei der Implementierung wurde der Source-Code so geändert, dass die Session-ID undZeitstempel nach dem Zugriff auf dem Accounting-Start-Paket (Schritt (1) aus Abbildung 48)in eine Datei (Starttime-File) als nacheinander folgenden Datensätze gespeichert werden (2)(siehe Quell-Code-Anhang-Zeilen 144 bis 158). Beim Eintreffen des Accounting-Stop-Pakets(3) mit derselben Session-ID wird eine sequenzielle Suche in der Starttime-Dateidurchgeführt, aus der das Finden vom Zeitstempel des mit dem Stop-Paketzusammenhängenden Start-Pakets resultiert (4). Erst danach kann die Verbindungsdauer ausder Differenz der beiden Zeitstempel berechnet werden und in die Log-Datei eingetragen (5)(siehe Quell-Code-Anhang-Zeilen 199 bis 226). Abbildung 48: Verbindungsdauerermittlung58 Eine Identifikations-Zeichenfolge, die eine Session kennzeichnet. Sie ist die Selbe bei Zwei oder mehrereRequests, die bei einer Session gesendet wurden.
  • 98. 6. Implementierung 936.4 Type of ServiceDie IP-Telefonie bietet Lösungen an, Daten-, Audio-, Bilder und Videoübertragung auf einNetzwerk zu legen. Das Accounting dieser vielfältigen VoIP-Dienste wird im Rahmen dieserDiplomarbeit realisiert.Der Message-Body wird analysiert, um die gebrauchten Daten aus ihm herauszufiltern.In den Quell-Code-Zeilen 301 bis 322 wird das Bestimmen des Medientyps implementiert. v=0 o=root 0 0 IN IP4 139.6.19.49 s=call c=IN IP4 139.6.19.49 Message- t=0 0 BODY m=audio 32820 RTP/AVP 0 a=rtpmap:0 PCMU/8000 m=video 5434 RTP/AVP 97 a=rtpmap:97 H263/90000 Abbildung 49: Beispiel eines SIP-Message-BodyDer SIP-Server teilt dem RADIUS-Server nicht mit, um welchen Medientyp es sich bei einerVerbindung handelt, so dass es auch hier nötig ist, das zu sendende Paket um ein Attribut zuerweitern.Damit die Paketgröße durch Attributanhänge nicht unnötig groß gemacht wird, wird einAttribut für den Medientyp, den verwendeten Codec und die Bandbreite erstellt (siehe Code-Zeilen 470 bis 491 und Zeilen 510 und 530).6.5 Quality of Service6.5.1 Verwendete CodecsDie zur Kodierung und Komprimierung der Sprach- oder Videodaten verwendeten Codecssind bei VoIP von großer Bedeutung, denn sie bestimmen einerseits die Qualität des Dienstesund andererseits die dafür in Anspruch zu nehmenden Ressourcen, wie Bandbreite undHardwareeigenschaften.Wie aus Abbildung 49 klar zu sehen ist, kommen die verwendeten Audio- und Video-Codecsim Message-Body in entsprechenden Zeilen als Parameter der Medientypen vor. In diesemBeispiel wird zur Audiodatenübertragung der PCMU-Codec und zur Videodatenübertragungder H263 verwendet.Auch hier muss eine SIP-Paketerweiterung vorgenommen werden, damit die verwendetenCodecs von RADIUS als Accountig-Daten registriert werden können.
  • 99. 6. Implementierung 946.5.2 BandbreiteVerwendet ein Benutzer einen Codec für die Kodierung seiner Daten, dann muss eine für denCodec spezifische Bandbreite für die Übertragung der kodierten Daten zur Verfügung gestelltwerden. Je besser die Qualität der Übertragung ist, desto größer ist die dafür reservierteBandbreite. Dies macht die von einem Dienst-Benutzer in Anspruch genommenen Bandbreiteunter den wichtigsten Accounting-Daten.Im Rahmen dieser Diplomarbeit wird eine Codecs-Tabelle in einer selbst definierten MySQL-Datenbank (sip_ser) erstellt, die verschiedene Codecs mit den dazugehörigen Bandbreitenenthält. Die in der Tabelle vorkommenden Codecs-Bezeichnungen entsprechen den von denbenutzten User-Agents zum SIP-Proxy-Server gesendeten Bezeichnungen. Codecs Bandbreite g729 8 kbps gsm 15 kbps gsma 15 kbps H261 2 Mbps H263 64 kbps iLBC 15 kbps pcma 64 kbps PCMU 64 kbps GSMU 15 kbps Tabelle 9: Codecs-Tabelle der MySQL-Datenbank „sip_ser“Implementiert wurde ein SIP-Server-Zugriff auf diese Datenbank, um Bandbreiten zu den ausdem SIP-Message-Body herausgefilterten Codecs zuordnen zu können (Code-377 bis 385,412 bis 419 und 446 bis 454). Zu diesem Zweck wurde ein separates Modul (datenbank.c)implementiert (Code-Zeilen 535 bis 564).Ein String, der den Medientyp, die verwendeten Audio- und Video-Codecs und derenBandbreiten enthält, wird erstellt und als Erweiterungsattribut an das zu RADIUS zusendende Paket angehängt.
  • 100. 6. Implementierung 95Der RADIUS-Server kann schließlich die neuen Accounting-Daten in die Log-Dateieintragen.Hierunter steht ein Auszug aus einer RADIUS-Log-Datei, der Type-of-Service- und Quality-of-Service-Accounting-Daten darstellt.# NEU # Type of Service (1) // Quality of Service# NEU # audio // Codec(Bandbr.): PCMU(64 kbps)/# NEU # Type of Service (2) // Quality of Service# NEU # video // Codec(Bandbr.): H261(2 Mbps)/ Abbildung 50: Type of Service-/Quality of Service-Accounting6.6 Übertragenes VolumenMit dem übertragenen Volumen (Traffic) ist die Nutzdatenmenge gemeint, die während einerVerbindung zwischen den Benutzern übertragen wird.Bei der Implementierung vom Accounting des übertragenen Volumens werden zwei Größengebraucht, die Bandbreite und die Verbindungsdauer. Das übertragene Volumen ist dasProdukt dieser beiden Größen.Wieder stellt die Zustandslosigkeit der SIP- und RADIUS-Protokolle ein Problem dar, denndie Bandbreite der verwendeten Codecs wird bei einem Accounting-Start-Paket zumRADIUS-Server gesendet, während die Verbindungsdauer erst nach dem Ende derVerbindung ermittelt werden kann. Dagegen muss hier auch, wie bei der Ermittlung derVerbindungsdauer, eine Speicherung der Bandbreite mit der Session-ID erfolgen, so dass dieBandbreite am Ende der Verbindung zur Verfügung steht. Zur Vereinfachung derImplementierung wird die Start-Zeit-Datei zu diesem Zweck benutzt, indem nach der Session-
  • 101. 6. Implementierung 96ID und Timestamp die Bandbreite eingetragen wird (Codezeilen 151 bis 155). Im folgendensteht ein Auszug aus der Start-Zeit-Datei für zwei Verbindungen. 3c2675a6de14-rttgarwmf051@139-6-19-48 1109008763 64000 3c267ce1a8fb-ap7h2tplb3et@139-6-19-49 1109010616 8000Nach Beenden der Verbindung kann das übertragene Volumen aus berechneterVerbindungsdauer und aus der Start-Zeit-Datei abgelesener Bandbreite ermittelt werden. Abbildung 51: Ermittlung des übertragenen Volumens6.7 Instant MessagingInstant Messaging (IM) ist ein Protokoll für die Echtzeit-Kommunikation vonTextnachrichten über das Internet zwischen Instant Messaging Systemen, das von der IEFTstandardisiert wurde und dem TCP oder das SIP-Protokoll zugrunde liegen. Bezog sichInstant Messaging zuerst auf stationäre, PC-basierte Systeme, so wird dieser Dienstzwischenzeitlich auch für Mobilfunknetze geboten: das mobile Instant Messaging.Mittels Instant Messaging, adäquat einem Echtzeit-Chat, können E-Mails und Nachrichten,aber auch Bilder, Audio- und Video-Files ausgetauscht werden. Der Nachrichtenaustausch istunmittelbar und verkürzt die Kommunikationsprozesse. [26]
  • 102. 6. Implementierung 97Der SIP-Express-Router unterstützt das Instant Messaging, betrachtet es aber nicht alsAccounting-pflichtigen Dienst.Bei der Erweiterung des SIP-Protokolls, wird der SIP-Server so implementiert, dassAccounting-relevante IM-Daten in eine SIP-Server-Datenbank eingetragen werden (sieheQuell-Code-Zeilen 654 bis 725) Abbildung 52: Instant-Message-AccountingAccounting-relevante IM-Daten sind das Datum, die Sende-Uhrzeit, der Sender, derEmpfänger, die Call-ID, die Zeichenlänge der Instant Message und der User-Agent mit demdie Message erstellt und versendet wurde.Darunter steht ein Auszug aus dem Message-File. INSTANT MESSAGE Mit Feb 2 18:21:35 CET 2005 From: <sip:kphone@139.6.19.65>;tag=4FE0978E To: <sip:snom1@139.6.19.65> Call-ID: 16729164@139.6.16.115 Content-Length: 17 User-Agent: KPhone/3.13Um diese relevante Daten aus der Message herauszufiltern, wurde das „sed“-Linux-Befehleingesetzt. Hierunter stehen zwei Beispielzeilen zur Ermittlung des Senders und Empfängersder Instant Message.system("sed -n /From/ p einemessage >> einemessage2");system("sed -n /To/ p einemessage >> einemessage2");
  • 103. 6. Implementierung 986.8 KonferenzDas SIP-Protokoll realisiert eine Konferenz durch Aufbau von zwei Verbindungen, wobei dieerste angehalten werden muss, bevor die zweite aufgebaut wird. Dabei spielt einKonferenzteilnehmer die Rolle einer H.323-MCU.Eine Konferenz wird sonst durch das SIP-Protokoll nicht gekennzeichnet, so dassAccounting-Daten von Konferenzen grundsätzlich nicht direkt aus SIP-Messages gewonnenwerden können.
  • 104. 6. Implementierung 99 Abbildung 53: Auszug aus einem Konferenz-VerbindungsaufbauWie mit den Betreuern besprochen wurde, konnte im Rahmen dieser Diplomarbeit dasAccounting von Konferenzen leider nicht implementiert werden. Die Implementierung wurdeaber entworfen.Eine Konferenz ist, wie aus Abbildung 53 zu schließen ist, durch eine Folge von Requests undResponses, auf deren Sender, Empfänger und Reihenfolge geachtet werden muss,gekennzeichnet. Der Algorithmus muss als Hauptkriterium zur Erkennung einer Konferenzdas Versenden von mindestens drei INVITES vom selben Sender und zu verschiedenenEmpfängern haben, ohne ein BYE oder ein CANCEL zu senden oder zu erhalten. Diesbedeutet, dass ein Benutzer zwei Verbindungen gleichzeitig benutzt. Weitere Kriterienkönnen bei Notwendigkeit während der Tests bestimmt und implementiert werden.
  • 105. 7. Fazit 1007. FazitZiel dieser Diplomarbeit war, neue Accounting-Daten für VoIP-Dienste durch Erweiterungvon vorhandenen Protokollen zu gewinnen.VoIP bietet eine Menge von Vorteilen gegenüber dem herkömmlichen Telefonnetz, ihm istdas letztere noch an Sprachqualität überlegen.Um eine gute Qualität bei der IP-Telefonie gewährleisten zu können, ist eine ganze Reihe vonProblemen zu lösen. Durch innovative Algorithmen insbesondere zur Minimierung desDelays und Echos sowie durch Unterstützung von existierenden Standards bei Codecs undQoS-Maßnahmen kann aber schließlich eine Sprachqualität erreicht werden, die derjenigen imFestnetz in nichts nachsteht.Die bekanntesten VoIP-Standards sind SIP und H.323. Diese wurden im theoretischen Teilder Diplomarbeit ausführlich vorgestellt und verglichen, so dass man daraus schließen kann,welcher Standard sich in Zukunft stärker durchsetzen wird. Mit der zunehmenden Ablösungder Telekommunikationsinfrastruktur durch das IP-Netzwerk scheint es nahe liegend, dassdabei der aus der IP-Welt kommende Standard, nämlich SIP, gute Karten hat.Für Authentifizierung-, Autorisierung- und Accounting-Aufgaben in VoIP-Netzen ist dasRADIUS-Protokoll vor allem dank seiner Flexibilität und Erweiterbarkeit sehr geeignet.Daher stellten zwei Open-Source-Varianten von SIP und RADIUS (SER und Freeradius) dieBasis der Entwicklung im Rahmen dieser Diplomarbeit dar, wobei ein wichtiges Kriterium fürdie Wahl der SIP- und RADIUS-Varianten die einwandfreie Interoperabilität ist.Das weit verbreitete RADIUS-Protokoll zeigt allerdings ein paar Schwächen, zu denen dieLimitierung der Attribut-Datenwerte und die fehlenden Flusskontrollmechanismen desTransport-Protokolls gehören.Der RADIUS-Nachfolger DIAMETER bietet Lösungen für zahlreiche Probleme an.DIAMETER ist ein sitzungsorientiertes Protokoll, seine Pakete sind größer, es arbeitet überSCTP (Stream Control Transmission Protokoll) anstatt UDP und ihm liegt eine Peer-to-PeerKommunikationsstruktur zugrunde.Deshalb ist eine auf dieser Diplomarbeit basierende Weiterentwicklung der AAA-Funktionenauf Basis von DIAMETER leichter und rentabler.Zum Schluss werden auf der folgenden Seite die Endergebnisse der Accounting-Erweiterunganhand von Accounting-Einträgen einer Video-Konferenz vorgestellt.
  • 106. 7. Fazit 101Mon Jan 10 16:57:29 2005 Acct-Status-Type = Start Service-Type = Sip-Session Sip-Response-Code = 200 Sip-Method = 1 User-Name = "kphone@139.6.19.65"# NEU # Nomaden-IP-Adresse = 139.6.19.144# NEU # Type of Service (1) // Quality of Service# NEU # audio // Codec(Bandbr.): PCMU(64 kbps)/# NEU # Type of Service (2) // Quality of Service# NEU # video // Codec(Bandbr.): H261(2 Mbps)/ Calling-Station-Id = "sip:kphone@139.6.19.65" Called-Station-Id = "sip:soft@139.6.19.65" Sip-Translated-Req-ID = "sip:dnprak@139.6.19.41;transport=udp" Acct-Session-Id = "1831687564@139.6.19.144" Sip-To-Tag = "638D80A1" Sip-From-Tag = "1624369D" Sip-Cseq = "4478" NAS-IP-Address = 139.6.19.65 NAS-Port = 5060 Acct-Delay-Time = 0 Client-IP-Address = 139.6.19.65 Acct-Unique-Session-Id = "551487c889f2bd8b"# NEU # Anschluss-IP-Adresse = 139.6.19.51 Timestamp = 1105372649Mon Jan 10 16:57:36 2005 Acct-Status-Type = Stop Service-Type = Sip-Session Sip-Response-Code = 200 Sip-Method = 8 User-Name = "soft@139.6.19.65"# NEU # Nomaden-IP-Adresse = 139.6.19.144 Calling-Station-Id = "sip:soft@139.6.19.65" Called-Station-Id = "sip:kphone@139.6.19.65" Sip-Translated-Req-ID = "sip:dnprak@139.6.19.144" Acct-Session-Id = "1831687564@139.6.19.144"# NEU # Gespraechsdauer = 0 Std 0 Min 7 Sek ( = 7 Sek)# NEU # Uebertagenes Volumen = 1.81 MByte Sip-To-Tag = "1624369D" Sip-From-Tag = "638D80A1" Sip-Cseq = "7293" NAS-IP-Address = 139.6.19.65 NAS-Port = 5060 Acct-Delay-Time = 0 Client-IP-Address = 139.6.19.65 Acct-Unique-Session-Id = "ba5589a8f4a60683" Timestamp = 1105372656
  • 107. Verzeichnisse 102Abbildungs- und TabellenverzeichnisAbbildung 1: IP-Netz-PSTN-Migration..................................................................................... 2Abbildung 2: PC-zu-PC-Verbindungen ..................................................................................... 6Abbildung 3: PC-zu-Telefon-Verbindungen.............................................................................. 7Abbildung 4: Telefon-zu-Telefon-Verbindungen ...................................................................... 8Abbildung 5: IP-Telefonie-Netzaufbau.................................................................................... 10Abbildung 6: Anrufbeispiel von PSTN nach IP....................................................................... 11Abbildung 7: Anrufsignalisierung............................................................................................ 12Abbildung 8: TCP und UDP im TCP/IP-Protokollstack.......................................................... 13Abbildung 9: Type of Servise des IP-Headers des RFC 791 (IPv4) [16] ................................ 17Abbildung 10: Delay und Jitter im paketbasierten Netzwerk [15]........................................... 18Abbildung 11: Durch nicht abgestimmte Impedanzen erzeugtes Echo [16]............................ 19Abbildung 12: Verschlechterung der Sprachqualität durch Paketverluste............................... 21Abbildung 13: Sprach-Aktivitäts-Entdeckung [16] ................................................................. 22Abbildung 14: Sprachkodierung für die Internetübtragung [27] ............................................. 23Abbildung 15: Sampling und 8-Bit-Kodierung eines Analogsignals [15]............................... 24Abbildung 16: Signalverdeckung............................................................................................. 27Abbildung 17: H.323-Komponenten........................................................................................ 31Abbildung 18: H.323-Protokollhierarchie................................................................................ 31Abbildung 19: Endeckung des zuständigen Gatekeeper (GK) [1]........................................... 32Abbildung 20: Ablauf: a) der Registrierung, b) der Deregistrierung [1] ................................. 33Abbildung 21: Verlauf eines Location-Prozesses [1] .............................................................. 34Abbildung 22: Funktionen Admission und Disengage [1]....................................................... 34Abbildung 23: H.225.0-Anruf-SIG-Nachrichten in IP-Paketen [1] ......................................... 36Abbildung 24: H.323-Verbindungsablauf [16] ........................................................................ 38Abbildung 25: SIP-Protokollhierarchie.................................................................................... 39Abbildung 26: User Agent ....................................................................................................... 40Abbildung 27: Interaktion verschiedener SIP-Server .............................................................. 41Abbildung 28: Aufbau einer SIP-Message............................................................................... 44Abbildung 29: Beispiel einer SIP-Request (INVITE) mit SDP-Beschreibung........................ 47Abbildung 30: Beispiel einer SIP-Response ............................................................................ 49Abbildung 31: Ablauf einer SIP-Registrierung........................................................................ 51Abbildung 32: SIP-Verbindungsablauf.................................................................................... 52
  • 108. Verzeichnisse 103Abbildung 33: AAA-Client, Server und Proxies ..................................................................... 57Abbildung 34: AAA-Architektur ............................................................................................. 58Abbildung 35: AAA-Architektur ohne und mit Broker ........................................................... 59Abbildung 36: UDP und RADIUS-Paket................................................................................. 63Abbildung 37: Struktur des RADIUS-Pakets........................................................................... 64Abbildung 38: Attributenformat............................................................................................... 67Abbildung 39: Authentifizierung durch Challenge/Response-Schema ................................... 68Abbildung 40: RADIUS-Accounting [9] ................................................................................. 71Abbildung 41: VoIP-Testnetz im Experimentiernetz der FH-Köln ......................................... 72Abbildung 42: Screenshot der Internetseite www.iptel.org ..................................................... 74Abbildung 43: Screenshot von SERWEB-Anmeldefenster ..................................................... 79Abbildung 44: Screenshot von SERWEB-Userprofil .............................................................. 80Abbildung 45: Screenshot von SERWEB-Send-IM ................................................................ 80Abbildung 46: Nomaden-IP-Adresse (CHIP) .......................................................................... 90Abbildung 47: Anschluss-IP-Adresse (PLIP) .......................................................................... 91Abbildung 48: Verbindungsdauerermittlung ........................................................................... 92Abbildung 49: Beispiel eines SIP-Message-Body ................................................................... 93Abbildung 50: Type of Service-/Quality of Service-Accounting .......................................... 95Abbildung 51: Ermittlung des übertragenen Volumens........................................................... 96Abbildung 52: Instant-Message-Accounting ........................................................................... 97Abbildung 53: Konferenz-Verbindungsaufbau........................................................................ 99Tabelle 1: Typische Verzögerungszeiten durch klassische Netzwerkhardware ...................... 16Tabelle 2: Vergleich von Qualität und Komplexität verschiedener ITU-Codecs .................... 29Tabelle 3: SDP-Parameter [7] .................................................................................................. 48Tabelle 4: SIP Status Codecs ................................................................................................... 50Tabelle 5: Vergleich von H.323 und SIP ................................................................................. 55Tabelle 6: RADIUS-Codes .......................................................................................................... 65Tabelle 7: RADIUS-Authentifizierungspakettypen ................................................................. 66Tabelle 8: RADIUS-Accounting-Pakettypen........................................................................... 70Tabelle 9: Codecs-Tabelle der MySQL-Datenbank „sip_ser“ ................................................. 94
  • 109. Verzeichnisse 104Literaturverzeichnis[1] Anatol Badach; Voice over IP - Die Technik, Hanser-Verlag, ISBN 3-446-22697-4[2] Cisco Systems; Cisco Voice over IP, Volume 1, Version 4.1[3] ComputerBase Online Lexikon; www.computerbase.de[4] Erich Stein; Taschenbuch Rechnernetze und Internet, Fachbuchverlag Leipzig, 2. Auflage[5] GEOVIPA, TECON Technologies AG Ausgabe vom 19.11.04, Version 0.0.3[6] GNU Radius Reference Manual, version 1.2, Dezember 2003[7] Handley, M., Jacobson V., SDP: Session Description Protocol, RFC 2327. 1998.[8] Helmut Herold; UNIX-Systemprogrammierung Addison-Wesley, 1996, ISBN 3-89319-958-6[9] HP-UX AAA Server A.06.00, Administration and Authentication Guide, HP-UX 11.0, 11i v1[10] Internet Telephonie – VoIP, www.it-academy.cc[11] IP-Telefonie, Sprachkodierung und Kompression; ; http://swyx.de[12] Jens Junghänel; Workshop 20. April 1999, www.tu-chemnitz.de[13] Jiri Kuthan, Jan Janak, Bogdan Iancu; iptel.org SIP Express Router v0.8.8 - Devlopers Guide, 2002 FhG Fokus[14] Jiri Kuthan, Jan Janak, Yacine Rebahi; iptel.org SIP Express Router v0.11.0 - Admins Guide, 2002 FhG Fokus[15] Jochen Nölle; Voice over IP Grundlagen, Protokolle, Migration VDE – Verlag, 2. Aufl. 2005, ISBN 3800728508[16] Jonathan Davidson, James Peters; Voice over IP Grundlagen Markt+Technik, 2002, ISBN 3-8272-5800-6[17] Jonathan Hassel; RADIUS O’Reilly Media, Oktober 2002, First Edition, ISBN 0-596-00322-6[18] M. Hein / M. Reisner / Dr. Antje Voß; Voice over IP Sprach-Daten-Konvergenz richtig nutzen Franzis’, 2002, ISBN 3-7723-6686-4
  • 110. Verzeichnisse 105[19] Mathias Hein; TCP/IP Internet-Protokolle im professionellen Einsatz International Thomson Publishing Company, 3.Auflage 1996 ISBN 3-8266-4000-4[20] PC- und IT-Lexikon; Computer Zeitschriften GmbH, 2000, ISBN 3-7723-1874-6[21] Peter Winkler; M+T Computerlexikon Markt + Technik, 2001, ISBN 3-8272-6176-7[22] RADIUS for UNIX Adminstrator’s Guide, Lucent Technologies, Februar 1999[23] Robert Sedgewick; Algorithmen in C Addison-Wesley, 1992, ISBN 3-8939-376-6[24] Rolf-Dieter Köhler; Voice over IP, Mitp-Verlag/Bonn, 1.Auflage 2002, ISBN 3-8266-4067-5[25] Rosenberg, et. al.; SIP: Session Initiation Protocol, RFC 2543. 1999.[26] Simens Online Lexikon; http://networks.siemens.de[27] Thomas Niepraschk; Voice over IP- ein Überblick zur Vorlesung " Konzepte interaktiver Medien" WS04/05[28] Uwe Dettmar, Hilfsblätter zur Vorlesung Telekommumikationssysteme Teil A; Version 1.0, 13 September 2001
  • 111. Verzeichnisse 106AbkürzungenverzeichnisAAAA Authentification, Autorisation, AccountingACELP Algebraic Code Excitation Linear Predictive CodingACF Admission ConFirmADPCM Adaptive Differential Puls Code ModulationARQ Admission ReQuestASN.1 Abstract Syntax Notation No. 1AVP Attribute Value PairAVP Audio Video ProfilesBBps Bit pro SekundeCCELP Code Excitation Linear Predictive CodingCHAP Challenge Handschake Authentication ProtocolCRLF Carriage Return Line FeedCS-CELP Conjugate Structure Code Excitation Linear Predictive CodingCSMA/CD Carreir Sense Muliple Access with Collision DetectionDDCF Disengage ConFirmDNS Domain-Name-SystemDPCM Differential Puls Code ModulationDRQ Disengage ReQuestDSP Digital Signal ProcessorETSI European Telecommunications Standards InstituteFFIR Finite Impulse ResponseGGCF Gatekeeper ConFirmationGEOVIPA geographische Verzonung von VoIP zur Authentifizierung der VerkehrsursprüngeGK GateKeeperGRJ Gatekeeper ReJectGRQ Gatekeeper ReQuest
  • 112. Verzeichnisse 107GSTN General Switched Telefone NetworkGUI Graphical User InterfaceHHTML Hyper Text Markup LanguageHTTP Hyper Text Transfer ProtocolIIE Information ElementIEEE Institute of Electrical and Electonicss EngineersIETF Internet Engineering Task ForceIM Instant MessagingIOS Internetwork Operating SystemIP Internet ProtocolISDN Integrated Services Digital NetworkISP Internet Service ProviderITSP Internet Telephony Service ProviderITU International Telecommunications UnionJKLLAN Local Area NetworkLD-CELP Low Delay Code Excitation Linear Predictive CodingMMD5 Message Digest AlgorithmMGCP Media Gateway Control ProtocolMIPS Million Instructions per SecondMOS Mean Opinion ScoreMPMLQ Multiple Maximum Likelihood QuantizationMTU Maximum Transfer UnitNNAS Network Access ServerOPPAP Password authentication ProtocolPAP Password Authentication Protocol
  • 113. Verzeichnisse 108PBX Private Branch eXchangePCM Pulse Code ModulationPDA Personal Digital AssistentPLC Packet Loss ConcealmentPLMN Public Land Mobile NetworkPOTS Plain Old Telephone ServicePPP Point to Point ProtocolPSTN Public Switched Telephne NetworkQQoS Quality of ServiceRRADIUS Remote Authentication Dial-In User ServiceRAS Ragistration, Admission, StatusRAS Remote Access ServerRCF Registration ConFirmRFC Request for CommentsRRJ Registration ReJectRRQ Registration ReQuestRTCP Real Time Control ProtocolRTP Real Time Transfer ProtocolSSCN Switched Circuit NetworkSCTP Stream Control Transmission ProtokollSDP Session Description ProtocolSGCP Simple Gateway Control ProtocolSIP Session Initiation ProtocolSQL Structured Query LanguageTTACACS Terminal Access Controller Access Control SystemTCP Transmission Control ProtocolTELR Talker Echo Loudness RatingTIPHON Telecommunications and Internet Protocol Harmonization Over NetworksTPDU Trasport Protocol Data UnitTPKT Transport PacKeT
  • 114. Verzeichnisse 109UUAC User Agent ClientUAS User Agent ServerUCF Unregistration ConFirmURJ Unregistration ReJectURL Uniform Resource LocatorURQ Unregistration ReQuestUUIEs User-to-User Information ElementsVVAD Voice-Activity-DetectionVoIP Voice over Internet ProtocolWXYZ
  • 115. Anhänge 110Anhang 1: SIP Status CodeTabelle nach [25]
  • 116. Anhänge 111Anhang 2: Dictionary File## Updated 97/06/13 to livingston-radius-2.01 miquels@cistron.nl## This file contains dictionary translations for parsing# requests and generating responses. All transactions are# composed of Attribute/Value Pairs. The value of each attribute# is specified as one of 4 data types. Valid data types are:## string - 0-253 octets# ipaddr - 4 octets in network byte order# integer - 32 bit value in big endian order (high byte first)# date - 32 bit value in big endian order - seconds since# 00:00:00 GMT, Jan. 1, 1970## Enumerated values are stored in the user file with dictionary# VALUE translations for easy administration.## Example:## ATTRIBUTE VALUE# --------------- -----# Framed-Protocol = PPP# 7 = 1 (integer encoding)## Following are the proper new names. Use these.#ATTRIBUTE User-Name 1 stringATTRIBUTE Password 2 stringATTRIBUTE CHAP-Password 3 stringATTRIBUTE NAS-IP-Address 4 ipaddrATTRIBUTE NAS-Port-Id 5 integerATTRIBUTE Service-Type 6 integerATTRIBUTE Framed-Protocol 7 integerATTRIBUTE Framed-IP-Address 8 ipaddrATTRIBUTE Framed-IP-Netmask 9 ipaddrATTRIBUTE Framed-Routing 10 integerATTRIBUTE Filter-Id 11 stringATTRIBUTE Framed-MTU 12 integerATTRIBUTE Framed-Compression 13 integerATTRIBUTE Login-IP-Host 14 ipaddrATTRIBUTE Login-Service 15 integerATTRIBUTE Login-TCP-Port 16 integerATTRIBUTE Reply-Message 18 stringATTRIBUTE Callback-Number 19 stringATTRIBUTE Callback-Id 20 stringATTRIBUTE Framed-Route 22 stringATTRIBUTE Framed-IPX-Network23 ipaddrATTRIBUTE State 24 stringATTRIBUTE Session-Timeout 27 integer
  • 117. Anhänge 112ATTRIBUTE Idle-Timeout 28 integerATTRIBUTE Termination-Action 29 integerATTRIBUTE Called-Station-Id 30 stringATTRIBUTE Calling-Station-Id 31 stringATTRIBUTE Acct-Status-Type 40 integerATTRIBUTE Acct-Delay-Time 41 integerATTRIBUTE Acct-Input-Octets 42 integerATTRIBUTE Acct-Output-Octets 43 integerATTRIBUTE Acct-Session-Id 44 stringATTRIBUTE Acct-Authentic 45 integerATTRIBUTE Acct-Session-Time 46 integerATTRIBUTE Acct-Terminate-Cause 49 integerATTRIBUTE NAS-Port-Type 61 integerATTRIBUTE Port-Limit 62 integerATTRIBUTE Connect-Info 77 string## Experimental Non Protocol Attributes used by Cistron-Radiusd#ATTRIBUTE Huntgroup-Name 221 stringATTRIBUTE User-Category 1029 stringATTRIBUTE Group-Name 1030 stringATTRIBUTE Simultaneous-Use 1034 integerATTRIBUTE Strip-User-Name 1035 integerATTRIBUTE Fall-Through 1036 integerATTRIBUTE Add-Port-To-IP-Address 1037 integerATTRIBUTE Exec-Program 1038 stringATTRIBUTE Exec-Program-Wait 1039 stringATTRIBUTE Hint 1040 string## Non-Protocol Attributes# These attributes are used internally by the server#ATTRIBUTE Expiration 21 dateATTRIBUTE Auth-Type 1000 integerATTRIBUTE Menu 1001 stringATTRIBUTE Termination-Menu 1002 stringATTRIBUTE Prefix 1003 stringATTRIBUTE Suffix 1004 stringATTRIBUTE Group 1005 stringATTRIBUTE Crypt-Password 1006 stringATTRIBUTE Connect-Rate 1007 integer## Integer Translations#
  • 118. Anhänge 113# User TypesVALUE Service-Type Login-User 1VALUE Service-Type Framed-User 2VALUE Service-Type Callback-Login-User 3VALUE Service-Type Callback-Framed-User 4VALUE Service-Type Outbound-User 5VALUE Service-Type Administrative-User 6VALUE Service-Type NAS-Prompt-User 7# Framed ProtocolsVALUE Framed-Protocol PPP 1VALUE Framed-Protocol SLIP 2# Framed Routing ValuesVALUE Framed-Routing None 0VALUE Framed-Routing Broadcast 1VALUE Framed-Routing Listen 2VALUE Framed-Routing Broadcast-Listen 3# Framed Compression TypesVALUE Framed-Compression None 0VALUE Framed-Compression Van-Jacobson-TCP-IP 1# Login ServicesVALUE Login-Service Telnet 0VALUE Login-Service Rlogin 1VALUE Login-Service TCP-Clear 2VALUE Login-Service PortMaster 3# Status TypesVALUE Acct-Status-Type Start 1VALUE Acct-Status-Type Stop 2VALUE Acct-Status-Type Accounting-On 7VALUE Acct-Status-Type Accounting-Off 8# Authentication TypesVALUE Acct-Authentic RADIUS 1VALUE Acct-Authentic Local 2VALUE Acct-Authentic PowerLink128 100# Termination OptionsVALUE Termination-Action Default 0VALUE Termination-Action RADIUS-Request 1
  • 119. Anhänge 114# NAS Port Types, available in 3.3.1 and laterVALUE NAS-Port-Type Async 0VALUE NAS-Port-Type Sync 1VALUE NAS-Port-Type ISDN 2VALUE NAS-Port-Type ISDN-V120 3VALUE NAS-Port-Type ISDN-V110 4# Acct Terminate Causes, available in 3.3.2 and laterVALUE Acct-Terminate-Cause User-Request 1VALUE Acct-Terminate-Cause Lost-Carrier 2VALUE Acct-Terminate-Cause Lost-Service 3VALUE Acct-Terminate-Cause Idle-Timeout 4VALUE Acct-Terminate-Cause Session-Timeout 5VALUE Acct-Terminate-Cause Admin-Reset 6VALUE Acct-Terminate-Cause Admin-Reboot 7VALUE Acct-Terminate-Cause Port-Error 8VALUE Acct-Terminate-Cause NAS-Error 9VALUE Acct-Terminate-Cause NAS-Request 10VALUE Acct-Terminate-Cause NAS-Reboot 11VALUE Acct-Terminate-Cause Port-Unneeded 12VALUE Acct-Terminate-Cause Port-Preempted 13VALUE Acct-Terminate-Cause Port-Suspended 14VALUE Acct-Terminate-Cause Service-Unavailable 15VALUE Acct-Terminate-Cause Callback 16VALUE Acct-Terminate-Cause User-Error 17VALUE Acct-Terminate-Cause Host-Request 18## Non-Protocol Integer Translations#VALUE Auth-Type Local 0VALUE Auth-Type System 1VALUE Auth-Type SecurID 2VALUE Auth-Type Crypt-Local 3VALUE Auth-Type Reject 4## Cistron extensions#VALUE Auth-Type Pam 253VALUE Auth-Type None 254## Experimental Non-Protocol Integer Translations for Cistron-Radiusd#VALUE Fall-Through No 0VALUE Fall-Through Yes 1
  • 120. Anhänge 115VALUE Add-Port-To-IP-Address No 0VALUE Add-Port-To-IP-Address Yes 1## Configuration Values# uncomment these two lines to turn account expiration on##VALUE Server-Config Password-Expiration 30#VALUE Server-Config Password-Warning 5## $Id: dictionary.ser,v 1.2 2003/09/11 22:05:08 janakj Exp $## SIP RADIUS attributes## Schulzrinne indicates attributes according to# draft-schulzrinne-sipping-radius-accounting-00## Sterman indicates attributes according to# draft-sterman-aaa-sip-00## Standard indicates a standard RADIUS attribute# which is missing in radiusclient dictionary## Digest indicates attributes according to## Proprietary indicates an attribute that hasnt# been standardized#### acc ###ATTRIBUTE Sip-Method 101 integer # SchulzrinneATTRIBUTE Sip-Response-Code 102 integer # SchulzrinneATTRIBUTE Sip-Cseq 103 string # SchulzrinneATTRIBUTE Sip-To-Tag 104 string # SchulzrinneATTRIBUTE Sip-From-Tag 105 string # SchulzrinneATTRIBUTE Sip-Branch-Id 106 string # SchulzrinneATTRIBUTE Sip-Translated-Req-ID 107 string # SchulzrinneATTRIBUTE Sip-Source-Ip-Address 108 ipaddr # SchulzrinneATTRIBUTE Sip-Source-Port 109 integer # SchulzrinneVALUE Service-Type Sip-Session 15 # Schulzrinne### auth_radius #### Sip-Session service type is already defined in acc sectionVALUE Service-Type Call-Check 10 # StandardVALUE Service-Type Emergency-Call 13 # ProprietaryATTRIBUTE Digest-Response 206 string # StermanATTRIBUTE Digest-Attributes 207 string # Sterman
  • 121. Anhänge 116ATTRIBUTE Sip-Uri-User 208 string # ProprietaryATTRIBUTE Sip-Rpid 213 string # ProprietaryATTRIBUTE Digest-Realm 1063 string # StermanATTRIBUTE Digest-Nonce 1064 string # StermanATTRIBUTE Digest-Method 1065 string # StermanATTRIBUTE Digest-Uri 1066 string # StermanATTRIBUTE Digest-Qop 1067 string # StermanATTRIBUTE Digest-Algorithm 1068 string # StermanATTRIBUTE Digest-Body-Digest 1069 string # StermanATTRIBUTE Digest-Cnonce 1070 string # StermanATTRIBUTE Digest-Nonce-Count 1071 string # StermanATTRIBUTE Digest-User-Name 1072 string # Sterman### group_radius ###VALUE Service-Type Group-Check 12 # ProprietaryATTRIBUTE Sip-Group 211 string # Proprietary### uri_radius #### Call-Check service type is already define in auth_radius
  • 122. Anhänge 117Anhang 3: RADIUS-Attribut-Typen The type field is a single octet which is one of the following:Type Description Attribute Length1 User-Name =32 User-Password =183 CHAP-Password =194 NAS-IP-Address 65 NAS-Port 66 Service-Type 67 Framed-Protocol 68 Framed-IP-Address 69 Framed-IP-Netmask 610 Framed-Routing 611 Filter-Id =312 Framed-MTU 613 Framed-Compression 614 Login-IP-Host 615 Login-Service 616 Login-Port 617 (unassigned) N/A18 Reply-Message =319 Login-Callback-Number =320 Framed-Callback-Id =321 (unassigned) N/A22 Framed-Route =323 Framed-IPX-Network 624 State =325 Class =326 Vendor-Specific =727 Session-Timeout 628 Idle-Timeout 629 Termination-Action 630 Client-Port-DNIS =331 Caller-ID =332 NAS-Identifier =333 Proxy-State =334 Login-LAT-Service =335 Login-LAT-Node =336 Login-LAT-Group 3437 Framed-AppleTalk-Link 6
  • 123. Anhänge 11838 Framed-AppleTalk-Network 639 Framed-AppleTalk-Zone =340 Acct-Status-Type 641 Acct-Delay-Time 642 Acct-Input-Octets 643 Acct-Output-Octets 644 Acct-Session-Id =345 Acct-Authentic 646 Acct-Session-Time 647 Acct-Input-Packets 648 Acct-Output-Packets 649 (reserved for future accounting) N/A192 - 223 (reserved for experimental use) N/A224 - 240 (reserved for implemention-specific use) N/A241 - 255 (reserved: DO NOT USE) N/A
  • 124. Anhänge 119 Anhang 4: Quell-Code-Änderungen 1 //--------------------------------------------------------------------------------------------------------------- 2 //############################ RADIUS-Server ############################## 3 //--------------------------------------------------------------------------------------------------------------- 4 5 //* In Datei /freeradius-1.0.0/src/include/libradius.h 6 7 //Neue Struktur definieren: 8 9 typedef struct daten {1011 char acctdir[50];12 char abr_ip[20];13 int start_zeit, stop_zeit, verbindungsdauer;1415 }DATEN;1617 DATEN faik;1819 //A) REGISTRIERUNG:2021 //* In Datei /freeradius-1.0.0/src/modules/rlm_detail/rlm_detail.c2223 //Accountdirectory in faik.acctdir koppieren:2425 strcpy(faik.acctdir, buffer);26 char bbr[14];27 if (strcmp(pair->name, "Framed-AppleTalk-Zone") == 0){28 if ((pair->strvalue[0] == b)&&(pair->strvalue[1] == b)){29 for(m=0; m<13; m++)30 bbr[m]=pair->strvalue[m+2]; //Bandbreite in bbr kopieren31 }32 else{33 //Attr. wird im SIP-Server (sterman.c und acc.c) erstellt (für Anschluss-Ip-Adresse)34 fputs("# NEU # ", outfp);35 fprintf(outfp,"%s", pair->strvalue);36 fputs("n", outfp);37 }38 else { if (pair->attribute == PW_FRAMED_IP_ADDRESS){39 //Attr. wird in acct.c erstellt40 fputs("# NEU # ",outfp); //Attr.41 fprintf(outfp,"Nomaden-IP-Adresse (CHIP) = %s", pair->strvalue);4243 fputs("tn", outfp);44 }45 else{46 fputs("t", outfp); //47 vp_print(outfp, pair); // 3 Ursprüngliche Zeilen48 fputs("n", outfp); //
  • 125. Anhänge 12049 }50 }515253 //* In Datei /freeradius-1.0.0/src/lib/radius.c54 //Nach:55 debug_pair(reply);5657 char *a;58 FILE *myfile;5960 myfile = fopen(faik.acctdir, "a");61 //myfile = fopen("/usr/local/var/log/radius/radacct/139.6.19.65/auth-detail-20041103", "a");62 if(strcmp(reply->name, "Framed-IP-Address") == 0){63 fprintf(myfile, "# Neu #");6465 //aus print.c66 //Framed-IP-Address ablesen und in auth-detail-20041103 schreiben6768 if (reply->strvalue[0])69 a = (char *)reply->strvalue;70 else71 a = ip_hostname((char *)reply->strvalue,72 sizeof(reply->strvalue),73 reply->lvalue);74 fprintf(myfile, "Nomaden-IP-Adresse (CHIP) = %snn", a);7576 }77 fclose(myfile);787980 //B) ACCOUNTING:8182 //* In Datei /freeradius-1.0.0/src/modules/rlm_files/rlm_files.c8384 //IP-Adresse des UAs in faik.abr_ip koppieren85 strcpy(faik.abr_ip, pl->reply->strvalue);8687 //* In Datei /freeradius-1.0.0/src/main/acct.c8889 VALUE_PAIR *my_vp;9091 my_vp = paircreate(PW_FRAMED_IP_ADDRESS, PW_TYPE_STRING);92 strcpy(my_vp->strvalue, faik.abr_ip);93 pairadd(&request->packet->vps, my_vp);9495 * In Datei /freeradius-1.0.0/src/modules/rlm_detail/rlm_detail.c9697 // start-time Datei anlegen (mit aktuellem Datum) in Variable se98 int ifstart = 0, ifstop = 0;99 FILE *time_file;
  • 126. Anhänge 121100 int stunden=0, minuten=0, sekunden=0;101 struct tm *TM, s_TM;102 char tmpdt[10]="Null"; /* For temporary storing of dates */103 char tmpdt_gestern[10]="Null";104 int gestern_zeit;105 int x,ad,m;106 char sd[100]="Null", se[100]="Null", se_gestern[100]="Null";107108 ad= strlen(faik.acctdir);109 strcpy(sd, faik.acctdir);110111 for(x=0; x<(ad-15); x++){112 se[x] = sd[x];113 se_gestern[x] = sd[x];114 }115116 TM = localtime_r(&request->timestamp, &s_TM);117 strftime(tmpdt,sizeof(tmpdt),"%Y%m%d",TM);118119 gestern_zeit=request->timestamp;120 gestern_zeit=gestern_zeit-86400; //=24std*3600s in der start-time datei von gestern121 zu suchen122 // (Mittenachtproblem)123 TM = localtime_r(&(gestern_zeit), &s_TM);124 strftime(tmpdt_gestern,sizeof(tmpdt_gestern),"%Y%m%d",TM);125126 strcat(se, "start-time-");127 strcat(se, tmpdt);128129 strcat(se_gestern, "start-time-");130 strcat(se_gestern, tmpdt_gestern);131132 //Speichern der Verbindungs-Startzeiten133134 if (strcmp(pair->strvalue, "Start") == 0) ifstart = 1;135 if (strcmp(pair->strvalue, "Stop") == 0) ifstop = 1;136137 if ((strcmp(pair->name, "Acct-Session-Id") == 0) && ifstart == 1){ // Für138 Verbindungsstart139140 //time_file = fopen("/usr/local/var/log/radius/radacct/139.6.19.65/start-time-141 20041203", "a");142 time_file = fopen(se, "a");143144 fprintf(time_file, "%sn",pair->strvalue);145 for(m=0; m<(37-strlen(pair->strvalue)); m++){ // Wenn A-S-Id kurz ist < 37146 fprintf(time_file, " ");147 }148 fprintf(time_file, "n%ld n", request->timestamp);149 // 27 Leerzeichen gilt bis timestamp150 // 11-Stellig wird, dann 26 Leerzeichen
  • 127. Anhänge 122151 fprintf(time_file, "%s",bbr); //Bandbreite152 for(m=0; m<(37-strlen(bbr)); m++){ // Wenn bbr kurz ist < 37153 fprintf(time_file, " ");154 }155 fprintf(time_file, "n");156157 ifstart = 0;158 fclose(time_file);159 }160 //Ablesen der start-time-Datei161162 if ((strcmp(pair->name, "Acct-Session-Id") == 0) && ifstop == 1){163164 int lrecl=38,hi,gef=0,suche=0;165 long length;166 int startzeit, stopzeit, dauer;167 char b[40]="nul", c[40]="nul", r[40]="nul", y[40]="nul";168 double bandbreite, bandw;169170 //time_file = fopen("/usr/local/var/log/radius/radacct/139.6.19.65/start-time-171 20041203", "r");172 while((suche<2))&&(gef==0){ //in der star-time-dateien von heute und gestern173 suchen174175 if (suche == 0) time_file = fopen(se, "r");176 if (suche == 1) time_file = fopen(se_gestern, "r");177178 strcpy(b, pair->strvalue);179180 fseek(time_file, 0L, SEEK_END);181 length = ftell(time_file); //fseek und ftell zur Bestimmung der Laenge der Datei182183 hi= length/lrecl; //Anzahl der Datensaetze ind der Datei184185 //sequenziele Suche186 for(m=0; m<=hi; m++){187 fseek(time_file, m*lrecl, SEEK_SET);188 printf("%d * lrecl = %dn", m, m*lrecl);189 fscanf(time_file, "%s", c);190 if (strcmp(b,c) == 0){191 gef=1;192 fseek(time_file, (m+1)*lrecl, SEEK_SET);193 fscanf(time_file, "%s", r);194 //fscanf(time_file, "%d", &d);195 printf("n#### Der dazugehoerige Timestamp = %sn", r);196 break;197 }198 }199 sscanf(r, "%d", &startzeit);200 sscanf(y, "%lf", &bandw); //Konvertierung string -> integer201 stopzeit = request->timestamp;
  • 128. Anhänge 123202 dauer = stopzeit - startzeit;203 suche++;204 }205206 stunden = dauer/3600;207 minuten = (dauer%3600)/60;208 sekunden = (dauer%3600)%60;209210 if (gef != 1){211 fputs("# NEU # ",outfp);212 fprintf(outfp,"Gespraechsdauer = nicht berechenbar, weil Startzeit nicht gefunden213 wurden");214 }215 else{216 fputs("# NEU # ",outfp);217 fprintf(outfp,"Gespraechsdauer = %d Std %d Min %d Sek ( = %d Sek)n", stunden,218 minuten ,sekunden,dauer);219220 fputs("# NEU # ",outfp);221222 bandbreite= bandw * dauer / 8 ; //Volumen in Byte223 //bandbreite= bandbreite / 1000; // in KByte224 //if (bandbreite<1000) fprintf(outfp,"Uebertagenes Volumen = %.2lf KByten",bandbreite);225 //else fprintf(outfp,"Uebertagenes Volumen = %.2lf MByten",bandbreite/1000);226227 fprintf(outfp,"Uebertagenes Volumen = %.2lf Byten",bandbreite);228 }229230 ifstop = 0;231 fclose(time_file);232 }233234235 //---------------------------------------------------------------------------------------------------------------236 //############################# SER-Server ###############################237 //---------------------------------------------------------------------------------------------------------------238239 //* Datei erstellen /ser-0.8.12/extern_variables.h mit Inhalt240241 char anschluss_auth[50];242 char anschluss_acc[50];243 char sip_methode[4];244 char used_audio_codec[20];245 char used_video_codec[20];246 int neu_message_id ;247 int alt_message_id ;248249 //A) Registrierung:250251 //* In Datei /ser-0.8.12/msg_translator.c252 #include "extern_variables.h"
  • 129. Anhänge 124253 int ns = strlen(name->s), zeichen, buchstabe, y;254 char mfl[ns+1];255 char sip_methode[4]="nul";256257 strcpy(mfl, name->s);258259 for(zeichen = 0; zeichen <= ns; zeichen++){260 //printf("%c",mfl[zeichen]);261262 if ((mfl[zeichen] == C) && (mfl[zeichen+1] == S) &&263 (mfl[zeichen+2] == e) && (mfl[zeichen+3] == q) &&264 (mfl[zeichen+4] == :) && (mfl[zeichen+5] == ) ){ // "CSeq: " ?265266 for(buchstabe=0; buchstabe <= 10; buchstabe++){267 if (mfl[buchstabe+zeichen+6] == ){268 for(y=0 ; y<3 ; y++){269 sip_methode[y]=mfl[buchstabe+zeichen+y+7]; //SIP-Methode270 }271 }272 }273 }274 }275 // Anschluss-Ip-Adresse in Variable anschluss kopieren276 if(strcmp(sip_methode, "REG") == 0){277 strcpy(anschluss_auth,s);278 }279 if((strcmp(sip_methode, "INV") == 0)){280 strcpy(anschluss_acc,s);281 }282283 //* In Datei /ser-0.8.12/modules/auth_radius/sterman.c284285 #include "/ser-0.8.12/extern_variables.h"286287 char anschluss2[70]="Null";288 strcpy(anschluss2,"");289 strcat(anschluss2, "Anschluss-IP-Adresse (PLIP) =");290 strcat(anschluss2, anschluss_auth);291292 //Paket send wird um ein Valuepair erweitern, das die Anschluss-Ip-Adresse enthält293 if (!rc_avpair_add(&send,PW_DIGEST_REALM , &anschluss2, 0)) {294 LOG(L_ERR, "sterman(): Unable to add PW_DIGEST_REALM attributen");295 rc_avpair_free(send);296 return -20;297 }298299 //Das Attribut wird als Framed-AppleTalk-Zone300 //erstellt und zu Radius geschickt.301 //Deshalb in rlm_detail die Änderung: (siehe oben).302303 //B) Accounting:
  • 130. Anhänge 125304305 //* In Datei /ser-0.8.12/modules/acc/acc.c306 // Auf message zugreifen und daraus gesuchte Daten (Type of Service) ablesen307308 int zeichen, buchstabe, zaehler=0, y, n=0, p=1, m1=0, m2=0, if_INVITE=0 ;309 int msg_length = strlen(rq->first_line.u.request.method.s);310 char mfl[msg_length+1]; //messege first line311312 char media_type[20]="Null", media_type1[20]="Null", media_type2[20]="Null";313 char med_codecs[300]="Null", med_codecs1[300]="Null",314 med_codecs2[300]="Null";315 char codec[80]="Null";316 char codecs[200]="Null", codecs1[200]="Null", codecs2[200]="Null";317318 strcpy(mfl, rq->first_line.u.request.method.s);319 strncpy(sip_methode,mfl, 3);320321 if(strcmp(sip_methode, "INV") == 0) {322 if_INVITE=1;323324 for(zeichen = 0; zeichen <= msg_length; zeichen++){325 //printf("%c",mfl[zeichen]);326 if ((mfl[zeichen] == m) && (mfl[zeichen+1] == =)){327 zaehler++;328 if(zaehler==1) m1 = zeichen;329 if(zaehler==2) m2 = zeichen;330 for(buchstabe = 0; buchstabe <= 5; buchstabe++){331 media_type[buchstabe] = mfl[buchstabe+zeichen+2];332333 if(media_type[buchstabe] == ){334 if (zaehler==1) strcpy(media_type1, media_type);335 if (zaehler==2) strcpy(media_type2, media_type);336 //printf("n######### acc.c Z.583 #### media_type= %sn",337 media_type);338 //break;339 }340 }341 }342 }343344 buchstabe = y = 0;345 strcpy(codecs, "");346 strcpy(codecs1, "");347 strcpy(codecs2, "");348349 FILE *c_file;350 char kommando[30]="/root/DB/test2/datenbank ";351352 char bandbreite[10]="Null";353354 for(zeichen = 0; zeichen <= msg_length; zeichen++){
  • 131. Anhänge 126355 //printf("%c",mfl[zeichen]);356357 if ((mfl[zeichen] == a) && (mfl[zeichen+1] == =) &&358 (mfl[zeichen+2] == r) && (mfl[zeichen+3] == t) &&359 (mfl[zeichen+4] == p) && (mfl[zeichen+5] == m) ){ // a=rtpm ?360361362 if (m2 != 0){363 if ((m1<zeichen) && (zeichen<m2)){364365 for(buchstabe=0; buchstabe <= 20; buchstabe++){366 if (mfl[buchstabe+zeichen] == ){367 for(y=0,p=n ; y<20 ; y++,p++){368 if(mfl[buchstabe+zeichen+y+1] == /){369 n=n+y+1;370 //codecs1[p]=/;371 break;372 }373 codec[y]=mfl[buchstabe+zeichen+y+1];374375 }376377 strcpy(kommando,"/root/DB/test2/datenbank ");378 strcat(kommando, codec);379 system(kommando);380381 c_file = fopen("/root/DB/test2/cfile", "r");382 fseek(c_file, 0L, SEEK_SET);383 fscanf(c_file, "%[^n]", bandbreite);384385 fclose(c_file);386387 strcat(codecs1, codec);388 strcat(codecs1, "(");389 strcat(codecs1, bandbreite);390 strcat(codecs1, ")");391 strcat(codecs1, "/");392393 printf(" / Codec:%s,Bandbreite: %sn", codec, bandbreite);394 break;395 }396 }397 n=0;398 }399 if ((zeichen)>m2){400401 for(buchstabe=0; buchstabe <= 20; buchstabe++){402 if (mfl[buchstabe+zeichen] == ){403 for(y=0,p=n ; y<20 ; y++,p++){404 if(mfl[buchstabe+zeichen+y+1] == /){405 n=n+y+1;
  • 132. Anhänge 127406 //codecs2[p]=/;407 break;408 }409 codec[y]=mfl[buchstabe+zeichen+y+1];410 }411412 strcpy(kommando,"/root/DB/test2/datenbank ");413 strcat(kommando, codec);414 system(kommando);415416 c_file = fopen("/root/DB/test2/cfile", "r");417 fseek(c_file, 0L, SEEK_SET);418 fscanf(c_file, "%[^n]", bandbreite);419 fclose(c_file);420421 strcat(codecs2, codec);422 strcat(codecs2, "(");423 strcat(codecs2, bandbreite);424 strcat(codecs2, ")");425 strcat(codecs2, "/");426427 printf(" / Codec:%s,Bandbreite: %sn", codec, bandbreite);428 break;429 }430 }431 }432 }433 else {434435 for(buchstabe=0; buchstabe <= 20; buchstabe++){436 if (mfl[buchstabe+zeichen] == ){437 for(y=0,p=n ; y<20 ; y++,p++){438 if(mfl[buchstabe+zeichen+y+1] == /){439 n=n+y+1;440 //codecs[p]=/;441 break;442 }443 codec[y]=mfl[buchstabe+zeichen+y+1];444 }445446 strcpy(kommando,"/root/DB/test2/datenbank ");447 strcat(kommando, codec);448 system(kommando);449450 c_file = fopen("/root/DB/test2/cfile", "r");451 fseek(c_file, 0L, SEEK_SET);452 fscanf(c_file, "%[^n]", bandbreite);453454 fclose(c_file);455456 strcat(codecs, codec);
  • 133. Anhänge 128457 strcat(codecs, "(");458 strcat(codecs, bandbreite);459 strcat(codecs, ")");460 strcat(codecs, "/");461462 printf(" Codecs: %s", codecs);463 printf(" / Codec:%s,Bandbreite: %sn", codec, bandbreite);464 break;465 }466 }467 }468 }469 }470 if (zaehler==1){471 //strcpy(med_codecs, "Type of Service // Quality of Service = ");472 strcpy(med_codecs, " ");473 strcat(med_codecs, media_type1);474 strcat(med_codecs, " // Codecs(Bandbr.): ");475 strcat(med_codecs, codecs);476 }477478 if (zaehler==2){479 strcpy(med_codecs1, " ");480 strcat(med_codecs1, media_type1);481 strcat(med_codecs1, " // Codecs(Bandbr.): ");482 strcat(med_codecs1, codecs1);483484 strcpy(med_codecs2, " ");485 strcat(med_codecs2, media_type2);486 strcat(med_codecs2, " // Codecs(Bandbr.): ");487 strcat(med_codecs2, codecs2);488489 }490491 } //alles in "INVITE"?492493 .494 .495 .496497 //#define PW_ANSCHLUSS_IP_ADDRESS 224498 #define PW_DIGEST_REALM 1063 /* string */499 #define PW_DIGEST_URI 1066 /* string */500 #define PW_DIGEST_METHOD 1065 /* string */501502 char anschlussIP[20]="null";503 char tos_qos[50]="Type of Service // Quality of Service";504 char tos1_qos[50]="Type of Service (1) // Quality of Service";505 char tos2_qos[50]="Type of Service (2) // Quality of Service";506 strcpy(anschlussIP, "");507 strcat(anschlussIP, "Anschluss-IP-Adresse = ");
  • 134. Anhänge 129508 strcat(anschlussIP, anschluss_auth);509510 if (if_INVITE==1){511512 if_INVITE=0;513514 if (zaehler==1){ //Ein Medientyp515 rc_avpair_add(&send, PW_DIGEST_REALM, &anschlussIP, 0);516 rc_avpair_add(&send, PW_DIGEST_REALM, &tos_qos, 0);517 rc_avpair_add(&send, PW_DIGEST_REALM, &med_codecs, 0);518 }519520 if (zaehler==2){ //Zwei Medientypen521 rc_avpair_add(&send, PW_DIGEST_REALM, &anschlussIP, 0);522 rc_avpair_add(&send, PW_DIGEST_REALM, &tos1_qos, 0);523 rc_avpair_add(&send, PW_DIGEST_REALM, &med_codecs1, 0);524 rc_avpair_add(&send, PW_DIGEST_REALM, &tos2_qos, 0);525 rc_avpair_add(&send, PW_DIGEST_REALM, &med_codecs2, 0);526 }527 }528529 else{530 rc_avpair_add(&send, PW_DIGEST_REALM, &anschlussIP, 0);531 }532533 //PW_SIP_SOURCE_IP_ADDRESS534535 //* Die Datei /root/DB/test2/datenbank.c536537 #include <mysql/mysql.h>538 #include <stdio.h>539 #include <string.h>540541 char query[100],codec[10];542 int t,r;543544 void to_file(char codec[10]){545 FILE *c_file;546547 c_file = fopen("/root/DB/test2/cfile", "w");548 fprintf(c_file, "%s",codec);549550 fclose(c_file);551 }552553 main(int argc, char **argv){554 void to_file();555 MYSQL *my;556 MYSQL_RES *res;557 MYSQL_ROW row;558 mysql_init(my);
  • 135. Anhänge 130559 if (!mysql_real_connect(my,"localhost","root",560 "","sip_ser",0,NULL,0))561 {562 printf( "Error connectin ot database: %sn",mysql_error(my));563 }564 //else printf("Connected...n");565566 strcpy(query,"select bandbreite from codecs where codecs=");567 strcpy(codec,argv[1]);568 strcat(query,codec);569 strcat(query,"");570571 t=mysql_real_query(my,query,(unsigned int) strlen(query));572 if (t)573 {574 printf("Error making query: %sn",575 mysql_error(my));576 }577 else printf("Query made...n");578579 res=mysql_use_result(my);580 for(r=0;r<=mysql_field_count(my);r++){581 row=mysql_fetch_row(res);582 if(row<0) break;583 for(t=0;t<mysql_num_fields(res);t++){584 //printf("%s ",row[t]);585 to_file(row[t]);586 }587 printf("n");588 }589 mysql_close(my);590591 return 0;592593594 //* Die Datei /root/DB/test2/datenbank_bb.c595596 #include <mysql/mysql.h>597 #include <stdio.h>598 #include <string.h>599600 char query[100],codec[10];601 int t,r;602603 void to_file(char codec[10]){604 FILE *c_file;605606 c_file = fopen("/root/DB/test2/cfile", "w");607 fprintf(c_file, "%s",codec);608609 fclose(c_file);
  • 136. Anhänge 131610 }611612 main(int argc, char **argv){613 void to_file();614 MYSQL *my;615 MYSQL_RES *res;616 MYSQL_ROW row;617 mysql_init(my);618 if (!mysql_real_connect(my,"localhost","root",619 "","sip_ser",0,NULL,0))620 {621 printf( "Error connectin ot database: %sn",mysql_error(my));622 }623 else printf("Connected...n");624625 strcpy(query,"select bb from codecs where codecs=");626 strcpy(codec,argv[1]);627 strcat(query,codec);628 strcat(query,"");629630 t=mysql_real_query(my,query,(unsigned int) strlen(query));631 if (t)632 {633 printf("Error making query: %sn",634 mysql_error(my));635 }636 else printf("Query made...n");637638 res=mysql_use_result(my);639 for(r=0;r<=mysql_field_count(my);r++){640 row=mysql_fetch_row(res);641 if(row<0) break;642 for(t=0;t<mysql_num_fields(res);t++){643 //printf("%s ",row[t]);644 to_file(row[t]);645 }646 printf("n");647 }648649 mysql_close(my);650651 return 0;652 }653654 * Die Datei /ser-0.8.12/main.c655656 #include "/ser-0.8.12/extern_variables.h"657 //Wichtig für SMS658659 neu_message_id = alt_message_id = 0;660
  • 137. Anhänge 132661662 * Die Datei /ser-0.8.12/parser/msg_parser.c663664 #include "/ser-0.8.12/extern_variables.h"665666 // Instant Message667 // Message-Daten in die Datei einemessage schreiben668669 int msg_length = strlen(msg->first_line.u.request.method.s);670 char mfl[msg_length]; //message first line671 char sip_methode[4]="nl";672673 FILE *m_file;674 FILE *m_file2;675 FILE *m_file3;676 FILE *leerzeile;677678 strcpy(mfl, msg->first_line.u.request.method.s);679680 strncpy(sip_methode, mfl, 3);681 if(strcmp(sip_methode, "MES") == 0) { //MESSAGE682683 neu_message_id = msg->id;684685 if (neu_message_id != alt_message_id){686687 m_file = fopen("/ser-0.8.12/parser/einemessage", "w");688 m_file2 = fopen("/ser-0.8.12/parser/einemessage2", "w");689 m_file3 = fopen("/ser-0.8.12/parser/xmessagefile", "a");690 leerzeile = fopen("/ser-0.8.12/parser/leerzeile", "w");691692 fprintf(m_file, "%s", mfl);693 fprintf(leerzeile, "ntINSTANT MESSAGEn");694695 fclose(m_file);696 fclose(m_file2);697 fclose(m_file3);698 fclose(leerzeile);699 }700 }701702 * Die Datei /ser-0.8.12/parser/msg_translator.c703704 #include "/ser-0.8.12/extern_variables.h"705706 // Instant Message707708 if (neu_message_id != alt_message_id){ // Wenn neue Message eintrifft709710 //Relevante Daten herausfiltern711
  • 138. Anhänge 133712 system("sed -n /From/ p /ser-0.8.12/parser/einemessage >> /ser-.8.12/parser/einemessage2");713 system("sed -n /To/ p /ser-0.8.12/parser/einemessage >> /ser-0.8.12/parser/einemessage2");714 system("sed -n /Call-ID/ p /ser-0.8.12/parser/einemessage >> /ser-715 0.8.12/parser/einemessage2");716 system("sed -n /Content-Length/ p /ser-0.8.12/parser/einemessage >> /ser-717 0.8.12/parser/einemessage2");718 system("sed -n /User-Agent/ p /ser-0.8.12/parser/einemessage >> /ser-719 0.8.12/parser/einemessage2");720721 system("cat /ser-0.8.12/parser/leerzeile >> /ser-0.8.12/parser/xmessagefile");722 system("date >> /ser-0.8.12/parser/xmessagefile"); //Datum und Uhrzeit hinzufügen723 system("cat /ser-0.8.12/parser/einemessage2 >> /ser-0.8.12/parser/xmessagefile");724725 alt_message_id = neu_message_id;