Seminar „Streamingtechnologien für Videodaten“ Universität Dortmund Lehrstuhl Informatik I Wintersemester 1999/2000 Betreuer: Prof. Dr. Gisbert Dittrich Dipl.-Inform. Jörg Westbomke Teilnehmer: Daniel Herche Malte Hülder Stefan Michaelis Oliver Pauls Jörg Röhrig Björn Somberg Konstantin Steuer Dirk Vleugels Gerd Zellmer Vorwort Elektronische Dokumente werden immer häufiger durch zeitbasierte Medienobjekte wie z.B. Videoclips angereichert. Selbst im WWW sind mittlerweile Videos komfortabel durch Streamingtechnologie verfügbar. Die Streamingtechnologie ermöglicht es dabei, nach recht kurzer Pufferzeit auch lange Videos, an beliebigen Stellen beginnend, „direkt aus dem Netz heraus“ zu nutzen. Ein vollständiges Herunterladen des gesamten, zu betrachtenden Videos wird damit unnötig. Diese Funktionalität dürfte die Verwendbarkeit von Videos im Netz wesentlich steigern. Dieses Seminar sollte Studierenden im Hauptstudium des Fachbereichs Informatik einen Überblick über die grundlegenden Techniken in diesem Bereich vermitteln und gleich- zeitig existierende Softwarelösungen vorstellen. Nach einer Einführung in das Themengebiet sowie der Darstellung von möglichen Ein- satzgebieten wurden die Grundlagen der Datenübertragung im Internet erarbeitet. Auf- bauend auf diesem Grundwissen wurden in Form von zwei Vorträgen die wesentlichen Spezifikationen (RTSP/RTP/RTCP) zur Übertragung von Videodaten per Streamingtech- nologie erläutert. Die folgenden Vorträge stellen dann existierende Softwareprodukte vor, die den Einsatz von Videos im Internet per Streamingtechnologie ermöglichten. Dortmund, den 18. Januar 2000 G. Dittrich J. Westbomke · i1. Inhaltsverzeichnis Malte Hülder: „Überblick über Anwendungsfelder für Streamingtechnologien für Videodaten“..............................1 Jörg Röhrig: „Grundlegende Netzwerkdienste/-protokolle“.....................................................................................13 Konstantin Steuer: „Real Time Streaming Protocol“.........................................................................................................37 Daniel Herche: „Das Real-Time Transport Protokoll“.................................................................................................57 Björn Somberg, Dirk Vleugels: „Streamingmöglichkeiten von Quicktime 4“......................................................................................73 Stefan Michaelis, Oliver Pauls: „Real Networks“...................................................................................................................................95 Gerd Zellmer: „Das Advanced Streaming Format (ASF)“.......................................................................................125 ii Malte Hülder 1 Überblick über Anwendungsfelder für Streamingtechnologien für Videodaten Malte Hülder FB Informatik, Uni Dortmund malte@huelder.com Zusammenfassung Da dies die Ausarbeitung zum ersten Vortrag in der Seminarreihe ist, wird hier im Wesentlichen eine Einführung in das Thema gegeben. Da Streamingtechnologien ein zukunftsträchtiges Feld sind, wird zunächst auf die Charakteristika und die grundlegende Funktionsweise von Streaming eingegangen. Weiterhin werden verschiedene Anwendungsfelder für Streamingtechnologien vorgestellt. Dabei wird nicht unbedingt unterschieden, ob es bereits Streaminganwendungen in diesem Gebiet gibt, oder ob es sich nur um Überlegungen handelt, dass Streaming in diesem Anwendungsfeld zum Einsatz kommen könnte. Abschließend werden noch einmal die Anforderungen zusammengefasst, die Streaming an Netzwerkumgebung und Computer stellt. Da es sich hier nur um eine einleitende Übersicht handelt, werden verschiedene technische Details nich tiefergehend behandelt, sondern nur kurz umrissen, um zu einem späteren Zeitpunkt erläutert zu werden. 1 Charakteristika von Streamingtechnologien Mit Streamingtechnologien können speicherintensive Daten wie z.B. Audio- und Videodaten übertr a- gen werden. Gerade bei dieser Art von Daten, ist es wichtig, dass sie zusammenhängend und in der richtigen Reihenfolge beim Empfänger ankommen. Ein Tondokument kann zum Beispiel nur versta n- den werden, wenn die einzelnen Laute in der richtigen Reihenfolge und flüssig hintereinander abg e- spielt werden. Das Netzwerkprotokoll IP (Internet Protocol) ist allerdings ein verbindungsloses und paketorientiertes Protokoll, das nicht nur die richtige Reihenfolge nicht garantieren kann, sondern auch nicht sicherstellen kann, dass die Daten überhaupt beim Empfänger ankommen. Streamingproto- kolle, die auf IP aufsetzen, müssen sich also der Herausforderung stellen, eine solche gesicherte Üb r- tragung zu ermöglichen. Die Daten, die bei Streaminganwendungen übertragen werden, können entweder gespeichert auf e i- nem Server zum Abruf bereit liegen oder live übertragen werden. Die letzte Variante ist besonders bemerkenswert, da hier ja bei Beginn der Übertragung weder die Länge, noch irgendein Dateiende feststeht. Live-Übertragungen ermöglichen es außerdem, kleinen Sendern oder Privatleuten Daten weltweit zu übertragen. Auf der anderen Seite ermöglichen sie es Nutzern, Informationen zu empfan- gen, die für sie sonst nur mit erheblich größerem Aufwand oder gar nicht erreichbar wären. Übersicht über Anwendungsfelder für Streamingtechnologien für Videodaten Malte Hülder2 Streamingtechnologien können also den Kostenaufwand für Hardware reduzieren. Insbesondere muss ein Empfänger keinen Speicherplatz haben, um sich zum Beispiel einen ganzen Videofilm abzusp i- chern, um diesen sehen zu können. Durch di Streamingtechnologie werden die Daten übertragen und praktisch sofort auf dem Monitor oder einem anderen Ausgabegerät dargestellt, ohne gespeichert zu werden. Mit entsprechenden Sicherheitsverfahren gekoppelt, bietet sich dieses Verfahren auch zur Si- cherung von Urheberrechten an. Wenn ein Nutzer keine Daten speichern muss, ist es auch denkbar, dass er diese Daten auch gar nicht speichern kann. So würde es unmöglich, illegale Kopien oder Mi t- schnitte der Daten anzufertigen. Wenn gerade davon gesprochen wurde, dass Streamingdaten nicht gespeichert werden, dann ist das natürlich nur zum Teil richtig. Die Daten, die über das Netzwerk ankommen, werden zur Verarbeitung in einem Puffer gespeichert. Dadurch liegt natürlich immer ein gewisser Teil der Daten bei Nutzer - im Vergleich zu den Gesamtdaten ist dies allerdings verschwindend gering. Diese Pufferung kann aber genutzt werden um Schwankungen in der Übertragungsqualität zu kompensieren. So kommen di Daten immer etwas früher an, als sie tatsächlich verarbeitet werden müssen. Sollten sich aufgrund von Schwankungen in der Netzauslastung einzelne Pakete verspäten, können sie so wieder in die richtige Reihenfolge gebracht werden, bevor diese Daten dann widergegeben werden müssen. Dies gilt auch für Pakete, die verloren gehen, so dass ihnen eine gewisse Zeit bleibt, um eine Neuübertragung zu er- möglichen. 2 Der Ablauf einer Streaming-Sitzung Die zu empfangenden Daten müssen vom Absender auf einem Server bereitgestellt werden. Der Nut- zer, der diese Daten empfangen möchte, startet ein Clientprogramm und gibt an, welche Daten er emp- fangen möchte. Das Clientprogramm baut eine Verbindung zum angegebenen Server auf, wobei es das Streamingprotokoll benutzt. Über dieses Streamingprotokoll antwortet der Server und schickt die D a- ten nach und nach zum Client. Die ersten ankommenden Daten werden in einen Pufferspeicher g e- schrieben, der relativ klein sein kann. Wenn dieser Puffer voll ist, wird mit der Widergabe begonnen. Die ersten Daten werden vom Anfang des Puffers ausgelesen und entfernt, neue Daten werden werden am Ende in diesen Puffer eingefügt. Wenn zwischenzeitlich die Netzkapazität etwas nachläßt, kann die Widergabe aufrecht erhalten werden, bis der Pufferspeicher leer ist. Wenn der Kapazitätseinbruch aber nur kurzzeitig war, dann kann der Puffer rechtzeitig wieder aufgefüllt werden und der Nutzer be- kommt von diesen Schwankungen nichts mit. Wenn der Nutzer z.B. in einem Videofilm an eine andere Stellen "spulen" will, dann kann er einfach die Stelle suchen, zu der er springen möchte. Das Clientprogramm verwirft die alten, gepufferten Da- ten und fordert die neuen an, die dieser Stelle im Film entsprechen. Die neuen Daten werden wieder gepuffert und widergegeben, sobald der Pufferspeicher voll ist. Dadurch benötigt ein Sprung innerhalb eines Films immer konstante Zeit, unabhängig davon, wie weit dieser Sprung ist. In einem Live- Stream ist es natürlich nicht möglich, hin und her zu springen, da die zukünftigen Daten ja noch gar nicht existieren und vergangene auch nicht gespeichert werden. Zum Ende der Sitzung wird die Verbindung wieder abgebaut. Das kann passieren, weil die Widergabe der Daten am Ende angekommen ist, oder weil der Benutzer die Widergabe persönlich stoppt. Übersicht über Anwendungsfelder für Streamingtechnologien für Videodaten Malte Hülder 3 3 Anwendungsfelder für Streaming Im folgenden sollen einige Anwendungsfelder für Streamingtechnologien erläutert werden. Dabei gibt es für einige Anwendungen bereits tatsächliche Umsetzungen, andere scheinen nur eine gute Anwe n- dung für Streamingtechnologie zu sein, ohne dass dort bereits ein brauchbares Produkt verfügbar wä- re. 3.1 Videoüberwachung Durch starken Preisverfall wird die Verbreitung von Videokameras gefördert. Dies nicht nur aber i Besonderen auch für Kameras, die an einen handelsüblichen Computer angeschlossen werden können. Noch sind - zumindest im Bereich der "IBM-kompatiblen Computer" - Rechner mit einem Eingang für Videoquellen nicht der Standard, aber auch hier ermöglichen sinkende Preise vielen Benutzern einen entsprechend ausgestatteten Computer. Die bereits "klassischen" WebCams liefern ein regelmäßig aktualisiertes Standbild von den Vorgä n- gen im Einzugsbereich der Kamera. Mit dieser Technik sind Übertragungen von wenigen Bildern in der Minute möglich. Durch den Einsatz von Streamingtechnologien kann die Übertragungsrate deu t- lich höher ausfallen. Ein entsprechender Live-Stream benötigt weniger Speicherplatz als die Bilder i- ner WebCam, die ja in regelmäßigen Abständen in eine Internetseite eingebunden und auf dem en t- sprechenden Server gespeichert werden müssen. Mit Hilfe dieser Technik und der Verbreitung durch das Internet ist es von nahezu überall möglich, Büroräume oder Privatwohnungen zu überwachen. Dazu kommen die extrem günstigen Verbindungs- kosten, die bei Verwendung der Internetübertragung anfallen. 3.2 Bildtelefonie Um von der Videoüberwachung zur Bildtelefonie zu gelangen, ist weitere Multimedia-Hardware not- wendig. Allerdings ist eine Soundkarte bei den meisten Computermodellen heute bereits Standard und auch Mikrofon und Lautsprecher oder Kopfhörer sind preisgünstig zu bekommen. Natürlich gibt es hier bereits einige Anwendungen, die nicht auf Streamingtechnologie basieren, z.B. iVisit, NetMeeting oder die MBone Tools, die im Abschnitt 3.6 erläutert werden. Die klassische Übertragung mittels ISDN-Leitungen ist besonders bei Überseeleitungen um ein Vi l- faches teurer, als die bei der Verwendung von Streamingtechnologie zu Grunde liegende Internetver- bindung. Allerdings muss man dafür das für Streaming typische Zwischenpuffern in Kauf nehmen und dementsprechend mit gewissen Verzögerungen rechnen. Dafür kann man aber flüssige, bewegte Bi l- der erhoffen. Wenn kleinere Zwischenpuffer nötig werden, könnte sich diese Verzögerungszeit auch weiter reduzieren. 3.3 Vide Conferencing Von der Bildtelefonie ist die Erweiterung zum Videokonferenzsystem nur noch ein kleiner Schritt. Be einer Konferenz müssen allerdings alle Video- und Audiodaten an alle Konferenzteilnehmer verteilt werden. Dies führt natürlich zu einem exponentiellen Anstieg der zu übertragenden Daten, wenn me h- rere Teilnehmer zu einer Konferenz dazustoßen. Üblicherweise wird ein zentraler Knoten benutzt, der die Daten an alle Teilnehmer verteilt. Die Übertragung über ISDN-Leitungen ist natürlich teurer als Internetverbindungen, besonders da hier ja für mehrere Teilnehmer Kosten für Ferngespräche anfallen können. Beim Einsatz von Streaming- Übersicht über Anwendungsfelder für Streamingtechnologien für Videodaten Malte Hülder4 technologie ist natürlich auch wieder mit Verzögerungen durch das Zwischenpuffern zu rechnen. n- wender müßten sich vermutlich an einen neuen Kommunikationsstil gewöhnen, da es immer einig Zeit dauert, bis ein Gesprächspartner antwortet. Die geringen Kosten bei möglicherweise besserer Qualität und die weltweite Verfügbarkeit des Internets sollten aber genug Anreiz für eine Entwicklung auf diesem Gebiet geben. Ein Beispiel für ein Internet Videokonferenzsystem, dass allerdings nicht auf Streaming beruht, sind die in Abschnitt 3.6 besprochenen MBone Tools. 3.4 Pressekonferenzen Pressekonferenzen stellen ein Beispiel für die genannten Streaming-Anwendungen dar. Ähnlich einer anderen Live-Übertragung von bestimmten Ereignissen z.B. durch das Fernsehen, ist eine schnell Verbreitung der Informationen möglich. Durch Nutzung des Internets können Interessenten auf der ganzen Welt erreicht werden. In Verbindung mit eine Videokonferenzsystem können nicht nur Informationen weitergegeben wer- den, sondern auch eine Rückkopplung und Nachfragen der Empfänger ist möglich. Viele klein Presseorgane können es sich nicht leisten, ihre Korrespondenten und Reporter überall auf der Welt zu verteilen. Mit einer solchen Technik wäre es somit auch diese Presseorgane möglich, eine eigene B e- richterstattung zu gewährleisten und Interviews mit entfernten Personen zu führen. Dies wäre auch ein Schritt zur Wahrung oder gar Ausweitung der Pressefreiheit. 3.5 CD- und Videovorstellungen (Werbung) Werbung kann ein weiteres Beispiel sein. So wäre es denkbar, dass Plattenfirmen in Zukunft neue Produkte im Internet bewerben werden und einzelne Titel oder sogar ein ganzen Musikalbum zu Probe hören angeboten werden wird. Das gleiche kann natürlich auch mit Kinofilmen oder Videos gemacht werden. Durch die Streamingtechnologie werden die Anforderungen an den Computer des Konsumenten niedrig gehalten und evtl. eine illegale Kopie der Daten verhindert. Wenn zusätzlich noch sichere Zahlungssysteme für das Internet vorliegen, ist es den Kunden sogar möglich, die getesteten Produkte auch sofort zu bestellen und zu bezahlen. 3.6 MBone Tools Die Abkürzung MBone steht für "Multicast Backbone", also einen Teil des Internets, de Multicasting unterstützt. Die Idee de Multicasting besteht darin, gleiche Daten nicht mehrfach über dieselben Lei- tungen zu schicken. Wenn z.B. ein Teilnehmer in den USA an einer Videokonferenz mit mehreren E u- ropäern teilnimmt, dann muss sein Video- und Audiosignal an alle Teilnehmer in Europa über ein Transatlantikleitung geschickt werden. Beim Multicasting werden hingegen die Daten nicht für jeden Teilnehmer einzeln über di Transatlantikleitung geschickt, sondern nur einmalig und dann von eine Router in Europa an die Teilnehmer verteilt. Multicasting beruht also auf einer virtuellen Baumstru k- tur (siehe Abbildung 3-1). Für Multicasting sind Internet-Adressen der Klasse D (224.0.0.0 bis 239.255.255.255) reserviert. Die Daten werden also vom Sender nicht direkt an den Empfänger gesendet, sondern an eine Multicast- Adresse. Die Empfänger müssen sich vorher für die Konferenz anmelden. Die Router wissen dann, dass eine Kopie der Daten für die entsprechende Multicast-Adresse an den angemeldeten Empfänger weitergeleitet werden soll. Übersicht über Anwendungsfelder für Streamingtechnologien für Videodaten Malte Hülder 5 Abbildung 3-1 virtuelle Baumstruktur bei Multicasting Für die Nutzung de MBone stehen verschiedene Programme zur Verfügung, die auch für diverse Plattformen angeboten werden. Im Folgenden werden die wichtigsten UNIX-Tools erläutert. Bei allen Programmen gibt es auch die Möglichkeit, die Datenübertragung mittels DES ( Data Encription Stan- dard) zu verschlüsseln. So können auch Konferenzen abgehalten werden, bei denen die Daten nur b e- stimmten Leuten (die den Schlüssel kennen) zugänglich sind. Eine Konferenz besteht immer aus der gleichzeitigen Nutzung mehrerer der folgenden Programme. 3.6.1 sdr = Session Directory Das Session Directory enthält alle Informationen über angekündigte Konferenzen im MBone. Alle Konferenzen müssen z.B. mittels sdr angekündigt werden und bei Beendigung auch wieder aus dem Verzeichnis gelöscht werden. Mit dem Programm sdr kann man nicht nur Konferenzen anlegen und löschen sondern auch an bereits angekündigten Konferenzen teilnehmen. Beim Start von sdr erhält man das Hauptfenster (Abbildung 3-2). Im Hauptfenster werden die bereits angekündigten Konferenzen angezeigt. Man kann mit dem Menüpunkt New eine neue Konferenz an- kündigen oder durch Klicken auf einen Eintrag mehr Informationen über diese Konferenz abrufen. Im letzten Fall erscheint das Fenster Session Information (Abbildung 3-3). In diesem Fenster erhält man genauere Informationen über Inhalt, Ziel und Zweck der Konferenz, über den Initiator der Konferenz und die Zeitdauer, für die die Konferenz angesetzt ist. Außerdem werden die Dienste, Formate und Multicast-Adressen angegeben, die dieser Konferenz zugeordnet sind. Durch einen Klick auf den audio-Button wird zum Beispiel das Audio Tool vat (siehe 3.6.2) gestartet. Durch Klicken auf den Button Start All werden alle verknüpften Dienste (hier: vat, vic und wb) ge- startet. Beim Start eines oder mehrerer Dienste nimmt man automatisch an der Konferenz teil. Mit dem Invite-Button können noch andere Teilnehmer zur Konferenz eingeladen werden. Voraussetzung ist, das diese auch sdr gestartet haben. Mit Dismiss kann man dieses Fenster schließlich wieder schließen. Beim Anlegen einer neuen Konferenz muss man diese ganzen Informationen natürlich mit angeben. In dem entsprechenden Fenster (ohne Abb.) gibt man insbesondere auch die verschiedenen Anwendu n- gen an, die bei dieser Konferenz benutzt werden sollen. Übersicht über Anwendungsfelder für Streamingtechnologien für Videodaten Malte Hülder6 Abbildung 3-2 sdr Hauptfenster Abbildung 3-3 sdr Session Information 3.6.2 vat = Visual Audio Tool Das Visual Audio Tool vat dient zur Übertragung von Sprache. Dabei kann es Telefonqualität err i- chen, allerdings ermöglicht es im Gegensatz zum normalen Telefon auch Gespräche mit mehreren Teilnehmern. Im Hauptfenster von vat (Abbildung 3-4) werden alle Gesprächsteilnehmer aufgelistet. Es besteht di Möglichkeit Teilnehmer stumm zu schalten (angekreuzt, Teilnehmer 1 und 8). Teilnehmer, zu denen die Verbindung gestört ist werden ausgegraut (Teilnehmer 6 und 9) und gerade aktiv sprechende Tei l- nehmer werden mit einem Punkt und farbig hervorgehoben (Teilnehmer 10). Über den Menu-Button kann man verschiedene Einstellungen zur Verbindung vornehmen, insbeso n- dere kann zwischen verschiedenen Audio-Formaten gewählt werden (PCM, DVI, GSM, LPC). Im Hauptfenster befinden sich neben der Teilnehmerliste noch die Aussteuerungsanzeige und die Lau t- stärkeregelung für Lautsprecher und Mikrofon. Um Rückkopplungen zu vermeiden, biete vat neben Vollduplex auch noch zwei Halbduplex-Modi an. In diesen Fällen schaltet die Nutzung des Mikrofons die Lautsprecher ab oder Töne aus den Lautsprechern verhindern eine Nutzung des Mikrofons. 3.6.3 vic = Video Conferencing Tool Zur Bildübertragung bei einer Videokonferenz wird das Video Conferencing Tool vic benutzt. Ähn- lich wie bei vat werden die Teilnehmer im Hauptfenster (Abb. 3-5) angezeigt. Hier bekommt jeder Teilnehmer ein kleines Fenster, in dem seine Videodaten dargestellt werden. Bei Klick auf ein solches Fenster kann dieses Video in einem größeren Fenster angesehen werden. Es gibt auch die Möglichkeit, Teilnehmer "stumm" zu schalten, dann bleibt das letzte Bild dieses Teilnehmers stehen und weitere Bilder werden nicht mehr empfangen. Übersicht über Anwendungsfelder für Streamingtechnologien für Videodaten Malte Hülder 7 Abbildung 3-4 vat Hauptfenster Abbildung 3-5 vic Hauptfenster Über den Menu-Button kann wie bei vat verschiedene Einstellungen ändern, hier stehen auch wieder verschiedene Daten-Formate zur Auswahl (JPEG, H261, nv). Wird i nv-Modus gesendet, kann der Empfänger das Video auch in dem Programm nv anzeigen lassen. Es gibt außerdem noch die Möglichkeit, sich Informationen über die Verbindungseigenschaften mit dem Knopf info... anzusehen. Bei guten Bedingungen kann vic bis zu 30 Bilder pro Sekunde übertr a- gen, in der Praxis liegt dieser Wert jedoch meistens unter 5 Bildern p. Sekunde. 3.6.4 wb = White Board Das White Board (Fehler! Verweisquelle konnte nicht gefunden werden. ) bietet die Möglichkeit, mit mehreren Teilnehmern einer Konferenz an einem Zeichenbrett oder einer Tafel zu arbeiten. Di Funktionen, die von wb zur Verfügung gestellt werden können, entsprechen denen, die man auch in einfachen Grafikprogrammen hat. Mit einfachen Zeichenstiften, Kästen, Kreisen und verschiedenen Farben kann man Illustrationen auf die Zeichenfläche malen. Über ein Textwerkzeug kann man auch Texte mit verschiedenen Schriften bearbeiten. Weiterhin stellt wb Funktionen zum Import von Text- und Postscript-Dateien zur Verfügung. Wenn man wb für Vorträge oder Lehrveranstaltungen benutzen möchte, wäre es ungünstig, wenn alle Teilnehmer auf der Tafel herummalen könnten. Deshalb sollte man das White Board schreibgeschützt machen, dann können alle den Erklärungen des Vortragenden auch durch dessen Zeichnungen folgen, aber nur dieser kann etwas in wb zeichnen. 3.6.5 nt = Network Text Editor Der Network Text Editor nt (Abbildung 3-7) bietet eine ähnliche Funktionalität wie wb, allerdings kann in nt nicht gezeichnet, sondern ausschließlich Text bearbeitet werden. Dazu wird der Text in Textblöcke aufgeteilt, die von allen Teilnehmern gleichzeitig interaktiv bearbeitet werden können. Allerdings dürfen zwei Teilnehmer nicht gleichzeitig dieselbe Zeile editieren. Übersicht über Anwendungsfelder für Streamingtechnologien für Videodaten Malte Hülder8 Abbildung 3-6 Das White-Board Abbildung 3-7 Der Network Text Editor 3.7 Vide on Demand Vide on Demand ist ein Schlagwort, dass schon seit einigen Jahren immer wider in Verbindung mit digitalem Fernsehen und Pay per View fällt. Es bedeutet so viel wie Video auf Abruf. Nutzer eines Vide on Demand Dienstes können sich aus einem bestimmten Angebot zu einer beliebigen Zeit ein Video auswählen und es ansehen. Damit ist man völlig unabhängig vom Fernsehprogramm und Ang e- bot und Vorstellungszeiten im Kino. Video on Demand lässt sich am ehesten noch mit dem Gang zu einer Videothek vergleichen, der alledings auch wieder nur zu bestimmten Öffnungszeiten möglich ist. Das Internet kann durch die Streamingtechnologie eine neue Dimension für Video on Demand brin- gen. So können Filme weltweit auf Servern angeboten und ebenfalls weltweit von Nutzern abgerufen werden. Da die meisten Server 24 Stunden am Tag online sind, gibt es auch keine Probleme mit Öff- nungszeiten mehr. Um Video- bzw. Kinofilme über das Internet zu sehen muss natürlich auch noch das Problem des r- heberrechts gelöst werden. Schließlich ist es nicht Interesse der Filmindustrie, wenn jedermann die Filme kostenlos betrachten und evtl. auch kopieren kann. Insgesamt bietet Streaming Video im Internet einige Vorteile zum klassischen Kauf- oder Leihvideo: • Keine Öffnungszeiten • Weltweite Verfügbarkeit, d.h. es ist auch möglich ausländische Filme zu sehen, die sonst im eige- nen Land nicht auf den Markt kämen. • Streaming Video erlaubt beliebige Sprünge innerhalb eines Films, ohne spulen zu müssen, d.h. konstante Sprungzeiten unabhängig von der Sprungweite Lediglich der Speicherplatz der Server und die Netzbandbreite schränken das Angebot sowie den Z u- griff noch ein. In Zeiten sinkender Kosten für Speicherplatten, ist es nicht mehr undenkbar ganze Kinofilme auf einem Server zum Abruf bereitzulegen. Das Problem der Netzbandbreite läßt sich aller- Übersicht über Anwendungsfelder für Streamingtechnologien für Videodaten Malte Hülder 9 dings nicht ohne Weiteres lösen. Die Investition in leistungsfähigere Netzwerkverbindungen ist teue und zeitaufwendig. Bei dem derzeitigen Wachstum der Internetnutzer wird auch die Belastung der einzelnen Verbindungen immer größer. Deshalb muss der Ausbau der Netzkapazität in erster Linie der Beibehaltung heutiger Zugriffsgeschwindigkeiten dienen und kann erst in zweiter Linie diese dann s o- gar ausbauen. Beispiele für Streaming Video on Demand sind: ein Filmbericht zum 36. Todestag von J.F. Kennedy http://www.necnews.com/vidload/?vidname=/1999/11/22/0700lc02 oder die Nikolausvorlesung 1999 am Fachbereich Informatik der Uni Dortmund http://stl-www.cs.uni-dortmund.de/Multimedia/Niko.ra 3.8 Pay per View Pay per View ist ein weiteres Stichwort, dass gerne im Zusammenhang mit Video on Demand und di- gitalem Fernsehen genannt wird. Pay per View bedeutet, dass jede Sendung einzeln bezahlt werden muss. Dadurch bezahlt der Anwender nur das, was er auch wirklich sehen will und sieht. Pay per View stellt somit das Gegenteil zu klassischen Rundfunkgebühren dar, bei denen alle Teilnehmer den gleichen Betrag bezahlen, unabhängig davon, wieviel und welche Sendungen sie tatsächlich sehen. In Verbindung mit Video on Demand und Internet-Streamingtechnologien könnte man sich eine Art "virtuell Videothek" oder ein "virtuelles Kino" vorstellen. Der Konsument besucht die Internetseiten des Videothekbetreibers und wählt einen Film aus, den er gerne sehen möchte. Gegen Zahlung eines Entgeltes wird ihm der Film auf dem Streamingserver freigeschaltet. Um eine solche Idee zu verwirklichen sind natürlich einfache und sicherere Zahlungssysteme für das Internet notwendig. Desweiteren muss die Kapazität des Betreiberservers entsprechend viele Anfragen bearbeiten können und die Netzwerkleistung muss sicherstellen, dass die Daten beim Kunden zuver- lässig ankommen. Wenn der Kunde für den Dienst bezahlt, erwartet er natürlich auch, dass er ein qualitative Gegenleistung bekommt, d.h. ein ruckelfreies Bild in guter Auflösung und Schärfe. 3.9 Digitales Fernsehe Bereits in weniger als zehn Jahren (2008) wird das analoge Fernsehen in der heutigen Form abg e- schafft. Ein solch gravierender Schritt muss verschiedene Gründe haben: i.) durch das digitale Übertragungsverfahren wird Bandbreite gespart, daher sind in Zukunft mehr e- re digitale Kanäle möglich, wo bisher nur ein analoger Kanal übertragen werden konnte ii.) durch die vielen privaten Rundfunkanstalten ist die Nachfrage nach Übertragungskanälen extre gestiegen iii.) durch die digitale Übertragung ist eine bessere Bild- und Tonqualität möglich iv.) die Einführung von Video on Demand und Pay per View wird gefördert Für das digitale Fernsehen sind speziell Dekoder notwendig oder spezielle Dekoder, die anstelle des herkömmlichen analogen Programmtuners einen entsprechenden Dekoder bereits eingebaut haben. Solche Dekoder gibt es bereits heute als proprietäre Standards der Kirchgruppe mit den Sendern DF1 und Premiere World. Im Gegenzug soll es den offenen Standard der MHP (Multimedia Home Platt- form) geben, die voraussichtlich im Februar 2000 verabschiedet wird. Auf der Basis der MHP entwi k- kelt die „Deutsche TV Plattform“ aus ARD, ZDF, RTL , SAT1, Deutsche Telekom, Nokia und Bun- deswirtschaftsministerium ein Dekoderbox, die ab Herbst 2000 v rfügbar sein soll. Übersicht über Anwendungsfelder für Streamingtechnologien für Videodaten Malte Hülder10 Anstelle des Dekoders für den Fernseher ist es natürlich auch denkbar, mit dem Computer solche i- gitalen Programme zu empfangen. Als Dekoder kommt dann eine spezielle Software zum Einsatz, di das Signal umwandelt und direkt auf dem Monitor anzeigen kann. Dadurch wird der mobile Empfang von Fernsehprogrammen wesentlich vereinfacht, da dazu dann ein einfacher Laptop zum Einsatz kommen könnte. Eine andere Form von digitalem Fernsehen stellt Streaming Video dar. So ist es natürlich auch mö g- lich, Nachrichten oder andere Sendungen live an meinem Computer zu sehen, die von irgendwo auf der Welt eingespielt werden. Ein Beispiel dafür ist ein Live-Stream vom BBC WorldService: http://news.bbc.co.uk/olmedia/video/now45.ra 3.10 Radio- und Fernsehsender für das Internet Durch die Möglichkeit, ihre Sendungen als Live-Stream über das Internet zu verbreiten, gibt es Radio- und Fernsehsender, die auf diese Weise weltweit empfangen werden können. Weil die benötigt Hardware sehr preiswert ist und Programmplätze im Kabel, Satellit oder terrestrischer Antenne sehr knapp sind, ist es sogar möglich, dass sich Radio- oder Fernsehstationen bilden, die gar nicht auf h r- kömmlichem Wege zu empfangen sind. Mit geringeren Kosten und geringerem Aufwand erreichen solche Stationen eine größere, nämlich weltweite Verbreitung. Aufgrund der heutigen technischen Bedingungen sind aber alle diese heutigen Streamingtechnologien noch nicht von einer so hohen Qualität, dass sie eine echte Alternative zu herkömmlichen Übertra- gungstechniken darstellen. 4 Zusammenfassung Streamingtechnologien ermöglichen eine Übertragung von speicherintesiven Daten z.B. für Audio- und Videoanwendungen, ohne dabei zu große Anforderungen an die Empfänger zu stellen. Durch Puf- ferspeicher wird auch die schwankende Netzlast aufgefangen. Durch das universelle Prinzip und di verschiedenen Auftretensformen von Audio- und Videodaten sind auch sehr viele Anwendungen für Streaming denkbar. Allerdings sind die bis heute entwickelten Techniken noch nicht ausreichend. Die Bilder bei Vide o- übertragung sind extrem klein und unscharf. Trotzdem kommt es immer wieder zu Ruckeln und Aus- fällen, weil die Netzbandbreite nicht ausreicht, um die entsprechende Menge an Daten zu liefern. Le- diglich bei reinen Audio-Streaming Anwendungen kann man sich mit Telefonqualität vorerst zufrie- den geben. Um die Leistung von Streamingtechniken zu verbessern, muss man verschiedene Anforderungen er- füllen: • Gute Kompressionsverfahren müssen entwickelt werden, da ein Echtfarbenbild mit Fernsehauflö- sung (768 x 576 Pixel) bereits 1,3 MByte Speicherplatz belegt. Bei 25 Bildern/Sekunde macht dies ca. 32,5 MByte/Sek. bzw. 260 Mbit/Sek. Damit sind bereits schnell Intranetleitungen (100 MBit) überfordert, ein ISDN-B-Kanal schafft gerade einmal 8 KByte/Sek. • Zusätzlich zur Kompression müssen die Datenraten der Netzwerke erhöht werden, da eine Ko m- pression um einen Faktor von über 4000 nicht realistisch erscheint. Selbst bei einer ISDN- Anbindung erhält man oft nicht die volle mögliche Übertragungsrate, weil viele Netze überlastet sind. Übersicht über Anwendungsfelder für Streamingtechnologien für Videodaten Malte Hülder 11 • Durch Multicasting könnte die allgemeine Netzlast gesenkt werden, da gleiche Daten nicht unnö- tigerweise mehrfach durch das gleiche Netzsegment geschickt werden. • Es muss Möglichkeiten geben, die verfügbaren Datenraten konstant zu halten. Dann kann sich di Streamingsoftware mit Ihrer Puffergröße an der verfügbaren Rate orientieren und notfalls qual i- tativ schlechtere Kompressionsverfahren nutzen, um wenigstens die Funktionalität in gewisse Maße zu erhalten. • Die Übertragung muss zuverlässiger werden. Bei Paketverlustraten von bis zu 50 % kann man keine brauchbare Qualität mehr erwarten. Natürlich hängt ein großer Teil der Verluste auch mit der Überlastung der Netze zusammen. Dadurch kommen vereinzelte Pakete zu spät und müssen verworfen werden. In IPv6 sind zwei weitere Aspekte berücksichtigt, die bei der Lösung der genannten Probleme helfen können: • Qualit of Service: Mit diesem Feature soll es möglich sein, bestimmten Daten oder Nutzern Vor- rang einzuräumen. Es könnte dann die Möglichkeit geben, verschiedene Internetverträge anzu- bieten, wobei durch höhere Gebühren auch eine bessere Dienstqualität erkauft wird. Es könnten auch zeitkritische Daten, wie z.B. Streaming-Daten, an Routern Vorfahrt vor weniger kritischen Daten bekommen, um möglichst kurze Verzögerungen zu gewährleisten. • Statische Routen: Ein Prinzip des Internets ist es, Daten von einem Router zum nächsten zu schicken, bis sie ihr Ziel erreicht haben. Manchmal stehen aber mehrer Router und somit mehre- re verschiedene Wege zum Ziel zur Auswahl. Unter Umständen nehmen zwei Pakete dann ve r- schiedene Wege und benötigen unterschiedlich lange Zeit - eine falsche Paketreihenfolge und P a- ketverlust können die Folge sein. Mit statischen Routen kann der Weg, den ein Paket zum Ziel nimmt, genau festgelegt werden. Übersicht über Anwendungsfelder für Streamingtechnologien für Videodaten Malte Hülder12 5 Literaturverzeichnis [Brau 80] Brauer, W. (Ed.): Net Theory and Applications LNCS Vol. 84, Springer Verlag 1980 [Brau 84] Brauer, W. : How to play the token game Newsletter 16, SIG "Petri Nets and Related System Models", p. 3-13, 1984 [BrRR 87a] Brauer, W. - Reisig, W. - Rozenberg, G. (Eds.): Petri Nets: Central Models and their Properties LNCS Vol. 254, Springer Verlag 1987 [Dünh 98] Dünhölter, K.: http://members.aol.com/xmldoku/syntax.htm [Stand: 4.11.1998] Jörg Röhrig 13 Grundlegende Netzwerkdienste/ -protokolle Jörg Röhrig FB Informatik, Uni Dortmund J.Roehrig@uni-duisburg.de Zusammenfassung Diese Seminarausarbeitung soll dazu dienen, die grundlegenden Kenntnisse der Datenübertragung im Internet zu vermitteln. Dazu wird als erstes die Entwicklung des Internets betrachtet, wobei die En steh- ungsgeschichte des Netzes von besonderem Interesse ist. Da dieser Sachverhalt für den strukturellen Aufbau des heutigen Internets verantwortlich ist und somit auch für die Art der Datenübertragung. Danach werden die verschiedenen Übertragungsprotokolle des Internets, wie IP, TCP und UDP vorgestellt und deren Arbeitsweise erläutert. Die Hauptziele dieser Betrachtung sind das Verständnis des theoretischen Aufbaus dieser Protokolle und die daraus resultierende paketorientierte Sichtweise des Internets. Als nächstes wird das sogenannte “Routing” behandelt, also wie die Datenpakete im Internet ihren Weg von einem Sender zum Empfänger finden. In diesem Zu- sammenhang wird auch auf die unterschiedlichen IP-Klassen und Netzwerkarchi- tekturen, wie LAN, MAN und WAN, eingegangen. Desweiteren wird der Router, der für die eigentliche Weiterleitung der Datenpakete im Internet verantwortlich ist, kurz vorgestellt. Zum Abschluß der Ausarbeitung wird noch ein Blick in die nahe Zukunft des In- ternets geworfen. Die sogenannte MBone-Technologie (Multicast-Backbone), soll dem Internet den Weg für weltweites Video eröffnen. 1 Wie alles begann Der Grundstein des heutigen Internets wurde bereits im Jahre 1968 gelegt. Das US–Verteidigungsmi- nisterium, „Department of Defence“ (DoD), vergab an die „Advanc d Research Projects Agency“ (ARPA) den Auftrag, ein Computernetzwerk zu entwickeln, das unverwundbar gegen feindliche An- griffe sein sollte. Das Netzwerk sollte auch dann noch weiterarbeiten, wenn ganze Teile, z.B. durch eine Bombe oder Sabotage zerstört wurden. Bereits Ende 1969 entwickelte sich aus diesem Bestreben das ARPANet, welches im Anfangsstadium lediglich aus 4 Knotenrechnern bestand, den sogenannten „Interface Messages Processors“ (IMP). Diese IMP´s (heute: Router) waren untereinander mit einer 50kbps Leitung verbunden, wie es die fol- gende Abbildung zeigt. Grundlegende Netzwerkdienste/-protokolle Jörg Röhrig14 Abbildung 1-1: ARPANet Dezember 1969 [Grom 99]/[Zako 99] Als Netzwerkprotokoll kam das „Network Control Protocol“ (NCP) zum Einsatz, das erste Host-to- Host Protkoll. Im Laufe der folgenden Jahre stieg die Zahl der Rechner im ARPANet rasant an, zumindest für dama- lige Verhältnisse, so daß im Jahre 1972, als das ARPANet auf der „International Conferences on Computer Communications“ (ICCC) der Öffentlichkeit vorgestellt wurde, dieses bereits aus 40 IMP´s bestand. Im Jahre 1973 wurde an der Standford University das „Internet-Programm“ gegründet. Ziel dieser In- ternet Working Group war es, die Grundsätze zur Verbindung unabhängiger Netzwerke zu erarbeiten. Durch die stark anwachsende Rechnerzahl im ARPANet wurde sehr schnell klar, daß das NCP am Ende seiner Leistungsfähigkeit angekommen war. Aus diesem Grunde begannen Bob Kahn (DARPA) und Vincent Cerf (Standford University) im Jahre 1973 mit dem Entwurf eines Net-to-Net Verbin- dungsprotokolls, welchem sie den Namen „Transmission Control Protocol“ (TCP) gaben. Mit diesem Protokoll wurde erstmals die Möglichkeit geschaffen, eine Host-to-Host Verbindung, über das lokale Netzwerk hinaus, zu einem Rechner in einem anderen Netzwerk aufzubauen. Durch die Entwicklung dieses Protokolls konnten nun verschiedene andere Netze mit dem ARPANet verbunden werden, wie in Abbildung 1-2 zu sehen ist. Den großen Durchbruch schaffte TCP jedoch erst im Jahr 1983, da viele wissenschaftliche Einrich- tungen Unix-Rechner verwandten und mit dem Erscheinen des damals neuen Unix 4.2 BSD (Berkley System Distribution) stand TCP erstmals kostenlos zur Verfügung. Dieser Umstand hatte zur Folge, daß sich TCP nun sehr schnell verbreitete und de facto zum Standard erklärt wurde. Kurz darauf kam auch in die Netzstruktur Bewegung. Das ARPANet, das inzwischen unter die Schirmherrschaft der „Defence Communications Agency“ (DCA) gestellt worden war, wurde aufg- teilt in einen militärischen Teil, das MILNet und das weiterhin öffentlich zugängliche ARPANet. Die beiden Netze wurden mittels Gateways von einander getrennt, um das MILNet vor Angriffen aus dem ARPANet zu schützen. Diese Gateways werden in Abb. 1-2 durch eine senkrechte Linie symbolisiert. Mitte der 80er Jahre schlossen sich immer mehr Netzwerke an das ARPANet an, wie z.B. das NSFNet der „National Science Foundation“. Womit dann das Zeitalter des Internets begann. Node 1: UCLA (30 August) · Function: Network Measurement Center · System,OS: SDS SIGMA 7, SEX Node 2: Stanford Research Institute (SRI) (1 October) · Network Information Center (NIC) · SDS940/Genie · Doug Engelbart's project on "Augmentation of Human Intellect" Node 3: University of California Santa Barbara (UCSB) (1 November) · Culler-Fried Interactive Mathematics · IBM 360/75, OS/MVT Node 4: University of Utah (December) · Graphics · DEC PDP-10, Tenex SRI SDS 940 IMP I M P DEC PDP-10 UTAH I M P IMP SDS S-7 UCLA IBM 360/75 UCSB Grundlegende Netzwerkdienste/-protokolle Jörg Röhrig 15 Abbildung 1-2: ARPANet August 1987 [Dodg 99] 2 Die Internetprotokolle 2.1 Die Schichtmodelle 2.1.1 ISO- OSI Referenzmodell Das OSI-Schichtmodell (Open System Interconnection) der „International Standards Organisation“ (ISO) wird zur Beschreibung der Funktionsweise bzw. zur Realisierung von Netzwerkprotokollen verwendet. Wie in Abbildung 2-1 zu sehen ist, umfaßt das Modell insgesamt 7 Schichten (Layers). 7 Anwendungsschicht(Application Layer) 6 Darstellungsschicht(Presentation Layer) 5 Kommunikationssteuerungsschicht(Session Layer) 4 Transportschicht(Transport Layer) 3 Vermittlungsschicht(Network Layer) 2 Sicherungsschicht(Datalink Layer) 1 Bitübertragungsschicht(Physical Layer) Abbildung 2-1: ISO-OSI Schichtmodell [Nico 96] Grundlegende Netzwerkdienste/-protokolle Jörg Röhrig16 Durch die hierarchische Anordnung der Schichten im OSI-Modell wird eine Reduktion der Komple- xität der Kommunikation erreicht. Jede Schicht bietet eine Dienstleistung an, die vollkommen unab- hängig von der Implementation der übrigen Schichten ist. Einzig die Schnittstellendefinition, Import- und Exportparameter, müssen den benachbarten Schichten bekannt sein. Soll also ein Datenpaket an einen Rechner im Netzwerk übermittelt werden, durchläuft das Paket be- ginnend mit der Anwendungsschicht (7) nach einander alle Schichten bis zur Bitübertragungsschicht (1). Auf der Seite des empfangenden Rechners erfolgt dann die selbe Prozedur, mit dem Unterschied, daß die Schichten diesmal in umgekehrter Reihenfolge durchlaufen werden. Zwischen je zwei Schichten (Sender- und Empfängerschicht) besteht auf jeder Ebene eine Art Pseu- doverbindung. Zum Beispiel versieht die Sicherungsschicht des Senders die zu übertragenden Daten mit zusätzlichen Bits zur Fehlererkennung. In der entsprechenden Schicht des Empfängers werden diese Bits dann ausgewertet und von den eigentlichen Daten wieder getrennt. Abbildung 2-2: Arbeitsweise des OSI-Modells Die Dienste der jeweiligen Schichten im OSI-Modell sind folgendermaßen definiert. (1) Bitübertragungsschicht: Definiert die physikalischen Eigenschaften der Übertragungswege, wie z.B. Telefonkabel, Koaxkabel oder Lichtwellenleiter usw. (2) Sicherungsschicht: Diese Schicht soll für eine fehlerfreie Übertragung der über die physikalische Verbindung empfangenen/gesendeten Daten sorgen. Ihre Aufgabe besteht also in der Erkennung und Ver- meidung von fehlerhaften Datenpaketen. (3) Vermittlungsschicht: Dient zur Verwaltung von Verbindungen zwischen den höheren Schichten und den Rechnern im Netzwerk. Diese Verbindungen können dabei entweder verbindungslos oder verbindung- orientiert sein. Desweiteren kümmert sich diese Schicht um die Wegwahl (Routing) im Netz. Sender 7 Anwendungsschicht 6 Darstellungsschicht 5 Kommunikations-steuerungsschicht 4 Transportschicht 3 Vermittlungsschicht 2 Sicherungsschicht 1 Bitübertragungsschicht Empfänger 7 Anwendungsschicht 6 Darstellungsschicht 5 Kommunikations- steuerungsschicht 4 Transportschicht 3 Vermittlungsschicht 2 Sicherungsschicht 1 Bitübertragungsschicht Grundlegende Netzwerkdienste/-protokolle Jörg Röhrig 17 (4) Transportschicht: Diese Schicht ist für die Qualität der Verbindung (Quality of Service, QoS) verantwortlich, wie z.B. Datendurchsatz, Fehlerwahrscheinlichkeit usw. (5) Kommunikationssteuerungsschicht: In dieser Schicht wird der Dialog zwischen zwei Anwendungen verwaltet, dazu gehört unter anderem der Auf- bzw. Abbau von Verbindungen, aber auch die Art des Dialogs (voll- oder halbduplex). (6) Darstellungsschicht: Diese Schicht ist für die Syntax der Daten zuständig, wie Format (Komprimierung) und die Art der Kodierung (Zeichensatz, Verschlüsselung) (7) Anwendungsschicht: Dient zur Definition der Kommunikationsschnittstellen für die Anwendungen, die auf diese Schicht zugreifen um das Netz zu nutzen. Meist ist die Anwendungsschicht jedoch hersteller- spezifisch. 2.1.2 Das TCP/IP Modell Der Vergleich des im letzten Abschnitt vorgestellten ISO-OSI Modells mit dem TCP/IP Schichtmo- dell zeigt einige Unterschiede auf. Diese sind hauptsächlich durch die Tatsache begründet, daß zur Entwicklungszeit des TCP/IP Protokolls das OSI-Modell noch nicht existierte. Abbildung 2-3: TCP/IP vs. ISO-Modell [Nico 96] Wie in der Abbildung 2-3 zu sehen ist, enthält das theoretische TCP/IP-Schichtmodell im Gegensatz zum OSI-Modell nur 4 Schichten, da einige Schichten des ISO-Modells zusammenfallen. (1) Netzzugangsschicht: Diese Schicht ist für den Transport der IP-Datengramme durch das Netzwerk verantwortlich. Wie diese Übertragung im Einzelnen zu erfolgen hat, ist nicht genau spezifiziert. Zum Einsatz kom- men Protokolle wie z.B. X.25 oder Ethernet. 7 Anwendungsschicht 6 Darstellungsschicht 5 Kommunikations- steuerungsschicht 4 Transportschicht 3 Vermittlungsschicht 4 Anwendungsschicht (Application Layer) 3 Transportschicht (Host-to-Host Layer) 2 Internetschicht (Internet Layer) 1 Netzzugangsschicht (Network Access Layer) 2 Sicherungsschicht 1 Bitübertragungsschicht TCP/IP - Schichten Grundlegende Netzwerkdienste/-protokolle Jörg Röhrig18 (2) Internetschicht: Zu den Aufgaben dieser Schicht, die das „Internet Protokoll“ (IP) übernimmt, gehört die Adres- sierung von Datenpaketen (Datengramme) und das Fragmentieren eines Datenpaketes in mehrere einzelne Datengramme, wenn deren Paketlänge die durch die „Maximum Transmission Unit“ (MTU) festgelegte Länge übersteigt. (3) Transportschicht: In dieser Schicht können zwei verschiedene Protokolle zum Einsatz kommen. Zum Einen ist dies das „Transmission Control Protocol“ (TCP), welches verbindungsorientiert ist und eine Fehler- korrektur bietet. Zum Anderen kann das „User Datagram Protocol“ (UDP), welches verbin- dungslos ist und nur über eine Fehlererkennung verfügt, eingesetzt werden. Die Aufgabe ist je- doch in beiden Fällen die gleiche, es soll eine H st-to-Host (Ende-zu-Ende) aufgebaut werden. (4) Anwendungsschicht: Stellt die Anwendungssoftware bereit, wie z.B. FTP, TELNET, SMTP usw. und bildet somit die Schnittstelle zum Benutzer. Telnet FTP SMTP Name Server NFS Transmission Control Protocol User Datagram Protocol Internet Protocol X.25 Ethernet Token Ring Abbildung 2-4: Architekturbeispiel [BrHo 95] Die Arbeitsweise des TCP/IP-Schichtmodells läßt sich am einfachsten durch einen Vergleich mit der normalen Briefpost erklären. Sei also das Datenpaket, welches von einem Rechner zu einem anderen Rechner im Netzwerk übertragen werden soll, ein Brief, der von einem Absender zu einem Empfänger geschickt werden soll. Der Absender, der den Brief verschicken will, versieht diesen mit der Adresse des Empfängers (An- wendungsschicht). Danach wirft er den Brief in einen Briefkasten und übergibt diesen somit der Post zum Transport (Transportschicht). Der Briefkasten wird von einem Postboten geleert und die Post- sendungen nach Zielorten sortiert. Zum Transport wird der Brief dann an ein passendes Verkehrsmit- tel, z.B. die Bahn, übergeben (Internetschicht). Bei diesem Transport kann es natürlich vorkommen, daß das Transportmittel mehrmals gewechselt wird (N tz erkschicht). Am Zielort angekommen, werden alle Postsendungen vom Transportmittel abgeholt und an einen Postboten übergeben. Dieser sortiert die Sendungen und verteilt diese in die Fächer der entsprechenden Auslieferungsbezirke (In- ternetschicht). Der Zusteller, der für die Auslieferung des betrachteten Briefes verantwortlich ist, wirft diesen in den Briefkasten des Empfängers (Transportschicht). Der Empfänger, der inzwischen seinen Briefkasten geleert hat, kann nun den Brief lesen und gegebenenfalls darauf antworten (An- wendungsschicht). Grundlegende Netzwerkdienste/-protokolle Jörg Röhrig 19 2.2 Die Internetschicht 2.2.1 IP-Header Die Hauptaufgabe des Internet-Protokolls ist die Adressierung und die Fragmentierung von Datenpa- keten. Dazu wird der sogenannte IP-Header konstruiert und vor das eigentliche Datenpaket gehängt. Wie in Abbildung 2-5 zu sehen ist, besteht der IP-Header aus Datenfeldern, die alle zur Übermittlung des Datenpaketes erforderlichen Daten enthalten. In Analogie zur Briefpost, kann man den IP-Header mit einem Briefumschlag vergleichen. Beim Internet-Protokoll handelt es sich um ein verbindungsloses Protokoll (connection less), das heißt, es wird keine Host-to-Host Verbindung aufgebaut. Die Datenpakete werden nur ins Netz gewor- fen und müssen ihren Weg selbst finden (Routing). Daher wird IP auch als unzuverlässig (unreliable) bezeichnet. Die fehlerfreie Übertragung zum Zielhost wird somit nicht garantiert. Dies ist jedoch kein Nachteil, wie man im ersten Augenblick annehmen könnte. Sondern hat den Vorteil, daß IP dadurch effizienter arbeitet. Daraus folgt aber, daß sich eine höhere Schicht um die Verläßlichkeit der Daten- übertragung kümmern muß. Wie im Kapitel 2.3 zu shen ist, übernimmt dies das TCP-Protokoll. 1 4 8 12 16 20 24 28 32 Version Kopflänge(IHL) Servicetyp (ToS) Paketlänge Identifikation D F M F Fragmentabstand Lebenszeit (TTL) Transportprotokoll- nummer Kopfprüfsumme IP-Senderadresse IP-Empfangsadresse Optionen Füllzeichen Abbildung 2-5: Der IP-Header [B Ho 95] · Version: Dieses Feld gibt die Version des verwendeten IP-Protokolls an. Zur Zeit wird noch Version 4 benutzt, jedoch befindet sich die IP Version 6 schon in der Erprobung. · Kopflänge (Internet Header L ngth): Gibt die Länge des Protokollkopfes (Header) an, da diese wegen des variablen Options-Feld s nicht konstant ist. Die Länge entspricht dabei der Anzahl von 32-Bit-Wörtern im Header. Die kleinste mögliche Länge ist somit 5, wenn es kein Options-Feld gibt. Der Maximalwert liegt bei 15, was insgesamt 60 Bytes entspricht. · Servicetyp (Type of Service): In diesem Feld können spezielle Kriterien in Bezug auf die Zuverlässigkeit und die Geschwin- digkeit angegeben werden. Grundlegende Netzwerkdienste/-protokolle Jörg Röhrig20 0 1 2 3 4 5 6 7 Precedence D T R 0 0 Abbildung 2-6: Servicetyp-Feld (ToS) Die Bits des Servicetyp-Feldes haben folgende Bedeutung: Bits 0-2:Precedence (Vorrang) Bit 3:0 = Normal Delay (Verzögerung) 1 = Low Delay Bit 4:0 = Normal Throughput (Durchsatz) 1 = High Throughput Bit 5:0 = Normal Reliability (Zuverlässigkeit) 1 = High Reliability Bits 6-7:Reserviert für spätere Benutzu g, daher immer 0 Precedence-Bits nach RFC 791 111- Network Control 011- Flash 110- Internetwork Control 010- Immediate 101- CRITIC/ECP 001- Priority 100- Flash Override 000- Routine Standardmäßig (Default) werden alle 7 Bits auf Null gesetzt. Die Precedenc -Bits geben die Dringlichkeit eines Datengramms an, die in 7 Stufen von 0 (Normal) bis 7 (Netzwerkkontrolle) reicht. Diese drei Bits werden jedoch nur vom US-Verteidigungsministerium (DoD) genutzt, so daß sie im Internet keine Rolle spielen. Die Bits 3-5 sollen dem Router bei der Wahl des richti- gen Wegs zur Weiterleitung des Datengramms helfen. Jedoch werden auch diese Bits nur sel- ten ausgewertet. · Paketlänge (Total Length): Gibt die Gesamtlänge (Header + Daten) des Datengramms in Bytes an. Da das Feld eine Größe von 16-Bit hat, liegt die maximale Länge des Header bei 216, was 65.535 Bytes entspricht. Je- doch ist dieser Wert nur als theoretisch anzusehen, da nach RFC 791 nur 576 Byte spezifiziert sind. Was aber nicht heißen soll, daß in der Praxis nicht auch mal längere Datenpakete ver- wendet werden. · Identifikation (Identification): Anhand dieses Feldes kann ein Zielhost ein fragmentiertes Datengramm anderen Fragmenten des gleichen Datenpaketes zuordnen. Dabei bekommt jedes dieser Fragmente die gleiche Iden- tifikationsnummer. Die Vergabe dieser Nummer übernimmt in der Regel die Transportschicht. · DF-/MF-Flag: Beim gesetzten DF-Flag (Don´t Fragment) darf das Datenpaket auf keinen Fall fragmentiert werden. Dies kann aber zur Folge haben, daß Datengramme, deren Länge größer als 567 Bytes sind, unter Umständen nicht verarbeitet werden können und somit verworfen werden. Das Setzen des MF-Flags (More Fragments) teilt dem Zielhost mit, daß es sich bei dem Daten- gramm um ein Fragment handelt und daß noch weitere Fragmente folgen werden. Beim letzten Grundlegende Netzwerkdienste/-protokolle Jörg Röhrig 21 Fragment ist das MF-Bit nicht mehr gesetzt und signalisiert damit, daß alle Fragmente über- mittelt wurden. · Fragmentabstand (Fragment Offset): In diesem Feld wird jedem Fragment eines Datenpaketes eine fortlaufende Nummer zugeord- net. Damit wird es dem Zielhost ermöglicht, die Fragmente in der richtigen Reihenfolge zu- sammensetzen zu können. Auf Grund der Länge des Feldes (12 Bit) liegt die maximale Anzahl von Fragmenten bei 4096. Bei nicht fragmentierten Paketen wird grundsätzlich eine Null ange- geben. · Lebenszeit (Time to Live): Das Feld gibt die maximale Lebensdauer eines Datengramms an. Dies soll verhindern, daß un- zustellbare Datengramme endlos in einem Netzwerk umherirren. Der Startwert beträgt 255 Se- kunden. Bei jedem Erreichen eines Netzwerkknotens (Router) wird dieser Wert um mindestens 1 verringert werden, je nachdem wie lange das Datengramm zwischengespeichert wird. Daraus ergibt sich, daß ein Paket nach Erreichen von 255 Netzwerkknoten verworfen wird. Sollte die- ser Fall eintreten, erhält der Sender eine Fehlermeldung in Form einer ICMP-Nachricht (Inter- net Control Message Protocol). · Transportprotokollnummer (Protocol): Enthält die Nummer des Transportschichtprotokolls, an welches das Datenpaket weitergeleitet werden soll. Die Numerierung der Protokolle ist nach RFC 1700 einheitlich für das ganze In- ternet standardisiert, z.B. ICMP=1, TCP=6, UDP=17 usw. · Kopfprüfsumme (Header checksum): In diesem Feld wird eine Prüfsumme gespeichert, die jedoch nur die Felder des IP-Headers be- rücksichtigt, die Nutzdaten des Dat ngrammes werden nicht geprüft. Da sich das Feld „Le- benszeit“ (Time to Live) bei jedem Netzwerkknoten (Router) verändert, muß auch die Prüf- summe jedesmal neu berechnet werden. Zur Berechnung der Prüfsumme wird das 1er- Komplement aller 16-Bit Halbworte addiert und aus der Summe wird dann wiederum das 1er- Komplement gebildet. Zur Erzeugung des 1er-Komplementes werden bei einer Dualzahl alle Stellen negiert und das höchste Bit als Vorzeichen interpretiert. · IP-Sendeadresse (Source Address): Enthält die Internet-Adresse des Senders als 32-Bit Wort. · IP-Empfangsadresse (Destination Address): Hier steht die Internet-Adresse des Empfängers. · Optionen (Options): Das Optionen-Feld dient zur Aufnahme von zusätzlichen Informationen, z.B. um Anpassungen an die Anforderungen eines höheren Protokolls zu ermöglichen. Das hat den Vorteil, daß selten benutzte Optionen keinen unnötigen Speicherplatz im Header durch ein festes Feld in An- spruch nehmen. Außerdem können auf diese Art, jederzeit weitere Optionen in die Spezifikati- on des IP-Protokolls aufgenommen werden, ohne daß dessen Struktur verändert werden muß. Jede Option beginnt mit einem Byte, das Aufschluß darüber gibt, um welche Option es sich handelt. Danach kann noch ein weiteres Byte folgen, welches auch der Identifikation dient. Im Folgenden können auch noch ein oder mehrere Datenbytes für die Option angehängt sein. Zur Zeit sind folgende Optionen verfügbar: i.) End of Option List Kennzeichnet das Ende der Optionsliste. Grundlegende Netzwerkdienste/-protokolle Jörg Röhrig22 ii.) No Option Dient zum Auffüllen von Bits zwischen zwei Optionen. iii.) Strict Source - Routing Schreibt dem Datengramm genau vor, über welchen Weg es das Netzwerk zum Zielhost zu durchlaufen hat. Dieser Pfad wird durch die IP´s der Router vorgegeb n. iv.) Loose Source - Routing Analog „Strikt Source – Routing“, jedoch ist es dem Datengramm zwischen den vorge- schriebenen IP`s auch noch erlaubt, andere Router zu durchlaufen. v.) Record Route Bewirkt, daß alle auf dem Pfad durchs Netzwerk durchlaufenden Router, ihre IP-Adresse an das Ende des Optionen-Feldes anhängen. Diese Funktion ist jedoch mit Vorsicht zu genießen, da, wie bereits erwähnt, die Länge des Feldes auf 40 Bytes begrenzt ist. vi.) Timestamp Arbeitet ähnlich der „Record Route“ Operation. Es wird jedoch neben der IP auch die Uhrzeit des Besuchs eines Routers gespeichert. Dadurch kann man feststellen, welche Zeit für die Übertragung des Datengramms benötigt wurde. Auch hier muß die Länge des Optionsfeldes berücksichtigt werden. vii.) Security Gibt an, wie geheim ein Datengramm einzustufen ist. Die Option ist hauptsächlich für das Militär gedacht, wird aber nur selten von Router beachtet. · Füllzeichen (Padding): Da das Optionen-Feld eine variable Länge hat und die Länge des TCP-Headers immer ein vielfa- ches von 32 Bit sein muß, wird mittels Füllzeichen (Nullen) ausgeglichen. 2.3 Die Transportschicht 2.3.1 TCP (Transmission Control Protocol) Das TCP Protokoll ist ein verläßliches (reliable) und verbindungsorientiertes (connection oriented) Protokoll. Es sorgt dafür, daß die Daten fehlerfrei zum Empfänger übermittelt werden. Dazu wird, ähnlich wie beim Internet-Protokoll, ein Header verwendet der vor das Datenpaket gehängt wird. Die- ser Header besteht aus einer Reihe von Datenfeldern, die alle für den Empfänger relevanten Informa- tionen enthalten. Diese Datenpakete, die aus dem TCP-Header und den Nutzdaten bestehen, werden als Segmente bezeichnet. Um dem Empfänger die Möglichkeit der Fehleranalyse zu ermöglichen, verfügt jedes Segment über eine Prüfsumme. Wenn ein Segment korrekt empfangen wurde, wird dieser Empfang durch ein Seg- ment des Empfängers bestätigt. Dieses Segment hat die Funktion einer Quittung, die dem Sender den fehlerfreien Empfang bestätigt. Sollte diese Quittung den Sender jedoch nicht in einer festgelegten Zeitperiode erreichen, wird das nicht korrekt übermittelte Segment erneut an den Empfänger übertra- gen. Dadurch kann es natürlich passieren, daß der Empfänger ein Segment mehrfach erhält. Dies hat jedoch keine negativen Auswirkungen auf die Datenkonsistenz, da jedes Segment über eine eindeutige Sequenznummer verfügt, anhand welcher alle Duplikate ermittelt werden können. Die mehrfach emp- fangenen Segmente werden einfach vernichtet. Grundlegende Netzwerkdienste/-protokolle Jörg Röhrig 23 Neben der korrekten Übermittlung der Daten ist TCP auch für die Weiterleitung der empfangenen Daten an die entsprechende Anwendung verantwortlich. Dies geschieht mittels der Portnummer, die im Feld Empfänger-Port des TCP-Headers vermerkt ist. Da dieses Feld 16 Bit groß ist, liegt die theo- retische Anzahl von Portnummern bei 65.535. Für die wichtigsten Anwendungen sind diese Port- nummern nach RFC 1700 standardisiert, z.B. FTP = 21, Telnet = 23 usw.. Durch die Portnummer zu- sammen mit der IP-Adresse kann ein Anwendungsprozeß eindeutig angesprochen werden, diese Kombination wird auch als Socket bezeichnet. 1 4 8 12 16 20 24 28 32 Sender-Port Empfänger-Port Sequenznummer Quittungsnummer Daten- abstand Reseviert U R G A C K P S H R S T S Y N F I N Fenstergröße Prüfsumme Urgent-Zeiger Optionen Füllzeichen Abbildung 2-7: TCP-Header [BrHo 95] · Sender-Port (Source Port): Gibt die Absenderadresse des Prozesses bzw. Dienstes an. Für die wichtigsten Anwendungen gibt es fest definierte Portnummern, z.B. FTP = 21, Telnet = 23, SMTP = 25 usw. · Empfänger-Port (Destination Port): Bestimmt den Prozeß auf dem Zielhost, an den die Daten übermittelt werden sollen. · Sequenznummer (Sequence Number): Die Sequenznummer gibt die Position des Segmentes im Datenstrom an. Zu Beginn der Über- mittlung wird diese initial erzeugt und an den Zielhost übermittelt. Dieser wiederum erzeugt selbst eine Quittungsnummer, die er dann zur Bestätigung an den Absender zurückschickt. Nachdem die Verbindung steht, wird bei jedem zu übertragenden Segment die Sequenznummer um die Anzahl der erhaltenen Bytes erhöht. · Quittungsnummer (Acknowledgement Number): Die Quittungsnummer gibt an, welche Bytes der Zielhost als nächstes empfangen wird. Damit weiß der Sender, bis zu welcher Stelle die Daten beim Empfänger korrekt angekommen sind. · Datenabstand (Data Offset): Gibt die Länge des TCP-Headers, anhand der Anzahl enthaltener 32-Bit-Wörter an. Diese ist er- forderlich, da die Länge des Optionen-Feldes variabel ist. · Reserviert (Reserve): Enthält 6 reservierte Bits für eine spätere Nutzung. (Zur Zeit standardmäßig auf Null gesetzt) Grundlegende Netzwerkdienste/-protokolle Jörg Röhrig24 · URG (Urgent): Bei gesetztem Bit wurde das Urgent-Zeiger-Feld verwendet und muß somit ausgewertet werden. · ACK (Acknowledge): Wenn das Bit gesetzt ist, enthält das Quittungsnummer-Feld einen gültigen Eintrag. Anderenfalls wir der Eintrag nicht beachtet. · PSH (Push): Bei gesetztem Bit wird veranlaßt, daß die Daten nicht gepuffert, sondern sofort an die Anwen- dung weitergeleitet werden. · RST (Reset): Ist das RST-Bit = 1, dann wird die Verbindung zurückgesetzt. Dies geschieht z.B., wenn es bei der Übertragung zu einem Fehler gekommen ist oder wenn dem Aufbau einer Verbindung nicht zugestimmt wird. · SYN (Synchronisation): Wird beim Aufbau einer Verbindung auf 1 gesetzt, zusätzlich ist das ACK-Flag = 0. Zur Bestäti- gung der Verbindung wird dem Zielhost eine Antwort mit gesetzten SYN- und ACK-Flag ge- schickt. · FIN (Final): Signalisiert, daß die Datenübermittlung beendet ist und die Verbindung abgebaut wird. · Fenstergröße (Window Size): Über dieses Feld wird die Flußkontrolle von TCP gesteuert. Dies geschieht mittels eines Schie- befensters (Sliding Window) mit variabler Größe. Durch die Angabe der Fenstergröße teilt der Empfänger dem Sender mit, über wieviel Puffer er verfügt, um empfangene Segmente zwischen zu speichern. Um ein Überlaufen (ov rflow) dieses Puffers zu verhindern, sendet der Empfänger eine Quittung mit einer Fenstergröße von Null. Um die Übertragung nach dem Stop wieder in Gang zu setzen, wird eine weitere Quittung mit einer Fenstergröße ungleich Null gesendet. · Prüfsumme (Checksum): Die Prüfsumme dient zur Fehlererkennung und wird aus dem TCP-Header, den Daten und dem Pseudo-Header gebildet. Diese Summe wird auf die gleiche Art und Weise wie die Prüfsumme beim IP-Header erz ugt. 1 4 8 12 16 20 24 28 32 IP-Senderadresse IP-Empfangsadresse Leeres Feld = 0 Protokollnummer = 6 Segmentlänge Abbildung 2-8: Pseudo-Header Der Pseudo-Header dient nur zur Berechnung der Prüfsumme und wird danach sofort wieder verworfen. Die Benutzung der IP-Adressen im P udo-Header ist eigentlich eine Verletzung der Protokollhierarchie, da diese nur von den Internet-Schichten verwendet werden dürfen. Grundlegende Netzwerkdienste/-protokolle Jörg Röhrig 25 · Urgent-Zeiger (Urgent Pointer): Dieses Feld kennzeichnet Daten als besonders dringlich. Dies könnte z.B. ein Interrupt bzw. Break in einer Telnet-Sitzung sein. Durch Addition des Urgent-Zeigers und der Sequenznummer erhält man einen Zeiger auf das letzte dringliche Byte. · Optionen (Options): Dient zur Angabe von Funktionen, die durch die anderen Felder im TCP-Header nicht abgedeckt werden. Zur Zeit sind folgende drei Optionen für dieses Feld vorgesehen. i.) End of Option List Kennzeichnet das Ende der Optionsliste ii.) No-Operation Dient zum Auffüllen von Bits zwichen zwei Optionen iii.) Maximum Segment Size Dient dazu, eine größere Anzahl von Nutzdaten in einem Segment festzulegen. Dadurch kann die Anzahl der zur Übertragung benötigten Segmente verringert werden, was sich günstig auf den Overhead auswirkt, der durch den TCP-Header verursacht wird. Der De- fault Wert liegt bei 536 Bytes. · Füllzeichen (Padding): Da das Optionen-Feld eine variable Länge hat und die Länge des TCP-Headers immer ein vielfa- ches von 32 Bit sein muß, wird mittels Füllzeichen (Nullen) aufgefüllt. Beim TCP-Protokoll handelt es sich, wie schon erwähnt, um ein verbindungsorientiertes Protokoll. Aus diesem Grunde wird die logische Verbindung zwischen Sender und Empfänger über ein soge- nanntes „Three way handshake“ aufgebaut. Zum Aufbau der Verbindung übermittelt der Sender dem Empfänger ein erstes Segment, das noch keine Nutzdaten enthält. Dieses Segment enthält eine Se- quenznummer, mit welcher die Übertragung startet. Außerdem ist in diesem Segment das SYN-Fla gesetzt, welches den Wunsch des Verbindungsaufbaus anzeigt. Sollte der Empfänger diesem Wunsch nachkommen, so sendet er zur Bestätigung des Verbindungsaufbaus ein Segment, bei dem das SYN- und ACK-Flag gesetzt wird. Desweiteren enthält dieses Segment eine vom Empfänger vergebene Se- quenznummer, und im Quittungsnummern-Feld steht die um 1 erhöhte Sequenznummer des Senders. Nach Empfang dieses Segmentes durch den Sender verschickt dieser wiederum eine Bestätigung. Je- doch darf diese bereits Nutzdaten enthalten. Bei diesem Segment ist nur noch das ACK-Flag gesetzt und das Sequenznummern-Feld enthält die Quittungsnummer des Empfängers. Zusätzlich wird im Quittungsnummern-Feld die um 1 erhöhte Sequenznummer des Empfängers eingetragen. Abbildung 2-9: Verbindungsaufbau „Three Way Handshake“ [Hart 97] Se nd er Em pf än ge r Seq=x SYN=1 Seq=y Ack=x+1 SYN=ACK=1 Seq=x+1 Ack=y+1 ACK=1 Grundlegende Netzwerkdienste/-protokolle Jörg Röhrig26 Der eigentliche Datenaustausch findet, wie schon erwähnt, nach dem „Sliding Windows“ Prinzip statt. Der Sender schickt dem Empfänger so viele Bytes, wie in dem Fenstergröße-Feld im TCP-Header an- geben ist, und wartet dann auf die Bestätigung des Empfängers, bevor die nächsten Bytes abgesandt werden. Nach erfolgreicher Datenübermittlung muß die Verbindung zwischen beiden Rechnern wi- der getrennt werden. Dies geschieht, wie der Verbindungsaufbau, mittels eines „Three way ha d ha- ke“. Der Rechner (A), der die Verbindung trennen will, sendet dem anderen Rechner (B) ein Segment, in dem das FIN- und ACK-Flag gesetzt ist und alle bis zu diesem Zeitpunkt empfangenen Daten be- stätigt werden. Nach Erhalt dieses Segmentes sendet auch der Rechner (B) ein Segment, in dem er alle bis dahin empfangenen Daten quittiert. Auch hier ist das FIN- und ACK-Flag gesetzt. Wie sollte es anders sein. Wird dieser Erhalt von Rechner (A) durch ein ACK bestätigt, so ist die Verbindung abge- baut. 2.3.2 UDP (User Datagram Protocol) Neben dem TCP-Prokoll gehört auch das „User Datagram Protokoll“ zur Transportschicht. Es handelt sich dabei um ein u zuverläßliches (unreliable) und verbindungsloses (Protokoll). Die Bezeichnung „unzuverlässig“ soll nicht, wie man vermuten könnte, bedeuten, daß die Daten nicht korrekt übermit- telt werden, sondern bezeichnet die Tatsache, daß durch das Protokoll nicht garantiert wird, daß die Daten beim Empfänger auch ankommen. Wenn die Daten den Empfänger jedoch erreicht haben, kann deren Korrektheit mittels der Prüfsumme überprüft werden. Sollte diese Prüfung jedoch negativ aus- fallen, dann sind die Daten auf jeden Fall verloren, da sie kein zweites Mal übermittelt werden. 1 4 8 12 16 20 24 28 32 Sender-Port Empfänger-Port UDP-Länge UDP-Prüfsumme Abbildung 2-10: UDP-Header [Hart 97] Wie man in Abbildung 2-10 sehen kann, enthält der UDP-Header nur die absolut erforderlichen Ein- träge. Die Portnummern sind genauso definiert wie beim TCP-Protokoll und dienen zur Adressierung der richtigen Sender- und Empfänger-Prozesse. Die UDP-Länge gibt die Länge des gesamten Seg- mentes an, also inklusive UDP-Header. Die Prüfsumme ist im Gegensatz zu den anderen Feldern op- tional. Soll auf die Prüfsumme verzichtet werden, wird in das Prüfsummen-Feld eine Null eingetragen. Auf Grund der guten Effizienz des UDP-Protokolls ist es prädestiniert für die Datenübermittlung bei Realtime-Anwendungen, wie z.B. Sprache oder Video. Hierbei kommt es meist weniger auf die Kor- rektheit der Daten an, als vielmehr auf die möglichst schnelle Übertragung. Dabei muß jedoch in aller Regel ein gewisser Prozentsatz der Segmente korrekt empfangen werden, anderenfalls wird die Ver- bindung wegen der schlechten Übertragungsqualität unterbrochen. Ein weiterer Einsatzbereich von UDP ist die Übermittlung kleiner Datenmengen, für die der Aufbau einer Verbindung mittels „Three way handshake“ zu aufwendig (zeitintensiv) ist, z.B. ist dies beim „Do ain Name Service“ (DNS) der Fall. Grundlegende Netzwerkdienste/-protokolle Jörg Röhrig 27 3 Routing in TCP/IP-Netzwerken (Internet) In der bisherigen Betrachtung wurde nur auf die Arbeitsweise des Senders und Empfängers eingegan- gen. Daher soll im Folgenden die eigentliche Datenübermittlung im Internet näher betrachtet werd n. 3.1 IP-Adressen Wie im letzten Kapitel erläutert, werden beim Internet-Protokoll die Daten in Form von Datengram- men übertragen. Damit die Datengramme von einem H st zu einem anderen Host gelangen können, muß jeder Host im Netzwerk (Internet) eindeutig identifizierbar sein. Aus diesem Grunde verfügt je- der Host über mindestens eine sogenannte IP-Adresse. Diese IP-Adressen haben eine Länge von 32Bits und werden zur besseren Lesbarkeit in vier durch Punkte getrennte in Dezimalschreibweise an- gebenen Oktette dargestellt. Die IP-Adresse setzt sich aus zwei Teilen zusammen. Der erste Teil ist die Netzadresse (n tid) und der zweite Teil ist die Interface-Adresse (hostid). Dabei gibt die Netza- dresse das Netzwerk an, in dem sich der Host befindet, und die Int rface-Adresse dient dann zur Iden- tifizierung des Hosts in dem Netzwerk. Wenn man sich nochmals das Beispiel Briefpost/TCP-Pro okoll vor Augen hält, würde die Netzadres- se der Postleitzahl und die Interface-Adresse der Straße mit Hausnummer des Adressat n entsprechen. 0 8 16 24 32 Klasse A 0 Netzwerk Host Klasse B 10 Netzwerk Host Klasse C 110 Netzwerk Host Klasse D 1110 Multicast Adressen Klasse E 1111 Für zukünftige Adressierungen reserviert Abbildung 3-1: Adressklassen [Hart 97] Wie in Abbildung 3-1 zu sehen, ist der Adressraum der Internet-Adressen in fünf Klassen unterteilt. Von diesen Klassen sind aber nur die Klassen A, B und C von praktischer Bedeutung. Die Unterschei- dung der Klassen erfolgt mit den vordersten Bit(s) der IP-Adresse. So ist das erste (signifikanteste) Bit der Klasse A immer gleich Null. Für die Netzadresse (n tid) blei- ben somit 7 Bit übrig, so daß theoretisch Werte im Bereich 0 bis 127 möglich sind. Die Adressen 0 und 127 haben jedoch eine Sonderfunktion. Somit liegen die IP-Adressen im Bereich 1.0.0.0 bis 126.255.255.255. Bei der Klasse B sind die beiden ersten Stellen gleich 1 0. Die Netzadresse umfaßt 14 Bits und die Interface-Adresse 16 Bits. Die möglichen Adressen liegen in dem Bereich 128.0.0.0 bis 191.255.255.255. Die Klasse C enthält die größte Anzahl von Netzwerken, dafür ist aber die An- zahl der Hosts pro Netz auf 254 beschränkt. Der gültige Adressbereich reicht von 192.0.0.0 bis 223.255.255.255. Grundlegende Netzwerkdienste/-protokolle Jörg Röhrig28 Die folgenden beiden Klassen D und E unterscheiden sich von den bisher betrachteten Klassen. Bei der Klasse D sind die ersten 4 Bits gleich 1 1 1 0. Sie enthält Multicast-Adressen, die es ermöglichen, mehrere Rechner gleichzeitig anzusprechen. Für die Klasse E, bei der die ersten 4 Bits gleich 1 1 1 1 sind, gibt es derzeit noch keine Verwendung. Daher sind die IP-Adressen 240.0.0.0 bis 255.255.255.255 für zukünftige Adressierungen reserviert. Klasse Netze max. Hosts pro Netz A 126 16.777.214 B 16.363 65.534 C 2.097.151 254 Abbildung 3-2: Adressraum der IP-Klassen Alle Hosts, deren IP-Adresse mit der gleichen Netid beginnen, müssen sich auch im gleichen Netz- segment befinden. Somit müßte ein Klasse A Netz über 16 Millionen Rechner verwalten. Da dies nicht praktikabel ist, gibt es die Möglichkeit, IP-Adressen zu maskieren. Dabei werden Teile der Hostid zur Erweiterung der Netid verwendet. Um nun festzustellen, welche Bits der IP-Adresse zur Netid und welche zur Hostid gehören, verwendet man die sogenannte „Subnet Mask“. In der Subnet Mask sind alle Bits der N tid mit 1 und die Bits der Hostid mit Null maskiert. Für ein Klasse B Netz entspricht die „Default Subnet Mask“ in Dezimalschreibweise 255.255.0.0. Da die Subnet Mask bit- weise arbeitet, kann die Anzahl der Subnetze und der darin enthaltenen Anzahl von Hosts den Erfo- dernissen angepaßt werden. 3.2 Netwerkarchitektur Im letzten Abschnitt wurden Netzwerke anhand ihrer IP-Klass (A, B, C) unterschieden. Jedoch ist diese Charakterisierung normalerweise unüblich. Vielmehr unterscheidet man Netzwerke durch deren Größe und Einsatzgebiete. · Das „Lokal Area Network“ (LAN) bezeichnet kleine lokale Netzwerke, deren Ausdehnung auf ei- nige 100m beschränkt ist. Meist haben diese Netze aber eine relativ hohe Dat nübertragungsrate. Die Netzwerkgröße entspricht also denen von kleineren und mittleren Betrieben. · Die nächst größere Netzwerkklasse ist das „Metropolitan Area Network“ (MAN), dessen Ausdeh- nung im Bereich 5km bis 50km liegt. Diese Netze gehören nicht unbedingt einer einzelnen Orga- nisation an, sondern können auch ein Zusammenschluß mehrerer Organisationen sein, die sich die Infrastruktur des MANs teilen. · Die größte Netzwerkklasse bildet das „Wi e Area Network“ (WAN), dessen Größe uneinge- schränkt ist und somit den ganzen Globus umspannen kann. Dies können z.B. Netzwerke von Internet-Providern oder von großen Firmen sein, die weltweit tätig sind. Auch das Internet selbst fällt in diese Klasse und bildet somit das größte WAN. Grundlegende Netzwerkdienste/-protokolle Jörg Röhrig 29 3.3 MAC-Adressen Wie am Anfang des Kapitels erläutert, verfügt jeder Host über eine IP-Adresse, anhand derer ein Rechner im Netzwerk (Internet) eindeutig identifiziert werden kann. Bei dieser Adresse handelt es sich jedoch nur um eine logische Adresse der Internet-Schicht (Internet-Layer). Die eigentliche Adres- sierung erfolgt über eine 48-Bit lange Adresse der Netzwerkkarte. Diese sogenannten MAC-Adressen (Media Access Control) sind wie die IP-Adressen eindeutig definiert. Damit dies gewährleistet ist, wird von der IEEE (Institute of Electrical and Electronic Engineers) für jede einzelne Netzwerkkarte eine einmalige MAC-Nummer vergeben. Die Umsetzung der IP-Adresse in die MAC-Adresse erfolgt in der Netzzugangsschicht (Network Access Layer) normalerweise mittels des „Ad ress Resolution Protocol“ (ARP). Jeder Host verfügt daher über eine Tabelle, die sogenannte „ARP Cache Table“, die für jede im lokalen Netzsegment enthaltene IP-Adresse die dazugehörige MAC-Adresse enthält. Da sich MAC- und IP-Adressen in ei- nem Netzwerk verändern können, z.B. durch Tausch einer Netzwerkkarte, ist die ARP-Tabelle yna- misch angelegt. Jeder Eintrag wird 20 Minuten nach dem letzten Zugriff gelöscht, so daß es bei Ver- bindungsaufnahme vorkommt, daß zur angegebenen IP-Adr sse kein Eintrag in der ARP-Liste vor- handen ist. In diesem Fall wird an alle Rechner ein Datenpaket gesandt, das die entsprechende IP- Adresse enthält. Sollte es im Netzwerk einen Host mit dieser IP-Adresse geben, so schickt dieser als Bestätigung seine MAC-Adresse. 3.4 Router Wenn nun ein Host A einem anderen Host B ein Datenpaket schicken will, gibt es zwei Fälle, die zu unterscheiden sind. Beim ersten Fall befindet sich der Zielhost B im gleichen Netzwerksegment wie der Sendehost A. Zur Übertragung des Datenpaketes genügt es also, wenn der Ho t A das Datenpaket an die MAC-Adresse des Hosts B schickt. Die Übertragung erfolgt somit analog dem TCP/IP- Schichtmodell in Abbildung 3-3. Abbildung 3-3: TCP/IP-Übertragung Beim zweiten Fall befindet sich der Zielrechner B hingegen in einem anderen logischen Netzsegment. Somit gibt es für den Host A keine Möglichkeit, diesen direkt mittels der MAC-Ad esse anzuspre- chen. Daher wird das Datenpaket an den nächsten Router weitergeleitet, der dann für den weiteren Transport des Datenpaketes an den Zielhost B verantwortlich ist. Anwendungsschicht Transportschicht Internetschicht Netzzugangsschicht Host A Anwendungsschicht Transportschicht Internetschicht Netzzugangsschicht Host B Grundlegende Netzwerkdienste/-protokolle Jörg Röhrig30 Abbildung 3-4: TCP/IP-Routing [Hart 97] Auch beim Router gibt es wiederum zwei Fälle. Im ersten Fall kennt der Router die MAC-Adresse des Zielhosts B und kann somit das Datenpaket an den Empfänger weiterleiten. Sollte dies nicht der Fall sein, wird das Datenpaket an den nächsten Router weitergeleitet, usw. Solange bis der Zielhost B er- reicht oder die Lebenszeit (TTL) des Datenpaketes abgelaufen ist. Unter dem Begriff „Routing“ versteht man also die zielgerichtete Weiterleitung eines Datenpaketes von einem Host zum anderen Host, wobei sich die Hostrechner in unterschiedlichen logischen Netz- werksegmenten befinden können. Wie sieht nun so ein Router aus? Der Hauptunterschied zwischen einem normalen Host u d ein m Router ist, daß dieser an mindestens zwei Netzwerksegmenten angeschlossen ist. Jedes dieser Netz- segmente ist dabei über eine separate Netzwerkkarte mit dem Router verbunden. Dies hat zur Folge, daß ein Router über mehrere MAC-Adressen und somit auch über mehrere IP-Adressen verfügt. Da- mit hängt die IP-Adresse des Routers davon ab, aus welchem Netz er angesprochen wird. Damit der Router seine Aufgabe der IP-W iterleitung (IP-Forwarding) erfüllen kann, verfügt dieser über sogenannte Routing-Tabellen, in denen er nachschaut, an welchen benachbarten Router bzw. Zielhost die Daten weitergeleitet werden müssen. Man unterscheidet bei der Routenberechnung zwei verschiedene Arten: · Beim statischen Routing werden alle Routen fest vorgegeben, so daß bei Veränderungen in der Netzstruktur, die Routing-Tabellen entsprechend verändert werden müssen. · Bei der zweiten Variante, dem dynamischen Routing, werden die Routing-Tabellen in gewissen Zeitabständen automatisch an Veränderungen in der Netzstruktur angepaßt. Zur Aktualisierung der Routing-Tabellen beim dynamischen Routing, werden spezielle Routing- Protokolle eingesetzt, wie z.B. das „Router Information Protocol“ (RIP). Ausführliche Informationen zum Thema Routing-Protokolle sind z.B. in [StKu 99] zu finden. 4 Multicast-Backbone (MBone) 4.1 Kommunikationsmodelle Bei der Übermittlung von Daten unterscheidet man drei verschiedene Kommunikationsmodelle. Anwendungsschicht Transportschicht Internetschicht Netzzugangsschicht Host A Internetschicht Netzzugangsschicht Router Anwendungsschicht Transportschicht Internetschicht Netzzugangsschicht Host B Grundlegende Netzwerkdienste/-protokolle Jörg Röhrig 31 1. Bei der Unicast-Übertragung besteht zwischen dem Empfänger und dem Sender eine Host-to-Host Verbindung. Diese Art der Übertragung hat z.B. bei einer Videoübertragung zur Folge, daß jedem Teilnehmer (Empfänger) ein eigener Datenstrom übermittelt werden muß. Dadurch entsteht ein großes Datenaufkommen, welches hohe Anforderungen an die Bandbreite des Netzwerkes stellt. Abbildung 4-1: Unicast-Übertragung 2. Eine weitere Möglichkeit der Datenübertragung ist das sogenannte Br adcast. Dabei werden die Daten an jeden im Netzsegment erreichbaren Host g sandt. Diese Form der Übertragung reduziert zwar den Datenstrom auf ein Minimum, jedoch werden grundsätzlich alle Hosts angesprochen, al- so auch die jenigen, die Daten nicht auswerten. Aus diesem Grunde ist die Broadcast-Üb rtragung nur in lokalen Netzsegmenten möglich. Abbildung 4-2: Broadcast-Übertragung 3. Bei der Multicast-Übertragung werden die Daten analog der Broa cast-Übertragung nur mittels eines Datenstroms übertragen. Jedoch werden nur die Hosts ang sprochen, für die die Daten auch bestimmt sind. Dadurch ist die Multicast-Übertragung nicht auf ein Netzsegment beschränkt, son- dern kann wie Unicast auch Netzwerk übergreifend verwendet werden. Abbildung 4-3: Multicast-Übertragung Grundlegende Netzwerkdienste/-protokolle Jörg Röhrig32 4.2 Die Funktionsweise der Multicast-Übertragung Wie gerade gesehen, läßt sich z.B. eine weltweite Videoübertragung nur mittels Multicast effizient durchführen. Aus diesem Grunde wird seit geraumer Zeit ein Multicast-Netz, der sogenannte Multi- cast-Backbone (MBone) aufgebaut. Obwohl die erste offizielle MBone-Übertragung bereits im Jahre 1992 stattfand, ist diese Art der Übertragung immer noch nur von einer Minderheit nutzbar. In Deutschland ist die Multicast-Übertragung hauptsächlich noch auf das Universitätsnetz beschränkt, siehe Abb. 4-4. Jedoch steigt die Anzahl der Intern t-Nutzer, die am MBone hängen, rasant an und verdoppelt sich etwa alle 8 Monate. Abbildung 4-4: MBone in Deutschland (Stand 7/1999) [Heil 99] Wie funktioniert nun also die Multicast-Übertragung? Der Versand eines Multicast-Paketes funktioniert analog der Übertragung von normalen IP-Paketen. Mit dem Unterschied, daß das Multicast-Paket von einer Gruppe von Netzwerkendpunkten empfangen wird, statt von einem inzelen Host. Wie schon in Kapitel 3.1 zu sehen war, enthält die IP- Adressklasse D mit den IP-Adressen von 224.0.0.0 bis 239.255.255.255 spezielle Multicast-Adressen. Bei der Übertragung müssen zwei Fälle unterschieden werden. Im ersten Fall befinden sich alle Emp- fänger im lokalen Netzsegment des Senders. Somit können alle Hosts, wie schon erwähnt, mittels ihrer MAC-Adresse direkt angesprochen werden. Für die Multicast-Übertragung gibt es spezielle MAC- Adressen, die im Bereich von 01-00-5E-00-00-00 bis 01-00-5E-7F-FF-FF liegen, wobei die letzten 23 Bits dieser Adressen der IP-Multicast-Adresse entsprechen. Damit die IP-Pakete das Netzwerk nicht verlassen, wird im Lebenszeit-Feld (TTL) des IP-Headers eine Null eingetragen, dadurch wird sicher- gestellt, daß die IP-Pakete bei Erreichen eines Routers vernichtet werden. Beim zweiten Fall liegt mindestens ein Empfänger der Multicast-Übertragung außerhalb des Netz- segments des Senders. Damit die Datenpakte das Netzsegment verlassen können, muß die Lebenszeit (TTL) entsprechend groß genug gewählt werden. Die Weiterleitung der Daten erfolgt dann mittels Multicast-fähigen Routern (MRouter). Dabei kann es vorkommen, daß sich zwischen zwei MRoutern ein normaler Router befindet, der von Multicast keine Ahnung hat. Dann wird das sogenannte IP- Tunneling verwendet, das es erlaubt, die existierende Internet-Struktur zu nutzen. Zu diesem Zweck Grundlegende Netzwerkdienste/-protokolle Jörg Röhrig 33 wird das Multicast-Paket mit einem weiteren IP-Header versehen, der als Zieladresse den nächsten MRouter enthält. Bei diesem angekommen, wird der IP-Header wieder entfernt und die weitere Über- tragung erfolgt dann wiederum über MRouter. Eine weitere Besonderheit bildet die Live-Übertragung via Multicast, da die Empfänger die, zu einer Gruppe gehören, variieren können. Wenn sich ein Host zu einer Live-Übertragung anmeldet und somit einer bestimmten Multicast-Gruppe beitritt, dann versendet der MRouter des lokalen Netzsegmentes mittels des „Internet Group Management Protocol“ (IGMP) einen „Host Membership Report“, falls nicht bereits ein anderer Host im gleichen Netzsegment die Multicast-Übertragung empfängt. Es ent- steht ein sogenannter „Spanning-Tree“, wie in Abb. 4-5 zu sehen ist, der nur die Netzsegmente mit dem Muticast-Stream versorgt, in dem sich mindestens ein angemeldeter Host b findet. Um den Auf- bau des Spanning-Tree zu ermöglichen kommen spezielle Routing-Protokolle zum Einsatz, wie das „ Distance Vector Multicast Routing Protocol“ (DVMRP), welches mit dem „Router Information Pro- tocol“ (RIP) verwandt ist. Nähere Informationen zu diesem Thema stehen in [AnSc 98]. Abbildung 4-5: Spanning-Tree [AnSc 98] 4.3 Quality of Service (QoS) Unter dem Begriff „Quality of Service“ werden die Übertragungsqualitäten einer Verbindung zusam- mengefaßt: · Datendurchsatz (Bandbreite) · Fehlerfreie Übertragung · Geschwindigkeit (zeitlich) · Ausfallsicherheit Wenn man die Übertragung in TCP/IP-Netzwerken unter dem Aspekt „Quality of Service“ (QoS) be- trachtet, stellt man fest, daß mit dem heute verwendeten Internet-Protokoll Version 4 (IPv4) keinerlei Verbindlichkeiten garantiert werden. Wie gesehen ist die Multicast-Übertragung schon ein Schritt in die richtige Richtung, jedoch wird auch hierbei nur die vorhandene Infrastruktur besser genutzt, was die Wahrscheinlichkeit einer guten Übertragung erhöht. Ein weitere Verbesserung wird das in der Entwicklung befindliche Internet-Protokoll Version 6 (IPv6) bringen, welches von sich aus bereits in der Lage ist, Multicast zu übertragen. Außerdem stellt es eine Möglichkeit bereit, IP-Dat npak te mit einer Priorität zu versehen, wodurch z.B. die Übertragung von Realtime-Anwendungen im Vergleich zur normalen Übertragung beschleunigt werden kann. Grundlegende Netzwerkdienste/-protokolle Jörg Röhrig34 5 Literaturverzeichnis [AnSc 98] Frank-Uwe Andersen, Jürgen Schmidt: Weltweit Video – MBone: Multimedia im Internet c´t – Magazin für Computertechnik, Ausgabe 21/98, S. 262ff [Bogn 99] Istvan Bognar: Das MultiMedia Seminar Sommersemester 1998 - Routing im Internet (Einführung) http://www.informatik.uni-tuebingen.de/~bognar/MMseminar/struktur.html [BrHo 95] Kai Brauer, Friedhelm Hosenfeld: Kommunikation ohne Grenzen, TCP/IP: Informationsübermittlung im Internet c´t – Magazin für Computertechnik, Ausgabe 12/95, S.330ff [Dodg 99] Martin Dodge: An Atlas of Cyberspaces - Historical Maps of ARPANET and the Internet http://www.cybergeography.org/atlas/historical.html [From 98] M.Fromme: Internet-Protokoll: Multicast, QoS IPv6 [Gade 95] Frank Gadegast: Diplomarbeit: TCP/IP-basierte Dienste zur Speicherung von Multimedia-Daten http://www.powerweb.de/phade/diplom/ [Gill 97] Andreas Gillhuber: Kurze Wege durchs Netz, Schichtenweise – das OSI-Modell c´t - Magazin für Computertecknik, Ausgabe 11/97, S.334ff [Grom 99] Gregory R. Gromov: The Roads and Crossroads of Internet His ory http://www.netvalley.com/netvalley/intval1.html [Hart 97] Mike Hartmann: Institut für Informatik und Gesellschaft – Telematik Die TCP/IP Protokoll Suite http://www.iig.uni-freiburg.de/~mhartman/tcpip/index.html [Heil 99] Peter Heiligers: MBone-DE Adressbereich : B-WIN Regionen Map November 1997 http://www.mbone.de/maps/mbone-de-07-99.jpg [Holt 97] Heiko Holtkamp: Einführung in TCP/IP http://www.rvs.uni-bielefeld.de/~heiko/tcpip/ [Kuri 96] Jürgen Kuri: Wenn der Postmann zweimal klingelt-Namen und Adressen im TCP/IP-Netzwerk und im Inter et c´t - Magazin für Computertecknik, Ausgabe 12/1996, S.334ff [Kuri 97] Jürgen Kuri: Da geht´s lang! – Routing, oder: wie die Daten im Internet ihren Weg finden c´t - Magazin für Computertecknik, Ausgabe 6/1997, S.380ff [KuRe 98] Jürgen Kuri, Jörg Rech: Das Netz aufs Bit geschaut – Protokollanalyse (nicht nur) im Windows-Netzwerk c´t - Magazin für Computertecknik, Ausgabe 20/1998, S.222 Grundlegende Netzwerkdienste/-protokolle Jörg Röhrig 35 [Mock 96] Andreas Mock: Diplomarbeit: Recherchen im Internet http://www.wiso.uni-augsburg.de/edvbeauf/studinfo/mock/public_html/diplom/inhalt.html [Müll 99] Stefan Müller: Klausurersatzleistung: Thema "Klassifizierung von Netzwerken" http://www.gs-lehnin.pm.bb.schule.de/projekt/klassi1.html [Nico 96] Michael Nicolai: TCP/IP-Grundlagen http://www.ruhr-uni-bochum.de/~rothamcw/Lokale.Netze/tcpip.html [Post 81] J. Postel: Network Working Group – Request for Comments: 795 http://andrew2.andrew.cmu.edu/rfc/rfc795.html [StKu 99] Benjamin Stein, Jürgen Kuri: Reisebüro - Routing und Internet-Zugang fürs LAN mit Windows c´t - Magazin für Computertecknik, Ausgabe 8/1999, S.214ff [Ullr 97] Mike Ullrich: Teleseminar – Thema 1: Einführung in das Internet http://www.stud.uni-karlsruhe.de/~uo01/d/teleseminar/index.html [Zako 99] Robert H. Zakon: Hobbes' Internet Timeline v4.2 http://www.isoc.org/zakon/Internet/History/HIT.html Grundlegende Netzwerkdienste/-protokolle Jörg Röhrig36 Konstantin Steuer 37 Real Time Streaming Protocol Konstantin Steuer FB Informatik, Uni Dortmund Konstantin.J.Steuer@ruhr-uni-bochum.de Zusammenfassung Zur Zeit gewinnen kontinuierliche Medien wie Video und Audio aber auch Live - Konferenzen immer mehr an Bedeutung. Das hat zu Folge, daß diese Medien auch übers Internet angeboten werden. Bis vor kurzem gab es nur die Möglichkeit, sol- che Dateien einfach im Ganzen zu Übertragen um sie anschließend abzuspielen. Um das zu ändern, entwickelte man Protokolle die es erlauben diese Quellen live zu nutzen. Dabei müssen zeitkritische Vorgänge verwaltet werden, denn eine Ver- zögerung bei der Übertragung oder der Verlust einiger Pakete zur erheblichen Störungen führen können. Real Time Streaming Protokoll trägt nicht selber die benötigten Daten, sondern stellt einen Steuerungsmechanismus zur Verfügung, das von Multimediaprogrammen benutzt wird um den Datenfluß zu kontrollieren. Damit sind Funktionen wie Play, Stop, Forward, die für diese Medien üblich sind, realisierbar. In diesem Dokument wird die Funktionsweise und der Einsatz von RTSP in der Übertragung von kontinuierlichen Medien vorgestellt. Dabei wird auf wesentliche Mechanismen und Prinzipien dieses Protokolls eingegangen. 1 Einleitung Der Trend zur multimedialen Information gewinnt ständig an Bedeutung. Printmedien bzw. Texte werden durch Video und Audio ergänzt oder sogar verdrängt. Natürlich ist diese Entwicklung am In- ternet oder allgemein an den Datennetzen nicht spurlos vorbeigegangen. Man findet daher immer mehr dieser Medien, die in den Netzen angeboten werden, sei es Schulungsmaterialien in internen Firmennetzen oder Radio- oder Fernsehsendungen im Internet. Welche Anwendungen auch immer dabei benutzt werden, sie haben ein gemeinsames Problem. Die Daten müssen kontinuierlich übertragen werden. Das ist nur durch die Kombination verschiedener Protokolle möglich. Die Streaming-Technologie setzt dabei auf vier zentrale Protokolle: Resource Re- servation Protocol (RSVP), das Netzwerkressourcen für den Datenstrom reserviert, Realtime Trans- port Protocol (RTP), das für den Transport der Daten sorgt, Synchronized Multimedia Integration Language (SMIL) für die Streambeschreibung und Formatierung und schließlich Realtime Streaming Protocol (RTSP), das unter der Federführung von Realnetworks und Netscape entstanden ist. Real Time Streaming Protocol ist ein Protokoll der Anwendungsschicht. Seine Aufgabe besteht darin die Übertragung kontinuierlicher Medien wie Audio- oder Videodateien zu steuern. Damit ist nicht die Steuerung der eigentlichen Datenübertragung wie z.B. erneute Anforderung eines Datenpakets bei Verlust gemeint, obwohl dies im Notfall auch von RTSP übernommen werden kann. Viel mehr fun- giert RTSP, als eine Art Fernsteuerung für Multimediaserver [ScRL 98a]. Dabei ermöglicht dieses Real Time Streaming Protocol Konstantin Steuer38 Protokoll Funktionen wie Play, Forward oder Stop zu realisieren, die Anwendungen eine direkte Kon- trolle über die Medien auf den Servern geben. In den folgenden Kapiteln werde ich grundlegende Eigenschaften, Prinzipien und Mechanismen, die sich hinter RTSP verstecken, vorstellen. 2 Eigenschaften In der Literatur werden viele Eigenschaften und Merkmale dieses Protokolls erwähnt wie z.B. in [ScRL 98a]. Ich möchte jedoch auf wenige wichtige eingehen, die RTSP am besten charakterisieren. • Protokollunabhängigkeit Wie schon oben angesprochen gehört RTSP der Anwendungsschicht an. Diese Schicht bittet eine sehr abstrakte Sicht auf die zu manipulierenden Daten. Um das zu gewährleisten, muß sich RTSP niederer Protokolle bedienen, die die eigentliche Arbeit leisten. RTSP ist in dieser Hinsicht sehr flexibel. Es stützt sich nicht auf bestimmte Protokolle. So können die Daten z.B. mit Hilfe von un- zuverlässigen Übertragungsprotokollen wie UDP sowie durch extra für Real Time - Medien ent- worfene Protokolle wie RTP übermittelt werden. • Erweiterbarkeit RTSP verfügt über eine große Anzahl an Parameter und unterstützenden Methoden. Nichtsdesto- trotz steht es dem Benutzer frei, neue zu definieren. Damit ist RTSP innerhalb einer Version aus- baufähig und erlaubt es schneller auf neue Entwicklungen zu reagieren. Um jedoch Konflikte zu vermeiden, die daraus resultieren, daß die Partner einige Parameter oder Funktionen nicht unter- stützen, verfügt RTSP über einen Kontrollmechanismus. Damit können nicht implementierte Me- thoden bzw. Parameter von Server oder Client verworfen werden, so daß die Kommunikation ge- gebenenfalls auf gemeinsamer Basis stattfinden kann. Wie solche Definitionen im einzelnen aus- sehen, wird in [ScRL 98a] beschrieben. • Interaktion zwischen Client und Server Die bisherigen Protokolle unterstützen eine einseitige Kommunikation. Der Client fordert vom Server Daten an. Daraufhin werden diese ausgeliefert und der Server wartet auf weitere Instruk- tionen. RTSP dagegen, propagiert eine beidseitige Kommunikationsmöglichkeit. Somit kann auch der Server Anfragen an den Client senden. Dieses erlaubt dem Server beispielsweise die vom Cli- ent unterstützten Methoden zu erfahren oder während der Übertragungszeit die Auslieferungs- adressen zu ändern. Die zweite Option ermöglicht eine Streuung der Daten über mehrere Server, worauf ich noch später eingehen werde. • Bandbreitenunabhängigkeit Kontinuierliche Medien tragen große Datenmengen. Aufgrund dessen, können sie nicht im Gan- zen übertragen werden, da damit die Fehleranfälligkeit steigt. In diesem Fall behelft man sich des Streaming – Prinzips [Reib 99, Down 99]. Dabei werden die Dateien in kleine Pakete aufgespalten, die auch bei niedrigen Bandbreiten zu- verlässig übertragen werden können. Diese Daten werden wie andere Dateien auf einem Server abgelegt oder aber von einem Media Server verteilt. Sind dann auf Empfängerseite genügend Pa- kete eingetroffen, kann z.B. der Player mit dem Abspielen beginnen. Auf seiten des Anwenders passiert vereinfacht folgendes: Der Player spielt das erste Paket ab, dekomprimiert das zweite Pa- ket, während im Hintergrund ein drittes Paket eintrifft. Eine Mindestanforderung an die Bandbreite bleibt aber bestehen. D.h. auch bei der Anwendung dieses Prinzips, kann die Bandbreite nicht ins Bodenlose fallen. Ansonsten kann es passieren, daß Real Time Streaming Protocol Konstantin Steuer 39 die ohnehin kleinen Pakete so langsam übertragen werden, daß deren Wiedergabe völlig inakzep- table Ergebnisse liefert. • Multiserverfähigkeit Schon vorhergehend habe ich angedeutet, daß die Informationen nicht unbedingt auf einem Server abgelegt werden müssen. So können verschiedene Dateien aber auch deren Bruchstücke über meh- rere Server verteilt werden. Dabei merkt der Anwender nichts vor all dem. RTSP ermöglicht es nämlich die Daten zur Laufzeit von anderen Orten zu ordern oder verschiedene Quellen zu syn- chronisieren. So können z.B. zu einer bestimmten Videoquelle gleichzeitig verschiedene Audio- quellen angeboten werden um so die Informationen in verschiedenen Sprachen zu Verfügung zu stellen. • Aggregationskontrolle Eine Multimediapräsentation kann mehrere Quellen enthalten, die gleichzeitig oder zeitversetzt wiedergegeben werden. Eine Möglichkeit diese Präsentation abzuspielen, ist es jede einzelne Da- tei anzusprechen und zu steuern. Dies ist jedoch mit großen Aufwand verbunden. RTSP bietet hierzu eine Lösung, die Aggregationskontrolle. Alle wichtigen Informationen, meist die zeitliche Anordnung der Quellen, werden in den sogenannten Containerfiles gespeichert. Der Client braucht anschließend nur die Kontrolle diese Files zu übernehmen und spart sich dadurch die se- parate Steuerung der einzelnen Medien. Damit vereinfacht RTSP das Handling von zusammenge- setzten Präsentationen, steigert die Effizienz und verringert den Nachrichtenfluß. • Endkopplung von Client und Server RTSP erlaubt es den Kommunikationspartnern innerhalb einer Sitzung unabhängig voneinander zu agieren. Damit ist es nicht mehr nötig jeden Schritt des Partners zu verfolgen und eine Rück- meldung abzuwarten. Um das zu ermöglichen, bedienen sich Client und Server einer Zustandsma- schine. So kennen die Kommunizierenden den aktuellen Arbeitszustand des anderen. Diesen Me- chanismus beschreibe ich genauer im Kapitel 6. 3 Modi RTSP unterstützt nicht nur das Abspielen oder Aufnehmen von einzelnen Medien, sondern auch Prä- sentationen und Livesendungen. Die letzteren machen nur Sinn, wenn auch mehrere Benutzer sie gleichzeitig verfolgen können. Demnach kann RTSP nicht nur für Unicast- sonder auch für Multicast- sitzungen benutzt werden. 3.1 Unicast Dies ist der einfachster und meist benutzter Modus. Ein Anwender möchte nur für sich eine aufge- zeichnete Präsentationen, Audiodatei etc. wiedergeben oder sein Material auf einem Server aufneh- men. Hier bestimmt der Benutzer die jeweiligen Zieladressen an denen nur er der Empfänger oder Sender (für Aufnahme) ist. Diese Zieladressen sind nicht multicastfähig und können von anderen An- wendern bzgl. des gleichen Mediums nicht benutzt werden. Auch die Steuerung ist nur diesen einen Partner erlaubt. Real Time Streaming Protocol Konstantin Steuer40 3.2 Multicast Multicast eignet sich für Livesendungen z.B. für Radio oder TV aber auch für Live-Präsentationen die Multimediaquellen enthalten. Je nach Charakter der Sitzung werden zwei Multicastmodi unterstützt: • serverseitig Diese Art ist ausschließlich für Liveübertragung vom Interesse. Der Mediaserver bestimmt eine geeignete Multicastadresse und sendet an sie die Daten. Jeder Client der dazu stoßen will, erhält diese Adresse vom Server und übernimmt die Daten von dort. Der Benutzer hat dabei eine passive Rolle, denn er erhält nur die Informationen, die zur Laufzeit gesendet werden. Die Möglichkeit vorhergehende Ereignisse zu betrachten ist hier nicht gegeben. • clientseitig Bei einer Livekonferenz wird oft auf schon vorhandene bzw. vorbereitete Dateien zurückgegrif- fen. Es soll jedoch vermieden werden, daß alle an der Konferenz beteiligten Partner, die neuen In- formationen wieder von einer anderen Multicastadresse beziehen. Es kann nämlich passieren, das nicht alle der Beteiligten an diese Daten gleichzeitig zugreifen und somit einige von ihnen ausge- schlossen werden. Dieses Problem löst man indem der Konferenzführer, der auch ein Client ist, dem Server die schon bestehende Multicastadresse vorgibt. Dadurch wird erreicht, daß alle die neuen Informationen an der „alten“ Adresse empfangenden können. 4 RTSP-Nachricht Während einer Sitzung werden zwischen den Server und Client Nachrichten ausgetauscht. Diese Nachrichten dienen dazu, die gewünschten Aktionen mitzuteilen, die von dem Partner auszuführenden sind. Auch Statusmeldungen z.B. des Servers, werden über RTSP-Nachrichten getragen. Wie eine Sit- zung aufgebaut ist, werde ich im nachfolgendem Kapitel erläutern. 4.1 Format RTSP basiert auf einem Textformat, der ISO 10646 Zeichen nutzt. D.h. nichts anderes, als daß die Zeichen 8-Bit kodiert sind. Zeilenumbrüche werden mit CRLF eingeleitet. CR oder LF können aber vom Empfänger auch einzeln als Zeilenumbruch interpretiert werden. Eine RTSP-Nachricht endet mit einer leeren Zeile. Die Tatsache, daß dieser Protokoll texbasierend ist, bringt einige Vorteile mit sich: • Übertragung Alle niederen Protokolle, die 8-Bit persistent sind, können RTSP-Nachrichten tragen. • Parsen Standart MIME- oder HTTP-Parser können eingesetzt werden. • Handling Optionale Parameter können einfach hinzugefügt werden. • Nachrichtenerstellung Skriptsprachen wie z.B. Tcl oder Perl können RTSP-Nachrichten erzeugen. Real Time Streaming Protocol Konstantin Steuer 41 4.2 Aufbau Abbildung 4-1: Aufbau einer RTSP-Nachricht Jede RTSP-Nachricht wird nach dem in der Abbildung 4-1 angegebenen Schema aufgebaut. So enthält sie eine Status- bzw. Requestline und einen Header-Bereich. Diese zwei Bestandteile sind essentiell und kommen in jeder RTSP-Nachricht vor. Der Body-Bereich, hier auch separat dargestellt, ist optio- nal und muß extra im Haeder-Bereich definiert werden. Als Besonderheit, muß der Body-Bereich von der eigentlichen RTSP-Nachricht mit einer leeren Zeile getrennt werden. • Status-, Requestline Diese Zeile enthält je nach Nachrichtentyp, siehe Unterkapitel 4.3, Methoden bzw. Statusmeldun- gen, die eine Aktion beschreiben oder deren Ausführung mit einem Status quittieren. • Header-Bereich In diesem Bereich werden Parameter aufgeführt, die z.B. bei der Ausführung der Methoden zu- sätzlich beachtet werden müssen. Einzelne Parameter werden jeweils in einer Zeile untergebracht, was eine Trennung einzelner Parameter mit sich bringt. • Body-Bereich Enthält, sobald er im Haeder-Bereich definiert wird, protokollfremde Informationen. Es kann sich hierbei um Nachrichten anderer Protokolle aber auch um eigentliche Daten ( z.B. Bruchstücke ei- ner Audiodatei ) handeln. Die Verarbeitung der Daten hängt natürlich von der client- bzw. server- seitigen Unterstützung des Dateityps ab. 4.3 Typen In RTSP werden zwei Hauptnachrichtentypen unterschieden, nämlich Request- und Responsenach- richt. Der dritte hier aufgeführte Typ ist nicht selbständig und bezieht sich auf Nachrichten, die einen Body einschließen. 4.3.1 Request Abbildung 4-2: Aufbau einer Requestline Eine Request-Nachricht dient dazu eine Sitzung zu initialisieren oder dem Partner mitzuteilen, welche Aktionen er anstoßen, ausführen soll. Sie besteht hauptsächlich aus eine Requestline und dem Header- Bereich. Requestline wird in drei Teile gegliedert, die mit einem Leerzeichen voneinander getrennt werden, siehe Abbildung 4-2. Der erste Teil enthält eine Methode, siehe Unterkapitel 4.4, die sich auf die an- gegebene Quelle bezieht. Die Quellenangaben werden ihrerseits nur in der absoluten URL-Notation akzeptiert (z.B. rtsp://audio.com/twister/audio.en). Zusammenfassende Angaben, die Status-, Requestline Header-Bereich Body-Bereich Methode Quelle RTSP-Version Real Time Streaming Protocol Konstantin Steuer42 *-Zeichen enthalten (z.B. rtsp://audio.com/twister/*) werden verworfen. Zusätzlich zu diesen Informationen kommt die Mitteilung der RTSP-Version, nach der diese Nachricht erstellt wur- de. Damit soll erreicht werden, daß die Bedeutungen der Methoden bzw. Parameter auch richtig inter- pretiert werden. Es kann nämlich passieren, daß in einer neueren Version dieses Protokolls einige Pa- rameter, die Ausführung der Aktion, anders beeinflussen. Der Header-Bereich beherbergt Paremeter, die für Requests sinnvoll sind, siehe [ScRL 98a]. Damit kann auch gegebenenfalls ein Body definiert werden. Auf die Einzelheiten des Bodys werde ich später eingehen. 4.3.2 Response Abbildung 4-3: Aufbau einer Statusline Response-Nachrichten melden den aktuellen Status der Aktion, die nach dem Erhalt eines Requests ausgeführt wurde. Sie liefern auch die benötigten Informationen, die mit Hilfe von Parameter ausge- drückt werden oder im Body eingeschlossen sind. Anders wie bei Requests, sieht die Statusline aus, siehe Abbildung 4-3. Als erstes wird die RTSP- Version angegeben, anschließen folgen der Status und die Statusbeschreibung. Der Status ist mit einer dreistelligen Zahl kodiert. Die dazugehörige Beschreibung ist eher für den Benutzer gedacht, daher enthält sie den Status im Klartext. Für die Anwendung ist jedoch die kodierte Version wichtig. Die Statuskodierung ist in fünf Klassen eingeteilt. Jeder Klasse ist eine Zahl zugeordnet, die in der er- sten Ziffer des Kodes enthalten ist. Die zwei verbliebenen Zahlen spezifizieren den Status genauer. Der Empfänger muß eigentlich nur die Statusmeldung klassifizieren können, um sich nach Ihr zu richten. Die Klasseneinteilung sieht wie folgt aus: • 1xx Hat einen informativen Charakter. Damit wird mitgeteilt, daß z.B. eine Aktion zur Zeit noch aus- geführt wird. Der Empfänger weiß dann, daß sein Request angekommen und verarbeitet wird, die Ausführung aber noch länger dauern kann. • 2xx Kodes dieser Klasse, melden eine erfolgreiche Ausführung der geforderten Aktion. • 3xx Weitere Requests sind nötig um die Aktion erfolgreich abzuschließen. Ist z.B. die Datei verscho- ben worden, so muß eine erneute Anfrage, diesmal aber mit richtigen Adresse, gesendet werden. • 4xx Fehler ist clientseitig aufgetreten. • 5xx Fehler ist serverseitig aufgetreten. Header- und Body-Bereich können ebenfalls, wie bei Responses, Informationen tragen. Welche das im einzelnen sind, ist im [ScRL 98a] nachzulesen. 4.3.3 Entity Wie schon vorhergehend erwähnt, ist dieser Typ keine selbständige Nachrichtenart. Vielmehr handelt es sich hier um die separate Spezifikation des Body- und des Header-Bereiches als Einheit. Die Aufgabe des Bodys beschränkt sich auf den Transport fremder Informationen bzw. Daten. So können Video bzw. Audiodateien, aber auch Nachrichten anderer Protokolle, transportiert werden. RTSP-Version Status Statusbeschreibung Real Time Streaming Protocol Konstantin Steuer 43 Diese Eigenschaft ist hilfreich, falls sich der Anwender hinter einer Firewall befindet, die z.B. UDP- Transport nicht erlaubt. Ist jedoch nicht die effizienteste Lösung, da die Daten in ISO 10646 Zeichen hin und zurück umgewandelt werden müssen. Damit jedoch der Empfänger überhaupt weiß, daß nach der leeren Zeile, die eine RTSP-Nachricht standardmäßig abschließt, weitere Daten folgen, gibt es natürlich spezielle Header-Felder. Genaue Be- schreibung findet man im [ScRL 98a]. Es sei aber gesagt, daß man mit Hilfe dieser Felder die Länge der angehängten Daten, ihre Kodierungsart und den Datentyp beschreiben kann. 4.4 Methoden Methoden sind ausschließlich ein Bestandteil von RTSP-Requests. Außer OPTIONS, beziehen sich alle Methoden auf, die in der Request-Line angegebene Quelle. Sie beschreiben Aktionen, die der Partner auszuführen hat (z.B. sende Daten), dienen der Initialisierung des Transfers oder leiten den Abbruch der Verbindung bzgl. der entsprechenden Datei ein. Einige Methoden können außerdem eine Zustandsänderung initiieren. Auf die Funktionsweise des Zustandsmechanismus gehe ich erst im Ka- pitel 6 ein. Anzumerken ist, daß nicht alle hier vorgestellten Methoden implementiert werden müssen. Sobald je- doch eine nicht unterstützte Methode im Request auftaucht, wird sie ignoriert und mit einen Errorcode in der dazugehörigen Antwort quittiert. Daraufhin kann der Empfänger der Antwort, sobald nicht an- ders möglich, die Sitzung beenden oder eine alternative Vorgehensweise wählen. ANNOUNCE, SETUP, PLAY, RECORD und TEARDOWN gehören zu den Funktionen, die in einer minimalen Im- plementierung des Servers und des Clients, zwingend vorgeschrieben sind. 4.4.1 OPTIONS Das mögliche Verhalten des Kommunikationspartners hängt also auch von den unterstützten Metho- den ab. Da laut der Konvention nicht alle realisiert werden müssen, ist es sinnvoll einen Überblick über die zu haben, die implementiert wurden. OPTIONS ermöglicht es, eine entsprechende Liste anzu- fordern. Client und auch Server sind berechtigt diese Methode in den Requests zu nutzen. Als Besonderheit dieser Methode ist die Tatsache, daß sie als einzige, keinen Bezug zur einer Datei hat. Deshalb kann die Quellenangabe aus einem einzigen Zeichen und zwar dem Asterisk „*“ beste- hen. (OPTIONS * RTSP/1.0) ist ein Beispiel für die entsprechende Requestline. 4.4.2 DESCRIBE Jede RTSP-Sitzung wird nach einer Präsentationsbeschreibung aufgebaut, siehe Kapitel 5.1. Über die DESCRIBE-Methode kann diese Beschreibung angefordert werden. Anhand eines optionalen Para- meters „Accept“, kann der Sender, ihm bekannte Beschreibungsarten, an dem Empfänger weiterleiten. Dieser hat sich nun daran zu halten, denn ansonsten kann die Information nicht richtig interpretiert werden. Ist „Accept“ nicht in der Anfrage enthalten steht dem Partner frei, die entsprechende Art zu wählen. Verständlicherweise wird diese Methode nur von Client angewandt. 4.4.3 ANNOUNCE ANNOUNCE-Anfragen können vom Server und Client gleichermaßen verschickt werden, haben da- bei aber verschiedene Bedeutungen. Versendet der Client eine Anfrage mit ANNOUNCE-Methode, will er dem Server Einzelheiten über die von Ihm angestrebte Sitzung oder das Objekt, das in der Requestline angegeben, mitteilen. Diese Situation kann vorkommen, falls in einer laufenden Multicast-Präsentation, der steuernde Client eine neue Multimediaquelle wiedergeben will anstatt der alten. Dabei soll der Präsentationsserver darauf reagieren und diese übertragen, wobei die vorherige Datei verworfen wird. Real Time Streaming Protocol Konstantin Steuer44 Wird diese Nachricht vom Server verschickt, so aktualisiert er damit die Sitzungsbeschreibung bzw. Präsentationsbeschreibung zur Laufzeit. Wie der Client darauf reagiert hängt von der aktuellen Situa- tion ab. Ändern sich dabei beispielsweise Auslieferungsadressen, die der Client nicht erreicht, kann er die Sitzung abbrechen. 4.4.4 SETUP SETUP spezifiziert die Transporteinzelheiten, die bzgl. der Quelle bei der Übertragung gelten sollen. Diese Methode wird ausschließlich vom Client verwendet. Antwortet der Server mit einem Error, so kann der Client die Sitzung abbrechen lassen oder er sucht nach Alternativen und teilt sie gegebenen- falls mit einer weiteren SETUP-Nachricht dem Server mit. Damit kann eine Verhandlung geführt werden bzgl. der Transporteinstellungen. SETUP kann auch zur Laufzeit der Wiedergabe oder der Aufnahme versendet werden. Dies dient dann, zur laufenden Änderung von früheren Transportpara- meter. 4.4.5 PLAY PLAY startet die Übertragung der Daten, entsprechend der mit SETUP vereinbarten Einstellungen. Solange jedoch der Client keine positive Bestätigung seiner SETUP-Nachrichten erhält, darf er kein PLAY senden. Im allgemeinen bewirkt ein PLAY-Request, daß die Quelle in voller Länge übertragen wird. Die Wie- dergabe kann natürlich jeder Zeit unterbrochen werden, was auch die Übertragung stoppt. Enthält ein PLAY-Request den Bereichsparameter „Range“, liefert der Server die Daten entsprechend diesen Be- reichsangaben. Beispielsweise bewirkt die folgende Angabe (Range: smpte=0:10:00- 0:15:00), daß die Quelle nur von der 10-ten Minute bis zu der 15-ten übertragen wird. Erwähnenswert ist auch, daß mehrere PLAY-Request bzgl. einer Quelle hintereinander gesendet wer- den dürfen. Der Server führt eine PLAY-Queue, wo alle eingegangenen PLAY-Anforderungen ge- speichert werden. Ist eine Anforderung abgearbeitet, so wird die Ausführung der nächsten angestoßen. Bei Livesendungen, können verständlicherweise keine Bereichsangaben gemacht werden, da in die- sem Fall ein freies Navigieren nicht möglich ist. PLAY wird solange ausgeführt bis die Quelle ganz übertragen wurde, ein PAUSE-Request ankommt, oder die PLAY-Queue leer ist. Dies setzt natürlich voraus, daß die Sitzung nicht zwischendurch abge- brochen wurde. 4.4.6 RECORD RECORD verhält sich ähnlich wie die PLAY-Methode. So können Bereiche festgelegt werden, in de- nen die Aufnahme stattfindet soll. Läuft eine Sitzung bereits, nimmt der Server die Daten unverzüg- lich auf, ansonsten wartet er die in SETUP angegebenen Aufnahmepunkte ab. Der Ort der Speiche- rung wird vom Client bestimmt, kann aber vom Server verändert werden. Anschließend muß jedoch der Client über den neuen Ort in Kenntnis gesetzt werden. Im Gegensatz zu PLAY-Methode ist hier keine RECORD-Queue vorgesehen. Daher werden aufein- anderfolgende RECORD-Requests ignoriert. 4.4.7 PAUSE PAUSE veranlaßt den Server die Medienübertragung zu unterbrechen. Die Ressourcen werden aber nicht gleich freigegeben, so daß nach einer gewissen Zeit die Wiedergabe oder Aufnahme erneut ge- startet werden, ohne daß eine Initialisierung der Quelle mit SETUP nötig wäre. Zusätzlich annulliert PAUSE alle in der PLAY-Queue eingetragenen Anfragen. Real Time Streaming Protocol Konstantin Steuer 45 Der Bereichsparameter „Range“ erlaubt es den Zeitpunkt der Pause exakt festzulegen. Damit kann die PAUSE-Methode schon vor der eigentlichen Unterbrechung gesendet werden und wird trotzdem vom Server akzeptiert und zu richtigen Zeit ausgeführt. Liegt dieser Punkt außerhalb der Spiellänge wird ein Servererror gemeldet und wird kein „Range“ angegeben, unterbricht der Server die Übertragung auf der Stelle. Hat der Server doch noch Daten geschickt, die nach dem Pausenzeitpunkt angeordnet sind, muß der Client selber diese ausfiltern um sie nicht mehr wiederzugeben. 4.4.8 TEARDOWN Mit Hilfe dieser Methode werden alle Aktivitäten beendet, die sich auf die angegebene Quelle bezie- hen. D.h. keine nachfolgenden Anfragen wie PLAY, RECORD werden bearbeitet. Nur die erneute In- itialisierung z.B. über SETUP ermöglicht wieder den Zugriff. Wird ein Containerfile in der Requestli- ne angegeben, beendet der Server alle laufenden Vorgänge, die er für die enthaltenen Dateien gestartet hat. 4.4.9 GET_PARAMETER GET_PARAMETER erlaubt es den Sender die Werte der aufgeführten Parameter anzufordern, deren Anzahl unbegrenzt ist. Sowohl der Server wie auch der Client dürfen diese Methode nutzen. Die ge- wünschten Parameter werden im Body der Nachricht angegeben. Der Empfänger bringt in seiner Antwort die Parameter mit ihrem Werten ebenfalls im Body unter. 4.4.10 SET_PARAMETER Wie auch GET_PARAMETER, können beide Partner diese Methode in ihren Requests versenden. Sie bewirkt, daß der Empfänger diesen Parameterwert in dem weiteren Verlauf der Sitzung berücksichtigt, sobald er von ihm unterstützt wird. Anders sieht es mit der Anzahl der Parameter aus. Hier darf je- weils nur ein Parameter mit dem angegebenen Wert versendet werden. Dies gibt dem Empfänger die Möglichkeit den Parameter oder seinen Wert in einer Antwort abzulehnen. Wichtig ist, daß die Trans- portparameter nicht über SET_PARAMETER gesetzt werden dürfen und nur der SETUP-Methode vorbehalten sind. 4.4.11 REDIRECT Diese ist die einzige der Methoden, die ausschließlich vom Server geschickt wird. Damit kann er dem Client mitteilen, daß weitere Informationen von andere Stelle bezogen werden sollen, z.B. von ande- ren Server. Kann oder will der Client diese Informationen beziehen, so muß er die bestehende Verbin- dung trennen und eine neue mit dem angegebenen Partner initiieren. Zusätzlich hat der Server die Möglichkeit mit Hilfe des optionalen Parameters „Range“ den Zeitpunkt zu nennen, ab wann diese Umleitung in der noch bestehenden Sitzung gilt. 4.5 Parameter Schon einige male habe ich in dem vorhergehenden Kapitel, Parameter im Bezug auf Methoden er- wähnt. Ihre primäre Aufgabe ist es, die Angeben in der Request bzw. Statusline zu ergänzen. Mit die- sen zusätzlichen Informationen präzisieren sie das Verhalten des Empfängers. Dieser Mechanismus stützt sich auf die Werte, die Parameter annehmen können. Solche Werte können in verschiedenen Formaten auftreten. So z.B. enthält der „Session“-Parameter einen ganzzahligen Wert der Sitzung-ID, der „Transport“-Parameter dagegen beschreibt seinen Wert mit Hilfe von Zeichenketten und Zahlen- werten. Als ein gutes Beispiel dafür, daß benutzte Parameter das Verhalten des Empfängers ändern können, dient der „Range“-Parameter, siehe Kapitel 4.4.5. Ein PLAY-Request ohne diesen Parameter Real Time Streaming Protocol Konstantin Steuer46 und seinen Wert initiiert die Übertragung der Quelle in voller Länge. Gibt man jedoch den gewünsch- ten Bereich an, so wird nur der verlangte Ausschnitt gesendet. Parameter selber werden im Header-Bereich untergebracht. Dort werden sie mit Zeilenumbruch von- einander getrennt. Es gibt jedoch Parameter, die mehrere Informationen tragen können. Dann nämlich, wird jeder einzelne von ihnen mit (;)-Zeichen getrennt. Auch Body-Bereich kann Parameter enthalten, siehe Kapitel 4.4.8 und 4.4.9. Es gibt eine große Anzahl an Parametern, die noch ständig erweitert werden können. Da diese Erwei- terung innerhalb einer RTSP-Version erlaubt sind bzw. nicht alle Parameter zwingend unterstützt wer- den müssen, können auch sie von Empfänger verworfen werden. Nichts desto trotz möchte ich die Be- deutung einiger wichtiger Parameter erläutern, die in fast jeder Nachricht enthalten sind. • Cseq Ist ein Sequenzparameter und muß in jeder Nachricht enthalten sein. Er gibt die Sequenznummer der Nachricht an, anhand welcher ihre Reihenfolge kontrolliert wird. So werden Nachrichten mit höheren Nummer erst zu entsprechenden Zeitpunkt abgearbeitet. Dies ist nötig, da eine Steue- rungsverbindung, über die Nachrichten übertragen werden, dynamisch aufgebaut ist und sich ständig ändern kann. Sie Sequenznummer wird in der ersten RTSP-Nachricht der Sitzung mit dem Wert 1 belegt und dann mit jedem weiteren Request erhöht. Die zu einem Request gehörende Re- sponse-Nachricht enthält die selber Nummer. Dadurch kann deren Zuordnung durchgeführt wer- den. • Session Gibt die Sitzung-ID der aktuellen RTSP-Sitzung an. Der Server kann denn anhand dieser Nummer die Zugehörigkeit der Nachricht zu einer bestimmten Sitzung bestimmen. • Transport Mit diesem Parameter werden die Einzelheiten des Transports festgelegt, so z.B. Übertargungs- protokoll ( RTP oder UDP ), Modi ( Multicast oder Unicast ). • Content-.. Informiert den Empfänger, daß ein Body nach der abschließenden Zeile kommt. Darüber hinaus kann z.B. die Länge, Codierungsart oder Typ des Body angegeben werden 5 RTSP- Sitzung In diesem Kapitel möchte ich den Verlauf einer RTSP-Sitzung in ihren einzelnen Phasen vorstellen. Die Reihenfolge der Phasen entspricht der unten aufgeführten. Zusätzlich werde ich auch die Proto- kolle ansprechen, die mit RTSP kooperieren oder von RTSP benutzt werden. 5.1 Beschaffungsphase Eine Multimediasitzung enthält Quellen, die den Inhalt tragen. Diese können ihrerseits, siehe Kapitel 1, über mehrere Server verteilt werden. Damit sie, beispielsweise wiedergegeben werden können, muß mindestens die Quelle selber und der Server wo sie abgelegt wurde, bekannt sein. Diese Phase dient dazu solche Informationen zu beschaffen. Eine Präsentation kann mit Hilfe von sogenannter Präsentationsbeschreibung definiert werden. Wie im einzelnen solche Beschreibung auszusehen hat, ist vom Server abhängig und fällt nicht unter RTSP. Anzumerken ist daß solche Beschreibungen für den Server eindeutige Informationen enthalten Real Time Streaming Protocol Konstantin Steuer 47 sollen, anhand welcher er alle für die Präsentation relevanten Informationen an dem Client weiterlei- ten kann. D.h. eine Präsentationsbeschreibung muß, wie schon oben angesprochen, die Quellen und deren Ort enthalten. Die Kommunikation in dieser Phase kann mit RTSP-Nachrichten abgewickelt werden, muß aber nicht. Auch mit Hilfe von HTTP kann eine Präsentationsbeschreibung eingeholt werden, siehe [Down 99, ScRL 98a]. Womit auch immer die Informationen beschaffen werden, die Vorgehensweise ist gleich. Als erstes muß der Client wissen, wo sich eine Präsentationsbeschreibung befindet. Dies kann er z.B. aus einem HTTP-Tag , wie in der Abbilgung 5-1 dargestellt, entnehmen. Abbildung 5-1: HTTP-Tag Daraufhin wird eine Nachricht an dem Server geschickt, die ihm auffordert diese Information zu sen- den. Bei RTSP-Response werden solche Präsentationsbeschreibungen meist im Body plaziert und können dem SDP (Session Description Protokoll) entsprechend aufgebaut werden. Wie SDP im ein- zelnen aussieht, ist im [HaJa 98a] nachzulesen. Die Abbildung 5-2 zeigt einen möglichen Nachrichtenaustausch in dieser Phase. C bezeichnet den Client und M steht für den Multimediaserver. Die Pfeile zeigen die Übertragungsrichtung der Nach- richt. Abbildung 5-2: Nachrichtenaustausch in der Beschaffungsphase 5.2 Verhandlungs- / Transportinitialisierungssphase Sind die Einzelheiten der Sitzung nach der Beschaffungsphase dem Client bekannt, kann er die Vorbe- reitung des Transports angehen. Dabei müssen je nach Modus, die Client-, Server-Adressen ausge- tauscht werden, Transportprotokolle festgelegt werden, Sitzung-IDs, Abbruchbedingungen usw. be- stimmt werden. All diese Informationen sind essentiell und werden über die SETUP-Nachrichten übermittelt. In dieser Phase haben beide Partner die Möglichkeit, sich abzustimmen. Der Client teilt z.B. als erster, die von ihm unterstützten Protokolle mit. Der Server kann die Anforderungen des Cli- C->M: DESCRIBE rtsp://foo/twister RTSP/1.0 CSeq: 1 M->C: RTSP/1.0 200 OK CSeq: 1 Content-Type: application/sdp Content-Length: 164 v=0 o=- 2890844256 2890842807 IN IP4 172.16.2.93 s=RTSP Session a=control:rtsp://foo/twister m=audio 0 RTP/AVP 0 Real Time Streaming Protocol Konstantin Steuer48 ents, sobald er sie erfüllen kann, bestätigen. Ist das nicht der Fall, kann er sie mit einer Errormeldung verwerfen. Spätestens hier kann der Client erkennen, ob eine Sitzung überhaupt möglich ist oder nicht. Wird diese Phase erfolgreich abgeschlossen, kann die Wiedergabe bzw. die Aufnahme gestartet wer- den. 5.3 Wiedergabe- / Aufnahmephase Alle Vorgänge dieser Phase stützen sich auf die vorhergehend festgelegten Bedingungen. Die Anwen- dung der PLAY- oder RECORD-Methoden ist hier nicht vom großen Interesse, da sie auch schon im Kapitel 4 erwähnt wurden. Viel mehr sind der eigentliche Verlauf der Sitzung und die in dieser Phase aufgebauten Verbindungen wichtiger. Erwähnt habe ich schon, daß RTSP der Steuerung der Streams dient und selber keine Daten überträgt. Daher bedienen sich der Server und Client anderer geeigneter Protokolle wie z.B. RTP oder UDP, mit welchen solche Daten versendet werden können. In der Abbildung 5-3 ist ein möglicher Sitzungsauf- bau dargestellt, der typisch für diese Phase ist. Abbildung 5-3: Sitzungsaufbau in der Wiedergabe- bzw. Aufnahmephase In diesem Beispiel werden drei Verbindungen unabhängig voneinander aufgebaut. Über die Steuerungsverbindung werden die RTSP-Nachrichten ausgetauscht. Deswegen zeigen die Pfeile in beide Richtungen. Da sich hier die Partner einer TCP-Pipeline bedienen, kann nicht garantiert werden, daß sie über die Dauer dieser Phase bestehen bleibt. RTSP toleriert jedoch wechselnde Steue- rungsverbindung, da die Partner über die Sequenznummer die Nachrichten synchronisieren können. Darüber hinaus unterhalten beide eine Zustandsmaschine, siehe Kapitel 6, die den Stand der Verbin- dung protokolliert, wodurch sie ständig über die relevanten Aktivitäten des anderen informiert sind. Der Datenkanal wird hier über RTP abgewickelt. Die Nutzung von RTP ist hier nicht zwingend vorge- schrieben, bittet sich aber an, da dieses Protokoll speziell für die Übertragung von Streamingmedien entwickelt wurde, siehe [ScCF 96a]. So ist hier auch die Reihenfolgesicherheit integriert, die für Mul- timedia-Quellen von großer Bedeutung ist. In Verbindung zu dieser Datenübertragung ist der RTCP Kanal zu erwähnen. Über den wird der Datenfluß an sich kontrolliert, um z.B. bei Paketverlust ein er- neutes senden zu initialisieren. Im [ScCF 96a] werden dies Vorgänge detailliert beschrieben. 5.4 Abbruchphase Wurde die Wiedergabe aller Quellen erfolgreich durchgeführt, ist die Sitzung noch nicht abgeschlos- sen. Der Server ist im Wartezustand und erwartet weitere Instruktionen. Ist jedoch die eigentliche Prä- sentation für den Client beendet, möchte er keine weiteren Dienste des Server bzgl. diese Präsentation Client Server TCP RTP RTCP Steuerung Daten Kontrolle Real Time Streaming Protocol Konstantin Steuer 49 in Anspruch nehmen. Die Abbruchphase wird seitens des Clients eingeleitet. Mit Hilfe der Methode TEARDOWN kann er die bestehende Sitzung beenden. Natürlich wartet der Server nicht ewig auf den Abbruchbefehl und kann nach einer gewissen Zeit, die auch während der Verhandlungsphase bestimmt werden kann, die Sitzung selbständig beenden. Abgesehen von diesen zwei Fällen, kann auch ein Abbruch vom Client während der Präsentation an- gefordert werden. Der Server verhält sich dann wie beim Beenden nach der vollständigen Übertragung und unterbricht alle Verbindungskanäle. 6 Zustandsmodell Zustandsmodell gehört zu den wichtigsten Merkmalen des RTSP. Hier unterscheidet er sich von den meisten anderen Protokollen. Im Kapitel 5.3 habe ich diesen Mechanismus bereits kurz angesprochen. Die Motivation der Entwickler die Protokollzustände einzuführen, war es den Server und den Client möglichst unabhängig voneinander arbeiten zu lassen. Dadurch sind die Kommunikationspartner nicht mehr auf dauerhafte Steuerungsverbindung während einer Sitzung angewiesen und können sich auf eventuelle Störungen im Netz besser einstellen. Im allgemeinen beschreibt die Client- bzw. Server-Zustandsmaschine das Verhalten des Protokolls von der Initialisierung bis zur Terminierung einer Sitzung. Jeder Zustand bezieht sich hier auf jeweils nur ein Objekt. Als Objekte werden die in den Requests angegebenen Quellen in Verbindung mit den RTSP Sitzung-IDs definiert, wodurch eine eindeutige Zuordnung gewährleistet ist. Werden in einer Sitzung mehrere Mediaquellen gleichzeitig genutzt, so wird für jeder Quelle dieser Sitzung ein Objekt mit seinen Zuständen, vom Server sowie vom Client, angelegt und geführt. Die Containerfiles, die mehrere solche Quellen enthalten können, werden als ein Objekt gesehen, so daß keine Zustände mehr für die einzelnen Medien mitzuführen sind. Anhand des aktuellen Zustandes, wissen die Beteiligten in welcher Phase sie sich und die anderen Teilnehmer gerade befinden und wie sie auf die ankommenden Informationen reagieren sollen. Ist bei- spielsweise der Server und der Client in der Wiedergabephase, so kann sich der Server sicher sein, daß alle von ihm über den Datenkanal geschickten Daten, Paketverlust ausgeschlossen, vom Client richtig interpretiert und wiedergegeben werden. Dabei ist der Server nicht darauf angewiesen, daß der Client ständig für jedes Paket eine Empfangsbestätigung sendet, was den Nachrichten Verkehr deutlich redu- ziert. 6.1 Funktionsweise Die Funktionsweise der Zustandsmaschinen, hängt davon ab, ob sie vom Server oder Client geführt werden und im welchen Modus die Sitzung stattfindet. Im allgemeinen werden die Zustandsänderun- gen aufgrund, von den im Requests angegebenen Methoden und den daraufhin ausgeführten Aktionen, initiiert. Nicht jede Methode kann eine Zustandsänderung herbeiführen. So sind bzgl. des Zustands- mechanismus die Methoden SETUP, PLAY, RECORD, TEARDOWN und PAUSE vom Interesse. 6.1.1 Client In der Abbildung 6-1 sind alle möglichen Zustände dargestellt, die ein Objekt aus der Sicht des Clients annehmen kann. Bei einer Multicastsitzung, wo kein explizites SETUP nötig ist (z.B. bei einer Live- übertragung), ist Ready der erste Zustand. In diesem Fall gibt es nur zwei gültige Zustände, nämlich Ready und Playing bzw. Recording. Der Client verweilt dann in Playing, solange bis die Übertragung andauert, oder er bricht mit TEARDOWN die Verbindung völlig ab. Real Time Streaming Protocol Konstantin Steuer50 Die Zustandsänderung eines Objekts tritt bei Client nur dann ein, falls der Server eine positive Ant- wort auf die vorhergehende Anfrage gesendet hat. D.h. daß in der Statusline der Antwort die Kodie- rung des Status aus der Klasse 2xx stammen muß, siehe Kapitel 4.3.3. Meldet der Server mit 4xx ei- nen Fehler, bleibt der alte Zustand bestehen und falls der Statuscode 3xx enthält wird das Objekt in den Init-Zustand versetzt. Abbildung 6-1: Zustände des Clients Die PAUSE-Methode hat die Eigenschaft, daß sie zwar „jetzt“ versendet wird, die entsprechende Ak- tion aber erst zum anderen Zeitpunkt durchgeführt werden kann. Um jedoch eine Empfangsbestäti- gung zu haben, sendet der Server ein Response mit dem Statuscode 1xx. Nach Erhalt dieser Nachricht ändert der Client seinen Zustand noch nicht und arbeitet wie gehabt weiter. Erst wenn der Server den Befehl zu der richtigen Zeit ausgeführt hat, sendet er eine mit Status 2xx quittierte Antwort, die den Client dazu veranlaßt seine aktuellen Zustand in den Zustand Ready zu überführen. Ein Zustandsdiagramm in der Abbildung 6-2 zeigt die Zustandsanordnung und die einzelnen Über- gänge bzgl. der Methoden. TEARDOWN führt in jedem Fall zur Rückstufung in den Init-Zustand, da- her habe ich diese Übergänge weggelassen. Abbildung 6-2: RTSP Zustandsübergangsdiagramm 6.1.2 Server Wie auch schon bei Client, können die Serverobjekte vier verschiedene Zustände annehmen, siehe Abbildung 6-3. Bei Multicastsitzungen muß der Server aufgrund seiner Aufgabe, als „Datenlieferant“ Zustand Bedeutung Init SETUP-Request wurde gesendet, warten auf Antwort des Servers. Ready PAUSE / SETUP-Response wurde empfangen und ist positiv markiert ( 2xx ). Playing PLAY-Response wurde empfangen und ist positiv markiert ( 2xx ) Recording RECORD-Response wurde empfangen und ist po- sitiv markiert ( 2xx ) Real Time Streaming Protocol Konstantin Steuer 51 zusätzlich zu den Ready- und Playing/Recording-Zuständen, noch den Init-Zustand mitführen. Dieser ist nötig, da sich jedes Objekt, das der Server verwaltet, standardmäßig im Init-Zustand befindet, ohne daß ein Request empfangen wurde. Nach einer erfolgreichen Ausführung der Aktion, die von dem Client im Request verlangt wurde, än- dert der Server dem Zustand des betreffenden Objekts, entsprechend dem Zustandsdiagramm in der Abbildung 6-2, und sendet eine positive Antwort an den Client. Muß der Server einen Fehler melden, so bleibt er in dem aktuellen Zustand und verschickt eine Antwort mit dem Statuscode 4xx. Sendet er in seiner Antwort den Code 3xx, setzt er den Zustand, wie auch der Client, in den Init-Zustand. Abbildung 6-3: Zustände des Srvers Da der Server nicht auf die Empfangsbestätigung des Clients bzgl. der gesendeten Pakete wartet, kann es vorkommen, daß während der Sitzung der Partner nicht mehr präsent ist. Der Server kann das na- türlich nicht feststellen und sendet seine Daten weiter. Solches Verhalten könnte dann zu unnötigen Belastung des Server führen, falls er mehrere Sitzungen bedienen muß, die eigentlich nicht mehr be- stehen. Um das zu vermeiden gibt es eine feste Timeout-Zeit, die den Sendeintervall bestimmt in dem der Server „sorglos“ die Daten überträgt. Kommt innerhalb dieser Zeit kein weiterer Request des Cli- ents wird die Sitzung mit allen Kanälen abgebrochen. Diese Zeit wird standardmäßig auf 60 Sekunden festgesetzt. RTSP gibt den Client jedoch die Möglichkeit diese Zeit selber zu bestimmen oder wenig- stens als Wunschzeit dem Server mitzuteilen. Dies geschieht mit dem „timeout“-Wert, der mit dem „Session“-Parameter eingebunden werden kann, siehe [ScRL 98a]. Was die Funktion PAUSE angeht, verhält sich der Server dem Client entsprechend. Sobald es ge- wünscht wird, daß die Aktion erst zum späteren Zeitpunkt durchgeführt wird, z.B. Pause erst nach 2 Minuten, arbeitet der Server wie bisher und liefert seine Daten aus. Kommt der Zeitpunkt für die Pau- se, führt er die Aktion durch, sendet ein entsprechendes Response und begibt sich in den Ready- Zustand. 7 Szenario Nach dieser kurzen Vorstellung des RTSP möchte ich ein kleines Beispielszenario präsentieren, daß zum besseren Verständnis dieses Protokolls dienen soll. Die Abbildungen in diesem Abschnitt enthal- ten die tatsächliche RTSP-Nachrichten, um den möglichen Nachrichtenverkehr besser darzustellen. Zustand Bedeutung Init Wartezustand, kein Request empfangen. Ready SETUP/PAUSE-Request Empfangen, Aktion er- folgreich durchgeführt, Response mit 2xx-Code gesendet. Playing PLAY-Request empfangen und bestätigt, die Da- ten werden gesendet. Recording RECORD-Request empfangen und bestätigt, die Daten werden empfangen und aufgenommen. Real Time Streaming Protocol Konstantin Steuer52 7.1 Beschreibung Des Szenario beschreibt eine Unicastsitzung. Client C möchte einen Videobeitrag ansehen, zu dem es eine extra Audioquelle gibt. Die Beschreibung dieser Sitzung liegt auf dem Präsentationsserver P. Die einzelnen Quellen, d.h. die Video- und die dazugehörige Audiodatei befinden sich auf verschiedenen Multimediaservern und zwar auf dem Videoserver V und dem Audioserver A. Der Hinweis auf diesen Beitrag entnahm der Client aus einer WWW-Seite. Wie ein solcher HTML-Tag aussieht, habe ich be- reits in der Abbildung 5-1 angegeben. Im folgenden werde ich auf die einzelnen Phasen eingehen, den Nachrichtenaufbau beschreiben sowie die entsprechenden Zustandsänderungen erwähnen. In den Abbildungen bezeichnen die Pfeile die Übertragungsrichtung der Nachricht. Die Einzelnen Partner werden abgekürzt mit Großbuchstaben dargestellt. 7.2 Beschaffungsphase Abbildung 7-1: Nachrichtenaustausch in der Beschreibungsphase Wie schon oben erwähnt, entnahm der Client den Hinweis auf den Beitrag aus einer HTML-Seite. Der entsprechender Tag enthielt die Ortsangabe, wo die Präsentationsbeschreibung verlangt werden kann. Sie liegt nämlich auf dem Präsentationsserver P. Der Client sendet eine Anfrage im HTTP-Format, wobei er angibt, daß die Beschreibung nach SDP aufgebaut werden soll. Der Server P liefert die ge- wünschte Beschreibung, die er im Nachrichtenbody integriert. Aus dieser Beschreibung entnimmt der Client, daß diese Sitzung über zwei Quellen verfügt, die auf verschiedenen Servern verteilt sind und das es sich hier um eine RTSP-Sitzung handelt. In der Praxis sind die ausgetauschten Nachrichten im HTTP-Format. Der Client führt außerdem noch keine Zustandsprotokolle für die Quellen, da er erst hier nähere Informationen über sie erhält. 7.3 Transportinitialisierungssphase Der Client ist nun gezwungen beide Server separat anzufragen, da für diese Präsentation keine Aggre- gationskontrolle vorgesehen ist. Als erstes kontaktiert er den Audioserver und übergibt im die Trans- porteinzelheiten, wie Portnummer, Modus (hier Unicast), und den gewünschten Übertragungsproto- koll für die Daten (RTP). Dabei setzt er den Zustand dieses Audioobjektes auf Init. Er wartet die be- stätigende Antwort des Audioservers A ab und versendet anschließend eine weitere Anfrage an dem Videoserver V. Wurde auch diese Anfrage positiv beantwortet, kann er mit der Wiedergabe beginnen. C->P: GET /twister.sdp HTTP/1.1 Host: www.example.com Accept: application/sdp P->C: HTTP/1.0 200 OK Content-Type: application/sdp v=0 o=- 2890844526 2890842807 IN IP4 192.16.24.202 s=RTSP Session m=audio 0 RTP/AVP 0 a=control:rtsp://audio.com/twister/audio.en m=video 0 RTP/AVP 31 a=control:rtsp://video.com/twister/video Real Time Streaming Protocol Konstantin Steuer 53 Sobald die Server A und V die Befehle ausgeführt haben und keine Fehler melden, setzen sie die Zu- stände der einzelnen Objekte, die durch die Quellenangabe und der Sitzung-ID eindeutig festgelegt sind, auf Ready. Der Client C setzt seinerseits nach dem Empfang der positiven Antworten der einzel- nen Server auch die Zustände der entsprechenden Objekte auf Ready. Die dazugehörigen Nachrichten sind in der Abbildung 7-2 dargestellt. Diese Nachrichten werden schon nach RTSP aufgebaut. Abbildung 7-2: Nachrichtenaustausch während der Initialisierung der Quellen 7.4 Wiedergabephase Nach der erfolgreichen Transportinitialisierung kann der Client C mit der Wiedergabe beginnen. Die einzelnen Server müssen weiterhin separat angesprochen werden, siehe Abbildung 7-3. So versendet der Client seine Requests an den Video- und Audioserver, wobei er hier mit dem Parameter „Range“ mitteilt, daß der Start der Wiedergabe erst ab der 10-ten Minute erfolgen soll. Die Server A und V so- wie der Client C ändern die Objektzustände in den Playing-Zustand. Die Anfragen des Clients werden sequentiell durchgeführt. Es kann daher der Eindruck entstehen, daß deswegen die Quellen Zeitversetzt wiedergegeben werden. Dies ist jedoch nicht der Fall, da der Client die Ankommenden Pakete synchronisiert und entsprechen abspielt. Die Tatsache, daß die Daten an sich nicht zur gleichen Zeit ankommen, beeinflußt im Prinzip nicht den Betrieb. Sobald aber eine der Server seine Daten mit zu großen Verzögerung sendet, stoppt der Client seine Wiedergabe und wartet bis die fehlenden Pakete angekommen sind und setzt seine Tätigkeit fort. 7.5 Abbruchphase Der Client möchte nun die Wiedergabe beenden. Daher leitet er die Abbruchphase ein. Wie schon in den vorhergehenden Phasen versendet er entsprechenden Nachrichten an die beteiligten Server. Diese Nachrichten enthalten die TEARDOWN-Methode mit der Angabe der Sitzungs-ID. Anhand dieser ID kann der Server die zu der Sitzung gehörenden Verbindung bestimmen und unterbrechen. Anschlie- ßend sendet er eine bestätigende Antwort. Damit setzten die einzelnen Server ihre Objektzustände auf den Init-Zustand. Der Client bricht seinerseits die Wiedergabe ab und gibt die Kanäle wieder frei. Die C->A: SETUP rtsp://audio.com/twister/audio.en RTSP/1.0 CSeq: 1 Transport: RTP/AVP/UDP;unicast;client_port=3056-3057 A->C: RTSP/1.0 200 OK CSeq: 1 Session: 12345678 Transport: RTP/AVP/UDP;unicast;client_port=3056- 3057;server_port=5000-5001 C->V: SETUP rtsp://video.com/twister/video RTSP/1.0 CSeq: 1 Transport: RTP/AVP/UDP;unicast;client_port=3058-3059 V->C: RTSP/1.0 200 OK CSeq: 1 Session: 23456789 Transport: RTP/AVP/UDP;unicast;client_port=3058- 3059;server_port=5002-5003 Real Time Streaming Protocol Konstantin Steuer54 Abbildung 7-3: Nachrichten in der Wiedergabephase Sitzung ist nun abgebrochen. Um erneut auf die Daten zuzugreifen, muß der Client mit der Initialisie- rungsphase die Sitzung aufbauen. Abbildung 7-4: Nachrichtenaustausch in der Abbruchphase 8 Ausblick Wie wir gesehen haben stellt RTSP eine mächtige Plattform für Anwendungen, die Multimediaquellen über die Netze nutzen wollen. Damit ist Ressourcen sparender Umgang mit den kontinuerlichen Me- dien möglich, der weit größeren Kreis der Interessierten ansprechen kann als bisher der Fall war. Wichtige Präsentationen, Vorträge bzw. Vorlesungen können so einen Publikum präsentiert werden, C->V: PLAY rtsp://video.com/twister/video RTSP/1.0 CSeq: 2 Session: 23456789 Range: smpte=0:10:00- V->C: RTSP/1.0 200 OK CSeq: 2 Session: 23456789 Range: smpte=0:10:00-0:20:00 RTP-Info: url=rtsp://video.com/twister/video;seq=12312232; rtptime= 78712811 C->A: PLAY rtsp://audio.com/twister/audio.en RTSP/1.0 CSeq: 2 Session: 12345678 Range: smpte=0:10:00- A->C: RTSP/1.0 200 OK CSeq: 2 Session: 12345678 Range: smpte=0:10:00-0:20:00 RTP-Info: url=rtsp://audio.com/twister/audio.en;seq=876655; rtptime=1032181 C->A: TEARDOWN rtsp://audio.com/twister/audio.en RTSP/1.0 CSeq: 3 Session: 12345678 A->C: RTSP/1.0 200 OK CSeq: 3 C->V: TEARDOWN rtsp://video.com/twister/video RTSP/1.0 CSeq: 3 Session: 23456789 V->C: RTSP/1.0 200 OK CSeq: 3 Real Time Streaming Protocol Konstantin Steuer 55 das sonst gar nicht in deren Genuß kommen würde. Firmen ist es möglich Schulungen für alle Mitar- beiter zur Verfügung zu stellen usw. Mittlerweile wurde RTSP von IETF standardisiert und viele Firmen bauen ihre Produkte auf diesen Standard auf. Einer der bekanntesten sind z.B. Netscape, 3Com Real_Media und Apple. Auch die meisten Browser unterstützen RTSP, was seiner weiten Verbreitung bestimmt dienlich sein sollte. Real Time Streaming Protocol Konstantin Steuer56 Literaturverzeichnis [Down 99] Downey, Richard http://www.ug.ecs.soton.ac.uk/~rtd195/rtsp/index.html [Stand: 18.09.1999] [HaJa 98a] Handley, M. - Jacobson, V. (Eds.): SDP: Session Description Protocol RFC 2327, Network Working Group 1998 [Real 99] Real Networks http://www.real.com/devzone/library/fireprot/rtsp/ [Stand: 23.10.1999] [Reib 99] Reibold, Holger http://www.pcspiele.de/internet/artikel/tech/199910/rtsp_00-wc.html [Stand: 16.10.1999] [ScCF 96a] Schulzrinne, H. - Casner, S. - Frederick, R. (Eds.): RTP: A Transport Protocol for Real-Time Applications RFC 1889, Network Working Group 1996 [Schi 98] Schichl, Gunter http://www.forwiss.uni-passau.de/~schichl/seminar/inhalt.html [Stand: 23.01.1998] [ScRL 98a] Schulzrinne, H. - Rao, A. - Lanphier, R. (Eds.): Real Time Streaming Protocol RFC 2326, Network Working Group 1998 [Schw 98] Schwing, Peter http://www.ito.tu-darmstadt.de/edu/sem-iuk-w97/aus6/inhalt.html [Stand: 16.04.1998] Daniel Herche 57 Das Real-Time Transport Protokoll Daniel Herche FB Informatik, Uni Dortmund Dherche@nef.wh.uni-dortmund.de Zusammenfassung Diese Ausarbeitung beschäftigt sich mit dem Real-Time Transport Protokoll (RTP) und dem dazugehörenden Kontrollprotokoll (RTCP). Zu Beginn werden Einsatzgebiete und daraus resultierende Probleme von Transportprotokollen diskutiert, sowie ein Szenario multimedialer Sitzungen vorgestellt. Der Aufbau der Pakete von RTP und RTCP inklusive der verschiedenen Untertypen von Paketen werden beschrieben. Das Hauptaugenmerk richtet sich jedoch auf das Zusammenspiel der Protokolle bezüglich der Einhaltung von Quality of Service (QoS) Parametern und welche Rückschlüsse der Anwender aus der Vielfalt der Daten ziehen kann, die von Paketen des Kontrollprotokolls zu Verfügung gestellt werden, um die Datenströme individuell an sich ändernde oder vorgegebene Gegebenheiten anzupassen. Diese Ausarbeitung stellt keinen Anspruch auf Vollständigkeit, vielmehr wurde der Schwerpunkt auf das Verständnis der grundlegenden Eigenschaften und Mechanismen von RTP gelegt. Der Inhalt dieser Ausarbeitung stützt sich im wesentlichen auf die Protokollbeschreibung von [Scho96], es wurden jedoch auch andere Dokumente mit einbezogen. 1 Einleitung Im Zeitalter multimedialer Anwendungen wächst die Anforderung an das Internet, Datenströme unterschiedlichster Art in Echtzeit übertragen zu können. Dies setzt zum einen eine adäquate Netzinfrastruktur und damit ausreichende Bandbreiten voraus, zum anderen ist die Bereitstellung und der Einsatz leistungsfähiger Transportprotokolle zwingend erforderlich. Aus diesem Grund wurde von der Audio-Video Transport Working Group (AVT WG) im Auftrag der Internet Engineering Task Force (IETF) das Real-Time Transport Protokoll für die Übertragung von Video und Audioechtzeitdaten entwickelt. RTP ist unabhängig von Netzwerkprotokollen unterliegender Transportschichten. So setzt es zum Beispiel auf dem User Data Protocol (UDP) auf, was zur Folge hat, daß keine Mechanismen für die Fehlerkorrektur und die Flußkontrolle zur Verfügung stehen. Dies erfordert den Einsatz einer Kontrollinstanz, eines Kontrollprotokolls, das Mechanismen für die Überwachung der Datenströme bereitstellt (Monitoring) und die Einhaltung des QoS sicherstellen hilft. 1.1 Problemstellungen Wir wollen uns nun der Frage zuwenden, welche Probleme bei Echtzeitübertragungen auftreten können, und damit auch gelöst werden müssen. Dies verdeutlichen wir uns anhand eines klassischen Beispiels, der Videokonferenz bestehend aus mehreren Personen an verschiedenen Orten, die über eine Videokamera und ein Mikrophon verfügen (siehe Abbildung 1-1). Mehrere Teilnehmer eines Netzwerkes möchten mit den jeweils anderen Teilnehmern in Echtzeit kommunizieren, d.h. Bild- und Tondaten austauschen, wobei Ton und Bild als eigenständige Das Real-Time Transport Protokoll 58 Daniel Herche Datenströme angesehen werden, so daß einzelne Teilnehmer entscheiden können, ob sie beide oder nur ein Medium nutzen wollen. Audio- und Videoanwendungen setzen voraus, daß die zugehörenden Datenströme in gleichmäßigen Abständen bereitgestellt werden, um den Echtzeitcharakter zu wahren. Ein kontinuierlicher Datenstrom muß deshalb sichergestellt sein. Desweiteren ist die Einhaltung eines minimalen Datendurchsatzes erforderlich, da mediale Daten eine gewisse Bandbreite voraussetzen, um angemessen eingesetzt werden zu können. Die Teilnehmerzahl einer Videokonferenz ist nicht festgesetzt und sollte variabel sein, zusätzliche Teilnehmer können sich in die Konferenz einloggen oder vorhandene verabschieden. Um auch zum Beispiel einzelne Teilnehmer ausblenden zu können, muß der Anwender Informationen über die Zusammensetzung der Sitzung erhalten sowie eine Benachrichtigung bekommen, falls Teilnehmer sich verabschieden oder neue hinzukommen. Abbildung 1-1 : Videokonferenz Kamera Mikrophon Teilnehmer A Teilnehmer B Teilnehmer C Das Real-Time Transport Protokoll Daniel Herche 59 1.2 RTP und andere Protokolle RTP wurde so konzipiert, daß es von unterliegenden Protokollen unabhängig ist. In der Praxis setzt es häufig oberhalb von UDP auf, um dessen Multiplex- und Schecksummenfunktionalitäten nutzen zu können. Es läßt darüberliegenden Anwendungsprogrammen freie Hand, gibt keine starren Verhaltensvorgaben, sondern bietet durch sein Kontrollprotokoll eine Fülle von Informationen an, die von der Anwendung ausgewertet werden müssen. Zusätzlich bietet es Platz für anwendungsspezifische Erweiterungen. Aus diesem Grund ist RTP meistens auf Anwendungsebene direkt implementiert. RTP / RTCP ist nur zuständig für das Übertragen von Daten, nicht für den Verbindungsaufbau, noch für das Bereitstellen der Information, wo bestimmte Daten zu finden sind. Hier können RTP und RTSP eine Einheit bilden. Eine Anwendung holt sich mittels einer RTSP Anfrage von einer Webseite auf einem Server die genaue Adresse und den Port, wo sie sich in eine Videolivekonferenz einklinken kann. Die Anwendung kontaktiert die Adresse unter dem genannten Port, das Übertragen der Daten kann beginnen. Unter der gleichen Adresse, jedoch meist eine Portnummer höher, wird einer weitere Verbindung für das Kontrollprotokoll aufgebaut. Abbildung 1-2 soll dies verdeutlichen. Nun könnte sich die Frage stellen, warum ein neues Protokoll namens RTP ? Hätte TCP nicht als Basis für Datenübertragungen mit Echtzeitcharakter ausgereicht ? Der große Nachteil von TCP ist, daß es auf dem Prinzip „Warten oder Verwerfen“ beruht. Die Verbindung stockt, falls Pakete verloren gehen. Verloren gegangene Pakete werden neu angefordert und die Übertragungsgeschwindigkeit herabgesetzt, was für Echtzeitdaten inakzeptabel ist, da sie auf einen gleichmäßigen und kontinuierlichen Datenstrom angewiesen sind. Das Wiederholen von Datenpaketen kann zusätzlich zu einer Verzögerung seitens der Wiedergabe führen. TCP ist deshalb als Übertragungsprotokoll nicht geeignet. Abbildung 1-2 : RTP und RTSP Teilnehmer A Teilnehmer B Steuerung via RTSP Datenstrom via RTP Kontrolle via RTCP Das Real-Time Transport Protokoll 60 Daniel Herche 2 RTP Wir beginnen mit der Vorstellung einiger wichtiger Grundbegriffe, die uns im weiteren des öfteren begegnen werden : • Payload : Die eigentlichen Nutzdaten, die übertragen werden, z.B. komprimierte Videobilder oder Audiosamples • Header : Kopf eines Pakets, liefert Informationen über ein Paket • Pakete : Einheit bestehend aus dem Header und Nutzdaten • Transportadresse : Kombination aus Netzwerkadresse, dem Domainnamen, und der Portnummer. Markiert den Anfangs- bzw. Endpunkt einer Übertragung • Synchronization source (SSRC) : Bezeichner der Quelle eines Datenstreams Das Real-Time Transport Protokoll ist zuständig für das Übertragen der Daten, die Echtzeitanforderungen haben. Ein RTP Paket, dessen Größe von den unterliegenden Protokollen abhängt, besteht aus einem festen Header und den eigentlichen Daten. Bevor wir uns mit dem Aufbau des Headers beschäftigen wollen, stellen wir zwei grundlegende Mechanismen von RTP vor. 2.1 Mixer Stellen wir uns vor, daß zwei Teilnehmer einer Sitzung Audioechtzeitdaten austauschen wollen. Teilnehmer A verfügt über einen Netzzugang mit hoher Bandbreite, Teilnehmer B befindet sich in einem Subnetz mit wesentlich kleinerer Bandbreite. Hier kommen Mixer ins Spiel, sie kombinieren eingehende Datenströme, resynchronisieren die Pakete bzw. reduzieren die Komprimierungsrate der Daten zugunsten der Teilnehmer mit geringerer Bandbreite. Die Hauptaufgabe eines Mixers besteht jedoch darin, mehrere eingehende Ströme in einen ausgehenden umzuwandeln. Jeder Quelle, und damit dem jeweiligen Datenstrom, sei es ein Mikrophon oder eine Videokamera, ist eine eindeutige Kennung zugeordnet, die Synchronization Source SSRC, um verschiedene Pakete einem Datenstrom zuzuordnen. Synchronisiert nun ein Mixer mehrere Datenströme zu einem neuen oder ändert er die Beschaffenheit eines bestehenden Stroms, so definiert er eine neue Quelle. Vom Mixer ausgehende Pakete sind nun mit der SSRC des Mixers markiert. Die SSRCs der eingehenden Ströme werden in eine Liste, der Contributing Source List (CSRC Liste) eingetragen und in die ausgehenden Pakete eingefügt. Abbildung 2-1 : Mixer Abbildung 2-1 zeigt ein Einsatzgebiet von Mixern, das Zusammenführen und Synchronisieren zweier getrennter Datenströme von zwei verschiedenen Quellen, und damit auch verschiedenen SSRCs, zu einem neuen Datenstrom, der an ein Netzwerk weitergegeben wird. Quelle von Videodaten Quelle von Audiodaten Netzwerk MIXER Das Real-Time Transport Protokoll Daniel Herche 61 2.2 Übersetzer Übersetzer sind dafür da, eingehende Daten weiterzuleiten. Sie erzeugen keine neuen Ströme, lassen also die SSRC unangetastet. Ein Einsatzgebiet wäre zum Beispiel das Tunneling von Paketen durch eine Firewall, was den Einsatz von zwei Übersetzern auf jeder Seite der Firewall voraussetzt. Abbildung 2-2 soll dies verdeutlichen. In diesem Fall schickt Teilnehmer A einen Strom zu Teilnehmer B, der hinter einer Firewall sitzt. Abbildung 2-2 : Übersetzer 2.3 RTP Header Betrachten wir nun den Aufbau des Headers eines RTP-Pakets, siehe Abbildung 2-3. Auf die einzelnen Felder gehen wir der Reihe nach ein. Abbildung 2-3 : RTP Header Fire- wall Über- setzer Über- setzer Netzwerk Teilnehmer A Teilnehmer B Das Real-Time Transport Protokoll 62 Daniel Herche • V : Gibt die Version von RTP an, momentan wird Version 2 verwendet • P : Padding Bit. Wenn gesetzt, so wurden an das Ende des Pakets ein oder mehrere Padding- Oktetts angehängt, wobei das letzte Oktett die Anzahl der zu ignorierenden Oktetts angibt. Manche Verschlüsselungsverfahren benötigen eine feste Blockgröße • CC : CSRC Zähler. Gibt an, wieviele Elemente in der CSRC-Liste eingetragen sind. Das können null bis fünfzehn sein • M : Marker, kündigt Ereignisse an, die in einem gesonderten Profil beschrieben sind. Profile sind Zusatzvereinbarungen der Sitzungsteilnehmer, die unabhängig vor der Übertragung der Daten getroffen werden • PT : Payloadtype. Gibt den Nutzlasttyp der Daten an und wird von der konkreten Anwendung interpretiert • Sequence number : Eine 16bit Zahl, die von Paket zu Paket um eins erhöht wird. Der Anfangswert wird zufällig gewählt. Die Nummer kann benutzt werden, um Paketverluste zu erkennen bzw. um Paketsequenzen wieder herzustellen • Timestamp : 32bit Zahl, die den Zeitpunkt wiederspiegelt, an dem das Paket erstellt wurde. Abhängig vom jeweiligen Anwendungsfall, so können zum Beispiel zwei Pakete den selben Zeitstempel enthalten wenn die Daten zum selben z.B. Bild gehören. Der Initialwert wird zufällig bestimmt • SSRC Identifier : (meist) eindeutige Nummer, kennzeichnet die Quelle des Pakets und wird zufällig ermittelt, was zur Folge hat, daß zwei Quellen die selbe Nummer erhalten können • CSRC Identifier : Liste von bis zu 15 SSRCs, die von Mixern eingefügt wurden Dem Header kann eine Erweiterung variabler Länge folgen, die Zusatzinformationen enthält. Sie wird vor der CSRC Liste eingefügt und beinhaltet, neben ihrer Länge, profilspezifische Angaben, die von Anwendung zu Anwendung verschieden sein können und vorher von den Teilnehmenden ausgehandelt festgelegt wurden. Auf diesen Punkt wird an dieser Stelle aber nicht weiter eingegangen. Das Real-Time Transport Protokoll Daniel Herche 63 3 RTP Control Protokoll RTP und RTCP bilden eine Einheit, wobei RTP sich um das Transportieren der Nutzdaten kümmert. Mit RTP alleine hat der Anwender jedoch nur eine begrenzte Möglichkeit, Informationen bezüglich der Qualität seiner Datensendungen zu erhalten, geschweige Informationen über andere Sitzungsteilnehmer zu bekommen, um darauf zu reagieren. Diese Aufgaben übernimmt das Kontrollprotokoll RTCP, dessen Prinzip daraus besteht, daß in periodischen Zeitabständen Kontrolldaten in Kontrollpaketen an alle Sitzungsteilnehmer verschickt werden. Die Aufgaben und Funktionalitäten von RTCP lassen sich in vier Bereiche aufteilen : i.) Rückmeldungen bezüglich der Qualität der Datenverteilung, dies wird dadurch erreicht, daß sowohl Sender als auch Empfänger von Paketen Informationen bereitstellen ii.) Zuweisung eines eindeutigen Namens (CNAME, canonical Name) zu einer RTP-Quelle. Dadurch wird gewährleistet, daß ein Datenstrom einer Quelle eindeutig zuzuweisen ist, da die SSRC einer Quelle, aufgrund von möglichen Kollisionen, nicht eindeutig sein muß iii.) Überwachung und Regulierung der Bandbreite, die von den Kontrollpaketen eingenommen werden iv.) Bereitstellung von Informationen über die Sitzungsteilnehmer und Sitzungskontrolle 3.1 RTCP Pakete Wir wollen nun die Funktionalitäten eingehender durchleuchten und beginnen mit der Vorstellung der Pakettypen von RTCP. Es existieren 5 Typen, die aus einem festen Teil gefolgt von einem variablen Teil bestehen und denen verschiedene Aufgaben zufallen. 3.1.1 Senderberichte Senderberichte (SR) werden von Quellen verschickt, nachdem sie Datenpakete gesendet haben, und lassen sich in drei Bereiche, siehe auch Abbildung 3-1, einteilen : • Der Header. Wie bei RTP Paketen enthält er Informationen über die Version und angehängte Padding Oktetts, der Payloadtyp ist auf 200 gesetzt, was das Paket als Senderbericht klassifiziert. Neben der Länge des Pakets in 32bit Wörtern minus eins, findet sich die SSRC des Senders • Eine 20 Oktetts lange Senderinformation bietet Informationen über die Übertragungsaktivitäten des Senders. Der NTP Zeitstempel gibt den Zeitpunkt an, als der Bericht erzeugt wurde. Er richtet sich nach der Zeiteinteilung des Network Time Protocols, also relatiav nach der Anzahl der verstrichenden Sekunden seit dem 01.01.1900. Anhand dieses Stempels und eines zusätzlichen, dem RTP Zeitstempel, der die selbe Zeit wie der NTP Stempel, jedoch im Format der RTP Pakete, wiederspiegelt, lassen sich Zeitdifferenzen verschiedener Pakete berechnen. Wir erinnern uns an dieser Stelle, daß der Zeitstempel der RTP Pakete eine Zufallskomponente hat. Desweiteren gehören zu den Senderinformationen die Anzahl der Datenpakete, die bis zum Zeitpunkt des Erstellens dieses Berichts vom Sender verschickt wurden, sowie die Anzahl aller bis dahin gesendeten Nutzdatenoktetts. Diese beiden letzten Informationen beziehen sich auf die aktuelle Quelle, ändert der Sender seine SSRC, werden beide Zähler auf 0 gesetzt. In RTP Paketen wird ein Zähler mitgeliefert, der die Anzahl der Elemente der CSRC Liste angibt. In RTCP Paketen weicht dieser einem anderen Zähler, dem Empfangsberichtzähler • Der dritte Teil enthält null oder mehrere Empfangsberichte, je nachdem von wie vielen Quellen der Sender Datenströme empfängt. Jeder Empfangsbericht besteht aus der SSRC, von der er Pakete erhält, sowie Statistiken bezüglich der Übertragung der Daten. Diese Statistiken bestehen aus der Anzahl der verlorengegangenen RTP Pakete seit Sendung des letzten Sender- bzw. Das Real-Time Transport Protokoll 64 Daniel Herche Empfängerberichtes, der Anzahl aller verlorengegangenen Pakete, der höchsten Sequenznummer, die empfangen wurde, der mittleren Abweichung zweier Pakete, die gesendet und empfangen wurden. Letzteres bedeutet die Differenz der Zeitstempel der letzten beiden empfangenden Pakete minus der Differenz der Zeit zu der sie angekommen sind. Der letzte Senderberichtszeitstempel sowie die zeitliche Verzögerung zwischen Erhalt des letzten Senderberichts von der Quelle und Sendung dieses Berichts schließen den Empfangsbericht ab Abbildung 3-1 : SR RTCP Paket 3.1.2 Empfängerberichte Empfängerberichte (RR) werden dann verschickt, wenn Daten erhalten worden sind und unterscheiden sich von den Senderberichten nur dadurch, daß sie keine Senderinformationen enthalten. Diese Sektion ist bei ihnen nicht vorhanden. 3.1.3 Quellenbeschreibungspakete Quellenbeschreibungspakete, SDES (Source Description) genannt, stellen zusätzliche Informationen über die Quellen bereit, siehe Abbildung 3-2. Sie bestehen aus einem Header, dessen Payloadtyp auf 202=SDES festgesetzt ist, der wiederum Versionsnummer und vorhandene Padding Oktetts, die Länge des Pakets als auch die Anzahl der beschriebenen Quellen enthält. Angehängt sind null oder mehr Quellenbeschreibungen, die, angeführt von der entsprechenden SSRC und CSRC, eine oder mehrere Einträge enthalten. Die Einträge bestehen aus einem 8bit langen Feld, der den Typ des Eintrags festlegt, einem 8bit langen Zähler, der die Länge der textuellen Beschreibung angibt und der eigentlichen Beschreibung. Wir stellen die möglichen Einträge jetzt vor. • CNAME, der kanonische Endpunktidentifizierer. Dieser Eintrag ist vorgeschrieben und enthält den Benutzernamen, zum Beispiel das Login, und den Domainname der Quelle, die eindeutig unter allen Sitzungsteilnehmern und während der Sitzung nicht verändert werden sollte • NAME, der Name des Nutzers • EMAIL, die Emailadresse des Nutzers • PHONE, die internationale Telephonnummer des Nutzers • LOC, der Ort, an dem sich der Nutzer befindet Header Senderinformation Empfangsbericht bez. SSRC_0 Empfangsbericht bez. SSRC_1 Das Real-Time Transport Protokoll Daniel Herche 65 • TOOL, der Namen des eingesetzten Programms • NOTE, mögliche Statusmeldungen, die der Nutzer bekannt geben möchte • PRIV, eröffnet die Möglichkeit neue Quellenbeschreibungen zu versenden. Ein vom Anwender gewählter Name der Beschreibung, die Länge der Beschreibung sowie die Beschreibung selbst werden übertragen Abbildung 3-2 : Quellenbeschreibungspaket 3.1.4 Goodbye Pakete Goodbye Pakete (BYE) werden verschickt, wenn einzelne Quellen nicht mehr zu Verfügung stehen, da sich zum Beispiel ein Teilnehmer ausloggen will. Versionsnummer, Anzahl der Padding Oktetts und die Länge des Pakets sind enthalten, der Payloadtyp ist auf 203=BYE festgelegt. Zusätzlich existiert ein Zähler, der angibt, wieviele Quellen sich verabschieden wollen. Die Quellen, gekennzeichnet durch ihre SSRC/CSRC, sind an den Header angehängt und können optional mit einem Text versehen werden, der den Grund des Ausscheidens angibt. 3.1.5 Anwendungsspezifische Pakete Pakete dieser Art (APP) sind dafür gedacht, neuen Anwendungen die Möglichkeit zugeben, Daten auszutauschen, die durch Pakete bestehender Art nicht abgedeckt werden können. Neben den bekannten Feldern enthält ein solches Paket seinen Namen, einen Subtypeintrag, der eine genauere Einteilung neuer Pakete gleichen Namens ermöglicht, seine SSRC/CSRC und die anwendungsspezifischen Daten. Teilnehmern, denen ein solches Paket zugeschickt wurde, sollte der Name des Paketes bekannt sein und dessen Inhalt Verwendung finden, andernfalls sollte das Paket ignoriert werden. Header Quellenbeschreibung für SSRC/CSRC_1 Quellenbeschreibung für SSRC/CSRC_2 Das Real-Time Transport Protokoll 66 Daniel Herche 3.2 Auswertung von Sender- und Empfängerberichten Die in den Berichtpaketen enthaltenden Informationen sind sowohl für den Sender als auch für den Empfänger von Datenpakete interessant und machen nur Sinn, wenn sie vom Anwender bzw. der Anwendung interpretiert werden und entsprechende regulierende Maßnahmen nach sich ziehen. So können Empfänger erfahren, ob aufgetretene Probleme lokaler oder globaler Natur sind. Quellen, die Daten verschicken, können, nach Auswertung der von den Empfängern verschickten Rückmeldungen, ihre Datenströme verändern und anpassen. Wir kommen im nächsten Abschnitt näher darauf zu sprechen. Sowohl in den Senderinformationen als auch in den Empfängerberichten sind diverse Zähler und Zeitstempel enthalten, deren Bedeutung wir uns nun näher anschauen. Zähler unterscheiden sich dadurch, daß sie sich entweder auf absolute Daten beziehen, also zum Beispiel seit Beginn der Sitzung die übertragene Datenmenge mitzählen. Auf der anderen Seite können sich Zähler auf vorhergegangene Pakete beziehen. Zeitstempel geben den Zeitpunkt an, absolut oder in Bezug zur sendenden Quelle, zum dem ein Paket erstellt bzw. verschickt wurde. Wir wollen uns nun ansehen, welche konkreten Rückschlüsse zu ziehen sind und welche Informationen berechnet werden können. Aus der Anzahl der verlorengegangenen Pakete zweier aufeinanderfolgenden Berichte ergibt sich die genaue Anzahl der nicht erhaltenen Pakete. Diese können durch Differenzbildung der zuletzt gelieferten Sequenznummern berechnet werden. Aus dieser Anzahl, dividiert durch die Zeitdifferenz der zugehörenden NTP-Zeitstempel, läßt sich die Anzahl der verlorengegangenen Paket pro Sekunde ausrechnen. Aus der Anzahl der gelieferten oder nicht gelieferten Pakete läßt sich in Relation zur verstrichenen Zeit, bekannt durch die Zeitstempel, die Übertragungsrate ermitteln. Mit Hilfe der Differenz zwischen der Anzahl der erwarteten Pakete minus der Anzahl der verlorengegangenen Pakete läßt sich die genaue Anzahl der tatsächlich erhaltenen Pakete errechnen. Die mittlere Abweichung der Zeit, in der zwei Datenpakete gesendet und dann empfangen wurden kann ein Anzeichen dafür sein, daß ein Paketverlust bevorsteht, so daß der Anwender Zeit hat, z.B. die Kodierung seines Datenstroms anzupassen, um die Bandbreite zu schonen. Diese Einschätzung ist mit Vorsicht zu genießen, da sie die Netzauslastung nur für einen bestimmtem Zeitpunkt wiedergibt. Für zuverlässigere Aussagen ist es erforderlich, daß entweder mehrere Pakete des selben Teilnehmers über einen längeren Zeitraum, oder Pakete verschiedener Teilnehmer im Zusammenhang analysiert werden. 3.3 Konsequenzen der Auswertung Es stehen also jetzt eine Menge von Informationen, die ausgewertet wollen. Wir beschäftigen uns nun mit der Frage, wer Nutzen aus den Übertragungsstatistiken ziehen kann, sowie welche Konsequenzen gezogen werden können. Diese möglichen Konsequenzen müssen natürlich zur Laufzeit vorgenommen werden. Folgende Personen können Nutzen aus den Statistiken ziehen ?, wir teilen sie in 3 Klassen ein : • Sender von Datenströmen • Empfänger von Datenströmen • Unbeteiligte Dritte Das Real-Time Transport Protokoll Daniel Herche 67 An dieser Stelle sei daran erinnert, daß mögliche notwendige Anpassungen auf Ebene der laufenden Anwendung vollzogen werden müssen. RTP/RTCP zwingt niemanden, die Übertragungsstatistiken zu berücksichtigen, was jedoch wenig Sinn macht. Sender, Quellen von Datenströmen, senden ihre Daten mit der Intention, daß ihre Daten beim Empfänger in akzeptablen Zeitgrenzen ankommen, so daß sie verwertet werden können. Aus den Empfangsberichten der Empfänger erfährt der Sender nun die Qualität seiner Dienstleistung. Fällt die Beurteilung seiner Dienste negativ aus, liegt es am Sender, die Übertragung der Daten zu verbessern. Bekommt also eine Quelle die Rückmeldung, daß die Hälfte aller Datenpakete bei einem bestimmten Empfänger verloren gegangen sind, so kann sie die Kodierung der z.B. Videodaten herabsetzen. Dies erreicht sie dadurch, daß sie entweder die Daten umkodiert, oder auf Datensätze, mit geringerer Größe, zurückgreift, die ihr vorher zu Verfügung gestellt wurden. Aus den Informationen nachfolgender RTCP-Kontrollpakete des Empfängers kann sie ablesen, ob ihr Strategie richtig war. Empfänger von Datenströmen wollen die Daten umsetzen, also in Echtzeit der Anwendung bzw. dem Anwender zu Verfügung stellen, um angezeigt oder abgespielt zu werden. Aus den von den Quellen gesendeten Senderberichten extrahiert der Empfänger die Informationen, um diesen Vorgang den Gegebenheiten anzupassen. So kann eine Anwendung zum Beispiel entscheiden, ob sie zu spät eingetroffene Pakete verwirft. Unbeteiligte Dritte können zum Beispiel Netzwerkadministratoren sein, die keine Teilnehmer einer Sitzung sind. Mit Hilfe der in den RTCP Paketen enthaltenen Statistiken können sie den Datenverkehr innerhalb ihres Netzwerkes überwachen, wie unter anderem das Ermitteln der Übertragungsgeschwindigkeit und der Übertragungskapazität. Es lassen sich daraus Rückschlüsse auf die Qualität des Netzwerks ziehen, zusätzlich können sie helfen, aufgetretene Probleme und Fehler zu suchen und zu beseitigen. Das Real-Time Transport Protokoll 68 Daniel Herche 3.3 Übertragungsintervalle und Bandbreitenregulierung Die Datenmenge der RTP Pakete reguliert sich scheinbar selbst und nimmt selbst bei steigender Teilnehmerzahl nicht rapide zu, da zum Beispiel bei einer Audiokonferenz nicht alle Beteiligten gleichzeitig reden. Bei den RTCP Pakten ist das anders, alle Teilnehmer senden in regelmäßigen Abständen z.B. Empfängerberichte und würden dadurch, bei steigender Teilnehmerzahl, die Bandbreite negativ beeinträchtigen. Aus diesem Grund müssen die Abstände zwischen zwei Kontrollpaketen regulierbar sein und gegebenenfalls herabgesetzt werden, RTCP kontrolliert sich also selbst, um die Übertragung der sensiblen Nutzdaten nicht zu gefährden. Als Basis dient die sogenannte Session bandwidth, die zu Verfügung stehende Gesamtbandbreite geteilt durch die Anzahl der Teilnehmenden. Es wird empfohlen, daß der Anteil der Kontrollpakete 5% dieser Bandbreite nicht übersteigen sollte und sich alle Teilnehmer an diese Marke halten. 25% dieser RTCP Bandbreite sind Sendern vorbehalten, so daß Neuankömmlinge schnellen Zugang zu den Quellenbeschreibungspaketen erhalten. Außerdem sind die in den Senderberichten enthaltenen Informationen die Grundlage dafür, daß der Empfänger Rückschlüsse auf die Empfangsqualität der erhaltenen Daten ziehen kann. Der zeitliche Mindestabstand zweier RTCP Pakete wurde auf eine halbe Sekunde plus einem Zufallswert zwischen einer halben und eineinhalb Sekunden festgelegt, damit nicht mehrere Sender gleichzeitig Daten verschicken. Er richtet sich auch nach der Anzahl der Teilnehmer und damit auch nach der Session bandwidth. Das Real-Time Transport Protokoll Daniel Herche 69 4 Weitere Protokollmechanismen RTP und RTCP stellen noch eine Reihe von anderen Mechanismen zu Verfügung bzw. es können beim Einsatz dieser Protokolle etwaige Probleme auftauchen, auf die wir jetzt eingehen wollen bzw. die wir nun vorstellen. 4.1 Kollisionen und deren Behandlung Wir erinnern uns, daß die SSRC einer Senderquelle am Anfang zufällig bestimmt wird, mit dem Ziel, daß alle an der Sitzung beteiligten Quellen eine unterschiedliche Kennung erhalten. Es besteht nun die, wenn auch sehr geringe Wahrscheinlichkeit, daß zwei verschiedene Quellen die Selbe SSRC zugewiesen bekommen. In solch einem Fall spricht man von Kollisionen, deren Auftreten erkannt und deren Existenz beseitigt werden muß. Die Wahrscheinlichkeit, daß eine Kollision auftritt, ist dann am größten, wenn alle Teilnehmer zur gleichen Zeit, etwa auf Anweisung des Sitzungsleiters, ihre SSRC berechnen. Im anderen Fall, wenn also ein Neuhinzukömmling einer bestehenden Sitzung beitritt, ist die Wahrscheinlichkeit einer Kollision geringer, da die SSRCs der Quellen sowohl in den Headern der Datenpakete, als auch in verschiedenen Feldern der Kontrollpakete enthalten sind. Der neue Teilnehmer erhält daher relativ schnell Kenntnis über die Bezeichner der Sender, kann diese mit seiner gewählten Kennung vergleichen und gegebenenfalls seine SSRC neu setzen, falls diese mit einer anderen SSRC übereinstimmt. Dies geschieht dadurch, daß er ein Goodbye Paket verschickt, sich also abmeldet, und dann einen neuen Bezeichner generiert. Ein anderer Fall wäre, wenn jemand von zwei verschiedenen Quellen, ein und dieselbe SSRC bekommt. Ihm bleibt nichts anderes übrig, als die Pakete des einen zu ignorieren und zu hoffen, daß einer der beiden Kollisionsverursacher den Konflikt bemerkt und beseitigt. 4.2 Schleifen Als Schleifen bezeichnet man das Duplizieren von Kontroll- und Datenpaketen, also das mehrfache Versenden der selben Daten. Man darf voraussetzen, daß Anwendungen keine Pakete doppelt verschicken. Also verbleiben als Ursache für Schleifen mögliche Mixer und Übersetzer, die neue gebündelte Datenströme erzeugen oder weiterleiten. Angemerkt sei an dieser Stelle, daß der Ursprung eines Pakets anhand seiner Transportadresse, bestehend aus der eindeutigen Netzadresse plus der Portnummer, bestimmt werden kann. So kann es zum Beispiel sein, daß ein Übersetzer fälschlicherweise Pakete in die selbe Richtung weiterleitet, von der er sie erhalten hat. Wie können nun Schleifen, und auch Kollisionen, erkannt werden ? Jeder Teilnehmer verwaltet eine eigene Liste, in der SSRC und CSRC Bezeichner, der CNAME und die Transportadresse je Eintrag verwaltet werden. Die Informationen, enthalten in dem ersten Paket, das man von einer der Quellen erhält, werden als korrekt angenommen und in die Liste eingetragen. Alle danach ankommenden Pakete werden darauf hin mit den Informationen in der Liste abgeglichen, gegebenenfalls werden neue Einträge aufgenommen. Treffen so zum Beispiel zwei Pakete mit der gleichen SSRC aber unterschiedlichen Transportadressen oder unterschiedlichen CNAMES ein, so liegt ein Konflikt vor, der oben beschriebene Maßnahmen nach sich ziehen sollte. Das Real-Time Transport Protokoll 70 Daniel Herche 4.3 Algorithmus zur Erkennung von Kollisionen und Schleifen An dieser Stelle stellen wir einen einfachen Algorithmus vor, mit dessen Hilfe Kollisionen, sowohl eigen- als auch fremd verschuldet, also auch Schleifen erkannt werden können. # unbekannte Quelle IF SSRC oder CSRC ist in der Liste nicht vorhanden THEN einen neuen Eintrag erzeugen, der SSRC/CSRC, Transportadresse und CNAME enthält CONTINUE # Quelle ist bekannt IF Transportadresse und SSRC stimmt mit den Einträgen in der Tabelle überein THEN CONTINUE # mögliche Kollision IF SSRC wird als nicht die eigene erkannt THEN IF zugehörender CNAME, laut Tabelle, stimmt nicht mit dem CNAME des Pakets überein THEN ABORT # selbstverschuldeter Fehler IF Transportadresse wird als die eigene erkannt THEN IF CNAME ist die eigene THEN ABORT BYE-Paket senden Neue SSRC erzeugen Tabelle neu anlegen CONTINUE Das Real-Time Transport Protokoll Daniel Herche 71 4.3 Sicherheit und Verschlüsselung Eine sichere Übertragung von multimedialen Daten gewinnt mehr und mehr an Bedeutung. Einige oder alle Sitzungsteilnehmer können sich vor Beginn der Sitzung auf ein anwendungsspezifisches Verschlüsselungsverfahren einigen oder einen speziellen Payloadtyp vereinbaren, der Verschlüsselung voraussetzt, so daß Daten nur für denjenigen eine Bedeutung haben, für den sie gedacht waren. Mehrere RTCP Pakete können zu einem sogenannten Compound RTCP packet zusammengefaßt werden, wovon dann sensible Teile, zum Beispiel die Quellenbeschreibungen, verschlüsselt werden. Die Übertragungsstatistiken wären weiterhin Dritten zugänglich. 5 Ausblick und Abschluß RTP wurde 1995 als Standart anerkannt und wurde seitdem weiterentwickelt und in Anwendungen eingesetzt (z.B. Netscape, Quicktime). Es bietet den aufsetzenden Applikationen genug Freiheiten, um spezifische Erweiterungen, basierend auf bestehenden Strukturen, zu implementieren. Gelieferte Statistiken bezüglich der Qualität der Übertragung bieten ausreichende Informationen, um eine störungsfreie Übertragung multimedialer Datenströme zu gewährleisten, sowie aufgetretene Fehler und Störungen zu erkennen und zu beseitigen. Das Real-Time Transport Protokoll 72 Daniel Herche 6 Literaturverzeichnis [Schu 96] Schulzrinne, H. : RTP: A Transport Protocol for Real-Time Applications RFC 1889, ftp://ftp.isi.edu/in-notes/rfc1889.txt, 1996 [Herm 96] Hermann, Marc : Vortragsreihe Moderne Kommunikationssysteme, Universität Ulm, Real-Time Transfer Protocol und RTP Control Protocol, http://www.uni-ulm.de/~s_mherma/text/rtp.html, 1996 [Deff 95] Deffner, Bernd : The Real-Time Transport Protocol RTP, http://www.fokus.gmd.de/step/acontrol/node2.html, GMD Fokus 1995 [Joan 98] Joanid, Andre : RTP: Real Time Trasport Protokoll, http://www.hawo.stw.uni-erlangen.de/~asioanid/seminar/node4.html, 1998 Björn Somberg und Dirk Vleugels 73 Streamingmöglichkeiten von QuickTime 4 Björn Somberg und Dirk Vleugels FB Informatik, Universität Dortmund Bjoern@Somberg-online.de, Dirk@icmp.ping.de Zusammenfassung QuickTime ist ein Lösung von Apple Computer zur Speicherung und Darstellung von di- gitalen Multimedia Daten. Mit der neusten Programmversion 4 ist QuickTime auch in der Lage Videodaten zu speichern, die später über das Internet mittels der Streaming- Technologie verbreitet werden können. 1 QuickTime Einfach ausgedrückt ist QuickTime eine Software, die es erlaubt digitales Video, genauso wie andere Arten von Multimedia Daten mit dem Computer abzuspielen. Apple Computer selbst sieht QuickTime als „standard, cross-platform, multimedia framework for authoring, publishing, and streaming“ der meist verbreitetsten Formate von Video und Audio, also als eine standardisierte Plattform übergrei- fende Umgebung, mit der die meisten Multimedia Daten erzeugt, veröffentlicht und über ein Netzwerk per „streaming“ angeboten werden können. Hiermit möchte Apple Computer eine breite Benutzer- schicht erreichen, vom einfachen Benutzer, der QuickTime nur zum Empfangen von Multimedia- Inhalten nutzt, bis zum Programmierer, der direkt auf die API zugreift. 1.1 QuickTime 4 QuickTime 4 bietet neben den schon in QuickTime 3 vorhandenen Features die Möglichkeit, Video und Audiodaten live bzw. für Streaming aufbereitet über das Internet anzubieten. 1.2 Installation Während die Vorgängerversion noch als monolithischer Softwareblock erhältlich war, läßt sich QuickTime 4 völlig modular installieren. Voraussetzung dafür ist allerdings ein Internet Anschluß. Ein über http://www.apple.com/quicktime zu beziehender „Aktualisierer“ (Größe nur etwas 450 KBytes) assistiert dem Benutzer bei der Instal- lation und sorgt dafür, daß nur ausgewählte Komponenten heruntergeladen werden. Für diesen Vor- gang ist noch nicht einmal ein Internet-Browser nötig. Allerdings sollte man darauf achten, daß die Dateien „QuickTime Updater“ und „QuickTime Install Cache“ im QuickTime-Ordner belassen wer- den, da diese über 6 MB großen Dateien sonst beim nächsten Update erneut heruntergeladen werden müssen. Durch die Modularisierung des Softwarepakets können QuickTime Nutzer stets mit der aktuellen Ver- sion versorgt werden und auch Verbesserungen der „Open Source Community“ können schnell und kostengünstig verbreitet werden. Streamingmöglichkeiten von QuickTime 4 74 Björn Somberg und Dirk Vleugels Ein für den Hersteller angenehmer Nebeneffekt ist, daß so regelmäßig große Besucherströme auf die eigenen Webseiten gezogen werden, auf denen natürlich nicht nur Informationen zu QuickTime 4 publiziert werden. Beispielsweise hat der Starwars-Trailer im QuickTime 4 (Beta) Format Plattform übergreifend 8 Mil- lionen Downloads des „Phantom Meance“-Videos und für mehr als 5 Millionen Downloads der Beta- version von QuickTime 4 gesorgt. Abbildung 1-1: Der QuickTime Client 1.3 Protokolle Statt eigene Streaming-Protokolle zu propagieren setzt QuickTime 4 auf die nicht proprietären Proto- kolle RTP (Real Time Transport Protocol) und RTSP (Real Time Streaming Protocol) der IETF, die sich unter Unix als Standard etabliert haben. Anders als IBM, Netscape, SGI, Sun, Vxtreme oder Ap- ple unterstützt Microsoft bisher RTP/RTSP leider nicht, sondern entwickelt eigene Protokolle. 1.4 Multilinguale Versionen QuickTime 4 hat eine gewisse Intelligenz und nimmt somit dem Benutzer Entscheidungen von vorn- herein ab. Er wird z.B. das Erstellen von multilingualen Sprachversionen eines Audio- oder Videodo- kuments unterstützt. Der Client fragt die notwendigen Informationen in den Einstellungen des Be- triebssystems ab, ohne beim Benutzer rückzufragen. 1.5 Alternate Data Rates Vollautomatisch erfolgt auch die Wahl der optimalen Datenqualität für die vorhandene Verbindungs- geschwindigkeit (Alternate Data Rates). Basierend auf der vom Nutzer im QuickTime Setup einge- stellten Verbindungsgeschwindigkeit zum Internet wählt der QuickTime Client das angemessen co- dierte Movie aus. Der Autor eines Movies hat die Möglichkeit mit verschiedenen Übertragungsraten codierte Movies zu erzeugen, welche über eine gemeinsame Referenz angesprochen werden können. Über diese Referenz wird dann der Client das für den Benutzer geeignetste Movie auswählen. Auf Streamingmöglichkeiten von QuickTime 4 Björn Somberg und Dirk Vleugels 75 diese Weise erhält der Benutzer immer die bestmögliche Qualität, ohne großen Aufwand für die Ver- waltung von verschiedenen Links für verschiedene Qualitäten treiben zu müssen. Da dieses Feature mindestens die Version 3 von QuickTime erfordert, ist für ältere Clients ein „fallback“-Mechanismus vorgesehen, der diesen einen Link auf einen für sie verständliches Format liefert. 1.6 QuickTime 4 Pro Die erweiterte QuickTime 4 Pro Version bietet darüber hinaus die Funktionen eines Editors, so daß Filme, Bilder und Audio Dateien kreiert, editiert und abgespeichert werden können. Wohingegen QuickTime 4 frei verfügbar ist und nur zur Wiedergabe genutzt werden kann, kostet die QuickTime 4 Pro Lizenz $29.99. Nach einer Registrierung können die zusätzlichen Funktionen per Paßwort in der einfachen QuickTime Version freigegeben werden. Darüber hinaus ist auch noch eine kosteneffektive- re Mutliuser-Version erhältlich. 1.7 QuickTime 4.1 Anfang nächsten Jahres, vielleicht sogar schon zur MacWorld Expo, die Anfang Januar 2000 in San Francisco stattfinden wird, will Apple QuickTime 4.1 fertig haben. QuickTime 4.1 soll eine nahtlose Integration von Anzeigen erlauben, was von Website-Betreibern immer wieder gefordert wurde. Das Zusammenspiel mit Firewalls, was unter QuickTime 4 einiger Anpassungen bedurfte, soll ebenfalls verbessert werden. Vollkommen neu ist die Unterstützung von SMIL (Synchronized Multimedia Inte- gration Language), womit sich Multimedia-Elemente wie Filme, Töne oder Bilder zeitlich kontrolliert auf einer Webseite darstellen lassen. Der QuickTime Streaming Server 2, der zusammen mit der neuen QuickTime Version veröffentlicht wird, soll nun auch einen Paßwort gesicherten Zugang zu Multime- dia-Inhalten bieten. 2 Streaming Unter „Streaming“ versteht man das kontinuierliche Senden von Daten von einem Server zu einem Client über ein Netzwerk wie z.B. dem Internet/Intranet. Der Server teilt die zu streamenden Daten in Pakete auf, welche über das Netzwerk versendet werden können. Der Empfänger fügt die Pakete wieder zusammen und die Daten können sofort wiedergeg- ben werden bzw. nach kurzer Zeit, nämlich sobald genügend Pakete empfangen wurden. Eine Serie von in Beziehung stehenden Paketen nennt man einen Stream. Streaming unterscheidet sich in dem Punkt von einer simplen Daten Übertragung, als daß die Daten sofort wiedergegeben werden können, anstatt der Wiedergabe nach einem kompletten Downl ad. Somit wird von einem Streaming Client niemals ein „streaming“ Video heruntergeladen, sondern die einzelnen Pakete werden vielmehr wiedergegeben, sobald sie empfangen werden. QuickTime 4 bietet die Möglichkeit eine Vielzahl von Multimedia Daten in ein streamingfähiges Format zu überführen. Um nicht ständig alle möglichen Format aufzählen zu müssen, werde ich mich im folgenden auf die Übertragung von „QuickTime Movies“ beschränken. QuickTime Movies können über mehrere Protokolle gestreamed werden: · HTTP 1.1 (Hyper Text Transport Protocol) · FTP (File Tranfer Protocol) · RTP (Real Time Tranfer Protocol) HTTP und FTP sind eigentlich dafür gedacht, Hypertext bzw. Dateien allgemein zu übertragen. Der QuickTime Client ist imstande Dateien, die auf diese Art übertragen werden, wiederzugeben bevor sie vollständig empfangen wurden. Bei dem HTTP Protokoll ist hierfür allerdings die Version 1.1 nötig. Streamingmöglichkeiten von QuickTime 4 76 Björn Somberg und Dirk Vleugels Für Streaming in Echtzeit wird RTP benutzt. Die Pakete eines Movies werden in Echtzeit gesendet, so daß ein ein-minütiger Film auch in einer Minute über das Netzwerk übertragen wird bzw. wiedergege- ben wird. Die einzelnen Pakete haben einen Zeitstempel, so daß sie auch zeitlich synchron wiederge- geben werden können. Da die Pakete in Echtzeit übertragen werden, ist es auch möglich „Live Inhalte“ über das Netz zu übertragen. „Real time streams“ können im Unicast-, Multicast-, oder „reflected“-Multicast Verfahren übertragen werden. 2.1 Unicast Streaming Unicast ist ein „Eins-zu-Eins“-Verfahren vergleichbar mit einer Telefonverbindung. Jeder Me ia- Stream wird durch eine einzelne Verbindung zwischen Server und Client initialisiert und kontrolliert. Der Client schickt dem Server einen „Request“ bzgl. eines Movies über RTSP (Real Time Streaming Protocol). Der Server antwortet dann dem Client über RTSP mit Informationen, die das Movie als „streaming session“ weiter charakterisieren. RTSP benutzt hierzu TCP/IP. Abbildung 2-1: Unicast Streaming über RTP/RTSP Eine „streaming session“ kann einen oder mehrere Streams umfassen, z.B. einen „Video Stream“ und einen „Audio Stream“. Der Server teilt dem Client mit, wieviel Streams zu erwarten sind und übermittelt detaillierte Informa- tionen zu jedem Stream. Hierbei werden Informationen über den Media Typ und den verwendeten Codec (Verfahren zum Codieren und Encodieren) mitgeteilt. Die Streams werden über RTP gesendet, welches UDP/IP benutzt. Wenn ein QuickTime Movie über RTP gestreamed wird, wird jeder Track des Movies in einem eigenen Stream gesendet. Ein Stream kann „Live Inhalte“, Börsen Ticker, Radio Sendungen oder aber auch gespeicherte Daten, wie z.B. den Video Track eines QuickTime Movies, beinhalten. Wenn der Client einen Unicast Stream von gespeicherten Daten empfängt, gibt es die Möglichkeit über den „client movie controller“ zu beliebigen Stellen der Daten zu springen. Dazu ist es nicht not- wendig, die gesamten Daten herunterzuladen. Der Client fordert den Server nur auf, mit dem Strea- ming an einer neuer Stelle zu beginnen. 2.2 Multicast Streaming Ein Multicast-Stream wird zu einer Gruppen Adresse gesendet, unabhängig davon, ob sich jemand an den Multicast anhängt oder nicht. Ein Multicast-Stream ist somit vergleichbar mit einer Radio Aus- strahlung. Streamingmöglichkeiten von QuickTime 4 Björn Somberg und Dirk Vleugels 77 Es wird eine Kopie von jedem Stream in jeden Zweig des Netzwerks geschickt, was den Netzwerk Traffic reduziert, wenn eine große Anzahl von Clients, welche die gleichen Daten anfordern, vorha- den ist. Abbildung 2-2: Multicast Streaming über RTP/RTSP Ein Client empfängt einen Stream, indem er sich an den Multicast anhängt. Wie dies zu bewerkstelli- gen ist erfährt der Client indem er die SDP (Session Description Protocol) Datei ließt. Die SDP Datei enthält alle Informationen, die der Client benötigt, um sich an den Multicast anzuhängen. Auf diese Weise werden dem Client „group address“, „port number“, sowie „stream description“ Informationen mitgeteilt. SDP Dateien werden gemeinhin auf dem Webserver abgelegt, um das Hinzukommen von weiteren Clients zu ermöglichen. Bei dem Multicast-Verfahren hat der Benutzer nur die Möglichkeit, die Übertragung des/der Streams zu stoppen bzw. wiederaufzunehmen. Er kann nicht zu einer beliebigen Stelle des Movies springen oder die Übertragung von Vorne beginnen. 2.3 Reflected Multicast Da nicht alle Router Multicast unterstützen, gibt es die Möglichkeit für Clients hinter „nicht-Multicast- fähigen“ Routern, Multicast über einen Reflektor zu empfangen. Ein Reflektor ist ein RTSP Server, der sich an einen Multicast anhängt und diesen in eine Reihe von Unicasts konvertiert. Diese leitet er dann an Clients weiter, die diesen Stream angefordert haben. Der Reflektor sendet daher den Inhalt „live“ und in Echtzeit, den der ursprüngliche Server über Multicast verbreitet. Mit den oben benutzen Analogien würde dies heißen, daß eine Radio Ausstrahlung emp- fangen und an jeden Zuhörer per Telefon weitergeleit wird. Streamingmöglichkeiten von QuickTime 4 78 Björn Somberg und Dirk Vleugels Abbildung 2-3: Multicast Streaming über einen Reflektor 2.4 Streaming über HTTP HTTP benutzt das TCP/IP Protokoll und stellt damit sicher, daß alle Pakete des zu übertragenden Mo- vies empfangen werden. Notfalls werden verlorengegangene Pakete nochmals gesendet. HTTP versucht, nicht streaming-fähiges Material in Echtzeit zur Verfügung zu stellen. Um in Echtzeit streamen zu können, muß die Bandbreite des Netzwerkes größer sein als die Datenrate des Movies. Falls die Bandbreite nicht groß genug ist, um in Echtzeit zu streamen, speichert der Client Daten lokal und gibt das Movie wieder, wenn genügend Daten empfang wurden. Ein großer Vorteil der Übertragung über HTTP ist, daß die meisten Firewalls und Proxys HTTP ohne es zu filtern durchlassen. Jedes QuickTime Movie kann über HTTP gestreamed werden. QuickTime 4 unterstützt darüber hin- aus Streaming über RTP. 2.5 Streaming über RTP/RTSP Das Streaming über RTP bietet einige Vorteile gegenüber dem Streaming mittels HTTP/FTP. RTP kann für Live-Übertragungen und Multicast benutzt werden. Das Echtzeit-Streaming erlaubt dem Benutzer, lange Filme kontinuierlich zu gucken oder Übertragun- gen zu verfolgen, ohne daß mehr als ein paar Sekunden lokal gespeichert werden müss n. Wenn für die RTP Übertragungen RTSP zur Kontrolle genutzt wird, kann der Benutzer zu jedem be- liebigen Punkt in einem Film springen, ohne die dazwischen liegenden Daten herunterladen zu müs- sen. Streamingmöglichkeiten von QuickTime 4 Björn Somberg und Dirk Vleugels 79 Ein einzelner Track kann über RTP gestreamed werden, während über HTTP nur das Streaming von ganzen Filme möglich ist. RTP Streams können in einem Movie zusammengefaßt werden, indem „Streaming tracks“ genutzt werden. Ein „Streaming track“ ist ein track in einem QuickTime Movie, der die URL von streamingfähigem Inhalt enthält. Ein QuickTime Movie, welches „streaming tracks“ enthält kann ebenfalls „non-streaming tracks“ enthalten, dessen Inhalt lokal auf dem Client Computer vorliegt. Somit ist ein Zusammenspiel zwi- schen Live-Übertragungen und lokal vorhanden Daten möglich. Z. B. kann in einer Live-Übertragung auf Daten verwiesen werden, die auf einer CD-ROM lokal vorliegen. RTP benutzt das UDP/IP Protokoll, welches nicht versucht verlorene Pakete nochmals zu übertragen. Dies wäre auch bei einem Multicast bzw. bei einer Live-Übertragung nicht wünschenswert. 2.6 QuickTime Video Codecs QuickTime bringt schon von Haus aus einige nützliche Video Codecs mit sich: · Sorenson Video bietet schon bei einer niedrigen Datenrate eine sehr gute Bildqualität. Allerdings ist die Kompri- mierung sehr langsam und die Anforderungen an die Hardware sind höher als z.B. bei Cinepak. Dafür sind die Ergebnisse bei „halber Cinepak Datenrate“ immer noch erstaunlich gut. Der Codec eignet sich vor allem für Veröffentlichungen im WWW und auf CD-ROM. · Cinepak gibt sich mit weit weniger Hardware zufrieden. Schon ein `486 reicht aus, um mit Cinepak ko- dierte Videos wiederzugeben. Allerdings sind die Ergebnisse bei einer Datenrate von unter 30 KB/s nicht mehr so schön und die Komprimierung ist ebenfalls sehr langsam. Cinepak eignet sich vor allem für die Wiedergabe von CD-ROM, wobei die Bildqualität eher mittelmäßig ist. · Indeo 3.2 ist etwas besser als Cinepak, wenn „talking heads“ komprimiert werden. Die Komprimierung ist auch etwas schneller. Indeo 3.2 eignet sich aber auch nur für CD-ROM Publikationen. · Indeo Video Interactive 4 bietet eine exzellente Bildqualität ähnlich wie MPEG. Allerdings wird hierfür auch mindestens ein schneller Pentium gebraucht. Hauptanwendungsgebiet sind wieder CD-ROM Publikationen. · Video eignet sich gut zum Testen, aber nicht für das Endprodukt. · Photo-JPEG hat eine ziemlich gute Bildqualität und eignet sich gut für Slideshows oder Movies mit einer ge- ringen Frame-Rate. · Component Video eignet sich zum „capturen“ von Video und als „Zwischenformat“, aber nicht für das Endprodukt. · MJPEG biete bei 100% Qualität einen nur minimalen Bildverlust, allerdings werden hierfür auch viel CPU Power benötigt. Bei großen Bildern oder hohen Frame-Rate sind keine weichen Übergänge ohne Zusatzhardware möglich. · MPEG-1 bietet eine sehr gute Bildqualität. Allerdings wird hierfür entweder spezielle Hardware oder ein schneller Computer gebraucht. MPEG-1 ist nur in der MAC Version vorhanden. Streamingmöglichkeiten von QuickTime 4 80 Björn Somberg und Dirk Vleugels 3 Design und Implementierung Mit QuickTime 4 sollten eine Reihe von streamingtechnischen Besonderheiten implementiert werden. Unter anderem der Verweis auf externe (nicht im Movie mitgespeicherte) Tracks sollte möglich ge- macht werden. Hiermit ist es möglich einen Film aus den unterschiedlichen Ressourcen für den Nutzer nicht sichtbar zusammen zu mischen. Ein Benutzer kann sich einen Film per HTTP Protokoll herun- terladen, dieser Film verweist u.U. auf aktuellere RTP Streams im Internet sowie auf Standard Musik- untermalung und Video Prologe auf der lokalen Festplatte. Dieses mischen von beliebigen Tracks ermöglicht eine Ressourcen schonende Präsentation von Video Daten auch über Netzanbindungen mit geringer Bandbreite. Auf Server Seite wurde besonderer Wert auf Portabilität und Effizienz gelegt. Der Darwin-Streaming-Server wurde komplett in C++ implementiert. Durch die Nutzung von Objekt- orientierten Konzepten wie Vererbung und Polymorphie konnten die wichtigsten Komponenten des Servers sehr gut gekapselt werden, was ihre Wiederverwendbarkeit in Bibliotheken stark vereinfacht. Der Server besteht aus drei Hauptkomponenten: · RTP Server · RTSP Server · „Common Utilities“. Des weiteren wird die QT4 Fileformat Bibliothek genutzt, die allerdings vom Quelltext des Servers getrennt ist. 3.1 Der RTP/RTSP Server Der RTP sowie der RTSP Server besitzen eine nahezu identische Struktur. Beide sind modularisiert und „thread safe“. Jede Klienten Instanz benötigt eine zugehörige Server Instanz, diese läuft als eigen- ständiger Thread ab. Der RTSP Server bietet folgende Funktionalität: · RTSPWebStatsModule: Dies ermöglicht das Lesen von Serverstatistiken über das WWW. · RTSPWebDebugModule: Debugging Fähigkeit via WWW · RTSPLoggingModule: Schreibt Fehler und Status Meldungen in zugehörige Logfiles. · RTSPSvrControlModule: (nur MacOS-X) Erlaubt die Administration mit Hilfe der Streaming Server Admin Konsole. · RTPInterfaceModule: Steuert die benötigten RTP Instanzen die zu einer RTSP Session gehören. Der RTSP Server ist in folgende Funktionseinheiten aufgeteilt: · RTPAccessLogModule: Schreibt Zugriffsinformationen in ein Logfile. · RTPFileModule: Kapselt den Zugriff auf QuickTime 4 Film Dateien mit Hilfe der QTFile Biblio- thek. · RTPReflectorModule: Zum „reflektieren“ von „live Broadcasts“ über das Mbone. · RTPFlowControlModule: Analysiert RTCP Informationen und veranlaßt die Änderung von Da- tenraten oder das Schließen von RTP Verbindungen. Weder der RTP noch der RTSP Server greifen direkt auf Betriebssystemmittel zurück. Alle Zugriffe auf das Filesystem, Thread oder Socket Implementierung greifen auf diese abstrakten Schnittstellen zu: 3.2 Die „Common Utilities“ Die „Common Utilities“ Bibliothek ist ein Werkzeugkasten, welcher folgende Betriebssystem Res- sourcen zur Verfügung stellen soll: Streamingmöglichkeiten von QuickTime 4 Björn Somberg und Dirk Vleugels 81 · Thread Management: Die pthread (Posix Threads) Implementierung variiert zwischen den einzel- nen Betriebssystemen. Die von den QuickTime 4 Servern benutzte API repräsentiert ein auf allen Plattformen unterstütztes „sub et“. · Daten Strukturen: Zur Verwaltung von RTP/RTSP Klienten werden einige Datenstrukturen benö- tigt. Diese werden reintrant („thread sicher“) von dieser Bibliothek bereitges ellt. · Sockets: Unter MacOS-X existiert eine spezielle Schnittstelle über der BSD Sockets Ebene. Wer- den Daten auf einem Socket gelesen (alle benutzten Sockets innerhalb des QT4 Servers sind asyn- chron (non-blocking), wird ein Event Objekt an das zugehörige Task Objekt geschickt (welches vorher registriert werden muß). Nachdem das Objekt abgearbeitet wurde, wird dem Socket signa- lisiert, daß neue Events entgegen genommen werden können. Diese Schnittstelle wurde mit Hilfe des „select“ System Aufrufs auf andere Betriebsysteme portiert. · Parser Utilities: Eine eigene Stringbibliothek Bibliothek. Analysieren und Formatieren von Zei- chenketten werden unterstützt. Auch die Übersetzung in andere Sprachen kann hiermit gekapselt werden. QTFile sowie die Common Utilities ermöglichen eine vereinfachte Portierbarkeit. Jedes POSIX kon- forme und Unix basierte Betriebssystem sollte ohne größeren Aufwand unterstützt werden können. 3.3 Fileformat Ein Video Film im herkömmlichen Sinne ist ein kontinuierlicher Strom von Daten. Ein QuickTime 4 Film kann ebenso einfach aufgebaut sein, muß es aber nicht: Der Film ist nicht das Medium, sondern eine Organisationsstruktur für beliebig viele Datenströme, genannt „Tracks“. Jeder Track referenziert einen Datenstrom, dies können Video oder Musikdaten, aber auch Untertitel, Werbebanner usw. sein. Wichtig ist die Unterscheidung zwischen tatsächlichen Media-Daten und den Film Metadaten. Beide Informationen können in derselben Datei enthalten sein, fall es nötig ist kön- nen die Media-Daten auch über mehrere Dateien verteilt werden (z.B. um Dateisystem Beschränkun- gen zu umgehen). Alle Informationen die ein Klient über den Film benötigt liefern die Meta Daten: Anzahl der Tracks, Codec Formate, Länge oder auch benötigte Bandbreite. Das QuickTime Fileformat dient dazu, Dateien, Media- und Metadaten auf einem Datenträger (meist einer Festplatte) zu speichern. Die zugrundeliegende Datenstruktur ist ein Baum mit beliebigem Aus- grad. Die Knoten werden durch die „Atom“ Datenstruktur der QuickTime API repräsentiert. Bis zur QuickTime Version 3 hießen Atome einfach „Atom“, ab Version 4 werden diese einfachen Daten- strukturen durch QTAtom Strukturen ersetzt. Wir gehen im folgenden nur noch auf die neue Spezifi- kation ein, da Apple verlangt, daß neue Applikationen nur „QTAtom“ nutzen. Im weiteren Dokument werden wir allerdings weiterhin nur von „Atomen“ sprechen. Die gesamte hierfür notwendige Funktionalität ist in einer Bibliothek zusammengefaßt: QTFile (libQTRTPFile.a). Sie enthält den Code zum lesen, parsen und schreiben von QuickTime Film Datei- en. Atome existieren in zwei Varianten: · Container Atome: Diese enthalten weitere Atome beliebiger Art und Menge. · Blatt Atome: In diesen werden die tatsächlichen Daten verwaltet. Alle Informationen, die man zur Speicherung eines QuickTime Films benötigt werden mit Hilfe dieser Datenstrukturen modelliert. Alle Daten werden im „Big Endian“ Byteformat gespeichert. Bei Contai- ner Atomen wird die Größe der Kind-Atome zu der des Vater-Atoms hinzugerechn t. Da jede Information in einem Atom gespeichert ist, erlaubt dies allen Applikation jede Film Datei zu lesen und Atomtypen, die sie nicht versteht können, zu ignorieren. Im folgenden Kapitel werden die wichtigsten Atom Typen erklärt. Streamingmöglichkeiten von QuickTime 4 82 Björn Somberg und Dirk Vleugels 3.3.1 Das Movie Atom Das Movie Atom ist der äußerste Atom Typ. Es fungiert als Container für alle in einem Film benötig- ten Informationen. Diese Informationen werden wiederum mit anderen Atomen modelliert. Die Struktur eines QT4 Films mit Video und Musik Track sowie den zugehörigen „Hint Tracks“ sieht auf der Atom Ebene so aus: Abbildung 3-1: Das Movie Atom Auf der obersten Ebene kann man noch nicht entscheiden, welche Medien Typen in den Tracks ver- waltet werden. Dazu müßte man die Track Container Atom öffnen und sich ihre Header Informationen sowie die „Media Data“ Atome in den einzelnen Tracks anschauen. Das „User Dat “ Atom bietet die Möglichkeit Benutzer Informationen zu speichern, wie z.B. Copyright Informationen, Regisseur, Pro- duzent oder spezielle Informationen, wie der Film abgespielt werden soll, wie die gewünschte Bil- größe auszusehen hat oder ob einzelne Bildframes übersprungen werden dürfen. In den folgenden Kapiteln werden einige Atom Typen und ihr Nutzen näher beschrieben. 3.3.2 Das Movie Header Atom In diesem Atom (welches in einem Movie Atom existieren muß) wird die Charakteristik des gesamten Films festgelegt. Es existieren u.a. folgende Felder: · Creation time [32 bit int]: Sekunden seit Mitternacht am 01.01.1904, legt den Zeitpunkt der Atom Generierung fest · Modification time [32 bit int]: Zeitpunkt der letzten Modifikation des Atoms. · Time scale [32 bit int]: Anzahl der Zeit Einheiten, die in einer Sekunde vergehen · Duration [32 bit int]: Gesamtdauer des Film in Zeit Einheiten. Hier wird automatisch die Länge des längsten Tracks eingefügt. · Matrix [36 Byte]: Die Abbildungsmatrix, die benötigt wird, um einen Bildpunkt auf dem Klienten Frame anzuzeigen. Hiermit werden bereits Translation, Stauchung und Drehungen unterstützt. · CurrentTime [32 bitint]: Der Zeit Wert des aktuellen dargestellten bzw. gesendeten Frames. QuickTime Filme besitzen also ihr eigenes Zeit und Bild Koordinatensystem. 3.3.3 Das „Track“ Atom Track Atome repräsentieren die einzelnen „Spuren“ eines Films. Ein Film kann aus einem oder mehre- ren Spuren bestehen. Alle Spuren sind voneinander unabhängig, sie können ihr eigenes Zeitliches und Räumliches Koordinatensystem verwalten. Zu jedem Track gehört exakt ein Medien Atom und ein „Track Header Atom“. Alle anderen möglichen Kind Atome sind optional. Streamingmöglichkeiten von QuickTime 4 Björn Somberg und Dirk Vleugels 83 Abbildung 3-2: Das Track Atom Das mit „Edits“ bezeichnete Atom enthält „Schnittlist“ Atome. Ein Track kann so mit externen Pro- grammen) editiert werden, daß bestimmte Teile eines Tracks übersprungen, wiederholt oder gar nicht abgespielt wird. Fehlt das Edits Atom wird angenommen das der gesamte Track gespielt werden soll. Track Header Atom Abbildung 3-3: Das Track Header Atom Die interessantesten Felder innerhalb eines Track Header Atoms sind: · Header Flags: Hier wird festgelegt, ob ein Track aktiv oder inaktiv ist, ob er innerhalb des Film überhaupt verwendet wird, oder ob er Teil des Preview bzw. des Po ters ist. · Layer: Die „stacking“ Order der Tracks gibt an welcher Track über einem anderen gespielt wer- den soll. So kann z.B. ein Text Track über einen Video Track gelegt werden. Der höher liegende Track sollte natürlich einen transparenten Hintergrund besitzen. · Alternate Group: Hier wird eine Menge von Tracks referenziert, die die gleichen Daten in unter- schiedlicher Auflösung bieten. Dies wird für Alternate Data Rate Filme benötigt. Streamingmöglichkeiten von QuickTime 4 84 Björn Somberg und Dirk Vleugels · Matrix: Jeder Track kann die im Movie Header Atom spezifizierte Translationsmatrize ergänzen. Die beiden Berechnungen werden hintereinander ausgeführt. Ansonsten sind die Felder zum Movie Header Atom identisch. 3.3.4 Das Media Atom Media Atome definieren die Film Daten des Tracks. Sie kapseln die tatsächlichen Media Daten in weiter spezialisierten Atome. In ihnen werden auch die Referenzen auf die Mediah ndler verwaltet, diese wissen, wie sie mit den gespeicherten Mediadaten umzugehen haben. · DataReference Atom: enthalten Daten in Tabellen Form, die auf die Sample Atome verweisen. · Sample Atom: die tatsächlichen Codec abhängigen Medien 3.3.5 Free Space Atome Atome des Typs „free“ und „skip“ kennzeichnen nicht genutzten Platz in einem QuickTime File. Wenn ein Film oder ein Audio Track editiert wird, können diese Atome genutzt werden um zusätzli- che Informationen aufzunehmen. Werden Teile eines Tracks gelöscht, wird der frei gewordene Platz nicht sofort an das Filesystem zurückgegeben, sondern die Sample Atome als frei deklariert. Diese Atome bestehen ausschließlich aus der Typinformation, der Größenangabe und einer bestimmten An- zahl von leeren Bytes. 3.4 Hint Tracks Hint Tracks sind beim Konvertieren erzeugte "Schatten" Tracks. Zu jedem streamfähigen Track exi- stiert ein Hint Track. Diese Hint Tracks sind im Vergleich zu den QuickTime Medien Daten relativ klein. Ihre Existenz verhindert nicht das Betrachten des Films via HTTP/FTP oder von einem lokalen Datenträger, sie werden nur beim Streamen der Daten genutzt. Auch sie werden mit Hilfe des QuickTime Fileformats gespeichert. Sie liefern dem Streaming Server beim Export berechnete Infor- mationen zur Umwandlung der Media Daten in RTP Pakete. Umwandlung von Video oder Audio Sample Atomen in RTP fähige Pakete erfordert CPU Zeit. Die "Hint Tracks" nehmen der Serversoft- ware die meiste Arbeit ab, da die RTP Paketköpfe dann schon existieren. Erst dadurch sind QuickTi- me Server in der Lage eine große Anzahl von Clienten mit Daten zu versorgen. Ein weiterer wichtiger Faktor ist, daß die „Hint Tracks“ dafür Sorgen, daß der Server nichts über das spezielle Encoding, das benutzte Kompressionverfahren oder auch den Medientyp der Daten, wissen muß. Die während der Speicherung des Filmes generierten Hint Tracks enthalten alle Informationen, die nötig sind, effizient ein RTP Paket zu generieren: · Position und Länge der tatsächlichen Streaming Daten · Sowie Paket Header Informationen zum verwandten Codec Ein QuickTime RTP Server muß also nur in der Lage sein, „Hint Tracks“ in einem QuickTime 4 Film zu identifizieren und zu lesen. 3.4.1 Beispiel API Aufrufe Folgender C++ Quelltextauszug nutzt die QT4 File Bibliothek, um Informationen über die „Hint Tracks“ eines QuickTime Films auszugeben. C++ Preprozessor Direktiven, Argument-Analyse wur- den weggelassen. Das Programm ist Teil des Streaming Server Quelltextes und im QTFile Unterver- zeichnis mit Namen „QTFileInfo“ zu finden. int main(int argc, char * argv[]) { // Temporary vars char ch; // General vars Streamingmöglichkeiten von QuickTime 4 Björn Somberg und Dirk Vleugels 85 QTTrack *Track; // Open the file file.Open(* argv); Track = NULL; // Iterate over Tracks while( file.NextTrack(&Track, Track) ) { QTHintTrack *HintTrack; time_t unixCreationTime = Track>GetCreationTime() + QT_TIME_TO_LOCAL_TIME; time_t unixModificationTime = Track->GetModificationTime()+ QT_TIME_TO_LOCAL_TIME; // Initialize the track and dump it. if( Track->Initialize() != QTTrack::errNoError ) { printf("!!! Failed to initialize track !!!\n"); continue; } if( DeepDebug) Track->DumpTrack(); // Dump some info. printf("-- Track #%02ld ----------------------\n", Track->GetTrackID()); printf(" Name : % s\n", Track->GetTrackName()); printf(" Created on : %s", asctime( gmtime(&unixCreationTime))); printf(" Modified on : %s", asctime( gmtime(&unixModificationTime))); // // Dump hint information is possible. if( file.IsHintTrack(Track) ) { HintTrack = ( QTHintTrack *)Track; printf(" Total RTP bytes : % ld\n", HintTrack->GetTotalRTPBytes()); printf(" Total RTP packets : % ld\n", HintTrack->GetTotalRTPPackets()); printf(" Average bitrate : %.2f Kbps\n", (( HintTrack->GetTotalRTPBytes() << 3) / file.GetDurationInSeconds()) / 1024); printf(" Average packet size: % ld\n", HintTrack->GetTotalRTPBytes() / HintTrack->GetTotalRTPPackets()); UInt32 UDPIPHeaderSize = (56 * HintTrack->GetTotalRTPPackets()); UInt32 RTPUDPIPHeaderSize = ((56+12) * HintTrack->GetTotalRTPPackets()); printf(" Percentage of stream wasted on UDP/IP headers : %.2f\n", ( float) UDPIPHeaderSize / ( float)( HintTrack->GetTotalRTPBytes() + UDPIPHeaderSize) * 100); printf(" Percentage of stream wasted on RTP/UDP/IP headers: %.2f\n", ( float) RTPUDPIPHeaderSize / ( float)( HintTrack->GetTotalRTPBytes() + RTPUDPIPHeaderSize) * 100); } } return 0; } Diese Programm wurde auf einem Linux Server ausgeführt. Als Argument erhielt es den Dateinamen eines Beispielfilms: [dirk@icmp:StreamingServer-3/QTFile]{597} ./ QTFileInfo ugachaka.mov -- Track #01 --------------------------- Name : Created on : Tue Jan 4 14:31:36 2000 Streamingmöglichkeiten von QuickTime 4 86 Björn Somberg und Dirk Vleugels Modified on : Tue Jan 4 14:31:41 2000 -- Track #02 --------------------------- Name : Created on : Tue Jan 4 14:31:36 2000 Modified on : Tue Jan 4 14:31:41 2000 -- Track #03 --------------------------- Name : Hinted Video Track Created on : Tue Jan 4 14:31:37 2000 Modified on : Tue Jan 4 14:31:41 2000 Total RTP bytes : 519948 Total RTP packets : 487 Average bitrate : 167.39 Kbps Average packet size: 1067 Percentage of stream wasted on UDP/IP headers : 4.98 Percentage of stream wasted on RTP/UDP/IP headers: 5.99 -- Track #04 --------------------------- Name : Hinted Sound Track Created on : Tue Jan 4 14:31:38 2000 Modified on : Tue Jan 4 14:31:41 2000 Total RTP bytes : 1150920 Total RTP packets : 798 Average bitrate : 370.53 Kbps Average packet size: 1442 Percentage of stream wasted on UDP/IP headers : 3.74 Percentage of stream wasted on RTP/UDP/IP headers: 4.50 Es werden einige Daten zur Größe der „Hinted Tracks“ im Verhältnis zur Größe der Media Daten ausgegeben. Wie man sieht, ist der prozentuale Anteil der in den „Hint Tracks“ gespeicherten RTP Paketköpfen im Vergleich zur Gesamtgröße des Film eher gering. Man kann während des Exportes mit QuickTime Pro eine nur auf den RTP Server optimierte Filmvariante anfordern. In dieser werden die zu den RTP Paketköpfen gehörigen Media Daten direkt in das RTP Paket kopiert, was ein fast lineares lesen der zu streamenden Pakete ermöglicht. Solche Filme sind besonders einfach zu strea- men. Sie bieten sich also gerade für stark frequentierte Server an. Der Platzbedarf eines solchen Films steigt jedoch um das Doppelte. 3.4.2 „Packetizer“ und „Reassembler“ Ein Packetizer ist eine Komponente, die dazu dient, QT Media in Pakete zu unterteilen, die sich zum Transport über RTP eignen. Da RTP auf UDP Übertragungen basiert, muß mit Verlust, Verzögerung und „Out of order“ Zustellung gerechnet werden. Das verwendete Codec muß bestimmen, wie auf solche Ausnahmen reagiert wird, ohne die Film bzw. Audio Qualität zu stark einzuschränken. Aus diesem Grund sind für die einzelnen Codecs meist spezielle Packetizer und Reassembler vorgesehen, die benutzt werden, wenn ein Film beim Export mit „Hint Tracks“ versehen wird. Das Standard Pak- ketizer/Reassembler Paar kann alle Medien und Codectypen unterstützen. Um die beste Übertragungs- qualität zu erreichen, ist es jedoch notwendig, spezielle Packetizer und Reassembler anzubieten, die die speziellen Eigenschaften des benutzten Codec optimal unterstützen. So können unterschiedliche Strategien implementiert werden, um auf die oben beschriebenen Übertragungsmißstände zu reagie- ren. Zum Beispiel kann bei einem Stream mit hoher Datenrate „überflüssige“ Bandbreite dazu genutzt werden öfter ein „Key Frame“ (ein vollständiges Bild) zu senden. So wären die Paketverluste weniger tragisch. 4 Streaming Movies Tutorial In diesem Tutorial wird beschrieben wie man: · Den von Apple im Quelltext freigegebenen Server übersetzt und installiert. · QuickTime 4 Filme mit „Hint Track“ Informationen generiert. · Diese Filme im Netzwerk via RTP/RTSP zur Verfügung stellt. Streamingmöglichkeiten von QuickTime 4 Björn Somberg und Dirk Vleugels 87 4.1 Darwin Streaming Server Der „Darwin Streaming Server“ von Apple wird für die freien Unix Derivate Linux und FreeBSD angeboten. Implementiert wurde er vollständig in C++ unter Verwendung von Posix Threads. Der Server Quelltext kann unter http://www.publicsource.apple.com/projects/streaming/ heruntergeladen werden. Dazu muß man sich allerdings als Entwickler erfassen lassen. 4.1.1 Bau und Installation der Software Der Streaming Server wird als einzelnes File im TAR Format ausgeliefert. Nach dem Auspacken fin- det der Nutzer drei Unterverzeichnisse vor: · QTFile: Die Bibliothek zum Öffnen, Lesen und Parsen von QuickTime Filmdateien. · QTProxy: Ein RTP/RTSP unterstützender Firewall Proxy · RhapServer: Der RTP/RTSP Server · QTPlayListBroadcaster: Zu diesem Programm existiert jedoch keine Dokumentation und seine Funktionalität läßt sich nicht aus den Quelltexten bestimmen. Ein beigelegtes Bourneshell Skript mit Namen doit di t als Makefile Ersatz. Hier muß für eine In- stallation unter Linux der Compiler Name angepaßt werden: · Ist der EGCS Compiler (mindestens Version 1.1.2) installiert, so muß keine Änderung durchge- führt werden. · Ist ein GCC Compiler (mindestens Version 2.7.2.3) installiert, müssen die EGCS Aufrufe in den Zeilen 15-17 durch den String „gcc“ ersetzt werden, als Linker kommt in jedem Fall der EGCS bzw. der GCC zum Einsatz. Die vorhandenen „Makefile“ Dateien sind für MacOS-X bestimmt. Sie sind durch die „Make- file.POSIX“ Varianten zu ersetzen. Ansonsten muß man darauf achten, daß folgende Bibliotheken mit mindestens der angegebenen Versionsnummer installiert sind: · Posix Threads: /usr/lib/libpthread in der Version 0.8. · Die C++ Standard Template Bibliothek /usr/lib/libstdc++.so.2.X in der Version 2.9. · Die Libc sollte mindestens die Version 2.0 haben. Im Unterverzeichnis QTFile wird eine Bibliothek mit Namen libQTRTPFile.a generiert, diese muß per Hand in das RhapServer und QTProxy Verzeichnis kopiert werden, ansonsten bricht der Linker beim Linken der Datei „QuickTimeStreaminServer“ mit einer Fehlermeldung ab. Es wird ein einziges ausführbares Programm generiert: RhapServer/QuickTimeStreamingServer 4.1.2 Konfiguration des Proxys Der RTP/RTSP Proxy für Linux/BSD muß im Verzeichnis QTProxy/proxy_unix kompiliert werden. Er sucht seine Konfigurationsdatei unter /etc/q s_proxy.conf. Es existieren nur vier Variablen: Variablename Voreingestellt Erklärung allow 17.0.0.0/8 Netzmaske aller erlaubten Kli- enten. 0.0.0.0/0 würde die Be- nutzung des Proxys für das ge- samte Internet freigeben. Streamingmöglichkeiten von QuickTime 4 88 Björn Somberg und Dirk Vleugels users 150 Maximale Anzahl gleichzeitig erlaubter Benutzer. Hier sind RTSP Verbindungen gemeint. listen 554 / 7070 Auf diesen Ports erwartet der Proxy die Klienten RTSP Ver- bindungen. port-range 10000-15000 Der Proxy wird nur UDP Ports anfordern, die in diesem Bereich liegen. Bis auf die „allow“ Variable sind alle voreingestellten Werte sinnvoll. Allerdings muß der Proxy mit „ root“ Berechtigung gestartet werden, da er sonst nicht auf den Port 554 zum Lesen und Akzeptieren von TCP Verbindungen zugreifen kann. 4.1.3 Konfiguration des Servers Der Streaming Server benutzt nur eine einzige Konfigurationsdatei, QTSS.conf, die unter /etc instal- liert werden muß. Im folgenden werden die wichtigsten Variablen und ihre Bedeutung beschrieben. Alle Variablen, die die Leistung des Servers stark beeinflussen, sind fett geschrieben, Variablen, die den Klienten beeinflussen, kursiv: Variabelname Voreingestellt Erklärung rtsp_port 554 7070 Die TCP Ports auf die der Stre- aming Server horcht. Beide kön- nen in RTSP URL’s verwendet werden. rtsp_timeout 60 sec Der Idle Timeout des Servers für RTSP Verbindungen. maximum_connections 1000 Größte Anzahl erlaubter RTSP Verbindungen. movie_folder /Pfad Absoluter Verzeichnisname in dem die Film Dateien liegen. user_movie_folder /public_movies User Verzeichnis für Streaming Daten. Vergleichbar mit dem ~/public_html Verzeichnis für WWW Daten. request_loggin Disabled Muß auf „enabled“ gestellt wer- den damit Verbindungen mitge- loggt werden. bind_ip_adress 0 (alle Interfaces) Auf welchen Netzwerkadressen soll der Server horchen? Nur interessant bei Maschinen mit mehr als einer IP. maximum_bandwidth 1000000 (10Mbit) Maximum der Bandbreite die für alle RTP Verbindungen genutzt wird. buffer_seconds 8 Wie viele Sekunden werden für jeden gesendeten Track im Hauptspeicher gebuffert. Streamingmöglichkeiten von QuickTime 4 Björn Somberg und Dirk Vleugels 89 rtp_timeout 60 sec Der Idle Timeout des Servers für RTP Verbindungen. average_bandwidth_update60 sec Zeitraum zwischen den gesamt Bandbreite neu Berechnungen. save_play_duration 600 sec Falls mehr Bandbreite als erlaubt genutzt wird, werden die jüng- sten Klienten getrennt, allerdings nur, wenn ihre Verbindung nicht länger als save_play_duration Sekunden alt ist! sdp_url - Dieses URL wird in die dyna- misch generierten SDP Daten eingefügt. Sollte auf die Home- page der Organisation verwei- sen. admin_email - Administrativer Kontakt web_stats_url - Die Statistik Seite des Servers. Falls gesetzt, zu erreichen unter: http://server:554/stats_page. loss_thin_tolerance num_losses_to_thin 30/3 Wenn der Paket Verlust über num_losses_to_thin RTCP Pa- keten loss_thin_tolerance (in %) übersteigt, wird die Bitrate des Streams gesenkt. loss_thick_tolerance num_losses_to_thick 5/6 Wenn der Paket Verlust unter loss_thick_tolerance Prozent für num_losses_to_thick RTCP Pa- kete liegt, wird die Bitrate des Streams erhöht. 4.1.4 Performance Tips Alle diese Informationen stammen aus der QuickTime 4 Entwickler Email Diskussionliste, und sind prinzipiell nur für einen QuickTime 4 Server mit hoher Belastung relevant. Weniger als 50 Klienten sollten sich auch bei einem nicht optimierten Server kaum auswirken. Timeouts Eine wichtige vom Betriebssystem vorgegebene Systembeschränkung ist die Anzahl der möglichen offenen Filedeskriptoren. Im Falle von Linux sind dies 256 (beschränkt durch den „select“ Syst m Aufruf, „poll“ unterstützt bis zu 1024, wird aber noch nicht durch den Darwin Server unterstützt). Alle offenen RTSP Verbindungen nutzen einen Filedeskriptor, es sind deshalb nur 256 offene RTSP Ver- bindungen möglich. Der rtsp_timeout sollte also möglichst klein gehalten werden. Für den rtp_timeout gelten solche Einschränkungen nicht, es können beliebig viele UDP Adressaten existie- ren (eine implizite Beschränkung ist hier jedoch die maximale Anzahl von Threads, für jeden RTSP Klienten benötigt der QuickTime 4 Server einen Thread. Bei Linux sind z. Z. 1024 Threads per Prozeß möglich). Bandbreite und Anzahl der Klienten Die maximal zu nutzende Bandbreite wird durch maximum_bandwidth bestimmt. Der Default von 1000000 (10 Mbit) ist bei voller Auslastung zuviel für eine normale 10Mbit Netzwerkkate (RTSP Streamingmöglichkeiten von QuickTime 4 90 Björn Somberg und Dirk Vleugels Verbindungen werden nicht mitgerechnet). Auch muß berücksichtigt werden ob der Rechner noch andere Aufgaben im Netzwerk zu leisten hat. Für einen dedizierten QuickTime 4 Server sollten 9Mbit für eine 10Mbit Netzwerkkarte sowie 95Mbit für eine 100Mbit Verbindung gewählt werden. Die Va- riablen zur Neuberechnung der Datenrate zu den einzelnen RTSP Klienten: · loss_thin_tolerance, num_losses_to_thin: um zu entscheiden, wann die Datenrate vermindert wird · loss_thick_tolerance, num_losses_to_thick: um zu entscheiden, wann die Datenrate erhöht wird sollten nur geändert werden, wenn genügend Daten vorliegen (stark schwankende Bandbreite, große Anzahl Modem Klienten) die ein Experimentieren mit geänderten Parametern lohnenswert erscheinen läßt. Auf QuickTime 4 Servern mit sehr großer Belastung sollte average_bandwidth_update groß gewählt werden, um eine zu häufige Neuberechnung der Variablen, sowie ein Prüfen der Bandbreite abhängigen Aktionen zu unterdrücken. Laut Aussage eines Entwicklers ist dies eine teure Operation, da viele durch ein Semaphore geschützte Variablen gelesen und geschrieben werden müssen. Filesystem Das QT4 Fileformat wurde so entworfen, daß ein effizienter Zugriff auf Filmdateien möglich ist. Auch sollte die CPU weitgehend vom Kodieren/Dekodieren verschont bleibt (durch Hint Tracks). Nichtsde- stotrotz müssen die Daten von einer Festplatte gelesen werden. Existieren eine größere Anzahl von Filmdateien und mehrere Klienten, die auf diese zugreifen, so kann es passieren, daß die Festplatten zuviel Zeit damit verschwenden, die benötigten Datenblöcken anzusteuern und weniger Zeit finden sie zu lesen. Die RTSP Threads lesen meist nur kleinere Blöcke von Daten (Informationen für 8 Sekunden per Default), und dies würde die gesamt Leistung des Servers vermindern. Um dies zu verhindern, sollten die Filmdateien möglichst auf verschiedenen physikalischen Medien gespeichert werden. Da der QuickTime 4 Server jedoch nur aus einem Verzeichnis lesen kann (movie_folder), müssen sie mit dem Link („ln“) Befehl im Server Verzeichnis erreichbar gemacht werden. Es ist auch in jedem Fall ratsam ein SCSI bzw. Firewire Plattensystem zu nutzen. IDE Plattensysteme eignen sich weniger für IO lastige Serveraufgaben, da die Kontroller weniger intelligent sind und Fähigkeiten wie com- mand_queueing bzw. reordering nicht unterstützt werden. Diese sind aber bei stark konkurrierendem Zugriff notwendig. 4.2 Erzeugung von QuickTime Filmen Die einzige Möglichkeit QuickTime 4 Medien zu erzeugen, die wir evaluieren konnten, ist die Ver- wendung von QuickTime 4 Pro. Mit diesem von Apple zu Verfügung gestellten Programm ist es möglich, Filme in den unterschiedlichsten Formaten zu betrachten, zu editieren und als QuickTime 4 Film zu exportieren. QuickTime Filme existieren in zwei Varianten: · Als Client Film: Dieser enthält entweder verschiedene streaming fähige Tracks mit den entspre- chenden Medien Daten, oder eine URL die auf einen Film verweist, der von einem RTP bzw. ei- nem HTTP/FTP Server angeboten wird. Ein durch RTP übertragener Film kann dann wiederum aus mehr als einem Track bestehen. · Server Film: Dieser beinhaltet ebenfalls die Medien Daten, zusätzlich wird jedoch die Existenz von „Hint Track“ Informationen verlangt. Für jeden Stream fähigen Track wird ein Hint Track be- nötigt, damit aus ihnen effizient RTP Pakete generiert werden können. QuickTime 4 Pro bietet die Möglichkeit nur Audio (optimiert für Musik oder Sprache), oder Video und Audio (Sorenson Encoding) für verschiedenste Bandbreitenbedürfnisse zu generieren. Bei den Sorenson Encodings wird vereinfachend „CD ROM“ Single oder Double Speed angeboten (90 bzw. 150 kbit benötigte Übertragungsgeschwindigkeit pro Sekunde). Die Audio Exporte können feiner aufgeschlüsselt werden, hierbei kann darauf geachtet werden, ob gesprochene Dialog, Musik oder Midi Tonspuren gesendet werden sollen. Streamingmöglichkeiten von QuickTime 4 Björn Somberg und Dirk Vleugels 91 4.2.1 Alternate Data Rate Filme Dieser Filmtyp ist mehr eine Referenz auf eine Menge von Filmen, die mit demselben Inhalt aber un- terschiedlichen Bandbreitenbedürfnissen aufgezeichnet wurden. Mit dem von Apple für Windows und MacOS zur Verfügung gestellten Programm M keRefMovie kann eine solche Referenz Filmdatei angelegt werden. Abbildung 4-1: MakeRefMovie In diesem Screenshot wird ein Referenzfilm mit drei Filminstanzen für die Datenraten 20Kbit (geeig- net für ein 28.8 Modem), 90Kbit (Single peed CDROM) und 150 Kbit (Double Speed CDROM) erschaffen (die Angaben im Screenshot sind falsch). Dieser Referenzfilm kann dann direkt von der Platte oder via RTSP/RTP betrachtet werden. Der QuickTime Player informiert den Streaming Server über die bevorzugte Geschwindigkeit (wählbar über den Präferenzen Menüpunkt) und erhält den Film mit der angemessenen Datenrate als RTP Stream gesendet. 4.3 Empfang Zum RTP Empfang und Abspielen der Filme existiert der Apple QuickTime Klient. Bei seiner Instal- lation wird auch ein WWW Browser Plugin installiert (für alle installierten Web Browser), mit dem Filme innerhalb einer Webseite abgespielt werden können. Streamingmöglichkeiten von QuickTime 4 92 Björn Somberg und Dirk Vleugels Der QT4 Spieler erlaubt das Abspielen von bis zu 40 unterschiedlichen Video und Sound Dateifor- maten. Er unterstützt das Verändern der Lautstärke, der Balance, der Mixer Einstellungen und der Abbildungsgröße. Wenn nur Sound Tracks abgespielt werden; verschwindet das Bild Anzeigefenster. Abbildung 4-2: Audioeinstellungen im Client 5 Literatur [Adb 99] (adb): QuickTime 4.1 mit Werbeeinblendungen, c‘t 24/1999, S. 33, Heise Verlag [Adle 99] Adler, Douglas: QuickTime Live Conference L.A. Convention Center, November 7-11,1999 http://www.hbase.net/quickTimeLive/QTLiveConfRep.html [Stand: 08.01.2000] [Appl 99a] Apple Computer, Inc.: QuickTime Streaming, http://developer.apple.com/techpubs/quicktime/qtdevdocs/PDF/QTStreaming.pdf [ and: 08.01.2000] [Appl 99b] Apple Computer, Inc.: QuickTime File Format, Specification, May 1996, http://developer.apple.com/techpubs/quicktime/qtdevdocs/PDF/QTFileFormat.pdf [Stand: 08.01.2000] [Appl 99c] Apple Computer, Inc.: QuickTime - Streaming http://www.apple.com/quicktime/authoring/hinttrack.html [Stand: 08.01.2000] [Appl 99d] Apple Computer, Inc.: QuickTime – Alternate Data Rate, http://www.apple.com/quicktime/authoring/datarate.html [St nd: 08.01.2000] [Appl 99e] Apple Computer, Inc.: QuickTime – Version 4.0, http://www.apple.com/quicktime/upgrade/ [Stand: 08.01.2000] [Appl 99f] Apple Computer, Inc.: Open Source Projects at Apple – Darwin Streaming Server, http://www.publicsource.apple.com/projects/streaming/ [Stand: 08.01.2000] [KoMa 99] Kobylinska, Anna – Martins, Filipe: Alles fließt Live-Video im Internet mit QuickTime 4.0, iX 8/1999, S. 73-75, Heise Verlag [Terr 99a] Terran Interactive, Inc: Codec Central – Quick Time http://www.terran.com/Codec/Central/Architectures/QuickTime.html [Stand: 08.01.2000] Streamingmöglichkeiten von QuickTime 4 Björn Somberg und Dirk Vleugels 93 [Terr 99b] Terran Interactive, Inc: How to Produce High-Quality QuickTime http://207.220.219.69/TLA/HowToProduceGreatQT.pdf [Stand: 08.01.2000] Streamingmöglichkeiten von QuickTime 4 94 Björn Somberg und Dirk Vleugels RealNetworks RealNetworks Stefan Michaelis Oliver Pauls FB Informatik, Uni Dortmund michae00@marvin.cs.uni-dortmund.de opauls00@marvin.cs.uni-dortmund.de Zusammenfassung Dieser Seminarbeitrag befasst sich mit den Einsatzm  oglichkeiten von RealNetworks- Komponenten als Streaming-Plattform. Ziel der Ausarbeitung ist es, einen  Uber- blick  uber den aktuellen Stand der Entwicklung zu geben. Schwerpunkt liegt dabei auf der Einsetzbarkeit der einzelnen Programmpakete und der Streamingformate. Der Leser soll in die Lage versetzt werden, den Nutzen der Software von RealNet- works f  ur seinen spezi schen Anwendungsfall absch  atzen zu k  onnen. 1 Die Firmengeschichte von Real RealNetworks sieht sich als einer der Pioniere und Marktf  uhrer in der multimedialen Strea- mingtechnologie  uber das Internet. Zielsetzung ist die Transformierung des Internets auf eine Ebene, die M  oglichkeiten des Broadcasts von Daten praktikabel und kommerziell interessant macht. Die in Seattle ans  assige Firma bietet in zunehmendem Mae Produkte und Services an, die professionellen Einsatz f  ordern sollen. Begonnen hat die Firmengeschichte 1995 mit der Freigabe der Version 1.0 des RealPlayer. Dieser hat sich von einem Werkzeug zum Abspielen reiner Audio-Str  ome weiterentwickelt und beherrscht zur Zeit etliche weitere Formate. Seit der ersten Version ist der RealPlayer von mehr als 80 Millionen unterschiedlichen Nutzern von der Real-Internetseite geladen worden. Die aktuelle Rate von neuen Registrierungen  ubersteigt 175.000 pro Tag. Innerhalb der letzten zwei Jahre entspricht dies einer Steigerung um  uber 270%. RealNetworks gibt an, dass ihre Software auf mehr als 85% aller Web-Seiten benutzt wird, um entsprechende Inhalte anzubieten. So be nden sich beispielsweise mehr als 1.700 Radiosta- tionen mit ihrem Angebot im WWW. Stand dieser Angaben ist Dezember 1999. 2 Systembetrachtung RealSystem vereinigt eine Palette an Werkzeugen zur Erzeugung, Verbreitung und Anzeige digitaler Daten  uber das Internet. F  ur jeden Arbeitsschritt stehen die entsprechenden Me- thoden zur Verf  ugung. Zielgruppe von RealNetworks ist dabei der Endanwender mit geringer bis professioneller Erfahrung. Kenntnisse im Umgang mit Computern werden erst im Bereich der Verbreitung von Daten ben  otigt. Die Kreativit  at der Designer steht im Vordergrund. Die Schritte zur Pr  asentation lassen sich in die folgenden Punkte unterteilen: 1. Encoding | Erstellung der streamingf  ahigen Daten 2. Server | Bereitstellen und  ubertragen der Daten 3. Player | Abspielen der Pr  asentation Stefan Michaelis, Oliver Pauls 95 RealNetworks F  ur jede Phase des Prozesses stellt RealNetworks die entsprechenden Tools zur Verf  ugung. In den meisten F  allen existieren zwei Varianten der Programme: Eine freie Version und das kommerzielle Gegenst  uck. Die frei verf  ugbaren Programme besitzen alle f  ur die Pr  asentati- on n  otigen Funktionen, manche allerdings nur eingeschr  ankt. Sie bieten allerdings gen  ugend Komfort, um sich in der Welt des Streamings zu orientieren, f  ur einfache Anwendungen sind sie h  au g sogar ausreichend. Die kommerziellen Produkte besitzen an einigen Stellen verbes- serte Funktionalit  at, wie z.B. Codier-Algorithmen, die eine erh  ohte Qualit  at in Bild, Ton und geringere ben  otigte Bandbreite bieten. Um den Anwender bei der Erstellung von streamingf  ahigen Daten und ganzen Pr  asentatio- nen zu unterst  utzen sowie auch dem unerfahrenen Designer einen m  oglichst einfachen Einstieg zu erm  oglichen, beginnt die Dokumentation von Real bereits bei der Gewinnung der Daten. Abbildung 1: Die RealSystem-Ebenen 2.1 Player Zum Abspielen der erstellten Pr  asentationen ben  otigt der Anwender einen Player. Dieser exi- stiert als Stand-Alone Programm oder als Plug-In f  ur diverse Internetbrowser. Unterst  utzt werden die meisten bekannten Betriebssysteme und Prozessoren, z.B. die einzelnen Versionen von MS Windows, Apple Macintosh, Linux, diverse Unix-Varianten. Einen eindeutigen Schwer- punkt legt RealNetworks allerdings auf die kommerziell interessanteren Systeme Windows und Macintosh. F  ur diese erscheinen die Player meist erheblich eher als f  ur die  ubrigen Systeme. Zum Zeitpunkt der Entstehung dieses Dokumentes war die aktuelle Version des RealPlayer G2 nur f  ur diese beiden Systeme verf  ugbar, unter Unix mute sich der Nutzer mit der vorherge- henden Version 5 des Players begn  ugen. In der neuesten Version G2 sind einige Verbesserungen hinzugekommen, vor allem was die 96 Stefan Michaelis, Oliver Pauls RealNetworks Breite der abspielbaren Formate angeht. Tabelle 2 gibt einen  Uberblick  uber Versionen der Player und deren streamingf  ahigen Daten. Streamingformat G2 5 4 3 2 1 RealAudio J J J J J J RealVideo J J J N N N RealFlash J J N N N N RealPix J N N N N N RealText J N N N N N O ene Formate (WAV, AVI. . . ) J N N N N N SMIL J N N N N N Abbildung 2: Streamingformat vs. Player-Version Hinzugekommen sind Formate f  ur das Streaming von einfachen Text- und Bilddateien sowie normalerweise nicht f  ur das Streaming vorgesehene Formate oder Unterst  utzung f  ur SMIL. Die neuen Codier-Algorithmen sollen sich im Gegenzug zu den vorhergehenden Versionen noch einmal stark verbessert haben. Neu hinzugekommen sind Abspielm  oglichkeiten f  ur Str  ome unterschiedlicher Bandbreite innerhalb des gleichen Streams. Diese M  oglichkeiten werden in sp  ateren Kapiteln dieses Dokumentes ausf  uhrlicher dargestellt. Der RealPlayer ist kompatibel zu den alten Formaten, d.h. alte Clips k  onnen weiterhin abgespielt werden. Der Aufbau der RealPlayer-Anwendung orientiert sich weitgehend an bekannten Vorbil- dern, wie z.B. CD-Playern oder Kassettendecks. Die  ublichen Kontrollen f  ur Play, Pause, Stop usw. sind vorhanden. Besonderheit ist ein Balken, der den Fortschritt im Verlauf des Clips anzeigt.  Uber ihn kann jede beliebige Stelle innerhalb der Pr  asentation angesprungen und in der gleichen Zeit wie bei der Initialsierung und dem Start des Anzeigevorgangs abgespielt wer- den. Es ist dazu nicht n  otig, die gesamten davorliegenden Daten auf den eigenen Rechner zu  ubertragen. Kann eine auf einem Rechner installierte Version des RealPlayers den angeforderten Stream nicht abspielen, so wird der Anwender auf eine entsprechende Adresse bei RealNetworks umge- leitet und erh  alt eine Meldung  uber den fehlgeschlagenen Versuch. Optional besteht neuerdings die M  oglichkeit, direkt fehlende Plug-Ins von der Real-Homepage herunterzuladen. Der Vorgang verl  auft dabei f  ur den Nutzer v  ollig transparent, Fragen wie die Art, Version oder Plattform des Plug-Ins werden automatisch vom Player gekl  art und an die Download-Seite weitergeleitet. Der Designer kann bei der Produktion seines Clips das Erscheinungsbild des Players weitge- hend selbst festlegen. Er kann w  ahlen, ob das Abspielfenster eigenst  andig oder als Bereich der Web-Seite dargestellt werden soll. Zus  atzlich k  onnen die verf  ugbaren Funktionen und Buttons eingeschr  ankt werden. Aus  Ubersichtsgr  unden kann z.B. in manchen F  allen auf einen Slider f  ur die Lautst  arkeregelung verzichtet werden. 2.2 Encoder RealNetworks bietet genau wie beim RealPlayer und RealServer eine kommerzielle und eine frei verf  ugbare Variante des RealEncoders an. Die freie Version ist vom Leistungsumfang allerdings voll ausreichend und bietet gen  ugend Einstellungsm  oglichkeiten, um die Pr  asentationen optimal aufzubereiten. Der Encoder ist f  ur die g  angigen Computertypen verf  ugbar. Zur Erstellung von Streams sind dem Anwender umfangreiche Hilfsmittel gegeben, welche in Form von Wizards in die Ober  ache integriert sind. Sie fordern durch einfache Dialoge die ben  otigten Daten vom Benutzer an, ohne dass dieser  uber besondere Kenntnisse verf  ugen muss. Ein Beispiel f  ur einen solchen Produktionszyklus ist in der Abbildung 5 gegeben. Stefan Michaelis, Oliver Pauls 97 RealNetworks Abbildung 3: RealPlayer Der Benutzer hat also zun  achst einmal die Auswahl, was f  ur eine Art von Stream erstellt werden soll. Die Kodierung kann zum einen als statischer Stream in Form einer festen Datei oder als dynamischer Stream, der zur Laufzeit in Zusammenspiel mit dem RealServer erzeugt und f  ur Live-  Ubertragungen verwendet wird, erfolgen. Der RealEncoder bietet zudem noch Einstellungsm  oglichkeiten zur Datensicherheit. so kann der Erzeuger von Streams von vorn- herein festlegen, ob seine Streams gespeichert oder w  ahrend des Abspielens mitgeschnitten werden d  urfen. Dazu muss er vor der Erstellung seines Streams entsprechende Preferenzen einstellen. Je nach Art der Daten, k  onnen unterschiedliche Codecs zur Komprimierung aus- gew  ahlt werden. Die Auswahl richtet sich vor allem nach den Gesichtspunkten Qualit  at und Zielbandbreite. Es muss ein Gleichgewicht zwischen diesen beiden Punkten gefunden werden, damit die Pr  asentation genau den Bed  urfnissen der Konsumenten entspricht. So k  onnen bei der Erstellung eine oder mehrere Zielbandbreiten angegeben werden und der Encoder erzeugt dann entsprechende Streams. F  ur die frei verf  ugbare Version gilt hier die Einschr  ankung, dass solche SureStreams nur f  ur zwei unterschiedliche Bandbreiten erzeugt werden k  onnen. Die vom Ersteller zu machenden Angaben sind in Abbildung 6 dargestellt. Die Erzeugung des Streams kann w  ahrend der Kodierung beobachtet werden. Zu diesem Zweck ist im RealEncoder (Abb. 7) links das Originalvideo und rechts das kodierte Video zu sehen. Dabei fallen je nach verwendetem Codec Qualit  atsunterschiede auf. Nach Abschluss dieses Verfahrens ist es m  oglich Statistiken (Abb.: 8)  uber die erzeugeten Streams anzeigen zu lassen, mit Hilfe derer festgestellt werden kann, ob der gew  ahlte Codec das gew  unschte Ergebnis generiert hat. 98 Stefan Michaelis, Oliver Pauls RealNetworks Abbildung 4: Einstellungen des RealPlayers Abbildung 5: Einstellungen des RealEncoders Stefan Michaelis, Oliver Pauls 99 RealNetworks Abbildung 6: Produktionszyklus f  ur einen Videostream 100 Stefan Michaelis, Oliver Pauls RealNetworks Abbildung 7: RealEncoder Stefan Michaelis, Oliver Pauls 101 RealNetworks Abbildung 8: Statistiken zu den erzeugten Streams 2.3 Server Der von RealNetworks angebotene G2 Server ist im Gegensatz zum RealPlayer f  ur alle g  angigen Plattformen verf  ugbar. Er existiert in einer unbeschr  ankten, kommerziellen und in einer frei verf  ugbaren Variante, die im Leistungsumfang, was Anzahl von verbundenen Playern und die Menge der angebotenen Streams betri t, begrenzt ist. Ist der Server erst einmal installiert, erfolgt die eigentliche Administration  uber eine passwort- gesch  utzte Webseite, von der aus Informationen abgefragt und Einstellungen getro en werden k  onnen. Diese Webseite ist in Abbildung 9 dargestellt. Die interessanteste Funktion dieser Webseite ist der Monitor. Hier kann der Administrator bequem  uberwachen, wie stark das System ausgelastet ist und welche Streams zur Zeit ab- gerufen werden. Die Informationen k  onnen dann dazu benutzt werden, das Angebot und die Leistungsf  ahigkeit des Servers anzupassen. Anzumerken ist, dass die durch die Streams erzeugte Belastung der CPU sehr gering ist und erst bei hohen Zugri szahlen ansteigt. 102 Stefan Michaelis, Oliver Pauls RealNetworks Abbildung 9: Administration des RealServers Stefan Michaelis, Oliver Pauls 103 RealNetworks Abbildung 10: RealServer Monitor 3 Erstellung von RealSystem-Pr  asentationen In der heutigen Zeit entwickelt sich ein immer gr  oer werden Bedarf an komplexen, multimedial aufbereiteten Informationen, die  uber Computernetzwerke, vor allem das Internet, angeboten werden. Diese Daten sollen m  oglichst schnell und in ansprechender Form verf  ugbar gemacht werden, was durch das Streamen dieser Daten erreicht wird. Die Firma RealNetworks bietet zu diesem Zweck verschiedene Software-Werzeuge in Form von Server- und Clientprogrammen an. In diesem Abschnitt soll zun  achst gekl  art werden, welche Art von Daten gestreamt werden k  onnen und wo die Einsatzgebiete f  ur Streaming-Technologie liegen. Allgemein besteht eine RealSystem-Pr  asentation aus einem oder mehreren Multimedia- Clips, die sequentiell oder parallel ausgef  uhrt werden. Eine genauere Betrachtung dieser Vor- gehensweise erfolgt zu einem sp  ateren Zeitpunkt innerhalb dieses Kapitels. Die zum Streamen ausgew  ahlten Datenformate k  onnen in folgende Gruppen aufgeteilt werden:  Audio: RealAudio, AIFF, AU, WAV  Video: RealVideo, ASF, AVI, QuickTime, Vivo  Animationen: RealFlash  Bilder: JPEG, GIF  Text Anwendungsgebiete f  ur die verschiedenen Formate liegen auf der Hand. So ist es heute m  oglich, diverse Radiosendungen  uber das Internet mit Hilfe von Audiostreams zu empfangen sowie eine Reihe von " archivierten\ Fernsehsendungen direkt von bereitgestellten Servern abzurufen. Al- lerdings ist f  ur derart komplexe und umfangreiche Datenmengen die Bandbreitenbeschr  ankung 104 Stefan Michaelis, Oliver Pauls RealNetworks heutiger (Tele-)Kommunikationsnetze noch so gravierend, dass eine ansprechende Darstellung von Videos noch nicht m  oglich ist. Im Gegensatz dazu ist der Einsatz von Text-Streams zur Realisierung von Nachrichten- oder B  orsentickern, auf Grund der wenig komplexen Daten re- lativ einfach. 3.1 Grunds  atzliche Vorgehensweise bei der Erstellung eines Streams Die Erstellung eines Streams erfolgt stets in folgenden Schritten:  Auswahl der Daten  Daten in geeignetes Streamingformat konvertieren  Bereitstellung durch einen Server Bei der Auswahl der Daten ist zun  achst einmal zu beachten, dass die Daten, um schnell  ubert- ragen werden zu k  onnen, stark komprimiert werden m  ussen. Da diese Kompression im allgemei- nen verlustbehaftet ist und die Daten zum Teil sogar auf ein Zwanzigstel ihrer Ursprungsgr  oe reduziert werden, muss das Ausgangsmaterial in einer m  oglichst hohen Qualit  at vorliegen, denn sonst w  urden sich negative Eigenschaften wie Rauschen und Unsch  arfe weiter verst  arken. Nach der Auswahl der Daten folgt die Konvertierung in ein Streamingformat mit Hilfe des RealEncoders. Es ist zwar prinzipiell auch m  oglich Standardformate zu streamen, was allerdings nur in Ausnahmef  allen geschehen sollte, da Streamingformate wegen ihrer besonderen Eigenschaften eine h  ohere Performance der Pr  asentation versprechen. Zum Schlu m  ussen die Streams noch auf einem Server bereitgestellt werden, was im Ide- alfall ein RealServer sein sollte. Es ist zwar auch m  oglich Streams  uber einen herk  ommlichen Webserver anzubieten, was allerdings wegen starker Performanceeinbuen nicht zu empfehlen ist. N  aheres hierzu ndet sich in Kapitel 6 dieser Ausarbeitung. 4 Selektion von Bandbreiten Eines der groen Probleme bei der heutigen Form der Daten  ubertragung ist die unterschiedliche Verf  ugbarkeit von Bandbreiten. Oft ist die dem Anwender zur Verf  ugung stehende Bandbreite nicht bekannt oder es k  onnen w  ahrend des Streaming-Vorgangs konstante Daten  ubertragungs- raten nicht garantiert werden. In der m  oglichen Qualit  at bestehen gravierende Unterschiede bei einer Rate von 28,8 Kbps bei Benutzung eines  alteren Modems und den Ressourcen eines lokalen Netzwerkes. Die Betrachtung der unterst  utzten Bandbreiten spielt somit eine wesentliche Rolle bereits im Vorfeld des Produktionsprozesses. Der einzige Fall, in dem eine Ber  ucksichtigung maximaler  Ubertragungsraten nicht n  otig ist, besteht im lokalen Abspielen von Datenstr  omen. Soll eine m  oglichst breite Masse von Nutzern erreicht werden, wird als Zielbandbreite 28,8 Kbps empfohlen. Der RealPlayer erm  oglicht zwar das Abspielen eines Videos, das f  ur eine  Uber- tragungsrate von 56 Kbps codiert wurde, allerdings wird das Video beim Empf  anger solange gepu ert, bis durchgehendes Anzeigen m  oglich ist. Sonst m  uten f  ur jede Sekunde Video zuvor zwei Sekunden lang Daten  ubertragen werden. Die Dauer f  ur das Pu ern der n  otigen Daten ist abh  angig von der L  ange der Pr  asentation. Bei langen Videos kann dieser Vorgang mehrere Minuten in Anspruch nehmen. Die meisten Anwender werden nicht bereit sein, so lange zu warten. Damit verliert das Data-Streaming seinen gr  oten Vorteil, die sofortige Verf  ugbarkeit der (ersten) Daten. 4.1 Preroll Mit Preroll werden die initialen Daten bezeichnet, die vom RealServer an den Player gesendet werden, bevor die Wiedergabe beginnt. Nach einer Anforderung stellt der Server als erstes die Stefan Michaelis, Oliver Pauls 105 RealNetworks Abbildung 11: Flaschenhals Gr  oe und die Timeline der Pr  asentation fest. Anhand der verf  ugbaren  Ubertragungsrate gibt der Server dem Player dann vor, wieviele Daten vor Beginn des Abspielvorgangs  ubertragen werden m  ussen. Dies soll eine unterbrechungsfreie Pr  asentation auch bei schlechten  Ubertra- gungswegen erm  oglichen. Zeiten f  ur Preroll unter 15 Sekunden gelten als tolerierbar, unter 10 Sekunden ist das Idealma f  ur gute Pr  asentationen. 4.2 Auswahl der Zielbandbreite Die Zielbandbreite, f  ur die eine Pr  asentation vorbereitet werden soll, ist die kleinste zur Verf  ugung stehende  Ubertragungsrate. Die Gesamtrate des Streams muss unterhalb dieser Schranke liegen. Die verf  ugbare Bandbreite l  at sich in zwei Bereiche gliedern:  Maximale Bitrate, die von der Summe aller Einzelstr  ome konsumiert wird. Besteht die Pr  asentation aus mehreren Str  omen, kann die ben  otigte Rate  uber den Zeitverlauf vari- ieren. Hier ist der Spitzenwert zu w  ahlen, um zu jedem Zeitpunkt einen  ussigen Verlauf zu garantieren.  25% der Zielbandbreite sollten als Toleranz zum Abfangen von Overhead (St  orungen, Datenverlust, Packet Overhead) reserviert werden. Das Verh  altnis ist ebenfalls abh  angig von den allgemeinen Netzwerkvoraussetzungen. Verbindung  uber Modems sind in der Regel wesentlich schlechter als theoretisch gleichschnelle ISDN-Verbindungen. Tabelle 12 gibt einen beispielhaften  Uberblick  uber empfohlene Verh  altnisse. 14.4 Kbps Modem 10 Kbps 28.8 Kbps Modem 20 Kbps 56.0 Kbps Modem 32 Kbps 56.0 Kbps ISDN 45 Kbps 112 Kbps ISDN Kanalb  undel 80 Kbps Abbildung 12: F  ur das Streaming verf  ugbare Bitraten 106 Stefan Michaelis, Oliver Pauls RealNetworks 4.3 Verh  altnisse unterschiedlicher Streams Gerade bei Multimedia-Str  omen kommt der Aufteilung der zur Verf  ugung stehenden Band- breite ein besonderes Gewicht zu. Je nach Anforderung bieten sich unterschiedliche Strategien an. Ein Audio-Stream mit Musik besitzt im Vergleich zu einem Interview einen relativ groen Dynamikbereich. Dieser ben  otigt deshalb eine gr  oere Bitrate als einfache Sprache um einen akzeptablen Eindruck zu erreichen. Analog besitzen Videos mit schnellen Bewegungen oder hoher Au  osung einen erh  ohten Bedarf. Kann dieser nicht gedeckt werden, wird das Video nicht  ussig oder unscharf abgespielt. Der gew  unschte Eindruck ergibt hier die Richtlinie f  ur die Aufteilung der Bandbreite. In den meisten F  allen wird dem Ton Vorrang gegeben und eine schlechtere oder ruckelnde Video- Qualit  at in Kauf genommen. Die meisten Menschen emp nden schlechte Audio-Qualit  at als erheblich st  orender im Vergleich zu langsamen Bildfolgen. Problematisch sind Streamingformate ohne konstante  Ubertragungsrate, wie z.B. RealFlash oder RealPix. Orientiert man sich an den Spitzenwerten, wird die  ubrige Zeit ein groer Teil an verf  ugbarer Bandbreite verschwendet. Unterschiedliche Strategien bei der Kombination von Multiclip Pr  asentationen zeigen die Abbildungen 13 und 14. Die zweite Abbildung stellt eine wesentlich bessere Zusammenstellung der Timeline der Streams dar. Wartezeiten zwischen Clips werden ebenfalls reduziert, wenn der Ersteller darauf achtet, nur eine aktive Preroll-Phase zu jedem Zeitpunkt auszuf  uhren. Die Startup-Zeit von groen Clips kann reduziert werden, wenn die Pr  asentation mit einem low-level Clip beginnt und dem RealPlayer damit die M  oglichkeit gibt, den Preroll im Hintergrund durchzuf  uhren. Abbildung 13: Schlechte Zusammenstellung der Bandbreiten Abbildung 14: Gute Zusammenstellung der Bandbreiten Um die n  otigen Kompromisse bei der Erstellung der Pr  asentationen m  oglichst klein zu halten, bietet RealServer die Option, Clips f  ur Verbindungen mit unterschiedlichen Bandbreiten bereit zu halten. Diese SureStream genannte Technologie stellt die einzelnen Streams unter dem gleichen Internet-Link zur Verf  ugung. Sobald ein Nutzer auf einer Web-Page diesen Link aktiviert, versuchen RealPlayer und RealServer die Bandbreite der Verbindung festzustellen und der Server w  ahlt dementsprechend die passenden Clips aus. Die Auswahl wird dynamisch w  ahrend der gesamten Spieldauer  uberwacht, so dass es problemlos m  oglich ist, bei einem Einbruch der Rate auf einen Stream niederer Qualit  at und bei einer Besserung wieder auf die alte Version umzuschalten. Stefan Michaelis, Oliver Pauls 107 RealNetworks 5 Streamingformate Vor der Verbreitung von Pr  asentationen  uber das Internet m  ussen die Clips zun  achst in spezielle Formate  ubertragen werden. In der aktuellen Version des RealPlayer G2 ist es zwar m  oglich, Standardformate wie z.B. AVI direkt als Stream zu  ubertragen, diese Formate sind allerdings nicht auf die besonderen Bedingungen ausgerichtet, d.h. der Verlust oder die Verz  ogerung von Paketen lassen sich nur schwer oder gar nicht verbergen. Die von Real speziell entwickelten Formate sollen gerade in diesem Bereich deutliche Vorteile besitzen. Die nachfolgenden Kapitel gehen sowohl auf die  alteren Formate f  ur Audio und Video als auch auf die neu hinzugekommenen zur  Ubertragung von Bildern und Text ein. Gezeigt werden sollen die Besonderheiten und Anwendungsm  oglichkeiten der unterschiedlichen Codecs. 5.1 RealAudio Die Firma RealNetworks stellte 1995 erstmalig eine Streamingformat vor. Es handelte sich dabei um RealAudio. Zu diesem Zeitpunkt war es das einzige streambare Format, welches f  ur Computer-Netzwerke zur Verf  ugung stand. Es entwickelte sich somit zu einem Standard- Format, das konsequent weiterentwickelt wird. Wie bei allen Streamingformaten ist auch die Qualit  at von RealAudio-Pr  asentationen stark von der Bandbreite der  Ubertragung und somit auch von der zu  ubertragenden Datenmenge abh  angig. Um diese m  oglichst gering zu halten, werden unterschiedliche Codecs eingesetzt, die auf den jeweiligen Verwendungszweck abgestimmt sind. So m  ussen prinzipiell zwei grundlegen- de Eigenschaften abgew  agt werden und zwar die Art der Daten und die Zielbitrate. Bei den Daten h  angt es stark davon ab, ob Sprache, Musik oder eine Mischung von beiden  ubertragen werden soll. Hief  ur existieren an unterschiedliche Bandbreiten angepasste Codecs, die f  ur diese Anwendungsf  alle optimale Ergebnisse liefern. Diese Optimierung ist gerade deswegen notwendig, da die Kompression der Audiodaten verlustbehaftet ist. Das heit, es werden je nach Codec unterschiedliche Charakteristiken der Daten hervorgehoben bzw. entfernt. Nur so kann eine Kompressionsrate von bis zu 1:20 bei beispielsweise WAV-Dateien errreicht werden. Die Unterscheidung zwischen Sprache und Mu- sik ist deshalb wichtig, da Musikst  ucke einen viel breiteren Frequenzbereich ben  otigen, als menschliche Sprache, die sich nur in einem geringen Band bewegt. Der Frequenzbereich kann so unterschiedlich stark reduziert werden, ohne dass der durch die Kompression verursachte Qualit  atsreduktion zu starkem Informationsverlust f  uhrt. Die Tabelle 15 zeigt die Auswahl an Codecs f  ur Audiodateien, die  uber eine Verbindung mit hoher  Ubertragungskapazit  at verbreitet werden sollen. F  ur niedrige und mittlere Bandbreiten existieren  ahnliche Codecs, auf deren Au  uhrung hier allerdings verzichtet werden soll. In diesem Zusammenhang sei auf das Kapitel 4 in [RPG] verwiesen. 5.2 RealVideo Zweites von RealNetworks eingef  uhrtes Format f  ur das Streaming von Pr  asentationen ist Real- Video. Neben RealAudio besitzt es derzeit die gr  ote Bedeutung. Dieses Format ist speziell f  ur Streaming  uber das Internet von Bedeutung und bietet die entsprechenden M  oglichkeiten, auf schlechte Netzwerkbedingungen oder Paketverlust zu reagieren. Eingef  uhrt wurde das Format mit der Version 4.0 des RealPlayer. Grunds  atzlich ist es inzwischen in der aktuellen Version G2 des RealSystem zwar ebenfalls m  oglich, andere Video-Formate (AVI, Quicktime. . . ) vom RealServer  ubertragen zu lassen, diese sind allerdings eher f  ur den lokalen Einsatz designed worden. Deshalb soll hier nicht weiter auf diese Formate eingegangen werden. RealVideo ist ein Datenformat f  ur eine konstante Bitrate, unabh  angig von den gezeigten Inhalten. Deshalb muss bereits im Vorfeld die zu benutzende Bitrate gew  ahlt werden. Dieser Vorgang wird ausf  uhrlich im Kapitel 4, " Selektion von Bandbreiten\, beschrieben. RealVideo 108 Stefan Michaelis, Oliver Pauls RealNetworks Codec Rate Comment 32 Kbps Voice G2 mono 22.05 kHz Use with SureStream clips. 32 Kbps Music G2 mono 44.1 kHz Use with SureStream clips. 32 Kbps Music G2 stereo 45 kHz Use with SureStream clips. 32 Kbps Music mono 16 kHz DolbyNet codec. 32 Kbps Music stereo 11.025 kHz DolbyNet codec. 40 Kbps Music mono 22.05 kHz DolbyNet codec. 40 Kbps Music stereo 16 kHz DolbyNet codec. 44 Kbps Music G2 mono 44.1 kHz Use with SureStream clips. 44 Kbps Voice G2 stereo 44.1 kHz Use with SureStream clips. 64 Kbps Voice G2 mono 44.1 kHz Use with SureStream clips. 64 Kbps Music G2 mono 44.1 kHz Use with SureStream clips. 64 Kbps Music G2 stereo 44.1 kHz Use with SureStream clips. 80 Kbps Music mono 44.1 kHz DolbyNet codec. 80 Kbps Music stereo 32 kHz DolbyNet codec. 96 Kbps Music G2 stereo 44.1 kHz Use with SureStream clips. Abbildung 15: RealAudio-Codecs f  ur hohe Bitraten baut  ahnlich wie die MPEG-Standards auf einer verlustbehafteten Kompression auf. Je st  arker der gew  ahlte Grad der Kompression, um so h  oher der Verlust an Bildqualit  at. Ebenso wirkt sich der Verlauf des Original-Videos auf die Kompression aus. Da der zugrundliegende Algorithmus die Ver  anderungen von einem Bild zum n  achsten stark in seine Berechnungen mit einbezieht, wirken sich schnelle Szenenwechel negativ auf die Bildqualit  at aus. Grunds  atzlich liee sich zwar der erh  ohte Bedarf an Leistung auf eine gr  oere Bandbreite umlegen, dies widerspr  ache aber dem Konzept einer konstanten Bitrate. Zus  atzlich sind die Kompressions-Algorithmen auf 24 Bit Echtfarbbilder ausgelegt und liefern nur daf  ur optimale Ergebnisse. Mit RealVideo besteht die M  oglichkeit, Videos mit einer Bildrate von bis zu 30 fps 1 zu co- dieren. Damit k  onnen alle bekannten Video-Formate, wie z.B. Fernsehen mit 25 fps, abgedeckt werden. Empfohlen wird dagegen eine Rate von 15 fps, damit auch  altere Maschinen problem- los die Decodierung bew  altigen k  onnen. Die Bildrate des codierten Real-Streams muss dagegen nicht die vollen 15 fps ausnutzen, sondern richtet sich nach der zur Verf  ugung stehenden Bi- trate und dem Gewicht auf weiche Bewegungen oder scharfe Bilder. Die e ektive Rate kann damit zwischen 1 und 15 fps liegen. 15 fps ist dabei der Bereich, bei dem Einzelbildfolgen vom Auge noch als kontinuierlicher Verlauf wahrgenommen werden. Bei niedrigeren Raten wirkt das Video schnell unruhig. RealVideo besitzt keine Einschr  ankungen hinsichtlich der Gr  oe und des X/Y-Verh  altnisses. Lediglich die benutzte Bandbreite beschr  ankt die Bildgr  oe. Tabelle 16 zeigt einige h  au g ver- wendete Gr  oen, die mit ihrm 4:3-Verh  altnis dem alten TV-Standard entsprechen. Dargestellt ist die ben  otigte Bandbreite und die damit erreichbare Bildqualit  at. Breite x H  ohe Bandbreite Bildqualit  at 176x132 20{500 Kbps Gut bis sehr gut 240x180 100{500 Kbps Sehr gut 320x240 200{500 Kbps Sehr gut Abbildung 16: Kriterien f  ur die Bildqualit  at von Video RealVideo bietet f  ur die Kompression unterschiedliche Codecs an. Tabelle 17 zeigt die un- 1 Frames per second Stefan Michaelis, Oliver Pauls 109 RealNetworks terst  utzten Versionen. Codec G2 V 5 V 4 Kommentar G2 Standard (Vorgabe) J N N Schnellste Codierung/Decodierung. Erm  oglicht unterschiedliche Bitra- ten in einem Stream (SureStream) Standard(alte Vorgabe) J J J Fr  uhere Version. Einfache Bitrate Fraktal J J J In der Version G2 nur noch Abspie- len, keine Codierung mehr Abbildung 17: RealVideo Codecs Der aktuelle Encoding-Standard schneidet die Ausmae des Bildes auf Vielfache von 4 Pixeln, bei dem  alteren Verfahren auf Vielfache von 16. So w  urde ein Videobild mit den Di- mensionen 176x132 in der  alteren Version auf 176x128 Pixel abgeschnitten. 5.3 RealFlash RealFlash ist das Streamingformat zur Darstellung von Animationen. Es vereint das Shockwave Flash Vektorformat von Macromedia mit dem RealAudio Format. RealFlash orientiert sich am Stil klassischer Zeichentrick lmen. Der Produktionsprozess ist daher entsprechend anders. F  ur die Formate zur Verbreitung von Audio und Video m  ussen vor dem Encodingvorgang die Daten in der realen Welt vorbereitet werden, die Produktion von Flash-Animationen ist dagegen eher im rein k  unstlerischen Bereich anzusiedeln. Da eine RealFlash-Pr  asentation in den meisten F  allen aus der eigentlichen Animation im Shockwave-Format und einem begleitenden Audiotrack im RealAudio-Format besteht, muss dementsprechend die zur Verf  ugung stehende Bandbreite auf beide Streams aufgeteilt werden. Im Gegensatz zu den  ubrigen Formaten gelten hierbei allerdings andere Bedingungen. Real- Flash ist ein reines Vektorformat. Im Verlauf der Pr  asentation werden nur an wenigen Stellen komplette Bildinformationen  ubertragen, auf diesen bauen Anweisungen zur Transformation der  ubertragenen Daten auf. Vorteil dieser Art des Streamings ist, dass sich auch f  ur geringe Bitraten die Bildqualit  at nicht verschlechtert. Hauptkriterium f  ur die Qualit  at der Darstellung ist nicht die Bandbreite, sondern die Rechenleistung des empfangenden Rechners. " Intelligen- tes\ Management der Quelldaten erm  oglicht gleichwertige Pr  asentationen bezogen auf Clips mit einem h  oheren Bedarf an Bandbreite. RealFlash kann auch von der Version 5.0 des RealPlayers abgespielt werden, dabei sind allerdings einige Punkte zu beachten:  RealPlayer 5.0 unterst  utzt lediglich Macromedia Flash in der Version 2.0, RealPlayer G2 auch die Version 3.0 ohne Transparenze ekte.  Der zugeh  orige Audio-Soundtrack muss mit dem speziellen Kompatibilit  ats-Flag codiert worden sein. Tabelle 18 gibt eine kurze  Ubersicht  uber Empfehlungen, wie die Bandbreite f  ur eine 20Kbps Pr  asentation zwischen Animation und Audio aufgeteilt werden soll. Zu beachten sind die Un- terschiede, je nach dem ob Kompatibilit  at zur Versiom 5.0 des Players gew  unscht ist. Die neuen Codecs zur Generierung von Audio haben sich in der Beziehung verbessert, so dass bei gleicher Qualit  at weniger Bandbreite verwendet wird, bzw. die Codecs f  ur Musik und nicht f  ur Sprache verwendet werden k  onnen. Da die Bandbreite eines Flash-Clips  uber den Zeitverlauf dynamisch ist, sind die Werte aus Tabelle 18 nur als Durchschnittswerte anzusehen. Um eine st  orungsfreie Pr  asentation zu 110 Stefan Michaelis, Oliver Pauls RealNetworks Pr  asentationstyp RealAudio Shockwave Flash Schwerpunkt auf Animation mit gutem Ton (Sprache) f  ur Version G2 und 5.0 5 Kbps Voice 15 Kbps Schwerpunkt auf Animation mit bestem Ton (Sprache) f  ur G2 und 5.0 8,5 Kbps Voice 11,5 Kbps Schwerpunkt auf Animation mit gutem Ton (Musik) f  ur G2 und 5.0 8 Kbps Music 12 Kbps Schwerpunkt auf Animation mit gutem Ton (Musik) f  ur G2 6 Kbps Music 14 Kbps Schwerpunkt auf Animation mit bestem Ton (Musik) f  ur G2 11 Kbps Music 9 Kbps Abbildung 18: Aufteilung der Bandbreite zwischen Flash und Audio Abbildung 19: Beispielrate f  ur einen Flash-Clip Stefan Michaelis, Oliver Pauls 111 RealNetworks garantieren, muss der Stream nach der Erstellung noch weiter untersucht werden. Insbesondere die Stellen, an denen die maximale  Ubertragungsrate  uberschritten wird, sind kritische Punkte. Beim Streaming des Files m  ussen diese Stellen bereits vor dem Zeitpunkt ihrer Ausf  uhrung komplett  ubertragen worden sein. Dazu muss von der zur Verf  ugung stehenden Bandbreite vor den Spitzenwerten noch genug verf  ugbar. Verglichen mit dem Beispiel in Abbildung 19 hiee das, dass die Fl  ache unterhalb der Bandbreite vor den Spitzen gr  oer sein muss als der sich  uber der Bandbreitenlinie be ndende Teil. Um die Bitrate eines Flash-Clips klein zu halten, bzw. zu reduzieren, kann an folgenden Punkten angesetzt werden: 1. Das Verh  altnis von Dateigr  oe zu Spielzeit sollte m  oglichst klein gehalten werden. Dies verhindert zwar keine Spitzen, hilft aber diese klein zu halten. 2. Kleine Anzahl an Key Frames. Key Frames ben  otigen immer ein  Ubertragung aller Ob- jekte, die Frames dazwischen bauen auf diesen dann auf. 3. Shockwave Flash erm  oglicht die Wiederverwendung von Objekten  uber sogenannte Sym- bole. 4. Die Elemente sollten so einfach wie m  oglich gehalten werden. Macromedia bietet Funk- tionen zum Entfernen  uber  ussiger Vektorkoordinaten. Neben der Bitrate spielt aber auch die Prozessorbelastung eine entscheidende Rolle. Hier sollte man sich an dem aktuellen Stand der Rechenleistung orientieren und Durchschnittswerte f  ur die Rechenleistung des typischen Anwendersystems kennen. M  oglichkeiten zur Reduzierung der ben  otigten Leistung lassen sich folgendermaen angeben: 1. Niedrige Framerate (7 fps liefert noch ansprechende Ergebnisse). 2. " Tweening\ optmieren. Tweening bedeutet Interpolation der Animation zwischen den Frames. Je h  oher das Tweening, umso weichere Animation, aber h  ohere Rechenleistung. 3. Die Zahl der sich bewegenden Objekte klein halten. Eine Besonderheit, die RealFlash von den  ubrigen Formaten unterscheidet, ist die Interak- tivit  at. Spezielle Shockwave-Kommandos k  onnen an Teile der Animation angebunden werden. Diese Kommandos werden dann auf die Funktionen des RealPlayers  ubertragen. Zur Verf  ugung stehen z.B. Play, Stop, Goto und Goto and Play. 5.4 RealText Ein weiteres von RealNetworks eingef  uhrtes Streamingformat ist RealText. Es kann wie jedes andere Streamingformat als Live-Stream oder als Datei angeboten werden. Um eine RealText Pr  asentation auf einem Server bereitstellen zu k  onnen, ist zu beachten, dass dazu mindestens ein RealServer G2 ben  otigt wird, denn nur dieser ist in der Lage RealText mit allen Features zu  ubertragen. Es ist zwar prinzipiell auch m  oglich RealText von einem Webserver aus anzubieten, allerdings k  onnen in diesem Fall nur statische Streams, d.h. keine Live-Streams angeboten werden. Eine RealText-Datei kann mit jedem beliebigen Texteditor erstellt werden, der die Daten als reine Textdatei (plaintext) abspeichern kann. Das Ziel einer RealText Pr  asentation ist es, Text in einer ansprechend aufbereiteten Form anzubieten. Zu diesem Zweck wurde von der Firma RealNetworks die RealText Markup Language entwickelt, die es in einem HTML-  ahnlichen Stil erm  oglicht, Text f  ur Pr  asentationen aufzubereiten, was deutlich  uber das in HTML m  ogliche Formatieren hinaus geht. Durch die nahe Verwandtschaft zu HTML ist es dem ge  ubten HTML- Benutzer leicht m  oglich in RealText einzusteigen und ansprechende Pr  asentationen zu erstellen. 112 Stefan Michaelis, Oliver Pauls RealNetworks Eine Pr  asentation mit RealText hat nur sehr geringe Anforderungen an die Bandbreite, die gr  otenteils unterhalb von 1 Kbps liegen. Aufgrund dieses Vorteils ist RealText als ideale Erg  anzung zu aufwendigen Pr  asentationen mit anderen Streamingformaten, z.B. RealVideo, zu sehen. Ein solches Zusammenspiel verschiedener Streamingformate wird in Kapitel 5.6 genauer vorgestellt. Wie bereits erw  ahnt, arbeitet RealText mit HTML-  ahnlichen Tags, die hier nicht im ein- zelnen vorgestellt werden, da dies den Rahmen eines Kurz  uberblicks sprengen w  urde. F  ur die Pr  asentation stehen folgende Fensterformate zur Verf  ugung:  Generic: Ohne vorde nierte Eigenschaften  Scrolling News: Text scrollt von unten nach oben  Ticker Tape: Text l  auft von rechts nach links am oberen, bzw. unteren Rand durch das Fenster  Marquee:  ahnlich wie Ticker Tape mit dem Unterschied, dass der Text vertikal zentriert im Fenster abl  auft  Teleprompter:  ahnlich zu Scrolling News, mit dem Unterschied, dass der Text zeilenweise nach oben " springt" Die  ublichen Textformatierungen wie Farbe, Font, Schriftgr  oe etc. sowie die Layoutfunk- tionen innerhalb des Pr  asentationsfensters unterscheiden sich nicht von denen in HTML und werden deshalb hier nicht genauer erkl  art. Eine erw  ahnenswerte Besonderheit in RealText ist die M  oglichkeit Start- und Endzeiten sowie die Anzeigedauer von Texten zu bestimmen. Diese Zeitangaben orientieren sich an der Pr  asentations-Timeline, die genau im Abschnitt 5.6 vorge- stellt wird. Desweiteren ist bei der Erstellung darauf zu achten, dass der Text standardm  aig im ASCII-Format  ubertragen wird. Sollen also landesspezi sche Sonderzeichen  ubertragen wer- den, muss explizit der gew  unschte Zeichensatz angegeben werden. Eine detaillierte Liste von unterst  utzten Zeichens  atzen ist in [RPG]zu nden. Mit RealText ist es auch m  oglich, eine interaktive Pr  asentation zu erstellen. Dies geschieht mit Hilfe sogenannter Command-Tags, welche mit Hyperlinks in HTML vergleichbar sind. Sie k  onnen dazu benutzt werden, an bestimmte Stellen innerhalb der Pr  asentation zu springen, oder den Webbrowser mit einer bestimmten Seite aufzurufen. Abschlieend soll das Beispiel aus Abbildung 20 einen Eindruck einer einfachen RealText-Datei vermitteln. Die Ausgabe des Programmablaufs ist in Abbildung 21 zu sehen.
DJIA 7168.35 +36.52 NIKEI 225 Index 20603.71 +271.3
Abbildung 20: Einfaches Beispiel f  ur eine RealText-Datei 5.5 RealPix RealPix geh  ort zu den neuesten Formaten von RealSystem. Es dient dazu, Bilder  uber das Internet zu streamen. Unterst  utze Bildformate sind GIF (Version 87 und 89) sowie JPEG. Stefan Michaelis, Oliver Pauls 113 RealNetworks Abbildung 21: B  orsenticker mit Hyperlink Animated GIFs werden nicht unterst  utzt. Der Aufbau einer Pr  asentation erfolgt nicht  uber ein spezielles Tool, sondern auf Basis der HTML-Sprache. Da Real G2 keinen Disketten-Cache beinhaltet und den direkten Download von Bildern verbietet, bleibt Material unter Copyright weiterhin gesch  utzt. Ein Cache im Hauptspeicher ist vorhanden und erm  oglicht damit e ektiv einzelne Bilder einer Pr  asentation an verschie- denen Stellen wiederholt zu benutzen. F  ur die eigentliche  Ubertragung der Bilder bietet sich der RealServer an, da er einen kontrollierten Ablauf hinsichtlich der Timeline erm  oglicht. Ein Standard-Webserver startet gleich zu Beginn der Pr  asentation mit der  Ubertragung s  amtlicher Bilder, was sich in einem hohen Preroll niederschl  agt. Bei der Zusammenstellung einer Timeline ist zu beachten, ob der RealPix-Clip als einzige Anwendung laufen soll oder in Kombination mit anderen Str  omen. Im ersten Fall kann der zeitliche Ablauf frei durch die Bildfolge festgelegt werden, Bandbreitenbetrachtungen spielen nur in extremen F  allen eine Rolle. H  au g wird aber die Pr  asentation aus mehreren Str  omen bestehen. Dann ist es sinnvoll, den Ablauf an den anderen Clip, z.B. RealAudio, anzupassen und zu synchronisieren. F  ur den Ablauf einer RealPix lassen sich verschiedene Einstellungen vornehmen, in erster Linie selbstverst  andlich die Reihenfolge und Verweildauer auf dem Bildschirm. Zus  atzlich exi- stiert eine Reihe von  Uberg  angen, wie z.B. Einblenden (Fading) oder seitliches Einschieben (Wipe). Abbildung 22: Crossfade zwischen zwei Bildern Ein Spezialfall von RealPix ist der Broadcast von Bildern. RealNetworks stellt ein freies Programm zur Verf  ugung, dass sich an einen RealServer andockt und ein bestimmtes Verzeich- nis  uberwacht. Jede Sekunde wird dieses Verzeichnis nach neuen Bildern durchsucht. Findet das Broadcast-Tool ein Update eines Bildes, wird dieses sofort an den RealServer gesendet, der den Broadcast an alle verbundenen RealPlayer regelt. Der bei den Playern durchgef  uhrte  Ubergang kann entweder ein Fade-In oder ein Wipe sein. Zum Start der Broadcast-Applikation m  ussen die Adresse des RealServers, der Port, an den das Bild gesendet werden soll, der Pfad und die Darstellungsgr  oe des Bildes bekannt sein. Zu beachten ist, dass das Update nicht h  au ger durchgef  uhrt wird, als die  Ubertragungsrate zu den Empf  angern zul  at, da sonst ein Datenstau am RealServer entstehen kann. 5.6 SMIL Das Ziel dieses Abschnitts besteht darin, die Einsatzm  oglichkeiten von SMIL aufzuzeigen. Zu Beginn wird eine kurze Einordnung von SMIL gegeben, welche die allgemeine Struktur von SMIL vorstellt. Im zweiten Teil wird dann das prim  are Einsatzgebiet, die Synchronisation mehrerer Streams erkl  art. Aus den vorgestellten Grundeigenschaften von SMIL lassen sich 114 Stefan Michaelis, Oliver Pauls RealNetworks dann komplexere Anwendungsm  oglichkeiten konstruieren, welche Gegenstand des letzten Teils dieses Abschnitts sind. 5.6.1 Allgemeine Einordnung von SMIL SMIL ist eine mit HTML vergleichbare Markup Sprache, die f  ur die Pr  asentation mehre- rer verschiedener Multimdia-Clips konzipiert wurde. Die Abk  urzung SMIL steht dabei f  ur Synchronized Multimedia Integration Language, wodurch das prim  are Einsatzgebiet, die Syn- chronisation von mehreren verschiedenen Multimedia-Streams, deutlich hervorgehoben wird. Die Gemeinsamkeiten mit HTML erm  oglichen so dem ge  ubten HTML Benutzer einen pro- blemlosen Einstieg in die Programmierung mit SMIL. SMIL-Files k  onnen mit jedem beliebigen Texteditor erstellt werden, der die Datei im plain Text Format speichern kann. Ein einfaches Beispiel f  ur eine solche SMIL-Datei ist in Abbildung 23 dargestellt. Abbildung 23: Einfaches Beispiel f  ur eine SMIL-Datei Das SMIL-File bewirkt, dass die Multimedia-Clips eins.rm, zwei.rm und drei.rm der Reihe nach abgespielt werden, ohne dass gesonderte Synchronisationsbedingungen eingestzt werden m  ussen. Dieses Beispiel zeigt deutlich die Parallelen zwischen HTML und SMIL allein durch die verwendeten Tags auf. Desweiteren ist es mit SMIL m  oglich,  ahnlich wie in HTML, das Layout einer Pr  asentation durch spezielle Kommandos zu ver  andern. Diese Funktionalit  at und damit verbundene Einsatzm  oglichkeiten von SMIL in Bezug auf benutzerspezi sche Anforderungen werden im letzten Teil dieses Kapitels vorgestellt. 5.6.2 Synchronisation Die Synchronisation mehrerer Multimedia-Clips wird durch foldende Methoden erreicht, die im weiteren Verlauf des Kapitels genauer vorgestellt werden:  Gruppierung in parallele und sequenielle Clips  Setzen genauer Start- und Endzeiten einzelner Clips  Individuelle Anpassgung der Spieldauer einzelner Clips F  ur die Synchronisationmehrerer Streams ist es notwendig, die unterschliedlichenMultimedia- Clips in Gruppen aufzuteilen. Diese Gruppierung erfolgt dann  uber die Tags < par > und < seq >. Durch diese einfache, vorgegebene Struktur innerhalb von SMIL-Dateien ist es leicht m  oglich, parallele und sequentielle Wiedergabe sowie Wiederholung von Multimedia-Clips zu realisieren. Die sequentielle Wiedergabe ist prinzipiell auch ohne die Angabe der entsprechen- den Tags m  oglich, jedoch ist bei kombiniertem Abspielen von sequentiellen und parallelen Clips die Angabe zur Unterscheidung der Abschitte notwendig. Beispiele f  ur solche Vorg  ange zeigen die Ausschnitte aus SMIL-Dateien in den Abbildungen 24 und 25. Stefan Michaelis, Oliver Pauls 115 RealNetworks clip1 clip2 clip3 clip4 Abbildung 24: Beispiel 1 f  ur paralleles und sequentielles Streaming In diesem Beispiel wird im ersten Schritt Clip1 vollst  andig abgespielt und im zweiten Schritt dann Clip2 und Clip3 gleichzeitig wiedergegeben. Ist dieser Vorgang abgeschlossen, so wird zum Schluss dann Clip4 wiedergegeben. Es ist o ensichtlich, dass eine Vertauschung der Tags ein v  ollig anderes Verhalten des Streams ausl  ost. clip1 clip2 clip3 clip4 Abbildung 25: Beispiel 2 f  ur paralleles und sequentielles Streaming In diesem Beispiel beginnen Clip1, Clip2 und Clip4 gleichzeitig mit der Wiedergabe, da sie alle parallel ablaufen. Clip3 startet erst dann, wenn Clip2 fertig ist und l  auft dann parallel zu Clip1 und Clip4. Die Abbildung 26 bietet eine Veranschaulichung der geschilderten Abl  aufe der Beispiele aus den Abbildungen 24 und 25. Abbildung 26: Wiedergabeverhalten bei unterschiedlicher Gruppierung Bei der Erstellung einer Pr  asentation mit SMIL ist es m  oglich die Synchronisation einzelner Clips noch zu verfeinern. Es besteht die M  oglichkeit genaue Angaben zur Start- und Endzeiten 116 Stefan Michaelis, Oliver Pauls RealNetworks bestimmter Clips sowie ihrer Spieldauer zu machen. Auf diese Weise gewinnt die Pr  asentation einen erh  ohten Grad an Flexibilit  at bez  uglich der Synchronisation im Vergleich zur einfachen Aufteilung in parallele und sequentielle Gruppen. Die Zeitangaben orientieren sich dabei an der Pr  asentations-Timeline. Diese startet, sobald die Wiedergabe eines Teils der Pr  asentation beginnt, wie in Abbildung 27 gezeigt wird. Abbildung 27: Timeline einer Pr  asentation mit SMIL Die in diesem Beispiel (Abb. 27) verwendeten Zeitangaben ver  andern den parallelen Ab- schnitt dahingehend, dass die Wiedergabe der beiden Clips zu unterschiedlichen Zeitpunkten gestartet wird. So beginnt Clip1 seine Wiedergabe sofort beim Start der Pr  asentation, da keine Angabe zum Startzeitpunkt gemacht wird. Clip2 wird erst nach einer Zeit von 28 Sekunden abgespielt, wodurch sich eine  Uberschneidung der beiden Clips von 2 Sekunden ergibt, weil Clip1 f  ur eine Dauer von 30 Sekunden l  auft. Es ergibt sich also eine Gesamtspielzeit von 39.3 Sekunden. Es ist o ensichtlich, dass ohne die Einf  uhrung dieser Zusatzelemente ein solches Wiedergabeverhalten nur sehr schwer durch " Zerst  uckelung\ der einzelnen Clips zu erreichen w  are. 5.6.3 Dynamische Ablaufanpassungen einer Pr  asentation Bei der Erstellung einer RealSystem Pr  asentation bietet SMIL einen weiteren groen Vorteil gegen  uber der Verwendung eines einfachen Streamingformats. Es ist m  oglich, das Wiedergabe- verhalten eines Streams den  aueren Gegebenheiten anzupassen, so dass der Betrachter immer die optimale  Ubertragung erh  alt, ohne unterschiedliche Streams ausw  ahlen zu m  ussen. Dies wird durch die Angabe von m  oglichen Alternativen innerhalb der SMIL-Datei erreicht, die an bestimmte Bedingungen gekn  upft sind. Die Abbildung 28 zeigt den prinzipiellen Aufbau einer solchen, durch das < switch > Tag eingeleiteten, Auswahlm  oglichkeit. Ein Anwendungsgebiet f  ur dieses Konstrukt ist das Angebot mehrsprachiger Pr  asentatio- nen, die sich bei der Wiedergabe auf die jeweilige Landessprache einstellen. So ist es z.B. einfach m  oglich, einen Vortrag als Videoclip zu erstellen und mit Audioclips in unterschiedli- cher Sprache anzubieten. Der Realplayer w  urde dann, durch das SMIL-File gesteuert, den zur Systemsprache passenden Audiostream ausw  ahlen und wiedergeben. Auf die gleiche Weise ist es m  oglich, eine Pr  asentation an unterschiedliche Bandbreiten anzupassen, ohne dabei unterschiedliche Adressen oder Server benutzen zu m  ussen. Das Beispiel Stefan Michaelis, Oliver Pauls 117 RealNetworks Abbildung 28: Verzweigungen in SMIL aus Abbildung 29 illustriert dieses Konzept anhand einer mehrsprachigen Videopr  asentation, die sich zus  atzlich an unterschiedliche  Ubertragungsbandbreiten anpasst. Abbildung 29: Mehrsprachige Videopr  asentation f  ur unterschiedliche Bandbreiten Zum Abschlu dieses Kapitels wird noch abrundend auf die Layout-M  oglichkeiten inner- halb einer SMIL-Pr  asentation eingegangen. Hintergrund dabei ist, dass wenn man mehrere Multimedia-Clips gleichzeitig in einem Realplayer Fenster abspielt, nat  urlich festgelegt werden muss, an welcher Position innerhalb des Fensters welcher Clip gezeigt wird. Zu diesem Zweck existieren in SMIL Befehle  ahnlich wie in HTML, durch welche die Gr  oe und Position der einzelnen Clips bestimmt wird. Auf eine konkrete Vorstellung der einzel- nen Kommandos soll hier aber verzichtet werden, da dies den Rahmen eines konzeptionellen  Uberblicks deutlich  uberschreitet. Ein Anwendungsbeispiel w  are etwa ein Videostream, zu dem zus  atzliche Informationen in Form von Untertiteln oder Werbung  ubertragen werden sollen. Dies ist besonders bei Live- 118 Stefan Michaelis, Oliver Pauls RealNetworks Streams denkbar die etwa in einigen Jahren den Empfang von Fernsehprogrammen ersetzen k  onnten. 6 Protokollanbindung Pr  asentationen sollten grunds  atzlich  uber speziell daf  ur designte Server angeboten werden, denn nur so kann optimale Performance erreicht werden. In diesem Abschnitt werden zun  achst die M  oglichkeiten vorgestellt, mit denen man eine RealSystem-Pr  asentation in einem Netzwerk anbieten kann. Als Server kommen ein herk  ommlicher Webserver, der  uber das HTTP-Protokoll angebunden wird und der RealSystem G2, der das RTSP-Protokoll 2 einsetzt, in Frage. Es wird nicht auf die konkreten Protokolle eingegangen, da diese Gegenstand anderer Vortr  age sind und als bekannt vorausgesetzt werden. Abbildung 30: Protokolle zur  Ubertragung von Streams Die Abbildung 30 stellt die Verbindung zwischen den entsprechenden Servern und der Client Anwendung, dem RealPlayer oder dem Webbrowser dar. Echtes Streaming ist nur von daf  ur konzipierten Pr  asentations-Servern m  oglich und Webserver realisieren das Streaming prinzipi- ell durch vollst  andiges Herunterladen der Clips, was bei groen Datenmengen und geringen Bandbreiten zu Problemen f  uhren kann. Genau dieser Sachverhalt wird in den folgenden Bei- spielabl  aufen genauer beleuchtet. Eine durch ein SMIL-File de nierte Pr  asentation wird jeweils  uber einen der beiden Servertypen bereitgestellt. Abbildung 31: Abspielen eines SMIL-Files von einem Real-Server 2 Real Time Streaming Protocol Stefan Michaelis, Oliver Pauls 119 RealNetworks Der Aufruf der SMIL-Datei erfolgt bei der Bereitstellung  uber einen RealServer (siehe Abb.: 31) in folgenden Schritten: 1. Unter Benutzung des HTTP Protokolls fordert der Webbrowser die SMIL-Datei vom RealServer an. Die Anfrage enth  alt zus  atzlich Parameter, die an RAMGEN  ubergeben werden. Dieser ist daf  ur verantwortlich, dass die ben  otigten Streams abgerufen werden k  onnen. 2. Der RealServer veranlat den Browser, das Realplayer-Plugin zu starten und  ubergibt ihm die URL der Pr  asentation. 3. Der RealPlayer fordert die SMIL-Datei vom RealServer unter Benutzung des RTSP- Protokolls an. 4. Der RealPlayer wertet das SMIL-File aus und spielt die entsprechenden Multimedia-Clips unter Verwendung des RTSP Protokolls ab. Durch die Benutzung des RTSP-Protokolls kann der Server w  ahrend der Pr  asentation Ein- u auf die zu  ubermittelnden Daten nehmen. So k  onnen Engp  asse in der Bandbreite durch Umstellung von zu  ubertragenden Paketen erreicht werden. Zu diesem Zweck wertet der Server die Priorit  aten der einzelnen Pakete aus und  ubermittelt w  ahrend eines Engpasses nur solche, die f  ur den reibungslosen Fortlauf der Pr  asentation notwendig sind. Ebenso ist es nur von ei- nem RealServer aus m  oglich SureStreams sowie Live-  Ubertragungen anzubieten, da ben  otigte Zusatzinformationen nur  uber RTSP bzw. RTCP 3 verf  ugbar sind. Abbildung 32: Abspielen eines SMIL-Files von einem Webserver Der Aufruf der SMIL-Datei erfolgt bei der Bereitstellung  uber einen Webserver (siehe Abb.: 32) in folgenden Schritten: 1. Der Webbrowser fordert das f  ur die Pr  asentation ben  otigte RAM-File vom Webserver  uber HTTP an. 2. Der Server  ubermittelt das RAM-File  uber HTTP. 3. Der RealPlayer wird als seperate Applikation vom Webbrowser gestartet und erh  alt dabei das RAM-File als Parameter 4. Der RealPlayer fordert die SMIL-Datei  uber HTTP vom Webserver an. 3 Real Time Control Protocol 120 Stefan Michaelis, Oliver Pauls RealNetworks 5. Die Pr  asentation wird  uber HTTP an den RealPlayer  ubermittelt. Dadurch, dass die gesamte Kommunikation zwischen Server und Player  uber HTTP abl  auft, k  onnen keinerlei Zusatzinformationen  uber den Pr  asentationsverlauf ausgetauscht werden. Bei aufwendigen Multimedia-Clips kann dies zu Unterbrechungen im Pr  asentationsablauf f  uhren. Da Surestreams nicht von Webservern aus angeboten werden k  onnen, kann nur  uber die Verwen- dung von SMIL-Dateien auf unterschiedliche Bandbreitenanforderungen reagiert werden. Da stets der gesamte Clip heruntergeladen werden muss, ist der Preroll bei aufwendigen Pr  asen- tationen unangenehm hoch. Desweiteren sind Vorw  artsspr  unge innerhalb einer Pr  asentation nicht m  oglich, denn es kann nur auf bereits heruntergeladenen Daten zugegri en werden. Der Anwender muss also warten, bis der kontinuierliche Download an der entsprechenden Stelle angelangt ist. Ein weiterer Nachteil beim Angebot von Streams  uber einen Webserver ist, dass dieser das Timeline-Konzept nicht unterst  utzt. So ist bei einer RealPix Pr  asentation der Preroll auch entsprechend hoch, denn der Download startet f  ur alle Bilder zu Beginn der Pr  asentation (Preroll). Eben so ist das Live-Encoding, welches f  ur einen Live-Broadcast ben  otigt wird nicht von herk  ommlichen Webservern, sondern nur von RealServern m  oglich. Zusammenfassend l  at sich also feststellen, dass f  ur multimediale Pr  asentationen mit geho- benem Anspruch ein RealServer einem herk  ommlichen WebServer klar vorzuziehen ist. 7 Sicherheitsaspekte Bislang haben sich die meisten Streaming-Anwendungen auf die Sicherheit des benutzten Web- Servers verlassen. F  ur die meisten aktuellen Anwendungen ist dies ausreichend. Im Zuge der st  andigen Verbesserung und Verbreitung von Multimedia-Streaming werden allerdings kom- merzielle Angebote interessant, die strengere Anforderungen an die Sicherheit von Servern und  Ubertragung stellen. F  ur Pay-per-View Filme muss sichergestellt werden, dass nur autorisierte (zahlende) Nutzer diese sehen k  onnen. Dies schliet den Abruf der Filme, die abh  orsiche- re Verbindung und eine nicht speicherbare Pr  asentation ein. RealSystem bietet verschiedene M  oglichkeiten um dieses Sicherheitsniveau zu garantieren und setzt dazu auf den M  oglichkeiten von Standard-Webservern auf. Ein funktionsf  ahiges System mit Firewall, sicheren Kernels und physikalischen Zugri sbeschr  ankungen wird vorausgesetzt. Dieses Kapitel stellt kurz die von RealSystem zur Verf  ugung gestellten Mechanismen vor, ohne tiefer auf die zugrundeliegenden Verfahren einzugehen. Ziel ist es, eine Zusammenfassung der M  oglichkeiten f  ur eine sichere  Ubertragung zu geben. Erster Punkt der Sicherheitsbetrachtung ist der Zugri auf die Daten des Servers. Je nach dem wie kritisch die Inhalte einer Pr  asentation sind, ergeben sich unterschiedlich aufwendi- ge Stufen des Schutzes. Die einfachste ist sicherlich das Verstecken der Daten (Security by Obscurity), so dass nur User, denen die zugeh  orige URL bekannt ist, darauf zugreifen k  onnen. Dieser Standard eignet sich allerdings nur f  ur die wenigsten Str  ome und bietet die geringste Sicherheitsstufe. Eine bessere Version ist die File System Security, die auch von dem aktuellen RealSystem G2 unterst  utzt wird. Hierbei wird bestimmten Rechnern der Zugri auf die Daten gestattet. Der Administrator hat die Aufgabe, eine Datenbank mit den Berechtigungen zu verwalten. Die Computer identi zieren sich dazu  uber ihre IP-Nummer. Es muss sichergestellt werden, dass die Rechner nicht von unberechtigten Usern benutzt werden k  onnen. Diese Methode eignet sich damit vor allem f  ur kleine Intranets. Ein weiteres Problem ist die einfache M  oglichkeit des Abfangens/Mith  orens der  Ubertragung einer IP und dem anschliessenden Maskieren der eigenen IP, was dem Angreifer die gleichen Privilegien verscha t wie dem autorisierten Nutzer. Die am weitesten verbreitete M  oglichkeit zur Gew  ahrleistung der Sicherheit ist die Appli- cation Level Security. Bei diesem Verfahren wird ein Zugang zu den Daten nur dann gew  ahrt, wenn der Anwender sich vorher zuverl  assig identi ziert hat. Die Privilegien der entsprechen- Stefan Michaelis, Oliver Pauls 121 RealNetworks den User werden dabei in einer Datenbank gehalten, die den Zugri auf die Streams regelt. Die RealSystem G2 Software unterst  utzt dabei folgende Verfahren zur Authentisierung:  Digest: Dieses Verfahren wurde basierend auf dem HTTP/1.0 RFC 2069 Standard ent- wickelt. Das Passwort wird nicht im Klartext sondern als Hash-String  ubermittelt. Dieses Verfahren ist damit relativ gut gegen Abh  oren gesichert.  HTTP-Basic: Hierbei werden Username und Passwort unverschl  usselt  ubertragen. Diese Form der Authentisierung eignet sich damit lediglich f  ur nicht kritische Bereiche.  NTLM: Windows NT Authentisierung. Dieses Verfahren soll die einfache Integration in bestehende NT-Netzwerke erm  oglichen.  Zerti kate: Die Identit  at des Anwenders wird durch den Austausch von Zerti katen  uber eine dritte Stelle veri ziert. Dieser Mechanismus soll sicherstellen, dass die Verbindung zwischen Server und Player direkt statt ndet und kein Zwischenglied in der Verbindung Identit  aten oder Aktivit  aten verf  alscht. Die Authentisierung des Anwenders l  at sich in zwei Bereiche unterteilen: Player-Based und User-Based. Das erste Verfahren bleibt v  ollig transparent f  ur den Nutzer. Nach einer Re- gistrierungsphase wird dem RealPlayer eine eigene ID zugewiesen und der Zugri auf gesicherte Inhalte erfolgt ohne weitere Abfragen. Dieses Verfahren ist nicht mit demjenigen gleichzusetzen, bei dem der RealPlayer eine weltweit eindeutige ID erzeugt und somit die Zugri e des Users protokolliert werden k  onnen. Im Gegensatz dazu verlangt das Verfahren zur Authentisierung des Anwenders zur Registrierung das Einverst  andnis und die Kommunikation mit dem Nutzer. Bei diesem Verfahren muss entweder sichergestellt werden, dass der Zugri auf den RealPlayer nur den zul  assigen Personen erlaubt wird, oder die Clips von einer ganzen Gruppe ohne feste Computerzuteilung gesehen werden (z.B. Trainingsvideos in Schulungsr  aumen). Das zweite Verfahren (User-basierend) verlangt ebenfalls eine Registrierungsphase, in der Username und Passwort auf dem Server festgelegt werden. Im Gegensatz zur ersten M  oglichkeit wird hier vom Andwender bei jedem Zugri auf einen gesicherten Inhalt die Eingabe des Na- mens und des Passwortes verlangt. Anwendungsgebiete hierf  ur sind z.B. Pay-per-view Filme, bei denen der Nutzer eindeutig identi ziert werden muss. Sollen beide Verfahren f  ur dieselben Inhalte und Web-Seiten eingesetzt werden, muss f  ur jedes ein eigener RealServer eingerichtet werden. Neben den Verfahren zur Sicherstellung der Identit  at des Users bietet RealSystem folgende Zugri sm  oglichkeiten auf die Daten:  Directory, File or Event-based access: Vollzugri auf die Daten.  Countdown access: Der Anwender bekommt ein " Zeitkonto\. Auf diesem Konto wird eine Zeit festgehalten, f  ur die auf die Daten zugegri en werden kann. Bereits gesehene Minuten werden entsprechend abgezogen.  Countup access: Der Anwender darf den Clip  uber eine beliebige Zeit ansehen, die Zeit wird allerdings  uberwacht und aufgezeichnet.  Date-based access: Vollzugri bis zu einem bestimmten Datum. Nach der Sicherstellung der Identit  at des Anwenders ist eine gesch  utzte  Ubertragung der Daten wichtig. Grunds  atzlich besteht die M  oglichkeit, die Clips durch den Secure Sockets Layer (SSL) zu schicken, dies wird aber nicht empfohlen. Der durch die Anwendung von SSL produ- zierte Overhead macht einige Vorteile des Streamings wieder zunichte. Die Zeit f  ur Codierung und Decodierung geht zu Lasten des Clips, was einen Verlust an Qualit  at mit sich bringt. Zus  atzlich ist das f  ur Streaming in der Regel verwendete Protokoll UDP, f  ur SSL-  Ubertragun- gen TCP. 122 Stefan Michaelis, Oliver Pauls RealNetworks RealNetworks sieht keinen Nachteil darin, dass SSL nicht verwendet werden sollte. Nach ihren Angaben ist der Vorgang des Zusammenf  ugens von w  ahrend einer  Ubertragung abgefan- genen Paketen nicht in vern  unftiger Zeit durchf  uhrbar. Die Gefahr, dass eine Pr  asentation von nicht berechtigten Personen benutzt wird, sei damit sehr gering. Desweiteren besteht bei der Codierung von Str  omen die M  oglichkeit, eine Option zu setzen, die das Speichern auf der Host-Seite verbietet. Damit kann der Anwender die Pr  asentation an- sehen, aber nicht lokal sichern oder verarbeiten. Problematisch ist dagegen das sofortige Weiter- leiten der Pakete an andere Player. Der Server besitzt dar  uber keine Kontrollm  oglichkeit mehr, d.h die Streaming-Daten m  uten im Verlauf der Pr  asentation sofort nach ihrer Darstellung vernichtet werden. Sch  atzt man abschlieend die Wirkung der Sicherheitsstandards ab, so o enbaren sich einige L  ucken. Vollst  andige Sicherheit oder ein  ahnliches Ma z.B. wie bei heutigen Banktransaktio- nen 4 , wird nicht erreicht. Sollte Multimedia-Streaming in einiger Zeit auch in gr  oerem Umfang kommerziell interessant werden, muss gerade der Sektor Sicherheit weiter ausgebaut werden. 8 Ausblick Durch die hohe Akzeptanz des Internets gewinnt das Streaming multimedialer Daten zuneh- mend an Popularit  at. Der heutige Stand der Technik erlaubt bereits ansprechende Pr  asen- tationen. Insbesondere sind im Audio-Bereich  Ubertragungen in Radioqualit  at  uber Modem- Verbindungen zu empfangen. F  ur die Video-  Ubertragung sind die Grundsteine f  ur eine weitere Entwicklung gelegt. St  andige Verbesserungen der Codecs f  uhren zu einer weiteren Verringerung der ben  otigten Bandbreite bei gleichzeitiger Qualit  atssteigerung. Der kommerzielle Einsatz wird derzeit noch durch die geringe Leistungsf  ahigkeit der Hardware im Bezug auf Bandbreite ge- hemmt. Die technischen Voraussetzungen (z.B. durch entsprechend kon gurierte Server) sind verf  ugbar, so dass in diesem Sektor aufgrund der Weiterentwicklung der Netzanbindung ein wachsender kommerzieller Markt besteht. Es ist in einigen Jahren durchaus vorstellbar, dass sich der Schwerpunkt im Konsum auf das Internet verlagert. Dieser Trend k  onnte bei entsprechender Qualit  at durchaus eine Kon- kurrenzposition zum Fernsehen einnehmen. Sollte sich diese Tendenz best  atigen, ist damit zu rechnen, dass weitere Firmen in dieses Marktsegment dr  angen und die Entwicklung forcieren. 4 Stichwort: HBCI (HomeBankingComputerInterface) Stefan Michaelis, Oliver Pauls 123 RealNetworks Literatur [Real] http://www.real.com: Startpunkt f  ur alle Informationen zu RealNetworks [RPG] RealNetworks: RealSystem G2 Production Guide, http://www.realnetworks.com/devzone/library: Grundlegende Informationen zum Produktionsproze (RealAudio, RealVideo. . . ) [RAG] RealNetworks: RealSystem G2 Administrators Guide, http://www.realnetworks.com/devzone/library: Serverdokumentation [G2Kit] http://proforma.real.com/mario/tools/authkit.html, Weiterf  uhrende Dokumen- tation (enth  alt u.a. den Production Guide und gesonderte Dokumentation zu RealPix und RealText sowie einige Tools) [Download] http://www.realnetworks.com/products/: Downloadseite der freien und kommer- ziellen Basiswerkzeuge 124 Stefan Michaelis, Oliver Pauls Gerd Zellmer 125 Das Advanced Streaming Format (ASF) Gerd Zellmer FB Informatik, Uni Dortmund G.Zellmer@online.de Zusammenfassung Dieser Vortrag über das Advanced Streaming Format (ASF) soll einen Einblick in den Aufbau, die Funktionalität und Einsatzgebiete von ASF geben. Der Schwerpunkt liegt dabei auf dem Einsatz der ASF- Streamingtechnologie im Internet. 1 Was ist ASF ? Advanced Streaming Format (ASF) ist ein Dateiformat zum Speichern von Multimediadaten. Wie mit „advanced“ angedeutet, handelt es sich um ein Dateiformat, welches im Gegensatz zu vielen anderen Dateiformaten viele verschiedene multimediale Elemente vereint. Dazu gehören Text, Grafik, Animationen, MIDI, Video (AVI, MPEG...) und Audio (WAV). Diese Multimediadateien können lokal gespeichert, wie auch über Netzwerke übertragen werden. In diesem Vortrag liegt der Schwerpunkt auf letzterem. Das Advanced Streaming Format (ASF) ist ein Präsentationsformat und im Gegensatz zu einem Editierformat zur effizienten Wiedergabe der multimedialen „Streams“ vom Server zum Client entwickelt worden. ASF-Dateien können durchaus auch editiert werden, doch ersetzen sie nicht die Editierwerkzeuge und Tools zum Editieren von high-end Videos und Animationen. Ziel war es, mit dem Advanced Streaming Format (ASF) einen Standrad zu schaffen, der alle gängigen Multimediaformate unterstützt, sie in einem Datenstrom vereint und diesen dann über eine Vielzahl von Protokollen (HTTP, UDP, TCP, RTP ...) über das Netzwerk überträgt. Communications Protocol HTTP, UDP, TCP, RTP, etc. ASF File Streams Server Client ASF File Playback Streams Abbildung 1-1: Streaming Wiedergabe einer ASF-Datei Das Advanced Streaming Format (ASF) Gerd Zellmer126 2 Zeitliche Entwicklung des Advanced Streaming Format Frühere Multimediaformate wie WAVE, AVI und QuickTime wurden nicht zum Übertragen über ein Netzwerk entwickelt. Sie entstanden in einer Zeit, in der Einzelplatzrechner noch weiter verbreitet waren als Netzwerkrechner und unter der Annahme, daß diese Einzelplatzrechner eine ausreichend große Datenübertragungsrate haben. Da heute Netzwerke, insbesondere das Internet, eine große Verbreitung haben, ist es unerlässlich, neue Möglichkeiten der Übertragung von multimedialen Daten über diese Netze, ohne lange Downloadzeiten (möglichst live), einzusetzen. Dafür gab es viele Ansätze, jeder Hersteller ging jedoch seinen eigenen Weg. Es entstanden eine Menge nicht zueinander kompatibler Dateiformate, wie z.B. ASFv1 von Microsoft, RMFF von Real Networks, VDO von VDONet, VIV von Vivo und VXI von Vxtreme. Das machte den Austausch von Multimediadaten untereinander sehr schwierig. Man einigte sich schließlich darauf, gemeinsam einen neuen Standard aus all diesen Formaten zu entwickeln. Mit dem Advanced Streaming Format (ASF) wurde ein Schritt in diese Richtung gemacht. Ziel war es, einen Standard zu entwickeln, der es erlaubt, Multimediadaten effizient über Netzwerke zu übertragen. Des weiteren ist es das Ziel, der Industrie einen Standard ähnlich des VHS und NTSC zu liefern. Also schlossen sich die Entwickler von WAVE, AVI, ASFv1, VIV, RMFF, AVI2 und VXI, allen voran Microsoft, Real Networks, Intel, Adobe und Vivo zusammen, und entwickelten das Advenced Streaming Format (ASF). Erweitert und verbessert wurde das Advanced Streaming Format (ASF) von über 40 weiteren Firmen1. Bis zur endgültigen Version waren über 100 Firmen und Universitäten2 an der Entwicklung beteiligt. 1 Apple Computer, Asymetrix, Avid, Cakewalk Music Software, Dictaphone Company, Digidesign, Digital Lava, Digital Media Technologies, Digital Renaissance, Dolby Laboratories, The Duck Corporation, Eloquent, Ephyx Technologies, Frauenhofer Institute, Image Mind, Liquid Audio, Lucent Technologies, Macromedia, MGI Software, Olivr, Oracle, Perceptual Robotics, Precept Software, Silicon Graphics, Sonic Foundry, Starlight Networks, Syntrillium, Telos Systems, VDOnet, Vidsoft, Voxware, Pitango Multimedia, Waves, WebTV, Xing Technology 2 3Com, Adobe, NRGPR.com, Apple, Telos Systems, Imaginet Design, Avid, Bell Atlantic, Cakewalk, Intel, Digital Renaissance, Digital Lava, Georgia Tech, Duck Corp, Eloquent, Ephyx, Eurodat, Microsoft, FHG, ImageMind, Starlight Networks, Isone, Liquid Audio, Live Picture, Macromedia, Perceptual Robotics, Precept, Progressive Networks, YOUBET.com, Sonic Foundry, Syntrillium, VDONet, Vivo, Voxware, Xing Technology, Aristech, MOT.com, CODETEL.com, Nextel, Earthlink, SOTON.AC.UK, SaskTel, WebTV, IBM, Icast, Sun, Tandem, Decinc, ALGONET.SE, EIDOS.CO.UK, ONLINE.NO, Siemens, InfoNova, Integra, SBC, Cornell, SmallPlanet, Netscape, TMMNA, AccessPro, OneTouch, Creaf, Hitachi, UniNetT.NO, MACNICA.CO.JP, Cyclovision, Televitesse, CSI-Health, Office of Naval Research, Oracle, Iterated, UMR, CNET, NCSA.UIUC, INRIA, Digev, University of Trieste, AmericaSTTV, Saville.com, Aerojet, Activate, MediaOne, Today1, Virtual Café, SAATEL.IT, Susanville.com, Hal-PC.org, Best.com, Redbox.net, Jenn.com, InternetMCI.com, KC-INC.net, VideoMaker, Adaptive Media, Enabel, Samsung, Learning Co, Flash.net, Motics.com, Stellar.com, Pipex.com, Hollyworlds, USLead, Bayarea.net, Centillion Data, FP3D, Telemedia, Duplexx, Lucent Technologies, Direct.CA, Wide.AD.JP, NEC, University of Wisconsin, Eidos, Fivebats, Perey.com, Vosaic, Soton.AC.UK, OZ.IS, Netdesign.net, University of Ulm, Silicon Graphics Inc, LTH.SE, SEA.CO.IL, Winnov, Mediastra, Portal.CA, Periphere.BE, MC.net, 4CS.com, Uni-Paderborn.de, University of California San Diego, AT&T, Boystown, UMN.edu, DalSemi.com, Livewire Entertainment, Sinolib.ust.hk, Philips, Boeing, Nokia, Planetepc.fr, Disceurope.co.uk, Merging.com, Kolumbus.fi, Hisec.com, Vela.com, Cyberway, Digidesign, Columbia University, ABM.COM.SG, British Telecom, Washington University, Optivision, Array, SQLI, Berkom.de, Cisco, Pitango Multimedia, Dolby, Waves, Videopress Software, MGI Software Das Advanced Streaming Format (ASF) Gerd Zellmer 127 2.1 Übersicht über die zeitliche Entwicklung des Advanced Streaming Format (ASF): i.) 1996 Entwickelt Microsoft die erste Version von ASF und implementiert sie in NetShowTM ii.) 14. August 1997: Erste draft Version von Microsoft, Real Networks, Intel, Adobe und Vivo war fertig. iii.) 10. September 1997: Zweite draft Version unter Mitwirkung von 40 weiteren Firmen fertiggestellt. iv.) 30. September 1997: Komplette Spezifikation fertiggestellt. v.) 1.Quartal 1998: Developertools stehen zur Verfügung . 3 Die Eigenschaften von ASF Das Advanced Streaming Format (ASF) ist ein erweiterbares Dateiformat, konstruiert um synchronisierte Multimediadateien zu speichern und diese über viele verschiedene Netzwerke und Protokolle übertragen zu können. Doch auch das lokale Abspielen der Dateien ist möglich. Das Advanced Streaming Format (ASF) unterstützt die verschiedene Medientypen wie Text, Grafik, Audio, Video, URLs und Animationen. Dabei ist es weitgehend egal, in welcher Dateiform diese Daten vorliegen und wie sie zusammengesetzt werden sollen. Mit den entsprechenden Tools (z.B. Microsoft Media Tools) werden diese Dateien einfach zusammengefügt, bearbeitet und erst dann zu einer ASF- Datei konvertiert. Dabei können verschiedene Bandbreiten für die Übertragung festgelegt werden. So z.B. kann ein und die selbe ASF-Datei eine Präsentation in verschiedenen Bandbreiten enthalten (z.B. 28.8k, 56K ...). Der Client wählt dann die Bandbreit, die das Netz ihm bereitgestellt hat, und erhält den Datenstrom in der für ihn am besten geeigneten Qualität. Nicht nur die Bandbreite kann gewählt werden, auch ist es möglich, die Präsentation in vielen verschiedenen Sprachen zu produzieren. Dabei kann es sich um Audio oder auch Texte handeln. Der Client kann dann die gewünschte Sprache wählen, in der er die Präsentation abspielen möchte. Des weiteren können innerhalb einer Präsentation Sprungmarken definiert werden, zu denen dann beliebig gesprungen wird. Diese Marken können auch noch nachträglich eingefügt und geändert oder entfernt werden (abgesehen von Liveübertragungen). Auch das Springen an beliebige Stellen in der Datei ohne Sprungmarke ist möglich (schneller Vor- bzw. Rücklauf). Eine weitere Eigenschaft des Advanced Streaming Format (ASF) ist, daß es unabhängig von dem Betriebssystem, Datenkommunikationsprotokoll und der Beschaffenheit der Multimediaumgebung ist. Das heißt, daß das ASF-Dateiformat ein sehr universelles Dateiformat ist, welches sich an viele Situationen und Umgebungen anpaßt. Das Advanced Streaming Format (ASF) Gerd Zellmer128 4 ASF Dateistruktur Eine ASF- Datei enthält drei übergeordnete Objekte. Ein „Header Objekt“, ein „Data Objekt“ und ein „Index Objekt“. Das „Header Objekt“ und das „Data Objekt“ müssen unbedingt in der ASF-Datei vorhanden sein und sie dürfen jeweils nur einmal vorkommen. Das „Index Objekt“ ist optional, aber es wird empfohlen, es grundsätzlich mit zu verwenden. Eine minimale Ausführung einer ASF- Datei besteht erstens aus einem „Header Objekt“, welches ein „File Properties Object“, ein „Stream Properties Object“ und ein „Language List Object“ enthält. Es muß immer am Anfang in einer ASF-Datei stehen. Zweitens aus einem „Data Objekt“, welches die „ASF data units“ enthält und direkt dem „Header Objekt“ folgt. An ASF File Header Object Data Object Index Object Header objects Data units Abbildung 4-1: ASF – Dateiaufbau 4.1 Die ASF Object-definition Die Basiseinheiten der ASF-Dateien sind die ASF-Objekte. Jedes ASF-Objekt hat den gleichen Aufbau. Die ASF-Objekte sind in drei Bereiche aufgeteilt. Den ersten Teil bildet ein 128-Bit „global unique identifier“, der zweite Teil ist ein 64-Bit großes Objekt, welches die Länge der folgenden Daten angibt. Der dritte und letze Teil ist ein Datenteil mit variabler Länge, welche den eigentlichen Inhalt der ASF- Datei enthält. Also hat das gesamte Objekt eine Länge von 24-Bytes zuzüglich der Länge der Daten-Bytes. Object ID Object Size 16 Bytes 8 Bytes ?? Bytes Object Data Abbildung 4-2: Das ASF Object Das Advanced Streaming Format (ASF) Gerd Zellmer 129 Diese Dateiorganisation wurde in Anlehnung an das „Resource Interchange File Format“ (RIFF) gewählt, da dieses die Basis für das AVI- und WAVE- Dateiformat ist, welches langfristig durch das ASF- Dateiformat ersetzt werden soll. ASF-Datei Objekte Optional Objekt instanzen Beschreibung Header Object Nein Nur eines Das “Header Object” beschreibt den ASF- multimedia stream als Ganzes. Es enthält globale, sowie spezifische Informationen über den Inhalt des streams, optionale Indexinformationen, optionale Keyinformationen und media stream Definitionsinformationen. Diese Informationen können separat über ein “sicheres” Protokoll übertragen werden. Data Object Nein Nur eines Dieses Objekt beinhaltet den Multimedia- Dateninhalt. Es enthält die “Daten units”, welche in Paketen nach Sendezeit geordnet organisiert sind. Index Object Ja mehrere Dieses Objekt enthält Indexeinträge zu den “Daten units” innerhalb der Daten Objekte. Diese “Index Objekte” sind nicht Teil des Streaming. Sie dienen zum schnellen Nachschlagen, Suchen und Überwachen. Des weiteren können sie wichtige Informationen über den multimedialen Inhalt enthalten, wie z.B die video key frames. Other object Ja mehrere Die ASF-Definition erlaubt auch die Nutzung anderer Objekte, welche durch ihren eigenen UUID (universal unique identifier) definiert sind. Abbildung 4-3: ASF Datei-Objekte 4.2 Das ASF Header Object Das ASF Header Object ist eine Bytesequenz am Anfang einer jeden ASF- Datei. Sie beschreibt dem Client, welche Daten er erhalten wird, wenn er die Datenübertragung beginnt. Ohne diese Informationen wäre es dem Client unmöglich zu entscheiden, was er mit den erhaltenen Daten anfangen soll. Das ASF Header Object ist das einzige, welches auch andere ASF- Objekte enthalten kann. Dies sind im Einzelnen folgende: 4.2.1 File Properties Object Das File Properties Object enthält Basisinformationen über die ASF- Datei. So z.B. das Erstellungsdatum oder die Anzahl der verschiedenen Streaming- Typen in dieser ASF- Datei. 4.2.2 Stream Properties Object Das Stream Properties Object enthält die medienspezifischen Angaben zu jedem in der ASF- Datei enthaltenen Stream. So gibt es z.B. für ein Audio-Stream die Samplerate pro Sekunde an, oder bei einem Videostream die Höhe und Breite der Frames. ASF kennt sieben Kernmedien: Das Advanced Streaming Format (ASF) Gerd Zellmer130 Audio, Video, Image, Timecode, Text, MIDI, und Command. Auch ist es möglich, über das Data unit Extension Object eigene Medientypen (andere als die sieben schon vorhandenen) zu definieren. 4.2.3 Content Discription Object Dieses Objekt dient zum Speichern von individuellen Informationen der Präsentation. Das sind z.B. Name der Präsentation, Name des Autors, Copyright und andere Beschreibungen. 4.2.4 Script Command Object Dieses Objekt enthält Angaben über URLs, die zwischendurch aufgerufen werden. Oder aber auch Befehle andere Dateien zu laden, welche dann in einem separaten Fenster dargestellt werden sollen. 4.2.5 Marker Object Mit diesem Objekt erhält der Autor die Möglichkeit, Marken in eine laufende Präsentation zu setzen. Er kann z.B. einem Song einen Titel geben, oder Überschriften für eine laufende Präsentation definieren, die dann automatisch angezeigt werden und im richtigen Augenblick wechseln. 4.2.6 Component Download Object Hier stehen alle Informationen, welche benötigt werden, um die Datei abzuspielen, also die Version des Tools zum Abspielen und die Adresse, an der die nötige Version zum Download bereit steht. 4.2.7 Stream Groups Object Gibt dem Stream eine Gruppenzugehörigkeit. 4.2.8 Scalable Object Der Basisstream ist so gespeichert, daß der Client im Stande ist ihn auch bei schlechten Verbindungen abzuspielen. Der Stream kann aber auch in mehreren Qualitäten gespeichert sein. Das scalable Object gibt an, in welchen Qualitäten der Stream vorhanden ist. 4.2.9 Prioritization Object Hier kann der Autor Prioritäten für seine Präsentation angeben. Je nach Netzwerkbandbreite ist es sinnvoll, bei einem Video dem Ton eine höhere Priorität zu geben als dem Bild. Damit hätte der Betrachter zwar kein fortlaufendes Bild, aber der Ton wäre durchgehend und nicht abgehackt. Diese Priorität ist nicht immer bindend. Schaltet der Betrachter den Ton mit dem Mute-button aus, so kann die Tonpriorität aufgehoben werden. Dadurch erhält man eine höhere Videoqualität. 4.2.10 Mutual Exclusion Object Sind in einer ASF- Datei verschiede Sprachen oder Bandbreiten vorhanden, so werden alle außer der mit der Mutual Exclusion Eigenschaft ignoriert. 4.2.11 Inter-Media Dependency Object Macht verschiede Medienstreams voneinander abhängig. 4.2.12 Rating Object Stellt die W3C Plattform for Internet Content Selection (PICS) – Definition zur Verfügung. 4.2.13 Index Parameters Object Liefert Informationen, um den originalen Index der Datei wieder herzustellen. Das Advanced Streaming Format (ASF) Gerd Zellmer 131 4.2.14 Color Table Object Stellt eine ColorTable für den Media Stream zur Verfügung. Es können auch mehrere dieser Color Tables vorhanden sein. Für jeden Media Stream einer. 4.2.15 Language List Object Dieses Objekt gibt an, in welchen Sprachen die Präsentation vorhanden ist. Header Object File Properties Global file attributes Prioritization Relative stream priorities Content Description Bibliographic info Stream Properties Media stream characteristics Scalable Scalability relationships among streams Component Download Playback component info Stream Groups Logical groups of streams Mutual Exclusion Mutual exclusivity relationships Rating W3C PICS ratings Inter-Media Dependency Dependency relationships Index Parameters Info for ASF index Abbildung 4-4: Aufbau des Header Objects 4.3 Das Data Object In den Data Objects ist der aktuelle Multimediainhalt gespeichert. Zeigt die ASF-Datei gerade ein Video, dann sind in den Data Objects die Bilder und der Sound des aktuellen Videos gespeichert. Das Datenfeld des Data Objects ist in viele ASF-„data packets“ zerlegt. Alle diese Pakete haben den gleichen Aufbau. Abbildung 4-5: ASF-„Daten packet“ Das Advanced Streaming Format (ASF) Gerd Zellmer132 Der „Packet Header“ beinhaltet die Informationen, um die Datei in der richtigen Reihenfolge zu streamen. Die Packet Data sind die zum Header gespeicherten Daten, die gerade angezeigt werden. Jedes Datenpaket kann nur ein und den selben Datentyp beinhalten. So kann eine Paket mit Videobildern keinen Sound enthalten und umgekehrt. Die Größe der Datenpakete ist nicht vorgegeben. Es können viele Videoframes in einem Paket enthalten sein. Auch ist es erlaubt, nur ein Frame oder nur ein Teil eines Frames in ein Paket zu packen. Häufig wird genau ein Frame in einem Paket übermittelt. Beim Senden einer Präsentation vom Server zum Client werden die Pakete nacheinander abgeschickt. Dabei werden die Pakete vom Client in der Reihenfolge zusammengesetzt, wie der Server sie abgeschickt hat. Je nach Geschwindigkeit des Netzwerks und gegebener Priorität werden die Pakete auch vom Server geordnet und abgesendet. Dabei wird nicht auf den Typ der zu sendenden Daten geachtet. 4.4 Index Object Ein Index Object ist nicht unbedingt notwendig. Durch ein Index Object besteht die Möglichkeit, an bestimmte Stellen in der ASF-Datei zu springen. Es ermöglicht auch den schnellen Vor- und Rücklauf innerhalb einer ASF-Datei. 5 Real Time ASF- Übertragungen über RTP Wie schon angedeutet, können Präsentationen mit ASF nicht nur effizient über das Netzwerk übertragen und vom Client wiedergegeben werden, sondern auch in Echtzeit abgespielt werden. Dabei werden die Daten beim Aufnehmen (Video und/oder Audio) direkt in das ASF-Dateiformat umgewandelt und über das „Real-Time Transport Protocol“ (RTP) übertragen. ASF-Dateien besitzen zwei Zeitstempel. Zum einen die Sendezeit und zum anderen die Präsentationszeit. Diese Zeiten sind notwendig, um die Präsentation später wieder richtig zusammenzufügen. Durch die Präsentationszeit läuft die Präsentation immer in der richtigen Geschwindigkeit ab. Mit der die Sendezeit können verlorengegangene Pakete festgestellt und auch die verschiedenen Streams richtig zusammengesetzt werden. Bei einer Real-Time-Übertragung (Live-Übertragung) wird nur der Sendezeitstempel verwendet, um die Pakete zu ordnen, und ggf. verlorene Pakete zu bemerken. Im „Header Object“ einer ASF-Datei sind alle nötigen Informationen gespeichert, die der Client benötigt, um die ASF- Datei abspielen zu können. Deshalb muß das „Header Object“ in jedem Fall vor den „Daten Objekten“ einer ASF-Datei verarbeitet werden. Ohne die Header-Informationen sind die „Data Objects“ wertlos. Es wäre aber auch unsinnig, mit jedem RTP-Paket den Header mitzusenden. Um das Fehlen des „Header Objects“ beim Einstieg eines Client in einen Live Videostrom zu vermeiden, gibt es verschiedene Möglichkeiten. Zum einen könnte das „Header Object“ über ein anderes Protokoll übertragen werden. Eine andere Möglichkeit wäre, alle paar Sekunden das „Header Object“ mitzusenden. Das würde aber wieder dem Netzwerk mehr Bandbreite abverlangen. Eine bessere Möglichkeit besteht darin, die Präsentation über ein Real Time Streaming Protokoll (RTSP) zur Verfügung zu stellen. Ein Mediaserver würde über das RTSP Protokoll eine „Präsentationsbeschreibung“ bereitstellen, die dann über das RTP Protokoll übertragen werden kann. Diese „Präsentationsbeschreibung“ würde dann das ASF „Header Object“ zur Verfügung stellen. Das Advanced Streaming Format (ASF) Gerd Zellmer 133 6 Kompatibilität von ASF mit anderen Formaten Entwickelt wurde ASF nicht, um andere Dateiformate wie MPEG und QuickTime zu ersetzen, sondern um ein Dateiformat zu schaffen, welches ein hohes Maß an Flexibilität und Kompatibilität besitzt. 6.1 ASF und AVI ASF ersetzt AVI. Daß das nicht von heute auf morgen auf einen Schlag geschieht, ist sicher klar. Aber es ist das Ziel, AVI völlig durch ASF zu ersetzten. AVI wurde vor langer Zeit entwickelt, lange bevor das Internet eine so bedeutende Rolle spielte wie heute. AVI (Audio Video Interleave) ist zum Speichern und Abspielen von digitalen Videos auf Festplatte und CD-Rom entwickelt worden und nicht zum Übertragen der digitalen Videodaten über ein Netzwerk wie das Internet. Der Standard im Internet ist heute die HTML-Seite. Zur informativen Darstellung gehören nicht nur einzelne Bilder, Text und Animationen, sondern auch Seiten, in denen alles vereint ist. ASF liefert diese Möglichkeit. ASF-Dateien und AVI- Dateien bestehen beide aus einem „Header Object“, „Data Object“ und einem optionalen „Index Object“. Bei beiden beginnt der Header mit einem Dateneigenschaftenblock. Aber ASF-Dateien und AVI- Dateien haben nicht nur Gemeinsamkeiten. Im Gegensatz zu AVI- Dateien sind die ASF- Dateien objektorientiert aufgebaut. Hat eine ASF- Datei viele verschiedene Objekte, so hat eine AVI- Datei an dieser Stelle sogenannte „chunks“. Diese „chunks“ sind nicht so universell einsetzbar wie die Objekte der ASF- Dateien. Als identifier nutzen die ASF- Dateien die sogenannten GUIDs, welche variabel den Dateninhalt der Datei beschreiben. Diese GUIDs sind einmalig und können erweitert werden, um eine neue Medienart zu beschreiben. AVI-Dateien dagegen nutzen fest vorgegebenen FOURCC (four-character code). Dieser ist fest und nicht erweiterbar. Auch bei den Längen-Bytes gibt es große Unterschiede. AVI verwendet eine 4-Byte Längenangabe für die Daten, was dazu führt, daß Videos nicht länger als ca. 2,5 – 3 Stunden seien können. ASF verwendet eine 8-Byte Längenangabe für die Daten. Das ergibt viele Stunden Video in einer Datei. Das weiteren hat eine ASF- Datei viele im „Header Object“ festgelegte Eigenschaften. Diese sind der AVI- Datei völlig fremd. AVI- Dateien sind auf eine feste Framerate ausgelegt. Dies ist sehr hinderlich in der Welt des Internets, da sich dort die zur Verfügung stehende Bandbreite ständig ändert. ASF paßt sich immer der aktuellen Bandbreite an. AVI kennt nur Audio und Video. Alle anderen multimedialen Elemente werden nicht unterstützt. ASF dagegen kennt von Grund auf schon sieben Medienarten (Audio, Video, Image, Timecode, Text, MIDI, und Command) und ist dort immer noch erweiterbar. 6.2 ASF und MPEG-1, MPEG-2 und QuickTime MPEG-1 und MPEG-2 sind Videoformate von sehr hoher Qualität. Sie benötigen aber eine sehr große Netzwerkbandbreite (bis zu 1 MB) zum Übertragen von Videos. Steht eine solche Netzwerkbandbreite zur Verfügung, ist MPEG-1 und MPEG-2 durchaus mit unter den ersten Formaten, die man wählen würde. In dem Zeitalter des Internets sind Bandbreiten von 1 MB nur für die Wenigsten zu erreichen, für den normalen Anwender jedoch illusorisch. Auch unterstützen MPEG-1 und MPEG-2 nur Audio und Video und sonst keine anderen multimedialen Elemente. Deshalb ist es sinnvoll, für Netzwerke mit kleiner Bandbreite, wie das Internet, ASF-Dateien an Stelle der von MPEG-1- oder MPEG-2- Dateien zu nutzen. Das Advanced Streaming Format (ASF) Gerd Zellmer134 Feature MPEG-1 MPEG-2 QuickTime ASF Local and network playback Local playback YES YES YES YES HTTP server delivery YES YES YES YES Media server delivery YES YES NO YES Extensible media types NO NO YES YES Component download NO NO NO YES Scalable media types NO YES NO YES Prioritization of streams NO NO NO YES Multiple language support NO NO NO YES Environment independence NO NO NO YES Rich inter-stream relationships NO NO NO YES Expandability NO NO NO YES Abbildung 5-1: ASF-Eigenschaften gegenüber anderen Formaten (Stand 1997 Quelle: Microsoft) QuickTime wurde wie auch MPEG-1 und MPEG-2 nicht im Hinblick auf das Internet entwickelt. Alle diese Formate stammen aus der Zeit, bevor das Internet zum „alltäglichen“ Medium wurde. QuickTime ist durchaus auch streaming-fähig, aber seine Vorzüge und Schwerpunkte liegen anders. QuickTime ist ein multimediales Dateiformat, welches den gesamten Zykus abdeckt wie: aufnehmen, bearbeiten, übertragen und abspielen. Es existieren Tools zum Bearbeiten der Präsentationen. Doch die Stärken von QuickTime liegen nicht im Übertragen der Daten über das Netzwerk. Da ist es sinnvoller, vor dem Übertragen der QuickTime-Dateien diese in ASF abzuspeichern. Das ASF- Format wird über kurz oder lang das AVI- Format ablösen. Das gilt nicht für die anderen Formate wie MPEG-1, MPEG-2 und QuickTime und ist auch nicht so geplant. ASF soll vielmehr in Zukunft als ein neuer Standrad neben diesen vorhandenen Formaten dienen. Dabei bedient sich ASF auch dieser anderen Formate, wie z.B. MPEG-1 und MPEG-2 als Komprimierungswerkzeug in einer ASF-Datei. Genauso können QuickTime-Dateien als ASF-Dateien abgespeichert werden, und somit mit der ASF-Streamintechnologie übertragen werden. Die Zeit wird zeigen, ob ASF sich als Standard etablieren kann und wird. 6.3 ASF und VXF, RA, RMFF und VIV Bevor ASF als Multimediaformat entwickelt wurde, gab es nur M-JPEG, MPEG-1, MPEG-2 und QuickTime. Bald darauf kam dann noch AVI hinzu. Alle diese Formate waren nicht streaming-fähig. Als das Internet zum „alltäglichen“ Medium wurde, entstanden viele verschiedene streaming-fähige Dateiformate, wie z.B. VXF, RA, RMFF und VIV, um nur einige zu erwähnen. Diese Formate waren alle inkompatibel zueinander. So schlossen sich die Hersteller dieser Formate und Microsoft zusammen und entwarfen das ASF- Dateiformat. Das Advanced Streaming Format (ASF) Gerd Zellmer 135 6.4 ASF und MPEG-4 Auch MPEG-4 soll kompatibel zu ASF werden. Doch lagen mir bis heute noch keine Informationen vor, wie dieses verwirklicht werden soll. In einem Vorschlag an die MPEG-4 Requirements and System groups zum 42nd MPEG-meeting wird für die MPEG-4 Dateistruktur eine ähnliche wie für das ASF-Dateiformat vorgeschlagen. Was folgende Abbildungen verdeutlichen sollen. Object ID Object Size 16 Bytes 8 Bytes ?? Bytes Object Data Abbildung 5-2: MPEG-4 Intermedia Format (MIF) Object Index Object Header Object Data Object File Properties Object Stream Properties Object 1 Stream Properties Object N ... Data Unit ... Data Unit Abbildung 5-3: MPEG-4 Intermedia Format (MIF) Dateistruktur Dabei haben die „Header Objects“ die selben Funktionen, wie die der ASF- Header. Selbiges gilt auch für die „Data Objects“, sowie die „Index Object“. Im „Header Object“ sind folgende Objekte enthalten: Das Advanced Streaming Format (ASF) Gerd Zellmer136 · File Properties Object – beschreibt die Globalen Attribute der Datei. · Stream Properties Object – definiert die charakteristischen Eigenschaften der Mediastreams. · Object Descriptor Object – beinhaltet eine Beschreibung des MPEG-4 Objektes. · Stream Map Tabel Objekt – enthält den MPEG-4 Stream Map Table Wie man leicht erkennen kann, wäre diese Dateiform einer MPEG-4-Datei einer ASF- Datei sehr ähnlich. 7 Die ASF-Tools Um ASF- Dateien abzuspielen und zu bearbeiten gibt es verschiedene Tools. Hier möchte ich den Windows Media Player als ASF- Player, den Windows Media Author als Tool zu Erstellen von ASF- Präsentationen und den Windows Media ASF Indexer vorstellen. Die praktische Vorführung wird sich auf das Abspielen von ASF-Dateien und das Erstellen einer ASF-Präsentation beschränken. 7.1 Windows Media Player Der Windows Media Player ist ein Tool zum Abspielen von Videos, sowie auch Audio. Er beschränkt sich dabei nicht nur auf ASF-Dateien, sondern unterstützt viele andere Video- und Audioformate. Wir werden den Windows Media Player in diesem Vortrag zum Abspielen von ASF-Dateien verwenden. Dabei ist vorgesehen, eine ASF-Datei über das Internet abzuspielen, wenn es die technischen Gegebenheiten erlauben. Des weiteren werden wir eine ASF-Datei lokal von der Festplatte abspielen. Abbildung 7-1 : Windows Media Player Das Advanced Streaming Format (ASF) Gerd Zellmer 137 7.1.1 Beispiele zu ASF-Video-streaming-Dateien http://www.attheworld.com http://www.streamingmedia.net/streamingmedia/west/webcast.html http://www.kkrs.net/netmoviemaniahome/netmoviemaniahome.html http://www.windowsmedia.com http://www.videodetective.com/home.asp?list=3 http://disney.go.com/features/distribution/media/index.html http://www.bloomberg.com/tv/tv.html 7.2 Windows Media Author Der Windows Media Author ist ein Tool um ASF-Präsentationen zu erstellen. Wir werden das anhand einer fertigen ASF-Präsentation sehen. Der Windows Media Author macht es dem Anwender sehr leicht, eine ASF-Präsentation zu erstellen. Zuerst wählt man alle Bild-, Video- und Sounddateien aus, die man in die Präsentation einfügen möchte. Diese werden dann alle in einer Liste aufgeführt. Nun schiebt man diese an die richtige Position auf der Zeitachse. Jetzt können noch beliebige Markierungen angegeben werden, wie z.B. Überschriften oder Internetseiten, die zu einem bestimmten Zeitpunkt geladen werden sollen. Zu den angegebenen Marken kann später beliebig gesprungen werden. Deswegen ist es sinnvoll mit dem Setzen dieser Marken nicht kleinlich zu sein. Abbildung 7-2: Windows Media Author Das Advanced Streaming Format (ASF) Gerd Zellmer138 Zum Speichern der Präsentation stehen verschiedene Qualitäten bereit. Zum einen 28,8 Kbits/s zum andern 56 Kbits/s. Die Bildqualität der ASF- Präsentation ist nicht ganz so gut wie bei anderen Präsentationstools wie z.B. MS PowerPoint. Aber dafür kann sie ohne Weiteres über eine 28,8 Kbits/s Verbindung in Echtzeit übertragen werden. 7.3 Windows Media ASF Indexer Wie schon erwähnt können in einer ASF- Datei Markierungen angegeben werden, zu denen dann auch gesprungen werden kann. Mit dem Windows Media ASF Indexer können diese Markierungen bearbeitet werden. Auch können die Eigenschaften einer ASF- Datei, wie z.B. der Titel, der Verfasser und eine Beschreibung angegeben werden. Abbildung 7-3: Windows Media Indexer Das Advanced Streaming Format (ASF) Gerd Zellmer 139 8 Literaturverzeichnis [MSRN 98] Co-authored by Microsoft Corporation and RealNetwerks, inc.: Advanced Streaming Format (ASF) February 26, 1998, Public Specification Version 1.0 http://www.microsoft.com/ASF/specs.htm [Stand: 28.11.1999] [Msof 98a] The Advanced Streaming Format Version 2 Software Developers Kit Microsoft Corporation 18.02.1998 [Klem 98a] Anders Klemets: RTP Payload Format for ASF Streams http://www.microsoft.com/asf/resources/draft-klemets-asf-rtp-00.txt [Stand: 13.12.1999] [Klem 98b] Anders Klemets: Common Generic RTP Payload Format http://www.microsoft.com/asf/resources/draft-klemets-generic-rtp-00.txt [Stand: 13.12.1999] [FlPh 98] Eric Fleischmann, Philip A. Chou: Advanced Streaming Format (ASF): [Msof 98b] A universal container file Format for synchronized media: Microsoft Corporation January 1998 [FlKl 98] Eric Fleischman, Anders Klemets: Recording MBone Sessions to ASF Files: http://www.microsoft.com/asf/resources/draft-fleischman-asf-record-00.txt [Stand: 28.11.1999] [CFCC 98] Philip A. Chou, Eric Fleischman, Wie-ge Chen, Ming-Chieh Lee, Mark van Antwerp, Thomas Gadros, Donald Newwell: The MPEG-4 Intermedia Format MIF as an Extension of ASF http://www.microsoft.com/ASF/ Das Advanced Streaming Format (ASF) Gerd Zellmer140