9.2. IPv4 Traceroute
9.2. IPv4 Traceroute
Pour le traceroute IPv4, nous ne pouvons pas suivre la procédure ci-dessus car les messages ICMP Time Exceeded IPv4 ne contiennent que l'en-tête IP déclencheur et 8 octets après l'en-tête IP. Ainsi, lorsqu'un routeur de base envoie un message IPv4 Time Exceeded à l'ITR, tout ce que l'ITR a dans la charge utile ICMC est l'en-tête d'encapsulation qu'il a ajouté, suivi de l'en-tête UDP. L'en-tête IP déclencheur d'origine et donc l'identité de la source du traceroute sont perdus.
Notre solution proposée à ce problème consiste à mettre en cache les en-têtes IPv4 traceroute dans l'ITR et à les faire correspondre avec les messages IPv4 Time Exceeded correspondants reçus des routeurs de base et de l'ETR. L'ITR utilisera un tampon circulaire pour mettre en cache les en-têtes IPv4 et UDP des paquets traceroute. Il sélectionnera un nombre de 16 bits comme clé pour les retrouver ultérieurement lors de la réception d'un message IPv4 Time Exceeded. Lorsque l'ITR encapsule un paquet traceroute IPv4, il utilisera le nombre de 16 bits comme port source UDP dans l'en-tête d'encapsulation. Lorsqu'un message ICMP Time Exceeded est retourné à l'ITR, l'en-tête UDP de l'en-tête d'encapsulation est présent dans la charge utile ICMP, permettant ainsi à l'ITR de trouver l'en-tête mis en cache de la source du traceroute. L'ITR placera l'en-tête mis en cache dans la charge utile et enverra le message ICMP Time Exceeded à la source du traceroute, en préservant l'adresse source du message ICMP Time Exceeded d'origine (le routeur de base ou l'ETR du site de destination du traceroute).
La signature d'un paquet traceroute se présente sous deux formes. La première forme est encodée comme un message UDP où la valeur du port de destination est examinée pour une plage de valeurs. La deuxième forme est encodée comme un message ICMP où le champ d'identification IP est examiné pour des valeurs connues.