Le multicast IPv6 sur le lien-local
From Livre IPv6
Gestion des abonnements sur le lien-local : MLD
Pour offrir un service de distribution multicast, deux composants sont nécessaires : un protocole de gestion de groupe multicast et un protocole de construction d'arbre multicast. Le protocole de gestion de groupe multicast réalise la signalisation entre l'hôte et son routeur d'accès à l'Internet. En IPv6, ce protocole est MLD (Multicast Listener Discovery). Il est utilisé par un routeur de bordure IPv6 pour découvrir la présence de récepteurs multicast sur ses liens directement attachés, ainsi que les adresses multicast concernées.
MLD est un protocole asymétrique qui spécifie un comportement différent pour les hôtes et les routeurs multicast. Toutefois, pour les adresses multicast sur lesquelles un routeur lui-même écoute, il doit exécuter les deux parties du protocole et répondre à ses propres messages.
Comme MLD est un sous-protocole d'ICMPv6, les messages MLD sont des messages ICMPv6 particuliers. Ils sont envoyés avec :
- une adresse source IPv6 lien-local ;
- le champ "nombre de sauts" fixé à 1 ;
- l'option "IPv6 Router Alert" activée.
Cette dernière option est nécessaire afin de contraindre les routeurs à examiner les messages MLD envoyés à des adresses multicast par lesquelles les routeurs ne sont pas intéressés. La version d'origine du protocole MLD (RFC 2710) (que nous appellerons également MLDv1) présente les mêmes fonctionnalités que le protocole IGMPv2 en IPv4.
Trois types de messages sont utilisés. Leur format est donné sur la figure Format générique d'un message ICMP pour MLD:
- recensement des récepteurs multicast (type = 130) avec deux sous-types de messages :
- recensement général émis à l'adresse de diffusion générale sur le lien (FF02::1)
- recensement spécifique à une adresse multicast, l'adresse de destination est l'adresse multicast du groupe en question
- rapport d'abonnement multicast (type = 131), l'adresse de destination est l'adresse multicast du groupe en question
- résiliation d'abonnement multicast (type = 132), émis à l'adresse du groupe multicast "tous les routeurs du lien local" (FF02::2).
Les champs ont la signification suivante :
- type : prend la valeur 130, 131 ou 132.
- code : mis à zéro par l'émetteur et ignoré par les récepteurs
- checksum : celui du protocole ICMPv6 standard, couvrant tout le message MLD auquel s'ajoutent les champs du pseudo-en-tête IPv6
- délai maximal de réponse :
- utilisé seulement dans les messages de recensement. Il exprime le retard maximal autorisé (en millisecondes) pour l'arrivée des rapports d'abonnement
- dans les messages de rapport ou de résiliation d'abonnement ce champ est mis à zéro par l'émetteur et ignoré par les récepteurs
- inutilisé : mis à zéro par l'émetteur et ignoré par les récepteurs
- adresse multicast :
- pour un message de recensement général ce champ est mis à zéro
- pour un message de recensement spécifique il contient l'adresse multicast en question
- pour les messages de rapport et de résiliation d'abonnement, le champ contient l'adresse multicast sur laquelle l'hôte souhaite écouter ou cesser d'écouter
Messages de recensement et rapports d'abonnement périodiques MLD
Le routeur envoie régulièrement des messages de recensement général à l'adresse de diffusion générale sur le lien (FF02::1). Les hôtes arment un temporisateur pour chaque adresse multicast qui les concerne. Si un temporisateur expire sans que l'hôte ait entendu une réponse d'un de ses voisins concernant la même adresse, il envoie un rapport d'abonnement à l'adresse multicast du groupe. Ce système de temporisateurs permet aux hôtes de surveiller les rapports des autres hôtes sur le lien et d'annuler leurs propres rapports concernant les mêmes adresses. Ainsi la quantité du trafic MLD peut être minimisée.
Rapports d'abonnements MLD non-sollicités
Les changements d'état des hôtes sont notifiés par des messages non-sollicités :
- Pour souscrire à une adresse multicast spécifique, un hôte envoie un rapport d'abonnement non-sollicité ;
- Pour cesser d'écouter sur une adresse multicast, l'hôte peut simplement ne plus répondre aux messages de recensement du routeur. S'il est le seul récepteur de cette adresse multicast sur le lien, après un certain temps l'état du routeur concernant cette adresse expire. Le routeur arrêtera de faire suivre les paquets multicast envoyés à l'adresse en question, s'il s'avère que l'hôte était le dernier concerné par l'adresse multicast sur le lien;
- La résiliation rapide est aussi une possibilité offerte par MLDv1. L'hôte envoie un message de résiliation d'abonnement à l'adresse multicast de "tous les routeurs du lien local" (FF02::2). Le routeur répond avec un message de recensement spécifique à l'adresse en question. S'il n'y a plus de récepteur pour répondre à ce recensement, le routeur efface l'adresse multicast de sa table de routage.
Il est possible d'avoir plusieurs routeurs multicast sur le même lien local. Dans ce cas un mécanisme d'élection est utilisé pour choisir le routeur recenseur. Celui-ci sera le seul responsable pour l'envoi des messages de recensement.