Internet Group Management Protocol: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
fix wikilink
KSavys (discussione | contributi)
Funzionalità collegamenti suggeriti: 3 collegamenti inseriti.
 
(9 versioni intermedie di 6 utenti non mostrate)
Riga 1:
L''''Internet Group Management Protocol''' è un protocollo per la gestione dei gruppi [[multicast]].
Costituisce il mezzo per un [[host]] di informare il [[router]] ad esso collegato che un'applicazione che funziona nell'host vuole unirsi a uno specifico [[multicast|gruppo multicast]]. IGMP opera fra un host e il router ad esso collegato direttamente, per coordinare i router multicast invece è richiesto un altro protocollo, affinché i [[datagramma|datagrammi]] multicast possano essere [[instradamento|instradati]] alle loro destinazioni finali. Questa funzionalità è svolta da algoritmi di instradamento multicast dello strato della rete: [[Protocol Independent Multicast|PIM]], [[Distance Vector Multicast Routing Protocol|DVMRP]], [[Multicast Open Shortest Path First|MOSPF]].
Il protocollo attualmente è alla terza versione (IGMPv3) che ha introdotto un sostanziale cambiamento rispetto alle versioni precedenti per quanto riguarda il modello del multicast in Internet: infatti ora IGMP è compatibile col modello [[Source_specific_multicastSource specific multicast|Source Specific Multicast (SSM)]], cioè gli host non sono più obbligati a ricevere dall'intero gruppo ma possono selezionare un sottoinsieme di sorgenti da cui ricevere. Il protocollo nella sua versione più recente è definito nell'RFC 3376.
 
== Indirizzi di gruppo ==
 
Un indirizzo di gruppo o multicast è un [[indirizzo IP]] di classe D di [[32 bit]] (Ipv4) o multicast di [[128 bit]] (Ipv6). Nel caso Ipv4 i primi 4 bit del primo ottetto sono fissati e corrispondono al pattern 1110 mentre i restanti 28 bit costituiscono il Multicast Group ID, quindi tutti questi indirizzi sono nel range 224.0.0.0  – 239.255.255.255. Il corrispondente Ethernet/MAC Address (48 bit) usa una parte dell'indirizzo multicast IP e si ottiene in questo modo:
* Il primo ottetto è statico e posto a 00000001;
* Il secondo ottetto è statico e posto 00000000;
Riga 14:
Del range di indirizzi quelli realmente disponibili per applicazioni multicast sono in realtà un sottoinsieme:
* 224.0.0.0 è riservato;
* DaGli IP da 224.0.0.1 a 224.0.0.255 sono riservati per routing e protocolli di basso livello per discovery/maintenacemaintenance della topologia di rete. Ad esempio il 224.0.0.1 indirizza tutto il gruppo di host nella subnet, il 224.0.0.2 indirizza tutto il gruppo di router nella subnet, il 224.0.1.1 è riservato per il protocollo NTP;
* DaGli IP da 224.0.1.0 a 238.255.255.255 sono dinamicamente assegnati ad applicazioni multicast. Di questi gli indirizzi da 232.0.0.0 a 232.255.255.255 sono riservati per Source Specific Multicast;
* DaGli IP da 239.0.0.0 a 239.255.255.255 sono riservati per scopi amministrativi.
 
Chi vuole annunciare l'inizio di una sessione multicast lo fa tramite Session Directory (SDR) su opportuni server, specificando la data e l'ora d'inizio e il contenuto della trasmissione. Gli host interessati a ricevere la trasmissione multicast attraverso opportuni tool SDR possono ricavare l'indirizzo al quale la/le sorgente/i invieranno il proprio traffico e provvedono a configurarsi per accettare il traffico da quell'indirizzo.
Riga 22:
== Overview protocollo ==
 
Il funzionamento didel IGMP si basa su un modulo presente negli host e su un modulo presente nei router. Il primo svolge tutte le attività richieste ad un host che partecipa alla sessione multicast: gestione del proprio stato di ricezione, risposta alle query inviate dal Designated Router (DR) per quella LAN, invio triggered di report al DR quando lo stato di ricezione di un'interfaccia cambia per informarlo del nuovo stato di ricezione. Il secondo a bordo di un router IGMP svolge, per ogni gruppo desiderato, funzionalità di gestione e tracciamento dello stato di ricezione degli host della LAN di cui è DR e regola l'inoltro dei pacchetti provenienti dalla struttura di instradamento sulla LAN, se è contemporaneamente DR IGMP e DR per il protocollo di routing usato, altrimenti suggerisce le regole di inoltro al router che è il DR per il protocollo di routing (in genere quindi un router deve avere a bordo sia il modulo per la membership che per il routing).
 
