Internet Group Management Protocol

IGMP ( Internet Group Management Protocol) är ett kommunikationsprotokoll som används av värdar och intilliggande routrar IPv4-nätverk för att upprätta multicast-gruppmedlemskap. IGMP är en integrerad del av IP multicast och tillåter nätverket att rikta multicast-överföringar endast till värdar som har begärt dem.

IGMP kan användas för en-till-många-nätverksapplikationer som onlineströmmande video och spel , och möjliggör en effektivare användning av resurser vid stöd för dessa typer av applikationer.

IGMP används på IPv4- nätverk. Multicast-hantering på IPv6- nätverk hanteras av Multicast Listener Discovery (MLD) som är en del av ICMPv6 i motsats till IGMP:s blotta IP-inkapsling.

Arkitektur

Ett nätverk som är utformat för att leverera en multicast-tjänst med IGMP kan använda denna grundläggande arkitektur:

IGMP basic architecture.png

IGMP fungerar mellan en värd och en lokal multicast-router. Switchar med IGMP snooping får också användbar information genom att observera dessa IGMP-transaktioner. Protocol Independent Multicast (PIM) används sedan mellan de lokala och fjärranslutna multicast-routrarna för att dirigera multicast-trafik från värdar som skickar multicasts till värdar som har registrerat sig via IGMP för att ta emot dem.

IGMP fungerar på nätverkslagret (lager 3), precis som andra nätverkshanteringsprotokoll som ICMP .

IGMP - protokollet är implementerat på värdar och inom routrar . En värd begär medlemskap i en grupp genom sin lokala router medan en router lyssnar efter dessa förfrågningar och regelbundet skickar ut prenumerationsförfrågningar. En enda router per subnät väljs för att utföra denna frågefunktion. Vissa flerskiktsswitchar har en IGMP-frågefunktion för att låta deras IGMP-snoopfunktioner fungera i frånvaro av en IGMP-kapabel router i lager 2-nätverket.

IGMP är sårbart för vissa attacker, och brandväggar tillåter vanligtvis användaren att inaktivera det om det inte behövs.

versioner

     Det finns tre versioner av IGMP. IGMPv1 definieras av RFC 1112 , IGMPv2 definieras av RFC 2236 och IGMPv3 definierades ursprungligen av RFC 3376 . RFC 4604 uppdaterar både IGMPv3 och MLDv2 för att bättre stödja källspecifik multicast . IGMPv2 förbättrar IGMPv1 genom att lägga till möjligheten för en värd att signalera önskan att lämna en multicast-grupp. IGMPv3 förbättrar IGMPv2 genom att stödja källspecifik multicast och introducerar aggregering av medlemsrapporter.

Dessa versioner är bakåtkompatibla. En router som stöder IGMPv3 kan stödja klienter som kör IGMPv1, IGMPv2 och IGMPv3. IGMPv1 använder en frågesvarsmodell. Förfrågningar skickas till 224.0.0.1. Medlemsrapporter skickas till gruppens multicast-adress. IGMPv2 påskyndar processen att lämna en grupp och justerar andra timeouts. Lämna gruppmeddelanden skickas till 224.0.0.2. En gruppspecifik fråga introduceras. Gruppspecifika frågor skickas till gruppens multicast-adress. Ett sätt för routrar att välja en IGMP-querier för nätverket introduceras. IGMPv3 introducerar källspecifik multicast- kapacitet. Medlemsrapporter skickas till 224.0.0.22.

Meddelanden

Det finns flera typer av IGMP-meddelanden:

Allmänna medlemsförfrågningar
Skickas av multicast-routrar för att avgöra vilka multicast-adresser som är av intresse för system kopplade till nätverket/näten som de tjänar för att uppdatera gruppmedlemskapsstatusen för alla system i dess nätverk.
Gruppspecifika medlemskapsfrågor
Används för att bestämma mottagningstillståndet för en viss multicast-adress
Grupp- och källspecifika frågor
Tillåt routern att avgöra om något system önskar mottagning av meddelanden som skickas till en multicast-grupp från en källadress som anges i en lista med unicast-adresser
Medlemsrapporter
Skickas av multicast-mottagare som svar på en medlemskapsförfrågan eller asynkront vid första registrering för en multicast-grupp
Lämna gruppmeddelanden
Skickat av multicast-mottagare när specificerade multicast-sändningar inte längre behövs hos mottagaren

