Aller au contenu principal

5. Description du protocole pour les membres de groupe

IGMP est un protocole asymétrique, spécifiant des comportements différents pour les membres de groupe (hôtes ou routeurs qui souhaitent recevoir des paquets multicast) et les routeurs multicast (qui écoutent les messages IGMP et coordonnent le transfert multicast). Cette section décrit la partie d'IGMPv3 qui s'applique aux membres de groupe. (Notez qu'un routeur peut également être un membre de groupe.)

Un système exécute le protocole décrit dans cette section sur chaque interface sur laquelle la réception multicast est prise en charge. Le protocole sur chaque interface implique le traitement immédiat de deux types d'événements:

  1. Un changement de l'état de réception multicast sur l'interface, causé par une invocation locale de la définition IPMulticastListen.

  2. Réception d'un message Membership Query.

5.1. Action lors d'un changement d'état d'interface

Une invocation d'IPMulticastListen peut entraîner un changement de l'état de réception multicast d'une interface, selon les règles de la section 3.2. Chaque tel changement affecte l'état par interface pour une seule adresse de groupe multicast.

Un changement d'état d'interface amène le système à transmettre immédiatement un State Change Report depuis cette interface. Le type et le contenu du State Change Report sont déterminés comme suit:

  1. Si le changement d'état n'est pas significatif, tel que le mode de filtre pour un groupe passant de INCLUDE à INCLUDE ou de EXCLUDE à EXCLUDE, avec l'ensemble des adresses source restant inchangé, aucun rapport n'est généré.

  2. Si le changement d'état est significatif, un State Change Report est généré. Le Report contient un seul Group Record pour le groupe dont l'état a changé. Le type et le contenu du Group Record sont déterminés en comparant l'Old State (l'état avant le changement) avec le New State (l'état après le changement), comme indiqué dans le tableau suivant:

    Old StateNew StateState Change Record Sent
    INCLUDE (A)INCLUDE (B)ALLOW (B-A), BLOCK (A-B)
    EXCLUDE (A)EXCLUDE (B)ALLOW (A-B), BLOCK (B-A)
    INCLUDE (A)EXCLUDE (B)TO_EX (B)
    EXCLUDE (A)INCLUDE (B)TO_IN (B)

    La notation "ALLOW (B-A)" signifie que le State Change Record porte une liste source contenant toutes les adresses source qui sont dans l'ensemble B mais pas dans l'ensemble A. La notation "BLOCK (A-B)" signifie que le State Change Record porte une liste source contenant toutes les adresses source qui sont dans l'ensemble A mais pas dans l'ensemble B.

    Si la liste source calculée pour un enregistrement ALLOW ou BLOCK est vide, cet enregistrement est omis du State Change Report.

Pour garantir que le State Change Report est reçu par tous les routeurs multicast du réseau, le système retransmet le Report [Robustness Variable] - 1 fois, à des intervalles aléatoires choisis dans la plage (0, [Unsolicited Report Interval]). La [Robustness Variable] est un paramètre ajustable, par défaut à 2. L'[Unsolicited Report Interval] est également un paramètre ajustable, par défaut à 10 secondes.

Si un State Change Report est programmé pour transmission, et qu'une Query est reçue qui provoquerait la génération d'un Current State Report (voir section 5.2), le State Change Report en attente est abandonné et le Current State Report est envoyé à la place. Le Current State Report doit contenir toutes les informations qui auraient été dans le State Change Report.

5.2. Action lors de la réception d'une Query

Lorsqu'un système reçoit une Query, il vérifie d'abord si la Query est valide. Pour être valide, la Query doit:

  1. avoir au moins 12 octets de long,
  2. avoir un checksum IP correct,
  3. avoir une adresse IP de destination égale à l'adresse multicast all-systems (224.0.0.1) ou à l'adresse de groupe spécifique interrogée.

Si la Query n'est pas valide, elle est ignorée. Si la Query est valide, le système effectue les actions suivantes:

  1. Il met à jour son minuteur pour le Querier, si nécessaire (voir section 6).
  2. Il détermine s'il doit répondre à la Query.

Les sous-sections suivantes décrivent les règles pour répondre à différents types de Queries.

5.2.1. Action lors de la réception d'une General Query

Lors de la réception d'une General Query, le système vérifie chaque interface pour voir s'il existe un état de réception multicast pour un groupe. Pour chaque groupe pour lequel il existe un état, le système programme l'envoi d'un Current State Report.

Le Report contient un Group Record pour le groupe. Le type du Group Record est MODE_IS_INCLUDE si le mode de filtre pour le groupe est INCLUDE, et MODE_IS_EXCLUDE si le mode de filtre est EXCLUDE. La liste source dans le Group Record contient l'ensemble des adresses source pour le groupe.

Le Report est programmé pour être envoyé à un moment aléatoire choisi dans la plage (0, [Max Resp Time]), où [Max Resp Time] est la valeur spécifiée dans le champ Max Resp Code de la Query.

5.2.2. Action lors de la réception d'une Group-Specific Query

Lors de la réception d'une Group-Specific Query, le système vérifie s'il a un état de réception multicast pour l'adresse de groupe spécifiée dans la Query. Si ce n'est pas le cas, il ignore la Query.

S'il existe un état pour le groupe, le système programme l'envoi d'un Current State Report. Le Report contient un Group Record pour le groupe, construit comme décrit dans la section 5.2.1.

Le Report est programmé pour être envoyé à un moment aléatoire choisi dans la plage (0, [Max Resp Time]).

5.2.3. Action lors de la réception d'une Group-and-Source-Specific Query

Lors de la réception d'une Group-and-Source-Specific Query, le système vérifie s'il a un état de réception multicast pour l'adresse de groupe spécifiée dans la Query. Si ce n'est pas le cas, il ignore la Query.

S'il existe un état pour le groupe, le système détermine s'il est intéressé par l'une des adresses source spécifiées dans la Query. Le système est intéressé par une adresse source si:

  1. Le mode de filtre pour le groupe est EXCLUDE, OU
  2. Le mode de filtre pour le groupe est INCLUDE et l'adresse source est dans la liste source.

Si le système est intéressé par au moins une des adresses source, il programme l'envoi d'un Current State Report. Le Report contient un Group Record pour le groupe, construit comme décrit dans la section 5.2.1.

Le Report est programmé pour être envoyé à un moment aléatoire choisi dans la plage (0, [Max Resp Time]).

5.2.4. Action lors de la réception d'une Query avec le flag "S" activé

Si le flag "S" (Suppress Router-Side Processing) est activé dans une Query reçue, le système ne met pas à jour son minuteur pour le Querier. Cependant, il répond toujours à la Query comme décrit dans les sections 5.2.1 à 5.2.3.