それは一貫して起こっているので、最も可能性の高い原因は、ルーターのファームウェアの1つにバグがあり、トレースパケットのドロップに失敗する(および「TTL超過」レポートを送信する)必要がある場合、またはその前に送信することのどちらかです。すべきです。次に、BSD tracerouteのマニュアルページの最初の問題の例を示します。
A sample use and output might be:
[yak 71]% traceroute nis.nsf.net.
traceroute to nis.nsf.net (35.1.1.48), 30 hops max, 56 byte packet
1 helios.ee.lbl.gov (128.3.112.1) 19 ms 19 ms 0 ms
2 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 39 ms 19 ms
3 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 39 ms 19 ms
4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 39 ms 40 ms 39 ms
[...]
Note that lines 2 & 3 are the same. This is due to a buggy kernel on the
2nd hop system - lbl-csam.arpa - that forwards packets with a zero ttl (a
bug in the distributed version of 4.3 BSD).
この例では、バグが発生しているのは2番目のルーターであり、3番目のルーターは#2と#3の両方として表示されます。
一方、TTLが0ではなく1に達したときに2番目のルーターにパケットをドロップさせるバグがあった場合はどうなるかを考えます。
- TTL = 1で送信されたトレースパケットは最初のルーターで0にデクリメントされ、ドロップしてTTL超過を報告するため、ホップ#1として表示されます。ここですべて良い。
- TTL = 2で送信されたパケットは、最初のルーターで1にデクリメントされます。次に、2番目のルーターはそれを0にデクリメントし、ドロップして報告するため、ホップ#2として表示されます。繰り返しになりますが、ここですべてが良好です。
- TTL = 3で送信されたパケットは、最初のルーターで2に減少します。次に、2番目のルーターはそれを1にデクリメントし、誤ってドロップして報告するため、ホップ#3として表示されます。
繰り返しになりますが、バグがあるのは2番目のルーターですが、この場合は2番目にリストされているのは2番目のルーターです(manページの例では、2番目にリストされているのは3番目です)。