Supports de transmission
From Livre IPv6
La méthode de transport d'un datagramme IPv6 entre deux machines directement reliées entre elles par un lien physique est le même que pour IPv4 : le datagramme est tout d'abord routé vers une interface d'émission qui l'encapsule dans une trame (PDU de niveau 2 dans le modèle de référence de l'OSI) ; cette trame est transmise sur le lien vers l'adresse physique de la machine destination (cette adresse sur un lien sera appelée Adresse MAC dans la suite) ; la machine destination reçoit la trame sur son interface, la décapsule et la traite.
Les différences avec IPv4 sont :
- Le code protocole encapsulé de la trame est différent. Par exemple, pour les réseaux à diffusion, le code est 0x86DD alors que pour IPv4 le code est 0x0800. À l'origine, il était prévu de garder le même code et d'assurer l'aiguillage entre IPv4 et IPv6 en utilisant le champ version du paquet. Mais certains équipements ne vérifient pas la valeur de ce champ et auraient eu un comportement incontrôlable en essayant de traiter un paquet IPv6 comme un paquet IPv4.
- Le calcul de l'adresse MAC destination change. Par exemple sur un réseau à diffusion le calcul est fait en IPv4 par le protocole ARP, alors qu'en IPv6 on utilise le protocole de découverte de voisins .
- La taille minimale d'une trame est passée à 1 280 octets; ceci peut forcer certains protocoles à utiliser plusieurs trames par datagramme IPv6.
- Enfin, certains protocoles ont des parties propres à IPv4. Ces parties doivent être modifiés. C'est le cas des protocoles de contrôle et de compression de PPP.
Réseaux à diffusion
Les réseaux à diffusion ont tous une approche de transport similaire, utilisant le protocole de découverte de voisins pour trouver l'adresse du destinataire. Ce chapitre décrit les réseaux les plus courants, sans chercher l'exhaustivité.
Ethernet (RFC 2464)
Les datagrammes IPv6 utilisent l'encapsulation standard Ethernet V2, chaque trame contenant un seul datagramme. Nous décrivons ici le cas de l'Ethernet natif, mais la méthode s'étend immédiatement aux VLAN IEEE 802.1q.
L'en-tête de la trame Ethernet contient les adresses Ethernet source et destination, et le champ type de protocole vaut 0x86DD. La structure d'une trame est donnée See Encapsulation Ethernet.
La taille maximale d'un datagramme pouvant être transmis directement par une interface Ethernet (MTU) est normalement de 1 500 octets. Une valeur différente peut être forcée par configuration manuelle ou en utilisant l'option MTU des annonces de routeurs.
Pour la construction des adresses lien-local et des adresses auto-configurées, l'identifiant d'interface est celui dérivé de l'adresse MAC IEEE 802 constructeur de l'interface Ethernet, selon le procédé décrit au paragraphe See Identifiant d'interface See Identifiant d'interface . Par exemple si une carte Ethernet a pour adresse constructeur 34:56:78:9A:BC:DE, l'identifiant d'interface sera et l'adresse lien-local de l'interface aura pour valeur FE80::3456:78FF:FE9A:BCDE. La See Relation entre les adresses MAC et IPv6 montre les relations entre les adresses MAC et IPv6. L'identifiant d'interface dérive de l'adresse MAC. À partir de cet identifiant est construit l'adresse lien-local et le plus souvent l'adresse dans le plan agrégé. L'adresse de multicast sollicité est construite à partir des trois derniers octets des adresses unicasts. De cette adresse de multicast sollicité est déduite l'adresse MAC de multicast.
Pour une adresse IPv6 destination unicast ou anycast, le calcul de l'adresse MAC correspondant est fait par le protocole de découverte de voisin . Dans les messages du protocole, le format de l'option See Découverte des voisins (cf. See Adresse physique de la source/cible) est donné par la See Option adresse physique Source/Cible pour Ethernet/FDDI avec :
- type : type de l'option (1 ou 2),
- lg : 1 (8 octets).
Pour les adresses de multicast, le protocole de découverte des voisins n'est pas utilisable. L'adresse Ethernet est calculée en concaténant le préfixe 0x3333 et les 4 octets de poids faible de l'adresse IPv6 (cf. See Calcul de l'adresse MAC destination pour un multicast IPv6)
Encapsulation LLC
L'autre encapsulation utilisée est l'encapsulation LLC/SNAP avec adresses MAC de 48 bits. Le champ type protocole vaut aussi 0x86DD. La structure d'une trame est donnée par la See Encapsulation des paquets IPv6 avec :
- FC : «Frame Code» (Doit être dans l'intervalle 0x51 - 0x57).
- DSAP, SSAP : 0xAA, indiquant une encapsulation SNAP.
- CTRL : 0x03, indiquant une information non numérotée.
- OUI : 0x000000 (Organizationally Unique Identifier).
- CODE : 0x86DD (code protocole indiquant un contenu IPv6
Le principe régissant le calcul de l'identifiant d'interface et celui de l'adresse MAC à partir d'une adresse IPv6 de multicast est le même que pour Ethernet. L'option Découverte des voisins est aussi la même que pour Ethernet.
Cette encapsulation est utilisée pour FDDI (RFC 2467), IEEE 802.3 et Token-Ring (RFC 2470)
Pour FDDI, les datagrammes sont transmis dans des trames FDDI asynchrones avec jeton simple, chaque trame contenant un datagramme. Le MTU IPv6 par défaut est de 4352 octets. Toutefois, à cause de la présence possible de ponts IEEE 802.1d (Spanning Tree,...), le MTU effectif peut être plus faible (par exemple en présence de ponts Ethernet/FDDI, le MTU doit être de 1 500 octets). La valeur par défaut du MTU peut donc être modifiée, soit par configuration manuelle, soit en utilisant l'option MTU des paquets Annonce du routeur.
Pour Token-Ring (RFC 2470), la taille maximale possible pour un paquet est très variable à cause de la possibilité du source routing qui ajoute des informations pour indiquer le chemin à travers les ponts. La valeur du MTU est donc configurable, avec une valeur défaut de 1 500, mais les valeurs de longueur de trame indiquées dans les trames de source routing peuvent être prise en compte. La correspondance entre adresse multicast et adresse physique MAC n'est pas aussi simple qu'avec Ethernet ou FDDI, les composants pour l'anneau à jeton ne permettant de positionner qu'un seul bit dans l'adresse MAC multicast. On utilise donc seulement 10 classes d'adresses.
Réseaux NBMA
Les réseaux NBMA (Non Broadcast Multiple Access) posent un problème en IPv6 car on ne peut pas utiliser le protocole générique de découverte de voisin s pour trouver le destinataire des trames. Il faut donc soit utiliser des tables statiques (par exemple en déclarant des circuits virtuels permanents), soit ajouter une couche de protocole permettant le multicast au transport afin de pouvoir utiliser le protocole de découverte de voisin s, soit utiliser un protocole spécifique au réseau NBMA, soit considérer le réseau comme un arbre centré sur un routeur dédié qui possède une connexion point à point avec tous les autres matériels (cas de ISATAP, et GPRS). Parmi les réseaux NBMA, on peut citer ATM, GPRS, X.25 et Frame Relay.
Pour X.25 on peut utiliser une encapsulation semblable à celle utilisée par IP(v4) sur X.25. Un NLPID (Network Layer Protocol Identifier) spécifique a été réservé pour IPv6, 0x8E. Comme les datagrammes IPv6 ont un MTU de 1280 et les paquets X.25 sont de 128 octets, un datagramme IPv6 peut être transmis dans plusieurs paquets X.25 successifs (utilisation du bit "suite" M des paquets données de X.25).
Pour ATM, on utilise une encapsulation LLC/SNAP dans une trame ALL5, le MTU étant négociable avec un défaut de 9 180 octets.