7. Interoperazione con IGMPv1 e IGMPv2
Gli host e i router IGMPv3 interoperano con gli host e i router che non sono ancora stati aggiornati a IGMPv3. Questa compatibilità è mantenuta dai messaggi Membership Query periodici che vengono inviati in multicast dal Querier, e dai messaggi Membership Report Version 1 e Version 2 che vengono inviati in multicast dagli host più vecchi.
7.1. Funzionamento dell'host IGMPv3
Il comportamento di un host IGMPv3 dipende dal fatto che il Querier sulla rete stia parlando IGMPv3, IGMPv2 o IGMPv1.
7.1.1. Distinzioni di versione della Query
La versione IGMP di un messaggio Membership Query è determinata come segue:
- IGMPv1 Query: lunghezza = 8 ottetti, Max Resp Code = 0.
- IGMPv2 Query: lunghezza = 8 ottetti, Max Resp Code > 0.
- IGMPv3 Query: lunghezza >= 12 ottetti.
7.1.2. Comportamento in presenza di Querier più vecchi
Un host IGMPv3 può essere posizionato su una rete dove il Querier non è ancora stato aggiornato a IGMPv3. L'host deve tenere conto di questa possibilità.
- IGMPv1 Querier Present: Se un host IGMPv3 riceve una Query IGMPv1, deve rispondere con Reports IGMPv1. Il filtraggio delle sorgenti non è supportato.
- IGMPv2 Querier Present: Se un host IGMPv3 riceve una Query IGMPv2, deve rispondere con Reports IGMPv2. Il filtraggio delle sorgenti non è supportato.
- IGMPv3 Querier Present: Se un host IGMPv3 riceve una Query IGMPv3, risponde con Reports IGMPv3. Il filtraggio delle sorgenti è supportato.
L'host mantiene una variabile di modalità di compatibilità per ogni interfaccia, che viene aggiornata ogni volta che viene ricevuta una Query. Se viene ricevuta una Query più vecchia, l'host passa alla modalità di compatibilità corrispondente e imposta un timer. Quando il timer scade, l'host torna in modalità IGMPv3.
7.2. Funzionamento del router IGMPv3
Il comportamento di un router IGMPv3 dipende dalla presenza di host o router più vecchi sulla rete.
7.2.1. Presenza di host più vecchi
Un router IGMPv3 può ricevere Reports IGMPv1 o IGMPv2 da host più vecchi.
- IGMPv1 Report Received: Il router agisce come se avesse ricevuto un report IGMPv3 IS_EX({}) per il gruppo. Deve anche ignorare qualsiasi messaggio Leave Group per quel gruppo (poiché IGMPv1 non ha messaggi Leave).
- IGMPv2 Report Received: Il router agisce come se avesse ricevuto un report IGMPv3 IS_EX({}) per il gruppo.
Quando sono presenti host più vecchi, il router potrebbe dover sopprimere l'elaborazione specifica di IGMPv3 (come le query specifiche per sorgente) per i gruppi interessati per garantire la compatibilità.
7.2.2. Presenza di router più vecchi
Se un router IGMPv3 si trova su una rete con router più vecchi, il processo di elezione del Querier (Sezione 6.1) determina quale router diventa il Querier.
- Se un router IGMPv1 è presente e diventa il Querier, tutti i router (compresi i router IGMPv3) devono agire come router IGMPv1.
- Se un router IGMPv2 è presente e diventa il Querier, tutti i router devono agire come router IGMPv2.
- Se un router IGMPv3 diventa il Querier, invia Queries IGMPv3. I router più vecchi vedranno queste come query IGMPv1/v2 non valide (o le gestiranno se sono parzialmente compatibili), ma in generale, i router IGMPv3 dovrebbero essere configurati per funzionare in modalità IGMPv1 o IGMPv2 se devono coesistere con router più vecchi che non possono gestire i pacchetti IGMPv3.
7.3. Mescolanza di host Version 1, 2 e 3
È possibile avere un mix di host IGMPv1, IGMPv2 e IGMPv3 sulla stessa rete.
- Se il Querier è IGMPv3, invia Queries IGMPv3.
- Gli host IGMPv3 rispondono con Reports IGMPv3.
- Gli host IGMPv2 rispondono con Reports IGMPv2.
- Gli host IGMPv1 rispondono con Reports IGMPv1.
Il router IGMPv3 deve gestire tutti questi tipi di report. Per i gruppi con membri IGMPv1 o IGMPv2, il router deve trattare effettivamente il gruppo come se fosse in modalità EXCLUDE con un elenco sorgente vuoto (cioè, "inviami tutto per questo gruppo"), perché gli host più vecchi non possono specificare filtri sorgente.