# Cours 1 ESTIAM 5NROUTR - Advanced Routing and IPv6
https://tools.ietf.org/search/rfc4291

Sommaire
IPv6, qu’est-ce que c’est ?
IPv6 versus IPv4
Construction d’une adresse IPv6
Extension de la confidentialité
Les types d’adresses IPv6
Format du paquet IPv6
Les fonctionnalités du protocole Internet version 6

---
# IPv6, qu’est-ce que c’est ?
IPv6 signifie « Internet Protocol version 6 ». Il a été introduit par l’IETF (Internet Engineering Task Force) et **constitue l’un des processus standardisés de transfert de paquets de données sur les réseaux informatiques**. Avec les 500 autres protocoles réseaux de la suite TCP/IP, le successeur direct d’IPv4, à savoir IPv6 (IPv5 n’ayant jamais vu le jour), constitue la base de la communication Internet. Parmi les fonctions centrales de IPv6, on compte l’envoi des éléments réseaux aux adresses IPv6 et l’acheminement de paquets entre sous-réseaux, appelé également routage. Pour ce faire, IPv6 est basé sur la couche réseau (Layer 3) du modèle OSI.
L’attribution des adresses IP se fait à partir du registre Internet régional (le RIR), qui répartit les adresses IP par l’intermédiaire de l’autorité IANA (Internet Assigned Numbers Authority). Le RIR compétent pour l’Europe, le Proche-Orient et l’Asie Centrale est le RIPE NCC (Réseaux IP Européens Network Coordination Centre).
****
On voit qu’elle tient sur **40 octets**, au lieu de **20 pour l’IPv4 !**
Les adresses IPv6 dans les champs source et destination, qui sont 4 x plus grands qu’en ipv4, car ils sont écrits en 128 bits au lieu de 32.
**L’entete IPv6 contient huit champs :**
**Le champ Version:** est simplement la version du protocole. 6 pour l’IPv6, et 4 pour l’IPv4.
**Le champ Traffic Class: ** est similaire |au champ ToS de l’IPv4. Il permet de marquer une priorité sur les paquets sortants.
**Le nouveau champ Flow Label:** est utilisé pour marquer les flux avec des valeurs différentes, afin de pouvoir les différencier sur le réseau !
Très utile pour les routeurs, quand ils |doivent traiter de la QOS !
**Le champ Payload :** corresponds au |champ «Total Length » de l’IPv4.
**Le Next Header:** permets d’identifier l’en-tête suivante.
**Le Hop Limit:** indique le nombre maximum de sauts, qu'un paquet IP puisse faire.
Ça commence à 255 et à chaque fois que le paquet traverse un routeur, et bien ce chiffre est décrémenté.
Ce qui veut dire qu’un paquet IPv6 peut faire un maximum de 254 sauts avant qu'il ne soit supprimé.
Ça permet d’éviter que les paquets circulent indéfiniment, s’il y a une erreur de routage.
**le champ « Source Adresse »: identifie la source du paquet.
Et « Destination Adresse »: pour la destination du paquet.**

**Le champ « Type »** identifie le type de message ICMP.
**Le champ « Code »** donne des détails sur le type de message.
**Le champ « checksum »** représente la validité du paquet à la couche 3.
**le champ « Data »** contient les infos de diagnostics, qui sont envoyées au récepteur.
**le champ next header** de l’en-tête, aura une valeur réglée sur « 56 », pour informer au récepteur, qu’il s’agit d’un paquet ICMPv6.

C’est un protocole utilisé en IPv6, qui travaille à la couche 3 et qui permet de découvrir ces voisins de proximité. C’est-à-dire du même lien !
Le NDP de l’IPv6 fournit des services très similaires à ARP en IPv4, avec en +, quelques améliorations, comme la possibilité de détecter des systèmes inaccessibles.
Il fonctionne avec cinq types de paquets ICMPv6 :
* Le message de sollicitation permet à un hôte de demander à tous les routeurs présents de lui envoyer une annonce, afin qu'il l'enregistre dans sa liste de voisins.
* Le message d’annonce, permets au routeur d'avertir sa présence, à tous les nœuds qui sont connectés à lui. C’est un paquet qui répond périodiquement au message de sollicitation.
* Le message de sollicitation du voisin, à 3 fonctions.
-Il permet tout d'abord à un nœud de déterminer l’IP de son destinataire. Cette fonction est identique au protocole ARP de l’IPv4.
-Il permet aussi de vérifier si l'équipement est bien accessible.
Et enfin, pendant l'autoconfiguration de l'adresse IP, il va pouvoir aller vérifier si elle n’est utilisée par ses voisins !
* Le message d’annonce du voisin est utilisé pour répondre au message précédent. Les sollicitations du voisin.
* le message du type 137 permet aux routeurs de signaler aux hôtes qu'un meilleur chemin existe pour une destination.


