BSD version

traceroute

Display the route packets take

traceroute [-46dFITUnrAV] [-f first_TTL] [-m max_TTL] [-q nqueries] [-i device] [-p port] [-s src_addr] [-N squeries] [-t tos] [-l flow_label] [-w waittime] [-z sendwait] [-g gateway,…] target [packetSize]

traceroute6 is the same as traceroute -6
tracert is the same as traceroute -I (ICMP ECHO only root)
tcptraceroute is the same as traceroute -T -p 80
tracepath non-priviledge

-f first_TTL Using 3 skips router and first hop(carrier's). Default 1.
-m max_ttl maximum hops. Default 30, too generous (these days), 18 should reach most every host.
-N squeries Number of packets sent out simultaneously (i.e. without waiting for a response) reducing the time to complete the trace. Default: 15.
Some gateways use ICMP rate throttling, specifying too large number can lead to loss of responses.
-z zzztime between probes (default 0). more than 10: milliseconds less than 10: number of seconds (fractional values allowed ).
-z 8 causes traceroute to go CPU bound 3/22/11 version 2.0.1, Feb 26 2009
Useful when some routers use rate-limit for icmp messages.
-w waittime seconds to wait for a response Default 5.0.
-q queries packets per hop. default 3. May display alternate routing.
-n no hostname lookup, i.e. DNS will not be queried (usually faster).
-t tos For IPv4, Type of Service (TOS) and Precedence value.
Useful values 16 (low delay) and 8 (high throughput). Requires super user.

For IPv6, set the Traffic Control value.

-r Routing tables are bypassed, packets are sent directly to a host on an attached network. If the host is not on a directly-attached network, an error is returned. Useful to ping a local host through an interface that has no route through it.
-s addr Chooses a specific source address.
-p port For UDP: destination port (incremented for each probe).
For ICMP: initial value of icmp sequence. (incremented by each probe ).
For TCP: destination port .
-U Use UDP datagrams (default)
-I Use ICMP ECHO (requires root)
-T Use TCP SYN (requires root)
-F Don't Fragment bit is set.
-g gateway Route through the specified gateway by adding IP source routing option to the outgoing packet. Most routers disable source routing.
-i interface Used to send packets. Default: according to the routing table.
-4, -6 By default resolve the name and choose the appropriate protocol.
If host returns both IPv4 and IPv6 addresses, use IPv4.
-A Perform AS path lookups in routing registries and display results directly after the addresses
-d debugging at socket level is Enabled
--help and exit.
-V and exit.

As a protection against an error in one or more routing tables that would cause looping, IP packets include a time-to-live (TTL). Not actually time but simply a count of the number of hosts remaining which can pass the packet onward. TTL is decremented by each host before it sends a packet onward ( a hop). If the TTL becomes zero the packet is not sent onward.

Since routes are dynamic, packets may not take the same path due to congestion, balancing, performance considerations or router outage. Even if packets are sent within milliseconds of each other.

traceroute starts by sending a packet with a "small" TTL ( see -f) and checking for a ICMP TIME_EXCEEDED response from each gateway along the path to the host, which identifies it. traceroute then increments the TTL by one and sends another packet until TTL reaches a maximum as per -m .

until "Port Unreachable" (or TCP reset), which means host was reached, or max hops.

A number (-q) of packets are sent at each TTL and a display showing the TTL, address of the gateway and round trip time of each packet is output. If the response comes from different gateways, the address of each will be displayed.

If there is no response within a timeout (-w), a "*" is displayed and traceroute continues.

> Varying the size of the packet sent to that host (default 40),
in conjunction with -F (don't fragment) can obtain information about the MTU of individual network hops. (size not used with TCP ).

129 hangup

If almost all the packets result in some kind of unreachable error, traceroute exits.

See also

ping, tracepath, netstat.


trace path to a network host discovering MTU along this path

tracepath [-nc] destination[/port]

Uses UDP port or random port, similar to traceroute, -c use the return address instead of the reply type (connection refused) to determine when to stop. -n No DNS resolving names

Tracepath6 is good replacement for traceroute6 Some IP routers do not return enough information in icmp error messages. Uses Van Jacobson's algorithm, sweeping a range of UDP ports to maintain trace history.

OUTPUT

       # tracepath6 3ffe:2400:0:109::2
        1?: [LOCALHOST]                              pmtu 1500
        1:  dust.inr.ac.ru                   0.411ms
        2:  dust.inr.ac.ru        asymm  1   0.390ms pmtu 1480
        2:  3ffe:2400:0:109::2               463.514ms reached
            Resume: pmtu 1480 hops 2 back 2

column
  1. TTL of the probe, followed by colon. Usually obtained from reply , sometimes reply does not contain necessary information
  2. network hop which replied either the address of router or LOCALHOST (if the packet was not sent to the gateway).
  3. information about path to the correspinding hetwork hop. RTT. MTU, when it changes. If the path is asymmetric or the packet expires before it reaches destination, difference between number of hops in forward and backward direction is shown following keyword async Hop 2 shows asymmetry of 1, because the first probe with TTL of 2 was rejected at the first hop due to Path MTU Discovery.
Summary (Resume) shows detected Path MTU, hops to the destination and hops from the destination back, which can be different when the path is asymmetric.


BSD version

traceroute [-dFISdnrvx] [-q nqueries] [-f first_ttl] [-M first_ttl] [-m max_ttl] [-P proto] [-p port] [-s src_addr][-i iface]
[-g gateway] [-t tos] [-w waittime] [-z pausemsecs] host [packetsize]

Display the route packets took to host tracking the route packets follow. Finds the miscreant gateway discarding packets can be difficult.
Utilizes the IP protocol time to live field and attempts to elicit an ICMP TIME_EXCEEDED response from each gateway along the path to a host.

-v Verbose, Received packets other than TIME_EXCEEDED and UNREACHABLEs are listed.
-F Set "don't fragment" .
-g gateway ,… loose source route gateway (8 maximum).
-i iface interface to obtain the source IP address for outgoing packets.
-s src_addr Use src_addr as the source address. On hosts with more than one IP address, force the source address to be other than the IP address of the interface the probe packet is sent on.
-f first_ttlSet the initial time-to-live -f 3 will skip the router and the first carrier's host.
-M start_ttl starting time-to-live, default 1, i.e., start with the first hop.
-m max_ttl max number of hops, default is net.inet.ip.ttl hops (the same default used for TCP connections).
-n display gateway addresses numerically (don;t use DNS to lookup hostname.)
-P proto Send packets of specified protocol: UDP , TCP , GRE and ICMP Other protocols may also be specified (either by name or by number), though traceroute does not have knowledge of other formats. Useful for determining which router is be blocking packets based on protocol number.
-I Use ICMP ECHO instead of UDP datagrams. (A synonym for "-P icmp").
-p port For UDP and TCP, sets the base port number used in probes (default is 33434). Traceroute hopes that nothing is listening on UDP ports base to base+nhops-1 at the destination host (so an ICMP PORT_UNREACHABLE message will be returned to terminate the route tracing). If something is listening on a port in the default range, this option can be used to pick am different port range.
-q nqueries Set the number of probes per ttl to nqueries (default 3)
-r Bypass the normal routing tables and send directly to a host on an attached network. Used to ping a local host through an interface that has no route through it (e.g., after the interface was dropped by routed(8)
-S display a summary of how many probes were not answered for each hop.
-t type-of-service 0 to 255 used to see if different types-of-service result in different paths. 16 (low delay) 8 (high throughput).
-w seconds wait for a response to a probe (default 5 .).
-x Toggle IP checksums calculation. Normally prevents calculation. The system can overwrite parts of the outgoing packet but not recalculate the checksum using -x causes them to be calculated). checksums are usually required for the last hop when using ICMP ECHO probes ( -I ). So they are always calculated when using ICMP.
-z pausemsecs between probes (default 0). use 500 (e.g. 1/2 second)
-d Enable socket level debugging.

Understanding traceroute

It is important to understand that the list of hops displayed is only one of the possible paths that packets may take.

Routers (dedicated or on general purpose hosts) frequently have more than 2 interfaces. Packets received on one interface may be routed to the second interface or the traffic may better suits routing to the third interface. It would not be unusual for all packets to use the same route during a short time period. It would not be unusual for packets at a later time to use a different route.

traceroute sends UDP probe packets with a small ttl (time to live) then listens for the ICMP "time exceeded" reply from a gateway.

Default settings start with a ttl of 1 and increase by 1 until ICMP "port unreachable" is received (i.e target host replied or hit a max) (defaults to net.inet.ip.ttl hops & can be changed with -m). 3 probes (changed with -q ) are sent at each ttl setting and a report line is displayed showing the ttl, address of the gateway and round trip time of each probe. If the replies come from different gateways, the address of each responding system will be printed. If no response is receivedwithin the timeout interval ( -w ), a * is printed for that probe. To prevent the host to process the UDP probe packets so the destination port is set to an unlikely value with -p .

A sample use and output might be:

 
     > traceroute nis.nsf.net.
     traceroute to nis.nsf.net (35.1.1.48), 64 hops max, 38 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  ccngw-ner-cc.Berkeley.EDU (128.32.136.23)  39 ms  40 ms  39 ms
     4  ccn-nerif22.Berkeley.EDU (128.32.168.22)  39 ms  39 ms  39 ms
     5  128.32.197.4 (128.32.197.4)  40 ms  59 ms  59 ms
     6  131.119.2.5 (131.119.2.5)  59 ms  59 ms  59 ms
     7  129.140.70.13 (129.140.70.13)  99 ms  99 ms  80 ms
     8  129.140.71.6 (129.140.71.6)  139 ms  239 ms  319 ms
     9  129.140.81.7 (129.140.81.7)  220 ms  199 ms  199 ms
     10  nic.merit.edu (35.1.1.48)  239 ms  239 ms  239 ms
     > traceroute allspice.lcs.mit.edu.
     traceroute to allspice.lcs.mit.edu (18.26.0.115), 64 hops max
     1  helios.ee.lbl.gov (128.3.112.1)  0 ms  0 ms  0 ms
     2  lilac-dmc.Berkeley.EDU (128.32.216.1)  19 ms  19 ms  19 ms
     3  lilac-dmc.Berkeley.EDU (128.32.216.1)  39 ms  19 ms  19 ms
     4  ccngw-ner-cc.Berkeley.EDU (128.32.136.23)  19 ms  39 ms  39 ms
     5  ccn-nerif22.Berkeley.EDU (128.32.168.22)  20 ms  39 ms  39 ms
     6  128.32.197.4 (128.32.197.4)  59 ms  119 ms  39 ms
     7  131.119.2.5 (131.119.2.5)  59 ms  59 ms  39 ms
     8  129.140.70.13 (129.140.70.13)  80 ms  79 ms  99 ms
     9  129.140.71.6 (129.140.71.6)  139 ms  139 ms  159 ms
     10  129.140.81.7 (129.140.81.7)  199 ms  180 ms  300 ms
     11  129.140.72.17 (129.140.72.17)  300 ms  239 ms  239 ms
     12  * * *
     13  128.121.54.72 (128.121.54.72)  259 ms  499 ms  279 ms
     14  * * *
     15  * * *
     16  * * *
     17  * * *
     18  ALLSPICE.LCS.MIT.EDU (18.26.0.115)  339 ms  279 ms  279 ms
Gateways at 12, 14, 15, 16 & 17 hops away, either don't send ICMP "time exceeded" messages or send them with a TTL too small to get back to the traceroute server gateway 12 is silent which .
     1  helios.ee.lbl.gov (128.3.112.1)  0 ms  0 ms  0 ms
     2  lilac-dmc.Berkeley.EDU (128.32.216.1)  39 ms  19 ms  39 ms
     3  lilac-dmc.Berkeley.EDU (128.32.216.1)  19 ms  39 ms  19 ms
     4  ccngw-ner-cc.Berkeley.EDU (128.32.136.23)  39 ms  40 ms  19 ms
     5  ccn-nerif35.Berkeley.EDU (128.32.168.35)  39 ms  39 ms  39 ms
     6  csgw.Berkeley.EDU (128.32.133.254)  39 ms  59 ms  39 ms
     7  * * *
     8  * * *
     9  * * *
     10  * * *
     11  * * *
     12  * * *
     13  rip.Berkeley.EDU (128.32.131.22)  59 ms !  39 ms !  39 ms !
There are 12 "gateways" (13 is the final destination) and those after hop 6 do not show a response. What could be happening is that rip is using the TTL from our arriving datagram as the TTL in its ICMP reply. The reply will time out on the return path until we send a packet with a TTL that's at least twice the path length. I.e., rip is really only 7 hops away. A reply that returns with a TTL of 1 is a clue this problem exists. traceroute displays a ! after the time if the ttl is <= 1.

Errors

Use in network testing, measurement and management, manual fault isolation. Some options impose excessive load on the network.

See netstat(1), ping CloudMonitor.ca.com(checks from different locations!!)

BUGS When using protocols other than UDP, functionality is reduced. In particular, the last packet will often appear to be lost, because even though it reaches the destination host, theres no way to know that because no ICMP message is sent back.

Monitis