rltraceroute6 - IPv6 traceroute tool
tcptraceroute6 - TCP/IPv6 traceroute tool
traceroute6 [-AdEILlnrSU] [-f min_hop] [-g hop] [ -i iface] [-m
max_hop] [-p port] [-q attempts] [ -s source] [-t tclass] [-w wait] [-z
delay_ms] < hostname/address> [packet length]
tcptraceroute6 [-AdEnrS] [-f min_hop] [-g hop] [ -i iface] [-l
packet_size] [-m max_hop] [-p port] [ -q attempts] [-s source] [-t
tclass] [-w wait] [ -z delay_ms] < hostname/address> [port]
rltraceroute6 is an IPv6 traceroute implementation.
It displays the list of hops along the network route between the local
system and specified destination, by sending packets while incrementing
their hop limit, until the final destination is reached.
By default, rltraceroute6 sends UDP probe packets toward the
destination (that’s the historical default). However, it can also send
TCP packets, much like Michael C. Toren’s tcptraceroute does on IPv4
networks; tcptraceroute6 sends TCP packets by default (and mimics
tcptraceroute command line syntax). Finally, it can also send ICMPv6
Echo Request packets, like some other traceroute implementations (such
as the one in Microsoft Windows); tracert6 does this by default.
You must specify the name or address of the host toward which the
network route should be determined. An optional additional parameter
specifies either the probe packets length (for UDP and ICMP packets),
or the destination port number/service name (for TCP packets).
Note that TCP destination port zero really is TCP port numbered 0
(which cannot be used via the standard higer-level TCP/IP programming
-A Send TCP/ACK probe packets. That’s very efficient against
stateless firewalls (e.g. the official Linux kernel versions up
to and including 2.4.31 and 2.6.14), and utterly helpless
against stateful ones. Note that TCP/ACK probing cannot
determine whether the destination TCP port is open or not.
-d Enable socket debugging option (SO_DEBUG). Unless you are
debugging the kernel, this is probably not going to have any
-E Send ECN-setup TCP/SYN probe packets (as per RFC 3168) rather
than non-ECN-setup TCP/SYN probe packets. This has no effect
unless command line optin -S is specified as well.
-F This option is ignored for backward compatibility. IPv6 packets
are never fragmented en route.
-f Override the initial IPv6 packets hop limit (default: 1).
-g Add an IPv6 route segment within an IPv6 Routing Header. This
enables loose source routing. Currently, only "Type 0" routing
header is supported.
-h Display some help and exit.
-I (rltraceroute6 only)
Send ICMPv6 Echo requests (like ping6) as probe packets. That’s
the default for tracert6.
-i Only send packets through the specified interface. See also
-I (rltraceroute6 only)
Send UDP-Lite (protocol 136) packets (with full checksum
coverage) as probe packets instead of normal UDP (protocol 17).
-l (rltraceroute6 only)
Print the hop limit of received packets. This is mostly used to
detect asymmetric routing.
-l (tcptraceroute6 only)
Specify the size (bytes) of sent packets.
-m Override the maximum hop limit (maximum number of hops). The
default is 30 hops which should be sufficient on the IPv6
Internet for some time.
-N Try to resolve each hop’s IPv6 address to a host name. This is
the default. This option is meant for backward compatibility
-n Do not try to resolve each hop’s IPv6 address to a host name.
That may speed up the traceroute significantly.
-p For rltraceroute6, specify the base destination port number
(default: 33434). rltraceroute6 assumes that packets toward
this port up to this port plus the maximum hop limit are not in
use by any program on the final destination and that they are
not blocked by some firewall. The fact that this very assumption
was not always correct, eventually lead to the development of
the original IPv4 tcptraceroute by Michael Toren.
For tcptraceroute6, specify the source port number (default:
auto). Note that source port number zero really means number
zero, rather than some port number that would be automatically
assigned, as is the case with usual softwares.
-q Override the number of probes sent to each hop (default: 3).
-r Do not route packets, i.e. do not send packets through a gateway
that would be specified by the routing table. See also BUGS.
-S Use TCP/SYN probe packets. That’s the default for
-s Specify the source address to use for probe packets explicitly.
-S Use UDP probe packets. That’s the default for rltraceroute6.
-t Specify the traffic class (DSCP) for probe packets. See also
-U (rltraceroute6 only)
Send UDP probe packets. That’s the default.
-V Display program version and license and exit.
-w Override the delay (in seconds) to wait for response once a
given probe packet was sent (default: 5 seconds).
-x This option is ignored for seamless migration from IPv4
traceroute. The IPv6 header has no checksum field.
-z Specify a milliseconds delay to wait between each probe with
identical hop limit. This can be useful to work-around ICMPv6
rate limitation on some hosts.
If a response is received, the round-trip time is printed. In
addition, specific symbols denote certain errors:
* No response
No valid response received before the timeout delay (see -w
!N No route to destination
There is no entry for the destination network in the routing
!A Communication with destination administratively prohibited
A firewall explicitly rejected the traffic.
!S Beyond scope of source address
The address scope of the source address is too small to reach
the destination address. At the time of writing, this can only
happen when using a link-local source address to reach a global
scope destination. (Note: some IPv4 traceroute implementations
use !S for source route error which is completely different)
!H Address unreachable
The host address is not reachable for some other reasons,
particularly a link-layer failure (e.g. Neighbor discovery
!P Unrecognized Next Header type encountered
The destination does not implement the layer-4 protocol used.
You should retry with ICMPv6 Echo Requests (-I command line
option) which MUST be supported by any IPv6 node.
rltraceroute6 should be setuid root to allow use by non privileged
users. It will drop its root privileges before any attempt is made to
send or receive data from the network so as to reduce the possible
impact of a security vulnerability.
However useful they might be, -i and -r options are ignored by the
official Linux kernel at the time of writing this manpage, and hence do
not work as documented.
Support for option -t was broken until Linux kernel version 2.6.18.
Usage of Routing Header, with option -g, triggers an OOPS on Linux
kernel versions below 18.104.22.168.
Receiving TCP/SYN-ACK packets does not work on FreeBSD at all. This
severely limits the usefulness of tcptraceroute6 on FreeBSD.
Packet length takes the IPv6 header and, if present, extension headers
into account. rltraceroute6 versions before 0.7.4 used it as IPv6
payload length instead, i.e. did not include the layer-3 headers in the
computation. Linux iputils traceroute6 does not even include the UDP
header. On the whole, the packet length semantic is very inconsistent
among IPv6 traceroute implementations.
ipv6(7), traceroute(8), tcptraceroute(8), traceroute6(8)
Rémi Denis-Courmont <rdenis at simphalempin.com>
$Id: rltraceroute6.8 483 2007-08-08 15:09:36Z remi $
traceroute6 $Date: 2007-08-08 18:09:36 +0300 (Wed, 08 Aug 2007)TRACEROUTE6(8)