Passa al contenuto principale

9.2. IPv4 Traceroute

9.2. IPv4 Traceroute

Per IPv4 traceroute, non possiamo seguire la procedura sopra descritta perché i messaggi ICMP Time Exceeded IPv4 contengono solo l'header IP scatenante e 8 ottetti dopo l'header IP. Pertanto, quando un router core invia un messaggio Time Exceeded IPv4 all'ITR, tutto ciò che l'ITR ha nel payload ICMP è l'header di incapsulamento che ha aggiunto seguito da un header UDP. L'header IP originale scatenante e l'identità della sorgente traceroute sono persi.

La soluzione che proponiamo per questo problema è che l'ITR memorizzi nella cache gli header IPv4 traceroute e li abbini ai corrispondenti messaggi Time Exceeded IPv4 ricevuti dai router core e dall'ETR. L'ITR utilizzerà un buffer circolare per memorizzare nella cache gli header IPv4 e UDP dei pacchetti traceroute. Selezionerà un numero a 16 bit come chiave in modo da poterli trovare in seguito quando viene ricevuto un messaggio Time Exceeded IPv4. Quando l'ITR incapsula un pacchetto traceroute IPv4, utilizzerà il numero a 16 bit come porta UDP di origine nell'header di incapsulamento. Quando viene restituito un messaggio ICMP Time Exceeded all'ITR, l'header UDP dell'header di incapsulamento è presente nel payload ICMP, consentendo così all'ITR di trovare gli header memorizzati nella cache della sorgente traceroute. L'ITR inserisce gli header memorizzati nella cache nel payload e invia il messaggio ICMP Time Exceeded alla sorgente traceroute, preservando l'indirizzo di origine del messaggio ICMP Time Exceeded originale (il router core o l'ETR del sito di destinazione traceroute).

La firma del pacchetto traceroute ha due forme. La prima forma è codificata come messaggio UDP dove viene verificato un intervallo di valori della porta di destinazione. La seconda forma è codificata come messaggio ICMP dove viene verificato un valore noto del campo Identification IP.