Les adresses multicast, également appelées adresses de groupes, permettent de communiquer avec un ensemble d'interfaces. Le datagramme émis avec une destination multicast sera réceptionné par toutes les interfaces abonnées au groupe de multicast.
C'est une manière efficace de s'adresser à un ensemble de machines. Une communication multicast est une communication dans laquelle un même paquet de données peut être envoyé à un groupe de récepteurs. Dans le modèle IPv6 une station peut potentiellement émettre un paquet multicast vers n'importe quel groupe. Le multicast évite la duplication des datagrammes au niveau de la source et minimise l'utilisation de la bande passante au niveau du réseau. Le service de multicast est insensible à l'accroissement du nombre de membres et à leur localisation. Les usages sont multiples et en pleine expension: distribution logicielle, visioconférences et enseignement à distance, télé et radio diffusion etc.
Pour le multicast on distingue 2 modèles de communication:
Les adresses multicast sont dérivées du préfixe ff00::/8 (tous les bits à 1 sur l'octet de poids fort).
8 bits | 4 bits | 4 bits | 112 bits |
ff | 0RPT | portée | Identifiant de groupe |
---|
Un champ drapeaux de 4 bits (0RPT):
Le champ de portée sur 4 bits (scope) permet de limiter l'étendue de diffusion de l'adresse de multicast ipv6. Cela permet de le confinement des datagrammes dans une zone déterminée:
hexa | étendue |
---|---|
0x0 | Réservé |
0x1 | interface locale |
0x2 | lien local |
0x3 | Realm-local |
0x4 | Admin-local |
0x5 | site local |
0x8 | organisation locale |
0xE | portée globale |
0xF | Réservé |
Lorsque l'adresse multicast est permanente (gérée par l'IANA) avec le bit T=0 elle a un sens quelle que soit sont étendue: sont identifiant de groupe est réservé pour toutes les portées. Dans l'exemple ci dessous l'identifiant du groupe des serveurs de temps (0x101) est définit pour toutes les portées.
Adresse multicast | Population concernée |
---|---|
ff01::101 | Tous les serveurs NTP de l'interface |
ff02::101 | Tous les serveurs NTP du lien |
ff05::101 | Tous les serveurs NTP du site |
ff02::101 | Tous les serveurs NTP de l'Internet |
Mais tous les services n'ont pas d'identifiant de groupe valide pour toutes les portées. Certains identifiants de groupes multicast prédéfinis ne sont valides que sur un nombre limité de portées.
L'adresse de multicast sollicité est un type d'adresse multicast prédéfini. IPv6 interdit l'utilisation de la diffusion générale (broadcast) lorsque le multicast est disponible. Ainsi les protocoles de découverte du voisinage faisant la correspondance entre adresses IPv6 et adresses MAC doivent utiliser une adresse de multicast. Pour être plus efficace, au lieu d'utiliser l'adresse ff02::1 qui correspond a l'adresse de tous les équipements sur le lien local; l'utilisation des adresses sollicités permet de réduire considérablement le nombre d'équipements qui recevront la requête de découverte de voisins.
L'adresse multicast sollicité est construite par un préfixe ff02::1:ff00:0/104 appliqué devant les 24 bits de poids faible de l'adresse unicast ou anycat du nœud. Une équipement, à partir de chacune de ses adresses unicast construit une adresse de multicast sollicité et écoute les paquets émis pour cette adresse.
Ces adresses multicast sollicités sont utilisés par les protocoles de détection d'adresses dupliquées et de voisins qui sont abordés dans le wiki [todo link].
Plusieurs équipement sur le lien peuvent avoir la même adresse de multicast sollicité, mais dans la pratique, la probabilité de trouver sur un même lien physique deux équipements avec les 3 derniers octets d'adresse physique identique est faible. Cela permet donc de limiter le nombre d'équipements qui traiteront la requête de sollicitation de voisins.
Le RFC-3307 précise la correspondance entre les adresses IPv6 multicast et les adresses de niveau 2. Ainsi sur un réseau Ethernet de niveau 2, le datagramme IPv6 de multicast est encapsulé dans une trame Ethernet. L'adresse matérielle MAC de destination de la trame Ethernet est déduite à partir de l'adresse multicast de destination en concaténant le préfixe réservé MAC 33:33 aux 4 derniers octets de l'adresse de multicast IPv6.
Une adresse de multicast temporaire à son drapeau T=1. A l'inverse des adresses multicast permanentes, une adresse multicast temporaire n'a de signification que dans la portée donnée.
Ainsi une adresse multicast ff15::999 utilisée par un site (scope 0x5) n'as aucune relation avec l'adresse multicast identique ff15::999 utilisée par un autre site.
Il existe plusieurs types d'adresses multicast temporaires:
Les bits (0,R,P) du champ drapeaux valent 0 et le bit T=1. Il n'y a pas de recommandation particulière pour l'utilisation de ces adresses. Un scénario d'utilisation peut être une visioconférence ponctuelle.
Le RFC-3306 définit une méthode pour dériver une adresse multicast IPv6 à partir d'un préfixe unicast:
Pour illustrer la construction d'une adresse multicast générale prenons l'adresse unicast 2001:660::/32
préfixe multicast | drapeaux | scope | reservé | Plen | Préfixe | ID groupe |
---|---|---|---|---|---|---|
0xff | 0011 | xxxx | 00000000 | 0x20 | 0x2001 0x0660 | 0xaabb 0xccdd |
on obtient ainsi l'adresse multicast de la forme ff3x:20:2001:660::aabb:ccdd
La RFC-3618 définit une méthode pour inclure l'adresse de rendez-vous servant à la construction de l'arbre de multicast directement dans l'adresse de multicast IPv6
Par exemple, pour un point de rendez vous avec l'adresse unicast 2001:660:3307:125::3/64
Pour dériver l'adresse multicast embarquant ce point de rendez-vous:
préfixe multicast | drapeaux | scope | reservé | RP | Plen | Préfixe | ID groupe |
---|---|---|---|---|---|---|---|
0xff | 0111 | xxxx | 0x0 | 0x3 | 0x40 | 0x2001 0x660 0x3705 0x125 | 0xaabb 0xccdd |
On obtient alors une adresse multicast embedded-rp de la forme ff7x:340:2001:660:3705:125:aabb:ccdd
Les adresses SSM Source Specific Multicast sont également décrite dans le RFC-3306: elles utilisent le préfixe reservé ff3x::/32 cependant seules les adresses dérivées du préfixe ff3x::/96 devront être utilisées dans un premier temps. Ce sont des adresses multicast basées sur le préfixe unicast où les champ Plen et prefixe sont positionnés à 0.