MULTICAST ROUTING teoria i wykorzystanie w systemie LINUX

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:

  • konferencje audio

  • konferencje wideo

  • radio internetowe

  • telewizja internetowa

  • inne usługi, jak mmphone, webcast, shared white boards.

    Wszystkie te aplikacje korzystają z sieci MBone, aby nie ograniczać się do zastosowań lokalnych.

    Pojęcia związane z multicastem
  • RIP (Routing Information Protocol) - standardowy protokół trasowania (RFC1058).

  • DVMRP (Distance Vector Multicast Routing Protocol) - rozbudowany RIP o wektory odległości (RFC1075).

  • OSPF (Open Shortest Path First) - sposoby trasowania oparte na topologiach liczących najszybszą 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 trasowania PISM, dostarcza datagramy. W momencie inicjalizacji transmisji tworzy pustą tablicę trasowania grupowego, a następnie dołącza 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) - tryb rozproszony, który zakłada, że użytkownicy są mocno rozproszeni - głównie w Internecie (RFC2362).

  • 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).


  • TOP 200