La construction d'arbre multicast - PIM
Un article de IPv6.
La diffusion du multicast IPv6 sur le lien-local | Table des matières | Le protocole PIM SSM - Source Specific Multicast |
Sur le lien-local, le protocole MLD permet aux stations de travail d'exprimer leur intérêt pour un groupe multicast (et d'un ensemble de sources pour MLDv2). Il reste ensuite à acheminer les paquets multicast IPv6 entre les sources et les abonnés. Ceci est réalisé par le protocole PIM (Protocol Independant Multicast). Le fonctionnement du protocole PIM en IPv6 est le même que pour IPv4. Aussi l'objectif de cette section est d'expliquer les bases du protocole de construction d'arbre multicast PIM pour permettre une meilleure compréhension du chapitre multicast.
Sommaire |
Le protocole PIM SM - Sparse-Mode
Le protocole PIM-SM (Protocol Independent Multicast - Sparse Mode) permet la construction d'arbres multicast (RFC 2362). Ce protocole peut utiliser la base d'information de routage unicast sous-jacente, ou une autre base d'information de routage multicast comme BGP IPv6 multicast SAFI. Dans ce sens il est indépendant. Il construit pour chaque groupe un arbre de diffusion unidirectionnelle, chaque arbre prenant racine sur un noeud spécifique appelé point de rendez-vous ou RP (Rendez-vous Point). Lorsqu'il y a plusieurs sources alimentant le même groupe, les paquets en provenance des différentes sources convergent vers le RP associé au groupe, puis à partir de celui-ci les paquets empruntent (et donc partagent) l'arbre associé au groupe, ce qui leur permet d'atteindre tous les destinataires membres du groupe. La construction de l'arbre de diffusion peut se décomposer en 3 étapes.
Etape 1 : l'arbre partagé
Une station de travail exprime son désir de recevoir le trafic multicast associé à un groupe en utilisant le protocole MLD vu dans la section précédente. Le routeur PIM en charge du lien-local ou DR (Designated Router), envoie un message PIM (*,G) Join vers le RP associé à ce groupe. On utilise la notation (*,G) car cela concerne n'importe quelle source pour le groupe G.
Ce message va être propagé de routeur en routeur vers le RP de ce groupe. A chaque routeur traversé un état associé à l'arbre multicast du groupe G est créé. Finalement le message PIM (*,G) Join va atteindre soit le RP, soit un routeur possédant déjà un état (*,G) associé au groupe. Quand plusieurs récepteurs adhèrent à un groupe, les messages PIM Join envoyés par les DR convergent vers le RP de ce groupe, ce qui forme l'arbre multicast pour ce groupe. Cet arbre est appelé RPT (Rendez-vous Point Tree) et il est qualifié d'arbre partagé puisqu'il sera utilisé pour atteindre tous les destinataires du groupe quel que soit l'émetteur du paquet multicast (cf. figure Arbre partagé).
Des messages PIM d'adhésion sont envoyés périodiquement tant qu'au moins un destinataire est membre du groupe. Quand tous les destinataires situés sur un lien-local quittent un groupe, le DR peut envoyer un message PIM d'élagage (PIM Prune). Une durée limite de validité étant associée à chaque adhésion, si aucun message PIM ne parvient, l'adhésion sera résiliée.
Dès qu'une station émet un paquet multicast vers un groupe, le DR de son lien-local encapsule ce paquet dans un datagramme unicast ayant pour adresse de destination le RP associé au groupe. Lorsque le RP reçoit ce datagramme, il décapsule le paquet multicast, et le propage sur le RPT associé au groupe. Le paquet est dupliqué aux noeuds qui forment de nouvelles branches, et donc parvient à l'ensemble des destinataires membres du groupe. Les datagrammes ayant encapsulé les paquets multicast sont appelés messages PIM Register (cf. figure Envoi des messages PIM Register).
Etape 2 : l'acheminement spécifique
L'encapsulation dans les messages PIM Register est doublement inefficace :
- L'encapsulation et la décapsulation sont des opérations qui sont coûteuses pour un routeur surtout s'il ne possède pas de matériel spécifique pour accélérer ces opérations.
Le chemin de l'émetteur vers le RP puis à travers l'arbre RPT pour les récepteurs qui sont placés près de l'émetteur peut engendrer un large détour, produisant des délais et pouvant surcharger inutilement le réseau.
Le RP pourra choisir de basculer vers un acheminement natif (sans encapsulation) entre la source et le RP. Dans ce cas, lorsque le RP reçoit un message PIM Register contenant un paquet multicast provenant d'un émetteur S pour un groupe G, il peut envoyer un message PIM (S,G) Join vers S.
Ce message provoque dans les routeurs traversés la création d'un état multicast spécifique (S,G). Ces états ne seront utilisés que pour transmettre les paquets multicast émis par S vers le groupe G. Finalement, ce message PIM (S,G) Join arrivera au DR associé à la source.
Dès que le PIM (S,G) Join arrive au DR de la source, ce dernier émet les données à la fois nativement vers le RP et en les encapsulant dans les messages PIM Register. Quand des paquets multicast natifs arrivent simultanément avec des paquets multicast encapsulés en provenance de la même source et pour le même groupe, le RP reçoit alors deux copies de chaque message. À partir de cet instant le RP doit détruire la copie des paquets multicast encapsulés, et il envoie un message PIM Register-Stop vers le DR de la source. Lorsque le DR reçoit un message PIM Register-Stop, il cesse d'encapsuler les paquets multicast dans des messages PIM Register.
A la fin de cette phase, le trafic émis par la source S pour le groupe G suit l'arbre centré sur la source jusqu'au RP, puis utilise l'arbre RPT (associé au groupe G) pour atteindre tous les destinataires du groupe G (cf. figure Le RP rejoint l'arbre centré sur la source).
On notera que l'émetteur peut commencer à émettre avant ou après qu'un destinataire s'abonne à un groupe, et donc que cette deuxième phase peut être mise en place avant que l'arbre RPT soit construit.
Etape 3 : l'arbre des plus courts chemins
L'étape 2 supprime le surcoût introduit par l'encapsulation entre l'émetteur et le RP ; cependant cela n'optimise pas complètement le chemin suivi par les paquets multicast. Pour de nombreux destinataires, le transit par le RP provoque un détour important si on compare ce chemin avec le chemin le plus court entre l'émetteur et chaque destinataire (cf. figure Arbre centré sur la source).
Une fois que le DR d'un récepteur reçoit les paquets émis par la source S vers le groupe G, il peut rejoindre l'arbre centré sur la source. On désignera cet arbre par SPT (Shortest Path Tree).
Dans ce cas, le DR émet un message PIM (S,G) Join vers l'émetteur. Cela crée des états spécifiques (S,G) dans les routeurs rencontrés sur le chemin vers l'émetteur. Le message atteint le DR de la source ou un autre routeur ayant déjà l'état (S,G). Les paquets multicast dorénavant émis par l'émetteur S suivront les états (S,G).
À partir de cet instant le DR du destinataire peut recevoir deux copies de chaque paquet multicast : une provenant du RP et ayant suivi l'arbre RPT associé, l'autre provenant directement de l'émetteur en ayant emprunté l'arbre centré sur la source (SPT). Dès que le premier paquet multicast est reçu en provenance de l'arbre centré sur la source, le DR du destinataire détruit les paquets qui arrivent via le RPT. Il envoie un message d'élagage PIM (S,G) Prune qui est propagé de routeur en routeur vers le RP. Dans chaque routeur rencontré ce message place un état indiquant que le trafic multicast (S,G) ne doit plus être propagé sur l'arbre partagé.
La diffusion du multicast IPv6 sur le lien-local | Table des matières | Le protocole PIM SSM - Source Specific Multicast |