7. Interopération avec IGMPv1 et IGMPv2
Les hôtes et routeurs IGMPv3 interopèrent avec les hôtes et routeurs qui n'ont pas encore été mis à niveau vers IGMPv3. Cette compatibilité est maintenue par les messages Membership Query périodiques qui sont diffusés par le Querier, et par les messages Membership Report Version 1 et Version 2 qui sont diffusés par les hôtes plus anciens.
7.1. Fonctionnement de l'hôte IGMPv3
Le comportement d'un hôte IGMPv3 dépend de si le Querier sur le réseau parle IGMPv3, IGMPv2 ou IGMPv1.
7.1.1. Distinctions de version de Query
La version IGMP d'un message Membership Query est déterminée comme suit:
- IGMPv1 Query: longueur = 8 octets, Max Resp Code = 0.
- IGMPv2 Query: longueur = 8 octets, Max Resp Code > 0.
- IGMPv3 Query: longueur >= 12 octets.
7.1.2. Comportement en présence de Queriers plus anciens
Un hôte IGMPv3 peut être placé sur un réseau où le Querier n'a pas encore été mis à niveau vers IGMPv3. L'hôte doit tenir compte de cette possibilité.
- IGMPv1 Querier Present: Si un hôte IGMPv3 reçoit une Query IGMPv1, il doit répondre avec des Reports IGMPv1. Le filtrage de source n'est pas pris en charge.
- IGMPv2 Querier Present: Si un hôte IGMPv3 reçoit une Query IGMPv2, il doit répondre avec des Reports IGMPv2. Le filtrage de source n'est pas pris en charge.
- IGMPv3 Querier Present: Si un hôte IGMPv3 reçoit une Query IGMPv3, il répond avec des Reports IGMPv3. Le filtrage de source est pris en charge.
L'hôte maintient une variable de mode de compatibilité pour chaque interface, qui est mise à jour chaque fois qu'une Query est reçue. Si une Query plus ancienne est reçue, l'hôte passe au mode de compatibilité correspondant et définit un minuteur. Lorsque le minuteur expire, l'hôte revient en mode IGMPv3.
7.2. Fonctionnement du routeur IGMPv3
Le comportement d'un routeur IGMPv3 dépend de la présence d'hôtes ou de routeurs plus anciens sur le réseau.
7.2.1. Présence d'hôtes plus anciens
Un routeur IGMPv3 peut recevoir des Reports IGMPv1 ou IGMPv2 d'hôtes plus anciens.
- IGMPv1 Report Received: Le routeur agit comme s'il avait reçu un rapport IGMPv3 IS_EX({}) pour le groupe. Il doit également ignorer tous les messages Leave Group pour ce groupe (puisque IGMPv1 n'a pas de messages Leave).
- IGMPv2 Report Received: Le routeur agit comme s'il avait reçu un rapport IGMPv3 IS_EX({}) pour le groupe.
Lorsque des hôtes plus anciens sont présents, le routeur peut avoir besoin de supprimer le traitement spécifique à IGMPv3 (comme les requêtes spécifiques à la source) pour les groupes affectés afin d'assurer la compatibilité.
7.2.2. Présence de routeurs plus anciens
Si un routeur IGMPv3 se trouve sur un réseau avec des routeurs plus anciens, le processus d'élection du Querier (Section 6.1) détermine quel routeur devient le Querier.
- Si un routeur IGMPv1 est présent et devient le Querier, tous les routeurs (y compris les routeurs IGMPv3) doivent agir comme des routeurs IGMPv1.
- Si un routeur IGMPv2 est présent et devient le Querier, tous les routeurs doivent agir comme des routeurs IGMPv2.
- Si un routeur IGMPv3 devient le Querier, il envoie des Queries IGMPv3. Les routeurs plus anciens verront celles-ci comme des queries IGMPv1/v2 invalides (ou les géreront s'ils sont partiellement compatibles), mais généralement, les routeurs IGMPv3 devraient être configurés pour fonctionner en mode IGMPv1 ou IGMPv2 s'ils doivent coexister avec des routeurs plus anciens qui ne peuvent pas gérer les paquets IGMPv3.
7.3. Mélange d'hôtes Version 1, 2 et 3
Il est possible d'avoir un mélange d'hôtes IGMPv1, IGMPv2 et IGMPv3 sur le même réseau.
- Si le Querier est IGMPv3, il envoie des Queries IGMPv3.
- Les hôtes IGMPv3 répondent avec des Reports IGMPv3.
- Les hôtes IGMPv2 répondent avec des Reports IGMPv2.
- Les hôtes IGMPv1 répondent avec des Reports IGMPv1.
Le routeur IGMPv3 doit gérer tous ces types de rapports. Pour les groupes avec des membres IGMPv1 ou IGMPv2, le routeur doit traiter effectivement le groupe comme étant en mode EXCLUDE avec une liste source vide (c'est-à-dire "envoyez-moi tout pour ce groupe"), car les hôtes plus anciens ne peuvent pas spécifier de filtres de source.