MULTICAST ROUTING teoria i wykorzystanie w systemie LINUX
- Aleksander Wala,
- 04.10.2002
Podstawy konfiguracji Linuksa do obsługi multicastingu
Linux to wielozadaniowy, wieloużytkownikowy system operacyjny, który znajduje zastosowanie głównie jako serwer (z wszelkimi możliwymi usługami) oraz ruter, a także zapora ogniowa (firewall). Warto jednak wspomnieć, że coraz częściej jest wykorzystywany także jako stacja robocza w zastosowaniach biurowych.
Linux może z powodzeniem pracować na drugim poziomie zgodności z multicastingiem, czyli może zarówno odbierać, jak i nadawać pakiety multicastowe oraz spełniać funkcje rutera multicastowego (mrutera).
Jak przystosować Linux 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ć Linuksa jako ruter multicastowy, musimy w konfiguracji jądra zaznaczyć: IP: forwarding/gatewaying, IP: multicast routing oraz IP: tunneling. Opcja tunelowania multicastowego jest wymagana, ponieważ trasowanie multicastowe jest w nowych wersjach oparte na tunelach. Pakiety multicastowe są kapsułkowane w pakietach unicastowych. Jest to konieczne, jeśli chcemy tunelować podsieci multicastowe rozdzielone nie multicastowanymi ruterami lub sieciami.
Jeśli ustawimy już jądro do ruchu multicastowego, to potrzebujemy demona, który będzie ten ruch kontrolować. Taki demon w Linuksie to mrouted. Ma on zaimplementowane algorytmy trasowania multicastowego i instruuje jądro, w jaki sposób przekazywać datagramy multicastowe.
W tym celu instalujemy mrouted. Po zainstalowaniu konfiguracja jest w pliku /etc/mrouted.conf. W niej umieszczamy linie, które wymuszają na interfejsach eth0 i eth1 IGMP wersję 1, jako że jest ona obecnie 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 trasowania sieć 224.0.0.0, która będzie nas interesować i przypisać ją do odpowiedniego interfejsu. Nie będziemy się tu rozwodzić na temat znaczenia adresu IP, maski podsieci itp. Zakładamy, iż osoby zainteresowane multicastingiem mają podstawy TCP/IP już opanowane. Dodawanie do tablicy trasowania realizujemy następującymi komendami: 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 (parametr dev). Ostatnim krokiem jest ustawienie jądra, aby przekazywało dalej pakiety, czyli: echo 1 > /proc/sys/net/ipv4/ip_forward. Możemy teraz uruchomić 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 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 dużej ilości w Internecie.
Szkielet multicastowy (MBone)
Często zdarza się, iż mimo intensywnej pracy, wysiłku, wymiany sprzętu i systemu operacyjnego nasze całe zaangażowanie poszło na marne, bo inne komputery nie zostały tak skonfigurowane, aby dalej rozsyłać multicastowo komunikaty. Wtedy jedynym wyjściem jest tunelowanie przez tradycyjne rutery pomiędzy obsługującymi multicast częściami sieci. Pakiety multicastowe są pakowane do pakietów unicastowych, wysyłane do miejsc przeznaczenia i tam znów rozpakowywane do pakietów multicastowych. Tym właśnie jest MBone lub - jak kto woli - Multicast Backbone, 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://andrew.triumf.ca/pub/mbone/mbone.faq.html
Zastosowanie - aplikacje multicastowe
Przykłady wykorzystania protokołu multicastowego:
Wszystkie te aplikacje korzystają z sieci MBone, aby nie ograniczać się do zastosowań lokalnych.