11.07.2015 Aufrufe

Entwicklung einer verteilten Architektur für ein ... - AG Rechnernetze

Entwicklung einer verteilten Architektur für ein ... - AG Rechnernetze

Entwicklung einer verteilten Architektur für ein ... - AG Rechnernetze

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Universität Bremen<strong>Entwicklung</strong> <strong><strong>ein</strong>er</strong> <strong>verteilten</strong> <strong>Architektur</strong>für <strong>ein</strong> modulares Systemzur Adaption vonSteuer- und Medienströmenin Multi-Protokollumgebungen fürIP-Telefonie und MultimediakonferenzenDiplomarbeit vonAndreas Büsching16. November 20011. Gutachter: Prof. Dr.-Ing. Ute Bormann2. Gutachter: Prof. Dr. rer. nat. Martin Gogolla


Inhaltsverzeichnis1. Einleitung 12. Basistechnologien 32.1. IP – Internet-Protokoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.2. RTP und RTCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.2.1. Definitionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.2.2. Medientransport mit RTP . . . . . . . . . . . . . . . . . . . . . . . . 102.2.3. RTP-Steuer-Protokoll . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.2.4. Translator und Mixer . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.3. MEGACO-Protokoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.3.1. <strong>Architektur</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.3.2. Protokoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.4. Anrufsignalisierung und -steuerung . . . . . . . . . . . . . . . . . . . . . . . 282.5. Medienbeschreibung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342.6. Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383. Anforderungen und Ziele 413.1. Hintergrund . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413.2. Zielfindung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.2.1. Bestandsaufnahme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453.2.2. Anwendungsszenarien von Media-Prozessoren . . . . . . . . . . . . . 483.2.3. Funktionalität von Media-Prozessoren . . . . . . . . . . . . . . . . . 493.3. Verwandte Arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503.3.1. Robust Audio Tool – RAT . . . . . . . . . . . . . . . . . . . . . . . . . 513.3.2. Die UCL commonlib . . . . . . . . . . . . . . . . . . . . . . . . . . . 523.3.3. UCL Transcoding Gateway – UTG . . . . . . . . . . . . . . . . . . . . 523.3.4. SIP-basierter Audio-Konferenz-Server – sipconf . . . . . . . . . . . . 533.4. Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544. <strong>Architektur</strong> 55


ivInhaltsverzeichnis4.1. Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554.2. Konferenz-Modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574.2.1. Termination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584.2.2. Kontext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614.2.3. Konferenz-Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . 634.3. Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644.3.1. Transport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664.3.2. Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674.3.3. Erweiterungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694.3.4. Steuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724.4. Interne Kommunikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724.5. Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765. Implementierung 775.1. RTP-Bibliothek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775.1.1. Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 785.1.2. Schnittstelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805.2. MePro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815.2.1. Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815.2.2. Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845.2.3. Konferenz-Modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855.3. Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 866. Zusammenfassung und Ausblick 876.1. Stand der <strong>Entwicklung</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876.2. Weiterer Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89A. Verlustunempfindlicher Transport von Medienströmen mit RTP 91A.1. RTP-Payload-Typ für redundante Informationen . . . . . . . . . . . . . . . . 91A.2. Interleaving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92A.3. Forward Error Correction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93Glossar 95Literaturverzeichnis 99Index 103


Abbildungsverzeichnis2.1. IPv4-Paketkopf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.2. IPv6-Paketkopf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.3. Kopf <strong>ein</strong>es RTP-Pakets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.4. optionale Erweiterung des RTP-Kopfes . . . . . . . . . . . . . . . . . . . . . 112.5. RTCP-Empfänger-Bericht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.6. RTCP-Sender-Bericht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.7. RTCP-Quellbeschreibungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.8. RTCP-SDES-Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.9. RTCP-BYE-Paket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.10.RTCP-Anwendungserweiterung . . . . . . . . . . . . . . . . . . . . . . . . . 172.11.MEGACO – Verbindung zum herkömmlichen Telefonnetz . . . . . . . . . . . 212.12.Trennung zwischen Steuer<strong>ein</strong>heit und Media-Prozessor . . . . . . . . . . . . 222.13.Verbindungsmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.14.SIP-Anrufsignalisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312.15.SIP-Anrufübergabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312.16.H.323-Anrufsignalisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.1. Infrastruktur in der Arbeitsgruppe . . . . . . . . . . . . . . . . . . . . . . . . 423.2. Verbindung zu <strong><strong>ein</strong>er</strong> Multicast-Konferenz . . . . . . . . . . . . . . . . . . . . 463.3. Übersetzung zwischen verschiedenen Kodierungsverfahren . . . . . . . . . . 473.4. Vermittlung zwischen verschiedenen Netzen . . . . . . . . . . . . . . . . . . 473.5. Bündelung von Medienströmen . . . . . . . . . . . . . . . . . . . . . . . . . 473.6. Anbindung von Teilgruppen in große Konferenzen . . . . . . . . . . . . . . . 493.7. UTG-Server und UTG-Client . . . . . . . . . . . . . . . . . . . . . . . . . . . 533.8. Audio-Mixer von sipconf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544.1. Aufbau <strong>ein</strong>es Media-Prozessors . . . . . . . . . . . . . . . . . . . . . . . . . 554.2. Informationsfluß im Konferenz-Modell . . . . . . . . . . . . . . . . . . . . . 574.3. Aufbau des Konferenz-Modells . . . . . . . . . . . . . . . . . . . . . . . . . 65


viAbbildungsverzeichnis4.4. Verwaltung von Modulen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664.5. Address-Struktur <strong>ein</strong>es Transport-Moduls . . . . . . . . . . . . . . . . . . . . 664.6. Aufbau <strong>ein</strong>es Transport-Moduls . . . . . . . . . . . . . . . . . . . . . . . . . 674.7. Codec-Struktur für Filter-Module . . . . . . . . . . . . . . . . . . . . . . . . 684.8. Beispiel <strong><strong>ein</strong>er</strong> Codec-Struktur . . . . . . . . . . . . . . . . . . . . . . . . . . 694.9. Aufbau <strong>ein</strong>es Filter-Moduls . . . . . . . . . . . . . . . . . . . . . . . . . . . 694.10.Aufbau <strong>ein</strong>es Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704.11.Aufbau <strong>ein</strong>es Ereignis-Objektes . . . . . . . . . . . . . . . . . . . . . . . . . 704.12.Struktur zur Meldung von Ereignissen . . . . . . . . . . . . . . . . . . . . . 704.13.Argumenten-Liste für Ereignisse und Signale . . . . . . . . . . . . . . . . . . 714.14.Aufbau <strong>ein</strong>es Erweiterungs-Modul . . . . . . . . . . . . . . . . . . . . . . . . 724.15.Aufbau <strong>ein</strong>es Steuer-Modul . . . . . . . . . . . . . . . . . . . . . . . . . . . 724.16.Beispiel: Vermittlung zwischen IPv4- und IPv6-Netz . . . . . . . . . . . . . . 734.17.Fluß der Mediendaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734.18.Aufbau <strong><strong>ein</strong>er</strong> Konferenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755.1. Struktur der RTP-Bibliothek . . . . . . . . . . . . . . . . . . . . . . . . . . . 785.2. Ereignis-Klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795.3. Generische Schnittstelle der RTP-Bibliothek . . . . . . . . . . . . . . . . . . 815.4. Abhängigkeiten innerhalb MEPRO . . . . . . . . . . . . . . . . . . . . . . . . 82A.1. RTP-Paket mit redundanten Informationen . . . . . . . . . . . . . . . . . . . 92


Tabellenverzeichnis2.1. Erweiterungsköpfe in IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.2. Liste der SDES-Elemente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.3. Kommandos zwischen MGC und MG . . . . . . . . . . . . . . . . . . . . . . 252.4. MEGACO-Deskriptoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284.1. Quell- und Ziel-Adreßtypen . . . . . . . . . . . . . . . . . . . . . . . . . . . 604.2. verschiedene Signal-Typen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60


viiiTabellenverzeichnis


1. EinleitungDas Internet ist mittlerweile <strong>ein</strong>es der am häufigsten <strong>ein</strong>gesetzten Medien zum Austauschvon Informationen. Dabei bietet es <strong>ein</strong> weites Spektrum an Diensten. Zu den bekanntestengehören das World Wide Web (WWW), E-Mails und Newsgroups. Ein weiterer Dienst,der erst langsam Verbreitung findet, ist die interaktive Sprachkommunikation, die optionaldurch Video-Informationen erweitert werden kann.Sprachkommunikation wird heutzutage über das leitungsvermittelte Telefonnetz abgewikkelt.Bei der ständig steigenden Zahl von Menschen, die Dienste des Internet nutzen, könnte<strong>ein</strong>e Einführung von Telefonie-Diensten bald zu <strong>ein</strong>em vollwertigen Ersatz für das herkömmlicheTelefonnetz heranwachsen. <strong>Entwicklung</strong>en in diesem Bereich werden mit demBegriff IP-Telefonie umschrieben.Für IP-basierte Netze werden auch andere Möglichkeiten zur interaktiven Sprachkommunikationentwickelt, die sich nicht direkt an die Telefonie anlehnen. Dabei werden spezielleFähigkeiten der zugrundeliegenden Netze ausgenutzt, um den Transport der Informationenzwischen den <strong>ein</strong>zelnen Teilnehmern zu optimieren und den Verlust von Daten zu minimieren.In diesen Bereich gehören die Mbone-Konferenzen, die die Gruppenadressierung(Multicast) in IP-basierten Netzen nutzen, um die Menge der zu transportierenden Datenzu reduzieren.Zur Realisierung von IP-basierter Multimedia-Kommunikation wird zur Zeit an mehrerenStandards gearbeitet. Dabei werden komplexe Signalisierungs- und Steuerungs-Protokolleentwickelt, die die Funktionalität der heutigen Telefonnetze bieten sollen. Weitere wichtigeThemen in der Standardisierung sind der Transport und die Verarbeitung der Mediendaten.Diese beiden Themen sind bei jeder interaktiven Kommunikation über <strong>ein</strong> IP-basiertes Netzwichtig und hängen von der Form der Kommunikation ab.Der Begriff der Kommunikation ist <strong>ein</strong>e allgem<strong>ein</strong>e Beschreibung für zwei Formen, die indieser Diplomarbeit von Interesse sind. Die <strong>ein</strong>fachere Form beschreibt <strong>ein</strong>e Kommunikationzwischen zwei Teilnehmern (Zwei-Punkt-Beziehung). Die zweite Form befaßt sich mitKommunikationsbeziehungen, in die mehr als zwei Teilnehmer involviert sind (Konferenzen).Sowohl die Signalisierung als auch der Transport und die Verarbeitung der Medienströmeist in dieser Form der Kommunikation komplexer.In Zwei-Punkt-Beziehungen können die Mediendaten direkt zwischen den Teilnehmernausgetauscht werden. In Konferenzen hingegen müssen andere Techniken gefunden werden,um die Informationen effizient zwischen allen Teilnehmern auszutauschen. Eine Möglichkeitbietet die Multicast-Adressierung des Internet Protokolls (IP), die in den Mbone-Konferenzen <strong>ein</strong>gesetzt wird. Die Multicast-Adressierung wird allerdings zur Zeit nur in<strong>ein</strong>em Teilbereich des Internet unterstützt und bietet somit k<strong>ein</strong>e <strong>ein</strong>heitliche Lösung füralle Konferenzen. Eine andere Möglichkeit bieten Konferenz-Zentralen, die als Verteiler fungieren.Die Teilnehmer selbst leiten ihre Mediendaten nur an die Zentrale weiter. Von dortwerden die Daten an die anderen Teilnehmer verteilt. Bei <strong>ein</strong>em Ausfall der Zentrale ist diegesamte Konferenz unterbrochen was <strong>ein</strong>e hohe Störanfälligkeit bedeutet.


2 Kapitel 1. EinleitungNicht nur der Transport von Mediendaten ist in IP-basierten Netzen mit neuen Problemenverbunden, die im leitungsvermittelten Telefonnetz nicht auftreten. In der heterogenenStruktur des Internet existieren Netze mit den unterschiedlichsten Kapazitäten. Auf demWeg zwischen zwei Teilnehmern können sich somit Netze befinden, die nicht die benötigteBandbreite zur Verfügung stellen können, um die Mediendaten zu transportieren. In diesenFällen können beispielsweise Instanzen an den Grenzen dieser Netze <strong>ein</strong>gesetzt werden,die durch <strong>ein</strong>e Komprimierung der Mediendaten für <strong>ein</strong>en reibungslosen Transport durchdas Netz sorgen. Diese Technik be<strong>ein</strong>flußt die anderen Teilnehmer nicht und bietet denNutzern in den Netzen mit geringer Kapazität <strong>ein</strong>e Teilnahme an der Konferenz.Diese Diplomarbeit beschäftigt sich mit der genauen Analyse von Problemstellungen imBereich des Transportes und der Verarbeitung von Medienströmen in Konferenzen. DieseAnalysen sowie weitergehende Untersuchungen und die Betrachtung von vorhandenenTechniken sollen zur Definition <strong><strong>ein</strong>er</strong> <strong>Architektur</strong> für <strong>ein</strong>e Komponente führen, die zur Lösungvon Problemen, wie den zuvor beschriebenen, <strong>ein</strong>gesetzt werden kann. Dabei ist dieModularität der Komponente besonders wichtig, um <strong>ein</strong>en weiträumigen Einsatz in beliebigenMultimedia-Kommunikationen <strong>ein</strong>schließlich der IP-Telefonie zu gewährleisten. Desweiterenmuß die Verwendung als zentrale Instanz oder als Teil <strong><strong>ein</strong>er</strong> solchen sowie derEinsatz innerhalb <strong>ein</strong>es Endpunktes möglich s<strong>ein</strong>.• Im nächsten Kapitel werden Basistechnologien beschrieben, die für den Kontext dieserDiplomarbeit wichtig sind.• Kapitel 3 beschreibt die Infrastruktur für IP-Telefonie und entwickelt Ideen für Strukturenund Funktionen der zu entwickelnden Komponente.• Kapitel 4 definiert die <strong>Architektur</strong> und legt <strong>ein</strong>e genaue Definition der Funktionenund Module fest.• Kapitel 5 befaßt sich mit der exemplarischen Implementierung der zuvor entwickelten<strong>Architektur</strong>.• Kapitel 6 schließt die Arbeit mit Überlegungen zu möglichen Erweiterungen ab.


2. BasistechnologienInternationale Standards sind für das Internet von großer Bedeutung. Diese ermöglichendie übergreifende Kommunikation zwischen den verschiedenen Netzen, aus denen das Internetbesteht. Geschlossene Systeme hingegen ermöglichen nur <strong><strong>ein</strong>er</strong> begrenzten Anzahlvon Herstellen die Integration ihrer Produkte, wodurch <strong>ein</strong>e weiträumige oder übergreifendeKommunikation schwierig oder unmöglich ist.Für die Thematik dieser Diplomarbeit, die sich mit der Erweiterung und Verbesserung vonDiensten in Multimedia-Konferenzen beschäftigt, sind internationale Standards unverzichtbar.Dieses Kapitel beschäftigt sich mit den Basistechnologien, die für das Verständnis dieserArbeit notwendig sind, sowie mit den Gremien, die diese entwickelt haben.Viele der im Internet <strong>ein</strong>gesetzten Technologien basieren auf internationalen Standards, dievon dem wichtigsten Standardisierungsgremium in diesem Bereich, der IETF (Internet EngineeringTask Force), publiziert wurden. Ein weiteres Gremium, das in den letzten Jahrenviel im Bereich der Multimedia-Kommunikation in paketvermittelten Netzen beigetragenhat, ist die ITU-T (Telecommunication Standardization Sector of ITU).Die IETF ist <strong>ein</strong>e offene internationale Organisation, die es erlaubt, daß Menschen ausallen Teilen der Welt ohne formale Mitgliedschaft aktiv an der Internet-Standardisierungteilnehmen können. Gegenstand der Standardisierung in der IETF sind alle erdenklichenBereiche, die sich mit Technologien im Internet beschäftigen. Unterteilt ist die IETF in Areas,die wiederum aus mehreren Working Groups bestehen, welche sich mit bestimmtenThemengebieten beschäftigen. Kommuniziert wird hauptsächlich über Mailing-Listen 1 , sodaß sich jeder ohne Einschränkungen an der <strong>Entwicklung</strong> beteiligen kann. Die Ergebnissewerden in Form von RFCs (Request for Comment) veröffentlicht.Die ITU-T 2 , die schon vor der Entstehung des Internet existierte, ist <strong>ein</strong>e Untergruppe derITU (International Telecommunication Union). Ihr Ursprung liegt in der Standardisierungim Bereich der Telekommunikationstechnik. Seit Mitte 1995 befassen sich Teile der ITU-Tmit der IP-Telefonie. Unterteilt ist die ITU-T in Study Groups, die sich mit fest definiertenThemen beschäftigen. Mehrere Working Parties sind <strong><strong>ein</strong>er</strong> Study Group zugeordnet undbestehen aus <strong><strong>ein</strong>er</strong> Anzahl von Questions, die sich mit <strong><strong>ein</strong>er</strong> Reihe von konkreten Fragenaus<strong>ein</strong>andersetzen.Die im folgenden ausgewählten Standards und Basistechnologien bilden die Grundlage fürdas Verständnis dieser Arbeit. Dabei werden Protokolle verschiedener Schichten und Modelleund Konzepte vorgestellt.Eines der wichtigsten Protokolle ist IP (Internet Protocol, RFC 791 [47]). Seit vielen Jahrenist IP in der Version 4 das Protokoll der Vermittlungsschicht im Internet. Mittlerweilewird an <strong><strong>ein</strong>er</strong> neuen, verbesserten Version 6 gearbeitet, die nun langsam in Teilnetzen <strong>ein</strong>gesetztwird. Um Konferenzen in und zwischen Netzen mit diesen beiden Protokollen der1 Zusätzlich findet dreimal im Jahren <strong>ein</strong> Treffen statt.2 Früher als CCITT (Comite Consultatif International Telegraphique et Telephonique) bekannt.


4 Kapitel 2. BasistechnologienVermittlungsschichten zu unterstützen, ist <strong>ein</strong> detailliertes Wissen über diese Protokollenotwendig.Der Transport von Medienströmen in IP-basierten Netzen wird in der Regel mittels RTP(Real-Time Transport Protocol, RFC 1889 [18]) realisiert. Der RFC beschreibt zusätzlichzum Protokoll wichtige Konzepte die für Verarbeitung von Medienströmen, für die das Verständnisvon RTP und RTCP (RTP Control Protocol) notwendig sind.Multimedia-Gateways, zentrale Komponenten, die Dienste im Bereich des Transportes undder Verarbeitung von Medienströmen bereitstellen, sind zentraler Punkt der <strong>Entwicklung</strong>ender Working Group MEGACO. Die im RFC „Megaco Protocol 1.0“ 3015 [9] veröffentlichtenKonzepte, Modelle und Definitionen des Protokolls können für die <strong>Entwicklung</strong> der eigenen<strong>Architektur</strong> von Nutzen s<strong>ein</strong>.Um die Möglichkeit <strong><strong>ein</strong>er</strong> Integration in die IP-Telefonie zu untersuchen, werden zwei Konferenzumgebungenanhand ihrer wichtigsten Protokolle, Komponenten und Konzepte beschrieben.Desweiteren wird in diesem Zusammenhang auf Möglichkeiten zur Beschreibungvon Medienströmen <strong>ein</strong>gegangen, die für die Kommunikation mit <strong><strong>ein</strong>er</strong> Steuer-Instanz <strong>ein</strong>gesetztwerden können.2.1. IP – Internet-ProtokollDas Internet ist <strong>ein</strong> Zusammenschluß von verschiedenen Netzen. Damit über die Grenzender <strong>ein</strong>zelnen Netze hinaus beliebige Daten versendet werden können, wird <strong>ein</strong>e netzübergreifendeAdressierung benötigt. IP (Internet Protocol, RFC 791 [47]) bietet genau dieseArt der Adressierung. Dadurch können Pakete von <strong>ein</strong>em Netz in <strong>ein</strong> beliebiges anderestransportiert werden und dabei weitere Netze passieren. Dabei werden die Datenpaketevon besonderen Systemen (Routern) durch das Internet bis zum Ziel transportiert. Anhandder Adresse wird der Weg zum Ziel ermittelt.Die <strong>Architektur</strong> des Internet setzt voraus, daß es Systeme gibt, die zwischen den verschiedenenNetzen vermitteln. Treten Fehler bei der Vermittlung von Paketen auf, muß es möglichs<strong>ein</strong>, die Quelle darüber zu informieren, damit diese entsprechend reagieren kann (z.B.durch <strong>ein</strong> erneutes Senden des Paketes). Für diese Aufgabe ist ICMP (Internet Control MessageProtocol, RFC 792 [46]) definiert worden.Die vier Byte langen Adressen der aktuell <strong>ein</strong>gesetzten Version 4 des Internet-Protokolls(IPv4) bieten <strong>ein</strong>en Adreßraum, der mittlerweile durch das enorme Wachstum des Internetfast vollständig aufgebraucht ist. Auch hat die langjährige Praxis mit der Version 4 gezeigt,daß sich die Anforderungen an das Internet-Protokoll gewandelt haben. Im RFC 2460 [10]ist <strong>ein</strong>e neue Version 6 (IPv6) spezifiziert. Die Adressen von IPv6 sind 16 Byte lang undbieten somit genügend Platz für weitere Netzknoten.Im folgenden werden anhand der Paketköpfe die genauen Fähigkeiten von IPv4 und IPv6untersucht. Dabei wird genauer auf Funktionen für den Transport von Medienströmen(„Echtzeitdaten“) <strong>ein</strong>gegangen.IP Version 4In Abbildung 2.1 ist der Kopf <strong>ein</strong>es IP-Paketes der Version 4 dargestellt. Jedes IP-Paket beginntmit <strong>ein</strong>em 4-Bit-Feld, das die Version des Protokolls enthält. Das darauf folgende Feld


2.1. IP – Internet-Protokoll 5IHL (Internet Header Length) gibt die tatsächliche Länge des Kopfes in 32-Bit-Worten an.Die dort <strong>ein</strong>getragene Zahl kann nicht kl<strong><strong>ein</strong>er</strong> als fünf s<strong>ein</strong>, da dies der Länge des feststehendenTeil des Kopfes entspricht.0 16 32VersionIHLToSTotal LengthIdentificationFlagsFragment OffsetTTL Protocol ChecksumSource AddressDestination AddressOptionsPadding BytesAbbildung 2.1.: IPv4-PaketkopfDas Feld Type of Service (ToS) kann mit <strong><strong>ein</strong>er</strong> Kombination von Flags den Transport des<strong>ein</strong>zelnen Paketes be<strong>ein</strong>flussen. Die genaue Definition der <strong>ein</strong>zelnen Bits aus dem RFC entsprichtnicht mehr der aktuellen Interpretation. Im RFC 2474 [38] mit dem Titel „Definitionof the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers“ werden dieToS-Bits neu definiert. Dabei ist die Rückwartskompatibilität nicht gegeben.Das Feld Total Length enthält die gesamte Länge des IP-Paketes in Bytes. Dabei werdenKopf- und Datenlänge zusammengezählt.Das nächste 32-Bit-Wort enthält Informationen zur Fragmentierung. In den ersten zweiBytes ist <strong>ein</strong>e Kennung (Identification) für die Fragmente enthalten, damit die Bestandteile<strong>ein</strong>es Paketes beim Empfänger identifiziert und zusammengesetzt werden können.Anschließend folgt das Feld Flags, in dem beschrieben wird, ob dieses Paket fragmentiertwerden darf, und falls es sich um <strong>ein</strong> Fragment handelt, ob es sich um das letzte Fragment<strong>ein</strong>es Paketes handelt. Die letzten 13 Bits des 32-Bit-Wortes enthalten <strong>ein</strong>en Offset, der inEinheiten von 64-Bit-Worten angegeben wird. 3 Damit wird bestimmt, an welche Stelle imGesamtpaket dieses Fragment <strong>ein</strong>gefügt werden muß.Im Feld TTL (Time To Live) wird <strong>ein</strong>getragen, nach wievielen Zwischenstationen (Routern)das Paket zerstört werden soll. Jeder Router im Internet, der dieses Paket weiterleitet, solldiese Zahl um <strong>ein</strong>s erniedrigen. 4 Erreicht diese Zahl den Wert null, wird das Paket gelöscht.Durch dieses Feld wird verhindert, daß unzustellbare Pakete ewig durch das Internet geleitetwerden.Im Feld Protocol steht <strong>ein</strong>e Kennung, die angibt, welches Protokoll in der darüber liegendenSchicht verwendet wird. Die Zahlen sind ebenso wie die Type of Service-Flags bei der IANA(Internet Assigned Numbers Authority) registriert. Als letztes Feld vor der Quell- und Ziel-Adresse folgt noch die Checksum (Prüfsumme), die jedoch nur über den Kopf des Paketesgebildet wird.Der Kopf <strong>ein</strong>es IP-Paketes kann nach den Adressen noch Optionen enthalten. Die Anzahlgenauso wie die Länge der <strong>ein</strong>zelnen Optionen ist variabel. Dabei gibt es zwei Arten vonFormaten für <strong>ein</strong>e Option. Die erste Art der Optionen besteht nur aus <strong>ein</strong>em <strong>ein</strong>zigen Byte.3 Die Fragmente werden so aufgeteilt, daß sie in der Länge <strong>ein</strong>em Vielfachen von 64 Bit entsprechen. Ausschließlichdas letzte Fragment muß diese Eigenschaft nicht erfüllen.4 Der RFC definiert Sekunden als die Einheit für das Feld, aber dies hat mit der Realität nichts zu tun. Da vieleRouter k<strong>ein</strong>e Bearbeitungszeit von <strong><strong>ein</strong>er</strong> Sekunde brauchen, ist die Einheit dieser Zahl zu vernachlässigen.


6 Kapitel 2. BasistechnologienEtwas komplexer ist das Format der zweiten Optionsart. Die ersten zwei Bytes bestehenaus <strong>ein</strong>em Typfeld gefolgt von <strong><strong>ein</strong>er</strong> Längenangabe, die diese zwei Bytes inklusive demRest der Option zusammenzählt. Eine mögliche Option wäre z.B. Loose Source and RecordRoute, mit der die Quelle <strong>ein</strong>es Paketes die Möglichkeit hat, Informationen über die zuverwendende Route vorzugeben.IP Version 6Der Kopf <strong>ein</strong>es IP-Paketes der Version 6 hat sich gegenüber s<strong>ein</strong>es Vorgängers wesentlichverändert, wie in Abbildung 2.2 zu sehen ist. Gleichgeblieben ist das Feld mit der Version,mit dem der Kopf beginnt.Traffic Class (Klassifizierung) ist <strong>ein</strong> in IPv6 neu <strong>ein</strong>geführtes Feld. Die Funktion diesesFeldes soll der des Feldes Type of Service aus IPv4 ähnlich s<strong>ein</strong>. Zur Zeit der Entstehungdes RFCs ist noch k<strong>ein</strong>e genaue Definition des Feldes vorhanden. Die Erfahrungen mit IPv6sollen die benötigten Klassen und Prioritäten hervorbringen, welche dann in weiteren RFCsspezifiziert werden.0 16 32VersionTraffic ClassFlow LabelPayload Length Next Header Hop LimitSource AddressDestination AddressAbbildung 2.2.: IPv6-PaketkopfEbenso wie das Feld Traffic Class kann für die Multimedia-Kommunikation das folgendeFeld Flow Label (Datenstrombezeichnung) von Interesse s<strong>ein</strong>. Wird dieses Feld mit <strong>ein</strong>emWert ungleich null ausgefüllt, dient es als Bezeichnung für <strong>ein</strong>en Strom von IP-Paketen.Damit soll bei den Routern, die diese Funktionalität unterstützen, <strong>ein</strong> verbesserter Servicefür diese Pakete aktiviert werden. Diese Fähigkeit ist in IPv6 neu hinzugekommen undgehört zu <strong><strong>ein</strong>er</strong> der wichtigsten neuen Funktionen, die zur <strong>Entwicklung</strong> der neuen Versiongeführt haben. Dieser besondere Service könnte z.B. bei Konferenzen nützlich s<strong>ein</strong>, um dieMedienströme als solche zu kennzeichnen und somit <strong>ein</strong>e höhere Wahrsch<strong>ein</strong>lichkeit derfristgerechten Zustellung zu erzielen.Das Feld Payload Length (Nutzdatenlänge) gibt die Länge der Nutzdaten <strong>ein</strong>schließlichaller Erweiterungen dieses Paketes an. Das nachfolgende Byte enthält <strong>ein</strong>e Kennung, diespezifiziert welche Erweiterung nach diesem Kopf folgt (Next Header). Das letzte Feld vorden Adressen ist das Feld Hop Limit (Reichweitenbegrenzung). Die Funktion dieses Feldesentspricht der des TTL-Feldes aus Version 4 des IP-Protokolls.


2.1. IP – Internet-Protokoll 7Die Darstellung der Optionen hat sich gegenüber der Version 4 verändert. Das Feld NextHeader (nächster Kopf) kann entweder auf den Kopf der nächsten Protokollschicht verweisenoder auf den <strong><strong>ein</strong>er</strong> Erweiterung. Im RFC 2460 sind acht Paketköpfe definiert. Werdenmehrere dieser Köpfe in <strong>ein</strong> IP-Paket integriert, sind sie in der Reihenfolge <strong>ein</strong>zufügen, wi<strong>ein</strong> Tabelle 2.1 angeben ist.KopfIPv6-KopfHop-by-Hop-OptionskopfRouting-KopfFragment-KopfZiel-OptionskopfAuthentisierungs-KopfgekapselteSicherheitsdatenKopf der darüberliegendenSchichtBeschreibungStandardkopf <strong>ein</strong>es IPv6-Paketes (wie zuvor beschrieben)dient zum Transport von optionalen Informationen,die von allen Knoten auf dem Weg zum Zielbetrachtet werden müssen.gibt Knoten an, die auf dem Weg zum Ziel besuchtwerden sollen.wird <strong>ein</strong>gesetzt, wenn Pakete verschickt werdensollen, die größer als die maximal erlaubteTransport<strong>ein</strong>heit (Maximum Transmission Unit,MTU) sind. Im Gegensatz zu IPv4 kann die Fragmentierung<strong>ein</strong>es Paketes nur von der Quellevorgenommen werden und nicht mehr von denRoutern auf dem Weg zum Ziel.enthält optionale Informationen, die nur vonden angegebenen Zielen des Paketes zu untersuchensind. Die <strong>ein</strong>zigen definierten Variantendieser Option dienen zur Erzeugung von Füllbytes.bietet Quellauthentisierung. Eine genaue Beschreibungdieses Kopfes ist in RFC 2402 [33]zu finden.dient zur Bereitstellung von Sicherheitsdiensten.Eine genaue Beschreibung dieses Kopfesist in dem RFC 2406 [34] zu finden.wird durch die darüberliegende Schicht definiert,etwa durch TCP oder UDP.Tabelle 2.1.: Erweiterungsköpfe in IPv6AdressierungIPv4 stellt dem Anwender drei Adressierungsarten zur Verfügung. Unicast dient zur Adressierunggenau <strong>ein</strong>es <strong>ein</strong>zelnen Rechners. Um <strong>ein</strong>e Gruppe von Rechnern anzusprechen, gibtes die Möglichkeit der Multicast-Adressierung. Um alle Rechner in <strong>ein</strong>em Netzabschnittanzusteuern, gibt es Broadcast. Diese Adressierung aus IPv4 wird in IPv6 durch <strong>ein</strong>e erweiterteMulticast-Adressierung ersetzt. Eine weitere Art der Adressierung ist das Anycast.Hierbei wird nur der erste Rechner <strong><strong>ein</strong>er</strong> Gruppe angesprochen. Welches der erste Rechnerist entscheidet der Router nach s<strong>ein</strong>em Maßstab.Für Multimedia-Konferenzen ist die von beiden IP-Versionen unterstützte Gruppenadressier-


8 Kapitel 2. Basistechnologienung <strong>ein</strong>e sehr wichtige Fähigkeit. Diese Technik kann aber nicht all<strong>ein</strong>e von IP realisiert werden.Damit Pakete, die nicht direkt an <strong>ein</strong>en Rechner adressiert sind, auch von den beteiligtenRoutern weitergeleitet werden, müssen sich interessierte Rechner bei Multicast-fähigenRoutern anmelden. Bei IPv4 wird diese Funktionalität mittels IGMP (Internet Group ManagementProtocol, RFC 2236 [12]) unterstützt 5 . Für IPv6 wurde k<strong>ein</strong>e Version von IGMPdefiniert. Dafür wurde ICMP (Internet Control Message Protocol, RFC 2463 [7]) stark erweitertund übernimmt diese Aufgabe. Ursprünglich wurde ICMP <strong>ein</strong>gesetzt, um auftretendeFehler beim Transport von Paketen an die Quelle zu melden (z.B. nicht zustellbarePakete).Um Multicast-Adressen von Unicast-Adressen unterscheiden zu können, sind die Adreßräum<strong>ein</strong> Bereiche aufgeteilt. Für IPv4 ist der Wertebereich von 224.0.0.0 bis 239.255.255.255 6für Multicast-Kommunikationen reserviert. Bei IPv6 sind die Adressen für Multicast reserviert,bei denen die acht höchstwertigen Bits gesetzt sind. Da IPv6-Adressen [23] mit128 Bit wesentlich größer geworden sind, ist auch der Bereich für die Multicast-Adressendementsprechend gewachsen. In RFC 2375 „IPv6 Multicast Address Assignments“ [22]werden festdefinierte Multicast-Adreßbereiche aufgelistet. Interessant in Bezug auf dieseDiplomarbeit ist dabei, daß auch Adreßräume für Multimedia-Konferenzen reserviert wurden.2.2. RTP und RTCPRTP (Real-Time Transport Protocol, RFC 1889 [18]) ist <strong>ein</strong> Transport-Protokoll, das entworfenwurde, um <strong>ein</strong>en End-zu-End-Dienst zu realisieren, der für Echtzeitdaten wie Audiound Video geeignet ist. Dafür stellt RTP Dienste wie Nutzlast-Erkennung, Sequenzerhaltung,Synchronisation mittels Zeitstempeln und Überwachungsfunktionen zur Verfügung.Der RFC 1889 wurde im Januar 1996 von der IETF herausgegeben. Zur Zeit wird an<strong><strong>ein</strong>er</strong> verbesserten und aktualisierten Fassung gearbeitet, die noch nicht fertiggestellt istund somit nur als Internet-Draft vorliegt [52]. Der RFC 1890 [17] definiert das RTP/AVP-Profil und <strong>ein</strong>e Reihe von vordefinierten Bezeichnungen für bestimmte Audio- und Videokodierungsverfahren.Dieser RFC ist ebenso in <strong><strong>ein</strong>er</strong> überarbeiteten Fassung als Internet-Draft [51] vorhanden.In Verbindung mit RTP wird RTCP (RTP Control Protocol, RFC 1889) <strong>ein</strong>gesetzt. Dieses Protokollbietet Überwachungs- und Informationsdienste. RTCP-Pakete enthalten Angaben zurQualität der transportierten Medienströme. Diese können zur Qualitätskontrolle verwendetwerden. Zusätzlich enthalten RTCP-Pakete Daten über die Teilnehmer, die <strong><strong>ein</strong>er</strong>seits zur internenIdentifikation und andererseits für <strong>ein</strong>e menschenlesbare Beschreibung verwendetwerden können. 7RTP und RTCP werden auf die Transportschicht des jeweiligen Netzes aufgesetzt, wobeibeide Protokolle unabhängig von den verwendeten Protokollen der Transport- und Vermittlungsschichtsind. In IP-basierten Netzen werden RTP und RTCP in der Regel in Verbindungmit UDP (User Datagram Protocol, RFC 768 [45]) <strong>ein</strong>gesetzt, das <strong>ein</strong>en verbindungslosen,unzuverlässigen Dienst zur Verfügung gestellt. Genutzt werden durch RTP die Eigen-5 In RFC 1112 [11] sind die notwendigen Erweiterung spezifiziert, die <strong>ein</strong> System erfüllen muß, um Multicastzu unterstützen.6 Dies ist der gesamte Bereich bei dem die höchstwertigen 3 Bits gesetzt und das vierte Bit gelöscht sind.Darüber liegende Adressen sind für zukünftige Adressierungsarten reserviert.7 Diese Informationen sind Texte wie Name, Telefonnummer, E-Mail-Adresse etc.


2.2. RTP und RTCP 9schaften der Korrektheitsprüfung (Checksum) und Anwendungsadressierung von UDP. DieAdressierung bietet die Möglichkeit, zwischen zwei Rechnern mehrere von<strong>ein</strong>ander unterscheidbarePaket-Ströme zu versenden (Multiplexing). Diese Adressen werden Ports genannt.Ein anderes Protokoll, das oft in IP-basierten Netzen verwendet wird, ist TCP (TransmissionControl Protocol, RFC 761 [44]). Es stellt <strong>ein</strong>en verbindungsorientierten, zuverlässigenTransportdienst zur Verfügung. Die Zuverlässigkeit von TCP, die durch wiederholtes Sendenvon defekten oder verlorengegangenen Paketen realisiert wird, ist bei Echtzeitdaten<strong>ein</strong>e unerwünschte Eigenschaft. Dadurch werden Teile (Fragmente) <strong>ein</strong>es Medienstromeszu lange verzögert. Auch der von TCP durchgeführte Verbindungsaufbau kostet zu viel Zeit.Für Medienströme ist <strong>ein</strong> <strong>ein</strong>faches Protokoll wie UDP besser geeignet.2.2.1. DefinitionenIm folgenden werden Begriffe im Zusammenhang mit RTP und RTCP definiert, die für dasweitere Verständnis benötigt werden.Port Die Abstraktion zur Adressierung von Anwendungen, die von den Transport-ProtokollenUDP und TCP verwendet wird. RTP setzt diese Fähigkeit der Transport-Protokolle<strong>ein</strong>, um mehrere RTP-Ströme zwischen zwei Rechnern unterscheiden zu können.Transport-Adresse Die Kombination aus Netzadresse und Port, z.B. <strong>ein</strong>e IP-Adresse und<strong>ein</strong> UDP-Port.RTP-Payload Die Bezeichnung für Daten, die unter Verwendung von RTP übertragen werden,z.B. Audio-Samples oder Video-Frames.RTP-Paket Ein Datenpaket, das die folgende (logische) Unterstruktur aufweist: Zu Beginnkommt der RTP-Kopf mit <strong><strong>ein</strong>er</strong> fest definierten Größe, danach folgt <strong>ein</strong>e eventuellleere Liste von beteiligten RTP-Quellen und der RTP-Payload.RTCP-Paket Ein Steuer-Paket, das aus mehreren Teilen besteht, beginnend mit <strong>ein</strong>em vonder Größe fest definierten Kopf, der zum Teil dem RTP-Kopf gleicht. Darauf folgt <strong>ein</strong>evariable Anzahl von strukturierten Elementen, deren Typ je nach RTCP-Paket variiert.Eine genauere Beschreibung dieser Elemente ist in Abschnitt 2.2.3 zu finden.RTP-Session Eine Beziehung zwischen <strong><strong>ein</strong>er</strong> Menge von Teilnehmern. Für jeden Teilnehmer<strong><strong>ein</strong>er</strong> RTP-Session wird diese durch <strong>ein</strong>e für ihn <strong>ein</strong>deutige Transportadresse definiert.Diese kann für alle Teilnehmer die gleiche s<strong>ein</strong>, wenn es sich um <strong>ein</strong>e Multicast-Adressehandelt.Synchronization-Source (SSRC) Die Quelle <strong>ein</strong>es Stroms von RTP-Paketen. Es handeltsich um <strong>ein</strong>en numerischen Bezeichner von 32 Bit Länge, der in den Kopf jedes RTP-Pakets <strong>ein</strong>getragen wird. Diese Kennung ist <strong>ein</strong>e Zufallszahl, welche innerhalb <strong><strong>ein</strong>er</strong>RTP-Session <strong>ein</strong>deutig s<strong>ein</strong> muß. Jeder Medienstrom <strong>ein</strong>es End-Systems bekommt <strong>ein</strong>eeigene Kennung, d.h. nicht das End-System, sondern der Medienstrom wird durchdie SSRC identifiziert.Contributing-Source (CSRC) Die Quelle <strong>ein</strong>es Stroms von RTP-Paketen, wobei <strong>ein</strong>e CSRC<strong>ein</strong>e von vielen Quellen bezeichnet, die an <strong>ein</strong>em RTP-Strom beteiligt sind. Die SSRC<strong>ein</strong>es solchen kombinierten Stroms ist die des Mixers (siehe Definition Mixer). Dabei


10 Kapitel 2. Basistechnologienwerden vom Mixer alle Quellen in <strong>ein</strong>e Liste <strong>ein</strong>getragen, die in dem resultierendenRTP-Strom vorhanden sind. Diese Liste wird CSRC-Liste genannt.End-System Eine Anwendung, die die Daten erzeugt und/oder empfängt, die mittels RTPtransportiert werden.Translator Ein End-System, das RTP-Pakete weiterleitet, ohne die SSRC zu verändern. EinTranslator kann das Kodierungsverfahren <strong>ein</strong>zelner RTP-Ströme verändern. Solche Systemekönnen zur Verbindung mehrerer Multicast-Konferenzen oder zur Anbindungvon nicht Multicast-fähigen End-Systemen dienen.Mixer Ein End-System, welches von <strong><strong>ein</strong>er</strong> oder mehreren RTP-Quelle(n) Pakete empfängtund diese eventuell verändert (z.B. das Kodierungsverfahren) und dann die Strömebündelt und als neuen Strom von RTP-Paketen weiterleitet.Monitor Eine Anwendung, die nur die RTCP-Pakete <strong><strong>ein</strong>er</strong> RTP-Session empfängt und diesezu Statistikzwecken auswertet. Diese Funktionalität kann Teil <strong>ein</strong>es vollwertigen RTP-End-Systems s<strong>ein</strong>.RTP-Profil Eine Definition von Payload-Typen und der dazu gehörigen Medienformate (z.B.Kodierungs- oder Kompressionsverfahren). Optional können dazu Erweiterungen sowieVeränderungen definiert werden. Das am häufigsten <strong>ein</strong>gesetzte und implementierteProfil ist in RFC 1890 [17] definiert. Dazu existiert mittlerweile <strong>ein</strong>e aktualisierteFassung als Internet-Draft draft-ietf-avt-profile-new-10 [51]. Aktuell existierenungefähr 20 weitere RFCs mit RTP-Profilen, wie z.B. RFC 2198 [42], in dem <strong>ein</strong>Payload-Format für die Übertragung von redundanten Audio-Daten definiert ist.2.2.2. Medientransport mit RTPIm folgenden wird genauer auf die Arbeitsweise von RTP <strong>ein</strong>gegangen. Zusätzlich werdenanhand des Paketaufbaus die <strong>ein</strong>zelnen Funktionen von RTP genau beschrieben.PaketformatRTP arbeitet mit <strong>ein</strong>em sehr <strong>ein</strong>fach strukturierten Paketformat, das aus zwei bis drei Teilenbesteht. Mindestens enthalten sind <strong>ein</strong> Kopf von fest definierter Größe sowie die Nutzlast.Optional kann in das Paket <strong>ein</strong>e Erweiterung integriert werden. Jedes korrekt aufgebauteRTP-Paket beginnt mit <strong>ein</strong>em festen 12-Byte-Kopf wie in Abbildung 2.3 zu sehen ist. Dieersten 2 Bits enthalten die verwendete Version von RTP. Das nächste Bit (Padding-Bit) besagt,wenn es gesetzt ist, daß das Paket mit Füllbytes bis auf <strong>ein</strong> Vielfaches von 32 Bitaufgestockt wurde. Das letzte Byte <strong>ein</strong>es solchen Paketes enthält die Anzahl der angefügtenBytes. Eingesetzt wird diese Technik für Pakete, die verschlüsselt werden, da <strong>ein</strong>igeVerschlüsselungsalgorithmen auf festen Blockgrößen arbeiten 8 .Das Extension-Bit (X) definiert, ob das RTP-Paket noch <strong>ein</strong>e optionale Kopferweiterungenthält. Ist das Bit gesetzt, folgt <strong>ein</strong>e Erweiterung, die dem Format aus Abbildung 2.4 entspricht.Dabei ist die Erweiterung so strukturiert, daß zuerst <strong>ein</strong>e 16-Bit-Kennung folgt unddann <strong>ein</strong>e Längenangabe, für die ebenfalls <strong>ein</strong> 16-Bit-Feld zur Verfügung steht. Diese Längebesagt, wie viele 32-Bit-Worte noch in dieser Erweiterung folgen.8 DES arbeitet in der Regel mit 64-Bit-Blöcken, in denen der Schlüssel enthalten ist. Aus diesem Grund mußdie Länge <strong>ein</strong>es RTP-Paketes <strong>ein</strong> Vielfaches von acht Bytes s<strong>ein</strong>.


2.2. RTP und RTCP 110 16 32V=2P X CC M PT SequenznummerZeitstempelSynchronisationsquelle (SSRC)beteiligte Quellen (CSRC)...Abbildung 2.3.: Kopf <strong>ein</strong>es RTP-PaketsDas Feld CC enthält die Anzahl der beteiligten Quellen (CSRC), die zu diesem Medienstrombeigetragen haben. Diese Liste der Quellen folgt nach dem RTP-Kopf. Das Marker-Bit variiertin s<strong><strong>ein</strong>er</strong> Bedeutung, die abhängig von dem verwendeten RTP-Profil ist. Das Bit soll<strong>ein</strong>gesetzt werden, um signifikante Ereignisse im Strom zu markieren. Beispielsweise kannso die Grenze <strong>ein</strong>es Video-Frames, der über mehrere Pakete verteilt ist, gekennzeichnetwerden.Damit Empfänger die Art der transportierten Daten erkennen können, wird im Kopf derRTP-Payload-Typ <strong>ein</strong>getragen. Das Feld ist 7 Bit lang. Die restlichen 16 Bits des ersten 32-Bit-Wortes enthalten die Sequenznummer. Diese sollte mit <strong>ein</strong>em Zufallswert beginnen,um <strong>ein</strong>fache, unerwünschte Angriffe auf verschlüsselte Pakete etwas zu erschweren. Mitjedem Paket wird diese Sequenz um <strong>ein</strong>s inkrementiert, so daß Empfänger diese Nummerzur Erkennung von Paketverlusten nutzen können. Das zweite 32-Bit-Wort enthält <strong>ein</strong>enZeitstempel (RTP-Timestamp). Benötigt wird dieser Zeitstempel zur Synchronisation undJitterberechnung. Dabei sollte der Zeitstempel von <strong><strong>ein</strong>er</strong> Uhr abgeleitet werden, die ihrenWert in konstanten Intervalle monoton und linear erhöht, wobei das Intervall kurz genugs<strong>ein</strong> muß, um <strong>ein</strong>e Jitterberechnung zu ermöglichen. Die Intervalle des RTP-Timestampshängen von dem verwendeten RTP-Payload ab. Ebenso wie die Sequenznummer sollte derZeitstempel mit <strong>ein</strong>em Zufallswert beginnen.Das letzte 32-Bit-Wort im RTP-Kopf b<strong>ein</strong>haltet die Kennung der Quelle des Paketes, dieSSRC (Synchronization Source) genannt wird. Diese Kennung wird ebenfalls zufällig gewählt,wobei sie innerhalb <strong><strong>ein</strong>er</strong> RTP-Session <strong>ein</strong>deutig und konstant s<strong>ein</strong> muß. Nur bei<strong><strong>ein</strong>er</strong> Kollision von mehreren gleichen SSRCs in <strong><strong>ein</strong>er</strong> Konferenz oder wenn <strong>ein</strong>e Quelle dieTransportadresse ändert, kann die SSRC geändert werden.0 16 32ErweiterungskennungLängeKopf−Erweiterung...Nutzdaten...Abbildung 2.4.: optionale Erweiterung des RTP-KopfesWie in der Abbildung 2.3 veranschaulicht, folgt nach der SSRC die Liste der CSRCs. Dies


12 Kapitel 2. Basistechnologiengilt nur, wenn das RTP-Paket k<strong>ein</strong>e Kopf-Erweiterung enthält. Andernfalls wird erst dieErweiterung an den RTP-Kopf und danach die Liste der beteiligten Quellen angehängt.Anforderungen und VerhaltenRTP ist unabhängig von der darunterliegenden Transportschicht definiert. Typischerweisewird RTP in Verbindung mit UDP <strong>ein</strong>gesetzt. Dienste wie Multiplexen und Fehlererkennungwerden dabei von RTP wiederverwendet. Für UDP und gleichartige Protokolle ist definiert,daß RTP <strong>ein</strong>en geradzahligen Port in der Zieladresse verwendet. RTCP soll den darauf folgenden(ungeraden) Port benutzen. 9 In dem Fall, daß <strong><strong>ein</strong>er</strong> Anwendung <strong>ein</strong> ungerader Portfür RTP mitgegeben wird, soll dieser um <strong>ein</strong>s dekrementiert werden.Da RTP-Pakete k<strong>ein</strong>e Längenangaben enthalten, muß das unterliegende Protokoll diese Informationbieten. Aus diesem Grund ist auch die maximale Länge des Paketes nur durchdie unterliegende Schicht beschränkt.RTP versendet die Informationen in dem zuvor definierten Paketformat. Stellt das unterliegendeProtokoll k<strong>ein</strong>en Paket-Mechanismus zur Verfügung, muß <strong>ein</strong> zusätzliches Protokoll<strong>ein</strong>gesetzt werden, das RTP-Pakete kapseln kann.Ein Endpunkt, der das RTP-Paketformat versteht, muß zusätzlich <strong>ein</strong> vordefiniertes Verhaltenaufweisen, wie im folgenden beschrieben, um als RTP-End-System erkannt zu werden.Anwendungen, die RTP für den Transport von Audio-Daten <strong>ein</strong>setzen, versenden diese inFragmenten, die beispielsweise Informationen für 20 ms Abspielzeit enthalten. Zusammenmit <strong>ein</strong>em RTP-Kopf wird jedes dieser Fragmente in <strong>ein</strong>em UDP-Paket versendet. Es bestehtdie Möglichkeit, daß Pakete verloren gehen oder in <strong><strong>ein</strong>er</strong> anderen Reihenfolge ankommen.Ein RTP-End-System muß darauf reagieren. Anhand des im RTP-Kopf enthaltenen Zeitstempelskönnen Verzögerungen erkannt werden. Die Sequenznummer dient hauptsächlich dazudie Reihenfolge der Pakete zu kennen, um sie gegebenfalls zu korrigieren. Desweiterenkönnen die Sequenznummer genutzt werden, um verlorene Pakete zu zählen. Diese Informationensowie Daten über die Teilnehmer werden mittels RTCP verteilt. Jedes RTP-End-System muß RTCP unterstützen.2.2.3. RTP-Steuer-ProtokollRTCP (RTP Control Protocol) ist an RTP gebunden. Es dient zur Beobachtung und Steuerung<strong><strong>ein</strong>er</strong> RTP-Session. Die Aufgaben von RTCP sind in der folgenden Auflistung genauerbeschrieben.1. Primär soll RTCP Informationen über die Empfangsqualität der <strong>ein</strong>zelnen Teilnehmerverbreiten. Diese Daten können die <strong>ein</strong>zelnen End-Systeme nutzen, um herausfinden,ob eventuelle Probleme lokaler oder globaler Natur bezüglich der transportierten Medienströmeexistieren. Dadurch können z.B. Internet Service Provider mittels <strong>ein</strong>esRTP-Monitors die Informationen nutzen, um Konfigurationsprobleme (z.B. im MulticastRouting) zu finden und zu beheben. Auch die teilnehmenden Systeme wertendiese Informationen aus und können aufgrund dieser ihr Verhalten anpassen.2. RTCP transportiert die persistente Kennung <strong><strong>ein</strong>er</strong> Quelle, den CNAME (Canonical Na-9 Ein gültiges Paar wäre 48002 für RTP und 48003 für RTCP.


2.2. RTP und RTCP 13me). Im Gegensatz zur SSRC ändert sich der CNAME niemals. 10 Ebenso wichtig ist derCNAME zur Synchronisation mehrerer Medienströme <strong><strong>ein</strong>er</strong> Quelle. Beispiel für <strong>ein</strong>esolche Anwendung ist <strong>ein</strong>e Video-Konferenz, bei der jeder Teilnehmer <strong>ein</strong>en Audiound<strong>ein</strong>en Videostrom versendet. Jedem <strong>ein</strong>zelnen Strom ist <strong>ein</strong>e <strong>ein</strong>deutige SSRCzugeordnet, hingegen ändert sich der CNAME nicht mit dem Medienstrom, sondernidentifiziert das End-System. Dadurch können zusammengehörige Medienströme erkanntwerden.3. Die ersten zwei Aufgaben verlangen von allen Teilnehmern das Versenden von RTCP-Paketen. Dies kann in größeren Konferenzen dazu führen, das die RTCP-Pakete <strong>ein</strong>enwesentlichen Teil der verwendeten Bandbreite <strong>ein</strong>nehmen. Um dies zu verhindern,ist <strong>ein</strong> adaptives Verhalten der End-Systeme notwendig. Anhand der empfangenenRTCP-Pakete muß ermittelt werden, welche RTCP-Informationen und wie oft dieseversendet werden müssen. Der aktuelle Internet-Draft definiert <strong>ein</strong>e Funktion, die berechnet,in welchen Intervallen die RTCP-Pakete zu versenden sind. Werte wie Anzahlder Teilnehmer und Sender und verlorengegangene Pakete werden <strong>ein</strong>gesetzt, um dasZeitintervall für das nächste RTCP-Paket zu berechnen.4. Eine weitere Aufgabe, die als optional definiert ist, besteht in der Versendung von zusätzlichenTextinformationen über die teilnehmenden Benutzer. Anwendungen könnendiese Daten nutzen, um <strong>ein</strong>e Teilnehmerliste anzuzeigen. Enthalten sind z.B. derreale Name, Telefonnummer, E-Mail-Adresse und der CNAME.Für die in den Aufgaben genannten Informationen ist in RTCP <strong>ein</strong> mehrstufiges Paketformatdefiniert. Jedes <strong>ein</strong>zelne RTCP-Paket beginnt mit <strong>ein</strong>em Kopf fester Größe gefolgt vonstrukturierten Nutzinformationen, deren Länge variabel ist. Die Gesamtlänge <strong>ein</strong>es Paketesmuß <strong>ein</strong>em Vielfachen von 32 Bit entsprechen. Solche Pakete werden in der Regel als <strong>ein</strong>Verbund versendet, indem sie direkt hinter<strong>ein</strong>ander geschrieben werden. Zusätzliche Informationensind in <strong>ein</strong>em Verbund nicht enthalten. Die Anzahl der enthaltenen Pakete mußdurch die Längenangabe der darunterliegenden Schicht ermittelt werden.Wie RTP-Pakete werden auch RTCP-Pakete anhand <strong>ein</strong>es Payload-Typs identifiziert. DieserPayload-Typs hat andere Werte und Bedeutungen als der Payload-Typ der RTP-Pakete. Definiertwird mit diesem Typ die Art des Paketes. Daraus können Aufbau und Informationsgehaltabgeleitet werden. Im RFC 1889 sind fünf dieser Typen definiert, die im folgendenbeschrieben werden.Empfänger-Berichte (Receiver-Reports, RR)Die als Empfänger-Bericht bezeichneten Pakete werden von allen passiven Teilnehmernder RTP-Session gesendet. Dazu zählen Teilnehmer, die selbst k<strong>ein</strong>e RTP-Pakete erzeugen.RTCP-Pakete dieses Typs sind wie in Abbildung 2.5 aufgebaut. Das Pakete beginnt mit <strong>ein</strong>emKopf fester Länge. Das Feld PT enthält den RTCP-Payload-Typ. Anschließend an denKopf folgt <strong>ein</strong>e Liste von Blöcken, die jeweils aus sechs 32-Bit-Worten bestehen. Darin enthaltensind Informationen über die <strong>ein</strong>zelnen Quellen, von denen seit dem letzten BerichtMediendaten empfangen wurden. Im Feld RC ist die Anzahl der Bericht-Blöcke <strong>ein</strong>getragen,wobei auch null <strong>ein</strong> zugelassener Eintrag ist.10 Damit können Quellen auch nach <strong><strong>ein</strong>er</strong> Kollision (von gleichen SSRCen) oder <strong>ein</strong>em Neustart identifiziertwerden.


14 Kapitel 2. BasistechnologienDie Bericht-Blöcke enthalten Informationen über die Anzahl der Paketverluste, den Jitterder empfangenen Pakete und Zeitangaben zum letzten empfangenen Sender-Bericht derbeschriebenen Quelle.0 16 32V=2 P RC PT=RR=201 LängeSSRC des SendersHeaderSSRC_1 (erster SSRC)Verlust: Bruchteilinsgesamt verlorene Paketeerweiterte SequenznummerJitter der Ankunftszeitenletzter Sender−ReportVerzögerung letzter Sender−ReportSSRC_2 (zweiter SSRC)...Empfänger−Report 1Empfänger−Report 2profil−spezifische ErweiterungAbbildung 2.5.: RTCP-Empfänger-BerichtSender-Berichte (Sender-Reports, SR)Sender-Berichte werden von den aktiven Teilnehmern <strong><strong>ein</strong>er</strong> RTP-Session verschickt. Diessind alle Teilnehmer, die selbst Medienströme erzeugen. Der Aufbau ähnelt dem Empfänger-Bericht, enthält aber <strong>ein</strong>en weiteren Block von fünf 32-Bit-Worten. Dieser b<strong>ein</strong>haltet Informationenüber die Quelle, wie in Abbildung 2.6 zu sehen ist. Die folgenden zwei 32-Bit-Worte sind <strong>ein</strong> Zeitstempel, wie er aus NTP (Network Time Protocol, RFC 1305 [37])bekannt ist. Damit wird der Sendezeitpunkt des Berichtes festgelegt. Der RTP-Zeitstempelbeschreibt den selben Zeitpunkt. Die verwendete Einheit ist Sample und verhält sich wieder aus RTP bekannte Zeitstempel. Mit den beiden Zählern wird die Anzahl der versendetenPakete bzw. Bytes festgehalten.Quellbeschreibungen (Source-Description, SDES)Die bisher beschriebenen RTCP-Pakete liefern Informationen zu den versendeten bzw. empfangenenMedienströmen. Die SDES-Pakete hingegen enthalten Informationen über dieRTP-Quellen <strong>ein</strong>es Medienstroms. Im Normalfall ist nur <strong>ein</strong>e Quelle an <strong>ein</strong>em Medienstrombeteiligt. Im Abschnitt 2.2.4 wird genauer auf die Fälle <strong>ein</strong>gegangen, bei denen mehrereQuellen an <strong>ein</strong>em Medienstrom beteiligt sind.Zur Angabe von Informationen über <strong>ein</strong>e Quelle sind acht verschiedene Elemente definiert.Diese Elemente werden nach vordefinierten Regeln in <strong>ein</strong>em RTCP-Paket verpackt.Das wichtigste Element ist der CNAME (Canonical Name), der zur Identifikation <strong><strong>ein</strong>er</strong> Quelledient. Der CNAME ist <strong>ein</strong>deutig und ändert sich nicht.


2.2. RTP und RTCP 150 16 32V=2 P RC PT=SR=200 LängeSSRC des SendersHeaderNTP−Zeitstempel, höherwertiges WortNTP−Zeitstempel, niederwertiges WortRTP−ZeitstempelSender−InformationenAnzahl der gesendeten PaketeAnzahl der gesendeten BytesSSRC_1 (erste SSRC)...Empfänger−Report 1profil−spezifische ErweiterungAbbildung 2.6.: RTCP-Sender-BerichtVier der Elemente geben genauer Auskunft über den menschlichen Benutzer und sind auchnur von ihm zu interpretieren. NAME, EMAIL, PHONE und LOC sind die Bezeichnungendieser Elemente. Da es sich hierbei um Informationen handelt, die auf die Funktionsweisek<strong>ein</strong>en Einfluß haben, sind diese Elemente optional. Das Format der Inhalte ist der Anwendungfreigestellt. Ein Überblick zu allen definierten Beschreibungselementen ist der Tabelle2.2 zu entnehmen.ElementCNAMENAMEEMAILPHONELOCBeschreibungDieses Element enthält <strong>ein</strong>e <strong>ein</strong>deutige Bezeichnungdes End-Systems. Der Aufbau des CNAME istdefiniert als „user@host“, wodurch die Eindeutigkeitgewährleistet werden soll. Ist der Benutzernamenicht ermittelbar 11 , so läßt die Definition desRFCs es zu, daß nur der Name des Rechners <strong>ein</strong>gesetztwird.Dieses Element enthält den realen Namen <strong>ein</strong>es Benutzers.Die hier <strong>ein</strong>getragene E-Mail-Adresse kann verwendetwerden, um mit dem Teilnehmer der Konferenzüber <strong>ein</strong> anderes Medium Kontakt herzustellen.Um die Möglichkeit zu haben, <strong>ein</strong>en Teilnehmerüber das herkömmliche Telefonnetz zu erreichen,kann dieses Element <strong>ein</strong>e Telefonnummer enthalten.Dieses Element kann Informationen zum Standort<strong>ein</strong>es Teilnehmers enthalten.weiter ⊲11 Manche Betriebssysteme bieten diese Information nicht, da es bei ihnen das Konzept verschiedener Benutzernicht gibt.


16 Kapitel 2. BasistechnologienElementTOOLNOTEPRIVBeschreibungUm eventuell fehlerhafte RTP-Implementierungenidentifizieren zu können, kann dieses Element benutztwerden. Eingetragen wird in dieses Elementder Name der RTP-Anwendung. Optional kann dazudie Version angegeben werden.Kann <strong>ein</strong>e Beschreibung des aktuellen Status derQuelle enthalten. Diese Information soll im Wechselmit dem CNAME versendet werden. Ebenso kanndieses Element benutzt werden, um den Titel <strong>ein</strong>esVortrags zu verbreiten.Dieses spezielle Element kann für frei definierbareQuellbeschreibungen genutzt werden. Dabei bestehtjede Erweiterung aus <strong>ein</strong>em frei wählbarenNamen und dem zu gehörigen Inhalt.Tabelle 2.2.: Liste der SDES-ElementeSDES-Pakete werden wie in Abbildung 2.7 zusammengesetzt. Im Feld SC des Kopfes ist dieAnzahl der SDES-Einheiten <strong>ein</strong>getragen. Jede dieser Einheiten beschreibt exakt <strong>ein</strong>e Quelleund besteht aus <strong><strong>ein</strong>er</strong> Liste von SDES-Elementen, denen die SSRC bzw. CSRC vorangestelltist.0 16 32V=2 P SC PT=SDES=202LängeSSRC_1/CSRC_1SDES−Element...SSRC_2/CSRC_2SDES−Element...HeaderEinheit 1Einheit 2Abbildung 2.7.: RTCP-QuellbeschreibungenEin SDES-Element entspricht der Abbildung 2.8. In den ersten 8 Bit wird der Element-Typ <strong>ein</strong>getragen. Die nächsten 8 Bit enthalten die Länge des Elements exklusive der erstenzwei Bytes. Beendet wird die Liste mit mindestens <strong>ein</strong>em terminierenden Null-Byte. WeitereNull-Bytes werden angefügt, wenn die Länge nicht <strong>ein</strong>em Vielfachen von 32 Bit entspricht(diese Bytes sind nicht mit den Padding-Bits im RTP-Kopf gleich zu setzen).0 16SDES−Typ LängeInhalt ...Abbildung 2.8.: RTCP-SDES-Element


2.2. RTP und RTCP 17Abschied (BYE)Das BYE-Paket wird verwendet, um explizit mitzuteilen, daß <strong>ein</strong>e oder mehrere Quellennicht mehr an der Konferenz teilnehmen. Optional kann in das Paket <strong>ein</strong> Grund <strong>ein</strong>getragenwerden, der zu <strong>ein</strong>em vielleicht ungewollten Abbruch geführt hat. Wird <strong><strong>ein</strong>er</strong> angegeben,beginnt dieser mit <strong>ein</strong>em 8-Bit-Feld für die Längenangabe und wird mit mindestens <strong>ein</strong>emNull-Byte abgeschlossen. Entspricht die Länge des Paketes k<strong>ein</strong>em Vielfachen von 32-Bit-Worten , wird <strong>ein</strong> Null-Byte angehängt (dies ist nicht mit den Padding-Bits im RTP-Kopfgleich zu setzen). Nach dem Paket-Kopf folgt <strong>ein</strong>e Liste von SSRC/CSRC-Kennungen derQuellen, die sich mit diesem Paket aus der RTP-Session verabschieden.0 16 32V=2 P SC PT=BYE=203LängeSSRC/CSRC...HeaderSSRC/CSRC−ListeLängeGrund für Abschied... (optional)Abbildung 2.9.: RTCP-BYE-PaketAnwendungserweiterung (Application, APP)Dieser Typ von RTCP-Paketen ist nur für die experimentelle <strong>Entwicklung</strong> von neuen Fähigkeitenund nicht für den dauerhaften Einsatz gedacht. Der Kopf für jedes RTCP-Paket wirdhier ebenfalls <strong>ein</strong>gesetzt. Die fünf Bits direkt hinter dem Padding-Bit haben bei diesemPaket <strong>ein</strong>e spezielle Bedeutung. Während dieses Feld bei allen anderen Paketen als Zählerausgelegt wird, dient es in diesem Fall als numerische Kennung für den Typ des APP-Paketes.Nach dem Paket-Kopf folgt die SSRC bzw. CSRC der Quelle des Paketes. Das folgende 32-Bit-Feld b<strong>ein</strong>haltet <strong>ein</strong>en numerischer Bezeichner, der im Kontext der Anwendung definiertist. Optional können an dieser Stelle beliebige Daten folgen, die auf <strong>ein</strong> Vielfaches von 32Bit aufgefüllt werden müssen.0 16 32V=2 P Typ PT=APP=204LängeHeaderSSRC/CSRCNameDaten... (optional)Abbildung 2.10.: RTCP-Anwendungserweiterung2.2.4. Translator und MixerViele Konferenzen in IP-basierten Netzen nutzen die Fähigkeit der Gruppenadressierung.Damit der Einsatz dieser Technik möglich ist, müssen alle involvierten Router der Netze,in denen sich die Teilnehmer befinden, Multicast-Routing unterstützen. 12 Dies ist leider12 Bei nicht benachbarten Netzen sind auch die Router zwischen den Netzen gem<strong>ein</strong>t.


18 Kapitel 2. Basistechnologiennicht der Normalfall 13 , so daß manchen Benutzer die Teilnahme an Konferenzen verwehrtbleibt. Genauso können teilweise Benutzer hinter <strong><strong>ein</strong>er</strong> Firewall nicht an Konferenzen teilnehmen.Im RFC 1889 werden zwei funktionale Komponenten definiert, die zur Lösungsolcher Probleme verwendet werden können. Dabei werden Methoden definiert, um Kodierungsverfahrenanzupassen und die Medienströme mehrerer Teilnehmer zu mischen.Bevor <strong>ein</strong>e Konferenz aufgesetzt werden kann, ist die Bestimmung der Kodierungsverfahrenfür die Medienströme erforderlich. Zur genauen Spezifikation <strong>ein</strong>es Medienstroms reichtdie Angabe <strong>ein</strong>es Kodierungsverfahrens nicht aus. Zusätzlich müssen je nach Art des Verfahrensweitere Parameter definiert werden. Beschreibungen von Kodierungsverfahren inklusivefestgelegter Parameter und jeweils <strong>ein</strong>em zugeordneten registrierten Payload-Typsind in RFC 1890 definiert. Das als RTP/AVP bezeichnete Profil umfaßt 27 verschiedenePayload-Typen. Durch die Registrierung bei IANA sind für die Kodierungsverfahren symbolischeBezeichner definiert, die in anderen Protokollen <strong>ein</strong>gesetzt werden können, wie z.B.in SDP (siehe Abschnitt 2.5). Neue Profile für RTP werden in weiteren RFCs definiert, wiez.B. im RFC 2032 [56] „RTP Payload Format for H.261 Video Streams“ und RFC 2198 [42]„RTP Payload for Redundant Audio Data“.Probleme bei der Wahl des richtigen Kodierungsverfahrens können dann auftreten, wennan der Konferenz Benutzer mit Netzanbindungen stark unterschiedlicher Bandbreite undQualität teilnehmen. Bei höherer Klang- bzw. Bildqualität ist in der Regel auch die Mengeder zu transportierenden Daten größer.Die Wahl <strong>ein</strong>es Kodierungsverfahrens mit geringer Bandbreite in <strong><strong>ein</strong>er</strong> Konferenz mit nurwenigen Teilnehmern, die über <strong>ein</strong>e Anbindung mit geringer Kapazität verfügen, ist <strong>ein</strong><strong>ein</strong>akzeptable Lösung für die anderen Teilnehmer. In Multimedia-Konferenzen, bei denenVideo- und Audioströme übertragen werden, bleibt manchen Benutzern nur die Wahl zwischen<strong>ein</strong>em der beiden Medienströme, da ihre zur Verfügung stehende Bandbreite nichtfür beide ausreicht. Solche Lösungsansätze für das Problem sind nicht zufriedenstellend.Eine andere Möglichkeit der Lösung bieten Konferenzen mit <strong><strong>ein</strong>er</strong> zentralen Einheit. Dieseals Konferenz-Zentrale bezeichnete Instanz übernimmt die Umwandlung von Kodierungsverfahrensowie das Mischen von <strong>ein</strong>zelnen Medienströmen. Alle Teilnehmer kommunizierennur über die Zentrale mit<strong>ein</strong>ander. 14 Diese bündelt die Medienströme der Teilnehmerso, daß jeder nur <strong>ein</strong>en Strom empfängt. Enthalten ist darin <strong>ein</strong> Produkt aus allen Medienströmender anderen Teilnehmer. Obwohl jeder Teilnehmer nur mit <strong><strong>ein</strong>er</strong> Instanz kommuniziert,empfängt er die Daten aller Teilnehmer. Eingesetzt werden kann diese Technik inallen Multimedia-Konferenzen. Nachteil daran ist die zentrale Instanz, die bei <strong>ein</strong>em Ausfalldie Konferenz beendet.Die beiden funktionalen Komponenten Translator und Mixer, die im RFC 1889 definiertwerden, sollen die Lösung solcher Probleme unterstützen.Ein Translator leitet empfangene RTP-Pakete an andere Teilnehmer <strong><strong>ein</strong>er</strong> Konferenz weiter.Dabei kann der Translator die Medienströme be<strong>ein</strong>flussen, indem er z.B. das Kodierungsverfahrenverändert, bevor er die Pakete versendet. Unabhängig von der angewendetenTechnik wird die SSRC das Paketes vom Translator dabei nicht verändert.Wenn durch die Veränderung der Kodierung die Paketanzahl be<strong>ein</strong>flußt wird, müssenneue Sequenznummern und RTP-Zeitstempel erzeugt werden. Somit sind die Aufgaben<strong>ein</strong>es Translators wie folgt definiert:13 Zumindest in Deutschland ist es nicht selbstverständlich, daß <strong>ein</strong> Internet Service Provider Multicast zurVerfügung stellt.14 Dies ist <strong>ein</strong> ver<strong>ein</strong>fachter Fall. Es können z.B. auch Multicast-Konferenzen mit Brücken verbunden werden.


2.3. MEGACO-Protokoll 19• Weiterleiten von empfangenen RTP- und RTCP-Paketen <strong><strong>ein</strong>er</strong> Quelle.• Ändern der Kodierung von Mediendaten.• Anpassen der RTCP-Informationen <strong>ein</strong>es veränderten RTP-Stroms.Ein Mixer empfängt RTP-Pakete und ändert gegebenfalls die Kodierung, kombiniert bzw.teilt Medienströme auf und leitet sie an ausgewählte Teilnehmer weiter. Da die <strong>ein</strong>gehendenMedienströme nicht mit<strong>ein</strong>ander synchronisiert sind, muß der Mixer das Timingder Ströme anpassen, bevor sie gebündelt werden können. Aus diesem Grund istder Mixer selbst <strong>ein</strong>e aktive Quelle mit <strong><strong>ein</strong>er</strong> eigenen SSRC. Die ursprünglichen Quellender Ströme werden dabei in die CSRC-Liste der RTP-Pakete <strong>ein</strong>getragen. Sollteder Mixer selbst aktiv an <strong>ein</strong>em der Ströme beteiligt s<strong>ein</strong>, so muß auch die SSRC desMixers in die Liste der beteiligten Quellen <strong>ein</strong>getragen werden. Die Aufgaben <strong>ein</strong>esMixers sind wie folgt definiert:• Empfangen von RTP- bzw. RTCP-Paketen von <strong><strong>ein</strong>er</strong> oder mehreren Quellen.• Weiterleiten von RTP-Strömen.• Ändern des Kodierungsverfahren <strong>ein</strong>zelner RTP-Ströme.• Kombinieren bzw. Aufspalten von Medienströmen.Diese beiden logischen Funktionen können das Kodierungsverfahren der transportiertenMediendaten ändern. Dementsprechend müssen auch die RTCP-Pakete korrigiert werden,um die Statistiken den veränderten RTP-Paketen anzupassen.Ein Translator läßt RTCP-Pakete der Typen SDES, BYE und APP unverändert und schicktsie an ihren Bestimmungsort. Bei den Sender-Berichten muß die Anzahl der versendetenBytes korrigiert werden. Sollten dabei auch RTP-Pakete kombiniert bzw. aufgeteilt werden,so wird auch die Anzahl der versendeten Pakete korrigiert. Genauso kann es dadurchnotwendig s<strong>ein</strong>, die RTP-Zeitstempel dem neuen Timing anzupassen. In den Blöcken derEmpfänger-Berichte müssen die Informationen über verlorengegangene Pakete und Abweichungenbeim Empfang angepaßt werden.Ein RTP-Mixer behandelt SDES- und BYE-Pakete genauso wie <strong>ein</strong> Translator und verschicktsie unverändert weiter. Die Behandlung von APP-Paketen ist abhängig von der jeweiligenAnwendung und wird von der Spezifikation nicht vorgeschrieben. Die Sender- undEmpfänger-Berichte werden vom Mixer komplett neu aufgesetzt, da in kombinierten Medienströmenneue Parameter gelten. Da <strong>ein</strong> Mixer selbst <strong>ein</strong>e SSRC ist, müssen auch eigeneSender-Informationen generiert werden. Die Blöcke <strong>ein</strong>es Empfänger-Berichts, die der Mixererzeugt, werden nur an die jeweils zugehörige Menge von Teilnehmern weitergeleitet,d.h. an die Teilnehmer, die an dem empfangenen Medienstrom beteiligt waren.Funktionale Komponenten, wie der Translator und der Mixer, stellen für die Multimedia-Kommunikation in paketvermittelten Netzen im Zusammenhang mit RTP und RTCP grundlegendeTechnologien zur Verfügung. Diese sind für das weitere Verständnis dieser Diplomarbeitsehr wichtig.2.3. MEGACO-ProtokollMit dem Dokument „Simple Gateway Control Protocol (SGCP) 1.0“, welches im Mai 1998veröffentlicht wurde, war <strong>ein</strong>e neuartige <strong>Architektur</strong> für IP-Telefonie-Gateways <strong>ein</strong>geführt


20 Kapitel 2. Basistechnologienworden. Neu war die Trennung zwischen dem Modul zur Anrufsignalisierung und -steuerungund dem Media-Prozessor, der nur für die Verarbeitung der Medienströme zuständigist. MGCP (Media Gateway Control Protocol), <strong>ein</strong> Nachfolge-Protokoll von SGCP, hat sichnicht durchgesetzt. Grund dafür könnte die Spezialisierung auf Verbindungen zwischendem herkömmlichen Telefonnetz und <strong>ein</strong>em paketvermittelten Netz s<strong>ein</strong>. Desweiteren istdie Definition der Methode zur Meldung von aufgetretenen Ereignissen auf den nordamerikanischenRaum zugeschnitten.MEGACO (Media Gateway Control) ist in <strong><strong>ein</strong>er</strong> Kooperation der Working Group „Megaco“der IETF und der Study Group 16 der ITU-T entstanden. Das Resultat der Arbeit ist <strong>ein</strong>eSynthese aus <strong>ein</strong>igen Vorgänger-Protokollen wie z.B. MGCP, IDCP (IP Device ControlProtocol) und MDCP (Media Device Control Protocol).Im November 2000 hat die Working Group „Megaco“ den RFC 3015 [9] mit dem Titel„Megaco Protocol Version 1.0“ veröffentlicht. Die ITU-T Study Group 16 hat die Arbeitals Empfehlung H.248 herausgegeben. Inhalt dieser Dokumente ist die Beschreibung <strong><strong>ein</strong>er</strong><strong>Architektur</strong> für <strong>ein</strong> Media-Gateway (MG) und die Spezifikation <strong>ein</strong>es darauf abgestimmtenProtokolls zur Kommunikation zwischen dem MG und <strong><strong>ein</strong>er</strong> zugehörigen Steuer<strong>ein</strong>heit,dem Media-Gateway-Controller (MGC). Im folgenden Abschnitt werden beide Bestandteilevon MEGACO beschrieben.<strong>Architektur</strong>elle Anforderungen und grundsätzliche Voraussetzungen für MEGACO sind inRFC 2805 [16] beschrieben. Dabei werden Themen wie z.B. Ressourcen-Reservierung undKonferenz-Management im Media-Gateway, Signal- und Ereignisverarbeitung, Qualität derDienste, Fehlerbehandlung und Anforderungen an die Transportschicht ausführlich behandelt.Ein konkretes Anwendungsprofil für <strong>ein</strong> Media-Gateway zum Einsatz in der IP-Telefoniewurde von der IETF im Januar 2001 als RFC 3054 [2] unter dem Titel „Megaco IP PhoneMedia Gateway Application Profile“ veröffentlicht. Dabei wurde speziell darauf geachtet,die Integration des Media-Gateways in die vorhandenen IP-Telefonie-Systeme zu ermöglichenund die Definitionen von MEGACO zu beachten.2.3.1. <strong>Architektur</strong>Die verschiedenartigen Netze, aus denen das Internet zusammengesetzt ist, müssen durchspezielle Rechner mit<strong>ein</strong>ander verbunden werden. Um netzübergreifend Dienste anbietenzu können, werden Gateways <strong>ein</strong>gesetzt, die für den jeweiligen Dienst die Übersetzungübernehmen. Einer dieser Dienste ist die Telefonie. Gateways, die zwischen <strong>ein</strong>em herkömmlichenleitungsvermittelten und <strong>ein</strong>em paketvermittelten Netz, wie dem Internet, <strong>ein</strong>gesetztwerden, können Gespräche über diese Grenze vermitteln. Die dabei zu erfüllendenAufgaben lassen sich in funktionale Bestandteile gliedern. Diese Möglichkeit der Gliederunghat zur Trennung der <strong>ein</strong>zelnen Funktionen in eigenständige Komponenten geführt, diewie in Abbildung 2.11 dargestellt, mit<strong>ein</strong>ander kooperieren. Das Signalisierungs-Gatewayübernimmt die Anrufsteuerung und -signalisierung zwischen dem herkömmlichen Telefonnetzund dem IP-Netz. Innerhalb des IP-Netzes vermittelt der Media-Gateway-Controllerden Anruf an den entsprechenden Endpunkt weiter. Um die Medienströme zwischen denunterschiedlichen Netzen zu transportieren, wird <strong>ein</strong> Media-Gateway vom Media-Gateway-Controller initialisiert und konfiguriert. Je nach Konstellation können auch mehrere Gateways<strong><strong>ein</strong>er</strong> Art involviert s<strong>ein</strong>. Wird beispielsweise <strong>ein</strong> Telefonat, dessen Teilnehmer sich inleitungsvermittelten Netzen befinden, durch IP-Netz geschleust, so wird an jeder der beidenGrenzen die Kombination von Signalisierungs-Gateway, Media-Gateway-Controller sowie


2.3. MEGACO-Protokoll 21Media-Gateway zur Vermittlung <strong>ein</strong>gesetzt.SGSignalisierungs−GatewayMGCMedia−Gateway−ControllerMGCMedia−Gateway−ControllerISDNPSTNGSMSIP−EndpunktH.323−EndpunktMedienströmeAnrufsignalisierungMedia−Gateway Steuer−ProtokollMGMedia−GatewayMGMedia−GatewayAbbildung 2.11.: MEGACO – Verbindung zum herkömmlichen TelefonnetzDie Aufgaben des Media-Gateways sind die Weiterleitung und geeignete Umsetzung vonMedienströmen sowie die Verwaltung der benötigen Ressourcen. Dabei wird auch der Transportüber Netze mit unterschiedlichen Protokollen der Vermittlungschicht unterstützt. Hiermitwerden nicht nur verschiedene paketvermittelte Netze angesprochen, sondern auchleitungsvermittelte Netze, so daß z.B. Vermittlungen zwischen <strong>ein</strong>em IPv4-Netz und und<strong>ein</strong>em ISDN-Anschluß möglich sind. Das Gateway kann die Fähigkeiten besitzen, AudioundVideodaten zu verarbeiten sowie auf T.120 15 basierende Konferenzen zu integrieren.Ebenso können lokal vorbereitete Mediendaten (z.B. Ansagetexte für Anrufbeantworter)abgespielt werden.Der Media-Gateway-Controller ist die intelligente Steuerungs<strong>ein</strong>heit für <strong>ein</strong>e Gruppe vonMedia-Gateways. Zuständig für die Initialisierung und Konfiguration der Media-Gatewaysmuß die Steuer<strong>ein</strong>heit auch die Verteilung der Konferenzen auf <strong>ein</strong>zelne Media-Gatewayszur Lastverteilung vornehmen. Da die Umwandlung von Kodierungsverfahren sowie dieBündelung von mehreren Medienströmen rechenintensive Aufgaben sind, kann <strong>ein</strong> Media-Gateway mit <strong><strong>ein</strong>er</strong> Konferenz ausgelastet s<strong>ein</strong>, so daß <strong>ein</strong>e weitere Konferenz das Media-Gateway überlasten würde. Aus diesem Grund muß die Steuer<strong>ein</strong>heit über die Verteilungder <strong>ein</strong>zelnen Konferenzen aufgrund der noch vorhandenen Ressourcen der Media-Gateways entscheiden. Daraus folgend ist <strong>ein</strong>e weitere Aufgabe des Media-Gateway-Controllerdas Erzeugen sowie Freigeben von Ressourcen <strong><strong>ein</strong>er</strong> Konferenz.MEGACO verwendet das Modell der funktionalen Trennung als Basis. Dabei gibt es <strong>ein</strong>eSteuer<strong>ein</strong>heit, den Media-Gateway-Controller, und <strong>ein</strong>e beliebige Menge von Media-Gateways, wie es in Abbildung 2.12 veranschaulicht wird. Grund für diese Aufteilung istdie Komplexität der jeweiligen Aufgaben. Der Transport von Medienströmen sowie eventu-15 Bezeichnet <strong>ein</strong>e Serie von Empfehlungen der ITU-T [25]. Diese definiert <strong>ein</strong>e Konferenzarchitektur, basierendauf weiteren Empfehlungen der ITU-T wie z.B. Konferenzsteuerung (T.124) und Mehrpunktkommunikation(T.122,T.125).


22 Kapitel 2. Basistechnologienelle Korrekturen der Kodierungsverfahren und Mischen mehrerer Medienströme sind sehrrechen- und damit zeitaufwendige Vorgänge. Die Anrufsignalisierung bedarf zwar <strong><strong>ein</strong>er</strong>ausgereiften Verwaltungsfunktionalität, ist aber k<strong>ein</strong>e rechenintensive Aufgabe. Nach außenbildet der Media-Gateway-Controller mit den zugehörigen Media-Gateways <strong>ein</strong>e Einheit,d.h. Dienste werden nur von dem Media-Gateway-Controller zur Verfügung gestellt,für deren Abarbeitung die Media-Gateways <strong>ein</strong>gesetzt werden. Die beschriebene <strong>Architektur</strong>befaßt sich mit dem Aufbau <strong>ein</strong>es Media-Gateways, die Voraussetzung für die korrekteFunktionsweise des Protokolls ist.MGCMGMGMGAbbildung 2.12.: Trennung zwischen Steuer<strong>ein</strong>heit und Media-ProzessorDie wichtigsten Elemente dieses Modells sind die Terminationen und Kontexte. Endpunkte,die in <strong><strong>ein</strong>er</strong> Konferenz beteiligt sind, werden durch Terminationen repräsentiert. Dieempfangenen Medienströme werden an die entsprechenden Terminationen der Konferenzweitergeleitet. Um diese Zuordnung treffen zu können, werden Terminationen <strong><strong>ein</strong>er</strong> Konferenzin <strong>ein</strong>em Kontext zusammengefaßt. Während die Terminationen alle Parameter bezüglichder Medienströme verwalten, ist der Aufgabenbereich des Kontextes die Steuerungder Konferenz. Ein Beispiel für <strong>ein</strong>e Anordnung von Terminationen in <strong>ein</strong>em Kontext ist inAbbildung 2.13 zu sehen.Media GatewayContextTerminationTelefon−verbindungTerminationRTP−StromTerminationTelefon−verbindungAbbildung 2.13.: VerbindungsmodellTerminationEine Termination ist <strong>ein</strong>e logische Einheit in <strong>ein</strong>em Media Gateway. Diese verwaltet <strong>ein</strong>bzw.ausgehende Medienströme. Beschrieben wird <strong>ein</strong>e Termination in diesem Modell durch<strong>ein</strong>e Menge von Eigenschaften, die in Deskriptoren zusammengefaßt sind. Deskriptorenwerden bei den definierten Kommandos als Parameter <strong>ein</strong>gesetzt. Eine Liste der möglichenDeskriptoren inklusive <strong><strong>ein</strong>er</strong> kurzen Beschreibung ist in der Tabelle 2.4 zu finden. Genauso


2.3. MEGACO-Protokoll 23wie <strong>ein</strong> Kontext wird <strong>ein</strong>e Termination durch <strong>ein</strong>e <strong>ein</strong>deutige Kennung identifiziert, durchdie TerminationID. Diese wird bei Erzeugung der Termination erstellt.Grundsätzlich gibt es zwei Arten von Terminationen, die durch ihre zugehörige Medienquelleunterschieden werden. Einerseits sind dies permanent existierende Quellen. Ein Beispielfür solch <strong>ein</strong>e Quelle ist <strong>ein</strong> ISDN B-Kanal. Diese Quellen stehen für Konferenzanbindungenzur Verfügung, solange die Verbindung gehalten wird. Die andere Art von Terminationenrepräsentiert <strong>ein</strong>e flüchtige Quelle. Diese existieren nur solange, wie sie verwendet werden.Ein Beispiel hierfür ist <strong>ein</strong> RTP-Strom.Die flüchtigen Terminationen werden durch das Kommando Add erzeugt und mittels desKommandos Subtract freigegeben. Im Gegensatz dazu werden Terminationen, die physikalischvorhandene Geräte repräsentieren, durch das Kommando Add aus <strong><strong>ein</strong>er</strong> Art Ruhestandgeholt und mit Subtract wieder hin<strong>ein</strong>versetzt.Um spezielle Töne (z.B. DTMF, Frei- und Besetzt-Zeichen), d.h. deren Audio-Informationen,in Medienströme zu integrieren, können Signale definiert werden, die <strong>ein</strong>e Beschreibungdieser Töne enthalten. Ebenso kann es von Interesse s<strong>ein</strong>, empfangene Medienströme aufsolche Signale hin zu untersuchen. Dafür sind in MEGACO Ereignisse definiert, die beimAuftreten <strong>ein</strong>es Signals ausgelöst werden. Dabei wird der Media-Gateway-Controller mittels<strong><strong>ein</strong>er</strong> Nachricht über das Ereignis informiert.Für <strong>ein</strong>en Medienstrom wird im Normalfall <strong>ein</strong> Kanal bereitgestellt, an dem die Fragmente16 nach<strong>ein</strong>ander abgeholt werden können. In speziellen Fällen können Medienströmeauch auf mehrere Kanäle verteilt und damit parallel übertragen werden. Die EmpfehlungH.221 [28] der ITU-T beschreibt <strong>ein</strong>e Methode zur Aufspaltung von Medienströmen in<strong>ein</strong>e Anzahl von digitalen Kanälen mit <strong><strong>ein</strong>er</strong> Übertragungsrate von 64 kbit/s. Diese Artvon Verbindung würde von dem Modell wie folgt behandelt werden. Für jeden der Datenkanälewird <strong>ein</strong>e eigene Termination initiiert. Eine zusätzliche Termination, die Multiplex-Termination, ver<strong>ein</strong>igt die Teile zu <strong>ein</strong>em Gesamtstrom. Dieser kann wiederum mit anderenTerminationen in dem Kontext verbunden werden.Die TerminationID wird bei der Erstellung <strong>ein</strong>es Termination-Objektes von dem Media-Gateway kreiert. Die TerminationID kann von dem Gateway nach <strong><strong>ein</strong>er</strong> vordefiniertenStruktur aufgebaut werden, z.B. kann der Name des Anschlusses, gefolgt von <strong><strong>ein</strong>er</strong> Nummer,enthalten s<strong>ein</strong>. Genau zwei Wildcards können auf die Kennung angewendet werden:ALL und CHOOSE. Die erste Variante wählt alle innerhalb das angegebenen Kontexts existierendenTerminationen aus. Die zwei Variante CHOOSE spezifiziert <strong>ein</strong>e <strong>ein</strong>zige, beliebiggewählte Termination. Ein Kommando, welches als Ziel die TerminationID ALL spezifiziert,hat denselben Effekt wie die Wiederholung des Kommandos mit allen gültigen Kennungender aktuell vorhandenen Terminationen. Bei manchen Konfigurationen mag es von Vorteils<strong>ein</strong>, wenn mit <strong>ein</strong>em Kommando alle Terminationen des Gateway angesprochen werdenkönnen. Für diesen Fall wurde die Root-Termination definiert. Wird ROOT als Ziel desKommandos für die TerminationID angegeben, wird das Kommando auf alle existentenTerminationen angewendet. Hier besteht jedoch die Einschränkung, daß Signale auf diesespezielle Termination nicht angewendet werden können.16 Der Begriff Fragment bezeichnet die <strong>ein</strong>zelnen Teile <strong>ein</strong>es Medienstroms, die in RTP-Paketen transportiertwerden.


24 Kapitel 2. BasistechnologienKontextEin Kontext ist <strong>ein</strong> Verbund <strong><strong>ein</strong>er</strong> beliebigen Anzahl von Terminationen. Beschrieben wirddabei die Kommunikation unter den Terminationen, d.h. wer wen sieht bzw. wer wen hört.Durch <strong>ein</strong> Attribut des Kontextes kann beschrieben werden, wie die Medienströme innerhalbdes Kontextes bearbeitet werden sollen, d.h. es können z.B. Medienströme nur an bestimmteTerminationen weitergeleitet oder mehrere Medienströme gemischt werden, bevorsie an <strong>ein</strong>e Termination übergeben werden.Ein weiteres Attribut ist die ContextID anhand der <strong>ein</strong> Kontext bei allen anwendbarenKommandos identifiziert wird. Als <strong>ein</strong>e dritte Eigenschaft kann <strong>ein</strong>em Kontext <strong>ein</strong>e Prioritätzugeordnet werden. Damit kann bei der parallelen Bearbeitung von mehreren Kontextendie Reihenfolge festgelegt werden.In dem Modell existiert <strong>ein</strong> spezieller Kontext, der NULL-Kontext, in dem Terminationen liegen,die noch k<strong>ein</strong>e Beziehungen zu anderen Terminationen haben. Die Zugehörigkeit zumNULL-Kontext ist für <strong>ein</strong>e Termination k<strong>ein</strong>e Einschränkung bezogen auf die Veränderungder Parameter. Auch der Empfang von Ereignissen ist für diese Terminationen möglich.Im Normalfall existiert nach dem Modell <strong>ein</strong> Kommando Add, mit dem Terminationen zu<strong>ein</strong>em Kontext hinzugefügt werden können. Wird beim Aufruf dieses Kommandos vomMedia-Gateway-Controller der optionale Parameter <strong>ein</strong>es Kontexts nicht angegeben, kreiertdas Media-Gateway <strong>ein</strong>en neuen. Um Terminationen zu entfernen, wird das KommandoSubtract verwendet. Ebenso gibt es die Möglichkeit, mittels des Kommandos Move <strong>ein</strong>eTermination von <strong>ein</strong>em Kontext in <strong>ein</strong>en anderen zu bewegen. Dabei muß sichergestellts<strong>ein</strong>, daß Terminationen nur in <strong>ein</strong>em Kontext existieren. Wird aus <strong>ein</strong>em Kontext die letzteTermination gelöscht, wird auch der Kontext entfernt, und die dafür belegten Ressourcenfreigegeben.Die maximale Anzahl von Terminationen pro Kontext hängt von dem Media-Gateway ab.Werden nur Punkt-zu-Punkt Verbindungen unterstützt, so ist damit die Anzahl auf zwei beschränkt.Werden Mehrpunkt-Verbindungen unterstützt, können auch drei oder mehr Terminationenpro Kontext zugelassen werden.PackageIn <strong>ein</strong>em Media Gateway können Terminationen mit unterschiedlichsten Charakteristikenimplementiert s<strong>ein</strong>. Um die Funktionalität von Terminationen zu erweitern bzw. zu verändern,müssen zusätzliche Eigenschaften, Ereignisse und Signale hinzugefügt werden. Fürdiese Möglichkeit sind in MEGACO Packages definiert, die <strong>ein</strong>e abstrakte Definition derTerminationen ermöglichen, da die konkreten Eigenschaften spezieller Terminationen inPackages definiert werden können.Neue Packages werden in eigenen RFCs definiert und die der ITU-T in weiteren Empfehlungen.Enthalten sind in diesen Dokumenten mindestens <strong>ein</strong> Name, <strong>ein</strong>e <strong>ein</strong>deutige Kennung,<strong>ein</strong>e kurze Beschreibung, <strong>ein</strong>e Version und die zur Verfügung gestellten Eigenschaften, Signaleund Ereignisse. Definiert das Package <strong>ein</strong>e Erweiterung <strong>ein</strong>es anderen, muß diesangegeben werden. Eine Registrierung bei der IANA ist nicht zwingend erforderlich.


2.3. MEGACO-Protokoll 252.3.2. ProtokollDie beschriebene <strong>Architektur</strong> bildet die Basis für das MEGACO-Protokoll zwischen Media-Gateway und Media-Gateway-Controller. Aufgabe dieses Protokolls ist die Manipulationder logischen Einheiten Kontext und Termination. Mittels der definierten Kommandos kanndas Verhalten des Media-Gateway gesteuert werden.Durch die Kooperation zwischen IETF und ITU-T ist dieses Protokoll in zwei Kodierungsartendefiniert: ASCII und ASN.1. In den Verhandlungen konnte k<strong>ein</strong>e Einigung bezüglichder Kodierung herbeigeführt werden. 17KommandosDer wesentliche Teil der Kommandos ist ausschließlich für den Media-Gateway-Controllerkonzipiert, um das Media Gateway zu steuern. In der Tabelle 2.3 ist <strong>ein</strong>e Liste der definiertenKommandos und <strong>ein</strong>e kurze Beschreibung ihrer Funktion zu finden.KommandoAddModifySubtractMoveAuditValueAuditCapabilitiesNotifyServiceChangeBeschreibungdient zum Hinzufügen <strong><strong>ein</strong>er</strong> Termination in<strong>ein</strong>en Kontext. Existiert der angesprochene Kontextnicht, wird dieser kreiert.konfiguriert die Eigenschaften, Ereignisse undSignale <strong><strong>ein</strong>er</strong> Termination.entfernt <strong>ein</strong>e Termination aus <strong>ein</strong>em Kontextund liefert Statistiken über die Teilnahme derTermination in dem Kontext zurück.ist <strong>ein</strong>e atomare Operation, die <strong>ein</strong>e Terminationin <strong>ein</strong>en anderen Kontext versetzt.dient zur Abfrage von Eigenschaften, Ereignissen,Signalen und Statistiken <strong><strong>ein</strong>er</strong> Termination.erlaubt das Abfragen von möglichen Werten derEigenschaften, Ereignisse und Signale <strong><strong>ein</strong>er</strong> Termination.benachrichtigt den Media-Gateway-Controllervom Eintreten <strong>ein</strong>es Ereignisses im Media-Gateway.dient zur Bekanntgabe von Änderungen im Betriebszustand<strong><strong>ein</strong>er</strong> oder mehrerer Terminationen.Tabelle 2.3.: Kommandos zwischen MGC und MGAusnahmen bezogen auf die Kommunikationsrichtung bilden die beiden Kommandos ServiceChangeund Notify. Während das Kommando Notify nur vom Media-Gateway zumMedia-Gateway-Controller gesendet wird, kann ServiceChange von beiden Systemen verwendetwerden. Das Media-Gateway verwendet das Kommando, um dem Media-Gateway-17 Es wurde <strong>ein</strong>e Münze geworfen, was zur Folge gehabt hätte, daß die ASCII-Kodierung verwendet wird. Dieswurde von der Study Group 16 nicht akzeptiert, so daß der Kompromiß geschlossen wurde.


26 Kapitel 2. BasistechnologienController mitzuteilen, daß <strong>ein</strong>e Termination oder <strong>ein</strong>e Gruppe von Terminationen betriebsbereitist oder den Betrieb <strong>ein</strong>gestellt hat. Auch wenn <strong>ein</strong> Media-Gateway den Betriebaufnimmt, wird das Kommando ServiceChange gesendet, um <strong>ein</strong>e Registrierung beimMedia-Gateway-Controller vorzunehmen. In der anderen Richtung wird das Kommandovom Media-Gateway-Controller verwendet, um <strong>ein</strong>e Termination oder <strong>ein</strong>e Gruppe vonTerminationen zu beenden.DeskriptorDie Verwendung der obigen Kommandos ähnelt <strong>ein</strong>em Funktionsaufruf. Deskriptoren werdendem Kommando als Parameter übergeben. Diese werden ebenfalls für die Rückgabewerteder Kommandos <strong>ein</strong>gesetzt. Ein Deskriptor besteht aus <strong>ein</strong>em Namen, <strong><strong>ein</strong>er</strong> Kennungund <strong><strong>ein</strong>er</strong> Liste von Schlüssel-Wert-Paaren, wie es in der folgenden Zeile dargestellt ist. DasBeispiel verwendet die Text-Kodierung des Protokolls.DescriptorName={parm=value1, parm=value2.}Dabei muß zwischen drei verschiedenen Arten von Parametern unterschieden werden:Vollständig spezifiziert: Dem Parameter ist genau <strong>ein</strong> <strong>ein</strong>deutiger Wert zugewiesen, dervom Empfänger verwendet werden muß.Ungenügend spezifiziert: Der Parameter ist dem Wert CHOOSE gleichgesetzt. Das Media-Gateway wählt entsprechend s<strong><strong>ein</strong>er</strong> momentanen Ressourcen den richtigen Wert fürden Parameter aus <strong><strong>ein</strong>er</strong> vorgegebenen Menge aus.Überspezifiziert: Dem Parameter ist <strong>ein</strong>e Liste möglicher Werte zugeordnet. Der Empfängermuß <strong>ein</strong>en aus der Liste auswählen, wobei die Reihenfolge die Priorität des Sendersangibt.Parameter und Rückgabewerte der Kommandos sind optional. Für beide werden ausschließlichDeskriptoren <strong>ein</strong>gesetzt. Sollte <strong>ein</strong> benötigter Deskriptor bei <strong>ein</strong>em Kommandoaufruffehlen, so sind die zuvor verwendeten Werte des Deskriptors, falls sie vorhanden sind, weiterhingültig. Ist <strong>ein</strong> Parameter ungenügend oder überspezifiziert, muß der Empfänger ins<strong><strong>ein</strong>er</strong> Antwort den gewählten Wert in den jeweiligen Deskriptor <strong>ein</strong>tragen.Das MEGACO-Protokoll spezifiziert <strong>ein</strong>e Menge von grundlegenden Deskriptoren. In derfolgenden Tabelle 2.4 werden diejenigen beschrieben, die für die zu entwickelnde <strong>Architektur</strong>von Interesse sind.Deskriptor NameMediaTerminationStateBeschreibungspezifiziert die Parameter für die Medienströmeund Verwendung der Deskriptoren TerminationStateund Stream.enthält alle Eigenschaften <strong><strong>ein</strong>er</strong> Termination,die sich nicht auf die Medienströme beziehen.Solche Eigenschaften werden in Packages definiert.Der Deskriptor b<strong>ein</strong>haltet desweiterennoch den Status der Termination sowie Informationenüber den EventBuffer.weiter ⊲


2.3. MEGACO-Protokoll 27Deskriptor NameStreamLocalControlBeschreibungsetzt sich aus LocalControl, Local und RemoteDeskriptor zusammen und beschreibt <strong>ein</strong>e bidirektionaleKommunikationsverbindung.beschreibt den Modus der Termination, welcherden Fluß der Medienströme grundlegendcharakterisiert. Mögliche Werte sind send-only,receive-only, send/receive, inactive und loopback.Zusätzlich sind Informationen zur Reservierungvon Ressourcen enthalten. Ein wiederholtesSetzen des Deskriptors führt zur vollständigenErsetzung der alten Werte. Dieser Deskriptorkann in Packages definiert werden.Local charakterisiert die Medienströme, die dasMedia-Gateway von dem entfernten End-System empfängt. Wird die Text-Kodierung desMEGACO-Protokolls verwendet, so enthält dieserDeskriptor <strong>ein</strong>e SDP 18 -Beschreibung.RemoteEventsEventBufferSignalsAuditPackages18 SDP ist <strong>ein</strong>e Beschreibungssprache für Medienströme.ist das entsprechende Gegenstück zum LocalDeskriptor und charakterisiert die Medienströme,die das Media-Gateway an das entfernteEnd-System schickt.umschreibt Ereignisse, die vom Media-Gatewayerkannt und Aktionen, die daraufhin ausgeführtwerden sollen. Ereignisse sind z.B. Fax-Töneund das Abheben oder Auflegen des Telefonhörers.enthält Ereignisse, die erkannt werden sollen,wenn der Event-Buffering-Modus aktiviert ist.In diesem Modus werden Events zwischengespeichertund erst auf Anfrage weitergeleitet.enthält <strong>ein</strong>e Liste von Signalen. Signale werdenin Packages definiert. Ein Signal kann optional<strong>ein</strong>e Zuordnung zu <strong>ein</strong>em bestimmten Medienstromb<strong>ein</strong>halten. Weitere optionale Parametersind <strong>ein</strong> Signal-Typ und <strong>ein</strong>e Zeitangabezur Dauer des Signals. Der ebenfalls optionaleParameter notifyCompletion kann gesetzt werden,wenn der Media-Gateway-Controller nachAbspielen des Signales benachrichtigt werdensoll.definiert, welche Deskriptoren <strong>ein</strong> Kommandozurückgeben soll. Der Audit-Deskriptorenthält <strong>ein</strong>e Liste von Deskriptoren. Es könnenauch Deskriptoren aufgelistet werden, die nichtim Aufruf des Kommandos enthalten sind.beschreibt <strong>ein</strong>e Liste der von der Terminationimplementierten Packages.weiter ⊲


28 Kapitel 2. BasistechnologienDeskriptor NameDigitMapServiceChangeObservedEventsStatisticsErrorBeschreibungenthält Muster, die <strong>ein</strong>e Abfolge von Ereignissenbeschreiben. Trifft <strong>ein</strong>es der Muster zu, werdendie Ereignisse in Gruppen gemeldet und nicht<strong>ein</strong>zeln.besagt, daß sich der Status <strong><strong>ein</strong>er</strong> Terminationgeändert. Dabei können z.B. Informationenwie Methode, Begründung, Adresse, Verzögerungund Zeitstempel angegeben werden.wird benutzt, um zu überwachende Ereignissezu melden. Eingesetzt wird der Deskriptorim Audit-Deskriptor. Angegeben zu denerkannten Ereignissen wird die Event-Kennungsowie der Zeitpunkt des Eintretens des Ereignises(in Millisekunden).enthält Informationen zu Statistiken, die von <strong><strong>ein</strong>er</strong>Termination aufgezeichnet wurden. Informationenwie der Status der Termination undgesendete bzw. empfangene Bytes gehören dazu.Weitere Statistiken werden von dem Packageder Termination definiert. Gesendet werdendie Statistiken auf jeden Fall bei der Entfernungder Termination aus dem Kontext. Mittels desAudit-Deskriptors können die Statistikenauch abgefragt werden.wird verwendet, um aufgetretene Fehler an denMedia-Gateway-Controller zu melden. DieserDeskriptor besteht aus <strong>ein</strong>em von der IANA registriertenFehlercode und optional <strong>ein</strong>em beschreibendenText, der möglichst informativ fürdie Fehlersuche s<strong>ein</strong> soll.Tabelle 2.4.: MEGACO-DeskriptorenEin weiterer Deskriptor, der nicht in der Tabelle aufgeführt, aber für diese Arbeit von Bedeutungist, wird als Topology-Deskriptor bezeichnet. Während alle anderen Deskriptoren<strong><strong>ein</strong>er</strong> Termination zugeordnet werden, ist dieser Deskriptor <strong>ein</strong>em Kontext zuzuordnen.Beschrieben wird damit der Fluß der Medienströme zwischen den Terminationen <strong>ein</strong>esKontextes. Die Standard-Topology in <strong>ein</strong>em Kontext definiert, daß <strong>ein</strong> Medienstrom an alleTerminationen des Kontextes außer der Quelle weitergeleitet wird. Durch diese Definitionist die Implementierung <strong>ein</strong>es Topology-Deskriptors optional.2.4. Anrufsignalisierung und -steuerungUnter anderen befassen sich IETF und ITU-T mit der IP-Telefonie. Die IETF arbeitet an demSignalisierungsprotokoll SIP (Session Initiation Protocol) während die ITU-T die H.323-Serie von Empfehlungen entwickelt.


2.4. Anrufsignalisierung und -steuerung 29Die Konferenzumgebungen definieren das Verhalten von Endpunkten und Servern. Hauptsächlichwird die Anrufsignalisierung und -steuerung betrachtet. Die dabei versendetenInformationen bestimmen den Ablauf <strong>ein</strong>es Anrufs oder <strong><strong>ein</strong>er</strong> Konferenz. Hierbei sind Vorgängewie z.B. Auf- und Abbau <strong>ein</strong>es Anrufes, Weiterleitung und Auffinden von Gesprächspartnerndefiniert.In den folgenden Abschnitten werden H.323 und SIP und dazugehörige Standards genauererläutert. Sie bilden die Basis für heutige IP-Telefonie.SIPDas von der Multi-Party Multimedia Session Working Group (MMUSIC) der IETF hervorgebrachteProtokoll SIP (RFC 2543 [21] und RFC 2543bis [19]) dient zum Initiieren, Ändernund Beenden von Multimedia-Konferenzen im Internet und ist Bestandteil <strong><strong>ein</strong>er</strong> IETF-<strong>Architektur</strong> für lose gekoppelte Konferenzen.Die Medienströme, die in <strong><strong>ein</strong>er</strong> Konferenz übertragen werden sollen, sind während des Verbindungsaufbausin <strong><strong>ein</strong>er</strong> Aushandlung zu bestimmen. Eingesetzt wird dafür SDP (SessionDescription Protocol, RFC 2327 [20]), das eigentlich für Mbone-Konferenzen entwickeltwurde. Die ausgehandelten Medienströme werden mittels RTP transportiert. Auf der Transportschichtwird für die Medienströme und die Signalisierung UDP <strong>ein</strong>gesetzt. Alternativkönnen die Signalisierungsnachrichten auch über TCP transportiert werden.Für den Aufbau der Nachrichten hat sich SIP nach den Definitionen aus RFC 822 [8] gerichtet,in dem der Aufbau <strong><strong>ein</strong>er</strong> E-Mail-Nachricht beschrieben wird. SIP-Nachrichten sindwie <strong>ein</strong>e E-Mail-Nachricht aus <strong>ein</strong>em Kopf und dem Inhalt zusammengebaut, die durch <strong>ein</strong>eleere Zeile von<strong>ein</strong>ander getrennt sind. Desweiteren wurden die wichtigsten Felder, wie To,From, Date und Subject, aus dem Kopf übernommen.Desweiteren verwendet SIP <strong>ein</strong>ige Definitionen aus HTTP (Hypertext Transfer Protocol,RFC 2616 [13]). Beispielsweise werden in SIP wie in HTTP URLs (Uniform Resource Locator,[1]) zur Adressierung verwendet. Beim Kommunikations-Modell von SIP werdenvon den End-Systemen Kommandos versendet, die mit dreistelligen Antwortcodes bestätigtwerden. Die Codes sind in sechs Gruppen untergliedert, die durch die erste Ziffer unterschiedenwerden. Anhand der Gruppe wird die Art der Antwort bestimmt, dabei kann essich um zusätzliche Informationen, Erfolgsmeldungen, Weiterleitungen, Fehler des Clientsoder des Servers und allgem<strong>ein</strong>e Fehler handeln. Die restlichen zwei Stellen stehen für <strong>ein</strong>egenauere Beschreibungen innerhalb der Gruppe.Da <strong>ein</strong>e Anrufsignalisierung vom Ablauf nicht <strong><strong>ein</strong>er</strong> Anfrage bei <strong>ein</strong>em Web-Server entspricht,wurden für SIP neue Kommandos definiert. Der Aufbau ist gegenüber HTTP gleichgeblieben. Ein Anruf beginnt mit <strong><strong>ein</strong>er</strong> INVITE-Nachricht. Diese enthält <strong>ein</strong>e Einladungdes Anrufers zu <strong>ein</strong>em Gespräch. Wenn der Aufbau erfolgreich verläuft, wird dieser mitdem Kommando ACK des Anrufers abgeschlossen. Andernfalls wird das Gespräch mit <strong>ein</strong>emCANCEL abgebrochen. Ein geregelter Abbau wird durch <strong>ein</strong> BYE <strong>ein</strong>geleitet. Ein weiteresSIP-Kommando, das für die Anrufübergabe <strong>ein</strong>gesetzt wird, ist REFER. Zusätzlich existiertnoch das Kommando NOTIFY, das es ermöglicht, den Status <strong>ein</strong>es End-Systems zu melden.Wie in HTTP beginnt <strong>ein</strong>e URL mit <strong>ein</strong>em Präfix, das das Schema der URL definiert. InSIP ist das Präfix sip. Als Trennzeichen folgt <strong>ein</strong> ’:’, nach dem wie bei <strong><strong>ein</strong>er</strong> E-Mail-Adresse Benutzername und <strong>ein</strong>e Domain kommen. Alternativ kann <strong>ein</strong> Rechnername <strong>ein</strong>gesetztwerden, dem optional <strong>ein</strong>e Portnummer folgt. Diese muß angegeben werden, wenndie SIP-Nachrichten nicht über den Port 5060 übertragen werden. Beispiele für gültige


30 Kapitel 2. BasistechnologienSIP-Adressen sind sip:crunchy@tzi.de und unter Verwendung <strong>ein</strong>es Rechnernamenssip:dolormin.informatik.uni-bremen.de:5060.SIP definiert verschiedene Arten von Servern. Diese werden anhand ihrer logischen Funktionengetrennt. Eine Kommunikation zwischen den Servern ist nicht definiert, wobei diemeisten Implementierungen die <strong>ein</strong>zelnen Funktionen auf <strong>ein</strong>em Rechner oder sogar in<strong>ein</strong>em <strong>ein</strong>zigen Programm zusammenfassen.Redirect-Server Dies ist der <strong>ein</strong>fachste SIP-Server. S<strong>ein</strong>e Aufgabe ist die Auflösung vonAdressen. Im Gegensatz zu anderen SIP-Servern kann der Redirect-Server k<strong>ein</strong>e Anfragenweiterleiten. Diese Funktion kann <strong>ein</strong> Anrufer nutzen, um <strong>ein</strong>en Gesprächspartneranhand <strong><strong>ein</strong>er</strong> URL aufzufinden.Proxy-Server SIP-Proxies übernehmen die Aufgabe <strong>ein</strong>es Routers auf der SIP-Ebene. EingehendeAnrufe können an Endpunkte bzw. weitere Proxies weitergeleitet werden.Einfache Varianten dieses Servers können <strong>ein</strong>gehende Anrufe nur an <strong>ein</strong>en Endpunktweiterleiten. Stehen für <strong>ein</strong>en Angerufenen mehrere mögliche Adressen zur Auswahl,kann <strong>ein</strong> Forking-Proxy die Nachrichten vervielfachen und an alle möglichen Zielpunkteverteilen.Location-Server Um Benutzer aufzuspüren, können Redirect-Server und Proxy-Server aufden Location-Server zurückgreifen. S<strong>ein</strong>e Aufgabe ist die Ermittlung von aktuellenAufenthaltsorten von Benutzern und gegebenenfalls die Herausgabe dieser bei Anfragen.Registrar Bei diesem Server registrieren sich aktive Endpunkte. Dies ist hilfreich für denLocation-Server, um s<strong>ein</strong>e Aufgabe zu erfüllen. Der Zugriff auf den gem<strong>ein</strong>samenDatenbestand ist der Grund dafür, daß bei realen Implementierungen der Registrarim Location-Server integriert ist.Ein Anruf, in den <strong>ein</strong> zustandsloser Proxy-Server involviert ist, wird in Abbildung 2.14dargestellt. Der Anrufer A verschickt die Einladung (INVITE) an den Proxy-Server. Dieserermittelt in diesem Beispiel <strong>ein</strong>e mögliche Adresse für den Angerufenen und leitet dieEinladung weiter. Als Antwort kann von dem Angerufenen und dem Proxy <strong>ein</strong>e MeldungTrying zurückkommen, welche signalisiert, daß der Anruf bearbeitet wird. Ebenfalls optionalist die Antwort Ringing, die von dem Proxy-Server an den Anrufer weitergeleitetwird. Nimmt der Angerufene das Gespräch an, wird dies durch die Antwort OK signalisiert,die vom Anrufer mit dem Kommando ACK bestätigt wird. Mit dieser Nachricht ist derVerbindungsaufbau abgeschlossen. Beim Abbau <strong><strong>ein</strong>er</strong> stehenden Verbindung wird <strong>ein</strong> BYEgesendet, das wiederum durch <strong>ein</strong> OK bestätigt wird.Das bisher beschriebene Modell bezieht sich auf Zwei-Punkt-Beziehungen. Die Initiierungvon Mehrpunkt-Beziehungen (Konferenzen) ist in SIP in mehreren Varianten möglich, istaber noch in der <strong>Entwicklung</strong>. Die Verwendung von Multicast ist <strong>ein</strong>e mögliche Variante.Dadurch können beliebig viele Teilnehmer zu der Multicast-Konferenz <strong>ein</strong>geladen werden.Wie genau die Anrufsignalisierung für Mehrpunkt-Kommunikationen in SIP aussehen soll,ist zum aktuellen Zeitpunkt noch nicht definiert. Eine mögliche Variante ist in dem InternetDraft „SIP Call Control - Transfer“ [55] beschrieben. Genauer beschäftigt sich der Draft mitder Funktion der Anrufübergabe. Dabei wird <strong>ein</strong> Endpunkt durch das Kommando REFERangewiesen, <strong>ein</strong>e Verbindung zu <strong>ein</strong>em dritten Gesprächspartner aufzubauen, wie es inAbbildung 2.15 veranschaulicht wird. Der Draft schreibt nicht vor, daß die ursprüngliche


2.4. Anrufsignalisierung und -steuerung 31Abbildung 2.14.: SIP-AnrufsignalisierungAbbildung 2.15.: SIP-AnrufübergabeVerbindung beendet wird. Neuere Versionen des Drafts weisen aber daraufhin, daß diesesKommando nicht zur Initiierung von Konferenzen gedacht ist.Eine <strong>ein</strong>fache Möglichkeit, <strong>ein</strong>e Konferenz zwischen drei Parteien aufzubauen, ist der Einsatz<strong><strong>ein</strong>er</strong> Konferenz-Zentrale. Dabei ruft A B an und B ruft C an. In dieser Konstellationmuß B die Medienströme von A und C mixen. Nachteil dieser Konstellation ist die zentraleStellung von B. Fällt B aus, bricht die Konferenz aus<strong>ein</strong>ander.Eine weitere Variante ist die vollständig vermaschte Konferenz. Bei diesem Modell bautjeder Endpunkt mit allen anderen <strong>ein</strong>e Verbindung auf. Durch diese Technik existiert k<strong>ein</strong>ezentrale Einheit, die bei Ausfall den Ablauf der Konferenz stört. Nachteile dieser Art vonKonferenz sind die benötigte hohe Bandbreite und <strong>ein</strong>e lange Phase der Anrufsignalisierung,bei der jeder mit jedem <strong>ein</strong>en Anruf aufbauen muß.Alle diese Varianten, abgesehen von dem Multicast-Modell, benötigen Komponenten alszentrale Einheit oder in jedem Endpunkt, die nicht nur Medienströme transportieren können,sondern auch Transcoding und/oder Mixing zur Verfügung stellen. Mit <strong><strong>ein</strong>er</strong> generischenSchnittstelle läßt sich hier <strong>ein</strong>e Komponente integrieren, die in SIP-Konferenzumgebungen<strong>ein</strong>gesetzt werden kann und gleichzeitig in weiteren IP-Telefonie-Systemen sowi<strong>ein</strong> Multimedia-Konferenzen in IP-basierten Netzen verwendet werden kann, um Medienströmezu transportieren und zu verarbeiten.


32 Kapitel 2. BasistechnologienH.323Die H.323-Serie [31] von Empfehlungen der ITU-T beschreibt <strong>ein</strong>e Konferenzumgebungfür eng-gekoppelte Multimedia-Kommunikation in paketorientierten Netzen. Zu der Seriegehört z.B. die Empfehlung H.225.0 [29] für Paketisierung, Synchronisation und Signalisierung.Die Signalisierung wird unter zusätzlicher Verwendung von Q.931 [27] realisiert. DieEmpfehlung H.245 [30] wird für die Medienbeschreibung und -aushandlung <strong>ein</strong>gesetzt.Aus ISDN bekannte Mehrwertdienste werden in den H.450-Empfehlungen [26] beschrieben.Für die Medienübertragung wird auf RTP zurückgegriffen. Alternativ kann T.120 [25]integriert werden. 19 Die Pakete der H.323-Serie werden mittels ASN.1 (Abstract SyntaxNotation One) definiert.In den herkömmlichen leitungsvermittelten Telefonnetzen können alle Endpunkte nur zwischenwenigen Kodierungsverfahren für die Mediendaten wählen. In der IP-Welt ist dieAushandlung der Medienströme umfangreicher. Durchgeführt wird sie während der Signalisierungsphasedes Anrufes. In H.323 ist definiert, daß alle Endpunkte mindestens dasKodierungsverfahren G.711 [24] für Audio-Informationen unterstützen müssen, damit <strong>ein</strong>eKommunikation nicht an der Aushandlung des Kodierungsverfahrens scheitern kann.Eine Definition dieser Art existiert für die Videoübertragung nicht.Die H.323-<strong>Architektur</strong> basiert ebenso wie SIP auf zentralen Komponenten. Der Gatekeeperist für Funktionen wie Registrierung, Adressierung und die Einhaltung von Benutzungsrichtlinien(Policy) zuständig. H.323-Endpunkte registrieren sich bei <strong>ein</strong>em Gatekeeper mit<strong><strong>ein</strong>er</strong> oder mehreren Alias-Adressen und <strong><strong>ein</strong>er</strong> Transportadresse, die von Anrufern bei derSignalisierung verwendet wird. Unter Verwendung dieser Informationen ist der Gatekeeperfähig, <strong>ein</strong>e Adreßauflösung zur Verfügung zu stellen, die von Anrufern genutzt werdenkann. Ein Gatekeeper kann Gesprächswünsche ablehnen oder zulassen. Ein Grund für dieAblehnung kann z.B. die angeforderte Bandbreite für die Medienströme s<strong>ein</strong>. Da während<strong>ein</strong>es Gespräches neue Kodierungsverfahren ausgehandelt werden können, ist die Fähigkeitdes Gatekeepers, die laufenden Gespräche zu überwachen, sinnvoll. Diese Funktionalitätkann <strong>ein</strong>e Überlastung des Netzes verhindern.Trotz s<strong><strong>ein</strong>er</strong> zentralen Funktion ist der Gatekeeper <strong>ein</strong>e optionale Komponente. Endpunktekönnen aber ohne <strong>ein</strong>en Gatekeeper k<strong>ein</strong>e Adressen auflösen. Stattdessen können Transportadressenverwendet werden. Dabei wird die IP-Adresse des Ziels sowie der allgem<strong>ein</strong>bekannte Signalisierungsport 1720 20 verwendet.Ein Endpunkt kann sich bei <strong>ein</strong>em Gatekeeper mit verschiedenen Arten von Adressen registrieren.Dabei ist die Zusammensetzung der Menge von Adressen beliebig, d.h. es könnenverschiedene Arten kombiniert werden und von jeder Art mehrere vorhanden s<strong>ein</strong>. Der Gatekeeperregistriert den Endpunkt mit allen in s<strong><strong>ein</strong>er</strong> Datenbank bekannten Adressen. AlsArten werden u.a. H.323-Adressen und herkömmliche Telefonnummern akzeptiert. H.323-Adressen werden als URL mit dem Präfix h323 und beliebigen Zeichen als Adresse spezifiziert.Häufig gleichen solche Adressen <strong><strong>ein</strong>er</strong> E-Mail-Adresse mit <strong>ein</strong>em Benutzernamenund <strong><strong>ein</strong>er</strong> Domain wie z.B. h323:crunchy@tzi.de. Telefonnummern werden durch denPräfix tel gekennzeichnet. 21Ein Anruf in <strong><strong>ein</strong>er</strong> H.323-Umgebung, an dem <strong>ein</strong> Gatekeeper beteiligt ist, kann auf verschie-19 Diese Serie von Empfehlungen kann beispielsweise für verteilte Anwendungen (Application Sharing) <strong>ein</strong>gesetztwerden.20 Es kann auch <strong>ein</strong> anderer Port gewählt werden. Der Port 1720 ist Standard und wird <strong>ein</strong>gesetzt, wenn k<strong>ein</strong>anderer definiert ist.21 Im RFC 2806 [58] werden URL-Typen für die IP-Telefonie definiert.


2.4. Anrufsignalisierung und -steuerung 33dene Weisen abgewickelt werden. Im Gatekeeper-Routed-Call-Model fungiert der Gatekeeperals Vermittlungsstelle zwischen den Gesprächsteilnehmern. Dabei werden alle Nachrichtender Anrufsignalisierung an den Gatekeeper geschickt, der sie an den jeweiligenGesprächspartner weiterleitet. Dieses Modell gibt dem Gatekeeper die Kontrolle über denAblauf des Anrufs. Im Direct-Call-Model löst der Gatekeeper die Adresse das Angerufenenauf und gibt diese an den Anrufer zurück. Damit wird die Anrufsignalisierung direktzwischen den beiden Gesprächspartnern ausgetauscht. Über solche Gespräche hat der Gatekeeperk<strong>ein</strong>e Kontrolle.In Abbildung 2.16 ist <strong>ein</strong> exemplarischer Ablauf <strong>ein</strong>es Anrufaufbaus nach dem Gatekeeper-Routed-Call-Model dargestellt. Der Anrufer A holt sich zuvor die Berechtigung für diesenAnruf. Bei positiver Bestätigung wird <strong>ein</strong> Setup an den Gatekeeper geschickt, der diesan den Gesprächspartner B weiterleitet. Als Antwort schickt dieser <strong>ein</strong> CallProceeding,um die Bearbeitung des Anrufs zu signalisieren. Bevor der Anruf angenommen werdenkann, muß auch der Angerufene bei s<strong>ein</strong>em Gatekeeper nach <strong><strong>ein</strong>er</strong> Berechtigung für diesenAnruf fragen und schickt <strong>ein</strong> AdmissionRequest. Nach der positiven Bestätigung desGatekeeper durch das Kommando AdmissionConfirm, muß B mit <strong>ein</strong>em Alerting anA antworten, um die Annahme des Anrufes zu signalisieren. Mit dem Kommando Connectvon B wird der Aufbau des Gesprächs vollendet und die Verbindung ist aufgebaut.Abbildung 2.16.: H.323-AnrufsignalisierungDie H.323-Serie von Empfehlungen beschäftigt sich auch mit Konferenzen, in denen sichmehr als zwei Teilnehmer befinden. Zur Realisierung werden die zwei Komponenten MC(Multipoint-Controller) und MP (Multipoint-Processor) definiert. Eine MCU (Multipoint-Controller-Unit) besteht aus <strong>ein</strong>em Multipoint-Controller und <strong><strong>ein</strong>er</strong> beliebigen Anzahl vonMultipoint-Processors. Die verschiedenen Arten <strong><strong>ein</strong>er</strong> Multipoint-Controller-Unit werdendurch die Fähigkeiten des verwendeten Multipoint-Processors bestimmt.Der Multipoint-Controller ist die Steuer<strong>ein</strong>heit in <strong><strong>ein</strong>er</strong> Konferenz. Als Aufgabe übernimmter die Aushandlung von Eigenschaften der Endpunkte, entscheidet über den Modus derKonferenz und steuert die Allokation von Konferenz-Ressourcen. Die Funktionen für dieseAufgaben sind in der Empfehlung H.245 definiert.Die Multipoint-Processors sind für die zentrale Verarbeitung der Video-, Audio- und Datenströmezuständig. Funktionen wie Weiterleitung, Übersetzung von Kodierungsverfahrenund Mixen werden unterstützt. Gesteuert wird der Multipoint-Processor durch <strong>ein</strong>enMultipoint-Controller.Eine Konferenz kann in verschiedenen Modi aufgesetzt werden. In <strong><strong>ein</strong>er</strong> zentralisierten


34 Kapitel 2. BasistechnologienKonferenz werden alle Medienströme durch <strong>ein</strong>e zentrale Einheit geleitet, die die Medienströmeverarbeitet und weiterleitet. Dabei werden wenn nötig Übersetzungen in den Kodierungsverfahrensowie Mixvorgänge angewendet. Dezentralisierte Konferenzen setzen <strong>ein</strong>eMulticast-Adressierung <strong>ein</strong>, um die Medienströme zu versenden. Das Mixen der <strong>ein</strong>zelnenMedienströme muß in diesem Fall von den Endpunkten übernommen werden. In <strong>ein</strong>emdritten Modus werden die beiden anderen ver<strong>ein</strong>igt, d.h. es werden <strong>ein</strong>ige Medienströmeüber zentrale Einheiten geleitet und andere direkt an die beteiligten Endpunkte.2.5. MedienbeschreibungBei SIP sowie bei H.323 wird während der Anrufsignalisierung <strong>ein</strong>e Medienaushandlungdurchgeführt. Dabei tauschen die Endpunkte gegenseitig ihre Fähigkeiten bezüglich derMedienkodierung aus. Abschließend wird aus der Schnittmenge <strong>ein</strong> Kodierungsverfahrenpro Medienstrom ausgewählt. Diese Aushandlung ermöglicht den Endpunkten <strong>ein</strong> Verfahrenauszuwählen, das ihre verfügbare Bandbreite nicht überschreitet. Bei breitbandigenAnbindungen ist dieses Kriterium nicht wichtig. Solche Endpunkte können sich das Kodierungsverfahrenmit dem geringsten Qualitätsverlust aus der Schnittmenge aussuchen.Um <strong>ein</strong>en Medienstrom zu charakterisieren, reicht es nicht, <strong>ein</strong> Kodierungsverfahren anzugeben.Für die genaue Beschreibung sind je nach Kodierungsverfahren weitere Parameterzu bestimmen. Ein Medienstrom, der z.B. Audio-Informationen enthält und auf Samples basiert,wird zusätzlich durch die Abtastrate, die Bits pro Sample und die Anzahl der Kanälecharakterisiert.In der Medienaushandlung müssen außer <strong><strong>ein</strong>er</strong> Charakterisierung der Mediendaten auchdie Transportadressen für die Übertragung angegeben werden. Für <strong>ein</strong>e bidirektionale Kommunikationwerden genau zwei Transportadressen benötigt. Eine der Adressen definiertden Zielrechner sowie den zugehörigen Port für die zu versendenden Mediendaten, unddie andere legt das lokale Interface und den Port für den Empfang <strong>ein</strong>es Medienstroms fest.Die Beschreibung von Medienströmen ist nicht nur in der IP-Telefonie interessant, sondernist in allen Konferenzen in paketvermittelten Netzen nötig. Im folgenden werden Protokollevorgestellt, die sich mit der Beschreibung von Medienströmen beschäftigen. Ausgewähltwurden die Protokolle, die in SIP und H.323 <strong>ein</strong>gesetzt werden. Dies sind SDP (SessionDescription Protocol) aus SIP sowie H.245 aus der H.323-Serie. Zusätzlich wird SDPng(Session Description Protocol Next Generation) beschrieben, welches der Nachfolger vonSDP werden soll.Session Description Protocol (SDP)In der SIP-Konferenzumgebung wird SDP (Session Description Protocol, RFC 2327 [20])für die Medienbeschreibung <strong>ein</strong>gesetzt. Trotz der Bezeichnung Protokoll, sind in SDP k<strong>ein</strong>eKommunikationsvorschriften enthalten, sondern <strong>ein</strong>e Beschreibungssprache, die für Mbone-Konferenzen entwickelt wurde. SDP-Nachrichten enthalten nicht nur Beschreibungen vonMedienströmen, sondern zusätzlich auch Adressen für den Transport sowie Konferenzbeschreibungen.SDP-Nachrichten sind aus Textbaust<strong>ein</strong>en zusammengesetzt. Die Informationen sind in Zeilenangeordnet, welche wie Zuweisungen aufgebaut sind. Eine Zeile beginnt mit <strong>ein</strong>emZeichen (Schlüssel) gefolgt von <strong>ein</strong>em Gleichheitszeichen (=). Der Rest der Zeile entspricht


2.5. Medienbeschreibung 35dem zugewiesenen Wert. Im folgenden wird genauer auf die Schlüssel <strong>ein</strong>gegangen, die zurBeschreibung <strong>ein</strong>es Medienstroms sowie der Adressen verwendet werden.m= Diese Zeilen beschreiben <strong>ein</strong>en Medienstrom. In dem Feld wird <strong><strong>ein</strong>er</strong> derWerte audio, video, application, data und control angegeben. Mit dem wird die Anwendungsadresse definiert. Für das dritte Feld sind ausschließlich die Werte RTP/AVP und udp definiert. Verwendet <strong>ein</strong>e Konferenz<strong>ein</strong> proprietäres Medienformat, so wird dies durch Verwendung des Wertes udpgekennzeichnet. Mit dem Wert RTP/AVP wird die folgende Liste alsRTP-Payload-Nummern aus dem RTP-Profil AVP interpretiert.a=, a=:Zeilen mit Schlüssel a definieren Attribute. Die erste Variante a= spezifiziertBool’sche Eigenschaften. Durch die Angabe in <strong><strong>ein</strong>er</strong> SDP-Nachricht wird <strong>ein</strong>eEigenschaft aktiviert. Beispielsweise kann durch die Zeile a=recvonly festgelegtwerden, daß die Kommunikation nur unidirektional ist. Mit der zweiten Variante wird<strong>ein</strong>em Attribut <strong>ein</strong> Wert () zugewiesen.c= Diese Zeilen definieren <strong>ein</strong>e Netzadresse. Das Feld enthält denNetztyp. Dafür ist nur der Wert IN definiert, welcher für Internet steht. gibt den genauen Adreßtyp an, für den im aktuellen RFC nur der Wert IP4definiert ist, der <strong>ein</strong> Netz basierend auf IPv4 spezifiziert. Das letzte Feld enthältdie Transportadresse, an die die Medienströme gesendet werden. Für <strong>ein</strong>e Unicast-Adresse, ist entweder <strong>ein</strong> <strong>ein</strong>deutiger Rechnername oder die IP-Adresse anzugeben.Bei Multicast-Adressen wird durch <strong>ein</strong>en ’/’ getrennt <strong>ein</strong>e TTL angegeben. Optionalkann ebenfalls durch <strong>ein</strong>en weiteren ’/’ getrennt <strong>ein</strong>e Zahl folgen. Diese gibt an wievieleAdressen definiert sind. Durch 224.1.1.1/127/3 werden beispielsweise dieAdressen 224.1.1.1, 224.1.1.2 und 224.1.1.3 angegeben. und die TTL auf127 gesetzt.In dem folgenden Ausschnitt <strong><strong>ein</strong>er</strong> SDP-Nachricht wird <strong>ein</strong> Audiostrom beschrieben. AlsAnwendungsadresse wird der Port 4710 angegeben. 22 Darauf folgt die Liste der Kennungender Kodierungsverfahren. Der Wert RTP/AVP definiert, daß die folgenden Kennungen RTP-Payload-Nummern sind. In den beiden folgenden Attribut-Zeilen werden den RTP-Payload-Nummern Kodierungsverfahren und <strong>ein</strong>e zugehörige Abtastrate zugeordnet. Der Kennung0 wird der Codec PCM-µ-Law mit <strong><strong>ein</strong>er</strong> Abtastrate von 8000 Hz und der Kennung 8 wirdder Codec PCM-A-Law mit der selben Abtastrate zugewiesen. Als Adresse wird die IPv4-Multicast-Adresse 224.2.1.1 mit <strong><strong>ein</strong>er</strong> TTL von 127 definiert.m=audio 4710 RTP/AVP 0 8a=rtpmap:0 PCMU/8000a=rtpmap:8 PCMA/8000c=IN IP4 224.2.1.1/127Die zeilenweise Formatierung und die Kennungen mit <strong>ein</strong>em <strong>ein</strong>zigen Zeichen für den Inhalt<strong><strong>ein</strong>er</strong> Zeile erfüllen die definierte Aufgabe, aber lassen sich nur schwer erweitern.22 Implizit ist der RTCP-Port dadurch auf 4711 definiert.


36 Kapitel 2. BasistechnologienSDP Next Generation (SDPng)Der Einsatz von SDP zur Medienbeschreibung ist durch die schwer zu erweiternde Struktur<strong>ein</strong>geschränkt. Aus diesem Grund entwickelt die Working Group MMUSIC der IETF z.Z.das Nachfolge-Protokoll SDPng [35]. Dieses soll die Fähigkeiten von SDP bereitstellen undfolgende zusätzliche Eigenschaften aufweisen, wobei die Reihenfolge nicht die Prioritätwiderspiegelt:• SDPng-Nachrichten müssen <strong>ein</strong>fach parsierbar und die Protokoll-Regeln leicht zu implementierens<strong>ein</strong>.• SDPng soll erweiterbar s<strong>ein</strong>, so daß <strong>ein</strong>e Änderung an der Spezifikation selbst nichterforderlich ist. Diese soll allerdings <strong>ein</strong>en Mechanismus bereitstellen, der verhindert,daß sich unabhängige Erweiterungen überschneiden (z.B. in verwendeten Bezeichnungen).• SDPng soll für <strong>ein</strong>zelne Teile der Beschreibung unabhängige Sicherheits-Attribute zulassen.Es soll das Signieren sowie das Verschlüsseln <strong>ein</strong>zelner Teile in beliebiger Kombinationmöglich s<strong>ein</strong>.• Eine kurze und prägnante Textrepräsentation ist wünschenswert, um die Portierbarkeitzu verbessern und die Implementierungen <strong>ein</strong>fach zu halten. Eine Beschreibungssprache,die formell validiert werden kann, ist erwünscht. Aktuelle Internet Draftsverwenden XML.• In vielen Szenarien (z.B. in SIP und MEGACO) sind ausschließlich Medienbeschreibungenvon Interesse. Konferenz-Beschreibungen sind hier nicht notwendig. Aus diesemGrund sollen bestimmte Eigenschaften nur optional s<strong>ein</strong>.• Es soll möglich s<strong>ein</strong>, <strong>ein</strong>en Teil der SDPng-Beschreibungen auf SDP abzubilden. DaSDPng <strong>ein</strong>e stark erweitere Funktionalität gegenüber SDP bietet, ist <strong>ein</strong>e vollständigeAbbildung nicht möglich.Die momentane Version des Internet-Drafts definiert k<strong>ein</strong> vollständiges Protokoll. Auch dasNachrichtenformat ist noch in der <strong>Entwicklung</strong>. Der derzeitige Stand spezifiziert vier Teile,aus denen <strong>ein</strong>e SDPng-Nachricht bestehen soll: Definitionen, Konfigurationen, Abhängigkeitenund Attribute.In den Definitionen werden unter anderem Medientypen beschrieben. Dabei sind beispielsweiseAttribute wie Kodierungsverfahren, Abtastrate und Anzahl der Kanäle angegeben.Alternativ kann dabei auch auf vordefinierte RTP-Payload-Typen referenziert werden. Jederdieser Medientyp-Beschreibungen wird <strong>ein</strong> Name zugewiesen, der in den folgenden Teilender Nachricht als Verweis <strong>ein</strong>gesetzt werden kann.


2.5. Medienbeschreibung 37Im Abschnitt „Konfiguration“ werden die <strong>ein</strong>zelnen Komponenten beschrieben. Hierbeiwerden die zuvor definierten Namen der Medientypen verwendet. Die Komponenten beschreibenAlternativen von Konfigurationen für Medienströme. Komponenten und Alternativenwerden wiederum mit <strong>ein</strong>em Namen gekennzeichnet. Zu <strong><strong>ein</strong>er</strong> Alternative gehören<strong>ein</strong> Medientyp-Bezeichner aus dem Abschnitt „Definition“, <strong>ein</strong>e IP-Adresse sowie <strong>ein</strong> RTPundRTCP-Port. In dem folgenden Ausschnitt <strong><strong>ein</strong>er</strong> SDPng-Nachricht wird <strong>ein</strong>e Komponente„interactive-audio“ beschrieben, in der zwei Alternativen „AVP-audio-0“ und „AVP-audio-11“ definiert sind.Der Abschnitt „Abhängigkeiten“ (constraints) definiert Einschränkungen für die paralleleVerwendung von zuvor spezifizierten Komponenten. Verwendet werden kann dieser Abschnittbeispielsweise, um bei rechenintensiven Kodierungsverfahren die Anzahl von parallelenAnwendungen auf <strong>ein</strong> Maximum zu begrenzen.Der vierte Abschnitt „Attribute“ (conf) ist optional. Hier werden die Informationen zu <strong><strong>ein</strong>er</strong>Konferenz, wie Titel, Initiator und Beschreibung untergebracht. In dem folgenden Beispielträgt die Konferenz den Titel „An SDPng seminar“ und wurde von joe@example.com initiiert.Desweiteren wird mit dem Element repeat beschrieben, das sich die Konferenz alle7 Tage wiederholt und <strong>ein</strong>e 1 Stunde dauert. Das umschließende Element time bestimmtStart- und Endzeit. Zusätzlich kann die Semantik von Medienströmen beschrieben werden,wie es in dem Beispiel mit Element info getan wird.


38 Kapitel 2. BasistechnologienThis seminar is about SDPng...http://www.ietf.org/mailto:joe@example.comsip:joe@example.comAudio stream for the different speakersEmpfehlung H.245Die H.323-Konferenzumgebung verwendet für die Medienaushandlung und -beschreibung<strong>ein</strong> eigenes Protokoll, das in der Empfehlung H.245 [30] beschrieben wird. H.245 definiert,wie zwei H.323-Endpunkte <strong>ein</strong>e Medienaushandlung durchführen. Der Ablauf siehtvor, daß die Aushandlung der Medien vor Beginn des Gespräches durchgeführt werden sollund jederzeit während des Gesprächs erneut stattfinden kann. Gründe für wiederholte Medienaushandlungenkönnen Schwankungen der Klangqualität durch überlastete Netze s<strong>ein</strong>oder weitere Teilnehmer, die in <strong>ein</strong>e Konferenz <strong>ein</strong>steigen.Wie viele Protokolle der ITU-T, so ist auch H.245 so konstruiert worden, daß durch dievordefinierten ASN.1-Strukturen möglichst viele Variationen zur Definition von Medienströmenabgedeckt werden. Da diese Empfehlung zusätzlich für die Konferenzsteuerungzuständig ist und dieses Protokoll auch für weitere Empfehlungen der ITU-T entwickeltwurde, ist die Menge der definierten Strukturen sehr komplex und umfangreich.H.245 unterstützt <strong>ein</strong>e sehr komplexe Methode zur Beschreibung der Fähigkeiten des Endpunktes.Es können Gruppen von Kodierungsverfahren angegeben werden, wobei die Reihenfolgedie Priorisierung angibt. Auch ist es möglich, erlaubte bzw. verbotene Parallelitätin den Mengen auszudrücken. Ein Endpunkt kann von diesen Gruppen <strong>ein</strong>e beliebige Anzahl(maximal 256) definieren.2.6. ZusammenfassungJede Multimedia-Konferenz in paketvermittelten Netzen muß sich mit Medienströmen, d.h.ihren Eigenschaften, der Verarbeitung und dem Transport, aus<strong>ein</strong>andersetzen.Damit Medienströme heutzutage durch das Internet transportiert werden können, reichtdie Unterstützung von IPv4 in der Vermittlungsschicht nicht mehr aus. Schrittweise werdenimmer mehr Teilnetze IPv6 fähig. Eine Komponente, die Teilnehmer aus IPv6- sowie IPv4-Netzen in <strong><strong>ein</strong>er</strong> Konferenz verbinden will muß zwischen den beiden Protokollen vermittelnkönnen.


2.6. Zusammenfassung 39Zusätzlich zwingt die heterogene Struktur des Internet durch <strong>ein</strong> breites Spektrum vonverfügbaren Kapazitäten für die Medienströme zur Anpassung der Kodierungsverfahren fürTeilgruppen von Konferenzteilnehmern. Dafür sind detailierte Kenntnisse über RTP, RTCP,Kodierungsverfahren und Techniken zur Medienbeschreibung erforderlich.Das Ziel dieser Diplomarbeit ist die <strong>Entwicklung</strong> <strong><strong>ein</strong>er</strong> <strong>Architektur</strong> für <strong>ein</strong>e Komponente, diesowohl in IP-Telefonie-Systemen als auch in anderen Multimedia-Konferenzen zum Transportund zur Verarbeitung von Medienströmen <strong>ein</strong>gesetzt werden kann. Die Working GroupMEGACO hat sich mit ähnlichen Konzepten befaßt und bietet somit <strong>ein</strong>e Grundlage für architekturelleStrukturen.Mittels dieser theoretischen Informationen ist <strong>ein</strong>e Basis für weitere Überlegungen gelegt.Basierend auf diesen Kenntnissen werden im folgenden Schritt anhand von praktischen Beispielendas Einsatzgebiet sowie genauere Funktionsdefinitionen dieser Komponente erarbeitet.Dabei liegt <strong>ein</strong> Schwerpunkt in Überlegungen zur generischen Integration der Komponent<strong>ein</strong> vorhandene Konferenzumgebungen und der genauen Definition der möglichenEinsatzgebiete.


40 Kapitel 2. Basistechnologien


3. Anforderungen und ZieleDieses Kapitel beschäftigt sich mit vorhandenen Strukturen und Konzepten im Bereich desTransportes und der Verarbeitung von Medienströmen. Darauf aufbauend soll anhand vonAnalysen von Mbone- und IP-Telefonie-Konferenzen <strong>ein</strong>e Anforderungsdefinition sowie <strong>ein</strong>eZielsetzung für diese Diplomarbeit erarbeitet werden.3.1. HintergrundIn den letzten Jahren hat die Arbeitsgruppe <strong>Rechnernetze</strong> der Universität Bremen durchstudentische und wissenschaftliche Projekte sowie Diplomarbeiten <strong>ein</strong>e Infrastruktur fürIP-Telefonie aufgebaut. Das Resultat dieser Arbeit soll sich in diese Strukturen <strong>ein</strong>gliedernlassen und ihre Funktionalität erweitern. Dabei soll die Unabhängigkeit der zu entwickelndenKomponente gewährleistet bleiben.Die in Abbildung 3.1 dargestellte Infrastruktur der Arbeitsgruppe b<strong>ein</strong>haltet Komponentenaus der SIP- und aus der H.323-Konferenzumgebung. In den Projekten der Arbeitsgruppewerden beide Systeme erforscht, indem Teststellungen aufgebaut und analysiert und eigeneKomponenten entwickelt werden. Welche Komponenten aus welchen Projekten stammen,wird im folgenden erläutert.Erste Überlegungen zu Multimedia-Konferenzen in paketvermittelten Netzen stammen ausdem Projekt CONTRABAND (Conferencing for Transport Breakdown and Accident Managementand Networking of Dispatchers). Ziel dieses Projekts war die <strong>Entwicklung</strong> <strong><strong>ein</strong>er</strong>konkreten Strategie für den Einsatz von Multimedia-Telekonferenzsystemen im Umfeld derbremischen Transportwirtschaft. Dabei stand <strong>ein</strong>e Konferenzsteuerung auf der Basis vonInternet-Technologien im Vordergrund.MECCANO [3] war <strong>ein</strong> weiteres Projekt der Arbeitsgruppe, welches sich nicht ausschließlichmit der IP-Telefonie, sondern hauptsächlich mit Multimedia-Konferenzen im Mbone beschäftigthat. Ziel war die Bereitstellung von technischen Komponenten zur Unterstützungkooperativer Forschung und <strong>Entwicklung</strong> unter Einsatz von professionellen Werkzeugen fürMultimedia-Kommunikation. Dabei sollten die vorhandenen Anwendungen unter Berücksichtigungder Schwerpunkte Fernunterricht und Konferenzen verbessert werden. Punktewie in der folgenden Auflistung waren Merkmale der Arbeit von MECCANO.• Verbesserung der Nutzerfreundlichkeit• Unterstützung für Bandbreitenreservierung• Kopplung zwischen den beiden Konferenzsystemen der ITU-T und IETF• Messung, Beobachtung und Verwaltung der Ressourcen-Reservierungen


42 Kapitel 3. Anforderungen und ZieleH.323−GatekeeperH.323−TelefoneWiponeH.323−Software−EndpunktMedia−ServerIntranetWiNInternetMBoneSIP−ProxySIP−TelefoneStarGateH.323 − SIP − ISDNISDNPSTNGSMAudioGateRTP/RTCP − ISDNAbbildung 3.1.: Infrastruktur in der Arbeitsgruppe• Integration von schmalbandigen Anbindungen mittels intelligenter Paket-Filter, Multiplexenund Änderung von Kodierungsverfahren.In MECCANO sind für die Infrastruktur die beiden Gateways AudioGate und StarGate zurAnbindung an das herkömmlichen Telefonnetz und für die Kopplung der KonferenzumgebungenSIP und H.323 entwickelt worden. Desweiteren stammen <strong>ein</strong>e SIP- sowie <strong>ein</strong>eMbus 1 -Bibliothek aus diesem Projekt.AudioGate bietet die Fähigkeit, von <strong>ein</strong>em beliebigen Telefonnetz (PSTN, ISDN oder GSM)<strong>ein</strong>e Verbindung zu <strong><strong>ein</strong>er</strong> Mbone-Konferenz herzustellen. Dem Benutzer wird die Möglichkeitgeboten, aus <strong><strong>ein</strong>er</strong> Liste von laufenden Konferenzen auszuwählen. Während der Verbindungstehen zusätzliche Dienste wie Benutzer-Identifikation und Stummschaltung zurVerfügung.StarGate ist <strong>ein</strong> Gateway zur Anrufsignalisierung und -steuerung sowie zur Verarbeitungvon Medienströmen. Wichtigste Aufgabe dabei ist die Verbindung zwischen den drei SignalisierungsprotokollenSIP, H.323 und ISDN mit <strong><strong>ein</strong>er</strong> entsprechenden Konvertierung derMedienströme. Zusätzlich sollen H.323-Endpunkte durch das Gateway aktiv an Mbone-Konferenzen teilnehmen können. Entstanden ist das Gateway im Rahmen der Diplomarbeitvon Niels Pollem [43].Vom Wintersemester 1998/1999 bis zum Sommersemester 2000 hat sich das Projekt Uni-Tel [4], welches von der Arbeitsgruppe betreut wurde, mit der Erschaffung <strong><strong>ein</strong>er</strong> Infrastrukturfür IP-Telefonie innerhalb des Fachbereichs 3 Informatik/Mathematik beschäftigt. Dabeiwurde der Schwerpunkt nicht in die technische <strong>Entwicklung</strong> gelegt, sondern in den Bereich1 Der Mbus (Message Bus, Internet-Draft [41]) unterstützt die <strong>Entwicklung</strong> von modularen Systemen. Definiertwird <strong>ein</strong>e Art der Kommunikation, die es Anwendungen erlaubt über mehrere Rechner und unabhängig vonder Programmiersprache mit<strong>ein</strong>ander Nachrichten auszutauschen.


3.1. Hintergrund 43der Nutzung. Einerseits wurden bekannte Themen wie z.B. Authentisierung der Nutzer, Kostenabrechnungund Datenschutz diskutiert, anderseits beschäftigte sich das Projekt auchmit neuen Fragestellungen aus der IP-Telefonie wie z.B. Auffinden <strong>ein</strong>es Benutzers undKontrolle der verwendeten Bandbreite für IP-Telefonie.Entstandene Produkte aus dem Projekt setzen auf die H.323-<strong>Architektur</strong> auf. Der in UNI-TEL entwickelte Media-Server hat die Funktion <strong>ein</strong>es zentralen Anrufbeantworters. Allenicht entgegengenommenen Anrufe werden automatisch an den Media-Server weitergeleitet.Für den Anrufer ist das Verhalten des Media-Servers dem <strong>ein</strong>es Anrufbeantwortersgleich. Nach <strong><strong>ein</strong>er</strong> individuellen Ansage wird die gesprochene Nachricht bis zu <strong><strong>ein</strong>er</strong> maximalenLänge aufgezeichnet und kann später vom Angerufenen abgehört werden. EineErweiterung ermöglicht die Verwaltung der <strong>ein</strong>zelnen Benutzer-Konten auf dem Media-Server über <strong>ein</strong>en beliebigen Web-Browser. Somit können Benutzer ihren Anrufbeantworterirgendwo auf der Welt abfragen.Nach dem Beginn von UNITEL startete im April 1999 das wissenschaftliche Projekt WIP-TEL [5] und dauerte 18 Monate. Ziel war die <strong>Entwicklung</strong> <strong><strong>ein</strong>er</strong> Referenzkonfiguration fürdie Nutzung der IP-Telefonie innerhalb des Deutschen Wissenschaftsnetzes (WiN). WeitereSchwerpunkte in diesem Projekt waren die <strong>Entwicklung</strong> <strong><strong>ein</strong>er</strong> Infrastruktur für IP-Telefoniesowie die Implementierung von benötigten Komponenten. Dabei sind der Gatekeeper, Wiponeund <strong>ein</strong> Anrufsignalisierungs-Modul (H.323-Call-Control) entstanden.Der Gatekeeper ist <strong>ein</strong>e vollständige Implementierung der gleichnamigen Komponente ausder H.323-Empfehlung. Zu s<strong>ein</strong>en Funktionen gehören Adreßauflösung (auch über s<strong>ein</strong>eH.323-Zone 2 hinaus), Ressourcen-Verwaltung und <strong>ein</strong>e spezielle Anpassung an das Fehlverhalten<strong>ein</strong>zelner getesteter H.323-Endpunkte. Eine erste Version dieses Gatekeepers istin der Diplomarbeit von Stefan Prelle [48] entstanden.Die H.323-Call-Control ist <strong>ein</strong> Modul zur Anrufsignalisierung und -steuerung für <strong>ein</strong>enH.323-Endpunkt. Zusätzlich zu den verbindlichen Funktionen der Anrufsignalisierung werdenspezielle Fähigkeiten wie Fast-Start unterstützt. In der Diplomarbeit von Dirk Meyer[36] wurde die H.323-Call-Control unter Verwendung der H.450-Empfehlungen um <strong>ein</strong>igeMehrwertdienste, wie Weiterleitung, Stummschaltung und Transfer erweitert. Mit <strong><strong>ein</strong>er</strong><strong>ein</strong>zigen Instanz der H.323-Call-Control können mehrere parallele Anrufe verwaltet werden.Wie viele andere Komponenten in der Infrastruktur bietet auch die H.323-Call-Control<strong>ein</strong>e Schnittstelle zur Steuerung über den Mbus. 3Wipone ist <strong>ein</strong> GUI (Graphical User Interface) für <strong>ein</strong>en H.323-Endpunkt. Über <strong>ein</strong>e Mbus-Schnittstelle kommuniziert das GUI mit der H.323-Call-Control, die die Anrufsignalisierungübernimmt. Wipone besitzt <strong>ein</strong> Telefonbuch, in dem mehrere Adressen pro Datensatz <strong>ein</strong>getragenwerden können. Zusätzlich kann zu <strong>ein</strong>em Eintrag definiert werden, ob Anrufedieser Person direkt abgelehnt werden sollen. Weitere Fähigkeiten von Wipone sind dieVerwaltung von mehreren parallelen Anrufen, Lautstärkeregelung und Senden von DTMF.Zur Übertragung der Medienströme wird RAT (siehe Abschnitt 3.3.1) <strong>ein</strong>gesetzt.Zwei in der Arbeitsgruppe aktuell laufende Projekte beschäftigen sich mit der SIP-Konferenzumgebung.Zum <strong>ein</strong>en das Projekt Siphon, in dem der Einsatz von SIP in professionellenAnwendungsbereichen evaluiert wird, und anderseits das Projekt Siptel, in dem <strong>ein</strong> eigensentwickelter SIP-Protokollstack in <strong>ein</strong> Telefon integriert werden soll. Dabei ist der SIP-Proxyentstanden.2 Eine Zone bezeichnet <strong>ein</strong> Teilnetz, das von <strong>ein</strong>em Gatekeeper verwaltet wird.3 Die Mbus-Kommandos der H.323-Call-Control sind im Internet Draft draft-ietf-mmusic-mbus-call-control-01 [40] definiert.


44 Kapitel 3. Anforderungen und ZieleDas Projekt 6WINIT erforscht in Zusammenarbeit mit europäischen Telekommunikationsbetreibern,Geräteherstellern, Forschungs<strong>ein</strong>richtungen und Krankenhäusern neue Einsatzmöglichkeitenfür IPv6 in drahtlosen Netzen. Ziel des Projektes ist es, im Vorfeld der Markt<strong>ein</strong>führungder Mobilfunknetze der dritten Generation neue Lösungen für den Einsatz vonInternet-Technologien zu entwickeln und zu demonstrieren.3.2. ZielfindungIm folgenden Abschnitt sollen anhand von strukturierten Analysen der Ist-Situation diegenaue Funktionsweise und nötigen Fähigkeiten für die zu entwickelnde Komponente erarbeitetwerden. Desweiteren sollen verwendete Konzepte und Techniken in Multimedia-Konferenzen betrachtet sowie Überlegungen zur Skalierbarkeit angestellt werden, die zurder <strong>Entwicklung</strong> der <strong>Architektur</strong> beitragen.Um bestimmte Begrifflichkeiten in den folgenden Ausführungen wohldefiniert <strong>ein</strong>setzen zukönnen, werden an dieser Stelle die Interpretationen des Autors <strong>ein</strong>geführt.Eine Kommunikationsbeziehung ist <strong>ein</strong>e abstrakte Bezeichnung für jede Art von Informationsaustausch,der <strong>ein</strong>em fest definierten Ablauf folgt. Dabei sind nicht nur SprachoderBilddaten inbegriffen sondern auch beliebige andere Daten. Die ausgetauschtenInformationsflüsse werden als Medienströme bezeichnet.Ein Endpunkt umschreibt <strong>ein</strong>e Hardware- oder Software-Komponente, die als Quelle vonMedienströmen für Kommunikationen <strong>ein</strong>gesetzt wird. Beispiel für <strong>ein</strong>en Endpunktist <strong>ein</strong> Telefon.Eine Konferenz beschreibt <strong>ein</strong>e Kommunikation zwischen mehreren Personen. Eine Kommunikationmit genau zwei Personen (Zwei-Punkt-Kommunikation) ist der <strong>ein</strong>fachsteFall <strong><strong>ein</strong>er</strong> Konferenz.Eine Multimedia-Konferenz bezeichnet <strong>ein</strong>e Konferenz, in der mehrere Medienströmeverschiedener Art zwischen den Teilnehmern ausgetauscht werden.Ein Media-Prozessor bezeichnet die in dieser Arbeit zu entwickelnde Komponente. Dabeihandelt es sich um <strong>ein</strong>e Anwendung, die in Konferenzen integriert wird und dortAufgaben übernimmt, die die <strong>ein</strong>es <strong>ein</strong>fachen Endpunktes übersteigen. Diese Komponentegehört zu <strong><strong>ein</strong>er</strong> Gruppe von Systemen, die als Zwischen-Systeme (Middleboxes)bezeichnet werden. Durch <strong>ein</strong>en modularen Aufbau soll der Media-Prozessor auch inEndpunkte integrierbar s<strong>ein</strong>.Ziel dieser Arbeit soll die <strong>Entwicklung</strong> <strong><strong>ein</strong>er</strong> <strong>Architektur</strong> für <strong>ein</strong>en Media-Prozessor s<strong>ein</strong>.Dafür wird im folgenden <strong>ein</strong>e Bestandsaufnahme durchgeführt, die vorhandene Problem<strong>ein</strong> Multimedia-Konferenzen aufzeigen soll. Desweiteren werden die Zielanwendungenbetrachtet, d.h. in welchen Arten von Konferenzen kann mittels zusätzlicher Komponenten,wie <strong>ein</strong>em Media-Prozessor, <strong>ein</strong>e Problemlösung herbeigeführt werden. Abschließendwird aus diesen Betrachtungen <strong>ein</strong>e Definition der geforderten Funktionen <strong>ein</strong>es Media-Prozessors abgeleitet.


3.2. Zielfindung 453.2.1. BestandsaufnahmeIn der IP-Telefonie sowie in Mbone-Konferenzen sind Fähigkeiten zum Transport und zurVerarbeitung von Medienströmen notwendig. Diese Bereiche bilden den Schwerpunkt dieserDiplomarbeit. Durch die heterogene Struktur des Internet ist die Komplexität dieserAufgabe nicht zu vernachlässigen. Unterschiedliche Protokolle in der Vermittlungschichtlassen den Transport von Daten über die Grenzen <strong>ein</strong>es Netzes unter Umständen nur mittelsGateways zu. Diese Komponenten können verschiedene Protokolle der Vermittlungsschichtin<strong>ein</strong>ander umsetzen. Zur Zeit wird diese Fähigkeit auf Grund der schrittweisenEinführung von IPv6 interessant. Da diese Umstellung mehrere Jahre dauern wird, sindGateways notwendig, die in Konferenzen für <strong>ein</strong>e Überbrückung der verschiedenen Vermittlungsschichtsprotokollesorgen.Eine weitere Schwierigkeit beim Transport von Medienströmen liegt in der grundlegendenTechnik der paketvermittelten Netze. In herkömmlichen Telefonnetzen (leitungsvermittelt)ist <strong>ein</strong> festgelegter Weg zwischen den Gesprächsteilnehmern für die Dauer des Telefonatsreserviert. Die komplette Kapazität des Kanals steht ausschließlich für <strong>ein</strong> <strong>ein</strong>zelnes Gesprächzur Verfügung. Auftretende Pausen führen allerdings zu <strong><strong>ein</strong>er</strong> geringen Auslastung,da der Kanal nicht anderweitig <strong>ein</strong>gesetzt werden kann. In paketvermittelten Netzen sindReservierungen dieser Art nicht möglich. Jedes <strong>ein</strong>zelne Paket kann <strong>ein</strong>en anderen Wegzum Ziel nehmen, da die Router ihre Informationen über die <strong>ein</strong>zelnen Streckenabschnitteständig aktualisieren. Pakete können unterwegs verloren gehen, zerstört werden oderlänger für den Weg benötigen als andere Pakete. Solche Verluste sind bei Medienströmennur in Grenzen akzeptabel. Eine zu hohe Fehlerrate führt z.B. bei Audio-Informationenzur Unverständlichkeit. Mittels RTP und speziellen Payloads (siehe Anhang A) können solcheProbleme erheblich gemildert werden. Mittels der Sequenz-Nummern von RTP könnendie korrekte Reihenfolge sowie Verluste bei den Paketen erkannt werden. Die speziellenRTP-Payloads fügen Informationen zu den Mediendaten hinzu, welche bei Bedarf zur Rekonstruktionvon verlorengegangenen oder defekten Daten verwendet werden können.Viele Privatanwender verbinden sich durch das herkömmliche Telefonnetz über <strong>ein</strong>en ISP(Internet Service Provider) mit dem Internet. Diese Anbindungen stellen gegenüber denKernstrecken des Internet <strong>ein</strong>e sehr geringe Kapazität zur Verfügung. Auch Firmennetzesind teilweise nur über schmalbandige Standleitungen mit dem Internet verbunden. Die inMedienströmen transportierten Daten, wie Audio- oder Video-Informationen, benötigen jenach Kodierungsverfahren <strong>ein</strong>e bestimmte Bandbreite. Diese liegt bei nicht wenigen Kodierungverfahrenüber den Bandbreiten der Anbindungen von Privatanwendern. Beispielsweisekann <strong>ein</strong> Nutzer mit <strong><strong>ein</strong>er</strong> Modemanbindung bei <strong><strong>ein</strong>er</strong> maximalen Übertragungsrate von56 kBit/s k<strong>ein</strong>en Audiostrom empfangen, der mit PCM-A-Law kodiert ist, da dieser <strong>ein</strong>e Datenrate60 kBit/s erzeugt. Dadurch kann <strong>ein</strong>e Teilnahme an <strong><strong>ein</strong>er</strong> Konferenz an fehlenderBandbreite scheitern. Um solche Nutzer in Konferenzen zu integrieren, müssen auf demWeg zum Teilnehmer Kodierungsverfahren mit geringerer Bandbreite <strong>ein</strong>gesetzt werden.In Multimedia-Konferenzen gibt es zusätzlich die Möglichkeit, aus der Menge der gesendetenMedienströme nur <strong>ein</strong>en Bruchteil auszuwählen, der an diese Teilnehmer weitergeleitetwird. Beispielsweise wird nur der Audiostrom empfangen, und der Videostrom wird nichtan diesen Teilnehmer versendet.Mbone-Konferenzen setzen die Funktion der Gruppenadressierung (Multicast) voraus. DieseFähigkeit des Internet-Protokolls hängt von den <strong>ein</strong>gesetzten Routern ab. Ihre Aufgabeist das Erkennen der speziell adressierten Pakete sowie die entsprechende Weiterleitung.In weiten Teilen des Internet sind solche Router nicht vorhanden, wodurch Mbone-Konferenzen in ihrem Anwendungsbereich <strong>ein</strong>geschränkt sind. Beispielsweise bieten viele


46 Kapitel 3. Anforderungen und ZieleISPs in Deutschland k<strong>ein</strong> Multicast an. Dadurch können Heimanwender nicht an solchenKonferenzen teilnehmen. Um Endpunkte aus Netzen zu integrieren, die k<strong>ein</strong> Multicast unterstützen,kann wie in Abbildung 3.2 veranschaulicht <strong>ein</strong> Gateway verwendet werden, dasals Vermittler fungiert. Das Gateway empfängt dabei die Medienströme der Konferenz perMulticast und sendet sie unverändert per Unicast an die externen Teilnehmer. Deren Medienströmewiederum werden durch das Gateway an die Konferenz weitergeleitet. Dabeibleibt das Gateway für die Konferenzteilnehmer unsichtbar.MBoneausschließlichUnicastMulticast / UnicastGatewayAbbildung 3.2.: Verbindung zu <strong><strong>ein</strong>er</strong> Multicast-KonferenzIn der IP-Telefonie ist ebenfalls zwischen Zwei- und Mehr-Punkt-Beziehungen zu unterscheiden.In Zwei-Punkt-Beziehungen sind unterschiedliche Protokolle in der Vermittlungsschichtund unterschiedliche Kapazitäten der Anbindungen die Hauptprobleme. ZusätzlicheProbleme treten bei den Mehrpunkt-Beziehungen auf. Konferenzen in der IP-Telefonie basierenim Normalfall nicht auf Multicast, d.h. die Medienströme werden nicht an die Gruppeadressiert, sondern an die <strong>ein</strong>zelnen Teilnehmer. Um die Verteilung der Medienströme zuorganisieren, existieren mehrere Möglichkeiten, die alle auf der Bündelung von Medienströmenbasieren. Jedem Teilnehmer wird <strong>ein</strong> <strong>ein</strong>ziger Medienstrom zugeschickt, der aus<strong><strong>ein</strong>er</strong> Kombination aller Medienströme außer s<strong>ein</strong>en eigenen besteht.Die Bündelung der Daten muß entsprechend ihrer Art vorgenommen werden. DekodierteAudio-Informationen können durch <strong>ein</strong>e simple Addition gemischt werden, so daß die Datenaller Medienströme in <strong>ein</strong>em <strong>ein</strong>zelnen integriert sind. Praktisch bedeutet dies, daß dieStimmen der <strong>ein</strong>zelnen Teilnehmer in dem resultierenden Medienstrom enthalten sind. Diese<strong>ein</strong>fache Methode kann bei Video-Informationen nicht angewendet werden. Anhand derArt <strong><strong>ein</strong>er</strong> Konferenz muß <strong>ein</strong>e entsprechende Alternative ausgewählt werden. Bei Konferenzen,in denen der Sprecher gar nicht oder nur selten wechselt, kann der gebündelte Medienstrombeispielsweise nur aus den Videodaten des Sprechers bestehen. Bei offenen Diskussionsrunden,bei denen der Sprecher beliebig wechselt, ist diese Vorgehensweise nichtpraktikabel, da das resultierende Video nur aus unerkennbaren Bildern bestehen würde.Alternativ könnten in diesem Fall die Video-Bilder der <strong>ein</strong>zelnen Sprecher in <strong>ein</strong>em resultierendenVideo verkl<strong><strong>ein</strong>er</strong>t und neben<strong>ein</strong>ander gesetzt werden, wobei diese Technik nurbei <strong><strong>ein</strong>er</strong> geringen Anzahl von Sprechern funktioniert. Diese Betrachtungen zeigen, daß fürVideo-Informationen k<strong>ein</strong>e <strong>ein</strong>heitliche Technik zur Bündelung existiert.Alle Typen von Mediendaten werden in der IP-Telefonie mittels RTP transportiert. Da bei derBündelung der Mediendaten die RTP-Ströme verändert werden, müssen die RTCP-Datenentsprechend angepaßt werden. Wie die Informationen anzupassen sind, kann den Definitionendes RTP-Translators und RTP-Mixers entnommen werden (siehe Abschnitt 2.2.4).Aus den beschriebenen Situationen lassen sich Aufgaben bezüglich des Transportes und


3.2. Zielfindung 47der Verarbeitung von Medienströmen extrahieren. Diese lassen sich anhand von <strong>ein</strong>fachenBeispielen verdeutlichen.Die zu transportierenden Medienströme werden bei Bedarf mittels geeigneter Kodierungsverfahrenkomprimiert, um die benötigte Bandbreite zu reduzieren. Nicht alle Endpunktekönnen jedes Kodierungsverfahren beherrschen und nicht jede Anbindung bietet genugBandbreite für jeden Medienstrom. Um dieses Problem zu lösen, müssen die verwendetenKodierungsverfahren für <strong>ein</strong>zelne Teilnehmer angepaßt werden (Transcoding), wie esschematisch in Abbildung 3.3 angedeutet ist.Media−ProzessorAbbildung 3.3.: Übersetzung zwischen verschiedenen KodierungsverfahrenIn jeder Kommunikationsbeziehung kann es von Interesse s<strong>ein</strong>, Teilnehmer aus verschiedenenNetzen mit<strong>ein</strong>ander zu verbinden. Zur Realisierung wird <strong>ein</strong>e Instanz benötigt, die dieverschiedenen Vermittlungsschichten versteht und diese in<strong>ein</strong>ander umsetzen kann. Abbildung3.4 zeigt <strong>ein</strong>e schematische Darstellung <strong><strong>ein</strong>er</strong> Verbindung von drahtgebundenen unddrahtlosen sowie Teilnehmern aus dem herkömmlichen Telefonnetz.ISDNPSTNGSMMedia−ProzessorAbbildung 3.4.: Vermittlung zwischen verschiedenen NetzenAus der zuvor beschriebenen Konstellation läßt sich <strong>ein</strong>e weitere Fähigkeit ableiten. Die Instanz,die zwischen verschiedenen Netzen vermittelt, fungiert als zentrale Einheit der Konferenz,d.h. die Medienströme aller Teilnehmer werden an sie geschickt. Da viele Endpunktenicht parallel mehrere Medienströme verarbeiten können, müssen die Medienströme, wi<strong>ein</strong> Abbildung 3.5 veranschaulicht, gebündelt werden.Medienstrom CMedienstrom A+BMedienstrom AMedienstrom B+CMedienstrom A+CMedienstrom BMedia−ProzessorAbbildung 3.5.: Bündelung von Medienströmen


48 Kapitel 3. Anforderungen und ZieleEine weitere Funktionalität liegt in der Überwachung von Medienströmen und der Erkennungsowie Erzeugung von vordefinierten Mustern. Ein Beispiel hierfür ist DTMF. Diese speziellenTöne sind in den Audio-Informationen enthalten und müssen durch <strong>ein</strong>e Art Filteranhand <strong><strong>ein</strong>er</strong> genauen Definition des Musters erkannt werden, wenn sie von <strong><strong>ein</strong>er</strong> Anwendungverarbeitet werden sollen. RTP bietet die Möglichkeit, DTMF und andere Signale ausTelefonie mit <strong>ein</strong>em eigens dafür definierten RTP-Payload (RFC 2833 [53]) zu verschicken.Enthalten sind darin k<strong>ein</strong>e Audio-Informationen, sondern <strong>ein</strong>e exakte Beschreibung desgesendeten Tons. Diese Technik erleichtert die Erkennung sowie Erzeugung der Töne.Eine Anwendung, die diese Funktionalitäten alle benötigt, ist <strong>ein</strong>e Konferenz-Zentrale. Eingesetztwerden diese in der IP-Telefonie und in Mbone-Konferenzen. Die vorangegangenBetrachtungen beschreiben Aufgabenfelder, die von <strong>ein</strong>em Media-Prozessor abgedeckt werdenmüssen. Dabei zeigt sich, daß <strong>ein</strong> Media-Prozessor sowohl in Mbone-Konferenzen alsauch in der IP-Telefonie Anwendung finden kann und somit auch Ziel dieser Arbeit ist.3.2.2. Anwendungsszenarien von Media-ProzessorenDie beschriebenen Situationen beschreiben Hindernisse, die zum Scheitern bei der Instantiierung<strong><strong>ein</strong>er</strong> Konferenz führen können. Ein weiterer Parameter, der bei Konferenzen inpaketvermittelten Netzen von Wichtigkeit ist, ist mit der Anzahl der Teilnehmer verbunden.Media-Prozessoren können nicht in allen Konferenzen <strong>ein</strong>gesetzt werden. Im folgendenwerden Konferenzen verschiedener Größe betrachtet und geprüft, ob der Einsatz <strong>ein</strong>esMedia-Prozessors möglich ist.In kl<strong>ein</strong>en Konferenzen mit ungefähr <strong>ein</strong>em Dutzend Teilnehmern kann in der Regel ohne<strong>ein</strong>en Media-Prozessor gearbeitet werden. Eine Einigung auf <strong>ein</strong> gem<strong>ein</strong>sames Kodierungsverfahrenfür die Medienströme ist bei solchen Gruppen realisierbar. Auf Multicast kann insolchen Fällen verzichtet werden, da auch bei Unicast-Verbindungen k<strong>ein</strong>e enorm hohe Kapazitätder Anbindungen benötigt wird. Dabei kann auch <strong>ein</strong> Kodierungsverfahren gewähltwerden, welches <strong>ein</strong>e geringere Bandbreite benötigt. Unabhängig von den Adressierungsarten,müssen die Endpunkte in diesen Konferenzen selbst in der Lage s<strong>ein</strong>, Medienströme zumixen oder es wird jeweils nur <strong>ein</strong> ausgewählter Medienstrom empfangen. In diesen Fällenist die Fähigkeit des Media-Prozessors, sich in verschiedene Umgebungen zu integrieren,hilfreich.Der Einsatz von Media-Prozessoren in Konferenz-Zentralen von sehr großen Konferenzenmit mehreren tausend Teilnehmern ist in der Praxis nicht realisierbar. Multicast-Adressierungist in diesem Fall dringend erforderlich, da sonst <strong>ein</strong> zu großes Datenaufkommenentsteht, welches selbst die Kernstrecken des Internet überlasten kann. Nutzer <strong><strong>ein</strong>er</strong> Modemanbindungwären dabei definitiv ausgeschlossen. Um solche Teilnehmer in große Konferenzenzu integrieren, kann dennoch <strong>ein</strong> Media-Prozessor verwendet werden. Hierbeisymbolisiert der Media-Prozessor <strong>ein</strong>en unter vielen Teilnehmern und ist nicht der zentralePunkt für alle Medienströme in der Konferenz. Diese Technik kann angewendet werden, umNutzer mit schmalbandigen Anbindungen oder in Netzen ohne Multicast oder mit anderenProtokollen in der Vermittlungsschicht zu integrieren, wie in Abbildung 3.6 dargestellt.Das wichtigste Anwendungsgebiet für <strong>ein</strong>en Media-Prozessor sind jedoch die mittelgroßenKonferenzen mit <strong>ein</strong>igen Dutzend Teilnehmern. Hier werden alle Funktionen <strong>ein</strong>es Media-Prozessors benötigt. Zu finden sind solche Konferenzen im Mbone und in der IP-Telefonie.In der IP-Telefonie ist der Einsatz <strong>ein</strong>es Media-Prozessors als Konferenz-Zentrale die häufigsteAnwendung. Die Initialisierung des Media-Prozessors wird durch <strong>ein</strong>e Verwaltungs-


3.2. Zielfindung 49MboneIPv6geringe BandbreiteUnicastMedia−ProzessorAbbildung 3.6.: Anbindung von Teilgruppen in große Konferenzeninstanz der verwendeten Konferenzumgebung, beispielsweise <strong>ein</strong>en SIP-Proxy oder <strong>ein</strong>enH.323-Gatekeeper, vorgenommen. Wird <strong>ein</strong> Media-Prozessor beispielsweise durch <strong>ein</strong>enH.323-Gatekeeper gesteuert, so benötigt dieser Rückmeldungen über die laufende Kommunikation.Bricht der Medienstrom <strong>ein</strong>es Teilnehmers unerwartet ab, so kann der H.323-Gatekeeper anhand dieser Information s<strong>ein</strong>en Status über die Konferenz aktualisieren unddiese eventuell beenden. Ist der Media-Prozessor in der Lage, mehrere Konferenzen parallelzu verwalten, kann der H.323-Gatekeeper die Möglichkeit bieten, <strong>ein</strong>zelne Teilnehmeraus <strong><strong>ein</strong>er</strong> Konferenz in <strong>ein</strong>e andere zu verschieben.Mbone-Konferenzen, die <strong>ein</strong>en oder mehrere Media-Prozessoren <strong>ein</strong>setzen, bieten k<strong>ein</strong>eMöglichkeit <strong><strong>ein</strong>er</strong> automatischen Konfiguration durch <strong>ein</strong>e Verwaltungsinstanz. Somit müssendie Media-Prozessoren manuell an die vorliegende Situation angepaßt werden. Die jeweiligenTeilnehmer, die die Funktionalität des Media-Prozessors brauchen, integrieren diesenin die Konferenz und konfigurieren <strong>ein</strong>e entsprechende Weiterleitung an ihre Endpunkte.Diese statische Art der Konfiguration des Media-Prozessors ist für Mbone-Konferenzenausreichend.3.2.3. Funktionalität von Media-ProzessorenDie vorangegangenen Überlegungen haben gezeigt, daß der Transport von Medienströmenin paketvermittelten Netzen <strong>ein</strong>e komplexe Aufgabe ist. Aus den beschriebenen Ansätzenlassen sich Funktionen ableiten, die von <strong>ein</strong>em Media-Prozessor zur Verfügung gestellt werdenmüssen:• Empfangen, Senden und Weiterleiten von MediendatenEin Media-Prozessor muß Medienströme von verschiedenartigen Quellen empfangenund an sie senden können. Im Regelfall sind die Quellen der Medienströme nichtauf dem lokalen Rechner, so daß <strong>ein</strong> Media-Prozessor auf jeden Fall RTP-Quellenunterstützen muß. Zusätzlich können lokale Geräte wie Soundkarte, Mikrofon undKopfhörer <strong>ein</strong>gesetzt werden. Zur Integration von Teilnehmern aus dem Telefonnetzist auch die Verwendung <strong>ein</strong>es ISDN-Anschlusses als Quelle <strong>ein</strong>e Möglichkeit.


50 Kapitel 3. Anforderungen und Ziele• Übersetzen zwischen verschiedenen VermittlungsschichtprotokollenEin großer Bereich des Internet ist durch IPv4 erreichbar. Doch besonders der langsambeginnende Einsatz von IPv6 macht es nötig, daß <strong>ein</strong> Media-Prozessor die Fähigkeitbesitzt, zwischen verschiedenen Protokollen der Vermittlungsschicht zu übersetzen.Ebenso gehören zu diesem Bereich Anbindungen an das Telefonnetz.• Ändern von Kodierungsverfahren (Transcoding)Um Endpunkte in Konferenzen zu integrieren, die aufgrund der verwendeten Kodierungsverfahrender Medienströme nicht teilnehmen können, muß <strong>ein</strong> Media-Prozessordie Fähigkeit haben, Kodierungen umzuwandeln.• Mischen von mehreren MedienströmenAls Konferenz-Zentrale muß der Media-Prozessor die ankommenden Medienströmefür jeden Teilnehmer individuell mischen. Da die <strong>ein</strong>zelnen Ströme nicht synchronsind, muß der Media-Prozessor <strong>ein</strong>e Synchronisation vornehmen. Sollten in der Konferenzunterschiedliche Medientypen transportiert werden, z.B. pro Teilnehmer <strong>ein</strong>Video- und <strong>ein</strong> Audiostrom, dann muß zusätzlich auf <strong>ein</strong>e Synchronisation zwischenden resultierenden Audio- und Video-Informationen geachtet werden.Ein Media-Prozessor soll in verschiedenen Konferenzumgebungen <strong>ein</strong>gesetzt werden. Umsich gut in die jeweilige Umgebung zu integrieren, ist <strong>ein</strong>e angepaßte Schnittstelle zurSteuerung von Vorteil. Während in Mbone-Konferenzen <strong>ein</strong>e <strong>ein</strong>fache statische Konfigurationausreicht, ist in der IP-Telefonie <strong>ein</strong>e dynamische interaktive Steuerung passender. Auchin den definierten Funktionen ist Anpassungsfähigkeit erforderlich. Um dies zu erfüllen,muß <strong>ein</strong> Media-Prozessor folgende Eigenschaften aufweisen:• ParallelitätEin Media-Prozessor muß fähig s<strong>ein</strong>, mehrere Konferenzen zur gleichen Zeit zu verwalten.Jeder <strong>ein</strong>zelne Endpunkt sowie jede Konferenz muß <strong>ein</strong>zeln konfigurierbars<strong>ein</strong>.• ModularitätUm die Fähigkeiten des Media-Prozessors ausbauen zu können, sollen Kodierungsverfahren,Protokolle für die Vermittlungsschicht und Filter als Module zur Verfügunggestellt werden. Die Wahl der zu verwendenden Module soll durch die externeSteuer<strong>ein</strong>heit be<strong>ein</strong>flußbar s<strong>ein</strong>.• Externe Steuer<strong>ein</strong>heitDie Verwaltung von Konferenzen sowie benötigten Ressourcen sind die Aufgaben desMedia-Prozessors. Die Steuerung sowie Instantiierung von Konferenzen wird durch<strong>ein</strong>e externe Einheit übernommen. Um <strong>ein</strong>e möglichst gute Anpassung zu ermöglichen,soll <strong>ein</strong> Media-Prozessor mehrere Benutzungsschnittstellen bieten.Aus diesen Eigenschaften und Funktionen soll in dieser Arbeit <strong>ein</strong>e <strong>Architektur</strong> für <strong>ein</strong>enMedia-Prozessor entwickelt werden, die anhand <strong><strong>ein</strong>er</strong> exemplarischen Implementierunggetestet wird.3.3. Verwandte ArbeitenIn den Bereichen Medien-Transport und -Verarbeitung sowie Kommunikation über verschiedeneVermittlungsschichtprotokolle existieren <strong>ein</strong>ige Software-Produkte, die für die Ent-


3.3. Verwandte Arbeiten 51wicklung des Media-Prozessors wertvolle Informationen bieten. Bei der anschließendenBeschreibung der Produkte wird besonders auf die folgenden Aufgaben geachtet:• Techniken zum Transport von Medienströmen in paketvermittelten Netzen.• Bearbeitung von Medienströmen, wie z.B. Änderung des Kodierungsverfahren undMischen von mehreren Medienströmen (Synchronisation).• Netzunabhängige Datenübertragung und Berücksichtigung der Konvertierung zwischenden Protokollen der Vermittlungsschicht in verschiedenen Netzen.• Kopplung von IP-Telefonie-Systemen auf der gem<strong>ein</strong>samen Basis des Transportes derMedienströme mit RTP.Zu jedem dieser Gebiete gibt es Beispiele, die als freie Software 4 veröffentlicht sind und dadurchzur Analyse verwendet werden können. Da Dokumentationen zur internen Arbeitsweisesowie zur <strong>Architektur</strong> der Software nur selten vorhanden ist, dient der Quellcode alsErsatz. In den folgenden Abschnitten werden <strong>ein</strong>ige ausgewählte Software-Produkte kurzvorgestellt und auf ihre besonderen Fähigkeiten bezüglich der zuvor aufgezählten Aufgabenhin untersucht.3.3.1. Robust Audio Tool – RATAufgabe des Projektes RAT [57] war die <strong>Entwicklung</strong> <strong>ein</strong>es Endpunkts für Mbone-Konferenzen.Wichtigstes Merkmal des Endpunktes ist der Einsatz von Techniken für <strong>ein</strong>en verlustunempfindlichenTransport von Audio-Informationen in paketvermittelten Netzen auf Basisvon IP. Zur Realisierung werden Redundanz-Informationen in die Audio-Informationenintegriert, die beim Empfänger zur Rekonstruktion verlorener oder defekter RTP-Pakete genutztwerden können.Weiter bietet RAT <strong>ein</strong>e große Auswahl an Kodierungsverfahren für die Audioströme bei unterschiedlichenAbtastraten. Die Umsetzung der Kodierungsverfahren funktioniert bei RATin zwei Stufen. Im ersten Schritt werden die empfangenen Mediendaten dekodiert, d.h. siewerden in <strong>ein</strong>e Sequenz von Samples bei gleichbleibender Abtastrate umgewandelt (roheAudiodaten). Diese können in <strong>ein</strong>em zweiten Schritt in das gewünschte Kodierungsverfahrenumgesetzt werden.Im Bereich der Verschlüsselung bietet RAT die vier Betriebsarten aus DES (Data EncryptionStandard [50]) an. Dadurch ist es möglich, private Konferenzen über das Internet zu führen.Um Konferenzen auf diese Art zu verschlüsseln, muß zuvor der Schlüssel ausgetauschtwerden.RAT besteht aus <strong>ein</strong>em GUI-Modul und der Audio-Engine. Die Audio-Engine enthält <strong>ein</strong>eRTP/RTCP-Implementierung sowie <strong>ein</strong>e eigene Socket-Schnittstelle für die Kommunikationüber UDP. Als Protokolle für die Vermittlungsschicht werden IPv4 und IPv6 unterstützt. BeideKomponenten stammen aus der UCL 5 common multimedia Bibliothek (siehe Abschnitt3.3.2). Desweiteren enthält die Audio-Engine <strong>ein</strong> Transcoding-Modul und <strong>ein</strong>e Verwaltungfür RTP-Sessions. Das GUI-Modul bietet dem Benutzer die Möglichkeit, Konferenzen zu instantiieren,Einstellungen vorzunehmen und Zustandsinformationen von der Audio-Engine4 Der Begriff „freie Software“ bezeichnet hier Produkte, die unter der GPL/LGPL oder ähnlicher Lizenz, bei derder Programmcode frei verfügbar ist, veröffentlicht wurden.5 University College London


52 Kapitel 3. Anforderungen und Zielezu empfangen. Die Kommunikation der beiden Module erfolgt über den Mbus (MessageBus, Draft draft-ietf-mmusic-mbus-transport-05 [41]).Das Projekt RAT hat <strong>ein</strong>e langjährige Erfahrung im Bereich der Mbone-Konferenzen. Fürdie Diplomarbeit kann aus dem Projekt Wissen über Transcoding und die Steuerung vonKonferenzen gewonnen werden. Auch die modulare Implementierung bietet Ansätze, dieim Media-Prozessor weiterverwendet werden können.3.3.2. Die UCL commonlibDie „UCL common multimedia“ Bibliothek (commonlib) umfaßt <strong>ein</strong>e Sammlung von Algorithmenund Protokoll-Implementierungen, die in <strong><strong>ein</strong>er</strong> Reihe von Multimedia-Anwendungendes UCL verwendet werden (z.B. RAT). Für diese Arbeit sind besonders die RTPunddie Socket-Implementierung mit der Unterstützung für IPv4 und IPv6 von Interesse.Die Socket-Implementierung ist der BSD-Socket-Schnittstelle nachempfunden und bietetalle bekannten Funktionsaufrufe mit leicht abgewandelten Namen. Da diese Socket-Schnittstellenur für die RTP-Kommunikation über IP ausgelegt ist, wurde das Transportprotokollauf UDP beschränkt. Aufschlußreich ist das Verfahren zur Ermittlung des richtigen Protokollsfür die Vermittlungsschicht. Bei der Instantiierung <strong>ein</strong>es Socket wird intern anhandder Netzadresse das zu verwendende Protokoll für die Vermittlungsschicht ermittelt. DieWahl des Protokolls kann der Nutzer nur mit der Angabe <strong><strong>ein</strong>er</strong> entsprechenden IP-Adresseoder <strong>ein</strong>em vollständigen Rechnernamen (Fully Qualified Domain Name) be<strong>ein</strong>flussen.Die RTP/RTCP-Implementierung orientiert sich an den aktuellen Internet Drafts zu RTP undbietet somit <strong>ein</strong>e gute Vorlage für <strong>ein</strong>e eigene Implementierung. 6 Zum Testen der eigenenImplementierung kann sie ebenfalls <strong>ein</strong>gesetzt werden.Zur Kommunikation mit der Anwendung bietet die Bibliothek <strong>ein</strong>en Callback-Mechanismus.Die Anwendung kann bei der Initialisierung für vordefinierte Ereignisse Funktionen festlegen,die bei Eintreten der Ereignisse von der Bibliothek angesprungen werden. Als Argumentwird diesen Funktionen <strong>ein</strong>e Struktur übergeben, die <strong>ein</strong>e genaue Beschreibung desEreignisses enthält, z.B. empfangene RTP- oder RTCP-Daten.Anwendungen, die auf <strong><strong>ein</strong>er</strong> Mainloop (<strong><strong>ein</strong>er</strong> Endlos-Schleife, die Ereignis-orientiert arbeitet)basieren, können diese Bibliothek ohne Verwendung von Threads integrieren. Dies istdurch <strong>ein</strong>e Schnittstelle möglich, die <strong>ein</strong>e Einbindung in <strong>ein</strong>e Mainloop der Anwendungmöglich macht.3.3.3. UCL Transcoding Gateway – UTGDas UCL Transcoding Gateway (UTG) hat die Aufgabe, für Benutzer von ISDN und anderenschmalbandigen Punkt-zu-Punkt Verbindungen die Möglichkeit der Anbindungen anMbone-Konferenzen zur Verfügung zu stellen.Die Aufgaben bei der Anbindung sind die Berücksichtigung der geringen Bandbreite vonISDN und die zusätzlichen Steuer-Informationen. Die benötigte Kapazität für viele Mbone-Konferenzen liegt über der <strong>ein</strong>es ISDN B-Kanals (häufig werden 128kb/s für Video und64kb/s für Audio verwendet). Aus diesem Grund ist <strong>ein</strong>e Aufgabe des UTG-Systems dieAnpassung der Kodierungsverfahren, so daß <strong>ein</strong> ISDN-Kanal ausreicht. Eine weitere Auf-6 Der Grund für <strong>ein</strong>e eigene RTP-Bibliothek wird im späteren Verlauf noch erläutert.


3.3. Verwandte Arbeiten 53gabe, mit der sich das UTG beschäftigt, ist die Integration von Teilnehmern in Mbone-Konferenzen, deren Netze k<strong>ein</strong>e Multicast-Adressierung unterstützen.Das UTG-System, wie in Abbildung 3.7 dargestellt, besteht aus zwei Anwendungen, <strong>ein</strong>emServer und <strong>ein</strong>em Client. Der Server muß <strong>ein</strong>e Verbindung zum Mbone haben und solltesich im selben Netz wie der Einwahlpunkt des Clients befinden. Der Client wird in demselben Netz gestartet wie der Endpunkt. Dessen Aufgabe ist die Steuerung der Mbone-Tools(<strong>Entwicklung</strong>en des UCL, die für Mbone-Konferenzen <strong>ein</strong>gesetzt werden können) sowie dieKommunikation mit dem Server. Zusätzlich zu den Kanälen für Medienströme existiert <strong>ein</strong>eTCP-Verbindung zwischen Server und Client, die für die Steuerung der Module des Serversgenutzt wird.Mbonegeringe BandbreiteUnicastUTG−ClientRAT, VIC, SDRUTG−ServerAbbildung 3.7.: UTG-Server und UTG-ClientInteressant für diese Arbeit ist das UTG, da es <strong>ein</strong>ige der Fähigkeiten hat, die auch derMedia-Prozessor besitzen soll. Dazu gehören die Verbindungen zwischen Netzen unterschiedlicherFähigkeiten und die Anpassung von Medienströmen entsprechend der Anbindungskapazitätender Teilnehmer.3.3.4. SIP-basierter Audio-Konferenz-Server – sipconfDer SIP Audio Conference Server sipconf [54] wurde von Kundan Singh an der UniversitätColumbia entwickelt. sipconf besitzt die Fähigkeit, zuvor angekündigte Konferenzen zuverwalten. Die dafür notwendige Aufgabe des Mischens von Audio-Informationen ist insipconf integriert.In der Abbildung 3.8 ist schematisch die Funktionsweise des Audio-Mixers dargestellt. Dieempfangenen Audio-Ströme werden in <strong>ein</strong> <strong>ein</strong>faches lineares Kodierungsverfahren umgewandelt.Die zu mischenden Ströme werden über <strong>ein</strong>en eigenen Zeitgeber synchronisiert.Durch die linearen Kodierungsverfahren, können die Ströme nach <strong>ein</strong>em <strong>ein</strong>fachen mathematischenVerfahren, der Addition, gemischt werden. Der entstandene Strom wird in dasbenötigte Kodierungsverfahren umgesetzt und an das Ziel weitergeleitet.Entstanden ist sipconf aus mehreren Gründen. Einerseits verwendet sipconf zur AnrufsignalisierungSIP, weil die ITU-T Alternative H.323 zu komplex und umfangreich ist. Das Modellder Konferenz-Zentrale wurde gewählt, da Multicast noch nicht weit genug verbreitetist und somit im voraus Benutzergruppen ausschließt.Für diese Arbeit interessant ist das Konzept zum Mischen von Audio-Informationen. Diesist interessant für den Einsatz des Media-Prozessors als Konferenz-Zentrale.


54 Kapitel 3. Anforderungen und ZieleG.711 uLinearAbspielverzögerungDADVIDBGSMLinearLinearX=A+B+CX−A=B+CX−CX−BEESende zu <strong>AG</strong>.711 uSende zu BDVICDESende zu CGSMperiodischer ZeitgeberDAudio DecoderEAudio Encoder3.4. ZusammenfassungAbbildung 3.8.: Audio-Mixer von sipconfDieses Kapitel gab anhand <strong><strong>ein</strong>er</strong> Beschreibung der vorhandenen Infrastruktur für IP-Telefonie<strong>ein</strong>e Einführung in den Kontext dieser Arbeit. Die durchgeführte Analysen von praktischenBeispielen aus der IP-Telefonie sowie verschiedenen Mbone-Konferenzen haben zu<strong><strong>ein</strong>er</strong> Definition von Funktionen für den Media-Prozessor und der Notwendigkeit <strong>ein</strong>es modularenSystems geführt. Mit diesen Ergebnissen und den Erkenntnisse aus den verwandtenArbeiten soll <strong>ein</strong>e <strong>Architektur</strong> für <strong>ein</strong>en Media-Prozessor entwickelt werden.


4. <strong>Architektur</strong>Das folgende Kapitel beschreibt die <strong>Architektur</strong> für <strong>ein</strong> modulares System <strong>ein</strong>es Media-Prozessors. Dabei werden verwendete Modelle, Begriffe und Schnittstellen zwischen denModulen und zur Steuerung definiert.4.1. AufbauDiese <strong>Architektur</strong> soll <strong>ein</strong> modulares System für Media-Prozessoren definieren. Die Modularitätwird durch die Teilung der Komponente in <strong>ein</strong>en Kern und <strong>ein</strong>e Modul-Steuerungerreicht, wie es in Abbildung 4.1 veranschaulicht wird. Der Kern verwaltet die Konferenzenund die verwendeten Ressourcen und verfügt über die Grundfunktionen zur Steuerung vonKonferenzen. Zur Erweiterung der Fähigkeiten kann der Kern über die Modul-SteuerungAnfragen nach verfügbaren Modulen stellen. Dabei können vier verschiedene Arten vonModulen angefordert werden. Welche grundlegenden Funktionen der Kern zur Verfügungstellt und welche Modul-Arten es gibt wird im folgenden beschrieben.Kern desMedia−ProzessorsKonferenz−VerwaltungKonferenzKonferenzModul−SteuerungFilter Erweiterung SteuerungTransportAbbildung 4.1.: Aufbau <strong>ein</strong>es Media-ProzessorsFunktionenDie Management-Funktion beschreibt die Fähigkeit <strong>ein</strong>es Media-Prozessors mehrere parallelstattfindende Konferenz zu verwalten. Dafür wird <strong>ein</strong> Modell benötigt, das es ermöglicht,die Elemente <strong><strong>ein</strong>er</strong> Konferenz von anderen zu unterscheiden. Verwendet wird dafür<strong>ein</strong>e Erweiterung des Konferenz-Modells von MEGACO (siehe Abschnitt 2.3.1).Die Vermittlungs-Funktion definiert <strong>ein</strong>e komplexe sowie grundlegende Aufgabe des Media-Prozessors. Dabei sind verschiedene Arten von Netzen zu unterstützen, was sich in unterschiedlichenQuellen und Zielen widerspiegelt. Mögliche Varianten sind:


56 Kapitel 4. <strong>Architektur</strong>• RTP-End-SystemDie Medienströme werden zwischen zwei RTP-Quellen ausgetauscht. Auf der Transportschichtwird beispielsweise UDP verwendet, das auf IP aufsetzt.• Lokale GeräteDie Medienströme werden von <strong>ein</strong>em lokalen Gerät wie <strong><strong>ein</strong>er</strong> Soundkarte gelesenoder auf diese geschrieben. Damit kann der Media-Prozessor beispielsweise in <strong>ein</strong>emIP-Telefonie-Endpunkt <strong>ein</strong>gesetzt werden. Zu dieser Gruppe von Quellen gehört auch<strong>ein</strong> ISDN-Anschluß. 1• DateienDateien können zur Aufzeichnung von Gesprächen oder zum Abspielen von vordefiniertenAnsagen verwendet werden. Diese Funktion ist beispielsweise beim Einsatzals Anrufbeantworter von Nutzen.Die Mixer-Funktion kann aus mehreren Medienströmen <strong>ein</strong>en <strong>ein</strong>zelnen Medienstrom erzeugen,der alle Informationen enthält. 2 Um dies zu realisieren, muß jede im Media-Prozessorverwaltete Konferenz <strong>ein</strong>e zentrale Instanz (Kontext) besitzen, an die alle Medienströmeder Konferenz geleitet werden. In dieser Instanz muß die Mixer-Funktion integriertwerden. Diese Funktion ist für den Media-Prozessor notwendig, wenn er als Konferenz-Zentrale <strong>ein</strong>gesetzt wird.ModuleDie Transport-Module des Media-Prozessors sollen die Vermittlung zwischen verschiedenenNetzen realisieren, d.h. jedes Modul enthält <strong>ein</strong>e Implementierung <strong>ein</strong>es speziellen Protokollsfür die Vermittlungschicht. Da Netze sich in ihren Fähigkeiten unterscheiden können,muß der Media-Prozessor Methoden zur Abbildung dieser Fähigkeiten auf andere Netzebieten. Beispielsweise existiert in IPv6 <strong>ein</strong>e direkte Unterstützung für den Transport vonMedienströmen (Flow Label, siehe Abbildung 2.2).Die Steuer-Module stellen externen Anwendungen <strong>ein</strong>e Schnittstelle zur Verfügung, überdie sie den Media-Prozessor be<strong>ein</strong>flussen können. Da dieser in verschiedensten Konstellationen<strong>ein</strong>gesetzt werden soll, ist die Möglichkeit zur Wahl <strong><strong>ein</strong>er</strong> passenden Schnittstelle<strong>ein</strong>e wichtige Funktion. Beispielsweise kann <strong>ein</strong>e <strong>ein</strong>malige Initialisierung beim Startdes Media-Prozessors ausreichen. Andererseits kann <strong>ein</strong>e bidirektionale Kommunikationmit dem Media-Prozessor erforderlich s<strong>ein</strong>, um z.B. Statusmeldungen zu empfangen oderum <strong>ein</strong>e weitere Konferenz ohne <strong>ein</strong>en Neustart dynamisch zu instantiieren. Ein möglichesSteuer-Modul kann z.B. <strong>ein</strong>e Implementierung des MEGACO-Protokolls enthalten, um <strong>ein</strong>eIntegration in IP-Telefonie-Systeme zu ermöglichen.Die Filter-Module des Media-Prozessors sind zuständig für <strong>ein</strong>e entsprechende Anpassungdes Kodierungsverfahrens <strong>ein</strong>es Medienstroms an die jeweils anderen Teilnehmer. JedesModul kennt genau <strong>ein</strong> Kodierungsverfahren, welches es in verschiedene Varianten <strong><strong>ein</strong>er</strong>linearen Kodierung umwandeln kann. Zusätzlich muß jedes Modul fähig s<strong>ein</strong>, diese Dekodierungumzukehren.1 Dafür muß in dem Rechner <strong>ein</strong>e ISDN-Karte installiert s<strong>ein</strong>.2 Die Qualität der Medienströme muß dabei auf <strong>ein</strong>en gem<strong>ein</strong>samen Nenner gebracht werden, was dazu führenkann, daß die Qualität <strong>ein</strong>zelner Medienströme reduziert wird. Ein gewisser Verlust von Informationenkann dabei nicht ausgeschlossen werden.


4.2. Konferenz-Modell 57Die Erweiterungs-Module bieten spezielle Funktionen, die auf die Basis-Fähigkeiten <strong>ein</strong>esEndpunktes in <strong><strong>ein</strong>er</strong> Konferenz aufgesetzt werden können. Das Senden und Empfangenvon Medienströmen ist die Basis <strong>ein</strong>es Endpunktes. Die Erweiterungs-Module können dieseMedienströme analysieren und manipulieren. Beispielsweise kann es für <strong>ein</strong>en Anrufbeantwortervon Nutzen s<strong>ein</strong>, DTMF in den Medienströmen zu erkennen, um auf diese zureagieren. Solche Informationen können mittels dieser Erweiterungen erkannt und an dieexterne Steuer<strong>ein</strong>heit gemeldet werden. Zusätzlich ist es den Modulen möglich, die zu sendendenDaten zu be<strong>ein</strong>flussen, indem eigene Fragmente integriert werden. Ein Beispiel fürdiese Funktion ist das Erzeugen von DTMF.4.2. Konferenz-ModellIn der Konferenzverwaltung wird <strong>ein</strong> Modell verwendet, daß auf den Grundideen vonMEGACO basiert. Das MEGACO-Konferenz-Modell enthält die beiden Elemente Kontextund Termination. Diese Objekte sowie <strong>ein</strong>ige ihrer Eigenschaften werden für die <strong>Architektur</strong>des Media-Prozessors übernommen. Um die Parallelität von Konferenzen in das Modellzu integrieren wird <strong>ein</strong> weiteres Element, der Konferenz-Controller, definiert. Dieses Objektbietet <strong>ein</strong>e generische Schnittstelle, um jedes Kontext- und jedes Termination-Objektzu be<strong>ein</strong>flussen. Dabei werden die Informationen durch die Hierarchie der Objekte, wie inAbbildung 4.2 dargestellt, durchgereicht.Konferenz−ControllerKontextKontextTerminationTerminationTerminationTerminationAbbildung 4.2.: Informationsfluß im Konferenz-ModellIm folgenden werden die angepaßten Kontext- und Termination-Objekte und der Konferenz-Controllervorgestellt. Einige der beschriebenen Deskriptoren stammen aus MEGACOund sind für den Einsatz im Media-Prozessor modifiziert. Alle nicht beschriebenen Deskriptorenund Eigenschaften aus MEGACO sind für die <strong>Architektur</strong> nicht definiert. Dadas MEGACO-Protokoll als Schnittstelle für den Media-Prozessor <strong>ein</strong>setzbar s<strong>ein</strong> soll, istbei der Anpassung der Deskriptoren für den Aufgabenbereich des Media-Prozessors, daraufgeachtet worden, daß <strong>ein</strong>e Abbildung auf die Definitionen von MEGACO möglich ist.Zu den Beschreibungen der Objekte dieser <strong>Architektur</strong> werden Schnittstellen definiert. Diesebeschreiben <strong>ein</strong>e mögliche Variante der Kommunikationsschnittstelle in <strong><strong>ein</strong>er</strong> Pseudo-Programmiersprache. Die spezifizierten Rückgabewerte, Parameter und Funktionsnamendienen nur der besseren Verständlichkeit und sind nicht verpflichtend. Eine Implementierungdieser <strong>Architektur</strong> muß nur ähnliche Schnittstellen zur Verfügung stellen, die aller-


58 Kapitel 4. <strong>Architektur</strong>dings die exakt gleiche Funktionalität bieten.4.2.1. TerminationDas Termination-Objekt steht stellvertretend für <strong>ein</strong>en Endpunkt in <strong><strong>ein</strong>er</strong> Konferenz. DieseObjekte empfangen bzw. senden Medienströme. Die charakteristischen Eigenschaften vonTermination-Objekten werden mittels Deskriptoren beschrieben. Diese werden in Kommandoszur Änderung bzw. Abfrage <strong>ein</strong>gesetzt.Termination-Objekte können die Medienströme verändern. Unter Verwendung von Filter-Modulen werden z.B. die Kodierungsverfahren verändert oder durch Erweiterungs-Modulekönnen Signale verschickt werden, wenn <strong>ein</strong> bestimmtes Muster in den Medienströmen erkanntwird. Jedes Termination-Objekt kann verschiedene Filter- und Erweiterungs-Moduleauf die empfangenen bzw. zu versendenden Medienströme anwenden.Jedes Termination-Objekt hat <strong>ein</strong>en Bezeichner (TerminationID), der das Objekt innerhalb<strong><strong>ein</strong>er</strong> Instanz des Media-Prozessors <strong>ein</strong>deutig identifiziert. Eine TerminationID besteht aus<strong><strong>ein</strong>er</strong> beliebigen Abfolge von ASCII-Zeichen mit <strong><strong>ein</strong>er</strong> maximalen Länge von 255 Bytes. DerBezeichner kann <strong>ein</strong>e Struktur enthalten, wie z.B. die Art der Termination gefolgt von <strong><strong>ein</strong>er</strong>Nummer.Vordefinierte Bezeichner sind ALL und CHOOSE. Mit ALL werden alle Termination-Objekteund mit CHOOSE <strong>ein</strong> beliebiges <strong><strong>ein</strong>er</strong> Konferenz ausgewählt. Die Wahl trifft der Media-Prozessor entsprechend den verbleibenden Ressourcen.Ein spezielles Termination-Objekt ist durch die Bezeichnung ROOT gekennzeichnet. DiesesObjekt existiert solange wie die zugehörige Instanz des Media-Prozessors. Alle zu erzeugendenTermination-Objekte werden von dem ROOT-Objekt kopiert, d.h. alle zu diesem Objekthinzugefügten Erweiterungs-Module sowie der Modus werden als initiale Werte übernommen.Der Modus <strong>ein</strong>es Termination-Objektes bestimmt das grundsätzliche Verhalten. MöglicheModi sind SendOnly, ReceiveOnly, SendReceive, Inactive und Loopback. Ein Termination-Objekt mit dem Modus SendOnly leitet empfangene Medienströme nicht weiter. Umgekehrtverhält sich <strong>ein</strong> Termination-Objekt im Modus ReceiveOnly. Der Standard-Modus ist Send-Receive. Ist <strong>ein</strong>e Termination im Modus Inactive, so werden Medienströme in beiden Richtungenignoriert. Im Loopback-Modus werden die empfangenen Medienströme innerhalbder selben Termination weitergeleitet. In jedem Modus außer dem Inactive-Modus könnenFilter-Module auf die Medienströme angewendet werden. Dadurch kann der Media-Prozessor mit <strong>ein</strong>em <strong>ein</strong>zelnen Termination-Objekt im Loopback-Modus als Übersetzer vonKodierungsverfahren (Transcoder) <strong>ein</strong>gesetzt werden.Zur Steuerung der Termination-Objekte, d.h. zur Zuweisung und zum Auslesen von Deskriptoren,soll <strong>ein</strong>e Schnittstelle wie die folgende definiert s<strong>ein</strong>. Dabei wird durch denBool’schen Rückgabewert der Erfolg der Funktion ausgedrückt.bool apply ( Descriptor desc )Dieser Funktion kann jeder beliebige für <strong>ein</strong>e Termination definierte Deskriptor übergebenwerden. Dabei werden die im Deskriptor enthalten Eigenschaften von der Terminationübernommen.bool request ( Descriptor &desc )Um die aktuellen Werte von Eigenschaften abzufragen, ist diese Funktion zu verwen-


4.2. Konferenz-Modell 59den. Dabei werden die im übergebenen Objekt enthaltenen Eigenschaften gesetzt,d.h. die zurückgegebenen Informationen hängen vom Typ von desc ab.bool sendData ( TerminationID tid, Pointer data, int length)Die Daten, die das Termination-Objekt versenden soll, werden durch diese Funktionvom zugehörigen Kontext-Objekt übergeben. Die Technik für den Datenaustauschzwischen Termination und Kontext kann in den <strong>ein</strong>zelnen Implementierungen variieren.DeskriptorenDie Eigenschaften <strong><strong>ein</strong>er</strong> Termination werden in Deskriptoren zusammengefaßt. Diese werdenals Parameter sowie als Rückgabewerte von Kommandos <strong>ein</strong>gesetzt. Die <strong>Architektur</strong> desMedia-Prozessors definiert neun Deskriptoren, die auf <strong>ein</strong> Termination-Objekt angewendetwerden können.Der Mode-Deskriptor enthält <strong>ein</strong>en Modus für <strong>ein</strong> Termination-Objekt. Sofort nach demSetzen des neuen Modus (durch die Funktion apply) muß das Termination-Objekt s<strong>ein</strong>Verhalten dementsprechend anpassen.Der Remote-Deskriptor definiert die Art des Medienstroms, den das Termination-Objektempfängt. Es gibt genau zwei Varianten, <strong>ein</strong>en Medienstrom zu beschreiben. Die erste Methodeverwendet <strong>ein</strong>en wohldefinierten RTP-Payload-Typ aus <strong>ein</strong>em RTP-Profil. Diese Methodekann für alle möglichen Medientypen <strong>ein</strong>gesetzt werden, für die <strong>ein</strong> RTP-Profil definiertist. Die zweite Methode erlaubt die Definition von eigenen Formaten von Audio- undVideoströmen. Dabei sollen Frame- sowie Sample-basierte Kodierungsverfahren unterstütztwerden.Der Local-Deskriptor beschreibt den Medienstrom, den das Termination-Objekt versendet.Dabei können genau die selben Methoden zur Beschreibung verwendet werdenwie beim Remote-Deskriptor. Beide Deskriptoren müssen an <strong>ein</strong> neu instantiiertesTermination-Objekt übergeben werden, da k<strong>ein</strong>e Standardwerte definiert sind.Der Address-Deskriptor enthält Beschreibungen von Adressen für Quelle und Ziel <strong>ein</strong>esTermination-Objektes. Unterschieden wird zwischen drei Adreßarten, die in der Tabelle4.1 beschrieben werden.AdreßtypNetworkFileBeschreibungEine Adresse dieses Typs besteht aus zwei Transportadressen.Eine definiert das Ziel und die andere die lokal zu verwendendeAdresse für ankommende Medienströme. Die lokaleTransportadresse ist optional. Ist der lokale Port nichtdefiniert, so wird dieser vom Betriebssystem bestimmt. dielokale Netzadresse wird nur bei Endpunkten benötigt, diemehrere besitzen.Dieser Typ wird <strong>ein</strong>gesetzt, wenn das Termination-Objektdie zu übertragenden Medienströme aus <strong><strong>ein</strong>er</strong> Datei lesenbzw. die empfangenen Medienströme in <strong>ein</strong>e Datei schreibensoll. Der Modus des Termination-Objektes bestimmt,welche der beiden Vorgänge ausgeführt wird. Die Dateienmüssen mit <strong>ein</strong>em <strong>ein</strong>deutigen Pfad angegeben werden.weiter ⊲


60 Kapitel 4. <strong>Architektur</strong>AdreßtypDeviceBeschreibungUm <strong>ein</strong> Termination-Objekt mit <strong>ein</strong>em lokalen Gerät zu verbinden,wird dieser Typ von Adresse <strong>ein</strong>gesetzt. Beispieledafür wären ISDN-Anschlüsse, Mikrofone, Lautsprecheroder Head-Sets. Angegeben werden die Geräte mittels <strong>ein</strong>deutigersystemspezifischer Bezeichner.Tabelle 4.1.: Quell- und Ziel-AdreßtypenDer Filter-Deskriptor aktiviert bzw. deaktiviert den Einsatz <strong>ein</strong>es Filter-Moduls in<strong>ein</strong>em Termination-Objekt. Dafür bietet der Deskriptor die beiden Operationen Add undRemove. Auf welchen Medienstrom das Filter-Modul angewendet werden soll, kann zusätzlichim Deskriptor spezifiziert werden. Bei k<strong><strong>ein</strong>er</strong> Angabe wird das Modul für beide Medienströme<strong>ein</strong>gesetzt. Welches Modul für diese Funktion zu verwenden ist, wird anhandder Definitionen aus dem Remote- und Local-Deskriptor vom Termination-Objektbestimmt. Welche Funktion des Filter-Moduls benutzt wird, hängt von der Richtung derMedienströme ab. Empfangene Medienströme werden dekodiert und zu sendende Datenwerden kodiert. Diese Technik ermöglicht es, mit <strong>ein</strong>em <strong>ein</strong>zigen Termination-Objekt <strong>ein</strong>enTranscoder zu realisieren.Der Package-Deskriptor bietet Erweiterungen der Funktionalität <strong><strong>ein</strong>er</strong> Termination.Der Deskriptor wird verwendet, um Erweiterungs-Module zum Termination-Objekt hinzuzufügenoder zu entfernen. Empfangene und zu sendene Medienströme werden an Erweiterungs-Moduleweitergegeben. Diese können die Medienströme verändern, wobei auchdas Löschen sowie Hinzufügen von Fragmenten möglich ist. Identifiziert werden Erweiterungs-Moduledurch <strong>ein</strong>e <strong>ein</strong>deutige Nummer und <strong>ein</strong>en beschreibenden Namen.Wie bei MEGACO kann <strong>ein</strong> Erweiterungs-Modul (Package)) optionale Definitionen von Ereignissen(Events) und Signalen (Signals) enthalten. Ereignisse werden an die externeSteuer<strong>ein</strong>heit übermittelt, wenn bestimmte Muster im Medienstrom erkannt werden. DieSignale hingegen erzeugen vordefinierte Muster (z.B. DTMF). Diese werden vom Erweiterungs-Modulin den Medienstrom <strong>ein</strong>gefügt.Der Signals-Deskriptor dient zum Aktivieren bzw. Deaktivieren von Signalen. Dabeikann mit <strong>ein</strong>em Deskriptor <strong>ein</strong>e Menge von Signalen be<strong>ein</strong>flußt werden. Zusätzlich zumneuen Status ist bei Signalen <strong><strong>ein</strong>er</strong> der drei Typen aus Tabelle 4.2 festzulegen.Signal-TypOnOffTimeoutBriefBeschreibungDas Signal wird solange gesendet, bis es explizit deaktiviertwird.Das Signal wird gesendet, bis es deaktiviert wird oder <strong>ein</strong>definiertes Zeitintervall abgelaufen ist. Das Intervall wird inMillisekunden angegeben.Das Signal ist durch s<strong>ein</strong>e Definition auf <strong>ein</strong> festes Zeitintervallfestgelegt und beendet sich selbsttätig. Das Intervallwird in Millisekunden festgelegt.Tabelle 4.2.: verschiedene Signal-Typen


4.2. Konferenz-Modell 61Die zu aktivierenden Signale werden in der Reihenfolge ausgeführt, wie sie im Signals-Deskriptor spezifiziert sind. Eine Parallelität in der Ausführung von Signalen ist nicht möglich.Der Events-Deskriptor dient zum Aktivieren bzw. Deaktivieren von Ereignissen. Diedurch <strong>ein</strong> Erweiterungs-Modul transportieren Medienströme werden auf bestimmte Musteruntersucht. Bei der Erkennung <strong>ein</strong>es Musters, wird das zugehörige Ereignis an die externeSteuer<strong>ein</strong>heit gesendet.Mit dem Deskriptor können mehrere Ereignisse in ihrem Status be<strong>ein</strong>flußt werden. Dabeikönnen mehrere Ereignisse zur gleichen Zeit aktiv s<strong>ein</strong>.Der State-Deskriptor ermöglicht das Ändern bzw. Abfragen des Status <strong>ein</strong>es Termination-Objektes.Erlaubte Werte sind Run, Stop, Pause und Resume. Der initiale Status<strong>ein</strong>es Objektes ist Stop. Ein Termination-Objekt kann den eigenen Status verändern. Gesetztwerden kann nur der Status Stop oder Pause. Verändert des Objekt den Status, wird<strong>ein</strong> abrufbarer Text gespeichert, der den Grund für die Statusänderung enthält. Dieser Textkann mittels des State-Deskriptors abgefragt werden.4.2.2. KontextEin Kontext umfaßt die Menge von Termination-Objekten, die an <strong><strong>ein</strong>er</strong> Konferenz beteiligtsind. Eine Aufgabe <strong>ein</strong>es Kontext-Objektes ist die Steuerung des Flusses der Medienströmezwischen den <strong>ein</strong>zelnen Termination-Objekten. Bietet <strong>ein</strong> Media-Prozessor die optionaleFunktionalität <strong>ein</strong>es Mixers, so wird auch diese Aufgabe vom Kontext-Objekt übernommen.Identifiziert werden Kontext-Objekte durch die ContextID. Innerhalb der Instanz <strong>ein</strong>esMedia-Prozessors muß diese <strong>ein</strong>deutig s<strong>ein</strong>. Wie die TerminationID besteht die ContextIDaus <strong><strong>ein</strong>er</strong> Zeichenkette basierend auf dem ASCII-Zeichensatz.Spezielle Bezeichner für Kontext-Objekte sind CHOOSE und ALL. Mit CHOOSE wird demMedia-Prozessor die Wahl des Kontext-Objektes überlassen. Die Wahl wird entsprechenddes Kommandos, in dem die ContextID <strong>ein</strong>gesetzt wird und den verbleibenden Ressourcendurchgeführt. Der Bezeichner ALL wählt alle vorhandenen Kontext-Objekte aus.Ein besonderes Kontext-Objekt ist durch den Bezeichner NULL gekennzeichnet. In diesemObjekt können Termination-Objekte existieren, die aktuell nicht in <strong><strong>ein</strong>er</strong> Konferenz <strong>ein</strong>gesetztwerden. Die Medienströme aktiver Termination-Objekte im NULL-Kontext werdennicht weitergeleitet.Jedes Kontext-Objekt hat <strong>ein</strong>en Typ, der die grundlegende Funktionalität charakterisiert.Mögliche Werte sind CtxAudio, CtxVideo, CtxData, CtxSync und CtxNull. Die ersten dreiTypen spezifizieren die Art der Informationen, die in dem Kontext transportiert werden.Pro Kontext-Objekt wird nur <strong>ein</strong> Medientyp unterstützt. Um Konferenzen mit mehrerenMedientypen zu verwalten gibt es Kontext-Objekte vom Typ CtxSync. Diese Objekte verwaltenselbst k<strong>ein</strong>e eigenen Termination-Objekte, sondern dienen nur zur Synchronisationanderer Kontext-Objekte. Implementierungen müssen die Typen CtxAudio, CtxVideo undCtxNull unterstützen. Der Typ CtxNull bezeichnet den NULL-Kontext und kann nur <strong>ein</strong>malvorkommen.Um die Eigenschaften von Kontext-Objekten zu verändern, werden, wie bei den Termination-Objekten,Deskriptoren verwendet. Für Kontext-Objekte sind drei Deskriptoren definiert.Der Routing-Deskriptor ermöglicht die Veränderung der Weiterleitungsregeln <strong>ein</strong>es


62 Kapitel 4. <strong>Architektur</strong>Kontext-Objektes. Ohne die Anwendung <strong>ein</strong>es solchen Deskriptors werden die Medienströme<strong>ein</strong>es Termination-Objektes im Kontext an die jeweils anderen weitergeleitet. Grundsätzlichexistieren zwei Arten von Definitionen für Routing-Informationen. Forwarding definiertWeiterleitungsregeln, in denen TerminationIDs <strong><strong>ein</strong>er</strong> Liste von TerminationIDs zugewiesenwerden, an die die Medienströme verschickt werden. Eine Definition der FormA = B, C, D besagt, daß die Medienströme des Termination-Objektes A an die ObjekteB, C und D verschickt werden. Ein Routing-Deskriptor vom Typ Forwarding ohne <strong>ein</strong>eListe von Zuweisungen entspricht der Standard<strong>ein</strong>stellung <strong>ein</strong>es Kontext-Objektes. Dieandere Art der Routing-Informationen, Mixing, beschreibt welche Medienströme gebündeltan <strong>ein</strong> Termination-Objekt geschickt werden. Der Term E = F, G, H definiert, daßdie Medienströme von F, G und H gemischt und dann als <strong>ein</strong> resultierender Medienstroman E weitergeleitet werden. Ein Routing-Deskriptor vom Typ Mixing, dessen Listevon Zuweisungen leer ist, besagt, daß jedes Termination-Objekt in dem Kontext nur <strong>ein</strong>enMedienstrom zugesendet bekommt, der aus <strong><strong>ein</strong>er</strong> Bündelung aller anderen Medienströmebesteht. Die Art Mixing muß nur von Implementierungen unterstützt werden, welche dieoptionale Funktionalität <strong>ein</strong>es Mixers zur Verfügung stellen.Der Type-Deskriptor ermöglicht das Setzen des Typs <strong>ein</strong>es Kontext-Objektes. Alle Typenbis auf CtxNull können <strong>ein</strong>em Kontext-Objekt zugewiesen werden. Der spezielle TypCtxSync bekommt als zusätzliche Information <strong>ein</strong>e Liste von ContextIDs der zu synchronisierendenKontext-Objekte.Der State-Deskriptor wird verwendet, um den Status <strong>ein</strong>es Kontext-Objektes zu verändern.Mögliche Stati sind Run, Stop, Resume und Pause. Ein Kontext-Objekt kann s<strong>ein</strong>eneigenen Status nicht verändern.Ein Kontext muß <strong>ein</strong>e Schnittstelle wie die folgende bieten, um die Menge der verwaltetenTerminationen be<strong>ein</strong>flussen zu können. Mit dem Bool’schen Rückgabewert der Funktionwird der Erfolg der Ausführung signalisiert.TerminationID addTermination ( Termination term )Das Termination-Objekt term wird zum Kontext hinzugefügt. Der Rückgabewert istdie vom Kontext generierte TerminationID.bool removeTermination ( TerminationID tid )Zum Entfernen des Termination-Objektes mit der TerminationID term wird dieseFunktion <strong>ein</strong>gesetzt.bool modifyTermination ( TerminationID tid, Descriptor desc )Diese Funktion übergibt den Deskriptor desc an das Termination-Objekt mit derTerminationID tid.bool requestTermination ( TerminationID tid, Descriptor &desc )Zum Abfragen der Eigenschaften des Termination-Objektes mit der TerminationIDtid wird diese Methode verwendet. Die Eigenschaften werden in den Deskriptordesc <strong>ein</strong>getragen.bool apply ( Descriptor desc )Der Deskriptor desc wird auf das Kontext-Objekt angewendet.bool request ( Descriptor desc )Um die aktuellen Werte von Eigenschaften abzufragen, ist diese Funktion zu verwenden.Welche Eigenschaften zurückgegeben werden, hängt vom Typ des übergebenenDeskriptor-Objektes ab.


4.2. Konferenz-Modell 63recvData ( TerminationID tid, Pointer data, int length )Diese Funktion wird von Termination-Objekten aufgerufen, wenn neue Fragmente<strong>ein</strong>es Medienstroms angekommen sind. Diese Funktion ist nur <strong>ein</strong> Beispiel. Je nachImplementierung kann der Mechanismus zum Weiterleiten der Daten an das Kontext-Objekt variieren.dispatch ( EventInfo info )Erweiterungs-Module verwenden diese Funktion zur Weiterleitung von Informationenüber auftretende Ereignisse. Informationen zu dem jeweiligen Ereignis werdenals Argument info übergeben. Die Technik, um die Ereignis-Informationen weiterzuleiten,ist den Implementierungen überlassen.4.2.3. Konferenz-ControllerDie beiden beschriebenen Objekte Termination und Kontext werden zur Abbildung von<strong><strong>ein</strong>er</strong> Konferenz <strong>ein</strong>gesetzt. Ein Media-Prozessor soll die Fähigkeit besitzen, mehrere Konferenzenparallel zu verwalten und zu steuern. Hierfür wird der Konferenz-Controller benötigt.Dieser verwaltet die <strong>ein</strong>zelnen Kontext-Objekte und kann über diese auch die Termination-Objektesteuern (siehe Abbildung 4.2). Zusätzlich wird der Konferenz-Controllervon den Modulen der Benutzungsschnittstelle (siehe Abschnitt 4.3.4) <strong>ein</strong>gesetzt, um denSteuer<strong>ein</strong>heiten die Verwaltung der Konferenzen zu ermöglichen. Die Schnittstelle (API)dieser Steuer<strong>ein</strong>heit muß Zugriff auf alle Eigenschaften der Termination- und Kontext-Objekte bieten. Eine minimale Steuer<strong>ein</strong>heit soll Kommandos zur Verfügung stellen, die<strong>ein</strong>e Funktionalität entsprechend der folgenden Schnittstelle bereitstellen.TerminationID createTermination ( ContextID cid = „NULL“ )Dieses Kommando ermöglicht das explizite Erzeugen <strong>ein</strong>es Termination-Objektes.Wird der optionale Parameter cid nicht angegeben, gehört die Termination in denspeziellen NULL-Kontext. Im anderen Fall wird das kreierte Objekt dem spezifiziertenKontext-Objekt zugeordnet. Die TerminationID des neu erzeugten Objektes ist derRückgabewert des Kommandos.bool moveTermination ( TerminationID t, ContextID dest, ContextID src )Das Termination-Objekt t wird vom Kontext-Objekt src in das Objekt dest verschoben.Existiert das Kontext-Objekt dest nicht, so wird es erzeugt. Die Objekte tund src müssen hingegen vorhanden s<strong>ein</strong>. Der NULL-Kontext kann als Quelle oderals Ziel der Verschiebung <strong>ein</strong>gesetzt werden.bool removeTermination ( ContextID cid, TerminationID t = „ALL“ )Zum Entfernen von Termination-Objekten wird dieses Kommando verwendet. Wirddas optionale Argument t nicht angegeben, so ist s<strong>ein</strong> Wert auf ALL gesetzt. Dies führtzum Löschen aller Termination-Objekte im angegebenen Kontext-Objekt. CHOOSEhingegen kann nicht als Bezeichner <strong>ein</strong>gesetzt werden.bool modifyTermination ( ContextID cid, TerminationID t, Descriptor desc )Mit diesem Kommando kann <strong>ein</strong> Deskriptor mit neuen Einstellungen an <strong>ein</strong> Termination-Objektübergeben werden. Mit der speziellen TerminationID ALL können auchalle Termination-Objekte <strong>ein</strong>es Kontext-Objektes verändert werden. Wird zusätzlich


64 Kapitel 4. <strong>Architektur</strong>der ALL-Bezeichner für den Kontext <strong>ein</strong>gesetzt, so wird auf alle momentan im Media-Prozessor existieren Termination-Objekte die Änderung angewendet. Hat der Parametert den Wert ROOT, dann wird der Parameter ContextID nicht evaluiert und dieModifikation wird an der ROOT-Termination vorgenommen. Als Deskriptoren sindnur die für Termination-Objekte definierten erlaubt. Bei diesem Kommando ist dieVerwendung des Bezeichners CHOOSE für die TerminationID und für die ContextIDerlaubt.bool requestTermination ( ContextID cid, TerminationID t, Descriptor &desc )Diese Funktion bietet die Möglichkeit, Eigenschaften <strong>ein</strong>es Termination-Objektes abzufragen.Der Typ des Objektes desc bestimmt, welche Eigenschaften zurückgegebenwerden. Für die ContextID können die speziellen Bezeichner ALL und CHOOSE nicht<strong>ein</strong>gesetzt werden.bool modifyContext ( ContextID cid, Descriptor desc )Um Deskriptoren auf <strong>ein</strong> Kontext-Objekt anzuwenden, wird dieses Kommando aufgerufen.Bei diesem Kommando kann der spezielle Bezeichner NULL nicht benutztwerden, da dieses Kontext-Objekt nicht verändert werden kann. Bezeichnet cid <strong>ein</strong>nicht existentes Kontext-Objekt, meldet die Funktion <strong>ein</strong>en Fehler. Nur für Kontext-Objekte definierte Deskriptoren können als Argument desc <strong>ein</strong>gesetzt werden.bool requestContext ( ContextID cid, Descriptor &desc )Die Eigenschaften <strong>ein</strong>es Kontext-Objektes können mit diesem Kommando abgefragtwerden. Zurückgegeben werden die Eigenschaften des Deskriptor-Typs, von dem auchdesc ist. Die speziellen Bezeichner CHOOSE, ALL und NULL sind bei diesem Kommandonicht erlaubt.Die definierten Rückgabewerte der Funktionen erlauben nur <strong>ein</strong>e minimale Fehlerbehandlung.Einer Implementierung ist die Methode der Erweiterung der Fehlererkennung und-behebung selbst überlassen.Die drei beschriebenen Komponenten des Konferenz-Modells und ihre Zuordnung zu<strong>ein</strong>anderist in dem folgenden Diagramm 4.3 dargestellt. Jede Instanz <strong>ein</strong>es Media-Prozessorshat exakt <strong>ein</strong>en Konferenz-Controller. Dieser verwaltet <strong>ein</strong>e beliebige Anzahl von Kontext-Objekten3 , die wiederum die Steuerung über <strong>ein</strong>e beliebige Anzahl von Termination-Objektenausüben.4.3. ModuleEin Ziel bei der <strong>Entwicklung</strong> der <strong>Architektur</strong> ist die Erweiterbarkeit. Diese wird beim Media-Prozessor durch nachladbare Module realisiert. Diese sind nach ihrer Funktionalität in verschiedeneGruppen aufgeteilt. Im folgenden werden vier Arten dieser Module definiert. Fürdie Kommunikation mit dem Media-Prozessor muß <strong>ein</strong>e <strong>ein</strong>heitliche Schnittstelle für alleArten der Module spezifiziert werden. Diese muß <strong>ein</strong>e Funktionalität wie in der folgendenDefinition bieten.bool capable ( Term term )Dient zur Prüfung, ob das Modul fähig ist, <strong>ein</strong>e Aufgabe zu erledigen, die durch die3 Wobei jeder Media-Prozessor mindestens <strong>ein</strong> Kontext-Objekt besitzt, den NULL-Kontext.


4.3. Module 65Abbildung 4.3.: Aufbau des Konferenz-Modellsübergebene Bedingung term beschrieben wird. Das Objekt term enthält <strong>ein</strong>e genaueBeschreibung der benötigten Fähigkeit sowie benötigte Parameter.Module generate ( Term term )Diese Funktion erzeugt <strong>ein</strong>e Instanz des Moduls und übergibt zur Initialisierung dasObjekt term, welche zur Überprüfung mit der Funktion capable verwendet wurde.Bei dieser Funktion wird das Objekt benötigt, um die Parameter auszulesen.string description ( )Diese Funktion gibt <strong>ein</strong>e textuelle Beschreibung der Funktion des Moduls zurück.Durch die capable-Funktion liegt die Fähigkeit zur Erkennung der eigenen Funktionalitätbei den Modulen. Diese Technik spart die <strong>Entwicklung</strong> <strong><strong>ein</strong>er</strong> generischen und komplexenMethode zur Beschreibung von Fähigkeiten der <strong>ein</strong>zelnen Module. Bei sehr großen Mengenvon Modulen könnte diese Technik zu hohen Verzögerungen bei der Anforderung führen.Da bei der Anforderung von Modulen grundsätzlich nur <strong>ein</strong>e Art von Modul nach der benötigtenFunktionalität befragt wird, ist die Menge der zu untersuchenden Module reduziert.Da auch pro Gruppe nur <strong>ein</strong>e begrenzte Anzahl von Modulen bereitsteht, ist die tatsächlicheVerzögerung zum Auffinden des richtigen Moduls nur minimal.Die Abfrage der Funktionalität sowie die Instantiierung der Module wird von dem Plugin-Controller (Modul-Steuerung) übernommen (siehe Abbildung 4.4). Dieser implementiertdie systemabhängigen Funktionen, wie das Laden und den Zugriff auf die Funktionen.Module können ausschließlich von den Termination-Objekten angefordert werden. EineAusnahme bilden die Module für Benutzungsschnittstellen, die nur bei der Initialisierungdes Media-Prozessors erzeugt werden können. Die Aufgaben und die dafür zur Verfügunggestellten Schnittstellen der <strong>ein</strong>zelnen Modul-Arten werden im folgenden beschrieben.


66 Kapitel 4. <strong>Architektur</strong>TerminationPlugin−ControllerTransport Filter Package ControllerAbbildung 4.4.: Verwaltung von Modulen4.3.1. TransportEine der Aufgaben des Media-Prozessors ist die Verbindung zwischen verschiedenartigenNetzen. Dafür werden Implementierungen der zu unterstützenden Protokolle der Vermittlungsschichtbenötigt. Diese werden in Transport-Module, wie in Abbildung 4.6 dargestellt,gekapselt. Welche Implementierung im speziellen Fall zu wählen ist, wird anhand der Transportadresseermittelt, die an die capable-Funktion übergeben wird.Das Kriterium, das der capable-Funktion <strong>ein</strong>es Transport-Moduls übergeben wird, bestehtaus vier Komponenten, wie in Abbildung 4.5 dargestellt. Die ersten beiden Komponentensind die Netzadressen bzw. Namen des entfernten und lokalen Rechners. Die anderen zweiKomponenten sind Anwendungsadressen (Ports). Einer definiert die Zieladresse des Medienstromsauf dem entfernten Rechner, der zweite Port ist optional und kann die lokal zuverwendende Anwendung adressieren.Abbildung 4.5.: Address-Struktur <strong>ein</strong>es Transport-ModulsEin Transport-Modul muß die drei Modi SendReceive, ReceiveOnly und SendOnly unterstützen.Nur im SendReceive-Modus muß das Modul für den Transport in beiden Richtungenvorbereitet werden. Im SendOnly-Modus sind nur die Netzadresse und der zugehörigePort des entfernten Rechners von Interesse. Hingegen ist im ReceiveOnly-Modus nur dielokale Transportadresse zu beachtet. Ist diese nicht definiert, so muß das Modul selbst <strong>ein</strong>ewählen. 4Implementierungen der Transport-Module müssen <strong>ein</strong>e Schnittstelle entsprechend der folgendenSpezifikation zur Verfügung stellen. Dabei geht es nur um die Existenz der <strong>ein</strong>zelnenFunktionen und ihrer Aufgaben und nicht um die exakte Einhaltung der Rückgabewertebzw. Argumente.int open ( )Entsprechend des gewählten Modus werden die Verbindungen vorbereitet, d.h. dievom Betriebssystem bereitgestellte Abstraktion für Netzkommunikation wird initiali-4 Bei dieser Wahl ist das zugrundeliegende Betriebssystem zu befragen.


4.3. Module 67siert 5 . Negative Rückgabewert bedeuten <strong>ein</strong> Fehler in der Ausführung der Funktion.Alle anderen Werte sind <strong>ein</strong>e <strong>ein</strong>deutige Nummer für den erfolgreich geöffneten Kommunikationskanal.bool close ( )Diese Funktion schließt den oder die geöffneten Kanäle und gibt die reserviertenRessourcen frei.bool send ( Pointer data, int length )Diese Funktion wird zum Versenden von Daten <strong>ein</strong>es Medienstroms <strong>ein</strong>gesetzt. DieArgumente data und length definieren <strong>ein</strong>en Puffer, der die zu sendenden Datenenthält.int recv ( Pointer data, int max )Diese Funktion dient zum Empfangen von Daten. Das erste Argument enthält <strong>ein</strong>enVerweis auf <strong>ein</strong>en Puffer, in den die Daten geschrieben werden, das zweite Argumentlegt fest, wieviele Bytes maximal empfangen werden sollen. Diese Angabe entsprichtin der Regel der Größe des Puffers. Der Rückgabewert der Funktion enthält die Anzahlder tatsächlich empfangenen Bytes.int lastError ( String &description )Wenn <strong>ein</strong>e der anderen Funktionen <strong>ein</strong>en Fehler signalisiert, kann mittels dieser Funktion<strong>ein</strong>e detailierte Beschreibung abgefragt werden. Der Rückgabewert ist <strong>ein</strong>e <strong>ein</strong>deutigeFehlernummer, und die übergebene Zeichenkette enthält nach Aufruf derFunktionen die Beschreibung. Ist seit dem letzten Aufruf dieser Funktion k<strong>ein</strong> Fehleraufgetreten, gibt die Funktion null zurück.Abbildung 4.6.: Aufbau <strong>ein</strong>es Transport-ModulsDiese Schnittstellen-Definition enthält k<strong>ein</strong>e Möglichkeit zur Prüfung auf angekommeneDaten. Diese Funktionalität ist aus den Modulen ausgelagert. Durch die vom Betriebssystemzur Verfügung gestellte Abstraktion muß es möglich s<strong>ein</strong>, diese Aufgabe unabhängig vonder Implementierung der Vermittlungsschicht auszuführen.4.3.2. FilterAudio- und Videodaten sind die in den meisten Multimedia-Konferenzen verwendeten Medientypen.Filter-Module, wie aus Abbildung 4.9, dienen zur Kodierung bzw. Dekodierung<strong>ein</strong>es <strong>ein</strong>zigen Kodierungsverfahrens. Diese Funktionalität kann der Media-Prozessor zumTranscoding und Mixen von Medienströmen <strong>ein</strong>setzen.5 Bei <strong><strong>ein</strong>er</strong> BSD-Socket-Schnittstelle entspricht dies <strong>ein</strong>em Aufruf der Systemfunktionen socket und bind.Eventuell werden zusätzlich <strong>ein</strong>ige Optionen mittels setsockopt gesetzt.


68 Kapitel 4. <strong>Architektur</strong>Zur Kommunikation zwischen den Filter-Modulen und dem Media-Prozessor muß <strong>ein</strong>e Methodedefiniert s<strong>ein</strong>, mit der die Kodierungsverfahren <strong>ein</strong>deutig beschrieben werden können.Dafür werden der Name des Verfahrens und <strong>ein</strong>e variable Anzahl von Parametern wieAbtastrate, Anzahl der Kanäle und Paketgröße benötigt. Weitere Parameter hängen vondem jeweiligen Kodierungsverfahren ab.Die in Abbildung 4.7 dargestellten Strukturen bieten <strong>ein</strong>e generische Beschreibung fürAudio- und Video-Informationen. Die Struktur Codec definiert den Medientyp und die Bezeichnungfür das Kodierungsverfahren. Als Bezeichner werden die MIME 6 -Media-Typenaus dem Internet Draft „MIME Type Registration of RTP Payload Formats“ [6] verwendet.Die weiteren Parameter sind in der Struktur CodecOptionSet definiert. Für Kodierungsverfahren,die zu den vordefinierten Parametern noch zusätzliche benötigen, sind vonder Implementierung Erweiterungsmöglichkeiten vorzusehen, wie sie in der Abbildung mituserDefined angedeutet sind.Abbildung 4.7.: Codec-Struktur für Filter-ModuleDie capable-Funktion der Filter-Module bekommt <strong>ein</strong>e Codec-Struktur übergeben, wiesie in Abbildung 4.8 beispielhaft dargestellt ist. Das CodecOptionSet Input definiert dieParameter für die kodierten und Output für die dekodierten Mediendaten. In diesem Fallmuß das Filter-Modul <strong>ein</strong>e Umsetzung zwischen den Abtastraten vornehmen. Ist das Modulin der Lage, das Kodierungsverfahren PCM-µ-Law zu verstehen, kann aber die Umsetzungnicht vornehmen, so ist <strong>ein</strong>e Anforderung durch die capable-Funktion abzulehnen. DerImplementierung ist es überlassen, ob die Funktion zur Übersetzung der Parameter von denFilter-Modulen realisiert wird oder in den Kontext-Objekten.Die Schnittstelle <strong>ein</strong>es Filter-Moduls muß Funktionen zur Dekodierung bzw. Kodierung derMediendaten zur Verfügung stellen. Die folgende Beschreibung ist <strong>ein</strong> Beispiel.6 MIME (Multipurpose Internet Mail Extensions) wird in E-Mails <strong>ein</strong>gesetzt, um andere Datentypen wie beispielsweiseBilder zu integrieren.


4.3. Module 69Abbildung 4.8.: Beispiel <strong><strong>ein</strong>er</strong> Codec-Strukturbool encode ( Pointer data, int length )Die im Parameter data enthaltenen Daten werden entsprechend der Definition inden Parametern des Moduls kodiert.bool decode ( Pointer data, int length )Die übergebenen Daten werden entsprechend der Optionen dekodiert.Abbildung 4.9.: Aufbau <strong>ein</strong>es Filter-Moduls4.3.3. ErweiterungenErweiterungs-Module haben die Möglichkeit, empfangene und zu sendende Daten auf <strong>ein</strong>ebeliebige Art und Weise zu verändern. Mittels Signalen können Erweiterungs-Module Fragment<strong>ein</strong> die Medienströme <strong>ein</strong>fügen. Zusätzlich können diese Module <strong>ein</strong>e Überwachungsfunktionbieten, die vordefinierte Muster erkennt und diese als Ereignisse an die externeSteuer<strong>ein</strong>heit meldet. Für diese Aufgaben haben die Erweiterungs-Module die Möglichkeit,auf Filter-Module zurückzugreifen.Jedes Erweiterungs-Modul kann mehrere Signale definieren, die in beliebiger Reihenfolgesequentiell ausgeführt werden können. Identifiziert werden Signale anhand <strong><strong>ein</strong>er</strong> Nummer,die <strong>ein</strong>deutig s<strong>ein</strong> muß. Zusätzlich besitzt jedes Signal <strong>ein</strong>en beschreibenden Namenbeliebiger Länge.Die in Abbildung 4.10 dargestellten Signal-Objekte können Mediendaten unterschiedlicherDauer erzeugen. DTMF beispielsweise sind kurze Töne. Ein Besetzt-Zeichen hingegen hältan, bis der Anrufer auflegt. Diese verschiedenen Arten von Signalen werden auf die drei TypenBrief, Timeout und OnOff abgebildet. Die erzeugten Mediendaten der Signale könnenvon <strong>ein</strong>em Termination-Objekt auf zwei verschiedene Arten angefordert werden. Mittelsder Funktion complete werden die kompletten Mediendaten abgefragt, die das Signalproduziert. Diese Methode ist nur bei Signalen des Typs Brief oder Timeout anzuwenden.Für Signale, deren Typ auf OnOff gesetzt ist, kann die zweite Methode verwendet werden.


70 Kapitel 4. <strong>Architektur</strong>Mittels der Funktion fragment können auf<strong>ein</strong>ander folgende Fragmente der Daten abgeholtwerden, bis das Signal deaktiviert wird. Als weiteres Argument wird <strong>ein</strong> Intervall inMillisekunden übergeben, das die maximale Dauer des zu liefernden Fragments definiert.Am Rückgabewert der Funktion kann die tatsächlich zurückgegebene Länge erkannt werden.Abbildung 4.10.: Aufbau <strong>ein</strong>es SignalsEreignis-Objekte, wie aus Abbildung 4.11, überprüfen Medienströme auf spezielle Musterund melden diese bei Erkennung mittels <strong><strong>ein</strong>er</strong> EventInfo-Struktur aus Abbildung 4.12 andie externe Steuer<strong>ein</strong>heit. Dabei kann <strong>ein</strong> Medienstrom parallel auf mehrere Muster überprüftwerden, die zu Ereignissen führen. In jedem Ereignis-Objekt existiert wie bei Signal-Objekten <strong>ein</strong>e <strong>ein</strong>deutige Nummer zur Identifikation und <strong>ein</strong> beschreibender Name.Abbildung 4.11.: Aufbau <strong>ein</strong>es Ereignis-ObjektesAbbildung 4.12.: Struktur zur Meldung von EreignissenEreignisse und Signale können Argumente haben, deren Anzahl nicht beschränkt ist. Fürdie <strong>ein</strong>zelnen Ereignisse und Signale sind die Argumente, d.h. Anzahl und Typen, in demzugehörigen Erweiterungs-Modul zu definieren.Mögliche Typen für die Argumente sind Integer, Double, Bool, String, List und Enum (sieheAbbildung 4.13). Der Typ String basiert auf dem ASCII-Zeichensatz. Enum ist <strong>ein</strong> Aufzählungstyp,bei dem aus <strong>ein</strong>em festdefinierten Nummernraum <strong>ein</strong> beliebiger Wert ausgewähltwird. List ist <strong>ein</strong>e untypisierte Liste, d.h. es können Elemente der verschiedenen Typen in<strong><strong>ein</strong>er</strong> Liste enthalten s<strong>ein</strong>. Der Typ List kann ebenso als Element in <strong><strong>ein</strong>er</strong> Liste verwendetwerden.Ein Beispiel für <strong>ein</strong> parametrisiertes Ereignis ist die Meldung <strong>ein</strong>es erkannten DTMF. DasArgument ist das erkannte Zeichen. Entsprechend kann <strong>ein</strong> Signal als Argument das Zeichenübergeben bekommen, welches als DTMF in den Medienstrom <strong>ein</strong>gefügt werden soll.Ein Erweiterungs-Modul wird durch <strong>ein</strong>e <strong>ein</strong>deutige Nummer identifiziert. Ein Name istals beschreibende Kennung zusätzlich zu definieren. Weitere Attribute <strong>ein</strong>es Erweiterungs-Moduls sind die Listen der aktiven Ereignisse und Signale.Die Schnittstelle <strong>ein</strong>es Erweiterungs-Moduls zur Verwaltung und Steuerung der Ereignisse


4.3. Module 71Abbildung 4.13.: Argumenten-Liste für Ereignisse und Signaleund Signale muß von der Funktionalität her der folgenden Definition entsprechen. DieBool’schen Rückgabewerte informieren über den Erfolg der Funktionen.bool addSignal ( int id, Enum type, PList args )Um Signal-Objekte zu auszulösen, wird diese Funktion verwendet. Als Argumentewerden die <strong>ein</strong>deutige Nummer, der Typ und die Liste der Argumente des Signalsübergeben.bool removeSignal ( int id )Diese Funktion entfernt das Signal-Objekt, welches durch die Nummer id identifiziertwird, aus der Liste der aktiven. Ist das Signal nicht in der Liste oder kann ausanderen Gründen nicht gelöscht werden, ist dies durch den Rückgabewert bekanntzugeben.bool addEvent ( int id, PList args )Äquivalent zu addSignal fügt diese Funktion <strong>ein</strong> Ereignis-Objekt in die Liste der aktiven<strong>ein</strong>. Als Parameter werden die <strong>ein</strong>deutige Nummer und die Liste der Argumentefür das Ereignis übergeben.bool removeEvent ( int id )Das durch die <strong>ein</strong>deutige Nummer id identifizierte Ereignis-Objekt wird aus der Listeder aktiven entfernt.bool eval ( Pointer data, int length )Der übergebene Parameter data verweist auf die Mediendaten, welche zu überprüfensind. In dieser Funktion kann das Erweiterungs-Module die Daten verändern. BeiVeränderungen oder bei Erkennung <strong>ein</strong>es Musters muß der Rückgabewert <strong>ein</strong>e erfolgreicheAusführung der Funktion signalisieren.bool provide ( Pointer data, int length )Diese Funktion muß in regelmäßigen Abständen von dem Termination-Objekt aufgerufenwerden, wenn sich aktive Signal-Objekte in der Liste des Erweiterungs-Modulsbefinden. Aufgabe dieser Funktion ist die Erzeugung der der Mediendaten. Solangeder Rückgabewert positiv ist, werden auch die nächsten Fragmente des Medienstromsdurch die Funktion provide erstellt.


72 Kapitel 4. <strong>Architektur</strong>Abbildung 4.14.: Aufbau <strong>ein</strong>es Erweiterungs-Modul4.3.4. SteuerungDie Steuer-Module aus Abbildung 4.14 bilden die Verbindung zu <strong><strong>ein</strong>er</strong> externen Steuer<strong>ein</strong>heit.Identifiziert werden diese Module anhand <strong>ein</strong>es <strong>ein</strong>deutigen Namens. Pro laufenderInstanz <strong>ein</strong>es Media-Prozessors darf nur <strong>ein</strong> Steuer-Modul existieren.Die capable-Funktion dieser Module bekommt als Argument <strong>ein</strong>en Modul-Namen übergeben.Ist der Name des Moduls gleich dem als Argument übergebenen, so muß die Funktiondie Anfrage positiv beantworten.Für die interne Kommunikation müssen die Steuer-Module, wie in Abbildung 4.15, <strong>ein</strong>eSchnittstelle zur Verfügung stellen, deren Funktionalität dem folgenden Beispiel entspricht.bool init ( ConferenceControl control, List options )Diese Funktion wird direkt nach der Instantiierung des Moduls aufgerufen. Übergebenwerden als Argumente <strong>ein</strong> Verweis auf den Konferenz-Controller control sowie<strong>ein</strong>e Liste von Optionen options, die zur Initialisierung dienen.void event ( EventInfo info )Diese Funktion wird aufgerufen, wenn <strong>ein</strong> Erweiterungs-Modul <strong>ein</strong> Ereignis meldet.Abbildung 4.15.: Aufbau <strong>ein</strong>es Steuer-Modul4.4. Interne KommunikationIn den vorangegangenen Abschnitten wurden die Komponenten des Kommunikations-Modellssowie die <strong>ein</strong>zelnen Module der <strong>Architektur</strong> vorgestellt. Wie diese Bestandteile desMedia-Prozessors intern mit<strong>ein</strong>ander kommunizieren, wird im folgenden Abschnitt anhand<strong>ein</strong>es Beispiels beschrieben.In den Erklärungen werden Diagramme <strong>ein</strong>gesetzt, um den Ablauf der Kommunikationenzu verdeutlichen. Dabei werden teilweise die Rückmeldungen der Funktionsaufrufe vernachlässigt.In diesen Fällen wird von <strong><strong>ein</strong>er</strong> positiven Rückmeldung ausgegangen, da sonstdie Kommunikation beendet ist.


4.4. Interne Kommunikation 73Fluß der MedienströmeAm Beispiel der <strong>ein</strong>fachen Konferenz aus Abbildung 4.16, soll der Fluß der Medienström<strong>ein</strong>nerhalb <strong><strong>ein</strong>er</strong> Konferenz verdeutlicht werden. Dargestellt wird in diesem Beispiel derAnruf <strong>ein</strong>es Nutzers bei s<strong>ein</strong>em Anrufbeantworter, um vorhandene Anrufe abzuhören. Mit<strong>ein</strong>em ISDN-Endgerät ruft er über <strong>ein</strong> Gateway in <strong>ein</strong>em IPv6-Netz den zentralen Anrufbeantworteran, der sich in <strong>ein</strong>em IPv4-Netz befindet. Zur Vermittlung zwischen den beidenIP-Netzen wird <strong>ein</strong> Media-Prozessor <strong>ein</strong>gesetzt. Dafür wird im Media-Prozessor <strong>ein</strong>e Konferenzmit zwei Termination-Objekten aufgesetzt, wie in Abbildung 4.17 dargestellt.AnrufbeantworterISDNPSTNGSMIntranetIPv6IntranetIPv4GatewayMedia−ProzessorAbbildung 4.16.: Beispiel: Vermittlung zwischen IPv4- und IPv6-NetzAbbildung 4.17.: Fluß der MediendatenDas Termination-Objekt RTP-1 repräsentiert den Anrufbeantworter aus dem IPv4-Netz.Der ISDN-Teilnehmer, der in der Abbildung nicht zu sehen ist, kommuniziert über das Gatewaymit dem Termination-Objekt RTP-2. Damit die vom Nutzer gesendeten DTMF erkanntwerden können, wird <strong>ein</strong> Erweiterungs-Modul von der Termination RTP-2 verwendet.Zum besseren Verständnis werden von den Termination-Objekten unterschiedliche Module


74 Kapitel 4. <strong>Architektur</strong><strong>ein</strong>gesetzt. Für die Transport-Module werden <strong>ein</strong>e IPv4- und <strong>ein</strong>e IPv6- Variante verwendet.Dies soll das Blackbox-Prinzip der Module verdeutlichen.Das Termination-Objekt RTP-2 empfängt Daten von s<strong>ein</strong>em Transport-Modul. Das Objektmuß den Puffer mit den empfangenen Daten an das Erweiterungs-Modul weitergeben, indem es die eval-Funktion des Moduls aufruft. In dem Beispiel wird <strong>ein</strong> DTMF erkannt. Dieserwird direkt an das Kontext-Objekt weitergeleitet. Dafür werden die Informationen durchdas Argument der Funktion dispatch übergeben. Die übergebene Struktur EventInfoenthält die Kennung und den Namen des Erweiterungs-Moduls und <strong>ein</strong>e Argumentenliste.In diesem Fall enthält die Liste den erkannten DTMF.Nachdem das Erweiterungs-Modul die Daten verarbeitet hat, werden diese an das Kontext-Modulweitergereicht, wobei dem Kontext die Quelle der Daten mit übergeben wird.In dem Beispiel ist dem Kontext <strong>ein</strong> Routing-Deskriptor zugewiesen worden, in demdefiniert ist, daß nur Daten von RTP-1 an RTP-2 geleitet werden. Auf die Beispielsituationabgebildet bedeutet dies, daß der Nutzer k<strong>ein</strong>e Medienströme an den Anrufbeantwortersenden kann. Dies ist nicht nötig, da die vom Nutzer gesendeten DTMF vorher erkannt undan das Kontext-Objekt geleitet werden. Von dort werden diese an die externe Steuer<strong>ein</strong>heitübertragen, die mit der Steuer<strong>ein</strong>heit des Anrufbeantworters kommuniziert und so dieBefehle übermittelt.Als Reaktion auf den empfangenen DTMF sendet der Anrufbeantworter Mediendaten, diedas Termination-Objekt RTP-1 empfängt. Da dieser Termination k<strong>ein</strong>e Erweiterungs-Modulezugeordnet sind, können die Daten direkt an das Kontext-Objekt weitergegeben werden.Nach den Definitionen im Routing-Deskriptor gibt der Kontext die Daten an das Termination-ObjektRTP-2. Diese werden wiederum an das Erweiterungs-Modul gegeben unddaraufhin an das Transport-Modul, welche die Daten über das Netz schickt.Auf- und Abbau <strong><strong>ein</strong>er</strong> KonferenzAnhand des Beispiels aus Abbildung 4.18 sollen alle Phasen <strong><strong>ein</strong>er</strong> Konferenz von der Instantiierungbis zur Beendigung vorgeführt werden. Dabei wird die Verwendung der definiertenSchnittstellen für die Erzeugung und Manipulation von Termination-Objekten demonstriert.Dargestellt wird in dem Beispiel <strong>ein</strong> Steuer-Modul, das über den Konferenz-Controller <strong>ein</strong>e Konferenz aufbaut und wieder schließt. Verwaltet wird die Konferenz durchdas Kontext-Objekt CTX-1. Desweiteren existiert noch das spezielle Kontext-Objekt NULLin dem sich <strong>ein</strong> Termination-Objekt befindet, das <strong>ein</strong>em ISDN-Anschluß zugeordnet ist und<strong>ein</strong> Termination-Objekt, das während des Vorgangs erzeugt wird. In der folgenden Beschreibungwird der Ablauf anhand von vier Phasen erläutert.1. Phase – ErzeugungDie erste Phase beginnt mit der Erzeugung der Termination-Objekte und ihrer Initialisierung.In der Abbildung 4.18 wird exemplarisch <strong>ein</strong>e Konferenz aufgebaut, in der <strong>ein</strong> <strong>ein</strong>zigesTermination-Objekt instantiiert wird. Mit dem Befehl createTermination wird dieErzeugung des Objektes ausgeführt. Das Argument CTX-1 gibt den Kontext an, in den dasTermination-Objekt bewegt werden soll. Existiert der Kontext nicht, so wird <strong>ein</strong> neues Kontext-Objekterzeugt. Dieses gibt die TerminationID des neu erzeugten Termination-Objekteszurück.


4.4. Interne Kommunikation 75Abbildung 4.18.: Aufbau <strong><strong>ein</strong>er</strong> Konferenz2. Phase – KonfigurationIn der nächsten Phase wird das Termination-Objekt TERM-1 konfiguriert. Mit dem Mode-Deskriptorwird das Termination-Objekt in den Modus SendReceive gebracht. Für die beidenMedienströme, die in diesem Modus zu verwalten sind, werden mittels des Remote- undLocal-Deskriptor die Medientypen definiert. Der Address-Deskriptor legt fest,daß <strong>ein</strong>e Kommunikation mit dem Rechner, dessen IP-Adresse 134.102.218.11 ist, aufgebautwird. Die zu verwendenden Anwendungsadressen sind auf dem entfernten Rechner45678 und lokal 45876.3. Phase – InitialisierungMit dem Befehl moveTermination wird das Termination-Objekt ISDN-1 aus dem NULL-Kontext in den Kontext CTX-1 verschoben. In der Kommunikation zwischen dem Steuer-Modul und dem entsprechenden Kontext wird der Befehl zum Verschieben aufgeteilt in dasLöschen aus dem NULL-Kontext und dem Hinzufügen in den neuen Kontext CTX-1. Da


76 Kapitel 4. <strong>Architektur</strong><strong>ein</strong> neu erzeugtes Kontext-Objekt initial den Status Stop hat, muß der Kontext mittels desState-Deskriptors aktiviert werden, in dem der Status auf Run gesetzt wird.4. Phase – BeendigungZur Beendigung der Konferenz wird der Status auf Stop zurückgesetzt und das Termination-ObjektTERM-1 aus dem Kontext entfernt. Abschließend kann das Objekt ISDN-1 ausdem Kontext CTX-1 entfernt werden. Dies würde zur Freigabe der Ressourcen des Kontext-Objektesführen, da k<strong>ein</strong>e weiteren Termination-Objekte vorhanden sind.4.5. ZusammenfassungDiese <strong>Architektur</strong> definiert <strong>ein</strong> modulares System für <strong>ein</strong>en Media-Prozessor. Die geforderteErweiterbarkeit dieses Systems ist durch die Modul-Technik erreicht.Das Konferenz-Modell der <strong>Architektur</strong> basiert auf den Ideen von MEGACO. Die Erweiterungdes Modells um den Konferenz-Controller schränkt das Modell nicht <strong>ein</strong>, sondern erweitertes um <strong>ein</strong>e generische Schnittstelle zur Verwaltung von parallel ablaufenden Konferenzen.Durch die Steuer-Module kann <strong>ein</strong> der Umgebung entsprechender Steuerungsmechanismusgewählt werden. Zur Integration in die IP-Telefonie kann beispielsweise <strong>ein</strong> Steuer-Modulfür das MEGACO-Protokoll entwickelt werden. Bei Mbone-Konferenzen, die manuell initialisiertwerden, reicht <strong>ein</strong> Modul zum Parsieren der Kommandozeilen-Parameter. Diesermöglicht <strong>ein</strong>e optionale Anpassung an die Umgebung.Die Verwendung der richtigen Protokolle für die Vermittlungsschicht ist durch die Transport-Modulefür die Termination-Objekte völlig transparent. Eine <strong>ein</strong>heitliche Schnittstellesowie die Modul-Technik machen dies möglich.Die Fähigkeiten der Termination-Objekte können mittels der Erweiterungs-Module beliebigerweitert werden. Die generischen Definitionen von Ereignissen und Signalen bieten<strong>ein</strong>e gut erweiterbare Kommunikation mit der externen Steuer<strong>ein</strong>heit und die Möglichkeit,beliebige Daten in die Medienströme zu integrieren.Durch die Filter-Module können Teilnehmer, die unterschiedlichste Kodierungsverfahrenfür ihre Medienströme <strong>ein</strong>setzen, in Konferenzen mit<strong>ein</strong>ander verbunden werden. Auchbieten sie Unterstützung für die Mixer-Funktion.Somit ist die <strong>Entwicklung</strong> <strong>ein</strong>es modularen Systems zur Adaption von Steuer- und Medienströmenin Multi-Protokollumgebungen anhand dieser <strong>Architektur</strong>beschreibung möglich.


5. Implementierung„A Computer is a state machine. Threads are for people who can’t programstate machines.“ – Alan CoxIn diesem Kapitel wird die Implementierung MEPRO der <strong>Architektur</strong> für Media-Prozessorenvorgestellt. In der Beschreibung wird speziell auf die Realisierung des Konferenz-Modellsund <strong>ein</strong>e Technik zur Umsetzung der Module <strong>ein</strong>gegangen. Zusätzlich wird <strong>ein</strong>e eigeneImplementierung <strong><strong>ein</strong>er</strong> RTP-Bibliothek vorgestellt, die im Rahmen dieser Diplomarbeit entwickeltwurde. Beide Komponenten sind in der Sprache C++ beschrieben und wurdenausschließlich auf dem Betriebssystem Linux getestet.5.1. RTP-BibliothekFür <strong>ein</strong>e RTP-Bibliothek, die im Media-Prozessor <strong>ein</strong>gesetzt wird, müssen spezielle Anforderungenerfüllt werden:• Eine Instantiierung mehrerer unabhängiger RTP-Sessions muß möglich s<strong>ein</strong>.• Die Transport-Funktion muß aus der Bibliothek ausgegliedert s<strong>ein</strong>. Da der Media-Prozessor eigene Transport-Module bereitstellt, muß die Möglichkeit gegeben s<strong>ein</strong>,die RTP- bzw. RTCP-Pakete mittels dieser zu versenden.• Jedes Feld der RTP- und RTCP-Pakete muß veränderbar s<strong>ein</strong>. Einerseits muß die Bibliothekdie Fähigkeit besitzen, Pakete weitestgehend selbständig zusammenzusetzen,andererseits muß der Benutzer die Möglichkeit haben, den Wert jedes Feldes zube<strong>ein</strong>flussen.• Die Bibliothek muß <strong>ein</strong>en passiven Modus bieten. Dabei werden k<strong>ein</strong>e eigenen RTPbzw.RTCP-Pakete generiert, sondern fertige Pakete weitergeleitet. Diese Funktionalitätbenötigt der Media-Prozessor z.B. zur Vermittlung zwischen Teilnehmern in unterschiedlichenNetzen und in jeder anderen Konstellation, bei der der Media-Prozessorselbst k<strong>ein</strong>e RTP-Quelle ist.• Ankommende Pakete sowie Änderungen von Zustandsinformationen müssen an dieAnwendung gemeldet werden. Dabei muß die Anwendung bestimmen können welcheInformationen wie detailiert tatsächlich an sie weitergeleitet werden.Alle evaluierten RTP-Bibliotheken können zumindest <strong>ein</strong>ige dieser Anforderungen nichterfüllen. Aus diesem Grund wurde <strong>ein</strong>e eigene Bibliothek entwickelt, deren Aufbau undSchnittstelle im folgenden beschrieben wird.


78 Kapitel 5. Implementierung5.1.1. AufbauDer Aufbau der RTP-Bibliothek, wie sie in Abbildung 5.1 dargestellt ist, wird anhand derwichtigsten Klassen, ihrer Kommunikation unter<strong>ein</strong>ander und der Schnittstelle für Anwendungenbeschrieben.Abbildung 5.1.: Struktur der RTP-BibliothekDie Klasse RtpSession ist die Schnittstelle zur Anwendung. Ein Objekt dieser Klasse spiegelt<strong>ein</strong> RTP-End-System wider. Je nach gewählten Optionen werden von <strong><strong>ein</strong>er</strong> RtpSessionObjekte der Klassen RtpReceiver, RtcpReceiver, RtpTransmitter und RtcpTransmitter instantiiert.Welche Objekte ausgewählt werden, hängt vom Modus der RtpSession ab. Send-Receive ist der Standard-Modus. In diesem Fall werden alle vier Objekte erzeugt und derrepräsentierte Endpunkt kann als Empfänger und Sender von RTP- und RTCP-Paketen <strong>ein</strong>gesetztwerden. Die Modi SendOnly und ReceiveOnly erzeugen jeweils nur die Empfängerbzw. Sender-Objekte für RTP und RTCP.Die Empfänger-Objekte nehmen Daten vom Netz entgegen, parsieren diese und meldendie erkannten Daten an die Anwendung. Diese Ereignis-gesteuerte Technik basiert auf der


5.1. RTP-Bibliothek 79Bibliothek libextcpp 1 , die <strong>ein</strong>en generischen Rahmen dafür bereitstellt. Dadurch ist es derAnwendung möglich die gewünschten Informationen auszuwählen. Bei der RTP-Bibliothekkann die Anwendung zwischen vier Arten von Informationen wählen. Um die Informationenzu empfangen muß die Anwendung vordefinierte Schnittstellen implementieren,in dem sie Instanzen von Handler-Klassen erzeugt. Für jede Art von Information existiertgenau <strong>ein</strong>e Handler-Klasse wie es in Abbildung 5.2 dargestellt ist. Nur durch die Instantiierungund den Aufruf der Funktion attach der jeweiligen Handler-Instanz ist die Anwendungregistriert und empfängt die Informationen. Mit der Funktion detach kann derInformationsfluß jederzeit unterbrochen und durch <strong>ein</strong> wiederholten Aufruf von attachwieder aufgenommen werden.Abbildung 5.2.: Ereignis-KlassenPktHandlerAnwendungen, die diesen Handler implementieren können RTP- und RTCP-Paketeempfangen. Dies ermöglicht <strong>ein</strong>e effiziente Technik zur Weiterleitung.DataHandlerDieser Handler empfängt nur die Payload-Daten der RTP-Pakete. Einem RTP-Mixerspart dieser Handler die Extrahierung des RTP-Payloads.CompHandlerRTP-Monitore können diesen Handler <strong>ein</strong>setzen. Die empfangenen RTCP-Pakete werdenintern in die <strong>ein</strong>zelnen Komponenten zerteilt und aufbereitet an diesen Handlerübergeben.SrcHandlerAn diesen Handler werden Informationen über hinzugekommene und verlorengegangeneRTP-Quellen geschickt. Damit hat die Anwendung <strong>ein</strong>en Überblick über dieaktuellen Teilnehmerzahlen.Mit der Klasse RtpTransmitter können RTP-Pakete auf zwei verschiedene Art versendet werden.Für Instanzen, wie RTP-Translator, können extern erzeugte RTP-Pakete an den Rtp-Transmitter übergeben werden, die unverändert verschickt werden. Im anderen Fall wirdan den RtpTransmitter nur die RTP-Nutzlast übergeben. Der RTP-Kopf wird vom RtpTransmitteranhand der Parameter der RtpSession konstruiert und mit der Nutzlast zusammenversendet.1 Diese Bibliothek wurde im Zusammenhang mit der C++-Mbus-Implementierung der <strong>AG</strong> <strong>Rechnernetze</strong> entwickelt.


80 Kapitel 5. ImplementierungRTCP-Pakete werden durch Objekte der Klasse RtcpTransmitter versendet. Im aktiven Modusgenerieren diese Objekte aus den gesammelten RTP-Statistiken RTCP-Pakete und versendendiese in den berechneten Intervallen. Der passive Modus ist für RTP-Translator, diek<strong>ein</strong>e eigenen RTCP-Pakete erzeugen, sondern nur andere RTCP-Pakete weiterleiten.Die Klassen RtpPacket und RtcpPacket sind Kapselungen für <strong>ein</strong>zelne Pakete. Diese bietendem Benutzer <strong>ein</strong>e <strong>ein</strong>fache und komfortable Schnittstelle zum Manipulieren und Auslesender Paket-Köpfe. Desweiteren haben beide Klassen Funktion zur Anpassung der Byte-Orderund verfügen über <strong>ein</strong>e dynamische Speicherverwaltung. RtpPacket hat zusätzlich Methodenzum Zugriff auf die Nutzlast und RtcpPacket bietet Funktionen zum Extrahieren der<strong>ein</strong>zelnen Komponenten des RTCP-Paketes.Zusätzlich zu den drei Modi kann das Verhalten der Sende- und Empfangs-Objekte durchOptionen be<strong>ein</strong>flußt werden. Aus Erfahrungen und der Begutachtung anderer RTP-Implementierungensind <strong>ein</strong>ige Definition des RFC 1889 nicht immer berücksichtigt worden. Dieaufgelisteten Optionen bieten die Möglichkeit das Verhalten der RTP-Bibliothek an diese Implementierungenanzupassen. Auch wenn diese Verhalten nicht dem Standard entsprechen,sind sie für die Praxis unverzichtbar.RTP_WEAK_VALIDATIONWerden RTP-Pakete von unbekannten RTP-Quellen empfangen, dürfen diese nur „aufProbe“ angenommen werden. Ist diese Option nicht gesetzt, werden nur Pakete vonbekannten Quellen angenommen, d.h. neue Quellen werden nur anhand von RTCP-Paketen akzeptiert.RTP_PROMISCUOUSMit dieser Optionen gesetzt können unbekannte RTP-Quellen angenommen und alsgültig gekennzeichnet werden, d.h. die Probezeit entfällt.RTP_NO_LOOPIst diese Option gesetzt, verhindert sie das Empfangen von eigenen RTP- bzw. RTCP-Paketen.Speziell für den Einsatz im Media-Prozessor wurde <strong>ein</strong>e weitere Option hinzugefügt. Ohnedas Setzen der Optionen RTP_PASSIV_MODE versendet <strong>ein</strong>e RtpSession durch das RtcpTransmitter-Objektselbsttätig RTCP-Pakete in den korrekten Intervallen. Arbeitet derMedia-Prozessor als Weiterleitungs<strong>ein</strong>heit (der Modus <strong>ein</strong>es Kontext-Objektes ist auf Forwardgesetzt), dann müssen nicht nur die RTP-Pakete, sondern auch die RTCP-Pakete unberührtweitergeleitet werden. Dazu darf die RtpSession k<strong>ein</strong>e eigenen RTCP-Pakete generieren.5.1.2. SchnittstelleDie RTP-Bibliothek bietet <strong>ein</strong>e generische Schnittstelle für Anwendungen. Zur Anbindungsind von <strong><strong>ein</strong>er</strong> Anwendung die zwei Klassen Notifier und Network, aus Abbildung 5.3,zu implementieren. Die Struktur AppContext ist die Schnittstelle für die internen Klassender Bibliothek, um auf die Implementierungen zu zugreifen. Mit der Klasse Network ist<strong>ein</strong>e Abstraktion für die Netzkommunikation geschaffen. Diese soll die Möglichkeit bieten<strong>ein</strong>en Kommunikationskanal für RTP und RTCP zu verwalten. Dabei entspricht <strong>ein</strong> Kanal<strong><strong>ein</strong>er</strong> bidirektionalen Verbindung. Funktionen wie Öffnen, Schließen, Senden und Empfangenmüssen auf diese Kanäle anwendbar s<strong>ein</strong>. Desweiteren muß <strong>ein</strong>e Überwachung dieser


5.2. MePro 81Kanäle möglich s<strong>ein</strong>. Bei ankommenden Daten soll dies <strong>ein</strong>em ausgewählten Objekt mitgeteiltwerden. Zusätzlich sollen Zeitgeber (Timer) registriert werden können, die nach Ablauf<strong>ein</strong>es Zeitintervalls <strong>ein</strong>e ausgewählte Funktion aufrufen. Dabei sollen diese Timer nur<strong>ein</strong>mal ausgelöst und daraufhin automatisch gelöscht werden. Der Abbruch <strong><strong>ein</strong>er</strong> Überwachungmuß jeder Zeit möglich s<strong>ein</strong>. Diese Funktionalität wird durch die Klasse Notifierbereitgestellt.Speziell die abstrakte Schnittstelle ermöglicht den vielseitigen Einsatz dieser RTP-Bibliothek.Durch die Unabhängigkeit von der systemspezifischen Abstraktion der Netzkommunikation,kann die Bibliothek RTP- sowie RTCP-Pakete über beliebige Netze transportieren. DieEntkopplung von <strong><strong>ein</strong>er</strong> eigenen Mainloop bietet <strong>ein</strong>e <strong>ein</strong>fache Integration ohne die Verwendungvon Threads und vermeidet somit Nebenläufigkeitsprobleme.Abbildung 5.3.: Generische Schnittstelle der RTP-Bibliothek5.2. MeProMEPRO ist <strong>ein</strong>e Implementierung der <strong>Architektur</strong> für Media-Prozessoren. Bei der <strong>Entwicklung</strong>von wurde besonders auf die folgenden Schwerpunkte der <strong>Architektur</strong> geachtet:• Schnittstellen für alle definierten Modul-Arten• Dynamisches Laden von Modulen• Definitionen aller Deskriptoren• Transport-Module für IPv4 und IPv6 (Unicast sowie Multicast)• Filter-Module für die Kodierungsverfahren PCM-A-Law und PCM-µ-Law• Ein Steuer-Modul für Kommandozeilen-Parameter.• Eine Termination für RTP-Ströme (Typ Audio)• Ein Kontext zur Weiterleitung (Modus Forwarding)• Einen Konferenz-Controller5.2.1. AufbauDas Verhalten <strong>ein</strong>es Media-Prozessors wird durch empfangene Daten gesteuert. Jedes Daten-Fragmentbeispielsweise aus <strong>ein</strong>em RTP-Strom, <strong><strong>ein</strong>er</strong> Datei oder aus <strong>ein</strong>em ISDN B-Kanal veranlaßt den Media-Prozessor zu <strong><strong>ein</strong>er</strong> Reaktion, die s<strong>ein</strong> weiteres Handeln bestimmt.


82 Kapitel 5. ImplementierungEine solche Vorgehensweise wird als Ereignis-gesteuert bezeichnet. Dieses Verhalten wirdvon MEPRO ausgenutzt. Anstatt Threads für die <strong>ein</strong>zelnen Konferenzen <strong>ein</strong>zusetzen, um <strong>ein</strong>eParallelität zu erzeugen, basiert MEPRO auf der Bibliothek libnotifier 2 , die konfigurierbareEreignisse an definierbare Funktionen melden kann. Als Ereignisse können SchreiboderLesevorgänge auf <strong>ein</strong>em Kommunikationskanal und Timer verwendet werden. Umdie Ereignisse verarbeiten zu können, verwendet die Bibliothek <strong>ein</strong>e Klasse Notifier, die<strong>ein</strong>e Mainloop zur Verfügung stellt.Zusammen mit <strong><strong>ein</strong>er</strong> Instanz des Notifier bilden zwei weitere Klassen die Basis von ME-PRO, wie in Abbildung 5.4 dargestellt. Die PluginCtrl-Klasse bietet <strong>ein</strong>e Schnittstelle zurSteuerung der Module und die Klasse MeProCtrl ist der Konferenz-Controller.Abbildung 5.4.: Abhängigkeiten innerhalb MEPRODie PluginCtrl implementiert die Fähigkeit des dynamischen Ladens von Modulen. Dafürwird <strong>ein</strong>e Bibliothek <strong>ein</strong>gesetzt, die zu der Sammlung von GNU Standard-C-Bibliotheken(glibc) gehört. Diese bietet die Möglichkeit beliebige Bibliotheken (Shared Objects) zu laden.Unter Verwendung von Symbolen können Funktionen in den Bibliotheken gefundenund aufgerufen werden.Beim Start von MEPRO wird von der Instanz des PluginCtrl die globale Konfigurationsdateigelesen. Diese ist unter /etc/mepro.conf zu finden. Sollte im Home-Verzeichnis des Benutzersnoch <strong>ein</strong>e Konfigurationsdatei mit dem Namen ˜/.mepro.conf vorhanden s<strong>ein</strong>,so kann damit die globale Konfiguration erweitert bzw. überschrieben werden. Die folgendeBeispieldatei enthält die fünf definierten Abschnitte, aus denen die Dateien bestehen.[global]ctrl_module=cmdlinemax_conf=10max_term=20log_error=/usr/var/log/mepro-error.loglog_info=/usr/var/log/mepro-info.log[network]ipv4-sock=/usr/lib/mepro/libipv4.soipv6-sock=/usr/lib/mepro/libipv6.so[user-interface]cmdline=/usr/lib/mepro/libcmdline.so[converter]PCMu=/usr/lib/mepro/libpcm-u.soPCMa=/usr/lib/mepro/libpcm-a.so2 Diese Bibliothek wurde im Zusammenhang mit der C++-Mbus-Implementierung der <strong>AG</strong> <strong>Rechnernetze</strong> entwickelt.


5.2. MePro 83[package]dtmf=/usr/lib/mepro/libdtmf.soDer Abschnitt global enthält Einstellungen, die das grundlegende Verhalten von MEPRObe<strong>ein</strong>flussen. Der Eintrag ctrl_module legt anhand des Names das zu verwendende Steuer-Modulfest. Mit den Einträgen max_conf und max_term werden Obergrenzen für dieAnzahl der verwalteten Konferenzen bzw. Terminationen festgelegt. Durch diese Einstellungenkönnen die von MEPRO maximal <strong>ein</strong>gesetzten Ressourcen kontrolliert werden. Wird<strong>ein</strong>e der Obergrenzen erreicht, lehnt MEPRO weitere Anforderungen ab. Eine Kontrolle dermaximalen Bandbreite ist momentan noch nicht möglich. Die Einträge log_error undlog_info in dem Abschnitt definieren zwei Dateien, in den Fehlermeldungen bzw. Informationenzum Ablauf protokolliert werden. Alle weiteren Abschnitte definieren die dynamischladbaren Bibliotheken, in denen Module für den Media-Prozessor enthalten sind.Der Abschnitt network definiert Transport-Module, uinterface enthält Steuer-Module,converter beschreibt die Filter-Module und Package enthält <strong>ein</strong>e Liste von Erweiterungs-Modulen. Alle Module werden nach dem Schema angeben.Der hier angebende Modul-Name hat nichts mit dem beschreibenden Namen <strong>ein</strong>esModuls zu tun, sondern dient nur der besseren Lesbarkeit der Konfigurationsdatei. DerDat<strong>ein</strong>ame muß mit <strong>ein</strong>em absoluten Pfad angegeben werden, damit die Datei gefundenwerden kann.Zusätzlich zu den Konfigurationsdateien kann MEPRO über die Kommandozeilen-Optionenaus der folgenden Liste gesteuert werden.-h, --helpGibt <strong>ein</strong>e Liste aller möglichen Argumente inklusive <strong><strong>ein</strong>er</strong> kurzen Beschreibung ausund beendet MEPRO.-c, --config Gibt den Dat<strong>ein</strong>amen der zu verwendenden globalen Konfigurationsdatei an.-u, --user-config Setzt den Dat<strong>ein</strong>amen der Benutzer-Konfigurationsdatei. Einstellungen aus dieser Dateiüberschreiben die globalen Einstellungen.-i, --interface Definiert das zu verwendende Steuer-Modul. Dabei ist der Name des Moduls <strong>ein</strong>zusetzenund nicht die Bezeichnung aus der Konfigurationsdatei.-l, --list-interfacesGibt <strong>ein</strong>e Liste aller vorhandenen Module aus und beendet MEPRO. Existiert die Funktiondescription in <strong>ein</strong>em Modul, so wird zusätzlich die Beschreibung ausgegeben.--Wenn dem ausgewählten Steuer-Modul Optionen übergeben werden sollen, so müssendie beiden Striche als Trennzeichen <strong>ein</strong>gefügt werden. Beispielsweise gibt derAufruf mepro -i cmdline -- -t die Option -t an das Steuer-Modul mit demNamen cmdline.


84 Kapitel 5. Implementierung5.2.2. ModuleDas Laden sowie Instantiieren von Modulen wird durch die Template-Klasse IPluginLoaderrealisiert, d.h. von ihren konkreten Instanzen. Für die verschiedenen Module müssen derKlassen nur die Typen des Moduls und der zugehörigen Bedingung, die an die capable-Funktion übergeben wird, bekannt gemacht werden. Durch die Definition der <strong>ein</strong>heitlichenSchnittstelle in der <strong>Architektur</strong> ist diese Ver<strong>ein</strong>fachung für alle Modul-Typen möglich.Die Instanzen des IPluginLoader, für die verschiedenen Modul-Typen, werden von <strong>ein</strong>emObjekt der PluginCtrl-Klasse verwaltet. Für die Termination-Objekte ist diese Klasse dieSchnittstelle zu den Modulen.Transport-ModuleMEPRO implementiert die Protokolle IPv4 und IPv6 der Vermittlungsschicht. Beide Transport-Moduleunterstützen Unicast und Multicast.Der capable-Funktion der Module wird <strong>ein</strong>e Struktur übergeben, die zwei Texte und zweiPorts enthält. Die Texte enthalten <strong>ein</strong>en Rechnernamen oder <strong>ein</strong>e IP-Adresse. Beide Moduleprüfen mittels der Funktion getaddrinfo, wie sie im RFC 2553 [15] beschrieben wird,ob der angebene Adreßtyp unterstützt wird.Die Implementierungen der Module gehen davon aus, daß das zugrundeliegende System<strong>ein</strong>e BSD-Socket-Schnittstelle bereitstellt. Die open-Funktion der Module löst die angegebeneAdresse auf, kreiert <strong>ein</strong> Transport-Objekt, setzt die benötigten Optionen und bindetdas Objekt an die lokale Anwendungsadresse. Ist diese nicht definiert, so wird vom System<strong>ein</strong>e bestimmt. Sollte in dem Text <strong>ein</strong>e Multicast-Adresse enthalten s<strong>ein</strong>, so werden dieentsprechenden Optionen hier gesetzt. Die drei Funktionen send, recv und close sinddirekte Abbildungen auf Socket Funktionen.Controller-ModuleMEPRO implementiert für die Steuerung <strong>ein</strong> Modul, daß über Kommandozeilen-ArgumenteKonferenzen instantiieren kann. Diese Schnittstelle ist <strong>ein</strong>fach in der Bedienung und vielseitig<strong>ein</strong>setzbar und eignet sich somit für <strong>ein</strong>e erste Variante <strong>ein</strong>es Steuer-Moduls.Da Controller-Modul sowie MEPRO Argumente von der Kommandozeile lesen, wurde zurTrennung die Option -- als Separator verwendet. Alle Argumente davor werden an denMeProCtrl weitergereicht, und alle anderen Optionen werden an das ausgewählte Controller-Modulweitergeleitet. Die Optionen des Controller-Moduls sind in der folgendenAuflistung enthalten.-h, --helpGibt <strong>ein</strong>e Liste aller möglichen Argumente inklusive <strong><strong>ein</strong>er</strong> kurzen Beschreibung ausund beendet MEPRO.-t, --termination (host,rx,tx,codec)Dieser Parameter definiert <strong>ein</strong>e Termination inklusive vier Optionen. host definiertden entfernten Rechner. Der zugehörige Port wird durch tx angeben und rx legt denlokalen Port fest. Ist der Port null, wird er vom System bestimmt. Die Option codecwird in dem Format RTP: angeben. wird durch <strong>ein</strong>eRTP-Payload-Nummer ersetzt, die in <strong>ein</strong>em RTP-Profil definiert ist.


5.2. MePro 85Mit dem folgenden Kommando kann <strong>ein</strong>e Konferenz zwischen den Rechnern dolormin.\tzi.de und ringelreigen.ipv6.tzi.de instantiiert werden, in der Audio-Informationenunter Verwendung des PCM-µ-Law-Kodierungsverfahren übertragen werden:mepro -i cmdline -- -t (dolormin.tzi.de,45000,45002,RTP:0) \-t (ringelreigen.ipv6.tzi.de,45002,45000,RTP:0)Filter-ModuleDie implementierten Filter-Module basieren auf der Bibliothek libst, die mit dem Programmsox [39] ausgeliefert wird. Die Module selbst bilden nur <strong>ein</strong>e Brücke zwischen der Bibliothekund MEPRO.Die Bibliothek bietet <strong>ein</strong>e Schnittstelle mit sechs Funktionen für jedes unterstützte Kodierungsverfahren:startreadInitialisiert das Einlesen der Audio-Informationen indem z.B. Parameter gesetzt oderKopf-Informationen parsiert werden.readDer Funktion wird <strong>ein</strong> Puffer sowie dessen Länge übergeben. Gelesen werden so vieleSamples wie in den Puffer passen. Die Daten werden als 32-Bit-Worte in den Puffergeschrieben.stopreadBeendet den Lesevorgang und gibt eventuell belegte Ressourcen frei.startwriteInitialisiert den Schreibvorgang der Audio-Informationen, indem z.B. Parameter gesetztoder Kopf-Informationen geschrieben werden.writeÜbergeben wird der Funktion <strong>ein</strong> Puffer und dessen Länge. Die aus dem Puffer gelesenenAudio-Informationen werden in die Kodierung umgewandelt.stopwriteBeendet den Schreibvorgang und korrigiert eventuell Kopf-Informationen.Diese Schnittstelle bietet Funktionen, um Audio-Informationen zu kodieren bzw. zu dekodieren.Zusätzlich können die Audio-Informationen in Dateien gespeichert bzw. aus Dateiengelesen werden.5.2.3. Konferenz-ModellMEPRO implementiert grundlegende Varianten der drei Komponenten des Konferenz-Modells.Die Termination-Objekte akzeptieren alle der definierten Deskriptoren, wobei die Package-,Events- und Signals-Deskriptoren nicht verarbeitet werden. Als Quellen werdenRTP-Ströme akzeptiert. Die Anbindung an die RTP-Bibliothek unterstützt alle definiertenHandler-Klassen.


86 Kapitel 5. ImplementierungDie Kontext-Objekte sind auf Audio-Informationen ausgelegt, können aber auch Video-Informationenweiterleiten. Im Forwarding-Modus ist <strong>ein</strong>e Unterstützung für den Routing-Deskriptor implementiert. Alle weiteren definierten Deskriptoren werden erkannt undbis auf den State-Deskriptor ausgewertet. 3 Desweiteren wird das spezielle Kontext-Objekt mit dem Bezeichner NULL instantiiert und kann zur Zwischenlagerung von Termination-Objekten<strong>ein</strong>gesetzt werden.Die exemplarische Implementierung des Konferenz-Controller unterstützt alle Funktionender Schnittstelle, wie sie in der <strong>Architektur</strong> für Media-Prozessoren definiert ist, d.h. Termination-und Kontext-Objekte können erzeugt, modifiziert und gelöscht werden.5.3. ZusammenfassungViele der ausgeführten Tests haben sich mit der eigenen RTP-Bibliothek beschäftigt. Dafürist das Programm RAT als Kommunikationspartner <strong>ein</strong>gesetzt worden. Die Tests haben ergeben,daß die eigene RTP-Bibliothek sich korrekt nach dem Standard verhält und Kommunikationskanälezu anderen RTP-End-Systemen aufgebaut werden können. RTCP ist soweitimplementiert, daß andere RTP-End-Systeme die Pakete verstehen und akzeptieren.MEPRO wurde in mehreren Langzeittests als Vermittlung zwischen zwei RAT-Endpunkten<strong>ein</strong>gesetzt. Außer der Weiterleitung von RTP-Paketen wurde dabei auch die Kommunikationzwischen <strong>ein</strong>em IPv4- und <strong>ein</strong>em IPv6-Endpunkt getestet. Bei allen Tests hat sich MEPRO alsstabiler und anpaßbarer Media-Prozessor erwiesen, der zur Erweiterung der Funktionalitätbeigetragen hat.Die Implementierung bietet <strong>ein</strong>e gute Basis für weitere <strong>Entwicklung</strong>en und ist im jetzigenStadium <strong>ein</strong> stabile und gut konfigurierbare Implementierung <strong>ein</strong>es Media-Prozessors.Durch die dynamische Einbindung von Bibliotheken als Module ist <strong>ein</strong>e hervorragendeMöglichkeit für Erweiterungen geschaffen. Diese Eigenschaften sowie die strikte Einhaltungder Definitionen aus der <strong>Architektur</strong> machen MEPRO zu <strong>ein</strong>em vielseitig <strong>ein</strong>satzfähigenMedia-Prozessor.3 Für diesen Deskriptor ist <strong>ein</strong>e Erweiterung der gesamten Status-Verwaltung notwendig.


6. Zusammenfassung und AusblickZiel dieser Diplomarbeit ist die <strong>Entwicklung</strong> <strong><strong>ein</strong>er</strong> <strong>verteilten</strong> <strong>Architektur</strong> für <strong>ein</strong> modularesSystem zur Adaption von Steuer- und Medienströmen. Anhand dieser soll die Implementierung<strong>ein</strong>es Media-Prozessors realisiert werden, die sich an den Konzepten und derDefinition der <strong>Architektur</strong> orientiert.6.1. Stand der <strong>Entwicklung</strong>Die entwickelte <strong>Architektur</strong> bietet wohldefinierte Modelle, Strukturen und Kommunikationsschnittstellenzur Realisierung <strong>ein</strong>es Media-Prozessors. Die wichtigen Aufgaben wieVermittlung zwischen verschiedenen Netzen, Umwandlung von Kodierungsverfahren, Analyseund Manipulation der Daten und Schnittstelle zur Kommunikation mit der externenSteuer<strong>ein</strong>heit sind in Modulen definiert, um die Erweiterbarkeit in diesen Bereichen zuermöglichen. Das definierte Modell für Konferenzen, das aus den Ideen von MEGACO entstandenist, bietet <strong>ein</strong>e <strong>ein</strong>fache und modulare Beschreibung. Die Erweiterung durch denKonferenz-Controller ermöglicht mittels der wohldefinierten Schnittstelle und des Deskriptoren-Konzepts<strong>ein</strong>e überschaubare und mächtige Möglichkeit zur Steuerung mehrerer parallelerKonferenzen.MEPRO ist die Implementierung der <strong>Architektur</strong> für Media-Prozessoren, die im Rahmendieser Diplomarbeit entwickelt wurde. Diese bietet viele Möglichkeiten zur Erweiterungder Funktionalität. Die dafür bereitgestellte Technik ermöglicht das dynamische Einbindenvon Modulen, die zur Erweiterung <strong>ein</strong>gesetzt werden. Ein weiterer Aspekt bei der <strong>Entwicklung</strong>von MEPRO war die Effizienz. Dafür wurde bei der Implementierung darauf geachtet,daß die Pakete der Medienströme, die mehrmals pro Sekunde durch den Media-Prozessorgeleitet werden, nicht unnötig dupliziert werden und immer den direkten Weg innerhalbdes Media-Prozessors zum Ziel nehmen.Zur Integration in Mbone- und IP-Telefonie-Konferenzen stellt die <strong>Architektur</strong> und damitauch MEPRO das Modell der externen Steuer<strong>ein</strong>heiten zur Verfügung. Die Steuer-Moduleermöglichen <strong>ein</strong>e dynamische Anpassung an verschiedene Steuer<strong>ein</strong>heiten durch die Bereitstellung<strong><strong>ein</strong>er</strong> entsprechenden Schnittstelle.Die im Rahmen dieser Diplomarbeit entwickelte RTP-Bibliothek ist durch ihren modularenAufbau vielseitig <strong>ein</strong>setzbar. Mit dem generischen Ereignis-Mechanismus kann jede Anwendungdie gewünschten Informationen herausfiltern und verarbeiten. Durch die Entkopplungvon <strong>ein</strong>em vordefinierten Protokoll für die Vermittlungsschicht ist der Einsatz in beliebigenNetzen realisierbar.Beide Implementierungen, MEPRO und die RTP-Bibliothek, bieten durch <strong>ein</strong> stabiles Grundgerüst,modulare Strukturen und wohldefinierte Schnittstellen gute Möglichkeiten zur Erweiterungihrer Funktionalität. Naheliegende Erweiterungen für die Implementierungenwerden im folgenden anhand der <strong>ein</strong>zelnen Komponenten beschrieben.


88 Kapitel 6. Zusammenfassung und Ausblick• TerminationDas Termination-Objekt von MEPRO bietet grundlegende Funktionalitäten für denTransport von RTP-Daten. Wichtige Erweiterungen wären die Unterstützung weitererQuellen wie Dateien oder Geräte. Da MEPRO beispielsweise als Anrufbeantworter indie IP-Telefonie-Infrastruktur der <strong>AG</strong> <strong>Rechnernetze</strong> integriert werden kann, um dieAnsagetexte abzuspielen und die Anrufe aufzuzeichnen, ist diese Art von Quelle <strong>ein</strong>enaheliegende Erweiterung. Werden auch Geräte wie z.B. ISDN-Karten unterstützt,kann auch <strong>ein</strong>e Anbindung an das herkömmliche Telefonnetz realisiert werden.• KontexteEine der wichtigsten Erweiterungen ist die Unterstützung des Routing-Deskriptors.Dies ermöglicht <strong>ein</strong>e exaktere Steuerung der Medienströme. Damit verbunden ist dieUnterstützung der Mixer-Funktion.Unabhängig davon, welches Konferenz-Modell gewählt wird, muß <strong>ein</strong> beteiligter Endpunktoder <strong>ein</strong> zusätzlich <strong>ein</strong>geführtes zentrales System die Medienströme mischen,sobald mehr als zwei Teilnehmer involviert sind. Für diese Art von Problem kann <strong>ein</strong>eKonferenz-Zentrale <strong>ein</strong>gesetzt werden, die durch <strong>ein</strong>en Media-Prozessor und <strong>ein</strong>e externeSteuer<strong>ein</strong>heit, welche die Signalisierung übernimmt, realisiert werden kann.Aus diesem Grund ist die Erweiterung des Media-Prozessors zu <strong><strong>ein</strong>er</strong> Konferenz-Zentrale <strong>ein</strong>e der nächsten Aufgaben.• ModuleModule sind die Komponenten, die den Media-Prozessor zu <strong>ein</strong>em besonders anpassungsfähigenSystem machen. Eine Vielzahl von Modulen ermöglicht dem Media-Prozessor <strong>ein</strong>e Eingliederung in möglichst viele verschiedene Konstellationen. Je mehrProtokolle für die Vermittlungsschicht <strong>ein</strong> Media-Prozessor unterstützt, desto mehrNetze können in <strong><strong>ein</strong>er</strong> Konferenz verbunden werden. Auch die anderen Modul-Artenkönnen bei steigender Anzahl die Fähigkeiten des Media-Prozessors entscheidend erweitern.Die von MEPRO unterstützten Protokolle der Vermittlungsschicht, IPv4 und IPv6, dekken<strong>ein</strong>en wesentlichen Teil der interessanten Netze ab. Hingegen sind die Mengeder vorhandenen Filter-Module gegenüber der möglichen Kodierungsverfahren sehrgering. Um als Übersetzer in Konferenzen zu fungieren, ist <strong>ein</strong>e Erweiterung dieserModule sehr wichtig. Bei <strong><strong>ein</strong>er</strong> Anbindung an das herkömmliche Telefonnetz sinddie Erkennung sowie die Erzeugung von DTMF von Interesse. Diese Funktionalitätkönnte mittels <strong>ein</strong>es Package-Moduls realisiert werden. Dies sind nur Beispiele fürnaheliegende Erweiterungen. Im Einsatz wird sich zeigen, welche weiteren Modulesich als notwendig und nützlich erweisen.• IntegrationDer Einsatz von MEPRO in Mbone-Konferenzen bedarf k<strong><strong>ein</strong>er</strong> speziellen Integration.Die meisten dieser Konferenzen werden zuvor angekündigt und manuell konfiguriert.Dies gestattet es, MEPRO bei Bedarf zu konfigurieren und zu starten.Für die Integration in die IP-Telefonie müssen auf Seiten von MEPRO sowie der jeweiligenIP-Telefonie-Infrastruktur Änderungen vorgenommen werden. MEPRO benötigt<strong>ein</strong> interaktives Steuer-Modul, das <strong><strong>ein</strong>er</strong> externen Steuer<strong>ein</strong>heit ermöglicht, Rückmeldungenüber die erteilten Kommandos zu erhalten. Die Steuer<strong>ein</strong>heit wiederum mußin das IP-Telefonie-System integriert werden. Denkbar wäre die Verwendung <strong>ein</strong>esSIP-Proxy oder <strong>ein</strong>es H.323-Gatekeeper als Steuer<strong>ein</strong>heit. Diese Komponenten sindin die Anrufsignalisierung involviert und haben die Möglichkeit, die Adressen der


6.2. Weiterer Ausblick 89Medienströme zu be<strong>ein</strong>flussen, um den Media-Prozessor zwischen die Endpunkte zustellen.6.2. Weiterer AusblickDas Internet besteht aus <strong><strong>ein</strong>er</strong> Vielzahl von heterogenen Netzen, und dieser Zustand wirdsich auch in Zukunft nicht ändern. Somit ändert sich auch das grundsätzliche Szenario fürMultimedia-Konferenzen im Internet nicht. Es werden immer Komponenten erforderlichs<strong>ein</strong>, die Medienströme über verschiedene Vermittlungsschichtsprotokolle transportierenund die Kodierungsverfahren der Medienströme für die <strong>ein</strong>zelnen Teilnehmer anpassenkönnen.Die Multicast-Adressierung wird vielleicht in den kommenden Jahren noch in weiterenTeilnetzen des Internet unterstützt, so daß Mbone-Konferenzen bald zum Alltag gehören.Welche Konferenzumgebung sich in der IP-Telefonie durchsetzt, ist nicht absehbar.In Zukunft sollen MEPRO oder andere Implementierungen der <strong>Architektur</strong> für Media-Prozessorendafür sorgen, daß in beliebigen Multimedia-Konferenzen, ob Mbone oder IP-Telefonie,der Transport und die professionelle Verarbeitung von Medienströmen k<strong>ein</strong> Problemdarstellt, sondern <strong>ein</strong>e selbstverständliche Funktion ist.


90 Kapitel 6. Zusammenfassung und Ausblick


A. Verlustunempfindlicher Transport vonMedienströmen mit RTPDer Transport von Medienströmen in IP-basierten Netzen wird hauptsächlich mittels RTPrealisiert. Zu den Diensten, die RTP sowie die darunterliegenden Protokolle nicht bereitstellen,gehören rechtzeitige Auslieferung und Fehlerbehebung. 1 Die Kompensierung des durchverlorengegangene Pakete entstehenden Schadens ist in der Kommunikation über paketvermittelteNetze <strong>ein</strong> wichtiger Aspekt. Im folgenden werden zwei Verfahren beschrieben, dieMöglichkeiten bieten, den Transport von Medienströmen mit RTP zu erweitern, um denVerlust von Paketen zu korrigieren oder die Wahrsch<strong>ein</strong>lichkeit des Verlusts von auf<strong>ein</strong>anderfolgenden Paketen zu minimieren. Für den Einsatz beider Verfahren kann <strong>ein</strong> spezielldafür entwickelter RTP-Payload-Typ verwendet werden, der im RFC 2198 [42] definiert ist.A.1.RTP-Payload-Typ für redundante InformationenEine Möglichkeit, den Verlust von Paketen auszugleichen, ist die Verwendung von redundantenInformationen zur Rekonstruktion der verlorengegangenen Informationen. Um diebenötigte Bandbreite nicht zu verdoppeln, werden die zusätzlichen Informationen durchverschiedene mathematische Verfahren komprimiert. Der in RFC 2198 definierte RTP-Payload-Typist für den Transport von beliebigen Audio-Informationen verwendbar und kannzusätzlich redundante Informationen transportieren.Zu überlegen ist dabei, auf welche Weise die redundanten Informationen in die RTP-Pakete<strong>ein</strong>gefügt werden. Wichtig ist, daß die zusätzlichen Informationen im Verhältnis zu der eigentlichenNutzlast nicht <strong>ein</strong>en zu großen Anteil <strong>ein</strong>nehmen. Desweiteren muß festgelegtwerden, wo innerhalb <strong>ein</strong>es RTP-Paketes die zusätzlichen Informationen <strong>ein</strong>gesetzt werden.Eine Variante ist die Verwendung der Kopf-Erweiterung von RTP-Paketen. Eine andereMöglichkeit besteht in der Definition <strong>ein</strong>es neuen RTP-Payload-Typs, in dem die redundantenDaten in der Nutzlast transportiert werden. Eine solche Methode ist in RFC 2198beschrieben.Die Struktur der Nutzlast des RTP-Payload-Typs für redundante Informationen ist derartigaufgebaut, daß es möglich ist, außer Audio-Informationen auch beliebige andere Daten alsRedundanz-Informationen zu verwenden. Dabei werden in 32-Bit-Worten Beschreibungender redundanten Informationen bestehend aus RTP-Payload-Typ, Zeitstempel und Längenangabean den Anfang der Nutzlast geschrieben, wie dem Beispiel-Paket aus Abbildung A.1zu entnehmen ist. Der Zeitstempel der redundanten Informationen ist relativ zu dem deseigentlichen (primären) Mediendaten-Fragments in dem RTP-Paket angegeben. Die Längewird in der Einheit Byte angegeben. Nach der Beschreibung aller Blöcke mit redundantenInformationen wird <strong>ein</strong>e abschließende Beschreibung für die primären Mediendaten <strong>ein</strong>-1 In diesem Fall wird davon ausgegangen, daß auf der Transportschicht UDP oder <strong>ein</strong> ähnliches Protokoll<strong>ein</strong>gesetzt wird.


92 Anhang A. Verlustunempfindlicher Transport von Medienströmen mit RTPgefügt, die k<strong>ein</strong>e Längenangabe enthält. In dem Beispiel wird <strong>ein</strong>e Block von 14 Bytes mitredundanten Daten angegeben. Enthalt sind darin Audio-Informationen, die mit LPC kodiertsind. Als Primäre Nutzlast werden weitere 84 Byte Audio-Informationen in dem Pakettransportiert.0 16 32V=2P X CC M PT SequenznummerBeschreibung <strong>ein</strong>es Blocksmit redundanten Informationen.Zeitstempel der primären MediendatenSynchronisationsquelle (SSRC)Beschreibung des Blocksmit den primärenMediendaten}}1 Block PT=7 Zeitstempel Block Länge0 Block PT=5LPC kodierte redundante Daten (PT=7)(14 Byte)DVI4 kodierte Mediendaten (PT=5)(84 Byte)Abbildung A.1.: RTP-Paket mit redundanten InformationenMittels dieser Techniken können beliebige Algorithmen für die Erzeugung der redundantenInformationen verwendet werden. Zusätzlich ist die Möglichkeit gegeben, mehrere Blöckemit redundanten Informationen in <strong>ein</strong>em RTP-Pakete zu verschicken.A.2.InterleavingInterleaving ist die Bezeichnung für <strong>ein</strong> mathematisch <strong>ein</strong>faches Verfahren, das die Anzahlder auf<strong>ein</strong>ander folgenden defekten Fragmente in <strong>ein</strong>em Medienstrom reduzieren soll. Dafürwerden die <strong>ein</strong>zelnen Frames 2 der kodierten Mediendaten vom Sender umsortiert. Zielist es dabei, daß k<strong>ein</strong>e Frames, die nach<strong>ein</strong>ander abgespielt werden, direkt hinter<strong>ein</strong>anderversendet werden. Kommt <strong>ein</strong>e Reihe von Paketen defekt oder gar nicht beim Empfängeran, so sind in dem Fall k<strong>ein</strong>e auf<strong>ein</strong>ander folgenden Frames betroffen. Um dieses Verfahrenmit RTP <strong>ein</strong>zusetzen, kann der RTP-Payload-Typ aus RFC 2198 verwendet werden.Damit der Empfänger die Frames wieder in die korrekte Reihenfolge bringen kann, müssenin der Nutzlast des RTP-Paketes zusätzliche Informationen gespeichert werden. Dieswird durch die Unterstruktur des RTP-Payload-Typs aus RFC 2198 erbracht. Ausgehend davon,daß jeweils vier Frames in <strong>ein</strong> RTP-Paket gehören, werden die ersten drei Frames alsredundante Daten in die Nutzlast <strong>ein</strong>getragen und der zeitlich erste Frame als primäresMediendaten-Fragment. 3 Für den Empfänger ist die Verarbeitung dieser Daten mit <strong>ein</strong>em2 Mit Samples ist dies auch möglich. Wichtig ist beim Interleaving nur, daß die Informationen der <strong>ein</strong>zelnenauf<strong>ein</strong>ander folgenden Frames bzw. Samples nicht auf<strong>ein</strong>ander aufbauen.3 Das zeitlich erste Fragment muß als primäre Nutzlast <strong>ein</strong>gefügt werden, da die relativen Zeitstempel der


A.3. Forward Error Correction 93geringen Aufwand verbunden, da die Frames nur in ihrer Reihenfolge angepaßt werdenmüssen und sonst k<strong>ein</strong>e rechenintensive Rekonstruktion erforderlich ist. Durch Interleavingist k<strong>ein</strong>e Wiederherstellung von defekten Daten möglich.A.3.Forward Error CorrectionDer RFC 2733 [49] beschreibt <strong>ein</strong>en RTP-Payload-Typ für den Transport von FEC-Daten(Forward Error Correction). Entwickelt wurde dieser Typ für die FEC-Algorithmen, die aufder Exklusive-Oder-Operation basieren. Mittels dieser <strong>ein</strong>fachen mathematischen Operationwird aus mehreren RTP-Paketen des Medienstroms <strong>ein</strong> Fragment erstellt, das zur Rekonstruktionder Original-Pakete verwendet werden kann. Der im RFC definierte RTP-Payload-Typ sieht vor, daß die FEC-Informationen über <strong>ein</strong>e separate Transportverbindung geschicktwerden. Dadurch können auch Empfänger ohne <strong>ein</strong>e FEC-Implementierung die RTP-Paketelesen und auswerten.Eine alternative Methode beschreibt die Verwendung des RTP-Payload-Typs aus RFC 2198.Dabei wird <strong>ein</strong> RTP-Paket, das FEC-Informationen transportiert, in mehreren Schritten zusammengesetzt.Im ersten Schritt werden die RTP-Pakete erzeugt, die nur die primäreNutzlast, d.h. die realen Mediendaten enthalten. Diese werden nach der Definition desRFCs 2733 in <strong>ein</strong> FEC-Paket <strong>ein</strong>gefügt. Allerdings werden aus den Paketen eventuell vorhandeneKopf-Erweiterungen, Füllbytes und CSRC-Listen zuvor entfernt. Dieses kompletteFEC-Paket, d.h. Kopf sowie Nutzlast, werden als redundante Informationen in das endgültigeRTP-Paket <strong>ein</strong>gefügt. Im letzten Schritt wird das aktuell zu versendete Mediendaten-Fragment an die Nutzlast angefügt. Die vor der Generierung des FEC-Paketes entferntenTeile aus dem RTP-Paket müssen in das resultierende Paket wieder integriert werden. Aufdiese Weise können über <strong>ein</strong>e <strong>ein</strong>zige Verbindung Medien- sowie FEC-Daten ausgetauschtwerden. Das Erzeugen der Pakete auf seiten des Senders sowie das Verarbeiten auf seitendes Empfängers erfordern <strong>ein</strong>e erhöhte Rechenleistung und können somit zu Verzögerungenführen.Blöcke für redundante Informationen nur positiv s<strong>ein</strong> können.


94 Anhang A. Verlustunempfindlicher Transport von Medienströmen mit RTP


GlossarAAbstract Syntax Notation One (ASN.1)Eine Sprache, mit der Datenstrukturen beschrieben werden können. ASN.1 abstrahiertvon der eigentlichen Repräsentation der Daten <strong>ein</strong>es Rechners, um Datenstrukturenunabhängig von der <strong>Architektur</strong> zu übertragen. ASN.1 wird häufig im Umfeldder ITU-T benutzt.American Standard Code for Information Interchange (ASCII)Spezifiziert die Kodierung von 128 Zeichen (Buchstaben, Ziffern, Interpunktion undSteuerzeichen) geeignet für den Austausch englischsprachiger Dokumente. ASCII bildetdie Grundlage der meisten Computer-Zeichensätze.CCodecEin Codec ist <strong>ein</strong> Verfahren für die Kodierung von Audio- oder Videodaten. Codecsunterscheiden sich hinsichtlich der Effektivität, Geschwindigkeit und Art der Komprimierung,und vor allem bei verlustbehafteter Komprimierung hinsichtlich der Qualitätdes Stroms.DDual Tone Multi Frequency (DTMF)Töne für die verschiedenen Tasten des Telefons. Jede Zahl bzw. jedes Sonderzeichengeneriert zwei Töne, <strong>ein</strong>en für die Reihe, <strong>ein</strong>en für die Spalte. Die beiden Töne werdensimultan übertragen. Hiermit sind sowohl Tonwahl als auch die Steuerung vonTelefonanlagen/Computern möglich.EExtensible Markup Language (XML)XML ist <strong>ein</strong>e Meta-Sprache; <strong>ein</strong>e Sprache zum Erzeugen eigener Beschreibungssprachen(Markup Languages).FForward Error CorrectionEin Verfahren zur Erzeugung von redundanten Informationen, das beim Transport


96 Glossarvon Mediendaten <strong>ein</strong>gesetzt wird, um verlorengegangene Pakete rekonstruieren zukönnen.GG.711Bezeichnet <strong>ein</strong> Kodierungsverfahren für Audio-Informationen, von dem zwei Variantenexistieren. Die µ-Law Variante wird in Nord-Amerika und Japan im Telefonnetz<strong>ein</strong>gesetzt. Die Variante A-Law hingegen wird in Europa verwendet.GatewayEin Gateway verbindet zwei Netze mit<strong>ein</strong>ander, indem es zwischen verschiedenenProtokollen <strong><strong>ein</strong>er</strong> Schicht vermittelt. Beispielsweise kann <strong>ein</strong> Gateway zwischen <strong>ein</strong>emIP- und <strong>ein</strong>em ATM-Netz vermitteln oder <strong>ein</strong> Gespräch zwischen <strong>ein</strong>em H.323-und <strong>ein</strong>em SIP-Endpunkt ermöglichen.Graphical User Interface (GUI)Engl. für grafische Benutzungsoberfläche.HH.323H.323 ist <strong>ein</strong> Telefoniestandard der ITU-T für paket-basierte Netze.H.450In der H.450-Serie werden Mehrwertdienste für H.323 spezifiziert. Die EmpfehlungH.450.1 beschreibt den generellen Aufbau und Einsatz von Mehrwertdiensten.Hypertext Markup Language (HTML)Eine Syntax zur logischen Auszeichnung von Dokumenten im WWW.Hypertext Transfer Protocol (HTTP)HTTP dient zum Transport von <strong>verteilten</strong> HTML-Dokumenten.IInterleavingEin Verfahren, das beim Transport von Mediendaten <strong>ein</strong>gesetzt wird, um den Verlustvon auf<strong>ein</strong>anderfolgenden Fragmenten zu verringern.International Telecommunication Union (ITU)Die ITU ist <strong>ein</strong> internationales Gremium, dessen Mitglieder ursprünglich aus demBereich der Telefonie kamen. Heute beschäftigen sich Teile der ITU auch mit anderenInternet-Technologien.Internet Assigned Numbers Authority (IANA)Die zentrale Instanz für die Vergabe von <strong>ein</strong>deutigen Bezeichnern für Parameter vonInternet-Protokollen.Internet Engineering Task Force (IETF)Standardisierungsgremium, das Protokolle und Technologien für das Internet entwickeltund standardisiert.


Glossar 97Internet Protocol (IP)Das Internet Protocol dient zur netzübergreifenden Adressierung von Rechnern inpaketorientierten Netzen (siehe auch RFC791).IP-AdresseEine 32-bit-Zahl, die <strong>ein</strong>em Rechner im Internet <strong>ein</strong>deutig zugeordnet ist. In der neuenVersion 6 des Internet-Protokolls ist der Nummernraum auf 128 Bit vergrößertworden.IP-TelefonieTelefonie über IP-basierte Netze. Die Konferenzumgebungen H.323 und SIP bietendiese Art der Telefonie.MMulticastMulticast ist <strong>ein</strong>e Kommunikationsbeziehung zwischen <strong>ein</strong>em Sender und mehrerenEmpfängern.Multicast Backbone (Mbone)Der Mbone ist der Multicast Backbone, der <strong>ein</strong>e weltweite Infrastruktur für die Verteilungvon Daten auf Basis der Multicast-Adressierung darstellt.Multipoint Control Unit (MCU)Steuerungsmodul innerhalb <strong><strong>ein</strong>er</strong> Mehrpunktbeziehung.PPortEin Port ist <strong>ein</strong>e Anwendungsadresse. Verwendet werden solche Adressen beispielsweis<strong>ein</strong> den Protokollen TCP und UDP.Public Switched Telephone Network (PSTN)Unter PSTN versteht man das Öffentliche Telefonnetz.RReal-Time Control Protocol (RTCP)RTCP liefert periodisch Rückmeldungen über die Qualität des zugehörigen RTP-Stromsund Informationen über die Teilnehmer.Real-Time Transport Protocol (RTP)RTP spezifiziert End-zu-End-Übertragungsdienste unter Bewahrung des Echtzeitcharakters.SSession Description Protocol (SDP)SDP dient zur Beschreibung von Multimedia-Konferenzen. Hierfür werden Beschreibungslementezur Verfügung gestellt, um die Konferenz selbst sowie die Medienströmezu beschreiben.


98 GlossarSession Initiation Protocol (SIP)Telefonie-Standard der Internet Engineering Task Force für IP-basierte Netze.Simple Mail Transfer Protocol (SMTP)SMTP dient zum Transport von E-Mail-Nachrichten im Internet (RFC 821). Der Aufbaudes Kopfes <strong><strong>ein</strong>er</strong> E-Mail ist in RFC 822 beschrieben.TTime to Live (TTL)Die TTL gibt an, wieviele Router <strong>ein</strong> Paket maximal passieren soll. Jeder Router, derdas Paket empfängt, dekrementiert die TTL im <strong>ein</strong>s. Ist die TTL null, so wird das Paketgelöscht.Transmission Control Protocol (TCP)Gewährleistet <strong>ein</strong>e zuverlässige End-zu-End Verbindung zweier Anwendungen über<strong>ein</strong> paketorientiertes Übertragungsmedium (siehe auch RFC 793).TransportadresseEine Transportadresse beschreibt <strong>ein</strong>e vollständige Anwendungsadressierung, also <strong>ein</strong>eIP-Adresse mit Port.UUnicastUnicast ist <strong>ein</strong>e Kommunikationsbeziehung zwischen <strong>ein</strong>em Sender und <strong>ein</strong>em Empfänger.Uniform Resource Locator (URL)Adresse <strong><strong>ein</strong>er</strong> Ressource im Netz. Ein Beispiel sind URLs im World Wide Web, die auf<strong>ein</strong> bestimmtes Dokument verweisen.User Datagram Protocol (UDP)Dieses Protokoll beschreibt, wie Datagramme in verbindungslosen IP-basierten Netzenübertragen werden sollen (RFC 768).WWorld Wide Web (WWW)Das WWW ist <strong>ein</strong>e Anwendung des Internet. Dabei handelt es sich um <strong>ein</strong>e dezentraleSammlung von Informationsangeboten, die über das Internet weltweit abrufbar sindund durch Querverweise (Hyperlinks) mit<strong>ein</strong>ander verknüpft sind.


Literaturverzeichnis[1] BERNERS-LEE, T., L. MASINTER und M. MCCAHILL: Uniform Resource Locators (URL).RFC 1738, IETF, Dezember 1994.[2] BLATHERWICK, P., R. BELL und P. HOLLAND: Megaco IP Phone Media Gateway ApplicationProfile. RFC 3054, IETF, Januar 2001.[3] BORMANN, UTE, CARSTEN BORMANN und JÖRG OTT: MECCANO - Multimedia Educationand Conferencing Collaboration over ATM Networks and Others. WissenschaftlichesProjekt, Universität Bremen, Universität Freiburg, University of Oslo, University CollageLondon, Teles <strong>AG</strong>, EUTELSAT, Juli 1998.[4] BORMANN, UTE, CARSTEN BORMANN und JÖRG OTT: UNITEL - Aufbau <strong><strong>ein</strong>er</strong> Infrastrukturfür IP-Telefonie-Dienste im Fachbereich 3 der Universität Bremen. StudentischesProjekt, Universität Bremen, Technologiezentrum Informatik, Bereich Digitale Medienund Netze, Juli 1998.[5] BORMANN, UTE, CARSTEN BORMANN und JÖRG OTT: WIPTEL - Aufbau <strong><strong>ein</strong>er</strong> Infrastrukturfür IP-Telefonie-Dienste im Wissenschaftsnetz. Wissenschaftliches Projekt, UniversitätBremen, Technologiezentrum Informatik, Bereich Digitale Medien und Netze,Juli 1998.[6] CASNER, S. und P. HOSCHKA: MIME Type Registration of RTP Payload Formats. INTER-NET DRAFT, IETF, Juli 2001. draft-ietf-avt-rtp-mime-05.txt.[7] CONTA, A. und S. DEERING: Internet Control Message Protocol (ICMPv6) for the InternetProtocol Version 6 (IPv6) Specification. RFC 2463, IETF, Dezember 1998.[8] CROCKER, D.: Standard for the format of ARPA Internet text messages. RFC 0822, IETF,August 1982.[9] CUERVO, 0. F., N. GREENE, A. RAYHAN, C. HUITEMA, B. ROSEN und J. SEGERS: MegacoProtocol Version 1. RFC 3015, IETF, November 2000.[10] DEERING, S. und R. HINDEN: Internet Protocol, Version 6 (IPv6) Specification. RFC2460, IETF, Dezember 1998.[11] DEERING, S.E.: Host extensions for IP multicasting. RFC 1112, IETF, August 1989.[12] FENNER, W.: Internet Group Management Protocol, Version 2. RFC 2236, IETF, November1997.[13] FIELDING, 1. R., J. GETTYS, J. MOGUL, H. FRYSTYK, L. MASINTER, P. LEACH undT. BERNERS-LEE: Hypertext Transfer Protocol – HTTP/1. RFC 2616, IETF, Juni 1999.[14] GERMEIER, MARKUS: Entwurf und Implementierung <strong><strong>ein</strong>er</strong> Mbusgesteuerten Engine fürverlustunempfindliches Video über IP. Diplomarbeit, Universität Bremen, März 2000.


100 Literaturverzeichnis[15] GILLIGAN, R., S. THOMSON, J. BOUND und W. STEVENS: Basic Socket Interface Extensionsfor IPv6. RFC 2553, IETF, März 1999.[16] GREENE, N., M. RAMALHO und B. ROSEN: Media Gateway Control Protocol Architectureand Requirements. RFC 2805, IETF, April 2000.[17] GROUP, AUDIO-VIDEO TRANSPORT WORKING und H. SCHULZRINNE: RTP Profile forAudio and Video Conferences with Minimal Control. RFC 1890, IETF, Januar 1996.[18] GROUP, AUDIO-VIDEO TRANSPORT WORKING, H. SCHULZRINNE, S. CASNER, R. FRE-DERICK und V. JACOBSON: RTP: A Transport Protocol for Real-Time Applications. RFC1889, IETF, Januar 1996.[19] HANDLEY, SCHULZRINNE, SCHOOLER und ROSENBERG: SIP: Session Initiation Protocol.INTERNET DRAFT, IETF, November 2000. draft-ietf-sip-rfc2543bis-02.txt.[20] HANDLEY, M. und V. JACOBSON: SDP: Session Description Protocol. RFC 2327, IETF,April 1998.[21] HANDLEY, M., H. SCHULZRINNE, E. SCHOOLER und J. ROSENBERG: SIP: Session InitiationProtocol. RFC 2543, IETF, März 1999.[22] HINDEN, R. und S. DEERING: IPv6 Multicast Address Assignments. RFC 2375, IETF, Juli1998.[23] HINDEN, R. und S. DEERING: IP Version 6 Addressing Architecture. INTERNET DRAFT,IETF, Februar 2001. draft-ietf-ipngwg-addr-arch-v3-04.txt.[24] INTERNATIONAL TELECOMMUNICATION UNION: Recommendation G.711: Pulse code modulation(PCM) of voice frequencies, 1988.[25] INTERNATIONAL TELECOMMUNICATION UNION: Recommendation T.120: Data Protocolsfor Multimedia Conferencing, Juli 1996.[26] INTERNATIONAL TELECOMMUNICATION UNION: Draft New Recommendation H.450.1:Generic Functional Protocol for the Support of Supplementary Services, 1998.[27] INTERNATIONAL TELECOMMUNICATION UNION: Recommendation Q.931: ISDN User-Network Interface Layer 3 Specification for Basic Call Control, 1998.[28] INTERNATIONAL TELECOMMUNICATION UNION: Recommendation H.221: Frame structurefor a 64 to 1920 kbit/s channel in audiovisual teleservices, Mai 1999.[29] INTERNATIONAL TELECOMMUNICATION UNION: Recommendation H.225.0: Call SignalingProtocols and Media Stream Packetization for Packet Based Multimedia CommunicationsSystems, November 1999.[30] INTERNATIONAL TELECOMMUNICATION UNION: Recommendation H.245: Control Protocolfor Multimedia Communication, 2000.[31] INTERNATIONAL TELECOMMUNICATION UNION: Recommendation H.323: Paket-BasedMultimedia Communications Systems, Juli 2000.[32] JOHNSTRON, ALAN B.: Understanding the Session Initiation Protocol. Artech HousePublishers, 2001.


Literaturverzeichnis 101[33] KENT, S. und R. ATKINSON: IP Authentication Header. RFC 2402, IETF, November1998.[34] KENT, S. und R. ATKINSON: IP Encapsulating Security Payload (ESP). RFC 2406, IETF,November 1998.[35] KUTSCHER, DIRK, JÖRG OTT und CARSTEN BORMANN: Requirements for Session Descriptionand Capability Negotiation. INTERNET DRAFT, IETF, April 2001. draft-ietf-\mmusic-sdpng-req-01.txt.[36] MEYER, DIRK: Anruf- und Mediensteuerung auf der Basis von Mbus und SDPng: exemplarischeRealisierung <strong><strong>ein</strong>er</strong> IP-PBX. Diplomarbeit, Universität Bremen, März 2001.[37] MILLS, DAVID L.: Network Time Protocol (Version 3) Specification, Implementation. RFC1305, IETF, März 1992.[38] NICHOLS, K., S. BLAKE, F. BAKER und D. BLACK: Definition of the Differentiated ServicesField (DS Field) in the IPv4 and IPv6 Headers. RFC 2474, IETF, Dezember 1998.[39] NORSKOG, LANCE und CHRIS B<strong>AG</strong>WELL: SoX - Sound eXchange. http://home.sprynet.\com/ cbagwell/sox.html.[40] OTT, JÖRG, DIRK KUTSCHER und DIRK MEYER: An Mbus Profile for Call Control. IN-TERNET DRAFT, TZI, Universität Bremen, Februar 2001. draft-ietf-mmusic-mbus-\call-control-00.txt.[41] OTT, JÖRT, COLIN PERKINS und DIRK KUTSCHER: A Message Bus for Conferencing Systems.INTERNET DRAFT, Universität Bremen/ University College London, Februar2001. draft-ietf-mmusic-mbus-transport-04.txt.[42] PERKINS, C., I. KOUVELAS, O. HODSON, V. HARDMAN, M. HANDLEY, J.C. BOLOT,A. VEGA-GARCIA und S. FOSSE-PARISIS: RTP Payload for Redundant Audio Data. RFC2198, IETF, September 1997.[43] POLLEM, NIELS: Entwurf und Implementierung <strong>ein</strong>es ausbaufähigen Gateways zur Umsetzungunterschiedlicher Verbindungsprotokolle für IP-Telefonie. Diplomarbeit, UniversitätBremen, Januar 2000.[44] POSTEL, J.: DoD standard Transmission Control Protocol. RFC 0761, IETF, Januar1980.[45] POSTEL, J.: User Datagram Protocol. RFC 0768, IETF, August 1980.[46] POSTEL, J.: Internet Control Message Protocol. RFC 0792, IETF, September 1981.[47] POSTEL, J.: Internet Protocol. RFC 0791, IETF, September 1981.[48] PRELLE, STEFAN: Entwurf und Implementierung <strong>ein</strong>es H.323-Gatekeepers zur Resourcenverwaltungund Zugangsregelung für IP-Telefonie-Dienste. Diplomarbeit, UniversitätBremen, Oktober 1999.[49] ROSENBERG, J. und H. SCHULZRINNE: An RTP Payload Format for Generic ForwardError Correction. RFC 2733, IETF, Dezember 1999.[50] SCHNEIDER, BRUCE: Applied Cryptpgraphy. Wiley, 605 Third Avenue, New York, 1996.


102 Literaturverzeichnis[51] SCHULZRINNE und CASNER: RTP Profile for Audio and Video Conferences with MinimalControl. INTERNET DRAFT, IETF, August 2001. draft-ietf-avt-profile-new-10.txt.[52] SCHULZRINNE, CASNER, FREDERICK und JACOBSON: RTP: A Transport Protocol for Real-Time Applications. INTERNET DRAFT, IETF, August 2001. draft-ietf-avt-rtp-new-\09.txt.[53] SCHULZRINNE, H. und S. PETRACK: RTP Payload for DTMF Digits, Telephony Tones andTelephony Signals. RFC 2833, IETF, Mai 2000.[54] SINGH, KUNDAN: SipConf System. University Columbia, http://www.cs.columbia.\edu/˜kns10/software/sipconf/.[55] SPARKS, R.: SIP Call Control - Transfer. INTERNET DRAFT, IETF, Februar 2001. draft-\ietf-sip-cc-transfer-04.txt.[56] SPEER, M. und D. HOFFMAN: RTP Payload Format of Sun’s CellB Video Encoding. RFC2029, IETF, Oktober 1996.[57] UNIVERSITY COLLEGE LONDON, http://www-mice.cs.ucl.uk/mice/rat: The RAT(Robust-Audio Tool) Home Page.[58] VAHA-SIPILA, A.: URLs for Telephone Calls. RFC 2806, IETF, April 2000.


Index<strong>AG</strong> <strong>Rechnernetze</strong>, 41Gateway, 46H.323, 32, 41Adressierung, 32Gatekeeper, 32Protokollablauf, 32IETF, 3IP, 4Anycast, 7Broadcast, 7ICMP, 8IGMP, 8Multicast, 7Unicast, 7ITU-T, 3Mbone, 87, 88Mbone-Konferenz, 45, 50, 52Mbus, 42, 43, 52Media-Prozessor, 48, 77, 81Aufbau, 55Controller, 72Erweiterungs-Modul, 56, 69Filter, 67Filter-Modul, 56Funktionalität, 49Konferenz-Controller, 63Konferenz-Modell, 57Kontext, 61Module, 64Steuer-Modul, 56Termination, 58Transport, 66Transport-Modul, 56Zielanwendungen, 48Medienbeschreibung, 34H.245, 38SDP, 34SDPng, 36MEGACO, 20<strong>Architektur</strong>, 20Protokoll, 24MePro, 77, 81, 87Aufbau, 81Konferenz-Modell, 85Module, 84Schnittstelle, 80Projekte6WINIT, 43MECCANO, 41UNITEL, 42WIPTEL, 43RTCP, 8RTP, 8Abschied, 16Anwendungserweiterung, 17APP, 17BYE, 16CSRC, 9Empfänger-Bericht, 13End-System, 10Mixer, 10Monitor, 10Port, 9Quellbeschreibungen, 14RR, 13RTCP, 12RTCP-Paket, 9RTP-Paket, 9RTP-Payload, 9RTP-Profil, 10RTP-Session, 9SDES, 14Sender-Bericht, 14SR, 14SSRC, 9Translator, 10Transport-Adresse, 9RTP-Bibliothek, 77SIP, 29, 41Adressierung, 29Nachrichtenformat, 29Protokollablauf, 30Server, 30

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!