Piotr Zwierzykowski - Poznańskie Warsztaty Telekomunikacyjne
Transkrypt
Piotr Zwierzykowski - Poznańskie Warsztaty Telekomunikacyjne
2003 Piotr Zwierzykowski Instytut Elektroniki i Telekomunikacji Politechniki PoznaĔskiej ul. Piotrowo 3a, 60-965 PoznaĔ Poznañskie Warsztaty Telekomunikacyjne Poznañ 11-12 grudnia 2003 Maciej Piechowiak Instytut Mechaniki ĝrodowiska i Informatyki Stosowanej Akademii Bydgoskiej ul. Chodkiewicza 30, 85-064 Bydgoszcz IP MULTICAST – PRZEGLĄD PROTOKOàÓW ROUTINGU* Streszczenie: W celu stworzenia topologii sieciowej dla ruchu grupowego, potrzebne jest zdefiniowane protokoáów dziaáających w oparciu o algorytmy, które zapewniáyby konstruowanie wydajnych drzew dystrybucyjnych dla ruchu multicast oraz umoĪliwiáy transmisjĊ pakietów poprzez te struktury. W artykule przedstawiono algorytmy i wykorzystujące je protokoáy routingu dla poáączeĔ typu multicast w sieciach IP ze szczególnym uwzglĊdnieniem sieci Internet. 1. WPROWADZENIE Transmisja multicast jest poĞrednią formą komunikacji miĊdzy powszechnie znaną techniką unicast – charakteryzującą poáączenie miĊdzy dwoma punktami (jedendo-jeden), a techniką rozsiewczą broadcast (polegającą na wysyáaniu pakietów do wszystkich hostów w danej sieci). Pozwala ona dostarczaü dane tylko do wybranej grupy odbiorców, którzy identyfikowani są za pomocą adresu grupowego (multicast address). Pomysá wykorzystania techniki multicast w sieciach IP zrodziá siĊ juĪ w koĔcu lat 80, jednak dopiero od kilku lat jest ona gáównym przedmiotem badaĔ z zakresu sieci teleinformatycznych [1-2]. To zainteresowanie wyniknĊáo przede wszystkim z gwaátownego rozwoju Internetu – wzrostu liczby nowo przyáączonych punktów sieci, a takĪe wdroĪeniem nowych technologii, które w ostatnich latach spowodowaáy wzrost przepustowoĞci sieci i pozwoliáy rozwinąü siĊ sieciowym aplikacjom multimedialnym. Aplikacje takie, ze wzglĊdu na swój charakter, wymagają innego podejĞcia w dystrybuowaniu danych. W tradycyjnym modelu unicast wysáanie tego samego pakietu do okreĞlonej liczby odbiorców w sieci wiąĪe siĊ z nawiązaniem poáączenia (sesji TCP/IP) z kaĪdym z hostów biorących udziaá w transmisji. Wynika z tego, Īe nadawca musi znaü adresy poszczególnych odbiorców i powieliü ten sam pakiet. Liczba aktywnych poáączeĔ, a co za tym idzie – liczba zwielokrotnionych pakietów – roĞnie liniowo ze wzrostem liczby odbiorców w sieci. Model komunikacyjny dla poáączeĔ multicast (rys. 1.1) pozwala na redukcjĊ ruchu poprzez przekazywanie pojedynczych pakietów przez routery w dóá do gaáĊzi, w których znajdują siĊ hosty zainteresowane uczestnictwem w grupie. Taki model komunikacyjny wymaga specjalnych algorytmów budujących wydajne struktury transportu pakietów w sieci – drzewa dystrybucyjne. W rozdziale 2. skupiono siĊ na przeglądzie wykorzystywanych algorytmów i technik tworzenia takich drzew, jako podstawy popularnych protokoáów routingu IP multicast (omówionych w rozdziale 3.). 2. ALGORYTMY ROUTINGU MULTICAST 2.1. Algorytmy wyznaczania drzew o najkrótszych ĞcieĪkach Gáównym zadaniem grupy algorytmów znajdujących drzewa o najkrótszych ĞcieĪkach (SPT – Shortest Path Tree) jest wyznaczenie drzew dystrybucyjnych obejmujących wszystkich odbiorców danej grupy z początkiem (korzeniem) w punkcie nadawcy w taki sposób, aby odlegáoĞü od nadawcy do kaĪdego z odbiorców wzdáuĪ drzewa byáa minimalna. Najbardziej znanym algorytmem realizującym tą funkcjonalnoĞü jest algorytm Dijkstry [3]. Technika SPT zakáada istnienie jednego nadawcy w caáym drzewie. W przypadku istnienia wielu róĪnych Ĩródeá, osobne drzewa muszą byü wyznaczane dla kaĪdego z nadawców. Z tego wzglĊdu powstaáy dynamiczne wersje przywoáanych algorytmów. 2.1.1. Algorytm wektora odlegáoĞci Rys. 1.1. Model komunikacyjny poáączeĔ multicast * Praca powstaáa w ramach projektu KBN 4 T11D 02022 W algorytmie wektora odlegáoĞci (Distance Vector Algorithm) router, do którego bezpoĞrednio podáączony jest nadawca informuje sąsiednie routery, Īe koszt (odlegáoĞü) miĊdzy nim, a nadawcą wynosi 1. Routery te wyznaczają na podstawie otrzymanych informacji odlegáoĞci od nadawcy i spoĞród tych wartoĞci wybierają najmniejszą. W nastĊpnym kroku kaĪdy z routerów rozgáasza obliczony koszt do sąsiednich urządzeĔ i proces siĊ powtarza. Podstawową wadą powyĪszego rozwiązania jest záa skalowalnoĞü – algorytm bardzo wolno odpowiada na zmiany topologii sieci, a wymiana duĪej liczby komunikatów miĊdzy urządzeniami wydatnie wpáywa na zmniejszenie efektywnego pasma w sieci [4]. 2.1.2. Algorytm stanu áącza Algorytm stanu áącza (Link State Algorithm) bazuje na tradycyjnym algorytmie Dijkstry znajdowania najkrótszej ĞcieĪki i charakteryzuje siĊ tym, Īe kaĪdy router posiada informacje o topologii sieci (niezaleĪnie wyznacza optymalny koszt do kaĪdego z wĊzáów w drzewie) [4]. Uaktualnianie informacji o topologii sieci polega na przesyáaniu miĊdzy sąsiednimi routerami komunikatów Link State zawierających koszt poáączenia miĊdzy nimi i odpowiednim zmodyfikowaniu tabel routingu. Wykorzystana jest tutaj technika zalewania pakietami (flooding), przy czym komunikaty Link State wysyáane są w obie strony – w stronĊ urządzenia bliĪej nadawcy (up), jak i odbiorcy (down). W wyniku uaktualnienia kaĪdy router posiada kompletną informacjĊ o topologii sieci i moĪe wyznaczyü drogĊ o najmniejszym koszcie miĊdzy nadawcą, a poszczególnymi odbiorcami z wykorzystaniem algorytmu Dijkstry. Gáówną zaletą tej techniki jest niezaleĪnoĞü w wyznaczaniu tras przez poszczególne routery. ĩaden z nich nie musi polegaü na poĞrednich obliczeniach wykonywanych przez urządzenia „powyĪej” (jak to miaáo miejsce w algorytmie wektora odlegáoĞci). Proces pobierania informacji tylko z sąsiedniego routera wydatnie zmniejsza liczbĊ i rozmiar wymienianych w sieci komunikatów i zwiĊksza skalowalnoĞü drzewa. 2.2. Algorytmy wyznaczania drzew o najmniejszym koszcie bĊdące takimi czáonkami, których doáączenie do drzewa pozwala zminimalizowaü caákowity koszt struktury. Znalezienie takiego drzewa jest problemem NP-zupeánym. W trakcie projektowania wydajnych algorytmów dla transmisji multicast, bierze siĊ pod uwagĊ dwa podstawowe parametry charakteryzujące áącze, czyli koszt i opóĨnienie, a nastĊpnie zmierza siĊ do zminimalizowania tych wartoĞci. Algorytmy znajdowania najkrótszej ĞcieĪki w drzewie (SPT) minimalizują odlegáoĞci miĊdzy nadawcą, a kaĪdym z odbiorców, co przekáada siĊ na zmniejszenie opóĨnienia miĊdzy koĔcami. Wygenerowane w ten sposób drzewo nie jest jednak drzewem minimalnym. Z kolei drzewo Steinera minimalizuje caákowity koszt áączy – nie jest jednak optymalne, gdyĪ standardowo wystĊpują tutaj wiĊksze opóĨnienia miĊdzy koĔcowymi routerami. Zadaniem algorytmów multicast powinno byü zatem znalezienie optymalnego rozwiązania korzystając z wyznaczonej dla kaĪdego áącza funkcji wagowej. Zadania te realizują algorytmy heurystyczne szukające minimalnego drzewa rozpinającego z zachowaniem wymagaĔ dotyczących opóĨnienia. Algorytm te moĪna podzieliü na: wymuszone drzewo Steinera (Constrained Steiner Tree),wymuszone drzewo o najtaĔszych krawĊdziach (Constrained Cheapest Edge Tree) oraz wymuszone drzewo najkrótszej ĞcieĪki (Constrained Shortest Path Tree). 2.3. Techniki tworzące drzewa Ĩródáowe Zamiast tworzyü drzewo rozpinające dla caáej podsieci, technika drzew Ĩródáowych (Source-Based Trees) pozwala stworzyü strukturĊ drzewa dla kaĪdej pary nadawca-grupa odbiorców (S,G). DziĊki temu kaĪdy host moĪe byü czáonkiem wielu drzew, jeĞli oczywiĞcie naleĪy do wiĊcej niĪ jednej grupy multicast. 2.3.1. Algorytm RPB W przeciwieĔstwie do algorytmów znajdowania najkrótszych ĞcieĪek w drzewie, których gáównym zadaniem jest zminimalizowanie kosztu (odlegáoĞci) miĊdzy nadawcą, a kaĪdym z odbiorców, algorytmy wyznaczania drzewa o najmniejszym koszcie (Minimum Cost Tree Algorithm) skupiają siĊ na zmniejszeniu caákowitego kosztu danego drzewa (suma kosztów wszystkich poáączeĔ w drzewie musi byü minimalna). Gáównym zadaniem tego algorytmu jest wyznaczenie drzewa rozpinającego, obejmującego nadawcĊ i odbiorców, w ten sposób, aby caákowity koszt drzewa byá minimalny (Minimum Spanning Tree Algorithm). Klasyczny algorytm Prima sáuĪy do wyznaczania tego typu drzew, jednak traktuje on wszystkie wĊzáy drzewa jako czáonków danej grupy, a nie wszystkie hosty w sieci muszą nimi byü. Dziaáanie algorytmu RPB (Reverse-Path Broadcasting) polega na okreĞleniu drogi jaką przebyá pakiet od Ĩródáa do routera, który dokonuje oceny. JeĞli jest to najkrótsza moĪliwa droga áącząca router ze Ĩródáem, to pakiet przekazywany jest do wszystkich sąsiednich routerów w dóá (w stronĊ odbiorcy), poza tym który dany pakiet wysáaá. W przeciwnym wypadku pakiet jest odrzucany. àącza w kierunku nadawcy, tzn. te poprzez które routery otrzymują pakiety, okreĞlane są mianem rodzica (parent), z kolei te wzdáuĪ których pakiety są przekazywane w kierunku odbiorców – okreĞla siĊ mianem dziecka (child). Do kaĪdego z routerów prowadzi wiĊc jedno áącze parent, które jednoczeĞnie jest elementem najkrótszej drogi od Ĩródáa i tyle poáączeĔ typu child, ile routerów znajduje siĊ w jego sąsiedztwie. Algorytmy RPB cechuje wydajnoĞü i áatwoĞü implementacji. Dane od Ĩródáa do odbiorców przekazywane są róĪnymi drogami, co zapobiega koncentracji ruchu w niektórych partiach sieci [5]. 2.2.2. Algorytm minimalnego drzewa Steinera 2.3.2. Algorytm TRPB NiedogodnoĞü powyĪszej techniki usuwa algorytm minimalnego drzewa Steinera (Minimum Steiner Tree), którego zadaniem jest utworzenie minimalnego drzewa rozpinającego skáadającego siĊ tylko z czáonków danej grupy multicast, a takĪe uwzglĊdniającego punkty nie Algorytm TRPB (Truncated Reverse-Path Broadcasting) rozwija funkcjonalnoĞü algorytmu RPB. Podczas przekazywania pakietów bierze pod uwagĊ informacje dotyczące czáonkostwa w grupach multicast, przekazywanych przez protokóá IGMP [6]. JeĞli wiĊc w 2.2.1. Algorytm minimalnego drzewa rozpinającego topologii sieci istnieje router nie zawierający w swej podsieci Īadnego hosta bĊdącego czáonkiem jakiejkolwiek grupy multicast, nie otrzyma on pakietów kierowanych wzdáuĪ drzewa do poszczególnych odbiorców. Algorytm ten likwiduje niepotrzebny ruch w podsieciach granicznych, które nie zawierają czáonków danej grupy multicast. JednakĪe nie bierze on pod uwagĊ czáonkostwa w tych grupach w obrĊbie podsieci poĞrednich. 2.3.3. Algorytm RPM RPM (Reverse-Path Multicasting) jest algorytmem, który tworzy drzewo dystrybucyjne w oparciu o podsieci zawierające aktywnych czáonków grup multicast oraz routery, znajdujące siĊ na drodze do podsieci zawierających czáonków grup. Pozwala wiĊc blokowaü ruch nie tylko do podsieci danego routera, w której nie wystĊpują czáonkowie grup (odcinanie liĞci), lecz takĪe zatrzymaü ruch do routerów powyĪej, na drodze do nadawcy (odcinanie gaáĊzi). Pierwszy etap algorytmu polega na wysáaniu pakietów do wĊzáów drzewa za pomocą techniki TRPB. Gdy Īadna z podsieci doáączonych do routera nie zawiera czáonków grup multicast, router wysyáa komunikat zwrotny z Īądaniem odciĊcia go od struktury drzewa dystrybucyjnego (prune) do routera powyĪej (parent link) z ustawionym znacznikiem TTL o wartoĞci 1. JeĞli router bliĪej nadawcy takĪe nie zawiera w swych podsieciach czáonków grup multicast, to równieĪ wysyáa komunikat z Īądaniem odciĊcia. Pozwala to optymalizowaü drzewo poprzez usuwanie wiĊkszych gaáĊzi [5]. 3. PROTOKOàY ROUTINGU MULTICAST 3.1. DVMRP Protokóá DVMRP (Distance Vector Multicast Routing Protocol) stosowany w poáączeniach multicast wykorzystuje drzewa dystrybucyjne generowane „od Ĩródáa”. Pierwotne wersje protokoáu bazowaáy na algorytmie RIP (Routing Information Protocol) wykorzystując jednoczeĞnie technikĊ TRBP [7]. Od wersji 3.0 oprogramowania mrouted, wspierającego routing w sieci MBone, DVMRP dziaáa w oparciu o algorytm RPM. Routery wykorzystujące DVMRP obsáugują bezpoĞrednie poáączenia pomiĊdzy podsieciami oraz tzw. poáączenia tunelowane, czyli przebiegające poprzez inne podsieci, które bezpoĞrednio nie biorą udziaáu w transmisji multicast. W sposób charakterystyczny dla algorytmu RPM, pierwszy pakiet transmitowany w obrĊbie pary: Ĩródáo-grupa multicast, wysyáany jest do kaĪdej z podsieci (o ile wartoĞü wskaĨnika TTL na to pozwala). Po tej operacji routery stanowiące w sieci liĞcie, czyli nie transmitujące pakietów do Īadnych dalszych podsieci, mogą odáączyü siĊ od drzewa dystrybucyjnego (jeĞli w obrĊbie swoich podsieci nie posiadają aktywnych czáonków grupy). Pierwszą operacją realizowaną przez protokóá DVMRP jest wiĊc rozsyáanie wiadomoĞci odáączenia (prune message). Ze wzglĊdu na dynamikĊ powstaáego drzewa (routery mogą odáączaü siĊ od drzewa dystrybucyjnego na skutek komunikatów IGMP) istnieje potrzeba okresowej weryfikacji powstaáej struktury. Ta funkcjonalnoĞü protokoáu DVMRP polega na periodycznym rozsyáaniu wiadomoĞci zalewają- cej (flooding) docierającej ponownie do kaĪdej podsieci, w celu okreĞlenia ewentualnych, nowych czáonków grupy. Operacja ta jest szczególnie istotna z powodu wykorzystywania protokoáu UDP (User Datagram Protocol) do transmisji wiadomoĞci odáączania. Ze wzglĊdu na to, Īe UDP nie gwarantuje dotarcia informacji, szybka aktualizacja drzewa dystrybucyjnego zapobiega ewentualnym nadmiarowym pakietom transmitowanym niepotrzebnie do podsieci, które nie oczekują na te dane. Ostatnią operacją realizowaną przez DVMRP jest funkcja ponownego doáączenia (grafting). UmoĪliwia to szybkie uaktualnienie drzewa dystrybucyjnego w przypadku pojawienia siĊ hosta zgáaszającego chĊü uczestnictwa w danej grupie multicast. Router, który w swej podsieci wykryje nowego czáonka grupy wysyáa komunikat graft w stronĊ routerów wyĪej, które uaktualniają swe tablice trasowania przyáączając nową gaáąĨ. Takie rozwiązanie zapewnia szybkie podáączenie nowego uĪytkownika, zanim sieü przeprowadzi operacjĊ odtwarzania caáej struktury drzewa. Ze wzglĊdu na wykorzystanie powszechnie znanego algorytmu RIP, DVMRP cechuje wzglĊdnie prosta implementacja. Ponadto technikĊ tą charakteryzuje maáe wykorzystanie mocy obliczeniowej procesora, co w rezultacie pozwala obsáuĪyü nawet duĪe sieci. Periodyczne zalewanie sieci pakietami w celu aktualizacji drzew dystrybucyjnych jest jednak czynnikiem niekorzystnym wydatnie zmniejszającym przepustowoĞü w duĪych sieciach. 3.2. HDVMRP HDVMRP (Hierarchical Distance Vector Multicast Routing Protocol) pozwala transmitowaü pakiety w sieciach podzielonych na regiony (odzwierciedlające podziaá na domeny). KaĪda z domen otrzymuje swój unikalny identyfikator. W obrĊbie takiej domeny moĪe funkcjonowaü dowolny protokóá IP multicast (protokoáy pierwszego poziomu), natomiast miĊdzy tymi obszarami stosuje siĊ protokóá DVMRP implementowany w routerach granicznych (protokóá drugiego poziomu obsáugujący routing miĊdzydomenowy). MoĪliwa jest równieĪ trzypoziomowa hierarchia routingu (poprzez wprowadzenie superregionów), jednak skomplikowana enkapsulacja pakietów sprawia, Īe jest to maáo wydajny protokóá routingu. HDVMRP wykorzystywany jest w przypadku duĪych obszarów sieciowych w celu podziaáu ich na mniejsze jednostki, pozwalając znacznie ograniczyü ruch miĊdzy domenami [5]. 3.3. MOSPF ZaleĪnoĞü DVMRP od protokoáów unicast powoduje, Īe staje siĊ on niepraktyczny w segmentach sieci, które wykorzystują inne protokoáy routingu, np. OSPF (Open Shortest Path First). MOSPF (Multicast Extensions to Open Shortest Path First) rozszerza funkcjonalnoĞü tradycyjnego protokoáu OSPF o wsparcie dla transmisji multicast – wykorzystuje informacje gromadzone przez OSPF w oparciu o algorytm stanu áącza i na ich podstawie buduje drzewa dystrybucyjne multicast [8]. Zapewnia takĪe wspóápracĊ z routerami z zaimplementowanym OSPF, co pozwala na przekazywanie pakietów unicast w drzewie multicast. Podobnie jak wczeĞniej omówione techniki, routery MOSPF wykorzystują IGMP w celu wykrywania aktywnych czáonków grup w swych podsieciach i utrzymują bazy danych takich lokalnych grup. KaĪdy z nich posiada kompletną topologiĊ sieci oraz informacje na temat uczestnictwa w grupach i na tej podstawie wyznacza najkrótsze trasy miĊdzy nadawcą, a czáonkami grup w sieci. Gáówne cechy MOSPF: x kaĪdy z routerów wyznacza to samo drzewo dystrybucyjne o najkrótszych ĞcieĪkach generowane od Ĩródáa, x bazy danych o grupach multicast przechowywane w routerach są zsynchronizowane – pozwala to na tworzenie i aktualizacje drzew dystrybucyjnych w pamiĊciach routerów (w kierunku od Ĩródáa do odbiorców); oznacza to, Īe zbĊdna staje siĊ technika zalewania pakietami wszystkich punktów sieci w celu aktualizacji drzewa, x tworzenie drzew dystrybucyjnych w trybie na Īądanie sprawia, Īe aktualizacja informacji pomiĊdzy routerami jest rozáoĪona w czasie, co ogranicza nadmierne wykorzystywanie zasobów routerów; moĪe to sprawiü pewne problemy w przypadku licznych zmian w topologii w obrĊbie niewielkiego obszaru sieci, lecz w obliczu usystematyzowanych, dáugich sesji, taki tryb jest bardzo wydajny i stabilny. Przesyáanie datagramów w obrĊbie obszarów okreĞlone jest za pomocą pamiĊci przekazywania, w którą wyposaĪony jest kaĪdy router MOSPF. W przypadku przesyáania danych miĊdzy róĪnymi obszarami sieci, MOSPF okreĞla router miĊdzyobszarowy (inter-area multicast forwarder), który odpowiedzialny jest za przekazywanie informacji o czáonkostwie w grupach i datagramów z danymi. CzĊsto jako wsparcie dla tego rozwiązania konfiguruje siĊ równieĪ graniczny router OSPF – ABR (Area Border Router), który równieĪ pracuje jako przekaĨnik ruchu multicast pomiĊdzy obszarami. Routery peániące rolĊ áączników pomiĊdzy róĪnymi obszarami, tworzą podsumowania dotyczące czáonkostwa w grupach w doáączonych do nich obszarach i transmitują te dane do obszaru gáównego (backbone), zawierającego informacje na temat wszystkich pozostaáych obszarów. Odbywa siĊ to z wykorzystaniem komunikatów LSA (Link State Advertisement). Problem ĞciĞle związany z operowaniem pomiĊdzy obszarami to odáączanie routerów (prunning). Proces ten musi byü poddawany specjalnej kontroli, aby z drzewa nie zostaáy usuniĊte routery transmitujące dane do innych obszarów. Protokóá MOSPF cechuje szybka adaptacja do zmian zachodzących w topologii, a takĪe brak techniki zalewania (flooding). Poprzez wspóápracĊ z OSPF pozwala przekazywaü zarówno ruch unicast, jak i multicast. MOSPF jest jednak protokoáem o znacznej záoĪonoĞci obliczeniowej (wymaga od kaĪdego routera wyznaczenia drzew o najkrótszych ĞcieĪkach miĊdzy nadawcą, a grupą odbiorców dla kaĪdej grupy multicast). Nie jest teĪ dobrym rozwiązaniem w topologiach o duĪym rozproszeniu czáonków grup (sparse mode). 3.4. PIM (Protocol-Independent Multicast) GrupĊ protokoáów PIM (Protocol-Independent Multicast) tworzą dwa protokoáy PIM-DM (Protocol-Independent Multicast Dense Mode) i PIM-SM (Protocol-Independent Multicast Sparse Mode), które charakteryzują siĊ one tym samym zbiorem komunikatów i wiadomoĞci kontrolnych. PIM-DM stosowany jest w Ğrodowisku, w którym czáonkowie grup multicast rozlokowani są na niewielkim obszarze, czyli gĊsto (dense). Wtedy moĪliwe jest osiągniĊcie duĪych przepáywnoĞci i protokóá dziaáa najwydajniej. PIM-SM jest z kolei rozwiązaniem stosowanym w przypadku rzadkiego rozmieszczenia czáonków grup (sparse) w wielu regionach sieci (przepáywnoĞci są wtedy relatywnie mniejsze). PIM jest niezaleĪny od protokoáu routingu unicast (w przeciwieĔstwie do DVMRP i MOSPF). 3.4.1. PIM-DM Podobnie jak DVMRP, PIM-DM [9] wykorzystuje technikĊ floodingu w celu budowy drzewa – kaĪdy z routerów rozsyáa pakiety do wszystkich swoich interfejsów, z wyjątkiem tego interfejsu, z którego pakiety napáynĊáy. PodobieĔstwo wynika równieĪ z zastosowania algorytmu RPM (Reverse-Path Multicasting) w celu odcinania od drzewa gaáĊzi nie biorących udziaáu w transmisji. W niektórych przypadkach PIM-DM moĪe siĊ okazaü protokoáem mniej wydajnym od DVMRP, gdyĪ nie zapewnia dostatecznie wnikliwej kontroli interfejsów routerów, co sprawia, Īe nie są one wraĪliwe na ruch zalewający. Routery oparte na PIM-DM przechowują dane o wiadomoĞciach Īądania odáączenia (prune messages), w odniesieniu do par Ĩródáo – grupa, w swoich pamiĊciach. Niejednokrotnie jednak moĪe siĊ zdarzyü, Īe z powodu braku dostĊpnych zasobów (pamiĊci), router usunie najstarszy zapis. W wyniku tego sieü moĪe zostaü obciąĪona dodatkowymi pakietami, przesyáanymi w celu ponownego okreĞlenia drzewa dystrybucyjnego (dla usuniĊtego wpisu Ĩródáo – grupa). Ta wada jednak nie jest zbyt istotna, gdyĪ PIM-DM przeznaczony jest dla sieci o duĪych przepáywnoĞciach a periodyczny ruch zalewowy generowany przez protokóá nie obciąĪa sieci w znaczący sposób. Protokoáy PIM wymagają obecnoĞci routera desygnowanego w kaĪdej podsieci. W ten sposób tylko jedno urządzenie zajmuje siĊ transmisją komunikatów IGMP i kontrolą czáonkostwa w grupach. Zarówno dla PIM-DM, jak i PIM-SM sposób wyboru routera desygnowanego jest taki sam: jeĞli w podsieci istnieje wiĊcej niĪ jeden router, to routerem desygnowanym zostaje ten, który posiada wyĪszy adres IP. O ile rozsyáanie zapytania IGMP nie koniecznie musi byü realizowane przez router desygnowany, musi on zapewniü przesyáanie wiadomoĞci odáączenia (prune) oraz przyáączenia (join) do tzw. punktu spotkania (rendezvous point). Router desygnowany gromadzi równieĪ informacje na temat aktywnych punktów spotkaĔ dla kaĪdej grupy multicast. Routery posiadające zaimplementowany protokóá PIM zawierają procedury do wyboru alternatywnej drogi spoĞród moĪliwych dróg o jednakowym koszcie. JeĞli istnieją dwie drogi miĊdzy dwoma punktami w sieci i kaĪdej z nich przypisany jest taki sam koszt, pakiet zostaje przesáany do urządzenia, które posiada wyĪszy adres IP Zgodnie z rys. 3.1 router A przekazuje pakiet do routerów B i C. W podsieci routera B taki pakiet zostanie przesáany do czáonka grupy. PoniewaĪ w otoczeniu C nie ma aktywnych czáonków grup multicast, wyĞle on do A komunikat z Īądaniem odáączenia. Gdyby sytuacja taka miaáa miejsce odáączony zostaáby takĪe router B. Rys. 3.1. Wspóádzielenie áącza przez routery PIM. PIM zapewnia mechanizm rozwiązujący ten problem: wszystkie wiadomoĞci z Īądaniem odáączenia muszą byü wysyáane na adres multicast 224.0.0.2 (okreĞlający wszystkie routery w podsieci). Tak wiĊc wiadomoĞü z Īądaniem odáączenia wysáana przez router C, dotrze zarówno do routera A, jak i B. Router A nie odáączy grupy od razu a jedynie zaplanuje takie dziaáanie. Tymczasem router B po otrzymaniu tej wiadomoĞci wyĞle wiadomoĞü przyáączenia na wspólny adres 224.0.0.2. Router A po jej otrzymaniu zrezygnuje z operacji odáączenia grupy [10]. 3.4.2. PIM-SM Protokóá PIM-SM zostaá zaprojektowany w celu efektywnego przekazywania ruchu multicast do czáonków grup rozmieszczonych rzadko (sparse), tzn. w róĪnych regionach sieci (taki rodzaj grup wystĊpuje w sieciach WAN) [10]. Nieefektywne okazują siĊ zatem protokoáy wykorzystujące flooding w początkowej fazie budowania drzewa dystrybucyjnego. W protokole PIM-SM najwaĪniejszą rolĊ odgrywają tzw. punkty spotkaĔ (rendezvous points) czyli routery wykorzystywane przez nadawców (do rozgáoszenia swej obecnoĞci), jak i odbiorców – aby uzyskaü informacje na temat nadawców w danej grupie multicast (rys. 3.2). Gdy uĪytkownik w danej podsieci wyrazi chĊü uczestnictwa w grupie multicast, router obsáugujący jego podsieü musi wysáaü wiadomoĞü z Īądaniem doáączenia (join message) do punktu spotkaĔ. Dokonuje tej procedury po otrzymaniu odpowiedniego komunikatu IGMP od uĪytkownika. PIMSM, w przeciwieĔstwie do PIM-DM, nie przesyáa danych do wszystkich routerów (poza tymi, które odáączyáy siĊ od struktury drzewa dystrybucyjnego), ale ogranicza ich iloĞü, wysyáając pakiety jedynie do wczeĞniej przyáączonych routerów. Gdy topologia sieci tego wymaga, router wysyáa Īądanie przyáączenia do kolejnego routera w kierunku rendezvous point. W ten sposób tworzy siĊ struktura, która ostatecznie poáączy nowego czáonka grupy z routerem bĊdącym punktem spotkaĔ. Dla danej domeny obsáugiwanej przez protokóá PIM-SM, istnieje tylko jeden zestaw routerów – punktów spotkaĔ i kaĪdy z nich peáni rolĊ równorzĊdną, obsáugując jedną grupĊ uĪytkowników w danej chwili. W topologii sieci lokalnej opartej na PIM-SM wystĊpuje router desygnowany i charakteryzuje siĊ takimi samymi cechami jak w przypadku PIM-DM. Gdy otrzyma on raport IGMP informujący o tworzeniu nowej grupy, okreĞla czy grupa ta musi byü oparta na punkcie spotkaĔ. JeĞli tak jest, router desygnowany tworzy wpis w swojej pamiĊci dotyczący pary: dowolne Ĩródáo – grupa i transmituje wiadomoĞü przyáączenia (join message) w trybie unicast do najbliĪszego, dostĊpnego dla danej grupy, punktu spotkaĔ. Routery poĞrednie równieĪ dokonują wpisów dotyczących nowej grupy w swoich pamiĊciach, o ile takie wpisy jeszcze nie istnieją. Dopiero po zakoĔczeniu tej operacji, utworzona zostanie droga do dystrybucji pakietów dla nowej grupy. JeĞli nadawca jako pierwszy wyĞle pakiet, desygnowany router dokona enkapsulacji pakietu i przeĞle go w trybie unicast do punktu spotkaĔ, przypisanego grupie docelowej. Pakiet po enkapsulacji nosi nazwĊ pakietu rejestracyjnego PIM-SM (PIM-SM register packet). Gdy router spotkaĔ otrzyma taki pakiet rejestracyjny, odsyáa w kierunku routera desygnowanego Ĩródáa wiadomoĞü przyáączenia. Drzewo dystrybucyjne zakorzenione w punkcie spotkaĔ zapewnia poáączenia do wszystkich czáonków grupy, jednak stworzone drogi najczĊĞciej nie są optymalnymi dla danej topologii. Protokóá PIM-SM umoĪliwia zarówno przesyáanie pakietów poprzez te drzewa, jak i tworzenie nowych drzew zakorzenionych w punkcie nadawcy i charakteryzujących siĊ najkrótszymi, moĪliwymi ĞcieĪkami. Takie rozwiązanie ogranicza opóĨnienia w przekazywaniu pakietów od Ĩródáa do czáonków grupy oraz redukuje koncentracjĊ ruchu jedynie w obrĊbie RP (rendezvous point). Wadą PIM-SM jest tworzenie tzw. wąskich gardeá w punktach spotkaĔ. Są one równieĪ potencjalnymi punktami zagraĪającymi integracji caáego drzewa w przypadku awarii [11]. 3.5. HPIM HPIM (Hierarchical Protocol-Independent Multicast) jest hierarchiczną wersją protokoáu PIM. Charakteryzuje siĊ hierarchizacją punktów spotkaĔ i przydzieleniem ich do róĪnych grup w zaleĪnoĞci od usytuowania w sieci oraz zakresu peánionych funkcji. Takie rozwiązanie zapobiega powstawaniu pĊtli przy transmisji pakietów oraz umoĪliwia rozdzielenie danych kontrolnych od danych aplikacji multicast [2]. 3.6. CBT Rys. 3.2. Model sieci z wykorzystaniem protokoáu PIM-SM Protokóá CBT (Core Based Tree) zostaá zaprojektowany specjalnie w celu rozwiązania problemu skalowalnoĞci w sieciach publicznych, takich jak Internet. CBT jest protokoáem niezaleĪnym od zaimplemen-towanych protokoáów unicast – wykorzystuje istniejące tablice routingu do tworzenia drzew dystrybucyjnych. UĪytkownik chcący doáączyü siĊ do grupy informuje lokalny router (z zaimplementowanym protokoáem CBT) wykorzystując komunikaty IGMP. Po otrzymaniu takiego komunikatu router CBT wysyáa wiadomoĞü z Īądaniem przyáączenia do kolejnego routera w kierunku do routera – rdzenia drzewa dystrybucyjnego, przypisanego danej grupie (rys. 3.3). Rys. 3.3. Doáączanie czáonka grupy do drzewa CBT Router rdzeniowy odpowiada na komunikat join potwierdzeniem przyáączenia do drzewa (acknowledge). Istnieje teĪ bardziej korzystne rozwiązanie, jeĞli miĊdzy routerem desygnowanym, a rdzeniowym istnieje urządzenie naleĪące juĪ do drzewa CBT – wtedy takie urządzenie wysyáa wczeĞniej komunikat potwierdzający. Niemniej, kaĪdy z routerów poĞrednich, po otrzymaniu wiadomoĞci z Īądaniem, przechodzi w chwilowy stan áączenia (transient join state). W wyniku tego stanu nastĊpuje zapisanie informacji o grupie multicast oraz numerów portów: wejĞciowego (przez który Īądanie zostaáo otrzymane) i wyjĞciowego (przez który Īądanie zostanie przesáane dalej). UmoĪliwi to przesáanie potwierdzenia tą samą drogą do nadawcy Īądania. Gdy w kierunku przeciwnym przesyáana jest wiadomoĞü potwierdzająca, routery poĞrednie zmieniają swój stan na aktywny, co wiąĪe siĊ z zapisaniem w pamiĊci portu wejĞciowego i wyjĞciowego przy transmisji pakietów przeznaczonych dla danego czáonka grupy. W takim drzewie dla kaĪdej pary sąsiednich routerów wyróĪniamy: router dziecko (bliĪej odbiorcy) i router rodzic (bliĪej nadawcy). Po utworzeniu gaáĊzi routery poĞrednie periodycznie przesyáają komunikat echa do swojego rodzica. Na taki komunikat router rodzic odpowiada analogicznym komunikatem. Wymiana komunikatów odbywa siĊ przy uĪyciu poáączenia unicast. Ruch generowany przez protokóá CBT jest znacznie mniejszy niĪ w przypadku protokoáów pracujących w trybie gĊstym. Mniejsze są takĪe wymagania sprzĊtowe stawiane routerom. Niestety, punkty spotkaĔ (RP) mogą stanowiü wąskie gardáa w transmisji pakietów multicast, a ich awarie – niekorzystnie wpáywaü na integralnoĞü drzewa dystrybucyjnego. Istnieje takĪe problem związany z umiejscowieniem w topologii drzew routerów rdzeniowych (moĪliwa konfiguracja automatyczna lub rĊczna). 3.7. OCBT OCBT (Ordered Core-Based Trees) jest wersją protokoáu CBT, która wprowadza hierarchiĊ wĞród rdzeni obecnych w topologii sieci. Takie rozwiązanie zapewnia brak wystĊpowania pĊtli przy przesyáaniu pakietów oraz gwarantuje skoĔczony, maksymalny czas odtworzenia struktury po wystąpieniu báĊdu (awarii) w którymkolwiek z routerów. 4. PODSUMOWANIE Implementacja technologii multicast w sieciach dalekiego zasiĊgu wiąĪe siĊ z potrzebą wyboru okreĞlonych narzĊdzi w postaci stosownego protokoáu routingu opartego o wydajny algorytm. Podyktowane jest to przede wszystkim dynamiką tworzenia grup multicast. DuĪe znaczenie ma takĪe rozmieszczenie uĪytkowników w sieci, jej wielkoĞü i przewidywany rozwój. Operacje trasowania zaimplementowane w routerach są bardzo skomplikowane, a poziom ich záoĪonoĞci wzrasta wraz z doáączaniem kolejnych podsieci. W artykule omówiono popularne protokoáy routingu w sieciach IP multicast pod kątem ich zastosowania w sieciach gĊstych (DVMRP, MOSPF, PIM-DM) oraz rzadkich (PIM-SM, CBT). Z racji rozwoju sieci Internet, bĊdącej siecią rzadką, istnieje zapotrzebowanie na skalowalne protokoáy routingu uwzglĊdniające hierarchizacjĊ urządzeĔ sieciowych (routing hierarchiczny) oraz techniki wspóádzielenia drzew dystrybucyjnych takie rozwiązania wdroĪone zostaáy w protokoáach HDVMRP, HPIM czy OCBT. SPIS LITERATURY [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] S. E. DEERING, Host extensions for IP multicasting, IETF, RFC 1112, August 1989. S. HAREZ AND D. KATZ, Administrative Domains and Routing Domains: A model for routing in the Internet, IETF, RFC 1136, December 1989. E. DIJKSTRA, A note on two problems in connection with graphs, Numerical Mathematics 1, (1959), 395-412. S. PAUL, Multicasting on the internet and its applications, Kluwer Academic Publishers, 1998. D. KOSIUR, IP multicasting: the complete guide to interactive corporate networks, Wiley Computer Publishing, 1998. W. FENNER, Internet Group Management Protocol, version 2, IETF, RFC 2236, November 1997. D. WAITZMAN, C. PARTRIDGE AND S. E. DEERING, Distance Vector Multicast Routing Protocol, IETF, RFC 1075, November 1988. J. MOY, Multicast Extensions to OSPF, IETF, RFC 1584, March 1994. A. ADAMS, J. NICHOLAS, W. SIADAK Protocol Independent Multicast - Dense Mode (PIM-DM), IETF, INTERNET DRAFT , February 2003. W. R. PARKHURST, Cisco Multicast Routing and Switching, McGraw-Hill, 1999. S. HAREZ AND D. KATZ, Protocol Independent Multicast – Sparse Mode (PIM-SM): Protocol Specification, IETF, RFC 2117, December 1989.