IGMP-meddelanden transporteras i blotta IP-paket med IP-protokoll nummer 2. I likhet med Internet Control Message Protocol finns det inget transportlager som används med IGMP-meddelanden.

IGMPv2-meddelanden

IGMPv2-paketstruktur
bit offset 0–7 8–15 16–31
0 Typ Max resp tid Kontrollsumma
32 Gruppadress

Var:

Typ
Indikerar meddelandetypen enligt följande
Värden för IGMP-meddelandetyp
Meddelande Typvärde
Medlemskapsfråga 0x11
IGMPv1 medlemsrapport 0x12
IGMPv2 medlemsrapport 0x16
IGMPv3 medlemsrapport 0x22
Lämna gruppen 0x17
Max Resp Time
Anger den nödvändiga känsligheten för svar på en medlemskapsfråga (0x11). Det här fältet är endast meningsfullt i Membership Query; i andra meddelanden är den satt till 0 och ignoreras av mottagaren. Fältet anger tiden i enheter om 0,1 sekund (ett fältvärde på 10 anger 1 sekund). Större värden minskar IGMP-trafikburstiness och mindre värden förbättrar protokollresponsen när den sista värden lämnar en grupp.
Gruppadress
Detta är multicast-adressen som frågas när en gruppspecifik eller grupp-och-källa-specifik fråga skickas. Fältet nollställs när en allmän fråga skickas.

Meddelandet skickas med följande IP-destinationsadresser:

IGMPv2 destinationsadress
Meddelandetyp Multicast-adress
Allmän fråga Alla värdar (224.0.0.1)
Gruppspecifik fråga Gruppen som frågas
Medlemsrapport (alla IGMP-versioner) Gruppen som rapporteras
Lämna gruppen Alla routrar (224.0.0.2)

IGMPv3-medlemskapsfråga

IGMPv3-medlemskapsfråga
bit offset 0–3 4 5–7 8–15 16–31
0 Typ = 0x11 Max Resp kod Kontrollsumma
32 Gruppadress
64 Resv S QRV QQIC Antal källor (N)
96 Källadress [1]
128 Källadress [2]
. . .
Källadress [N]

Var:

Max Resp Code
Detta fält anger den maximala tiden (i steg om 1/10 sekund) som tillåts innan en svarsrapport skickas. Om siffran är under 128 används värdet direkt. Om värdet är 128 eller mer tolkas det som en exponent och mantissa.
Kontrollsumma
Detta är 16-bitars ens komplement av ens komplementsumma av hela IGMP-meddelandet.
Gruppadress
Detta är multicast-adressen som frågas när en gruppspecifik eller grupp-och-källa-specifik fråga skickas. Fältet nollställs när en allmän fråga skickas.
Resv
Detta fält är reserverat. Den ska nollställas när den skickas och ignoreras när den tas emot.
S (Undertryck bearbetning på routersidan) Flagga
När denna flagga är inställd indikerar den för mottagande routrar att de ska undertrycka de normala timeruppdateringarna.
QRV (Querier's Robustness Variable)
Om denna inte är noll innehåller den värdet Robustness Variable som används av avsändaren av frågan. Routrar bör uppdatera sin robusthetsvariabel för att matcha den senast mottagna frågan om inte värdet är noll.
QQIC (Querier's Query Interval Code)
Den här koden används för att ange det frågeintervallvärde (i sekunder) som används av frågeställaren. Om siffran är under 128 används värdet direkt. Om värdet är 128 eller mer tolkas det som en exponent och mantissa.
Antal källor (N)
Det här fältet anger antalet källadresser som finns i frågan. För allmänna och gruppspecifika frågor är detta värde noll. För grupp- och källspecifika frågor är detta värde icke-noll, men begränsat av nätverkets MTU.
Källadress [i]
Fälten Källadress [i] är en vektor av n IP unicast-adresser, där n är värdet i fältet Antal källor (N).

Genomföranden

Operativsystemen FreeBSD , Linux och Windows stöder IGMP på värdsidan.

Se även

Anteckningar