Difference between revisions of "MOOC:Compagnon Act16"

From Livre IPv6

(Identification des VLAN selon la localisation ou le type d'usage)
(Démarrage du modèle de réseau sous GNS3)
 
(287 intermediate revisions by 5 users not shown)
Line 1: Line 1:
 +
= <div id="découvrez"> Activité 16 : Découvrez un réseau IPv6 </div> =
 +
<!-- ----------------------------------------- -->
 +
 
__NOTOC__
 
__NOTOC__
= Activité 16 : Construction d'un plan d'adressage  =
 
 
== Nécessité d'organiser un plan d'adressage ==
 
Comme nous l'avons vu dans les activités précédentes, l'espace d'adressage IPv6 est « astronomiquement » grand. Le plan d'adressage unicast global agrégé adopté aujourd'hui sur l'Internet public est organisé hiérarchiquement. A l'instar du réseau téléphonique historique, où les appels sont routés en fonction d'un préfixe national (exemple le +33 pour les appels vers la France), les réseaux IP sont bâtis selon une organisation hiérarchique. Cependant cette hiérarchie n'est pas d'ordre géographique mais plutôt administrative et organisée en « régions » (Amérique du nord, Asie Pacifique, Europe,...), gérées par les registres Internet régionaux (RIR Regional Internet Registry). Cela permet d'acheminer efficacement les datagrammes. Les opérateurs du cœur de l'internet routent (aiguillent) les datagrammes selon les préfixes les plus courts. Les registres régionaux leur attribuent des préfixes courts, car le rôle de ces opérateurs internationaux est d'acheminer les datagrammes vers les grandes zones régionales de l'Internet. Ces opérateurs délèguent ensuite à leur clients, registres locaux (LIR) ou opérateurs, des préfixes un peu plus longs, afin qu'eux même puissent déléguer des préfixes à leurs clients ou organisations utilisatrices pour acheminer les datagrammes vers leurs propres réseaux. Ainsi un utilisateur final : organisation, entreprise ou particulier se verra déléguer par son fournisseur d'accès Internet (FAI) un préfixe d'une longueur comprise, en général, entre 48 et 64 bits. La zone de l'adresse, comprise entre la longueur du préfixe alloué par l'opérateur et la limite du /64 des adresses unicast est parfois qualifiée de SID (Subnet ID). En effet elle permet à l'administrateur, d'adresser entre une unique réseau (cas où le client à obtenu un préfixe /64 de son FAI) et 65536 réseaux (cas où le client a obtenu délégation administrative, de son fournisseur d'accès, sur un préfixe /48 : il dispose alors de 16 bits (entre 48 et 64) pour numéroter 2 puissance 16 soit 65536 réseaux). C'est cet espace de l'adressage, dont l'administrateur réseau a la responsabilité, qu'il s'agit d'organiser pour déployer efficacement les réseaux de son organisation. Nous allons au cours de cette activité, présenter différents modes d'organisation possibles, que nous compléterons par un cas d'école simple.
 
  
== Politique d'assignation des adresses ==
+
L'objectif de cette première activité pratique est d'expérimenter la communication en IPv6 et de découvrir les adresses IPv6 dans un réseau IPv6. À l'aide d'une topologie de réseau comprenant deux hôtes, deux routeurs, ainsi qu'un serveur, vous allez pouvoir :
Les spécifications primitives, (RFC3177) de 2001, d'assignation des adresses aux utilisateurs finaux recommandaient d'allouer :
+
# prendre en main l'environnement de virtualisation GNS3 ;
* /48 (655536 sous réseaux) dans le cas général,
+
# vous familiariser avec l'adressage en IPv6 et les commandes de consultation d'état d'une interface réseau. Vous verrez aussi comment identifier les types des adresses IPv6 et déterminer la portée des communications utilisant ces types d"adresses ;
* /64 (un sous réseau unique) lorsqu'un et un seul réseau était nécessaire
+
# effectuer des communications locales au lien, ou  des communications avec remises indirectes des paquets. Dans cette dernière forme de communication, les paquets passent à travers plusieurs liens avant d'atteindre la destination ;
* /128 (adresse unique) lorqu'il était absolument connu qu'un et un seul équipement était connecté
+
# effectuer des échanges en multi-diffusion ''(multicast)''.
Le [http://www.bortzmeyer.org/6177.html RFC6177], de 2011, également connu sous BCP157 (Best Current Practice), est venu remettre en cause les certitudes initiales et le « /48 pour tout le monde » n'est plus la recommandation officielle. La taille du préfixe est maintenant laissée à la discrétion du fournisseur avec la recommandation « floue » d'allouer un bloc d'adresses adapté aux besoins de l'utilisateur en évitant l'allocation d'un réseau unique. Ainsi si un /48 est adapté pour un réseau de campus il est, clairement, surdimensionné dans le cadre d'un usage domestique. Inversement le réseau unique en /64 est notablement insuffisant, les besoins actuels et futurs de le plupart des foyers nécessiteront sans doute quelques réseaux cloisonnés en fonction des usages : réseau général (accès internet, les réseaux sociaux, le multimédia,...), réseau domotique (machine à laver, sèche linge, réfrigérateur, ...), réseau de commande périmétrique (volets, alarme, chauffage, aquarium,...), sans parler des promesses médiatiques de « l'Internet des objets » (IoT Internet of things),… Pour les utilisateurs dits « grand public » ou les sites de taille modeste un préfixe /56 ou /60 semble donc plus approprié.
+
<!--
 +
Comme le montre la figure 1, le réseau étudié comporte 4 nœuds et repose uniquement sur IPv6. Un serveur web est installé et configuré sur l'hôte appelé PC-2. Un serveur DNS est également installé sur PC-2.
 +
-->
 +
Comme le montre la figure 1, le réseau étudié est composé de nœuds (pc, routeurs, serveurs...) et repose uniquement sur IPv6. Un serveur web est installé et configuré sur l'hôte appelé SRV-3.
 +
<!-- Un serveur DNS est également installé sur l'hôte PC-2. -->
 +
<!--
 +
<center>
 +
[[image:2015_10_20_TP2_screenshot1.png|thumb|center|400px|Figure 1: Topologie du réseau étudié.]]
 +
</center>
 +
-->
 +
<center>
 +
[[image:MoocSession5 act16 topolo 20190605.png|thumb|center|400px|Figure 1: Topologie du réseau étudié.]]
 +
</center>
  
== Préfixes de sous Réseaux ==
+
Le support vous donne l'ensemble des opérations à réaliser pour aller jusqu'au bout de l'activité. Vous trouverez un résumé de ces commandes dans le Manuel Apprenant disponible dans l'onglet documentation du cours Objectif IPv6 du site de FUN.  
=== Cas général ===
+
<!-- {{TODO|Préfixer les commandes par le nom de la machine)}} -->
Les sous réseaux IPv6 devraient s'aligner sur les préfixes de longueur /64. Des tailles supérieures sont possibles, mais ne sont pas sans poser problème pour les mécanismes de contrôle tels que l'auto-configuration des adresses, couramment utilisée, et qui présupposent des préfixes des sous réseaux alignés sur 64 bits. Ces mécanismes d'auto-configuration seront abordés dans une séquence ultérieure.
+
  
=== Cas particulier des liaisons point à point ===
+
== Etape 0 : Démarrage de GNS3==
Les liaisons point à point, qu'elles soient concrètement louées auprès du service idoine d'un opérateur (liaison spécialisée, fibre noire,...) pour assurer l'interconnexion de deux sites géographiquement distants, ou qu'elles soient logiquement établies sous forme de tunnels (Ip dans IP, VPN MPLS, tunnel IPSec, …) constituent un cas particulier. Comme dans le cas général, on peut allouer un préfixe /64 à chacune des liaisons. Cependant sur des réseaux maillés où le nombre de liaisons point à point est quelconque, attribuer un /64 à chacune de ces liaisons n'est pas efficace. La caractéristique d'une liaison point à point est de relier uniquement une interface à chacune de ses extrémités, ne nécessitant, de fait, que deux identifiants distincts. De plus ces liaisons sont administrées et ne sont, en général, pas tributaires d'un mécanisme d'auto-configuration. Aussi attribuer un /64, offrant la possibilité d'adresser 2 puissance 64 interfaces, à un support limité à deux, et uniquement deux interfaces, conduit à la perte de ((2 puissance 64) - 2) adresses qui resteront non attribuées mais qui peuvent sur certains équipements, limités ou mal configurés, conduire à des situations de surcharge sous forme d'aller retour de datagrammes sur cette liaison (syndrome de la balle de ping pong), ou de tentatives de déni de service par attaque exhaustive de découverte de voisins.
+
A défaut d'un /64, quel est le préfixe approprié pour ce type de liaison ?
+
* /127 : serait possible dans la mesure où IPv6 n'a pas d'adresse de diffusion (identifiant de host tout à 1 dans le cas d'IPv4). Cependant l'adresse tout à zéro de chaque sous réseau est réservé comme l'adresse anycast des routeurs (« all routers anycast address »), ce qui signifie que le plupart des routeurs sont susceptibles recevoir des datagrammes de service sur cette adresse.
+
* /126 évite le problème de l'adresse anycast tout à zéro. Cependant, les 128 adresses hautes de chaque sous réseaux sont également réservées pour diverses adresses de anycast (RFC2526). Bien que dans la pratique cela ne semble pas poser de problème.
+
* /120 permet de s'affranchir des adresses anycast réservées.
+
* /112 permet de s'affranchir des adresses anycast réservées et a en plus l'avantage d'être facilement lisibles par les opérateurs humains, car aligné sur le mot de 16 bits final, (celui affiché après le dernier séparateur '':'', cf activité 12 « Notation d'une adresse IPv6 »)
+
  
=== Représentation des subdivisions ===
+
=== Démarrage de votre machine virtuelle===
Dans la suite de cette activité, nous raisonnerons sur la base d'un préfixe de 48 bits (espace SID de 16 bits). Les exemples décrits sur la base d'adresses documentaires pourront ainsi illustrer aussi bien un contexte de réseaux publics (un préfixe /48 unicast global) qu'un réseau privatif (préfixe /48 d'adresse locale unique ULA). Cependant les règles d'ingénierie présentées pourront également se décliner de manière plus limitée sur des préfixes plus longs /56 ou /60 avec un espace SID réduit à 8 ou 4 bits.
+
  
Nous supposons que le préfixe obtenu soit par allocation de notre fournisseur d'accès dans le cadre d'un adressage unicast global routable sur l'Internet public, soit par algorithme conforme RFC4193 dans la cadre d'un adressage privatif (ULA Unique unicast Local Address) pour notre activité est <tt>2001:db8:cafe::/48</tt>. Nous disposons donc d'une zone SID de 16 bits permettant de distinguer 65536 sous réseaux possibles en préfixes de 64 bits (de <tt>2001:db8:cafe::/64</tt> à <tt>2001:db8:cafe:ffff::/64</tt>).
+
Après avoir téléchargé la machine virtuelle '''"MOOCIPv6-S7"''', vous pouvez la démarrer soit en utilisant VirtualBox ou bien VMwarePlayer 15 ou supérieur:
 +
* Oracle VirtualBox https://www.virtualbox.org/wiki/Downloads
 +
* VmWare Player  https://my.vmware.com/fr/web/vmware/free#desktop_end_user_computing/vmware_workstation_player/12_0
  
=== convention de notation binaire du champ SID ===
+
Selon la configuration de votre PC, quelques messages "warning" peuvent apparaître. Validez, relancez ou ignorez-les dans un premier temps. Si vous obtenez un blocage, merci de consulter le forum pour identifier si une solution résout votre souci.
Dans cette présentation, nous adoptons les conventions de notation suivantes  pour les illustrations et exemples :
+
 
