linux-l: Schnelles traceroute

Steffen Dettmer steffen at dett.de
Mo Okt 2 18:12:43 CEST 2000


Hi,

irgentwann haben "Carsten Heinrici" <heinrici at vlfbox.de> und ich
mal angefangen, ein traceroute nachzuprogrammieren. Ist ja sehr
interessant, sowas :)

Dabei kam mir dann ne Idee, wie man das erheblich beschleunigen
könnte. Man sendet gleichzeitig viele Packete mit
unterschiedlicher TTL. Dadurch bekommt man dann schnell viele
ICMP time exceeded zurück. Nun muß man natürlich wissen, welches
Packet zu welcher TTL gehörte. Dazu verwende ich einen einfachen
Trick: die Packete werden an verschiedene Ports gesendet. Im ICMP
Packet sind laut RFC-schlag-mich im payload die ersten 64 (?)
Bytes des orginalen (in dem Falle vernichtetem) Packetes
enthalten. Also steht im Payload des IMCP Packetes der orginale
IP und UDP header, und damit der Port, an den es mal ging. Na,
und dadurch weiß man dann, welche TTL das Packet hatte.

Dabei gibt's natürlich noch viele Problemchen (Packetlaufzeiten
beeinflussen sich gegenseitig, die meisten Packete werden eh
gedroppt, manche Router antworten "nicht richtig" etc.).

Jedenfalls ist das dann tatsächlich verdammt schnell (z.B. 10 mal
so schnell wie traceroute), aber eben nicht so zuverlässig, und
die Timings stimmen nicht.

Vielleicht hat ja hier jemand Lust, sich das mal anzuschauen, und
darüber zu diskutieren, oder vielleicht möchte auch jemand dran
basteln (irgentwie kriegen wir dann auch CVS-Access hin). Das
Thema finde ich ziemlich interessant, und es ist relativ komplex
:)

Der Kram liegt unter
http://sws.dett.de/Simpletraceroute/
(BTW: implementiert in C, klar :); siehe INSTALL/README etc.)

Sagt mal was dazu :)

oki,

Steffen

-- 
Dieses Schreiben wurde maschinell erstellt,
es trägt daher weder Unterschrift noch Siegel.



Mehr Informationen über die Mailingliste linux-l