Difference between revisions of "AdressageBis-Fondamentaux"
From Livre IPv6
(→Adresses Multicast) |
(→Structuration du prefixe global (GP)) |
||
(57 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
− | + | {{Suivi| Introduction|Introduction | AdressageBis-MeO|Mises en Oeuvre}} | |
+ | Le format et la représentation des adresses sont les modifications les plus visibles pour l'utilisateur expérimenté et l'ingénieur réseau dans cette nouvelle version du protocole. En effet la taille de l'adresse reste fixe mais passe de 32 à 128 bits. Même si les principes sont fortement similaires à ceux employés dans IPv4, cet adressage apparaît à première vue beaucoup plus complexe. Il est intéressant d'en comprendre le principe et les règles d'attribution avant d'aborder les aspects protocolaires. | ||
− | Ce chapitre | + | Ce chapitre présente les différents types d'adresses. Il explique en détail le plan d'adressage agrégé qui a été retenu pour construire l'Internet IPv6. Il décrit également la manière de constituer une adresse IPv6. |
= Aspects fondamentaux de l'adressage IPv6= | = Aspects fondamentaux de l'adressage IPv6= | ||
− | ==Représentation des adresses == | + | ==<div id="representation">Représentation des adresses == |
La représentation textuelle d'une adresse IPv6 se fait en découpant le mot de 128 bits de l'adresse en 8 mots de 16 bits séparés par le caractère «:», chacun d'eux étant représenté en hexadécimal. Par exemple : | La représentation textuelle d'une adresse IPv6 se fait en découpant le mot de 128 bits de l'adresse en 8 mots de 16 bits séparés par le caractère «:», chacun d'eux étant représenté en hexadécimal. Par exemple : | ||
Line 28: | Line 29: | ||
<tt>::1</tt> | <tt>::1</tt> | ||
− | La représentation des préfixes IPv6 est similaire à la notation CIDR RFC 1519 utilisée pour les préfixes IPv4. Un préfixe IPv6 est donc représenté par la notation : | + | La représentation des préfixes réseau IPv6 est similaire à la notation CIDR RFC 1519 utilisée pour les préfixes IPv4. Un préfixe IPv6 est donc représenté par la notation : |
adresse-ipv6/longueur-du-préfixe-en-bits | adresse-ipv6/longueur-du-préfixe-en-bits | ||
Line 40: | Line 41: | ||
Le seul piège de cette notation vient des longueurs de préfixes qui ne sont pas en frontière de «:». Ainsi le préfixe <tt>3EDC:BA98:7654:3::/56</tt> équivaut en réalité à <tt>3EDC:BA98:7654:0000::/56</tt> car il s'écrit <tt>3EDC:BA98:7654:0003::/56</tt>. | Le seul piège de cette notation vient des longueurs de préfixes qui ne sont pas en frontière de «:». Ainsi le préfixe <tt>3EDC:BA98:7654:3::/56</tt> équivaut en réalité à <tt>3EDC:BA98:7654:0000::/56</tt> car il s'écrit <tt>3EDC:BA98:7654:0003::/56</tt>. | ||
− | |||
− | <tt>2001:DB8:7654:3210:945:1321:ABA8:F4E2/64</tt> | + | On peut combiner le préfixe réseau avec l'identifiant de l'interface en une seule notation. Ainsi cette adresse IPV6 |
+ | <tt>2001:DB8:7654:3210:945:1321:ABA8:F4E2/64</tt> | ||
+ | indique que le préfixe réseau est constitué par les 64 premiers bits. | ||
+ | |||
+ | {{HorsTexte|Apprendre à gaspiller|Du fait de sa longueur, une règle de bonne gestion consiste à relâcher les contraintes sur les longueurs de préfixe. Ainsi en utilisant quand cela est possible des multiples de 4 permet d'avoir un préfixe qui tient sur un caractère affiché. Dans l'exemple suivant 47 n'étant pas un multiple de 4, <tt>2001:DB0:1234::/47</tt> représente les préfixes commençant par <tt>2001:DB0:1234</tt> et <tt>2001:DB0:1235</tt>}} | ||
+ | |||
+ | Ces représentations peuvent apparaître beaucoup plus complexes qu'avec IPv4, mais en vérité des adresses logiques ou concises peuvent être constituées au moyen de règles strictes. Ces règles favorisent grandement la manipulation et la mémorisation des adresses comme nous verrons par la suite (cf Adressage global) | ||
− | |||
− | Dans certains cas, une adresse (voire plusieurs adresses) IPv4 peut être contenue dans une adresse IPv6. Pour les faire | + | Dans certains cas, une adresse (voire plusieurs adresses) IPv4 peut être contenue dans une adresse IPv6. Pour les faire ressortir, la notation classique d'IPv4, c'est à dire 4 octets en représentation décimale séparés par des points, peut être utilisée au sein d'une adresse IPv6. Ainsi : |
<tt>::128.12.13.14</tt> | <tt>::128.12.13.14</tt> | ||
− | représente une adresse IPv6 composée de 96 bits à 0 | + | représente une adresse IPv6 composée de 96 bits à 0 suivis des 32 bits de l'adresse IPv4 <tt>128.12.13.14</tt> |
Line 67: | Line 72: | ||
suivant les cas. Cette représentation peut être étendue à d'autres domaines comme X-window ou au protocole de signalisation téléphonique SIP. | suivant les cas. Cette représentation peut être étendue à d'autres domaines comme X-window ou au protocole de signalisation téléphonique SIP. | ||
+ | == Type des adresses == | ||
+ | IPv6 reconnaît trois types d'adresses : unicast, multicast et anycast. Le type d'adresse définit la cardinalité de la communication: à combien de destinataire doit être remis le paquet. | ||
− | + | Le premier de ces types désigne de manière unique une interface. Un paquet envoyé à une telle adresse, sera donc remis à l'interface ainsi identifiée. Parmi les adresses unicast, on peut distinguer celles qui auront une portée globale, c'est-à-dire désignant sans ambiguïté une destination sur le réseau Internet et celles qui auront une portée locale (lien ou site). Ces dernières ne pourront pas être routées sur l'Internet c'est à dire qu'un paquet comportant une adresse de destination avec une portée locale sera ignoré et éliminé par un routeur de l'Internet. La portée d'une adresse indique en faite la limite de la propriété d'unicité. | |
− | + | ||
− | + | ||
Une adresse de type multicast désigne un groupe d'interfaces qui en général appartiennent à des noeuds différents pouvant être situés n'importe où dans l'Internet. Lorsqu'un paquet a pour destination une adresse de type multicast, il est acheminé par le réseau à toutes les interfaces membres de ce groupe. | Une adresse de type multicast désigne un groupe d'interfaces qui en général appartiennent à des noeuds différents pouvant être situés n'importe où dans l'Internet. Lorsqu'un paquet a pour destination une adresse de type multicast, il est acheminé par le réseau à toutes les interfaces membres de ce groupe. | ||
− | Il faut noter qu'il n'y a plus d'adresses de type broadcast comme sous IPv4 ; elles sont remplacées par des adresses de type multicast | + | Il faut noter qu'il n'y a plus d'adresses de type broadcast comme sous IPv4 ; elles sont remplacées par des adresses de type multicast. En effet, l'adresse de broadcast peut être émulée avec une adresse multicast en constituant un groupe qui comporte tous les noeuds. De plus, l'absence de broadcast évite les problèmes de saturation des réseaux locaux commutés. Ainsi un réseau IPV6 passe mieux en terme de facteur d'échelle sur ce type de réseau. |
Le dernier type, anycast, est une officialisation de propositions faites pour IPv4 RFC 1546. Comme dans le cas du multicast, une adresse de type anycast désigne un groupe d'interfaces, la différence étant que lorsqu'un paquet a pour destination une telle adresse, il est acheminé à un des éléments du groupe et non pas à tous. C'est, par exemple, le plus proche au sens de la métrique des protocoles de routage. Cet adressage est principalement expérimental, voir [[Anycast|Adresses anycast]]. | Le dernier type, anycast, est une officialisation de propositions faites pour IPv4 RFC 1546. Comme dans le cas du multicast, une adresse de type anycast désigne un groupe d'interfaces, la différence étant que lorsqu'un paquet a pour destination une telle adresse, il est acheminé à un des éléments du groupe et non pas à tous. C'est, par exemple, le plus proche au sens de la métrique des protocoles de routage. Cet adressage est principalement expérimental, voir [[Anycast|Adresses anycast]]. | ||
Line 128: | Line 133: | ||
Une interface possèdera généralement plusieurs adresses IPv6. En IPv4 ce comportement est exceptionnel, il est banalisé en IPv6. | Une interface possèdera généralement plusieurs adresses IPv6. En IPv4 ce comportement est exceptionnel, il est banalisé en IPv6. | ||
− | |||
− | |||
− | + | = Adressage global : plan d'adressage agrégé = | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
Ce plan, proposée dans le RFC 3587, précise la structure d'adressage IPv6 définie dans le RFC 3513 en précisant les tailles de chacun des blocs. Il est géré de la même manière que CIDR en IPv4. Une adresse intègre trois niveaux de hiérarchie : | Ce plan, proposée dans le RFC 3587, précise la structure d'adressage IPv6 définie dans le RFC 3513 en précisant les tailles de chacun des blocs. Il est géré de la même manière que CIDR en IPv4. Une adresse intègre trois niveaux de hiérarchie : | ||
Line 194: | Line 163: | ||
</tikz> | </tikz> | ||
− | * une topologie publique (appelée '''Global Prefix''') | + | * une topologie publique (appelée '''Global Prefix''') codée sur 48 bits, allouée par le fournisseur d'accès; |
− | * une topologie de site | + | * une topologie de site codée sur 16 bits (appelée '''Subnet ID'''). Ce champ permet de coder les numéros de sous réseau du site; |
* un [[identifiant d'interface]] sur 64 bits (appelé '''Interface ID''') distinguant les différentes machines sur le lien. | * un [[identifiant d'interface]] sur 64 bits (appelé '''Interface ID''') distinguant les différentes machines sur le lien. | ||
− | + | ==Structuration du prefixe global (GP)== | |
− | {{HorsTexte|Appréhender les tailles|France Télécom a obtenu du RIPE-NCC un <tt>/19</tt>. Si l'on enlève les troix premiers bits <tt>001</tt> désignant le plan d'adressage, il est donc possible d'avoir 2<sup>16</sup> opérateurs. Sachant qu'il y a 192 pays à l'ONU, ils pourraient | + | {{HorsTexte|Appréhender les tailles|France Télécom a obtenu du RIPE-NCC un <tt>/19</tt>. Si l'on enlève les troix premiers bits <tt>001</tt> désignant le plan d'adressage, il est donc possible d'avoir 2<sup>16</sup> opérateurs. Sachant qu'il y a 192 pays à l'ONU, ils pourraient chacun abriter 320 opérateurs de la taille de FT, chacun pouvant attribuer jusqu'à 2<sup>29</sup> <tt>/48</tt>, soit 536 870 912 sites}} |
− | + | ||
− | A part le préfixe <tt>2002::</tt> qui | + | A part le préfixe <tt>2002::</tt> qui est réservé au mécanisme de transition [[6to4]], cet espace est géré hierarchiquement comme pour IPv4. L'IANA délègue aux 5 autorités régionales ([http://www.iana.org/numbers/ RIR]) des préfixes actuellement de longueur 12 (cf. http://www.iana.org/assignments/ipv6-unicast-address-assignments) qui les redistribuent aux ISP de leur région. Suivant leur taille, les opérateurs reçoivent un préfixe plus ou moins long. Le site http://www.sixxs.net/tools/grh/ donne en temps réel les allocations de préfixes par région, opérateur et pays. |
Il est maintenant admis que le préfixe attribué par un opérateur à ses clients peut également être un <tt>/56</tt>. En effet, si l'on garde l'attribution de préfixe de longueur 48 pour les sites terminaux, et que l'on intègre les réseaux domotiques, les opérateurs peuvent justifier d'un besoin important d'adresses que les autorités régionales ne peuvent leur refuser. | Il est maintenant admis que le préfixe attribué par un opérateur à ses clients peut également être un <tt>/56</tt>. En effet, si l'on garde l'attribution de préfixe de longueur 48 pour les sites terminaux, et que l'on intègre les réseaux domotiques, les opérateurs peuvent justifier d'un besoin important d'adresses que les autorités régionales ne peuvent leur refuser. | ||
Line 208: | Line 177: | ||
{{ToDo|Ajouter comment obtenir un préfixe auprès de RIPE-NCC}} | {{ToDo|Ajouter comment obtenir un préfixe auprès de RIPE-NCC}} | ||
− | + | ==Structuration de l'identifiant de sous-réseau (SID)== | |
Il n'existe pas de règles pour allouer les identificateurs de sous-réseau au sein d'un site. Plusieurs techniques (non exclusives) peuvent être utilisées : | Il n'existe pas de règles pour allouer les identificateurs de sous-réseau au sein d'un site. Plusieurs techniques (non exclusives) peuvent être utilisées : | ||
− | * numéroter de manière incrémentale les sous-réseaux: 0001, 0002, ... Cette technique est simple a mettre en œuvre dans des réseaux expérimentaux, mais elle peut conduire à un plan d'adressage à plat difficile à mémoriser. Elle peut être utilisée par exemple pour un sous-réseau dédié aux | + | * numéroter de manière incrémentale les sous-réseaux: 0001, 0002, ... Cette technique est simple a mettre en œuvre dans des réseaux expérimentaux, mais elle peut conduire à un plan d'adressage à plat difficile à mémoriser. Elle peut être utilisée par exemple pour un sous-réseau dédié aux serveurs pour simplifier l'écriture et la mémorisation des adresses. |
− | * utiliser le numéro de VLAN. Elle permet d'éviter de mémoriser plusieurs | + | * utiliser le numéro de VLAN. Elle permet d'éviter de mémoriser plusieurs niveaux de numérotation. |
− | * séparer les types de réseaux et utiliser les chiffres de gauche pour les désigner. Cette technique permet de faciliter les règles de filtrage, tout en utilisant des règles appropriées | + | * séparer les types de réseaux et utiliser les chiffres de gauche pour les désigner. Cette technique permet de faciliter les règles de filtrage, tout en utilisant des règles appropriées à la gestion de ces sous-réseaux pour la partie de droite. À titre d'exemple, le tableau suivant contient le plan de numérotation d'une université localisée sur plusieurs sites prenant en compte les différentes communautés d'utilisateurs : |
{| | {| | ||
Line 236: | Line 205: | ||
Ainsi, le préfixe: | Ainsi, le préfixe: | ||
− | * <tt>2001:DB8:1234::/52</tt> servira pour la création de l'infrastructure, donc en particulier les adresses des interfaces des routeurs seront | + | * <tt>2001:DB8:1234::/52</tt> servira pour la création de l'infrastructure, donc en particulier les adresses des interfaces des routeurs seront prises dans cet espace; |
− | * <tt>2001:DB8:1234:8000::/52</tt> servira pour le réseau | + | * <tt>2001:DB8:1234:8000::/52</tt> servira pour le réseau Wi-Fi des invités. La manière dont sont gérés les 12 bits restants du SID ne sont pas spécifiés; |
− | * <tt>2001:DB8:1234:E000::/52</tt> servira pour le réseau des étudiants. L'entité représente la localisation géographique du campus. Dans chacun de ces campus, il sera possible d'avoir jusqu'à 16 | + | * <tt>2001:DB8:1234:E000::/52</tt> servira pour le réseau des étudiants. L'entité représente la localisation géographique du campus. Dans chacun de ces campus, il sera possible d'avoir jusqu'à 16 sous-réseaux différents pour cette communauté. |
− | + | ||
− | + | ||
=== Adressage local : adresses lien-local === | === Adressage local : adresses lien-local === | ||
− | + | ||
− | Les adresses de type lien-local (''link local use address'') sont des adresses dont la validité est restreinte à un lien, c'est-à-dire l'ensemble de interfaces directement connectées sans routeur intermédiaire | + | Les adresses de type lien-local (''link local use address'') sont des adresses dont la validité est restreinte à un lien, c'est-à-dire l'ensemble de interfaces directement connectées sans routeur intermédiaire comme par exemple des machines branchées sur un même réseau Ethernet, des machines reliées par une connexion PPP, ou des extrémités d'un tunnel. Les adresses lien-local sont configurées automatiquement à l'initialisation de l'interface et permettent la communication entre nœuds voisins. L'adresse est obtenue en concaténant le préfixe <tt>FE80::/64</tt> aux 64 bits de l'[[Identifiant d'interface|identifiant d'interface]]. L'identifiant d'interface est généralement basé sur l'adresse MAC. Cela ne pose pas de problème de respect de le vie privée car, contrairement aux adresses globales, les adresses lien-local ne sortent jamais du réseau où elles sont utilisées. |
<tikz title="Adresses Lien-local"> | <tikz title="Adresses Lien-local"> | ||
Line 259: | Line 226: | ||
</tikz> | </tikz> | ||
− | Ces adresses sont utilisées par les protocoles de configuration d'adresse globale, de découverte de voisins (''neighbor discovery'') et de découverte de routeurs (''router discovery''). Ce sont de nouveaux dispositifs, le premier supplantant en particulier le protocole ARP (''Address Resolution Protocol''), qui permettent | + | Ces adresses sont utilisées par les protocoles de configuration d'adresse globale, de découverte de voisins (''neighbor discovery'') et de découverte de routeurs (''router discovery''). Ce sont de nouveaux dispositifs, le premier supplantant en particulier le protocole ARP (''Address Resolution Protocol''), qui permettent à un réseau local de se configurer automatiquement (voir [[Découverte de voisins]]). Elles sont également largement utilisées par les protocoles de routage soit pour l'échange de données (cf. RIPng, OSPFv3), soit dans les tables de routage puisque le champ ''prochain routeur'' est toujours un équipement directement accessible sur le lien. |
− | {{HorsTexte|Unicité sur le lien|Les adresses lien-local sont uniques à l'intérieur d'un lien. Le protocole de détection de duplication d' | + | {{HorsTexte|Unicité sur le lien|Les adresses lien-local sont uniques à l'intérieur d'un lien. Le protocole de détection de duplication d'adresses (voir [[Configuration automatique#DAD|Détection d'adresse dupliquée]]) permet de s'en assurer. Par contre la duplication d'une adresse lien-local entre deux liens différents, ou entre deux interfaces d'un même nœud est autorisée.}} |
Un routeur ne doit en aucun cas retransmettre un paquet ayant pour adresse source ou destination une adresse de type lien-local. | Un routeur ne doit en aucun cas retransmettre un paquet ayant pour adresse source ou destination une adresse de type lien-local. | ||
Line 272: | Line 239: | ||
===Unique Local Address=== | ===Unique Local Address=== | ||
− | Le RFC 4193 définit un nouveau format d'adresse unicast : les adresses uniques locales (ULA : ''Unique Local Address''). Ces adresses sont destinées à une utilisation locale. Elles ne sont pas définies pour être routées dans l'Internet, mais seulement au sein d'une zone limitée telle qu'un site ou entre un nombre limité de sites. Les adresses uniques locales | + | Le RFC 4193 définit un nouveau format d'adresse unicast : les adresses uniques locales (ULA : ''Unique Local Address''). Ces adresses sont destinées à une utilisation locale. Elles ne sont pas définies pour être routées dans l'Internet, mais seulement au sein d'une zone limitée telle qu'un site ou entre un nombre limité de sites. La longueur du préfixe étant de 48 bits, elles peuvent se manipuler comme des adresses globales, avec un identifiant de sous-réseau (SID) sur 16 bits et un identifiant d'interface (IID) sur 64 bits |
+ | |||
+ | Les adresses uniques locales sont créées en utilisant un identifiant global (''Global ID'') généré pseudo-aléatoirement. Ces adresses suivent le format suivant : | ||
+ | <!-- [[image:CS15.gif]] --> | ||
+ | * <tt>Prefix</tt> (7 bits) : <tt>FC00::/7</tt> préfixe identifiant les adresses IPv6 locales (''ULA'') | ||
+ | * <tt>L</tt> (1 bit) : Positionné à 1, le préfixe est assigné localement. La valeur 0 est réservée pour une utilisation future. | ||
+ | * <tt>Global ID</tt> (40 bits) : Identifiant global utilisé pour la création d'un préfixe ''unique'' (''Globally Unique Prefix''). | ||
+ | * <tt>Subnet ID</tt> (16 bits) : Identifiant d'un sous réseau à l'intérieur du site. | ||
+ | * <tt>Interface ID</tt> (64 bits) : L'indentifiant d'interface tel que défini dans [[Identifiant d'interface]]. | ||
+ | |||
+ | Le site http://www.sixxs.net/tools/grh/ula/ permet de créer et d'enregistrer son adresse ULA à partir d'une adresse MAC. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<tikz title="Unique Local Addresses"> | <tikz title="Unique Local Addresses"> | ||
Line 303: | Line 274: | ||
</tikz> | </tikz> | ||
− | + | Ce type d'adresse permet d'isoler la numérotation externe et interne. En IPv4, l'utilisation d'un préfixe privé (comme <tt>10/8</tt>) évite à un site de renuméroter son réseau s'il change de fournisseur d'accès. Un NAT (que nous appellerons NAT44 dans la suite de ce document) permet de passer de l'adressage privé vers l'adressage public. | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | Avec les adresses de type ULA, il est possible de reproduire ce comportement en IPv6. Un dispositif en bordure de réseau va convertir le préfixe privé en préfixe public. Cet équipement, initialement appelé NAT66 a été renommé NPTv6 {''Network Prefix Translation'') car il ne possède pas les mêmes limitations que le NAT d'IPv4. | |
+ | ~ | ||
+ | Les préfixes ULA se caractérise par une séquence aléatoire de 40 bits après le préfixe <tt>FC::/7</tt>. Cette valeur unique permet d'éviter les problèmes rencontrés en IPv4 lors de la fusion de réseau privées. Le risque de collision entre deux valeurs aléatoires sur 40 bits étant relativement faible, si deux réseaux fusionnent le fait d'avoir des préfixes uniques permet d'éviter des problèmes d'interconnexion si les SID ne le sont pas. | ||
− | = Structuration de 'identifiant d'interface (IID) = | + | = Structuration de l'identifiant d'interface (IID) = |
Si initialement pour des raisons d'auto-configuration, l'identifiant d'interface devait toujours être dérivé de l'adresse de niveau 2, c'est de moins en moins le cas. Il existe plusieurs méthodes pour construire cette valeur de 64 bits: | Si initialement pour des raisons d'auto-configuration, l'identifiant d'interface devait toujours être dérivé de l'adresse de niveau 2, c'est de moins en moins le cas. Il existe plusieurs méthodes pour construire cette valeur de 64 bits: | ||
Line 325: | Line 292: | ||
== Manuel == | == Manuel == | ||
− | {{HorsTexte|Le resolveur DNS|Le résolveur DNS est le cas le plus flagrant ; chaque machine sur le réseau doit être configurée avec l'adresse IPv6 du serveur DNS. En cas de changement de carte réseau, l'ensemble des machines du domaine devront être reconfigurées. Si l'on ne souhaite pas utiliser des protocoles de configuration automatique de type DHCPv6, il est préférable d'attribuer au résolveur DNS une adresse manuelle.}} | + | {{HorsTexte|Le resolveur DNS|Le résolveur DNS est le cas le plus flagrant; chaque machine sur le réseau doit être configurée avec l'adresse IPv6 du serveur DNS. En cas de changement de carte réseau, l'ensemble des machines du domaine devront être reconfigurées. Si l'on ne souhaite pas utiliser des protocoles de configuration automatique de type DHCPv6, il est préférable d'attribuer au résolveur DNS une adresse manuelle.}} |
− | Pour les serveurs les plus | + | Pour les serveurs les plus utilisés, il est préférable d'assigner manuellement des adresses aux interfaces, car dans ce cas l'adresse IPv6 est facilement mémorisable, et le serveur peut être accessible même si le DNS n'est pas actif. |
Il existe plusieurs techniques plus ou moins mnémotechniques : | Il existe plusieurs techniques plus ou moins mnémotechniques : | ||
* incrémenter l'identifiant d'interface à chaque nouveau serveur créé | * incrémenter l'identifiant d'interface à chaque nouveau serveur créé | ||
Line 334: | Line 301: | ||
... | ... | ||
− | * reprendre le dernier octet de l'adresse IPv4 comme identifiant d' | + | * reprendre le dernier octet de l'adresse IPv4 comme identifiant d'interface. Par exemple si un serveur a comme adresse IPv4 <tt>192.0.2.123</tt>, son adresse IPv6 sera : |
<tt>2001:DB8:1234:1::7B</tt> | <tt>2001:DB8:1234:1::7B</tt> | ||
Line 340: | Line 307: | ||
<tt>2001:DB8:1234:1::123</tt> | <tt>2001:DB8:1234:1::123</tt> | ||
− | * reprendre l'adresse IPv4 comme identifiant d'interface, bien que cela ait l' | + | * reprendre l'adresse IPv4 comme identifiant d'interface, bien que cela ait l'inconvénient de conduire à des adresses plus longues à taper : |
<tt>2001:DB8:1234:1::192.0.2.123</tt> | <tt>2001:DB8:1234:1::192.0.2.123</tt> | ||
Line 348: | Line 315: | ||
L'avantage d'utiliser une adresse de niveau 2 pour construire un identifiant d'interface est que l'unicité de cette valeur est presque toujours assurée. En plus, cette valeur est stable tant que la carte réseau de la machine n'est pas changée. Par contre, ces valeurs sont difficilement mémorisables. | L'avantage d'utiliser une adresse de niveau 2 pour construire un identifiant d'interface est que l'unicité de cette valeur est presque toujours assurée. En plus, cette valeur est stable tant que la carte réseau de la machine n'est pas changée. Par contre, ces valeurs sont difficilement mémorisables. | ||
− | Les adresses lien-local sont construites en utilisant ce type d'identifiant. Par contre pour les adresses globales, il est conseillé de ne les utiliser que pour les machines client et de préférer les | + | Les adresses lien-local sont construites en utilisant ce type d'identifiant. Par contre pour les adresses globales, il est conseillé de ne les utiliser que pour les machines client et de préférer les identifiants d'interface manuels pour les serveurs. |
− | Ces identifiants d'interface étant | + | Ces identifiants d'interface étant stables dans le temps, à chaque fois qu'un individu change de réseau, il change de préfixe, mais garde le même identifiant d'interface. Ce dernier pourrait donc servir à tracer les déplacements d'un individu. Le risque est faible, car les cookies mis en place par les serveurs web sont bien plus efficaces, mais ils ne s'agit plus d'un problème réseau. Autre désavantage, comme les adresses MAC contiennent l'identification du matériel, il est possible d'indiquer à l'exterieur du réseau quel type de materiel est utilisé et donner des indications. |
− | Si ces inconvénients sont jugés | + | Si ces inconvénients sont jugés importants par l'entreprise, l'identifiant d'interface pour les adresses globales peut être généré aléatoirement. |
=== EUI-64 === | === EUI-64 === | ||
Line 450: | Line 417: | ||
===Cas Particuliers=== | ===Cas Particuliers=== | ||
* Si une interface possède une adresse locale unique sur le lien, mais non universelle (par exemple le format d'adresse IEEE 802 sur 2 octets ou une adresse sur un réseau Appletalk), l'identifiant d'interface est construit à partir de cette adresse en rajoutant des 0 en tête pour atteindre 64 bits. | * Si une interface possède une adresse locale unique sur le lien, mais non universelle (par exemple le format d'adresse IEEE 802 sur 2 octets ou une adresse sur un réseau Appletalk), l'identifiant d'interface est construit à partir de cette adresse en rajoutant des 0 en tête pour atteindre 64 bits. | ||
+ | |||
− | + | {{HorsTexte|Erreur de l'IETF|À noter que l'IETF s'est trompée quand elle a défini l'algorithme de conversion. En effet, l'ajout de la valeur <tt>0xFFFE</tt> concerne les EUI-48, c'est-à-dire des identifiants, alors qu'Ethernet utilise des MAC-48, c'est-à-dire des adresses (ils servent à transporter des trames vers le bon destinataire). La bonne valeur aurait été <tt>0xFFFF</tt>. Mais cette erreur n'a aucune conséquence pour l'identification des équipements, elle n'a donc pas été corrigée par la suite.}} | |
− | {{HorsTexte|Erreur de l'IETF| | + | |
* Si une interface ne possède aucune adresse (par exemple l'interface utilisée pour les liaisons PPP), et si la machine n'a pas d'identifiant EUI-64, il n'y a pas de méthode unique pour créer un identifiant d'interface. La méthode conseillée est d'utiliser l'identifiant d'une autre interface si c'est possible (cas d'une autre interface qui a une adresse MAC), ou une configuration manuelle ou bien une génération aléatoire, avec le bit u positionné à 0. <br>S'il y a conflit (les deux extrémités ont choisi la même valeur), il sera détecté lors de l'initialisation de l'adresse lien-local de l'interface, et devra être résolu manuellement. | * Si une interface ne possède aucune adresse (par exemple l'interface utilisée pour les liaisons PPP), et si la machine n'a pas d'identifiant EUI-64, il n'y a pas de méthode unique pour créer un identifiant d'interface. La méthode conseillée est d'utiliser l'identifiant d'une autre interface si c'est possible (cas d'une autre interface qui a une adresse MAC), ou une configuration manuelle ou bien une génération aléatoire, avec le bit u positionné à 0. <br>S'il y a conflit (les deux extrémités ont choisi la même valeur), il sera détecté lors de l'initialisation de l'adresse lien-local de l'interface, et devra être résolu manuellement. | ||
Line 459: | Line 426: | ||
L'identifiant d'interface basé sur des adresses MAC, comme indiqué précédemment, pourrait poser des problèmes pour la vie privée. Il identifie fortement la machine d'un utilisateur, qui même s'il se déplace de réseau en réseau garde ce même identifiant. Il serait alors possible de traquer un individu utilisant un portable, chez lui, au bureau, lors de ses déplacements. Ce problème est similaire à l'identificateur placé dans les processeurs Pentium III. | L'identifiant d'interface basé sur des adresses MAC, comme indiqué précédemment, pourrait poser des problèmes pour la vie privée. Il identifie fortement la machine d'un utilisateur, qui même s'il se déplace de réseau en réseau garde ce même identifiant. Il serait alors possible de traquer un individu utilisant un portable, chez lui, au bureau, lors de ses déplacements. Ce problème est similaire à l'identificateur placé dans les processeurs Pentium III. | ||
+ | |||
+ | [[image:Windows7-IIDalea.png|500px|right]] | ||
− | Pour couper court à toute menace de boycott d'un protocole qui | + | Pour couper court à toute menace de boycott d'un protocole qui « menacerait la vie privée », il a été proposé d'autres algorithmes de construction d'un identifiant d'interface basé sur des tirages aléatoires (voir RFC 3041). Un utilisateur particulièrement méfiant pourrait valider ces mécanismes. L'identifiant d'interface est soit choisi aléatoirement, soit construit par un algorithme comme MD5 à partir des valeurs précédentes, soit tiré au hasard si l'équipement ne peut pas mémoriser d'information entre deux démarrages. Périodiquement l'adresse est mise dans l'état « déprécié » et un nouvel identifiant d'interface est choisi. Les connexions déjà établies continuent d'utiliser l'ancienne valeur tandis que les nouvelles connexions utilisent la nouvelle adresse. |
− | Cette solution a été adoptée par Microsoft. Dans Windows XP, l'interface possède deux adresses IPv6 globale. La première a un identifiant d'interface dérivé de l'adresse MAC. Elle sert aux applications attendant des connexions sur la machine (i.e. les applications serveur). Cette adresse est stable et peut être publiée dans le DNS. La seconde possède un identifiant d'interface tiré aléatoirement. Elle est changée tous les jours et sert aux applications client. Dans Windows | + | Cette solution a été adoptée par Microsoft. Dans Windows XP, l'interface possède deux adresses IPv6 globale. La première a un identifiant d'interface dérivé de l'adresse MAC. Elle sert aux applications attendant des connexions sur la machine (i.e. les applications serveur). Cette adresse est stable et peut être publiée dans le DNS. La seconde possède un identifiant d'interface tiré aléatoirement. Elle est changée tous les jours et sert aux applications client. Dans Windows 7, ce comportement est généralisé car l'identifiant d'interface de l'adresse permanente est également issu d'un tirage aléatoire. Cela permet d'éviter de donner la marque de la machine ou le type de carte contenu dans les premiers octets de l'identifiant d'interface. Elle est également présente, mais de manière optionnelle, sur Linux et les système d'exploitation BSD comme Mac OS. |
Bien entendu pour que ces mécanismes aient un sens, il faut que l'équipement ne s'enregistre pas sous un même nom dans un serveur DNS inverse ou que l'enregistrement de cookies dans un navigateur Web pour identifier l'utilisateur soit impossible. | Bien entendu pour que ces mécanismes aient un sens, il faut que l'équipement ne s'enregistre pas sous un même nom dans un serveur DNS inverse ou que l'enregistrement de cookies dans un navigateur Web pour identifier l'utilisateur soit impossible. | ||
Line 470: | Line 439: | ||
== Cryptographique == | == Cryptographique == | ||
− | {{HorsTexte|Encore un sujet de recherche|L'usage de ces adresses n'est pas encore généralisé. Shim6 pour la gestion de la multi-domiciliation ou SEND pour sécuriser la découverte de voisins y | + | {{HorsTexte|Encore un sujet de recherche|L'usage de ces adresses n'est pas encore généralisé. Shim6 pour la gestion de la multi-domiciliation ou SEND pour sécuriser la découverte de voisins y ont recours.}} |
Si un identifiant aléatoire permet de rendre beaucoup plus anonyme la source du paquet, des propositions sont faites à l'IETF pour lier l'identifiant d'interface à la clé publique de l'émetteur du paquet. Le RFC 3972 définit le principe de création de l'identifiant d'interface (CGA : ''Cryptographic Generated Addresses'') à partir de la clé publique de la machine. Elles pourraient servir pour sécuriser les protocoles de découverte de voisins ou pour la gestion de la multi-domiciliation. | Si un identifiant aléatoire permet de rendre beaucoup plus anonyme la source du paquet, des propositions sont faites à l'IETF pour lier l'identifiant d'interface à la clé publique de l'émetteur du paquet. Le RFC 3972 définit le principe de création de l'identifiant d'interface (CGA : ''Cryptographic Generated Addresses'') à partir de la clé publique de la machine. Elles pourraient servir pour sécuriser les protocoles de découverte de voisins ou pour la gestion de la multi-domiciliation. | ||
+ | |||
+ | =Adresses Multicast= | ||
+ | {{HorsTexte|Portée et portée|Il ne faut pas confondre la portée d'une adresse link-local ou multicast qui désigne l'interface par laquelle sera émis le paquet et la portée d'un groupe multicast qui désigné l'étendue de la couverture}} | ||
+ | Cette section décrit brièvement le système d'adressage multicast IPv6 et ne s'intéresse qu'aux adresses utilisées localement par les protocoles directement liés à IPv6 (Découverte de voisins, DHCPv6,...). Pour plus de détails sur le multicast en général, se reporter au chapitre [[Multicast]]. La figure Structure de l'adresse IPv6 Multicast donne le format de l'adresse IPv6 de multicast décrite dans le RFC 3513. | ||
+ | |||
+ | <tikz title="Structure de l'adresse IPv6 Multicast"> | ||
+ | \clip (0, 1) rectangle (11,4); | ||
+ | % \draw[help lines] (0,0) grid (10,4 ); | ||
+ | |||
+ | % \draw (0, 3.6) node [right] {Generic Format:}; | ||
+ | |||
+ | \draw (0,2) node [right, draw, shade, top color = yellow, minimum width=2cm, minimum height=1cm] {FF}; | ||
+ | \draw (2,2) node [right, draw, shade, top color = yellow, minimum width=1cm, minimum height=1cm] {\tiny{\tt{xRPT}}}; | ||
+ | \draw (3,2) node [right, draw, shade, top color = yellow, minimum width=1cm, minimum height=1cm] {\tiny{scope}}; | ||
+ | \draw (4,2) node [right, draw, shade, top color = black!50, minimum width=6cm, minimum height=1cm] {Group ID}; | ||
+ | |||
+ | \draw (1, 2.7) node {\tiny{8}}; | ||
+ | \draw (2.5, 2.7) node {\tiny{4}}; | ||
+ | \draw (3.5, 2.7) node {\tiny{4}}; | ||
+ | \draw (7, 2.7) node {\tiny{112}}; | ||
+ | |||
+ | </tikz> | ||
+ | |||
+ | Les adresses multicast IPv6 sont dérivées du préfixe <tt>FF00::/8</tt>. Le champ drapeaux de 4 bits est défini de la manière suivante : | ||
+ | |||
+ | * Seul le bit <tt>T</tt> (comme ''Transient'') du champ drapeaux est initialement décrit dans le RFC 3513. La valeur <tt>0</tt> indique une adresse multicast bien connue gérée par une autorité. La valeur <tt>1</tt> indique une valeur temporaire. | ||
+ | * Les bits <tt>P</tt> et <tt>R</tt> sont décrits dans le RFC 3306 et le draft Internet sur embedded-RP (RFC 3956). | ||
+ | * Le bit de poids fort du champ drapeaux n'est pas encore attribué. | ||
+ | |||
+ | Le champ drapeaux permet de définir plusieurs types d'adresses multicast IPv6 qui seront décrits dans les sections suivantes. | ||
+ | |||
+ | Le champ scope de l'adresse multicast IPv6 permet d'en limiter la portée (''scope'' en anglais). En IPv4, la portée d'un paquet est limitée par le champ TTL (''Time To Live''), de même des préfixes peuvent être définis pour identifier des adresses à portée réduite. Les valeurs suivantes sont définies dans la RFC 2373 : | ||
+ | |||
+ | * 1 - node-local : Les paquets ne sortent pas de la machine, cette adresse sert pour la communication entre les applications. | ||
+ | * 2 - link-local : La portée se limite au réseau local, les paquets ne peuvent pas traverser les routeurs multicast. Cette valeur est utilisée en particulier par le protocole de découverte des voisins. | ||
+ | * 3 - subnet-local : Ce type n'est pas officiellement défini, mais se retrouve dans certains documents. Il permet de faire la différence entre un lien physique et un lien logique (regroupement de plusieurs liens physiques) partageant le même préfixe IPv6. | ||
+ | * 4 - admin-local | ||
+ | * 5 - site-local | ||
+ | * 8 - organisation-local | ||
+ | * E - global | ||
+ | * Les portées 0 et F sont réservées. | ||
+ | |||
+ | http://www.iana.org/assignments/ipv6-multicast-addresses donne les adresses multicast définies. Le tableau ci-dessous liste les plus utilisées : | ||
+ | |||
+ | {| | ||
+ | !Adresse multicast !! usage | ||
+ | |-style="background:silver" | ||
+ | | FF01::1 || All Nodes Address | ||
+ | |- | ||
+ | | FF01::2 || All Routers Address | ||
+ | |-style="background:silver" | ||
+ | | FF02::1 || All Nodes Address | ||
+ | |- | ||
+ | | FF02::2 || All Routers Address | ||
+ | |-style="background:silver" | ||
+ | | FF02::5 || OSPFIGP | ||
+ | |- | ||
+ | | FF02::6 || OSPFIGP Designated Routers | ||
+ | |-style="background:silver" | ||
+ | | FF02::9 || RIP Routers | ||
+ | |- | ||
+ | | FF02::C || UPnP [http://http://www.upnp.org/download/Annex%20A%20-%20IPv6.doc] | ||
+ | |-style="background:silver" | ||
+ | | FF02::1:2 || All-dhcp-agents | ||
+ | |- | ||
+ | | FF03::C || UPnP [http://http://www.upnp.org/download/Annex%20A%20-%20IPv6.doc] | ||
+ | |-style="background:silver" | ||
+ | | FF04::C || UPnP [http://http://www.upnp.org/download/Annex%20A%20-%20IPv6.doc] | ||
+ | |- | ||
+ | | FF05::2 || All Routers Address | ||
+ | |-style="background:silver" | ||
+ | | FF05::C || UPnP [http://http://www.upnp.org/download/Annex%20A%20-%20IPv6.doc] | ||
+ | |- | ||
+ | | FF05::1:3 || All-dhcp-servers | ||
+ | |-style="background:silver" | ||
+ | | FF0X::101 || Network Time Protocol (NTP) | ||
+ | |} | ||
+ | |||
+ | ==Adressage Multicast Sollicité== | ||
+ | |||
+ | IPv6 interdit l'utilisation de la diffusion généralisée (Broadcast) lorsque le Multicast est disponible. Ainsi les protocoles comme Neighbor Discovery, chargé de faire le lien entre les adresses IPv6 et les adresses MAC (à l'instar d'ARP en IPv4) doivent utiliser une adresse de 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. | ||
+ | |||
+ | <tikz title="Construction de l'adresse de Multicast sollicité"> | ||
+ | \clip (0, 0) rectangle (10,4); | ||
+ | %\draw[help lines] (0,0) grid (10,4 ); | ||
+ | |||
+ | \draw (2, 3.75) node (mac) [right, draw, shade, top color = blue!80, minimum width=3cm, minimum height=0.5cm] {\tiny{\tt{01-02-03-04-05-06}}}; | ||
+ | |||
+ | \draw (0, 2.75) node (LL) [right, draw, shade, top color = green!80, minimum width=3cm, minimum height=0.5cm] {\tiny{\tt{FE80::0102:03FF:FE04:0506}}}; | ||
+ | |||
+ | \draw (4, 2.75) node (GP) [right, draw, shade, top color = green!80, minimum width=3cm, minimum height=0.5cm] {\tiny{\tt{GP:0102:03FF:FE04:0506}}}; | ||
+ | |||
+ | \draw [->] (mac) -- (LL); | ||
+ | \draw [->] (mac) -- (GP); | ||
+ | |||
+ | \draw (8, 2.75) node (manuel) [right, draw, shade, top color = green!80, minimum width=1cm, minimum height=0.5cm] {\tiny{\tt{GP::1}}}; | ||
+ | |||
+ | \draw (2.5, 1.75) node (MS1) [right, draw, shade, top color = red!80, minimum width=1cm, minimum height=0.5cm] {\tiny{\tt{FF02::1:FF04:0506}}}; | ||
+ | \draw [->] (LL) -- (MS1); | ||
+ | \draw [->] (GP) -- (MS1); | ||
+ | |||
+ | \draw (7.4, 1.75) node (MS2) [right, draw, shade, top color = red!80, minimum width=1cm, minimum height=0.5cm] {\tiny{\tt{FF02::1:FF00:0001}}}; | ||
+ | \draw [->] (manuel) -- (MS2); | ||
+ | |||
+ | \draw (2.5, 0.75) node (mac2) [right, draw, shade, top color = blue!80, minimum width=1cm, minimum height=0.5cm] {\tiny{\tt{33-33-FF-04-05-06}}}; | ||
+ | \draw [->] (MS1) -- (mac2); | ||
+ | |||
+ | \draw (7.4, 0.75) node (mac3) [right, draw, shade, top color = blue!80, minimum width=1cm, minimum height=0.5cm] {\tiny{\tt{33-33-FF-00-00-01}}}; | ||
+ | \draw [->] (MS2) -- (mac3); | ||
+ | </tikz> | ||
+ | |||
+ | La figure <i>Construction de l'adresse de Multicast sollicité</i> montre comment l'on passe d'une adresse IPv6 unicast à une adresse de multicast sollicité. Il s'agit de prendre les 3 derniers octets de l'adresse unicast que l'on concatène avec le préfixe IPv6 multicast <tt>FF02::1:FF00:0/104</tt>. | ||
+ | |||
+ | Dans l'exemple, les deux adresses dérivant d'une adresse MAC conduisent à la même adresse de multicast sollicité, tandis que la configuration manuelle d'une interface conduit à la construction d'une autre adresse de multicast sollicité. On peut noter que le risque que deux machines sur un lien aient la même adresse de multicast sollicité est très faible. Pour celles dérivant d'une adresse MAC, il faudrait que les 3 derniers octets soient identiques, ce qui est impossible chez un même constructeur et la probabilité d'avoir, sur un même lien, des cartes de deux constructeurs différents se terminant par les mêmes 3 derniers octets est très faible. Pour la numérotation manuelle des interfaces, une machine ayant l'adresse <tt>GP::<b>01</b>00:0001</tt> conduirait à construire la même adresse de multicast sollicité <tt>FF02::1:FF00:0001</tt>, mais cette numérotation manuelle des interfaces n'est pas logique. | ||
+ | |||
+ | {{HorsTexte|Sollicitation des voisins|L'algorithme de découverte des adresses de niveau 3 des voisins (inclus dans Neighbor Discovery) fonctionne de la manière suivante. La machine qui recherche un voisin dont elle connait l'adresse IPv6, effectue l'algorithme décrit précédemment. Elle émet la requête en utilisant l'adresse MAC obtenue. Seule la machine qui possède cette adresse est abonnée à ce groupe, elle sera donc la seule à traiter la requête et à y répondre.}} | ||
+ | |||
+ | L'exemple se poursuit par la transformation de l'adresse de Multicast au niveau IPv6 en adresse de multicast de niveau 2. Elle est très spécifique à la technologie et à la manière dont est mis en œuvre le multicast au niveau 2. Pour les réseaux Ethernet (et dérivés comme le Wi-Fi), les 4 derniers octets de l'adresse multicast sollicité sont ajoutés au préfixe <tt>33-33</tt>. | ||
+ | {{Suivi| Introduction|Introduction | AdressageBis-MeO|Mises en Oeuvre}} |
Latest revision as of 13:02, 27 September 2021
Introduction | Table des matières | Mises en Oeuvre |
Le format et la représentation des adresses sont les modifications les plus visibles pour l'utilisateur expérimenté et l'ingénieur réseau dans cette nouvelle version du protocole. En effet la taille de l'adresse reste fixe mais passe de 32 à 128 bits. Même si les principes sont fortement similaires à ceux employés dans IPv4, cet adressage apparaît à première vue beaucoup plus complexe. Il est intéressant d'en comprendre le principe et les règles d'attribution avant d'aborder les aspects protocolaires.
Ce chapitre présente les différents types d'adresses. Il explique en détail le plan d'adressage agrégé qui a été retenu pour construire l'Internet IPv6. Il décrit également la manière de constituer une adresse IPv6.
Contents
Aspects fondamentaux de l'adressage IPv6
Représentation des adresses
La représentation textuelle d'une adresse IPv6 se fait en découpant le mot de 128 bits de l'adresse en 8 mots de 16 bits séparés par le caractère «:», chacun d'eux étant représenté en hexadécimal. Par exemple :
2001:0DB8:0000:0000:0400:A987:6543:210F
Dans un champ, il n'est pas nécessaire d'écrire les zéros placés en tête :
2001:DB8:0:0:400:A987:6543:210F
En outre plusieurs champs nuls consécutifs peuvent être abrégés par «::». Ainsi l'adresse précédente peut s'écrire comme suit :
2001:DB8::400:A987:6543:210F
Naturellement, pour éviter toute ambiguïté, l'abréviation «::» ne peut apparaître qu'une fois au plus dans une adresse. Les cas extrêmes sont l'adresse indéfinie (utilisée pour désigner les routes par défaut) à tous les bits à zéro et qui se note de manière compacte :
::
et l'adresse de bouclage (loopback), équivalent du préfixe 127/8 dont tous les bits sont à zéro sauf le dernier et qui s'écrit :
::1
La représentation des préfixes réseau IPv6 est similaire à la notation CIDR RFC 1519 utilisée pour les préfixes IPv4. Un préfixe IPv6 est donc représenté par la notation :
adresse-ipv6/longueur-du-préfixe-en-bits
Les formes abrégées avec «::» sont autorisées.
2001:0DB8:7654:3210:0000:0000:0000:0000/64
2001:DB8:7654:3210:0:0:0:0/64
2001:DB8:7654:3210::/64
Le seul piège de cette notation vient des longueurs de préfixes qui ne sont pas en frontière de «:». Ainsi le préfixe 3EDC:BA98:7654:3::/56 équivaut en réalité à 3EDC:BA98:7654:0000::/56 car il s'écrit 3EDC:BA98:7654:0003::/56.
On peut combiner le préfixe réseau avec l'identifiant de l'interface en une seule notation. Ainsi cette adresse IPV6
2001:DB8:7654:3210:945:1321:ABA8:F4E2/64
indique que le préfixe réseau est constitué par les 64 premiers bits.
Apprendre à gaspiller
Du fait de sa longueur, une règle de bonne gestion consiste à relâcher les contraintes sur les longueurs de préfixe. Ainsi en utilisant quand cela est possible des multiples de 4 permet d'avoir un préfixe qui tient sur un caractère affiché. Dans l'exemple suivant 47 n'étant pas un multiple de 4, 2001:DB0:1234::/47 représente les préfixes commençant par 2001:DB0:1234 et 2001:DB0:1235
Ces représentations peuvent apparaître beaucoup plus complexes qu'avec IPv4, mais en vérité des adresses logiques ou concises peuvent être constituées au moyen de règles strictes. Ces règles favorisent grandement la manipulation et la mémorisation des adresses comme nous verrons par la suite (cf Adressage global)
Dans certains cas, une adresse (voire plusieurs adresses) IPv4 peut être contenue dans une adresse IPv6. Pour les faire ressortir, la notation classique d'IPv4, c'est à dire 4 octets en représentation décimale séparés par des points, peut être utilisée au sein d'une adresse IPv6. Ainsi :
::128.12.13.14
représente une adresse IPv6 composée de 96 bits à 0 suivis des 32 bits de l'adresse IPv4 128.12.13.14
Il est pourtant parfois nécessaire de manipuler littéralement des adresses IPv6. Le caractère ":" utilisé pour séparer les mots peut créer des ambiguïtés. C'est le cas avec les URL où il est aussi utilisé pour indiquer le numéro de port. Ainsi l'URL
http://2001:DB8:12::1:8000/
peut aussi bien indiquer le port 8000 sur la machine ayant l'adresse IPv6 2001:DB8:12::1, que la machine 2001:DB8:12::1:8000 en utilisant le port par défaut. Pour lever cette ambiguïté, le RFC 2732 propose d'inclure l'adresse IPv6 entre "[ ]". L'adresse précédente s'écrirait :
http://[2001:DB8:12::1]:8000/
ou
http://[2001:DB8:12::1:8000]/
suivant les cas. Cette représentation peut être étendue à d'autres domaines comme X-window ou au protocole de signalisation téléphonique SIP.
Type des adresses
IPv6 reconnaît trois types d'adresses : unicast, multicast et anycast. Le type d'adresse définit la cardinalité de la communication: à combien de destinataire doit être remis le paquet.
Le premier de ces types désigne de manière unique une interface. Un paquet envoyé à une telle adresse, sera donc remis à l'interface ainsi identifiée. Parmi les adresses unicast, on peut distinguer celles qui auront une portée globale, c'est-à-dire désignant sans ambiguïté une destination sur le réseau Internet et celles qui auront une portée locale (lien ou site). Ces dernières ne pourront pas être routées sur l'Internet c'est à dire qu'un paquet comportant une adresse de destination avec une portée locale sera ignoré et éliminé par un routeur de l'Internet. La portée d'une adresse indique en faite la limite de la propriété d'unicité.
Une adresse de type multicast désigne un groupe d'interfaces qui en général appartiennent à des noeuds différents pouvant être situés n'importe où dans l'Internet. Lorsqu'un paquet a pour destination une adresse de type multicast, il est acheminé par le réseau à toutes les interfaces membres de ce groupe.
Il faut noter qu'il n'y a plus d'adresses de type broadcast comme sous IPv4 ; elles sont remplacées par des adresses de type multicast. En effet, l'adresse de broadcast peut être émulée avec une adresse multicast en constituant un groupe qui comporte tous les noeuds. De plus, l'absence de broadcast évite les problèmes de saturation des réseaux locaux commutés. Ainsi un réseau IPV6 passe mieux en terme de facteur d'échelle sur ce type de réseau.
Le dernier type, anycast, est une officialisation de propositions faites pour IPv4 RFC 1546. Comme dans le cas du multicast, une adresse de type anycast désigne un groupe d'interfaces, la différence étant que lorsqu'un paquet a pour destination une telle adresse, il est acheminé à un des éléments du groupe et non pas à tous. C'est, par exemple, le plus proche au sens de la métrique des protocoles de routage. Cet adressage est principalement expérimental, voir Adresses anycast.
Certains types d'adresses sont caractérisés par leur préfixe RFC 3513. Le tableau suivant (source : http://www.iana.org/assignments/ipv6-address-space) donne la liste de ces préfixes. La plage «réservée» du préfixe 0::/8 est utilisée pour les adresses spéciales (adresse indéterminée, de bouclage, mappée, compatible). On notera que plus de 70% de l'espace disponible n'a pas été alloué, ce qui permet de conserver toute latitude pour l'avenir.
Préfixe IPv6
Allouer
Référence
0000::/8
Réservé pour la transition et loopback
RFC 3513
0100::/8
Réservé
RFC 3513
0200::/7
Réservé (ex NSAP)
RFC 4048
0400::/6
Réservé (ex IPX)
RFC 3513
0800::/5
Réservé
RFC 3513
1000::/4
Réservé
RFC 3513
2000::/3
Unicast Global
RFC 3513
4000::/3
Réservé
RFC 3513
6000::/3
Réservé
RFC 3513
8000::/3
Réservé
RFC 3513
A000::/3
Réservé
RFC 3513
C000::/3
Réservé
RFC 3513
E000::/4
Réservé
RFC 3513
F000::/5
Réservé
RFC 3513
F800::/6
Réservé
RFC 3513
FC00::/7
Unique Local Unicast
RFC 4193
FE00::/9
Réservé
RFC 3513
FE80::/10
Lien-local
RFC 3513
FEC0::/10
Réservé
RFC 3879
FF00::/8
Multicast
RFC 3513
Une interface possèdera généralement plusieurs adresses IPv6. En IPv4 ce comportement est exceptionnel, il est banalisé en IPv6.
Adressage global : plan d'adressage agrégé
Ce plan, proposée dans le RFC 3587, précise la structure d'adressage IPv6 définie dans le RFC 3513 en précisant les tailles de chacun des blocs. Il est géré de la même manière que CIDR en IPv4. Une adresse intègre trois niveaux de hiérarchie :
Figure : Adresses Globales
- une topologie publique (appelée Global Prefix) codée sur 48 bits, allouée par le fournisseur d'accès;
- une topologie de site codée sur 16 bits (appelée Subnet ID). Ce champ permet de coder les numéros de sous réseau du site;
- un identifiant d'interface sur 64 bits (appelé Interface ID) distinguant les différentes machines sur le lien.
Structuration du prefixe global (GP)
Appréhender les tailles
France Télécom a obtenu du RIPE-NCC un /19. Si l'on enlève les troix premiers bits 001 désignant le plan d'adressage, il est donc possible d'avoir 216 opérateurs. Sachant qu'il y a 192 pays à l'ONU, ils pourraient chacun abriter 320 opérateurs de la taille de FT, chacun pouvant attribuer jusqu'à 229 /48, soit 536 870 912 sites
A part le préfixe 2002:: qui est réservé au mécanisme de transition 6to4, cet espace est géré hierarchiquement comme pour IPv4. L'IANA délègue aux 5 autorités régionales (RIR) des préfixes actuellement de longueur 12 (cf. http://www.iana.org/assignments/ipv6-unicast-address-assignments) qui les redistribuent aux ISP de leur région. Suivant leur taille, les opérateurs reçoivent un préfixe plus ou moins long. Le site http://www.sixxs.net/tools/grh/ donne en temps réel les allocations de préfixes par région, opérateur et pays.
Il est maintenant admis que le préfixe attribué par un opérateur à ses clients peut également être un /56. En effet, si l'on garde l'attribution de préfixe de longueur 48 pour les sites terminaux, et que l'on intègre les réseaux domotiques, les opérateurs peuvent justifier d'un besoin important d'adresses que les autorités régionales ne peuvent leur refuser.
TODO
Ajouter comment obtenir un préfixe auprès de RIPE-NCC
Structuration de l'identifiant de sous-réseau (SID)
Il n'existe pas de règles pour allouer les identificateurs de sous-réseau au sein d'un site. Plusieurs techniques (non exclusives) peuvent être utilisées :
- numéroter de manière incrémentale les sous-réseaux: 0001, 0002, ... Cette technique est simple a mettre en œuvre dans des réseaux expérimentaux, mais elle peut conduire à un plan d'adressage à plat difficile à mémoriser. Elle peut être utilisée par exemple pour un sous-réseau dédié aux serveurs pour simplifier l'écriture et la mémorisation des adresses.
- utiliser le numéro de VLAN. Elle permet d'éviter de mémoriser plusieurs niveaux de numérotation.
- séparer les types de réseaux et utiliser les chiffres de gauche pour les désigner. Cette technique permet de faciliter les règles de filtrage, tout en utilisant des règles appropriées à la gestion de ces sous-réseaux pour la partie de droite. À titre d'exemple, le tableau suivant contient le plan de numérotation d'une université localisée sur plusieurs sites prenant en compte les différentes communautés d'utilisateurs :
Communauté
4bits
8bits
4bits
Infrastructure
0
valeurs spécifiques
Tests
1
valeurs spécifiques
Tunnels
6
allocation de /60 aux utilisateurs
Invités Wi-Fi
8
valeurs spécifiques
Personnels
A
Entité
Sous-Réseaux
Etudiants
E
Entité
Sous-Réseaux
Autres (Start up, etc.)
F
valeurs spécifiques
Affectation des SID dans une université
Ainsi, le préfixe:
- 2001:DB8:1234::/52 servira pour la création de l'infrastructure, donc en particulier les adresses des interfaces des routeurs seront prises dans cet espace;
- 2001:DB8:1234:8000::/52 servira pour le réseau Wi-Fi des invités. La manière dont sont gérés les 12 bits restants du SID ne sont pas spécifiés;
- 2001:DB8:1234:E000::/52 servira pour le réseau des étudiants. L'entité représente la localisation géographique du campus. Dans chacun de ces campus, il sera possible d'avoir jusqu'à 16 sous-réseaux différents pour cette communauté.
Adressage local : adresses lien-local
Les adresses de type lien-local (link local use address) sont des adresses dont la validité est restreinte à un lien, c'est-à-dire l'ensemble de interfaces directement connectées sans routeur intermédiaire comme par exemple des machines branchées sur un même réseau Ethernet, des machines reliées par une connexion PPP, ou des extrémités d'un tunnel. Les adresses lien-local sont configurées automatiquement à l'initialisation de l'interface et permettent la communication entre nœuds voisins. L'adresse est obtenue en concaténant le préfixe FE80::/64 aux 64 bits de l'identifiant d'interface. L'identifiant d'interface est généralement basé sur l'adresse MAC. Cela ne pose pas de problème de respect de le vie privée car, contrairement aux adresses globales, les adresses lien-local ne sortent jamais du réseau où elles sont utilisées.
Figure : Adresses Lien-local
Ces adresses sont utilisées par les protocoles de configuration d'adresse globale, de découverte de voisins (neighbor discovery) et de découverte de routeurs (router discovery). Ce sont de nouveaux dispositifs, le premier supplantant en particulier le protocole ARP (Address Resolution Protocol), qui permettent à un réseau local de se configurer automatiquement (voir Découverte de voisins). Elles sont également largement utilisées par les protocoles de routage soit pour l'échange de données (cf. RIPng, OSPFv3), soit dans les tables de routage puisque le champ prochain routeur est toujours un équipement directement accessible sur le lien.
Unicité sur le lien
Les adresses lien-local sont uniques à l'intérieur d'un lien. Le protocole de détection de duplication d'adresses (voir Détection d'adresse dupliquée) permet de s'en assurer. Par contre la duplication d'une adresse lien-local entre deux liens différents, ou entre deux interfaces d'un même nœud est autorisée.
Un routeur ne doit en aucun cas retransmettre un paquet ayant pour adresse source ou destination une adresse de type lien-local.
Le fait que ces adresses aient une portée très faible les limite dans la pratique au cas où un démarrage automatique (bootstrap) est nécessaire. Leur usage ne doit pas être généralisé dans les applications classiques en régime stabilisé.
Portée de l'adresse (scoped address)
Une adresse lien-local (ou multicast) n'indique pas intrinsèquement l'interface de sortie, puisque toutes les interfaces partagent le même préfixe fe80::/10. Il faut donc indiquer de manière explicite sur quelle interface doivent être émis les paquets. Sur certains systèmes d'exploitation (BSD, Mac OS, Windows), il est possible de la spécifier en ajoutant à la fin de l'adresse le nom de l'interface voulue, précédé du caractère "%". Sous Linux, un argument, généralement -I permet de la désigner.
Unique Local Address
Le RFC 4193 définit un nouveau format d'adresse unicast : les adresses uniques locales (ULA : Unique Local Address). Ces adresses sont destinées à une utilisation locale. Elles ne sont pas définies pour être routées dans l'Internet, mais seulement au sein d'une zone limitée telle qu'un site ou entre un nombre limité de sites. La longueur du préfixe étant de 48 bits, elles peuvent se manipuler comme des adresses globales, avec un identifiant de sous-réseau (SID) sur 16 bits et un identifiant d'interface (IID) sur 64 bits
Les adresses uniques locales sont créées en utilisant un identifiant global (Global ID) généré pseudo-aléatoirement. Ces adresses suivent le format suivant :
- Prefix (7 bits) : FC00::/7 préfixe identifiant les adresses IPv6 locales (ULA)
- L (1 bit) : Positionné à 1, le préfixe est assigné localement. La valeur 0 est réservée pour une utilisation future.
- Global ID (40 bits) : Identifiant global utilisé pour la création d'un préfixe unique (Globally Unique Prefix).
- Subnet ID (16 bits) : Identifiant d'un sous réseau à l'intérieur du site.
- Interface ID (64 bits) : L'indentifiant d'interface tel que défini dans Identifiant d'interface.
Le site http://www.sixxs.net/tools/grh/ula/ permet de créer et d'enregistrer son adresse ULA à partir d'une adresse MAC.
Figure : Unique Local Addresses
Ce type d'adresse permet d'isoler la numérotation externe et interne. En IPv4, l'utilisation d'un préfixe privé (comme 10/8) évite à un site de renuméroter son réseau s'il change de fournisseur d'accès. Un NAT (que nous appellerons NAT44 dans la suite de ce document) permet de passer de l'adressage privé vers l'adressage public.
Avec les adresses de type ULA, il est possible de reproduire ce comportement en IPv6. Un dispositif en bordure de réseau va convertir le préfixe privé en préfixe public. Cet équipement, initialement appelé NAT66 a été renommé NPTv6 {Network Prefix Translation) car il ne possède pas les mêmes limitations que le NAT d'IPv4.
~
Les préfixes ULA se caractérise par une séquence aléatoire de 40 bits après le préfixe FC::/7. Cette valeur unique permet d'éviter les problèmes rencontrés en IPv4 lors de la fusion de réseau privées. Le risque de collision entre deux valeurs aléatoires sur 40 bits étant relativement faible, si deux réseaux fusionnent le fait d'avoir des préfixes uniques permet d'éviter des problèmes d'interconnexion si les SID ne le sont pas.
Structuration de l'identifiant d'interface (IID)
Si initialement pour des raisons d'auto-configuration, l'identifiant d'interface devait toujours être dérivé de l'adresse de niveau 2, c'est de moins en moins le cas. Il existe plusieurs méthodes pour construire cette valeur de 64 bits:
- manuelle,
- basée sur l'adresse de niveau 2 de l'interface,
- aléatoire,
- cryptographique.
Manuel
Le resolveur DNS
Le résolveur DNS est le cas le plus flagrant; chaque machine sur le réseau doit être configurée avec l'adresse IPv6 du serveur DNS. En cas de changement de carte réseau, l'ensemble des machines du domaine devront être reconfigurées. Si l'on ne souhaite pas utiliser des protocoles de configuration automatique de type DHCPv6, il est préférable d'attribuer au résolveur DNS une adresse manuelle.
Pour les serveurs les plus utilisés, il est préférable d'assigner manuellement des adresses aux interfaces, car dans ce cas l'adresse IPv6 est facilement mémorisable, et le serveur peut être accessible même si le DNS n'est pas actif.
Il existe plusieurs techniques plus ou moins mnémotechniques :
- incrémenter l'identifiant d'interface à chaque nouveau serveur créé
2001:DB8:1234:1::1
2001:DB8:1234:1::2
...
- reprendre le dernier octet de l'adresse IPv4 comme identifiant d'interface. Par exemple si un serveur a comme adresse IPv4 192.0.2.123, son adresse IPv6 sera :
2001:DB8:1234:1::7B
ou plus simplement
2001:DB8:1234:1::123
- reprendre l'adresse IPv4 comme identifiant d'interface, bien que cela ait l'inconvénient de conduire à des adresses plus longues à taper :
2001:DB8:1234:1::192.0.2.123
Dérivé de l'adresse de l'interface
L'avantage d'utiliser une adresse de niveau 2 pour construire un identifiant d'interface est que l'unicité de cette valeur est presque toujours assurée. En plus, cette valeur est stable tant que la carte réseau de la machine n'est pas changée. Par contre, ces valeurs sont difficilement mémorisables.
Les adresses lien-local sont construites en utilisant ce type d'identifiant. Par contre pour les adresses globales, il est conseillé de ne les utiliser que pour les machines client et de préférer les identifiants d'interface manuels pour les serveurs.
Ces identifiants d'interface étant stables dans le temps, à chaque fois qu'un individu change de réseau, il change de préfixe, mais garde le même identifiant d'interface. Ce dernier pourrait donc servir à tracer les déplacements d'un individu. Le risque est faible, car les cookies mis en place par les serveurs web sont bien plus efficaces, mais ils ne s'agit plus d'un problème réseau. Autre désavantage, comme les adresses MAC contiennent l'identification du matériel, il est possible d'indiquer à l'exterieur du réseau quel type de materiel est utilisé et donner des indications.
Si ces inconvénients sont jugés importants par l'entreprise, l'identifiant d'interface pour les adresses globales peut être généré aléatoirement.
EUI-64
Figure : Transformation d'une adresse MAC en identifiant d'interface
L'IEEE a défini un identificateur global à 64 bits (format EUI-64) pour les réseaux IEEE 1394 (firewire) ou IEEE 802.15.4 (réseau de capteurs) qui vise une utilisation dans le domaine de la domotique. L'IEEE décrit les règles qui permettent de passer d'un identifiant MAC codé sur 48 bits à un EUI-64.
Il existe plusieurs méthodes pour construire l'identifiant :
Ordre de transmission
L'ordre des bits ne doit pas porter à confusion. Dans la représentation numérique des valeurs, le premier bit transmis est le bit de poids faible, c'est-à-dire le bit de droite. Ainsi sur le support physique le bit g, puis le bit u puis les bits suivants sont transmis.
- Si une machine ou une interface possède un identificateur global IEEE EUI-64, celui-ci a la structure décrite figure Identificateur global IEEE EUI-64.
- Les 24 premiers bits de l'EUI-64, comme pour les adresses MAC IEEE 802, identifient le constructeur et les 40 autres bits identifient le numéro de série (les adresses MAC IEEE 802 n'en utilisaient que 24). Les 2 bits u (septième bit du premier octet) et g (huitième bit du premier octet) ont une signification spéciale :
- u (Universel) vaut 0 si l'identifiant EUI-64 est universel,
- g (Groupe) indique si l'adresse est individuelle (g = 0), c'est-à-dire désigne un seul équipement sur le réseau, ou de groupe (g = 1), par exemple une adresse de multicast.
Figure : Identificateur d'interface dérivé d'une EUI-64
- L'identifiant d'interface à 64 bits est dérivé de l'EUI-64 en inversant le bit u (cf. figure Identificateur d'interface dérivé d'une EUI-64). En effet, pour la construction des adresses IPv6, on a préféré utiliser 1 pour marquer l'unicité mondiale. Cette inversion de la sémantique du bit permet de garder la valeur 0 pour une numérotation manuelle, autorisant à numéroter simplement les interfaces locales à partir de 1.
MAC-48
Figure : Transformation d'une adresse MAC en identifiant d'interface
- Si une interface possède une adresse MAC IEEE 802 à 48 bits universelle (cas des interfaces Ethernet ou Wi-Fi). L'adresse est tout d'abord convertie en EUI-64, puis le bit u est mis à 1 comme dans le cas précédent. La figure ci-contre illustre ce processus.
Cas Particuliers
- Si une interface possède une adresse locale unique sur le lien, mais non universelle (par exemple le format d'adresse IEEE 802 sur 2 octets ou une adresse sur un réseau Appletalk), l'identifiant d'interface est construit à partir de cette adresse en rajoutant des 0 en tête pour atteindre 64 bits.
Erreur de l'IETF
À noter que l'IETF s'est trompée quand elle a défini l'algorithme de conversion. En effet, l'ajout de la valeur 0xFFFE concerne les EUI-48, c'est-à-dire des identifiants, alors qu'Ethernet utilise des MAC-48, c'est-à-dire des adresses (ils servent à transporter des trames vers le bon destinataire). La bonne valeur aurait été 0xFFFF. Mais cette erreur n'a aucune conséquence pour l'identification des équipements, elle n'a donc pas été corrigée par la suite.
- Si une interface ne possède aucune adresse (par exemple l'interface utilisée pour les liaisons PPP), et si la machine n'a pas d'identifiant EUI-64, il n'y a pas de méthode unique pour créer un identifiant d'interface. La méthode conseillée est d'utiliser l'identifiant d'une autre interface si c'est possible (cas d'une autre interface qui a une adresse MAC), ou une configuration manuelle ou bien une génération aléatoire, avec le bit u positionné à 0.
S'il y a conflit (les deux extrémités ont choisi la même valeur), il sera détecté lors de l'initialisation de l'adresse lien-local de l'interface, et devra être résolu manuellement.
Valeur aléatoire
L'identifiant d'interface basé sur des adresses MAC, comme indiqué précédemment, pourrait poser des problèmes pour la vie privée. Il identifie fortement la machine d'un utilisateur, qui même s'il se déplace de réseau en réseau garde ce même identifiant. Il serait alors possible de traquer un individu utilisant un portable, chez lui, au bureau, lors de ses déplacements. Ce problème est similaire à l'identificateur placé dans les processeurs Pentium III.
Pour couper court à toute menace de boycott d'un protocole qui « menacerait la vie privée », il a été proposé d'autres algorithmes de construction d'un identifiant d'interface basé sur des tirages aléatoires (voir RFC 3041). Un utilisateur particulièrement méfiant pourrait valider ces mécanismes. L'identifiant d'interface est soit choisi aléatoirement, soit construit par un algorithme comme MD5 à partir des valeurs précédentes, soit tiré au hasard si l'équipement ne peut pas mémoriser d'information entre deux démarrages. Périodiquement l'adresse est mise dans l'état « déprécié » et un nouvel identifiant d'interface est choisi. Les connexions déjà établies continuent d'utiliser l'ancienne valeur tandis que les nouvelles connexions utilisent la nouvelle adresse.
Cette solution a été adoptée par Microsoft. Dans Windows XP, l'interface possède deux adresses IPv6 globale. La première a un identifiant d'interface dérivé de l'adresse MAC. Elle sert aux applications attendant des connexions sur la machine (i.e. les applications serveur). Cette adresse est stable et peut être publiée dans le DNS. La seconde possède un identifiant d'interface tiré aléatoirement. Elle est changée tous les jours et sert aux applications client. Dans Windows 7, ce comportement est généralisé car l'identifiant d'interface de l'adresse permanente est également issu d'un tirage aléatoire. Cela permet d'éviter de donner la marque de la machine ou le type de carte contenu dans les premiers octets de l'identifiant d'interface. Elle est également présente, mais de manière optionnelle, sur Linux et les système d'exploitation BSD comme Mac OS.
Bien entendu pour que ces mécanismes aient un sens, il faut que l'équipement ne s'enregistre pas sous un même nom dans un serveur DNS inverse ou que l'enregistrement de cookies dans un navigateur Web pour identifier l'utilisateur soit impossible.
En contre partie, il est plus difficile à un administrateur réseau de filtrer les machines puisque celles-ci changent périodiquement d'adresses.
Cryptographique
Encore un sujet de recherche
L'usage de ces adresses n'est pas encore généralisé. Shim6 pour la gestion de la multi-domiciliation ou SEND pour sécuriser la découverte de voisins y ont recours.
Si un identifiant aléatoire permet de rendre beaucoup plus anonyme la source du paquet, des propositions sont faites à l'IETF pour lier l'identifiant d'interface à la clé publique de l'émetteur du paquet. Le RFC 3972 définit le principe de création de l'identifiant d'interface (CGA : Cryptographic Generated Addresses) à partir de la clé publique de la machine. Elles pourraient servir pour sécuriser les protocoles de découverte de voisins ou pour la gestion de la multi-domiciliation.
Adresses Multicast
Portée et portée
Il ne faut pas confondre la portée d'une adresse link-local ou multicast qui désigne l'interface par laquelle sera émis le paquet et la portée d'un groupe multicast qui désigné l'étendue de la couverture
Cette section décrit brièvement le système d'adressage multicast IPv6 et ne s'intéresse qu'aux adresses utilisées localement par les protocoles directement liés à IPv6 (Découverte de voisins, DHCPv6,...). Pour plus de détails sur le multicast en général, se reporter au chapitre Multicast. La figure Structure de l'adresse IPv6 Multicast donne le format de l'adresse IPv6 de multicast décrite dans le RFC 3513.
Figure : Structure de l'adresse IPv6 Multicast
Les adresses multicast IPv6 sont dérivées du préfixe FF00::/8. Le champ drapeaux de 4 bits est défini de la manière suivante :
- Seul le bit T (comme Transient) du champ drapeaux est initialement décrit dans le RFC 3513. La valeur 0 indique une adresse multicast bien connue gérée par une autorité. La valeur 1 indique une valeur temporaire.
- Les bits P et R sont décrits dans le RFC 3306 et le draft Internet sur embedded-RP (RFC 3956).
- Le bit de poids fort du champ drapeaux n'est pas encore attribué.
Le champ drapeaux permet de définir plusieurs types d'adresses multicast IPv6 qui seront décrits dans les sections suivantes.
Le champ scope de l'adresse multicast IPv6 permet d'en limiter la portée (scope en anglais). En IPv4, la portée d'un paquet est limitée par le champ TTL (Time To Live), de même des préfixes peuvent être définis pour identifier des adresses à portée réduite. Les valeurs suivantes sont définies dans la RFC 2373 :
- 1 - node-local : Les paquets ne sortent pas de la machine, cette adresse sert pour la communication entre les applications.
- 2 - link-local : La portée se limite au réseau local, les paquets ne peuvent pas traverser les routeurs multicast. Cette valeur est utilisée en particulier par le protocole de découverte des voisins.
- 3 - subnet-local : Ce type n'est pas officiellement défini, mais se retrouve dans certains documents. Il permet de faire la différence entre un lien physique et un lien logique (regroupement de plusieurs liens physiques) partageant le même préfixe IPv6.
- 4 - admin-local
- 5 - site-local
- 8 - organisation-local
- E - global
- Les portées 0 et F sont réservées.
http://www.iana.org/assignments/ipv6-multicast-addresses donne les adresses multicast définies. Le tableau ci-dessous liste les plus utilisées :
Adresse multicast
usage
FF01::1
All Nodes Address
FF01::2
All Routers Address
FF02::1
All Nodes Address
FF02::2
All Routers Address
FF02::5
OSPFIGP
FF02::6
OSPFIGP Designated Routers
FF02::9
RIP Routers
FF02::C
UPnP [1]
FF02::1:2
All-dhcp-agents
FF03::C
UPnP [2]
FF04::C
UPnP [3]
FF05::2
All Routers Address
FF05::C
UPnP [4]
FF05::1:3
All-dhcp-servers
FF0X::101
Network Time Protocol (NTP)
Adressage Multicast Sollicité
IPv6 interdit l'utilisation de la diffusion généralisée (Broadcast) lorsque le Multicast est disponible. Ainsi les protocoles comme Neighbor Discovery, chargé de faire le lien entre les adresses IPv6 et les adresses MAC (à l'instar d'ARP en IPv4) doivent utiliser une adresse de 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.
Figure : Construction de l'adresse de Multicast sollicité
La figure Construction de l'adresse de Multicast sollicité montre comment l'on passe d'une adresse IPv6 unicast à une adresse de multicast sollicité. Il s'agit de prendre les 3 derniers octets de l'adresse unicast que l'on concatène avec le préfixe IPv6 multicast FF02::1:FF00:0/104.
Dans l'exemple, les deux adresses dérivant d'une adresse MAC conduisent à la même adresse de multicast sollicité, tandis que la configuration manuelle d'une interface conduit à la construction d'une autre adresse de multicast sollicité. On peut noter que le risque que deux machines sur un lien aient la même adresse de multicast sollicité est très faible. Pour celles dérivant d'une adresse MAC, il faudrait que les 3 derniers octets soient identiques, ce qui est impossible chez un même constructeur et la probabilité d'avoir, sur un même lien, des cartes de deux constructeurs différents se terminant par les mêmes 3 derniers octets est très faible. Pour la numérotation manuelle des interfaces, une machine ayant l'adresse GP::0100:0001 conduirait à construire la même adresse de multicast sollicité FF02::1:FF00:0001, mais cette numérotation manuelle des interfaces n'est pas logique.
Sollicitation des voisins
L'algorithme de découverte des adresses de niveau 3 des voisins (inclus dans Neighbor Discovery) fonctionne de la manière suivante. La machine qui recherche un voisin dont elle connait l'adresse IPv6, effectue l'algorithme décrit précédemment. Elle émet la requête en utilisant l'adresse MAC obtenue. Seule la machine qui possède cette adresse est abonnée à ce groupe, elle sera donc la seule à traiter la requête et à y répondre.
L'exemple se poursuit par la transformation de l'adresse de Multicast au niveau IPv6 en adresse de multicast de niveau 2. Elle est très spécifique à la technologie et à la manière dont est mis en œuvre le multicast au niveau 2. Pour les réseaux Ethernet (et dérivés comme le Wi-Fi), les 4 derniers octets de l'adresse multicast sollicité sont ajoutés au préfixe 33-33.
Introduction
Table des matières
Mises en Oeuvre
La représentation textuelle d'une adresse IPv6 se fait en découpant le mot de 128 bits de l'adresse en 8 mots de 16 bits séparés par le caractère «:», chacun d'eux étant représenté en hexadécimal. Par exemple :
2001:0DB8:0000:0000:0400:A987:6543:210F
Dans un champ, il n'est pas nécessaire d'écrire les zéros placés en tête :
2001:DB8:0:0:400:A987:6543:210F
En outre plusieurs champs nuls consécutifs peuvent être abrégés par «::». Ainsi l'adresse précédente peut s'écrire comme suit :
2001:DB8::400:A987:6543:210F
Naturellement, pour éviter toute ambiguïté, l'abréviation «::» ne peut apparaître qu'une fois au plus dans une adresse. Les cas extrêmes sont l'adresse indéfinie (utilisée pour désigner les routes par défaut) à tous les bits à zéro et qui se note de manière compacte :
::
et l'adresse de bouclage (loopback), équivalent du préfixe 127/8 dont tous les bits sont à zéro sauf le dernier et qui s'écrit :
::1
La représentation des préfixes réseau IPv6 est similaire à la notation CIDR RFC 1519 utilisée pour les préfixes IPv4. Un préfixe IPv6 est donc représenté par la notation :
adresse-ipv6/longueur-du-préfixe-en-bits
Les formes abrégées avec «::» sont autorisées.
2001:0DB8:7654:3210:0000:0000:0000:0000/64 2001:DB8:7654:3210:0:0:0:0/64 2001:DB8:7654:3210::/64
Le seul piège de cette notation vient des longueurs de préfixes qui ne sont pas en frontière de «:». Ainsi le préfixe 3EDC:BA98:7654:3::/56 équivaut en réalité à 3EDC:BA98:7654:0000::/56 car il s'écrit 3EDC:BA98:7654:0003::/56.
On peut combiner le préfixe réseau avec l'identifiant de l'interface en une seule notation. Ainsi cette adresse IPV6
2001:DB8:7654:3210:945:1321:ABA8:F4E2/64
indique que le préfixe réseau est constitué par les 64 premiers bits.
Apprendre à gaspiller
Du fait de sa longueur, une règle de bonne gestion consiste à relâcher les contraintes sur les longueurs de préfixe. Ainsi en utilisant quand cela est possible des multiples de 4 permet d'avoir un préfixe qui tient sur un caractère affiché. Dans l'exemple suivant 47 n'étant pas un multiple de 4, 2001:DB0:1234::/47 représente les préfixes commençant par 2001:DB0:1234 et 2001:DB0:1235
Ces représentations peuvent apparaître beaucoup plus complexes qu'avec IPv4, mais en vérité des adresses logiques ou concises peuvent être constituées au moyen de règles strictes. Ces règles favorisent grandement la manipulation et la mémorisation des adresses comme nous verrons par la suite (cf Adressage global)
Dans certains cas, une adresse (voire plusieurs adresses) IPv4 peut être contenue dans une adresse IPv6. Pour les faire ressortir, la notation classique d'IPv4, c'est à dire 4 octets en représentation décimale séparés par des points, peut être utilisée au sein d'une adresse IPv6. Ainsi :
::128.12.13.14
représente une adresse IPv6 composée de 96 bits à 0 suivis des 32 bits de l'adresse IPv4 128.12.13.14
Il est pourtant parfois nécessaire de manipuler littéralement des adresses IPv6. Le caractère ":" utilisé pour séparer les mots peut créer des ambiguïtés. C'est le cas avec les URL où il est aussi utilisé pour indiquer le numéro de port. Ainsi l'URL
http://2001:DB8:12::1:8000/
peut aussi bien indiquer le port 8000 sur la machine ayant l'adresse IPv6 2001:DB8:12::1, que la machine 2001:DB8:12::1:8000 en utilisant le port par défaut. Pour lever cette ambiguïté, le RFC 2732 propose d'inclure l'adresse IPv6 entre "[ ]". L'adresse précédente s'écrirait :
http://[2001:DB8:12::1]:8000/
ou
http://[2001:DB8:12::1:8000]/
suivant les cas. Cette représentation peut être étendue à d'autres domaines comme X-window ou au protocole de signalisation téléphonique SIP.
Type des adresses
IPv6 reconnaît trois types d'adresses : unicast, multicast et anycast. Le type d'adresse définit la cardinalité de la communication: à combien de destinataire doit être remis le paquet.
Le premier de ces types désigne de manière unique une interface. Un paquet envoyé à une telle adresse, sera donc remis à l'interface ainsi identifiée. Parmi les adresses unicast, on peut distinguer celles qui auront une portée globale, c'est-à-dire désignant sans ambiguïté une destination sur le réseau Internet et celles qui auront une portée locale (lien ou site). Ces dernières ne pourront pas être routées sur l'Internet c'est à dire qu'un paquet comportant une adresse de destination avec une portée locale sera ignoré et éliminé par un routeur de l'Internet. La portée d'une adresse indique en faite la limite de la propriété d'unicité.
Une adresse de type multicast désigne un groupe d'interfaces qui en général appartiennent à des noeuds différents pouvant être situés n'importe où dans l'Internet. Lorsqu'un paquet a pour destination une adresse de type multicast, il est acheminé par le réseau à toutes les interfaces membres de ce groupe.
Il faut noter qu'il n'y a plus d'adresses de type broadcast comme sous IPv4 ; elles sont remplacées par des adresses de type multicast. En effet, l'adresse de broadcast peut être émulée avec une adresse multicast en constituant un groupe qui comporte tous les noeuds. De plus, l'absence de broadcast évite les problèmes de saturation des réseaux locaux commutés. Ainsi un réseau IPV6 passe mieux en terme de facteur d'échelle sur ce type de réseau.
Le dernier type, anycast, est une officialisation de propositions faites pour IPv4 RFC 1546. Comme dans le cas du multicast, une adresse de type anycast désigne un groupe d'interfaces, la différence étant que lorsqu'un paquet a pour destination une telle adresse, il est acheminé à un des éléments du groupe et non pas à tous. C'est, par exemple, le plus proche au sens de la métrique des protocoles de routage. Cet adressage est principalement expérimental, voir Adresses anycast.
Certains types d'adresses sont caractérisés par leur préfixe RFC 3513. Le tableau suivant (source : http://www.iana.org/assignments/ipv6-address-space) donne la liste de ces préfixes. La plage «réservée» du préfixe 0::/8 est utilisée pour les adresses spéciales (adresse indéterminée, de bouclage, mappée, compatible). On notera que plus de 70% de l'espace disponible n'a pas été alloué, ce qui permet de conserver toute latitude pour l'avenir.
Préfixe IPv6 | Allouer | Référence |
---|---|---|
0000::/8 | Réservé pour la transition et loopback | RFC 3513 |
0100::/8 | Réservé | RFC 3513 |
0200::/7 | Réservé (ex NSAP) | RFC 4048 |
0400::/6 | Réservé (ex IPX) | RFC 3513 |
0800::/5 | Réservé | RFC 3513 |
1000::/4 | Réservé | RFC 3513 |
2000::/3 | Unicast Global | RFC 3513 |
4000::/3 | Réservé | RFC 3513 |
6000::/3 | Réservé | RFC 3513 |
8000::/3 | Réservé | RFC 3513 |
A000::/3 | Réservé | RFC 3513 |
C000::/3 | Réservé | RFC 3513 |
E000::/4 | Réservé | RFC 3513 |
F000::/5 | Réservé | RFC 3513 |
F800::/6 | Réservé | RFC 3513 |
FC00::/7 | Unique Local Unicast | RFC 4193 |
FE00::/9 | Réservé | RFC 3513 |
FE80::/10 | Lien-local | RFC 3513 |
FEC0::/10 | Réservé | RFC 3879 |
FF00::/8 | Multicast | RFC 3513 |
Une interface possèdera généralement plusieurs adresses IPv6. En IPv4 ce comportement est exceptionnel, il est banalisé en IPv6.
Adressage global : plan d'adressage agrégé
Ce plan, proposée dans le RFC 3587, précise la structure d'adressage IPv6 définie dans le RFC 3513 en précisant les tailles de chacun des blocs. Il est géré de la même manière que CIDR en IPv4. Une adresse intègre trois niveaux de hiérarchie :
Figure : Adresses Globales
- une topologie publique (appelée Global Prefix) codée sur 48 bits, allouée par le fournisseur d'accès;
- une topologie de site codée sur 16 bits (appelée Subnet ID). Ce champ permet de coder les numéros de sous réseau du site;
- un identifiant d'interface sur 64 bits (appelé Interface ID) distinguant les différentes machines sur le lien.
Structuration du prefixe global (GP)
Appréhender les tailles
France Télécom a obtenu du RIPE-NCC un /19. Si l'on enlève les troix premiers bits 001 désignant le plan d'adressage, il est donc possible d'avoir 216 opérateurs. Sachant qu'il y a 192 pays à l'ONU, ils pourraient chacun abriter 320 opérateurs de la taille de FT, chacun pouvant attribuer jusqu'à 229 /48, soit 536 870 912 sites
A part le préfixe 2002:: qui est réservé au mécanisme de transition 6to4, cet espace est géré hierarchiquement comme pour IPv4. L'IANA délègue aux 5 autorités régionales (RIR) des préfixes actuellement de longueur 12 (cf. http://www.iana.org/assignments/ipv6-unicast-address-assignments) qui les redistribuent aux ISP de leur région. Suivant leur taille, les opérateurs reçoivent un préfixe plus ou moins long. Le site http://www.sixxs.net/tools/grh/ donne en temps réel les allocations de préfixes par région, opérateur et pays.
Il est maintenant admis que le préfixe attribué par un opérateur à ses clients peut également être un /56. En effet, si l'on garde l'attribution de préfixe de longueur 48 pour les sites terminaux, et que l'on intègre les réseaux domotiques, les opérateurs peuvent justifier d'un besoin important d'adresses que les autorités régionales ne peuvent leur refuser.
TODO | Ajouter comment obtenir un préfixe auprès de RIPE-NCC |
Structuration de l'identifiant de sous-réseau (SID)
Il n'existe pas de règles pour allouer les identificateurs de sous-réseau au sein d'un site. Plusieurs techniques (non exclusives) peuvent être utilisées :
- numéroter de manière incrémentale les sous-réseaux: 0001, 0002, ... Cette technique est simple a mettre en œuvre dans des réseaux expérimentaux, mais elle peut conduire à un plan d'adressage à plat difficile à mémoriser. Elle peut être utilisée par exemple pour un sous-réseau dédié aux serveurs pour simplifier l'écriture et la mémorisation des adresses.
- utiliser le numéro de VLAN. Elle permet d'éviter de mémoriser plusieurs niveaux de numérotation.
- séparer les types de réseaux et utiliser les chiffres de gauche pour les désigner. Cette technique permet de faciliter les règles de filtrage, tout en utilisant des règles appropriées à la gestion de ces sous-réseaux pour la partie de droite. À titre d'exemple, le tableau suivant contient le plan de numérotation d'une université localisée sur plusieurs sites prenant en compte les différentes communautés d'utilisateurs :
Communauté | 4bits | 8bits | 4bits |
---|---|---|---|
Infrastructure | 0 | valeurs spécifiques | |
Tests | 1 | valeurs spécifiques | |
Tunnels | 6 | allocation de /60 aux utilisateurs | |
Invités Wi-Fi | 8 | valeurs spécifiques | |
Personnels | A | Entité | Sous-Réseaux |
Etudiants | E | Entité | Sous-Réseaux |
Autres (Start up, etc.) | F | valeurs spécifiques |
Ainsi, le préfixe:
- 2001:DB8:1234::/52 servira pour la création de l'infrastructure, donc en particulier les adresses des interfaces des routeurs seront prises dans cet espace;
- 2001:DB8:1234:8000::/52 servira pour le réseau Wi-Fi des invités. La manière dont sont gérés les 12 bits restants du SID ne sont pas spécifiés;
- 2001:DB8:1234:E000::/52 servira pour le réseau des étudiants. L'entité représente la localisation géographique du campus. Dans chacun de ces campus, il sera possible d'avoir jusqu'à 16 sous-réseaux différents pour cette communauté.
Adressage local : adresses lien-local
Les adresses de type lien-local (link local use address) sont des adresses dont la validité est restreinte à un lien, c'est-à-dire l'ensemble de interfaces directement connectées sans routeur intermédiaire comme par exemple des machines branchées sur un même réseau Ethernet, des machines reliées par une connexion PPP, ou des extrémités d'un tunnel. Les adresses lien-local sont configurées automatiquement à l'initialisation de l'interface et permettent la communication entre nœuds voisins. L'adresse est obtenue en concaténant le préfixe FE80::/64 aux 64 bits de l'identifiant d'interface. L'identifiant d'interface est généralement basé sur l'adresse MAC. Cela ne pose pas de problème de respect de le vie privée car, contrairement aux adresses globales, les adresses lien-local ne sortent jamais du réseau où elles sont utilisées.
Figure : Adresses Lien-local
Ces adresses sont utilisées par les protocoles de configuration d'adresse globale, de découverte de voisins (neighbor discovery) et de découverte de routeurs (router discovery). Ce sont de nouveaux dispositifs, le premier supplantant en particulier le protocole ARP (Address Resolution Protocol), qui permettent à un réseau local de se configurer automatiquement (voir Découverte de voisins). Elles sont également largement utilisées par les protocoles de routage soit pour l'échange de données (cf. RIPng, OSPFv3), soit dans les tables de routage puisque le champ prochain routeur est toujours un équipement directement accessible sur le lien.
Unicité sur le lien
Les adresses lien-local sont uniques à l'intérieur d'un lien. Le protocole de détection de duplication d'adresses (voir Détection d'adresse dupliquée) permet de s'en assurer. Par contre la duplication d'une adresse lien-local entre deux liens différents, ou entre deux interfaces d'un même nœud est autorisée.
Un routeur ne doit en aucun cas retransmettre un paquet ayant pour adresse source ou destination une adresse de type lien-local.
Le fait que ces adresses aient une portée très faible les limite dans la pratique au cas où un démarrage automatique (bootstrap) est nécessaire. Leur usage ne doit pas être généralisé dans les applications classiques en régime stabilisé.
Portée de l'adresse (scoped address)
Une adresse lien-local (ou multicast) n'indique pas intrinsèquement l'interface de sortie, puisque toutes les interfaces partagent le même préfixe fe80::/10. Il faut donc indiquer de manière explicite sur quelle interface doivent être émis les paquets. Sur certains systèmes d'exploitation (BSD, Mac OS, Windows), il est possible de la spécifier en ajoutant à la fin de l'adresse le nom de l'interface voulue, précédé du caractère "%". Sous Linux, un argument, généralement -I permet de la désigner.
Unique Local Address
Le RFC 4193 définit un nouveau format d'adresse unicast : les adresses uniques locales (ULA : Unique Local Address). Ces adresses sont destinées à une utilisation locale. Elles ne sont pas définies pour être routées dans l'Internet, mais seulement au sein d'une zone limitée telle qu'un site ou entre un nombre limité de sites. La longueur du préfixe étant de 48 bits, elles peuvent se manipuler comme des adresses globales, avec un identifiant de sous-réseau (SID) sur 16 bits et un identifiant d'interface (IID) sur 64 bits
Les adresses uniques locales sont créées en utilisant un identifiant global (Global ID) généré pseudo-aléatoirement. Ces adresses suivent le format suivant :
- Prefix (7 bits) : FC00::/7 préfixe identifiant les adresses IPv6 locales (ULA)
- L (1 bit) : Positionné à 1, le préfixe est assigné localement. La valeur 0 est réservée pour une utilisation future.
- Global ID (40 bits) : Identifiant global utilisé pour la création d'un préfixe unique (Globally Unique Prefix).
- Subnet ID (16 bits) : Identifiant d'un sous réseau à l'intérieur du site.
- Interface ID (64 bits) : L'indentifiant d'interface tel que défini dans Identifiant d'interface.
Le site http://www.sixxs.net/tools/grh/ula/ permet de créer et d'enregistrer son adresse ULA à partir d'une adresse MAC.
Figure : Unique Local Addresses
Ce type d'adresse permet d'isoler la numérotation externe et interne. En IPv4, l'utilisation d'un préfixe privé (comme 10/8) évite à un site de renuméroter son réseau s'il change de fournisseur d'accès. Un NAT (que nous appellerons NAT44 dans la suite de ce document) permet de passer de l'adressage privé vers l'adressage public.
Avec les adresses de type ULA, il est possible de reproduire ce comportement en IPv6. Un dispositif en bordure de réseau va convertir le préfixe privé en préfixe public. Cet équipement, initialement appelé NAT66 a été renommé NPTv6 {Network Prefix Translation) car il ne possède pas les mêmes limitations que le NAT d'IPv4.
~
Les préfixes ULA se caractérise par une séquence aléatoire de 40 bits après le préfixe FC::/7. Cette valeur unique permet d'éviter les problèmes rencontrés en IPv4 lors de la fusion de réseau privées. Le risque de collision entre deux valeurs aléatoires sur 40 bits étant relativement faible, si deux réseaux fusionnent le fait d'avoir des préfixes uniques permet d'éviter des problèmes d'interconnexion si les SID ne le sont pas.
Structuration de l'identifiant d'interface (IID)
Si initialement pour des raisons d'auto-configuration, l'identifiant d'interface devait toujours être dérivé de l'adresse de niveau 2, c'est de moins en moins le cas. Il existe plusieurs méthodes pour construire cette valeur de 64 bits:
- manuelle,
- basée sur l'adresse de niveau 2 de l'interface,
- aléatoire,
- cryptographique.
Manuel
Le resolveur DNS
Le résolveur DNS est le cas le plus flagrant; chaque machine sur le réseau doit être configurée avec l'adresse IPv6 du serveur DNS. En cas de changement de carte réseau, l'ensemble des machines du domaine devront être reconfigurées. Si l'on ne souhaite pas utiliser des protocoles de configuration automatique de type DHCPv6, il est préférable d'attribuer au résolveur DNS une adresse manuelle.
Pour les serveurs les plus utilisés, il est préférable d'assigner manuellement des adresses aux interfaces, car dans ce cas l'adresse IPv6 est facilement mémorisable, et le serveur peut être accessible même si le DNS n'est pas actif. Il existe plusieurs techniques plus ou moins mnémotechniques :
- incrémenter l'identifiant d'interface à chaque nouveau serveur créé
2001:DB8:1234:1::1 2001:DB8:1234:1::2 ...
- reprendre le dernier octet de l'adresse IPv4 comme identifiant d'interface. Par exemple si un serveur a comme adresse IPv4 192.0.2.123, son adresse IPv6 sera :
2001:DB8:1234:1::7B
ou plus simplement
2001:DB8:1234:1::123
- reprendre l'adresse IPv4 comme identifiant d'interface, bien que cela ait l'inconvénient de conduire à des adresses plus longues à taper :
2001:DB8:1234:1::192.0.2.123
Dérivé de l'adresse de l'interface
L'avantage d'utiliser une adresse de niveau 2 pour construire un identifiant d'interface est que l'unicité de cette valeur est presque toujours assurée. En plus, cette valeur est stable tant que la carte réseau de la machine n'est pas changée. Par contre, ces valeurs sont difficilement mémorisables.
Les adresses lien-local sont construites en utilisant ce type d'identifiant. Par contre pour les adresses globales, il est conseillé de ne les utiliser que pour les machines client et de préférer les identifiants d'interface manuels pour les serveurs.
Ces identifiants d'interface étant stables dans le temps, à chaque fois qu'un individu change de réseau, il change de préfixe, mais garde le même identifiant d'interface. Ce dernier pourrait donc servir à tracer les déplacements d'un individu. Le risque est faible, car les cookies mis en place par les serveurs web sont bien plus efficaces, mais ils ne s'agit plus d'un problème réseau. Autre désavantage, comme les adresses MAC contiennent l'identification du matériel, il est possible d'indiquer à l'exterieur du réseau quel type de materiel est utilisé et donner des indications.
Si ces inconvénients sont jugés importants par l'entreprise, l'identifiant d'interface pour les adresses globales peut être généré aléatoirement.
EUI-64
Figure : Transformation d'une adresse MAC en identifiant d'interface
L'IEEE a défini un identificateur global à 64 bits (format EUI-64) pour les réseaux IEEE 1394 (firewire) ou IEEE 802.15.4 (réseau de capteurs) qui vise une utilisation dans le domaine de la domotique. L'IEEE décrit les règles qui permettent de passer d'un identifiant MAC codé sur 48 bits à un EUI-64.
Il existe plusieurs méthodes pour construire l'identifiant :
Ordre de transmission
L'ordre des bits ne doit pas porter à confusion. Dans la représentation numérique des valeurs, le premier bit transmis est le bit de poids faible, c'est-à-dire le bit de droite. Ainsi sur le support physique le bit g, puis le bit u puis les bits suivants sont transmis.
- Si une machine ou une interface possède un identificateur global IEEE EUI-64, celui-ci a la structure décrite figure Identificateur global IEEE EUI-64.
- Les 24 premiers bits de l'EUI-64, comme pour les adresses MAC IEEE 802, identifient le constructeur et les 40 autres bits identifient le numéro de série (les adresses MAC IEEE 802 n'en utilisaient que 24). Les 2 bits u (septième bit du premier octet) et g (huitième bit du premier octet) ont une signification spéciale :
- u (Universel) vaut 0 si l'identifiant EUI-64 est universel,
- g (Groupe) indique si l'adresse est individuelle (g = 0), c'est-à-dire désigne un seul équipement sur le réseau, ou de groupe (g = 1), par exemple une adresse de multicast.
Figure : Identificateur d'interface dérivé d'une EUI-64
- L'identifiant d'interface à 64 bits est dérivé de l'EUI-64 en inversant le bit u (cf. figure Identificateur d'interface dérivé d'une EUI-64). En effet, pour la construction des adresses IPv6, on a préféré utiliser 1 pour marquer l'unicité mondiale. Cette inversion de la sémantique du bit permet de garder la valeur 0 pour une numérotation manuelle, autorisant à numéroter simplement les interfaces locales à partir de 1.
MAC-48
Figure : Transformation d'une adresse MAC en identifiant d'interface
- Si une interface possède une adresse MAC IEEE 802 à 48 bits universelle (cas des interfaces Ethernet ou Wi-Fi). L'adresse est tout d'abord convertie en EUI-64, puis le bit u est mis à 1 comme dans le cas précédent. La figure ci-contre illustre ce processus.
Cas Particuliers
- Si une interface possède une adresse locale unique sur le lien, mais non universelle (par exemple le format d'adresse IEEE 802 sur 2 octets ou une adresse sur un réseau Appletalk), l'identifiant d'interface est construit à partir de cette adresse en rajoutant des 0 en tête pour atteindre 64 bits.
Erreur de l'IETF
À noter que l'IETF s'est trompée quand elle a défini l'algorithme de conversion. En effet, l'ajout de la valeur 0xFFFE concerne les EUI-48, c'est-à-dire des identifiants, alors qu'Ethernet utilise des MAC-48, c'est-à-dire des adresses (ils servent à transporter des trames vers le bon destinataire). La bonne valeur aurait été 0xFFFF. Mais cette erreur n'a aucune conséquence pour l'identification des équipements, elle n'a donc pas été corrigée par la suite.
- Si une interface ne possède aucune adresse (par exemple l'interface utilisée pour les liaisons PPP), et si la machine n'a pas d'identifiant EUI-64, il n'y a pas de méthode unique pour créer un identifiant d'interface. La méthode conseillée est d'utiliser l'identifiant d'une autre interface si c'est possible (cas d'une autre interface qui a une adresse MAC), ou une configuration manuelle ou bien une génération aléatoire, avec le bit u positionné à 0.
S'il y a conflit (les deux extrémités ont choisi la même valeur), il sera détecté lors de l'initialisation de l'adresse lien-local de l'interface, et devra être résolu manuellement.
Valeur aléatoire
L'identifiant d'interface basé sur des adresses MAC, comme indiqué précédemment, pourrait poser des problèmes pour la vie privée. Il identifie fortement la machine d'un utilisateur, qui même s'il se déplace de réseau en réseau garde ce même identifiant. Il serait alors possible de traquer un individu utilisant un portable, chez lui, au bureau, lors de ses déplacements. Ce problème est similaire à l'identificateur placé dans les processeurs Pentium III.
Pour couper court à toute menace de boycott d'un protocole qui « menacerait la vie privée », il a été proposé d'autres algorithmes de construction d'un identifiant d'interface basé sur des tirages aléatoires (voir RFC 3041). Un utilisateur particulièrement méfiant pourrait valider ces mécanismes. L'identifiant d'interface est soit choisi aléatoirement, soit construit par un algorithme comme MD5 à partir des valeurs précédentes, soit tiré au hasard si l'équipement ne peut pas mémoriser d'information entre deux démarrages. Périodiquement l'adresse est mise dans l'état « déprécié » et un nouvel identifiant d'interface est choisi. Les connexions déjà établies continuent d'utiliser l'ancienne valeur tandis que les nouvelles connexions utilisent la nouvelle adresse.
Cette solution a été adoptée par Microsoft. Dans Windows XP, l'interface possède deux adresses IPv6 globale. La première a un identifiant d'interface dérivé de l'adresse MAC. Elle sert aux applications attendant des connexions sur la machine (i.e. les applications serveur). Cette adresse est stable et peut être publiée dans le DNS. La seconde possède un identifiant d'interface tiré aléatoirement. Elle est changée tous les jours et sert aux applications client. Dans Windows 7, ce comportement est généralisé car l'identifiant d'interface de l'adresse permanente est également issu d'un tirage aléatoire. Cela permet d'éviter de donner la marque de la machine ou le type de carte contenu dans les premiers octets de l'identifiant d'interface. Elle est également présente, mais de manière optionnelle, sur Linux et les système d'exploitation BSD comme Mac OS.
Bien entendu pour que ces mécanismes aient un sens, il faut que l'équipement ne s'enregistre pas sous un même nom dans un serveur DNS inverse ou que l'enregistrement de cookies dans un navigateur Web pour identifier l'utilisateur soit impossible.
En contre partie, il est plus difficile à un administrateur réseau de filtrer les machines puisque celles-ci changent périodiquement d'adresses.
Cryptographique
Encore un sujet de recherche
L'usage de ces adresses n'est pas encore généralisé. Shim6 pour la gestion de la multi-domiciliation ou SEND pour sécuriser la découverte de voisins y ont recours.
Si un identifiant aléatoire permet de rendre beaucoup plus anonyme la source du paquet, des propositions sont faites à l'IETF pour lier l'identifiant d'interface à la clé publique de l'émetteur du paquet. Le RFC 3972 définit le principe de création de l'identifiant d'interface (CGA : Cryptographic Generated Addresses) à partir de la clé publique de la machine. Elles pourraient servir pour sécuriser les protocoles de découverte de voisins ou pour la gestion de la multi-domiciliation.
Adresses Multicast
Portée et portée
Il ne faut pas confondre la portée d'une adresse link-local ou multicast qui désigne l'interface par laquelle sera émis le paquet et la portée d'un groupe multicast qui désigné l'étendue de la couverture
Cette section décrit brièvement le système d'adressage multicast IPv6 et ne s'intéresse qu'aux adresses utilisées localement par les protocoles directement liés à IPv6 (Découverte de voisins, DHCPv6,...). Pour plus de détails sur le multicast en général, se reporter au chapitre Multicast. La figure Structure de l'adresse IPv6 Multicast donne le format de l'adresse IPv6 de multicast décrite dans le RFC 3513.
Figure : Structure de l'adresse IPv6 Multicast
Les adresses multicast IPv6 sont dérivées du préfixe FF00::/8. Le champ drapeaux de 4 bits est défini de la manière suivante :
- Seul le bit T (comme Transient) du champ drapeaux est initialement décrit dans le RFC 3513. La valeur 0 indique une adresse multicast bien connue gérée par une autorité. La valeur 1 indique une valeur temporaire.
- Les bits P et R sont décrits dans le RFC 3306 et le draft Internet sur embedded-RP (RFC 3956).
- Le bit de poids fort du champ drapeaux n'est pas encore attribué.
Le champ drapeaux permet de définir plusieurs types d'adresses multicast IPv6 qui seront décrits dans les sections suivantes.
Le champ scope de l'adresse multicast IPv6 permet d'en limiter la portée (scope en anglais). En IPv4, la portée d'un paquet est limitée par le champ TTL (Time To Live), de même des préfixes peuvent être définis pour identifier des adresses à portée réduite. Les valeurs suivantes sont définies dans la RFC 2373 :
- 1 - node-local : Les paquets ne sortent pas de la machine, cette adresse sert pour la communication entre les applications.
- 2 - link-local : La portée se limite au réseau local, les paquets ne peuvent pas traverser les routeurs multicast. Cette valeur est utilisée en particulier par le protocole de découverte des voisins.
- 3 - subnet-local : Ce type n'est pas officiellement défini, mais se retrouve dans certains documents. Il permet de faire la différence entre un lien physique et un lien logique (regroupement de plusieurs liens physiques) partageant le même préfixe IPv6.
- 4 - admin-local
- 5 - site-local
- 8 - organisation-local
- E - global
- Les portées 0 et F sont réservées.
http://www.iana.org/assignments/ipv6-multicast-addresses donne les adresses multicast définies. Le tableau ci-dessous liste les plus utilisées :
Adresse multicast | usage |
---|---|
FF01::1 | All Nodes Address |
FF01::2 | All Routers Address |
FF02::1 | All Nodes Address |
FF02::2 | All Routers Address |
FF02::5 | OSPFIGP |
FF02::6 | OSPFIGP Designated Routers |
FF02::9 | RIP Routers |
FF02::C | UPnP [1] |
FF02::1:2 | All-dhcp-agents |
FF03::C | UPnP [2] |
FF04::C | UPnP [3] |
FF05::2 | All Routers Address |
FF05::C | UPnP [4] |
FF05::1:3 | All-dhcp-servers |
FF0X::101 | Network Time Protocol (NTP) |
Adressage Multicast Sollicité
IPv6 interdit l'utilisation de la diffusion généralisée (Broadcast) lorsque le Multicast est disponible. Ainsi les protocoles comme Neighbor Discovery, chargé de faire le lien entre les adresses IPv6 et les adresses MAC (à l'instar d'ARP en IPv4) doivent utiliser une adresse de 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.
Figure : Construction de l'adresse de Multicast sollicité
La figure Construction de l'adresse de Multicast sollicité montre comment l'on passe d'une adresse IPv6 unicast à une adresse de multicast sollicité. Il s'agit de prendre les 3 derniers octets de l'adresse unicast que l'on concatène avec le préfixe IPv6 multicast FF02::1:FF00:0/104.
Dans l'exemple, les deux adresses dérivant d'une adresse MAC conduisent à la même adresse de multicast sollicité, tandis que la configuration manuelle d'une interface conduit à la construction d'une autre adresse de multicast sollicité. On peut noter que le risque que deux machines sur un lien aient la même adresse de multicast sollicité est très faible. Pour celles dérivant d'une adresse MAC, il faudrait que les 3 derniers octets soient identiques, ce qui est impossible chez un même constructeur et la probabilité d'avoir, sur un même lien, des cartes de deux constructeurs différents se terminant par les mêmes 3 derniers octets est très faible. Pour la numérotation manuelle des interfaces, une machine ayant l'adresse GP::0100:0001 conduirait à construire la même adresse de multicast sollicité FF02::1:FF00:0001, mais cette numérotation manuelle des interfaces n'est pas logique.
Sollicitation des voisins
L'algorithme de découverte des adresses de niveau 3 des voisins (inclus dans Neighbor Discovery) fonctionne de la manière suivante. La machine qui recherche un voisin dont elle connait l'adresse IPv6, effectue l'algorithme décrit précédemment. Elle émet la requête en utilisant l'adresse MAC obtenue. Seule la machine qui possède cette adresse est abonnée à ce groupe, elle sera donc la seule à traiter la requête et à y répondre.
L'exemple se poursuit par la transformation de l'adresse de Multicast au niveau IPv6 en adresse de multicast de niveau 2. Elle est très spécifique à la technologie et à la manière dont est mis en œuvre le multicast au niveau 2. Pour les réseaux Ethernet (et dérivés comme le Wi-Fi), les 4 derniers octets de l'adresse multicast sollicité sont ajoutés au préfixe 33-33.
Introduction | Table des matières | Mises en Oeuvre |