== Protocollo lato Host ==
Riga 75:
* ''QQIC (Querier's Query Interval Code)'' è l'intervallo tra invii di General Query, rappresentato come Max Response Code. Dà un'indicazione agli altri router (se ce ne sono) di quando farsi sentire, perché se passato questo tempo non vedono arrivare alcuna query probabilmente è successo qualcosa al DR corrente;
* ''Number Of Sources (N)'' indica il numero di sorgenti in una Group And Source Specific Query;
* ''Source Address [1], ..... , Source Address [N]'' specificano ognuno l'indirizzo unicast IP di una sorgente per il guppogruppo indicato nel campo Group Address. La lista di sorgenti è non vuota solo nelle Group And Source Specific Query.
=== Messaggi scambiati: Report ===
Riga 128:
Quando un host riceve una query dal DR esegue una routine per schedulare una risposta che tiene conto di eventuali query pendenti (ricevute precedentemente e in attesa di risposta). L'host cerca di condensare in un unico report le varie query pendenti, quando possibile. La seguente procedura (in pseudo-codice) è invocata dall'host:
 
<sourcesyntaxhighlight lang = "C">
delay ← random [0, Max Response Time];
if (General Query AND pending_response R t.c. start_time_R < current_time + delay)
Riga 144:
end if
 
</syntaxhighlight>
</source>
 
== Protocollo lato Router ==
Riga 158:
* {source_record} è un insieme di coppie di valori < source_address, source_timer >, dove source_timer è rinfrescato ogni volta che la sorgente compare in un report.
 
Il group_timer è stato pensato per permettere al DR del protocollo di routing di tagliare traffico non più desiderato da alcun host quando il filtro corrente è exclude e il timer scade. Infatti exclude fa passare tutto il traffico tranne quello proveniente dalle sorgenti specificate nella lista: se il timer scade significa che nessun host in stato exclude ha provveduto a rinfrescare il proprio stato di ricezione (altrimenti almeno uno avrebbe inviato un report) e quindi con molta probabilità gli host non sono più interessati a ricevere dal gruppo. Allora il DR converte il filtro in include con le sole sorgenti che hanno associato un timer > 0, restringendo la quantità di traffico che viene inoltrata sulla LAN. Se ora anche per le sorgenti rimaste il DR vede scadere il timer, allora può dedurre con certezza che nessuno è più interessato a ricevere dal gruppo e può cancellare il record associato.
 
=== Struttura filtri Include ed Exclude ===
Riga 226:
|}
 
L'invio delle query avviene per robustezza Last_Member_Query_Count volte ognuna a distanza Last_Member_Query_Interval. Se per un tempo pari al prodotto tra questi due valori, detto Last_Member_Query_Time, il router non riceve risposta può procedere a eliminare gruppi o sorgenti.
 
== Elezione Designated Router IGMP ==
 
Ogni LAN elegge un solo router che ha il compito di inviare periodicamente messaggi di Query agli host e di tracciare il loro stato di membership. Questo router è detto Designated Router o più propriamente ''Querier''. Il meccanismo di elezione è molto semplice: ogni router mantiene un ''Other_Querier_Present'' timer che è rinfrescatoaggiornato ogni volta che riceve una query da un router con indirizzo IP più basso del suo. Il Querier è il router con indirizzo IP più basso; se un altro router riceve una query da esso smette di inviare le proprie. Se un router che precedentemente era Querier non vede più arrivare Query, riprende lui a inviarle subentrando come nuovo Querier. Il fatto che in una LAN i messaggi vengano ricevuti da tutti i router ad essa connessi fa sì che ognuno possa costruirsi progressivamente lo stato di membership completo, così che se il Querier attuale dovesse cadere il nuovo Querier dispone già delle informazioni di stato aggiornate.
 
== Collegamenti esterni ==
 
* (EN) [https://tools.ietf.org/html/rfc3376 RFC 3376 - Internet Group Management Protocol, Version 3]
<br />
 
{{IPstack}}