Wydzia艂 AEiI Gliwice dn. 14.05.2002
Informatyka
[MATERIAAY DO SKRYPTU Z SIECI KOMPUTEROWYCH]
MULTICAST ROUTING opracowanie teoretyczne
i przyk艂ad wykorzystania w systemie LINUX
AUTOR ROZDZIAAU:
Aleksander Wala
gr. 2, sem VIII
awala@email.pl
http://www.email.pl/~awala
Strona 1 z 7
Rozdzia艂 ten ma na celu przedstawi膰 dzia艂anie protoko艂u rozpowszechnianego
sukcesywnie w Internecie i zwi膮zanego z zaawansowanymi metodami trasowania (routingu) i
maksymalnej optymalizacji metod transmisji wraz z optymalnym wykorzystaniem
istniej膮cych 艂膮cz. Na czym polega multicast routing?
1.) Wprowadzenie
Multicast routing powsta艂 w odpowiedzi na potrzeby. Wraz ze wzrostem ilo艣ci
komputerow pod艂膮czonych do Internetu, wraz ze wzrostem poziomu us艂ug w Internecie a co
za tym idzie transmisji coraz to wi臋kszych danych do coraz to wi臋kszej rzeszy odbiorc贸w
narodzi艂a si臋 potrzeba zoptymalizowania dotychczasowego sposobu przesy艂u informacji.
Mieli艣my dot膮d 3 sposoby transmisji:
" UNICAST gdzie informacja by艂a przesy艂ana do konkretnego odbiorcy
" BROADCAST gdzie informacje by艂y wysy艂ane do wszystkich niezale偶nie od tego
czy kto艣 informacji 偶膮da艂 czy nie
" ANYCAST informacja dociera do dowolnego z zadanych adresat贸w.
Metoda omawiana w tym rozdziale to MULTICAST, czyli przesy艂anie informacji do wielu
odbiorc贸w (ale nie wszystkich). Unicast to po prostu standardowy przesy艂 mi臋dzy dwoma
w臋z艂ami sieci. Przyk艂adowo ca艂e TCP/IP jest ze swojej natury zorientowane unicastowo.
Wystarcza艂o to a偶 do roku 1993, kiedy to po raz pierwszy w systemach BSD 4.4
zaimplementowano protok贸艂 multicast.
Za艂贸偶my sytuacj臋 gdzie jest stacja nadawcza np. internetowa rozg艂o艣nia
radiowa/telewizyjna znajduj膮ca si臋 w mie艣cie X oraz oddaleni o k w臋z艂贸w odbiorcy Y1...YN.
Strona 2 z 7
W tradycyjnym modelu odbiorca Y(n) 偶膮da informacji a stacja X j膮 nadaje. Przy N
odbiorcach dane przesy艂ane s膮 dublowane. O ile nie ma to znaczenia w mniejszych sieciach to
przy K w臋z艂ach i M stacjach radiowych (np. 艂膮cza mi臋dzykontynentalne) takie dublowanie si臋
informacji jest strat膮 cennych i drogich pasm i kana艂贸w transmisji.
Multicast to co艣 w rodzaju radia czy telewizji. Nadawana jest informacja a odbiera j膮
tylko ten, kto nastawi sw贸j odbiornik na odpowiedni膮 cz臋stotliwo艣膰 .
2.) Adresowanie multicastowe
Jak zapewne by艂a ju偶 mowa we wcze艣niejszych rozdzia艂ach adresowanie w Internecie
bazuje na 32-bitowym adresie zwanym adresem IP. Sk艂ada si臋 on z czterech o艣miobitowych
p贸l. Przyjrzyjmy si臋 dok艂adnemu podzia艂owi ca艂ej puli adres贸w.
Bit --> 0 31 Zakresy adres贸w:
+-+----------------------------+
|0| Klasa A | 0.0.0.0 - 127.255.255.255
+-+----------------------------+
+-+-+--------------------------+
|1 0| Klasa B | 128.0.0.0 - 191.255.255.255
+-+-+--------------------------+
+-+-+-+------------------------+
|1 1 0| Klasa C | 192.0.0.0 - 223.255.255.255
+-+-+-+------------------------+
+-+-+-+-+----------------------+
|1 1 1 0| Adresy multicastowe | 224.0.0.0 - 239.255.255.255
+-+-+-+-+----------------------+
+-+-+-+-+-+--------------------+
|1 1 1 1 0| Zarezerwowane | 240.0.0.0 - 247.255.255.255
+-+-+-+-+-+--------------------+
Jak wi臋c wida膰 ka偶dy datagram w Internecie, kt贸rego adres zaczyna si臋 od sekwencji
bit贸w 1110 lub mniej in偶yniersko od adresu 224.0.0.0 do 239.255.255.255 to datagram
multicastowy. Pozosta艂e bity to niejako ta nasza cz臋stotliwo艣膰 okre艣laj膮ca grup臋 odbiorc贸w.
Nie mo偶na jednak wykorzystywa膰 sobie tych adres贸w dowolnie. S膮 one podzielone na
funkcje. Jest kilka grup o okre艣lonych z g贸ry funkcjach, kt贸re nie powinny by膰
wykorzystywane do zwyk艂ych cel贸w. Przyk艂adowo:
" 224.0.0.1 grupa wszystkich host贸w (komputer贸w, serwer贸w) obs艂uguj膮cych
multicast. Je艣li zrobimy pinga na ten adres odpowiedz膮 wszystkie komputery, kt贸re
obs艂uguj膮 multicast oczywi艣cie nie wszystkie na 艣wiecie tylko wszystkie w naszej
podsieci. Mo偶e to by膰 rodzaj testu po konfiguracji komputera czy multicast dzia艂a
(ping 224.0.0.1)
" 224.0.0.2 grupa wszystkich router贸w obs艂uguj膮cych multicast
" 224.0.0.4 grupa router贸w DVMRP
" 224.0.0.5 grupa router贸w OSPF
" 224.0.0.13 grupa router贸w PIM
" oraz wiele innych, kt贸rych wipisywanie tutaj nie jest celowe
Wszystkie te grupy s膮 zdefiniowane w odpowiednim RFC numer 2365.
Strona 3 z 7
Generalnie ca艂y zakres 224.0.0.0 224.0.0.255 przeznaczony jest do sieci LAN i
pakiety z tymi adresami przeznaczenia nie wychodz膮 poza routery nawet multicastowe (tak
jak np. pula 192.168.x.x nie jest standardowo przez j膮dro routowana)
Podobnie grupa 239.0.0.0 239.255.255.255 zosta艂a ju偶 zarezerwowana do cel贸w
administracyjnych.
3.) Poziomy zgodno艣ci z MULTICAST em
W臋z艂y w sieci mog膮 mie膰 trzy r贸偶ne poziomy zgodno艣ci z protoko艂em multicastowym:
" Poziom 0 ca艂kowity brak zgodno艣ci z IP multicastingiem. Wiele komputer贸w na
dzie艅 dzisiejszy jest na tym poziomie, jako 偶e multicast nie jest obowi膮zkowy i
wewn臋trznie obs艂ugiwany przez IP w wersji czwartej. Wersja 6 implementacji IP w
pe艂ni wspiera ju偶 multicasting nie jest jednak ona obowi膮zuj膮ca (na dzie艅 dzisiejszy)
w Internecie.
" Poziom 1 wsparcie do wysy艂ania datagram贸w multicastowych ale bez mo偶liwo艣ci
odbioru. Nie ma potrzeby zapisywania si臋 do grup, je艣li chcemy tylko nadawa膰.
Niewiele pracy kosztuje przej艣cie z poziomu 0 do poziomu 1. Sens pozostania w tym
poziomie jest dla serwis贸w udost臋pniaj膮cych dane, kt贸re maj膮 zapewnione kilka
kolejnych router贸w wspieraj膮cych poziom 2
" Poziom 2 pe艂ne wsparcie dla odbioru i wysy艂ania pakiet贸w multicastowych. Punkty
w tym poziomie zgodno艣ci wiedz膮 jak zapisywa膰 si臋 do grup oraz jak przesy艂a膰
informacje do router贸w multicastowych. Poci膮ga to za sob膮 implementacj臋 Internet
Group Management Protocol (IGMP) w konfiguracji stosu TCP/IP.
4.) Wysy艂anie datagram贸w multicastowych
Ca艂y ruch multicastowy odbywa si臋 w warstwie transportowej z wykorzystaniem UDP
poniewa偶 TCP to z natury po艂膮czenia z punktu do punktu i nie nadaje si臋 do muticastu.
Trwaj膮 bardzo intensywne badania nad wdro偶eniem nowych protoko艂贸w transportowych, dla
multicastu (Multicast Transport Protocols MTP). Aby wi臋c wys艂a膰 informacje nale偶y
otworzy膰 gniazdo UDP i wys艂a膰 pakiet z odpowiednim adresem multicastowym. Jest jednak
kilka operacji niezb臋dnych, kt贸re proces transportu musi kontrolowa膰.
a) TTL ma tutaj podw贸jne znaczenie. Standardowo czas Time To Live w nag艂贸wku IP
ma za zadanie zapobiega膰 niesko艅czonej p臋tli przy b艂臋dach routingu. Kolejne routery
zmniejszaj膮 ttl i gdy osi膮gnie zero pakiet jest porzucany i nieprzesy艂any dalej. TTL w
IPv4 multicastowym ma tak偶e znaczenie progowe. TTL steruje pakietami w znaczeniu
takim 偶e TTL jest por贸wnywane z odpowiednimi warto艣ciami i wypuszczane dalej
przez dane routery czy interfejsy. Oto spis poszczeg贸lnych warto艣ci. Warto doda膰 i偶
s膮 to umowne warto艣ci i zale偶膮 w du偶ej mierze od administratora i konfiguracji.
" TTL=0 ograniczenie pakietu do tego samego interfejsu. Pakiety nie wychodz膮
poza 偶aden interfejs.
" TTL=1 Ograniczenie do podsieci. Pakiet nie wyjdzie poza router (mrouter).
" TTL<32 ograniczenie do danego departamentu lub organizacji.
" TTL<64 ograniczenie do danego regionu
" TTL<128 ograniczenie do danego kontynentu
" TTL<256 zasi臋g globalny
b) Loopback p臋tla zwrotna domy艣lnie je艣li dany w臋ze艂 sieci jest w 2 poziomie
zgodno艣ci z IP multicastingiem kopia danych przychodz膮cych jest zwrotnie p臋tlona na
danym interfejsie. Chodzi o to, 偶e gdy nadajemy dane a sami mamy procesy, kt贸re
Strona 4 z 7
chc膮 tych danych s艂ucha膰 nie trzeba nas艂uchiwa膰 na kablu tych ramek. Nale偶e jeszcze
podczas wysy艂ania, gdy dana ramka jest wewn膮trz naszego stosu TCP/IP przekazywa膰
odpowiedniemu procesowi. Zapobiega to nadmiernym i niepotrzebnym obci膮偶eniom.
Cecha ta mo偶e by膰 艣wiadomie w艂膮czona lub nie.
c) Wyb贸r interfejsu nale偶y programowo zadba膰 o wyb贸r interfejsu. J膮dro b臋dzie
wybiera艂o domy艣lny ustawiony przez administratora. Ma to znaczenie przy wi臋kszych
systemach pod艂膮czonych do wielu sieci (>1).
5.) Odbieranie datagram贸w multicastowych
a) Do艂膮czanie si臋 do grupy polega na tym, 偶e m贸wimy j膮drze systemu, 偶e jeste艣my
zainteresowani dan膮 grup膮 multicastow膮 i aby przekazywa艂 nam wszystkie pakiety
zwi膮zane z dan膮 grup膮. Jednak nie tylko nam, ale ka偶demu procesowi, kt贸ry wyrazi
zainteresowanie. Je艣li wi臋c dany proces chce korzysta膰 z grupy musi powiedzie膰 o
tym kernelowi i przydzieli膰 port, na kt贸rym b臋dziemy chcieli te datagramy odbiera膰.
UDP korzysta z adresu i portu, aby demultipleksowa膰 nadsy艂ane pakiety.
b) Od艂膮czanie si臋 od grupy polega na daniu sygna艂u do j膮dra, 偶e dana grupa ju偶 nas nie
interesuje. Wcale to nie znaczy, 偶e j膮dro nie bedzie ju偶 odbiera膰 z danej grupy, jako 偶e
inne procesy, kt贸re zadeklarowa艂y przy艂膮czenie dalej mog膮 potrzebowa膰 tych
informacji. Trzeba zrozumie膰, 偶e cz艂onkostwo w grupie muticastowej jest per-host a
nie per-proces. Nawet id膮c dalej, je艣li pozostajemy na nas艂uchu na danym porcie a
inne grupy nadal s艂uchaj膮 na danej grupie to, mimo i偶 zrezygnowali艣my jako proces ze
s艂uchania datagramy b臋d膮 do nas dociera艂y.
6.) Podstawy konfiguracji LINUX a do obs艂ugi multicastingu
LINUX to wielozadaniowy, wielou偶ytkownikowy system operacyjny, kt贸rego g艂贸wne
i najbardziej na dzie艅 dzisiejszy racjonalne wykorzystanie jest w zastosowaniach sieciowych
jako serwer (z wszelkimi mo偶liwymi us艂ugami) oraz jako router a tak偶e firewall.
Zastosowania LINUX a s膮 bardzo szerokie i pisanie o nich nie jest celem tego rozdzia艂u
warto jednak wspomnie膰 i偶 przez coraz to liczniejsze osoby wykorzystywany jest tak偶e jako
stacja robocza w zastosowaniach biurowych.
Nie b臋dzie wi臋c zaskoczeniem je艣li powiemy sobie i偶 LINUX doskonale mo偶e
pracowa膰 w drugim poziomie zgodno艣ci z multicastingiem czyli mo偶e zar贸wno odbiera膰 jak i
nadawa膰 pakiety multicastowe oraz spe艂nia膰 funkcje routera multicastowego (mrouter a).
Powiemy sobie jak przystosowa膰 LINUX a do pracy zgodnej z multicastem.
Pierwszym krokiem jest tutaj odpowiednia konfiguracja j膮dra systemu. W niekt贸rych
wersjach multicasting jest jeszcze oznaczony jako EXPERIMENTAL . Trzeba wtedy
w艂膮czy膰 w sekcji "Code maturity level options" punkt "Prompt for development and/or
incomplete code/drivers". Aby odbiera膰 i nadawa膰 multicastowo trzeba zaznaczy膰 funkcj臋
"IP: multicasting". Je艣li chcemy wykorzysta膰 linux a jako router multicastowy musimy w
konfigracji j膮dra zaznaczy膰: "IP: forwarding/gatewaying", "IP: multicast routing" oraz
"IP: tunneling". Opcja tunelowania multicastowego jest wymagana, poniewa偶 routing
multicastowy jest w nowych wersjach oparty o tunele. Pakiety multicastowe s膮
enkapsulowane w pakiety unicastowe. Jest to konieczne, je艣li chcemy tunelowa膰 podsieci
multicastowe rozdzielone nie multicastowanymi routerami lub sieciami.
Strona 5 z 7
Je艣li ustawimy ju偶 j膮dro do ruchu multicastowego potrzebujemy demona, kt贸ry b臋dzie
ten ruch kontrolowa膰. Taki demon w linuxie to mrouted. Ma on zaimplementowane
algorytmy routingu multicastowego i instruuje on j膮dro, w jaki spos贸b przekazywa膰
multicastowe datagramy.
W tym celu instalujemy mrouted. Po zainstalowaniu konfiguracja znajduje si臋 w pliku
/etc/mrouted.conf. W niej umieszczamy linie, kt贸re wymuszaj膮 na interfejsach eth0 i eth1
IGMP versj臋 1 jako, 偶e ta wersja jest na dzie艅 dzisiejszy bardziej popularna. Dodatkowo bez
limit贸w przepustowo艣ci:
phyint eth0 rate_limit 0 igmpv1
phyint eth1 rate_limit 0 igmpv1
Nast臋pnie musimy doda膰 do tablicy routingu sie膰 224.0.0.0, kt贸ra b臋dzie nas
interesowa膰 i przypisa膰 j膮 do odpowiedniego interfejsu. Nie b臋dziemy si臋 tu rozwleka膰 na
temat znaczenia adresu IP, maski podsieci itp. Te rzeczy by艂y omawiane w rozdzia艂ach
wcze艣niejszych i s膮 podstawami sieci TCP/IP. Zak艂adamy, i偶 osoby zainteresowane
multicastingiem maj膮 te podstawy ju偶 opanowane. Dodawanie do tablicy routingu
realizujemy nast臋puj膮c膮 komend膮: route add 224.0.0.0 netmask 240.0.0.0 dev eth0 lub ip
route add 224.0.0.0/4 dev eth0 je艣li korzystamy z pakietu iproute2. Mo偶na oczywi艣cie wedle
potrzeb da膰 inny interfejs (dev). Ostatnim krokiem jest ustawienie j膮dra, aby forwardowa艂o
pakiety czyli echo 1 > /proc/sys/net/ipv4/ip_forward . Mo偶emy teraz wystartowa膰 demona
mrouted poleceniem mrouted -c /etc/mrouted.conf -d . W katalogu /proc reprezentuj膮cym
dynamiczne zmiany w konfiguracji j膮dra mo偶emy zobaczy膰 do jakich grup aktualnie
nale偶ymy. Mo偶na to zobaczy膰 w pliku (/proc/net/igmp). Dopisywanie si臋 do danej grupy
realizujemy ju偶 poprzez program. Nie ma r贸偶nicy w odbieraniu zwyk艂ych datagram贸w i
multicastowych. Przyk艂ady program贸w multicastowych s膮 dost臋pne w bardzo obszernej ilo艣ci
w Internecie.
7.) Szkielet multicastowy (MBone)
Cz臋sto zdarza si臋, i偶 mimo intensywnej pracy, wysi艂kowi wymianie sprz臋tu i systemu
operacyjnego nasze ca艂e zaanga偶owanie posz艂o na marne z racji tego, 偶e inne komputery nie
zosta艂y odpowiednio skonfigurowane, aby dalej rozsy艂a膰 multicastowo komunikaty. Wtedy
jedynym wyj艣ciem jest tunelowanie pomi臋dzy obs艂uguj膮cymi multicast cz臋艣ciami sieci
poprzez tradycyjne routery. Pakiety multicastowe s膮 pakowane do pakiet贸w multicastowych,
wysy艂ane do przeznaczenia i tam zn贸w rozpakowywane (deencapsulated) do pakiet贸w
multicastowych. Tym w艂a艣nie jest MBone lub, jak kto woli Multicast Backbone. To wirtualna
sie膰 tuneli 艂膮cz膮ca podsieci obs艂uguj膮ce multicasting. Wykorzystywane jest to przy odleg艂ych
telekonferencjach i innych us艂ugach wykorzystuj膮cych du偶e przepustowo艣ci i transmituj膮cych
te same dane do wi臋kszej liczby odbiorc贸w. Wi臋cej informacji na ten temat pod adresem
http://www.mediadesign.co.at/newmedia/more/mbone-faq.html.
8.) Zastosowanie - aplikacje multicastowe
Przyk艂ad wykorzystania protoko艂u multicastowego:
" Konferencje Audio
" Konferencje Video
" Radio internetowe
" Telewizja internetowa
" inne us艂ugi jak mmphone, webcast, shared white boards
Strona 6 z 7
Wszystkie te aplikacje korzystaj膮 z sieci MBone aby nie ogranicza膰 si臋 do zastosowa艅
lokalnych.
9.) Wyja艣nienie poj臋膰 zwi膮zanych z multicastem wskazanie zr贸de艂
" RIP - Routing Information Protocol standardowy protok贸艂 do routingu (RFC1058)
" DVMRP - Distance Vector Multicast Routing Protocol rozbudowany RIP o wektory
odleg艂o艣ci (RFC1075)
" OSPF- sposoby routingu oparte o topologie licz膮ce najszybsza tras臋 (RFC2328)
" MOSPF - Multicast Extensions to OSPF rozszerzenie OSPF dla multicastingu
(RFC 1584)
" PIM Protocol Independent Multicast - czeka na 偶膮dania klient贸w dokonuje zmian w
tablicy routingu PISM dostarcza datagramy. W momencie inicjalizacji transmisji
tworz膮 pust膮 tablic臋 routingu grupowego, a nast臋pnie do艂膮czaj膮 odbiorc贸w do danej
grupy jedynie na ich wezwanie, czyli wys艂anie komendy przy艂膮czenia protoko艂u
IGMP
" PIM-SM Protocol Independent Multicast-Sparse Mode (RFC2362) tryb
rozproszony, kt贸ry zak艂ada 偶e u偶ytkownicy s膮 mocno rozproszeni g艂贸wnie w
Internecie
" PIM-DM - Protocol Independent Multicast-Dense Mode tryb zag臋szczony, kt贸ry
zak艂ada 偶e grupy u偶ytkownik贸w b臋d膮 blisko siebie g艂贸wnie w sieciach lokalnych
" IGMP - Internet Group Management Protocol protok贸艂 do zarz膮dzania grupami
multicastowymi (RFC3228)
10.) Literatura
" Multicast over TCP/IP HOWTO Juan-Mariano de Goyeneche jmseyas@dit.upm.es
(http://www.netsys.com/library/suse/howto/en/Multicast-HOWTO.txt)
" Linux Advanced Routing & Traffic Control HOWTO
" Linux-Mrouted-MiniHOWTO
" inne dokumentacje techniczne dost臋pne w internecie zwi膮zane z tematem.
" RFC (Request for Comment) wiele pozycji
Strona 7 z 7
Wyszukiwarka
Podobne podstrony:
32 Stirling opracowanie teoretyczneOpracowanie teoretycznecw 1Wytrzyma艂o艣膰 Materia艂贸w SIMR egzamin teoretyczny opracowane pytaniaopracowanie pytan teoretycznych bozzElektroenergetyka opracowanie1przetworniki II opracowanePodstawy dzialania routerow i routinguMechanika Techniczna I Opracowanie 06Marketing Opracowane Pytania Egzaminacyjne 2009 Furtak (46)grice opracowaniE Cooperative Principle, Maxims of Conversationwi臋cej podobnych podstron