MULTICAST ROUTING teoria i wykorzystanie w systemie LINUX

Poziomy zgodności z multicastem

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 multicasting. Wiele komputerów obecnie jest na tym poziomie, ponieważ multicast nie jest obowiązkowy i wewnętrznie obsługiwany przez IP w wersji 4. IPv6 w pełni wspiera multicasting, ale ta wersja nie jest obowiązująca (jak na razie) w Internecie.

  • Poziom 1 - zdolność 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. Pozostanie w tym poziomie ma sens dla serwisów udostępniających dane, które mają zapewnione kilka kolejnych ruteró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 ruterów multicastowych. Pociąga to za sobą implementację Internet Group Management Protocol (IGMP) w konfiguracji stosu TCP/IP.

    Wysyłanie datagramów multicastowych

    MULTICAST ROUTING teoria i wykorzystanie w systemie LINUX

    Rys. 3. Transmisja multicastowa

    Cały ruch multicastowy odbywa się w warstwie transportowej z wykorzystaniem UDP, ponieważ TCP to z natury połączenia z punktu do punktu, więc nie nadaje on 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ć:

    1. 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 trasowania. Kolejne rutery zmniejszają ttl i gdy ono osiągnie zero, pakiet jest porzucany i nie przesyłany dalej. TTL w IPv4 multicastowym ma także znaczenie progowe. TTL steruje pakietami w ten sposób, że TTL jest porównywane z odpowiednimi wartościami i wypuszczane dalej przez dane rutery czy interfejsy. Oto spis poszczególnych wartości. Warto dodać iż są one umowne 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 ruter (mruter).

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

    2. Loopback - pętla zwrotna - domyślnie, jeśli dany węzeł sieci jest na drugim poziomie zgodności z IP multicasting, kopia danych przychodzących jest zwrotnie zapętlona na danym interfejsie. Celem tego mechanizmu jest odciążenie łączy fizycznych. Jeśli proces w komputerze wysyła dane, a inny proces na tym samym komputerze chce je odbierać, całość transmisji odbywa się bezpośrednio tylko na nim i nie ma potrzeby wykorzystywania do transmisji sieci. Jeszcze podczas wysyłania, gdy dana ramka jest wewnątrz naszego stosu TCP/IP, jest przekazywana odpowiedniemu procesowi. Zapobiega to nadmiernym i niepotrzebnym obciążeniom. Cecha ta może być świadomie włączona lub nie.

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

    Odbieranie datagramów multicastowych

    1. Dołączanie się do grupy polega na tym, że informujemy jądro systemu, że jesteśmy zainteresowani daną grupą multicastową i system ma nam przekazywać 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 poinformować o tym kernel i przydzielić port, na którym będziemy chcieli te datagramy odbierać. UDP korzysta z adresu i portu, aby demultipleksować nadsyłane pakiety.

    2. 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 będzie już odbierać pakietów z danej grupy, jako że inne procesy, które zadeklarowały przyłączenie, mogą dalej potrzebować tych informacji. Trzeba zrozumieć, że członkostwo w grupie muticastowej jest per-host, a nie per-proces.


  • TOP 200