Zum Hauptinhalt springen

9.2. IPv4 Traceroute

9.2. IPv4 Traceroute

Für IPv4-Traceroute können wir dem oben beschriebenen Verfahren nicht folgen, da IPv4 ICMP Time Exceeded-Nachrichten nur den auslösenden IP-Header und 8 Oktette nach dem IP-Header enthalten. Wenn also ein Kern-Router eine IPv4 Time Exceeded-Nachricht an den ITR sendet, hat der ITR in der ICMP-Payload nur den Kapselungs-Header, den er hinzugefügt hat, gefolgt vom UDP-Header. Der ursprüngliche auslösende IP-Header und die Identität der Traceroute-Quelle gehen verloren.

Die Lösung, die wir für dieses Problem vorschlagen, besteht darin, Traceroute-IPv4-Header im ITR zu cachen und sie mit entsprechenden IPv4 Time Exceeded-Nachrichten abzugleichen, die von Kern-Routern und dem ETR empfangen werden. Der ITR verwendet einen Ringpuffer, um die IPv4- und UDP-Header von Traceroute-Paketen zu cachen. Er wählt eine 16-Bit-Zahl als Schlüssel aus, um sie später beim Empfang einer IPv4 Time Exceeded-Nachricht zu finden. Wenn der ITR ein IPv4-Traceroute-Paket kapselt, verwendet er die 16-Bit-Zahl als UDP-Quellport im Kapselungs-Header. Wenn eine ICMP Time Exceeded-Nachricht zum ITR zurückkehrt, ist der UDP-Header des Kapselungs-Headers in der ICMP-Payload vorhanden, sodass der ITR die gecachten Header der Traceroute-Quelle finden kann. Der ITR platziert die gecachten Header in die Payload und sendet die ICMP Time Exceeded-Nachricht zur Traceroute-Quelle, wobei er die Quelladresse der ursprünglichen ICMP Time Exceeded-Nachricht (der Kern-Router oder ETR der Traceroute-Ziel-Site) beibehält.

Die Signatur von Traceroute-Paketen hat zwei Formen. Die erste Form ist als UDP-Nachricht kodiert, wobei der Zielport auf einen Wertebereich überprüft wird. Die zweite Form ist als ICMP-Nachricht kodiert, wobei das IP-Identifikationsfeld auf bekannte Werte überprüft wird.