**L'autoconfiguration sans état, qui est l’une des grandes nouveautés de l'IPv6.**
Elle permet à chaque équipement présent sur le réseau de **s’attribuer automatiquement une adresse IPv6**, à partir des informations que donne le routeur dans ces messages d’annonce !
Pour ça, il va récupérer le préfixe de l’adresse IPv6 obtenu, pour la **combiner avec l’adresse MAC de sa propre interface**, avec la **méthode EUI-64.**
C’est-à-dire qu’il va ajouter **« FF:FE » au milieu de sa Mac adresse.**
**La commande « ipv6 address autoconfig » permet une autoconfiguration sans état sur les interfaces de routeurs.**
Et si on ajoute l’option [default] , le routeur se désignera comme la passerelle par défaut pour ce lien !
---
# IPv6 versus IPv4
Un simple coup d’œil permet déjà de constater que le format d’adresse de la sixième version d’IP est très différent de la version précédente d’IPv4 :


Adresse IPv4 : 203.0.120.195
Adresse IPv6 : 2001:0620:0000:0000:0211:24FF:FE80:C12C
Alors que le protocole Internet de la version 4 est codé sur 32 bits et s’écrit sous forme décimale, **son successeur IPv6 permet des adresses de 128 bits**, qui sont basées sur une écriture **hexadécimale pour des raisons de lisibilité**.
Cette comparaison permet de comprendre nettement que le problème central de IPv4 a été résolu : avec 128 bits, il est maintenant possible de générer bien plus d’adresses IP uniques qu’avec 32 bits.
Espace d‘adressage de IPv4: 32 bits = 232 adresses ≈ 4,3 milliards d‘adresses
Espace d‘adressage de IPv6: 128 bits = 2128 adresses ≈ 340 sextillions d’adresses
Les chiffres permettent de constater clairement l‘énorme écart entre les deux protocoles : alors que l’espace d’adressage de IPv4, avec près de 4,3 milliards d’IP, est loin de permettre de fournir une adresse unique à chaque individu sur terre, un système à 128 bits pourrait en théorie permettre d’attribuer plusieurs adresses à chaque grain de sable de notre planète !
**L’introduction d’IPv6 permet ainsi d’investir pour le futur**. En effet, des tendances comme celles décrites par l’internet des objets (« Internet of Things », IoT) suggèrent que le nombre d’appareils connectés à Internet et qui doivent être clairement identifiés, augmentera de manière significative dans les prochaines années.
**IPV6 utilise sur de l'Hexadecimal**
Dans le système hexadécimal, on va utiliser 16 signes qui sont: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F


---
# Construction d’une adresse IPv6
Les 128 bits des adresses IPv6 sont répartis sur **8 blocs de 16 bits**.
Un bloc de **16 bits** s’écrit avec **4 caractères sous forme hexadécimale**
**(c’est à dire les 10 nombres entiers et 6 lettres de l’alphabet)**.
Pour séparer ces blocs, on utilise l**es deux-points comme signe de ponctuation**.
**Nous savons qu’il a été décidé d’utiliser un champ de 128 bits pour coder l’adresse IPv6. Ainsi, dans la notation binaire, une adresse IPv6 ressemble à ça:**
Voici un exemple :
00100000000000010000110110111000101010101010101000010001000100010000000000000000000000000000000000000000000000000000000100000000
**On voit bien la difficulté de manipuler une adresse en notation binaire. Ce que l’on va faire pour noter une adresse IPv6, c’est grouper les bits 4 par 4 et séparer chaque groupe de 16 bits par le symbole « : » (deux points).**
les groupes de 16 bits (entre les deux points) sont parfois appelés des hextets.
0010 0000 0000 0001 : 0000 1101 1011 1000 : 1010 1010 1010 1010 : 0001 0001 0001 0001 : 0000 0000 0000 0000 : 0000 0000 0000 0000 : 0000 0000 0000 0000 : 0000 0001 0000 0000
Nous n’avons plus qu’à utiliser la notation hexadécimale pour les groupes de 4 bits que l’on a identifiés (il suffit de chercher la valeur dans la table de correspondance présentée précédemment).

