Résumé

  • Avec IGMPv1 et v2, chaque membre choisissait un délai aléatoire ; le premier rapport entendu suffisait à signaler la présence du groupe et annulait les rapports encore en attente.
  • Un message Leave d’IGMPv2 ne prouvait jamais que le dernier membre était parti : il déclenchait une vérification rapide. IGMPv3 a ensuite abandonné la suppression entre hôtes, car les listes de sources et l’état des ports rendaient les rapports non substituables.

La bonne réponse n’était pas une liste de noms

Un routeur multicast ne cherche pas toujours à savoir qui écoute. Pour décider s’il doit continuer à envoyer le trafic d’un groupe sur une liaison locale, une information binaire peut suffire : existe-t-il au moins un récepteur ?

Cette modestie a façonné le RFC 1112, publié en août 1989. Le texte décrit la première version largement déployée d’IGMP. L’appartenance y concerne une interface, elle peut changer à tout moment et l’émetteur d’un datagramme n’a même pas besoin d’être membre du groupe. Le routeur voisin n’obtient ni registre de personnes ni titre de propriété sur l’adresse multicast.

Il obtient une preuve de présence limitée à sa liaison. C’est précisément parce que cette preuve est étroite qu’un seul membre peut la fournir pour les autres.

Une loterie de dix secondes contre l’implosion

Le routeur envoie une Query à 224.0.0.1 avec un TTL de un. Sur l’interface qui la reçoit, chaque hôte membre démarre, pour chaque groupe concerné, un temporisateur choisi au hasard entre zéro et dix secondes. Les réponses ne partent donc pas toutes au même instant.

Le premier temporisateur arrivé à terme provoque un Membership Report. Ce rapport est adressé au groupe annoncé, toujours avec un TTL de un. Les autres membres du même réseau peuvent l’entendre. Un hôte dont le temporisateur tourne encore l’arrête lorsqu’il reçoit un rapport valide pour ce groupe. Dans le cas normal, un seul paquet atteint le routeur.

Ce silence n’est ni une panne ni une abstention. Il est le résultat voulu d’une coordination sans chef. Aucun hôte n’est élu durablement ; le gagnant change avec le hasard et avec les membres présents. Le rapport économisé était redondant pour la décision de l’époque : deux réponses positives pour le même groupe et la même interface n’auraient pas changé le transfert.

La règle reste cependant plus fine que son surnom de « suppression ». Elle ne supprime pas l’adhésion. Elle annule une transmission en attente dans un cycle de requête. Le premier répondant ne devient pas mandataire du groupe et n’acquiert aucun droit sur les autres.

La présence devait revenir périodiquement

Le routeur interroge à intervalles réguliers. Tant qu’au moins un rapport arrive, il conserve l’état du groupe sur la liaison. Si la procédure de requête et d’expiration ne produit plus aucun rapport, il peut conclure qu’il n’a plus à y transférer le trafic venu d’ailleurs.

L’état est donc souple. Il survit par rafraîchissement, pas par inscription définitive. Un hôte en panne n’a pas besoin d’envoyer un dernier message impossible. Son absence finit par se manifester lorsque personne ne renouvelle la présence.

L’entrée dans un groupe reçoit un traitement plus pressé. Un nouvel auditeur émet immédiatement un rapport non sollicité, puis le répète après de courts délais afin de couvrir une perte. Attendre la prochaine Query ferait perdre du trafic au premier membre de la liaison.

IGMP établissait ainsi trois rythmes différents : annoncer vite l’arrivée, compresser les confirmations communes, déduire lentement l’absence. Aucun de ces actes ne promettait la livraison d’un seul datagramme.

Quitter revenait à demander une enquête

En novembre 1997, le RFC 2236 a défini IGMPv2. Il introduit le message Leave Group, le Max Response Time, les Queries propres à un groupe et une élection commune du querier. L’objectif est de réduire le délai pendant lequel le réseau continue à diffuser après le départ du dernier auditeur.

Le protocole refuse pourtant de confondre un départ avec la disparition du groupe. L’hôte qui se souvient avoir été le dernier à répondre devrait envoyer Leave à 224.0.0.2. Celui qui n’était pas le dernier rapporteur peut rester silencieux : un autre membre a récemment prouvé sa présence.

À la réception de Leave, le querier ne détruit pas immédiatement l’état. Il envoie plusieurs Queries propres au groupe avec un délai court. Un membre restant répond et maintient le transfert. L’absence n’est retenue qu’après la dernière fenêtre de réponse restée vide.

Leave signifie donc « vérifiez maintenant », et non « croyez-moi, je suis le dernier ». Cette nuance protège le droit d’un membre silencieux à continuer de recevoir. Elle explique aussi pourquoi un routeur v2 ignore les Leave pour un groupe où un hôte v1 a été détecté : l’ancien participant ne connaît pas le nouveau rituel de départ.

Le groupe G ne suffisait plus

IGMPv3 a changé l’objet observé. Le RFC 3376 l’a défini en 2002 ; le RFC 9776, devenu la norme actuelle en 2025, reprend la version 3 en corrigeant et clarifiant le texte sans rompre la compatibilité.

