Difference between revisions of "MOOC:Compagnon Act15-s6"
From Livre IPv6
(→Adresses multicast IPv6 permanentes) |
m (Jlandru moved page MOOC:Compagnon Act15 to MOOC:Compagnon Act15-s6) |
||
(117 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
__NOTOC__ | __NOTOC__ | ||
+ | |||
= Activité 15 : Les adresses multicast = | = Activité 15 : Les adresses multicast = | ||
+ | {{Approfondissement}} | ||
+ | == Introduction == | ||
+ | Les adresses multicast, également appelées adresses de groupe, sont un élément important dans la proposition Multicast IP. Le fonctionnement du multicast en IPv6 reprend les principes énoncés pour IPv4. Ces principes ont été posés dans les années 1990<ref>Handley, M., Crowcroft, J., Internet Protocol Journal, Volume 2, No. 4, December 1999. [http://ipj.dreamhosters.com/wp-content/uploads/issues/1999/ipj02-4.pdf Internet Multicast Today]</ref>. | ||
+ | Multicast IP est présenté en détail par cet article de Cisco <ref> Cisco (2002). White paper. [http://www.cisco.com/c/en/us/td/docs/ios/solutions_docs/ip_multicast/White_papers/mcst_ovr.html IP Multicast Technology Overview White paper Cisco].</ref>. Le lecteur est invité à consulter cet article pour y découvrir le fonctionnement de ce mode de communication. | ||
+ | Nous allons voir dans cette activité comment sont formatées les adresses IPv6 multicast<ref>Wikipedia. [https://en.wikipedia.org/wiki/Multicast_address#IPv6 Le multicast IPv6]</ref> uniquement. Cette activité n'aborde que partiellement le fonctionnement du multicast. | ||
+ | |||
+ | == Communication multicast == | ||
+ | Une communication multicast est une communication dans laquelle un paquet émis peut être reçu par plusieurs récepteurs, quelque soit leur localisation. Dans le modèle multicast IPv6, les récepteurs forment un groupe et celui-ci est identifié par une adresse dite de multicast. Comparé aux communications point à point (''unicast''), le multicast évite la duplication des paquets de données au niveau de la source, et minimise l'utilisation de la bande passante au niveau du réseau. C'est une manière efficace de communiquer avec un ensemble de machines. | ||
+ | De plus, il offre un service insensible à l'augmentation du nombre et de la localisation des membres d'un groupe. Le multicast peut être utilisé pour la distribution de logiciels, la téléconférence, les applications d'enseignement à distance, la radio ou la télévision sur Internet, les simulations interactives distribuées, les jeux multimédia interactifs, les applications militaires, etc. | ||
− | + | Le service de communication multicast se rend selon 2 modèles : | |
− | + | * le modèle ASM (''Any-Source Multicast'') : avec ce modèle, une source quelconque peut émettre des données à un groupe. Ce modèle s'applique par exemple dans le cas de visioconférences avec de nombreux participants qui ne sont pas connus à l'avance ; | |
− | + | * le modèle SSM (''Source-Specific Multicast'') [RFC 3569] : avec ce modèle, les sources sont connues à l'avance et les récepteurs peuvent restreindre les réceptions d'un groupe pour une source donnée. Ce modèle s'applique par exemple à la diffusion de la télévision ou radio sur Internet, où il n'y a qu'une seule source connue de tous. | |
− | + | ||
− | + | ||
− | + | Les étapes suivantes interviennent dans l'établissement d'une session multicast IPv6 : | |
− | + | * choix de l'adresse multicast pour la session ; | |
− | + | * description et annonce de la session multicast à tous les participants ; | |
− | IPv6 | + | * gestion des membres du groupe sur le lien-local : elle est réalisée par le protocole MLD (''Multicast Listener Discovery'') ; |
− | + | * construction de l'arbre multicast : elle est assurée par le protocole de routage multicast PIM (''Protocol Independant Multicast''). | |
− | + | ||
− | + | Le fonctionnement détaillé du multicast dépasse le cadre de cette présentation. Cette activité dans cette séquence ne présente que le format des adresses IPv6 multicast et les mécanismes permettant l'allocation des adresses multicast. | |
− | + | ||
− | + | == Formats des adresses multicast IPv6 == | |
− | + | Pour initier une session multicast, le groupe de récepteurs intéressés, appelé aussi groupe multicast, doit être identifié par une adresse IP multicast. L'allocation des adresses multicast doit se faire en garantissant l'unicité de l'adresse multicast à un groupe. Ainsi, il y a des adresses qui sont constituées par une autorité centrale. Dans ce cas, des adresses permanentes sont attribuées à des groupes bien connus. Enfin, pour des applications particulières, des adresses multicast peuvent être constituées dynamiquement et de manière temporaire. Nous allons décrire dans ce paragraphe le format des adresses multicast dans ces deux cas de figure. | |
− | + | ||
− | + | ||
− | + | ||
− | applications | + | |
− | + | === Format général === | |
− | + | Les adresses multicast IPv6 sont dérivées du préfixe <tt>ff00::/8</tt>. L'identification du groupe est faite sur 112 bits ; ce qui donne un potentiel d'environ 5 x 10^33 groupes différents. Une portée spécifique est associée a une adresse multicast afin de limiter la propagation du trafic multicast. Le format général est présenté par la figure 1 [RFC 4291]. | |
− | + | ||
− | + | <center> | |
− | + | [[Image:activite-15-adresses-multicast-img01-830x190-v20151012-01.jpg|600px|center|thumb|Figure 1 : Format général de l'adresse multicast.]] | |
− | + | </center> | |
− | + | ||
− | + | Le champ <tt>drapeaux</tt> (''flags'') spécifie le type d'adresses multicast IPv6 qui seront décrites dans la suite du document. Le champ <tt>drapeaux</tt>, d'une longueur de 4 bits, suit les 8 bits d'identification. Ce champ comporte les drapeaux suivants : | |
− | + | ||
− | + | * le bit T (''Transient'') indique le mode d'obtention de l'adresse multicast. Quand la valeur est à 0, elle signifie que l'adresse multicast est bien connue et est gérée par une autorité, en l'occurence l'IANA. La valeur 1 indique une adresse temporaire ou dynamiquement allouée ; | |
− | + | * le bit P indique une méthode de création reposant sur un préfixe unicast [RFC 3306] ; | |
− | + | * le bit R indique, pour les arbres de distribution partagée, que l'adresse du point de rendez-vous est contenue dans l'identifiant du groupe [RFC 3956] ; | |
− | + | * le bit de poids fort du champ <tt>drapeaux</tt> n'est pas encore attribué. | |
− | + | ||
− | + | ||
− | trafic multicast. | + | |
− | + | ||
− | [[Image: | + | |
− | + | ||
− | + | ||
− | + | ||
− | d' | + | |
− | + | ||
− | * | + | |
− | * | + | |
− | * | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
+ | Le champ <tt>étendue</tt> (''scope'') limite la portée de la diffusion de l'adresse multicast IPv6. Avec ce champ, le confinement des datagrammes dans une zone déterminée est maîtrisé. Cette méthode est plus rigide mais plus précise que la première proposition du multicast d'IPv4, où la portée était limitée uniquement par le champ <tt>durée de vie</tt> (''Time To Live'' (TTL)) du paquet. Les portées suivantes sont définies [RFC 7346] : | ||
+ | |||
+ | * 0 - reserved | ||
* 1 - node-local | * 1 - node-local | ||
* 2 - link-local | * 2 - link-local | ||
− | * 3 - | + | * 3 - realm-local |
* 4 - admin-local | * 4 - admin-local | ||
* 5 - site-local | * 5 - site-local | ||
* 8 - organisation-local | * 8 - organisation-local | ||
− | * | + | * e - global |
− | * | + | * f - reserved |
− | + | ||
== Adresses multicast IPv6 permanentes == | == Adresses multicast IPv6 permanentes == | ||
− | + | Une adresse multicast IPv6 avec le bit T du champ <tt>drapeaux</tt> à 0 correspond à une adresse multicast permanente, allouée par l'IANA. La figure 2 illustre cette adresse multicast permanente. | |
− | Une adresse multicast IPv6 avec le bit T du champ drapeaux à 0 | + | |
− | correspond à une adresse multicast permanente, allouée par l'IANA. | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | |||
− | |||
− | |||
<center> | <center> | ||
− | + | [[Image:activite-15-adresses-multicast-img02-830x190-v20151012-01.jpg|600px|center|thumb|Figure 2 : Format de l'adresse multicast permanente.]] | |
− | + | </center> | |
− | | | + | |
− | + | ||
− | + | ||
+ | Lorsque le multicast IPv6 sera déployé à grande échelle, certains organismes pourraient avoir des émissions permanentes. Des chaînes de télévision ou stations de radio pourront par exemple se voir attribuer des adresses permanentes par l'IANA dans le préfixe <tt>ff00::/12</tt>. | ||
− | + | Le RFC 2375 définit déjà certaines adresses IPv6 multicast. Deux types d'adresses multicast permanentes sont à distinguer : | |
− | + | ||
− | + | ||
− | + | ||
− | + | * des adresses correspondant à des services de niveau réseau (comme NTP, DHCPv6, cisco-rp-announce, SAP,...) ; | |
− | + | * des adresses correspondant davantage à des services applicatifs commerciaux permanents comme la distribution des chaînes de télévision. | |
− | + | ||
− | + | ||
− | + | Le RFC 3307 définit les procédures pour l'allocation des adresses multicast permanentes. Une adresse multicast permanente a un sens quelque soit son étendue (''scope''). Son identifiant de groupe est réservé pour toutes les portées. Ainsi, l'identifiant 0x101 est réservé pour les serveurs NTP (''Network Time Protocol''). | |
− | + | ||
− | + | ||
− | + | <center> | |
+ | {| | ||
+ | ! Adresse de multicast || Population concernée | ||
+ | |- style="background:silver" | ||
+ | |<tt>ff01::101</tt> ||Tous les serveurs NTP de la même interface (c.à.d. le même nœud) que l'émetteur ; | ||
|- | |- | ||
− | | | + | |<tt>ff02::101</tt> || Tous les serveurs NTP du même lien que l'émetteur ; |
− | <tt>ff02::101</tt> | + | |- style="background:silver" |
− | + | |<tt>ff05::101</tt> || Tous les serveurs NTP du même site que l'émetteur ; | |
− | + | ||
− | | | + | |
− | Tous les serveurs NTP du | + | |
− | + | ||
− | + | ||
− | + | ||
|- | |- | ||
− | | | + | |<tt>ff0E::101</tt> || Tous les serveurs NTP de l'Internet. |
− | <tt> | + | |} |
+ | </center> | ||
+ | Cependant, par précaution, certains identifiants multicast prédéfinis ne sont valables que sur un nombre limité de portées. Exemple : les identifiants multicast relatifs au groupe des nœuds ou des routeurs sont limités aux portées lien-local ou site-local. D'autres, en général les services bien connus tels que NTP cité ci-dessus, sont valides pour toutes les portées. L'IANA tient un registre<ref> IANA [http://www.iana.org/assignments/ipv6-multicast-addresses IPv6 Multicast Address Space Registry]</ref> de l'ensemble des adresses multicast réservées. | ||
− | |||
− | |||
− | |||
+ | * L'identifiant de groupe « tout à zéro » est réservé quelque soit la portée et ne doit jamais être utilisé : <tt>ff0x:0:0:0:0:0:0:0</tt> avec x variant de '0' à 'f'. | ||
+ | * Le groupe d'identifiants multicast à 1 concerne tous les nœuds. Il est limité aux étendues (''scope'') interface-local et link-local. On ne peut donc pas diffuser sur l'ensemble des nœuds de l'Internet (sage précaution car sinon, il aurait très facilement permis des attaques de type "déni de service" par bombardement massif en diffusion). | ||
+ | <center> | ||
+ | {| border="0" class="wikitable alternance centre" width="75%" | ||
+ | ! Adresse de mutlicast || Population concernée | ||
+ | |- style="background:silver" | ||
+ | |<tt>ff01::1</tt> || Toutes les interfaces du nœud ; | ||
|- | |- | ||
− | | | + | | <tt>ff02::1</tt> || Tous les nœuds sur le même lien que l'interface émettrice (correspond au broadcast 255.255.255.225 d'IPv4). |
− | <tt> | + | |} |
− | + | </center> | |
− | + | * Le groupe d'identifiants multicast à 2 concerne l'ensemble des routeurs. Il est limité aux étendues (''scope'') interface-local, link-local et site-local. On ne peut donc pas diffuser sur l'ensemble des routeurs de l'Internet (sage précaution "bis", pour limiter les attaques en "déni de service"). | |
− | + | ||
− | + | ||
− | + | <center> | |
− | | | + | {| border="0" class="wikitable alternance centre" width="75%" |
+ | ! Adresse de multicast || Population concernée | ||
+ | |- style="background:silver" | ||
+ | |<tt>ff01::2</tt> || Tous les routeurs du nœud ; | ||
+ | |- | ||
+ | |<tt>ff02::2</tt> || Tous les routeurs du lien ; | ||
+ | |- style="background:silver" | ||
+ | |<tt>ff05::2</tt> || Tous les routeurs du site. | ||
+ | |} | ||
</center> | </center> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | == Adresses | + | == Adresses multicast IPv6 temporaires == |
− | + | Les adresses multicast temporaires sont des adresses multicast IPv6 dont le | |
− | Les adresses temporaires sont des adresses multicast IPv6 dont le | + | bit T est positionné à 1. À l'inverse des adresses multicast permanentes, une adresse multicast temporaire n'a de signification que dans la portée donnée. |
− | bit T est positionné à 1. | + | Exemple : l'adresse multicast site-local <tt>ff15::999</tt> sur un site n'a aucune relation avec un groupe utilisant la même adresse multicast sur un autre site. |
− | + | Il existe plusieurs types d'adresses temporaires : générales, dérivées d'un préfixe unicast IPv6, et par point de rendez-vous (Embedded-RP). | |
− | + | ||
− | multicast temporaire n'a de signification que dans la portée donnée. | + | |
− | Exemple l'adresse multicast site-local ff15:: | + | |
− | aucune relation avec un groupe utilisant la même adresse multicast | + | |
− | sur un autre site. | + | |
− | + | ||
− | Il existe plusieurs types d'adresses temporaires : générales, | + | |
− | + | ||
− | ( | + | |
=== Adresses multicast temporaires générales === | === Adresses multicast temporaires générales === | ||
− | + | Ce sont des adresses avec tous les bits du champ <tt>drapeaux</tt> à 0 sauf le bit T positionné à 1. La figure 3 illustre ce format. Il n'y a pas de recommandation pour l'utilisation de ces adresses. Des scénarios d'utilisation peuvent être, par exemple, les visioconférences ponctuelles. | |
− | Ce sont des adresses avec tous les bits du champ | + | |
− | bit T positionné à 1. Il n'y a pas de | + | |
− | l'utilisation de ces adresses. Des scénarios d'utilisation peuvent | + | |
− | être, par exemple, les visioconférences ponctuelles | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | <center> | |
− | + | [[Image:activite-15-adresses-multicast-img03-830x190-v20151012-01.jpg|600px|center|thumb|Figure 3 : Format général de l'adresse multicast temporaire.]] | |
− | + | </center> | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | [[Image: | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | === | + | === Adresses multicast temporaires dérivées d'un préfixe unicast IPv6 === |
− | + | Le RFC 3306 définit une méthode pour dériver une adresse multicast IPv6 à partir d'un préfixe unicast. La figure 4 représente ce format. | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | <center> | |
− | + | [[Image:activite-15-adresses-multicast-img04-860x190-v20151018-01.jpg|600px|center|thumb|Figure 4 : Format de l'adresse multicast temporaire dérivée d'un préfixe unicast IPv6.]] | |
− | + | </center> | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | < | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | dérivée | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
+ | * <tt>res</tt> (''reserved'') : tous les bits de ce champ doivent être positionnés à <tt>0</tt>. | ||
+ | * <tt>Plen</tt> (''prefix length'') : ce champ contient la longueur du préfixe unicast utilisé pour en dériver une adresse multicast. | ||
+ | * <tt>prefix</tt> : ce champ contient la valeur du préfixe du réseau utilisé pour en dériver une adresse multicast. | ||
+ | * <tt>group-ID</tt> : ce champ de 32 bits contient l'identifiant de groupe. | ||
− | + | Par exemple, une adresse multicast peut être dérivée du préfixe de RENATER (<tt>2001:660::/32</tt>). Le champ <tt>prefix</tt> prend la valeur <tt>2001:0660</tt>, et le champ <tt>Plen</tt>, la valeur <tt>0x20</tt> (32 en décimal). Les adresses multicast IPv6 à choisir seront de type <tt>ff3x:20:2001:660::aabb:ccdd</tt> ; <tt>aabb:ccdd</tt> étant le group-ID choisi dans l'exemple, et ''x'' une des valeurs valides de la portée (''scope''). | |
− | ''' | + | Cette méthode permet la création potentielle de 2^32 adresses multicast par préfixe. |
− | + | === Adresses multicast ''Embedded-RP'' === | |
− | + | Le RFC 3956 définit une méthode pour inclure l'adresse du RP (''Rendez-vous Point'') servant à la construction de l'arbre multicast dans l'adresse multicast IPv6. La figure 5 montre la structure d'une adresse multicast ''embedded RP''. | |
− | + | ||
− | + | ||
− | + | <center> | |
− | | | + | [[Image:activite-15-adresses-multicast-img05-830x190-v20151012-01.jpg|600px|center|thumb|Figure 5 : Format de l'adresse multicast temporaire ''embedded-RP''.]] |
− | + | </center> | |
+ | Ainsi, pour un point de rendez-vous qui possède l'adresse <tt>2001:660:3307:125::3</tt>, une adresse multicast correspondante peut être dérivée de la façon suivante : | ||
− | + | * <tt>res</tt> (Reservé) : les 4 bits de ce champ sont positionnés à 0. | |
− | + | * <tt>RPad</tt> : ce champ contient les 4 derniers bits de l'adresse du RP. Dans cet exemple, RPad prend la valeur 3. | |
− | <tt> | + | * <tt>Plen</tt> (Longueur du préfixe) : ce champ contient la longueur du préfixe réseau du RP à prendre en compte. Dans cet exemple, la valeur est de <tt>0x40</tt> (soit 64 en décimal). |
− | + | * <tt>prefix</tt> (Préfixe) : ce champ contient le préfixe réseau du RP. Ici, cette valeur est <tt>2001:660:3007:125</tt> | |
+ | * <tt>group-ID</tt> : ce champ de 32 bits contient l'identifiant de groupe, détaillé au chapitre "Identifiant de groupe". | ||
− | + | Une adresse multicast dérivée de ce point de rendez-vous sera donc de la forme <tt>ff7x:340:2001:660:3007:125:aabb:ccdd</tt> ; <tt>aabb:ccdd</tt> étant le | |
− | + | group-ID choisi dans cet exemple, et ''x'' une des valeurs valides de la | |
+ | portée (''scope''). | ||
− | + | === Les adresses multicast SSM === | |
− | + | Les adresses SSM (''Source Specific Multicast'') sont décrites également dans le RFC 3306. Si le préfixe <tt>ff3x::/32</tt> a été réservé pour les adresses multicast SSM, seules les adresses dérivées du préfixe <tt>ff3x::/96</tt> doivent être utilisées dans un premier temps. Ce sont des adresses multicast basées sur le préfixe unicast où les champs <tt>Plen</tt> et <tt>prefix</tt> sont positionnés à 0. La figure 6 représente ce format. | |
− | + | ||
− | + | ||
− | + | <center> | |
− | + | [[Image:activite-15-adresses-multicast-img06-830x190-v20151012-01.jpg|600px|center|thumb|Figure 6 : Format de l'adresse multicast SSM.]] | |
− | + | </center> | |
− | + | ||
+ | == Les adresses "multicast sollicité" == | ||
+ | L'adresse de "multicast sollicité" (''Solicited-node address'') est un type d'adresse multicast prédéfinie. IPv6 interdit l'utilisation de la diffusion généralisée (''broadcast'') lorsque le multicast est disponible. Ainsi, les protocoles de découverte de voisins (''Neighbor Discovery''), chargés de faire la correspondance entre les adresses IPv6 et les adresses MAC (à l'instar d'ARP en IPv4) doivent utiliser une adresse multicast. Pour être plus efficace, au lieu d'utiliser l'adresse <tt>ff02::1</tt> (tous les équipements sur le lien), l'utilisation des adresses de "multicast sollicité" permet de réduire considérablement le nombre d'équipements qui recevront la requête de découverte de voisins. | ||
− | + | L'adresse de "multicast sollicité" se construit automatiquement à partir d'une adresse IPv6 unicast (ou anycast) en concaténant le préfixe réservé <tt>ff02::1:ff00:0 /104</tt> aux 24 bits de poids faible de l'adresse unicast ou anycast. La figure 7 illustre le format ''Solicited-node address''. | |
− | + | ||
− | <tt> | + | |
− | + | ||
− | + | Un équipement, à partir de chacune de ses adresses IPv6 (unicat et anycast), construit une adresse de "multicast sollicité" et écoute les paquets émis vers cette adresse. Les autres stations sur le même lien (ou domaine de diffusion de niveau 2 : VLAN), connaissant son adresse IPv6 mais ignorant son adresse MAC, peuvent utiliser l'adresse de "multicast sollicité" pour le joindre. Ces adresses sont utilisées par les protocoles de détection d'adresse dupliquée et de découverte de voisins, qui seront abordés ultérieurement. | |
− | + | ||
− | + | ||
− | + | Plusieurs équipements sur le lien peuvent avoir la même adresse de "multicast sollicité". Mais, dans la pratique, la probabilité de trouver sur le même lien physique deux équipements avec les trois derniers octets de l'identifiant d'interface identiques est très faible. Cela permet donc de limiter le nombre d'équipements qui traiteront la requête de sollicitation de voisins. Ces adresses permettent de ne plus utiliser la diffusion généralisée (adresse MAC ff:ff:ff:ff:ff:ff) qu'utilise le protocole ARP en IPv4. Pour une station donnée, une adresse de "multicast sollicité" peut regrouper plusieurs adresses IPv6, par exemple l'adresse lien-local et l'adresse "unicast globale" si cette dernière est construite à partir de l'identifiant d'interface dérivé de l'adresse MAC de la carte Ethernet. | |
− | + | ||
− | + | ||
− | + | <center> | |
− | + | [[Image:activite-15-adresses-multicast-img07-860x190-v20170327-01.jpg|600px|center|thumb|Figure 7 : Format de l'adresse "multicast sollicité".]] | |
− | + | </center> | |
+ | == Correspondance avec les adresses de multicast de niveau 2 == | ||
+ | Le RFC 3307 précise également la correspondance entre les adresses IPv6 multicast et les adresses de niveau 2. Sur un réseau de niveau 2 de type Ethernet, l'adresse MAC de multicast est déduite de l'adresse multicast IPv6 en concaténant les 32 derniers bits (4 octets) de l'adresse multicast IPv6 au préfixe MAC prédéfini 33-33. La figure 8 illustre le format multicast de niveau 2. | ||
− | + | Par exemple, à l'adresse multicast IPv6 <tt>ff0e:30:2001:660:3001:4002:ae45:2C56</tt> correspondra l'adresse MAC <tt>33-33-AE-45-2C-56</tt>. La probabilité que deux adresses multicast IPv6 utilisées sur un même lien correspondent à la même adresse MAC existe mais est très faible et les conséquences minimes. Restreindre le champ <tt>group-ID</tt> à 32 bits a toutefois un intérêt car cela apporte une homogénéité entre les différents types d'adresses décrits précédemment. En effet, dans le cas des adresses dérivées d'un préfixe unicast, ce champ a une longueur de 32 bits. | |
− | + | ||
− | <tt> | + | |
− | + | <center> | |
− | | | + | [[Image:activite-15-adresses-multicast-img08-800x373-v20151012-01.jpg|600px|center|thumb|Figure 8 : Correspondance avec l'adresse multicast de niveau liaison.]] |
− | + | </center> | |
− | + | ||
− | + | == Récapitulatif des types d'adresses multicast == | |
− | + | Le tableau suivant récapitule les préfixes associés aux | |
− | + | différents types d'adresses multicast décrit précédemment. | |
− | < | + | |
− | + | <center> | |
+ | {| border="0" class="wikitable alternance centre" width="80%" | ||
+ | |- align="center" | ||
− | + | ! scope="col" width="30%" align="center" | '''Préfixe''' | |
+ | ! scope="col" width="70%" align="center" | '''Usage''' | ||
+ | |- style="background:silver" | ||
+ | |<tt>ff0'''x'''::/16</tt> || Adresses IPv6 multicast permanentes ; | ||
+ | |- | ||
+ | |<tt>ff1'''x'''::/16</tt> || Adresses IPv6 multicast temporaires générales ; | ||
+ | |- style="background:silver" | ||
+ | |<tt>ff3'''x'''::/16</tt> || Adresses multicast dérivées d'un préfixe unicast (temporaires) ; | ||
+ | |- | ||
+ | |<tt>ff3'''x'''::/96</tt> || Adresses SSM (temporaires) ; | ||
+ | |- style="background:silver" | ||
+ | |<tt>ff7'''x'''::/16</tt> || Adresses IPv6 multicast "Embedded-RP" (temporaires) ; | ||
+ | |- | ||
+ | |<tt>ff02::1:ff00:0/104</tt> ||Adresses de "multicast sollicité" (préfixe prédéfini, portée limitée au lien). | ||
+ | |- | ||
+ | |(<tt>'''x'''</tt> : une des valeurs valides de la portée (''scope'')) | ||
|} | |} | ||
− | < | + | </center> |
− | + | ||
− | + | == Conclusion == | |
− | + | Le fonctionnement du multicast en IPv6 reprend les principes énoncés pour IPv4. Nous venons de voir, dans cette activité, comment sont formatées les adresses IPv6 multicast. Nous vous invitons à approfondir l'exploration des fonctions multicast en vous plongeant dans les références bibliographiques citées ci-après. | |
− | < | + | |
+ | == Références bibliographiques == | ||
+ | <references /> | ||
+ | == Pour aller plus loin== | ||
+ | |||
+ | RFC et leur analyse par S. Bortzmeyer : | ||
+ | |||
+ | * RFC 2375 IPv6 Multicast Address Assignments | ||
+ | * RFC 3306 Unicast-Prefix-based IPv6 Multicast Addresses | ||
+ | * RFC 3307 Allocation Guidelines for IPv6 Multicast Addresses | ||
+ | * RFC 3569 An Overview of Source-Specific Multicast (SSM) | ||
+ | * RFC 3956 Embedding the Rendezvous Point (RP) Address in an IPv6 Multicast Address | ||
+ | * RFC 4291 IP Version 6 Addressing Architecture [http://www.bortzmeyer.org/4291.html Analyse] | ||
+ | * RFC 4489 A Method for Generating Link-Scoped IPv6 Multicast Addresses | ||
+ | * RFC 7371 Updates to the IPv6 Multicast Addressing Architecture | ||
+ | * RFC 7346 IPv6 Multicast Address Scopes |
Latest revision as of 15:57, 8 June 2021
Activité 15 : Les adresses multicast
Introduction
Les adresses multicast, également appelées adresses de groupe, sont un élément important dans la proposition Multicast IP. Le fonctionnement du multicast en IPv6 reprend les principes énoncés pour IPv4. Ces principes ont été posés dans les années 1990[1]. Multicast IP est présenté en détail par cet article de Cisco [2]. Le lecteur est invité à consulter cet article pour y découvrir le fonctionnement de ce mode de communication. Nous allons voir dans cette activité comment sont formatées les adresses IPv6 multicast[3] uniquement. Cette activité n'aborde que partiellement le fonctionnement du multicast.
Communication multicast
Une communication multicast est une communication dans laquelle un paquet émis peut être reçu par plusieurs récepteurs, quelque soit leur localisation. Dans le modèle multicast IPv6, les récepteurs forment un groupe et celui-ci est identifié par une adresse dite de multicast. Comparé aux communications point à point (unicast), le multicast évite la duplication des paquets de données au niveau de la source, et minimise l'utilisation de la bande passante au niveau du réseau. C'est une manière efficace de communiquer avec un ensemble de machines. De plus, il offre un service insensible à l'augmentation du nombre et de la localisation des membres d'un groupe. Le multicast peut être utilisé pour la distribution de logiciels, la téléconférence, les applications d'enseignement à distance, la radio ou la télévision sur Internet, les simulations interactives distribuées, les jeux multimédia interactifs, les applications militaires, etc.
Le service de communication multicast se rend selon 2 modèles :
- le modèle ASM (Any-Source Multicast) : avec ce modèle, une source quelconque peut émettre des données à un groupe. Ce modèle s'applique par exemple dans le cas de visioconférences avec de nombreux participants qui ne sont pas connus à l'avance ;
- le modèle SSM (Source-Specific Multicast) [RFC 3569] : avec ce modèle, les sources sont connues à l'avance et les récepteurs peuvent restreindre les réceptions d'un groupe pour une source donnée. Ce modèle s'applique par exemple à la diffusion de la télévision ou radio sur Internet, où il n'y a qu'une seule source connue de tous.
Les étapes suivantes interviennent dans l'établissement d'une session multicast IPv6 :
- choix de l'adresse multicast pour la session ;
- description et annonce de la session multicast à tous les participants ;
- gestion des membres du groupe sur le lien-local : elle est réalisée par le protocole MLD (Multicast Listener Discovery) ;
- construction de l'arbre multicast : elle est assurée par le protocole de routage multicast PIM (Protocol Independant Multicast).
Le fonctionnement détaillé du multicast dépasse le cadre de cette présentation. Cette activité dans cette séquence ne présente que le format des adresses IPv6 multicast et les mécanismes permettant l'allocation des adresses multicast.
Formats des adresses multicast IPv6
Pour initier une session multicast, le groupe de récepteurs intéressés, appelé aussi groupe multicast, doit être identifié par une adresse IP multicast. L'allocation des adresses multicast doit se faire en garantissant l'unicité de l'adresse multicast à un groupe. Ainsi, il y a des adresses qui sont constituées par une autorité centrale. Dans ce cas, des adresses permanentes sont attribuées à des groupes bien connus. Enfin, pour des applications particulières, des adresses multicast peuvent être constituées dynamiquement et de manière temporaire. Nous allons décrire dans ce paragraphe le format des adresses multicast dans ces deux cas de figure.
Format général
Les adresses multicast IPv6 sont dérivées du préfixe ff00::/8. L'identification du groupe est faite sur 112 bits ; ce qui donne un potentiel d'environ 5 x 10^33 groupes différents. Une portée spécifique est associée a une adresse multicast afin de limiter la propagation du trafic multicast. Le format général est présenté par la figure 1 [RFC 4291].
Le champ drapeaux (flags) spécifie le type d'adresses multicast IPv6 qui seront décrites dans la suite du document. Le champ drapeaux, d'une longueur de 4 bits, suit les 8 bits d'identification. Ce champ comporte les drapeaux suivants :
- le bit T (Transient) indique le mode d'obtention de l'adresse multicast. Quand la valeur est à 0, elle signifie que l'adresse multicast est bien connue et est gérée par une autorité, en l'occurence l'IANA. La valeur 1 indique une adresse temporaire ou dynamiquement allouée ;
- le bit P indique une méthode de création reposant sur un préfixe unicast [RFC 3306] ;
- le bit R indique, pour les arbres de distribution partagée, que l'adresse du point de rendez-vous est contenue dans l'identifiant du groupe [RFC 3956] ;
- le bit de poids fort du champ drapeaux n'est pas encore attribué.
Le champ étendue (scope) limite la portée de la diffusion de l'adresse multicast IPv6. Avec ce champ, le confinement des datagrammes dans une zone déterminée est maîtrisé. Cette méthode est plus rigide mais plus précise que la première proposition du multicast d'IPv4, où la portée était limitée uniquement par le champ durée de vie (Time To Live (TTL)) du paquet. Les portées suivantes sont définies [RFC 7346] :
- 0 - reserved
- 1 - node-local
- 2 - link-local
- 3 - realm-local
- 4 - admin-local
- 5 - site-local
- 8 - organisation-local
- e - global
- f - reserved
Adresses multicast IPv6 permanentes
Une adresse multicast IPv6 avec le bit T du champ drapeaux à 0 correspond à une adresse multicast permanente, allouée par l'IANA. La figure 2 illustre cette adresse multicast permanente.
Lorsque le multicast IPv6 sera déployé à grande échelle, certains organismes pourraient avoir des émissions permanentes. Des chaînes de télévision ou stations de radio pourront par exemple se voir attribuer des adresses permanentes par l'IANA dans le préfixe ff00::/12.
Le RFC 2375 définit déjà certaines adresses IPv6 multicast. Deux types d'adresses multicast permanentes sont à distinguer :
- des adresses correspondant à des services de niveau réseau (comme NTP, DHCPv6, cisco-rp-announce, SAP,...) ;
- des adresses correspondant davantage à des services applicatifs commerciaux permanents comme la distribution des chaînes de télévision.
Le RFC 3307 définit les procédures pour l'allocation des adresses multicast permanentes. Une adresse multicast permanente a un sens quelque soit son étendue (scope). Son identifiant de groupe est réservé pour toutes les portées. Ainsi, l'identifiant 0x101 est réservé pour les serveurs NTP (Network Time Protocol).
Adresse de multicast | Population concernée |
---|---|
ff01::101 | Tous les serveurs NTP de la même interface (c.à.d. le même nœud) que l'émetteur ; |
ff02::101 | Tous les serveurs NTP du même lien que l'émetteur ; |
ff05::101 | Tous les serveurs NTP du même site que l'émetteur ; |
ff0E::101 | Tous les serveurs NTP de l'Internet. |
Cependant, par précaution, certains identifiants multicast prédéfinis ne sont valables que sur un nombre limité de portées. Exemple : les identifiants multicast relatifs au groupe des nœuds ou des routeurs sont limités aux portées lien-local ou site-local. D'autres, en général les services bien connus tels que NTP cité ci-dessus, sont valides pour toutes les portées. L'IANA tient un registre[4] de l'ensemble des adresses multicast réservées.
- L'identifiant de groupe « tout à zéro » est réservé quelque soit la portée et ne doit jamais être utilisé : ff0x:0:0:0:0:0:0:0 avec x variant de '0' à 'f'.
- Le groupe d'identifiants multicast à 1 concerne tous les nœuds. Il est limité aux étendues (scope) interface-local et link-local. On ne peut donc pas diffuser sur l'ensemble des nœuds de l'Internet (sage précaution car sinon, il aurait très facilement permis des attaques de type "déni de service" par bombardement massif en diffusion).
Adresse de mutlicast | Population concernée |
---|---|
ff01::1 | Toutes les interfaces du nœud ; |
ff02::1 | Tous les nœuds sur le même lien que l'interface émettrice (correspond au broadcast 255.255.255.225 d'IPv4). |
- Le groupe d'identifiants multicast à 2 concerne l'ensemble des routeurs. Il est limité aux étendues (scope) interface-local, link-local et site-local. On ne peut donc pas diffuser sur l'ensemble des routeurs de l'Internet (sage précaution "bis", pour limiter les attaques en "déni de service").
Adresse de multicast | Population concernée |
---|---|
ff01::2 | Tous les routeurs du nœud ; |
ff02::2 | Tous les routeurs du lien ; |
ff05::2 | Tous les routeurs du site. |
Adresses multicast IPv6 temporaires
Les adresses multicast temporaires sont des adresses multicast IPv6 dont le bit T est positionné à 1. À l'inverse des adresses multicast permanentes, une adresse multicast temporaire n'a de signification que dans la portée donnée. Exemple : l'adresse multicast site-local ff15::999 sur un site n'a aucune relation avec un groupe utilisant la même adresse multicast sur un autre site. Il existe plusieurs types d'adresses temporaires : générales, dérivées d'un préfixe unicast IPv6, et par point de rendez-vous (Embedded-RP).
Adresses multicast temporaires générales
Ce sont des adresses avec tous les bits du champ drapeaux à 0 sauf le bit T positionné à 1. La figure 3 illustre ce format. Il n'y a pas de recommandation pour l'utilisation de ces adresses. Des scénarios d'utilisation peuvent être, par exemple, les visioconférences ponctuelles.
Adresses multicast temporaires dérivées d'un préfixe unicast IPv6
Le RFC 3306 définit une méthode pour dériver une adresse multicast IPv6 à partir d'un préfixe unicast. La figure 4 représente ce format.
- res (reserved) : tous les bits de ce champ doivent être positionnés à 0.
- Plen (prefix length) : ce champ contient la longueur du préfixe unicast utilisé pour en dériver une adresse multicast.
- prefix : ce champ contient la valeur du préfixe du réseau utilisé pour en dériver une adresse multicast.
- group-ID : ce champ de 32 bits contient l'identifiant de groupe.
Par exemple, une adresse multicast peut être dérivée du préfixe de RENATER (2001:660::/32). Le champ prefix prend la valeur 2001:0660, et le champ Plen, la valeur 0x20 (32 en décimal). Les adresses multicast IPv6 à choisir seront de type ff3x:20:2001:660::aabb:ccdd ; aabb:ccdd étant le group-ID choisi dans l'exemple, et x une des valeurs valides de la portée (scope). Cette méthode permet la création potentielle de 2^32 adresses multicast par préfixe.
Adresses multicast Embedded-RP
Le RFC 3956 définit une méthode pour inclure l'adresse du RP (Rendez-vous Point) servant à la construction de l'arbre multicast dans l'adresse multicast IPv6. La figure 5 montre la structure d'une adresse multicast embedded RP.
Ainsi, pour un point de rendez-vous qui possède l'adresse 2001:660:3307:125::3, une adresse multicast correspondante peut être dérivée de la façon suivante :
- res (Reservé) : les 4 bits de ce champ sont positionnés à 0.
- RPad : ce champ contient les 4 derniers bits de l'adresse du RP. Dans cet exemple, RPad prend la valeur 3.
- Plen (Longueur du préfixe) : ce champ contient la longueur du préfixe réseau du RP à prendre en compte. Dans cet exemple, la valeur est de 0x40 (soit 64 en décimal).
- prefix (Préfixe) : ce champ contient le préfixe réseau du RP. Ici, cette valeur est 2001:660:3007:125
- group-ID : ce champ de 32 bits contient l'identifiant de groupe, détaillé au chapitre "Identifiant de groupe".
Une adresse multicast dérivée de ce point de rendez-vous sera donc de la forme ff7x:340:2001:660:3007:125:aabb:ccdd ; aabb:ccdd étant le group-ID choisi dans cet exemple, et x une des valeurs valides de la portée (scope).
Les adresses multicast SSM
Les adresses SSM (Source Specific Multicast) sont décrites également dans le RFC 3306. Si le préfixe ff3x::/32 a été réservé pour les adresses multicast SSM, seules les adresses dérivées du préfixe ff3x::/96 doivent être utilisées dans un premier temps. Ce sont des adresses multicast basées sur le préfixe unicast où les champs Plen et prefix sont positionnés à 0. La figure 6 représente ce format.
Les adresses "multicast sollicité"
L'adresse de "multicast sollicité" (Solicited-node address) est un type d'adresse multicast prédéfinie. IPv6 interdit l'utilisation de la diffusion généralisée (broadcast) lorsque le multicast est disponible. Ainsi, les protocoles de découverte de voisins (Neighbor Discovery), chargés de faire la correspondance entre les adresses IPv6 et les adresses MAC (à l'instar d'ARP en IPv4) doivent utiliser une adresse multicast. Pour être plus efficace, au lieu d'utiliser l'adresse ff02::1 (tous les équipements sur le lien), l'utilisation des adresses de "multicast sollicité" permet de réduire considérablement le nombre d'équipements qui recevront la requête de découverte de voisins.
L'adresse de "multicast sollicité" se construit automatiquement à partir d'une adresse IPv6 unicast (ou anycast) en concaténant le préfixe réservé ff02::1:ff00:0 /104 aux 24 bits de poids faible de l'adresse unicast ou anycast. La figure 7 illustre le format Solicited-node address.
Un équipement, à partir de chacune de ses adresses IPv6 (unicat et anycast), construit une adresse de "multicast sollicité" et écoute les paquets émis vers cette adresse. Les autres stations sur le même lien (ou domaine de diffusion de niveau 2 : VLAN), connaissant son adresse IPv6 mais ignorant son adresse MAC, peuvent utiliser l'adresse de "multicast sollicité" pour le joindre. Ces adresses sont utilisées par les protocoles de détection d'adresse dupliquée et de découverte de voisins, qui seront abordés ultérieurement.
Plusieurs équipements sur le lien peuvent avoir la même adresse de "multicast sollicité". Mais, dans la pratique, la probabilité de trouver sur le même lien physique deux équipements avec les trois derniers octets de l'identifiant d'interface identiques est très faible. Cela permet donc de limiter le nombre d'équipements qui traiteront la requête de sollicitation de voisins. Ces adresses permettent de ne plus utiliser la diffusion généralisée (adresse MAC ff:ff:ff:ff:ff:ff) qu'utilise le protocole ARP en IPv4. Pour une station donnée, une adresse de "multicast sollicité" peut regrouper plusieurs adresses IPv6, par exemple l'adresse lien-local et l'adresse "unicast globale" si cette dernière est construite à partir de l'identifiant d'interface dérivé de l'adresse MAC de la carte Ethernet.
Correspondance avec les adresses de multicast de niveau 2
Le RFC 3307 précise également la correspondance entre les adresses IPv6 multicast et les adresses de niveau 2. Sur un réseau de niveau 2 de type Ethernet, l'adresse MAC de multicast est déduite de l'adresse multicast IPv6 en concaténant les 32 derniers bits (4 octets) de l'adresse multicast IPv6 au préfixe MAC prédéfini 33-33. La figure 8 illustre le format multicast de niveau 2.
Par exemple, à l'adresse multicast IPv6 ff0e:30:2001:660:3001:4002:ae45:2C56 correspondra l'adresse MAC 33-33-AE-45-2C-56. La probabilité que deux adresses multicast IPv6 utilisées sur un même lien correspondent à la même adresse MAC existe mais est très faible et les conséquences minimes. Restreindre le champ group-ID à 32 bits a toutefois un intérêt car cela apporte une homogénéité entre les différents types d'adresses décrits précédemment. En effet, dans le cas des adresses dérivées d'un préfixe unicast, ce champ a une longueur de 32 bits.
Récapitulatif des types d'adresses multicast
Le tableau suivant récapitule les préfixes associés aux différents types d'adresses multicast décrit précédemment.
Préfixe | Usage |
---|---|
ff0x::/16 | Adresses IPv6 multicast permanentes ; |
ff1x::/16 | Adresses IPv6 multicast temporaires générales ; |
ff3x::/16 | Adresses multicast dérivées d'un préfixe unicast (temporaires) ; |
ff3x::/96 | Adresses SSM (temporaires) ; |
ff7x::/16 | Adresses IPv6 multicast "Embedded-RP" (temporaires) ; |
ff02::1:ff00:0/104 | Adresses de "multicast sollicité" (préfixe prédéfini, portée limitée au lien). |
(x : une des valeurs valides de la portée (scope)) |
Conclusion
Le fonctionnement du multicast en IPv6 reprend les principes énoncés pour IPv4. Nous venons de voir, dans cette activité, comment sont formatées les adresses IPv6 multicast. Nous vous invitons à approfondir l'exploration des fonctions multicast en vous plongeant dans les références bibliographiques citées ci-après.
Références bibliographiques
- ↑ Handley, M., Crowcroft, J., Internet Protocol Journal, Volume 2, No. 4, December 1999. Internet Multicast Today
- ↑ Cisco (2002). White paper. IP Multicast Technology Overview White paper Cisco.
- ↑ Wikipedia. Le multicast IPv6
- ↑ IANA IPv6 Multicast Address Space Registry
Pour aller plus loin
RFC et leur analyse par S. Bortzmeyer :
- RFC 2375 IPv6 Multicast Address Assignments
- RFC 3306 Unicast-Prefix-based IPv6 Multicast Addresses
- RFC 3307 Allocation Guidelines for IPv6 Multicast Addresses
- RFC 3569 An Overview of Source-Specific Multicast (SSM)
- RFC 3956 Embedding the Rendezvous Point (RP) Address in an IPv6 Multicast Address
- RFC 4291 IP Version 6 Addressing Architecture Analyse
- RFC 4489 A Method for Generating Link-Scoped IPv6 Multicast Addresses
- RFC 7371 Updates to the IPv6 Multicast Addressing Architecture
- RFC 7346 IPv6 Multicast Address Scopes