MULTICAST ROUTING teoria i wykorzystanie w systemie LINUX
- Aleksander Wala,
- 04.10.2002
Poziomy zgodności z multicastem
Węzły w sieci mogą mieć trzy różne poziomy zgodności z protokołem multicastowym:
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, 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.
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.