header image
Home arrow Multicast arrow IGMP arrow IGMPv2 - Internet Group Management Protocol v2
IGMPv2 - Internet Group Management Protocol v2 E-mail
Oceny: / 6
KiepskiBardzo dobry 

Protokół IGMPv2 (Internet Group Management Protocol) został opisany w 2002 roku w standardzie RFC2236, wersja IGMPv1 była opisana w roku 1997 w RFC1112. IGMP (Internet Group Management Protocol) jest wykorzystywany przez hosty IP do raportowania swojego członkostwa w grupie multicastowej do dowolnego sąsiadującego routera multicastowego w LAN. Protokół IGMP (Internet Group Management Protocol) jest protokołem asymetrycznym. IGMP jest integralną częścią IP, wymagane jest więc, by był zaimplementowany w systemach operacyjnych. Wiadomości protokołu IGMP są enkapsulowane w datagramach protokołu IP, z  numerem protokołu IP równym 2. Wszystkie wiadomości protokołu IGMP (Internet Group Management Protocol) są wysyłane z TTL równym 1 i zawierają opcję IP o wartości 148, czyli Router Alert (RTRALT) w nagłówku IP. 

 

IGMPv2 obsługuje trzy typy wiadomości. Pierwszą z nich jest wiadomość "Membership Query", której typ jest równy wartości 0x11 w nagłówku IGMPv2. Drugą wiadomością IGMPv2 jest "Version 2 Membership Report", której typ jest równy wartości 0x16 w nagłówku IGMPv2. Trzecią wiadomością IGMPv2 jest "Leave Group", której typ jest równy wartości 0x17 w nagłówku IGMPv2.

Dodatkowo dla wstecznej kompatybilności z IGMPv1 zdefiniowano w IGMPv2 obowiązkową wiadomość "Version 1 Membership Report", której typ jest równy wartości 0x12.

Wszystkie wiadomości IGMPv2 mają następujący format nagłówka:

Nagłówek IGMPv2

Typ - pole typu wiadomości IGMP. Wyróżniamy trzy typy wiadomości IGMPv2 i jedną dla kompatybilności z IGMPv1:

0x11 - Membership Query (Query). Wyróżnia się dwa podtypy: General Query i Group-Specific Query, w zależności od wartości pola Adres Grupy.

0x16 - Version 2 Membership Report (Report)

0x17 - Leave Group

0x12 - Version 1 Membership Report

Max Resp Time

To pole ma znaczenie tylko w wiadomościach IGMP Membership Query i określają maksymalny czas jaki może upłynąć zanim zostanie wysłana wiadomość Report w jednostkach 0.1 sekundy. W pozostałych wiadomościach jest równe zero bądź ignorowane.  

Suma kontrolna

Suma kontrolna wiadomości IGMP.

Adres Grupy

Pole adresu grupy multicastowej. W wiadomości Membership Query pole jest zerowane podczas wysyłania General Query i ustawiane na adres grupy multicastowej IP, kiedy wysyłane są Group-Specific Query. W wiadomościach Membership Report lub Leave Group (opuść grupę), pole Adres Grupy przechowuje adres IP grupy multicastowej, której raportuje przynależność bądź ją opuszcza.

 

Router multicastowy i hosty z IGMPv2

Routery multicastowe wykorzystują IGMP by nauczyć się, które grupy multicastowe mają członków w ich bezpośrednio przyłączonych sieciach. Router multicastowy przechowuje listę członkostwa w grupach multicastowych dla każdej przyłączonej sieci wraz z licznikiem czasu dla każdego członkostwa. Członkostwo w grupie multicastowej oznacza obecność przynajmniej jednego hosta, zwanego członkiem grupy multicastowej w danej sieci, a nie kompletną listę hostów.

Router multicastowy w zależności od przyłączonych sieci, możę posiadać jedną z dwóch funkcji: Querier lub Non-Querier. Router multicastowy rozpoczyna pracę w sieci jako Querier (ten co wysyła wiadomości Query (Membership Query)), natomiast jeśli usłyszy wiadomości Query od innego routera z niższym adresem IP, to musi się stać Non-Querierem dla tej sieci. Jeśli w związku z tym router Non-Querier nie usłyszy w zadanym czasie "Other Querier Present Interval", to przejmuje rolę Queriera.

Routery multicastowe Querier wysyłają okresowo, co czas "Query Interval" (domyślnie 125 sekund), General Query do wszystkich przyłączonych sieci, dla których są Querierami, by określić informację o członkostwie. Po uruchomieniu router wysyła z częstotliwością "Startup Query Interval" (czyli 1/4 "Query Interval"), tyle wiadomości General Query ile jest podanych w "Startup Query Count" (czyli tyle ile parametr "Robustness Variable", domyślnie 2). General Query wysyłana jest pod adres 224.0.0.1 (wszystkie grupy multicastowe), z Adresem Grupy równym 0 i z Max Resp Time (maksymalny czas odpowiedzi) równym "Query Response Interval" (czyli domyślnie 100, co jest równe 10 sekundom, bo 100x0.1=10). 

