Ausarbeitung - Friedrich-Schiller
Transcription
Ausarbeitung - Friedrich-Schiller
Multicast-Routing Grundlagen und Anwendung Seminararbeit im Seminar Neue Technologien in Internet und WWW Wintersemester 2003/04 Friedrich-Schiller-Universität Jena Wolfgang Schnerring <[email protected]> Oktober 2003 Zusammenfassung Während die klassische Art der Kommunikation im Internet eine 1:1-Beziehung (Unicast: ein Sender, ein Empfänger) darstellt, kommt es für einige Anwendungen (z. B. Videostreaming) auf eine 1:n-Beziehung (Multicast: ein Sender, viele Empfänger) an. In dieser Arbeit werden zunächst die Grundlagen des Unicast-Routings und die dafür eingesetzen Algorithmen betrachtet. Darauf aufbauend wird die für Multicasting benötigte Infrastruktur untersucht: Protokolle zur Verwaltung von Empfängergruppen und vor allem mehrere Multicast-Routingverfahren werden genau vorgestellt. Abschließend kommen Anwendungen, die von Multicast profitieren, sowie konkrete Umsetzungsmöglichkeiten im Internet zur Sprache, eine nicht ganz einfach Aufgabe, da die Unterstützung für Multicast noch nicht so weit verbreitet ist. 2 Inhaltsverzeichnis 1 Einleitung 2 Unicast 2.1 Routingtabellen . . . . . 2.2 Routingalgorithmen . . 2.3 Distanz-Vektor-Routing 2.4 Link-State-Routing . . . 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Multicast 3.1 Gruppenmanagement . . . . . . . . . . . . . . . . . . . . 3.1.1 IGMP . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Multicast-Routing . . . . . . . . . . . . . . . . . . . . . 3.2.1 Routing mit einem gemeinsamen Gruppenbaum . 3.2.2 Routing mit quellenbasierten Bäumen . . . . . . 3.2.3 Multicast-Routing im Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 5 6 7 7 . . . . . . 8 8 9 11 11 13 15 4 Anwendungen 17 4.1 Umsetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.2 Content Delivery Networks . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.3 Andere Anwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 5 Zusammenfassung 19 A Glossar 20 B Abkürzungsverzeichnis 21 C Literaturverzeichnis 22 D Index 24 3 1 Einleitung Bei der Kommunikation in einem Netzwerk ist es die Aufgabe der Vermittlungsschicht (network layer, [ISO/OSI]), die Nachrichten zu ihrem Ziel zu leiten. Ein wesentlicher Teil davon ist, einen Weg (Route) vom Sender zum Empfänger zu bestimmen. Klassischerweise handelt es sich dabei um 1:1-Verbindungen (Unicast), beispielsweise um eine Datei von einem Rechner auf einen anderen zu übertragen. Es gibt aber Anwendungen, die eine 1:n-Verbindung benötigen, also die Übertragung von einem Sender an eine Gruppe von Empfängern. Zu diesen Anwendungen zählen das Streaming von Audiound Videodaten, massenhafte Datenübertragung, beispielsweise von Software-Updates vom Hersteller an alle Benutzer, oder auch Multiplayer-Spiele. Diese Anwendungen verwenden Multicasts: Das Versenden einer Nachricht an mehrere Empfänger in einer Operation. Ohne weitere Unterstützung durch die Vermittlungsschicht müsste der Sender seine Nachricht an jeden Empfänger einzeln und gesondert verschicken. Dies bedeutet ein enormes Verkehrsaufkommen und ist eigentlich eine Verschwendung von Bandbreite, weil identische Nachrichten zuhauf durch das Netz fließen. Um das zu vermeiden, wurden Protokolle entwickelt, die es dem Sender ermöglichen, seine Nachricht nur einmal zu versenden, und sie dann mit Hilfe der Vermittlungsschicht an alle Empfänger weiterleiten. In dieser Arbeit sollen die Möglichkeiten zur Unterstützung von Multicasts vorgestellt werden, damit verbundene Fragen und Aufgaben untersucht und die theoretischen Hintergründe geklärt werden. Kapitel 2 gibt dazu zunächst einen Überblick über Routing-Verfahren im Unicast-Betrieb, die grundlegend für alle weiteren Betrachtungen sind. In Kapitel 3.1 wird dargestellt, wie Gruppen von Empfängern organisiert werden können, in Kapitel 3.2 werden dann die Routing-Verfahren für Multicasts untersucht. Schließlich werden in Kapitel 4 Anwendungen vorgestellt, die Multicasts benötigen, wie z. B. Content Delivery Networks (CDN). 2 Unicast Die Adressierung im Internet erfolgt hierarchisch durch Zusammenfassung von Rechnern zu Subnetzen, d. h. die IP-Adresse 1.2.3.4 bezeichnet den Rechner Nummer 4 im Subnetz 1.2.3 (in einem Netzwerk der Klasse C, vgl. dazu [RFC 1166]). Die Aufgabe beim Routing ist, eine Route, also einen Weg zum Ziel einer Nachricht zu ermitteln. Dabei gilt das Prinzip der Quellenunabhängigkeit, das bedeutet, der Weg einer Nachricht hängt einzig und allein davon ab, an wen sie adressiert ist, nicht davon, wer sie geschickt hat oder welchen Weg sie bisher schon zurückgelegt hat [MS04]. Zwischen Sender und Empfänger liegen meist mehrere Vermittlungsstellen, die sogenannten Router. Vereinfacht könnte man sagen, dass jeder Router für ein Subnetz zuständig 4 ist; deshalb reicht es aus, eine Nachricht für 1.2.3.4 an den Router des Netzes 1.2.3 zu schicken, dieser wird dann wissen, wie er sie an ihr Ziel zustellt. Daher ist es zur Ermittlung von Routen nützlich, das Netzwerk als einen Graphen darzustellen, in dem jeder Knoten einen Router repräsentiert, und die Kanten die Verbindungen (Hops) zwischen den Routern darstellen. Ein solcher Graph ist in Abbildung 1 zu sehen. Abbildung 1: Ein Netzwerk (a) und seine Darstellung als Graph (b). 2.1 Routingtabellen Damit ein Router eingehende Nachrichten weiterleiten kann, besitzt er eine Tabelle (die sogenannte Routing-Tabelle) mit Informationen für die Weiterleitung. Die RoutingTabelle enthält für jedes Ziel eine Angabe, wohin die Nachricht weitergeschickt werden soll. Durch die hierarchische Adressierung bedeutet das je einen Eintrag pro Subnetz und je einen Eintrag für die Rechner im lokalen Subnetz des Routers. Da es sich nur um Angaben für die nächste Station der Nachricht handelt, wird die Routing-Tabelle auch als Next-Hop-Tabelle bezeichnet. Für diese Tabelle müssen zwei Eigenschaften gelten: Universalität: Für jedes mögliche Ziel muss ein Hop vorhanden sein. Optimalität: Der enthaltene Hop muss auf dem kürzesten Weg zum Ziel führen. Aus [RFC 1958] ergeben sich außerdem die folgenden Anforderungen an Routing-Algorithmen: Korrektheit: Der berechnete Weg muss zum Ziel führen. Einfachheit: Der Algorithmus soll so einfach wie möglich sein. 5 Robustheit: Routing soll auch auf Ausfälle von Rechnern oder Verbindungsstrecken reagieren können. Stabilität: Routen sollen sich nur ändern, wenn dies durch externe Einwirkungen (z. B. Ausfälle) erforderlich ist. Fairness: Alle Anfragen sollen als gleich wichtig behandelt werden. Die Routing-Tabellen für das Beispiel-Netzwerk finden sich in Tabelle 1. Ziel Knoten 1.2.3 Next Hop 1.2.3 2.134.50 3.15.4 4.1.5 – 3.15.4 3.15.4 3.15.4 Knoten 2.134.50 Ziel Next Hop Knoten 3.15.4 Ziel Next Hop Ziel 1.2.3 2.134.50 3.15.4 4.1.5 1.2.3 2.134.50 3.15.4 4.1.5 1.2.3 2.134.50 3.15.4 4.1.5 3.15.4 – 3.15.4 4.1.5 1.2.3 2.134.50 – 4.1.5 Knoten 4.1.5 Next Hop 3.15.4 3.15.4 – Tabelle 1: Routingtabelle für alle Router aus Abbildung 1. Um doppelte Einträge zu vermeiden, kann ein Eintrag, der besonders häufig vorkommt, zum Standard-Eintrag bestimmt werden (Default-Route). Dieser bekommt die niedrigste Priorität und wird verwendet, wenn kein anderer Eintrag der Tabelle zutrifft. 2.2 Routingalgorithmen Um Routing-Tabellen zu berechnen, gibt es verschiedene Algorithmen. Beim statischen Routing werden die Tabellen einmal berechnet, z. B. bei der Inbetriebnahme des Netzwerks, und danach nicht mehr verändert. Dabei können Veränderungen (beispielsweise der Ausfall eines Routers) natürlich nicht mehr in Betracht gezogen werden. Anders beim dynamischen oder adaptiven Routing, hier werden die Routing-Tabellen regelmäßig oder bei Bedarf aktualisiert. Dadurch können ausgefallene Router automatisch umgangen, und auch andere Probleme ohne Eingriff von außen gelöst werden. Die dynamischen Routingalgorithmen lassen sich in zentrale und dezentrale (verteilte) Algorithmen unterteilen. Bei den zentralen Algorithmen übernimmt eine zentrale Instanz die Berechnung der Routing-Tabellen. Dies ist vor allem dann von Vorteil, wenn an einer Stelle besondere Informationen über das Netzwerk gebündelt vorliegen. Andererseits wird hierbei die Zentrale zu einem kritischen Punkt im Netzwerk, deren Ausfall erhebliche Störungen bis hin zum Totalausfall nach sich ziehen kann. Im Gegensatz dazu ist bei dezentralen Verfahren jeder Router selbst dafür verantwortlich, die Routing-Tabellen zu berechnen, aufgrund seines Kenntnisstandes über das Netzwerk. Im Internet kommen hauptsächlich solche dezentralen Verfahren zum Einsatz, wie das im nächsten Abschnitt vorgestellte Distanz-Vektor-Verfahren und das Link-State-Routing. 6 Ganz unabhängig von diesen Algorithmen gibt es noch die isolierten Routingverfahren, die davon ausgehen, dass ein Knoten keine weiteren Informationen über das ihn umgebende Netzwerk besitzt. Zu diesen zählen das Flooding, bei dem die Nachrichten schlicht über alle Verbindungen des Routers weitergegeben werden, das selektive Flooding, bei dem nur die Verbindungen genutzt werden, die in Richtung Ziel zeigen (falls so eine Klassifikation möglich ist), und das Hot-Potato-Routing, bei dem der Router versucht, die Nachricht so schnell wie möglich wieder loszuwerden, und sie deshalb über die Verbindung mit der aktuell kürzesten Warteschlange weiterschickt – dabei kann es natürlich zu erheblichen Umwegen kommen. 2.3 Distanz-Vektor-Routing Das Distanz-Vektor-Routing, oft nach seinen Erfindern auch als Bellman-Ford- oder Ford-Fulkerson-Algorithmus bezeichnet, ist als Routing Information Protocol (RIP) in [RFC 1058] standardisiert. In diesem Verfahren besitzt jeder Router eine Tabelle ( Vektor“), in der jeder andere ” Router des Netzwerks verzeichnet ist. Jeder Eintrag enthält neben dem Zielrouter und dem nächsten Hop auch die Distanz zum betreffenden Router. Die Distanz kann dabei durch verschiedene Metriken ausgedrückt werden: Anzahl der Hops (bis zum nächsten Nachbarn ein Hop), Übertragungszeit (kann mit pings gemessen werden), aktuelle Warteschlangenlänge oder anderes. Das Prinzip dieses Verfahrens besteht darin, dass jeder Router die Informationen aus seiner Routing-Tabelle regelmäßig an seine direkten Nachbarn schickt. Erhält ein Router Informationen von seinem Nachbarn, überprüft er die Einträge seiner Routing-Tabelle und aktualisiert diese, falls sein Nachbar einen kürzeren Weg zu einem Zielknoten gefunden hat. Denkt man sich einen aus den Routing-Tabellen aller Router erstellten Graphen mit den Routern als Knoten und gewichtet die Kanten entsprechend der Distanz, so erfasst nach einer kurzen Anlaufzeit jeder Router die kürzesten Wege zu allen Zielen, ganz ähnlich wie beim Algorithmus von Dijkstra zur Auffindung des kürzesten Pfades in einem Graphen. 2.4 Link-State-Routing Das Link-State-Routing ist ebenso wie das Distanz-Vektor-Routing ein dezentrales Routing-Verfahren, das darauf basiert, dass die Router untereinander Informationen austauschen. Allerdings werden beim Link-State-Routing nur die Informationen über die direkten Nachbarn verschickt, dafür aber gleich an alle Router des Netzwerks. Mit diesen Informationen kann dann jeder Router (mit Hilfe des Dijkstra-Algorithmus) seine RoutingTabelle berechnen. 7 Das Link-State-Routingverfahren kann auf Änderungen am Netzwerk viel schneller reagieren als das Distanz-Vektor-Routing, da alle Knoten gleichzeitig über eventuelle Änderungen wie den Ausfall eines Routers informiert werden. Link-State-Routing wurde als OSPF-Protokoll (Open Shortest Path First Protocol) im [RFC 2328] standardisiert und findet im Bereich des Routings innerhalb einer Domäne (Intradomain-Routing) Verwendung. Die Bezeichnung Shortest Path First“ ist ” etwas irreführend, denn auch andere Routingverfahren wie das Distanz-Vektor-Routing ermitteln natürlich kürzeste Pfade. 3 Multicast Die Zielsetzung beim Multicast ist die effiziente Nutzung der Netzwerkbandbreite, indem eine Nachricht an mehrere Empfänger gleichzeitig verschickt wird. Dazu müssen auf der Vermittlungsschicht die folgenden Aufgaben gelöst werden: 1. Identifikation der Empfänger und geeignete Adressierung 2. Routing einer Nachricht an mehrere Empfänger Die Grundlagen für die Verwirklichung dieser Ansätze legte Steve Deering in seiner Ende der achtziger Jahre entstandenen Doktorarbeit [Deer91]. Aus dieser entstand der Multicast-Backbone, ein virtuelles Netz von multicastfähigen Routern (siehe Abschnitt 4.1). 3.1 Gruppenmanagement Im Gegensatz zum Unicast, wo die (einzige) Zieladresse in jedem IP-Paket mitgeführt wird, müssen beim Multicast mehrere Empfänger berücksichtigt werden. Es ist nicht sinnvoll, alle Adressen einzeln aufzulisten und mitzuführen, weil das für große Zahlen von Empfängern nicht praktikabel wäre. Zudem kann es für bestimmte Anwendungen wünschenswert sein, dass der Sender die Identität der Empfänger nicht im einzelnen kennt. Daher werden im Internet Multicasts mit Hilfe von Empfängergruppen adressiert, d. h. eine IP-Adresse steht für eine ganze Gruppe von Hosts, und Nachrichten an diese Adresse werden an alle Mitglieder der Gruppe zugestellt. Für Multicast-Gruppen legt [RFC 1166] einen reservierten Adressraum fest, die Adressen der Klasse D (bei diesen sind die ersten vier Bit auf 1110“ gesetzt, also umfasst sie die Adressen 224.0.0.0 bis ” 239.255.255.255). Für die Realisierung dieser Gruppen-Abstraktion müssen einige Fragen gelöst werden: Wie werden Hosts zu einer Gruppe hinzugefügt? Kann jeder einer Gruppe beitreten bzw. an sie senden oder ist dies eingeschränkt, und wenn ja, von wem? Kennen die Mitglieder untereinander ihre Identitäten? 8 3.1.1 IGMP Diese Aufgaben werden vom Internet Group Management Protocol (IGMP Version 2, [RFC 2236]) übernommen. Das IGMP arbeitet zwischen einem Host und einem direkt angeschlossenen Router, d. h. der Router ist der erste Hop außerhalb des lokalen Netzwerks. Das bedeutet, es gibt kein Protokoll, dass zwischen den Mitgliedern einer Gruppe operiert, also auch keine Möglichkeit für Gruppenmitglieder, die Identitäten der anderen Mitglieder in Erfahrung zu bringen. Das IGMP verwendet drei Nachrichtentypen, die in Tabelle 2 zusammengestellt sind. Die hauptsächliche Funktion besteht darin, dass der Router herausfinden kann, für welche Multicast-Gruppen sich in seinem Subnetz Mitglieder befinden. Nachrichtentyp Sender Bedeutung membership query (allgemein) Router membership query (spezifisch) Router membership report Host leave group Host Anfrage, in welchen Multicast-Gruppen angeschlossene Hosts Mitglieder sind. Anfrage, ob die spezifische Multicast-Gruppe angeschlossene Hosts als Mitglieder hat. Der Host möchte einer bestimmten Multicast-Gruppe beitreten oder antwortet auf eine membership query. Der Host möchte die betreffende MulticastGruppe verlassen. Tabelle 2: IGMP-Nachrichtentypen Dazu kann er die angeschlossenen Hosts mit einer membership query entweder nach Mitgliedern einer speziellen Multicast-Gruppe oder schlicht aller Multicast-Gruppen fragen. Die Hosts antworten auf eine membership query mit einem membership report, wobei jeder membership report die Multicast-Adresse einer Gruppe enthält, deren Mitglied der antwortende Host ist. membership report-Nachrichten können von einem Host auch unaufgefordert geschickt werden, um erstmals einer Multicast-Gruppe beizutreten. Sowohl die membership query- als auch die membership report-Nachrichten werden von allen angeschlossenen Hosts empfangen. Da es für den Router nur darum geht, ob überhaupt irgendjemand in seinem Subnetz zu einer Multicast-Gruppe gehört, verwendet IGMP eine Feedback-Unterdrückung, um doppelte membership report-Nachrichten zu verhindern. Dazu wartet jeder Host nach dem Empfang einer membership query eine zufällig festgelegte Zeit zwischen Null und der in der Anfrage gesetzten maximalen Antwortzeit. Wenn er während dieses Wartens eine membership report-Nachricht eines anderen Hosts für die betreffende Multicast-Gruppe beobachtet, verwirft er seine eigene schwebende membership report-Nachricht, weil ja schon alles gesagt ist“. ” 9 Der letzte Nachrichtentyp, leave group, ist optional, da IGMP ein Soft-State-Protokoll ist. Wenn eine membership query nach einer bestimmten Multicast-Gruppe unbeantwortet bleibt, geht der Router davon aus, dass kein angeschlossener Host dieser Gruppe angehört. Mit anderen Worten, der Zustand (State; in diesem Fall die Tatsache, dass Hosts Mitglieder einer bestimmten Multicast-Gruppe sind) wird über ein TimeoutEreignis (in diesem Fall eine periodische membership query des Routers) zurückgesetzt, wenn er nicht explizit erneuert wird (durch eine membership report-Nachricht eines Hosts). Im Gegensatz zu Hard-State-Protokollen erfordern Soft-State-Protokolle keine Mechanismen für die Rückkehr zum Normalbetrieb für den Fall, dass die für die Rücksetzung des Zustandes zuständige Einheit ausgefallen ist. leave group-Nachrichten sind vor allem für Multicast-Gruppen mit starkem Verkehr (um überflüssige Übertragungen so bald als möglich zu beenden) oder mit stark wechselnden Mitgliedern interessant. Das IGMP-Nachrichtenformat ist in Abbildung 2 dargestellt. Es ist dem Format des ICMP [RFC 792] recht ähnlich, und IGMP-Nachrichten erhalten ebenfalls die IPProtokollnummer 2. 1 8 Typ 16 Maximale Antwortzeit 32 Prüfsumme Multicast-Gruppenadresse Abbildung 2: Das IGMP-Nachrichtenformat Die Ende 2002 verabschiedete IGMP-Version 3 [RFC 3376] sieht die Möglichkeit vor, dass Hosts bestimmte Quellen gezielt benennen können, von denen sie Nachrichten empfangen oder nicht empfangen möchten ( source filtering“). Das bedingt ein komplizierteres ” Nachrichtenformat, auf das hier nicht weiter eingegangen wird. Zusammenfassend kann man festhalten: Die Gruppenverwaltung via IGMP ist empfängergesteuert. Damit sind einige Schwierigkeiten verbunden, so gibt es z. B. überhaupt keine Kontrolle darüber, wer einer Gruppe beitreten darf und wer nicht. Auch ist nicht steuerbar, wer etwas an eine Multicast-Gruppe sendet. Es bedarf nicht einmal eines böswilligen Senders, denn da nicht geregelt ist, wie die Adressen für Multicast-Gruppen vergeben werden, könnten versehentlich zwei Sender die gleiche Adresse für ihre Empfängergruppe wählen und sich dadurch gegenseitig stören. Dieses Modell trägt die gleichen minimalistischen Züge, die das Unicast-Modell des Internet so erfolgreich gemacht haben. Es bleibt abzuwarten, ob diese Philosophie sich auch für den Multicast-Betrieb bewährt. 10 3.2 Multicast-Routing Mit Hilfe des IGMP kann ein Router feststellen, welchen Multicast-Verkehr er zur Weiterleitung an seine angeschlossenen Hosts empfangen muss. Nun gilt es die Frage zu beantworten, wie die Router die Nachrichten untereinander weiterleiten sollen, damit jeder Router den benötigten Verkehr empfangen kann. Das Ziel von Multicast-Routing ist, einen Baum von Verbindungen zu ermitteln, der alle Router mit angeschlossenen Hosts enthält, die Mitglieder der Multicast-Gruppe sind. Ein Beispiel für einen solchen Baum findet sich in Abbildung 3 (Die teilnehmenden Hosts und Router sind dunkel markiert). Für diese Aufgabe gibt es die folgenden allgemeinen Ansätze: Gemeinsamer Gruppenbaum Für die gesamte Multicast-Gruppe wird nur ein RoutingBaum gebildet. Quellenbasierte Bäume Für jeden Sender wird ein getrennter Routing-Baum gebildet. Pakete werden also abhängig vom Sender an die Mitglieder der Gruppe weitergeleitet. Abbildung 3: Router mit angeschlossenen Multicast-Teilnehmern. 3.2.1 Routing mit einem gemeinsamen Gruppenbaum Für den Fall, dass alle Nachrichten ungeachtet des Senders über den gleichen Baum weitergeleitet werden, benötigt man schlicht einen Baum, der alle Router enthält, an die 11 Abbildung 4: Ein gemeinsamer Gruppenbaum. Mitglieder der Multicast-Gruppe angeschlossen sind. Ein solcher Baum ist in Abbildung 4 zu sehen. Berücksichtigt man die Verbindungskosten, indem man wie auch beim Unicast-Routing die Kanten des Baumes entsprechend gewichtet, dann sollte der ermittelte Routing-Baum möglichst minimale Gesamtkosten aufweisen. Die Ermittlung eines Baums mit minimalen Kosten wird als Steiner-Baum-Problem bezeichnet und ist bewiesenermaßen NP-vollständig, jedoch gibt es Approximationsalgorithmen, die im Allgemeinen zu guten Ergebnissen führen [KR01]. Allerdings setzt eine solche Ermittlung Kenntnisse über alle Verbindungen des Netzwerks voraus, was im Internet nicht gegeben ist. Außerdem spielen in der Praxis noch andere Kriterien eine Rolle, z. B. die mögliche Wiederverwendung der bereits vorhandenen Unicast-Routingtabellen. Eine alternative Möglichkeit zur Ermittlung eines gemeinsamen Gruppenbaumes geht daher von einem Zentrumsknoten aus, an den sich Router, die an dem Multicast teilnehmen möchten, mittels so genannter Join-Nachrichten anschließen. Diese JoinNachrichten werden durch Unicast-Routing in Richtung Zentrum geleitet, bis sie auf einen Router treffen, der schon zum Baum gehört, oder beim Zentrum ankommen. Die entscheidende Frage dabei ist, wie der Zentrumsknoten ausgewählt wird. Man kann jedoch beweisen, dass Zentren so gewählt werden können, dass der resultierende Baum innerhalb eines konstanten Optimumfaktors liegt [KR01]. Abbildung 5 zeigt die Konstruktion eines solchen zentrumsbasierten Baums. Im Beispiel ist Knoten E als Zentrum gewählt worden. Die Nummerierung der Pfeile gibt die Reihenfolge an, in der die Join-Nachrichten verschickt werden. Knoten F tritt zuerst bei, dadurch wird die einzige EF -Verbindung zum anfänglichen Routing-Baum. Als nächstes tritt Knoten B bei – wir nehmen an, dass der kürzeste Unicast-Pfad von B zu E über D führt. Dadurch ergibt sich aus der Join-Nachricht der Pfad BDE, der auf den bestehenden Routing-Baum aufgepfropft“ wird. Der letzte beitretende Knoten ist A. Unter ” der Annahme, dass der Pfad von A nach E über B führt, resultiert schon die Ankunft 12 der Join-Nachricht bei B in der AB-Verbindung, die auf den Baum aufgepfropft wird, da B dem Baum ja bereits angehört. Abbildung 5: Konstruktion eines zentrumsbasierten Baums. 3.2.2 Routing mit quellenbasierten Bäumen Bei quellenbasierten Routingverfahren wird für jede Quelle in der Multicast-Gruppe ein Routing-Baum konstruiert. Algorithmen, die die kürzesten Unicast-Pfade von einer Quelle zu allen Zielen berechnen, sind bekannt (vgl. Unicast-Routing“, Abschnitt 2). ” Die Vereinigung aller dieser Pfade bildet dann jeweils für eine Quelle den gewünschten Routing-Baum. Diese Bäume sind nicht identisch mit dem gemeinsamen Routing-Baum, weil bei quellenbasierten Bäumen die Kosten von der Quelle zu jedem einzelnen Ziel minimiert werden, während der gemeinsame Baum die Summe aller Verbindungskosten minimiert. Abbildung 6 zeigt zwei quellenbasierte Bäume, der eine geht von A, der andere von B aus. Auch diese Vorgehensweise setzt allerdings voraus, das jeder Knoten Kenntnisse über die Zustände aller Verbindungen im Netzwerk besitzt, ist also ein Link-State-Algorithmus. Ein Algorithmus, der weniger Zustandsinformationen erfordert, ist der RPF-Algorithmus (Reverse-Path-Forwarding). Beim RPF überträgt ein Router eine Multicast-Nachricht von einer bestimmten Quelle über alle seine Ausgangsleitungen (außer der, über die er sie empfangen hat), aber nur dann, wenn die Nachricht auf der Leitung angekommen ist, die auf dem kürzesten Pfad zur Quelle liegt. Ansonsten verwirft er die Nachricht, weil er davon ausgehen kann, dass die Nachricht auf der Leitung ankommen wird oder bereits angekommen ist, die auf dem kürzesten Pfad zur Quelle liegt. Für Reverse-Path-Forwarding muss der Router nur den nächsten Hop auf dem kürzesten Pfad zur Quelle kennen, es ist nicht erforderlich, dass er den gesamten kürzesten Pfad kennt. Ein Beispiel für RPF ist in Abbildung 7 dargestellt. Wir nehmen dabei an, dass die fettgedruckten Linien die kürzesten Pfade zur Quelle (A) darstellen. Anfangs sendet 13 Abbildung 6: Zwei quellenbasierte Routing-Bäume. Abbildung 7: Reverse-Path-Forwarding. A die Multicast-Nachricht des Quell-Hosts an C und B. B leitet die Nachricht weiter an C und D, weil A auf seinem kürzesten Pfad zu A liegt. B verwirft alle Nachrichten des Quell-Hosts, die er von einem anderen Router (z. B. C oder D) empfängt. C empfängt eine Nachricht vom Quell-Host sowohl direkt von A als auch von B. Da B nicht auf dem kürzesten Pfad von C nach A liegt, verwirft C diese Nachricht. Anders die Nachricht, die C von A erhalten hat: diese leitet er an B, E und F weiter. In dem Beispiel wird allerdings auch ein Problem des reinen Reverse-Path-Forwarding deutlich: D leitet Multicast-Nachrichten an G weiter, obwohl keiner der an G angeschlossenen Hosts Mitglied der Multicast-Gruppe ist. Dies ist um so schlimmer, je mehr Router in dieser Richtung an D angeschlossen sind. Die Lösung für das Problem des Empfangs unerwünschter Pakete wird als Pruning (Beschneidung von Ästen) bezeichnet. Ein Router, der Multicast-Nachrichten empfängt, 14 obwohl kein angeschlossener Host zu der betreffenden Multicast-Gruppe gehört, sendet eine Prune-Nachricht an den Upstream-Router. Wenn ein Router von jedem seiner Downstream-Router Prune-Nachrichten empfängt, kann er eine Prune-Nachricht upstream weiterleiten (vgl. Abbildung 8). Abbildung 8: Pruning. Pruning ist vom Konzept her einfach, wirft aber zwei Fragen auf: Zum einen muss ein Router wissen, welches die Downstream- bzw. Upstream-Richtung in Bezug auf den Multicast-Empfang ist. Dies kann durch die Bereitstellung zusätzlicher Informationen gelöst werden. Das zweite Problem ist: Was passiert, wenn ein Router, der sich per Pruning abgekapselt hat, später der Multicast-Gruppe beitreten will? Einerseits könnte man das Pruning mit einem Timeout versehen, so dass es nach einer gewissen Zeit unwirksam wird, oder man führt Grafting (Aufpropfen) ein, so dass der Router das Pruning mittels einer Graft-Nachricht explizit rückgängig machen kann. 3.2.3 Multicast-Routing im Internet Nach der allgemeinen Betrachtung der verschiedenen Multicast-Routingalgorithmen werden im Folgenden konkrete, für das Internet standardisierte Multicast-Routing-Protokolle vorgestellt. DVMRP: Distance Vector Multicast Routing Protocol Das erste im Internet benutzte und vorrangig unterstützte Multicast-Routing-Protokoll ist DVMRP [RFC 1075]. Es implementiert quellenbasierte Bäume mittels ReversePath-Forwarding, Pruning und Grafting. Dabei kommt ein Distanz-Vektor-Algorithmus (siehe Abschnitt 2.3) zum Einsatz, mit dem jeder Router die nächsten Hops auf den kürzesten Pfaden zu jeder Quelle berechnen kann. 15 Außerdem berechnet DVMRP eine Liste der Downstream-Router, um Pruning zu ermöglichen, das bei DVMRP mit einem Timeout von standardmäßig zwei Stunden versehen ist. Per Grafting kann ein Router seinen Ast auch explizit dem Routing-Baum wieder hinzufügen. MOSPF: Multicast Open Shortest Path First Im Rahmen eines Systems, das OSPF (siehe Abschnitt 2.4) zum Unicast-Routing einsetzt, wird MOSPF [RFC 1584] für das Multicast-Routing verwendet. Router können ihre Multicast-Gruppenmitgliedschaft in Link-State-Advertisements einfügen, die im Rahmen des OSPF-Protokolls rundgesendet werden. Somit verfügen alle Router neben den für Unicast benötigten Topologieinformationen über die Mitglieder der verschiedenen Multicast-Gruppen, und können dadurch quellenspezifische Bäume mit dem kürzesten Pfad für jede Multicast-Gruppe berechnen. CBT: Core-Based Trees CBT [RFC 2201, RFC 2189] konstruiert einen gemeinsamen Gruppenbaum mit einem einzigen Zentrum ( Kern“). Dazu sendet ein Router ein join request per Unicast in ” Richtung Kern. Der Kern oder der erste Router, der schon zum Baum gehört und diese Nachricht empfängt, antwortet mit join ack. Nach dem Aufbau des Baumes sendet jeder Router in Minutenintervallen echo request-Nachrichten upstream, die mit einem echo reply beantwortet werden. Erhält ein Router keine Antwort auf ein echo request, versucht er es noch einige Male. Kommt kein echo reply, sendet er eine flush treeNachricht downstream, um den Downstream-Baum aufzulösen. PIM: Protocol Independent Multicast Das PIM-Routing-Protokoll [RFC 2362] berücksichtigt ausdrücklich zwei unterschiedliche Szenarien. Im so genannten Dense-Mode liegen die Multicast-Gruppenmitglieder dicht beieinander, d. h. viele oder die meisten Router im Bereich werden in das MulticastRouting einbezogen. Im Sparse-Mode hingegen ist die Anzahl der am Multicast beteiligten Router im Vergleich zur Gesamtzahl gering, und die Gruppenmitglieder sind großflächig verteilt. Im Dense-Mode geht man von der Annahme aus, dass alle Router mit in den Multicast einbezogen werden und verwendet daher einen Ansatz wie RPF, der MulticastNachrichten an alle Router flutet. Im Sparse-Mode ist die Zahl der teilnehmenden Router wesentlich geringer, daher ist ein Ansatz wie RPF ungünstig, weil er einen Router zwingt, konstant zu arbeiten (Pruning auszuführen), nur um ankommenden Multicast-Verkehr zu vermeiden. Daher gilt dort die umgekehrte Annahme, dass ein Router standardmäßig nicht einbezogen wird, und es wird ein zentrumsbasierter Ansatz gewählt, bei dem Router explizit durch Join-Nachrichten dem Multicast beitreten müssen. Inter-AS-Multicast-Routing Bisher wurde implizit davon ausgegangen, dass alle Router das gleiche Multicast-RoutingProtokoll verwenden. Innerhalb eines autonomen Systems (AS) ist dies normalerweise 16 auch der Fall, sobald aber unterschiedliche Systeme miteinander kommunizieren wollen, können unterschiedliche Protokolle ein Problem darstellen. Als De-facto-Protokoll für das Routing zwischen verschiedenen autonomen Systemen hat sich DVMRP durchgesetzt, obwohl es für die eher wenigen verstreuten Router, die heutzutage am Multicast-Verkehr teilnehmen, weniger gut geeignet ist, da es sich um ein Dense-Mode-Protokoll handelt. Die Entwicklung eines speziellen Inter-AS-MulticastProtokolls befindet sich noch in Arbeit bei der Arbeitsgruppe idmr der IETF [IDMR]. 4 Anwendungen Nach der Darstellung der Grundlagen und Verfahren für das Multicast-Routing wird im Folgenden auf deren praktische Umsetzung eingegangen sowie exemplarisch einige Anwendungsgebiete vorgestellt. 4.1 Umsetzung [RFC 1112] teilt Hosts und Router in drei Gruppen ein: Level 0 Keine Unterstützung für Multicast. Solche Hosts ignorieren Multicast-Nachrichten, die sie empfangen. Level 1 Unterstützung für das Senden von Multicast-Nachrichten. Solche Hosts können keiner Multicast-Gruppe beitreten, also auch keine Multicast-Nachrichten empfangen. Es bedarf nur wenig Programmieraufwand, um einen Level-0-Host zu einem Level-1-Host zu machen. Level 2 Volle Unterstützung für Multicast, also Senden und Empfangen. Dazu müssen solche Hosts wissen, wie man einer Multicast-Gruppe beitritt und sie wieder verlässt, d. h. sie müssen IGMP in ihrem TCP/IP-Stack unterstützen. Das Problem ist, dass der größte Teil der im Internet vorhandenen Router vom Typ Level 0“ ist, und Multicast nur von kleinen Inseln“ unterstützt wird. ” ” Wie kann also Multicast-Routing unter diesen Umständen umgesetzt werden? Um die Isolation eines Multicast-Routers unter lauter Unicast-Routern aufzuheben, bedient man sich des Tunneling, d. h. man bildet ein virtuelles Multicast-Netzwerk wie in Abbildung 9 dargestellt. Dazu wird die Multicast-Nachricht in einer Standard-Unicast-Nachricht verkapselt [RFC 2003] und dann ganz normal via Unicast an den entfernten Multicast-Router verschickt, der dann die Multicast-Nachricht wieder auspacken und entsprechend behandeln kann. Das bekannteste virtuelle Multicast-Netzwerk ist der MBone (Multicast-Backbone) [MBONE]. Der MBone wurde 1992 zum ersten Mal genutzt, um Audio-Streams einer 17 Abbildung 9: Multicast-Tunneling IETF-Konferenz in San Diego an Zuhörer weltweit zu übertragen. Seit April 2000 wurde vom Deutschen Forschungsnetz [DFN] die Multicast-Funktionalität sogar in alle Netzknoten des Wissenschaftsnetzes G-WiN integriert. 4.2 Content Delivery Networks Klassischerweise werden im Internet Inhalte von einem Server aus weltweit auf jede Anfrage hin an den Benutzer geschickt. Dieses Modell ist aber in manchen Situationen nicht mehr praktikabel. Wenn zu viele Benutzer gleichzeitig auf einen Server zugreifen wollen, kann man durch Lastverteilung auf mehrere Rechner Abhilfe schaffen. Wenn es sich allerdings um zeitkritische Anwendungen wie etwa Streaming von Multimediadaten (Video, Spiele, etc.) handelt, benötigt man unter Umständen eine verfeinerte Lösung. Ein CDN (Content Delivery Network) hat die Aufgabe, Inhalte schnell und zuverlässig an den Benutzer auszuliefern. Es besteht aus einer Anzahl von Servern, die sich an möglichst vielen verschiedenen Orten befinden. Die Funktion eines CDN vollzieht sich in zwei Schritten [BRS03]: Content Distribution Der auszuliefernde Inhalt wird vom Ursprungs-Server auf die verstreuten sogenannten Surrogat-Server verteilt. Da es sich hier zum einen um eine Vielzahl von Empfängern und zum anderen (beispielsweise beim Videostreaming) um große Mengen von Daten handelt, kommt hier Multicasting zum Einsatz. Request Routing Wenn ein Benutzer nun den Inhalt abrufen möchte, wird er nicht mehr vom Ursprungs-Server bedient, sondern auf einen geeigneten Surrogat-Server umgeleitet. Als Kriterium wird hier neben der Lastverteilung vor allem bei zeitkritischen Fällen auch die Nähe des Surrogat-Servers zum Benutzer herangezogen. Die 18 Umleitung kann entweder direkt auf DNS-Ebene erfolgen oder vom UrsprungsServer übernommen werden. 4.3 Andere Anwendungen Multicast eignet sich naturgemäß für alle Anwendungen, an denen mehrere Empfänger teilnehmen. Solche Anwendungen sind zum Beispiel: • Audio- und Videostreaming • Häufig aktualisierte Nachrichten-Schlagzeilen oder aktuelle Wettervorhersagen • Monitoring, z. B. Börsenticker, Messwerte, etc. • Massenhafter Datentransfer, z. B. File-sharing und Software-Updates All diesen Beispielen liegt ein gewisses Push-Paradigma zu Grunde: Daten werden von einer Quelle aus ausgestrahlt und können von vielen Empfängern genutzt werden – analog zu Rundfunk und Fernsehen. Es gibt aber auch im interaktiven Bereich Gebiete, die von Multicast profitieren können: • (Audio-/Video-) Konferenzen, gemeinsame Nutzung eines virtuellen Whiteboards“ ” • Kollaboration, gemeinsames Bearbeiten von Dokumenten • Chat-Gruppen • Multiplayer-Spiele 5 Zusammenfassung Multicast bietet eine effektive Übertragungsweise für die Kommunikation mit mehreren Empfängern (möglicherweise einer sehr großen Anzahl). Durch die Adressierung an eine ganze Empfängergruppe wird die Netzwerkbandbreite dabei effizient genutzt. Von den bisher entwickelten Protokollen ungelöste Fragen betreffen vor allem die Zugriffskontrolle, wer einer Gruppe beitreten darf und vor allem, wer an eine Gruppe senden darf. Leider ist die Nutzbarkeit von Multicast-Übertragungen derzeit noch recht eingeschränkt, da die allermeisten Router im Internet nicht multicastfähig sind. Tunnel wie der MBone schaffen zwar in gewissem Rahmen Abhilfe, aber damit Multicast wirkliche Verwendung finden kann, ist zunächst eine wesentliche Ausweitung der Infrastruktur nötig – Ansätze wie die Integration von Multicast-Routing in das Deutsche Forschungsnetz geben hier Anlass zur Hoffnung. 19 A Glossar Baum Ein kreisfreier, verbundener Graph. Downstream Die Richtung weg vom Sender hin zum Empfänger einer Nachricht. Hop Die Verbindung von einem Host zum nächsten. Host Ein Teilnehmer im Netzwerk. Multicast Das Versenden einer Nachricht an viele Empfänger (1:n-Kommunikation). Router Hardware, die Nachrichten innerhalb eines Subnetzes und zwischen Subnetzen weiterleitet. Routing Die Ermittlung des Weges, auf dem eine Nachricht weitergeleitet werden soll. Streaming Eine Übertragungsart von Multimediadaten, bei der der Empfänger die Daten schon während des Sendens betrachten kann und nicht warten muss, bis die Daten vollständig übertragen wurden. Unicast Das Versenden einer Nachricht an einen Empfänger (1:1-Kommunikation). Upstream Die Richtung weg vom Empfänger hin zum Sender einer Nachricht. 20 B Abkürzungsverzeichnis AS CBT CDN DVMRP ICMP IETF IGMP IP ISO MOSPF OSI OSPF PIM RFC RIP RPF TCP/IP Autonomous System Core-Based Trees Content Delivery Network Distance Vector Multicast Routing Protocol Internet Control Message Protocol Internet Engineering Task Force Internet Group Management Protocol Internet Protocol International Organisation for Standardization Multicast Open Shortest Path First Open Systems Interconnection Open Shortest Path First Protocol Independent Multicast Request For Comments Routing Information Protocol Reverse-Path-Forwarding Transport Control Protocol/Internet Protocol 21 Literatur [MS04] Ch. Meinel, H. Sack: WWW – Kommunikation, Internetworking, WebTechnologien, Springer, Berlin, 2004. [KR01] Kurore, Ross: Computernetze, Pearsons, 2004. [BRS03] Badach, Rieger, Schmauch: Web-Technologien – Architekturen, Konzepte, Trends, Hanser, 2003. [Deer91] S. Deering: Multicast routing in a datagram internetwork, PhD thesis, Stanford University, 1991. [ISO/OSI 8648] International Organisation for Standardization: Information processing systems – Open Systems Interconnection – Internal organization of the Network Layer, http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail? CSNUMBER=16011&ICS1=35&ICS2=100&ICS3=30, 1988. [IDMR] B. Fenner, A. Zinin: Inter-Domain Multicast Routing, http://ietf.org/html.charters/idmr-charter.html [MBONE] The RIPE MBone Working Group, http://www.ripe.net/ripe/wg/mbone/home.html. [DFN] Deutsches Forschungsnetz, http://www.dfn.de. [RFC 792] J. Postel: Internet Control Message Protocol, http://www.ietf.org/rfc/rfc792.txt, 1981. [RFC 1058] C. Hedrick: Routing Information Protocol, http://www.ietf.org/rfc/rfc1058.txt, 1988. [RFC 1075] Waitzman, Partridge, Deering: Distance Vector Multicast Routing Protocol, http://www.ietf.org/rfc/rfc1075.txt, 1988. [RFC 1112] S. Deering: Host Extensions for IP Multicasting, http://www.ietf.org/rfc/rfc1112.txt, 1989. [RFC 1166] Kirkpatrick, Stahl, Recker: Internet Numbers, http://www.ietf.org/rfc/rfc1166.txt, 1990. [RFC 1584] J. Moy: Multicast Extensions to OSPF, http://www.ietf.org/rfc/rfc1584.txt, 1994. 22 [RFC 1958] B. Carpenter: Architectural Principles of the Internet, http://www.ietf.org/rfc/rfc1958.txt, 1996. [RFC 2003] C. Perkins: IP Encapsulation within IP, http://www.ietf.org/rfc/rfc2003.txt, 1996. [RFC 2201] A. Ballardie: Core Based Trees (CBT) Multicast Routing Architecture, http://www.ietf.org/rfc/rfc2201.txt, 1997. [RFC 2189] A. Ballardie: Core Based Trees (CBT version 2) Multicast Routing, http://www.ietf.org/rfc/rfc2189.txt, 1997. [RFC 2236] W. Fenner: Internet Group Management Protocol, Version 2, http://www.ietf.org/rfc/rfc2236.txt, 1997. [RFC 3376] Cain, Deering, et al.: Internet Group Management Protocol, Version 3, http://www.ietf.org/rfc/rfc3376.txt, 2002. [RFC 2328] J. Moy: OSPF Version 2, http://www.ietf.org/rfc/rfc2328.txt, 1998. [RFC 2362] Estrin, et al.: Protocol Independent Multicast – Sparse Mode (PIM-SM), http://www.ietf.org/rfc/rfc2362.txt, 1998. 23 Index AS, siehe Autonomes System Autonomes System, 16 Multicast Open Shortest Path First, 16 Multicast-Gruppe, 8 Bellman, 7 network layer, 4 CBT, siehe Core-Based Trees CDN, siehe Content Delivery Network Content Delivery Network, 18 Core-Based Trees, 16 Open Shortest Path First Protocol, 8 OSPF, siehe Open Shortest Path First Protocol PIM, siehe Protocol Independent Multicast Protocol Independent Multicast, 16 Pruning, 14 Push-Paradigma, 19 Default-Route, 6 Dense-Mode, 16 Dijkstra-Algorithmus, 7 Distance Vector Multicast Routing Protocol, 15 Distanz-Vektor-Routing, 7 DVMRP, siehe Distance Vector Multicast Routing Protocol Quellenunabhängigkeit, 4 Reverse-Path-Forwarding, 13 RIP, siehe Routing Information Protocol Route, 4 Router, 4 Routing Information Protocol, 7 Routing-Tabelle, 5 Routingalgorithmen, 6 dezentrale, 6 dynamische, 6 für Multicast, 11 mit gemeinsamem Gruppenbaum, 11 mit quellenbasierten Bäumen, 13 isolierte, 7 statische, 6 zentrale, 6 RPF, siehe Reverse-Path- Forwarding Feedback-Unterdrückung, 9 Flooding, 7 selektives, 7 Ford, 7 Fulkerson, 7 Grafting, 15 Hard-State, 10 Hop, 5 Hot-Potato-Routing, 7 IGMP, siehe Internet Group Management Protocol Inter-AS-Multicast-Routing, 16 Internet Group Management Protocol, 9 Soft-State, 10 Sparse-Mode, 16 Steiner-Baum-Problem, 12 Surrogat-Server, 18 Kern, siehe Zentrumsknoten Link-State-Routing, 7 Tunneling, 17 MBone, 17 MOSPF, siehe Multicast Open Shortest Path First Multicast, 4 Unicast, 4 Zentrumsknoten, 12 24