Gestion des abonnements sur le lien-local : MLD version 2
From Livre IPv6
Exemples de fonctionnement de MLDv1 | Table des matières | Exemples de fonctionnement de MLDv2 |
Contents
La nouvelle version du protocole de gestion de groupe multicast, MLDv2 est décrite dans le RFC 3810. Elle implante les fonctionnalités du protocole IGMPv3 défini pour IPv4, la plus importante étant l'introduction du filtrage des sources. Un hôte peut désormais spécifier les sources qu'il veut ou qu'il ne veut pas écouter pour une adresse multicast donnée. Cette information peut être utilisée par les protocoles de routage multicast afin d'éviter l'acheminement des paquets multicast provenant de certaines sources vers des liens où il n'y a pas de récepteur intéressé.
Pour être en mesure de supporter les fonctionnalités de MLDv2, l'API de l'hôte doit permettre l'opération suivante (ou un équivalent logique de celle-ci) :
EcouteIPv6Multicast (socket, interface, adresse multicast IPv6, mode de filtrage, liste de sources)
Par cet appel, une application demande, pour une certaine adresse multicast, la réception de paquets sur une certaine interface, en tenant compte du mode de filtrage et de la liste des sources spécifiées. Le mode de filtrage peut être soit INCLUDE, soit EXCLUDE :
- En mode INCLUDE, la réception des paquets envoyés à l'adresse multicast spécifiée est demandée seulement pour ceux en provenance des sources présentes dans la liste qui suit
- En mode EXCLUDE, la réception des paquets est demandée pour toutes les sources, à l'exception de celles spécifiées dans la liste de sources
Il existe deux types de messages MLDv2 :
- recensement des récepteurs multicast (type=130)
- rapport d'abonnement multicast version 2 (type=143)
Pour garder l'interopérabilité avec la version précédente de MLD, les messages de rapport d'abonnement multicast version 1 et de résiliation d'abonnement multicast sont également supportés.
Messages de recensement MLDv2
Un message de recensement des récepteurs en MLDv2 est donné sur la figure Format d'un message de recensement MLDv2. Les champs ont la signification suivante :
- type : le même type qu'en MLDv1
- code : mis à zéro par l'émetteur et ignoré par les récepteurs
- checksum : calculé de la même façon que pour la version précédente du protocole
- délai max. de réponse : utilisé pour calculer le délai maximal de réponse durant lequel le récepteur doit envoyer éventuellement son rapport d'abonnement
- inutilisé : mis à zéro par l'émetteur et ignoré par les récepteurs,
- adresse multicast,
- réservé : mis à zéro par l'émetteur et ignoré par les récepteurs,
- drapeau S : indique aux routeurs multicast qui reçoivent ce message s'ils doivent ou pas supprimer la mise à jour des temporisateurs, effectuée normalement au moment de la réception d'un message de recensement,
- QRV : contient la variable de robustesse utilisée par le recenseur (le nombre de fois qu'un récepteur envoie un rapport pour être robuste aux pertes dans le réseau),
- QQIC : code utilisé pour calculer l'intervalle de recensement,
- nombre de sources,
- adresse de la source [N], vecteur contenant la liste éventuelle des sources.
Trois types de messages de recensement de récepteurs multicast sont utilisés :
- recensement général envoyé par un routeur multicast afin de découvrir les adresses multicast pour lesquelles il y a des récepteurs sur ses liens directs. Dans un tel message les champs "adresse multicast" et "nombre de sources" sont mis à zéro
- recensement spécifique à une adresse multicast envoyé par un routeur multicast afin de découvrir l'existence de récepteurs pour une adresse multicast spécifique. Le champ "adresse multicast" contient l'adresse en question, tandis que le champ "nombre de sources" est mis à zéro
- recensement spécifique à une adresse multicast et à une source envoyé par un routeur multicast afin de découvrir l'existence de récepteurs pour une adresse multicast et une source spécifiques. Le champ "adresse multicast" contient l'adresse en question, tandis que les champs "adresse source [i]" forment un vecteur de N adresses unicast (valeur spécifiée dans le champ "nombre de sources").
Les messages de recensement général sont envoyés à l'adresse de diffusion générale sur le lien (FF02::1). Les autres messages de recensement sont envoyés à l'adresse multicast spécifiée dans l'en-tête MLDv2.
Rapports d'abonnement MLDv2
Un rapport d'abonnement multicast en MLDv2 est donné sur la figure Format d'un message de rapport d'abonnement MLDv2. Les champs ont la signification suivante :
- type, type=143
- réservés, mis à zéro par l'émetteur et ignorés par les récepteurs
- checksum, calculé de la même façon que pour la version précédente du protocole
- nombre d'enregistrements d'adresse multicast
- enregistrement d'adresse multicast : chaque enregistrement d'adresse multicast a la forme donnée sur la figure Format d'un message de recensement MLDv2 : Les champs ont la signification suivante :
- type d'enregistrement : plusieurs types d'enregistrements d'adresse multicast peuvent être inclus dans un rapport d'abonnement :
- un "enregistrement d'état actuel" est envoyé par un hôte en réponse à un message de recensement. Il décrit l'état de l'hôte concernant une adresse multicast spécifique .Le champ "type d'enregistrement" peut dans ce cas avoir les valeurs MODE_IS_INCLUDE ou MODE_IS_EXCLUDE,
- un "enregistrement de changement de mode de filtrage" est envoyé par un hôte chaque fois qu'un appel EcouteIPv6Multicast modifie son mode de filtrage pour une adresse multicast précise. Le champ "type d'enregistrement" peut dans ce cas avoir les valeurs CHANGE_TO_INCLUDE_MODE ou CHANGE_TO_EXCLUDE_MODE,
- un "enregistrement de changement de la liste des sources" est envoyé par un hôte quand un appel EcouteIPv6Multicast modifie la liste des sources qu'il souhaite ou ne souhaite pas écouter pour une adresse multicast précise. Le champ "type d'enregistrement" peut dans ce cas avoir les valeurs ALLOW_NEW_SOURCES ou BLOCK_OLD_SOURCES.
- LDAux contient la longueur du champ données supplémentaires
- adresse multicast
- nombre de sources
- adresse source [i], vecteur contenant la liste des sources qui doivent être désormais autorisées ou bloquées
- données supplémentaires, si elles sont présentes, peuvent contenir des informations supplémentaires concernant l'enregistrement d'adresse multicast en question.
Les rapports d'abonnement sont envoyés par les hôtes à l'adresse "tous les routeurs MLDv2" (ff02::16). Ainsi les récepteurs ne reçoivent pas les rapports des autres, chacun étant obligé d'envoyer son propre rapport. Le mécanisme d'économie d'émission des rapports du protocole MLDv1 n'est donc plus utilisé. Le risque de surcharge du routeur à cause du trop grand nombre de rapports reçus est toutefois évité en fixant des temporisateurs avec des valeurs différentes pour chaque rapport.
Fonctionnement de MLDv2
Comme dans le cas du MLDv1, s'il existe plusieurs routeurs multicast sur le même lien local, un seul routeur recenseur va être désigné à l'aide d'un mécanisme spécifique. Le recenseur envoie régulièrement des messages de recensement général auxquels les récepteurs répondent avec des rapports d'abonnement contenant des enregistrements d'état actuel.
Chaque hôte, ainsi que chaque routeur, gardent un état contenant le mode de filtrage et une liste des sources pour chaque adresse multicast. Dans le cas d'un hôte ce sont les adresses multicast sur lesquelles il écoute. Dans le cas d'un routeur ce sont les adresses multicast que ses récepteurs écoutent. Une application sur une machine hôte demande la modification du mode de filtrage ou de la liste des sources pour une adresse multicast précise à travers d'un appel EcouteIPv6Multicast. L'hôte inclut par conséquent ces modifications dans un rapport d'abonnement non-sollicité. Ce rapport contient des enregistrements de changement de mode de filtrage ou de la liste des sources, en conformité avec les changements qui ont eu lieu dans l'état interne de l'hôte.
Au moment de la réception des changements communiqués, le routeur met à jour son état pour l'adresse multicast concernée. Si, suite à ces changements, il constate qu'une certaine source ne doit plus être acceptée, le routeur envoie un message de recensement spécifique pour cette source, afin de vérifier l'existence d'éventuels récepteurs qui souhaitent toujours l'écouter. Un temporisateur est déclenché, et s'il expire sans que le routeur ait reçu un rapport d'abonnement concernant la source, celle-ci est éliminée de l'état local du routeur. Si le routeur détecte que plus aucune source n'est sollicitée pour une certaine adresse, il envoie un message de recensement spécifique pour cette adresse. Si des rapports d'abonnement concernant l'adresse en question ne sont pas reçus en temps dû, l'adresse est effacée de l'état du routeur.
Exemples de fonctionnement de MLDv1 | Table des matières | Exemples de fonctionnement de MLDv2 |