Modern Linux Traceroute

This GPL version of traceroute by Dmitry Butskoy includes everything you could wish for in a traceroute or layer 4 traceroute. It requires Linux 2.6. It's shipped by default in some Linux distributions, at least RHEL5+, Fedora 7+, Ubuntu (since 07.10 release).

From README file in the Distribution

This is a new modern implementation of the traceroute(8) utility for Linux systems.

Traceroute tracks the route packets taken from an IP network on their way to a given host. It utilizes the IP protocol's time to live (TTL) field and attempts to elicit an ICMP TIME_EXCEEDED response from each gateway along the path to the host.

Main features:

Full support for both IPv4 and IPv6 protocols

Several tracerouting methods, including:

UDP datagrams (including udplite and udp to particlular port)

ICMP ECHO packets

TCP SYNs (in general, any TCP request with various flags and options)

Generic IP datagrams

UDP methods do not require root privileges

Ability to send several probe packets at a time

perform AS path lookups for returned addresses

show ICMP extensions, including MPLS

perform path MTU discovery automatically

show guessed number of hops in backward direction

command line compatible with the original traceroute

and much more, see traceroute(8) This code was written from the scratch, using some ideas of Olaf Kirch's traceroute, the original implementation of Van Jacobson (which was long used before) and some current BSD's ones.