Comme les 48 premiers bits sont administrativement fixés et que les 64 bits de poids faible sont réservés pour l'identification de l'interface, chaque référence de sous réseau sera portée par les bits 48 à 63 (L'IETF numérote les bits en démarrant de zéro de la gauche (most significant : poids fort) à la droite (least significant : poids faible).<br>
+
Une fois la machine virtuelle démarrée, vous verrez sur le bureau le raccourci pour les activités de travaux pratiques des séquences 1 à 4.
<br>Exemple :  
+
 
 +
<!--
 +
Pour l'adapter à la taille de votre écran : clic-droit sur le bureau - Modifier l'arrière plan du bureau - choisir la flèche en haut à gauche.
 +
Dans la section Matériel, choisir écran puis choisir affichage inconnu. Enfin, appliquer la taille la mieux adaptée à votre écran, puis conserver les modifications si cela convient.
 +
-->
 +
Pour l'adapter à la taille de votre écran : depuis le menu dans le coin inférieur gauche du bureau enchaîner ''Menu > Paramètres > Affichage''. Enfin, ajuster à la résolution la mieux adaptée à votre écran, puis conserver les modifications si cela convient.
 +
 
 +
=== Démarrage du modèle de réseau sous GNS3 ===
 +
 
 +
Double cliquer sur le lien intitulé "moocipv6.gns3"<!-- (icône symbolisé par un caméléon)-->, présent dans la partie haute du bureau de votre machine virtuelle.
 +
 
 +
Il est possible de restaurer le Snapshot ''(Activité_16)'' depuis '''''Edit > Manage snapshots''''' ce qui rechargera les configurations initiales des équipements.
 +
 
 +
Ensuite vous pouvez démarrer la simulation avec le bouton triangulaire vert, ou bien avec le menu '''''Control > Start/Resume all nodes'''''.
 +
 
 +
Attendre que la fenêtre <tt>Objectif-IPv6 - GNS3</tt> apparaisse à l'écran comme présentée par la figure 2. Double cliquer sur la barre de titre de cette fenêtre pour qu'elle occupe la totalité de votre écran. Si besoin, vous pouvez ensuite recentrer l'image de la topologie dans la fenêtre centrale avec les boutons ascenseurs horizontal et vertical.
 +
 
 +
<!--
 +
<center>
 +
[[image:Act16-gns3-20190604.png|thumb|center|600px|Figure 2: Ecran de GNS3]]
 +
</center>
 +
{{TODO|Capture d'écran à mettre à jour}}
 +
-->
 
<center>
 
<center>
<tt>2001:db8:cafe:{LLLLTTTTBBBBBBBB}::/64</tt><br>
+
[[image:MoocSession5 gns3 act16 20190604.png|thumb|center|600px|Figure 2: Démarrage de GNS3]]
ou<br>
+
<tt>2001:db8:cafe:ltbb::/64</tt>
+
 
</center>
 
</center>
  
* Chaque lettre majuscule encadrée par '{' et '}' représente 1 bit du champ SID. 4 bits successifs représentent un quartet également appelé « nibble » ;<br>''(Un '''nibble''' (ou plus rarement '''nybble''') est, en informatique, un agrégat de 4 bits, soit un demi octet. On trouve aussi les termes francisés '''semioctet''' ou '''quartet''' , source wikipédia [https://fr.wikipedia.org/wiki/Nibble https://fr.wikipedia.org/wiki/Nibble])''. 1 quartet peut prendre une valeur entre 0 et 15 et peut se représenter par 1 chiffre héxadécimal (0..9, a..f) (cf vademecum de notation hexadécimale) ;
+
===Identification des liens physiques===
* Les chiffres et lettres minuscules ['a'..'f'], 'b', 'l', 't', 'v', 'w', 'x', 'y' et 'z' représentent la valeur hexadécimale d'un quartet ;
+
Il est possible d'afficher les numéros des interfaces des équipements représentés sur la maquette, appuyer sur le bouton carré '''"a b c" ''' situé juste en dessous du menu déroulant ''Node''.  
* Dans cette présentation nous subdivisons les 16 bits du SID en groupes distingués de la manière suivante :
+
** B : bit non défini et assignable ;
+
** L : bit assigné à l'identification de la localisation du sous réseau ;
+
** T : bit assigné à l'identification du type de sous réseau.
+
  
Ainsi l'exemple précédent où les 16 bits SID sont positionnés à la valeur <tt>{LLLTTTTBBBBBBBB}</tt> produira des préfixes IPv6 du type <tt>2001:db8:ltbb::/64</tt> (inversement de type <tt>2001:db8:tlbb::/64</tt> si l'on choisit de positionner les bits de type de sous réseau sur le quartet de poids fort et les bits de localisation sur le quartet de poids faible du 1er octet SID de cette manière <tt>{TTTTLLLLBBBBBBBB}</tt>).
+
<!--
 +
{{TODO|A ajuster en fonction de la nouvelle architecture et des noms d'invités !!}}
 +
Une fois que vous aurez bien identifié les numéros d'interfaces des 6 liaisons, nous pouvons constater ceci : Ce réseau est constitué de 3 liens.
 +
* lien PC1 - SW2 - R1 : les interfaces eth0 de PC1 et R1 sont reliées à travers le commutateur Ethernet SW2 ;
 +
* lien R1 - SW1 - R2 : les interfaces eth1 de R1 et R2 sont reliées à travers un commutateur Ethernet SW1 ;
 +
* lien PC2 - SW3 - R2 : les interfaces eth0 de PC2 et R2 sont reliées à travers un commutateur Ethernet SW3.
 +
-->
 +
Une fois que vous aurez bien identifié les numéros d'interfaces des liaisons, nous pouvons constater ceci : Ce réseau est constitué de 4 liens.
 +
* lien PC-1 - R1 :  les interfaces eth0 de PC-1 et R1 sont reliées à travers le réseau Net1 ;
 +
* lien R1  - R2 : les interfaces eth1 de R1 et R2 sont reliées à travers le réseau Net0 ;
 +
* lien PC-2  - R2 : les interfaces eth0 de PC-2 et R2 sont reliées à travers le réseau Net2.
 +
* lien SRV-3  - R2 : les interfaces eth0 de SRV-3 et eth3 de R2 sont reliées à travers le réseau Net3.
  
== Différentes stratégies pour la définition des sous réseaux ==
+
===Activation des équipements===
=== Réseau à plat ===
+
<!--
Les petites entités sans structure organisationnelle bien définie peuvent éventuellement fonctionner sans plan d'adressage structuré. Cependant si l'infrastructure de niveau liaison est cloisonnée en domaines de diffusion distincts (VLAN), il faudra à minima, affecter 1 identifiant de sous réseau par domaine. L'attribution de ces identifiants de sous réseaux pourra être simple, en numérotant éventuellement séquentiellement.<br>
+
Si tout est correct, vous pouvez activer les équipements du réseau dans GNS3, à l'aide du bouton triangulaire vert démarrer ''"Start/Resume all nodes"''.
En l'absence de structuration du plan d'adressage, ce type de réseau ne passe pas à l'échelle. Si le nombre de sous réseaux est amené à croître, l'administration et le contrôle de l'infrastructure deviennent rapidement problématiques. Il y a, également, nécessité de conserver dans une table les différents affectations pour localiser le segment réseau ou la machine à l'origine d'un problème ou d'un dysfonctionnement, puisque les adresses sont peu signifiantes.
+
-->
 +
Si tout est correct, après l'appui bouton triangulaire vert démarrer ''"Start/Resume all nodes"'', dans la fenêtre centrale les témoins verts des liens indiquent que les équipements démarrent, et sur la droite la fenêtre ''"Topology Summary"'' montre aussi les témoins verts des équipements réseaux.
  
=== Correspondance directe entre les identifiants IPv4 et IPv6 ===
+
Au besoin vous pouvez aussi figer la simulation avec le bouton Pause ''"Suspend all nodes"'', voire arrêter la simulation avec le bouton Stop ''"Stop all nodes"''.
Pour les organisations ayant déjà structuré une infrastructure réseau sous le protocole IPv4, et sur laquelle on souhaite faire cohabiter les deux versions du protocole, il est possible d'adopter une stratégie de correspondance des identifiants de sous réseau IPv4 et de sous réseau IPv6. Deux cas peuvent être évalués :
+
  
==== Correspondance directe entre les sous réseaux IPv4 et IPv6 ====
+
Pour sortir proprement du simulateur, faire ''CTRL+S'' si vous souhaitez sauvegarder l'état de votre simulation, et ''CTRL+Q'' ou bien avec le bouton ''"Stop all nodes"''.
Si les réseaux IPv4 sont structurés uniquement en sous réseaux de préfixe /24 (exemple les réseaux privatifs de la RFC1918, un réseau de classe C <tt>192.168.0.0/24</tt> à <tt>192.168.255.0/24</tt> ou que l'on a « subnetté » en /24 le réseau de classe A <tt>10.0.0.0</tt> ou l'un des 16 classe B <tt>172.16.0.0</tt> à <tt>172.31.0.0</tt>), une correspondance directe entre l'identifiant de sous réseau IPv4 peut être envisagée avec l'identifiant SID d'IPv6 par transcription directe.
+
<!--
Exemple
+
Lorsque les nœuds sont actifs, il faut cliquer sur le bouton ''Console connect to all nodes'' symbolisé par ">_"  situé à gauche du bouton triangulaire vert, juste en dessous du menu déroulant ''"Annotate"''. Une fenêtre composée de plusieurs onglets affiche le démarrage des différents équipements réseaux, comme le montre la figure 3.
<center>[[Image:activite-16-img02.png]]</center>
+
-->
Dans ce plan d'adressage, le lien direct entre les sous réseaux IPv4 et les sous réseaux IPv6 est directement visible. Pour les équipements d'infrastructure disposant d'une adresse fixe (routeur, serveurs applicatifs,...) on peut également transposer l'identifiant d'hôte (les 4ieme octet d'adresse IPv4 d'un /24) en identifiant d'interface de l'adresse IPv6. Ainsi, par exemple, le serveur web d'adresse IPv4 <tt>192.168.1.123</tt> peut être adressé <tt>2001:db8:cafe:1::123</tt> en IPv6.<br>
+
Cependant cette stratégie ne peut s'envisager uniquement si les sous réseaux IPv4 sont alignés sur 24 bits (/24). En effet des sous réseaux IPv4 de taille plus étendue (préfixe < à /24) ou plus réduite (préfixe > à/24) ne peuvent s'insérer dans le champs SID de 16 bits d'un préfixe IPv6 en /64 (le débordement au delà du /64 posant de problème pour l'auto-configuration). Ainsi :
+
* un préfixe IPv4 /28, par exemple les hôtes <tt>172.16.5.14/28</tt> et <tt>172.16.5.18/28</tt> sont dans des sous réseaux IPv4 distincts, le sous réseau <tt>172.16.5.0/28</tt> pour le premier et le sous réseau <tt>172.16.5.16/28</tt> pour le second. Alors que la transposition simple en IPv6 va les placer dans le même sous réseau : les hôtes <tt>2001:db8:cafe:5::14/64</tt> et <tt>2001:db8:cafe:5::18/64</tt> sont tous les deux dans le sous réseau <tt>2001:db8:cafe:5::/64</tt>.
+
* Un préfixe IPv4 /23, par exemple les hôtes <tt>10.0.8.250/23</tt> et <tt>10.0.9.5/23</tt> sont tous le deux dans le même sous réseau IPv4. Alors que la transposition simple les placera dans des sous réseaux IPv6 distincts : <tt>2001:db8:cafe:8::250/64</tt> et <tt>2001:db8:cafe:9::5/64</tt>
+
On notera également que la transposition directe des identifiants décimaux des sous réseaux IPv4 dans le champ SID hexadécimal du sous réseau IPv6, si elle facilite la correspondance de lecture pour l'administrateur humain, n'est en revanche pas optimale pour les tables de routage des sous réseaux IPv6. Ainsi le sous réseau IPv4 <tt>10.0.23.0/24</tt> est sélectionné (filtré / masqué) sur 1 octet de valeur binaire 0001 0111, alors qu'il sera sélectionné par le SID 0x0023 hexadécimal (0000 0000 0010 0011)
+
  
==== Correspondance directe entre les adresses IPv4 et IPv6 ====
+
Lorsque les nœuds sont actifs, il faut cliquer sur le bouton ''"Console connect to all nodes"'' symbolisé par  ">_"  situé à gauche du bouton triangulaire vert, juste en dessous du menu déroulant ''"Annotate"''. Une fenêtre composée de plusieurs onglets vous donne accès aux interfaces ligne de command (CLI ''Command Line Interface''). Chaque onglet affiche le démarrage des différents équipements réseaux comme le  montre la figure 3.
Si le préfixe de sous réseau IPv4 n'est pas aligné sur un /24, il sera impossible de maintenir une relation directe entre les sous réseaux IPv4 et IPv6. Cependant, dans ce cas il peut être envisagé de maintenir une correspondance d'adresse en embarquant la totalité de l'adresse IPv4 dans l'identifiant d'interface de l'adresse IPv6 et en gérant le SID indépendamment du sous réseau IPv4. Par exemple la machine d'adresse IPv4 <tt>192.168.1.234</tt> pourrait être adressée en IPv6 <tt>2001:db8:café:deca::192.168.1.234</tt>. En effet pour les adresses IPv6 embarquant une adresse IPv4, si celle ci occupe les 32 bits de poids faible de l'adresse IPv6 (la partie basse de l'identifiant d'interface) il est autorisé de continuer à la noter en notation décimale pointée. Cependant, si cette commodité facilite la saisie de la configuration d'un système, celui ci l'affichera sous la forme canonique <tt>2001:db8:cafe:deca::c0a8:1ea</tt>, notamment dans les journaux et log diverses. . c0a801ea étant la conversion hexadécimale des 32 bits de l'adresse IPv4 écrite <tt>192.168.1.234</tt> en notation décimale pointée, la correspondance de lecture devient tout de suite moins évidente.
+
  
=== Plan d'adressage structuré ===
+
{{HorsTexte| Note|Notons que le démarrage des PC est plus rapide que celui des routeurs, le temps de démarrage dépendant des capacités de votre machine : comptez quelques dizaines de secondes, parfois plus.}}
Lorsque que l'on définit un plan d'adressage, il faut décider quelle structure doit être utilisée pour assigner les adresses aux réseaux de l'organisation. Plusieurs stratégies peuvent être envisagées. En nous appuyant sur l'exemple d'architecture suivante, nous allons présenter différents plans possibles.<br>
+
Une fois que tous les nœuds affichent leur console  avec l'invite pour se connecter comme le montre la figure 3, votre plateforme de réseau est opérationnelle.
<center>[[Image:activite-16-img03.png]]</center>
+
<!--
 +
<center>
 +
[[image:TP1_LLA_00.jpg|thumb|center|600px|Figure 3 : Écran GNS3 avec les interfaces CLI.]]
 +
</center>
 +
{{TODO|Capture d'écran à mettre à jour}}
 +
-->
 +
<center>
 +
[[image:Act16-gns3-cli-20190604.png|thumb|center|600px|Figure 3 : Écran GNS3 avec les interfaces CLI.]]
 +
</center>
  
==== Structuration basique du plan d'adressage ====
+
== Etape 1 : Découvertes de l'adressage IPv6 ==
Nous pouvons, par exemple, assigner les adresses des équipements par type d'usage ou par localisation, voire une combinaison des deux. Ainsi nous pouvons choisir d'adresser d'abord par type localisation, puis par type. Une fois les sous-réseaux définis, il restera les bits de poids faible qui pourront être utilisés pour d'autres usages
+
Dans cette étape nous allons découvrir les commandes pour afficher les adresses IPv6.
<center><tt>2001:db8:cafe:{LLLLTTTTBBBBBBBB}::/64</tt></center> <br>
+
  
Dans cet exemple , 4 bits sont assignés pour la localisation {L}, les 4 bits suivants sont assignés pour le type d'usage {T}, il reste 8 bits {B} pour d'autres affectations. Ainsi, ce plan d'adressage permet d'addresser une infrastructure qui peut être étendue sur 16 (4 bits) localisations, chacune pouvant déployer 16 (4 bits) types de-réseaux. On dispose encore de 8 bits restants permettant éventuellement 256 sous réseaux différents pour chaque localisation et chaque type.
+
=== Dans le cas d'un hôte ===
 +
<!--
 +
Pour ouvrir une session sur un hôte tel que  PC-1, utiliser l'identifiant '''apprenant'''.  Il n'y a pas de mot de passe.
 +
-->
 +
Pour ouvrir une session sur un hôte tel que  PC-1::c1, sélectionner l'onglet "PC-1::c1" de la fenêtre "Konsole", vous êtes alors directement en mode ''"root"'' sur PC-1, symbolisé par le prompt de commande
 +
root@PC-1::c1:~#
  
==== Routeur vs firewall : Localisation ou type d'usage d'abord ? ====
+
Déterminer la configuration IP actuelle en tapant la commande :
Nous devons dans un premier temps décider quelle affectation nous souhaitons privilégier : localisation d'abord puis type (tels que, public(DMZ), employés, étudiants, invités, switchs, routeurs, serveurs, administration, comptabilité, production, etc,) ou inversement type avant la localisation.
+
root@PC-1::c1:~# '''ifconfig'''
 +
ou
 +
root@PC-1::c1:~# '''ip -6 address show'''
  
===== Localisation d'abord =====
+
{{HorsTexte| Astuce|La touche de tabulation aide à terminer automatiquement la saisie des commandes.}}
Quand la structuration se fait d'abord sur la localisation, chaque campus, bâtiment, département est administrativement identifié par une référence. Cela permet d'optimiser les tables de routage. A l'instar de l'organisation des opérateurs, tous les réseaux de même destination seront agrégés en une unique route dans les tables de routage. Ce type de structuration du plan d'adressage convient aux organisations qui sont chargées de l'infrastructure globale d'interconnexion, en général de opérateurs ou les entités chargés des réseaux d'interconnexion des grandes organisations.
+
Vous pouvez constater que l'interface de boucle (''loopback'') noté <tt>lo0</tt> possède une adresse IPv6 alors que l'interface Ethernet (<tt>eth0</tt>) est configurée avec 2 adresses IPv6.
===== Type d'usage d'abord =====
+
Si le type d'usage des réseaux est d'abord privilégié, l'optimisation des entrées dans les tables de routage n'est alors pas envisageable. Cependant, cela n'est en général pas un problème pour la plupart des routeurs modernes, qui peuvent gérer un nombre conséquent d'entrées de table de routage.
+
L'avantage de grouper les réseaux par catégorie d'usage, est que cela facilite l'application des politiques de sécurité. La plupart des équipements de sécurité (pare-feux, listes de contrôles d'accès, contrôle des autorisations,…) sont régis selon les types d'usage plutôt que sur la localisation des utilisateurs.
+
Les organisations choisissent communément de privilégier les types d'usage sur la localisation pour des raisons pratiques. L'application des politiques de contrôle d'accès et de sécurisation, basées sur des listes de filtres logiques, est généralement déléguée à des équipements spécialisés, de type pare feu, placés frontalement à l'entrée du réseau. Une fois contrôlés les flux sont ensuite acheminés en interne en fonction de leur localisation.
+
<center>[[Image:activite-16-img04.png]]</center>
+
  
==== Détermination de l'espace nécessaire au plan d'adressage ====
+
Quelle est l'adresse IPv6 sur l'interface de boucle ?
Nous devons déterminer, quelle proportion des 16 bits du SID sera nécessaire pour chaque partie de cette structuration. Le nombres de bits nécessaires pour coder chacune des catégories de la structuration est conditionné par le nombre de types et de localisations de sous-réseaux de l'infrastructure en ne négligeant pas les évolutions.
+
&nbsp;
# Déterminer le nombre de localisations ou types de réseaux de votre organisation,
+
<!--
# augmenter le nombre d'une localisation supplémentaire, nécessaire pour le backbone,
+
adresse de bouclage  ::1
# augmenter le nombre de localisations pour tenir compte d'éventuels sous-réseaux qui n'ont pas de localisation fixe, tels que les l'infrastructure des tunnels VPN par exemple,
+
-->
# augmenter le nombre de chacune des catégories pour tenir compte des expansions de court et moyen terme,
+
Pour chacune des catégories déterminer la puissance de deux immédiatement supérieure ou égale, ce qui nous indiquera le nombre de bits nécessaires pour en coder les références.
+
<center>[[Image:activite-16-img03.png]]</center>
+
  
===== Exemple 1 : sous réseaux basés sur la localisation =====
+
Compléter ici les adresses IPv6 attribuées à l'interface eth0 de PC-1 et PC-2 :
* nombre de localisations : 3
+
PC-1 eth0 =  fe...
* backbone d'interconnexion (réseau reliant swithches et routeurs) : 1
+
PC-1 eth0 = fd...
* réseaux non localisés (tunnels VPN) : 1
+
* extension future : 2
+
'''total : 7 sous réseaux''' => 3 bits suffisent pour encoder les localisations, le reste pouvant être utilisé pour d'autres référencements
+
<center><tt>2001:db8:cafe:{LLLBBBBBBBBBBBBB}::/64</tt></center>
+
  
===== Exemple 2 : sous réseaux basés sur le type d'usage =====
+
PC-2 eth0 = fe...
* nombre de groupes d'usage (personnel, étudiants, invités, serveurs, infra VPN) : 5 sous-réseaux,
+
PC-2 eth0 = fd...
* backbone et infrastructure  (réseau reliant swithches et routeurs); 1 sous-réseau,
+
<!--
* usages futurs : 4 sous-reseaux
+
PC2 eth0 = fe80::349a:5fff:fed8:8bd3
'''total : 10 sous-réseaux''' => 4 bits suffisent pour encoder les types de sous-réseaux, les 12 bits restants pouvant être utilisés pour d'autre référencements au besoin
+
PC1 eth0 = fe80::c494:d8ff:fe44:82d3
<center><tt>2001:db8:cafe:{TTTTBBBBBBBBBBBB}::/64</tt></center>
+
-->
 +
<!--
 +
PC1 eth0 = fd75:e4d9:cb77:1::c1/64
 +
PC2 eth0 = fd75:e4d9:cb77:2::c2/64
 +
-->
 +
'''Nota : ''' ''Une adresse IPv6 s'indique sans préciser la longueur du préfixe. A l'inverse, un préfixe réseau consiste en une adresse IPv6 suffixée par le nombre de bits occupé par le préfixe. Ne confondez pas ces 2 notions: préfixe réseau et adresse.''
  
===== Hiérarchisation à 2 niveaux =====
+
Parmi les 2 adresses IP attribuées à l'interface Ethernet, il y a une adresse locale de lien (LLA ''Link Local Address'') et une adresse locale unique (ULA ''Unique unicast Local Address''). Pour différencier ces 2 types d'adresse, il faut analyser le mot de poids fort de l'adresse (le mot le plus à gauche). L'adresse LLA commence par le mot réservé <tt>fe80</tt>, l'adresse ULA par le mot réservé <tt>fd</tt> comme indiqué dans l'activité 13 "Familles d'adresses IPv6". Les 2 adresses ont la même longueur de préfixe à savoir de 64 bits.
Dans les deux exemples précédents les bits restants peuvent être utilisés pour numéroter un second niveau de sous-réseaux. Si la numérotation primaire est basée sur la localisation, plusieurs sous-réseaux peuvent être adressés sur chaque site. Si la numérotation primaire est par type d'usage, alors plusieurs réseaux de chaque type peuvent être crées (par les réseaux internes réservés au personnel peuvent être décliné pas service ou fonction : comptabilité, RH, direction, production,...).
+
Les deux types de structuration, localisation / type d'usage, peuvent également se combiner. Si on choisit de privilégier la location en structure primaire
+
Quel est le préfixe /64 auquel appartient l'adresse ULA de PC-1 ?
<center><tt>2001:db8:cafe:{LLLTTTTBBBBBBBBB}::/64</tt></center>
+
&nbsp;
Il reste alors 9 bits pouvant coder 512 instances de sous-réseaux de chaque type sur chaque site. Le fait de privilégier la localisation, en positionnant sa référence sur les bits de poids fort du SID facilitera l'optimisation des tables de routage de l'infrastructure d'interconnexion des sites. Cependant elle alourdira les politiques de sécurisation, en multipliant les filtres, si la fonction de sécurisation (firewal)l est centralisée, ou elle imposera de disposer d'une fonction de sécurisation (firewall) sur chaque site entraînant des difficultés de cohérence de déploiement des politiques de sécurité.
+
<!--
Inversement privilégier le type d'usage sur la localisation
+
PC1 eth0 = fd75:e4d9:cb77:1::/64
<center><tt>2001:db8:cafe:{TTTTLLLBBBBBBBBB}::/64</tt></center>
+
-->
réduira le nombre de filtres de la politique de sécurisation, au détriment du nombre d'entrées dans les tables de routage de l'interconnexion. Cependant, cela ne pose en général pas de difficultés majeures compte tenus des capacité des routeurs modernes.
+
Quelles sont la première et la dernière adresse de ce préfixe /64 ?
 +
&nbsp;
 +
&nbsp;
 +
<!--
 +
préfixe = fd75:e4d9:cb77:1::/64
 +
Première adresse = fd75:e4d9:cb77:1::
 +
Première adresse = fd75:e4d9:cb77:1:ffff:ffff:ffff:ffff
 +
-->
 +
Quelle est la valeur de l'adresse MAC de l'interface eth0 de PC-1 ?
 +
&nbsp;
 +
<!--
 +
adresse MAC de l'interface eth0 de PC1::c1 : 56:33:bf:da:4c:10
 +
-->
 +
Quelle est la méthode de construction utilisée pour l'identifiant d'interface (IID) de l'adresse LLA de PC-1?
 +
&nbsp;
 +
&nbsp;
 +
<!--
 +
L'IID de l'adresse LLA est dérivé de l'adresse MAC
 +
-->
 +
Quelle est la méthode de construction utilisée pour l'identifiant d'interface (IID) de l'adresse ULA de PC-1?
 +
&nbsp;
 +
&nbsp;
 +
<!--
 +
L'IID de l'adresse ULA a été fixé manuellement par l'administrateur de la machine
 +
-->
 +
Quelle est l'adresse de multicast sollicité correspondant à cette adresse  ULA de PC-1?
 +
&nbsp;
 +
<!--
 +
l'adresse de multicast sollicité correspondant à cette adresse  ULA
 +
ff02::1ff00:c1
 +
-->
  
===== Latitude =====
+
=== Dans le cas d'un routeur ===
Dans le exemple précédent, 4 bits sont utilisés pour les types
+
<!--
de sous-réseaux et 3 pour la localisation, laissant 9 bits soit 512
+
Pour ouvrir une session sur un routeur tel que R1, les identifiants/mots de passe  sont '''vyos'''/'''vyos'''. (Aucun echo de caractère n'est proposé lorsqu'on saisi le mot de passe).
(2 puissance 9) sous réseaux possibles par type et par site. Cela
+
Passer en mode Quagga à l'aide de la commande:
sera suffisant dans la plupart des cas. Cependant, imaginons qu'il
+
vyos@vyos:~$ '''vtysh'''
faille 2048 tunnels VPN par site pour accueillir les connexions
+
Vérifier l'état des interfaces par la commande:
sécurisées des personnels nomades. On pourrait envisager de
+
vyos# '''show interface'''
modifier les tailles de champs de structuration primaire et
+
-->
secondaire, mais cela nécessiterait une reconfiguration globale de
+
Pour ouvrir une session sur un routeur tel que R1, sélectioner l'onglet R1 de la fenêtre intitulée "Konsole". Démarrer une session de commande CLI (''Command Line Interface'') en vous connectant avec les identifiant/mots de passe '''vyos'''/'''vyos'''  (Aucun echo de caractère n'est proposé lorsqu'on saisi le mot de passe). Le routeur affiche alors la bannière système, indiquant notamment sa version, puis l'invite de commande
l'architecture. Une autre option consiste à répartir les tunnels
+
  vyos@r1:~$
sur 4 types distincts, chacun pouvant gérer 512 tunnels. De cette
+
manière on conserve politique de sécurité simple et cohérente
+
  
<center>                                   
+
Vérifier l'état des interfaces par la commande:
{| border="0" class="wikitable alternance centre" width="30%"
+
vyos@r1:~$ '''show interfaces'''
|- align="center"
+
Cette commande affiche les adresses configurées sur les interfaces des routeurs. Les routeurs possèdent chacun, en plus de l'interface (<tt>lo</tt>) de  boucle locale, 2 interfaces Ethernet actives (<tt>eth0</tt> et <tt>eth1</tt>). En effet, les routeurs sont attachés à 2 liens. Un lien représente un réseau  de distribution sur lequel on va trouver des PC (dans notre cas un PC::c1) et l'autre lien sert de réseau d'interconnexion (ou d'infrastructure) qui relie les routeurs (respectivement 3 liens eth0, eth1 et eth3 sur le routeur R2).
  
! scope="col" width="10%" align="center" | '''Type'''  
+
Noter ici les adresses ULA que vous observez sur les interfaces de R1 :
! scope="col" width="90%" align="center"  | '''Usage'''
+
eth0 :
 +
eth1 :
 +
<!--
 +
R1 eth0 = fd75:e4d9:cb77:1::1/64
 +
R1 eth1 = fd75:e4d9:cb77::1/64
 +
-->
 +
Vous pouvez remarquer que PC-1 et R1 partagent le même préfixe réseau. Cette
 +
plateforme a été numérotée à l'aide d'un préfixe de type ULA. En l'occurrence, il s'agit de <tt>fd75:e4d9:cb77::/48</tt>. Chaque lien s'est vu ensuite attribuer un identifiant sur 16 bits pour former en tout un préfixe de 64 bits. On parle de SID (''Subnet Identifier'') pour l'identifiant du lien sur 16 bits. C'est la raison pour laquelle un lien identifié par un préfixe réseau se qualifie quelquefois de sous-réseau. Bien que ce sous-réseau peut aussi s'appeler réseau  si on considère qu'un routeur est la passerelle dans une interconnexion de réseaux.
  
|- style="background:silver"
+
Pour en revenir au plan d'adressage de notre plateforme, les affectations des SID ont été faites de la manière suivante:
| '''0''' || '''Backbone, infrastructure'''
+
* '''0''' pour le sous-réseau d'interconnexion de R1 et R2
|-
+
* '''1''' pour le sous-réseau de distribution de PC-1 et R1
| '''1''' || '''Serveurs'''
+
* '''2''' pour le sous-réseau de distribution de PC-2 et R2
|- style="background:silver"
+
* '''3''' pour le sous-réseau de distribution de SRV-3 et R2
| 2 || Réservé expansion future
+
|-
+
| 3 || Réservé expansion future
+
|- style="background:silver"
+
| '''4''' || '''personnels'''
+
|-
+
| '''5''' || '''étudiants'''
+
|- style="background:silver"
+
| '''6''' || '''invités'''
+
|-
+
| 7 || Réservé expansion future
+
|- style="background:silver"
+
| '''8''' || '''VPNs'''
+
|-
+
| '''9''' || '''VPNs'''
+
|- style="background:silver"
+
| '''a''' || '''VPNs'''
+
|-
+
| '''b''' || '''VPNs'''
+
|- style="background:silver"
+
| c || Réservé expansion future
+
|-
+
| d || Réservé expansion future
+
|- style="background:silver"
+
| e || Réservé expansion future
+
|-
+
| f || Réservé expansion future
+
|} 
+
</center>
+
  
===== Lisibilité =====
+
{{HorsTexte| Note |L'affichage détaillé se fait sous forme paginée à la console. Le caractère ":" indique qu'il y a des pages à suivre. Appuyer simplement sur la barre d'espace de votre clavier pour passer à la page suivante. A la dernière page le système affiche de nouveau le prompt de commande <tt>vyos@r1:~$</tt>.}}
Lorsque que l'on dispose d'un espace d'identification suffisamment large, dans notre cas de champ SID sur 16 bits nous laissant 9 bits 'B' de marge, il est de bonne pratique d'aligner les identifiants sur des frontières de mots de 4 bits (quartet) pour faciliter la lisibilité des préfixes notés en hexadécimal. Ainsi dans notre exemple si on étend l'identifiant de la localisation sur 4 bits au lieu de 3, elle sera visuellement facilement identifiée par un opérateur humain lors de la lecture des adresses. Le format des adresses de nos exemple devient donc :
+
<center><tt>2001:db8:cafe:{LLLLTTTTBBBBBBBB}::/64</tt></center>
+
<center><tt>2001;db8:cafe:{TTTTLLLLBBBBBBBB:}:/64</tt></center>
+
soit en notation canonique des adresses rescpectivement
+
<center><tt>2001:db8:cafe:'''wx'''yz::/64</tt></center>
+
<center><tt>2001:db8:cafe:'''xw'''yz::/64</tt></center>
+
avec les "nibbles" '''w''' pour identifier la localisation et '''x''' pour le type  sous réseau.
+
  
===== Extensibilité =====
+
Pour afficher la configuration détaillée des interfaces du routeur, il faut ajouter le paramètre "detail" à la commande précdente. Le routeur affiche alors pour chacune de ses interfaces, l'ensemble des adresses affectées, ainsi qu'un certain nombre d'indicateurs d'état.
Si le nombre de localisations ou de types de sous réseaux, n'est pas à priori connu au moment de l'établissement du plan d'adressage, il est recommandé de conserver des frontières flexibles entre les différents groupes de bits identifiants les différents niveaux de la structuration. Cela peut être réalisé en adoptant une des stratégies décrites dans les RFC1219 et 3531. La contrepartie de cette approche est qu'il q'une certaine aisance dans la manipulation des bits doive être acquise, dans la mesure ou les frontières des zones d'identification peuvent être amenées à évoluer, ce qui peut nécessiter des mises à jour des règles et filtres de la politique de sécurité.
+
Ainsi, par exemple, en assumant une structuration où l'on privilégie d'abord la localisation des sous-réseaux, assignée aux bits de poids fort, sur le type assigné au bits intermédiaire, un plan d'adressage flexible initialement conçu pour 5 localisations, 3 types et 2 sous-réseaux par localisation/type :
+
<center><tt>2001:db8:cafe:{LLL*****TT*****B}::/64</tt></center>
+
Pourrait évoluer selon le scénario hypothétique suivant :
+
passant de 2 à 10 sous-réseaux nécessitant 4 bits B
+
<center><tt>2001:db8:cafe:{LLL*****TT**BBBB}::/64</tt></center>
+
Après cela, le nombre de types d'usage pourrait passer à 5, nécessitant un troisième bit T
+
<center><tt>2001:db8:cafe:{LLL****TTT**BBBB}::/64</tt></center>
+
Puis suite à une expansion géographique, le nombre de sites passerait à 50, portant à 6 le nombres de bits L
+
<center><tt>2001:db8:cafe:{LLLLLL*TTT**BBBB}::/64</tt></center>
+
Si ensuite le nombres de types d'usage passait à 13, on étendrait le champ type par un quatrième bit pris sur la droite où il reste plus de bits disponibles
+
<center><tt>2001:db8:cafe:{LLLLLL*TTTT*BBBB}::/64</tt></center>
+
'''''Nota 1 :''''' ''Les champs dont l'agrandissement s'effectue par la droite ({L} et {T} dans notre exemple) encodent les nombres selon un ordonnancement inhabituel. Le RFC3531 décrit précisément les référencements de croissance gauche (les bits {B} dans notre exemple) centrale (les bits {T} dans notre exemple) ou droite (les bits {L} dans notre exemple).''<br>
+
'''''Nota 2 :''''' ''Cette stratégie prenant en compte les besoins d'extensibilité peut s'avérer difficilement conciliable avec l'objectif de lisibilité préconisant un alignement sur les quartets tel que décrit dans le paragraphe précédent.''
+
<br>
+
  
=== Identification des sous-réseaux d'après les VLAN ===
+
  vyos@r1:~$ '''show interfaces detail'''
 +
Maintenant, prendre soin de relever ici les adresses LLA attribuées aux interfaces eth0 et eth1 du routeur R1 :
 +
eth0 :
 +
eth1 :
 +
<!--
 +
R1 eth0 = fe80::e49:aff:fe42:7b00/64
 +
R1 eth1 = fe80::e49:aff:fe42:7b01/64
 +
-->
 +
Vous pouvez vérifier que l'interface de PC-2::c2 possède bien une adresse IPv6 ULA. Retrouvez-vous la valeur du SID de 2 dans cette adresse ?
  
==== Confinement des domaines de diffusion de niveau 2 : les VLAN ====
+
== Etape 2 : Communications en IPv6 ==
Ethernet est le protocole dominant de niveau liaison de données (niveau 2 de la pile protocolaire), support du niveau réseau IPv6, des infrastructures de réseaux de la plupart des organisations. Les architectures Ethernet modernes, constituées de commutateurs (switch ethernet) sont généralement subdivisées en différents domaines de diffusion étanches, couramment dénommés VLAN. Cette structuration en VLAN permet de constituer des groupes logiques de machines partageant un même support de diffusion. Chaque VLAN ethernet dispose d'un identifiant propre (VLAN-ID). Au niveau réseau (niveau 3 de la pile protocolaire), où opère le protocole IPv6, chaque VLAN se voit affecter un (ou plusieurs) identifiants de sous réseaux distincts. En effet deux postes, localisés dans des VLAN distincts ne peuvent échanger directement des données et doivent passer une une fonction de routage inter-réseaux (routeur) pour pouvoir communiquer.
+
  
==== Mise en correspondance VLAN-ID et SID ====
+
<!-- session 5, (20190605) plus de netcat sur R1 => malheureusement plus de demo en nc sur les LLA
Une autre approche de structuration du plan d'adressage, sur ce type d'infrastructure, est de dériver l'identifiant de sous-réseau IPv6 (SID) de l'identifiant du domaine de diffusion (VLAN-ID). Les identifiants de VLAN ethernet (VLAN-ID) ont une taille de 12 bits, 4094 VLAN distincts (les valeurs 0 et 4095 étant réservées) peuvent être créés sur une infrastructure locale. Dans notre cas de figure (préfixe en /48) où nous disposons de 16 bits pour identifier nos sous réseaux IPv6, on peut envisager de faire coïncider VLAN-ID et SID soit sous leur forme hexadécimale soit sous leur forme décimale.
+
  
* '''forme hexadécimale''' : en convertissant la valeur décimale de l'identifiant de VLAN en hexadécimale pour le transposer en identifiant de sous-réseau sur trois quartets (nibble). Dans ce cas, il reste un quartet du champ SID libre, qui peut être utilisé pour éventuellement coder 16 localisations ou 16 types. Il faut alors décider la position du quartet libre, soit sur le quartet de poids fort, soit sur le quartet de poids faible
+
Dans cette étape, nous allons voir comment utiliser les adresses IPv6 pour effectuer des communications.
<center>
+
VLAN-ID sur les bits de poids fort du SID
+
<tt>2001:db8:cafe:{VVVVVVVVVVVVBBBB}::/64</tt>
+
ou
+
VLAN-ID sur les bits de poids faible du SID
+
<tt>2001:db8:cafe:{BBBBVVVVVVVVVVVV}::/64</tt>
+
</center>
+
  
Cependant, si les adresses IPv6 sont en notation hexadécimale (cf activité 12), les identifiants de VLAN sont en notation décimale, ce qui ne facilite pas la lisibilité de correspondance lors de la lecture de l'adresse IPv6.
+
Un échange entre un client et un serveur va être mis en place. Nous allons commencer par activer un serveur sur le noeud R1.  Ceci s'effectue à l'aide de la commande <tt>netcat6</tt> qui s'écrit en abrégé <tt>nc6</tt>. Tout d'abord, vous allez  repasser en mode utilisateur :
 +
vyos# '''exit'''
 +
puis il faut démarrer le serveur :
 +
  vyos@vyos:~$ '''nc6 -l -v -n -u -p 4500'''
  
* '''forme décimale''' : Afin de conserver une correspondance lisible, entre identifiant de sous réseau IPv6 et l'identifiant de VLAN on peut conserver la valeur décimale du VLAN-ID et l'utiliser directement en lieu et place de l'identifiant SID hexadécimal. La correspondance est alors directement lisible. Ainsi le sous réseau IPv6 <tt>2001:db8:cafe:4321::/64</tt> sera affecté au VLAN 4321. On remarquera que les identifiants de sous réseaux supérieurs à 4095 ainsi que ceux comportant une ou plusieurs lettres hexadécimales (a..f) sont disponibles pour d'autres sous-réseau logiques non liés à un VLAN.
 
  
Tableau récapitulatif des deux approches
+
Un échange entre un client et un serveur va être mis en place. Nous allons commencer par activer un serveur sur le noeud PC-1::c1.  Ceci s'effectue à l'aide de la commande <tt>netcat</tt> qui s'écrit en abrégé <tt>nc</tt>.
<center>                                  
+
Pour démarrer le serveur le serveur lancer la commande suivante :
{| border="0" class="wikitable alternance centre" width="90%"
+
  root@PC-1::c1:~# '''nc -6 -l -v -n -u -p 4500'''
|- align="center"
+
  
! scope="col" width="10%" align="center" | '''VLAN-ID'''
+
Les options de la commande signifient que la commande <tt>netcat</tt> en IPv6 (-6) en mode transport UDP (-u), se met en écoute (-l) sur le port (-p) 4500 tout en étant explicite dans ses affichages (-v).
! scope="col" width="30%" align="center" | '''IPv6 vlan-id forme décimale'''
+
! scope="col" width="30%" align="center" | '''IPv6 vlan-id forme hexadécimale poids faible'''
+
! scope="col" width="30%" align="center" | '''IPv6 vlan-id forme hexadécimale poids fort'''
+
  
|- align="center" style="background:silver"
+
{{HorsTexte| Nota |Pour interrompre une commande comme <tt>netcat</tt> sur le serveur ou le client faites la combinaison de touches <tt>CTRL+C</tt> (appui simultané sur les touches ''Ctrl'' et ''C''.}}
| '''1''' || <tt>2001:db8:cafe:000'''1'''::/64</tt> || <tt>2001:db8:cafe:0'''001'''::/64</tt> || <tt>2001:db8:cafe:'''001'''0::/64</tt>
+
+
|- align="center"
+
| '''12''' || <tt>2001:db8:cafe:00'''12'''::/64</tt> || <tt>2001:db8:cafe:0'''00c'''::/64</tt> || <tt>2001:db8:cafe:'''00c'''0::/64</tt>
+
  
|- align="center" style="background:silver"
+
Il nous reste maintenant à démarrer la version cliente de <tt>netcat</tt> sur PC-1::111
| '''2783''' || <tt>2001:db8:cafe:'''2783'''::/64</tt> || <tt>2001:db8:cafe:0'''adf'''::/64</tt> || <tt>2001:db8:cafe:'''adf'''0::/64</tt>
+
root@PC-1::111:~# '''nc -6 -n -v -u ''ADDR6'' 4500'''
  
|- align="center"
+
Ici le terme ADDR6 doit être remplacé par une adresse IPv6.
| '''4094''' || <tt>2001:db8:cafe:'''4094'''::/64</tt> || <tt>2001:db8:cafe:0'''ffe'''::/64</tt> || <tt>2001:db8:cafe:'''ffe'''0::/64</tt>
+
  
|} 
+
Commencer par tester une communication avec le serveur en utilisant l'adresse lien-local (LLA) du serveur mise sur l'interface eth0 de PC-1::c1 (adresse relevée lors de l'étape 1 de ce TP). Comme il est indiqué dans le cours, l'utilisation des adresses lien-local doit s'accompagner de la mention de l'interface réseau à utiliser pour transmettre le paquet.  
</center>
+
Cette approche introduit une certaine cohérence entre l'infrastructure de niveau 2 et l'adressage de niveau 3 et simplifie la numérotation des sous-réseau IPv6 dans la mesure où une seule numération doit être gérée. Cependant elle n'est pas optimale pour minimiser le nombre d'entrees dans les tables de routage ou pour optimiser les politiques de contrôle d'accès basées sur le filtrage des préfixes.
+
  
==== Identification des VLAN selon la localisation ou le type d'usage ====
+
En effet, le système ne peut pas séléctionner cette interface de lui-même. Tous les liens ont le même préfixe pour une adresse de lien local. Il y a donc une ambigüité c'est pour cela que le système ne peut décider. L'ambigüité est donc levée en indiquant explicitement l'interface de sortie. Pour ce faire, la mention de l'interface se fait en ajoutant son nom après le caractère <tt>%</tt> mis à la fin de l'adresse. Dans certain cas, une option est disponible pour spécifier l'interface. Dans le cas présent, la commande de démarrage du client est la suivante : <tt>nc -6 -n -v -u fe80::c8ee:fbff:fead:15a9%eth0 4500</tt>
Il est possible d'envisager un codage des VLAN-ID intégrant la localisation ou le type d'usage. Dans ce cas il est souhaitable de conserver un alignement sur frontières de quartet (nibble), de ce fait on peut choisir de coder la localisation sur 4 ou 8 bits {W} et coder respectivement le type sur 8 ou 4 bits {V} ou inversement. De même, comme pour la hiérarchisation à deux niveaux vue précédemment) il faudra choisir de privilégier soit la localisation ou le type en le positionnant sur les bits de poids fort.
+
  
* '''forme hexadécimale''' : dans cette forme sur un SID long de 16 bits, on conserve 4 bits utilisables pour coder 16 instances de chaque localisation/type.
+
Avant de valider la commande, assurez vous de bien indiquer l'adresse lien local de l'interface eth0 de PC-1::c1 relevée lors de l'étape 1 à l'aide de la commance <tt> ip -6 addr show eth1</tt>
<center>
+
VLAN-ID sur les bits de poids fort du SID<br>
+
localisation {W} sur 4 bits (1 quartet) privilégiée<br>
+
<tt>2001:db8:cafe:{WWWWVVVVVVVVBBBB}::/64</tt><br>
+
ou<br>
+
VLAN-ID sur les bits de poids fort du SID<br>
+
localisation {W} sur 8 bits (2 quartets) privilégiée<br>
+
<tt>2001:db8:cafe:{WWWWWWWWVVVVBBBB}::/64</tt><br>
+
inversement, si on privilégie le type d'usage<br>
+
VLAN-ID sur les bits de poids fort du SID<br>
+
type d'usage {V} sur 4 bits (1 quartet) privilégié<br>
+
<tt>2001:db8:cafe:{VVVVWWWWWWWWBBBB}::/64</tt><br>
+
ou<br>
+
VLAN-ID sur les bits de poids fort du SID<br>
+
type d'usage {V} sur 8 bits (2 quartets) privilégié<br>
+
<tt>2001:db8:cafe:{VVVVVVVVWWWWBBBB}::/64</tt><br>
+
  
Quelques exemples illustratifs de la forme hexadécimale<br>
 
(localisation sur 1 quartet, type d'usage sur 2 quartets)
 
<center>                                   
 
{| border="0" class="wikitable alternance centre" width="90%"
 
|- align="center"
 
  
! scope="col" colspan="2" width="20%"| '''VLAN-ID'''
+
root@PC-1::111:~# '''nc -6 -n -v -u fe80::c8ee:fbff:fead:15a9%eth0 4500'''
! scope="col" colspan="2" width="20%"| '''localisation'''
+
! scope="col" colspan="2" width="20%"| '''Type d'usage'''
+
! scope="col" rowspan="2" width="40%"| '''IPv6(VLAN-ID hexadécimal)'''
+
|- align="center"
+
| décimal || hexa || décimal || hexa || décimal || hexa
+
  
|- align="center" style="background:silver"
+
Le client et le serveur sont maintenant en attente de communication. Tant qu'il n'y a pas de données à transmettre, il n'y a pas de communication.
| 0001 ||(001)|| 0 ||('''0'''01)|| 1 ||(0'''01''')||  <tt>2001:db8:cafe:'''001'''0::/64</tt>
+
Aussi sur le terminal de PC-1::111, il vous faut saisir des caractères qui seront envoyés au serveur après l'appui sur la touche retour à la ligne. Une fois passé le retour à la ligne, vous verrez vos caractères saisis s'afficher sur le terminal de Pc-1::c1.
 +
Par exemple sur PC-1::111 taper la chaîne suivante "<tt> Hello world IPv6 !!</tt>", puis assurez vous de l'affichage de cette chaîne de caractères sur le terminal du serveur PC-1::c1.
 +
Le communication étant bidirectionnelles, inversement sur le terminal du serveur PC-1::c1 vous pouvez taper la chaîne suivante "<tt> Welcome MOOC Objectif IPv6</tt> et vérifier son affichage sur le terminal du client PC-1::111.
 +
Vous pouvez poursuivre en tapant des chaînes quelconques sur chacun des PC.
  
|- align="center"
+
Tout marche bien. '''Arrêter le client et le serveur''' par un <tt>CTRL+C</tt> dans la console de chacun d'eux.
| 0529 ||(211)|| 2 ||('''2'''11)|| 17 ||(2'''11''')||
+
<tt>2001:db8:cafe:'''211'''0::/64</tt>
+
  
|- align="center" style="background:silver"
+
'''Relancer le serveur pour un nouvel essai''' mais cette fois-ci à partir d'un client situé sur PC-1::111 mais '''en utilisant l'adresse ULA de eth0 PC-1::c1'''. La commande de démarrage du client devient alors <tt>nc6 -n -v -u ''ADDR6'' 4500</tt>. Ici le terme ''ADDR6'' doit être remplacé par '''l'adresse ULA de eth0 de PC-1::c1''' que vous avez noté préalablement dans l'étape précédente.
| 4094 ||(ffe)|| 15 ||('''f'''fe)|| 254 ||(f'''fe''')||
+
<tt>2001:db8:cafe:'''ffe'''0::/64</tt>
+
  
|}
+
root@PC-1::111:~# '''nc -6 -n -v -u fd75:e4d9:cb77:1::c1 4500'''
</center>
+
  
* forme décimale : La lisibilité directe est alors conservée, mais chaque quartet (nibble) ne peut prendre qu'une valeur numérique (0..9), il ne reste plus de bits du SID disponibles pour coder d'éventuelles instances de chaque type/localisation. Cependant on pourra choisir d'affecter un, deux ou trois quartet pour coder 10, 100, ou 1000 localisations, avec respectivement 1000, 100, 10 types d'usage.
+
Là aussi les caractères que vous entrez coté client vont être transférés vers le serveur.
<center>
+
{{HorsTexte|Nota|lorsque que l'argument d'une commande est une adresse routable (ULA ou GUA), vous n'avez plus spécifier l'interface de sortie en suffixant l'adresse par le caractère '%' suivi de l'interface. }}
<tt>2001:db8:cafe;1025::/64</tt><br>
+
VLAN 1025, localisation (1) type d'usage (025) <br>
+
cas de la localisation sur 1 quartet et type d'usage sur 3 quartets<br>
+
ou<br>
+
VLAN 1025, localisation (10) type d'usage (25)<br>
+
cas de la localisation sur 2 quartets et type d'usage sur 2 quartets<br>
+
ou<br>
+
VLAN 1025, localisation (102) type d'usage (5) <br>
+
cas de la localisation sur 3 quartets et type d'usage sur 1 quartet<br>
+
  
Quelques exemples illustratifs de la forme décimale<br>
+
Donc vous pouvez constater, à ce niveau, que les adresses ULA ou LLA ''(lien local)'' pour des communications en remise directe n'ont pas de différence dans l'exécution de la communication.
(localisation sur 2 quartets, type d'usage sur 2 quartets)
+
  
                           
+
Tout marche bien. '''Arrêter de nouveau le client et le serveur''' par un <tt>CTRL+C</tt> dans la console de chacun d'eux.
{| border="1"
+
|- align="center"
+
|
+
'''VLAN-ID'''
+
  
 
|
 
'''Localisation'''
 
  
+
'''Voyons maintenant pour les communications en remise indirecte, si  cela reste vrai.''' Le serveur reste sur PC-1::c1, par contre le client va être démarré depuis le PC-2. Le routeur R2 va servir à relayer les paquets IPv6 du client PC-2::c2 vers le serveur. Les paquets émis par le client ne sont ainsi pas remis directement à la destination, mais délégués au routeur R2 qui va donc les relayer vers la destination finale. On parle dans ce cas d'une communication en remise indirecte.
|
+
'''Type d'usage'''
+
  
+
Toujours sur PC-1::c1, relancer, de nouveau le serveur en écoute sur le port 4500.
|
+
  root@PC-1::c1:~# '''nc -6 -l -v -n -u -p 4500'''
'''IPv6'''<br>
+
'''(VLAN-ID forme décimale)'''
+
  
+
Ensuite, indiquer au client sur PC-2::c2 d'utiliser l'adresse lien-local de eth0 de PC-1::c1 :
|- align="center"
+
{{HorsTexte|Nota|Avant de valider la commande sur Pc-2::c2 verifiez bien la valeur saisie de l'adresse LLA de PC-1::c1, relevée à l'étape 1 de ce tp avec la commande <tt>ip -6 addr show eth0</tt>. }}
|  
+
0001
+
  
   
+
  root@PC-2::c2:~# '''nc -6 -n -v -u fe80::c8ee:fbff:fead:15a9%eth0 4500'''
|
+
00
+
  
+
Les caractères que vous saisissez ne s'affichent pas sur la console du serveur. '''La communication ne passe pas !'''
|
+
01
+
  
   
+
'''Arrêter le client avec un CTRL+C et relancer le mais cette fois-ci en spécifiant l'adresse ULA du serveur PC-1::c1 :'''
|
+
root@PC-2::c2:~# '''nc -6 -n -v -u fd75:e4d9:cb77:1::c1 4500'''
<tt>2001:db8:cafe:'''0001'''::/64</tt>
+
  
 
|- align="center"
 
|
 
0529
 
  
   
+
et vérifier si la communication fonctionne en validant des chaînes de caractères , telles que "Hello IPv6 world !!! "sur la console du client, pour les voir s'afficher sur la console du serveur. Inversement, procéder à la saisie et validation des chaînes quelcoqnues sur le serveur PC-1::c1 et constater leur affichage sur le client PC-2::c2.
|
+
05
+
  
+
Tout marche bien. Arrêter de nouveau le client '''et''' le serveur par un <tt>CTRL+C</tt> dans la console de chacun d'eux.
|
+
29
+
  
+
Dans le cas d'une communication à remise indirecte, constatez vous une différence dans l'usage des types d'adresses ?  Que pouvez vous conclure sur la portée des adresses ULA utilisées dans cette étape ? Quelles sont les noeuds joignables avec ce type d'adresse ? Aucune station / uniquement les stations du même réseau / les stations d'une même organisation / les stations de l'internet ?
|
+
&nbsp;
<tt>2001:db8:cafe:'''0529'''::/64</tt>
+
  
   
+
Vous venez d'expérimenter le fonctionnement d'un réseau IPv6 en utilisant des adresses unicast lien-local (LLA) et des adresses unicast locales uniques (ULA). La portée limitée des adresses LLA ''(lien-local)'' et l'obligation d'expliciter l'interface de sortie rendent leur usage restreint. Cependant ces adresses sont utiles pour des mécanismes fonctionnant au niveau du lien, comme la découverte du voisinage direct ou le test de services sur le lien que nous verrons par  la suite.
|- align="center"
+
Les adresses ULA ont une portée moins limitée que les adresses LLA. Grâce à ces adresses configurées sur les interfaces de chaque équipement, il est possible de joindre des interfaces qui sont situées sur d'autres liens de l'interconnexion que celui de la source. Cette extension de la portée de la connectivité s'explique par le fait que les adresses ULA sont des adresses routables.
|
+
-->
4094
+
  
+
Dans cette étape, nous allons voir comment utiliser les adresses IPv6 pour effectuer des communications. Un échange entre un client et un serveur va être mis en place.
|
+
40
+
  
 +
Nous allons commencer par activer un serveur sur le noeud PC-2. Ceci s'effectue à l'aide de la commande <tt>netcat</tt> qui s'écrit en abrégé <tt>nc</tt>.
 +
Pour démarrer le serveur le serveur PC-2 lancer la commande suivante :
 +
  root@PC-2::c2:~# '''nc -6 -l -v -n -u -p 4500'''
 +
 +
Les options de la commande signifient que  <tt>netcat</tt> en IPv6 ''(-6)'' utilise UDP ''(-u)'', se met en écoute (listen) ''(-l)'' sur le port ''(-p)'' 4500 tout en étant explicite dans ses affichages ''(-v)''.
 +
 +
{{HorsTexte| Nota |Pour interrompre une commande comme <tt>netcat</tt> sur le serveur ou le client faites la combinaison de touches <tt>CTRL+C</tt> (appui simultané sur les touches ''Ctrl'' et ''C'').}}
 +
 +
Il nous reste maintenant à démarrer la version cliente de <tt>netcat</tt> sur PC-1::c1
 +
root@PC-1::c1:~# '''nc -6 -n -v -u ''ADDR6'' 4500'''
 +
 +
Ici le terme ADDR6 doit être remplacé par l'adresse IPv6 ULA du serveur PC-2 soit ''''fd75:e4d9:cb77:2::c2''''.
 +
 +
Tant qu'il n'y a pas de donnée à transmettre, il n'y a pas de communication.
 +
Aussi sur le terminal de PC-1, il vous faut saisir des caractères qui seront envoyés au serveur après l'appui sur la touche retour à la ligne. Une fois passé le retour à la ligne, vous verrez vos caractères saisis s'afficher sur le terminal de PC-2::c2. Par exemple sur PC-1::c1 taper la chaîne suivante "<tt> Hello IPv6 world !!</tt>" et valider par appui sur la touche retour, puis assurez vous de l'affichage de cette chaîne de caractères sur le terminal du serveur PC-2::c2. La communication étant bidirectionnelle, inversement sur le terminal du serveur PC-2::c2 vous pouvez taper la chaîne suivante "<tt> Welcome MOOC Objectif IPv6.</tt>" et vérifier son affichage sur le terminal du client PC-1::c1. Vous pouvez poursuivre en tapant des chaînes quelconques sur chacun des PC.
 +
 +
Tout fonctionne correctement. '''Arrêter le client et le serveur''' par un ''CTRL+C'' dans la console de chacun d'eux.
 +
 +
Que pouvez vous conclure sur la portée des adresses ULA utilisées dans cette étape ? Quels sont les noeuds joignables avec ce type d'adresse?  Aucune station / uniquement les stations du même réseau / les stations d'une même organisation /les stations de l'internet .
 +
 +
&nbsp;
 +
&nbsp;
 +
 +
{{HorsTexte| Nota |Inversement les adresses locale de lien (LLA) sont non routables, elles permettent que des communications directes entre noeuds voisisns confinés sur le même lien. La portée limitée des adresses LLA ''(lien-local)'' et l'obligation d'expliciter l'interface de sortie rendent leur usage restreint. Cependant ces adresses sont utiles pour des mécanismes fonctionnant au niveau du lien, comme la découverte du voisinage direct ou le test de services sur le lien que nous verrons par  la suite.}}
 +
 +
Vous venez d'expérimenter le fonctionnement d'un réseau IPv6 en utilisant des  adresses unicast local uniqe (ULA). Grâce à ces adresses configurées sur les interfaces de chaque équipement, il est possible de joindre des interfaces situées sur d'autres liens que celui de la source. Cette extension de la portée de connectivité s'explique par le fait que les adresses ULA (tout comme les GUA Global Unicast Address) sont des adresses routables.
 +
 +
== Etape 3 : Utiliser le web avec IPv6  ==
 +
 +
Pour fonctionner en IPv6, une application doit être prévue pour cela. De nos jours, les applications sont toutes compatibles IPv6. Nous allons dans cette étape montrer comment utiliser le web sur un réseau en IPv6.  Nous retiendrons le client <tt>curl</tt>, (''cURL'' signifiant client URL Request Library) qui n'est pas un navigateur mais une commande transfert. Cette commande sert à télécharger des éléments depuis un serveur web.
 +
 +
Sur le noeud PC-1, effectuer le téléchargement de la page d'accueil (index.html) du serveur web SRV-3, en indiquant l'URL avec une adresse IPv6. Le rfc2732 indique qu'un URL pour contenir une adresse IPv6 doit l'encadrer par les caractères crochets ([ ]). Indiquer la syntaxe de la commande <tt>curl</tt> utilisée.
 +
root@PC1::c1:~# '''curl http://[''ADDR6'']'''
 +
Avec ''ADDR6'', l'adresse routable du serveur web qui est localisé sur le noeud SRV-3, soit '''''fd75:e4d9:cb77:3::c3'''''.
 +
 +
root@PC-1::c1:~# '''curl http://[fd75:e4d9:cb77:3::c3]'''
 +
 
 +
  .
 +
  . code source de la page d'index du serveur
 +
  .
 
   
 
   
|
+
root@PC-1::c1:~#
94
+
  
 +
En fait, il est assez fastidieux pour un utilisateur de manipuler des adresses IPv6. Il est en effet bien plus aisé d'utiliser le service de noms.  Ce service se charge de traduire (on parle de résoudre) le nom en adresse IPv6. C'est l'application, ici le coté client qui se charge d'invoquer le service de noms.
 +
 +
'''''Nota : ''''' ''Le service de nommage DNS et de son focntionnement seront détaillés dans la séquence 3 de ce cours.''
 +
 +
Refaire le téléchargement de la page d'accueil du serveur web en spécifiant non plus une adresse dans l'URL mais le nom du serveur web qui, sur notre plateforme de tp  est : '''''srv.tp.'''''
 +
Indiquer la syntaxe de la commande <tt>curl</tt> pour réaliser ce transfert en IPv6.
 +
<!--
 +
\verb"curl srv.tp"
 +
-->
 +
root@PC-1::c1:~# '''curl http://...
 +
avec ''nom'' le nom du serveur web.
 +
 +
root@PC-1::c1:~# '''curl http://srv.tp'''
 +
 
 +
  .
 +
  . code source de la page d'index du serveur
 +
  .
 
   
 
   
|
+
root@PC-1::c1:~#
<tt>2001:db8:cafe:'''4094'''::/64</tt>
+
Dans ce dernier cas, vous pouvez remarquer que l'utilisation de communications au moyen d'IPv6 est ici similaire à la situation  de l'Internet que vous connaissez. IPv6 reste complétement transparent à l'utilisateur. Nous verrons dans la dernière séquence de ce cours que les choses se compliquent lorsque des éléments de l'Internet sont encore en IPv4.
  
 +
== Etape 4 : Echanges en multi-diffusion ''(multicast)'' ==
 +
 +
Nous n'allons pas ici étudier le système de communication en multicast. Cela demande toute une "tuyauterie" qui dépasse le cadre de ce cours. Nous proposons juste de montrer l'utilisation de communications en multicast.
 +
 +
Nous allons commencer par déterminer les adresses multicasts attribuées aux interfaces d'un noeud.
 +
Dans le cas d'un hôte comme celui de PC-1, vous allez afficher les adresses attribuées à l'interface Ethernet de cette machine. Ceci s'effectue par la commande:
 +
  root@PC-1::c1:~# '''ip maddr show'''
 +
  root@PC-1::c1:~# '''ip -6 maddr show'''
 +
 +
Vous pouvez constater que l'interface eth0 de ce noeud possède plusieurs adresses IPv6 multicast :
 +
* l'adresse <tt>ff02::1</tt> représente  l'adresse multicast tous les noeuds du lien ''(All Nodes)'' de portée locale au lien. Tous les noeuds d'un lien recoivent sur cette adresse.
 +
* l'adresse <tt>ff01::1</tt> de portée "noeud" représente  toutes les interfaces du noeud.
 +
* l'adresse <tt>ff02::1:ff00:c1</tt> représente l'adresse multicast de sollicitation du noeud ''(sollicited-node address)'' correspondant à l'adresse ULA de PC-1 (''fd75:e4d9:cb77:1::c1''). Le préfixe réservé de cette adresse est  <tt>ff02::1:ff00:0/104</tt>. Les 24 bits manquants sont extraits des bits de poids faible de l'adresse unicast du noeud.
 +
* l'adresse <tt>ff02::1:ffda:4c10</tt> représente l'adresse multicast de sollicitation du noeud ''(sollicited-node address)'' correspondant à l'adresse LLA de PC-1 (''fe80::5433:bfff:feda:4c10''). Le préfixe réservé de cette adresse est  <tt>ff02::1:ff00:0/104</tt>. Les 24 bits manquants sont extraits des bits de poids faible de l'adresse LLA du l'interface eth0.
 +
 +
Faites la commande d'affichage des adresses multicasts, sur le routeur R1:
 +
vyos@r1::~$ '''show interfaces detail'''
 +
vyos@r1::~$ '''show ipv6 groups'''
 +
 +
Vous allez voir que le routeur s'est vu attribué une adresses multicast supplémentaires, sur les portées 1,2 et 5 sur l'interface eth0 (indice : l'identificateur de groupe est à 2). Quel est le nom de cette adresse et quel est son usage ?
 +
 +
<!--
 +
Pour vous aider à répondre à cette question, outre le cours, vous pouvez consulter le registre des adresses IPv6 multicast [http://www.iana.org/assignments/ipv6-multicast-addresses/ipv6-multicast-addresses.xhtml IPv6 Multicast Address Space Registry]
 +
-->
 +
Pour vous aider à répondre à cette question, outre le cours, vous pouvez consulter le registre des adresses IPv6 multicast [http://www.iana.org/assignments/ipv6-multicast-addresses/ipv6-multicast-addresses.xhtml http://www.iana.org/assignments/ipv6-multicast-addresses/ipv6-multicast-addresses.xhtml]
 +
 +
Nous allons voir maintenant si les noeuds répondent à une sollicitation sur l'adresse multicast. Pour cela nous allons utiliser la commande <tt>ping6</tt> qui sert à effectuer un test d'accessibilité à savoir si une adresse IPv6 donnée est bien attribuée sur le réseau autrement dit qu'il existe une interface avec l'adresse IP en question. <tt>ping6</tt> envoi un message particulier de sollicitation à l'adresse identifiant une interface réseau.  Si cette interface est active et accessible, elle recevra le message émis et renverra une réponse à l'émetteur. Ces réponses sont reçues par la commande <tt>ping6</tt> et les affiche sur le terminal.
 +
 +
Depuis PC-1, commençons par un test avec l'adresse "''All Nodes''":
 +
root@PC-1:c1:~# '''ping6 -c 2 ff02::1%eth0'''
 +
PING ff02::1%eth0(ff02::1) 56 data bytes
 +
'''64 bytes from fe80::5433:bfff:feda:4c10: icmp_seq=1 ttl=64 time=0.053 ms'''
 +
'''64 bytes from fe80::e49:aff:fe42:7b00: icmp_seq=1 ttl=64 time=2.26 ms (DUP!)'''
 +
64 bytes from fe80::5433:bfff:feda:4c10: icmp_seq=2 ttl=64 time=0.130 ms
 
   
 
   
|}
+
--- ff02::1%eth0 ping statistics ---
</center>
+
2 packets transmitted, 2 received, +1 duplicates, 0% packet loss, time 1001ms
 +
rtt min/avg/max/mdev = 0.053/0.816/2.265/1.025 ms
 +
root@PC-1:c1:~#
 +
 
 +
{{HorsTexte| Nota |Le paramètre '''-c 2''' permet de demander l'émission de 2 messages successifs vers la destination ''All Nodes'' (<tt>ff02::1</tt> sur l'interface <tt>eth0</tt>) : messages ''icmp_seq-1'' et ''icmp_seq-2''. Si on ne demandait qu'un seul message ( paramètre ''-c 1''), les réponses multiples (marquées ''"DUP!"'') étant filtrées à l'affichage, on ne pourrait pas constater que tous les nœuds du lien ont répondu.}}
 +
 
 +
 
 +
Le résultat vous montre que 2 réponses ont été obtenues pour une seule sollicitation d'émise. Les adresses sources sont des adresses lien-local. Vous reconnaitrez les adresses sources de PC-1 et de R1 sur le lien Net 1.
 +
 
 +
Bien que le caractère multicast va être moins évident à montrer avec l'adresse multicast "''All Routers''" vu qu'il n'y a qu'un seul routeur sur le lien Net 1, vous pouvez néanmoins  faire un test d'accessibilité de la manière suivante sur PC-1:
 +
root@PC-1::c1:~$ '''ping6 -c 2 ff02::2%eth0'''
 +
Comme prévu, le routeur R1 répond à la sollicitation. Ces 2 adresses multicast vont servir à la découverte des noeuds ou de routeurs IPv6 sur un lien.
 +
 
 +
Cette étape a été une première initiation à la communication en multicast. Si vous voulez en savoir plus sur le fonctionnement du multicast IP, il existe une littérature abondante, nous vous renvoyons aux références citées à la fin de l'activité "adresses Multicast" de ce cours.
 +
 
 +
=== Arrêt/Pause du simulateur ===
 +
Au besoin vous pouvez aussi figer l'exécution des équipements avec le bouton Pause ''"Suspend all nodes"'', voire arrêter les équipements avec le bouton Stop ''"Stop all nodes"''.
  
 +
L'état des équipements est sauvegardé en quittant. Pour quitter proprement GNS3, faire <tt>CTRL+Q</tt> ou faire, avec le menu déroulant ''File'' et l'action ''Quit''.
  
Ce document est librement inspiré des sources suivantes :
+
==Conclusion==
* [https://www.ripe.net/support/training/material/IPv6-for-LIRs-Training-Course/Preparing-an-IPv6-Addressing-Plan.pdf « Preparing an IPv6 address plan »], publiée sous licence CC-BY par Surfnet (www.surfnet.nl)<br>
+
  
Autres lectures complémentaires recommandées :
+
Par cette première séquence du MOOC IPv6, vous avez pu découvrir l'usage de l'Internet en IPv6 et vous familiariser avec le format des adresses IPv6.
* [http://www.rfc-editor.org/rfc/rfc5375.txt RFC5375 : "IPv6 Unicast Address Assignment Considerations"] ainsi que sa lecture résumée et commentée par [http://www.bortzmeyer.org/5375.html  S. Bortmeyer],
+
Si le format de ces nouvelles adresses change quelque peu les habitudes prise avec l'adressage IPv4. Il n'en est rien pour l'utilisateur du réseau. L'usage de l'Internet en IPv6 lui est transparent. Nous verrons par la suite que la présence d'IPv4 dans l'Internet vient compliquer cette transparence.
* [http://www.rfc-editor.org/rfc/rfc3177.txt RFC6177 : "IPv6 Address Assignment to End Sites"] ainsi que sa lecture résumée et commentée par [http://www.bortzmeyer.org/6177.html S. Bortmeyer].
+

Latest revision as of 16:04, 22 February 2022

Activité 16 : Découvrez un réseau IPv6

L'objectif de cette première activité pratique est d'expérimenter la communication en IPv6 et de découvrir les adresses IPv6 dans un réseau IPv6. À l'aide d'une topologie de réseau comprenant deux hôtes, deux routeurs, ainsi qu'un serveur, vous allez pouvoir :

  1. prendre en main l'environnement de virtualisation GNS3 ;
  2. vous familiariser avec l'adressage en IPv6 et les commandes de consultation d'état d'une interface réseau. Vous verrez aussi comment identifier les types des adresses IPv6 et déterminer la portée des communications utilisant ces types d"adresses ;
  3. effectuer des communications locales au lien, ou des communications avec remises indirectes des paquets. Dans cette dernière forme de communication, les paquets passent à travers plusieurs liens avant d'atteindre la destination ;
  4. effectuer des échanges en multi-diffusion (multicast).

Comme le montre la figure 1, le réseau étudié est composé de nœuds (pc, routeurs, serveurs...) et repose uniquement sur IPv6. Un serveur web est installé et configuré sur l'hôte appelé SRV-3.

Figure 1: Topologie du réseau étudié.

Le support vous donne l'ensemble des opérations à réaliser pour aller jusqu'au bout de l'activité. Vous trouverez un résumé de ces commandes dans le Manuel Apprenant disponible dans l'onglet documentation du cours Objectif IPv6 du site de FUN.

Etape 0 : Démarrage de GNS3

Démarrage de votre machine virtuelle

Après avoir téléchargé la machine virtuelle "MOOCIPv6-S7", vous pouvez la démarrer soit en utilisant VirtualBox ou bien VMwarePlayer 15 ou supérieur:

Selon la configuration de votre PC, quelques messages "warning" peuvent apparaître. Validez, relancez ou ignorez-les dans un premier temps. Si vous obtenez un blocage, merci de consulter le forum pour identifier si une solution résout votre souci.

Une fois la machine virtuelle démarrée, vous verrez sur le bureau le raccourci pour les activités de travaux pratiques des séquences 1 à 4.

Pour l'adapter à la taille de votre écran : depuis le menu dans le coin inférieur gauche du bureau enchaîner Menu > Paramètres > Affichage. Enfin, ajuster à la résolution la mieux adaptée à votre écran, puis conserver les modifications si cela convient.

Démarrage du modèle de réseau sous GNS3

Double cliquer sur le lien intitulé "moocipv6.gns3", présent dans la partie haute du bureau de votre machine virtuelle.

Il est possible de restaurer le Snapshot (Activité_16) depuis Edit > Manage snapshots ce qui rechargera les configurations initiales des équipements.

Ensuite vous pouvez démarrer la simulation avec le bouton triangulaire vert, ou bien avec le menu Control > Start/Resume all nodes.

Attendre que la fenêtre Objectif-IPv6 - GNS3 apparaisse à l'écran comme présentée par la figure 2. Double cliquer sur la barre de titre de cette fenêtre pour qu'elle occupe la totalité de votre écran. Si besoin, vous pouvez ensuite recentrer l'image de la topologie dans la fenêtre centrale avec les boutons ascenseurs horizontal et vertical.

Figure 2: Démarrage de GNS3

Identification des liens physiques

Il est possible d'afficher les numéros des interfaces des équipements représentés sur la maquette, appuyer sur le bouton carré "a b c" situé juste en dessous du menu déroulant Node.

Une fois que vous aurez bien identifié les numéros d'interfaces des liaisons, nous pouvons constater ceci : Ce réseau est constitué de 4 liens.

  • lien PC-1 - R1 : les interfaces eth0 de PC-1 et R1 sont reliées à travers le réseau Net1 ;
  • lien R1 - R2 : les interfaces eth1 de R1 et R2 sont reliées à travers le réseau Net0 ;
  • lien PC-2 - R2 : les interfaces eth0 de PC-2 et R2 sont reliées à travers le réseau Net2.
  • lien SRV-3 - R2 : les interfaces eth0 de SRV-3 et eth3 de R2 sont reliées à travers le réseau Net3.

Activation des équipements

Si tout est correct, après l'appui bouton triangulaire vert démarrer "Start/Resume all nodes", dans la fenêtre centrale les témoins verts des liens indiquent que les équipements démarrent, et sur la droite la fenêtre "Topology Summary" montre aussi les témoins verts des équipements réseaux.

Au besoin vous pouvez aussi figer la simulation avec le bouton Pause "Suspend all nodes", voire arrêter la simulation avec le bouton Stop "Stop all nodes".

Pour sortir proprement du simulateur, faire CTRL+S si vous souhaitez sauvegarder l'état de votre simulation, et CTRL+Q ou bien avec le bouton "Stop all nodes".

Lorsque les nœuds sont actifs, il faut cliquer sur le bouton "Console connect to all nodes" symbolisé par ">_" situé à gauche du bouton triangulaire vert, juste en dessous du menu déroulant "Annotate". Une fenêtre composée de plusieurs onglets vous donne accès aux interfaces ligne de command (CLI Command Line Interface). Chaque onglet affiche le démarrage des différents équipements réseaux comme le montre la figure 3.

Note

Notons que le démarrage des PC est plus rapide que celui des routeurs, le temps de démarrage dépendant des capacités de votre machine : comptez quelques dizaines de secondes, parfois plus.

Une fois que tous les nœuds affichent leur console avec l'invite pour se connecter comme le montre la figure 3, votre plateforme de réseau est opérationnelle.

Figure 3 : Écran GNS3 avec les interfaces CLI.

Etape 1 : Découvertes de l'adressage IPv6

Dans cette étape nous allons découvrir les commandes pour afficher les adresses IPv6.

Dans le cas d'un hôte

Pour ouvrir une session sur un hôte tel que PC-1::c1, sélectionner l'onglet "PC-1::c1" de la fenêtre "Konsole", vous êtes alors directement en mode "root" sur PC-1, symbolisé par le prompt de commande

root@PC-1::c1:~#

Déterminer la configuration IP actuelle en tapant la commande :

root@PC-1::c1:~# ifconfig

ou

root@PC-1::c1:~# ip -6 address show

Astuce

La touche de tabulation aide à terminer automatiquement la saisie des commandes.

Vous pouvez constater que l'interface de boucle (loopback) noté lo0 possède une adresse IPv6 alors que l'interface Ethernet (eth0) est configurée avec 2 adresses IPv6.

Quelle est l'adresse IPv6 sur l'interface de boucle ?

 

Compléter ici les adresses IPv6 attribuées à l'interface eth0 de PC-1 et PC-2 :

PC-1 eth0 =  fe...
PC-1 eth0 =  fd...
PC-2 eth0 =  fe...
PC-2 eth0 =  fd...

Nota : Une adresse IPv6 s'indique sans préciser la longueur du préfixe. A l'inverse, un préfixe réseau consiste en une adresse IPv6 suffixée par le nombre de bits occupé par le préfixe. Ne confondez pas ces 2 notions: préfixe réseau et adresse.

Parmi les 2 adresses IP attribuées à l'interface Ethernet, il y a une adresse locale de lien (LLA Link Local Address) et une adresse locale unique (ULA Unique unicast Local Address). Pour différencier ces 2 types d'adresse, il faut analyser le mot de poids fort de l'adresse (le mot le plus à gauche). L'adresse LLA commence par le mot réservé fe80, l'adresse ULA par le mot réservé fd comme indiqué dans l'activité 13 "Familles d'adresses IPv6". Les 2 adresses ont la même longueur de préfixe à savoir de 64 bits.

Quel est le préfixe /64 auquel appartient l'adresse ULA de PC-1 ?

 

Quelles sont la première et la dernière adresse de ce préfixe /64 ?

 
 

Quelle est la valeur de l'adresse MAC de l'interface eth0 de PC-1 ?

 

Quelle est la méthode de construction utilisée pour l'identifiant d'interface (IID) de l'adresse LLA de PC-1?

 
 

Quelle est la méthode de construction utilisée pour l'identifiant d'interface (IID) de l'adresse ULA de PC-1?

 
 

Quelle est l'adresse de multicast sollicité correspondant à cette adresse ULA de PC-1?

 

Dans le cas d'un routeur

Pour ouvrir une session sur un routeur tel que R1, sélectioner l'onglet R1 de la fenêtre intitulée "Konsole". Démarrer une session de commande CLI (Command Line Interface) en vous connectant avec les identifiant/mots de passe vyos/vyos (Aucun echo de caractère n'est proposé lorsqu'on saisi le mot de passe). Le routeur affiche alors la bannière système, indiquant notamment sa version, puis l'invite de commande

 vyos@r1:~$ 

Vérifier l'état des interfaces par la commande:

vyos@r1:~$ show interfaces

Cette commande affiche les adresses configurées sur les interfaces des routeurs. Les routeurs possèdent chacun, en plus de l'interface (lo) de boucle locale, 2 interfaces Ethernet actives (eth0 et eth1). En effet, les routeurs sont attachés à 2 liens. Un lien représente un réseau de distribution sur lequel on va trouver des PC (dans notre cas un PC::c1) et l'autre lien sert de réseau d'interconnexion (ou d'infrastructure) qui relie les routeurs (respectivement 3 liens eth0, eth1 et eth3 sur le routeur R2).

Noter ici les adresses ULA que vous observez sur les interfaces de R1 :

eth0 : 
eth1 : 

Vous pouvez remarquer que PC-1 et R1 partagent le même préfixe réseau. Cette plateforme a été numérotée à l'aide d'un préfixe de type ULA. En l'occurrence, il s'agit de fd75:e4d9:cb77::/48. Chaque lien s'est vu ensuite attribuer un identifiant sur 16 bits pour former en tout un préfixe de 64 bits. On parle de SID (Subnet Identifier) pour l'identifiant du lien sur 16 bits. C'est la raison pour laquelle un lien identifié par un préfixe réseau se qualifie quelquefois de sous-réseau. Bien que ce sous-réseau peut aussi s'appeler réseau si on considère qu'un routeur est la passerelle dans une interconnexion de réseaux.

Pour en revenir au plan d'adressage de notre plateforme, les affectations des SID ont été faites de la manière suivante:

  • 0 pour le sous-réseau d'interconnexion de R1 et R2
  • 1 pour le sous-réseau de distribution de PC-1 et R1
  • 2 pour le sous-réseau de distribution de PC-2 et R2
  • 3 pour le sous-réseau de distribution de SRV-3 et R2

Note

L'affichage détaillé se fait sous forme paginée à la console. Le caractère ":" indique qu'il y a des pages à suivre. Appuyer simplement sur la barre d'espace de votre clavier pour passer à la page suivante. A la dernière page le système affiche de nouveau le prompt de commande vyos@r1:~$.

Pour afficher la configuration détaillée des interfaces du routeur, il faut ajouter le paramètre "detail" à la commande précdente. Le routeur affiche alors pour chacune de ses interfaces, l'ensemble des adresses affectées, ainsi qu'un certain nombre d'indicateurs d'état.

 vyos@r1:~$ show interfaces detail

Maintenant, prendre soin de relever ici les adresses LLA attribuées aux interfaces eth0 et eth1 du routeur R1 :

eth0 : 
eth1 : 

Vous pouvez vérifier que l'interface de PC-2::c2 possède bien une adresse IPv6 ULA. Retrouvez-vous la valeur du SID de 2 dans cette adresse ?

Etape 2 : Communications en IPv6

Dans cette étape, nous allons voir comment utiliser les adresses IPv6 pour effectuer des communications. Un échange entre un client et un serveur va être mis en place.

Nous allons commencer par activer un serveur sur le noeud PC-2. Ceci s'effectue à l'aide de la commande netcat qui s'écrit en abrégé nc. Pour démarrer le serveur le serveur PC-2 lancer la commande suivante :

 root@PC-2::c2:~# nc -6 -l -v -n -u -p 4500

Les options de la commande signifient que netcat en IPv6 (-6) utilise UDP (-u), se met en écoute (listen) (-l) sur le port (-p) 4500 tout en étant explicite dans ses affichages (-v).

Nota

Pour interrompre une commande comme netcat sur le serveur ou le client faites la combinaison de touches CTRL+C (appui simultané sur les touches Ctrl et C).

Il nous reste maintenant à démarrer la version cliente de netcat sur PC-1::c1

root@PC-1::c1:~# nc -6 -n -v -u ADDR6 4500

Ici le terme ADDR6 doit être remplacé par l'adresse IPv6 ULA du serveur PC-2 soit 'fd75:e4d9:cb77:2::c2'.

Tant qu'il n'y a pas de donnée à transmettre, il n'y a pas de communication. Aussi sur le terminal de PC-1, il vous faut saisir des caractères qui seront envoyés au serveur après l'appui sur la touche retour à la ligne. Une fois passé le retour à la ligne, vous verrez vos caractères saisis s'afficher sur le terminal de PC-2::c2. Par exemple sur PC-1::c1 taper la chaîne suivante " Hello IPv6 world !!" et valider par appui sur la touche retour, puis assurez vous de l'affichage de cette chaîne de caractères sur le terminal du serveur PC-2::c2. La communication étant bidirectionnelle, inversement sur le terminal du serveur PC-2::c2 vous pouvez taper la chaîne suivante " Welcome MOOC Objectif IPv6." et vérifier son affichage sur le terminal du client PC-1::c1. Vous pouvez poursuivre en tapant des chaînes quelconques sur chacun des PC.

Tout fonctionne correctement. Arrêter le client et le serveur par un CTRL+C dans la console de chacun d'eux.

Que pouvez vous conclure sur la portée des adresses ULA utilisées dans cette étape ? Quels sont les noeuds joignables avec ce type d'adresse? Aucune station / uniquement les stations du même réseau / les stations d'une même organisation /les stations de l'internet .

 
 

Nota

Inversement les adresses locale de lien (LLA) sont non routables, elles permettent que des communications directes entre noeuds voisisns confinés sur le même lien. La portée limitée des adresses LLA (lien-local) et l'obligation d'expliciter l'interface de sortie rendent leur usage restreint. Cependant ces adresses sont utiles pour des mécanismes fonctionnant au niveau du lien, comme la découverte du voisinage direct ou le test de services sur le lien que nous verrons par la suite.

Vous venez d'expérimenter le fonctionnement d'un réseau IPv6 en utilisant des adresses unicast local uniqe (ULA). Grâce à ces adresses configurées sur les interfaces de chaque équipement, il est possible de joindre des interfaces situées sur d'autres liens que celui de la source. Cette extension de la portée de connectivité s'explique par le fait que les adresses ULA (tout comme les GUA Global Unicast Address) sont des adresses routables.

Etape 3 : Utiliser le web avec IPv6

Pour fonctionner en IPv6, une application doit être prévue pour cela. De nos jours, les applications sont toutes compatibles IPv6. Nous allons dans cette étape montrer comment utiliser le web sur un réseau en IPv6. Nous retiendrons le client curl, (cURL signifiant client URL Request Library) qui n'est pas un navigateur mais une commande transfert. Cette commande sert à télécharger des éléments depuis un serveur web.

Sur le noeud PC-1, effectuer le téléchargement de la page d'accueil (index.html) du serveur web SRV-3, en indiquant l'URL avec une adresse IPv6. Le rfc2732 indique qu'un URL pour contenir une adresse IPv6 doit l'encadrer par les caractères crochets ([ ]). Indiquer la syntaxe de la commande curl utilisée.

root@PC1::c1:~# curl http://[ADDR6]

Avec ADDR6, l'adresse routable du serveur web qui est localisé sur le noeud SRV-3, soit fd75:e4d9:cb77:3::c3.

root@PC-1::c1:~# curl http://[fd75:e4d9:cb77:3::c3]
 
 .
 . code source de la page d'index du serveur
 .

root@PC-1::c1:~#

En fait, il est assez fastidieux pour un utilisateur de manipuler des adresses IPv6. Il est en effet bien plus aisé d'utiliser le service de noms. Ce service se charge de traduire (on parle de résoudre) le nom en adresse IPv6. C'est l'application, ici le coté client qui se charge d'invoquer le service de noms.

Nota : Le service de nommage DNS et de son focntionnement seront détaillés dans la séquence 3 de ce cours.

Refaire le téléchargement de la page d'accueil du serveur web en spécifiant non plus une adresse dans l'URL mais le nom du serveur web qui, sur notre plateforme de tp est : srv.tp. Indiquer la syntaxe de la commande curl pour réaliser ce transfert en IPv6.

root@PC-1::c1:~# curl http://...

avec nom le nom du serveur web.

root@PC-1::c1:~# curl http://srv.tp
 
 .
 . code source de la page d'index du serveur
 .

root@PC-1::c1:~#

Dans ce dernier cas, vous pouvez remarquer que l'utilisation de communications au moyen d'IPv6 est ici similaire à la situation de l'Internet que vous connaissez. IPv6 reste complétement transparent à l'utilisateur. Nous verrons dans la dernière séquence de ce cours que les choses se compliquent lorsque des éléments de l'Internet sont encore en IPv4.

Etape 4 : Echanges en multi-diffusion (multicast)

Nous n'allons pas ici étudier le système de communication en multicast. Cela demande toute une "tuyauterie" qui dépasse le cadre de ce cours. Nous proposons juste de montrer l'utilisation de communications en multicast.

Nous allons commencer par déterminer les adresses multicasts attribuées aux interfaces d'un noeud. Dans le cas d'un hôte comme celui de PC-1, vous allez afficher les adresses attribuées à l'interface Ethernet de cette machine. Ceci s'effectue par la commande:

 root@PC-1::c1:~# ip maddr show 
 root@PC-1::c1:~# ip -6 maddr show 

Vous pouvez constater que l'interface eth0 de ce noeud possède plusieurs adresses IPv6 multicast :

  • l'adresse ff02::1 représente l'adresse multicast tous les noeuds du lien (All Nodes) de portée locale au lien. Tous les noeuds d'un lien recoivent sur cette adresse.
  • l'adresse ff01::1 de portée "noeud" représente toutes les interfaces du noeud.
  • l'adresse ff02::1:ff00:c1 représente l'adresse multicast de sollicitation du noeud (sollicited-node address) correspondant à l'adresse ULA de PC-1 (fd75:e4d9:cb77:1::c1). Le préfixe réservé de cette adresse est ff02::1:ff00:0/104. Les 24 bits manquants sont extraits des bits de poids faible de l'adresse unicast du noeud.
  • l'adresse ff02::1:ffda:4c10 représente l'adresse multicast de sollicitation du noeud (sollicited-node address) correspondant à l'adresse LLA de PC-1 (fe80::5433:bfff:feda:4c10). Le préfixe réservé de cette adresse est ff02::1:ff00:0/104. Les 24 bits manquants sont extraits des bits de poids faible de l'adresse LLA du l'interface eth0.

Faites la commande d'affichage des adresses multicasts, sur le routeur R1:

vyos@r1::~$ show interfaces detail
vyos@r1::~$ show ipv6 groups

Vous allez voir que le routeur s'est vu attribué une adresses multicast supplémentaires, sur les portées 1,2 et 5 sur l'interface eth0 (indice : l'identificateur de groupe est à 2). Quel est le nom de cette adresse et quel est son usage ?

Pour vous aider à répondre à cette question, outre le cours, vous pouvez consulter le registre des adresses IPv6 multicast http://www.iana.org/assignments/ipv6-multicast-addresses/ipv6-multicast-addresses.xhtml

Nous allons voir maintenant si les noeuds répondent à une sollicitation sur l'adresse multicast. Pour cela nous allons utiliser la commande ping6 qui sert à effectuer un test d'accessibilité à savoir si une adresse IPv6 donnée est bien attribuée sur le réseau autrement dit qu'il existe une interface avec l'adresse IP en question. ping6 envoi un message particulier de sollicitation à l'adresse identifiant une interface réseau. Si cette interface est active et accessible, elle recevra le message émis et renverra une réponse à l'émetteur. Ces réponses sont reçues par la commande ping6 et les affiche sur le terminal.

Depuis PC-1, commençons par un test avec l'adresse "All Nodes":

root@PC-1:c1:~# ping6 -c 2 ff02::1%eth0
PING ff02::1%eth0(ff02::1) 56 data bytes
64 bytes from fe80::5433:bfff:feda:4c10: icmp_seq=1 ttl=64 time=0.053 ms
64 bytes from fe80::e49:aff:fe42:7b00: icmp_seq=1 ttl=64 time=2.26 ms (DUP!)
64 bytes from fe80::5433:bfff:feda:4c10: icmp_seq=2 ttl=64 time=0.130 ms

--- ff02::1%eth0 ping statistics ---
2 packets transmitted, 2 received, +1 duplicates, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.053/0.816/2.265/1.025 ms
root@PC-1:c1:~#

Nota

Le paramètre -c 2 permet de demander l'émission de 2 messages successifs vers la destination All Nodes (ff02::1 sur l'interface eth0) : messages icmp_seq-1 et icmp_seq-2. Si on ne demandait qu'un seul message ( paramètre -c 1), les réponses multiples (marquées "DUP!") étant filtrées à l'affichage, on ne pourrait pas constater que tous les nœuds du lien ont répondu.


Le résultat vous montre que 2 réponses ont été obtenues pour une seule sollicitation d'émise. Les adresses sources sont des adresses lien-local. Vous reconnaitrez les adresses sources de PC-1 et de R1 sur le lien Net 1.

Bien que le caractère multicast va être moins évident à montrer avec l'adresse multicast "All Routers" vu qu'il n'y a qu'un seul routeur sur le lien Net 1, vous pouvez néanmoins faire un test d'accessibilité de la manière suivante sur PC-1:

root@PC-1::c1:~$ ping6 -c 2 ff02::2%eth0

Comme prévu, le routeur R1 répond à la sollicitation. Ces 2 adresses multicast vont servir à la découverte des noeuds ou de routeurs IPv6 sur un lien.

Cette étape a été une première initiation à la communication en multicast. Si vous voulez en savoir plus sur le fonctionnement du multicast IP, il existe une littérature abondante, nous vous renvoyons aux références citées à la fin de l'activité "adresses Multicast" de ce cours.

Arrêt/Pause du simulateur

Au besoin vous pouvez aussi figer l'exécution des équipements avec le bouton Pause "Suspend all nodes", voire arrêter les équipements avec le bouton Stop "Stop all nodes".

L'état des équipements est sauvegardé en quittant. Pour quitter proprement GNS3, faire CTRL+Q ou faire, avec le menu déroulant File et l'action Quit.

Conclusion

Par cette première séquence du MOOC IPv6, vous avez pu découvrir l'usage de l'Internet en IPv6 et vous familiariser avec le format des adresses IPv6. Si le format de ces nouvelles adresses change quelque peu les habitudes prise avec l'adressage IPv4. Il n'en est rien pour l'utilisateur du réseau. L'usage de l'Internet en IPv6 lui est transparent. Nous verrons par la suite que la présence d'IPv4 dans l'Internet vient compliquer cette transparence.

Personal tools