**Quelques règles simplificatrices de la notation des adresses IPv6**
* **Règle n°1: suppression des valeurs 0 inutiles**
Dans toutes les notations, l**es symboles 0 (zéro) utilisés à gauche d’un nombre n’ont aucune utilité**.
Par exemple, **00127** peut se noter **127**. Nous allons faire exactement la même chose sur la notation hexadécimale IPv6.
**00127 => 127**
**0DB8 => DB8**
L’adresse IPv6 utilisée pour notre exemple devient donc:
2001:DB8:AAAA:1111:0:0:0:100
Quelques exemples supplémentaires pour vous aider à bien apprécier la règle de notation:

Attention: il faut savoir également faire l’opération inverse; c’est à dire retrouver la notation complète alors que le nombre de signes est inférieur à 4 dans un groupe séparé par les deux points. Observez l’exemple ci-dessous:

* **Règle n°2: suppression d’une longue suite de 0**
**Cette règle consiste à remplacer un ou plusieurs groupes de :0000: par :: (double symbole deux points)**
Ainsi, par exemple, **:0000:0000:0000: ou :0000:0000: devient => ::**
Si l’on applique les règles 1 et 2, cela permet de simplifier (et de raccourcir) la notation d’une adresse IPv6, comme dans notre exemple initial:

Autres exemples et compléments:
Que va devenir l’adresse

a près application de la règle n°2:

**ou **

**** ?**
**La notation verte est préférée parce que la règle s’applique sur la plus longue suite de 0.**
Et dans le cas de 
(les deux suites de 0 sont de même longueur) ?
La notation a privilégiée sera:

