Fragmentation ipv4
Dans cet article nous allons découvrir le processus de fragmentation et de réassemblage IP utilisé par IPv4. Nous allons voir l’objectif de la fragmentation IP, les champs pertinents contenus dans l’en-tête IP et le rôle de l’unité de transmission maximale (MTU) dans la détermination du moment où la fragmentation IP sera utilisée.
Comme spécifié dans la RFC 791, le processus de fragmentation et de réassemblage IP se produit au niveau de la couche IP et est transparent pour les protocoles de couche supérieure. Lorsqu’un bloc de données est préparé pour la transmission, le dispositif de transmission examine le MTU du réseau sur lequel les données doivent être envoyées ou transférées. Si la taille du bloc de données est inférieure à la MTU de ce réseau, les données sont transmises conformément aux règles de ce réseau particulier. Mais que se passe-t-il lorsque la quantité de données est supérieure au MTU du réseau? C’est à ce stade que l’une des fonctions de la couche IP, communément appelée fragmentation et réassemblage, entrera en jeu.
Unité de transmission maximale (MTU)
Il existe différentes architectures de transmission réseau, chacune ayant une limite physique du nombre d’octets de données pouvant être contenus dans une trame donnée. Cette limite physique est décrite dans de nombreuses spécifications et est appelée unité de transmission maximale ou MTU du réseau. Un exemple d’un tel MTU serait IEEE 802.3 Ethernet; Selon les spécifications, le nombre maximal d’octets de données pouvant être contenus dans une trame est de 1500. Le tableau suivant répertorie les MTU de plusieurs types de réseaux courants (tiré de RFC 1191):
Ethernet 802.3 | 1500 Octet |
Anneau à jeton de 4Mo | 4464 Octet |
Anneau à jeton de 16Mo | 17914 Octet |
FDDI | 4352 Octet |
X.25 | 576 Octet |
Le MTU devient important dans deux cas:
- Lorsque la taille du bloc de données en cours de transmission est supérieure à la MTU.
- Lorsque les données doivent traverser plusieurs architectures de réseau, chacune avec un MTU différent. Un tel exemple serait le cas si les données provenaient d’un réseau (Anneau à jeton de 4Mo) (MTU = 4464 Octet) connecté à un autre réseau (Anneau à jeton de 4Mo) (MTU = 4464 Octet) via un réseau (Ethernet) (MTU = 1500 Octet).
Quelle que soit la situation, les règles suivies par la fragmentation IP restent les mêmes.
Fragmentation et réassemblage IP
Revenons à l’exemple mentionné précédemment d’un bloc de données provenant d’un réseau (Anneau à jeton de 4Mo) (MTU = 4464 Octet) connecté à un autre réseau (Anneau à jeton de 4Mo) (MTU = 4464 Octet) via un réseau (Ethernet) (MTU = 1500 Octet).
Au moment de la transmission, le bloc de données respectait la restriction MTU pour le réseau en anneau de 4Mo. Pourtant, le routeur connectant le réseau en anneau au réseau Ethernet est obligé de transférer ce bloc volumineux sur un réseau doté d’un MTU plus petit. Alors, comment le routeur 1 gère-t-il cette situation de MTU? La réponse est simple, il suivra simplement les règles de la fragmentation IP.
Une fois que les données ont atteint le routeur 2, il effectue ensuite le réassemblage des fragments exactement comme décrit précédemment et transmet le bloc de données réassemblé au réseau avec le nouveau MTU.
Exemples de séquence de la fragmentation IP et du réassemblage
Processus de fragmentation
Dans l’exemple suivant, un datagramme IP est fragmenté en deux fragments. Ce même algorithme peut être utilisé pour fragmenter le datagramme en « n » fragments.
- La couche IP crée deux nouveaux datagrammes IP, dont la longueur répond aux exigences du réseau dans lequel le datagramme d’origine va être envoyé.
- L’en-tête IP du datagramme IP d’origine est copié dans les deux nouveaux datagrammes.
- Les données du datagramme IP d’origine sont divisées en deux sur une limite de 8 octets. Le nombre de blocs de 8 octets dans la première partie est appelé « Number of Fragment Blocks » (NFB) ou Nombre de blocs de fragments.
- La première partie des données est placée dans le premier nouveau datagramme IP.
- Le champ de longueur du premier nouveau datagramme IP est défini sur la longueur du premier datagramme.
- Le champ de décalage de fragment(Offset) dans le premier datagramme IP est défini sur la valeur de ce champ dans le datagramme d’origine.
- Le champ « more fragments » (MF) du premier datagramme IP est défini sur un.
- La deuxième partie des données est placée dans le deuxième nouveau datagramme IP.
- Le champ de longueur du deuxième nouveau datagramme IP est défini sur la longueur du deuxième datagramme.
- Le champ « More Fragments » (MF) du deuxième datagramme IP est défini sur la même valeur que le datagramme IP d’origine.
- Le champ de décalage de fragment(Offset) dans le deuxième datagramme IP est défini sur la valeur de ce champ dans le datagramme d’origine plus NFB.
Processus de réassemblage
- Lorsqu’un hôte reçoit un fragment IP, il le stocke dans un buffer de réassemblage basé sur son champ de décalage de fragment(offset).
- Une fois que tous les fragments du datagramme IP d’origine sont reçus, le datagramme est traité.
- À la réception du premier fragment, un compteur ou « timer » de réassemblage est lancée.
- Si le timer de réassemblage expire avant la réception de tous les fragments, le datagramme est supprimé.