Un hôte peut demander les paquets destinés au groupe G seulement lorsqu’ils viennent d’une liste de sources, en mode INCLUDE, ou de toutes les sources sauf celles d’une liste, en mode EXCLUDE. Le système agrège les souhaits de ses sockets en un état d’interface. Un rapport peut décrire l’état courant, un changement de mode, de nouvelles sources admises ou des sources désormais bloquées.

Deux machines du même groupe peuvent alors exprimer des besoins différents. Le rapport de la première ne contient plus nécessairement la vérité utile à la seconde. Le modèle (S,G) du multicast spécifique à une source, exposé dans le RFC 4607, rend cette différence particulièrement nette : la source S fait partie du canal demandé.

La justification d’IGMPv3 en tire une conclusion inhabituelle pour un protocole : elle retire une ancienne optimisation. Les hôtes v3 n’annulent plus leur rapport parce qu’ils en ont entendu un autre. Les routeurs peuvent vouloir suivre des observations par hôte pour un départ rapide ou la comptabilité ; les ponts qui espionnent IGMP supportent mal la suppression ; la machine à états des hôtes devient plus simple ; et un seul paquet v3 peut réunir plusieurs Group Records, ce qui économise des paquets sans effacer les différences.

L’abandon de la suppression n’est pas l’abandon de la temporisation. Les réponses à une Query générale restent réparties dans la fenêtre Max Response Time et ne doivent pas partir immédiatement. IGMPv3 traite séparément deux problèmes : éviter l’explosion simultanée, puis préserver chaque état pertinent.

Le commutateur n’entendait pas la même salle

Le réseau local partagé imaginé par la règle initiale ressemblait à une pièce où chacun entend le premier rapport. Un LAN commuté peut présenter une autre réalité.

Un pont ordinaire inonde le multicast. Un commutateur avec IGMP snooping lit les messages de contrôle pour apprendre quels ports ont besoin d’un groupe. Le RFC 4541, document informatif, recommande en général d’envoyer les rapports vers les ports des routeurs et non vers tous les ports d’hôtes.

Si un rapport v1 ou v2 est malgré tout propagé vers un autre hôte, celui-ci peut annuler son propre rapport. Le routeur sait qu’un membre existe quelque part sur la liaison, mais le commutateur peut ne jamais apprendre le port du membre devenu silencieux. Il risque alors de ne pas lui livrer le flux.

La même observation possédait deux valeurs. Pour le routeur, elle établissait G sur la liaison. Pour le commutateur, elle devait établir G sur un port. Économiser la seconde observation restait correct dans le premier registre et devenait dangereux dans le second.

Ce conflit ne prouve pas qu’une couche a toujours raison contre une autre. Il montre qu’une optimisation dépend du périmètre de sa décision. Lorsque le périmètre se resserre, l’équivalence des témoins doit être réexaminée.

La compatibilité peut réduire la précision

IGMPv3 doit cohabiter avec ses prédécesseurs. Après avoir entendu une ancienne Query, un hôte peut passer temporairement au mode de compatibilité correspondant. Les routeurs conservent aussi des temporisateurs indiquant la présence de membres anciens, car un Leave ou un état de source ne peut plus être interprété de la même manière.

Une seule machine ancienne peut donc imposer, pendant un intervalle, un langage moins expressif à tout le groupe. C’est un coût raisonnable de la migration, mais il doit être visible. Le RFC 9776 exige notamment qu’un hôte conscient du multicast spécifique à une source ne laisse pas un rapport v1 ou v2 supprimer son enregistrement v3.

La version du message est ainsi une partie de la preuve. La supprimer d’un journal ou d’un tableau de bord revient à cacher le changement de contrat.

Un rapport n’est jamais devenu une permission

IGMP reste un signal local de désir de réception IPv4. Il ne construit pas l’arbre multicast entre domaines, n’authentifie pas un abonné, ne choisit pas les émetteurs autorisés et ne garantit pas la livraison.

Le RFC 9776 précise aussi qu’IGMP n’offre aucune confidentialité. Un appareil sur la liaison peut observer des groupes potentiellement sensibles. Un rapport forgé peut maintenir du trafic sur un réseau sans véritable membre ; un ancien rapport forgé peut prolonger un mode de compatibilité qui affaiblit le départ rapide ou le filtrage par source. TTL un, Router Alert et les contrôles d’origine locale limitent certains chemins, mais ne constituent pas une signature cryptographique.

La force du protocole vient de cette modestie. Il produit une indication exploitable par le transfert sans prétendre gouverner l’identité ou le droit. En faire un registre d’utilisateurs reviendrait à lui attribuer une autorité qu’aucune de ses versions n’a portée.

Sources et limites

Les RFC 1112 et 2236 établissent les temporisateurs, la suppression, Leave et la vérification du dernier membre. Le RFC 3376 conserve la justification historique de la version 3 ; le RFC 9776 est son texte normatif actuel. Le RFC 4541 décrit les contraintes des commutateurs à snooping et le RFC 4607 le service (S,G).

Ces documents ne mesurent ni le déploiement mondial, ni la conformité d’un produit, ni l’identité réelle d’un auditeur. L’idée selon laquelle la suppression a disparu parce que la valeur probante des rapports avait changé est une lecture des mécanismes et des motifs explicitement consignés.