top of page
La fragmentation IP

Que se passe-t-il quand un paquet IP est routé à travers plusieurs réseaux de types différents ? Il est encapsulé dans diverses couches de niveaux 2 successives. Mais ces couches peuvent mettre en oeuvre des protocoles de niveau 2 différents, si les réseaux physiques sont différents. Par exemple, en passant d’un LAN Ethernet à un LAN Token Ring vous changez de protocole de niveau 2. L’un utilise le MAC Ethernet et l’autre le MAC Token Ring, qui sont différents.

Si ces protocoles sont différents, leurs caractéristiques le sont également (zut!). Une des caractéristiques qui risque fort de différer et qui nous intéresse ici est la taille de la MTU !

La fragmentation

La taille maximum d’une trame est appelée MTU (Maximum Transfer Unit) et entraine alors la fragmentation du datagramme, lorsque la taille de celui-ci est plus importante que le MTU du réseau considéré.

Les MTU les plus fréquents sont :

  • ARPANET : 1000

  • ETHERNET : 1500

  • FDDI : 4470

La fragmentation d’un datagramme s’effectue au niveau des équipements de routage, c’est-à-dire lors de la transition des datagrammes, d’un réseau dont le MTU est important à un réseau dont le MTU est plus réduit. Donc, lorsqu’un datagramme est trop grand pour passer en un seul morceau sur le réseau considéré, le routeur va le fragmenter (ou plus prosaïquement, le découper), en fragments de taille inférieure au MTU dudit réseau et de façon à ce que la taille du fragment soit un multiple de 8 octets.

fragmentation_exemple.gif

L’équipement réseau peut ensuite envoyer ces fragments de façon autonome et les encapsuler (c’est-à-dire, ajouter un entête à chacun des fragments), pour tenir compte de la nouvelle taille du fragment (une sorte de ré étiquetage). Le routeur en profite également pour ajouter des informations à l’intention de la machine destinatrice afin qu’elle puisse réassembler les morceaux dans le bon ordre.

Ici, les fragments obtenus ne sont pas assemblés avant de traverser le réseau terminal IEEE 802.4 bien que sa MTU soit nettement plus élevée. Leur assemblage interviendra à leur arrivée dans la couche IP de l'hôte de destination. Il a tous les éléments en main pour le faire : le champ identification pour repérer les fragments d'un même datagramme, les décalages pour les assembler dans l'ordre, le champ fragment offset pour reconnaître le dernier fragment.

Acteurs des opérations de fragmentation et de défragmentation

​A ce stade il est important de bien retenir les points suivants :

  • La fragmentation est mise en œuvre par les routeurs car ils sont seuls à pouvoir connaître les caractéristiques matérielles des réseaux auxquels ils sont reliés, jamais par les postes du réseau.
     

  • Les routeurs n'assemblent pas les datagrammes fragmentés. Cette opération est implémentée par l'hôte de destination.
     

  • La fragmentation à lieu au niveau de la couche 4. 

Fragmentation et en-tête IP

Rappelez-vous le format du paquet IP. Les octets 5 à 8 de l’entête se nomment Identificateur, Flag et Fragment Offset. Nous avions dit que ces octets étaient réservés à la fragmentation (ou segmentation, comme vous voulez !).

 

Expliquons un peu mieux à quoi servent ces octets :

  • Le champ Identificateur (2 octets) : c’est un numéro d’identification inscrit par l’émetteur du paquet. Tous paquets émis par une même machine à l’attention d’un même destinataire porte un numéro d’identification différent. En cas de fragmentation, ce numéro d’identification est recopié dans tous les fragments du paquet d’origine. Ceci permettra au destinataire de repérer tous les fragments d’un même paquet et de reconstituer le paquet d’origine.

  • Le champ Flag (3 bits) : il permet de gérer la fragmentation :

    • bit 0: réservé – toujours positionné à 0

    • bit 1 : dit bit DF (Don’t Fragment) – S’il est positionné à 0, la fragmentation est autorisée – S’il est positionné à 1 la fragmentation est interdite. Dans ce dernier cas, si le paquet est trop volumineux pour être encapsulé dans une trame, dont le MTU est inférieur à la taille du paquet, la passerelle qui devrait réaliser la fragmentation retournera à l’émetteur du paquet un ICMP « Paquet non fragmentable ».

    • bit 2 : dit bit MF (More Fragment) – S’il est positionné à 0 il indique que le paquet reçu est le dernier du paquet d’origine. S’il est positionné à 1, il indique que le paquet reçu est un fragment du paquet d’origine mais pas le dernier fragment. Un paquet qui n’a pas été fragmenté aura donc toujours ce bit à 0.

  • Le champ Fragment Offset : est de 13 bits et indique à quel endroit un fragment appartient au datagramme IPv4 d'origine. Cette valeur est un multiple de huit octets.

bottom of page