Difference between revisions of "MOOC:Compagnon Act25-s6"

From Livre IPv6

(Besoin de fragmentation IPv6)
(Besoin de fragmentation IPv6)
Line 40: Line 40:
  
 
L'identification d'un fragment (à quel paquet appartient-il ? Quel est la position relative de ce fragment ?) est transmise dans une extension de fragmentation de l'en-tête IPv6. Le format de l'extension de fragmentation est donné figure Format de l'extension de fragmentation.
 
L'identification d'un fragment (à quel paquet appartient-il ? Quel est la position relative de ce fragment ?) est transmise dans une extension de fragmentation de l'en-tête IPv6. Le format de l'extension de fragmentation est donné figure Format de l'extension de fragmentation.
 
+
<center>
[[image:2015_10_14_PMTU_5_v02.jpg|thumb|right|400px| Format de l'extension de fragmentation]]
+
[[image:2015_10_14_PMTU_5_v02.jpg|thumb|center|400px| Format de l'extension de fragmentation]]
 
+
</center>
  
 
*Le champ <tt>place du fragment</tt> indique lors du réassemblage où les données doivent être insérées. Ceci permet de parer les problèmes dus au déséquencement dans les réseaux orientés datagrammes. Comme ce champ est sur 13 bits, la taille de tous les segments, sauf du dernier, doit être multiple de 8 octets.
 
*Le champ <tt>place du fragment</tt> indique lors du réassemblage où les données doivent être insérées. Ceci permet de parer les problèmes dus au déséquencement dans les réseaux orientés datagrammes. Comme ce champ est sur 13 bits, la taille de tous les segments, sauf du dernier, doit être multiple de 8 octets.

Revision as of 21:24, 14 October 2015

Gestion de la taille du paquet sur le chemin

Cas nominal (taille paquet < PMTU)

La couche réseau a pour tâche de placer les segments provenant de la couche transport (données utiles + entête transport) dans des paquets. Ces paquets sont ensuite placés dans des trames sur le support physique. Ce support, selon sa nature, définit une taille maximale de trame : Ethernet (1500 octets), PPPoA (1468 octets), MPLS (de 1500 à 65535 octets), etc. Cette taille fixe donc pour la couche réseau la taille maximale de données pouvant être placées dans un paquet, appelée MTU (Maximum Transmission Unit).

Encapsulation IP dans Ethernet

Un paquet IP est cependant amené à voyager sur plusieurs supports de natures différentes, chacun imposant des tailles maximales différentes. Pour pouvoir parcourir son chemin jusqu'à sa destination, le paquet doit donc avoir une taille inférieure ou égale à la plus grande taille autorisée par l'ensemble des liens traversés. Cette taille est de ce fait appelée PMTU (Path Maximum Transmission Unit) ou unité de transfert de taille maximale sur le chemin.

Pour des considérations d'efficacité, il est généralement préférable que les informations échangées entre équipements soient contenues dans des datagrammes de taille maximale. Une trop petite taille de paquet a pour effet d'augmenter la charge supplémentaire des en-têtes par rapport aux données transportées, ainsi que d'augmenter le nombre de paquet à traiter dans les routeurs. Au moment de créer des paquets, la couche réseau essaie donc de respecter au maximum la PMTU.

Figure Path MTU

Il est à noter qu'IPv6 impose une valeur minimale pour la MTU au niveau réseau (et donc pour la PMTU pour un chemin), valeur fixée à 1280. Cette limite a pour objectif d'éviter qu'un lien imposant une MTU très faible n'implique la transmission de petits paquets pour tous les chemins empruntant ce lien. Si un support physique impose une taille inférieure à 1280, il est nécessaire de mettre en place une couche d'adaptation pour la couche réseau. C'est le cas par exemple pour les réseaux IEEE 802.15.4 (imposant une MTU de 81 octets), pour laquelle la couche d'adaptation pour IPv6 6LowPAN (RFC 4944) a dû être spécifiée.

Cas où taille paquet > PMTU

Cependant la valeur de la PMTU n'est pas forcément connue à l'envoi d'un premier paquet vers une destination quelconque. L'émetteur du paquet fait alors la supposition que la taille maximale vers cette destination est égale à celle du support physique sur lequel il est connecté, c'est à dite la MTU du réseau d’accès.

L'acheminement du paquet s'effectue normalement jusqu'au premier routeur rencontrant une incompatibilité entre la taille du paquet à transmettre et la taille maximale autorisée sur le support physique. Le routeur est alors dans l'incapacité de transmettre le paquet. Dans le cas d'un paquet IPv6, le routeur utilise alors un message de signalisation (basé sur ICMPv6, qui sera décrit dans la séquence 3) pour informer l'émetteur du paquet du problème d'acheminement, ainsi que de la taille recommandée pour que les paquets soient retransmis.

Figure Négociation Path MTU Discovery

La couche réseau de l'émetteur doit alors, à la réception de ce message, émettre de nouveau les données, mais dans un paquet ayant pour taille celle recommandée dans le message. Cette valeur est alors enregistrée comme la PMTU pour tous les prochains paquets vers cette même destination. Ce processus peut être répété si d'autres liens imposent des tailles maximales de transmission encore inférieures. L'émetteur enregistrera les valeurs recommandées successives jusqu'à arriver à la taille maximale autorisée sur le chemin. Les paquets suivants qui respecteront cette taille seront alors acheminés sans problème. Ce mécanisme de découverte de la taille maximale de transmission sur le chemin est spécifié dans le RFC 1981.

Besoin de fragmentation IPv6

Il existe cependant des cas où la couche réseau ne peut pas adapter la taille des données à transmettre à la taille maximale autorisée sur le chemin. C'est le cas par exemple des messages transportés sur UDP pour le système de fichier NFS. Ces messages peuvent avoir une taille supérieure à celle autorisée sur le support.

La couche réseau n'a alors d'autres choix que de fragmenter ces données. Le principe de la fragmentation est de séparer un paquet devant être émis avec une taille trop importante en plusieurs paquets respectant la taille maximale autorisée. Ces paquets (ou fragments) sont émis et acheminés vers la destination comme n'importe quel autre paquet IP. La couche réseau du destinataire se charge alors de reconstruire le paquet IP original pour que les données puissent être traitées

Fragmentation

L'identification d'un fragment (à quel paquet appartient-il ? Quel est la position relative de ce fragment ?) est transmise dans une extension de fragmentation de l'en-tête IPv6. Le format de l'extension de fragmentation est donné figure Format de l'extension de fragmentation.

Format de l'extension de fragmentation
  • Le champ place du fragment indique lors du réassemblage où les données doivent être insérées. Ceci permet de parer les problèmes dus au déséquencement dans les réseaux orientés datagrammes. Comme ce champ est sur 13 bits, la taille de tous les segments, sauf du dernier, doit être multiple de 8 octets.
  • Le bit M s'il vaut 1 indique qu'il y aura d'autres fragments émis.
  • Le champ identification permet de repérer les fragments appartenant à un même paquet initial. Il est différent pour chaque paquet et recopié dans ses fragments.

Note : la fragmentation est permise en IPv4 au niveau des routeurs intermédiaires, leur donnant ainsi la possibilité de transmettre un paquet même s'il est de taille supérieure à la MTU du lien suivant. Mais dans ce cas, le mécanisme est jugé inefficace, car il augmente la tâche des routeurs. En IPv6, grâce au mécanisme de découverte de la taille maximale de transmission, les routeurs intermédiaires ne fragmentent plus les paquets. Si la fragmentation est cependant nécessaire, cette tâche est déléguée aux extrémités de la communication.

Pour aller plus loin : Jumbogrammes

Une autre fonction optionnelle d'IPv6, est l'option jumbogramme dans une extension d'en-tête Hop-By-Hop, qui permet l'échange de paquets ayant une charge utile jusqu'à 4 GB moins un (2^32 − 1 = 4294967295 octets), en permettant l'utilisation d'un champ longueur de 32-bit. De tels paquets sont appelés jumbogrammes.

Étant donné que TCP et UDP disposent de champs limités à 16 bits (longueur, pointeur urgent), le support des jumbogrammes IPv6 nécessite des modifications sur l'implémentation des couches de protocoles Transport. Les jumbogrammes sont intéressants sur des liens qui disposent d'un MTU plus grand que 65583 octets (plus de 65535 octets de charge utile, plus 40 octets pour la taille fixe de l'en-tête, plus 8 octets pour l'en-tête d'extension Hop-by-Hop).

Personal tools