En effet, dans le cas où l’on a **deux suites de 0 de la même longueur**, on va utiliser la notation **« :: »** pour la première suite rencontrée (en lisant l’adresse de gauche à droite).
Attention: la notation **« :: » ne peut s’utiliser qu’une seule fois** dans une adresse IPv6 ; ceci afin de permettre de retrouver la notation complète sans erreur possible.
En effet, 
n’est pas une notation autorisée parce qu’il est impossible de connaitre le nombre de signes 0 remplacés par la notation « :: »
Voilà donc les règles de notation des adresses que l’on utilise en environnement IPv6. Finalement, les règles de simplification peuvent faciliter la manipulation des adresses. Néanmoins, c’est une autre notation, une autre approche, de nouveaux réflexes à acquérir: il faut s’entrainer, essayer, utiliser, etc. Il n’y a pas de raccourcis.
Je remercie mon collègue Rick Graziani pour m’avoir autorisé à utiliser (et à modifier) ses supports pour illustrer cet article. Tout commentaire ou toute question est toujours bienvenue: utilisez la section ci-dessous prévue à cet effet !
* **TP Abreviation des adresse IPV6 ci-dessous /**
**2001:0620:0000:0000:0211:24FF:FE80:C12C**
Règle n°1: suppression des valeurs 0 inutiles
**2001:620:0:0:211:24FF:FE80:C12C**
Règle n°2: suppression d’une longue suite de 0
**2001:620:0:0:211:24FF:FE80:C12C**
**2001:620::211:24FF:FE80:C12C**
Les deux-points qui se suivent (par deux reprises uniquement) permettent de connaître l’emplacement des zéros supprimés (ci-dessus après le deuxième bloc).
Il faut bien comprendre que dans la pratique, les internautes disposent de moins d’adresses que le format 128 bits ne semble l’indiquer.
Ceci est dû au principe même sur lequel est conçu le protocole : contrairement à son prédécesseur, le nouveau standard IPv6 doit permettre une connexion de bout en bout réelle et rendre la correspondance des adresses privées aux adresses publiques par **le NAT (Network Address Translation) inutile. **
En principe, il est également possible d’établir des connexions de bout en bout avec IPv4 ; toutefois, comme l’espace d’adressage IPv4 est trop petit pour assigner une adresse unique à chaque appareil, l’intermédiaire NAT a été développé.
Avec le nouveau standard, chaque appareil qui est connecté à un réseau local peut maintenant être traité logiquement via sa propre adresse.
Les adresses contiennent par conséquent, outre le préfixe de routage, un identifiant d’interface unique, qui est généré manuellement ou à partir de l’adresse MAC de la carte réseau de l’appareil.
Le préfixe de routage et l’identifiant d’interface comprennent chacun 64 bits de l’adresse IPv6.
* **Construction du préfix de routage**
Le préfixe de routage d’une adresse IPv6 est divisé en un préfixe réseau et un préfixe sous-réseau.
Ceci est représenté dans la notation CIDR (Classless Inter-Domain Routing), c’est-à-dire le routage inter-domaine sans classe. Ainsi, la longueur du préfixe en bits est définie à l’aide du signe slash (/).
La notation
**2001:0820:9511::/48**
correspond par exemple à un sous-réseau avec une adresse de
**2001:0820:9511:0000:0000:0000:0000:0000**
à
**2001:0820:9511:FFFF:FFFF:FFFF:FFFF:FFFF**.
En règle générale, le réseau /32 est attribué par le RIR aux fournisseurs d’accès à Internet (FAI), qui le divise ensuite en sous-réseaux. Pour les clients, ce sont des réseaux /48 ou /56 qui sont octroyés. Le tableau suivant montre la construction classique d’une adresse unicast globale sous IPv6, (préfixe réseau, préfixe sous-réseau et identifiant d’interface)

* **Construction de l’identifiant d’interface**
L’ID d’interface permet l’identification claire d’un appareil donné connecté à un réseau.
Il est généré manuellement ou sur la base de l’adresse MAC de la carte réseau de l’appareil.
Le second cas est le plus classique.
**Il repose sur la conversion du format d’adresse MAC standard au format EUI-64 modifié. **
Cela se déroule en trois étapes :
* **Premièrement**, l’adresse MAC, longue de 48 bits, est découpée en deux parties longues de 24 bits.
Ces parties constituent alors le début et la fin des 64 bits de l’identifiant d’interface complet.
Adresse MAC : **00-11-24-80-C1-2C**
Adresse MAC découpée : **0011:24:80:C12C**
* **Deuxièmement**, les 16 bits restants sont alloués au milieu par défaut avec la suite
**1111 1111 1111 1110** qui correspond au code hexadécimal **FFFE**.
Adresse MAC complète : **0011:24FF:FE80:C12C**
L’adresse MAC est maintenant au format EUI-64 modifié.
* **Enfin, le septième bit**, appelé également **bit universel ou local**, est inversé.
Cela indique si une adresse est **unique globale ou locale**.
Suite avant l’inversion : **0000 0000**
Suite après l’inversion : **0000 0010**
ID d’interface avant l’inversion : **0011:24FF:FE80:C12C**
ID d’interface après l’inversion : **0211:24FF:FE80:C12C**
---
# Extension de la confidentialité
Une adresse IPv6 qui repose sur un format EUI-64 modifié pourrait permettre à des tiers de tirer des conclusions sur l’adresse MAC.
Ceci pouvant générer quelques craintes de la part des utilisateurs sur la protection de leurs données, des extensions de confidentialités ont été développées, afin de rendre les ID d’interfaces anonymes également avec IPv6.
Le lien entre l’adresse MAC et l’identifiant d’interface est alors rompu. A la place, les extensions de confidentialité génèrent des identifiants d’interface temporaires avec des connexions sortantes plus ou moins établies au hasard.
Il est ainsi plus difficile d’en déduire des informations sur l’hôte et d’établir des profils de comportement en se basant sur l’IP.
---
# **Les types d’adresses IPv6**
Elles sont spécifiées dans la RFC 4291 et RFC 5156 et sont identifiables déjà par les premiers bits d’une adresse IPv6, ce que l’on appelle le **préfixe**.
Parmi les principaux types d’adresse, on compte les adresses **unicast, les adresses multicast et les adresses** [anycast](https://www.ionos.fr/digitalguide/serveur/know-how/anycast/).

* # **Adresses unicast**
Les adresses unicast sont utilisées pour faire communiquer un élément réseau à un seul autre élément.
Elles se divisent en deux catégories : **les adresses lien-local et les adresses unicast globales.**
* **Les adresses lien-local** : les adresses de cette catégorie ne sont valides qu’au sein d’un réseau local.
Elles commencent par le préfixe FE80::/10.
Les adresses de type lien-local sont utilisées pour traiter des éléments au sein d’un réseau local et servent par exemple à l’auto-configuration.
En règle générale, l’adresse de lien-local s’étend jusqu’au routeur suivant, afin que chaque appareil connecté au réseau puisse être en mesure de communiquer avec lui, et générer une adresse IPv6 globale.
Ce protocole est nommé Neighbor Discovery.

* **Les adresses unicast globales** : il s’agit d’adresses uniques au monde dont un appareil réseau a besoin pour établir une connexion à internet.
Le préfixe est généralement 2000::/3 et englobe ainsi toutes les adresses qui commencent par 2000 jusqu’à 3FFF.
l’adresse unicast globale est « routable » et s’utilise pour traiter un hôte d’un réseau local sur Internet. Les adresses globales unicast qui sont redistribuées par un fournisseur Internet à ses clients, commencent par le bloc hexadécimal 2001.


* # **Les adresses multicast**
Alors que les adresses unicast servent à établir une communication point à point, les adresses multicast permettent une communication d’un élément vers plusieurs.
On parle de diffusion multipoint ou de diffusion de groupe.
Les paquets qui sont envoyés à une adresse multicast, sont reçus par l’ensemble des appareils réseau qui font partie du groupe multicast.
Un appareil peut appartenir à plusieurs groupes multicast. Si une adresse IPv6 est établie pour un appareil réseau, il devient automatiquement membre d’un groupe multicast donné, ce qui est nécessaire pour la reconnaissance, l’accessibilité mais aussi le préfixe.
Des exemples de groupes multicast classiques : « tous les routeurs » ou « tous les hôtes ». En général, le préfixe FF00::/8 est appliqué pour les adresses multicast.
* # **Adresses anycast**
Pour simplifier le traitement des paquets d’IPv6, une longueur standard de 40 bytes (320 bits) a été définie pour l’en-tête.
Les informations optionnelles, qui ne sont nécessaires que pour des cas spécifiques, se retrouvent dans ce que l’on nomme **les en-têtes d’extension**, qui sont insérées entre l’en-tête et le payload.
Cela permet d’insérer des options sans avoir à modifier l’en-tête.

L’en-tête de paquet IPv6 ne comporte que 8 champs en-têtes. Avec IPv4, il s’agissait de 13 champs. La construction d’un en-tête IPv6 peut être représentée de manière schématique comme ci-dessous:


---
# Les fonctionnalités du protocole Internet version 6
La plupart des internautes sont connectés à IPv6 du fait de son large espace d’adressage.
Il s’agit tout particulièrement de la mise en place du **chiffrement de bout en bout**, qui rend le détour par **NAT superflu et qui simplifie de manière significative l’implémentation des protocoles de sécurité comme IPsec**.
IPv6 permet la configuration automatique d’adresse via Neighbor Discovery ainsi que l’attribution de plusieurs adresses IPv6 uniques par hôte de champs d’application différents, pour rendre compte de différentes topologies de réseau.
On compte dans ses avantages l**a simplification des en-têtes de paquet** et le transfert des informations optionnelles aux extensions d’en-tête pour l’envoi des paquets pour un routage plus rapide.
**Avec QoS (Quality of service), IPv6 dispose d’un mécanisme intégré pour la sécurisation de la qualité des services, qui permet de prioriser les paquets urgents et de gérer avec plus d’efficacité le traitement des paquets de données.**
Les champs « Classe de trafic » et « Identificateur de flux » ont ainsi été définis selon la méthodologie QoS.
Plus critique par contre : **l’attribution d’adresses IP statiques à des appareils réseaux locaux ainsi que la pratique de créer des identifiants d’interface uniques basés sur les adresses MAC.**
Les extensions de confidentialité offrent certes une alternative au format d’adresse EUI-64 modifié ; toutefois, ** ** étant finalement suffisant pour dresser un profil de comportement d’un internaute, il serait souhaitable d’ajouter aux extensions de confidentialité un préfixe assigné par le FAI pour assurer l’anonymat sur Internet.
# TP IPV6




---