Host z IGMPv2 odbierając wiadomość General Query ustawia liczniki opóźnień dla każdej grupy multicastowej (oprócz grupy 224.0.0.1), której jest członkiem na danym interfejsie sieciowym. Każdy z liczników ustawiony jest na różną wartość losową wybraną z przedziału (0, Max Resp Time), gdzie Max Resp Time jest określona w pakiecie Query. Kiedy host odbierze Group-Specific Query, to ustawia licznik opóźnienia tak jak wyżej dla grupy, dla której jest odpytywany, jeśli oczywiście należy do tej grupy. Jeśli licznik był już włączony dla danej grupy multicastowej, to jest on tylko wtedy resetowany do wartości losowej, jeśli żądany Max Resp Time jest mniejszy niż pozostała wartość licznika. Jeśli wygasną liczniki dla grup, to host musi wysłać wiadomośc multicastową "Version 2 Membership Report" z TTL=1. Jeśli host odbierze inną wiadomość Report od innych hostów, to zatrzymuje licznik i nie wysyła już wiadomości Report, by nie powielać w sieci wiadomości Report. 

Jeśli router multicastowy odbierze IGMP Report, dodaje wtedy tą grupę do listy członkostwa grup multicastowych w sieci, dla której odebrał Report i ustawia licznik dla tego członkostwa na wartość "Group Membership Interval" ("Robustness Variable" x "Query Interval" + "Query Response Interval" = 2 x 125 + 10 = 260 sekund). Kolejne powtórzone Reporty odświeżają licznik. Jeśli nie przyjdzie żaden Report dla konkretnej grupy multicastowej zanim wygasnie jej licznik członkostwa, router multicastowy zakłada wtedy, że grupa nie ma żadnego lokalnego członka i nie ma potrzeby przekazywać zawartości multicastowej dla tej grupy w sieci lokalnej.
 
Kiedy host przyłącza się do grupy multicastowej (join), powinien natychmiast wysłać "Version 2 Membership Report" dla tej grupy, jeśli jest on pierwszym członkiem tej grupy w sieci. Zaleca się by host powtórzył raz bądź dwa tą wiadomność z odstępem wyznaczonym przez "Unsolicited Report Interval" (domyślnie 10 sekund).

W przypadku, gdy host jest ostatnim członkiem grupy multicastowej, który odpowiedział na wiadomość Query wiadomością Membership Report dla grupy i chce on opuścić tą grupę multicastową, to powinien wysłać wiadomość Leave Group do wszystkich routerów multicastowych pod adres 224.0.0.2. Jesli host nie odpowiadał jako ostatni na Query, może nie wysyłać nic by ograniczyć ruch w sieci. Wiadomośc Leave Group jest wysyłana do wszystkich routerów multicastowych, ze względu na fakt, że pozostali członkowie grupy multicastowej nie muszą mieć wiedzy o opuszczeniu grupy przez dany host.

Jeśli Querier odbierze wiadomość Leave Group dla danej grupy multicastowej to wysyła wtedy domyślnie 2 razy (Last Member Query Count, które jest równe Robustness Variable) wiadomość Group-Specific Queries co 1 sekundę (Last Member Query Interval pomnożone przez 0.1). Jeśli nie odbierze żadnego Report w wymaganym czasie licznika "Last Member Query Interval" to router zakłada, że brak jest członków dla tej grupy i przestaje wysyłać Group-Specific Query.

Wartości liczników w IGMPv2

  • Robustness Variable - domyślnie: 2.
  • Query Interval - domyślnie: 125 sekund.
  • Query Response Interval - domyślnie: 100 (10 sekund).
  • Group Membership Interval: Robustness Variable * Query Interval + Query Response Interval.
  • Other Querier Present Interval: Robustness Variable * Query Interval + 1/2 * Query Response Interval.
  • Startup Query Interval - domyślnie: 1/4 * Query Interval.
  • Startup Query Count - domyślnie: Robustness Variable.
  • Last Member Query Interval - domyślnie: 10 (1 sekunda).
  • Last Member Query Count - domyślnie: Robustness Variable.
  • Unsolicited Report Interval - domyślnie: 10 sekund.
  • Version 1 Router Present Timeout - domyślnie: 400 sekund. (czas jaki musi odczekać host, który usłyszy "Version 1 Query", zanim wyśle jakąkolwiek wiadomość IGMPv2.

 

< Poprzedni   Następny >