1 .\" Copyright (c) 1989, 1995, 1996, 1997, 1999, 2000
2 .\" The Regents of the University of California. All rights reserved.
4 .\" Redistribution and use in source and binary forms are permitted
5 .\" provided that the above copyright notice and this paragraph are
6 .\" duplicated in all such forms and that any documentation,
7 .\" advertising materials, and other materials related to such
8 .\" distribution and use acknowledge that the software was developed
9 .\" by the University of California, Berkeley. The name of the
10 .\" University may not be used to endorse or promote products derived
11 .\" from this software without specific prior written permission.
12 .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
13 .\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
14 .\" WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
16 .\" $Id: traceroute.8,v 1.19 2000/09/21 08:44:19 leres Exp $
18 .TH TRACEROUTE 8 "21 September 2000"
21 traceroute \- print the route packets take to network host
75 The Internet is a large and complex aggregation of
76 network hardware, connected together by gateways.
77 Tracking the route one's packets follow (or finding the miscreant
78 gateway that's discarding your packets) can be difficult.
80 utilizes the IP protocol `time to live' field and attempts to elicit an
81 ICMP TIME_EXCEEDED response from each gateway along the path to some
84 The only mandatory parameter is the destination host name or IP number.
85 The default probe datagram length is 40 bytes, but this may be increased
86 by specifying a packet length (in bytes) after the destination host
92 Set the initial time-to-live used in the first outgoing probe packet.
95 Set the "don't fragment" bit.
98 Enable socket level debugging.
101 Specify a loose source route gateway (8 maximum).
104 Specify a network interface to obtain the source IP address for
105 outgoing probe packets. This is normally only useful on a multi-homed
108 flag for another way to do this.)
111 Use ICMP ECHO instead of UDP datagrams.
114 Set the max time-to-live (max number of hops) used in outgoing probe
115 packets. The default is 30 hops (the same default used for TCP
119 Print hop addresses numerically rather than symbolically and numerically
120 (saves a nameserver address-to-name lookup for each gateway found on the
124 Set the base UDP port number used in probes (default is 33434).
125 Traceroute hopes that nothing is listening on UDP ports
129 at the destination host (so an ICMP PORT_UNREACHABLE message will
130 be returned to terminate the route tracing). If something is
131 listening on a port in the default range, this option can be used
132 to pick an unused port range.
135 Bypass the normal routing tables and send directly to a host on an attached
137 If the host is not on a directly-attached network,
138 an error is returned.
139 This option can be used to ping a local host through an interface
140 that has no route through it (e.g., after the interface was dropped by
144 Use the following IP address (which usually is given as an IP number, not
145 a hostname) as the source address in outgoing probe packets. On
146 multi-homed hosts (those with more than one IP
147 address), this option can be used to
148 force the source address to be something other than the IP address
149 of the interface the probe packet is sent on. If the IP address
150 is not one of this machine's interface addresses, an error is
151 returned and nothing is sent. (See the
153 flag for another way to do this.)
158 in probe packets to the following value (default zero). The value must be
159 a decimal integer in the range 0 to 255. This option can be used to
160 see if different types-of-service result in different paths. (If you
161 are not running 4.4bsd, this may be academic since the normal network
162 services like telnet and ftp don't let you control the TOS).
163 Not all values of TOS are legal or
164 meaningful \- see the IP spec for definitions. Useful values are
174 Verbose output. Received ICMP packets other than TIME_EXCEEDED and
175 UNREACHABLEs are listed.
178 Set the time (in seconds) to wait for a response to a probe (default 5
182 Toggle ip checksums. Normally, this prevents traceroute from calculating
183 ip checksums. In some cases, the operating system can overwrite parts of
184 the outgoing packet but not recalculate the checksum (so in some cases
185 the default is to not calculate checksums and using
187 causes them to be calcualted). Note that checksums are usually required
188 for the last hop when using ICMP ECHO probes
190 So they are always calculated when using ICMP.
193 Set the time (in milliseconds) to pause between probes (default 0).
194 Some systems such as Solaris and routers such as Ciscos rate limit
195 icmp messages. A good value to use with this this is 500 (e.g. 1/2 second).
197 This program attempts to trace the route an IP packet would follow to some
198 internet host by launching UDP probe
199 packets with a small ttl (time to live) then listening for an
200 ICMP "time exceeded" reply from a gateway. We start our probes
201 with a ttl of one and increase by one until we get an ICMP "port
202 unreachable" (which means we got to "host") or hit a max (which
203 defaults to 30 hops & can be changed with the
208 flag) are sent at each ttl setting and a
209 line is printed showing the ttl, address of the gateway and
210 round trip time of each probe. If the probe answers come from
211 different gateways, the address of each responding system will
212 be printed. If there is no response within a 5 sec. timeout
213 interval (changed with the
215 flag), a "*" is printed for that
218 We don't want the destination
219 host to process the UDP probe packets so the destination port is set to an
220 unlikely value (if some clod on the destination is using that
221 value, it can be changed with the
225 A sample use and output might be:
229 [yak 71]% traceroute nis.nsf.net.
230 traceroute to nis.nsf.net (35.1.1.48), 30 hops max, 38 byte packet
231 1 helios.ee.lbl.gov (128.3.112.1) 19 ms 19 ms 0 ms
232 2 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 39 ms 19 ms
233 3 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 39 ms 19 ms
234 4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 39 ms 40 ms 39 ms
235 5 ccn-nerif22.Berkeley.EDU (128.32.168.22) 39 ms 39 ms 39 ms
236 6 128.32.197.4 (128.32.197.4) 40 ms 59 ms 59 ms
237 7 131.119.2.5 (131.119.2.5) 59 ms 59 ms 59 ms
238 8 129.140.70.13 (129.140.70.13) 99 ms 99 ms 80 ms
239 9 129.140.71.6 (129.140.71.6) 139 ms 239 ms 319 ms
240 10 129.140.81.7 (129.140.81.7) 220 ms 199 ms 199 ms
241 11 nic.merit.edu (35.1.1.48) 239 ms 239 ms 239 ms
245 Note that lines 2 & 3 are the same. This is due to a buggy
246 kernel on the 2nd hop system \- lbl-csam.arpa \- that forwards
247 packets with a zero ttl (a bug in the distributed version
248 of 4.3BSD). Note that you have to guess what path
249 the packets are taking cross-country since the NSFNet (129.140)
250 doesn't supply address-to-name translations for its NSSes.
252 A more interesting example is:
256 [yak 72]% traceroute allspice.lcs.mit.edu.
257 traceroute to allspice.lcs.mit.edu (18.26.0.115), 30 hops max
258 1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms
259 2 lilac-dmc.Berkeley.EDU (128.32.216.1) 19 ms 19 ms 19 ms
260 3 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 19 ms 19 ms
261 4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 19 ms 39 ms 39 ms
262 5 ccn-nerif22.Berkeley.EDU (128.32.168.22) 20 ms 39 ms 39 ms
263 6 128.32.197.4 (128.32.197.4) 59 ms 119 ms 39 ms
264 7 131.119.2.5 (131.119.2.5) 59 ms 59 ms 39 ms
265 8 129.140.70.13 (129.140.70.13) 80 ms 79 ms 99 ms
266 9 129.140.71.6 (129.140.71.6) 139 ms 139 ms 159 ms
267 10 129.140.81.7 (129.140.81.7) 199 ms 180 ms 300 ms
268 11 129.140.72.17 (129.140.72.17) 300 ms 239 ms 239 ms
270 13 128.121.54.72 (128.121.54.72) 259 ms 499 ms 279 ms
275 18 ALLSPICE.LCS.MIT.EDU (18.26.0.115) 339 ms 279 ms 279 ms
279 Note that the gateways 12, 14, 15, 16 & 17 hops away
280 either don't send ICMP "time exceeded" messages or send them
281 with a ttl too small to reach us. 14 \- 17 are running the
282 MIT C Gateway code that doesn't send "time exceeded"s. God
283 only knows what's going on with 12.
285 The silent gateway 12 in the above may be the result of a bug in
286 the 4.[23]BSD network code (and its derivatives): 4.x (x <= 3)
287 sends an unreachable message using whatever ttl remains in the
288 original datagram. Since, for gateways, the remaining ttl is
289 zero, the ICMP "time exceeded" is guaranteed to not make it back
290 to us. The behavior of this bug is slightly more interesting
291 when it appears on the destination system:
295 1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms
296 2 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 19 ms 39 ms
297 3 lilac-dmc.Berkeley.EDU (128.32.216.1) 19 ms 39 ms 19 ms
298 4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 39 ms 40 ms 19 ms
299 5 ccn-nerif35.Berkeley.EDU (128.32.168.35) 39 ms 39 ms 39 ms
300 6 csgw.Berkeley.EDU (128.32.133.254) 39 ms 59 ms 39 ms
307 13 rip.Berkeley.EDU (128.32.131.22) 59 ms ! 39 ms ! 39 ms !
311 Notice that there are 12 "gateways" (13 is the final
312 destination) and exactly the last half of them are "missing".
313 What's really happening is that rip (a Sun-3 running Sun OS3.5)
314 is using the ttl from our arriving datagram as the ttl in its
315 ICMP reply. So, the reply will time out on the return path
316 (with no notice sent to anyone since ICMP's aren't sent for
317 ICMP's) until we probe with a ttl that's at least twice the path
318 length. I.e., rip is really only 7 hops away. A reply that
319 returns with a ttl of 1 is a clue this problem exists.
320 Traceroute prints a "!" after the time if the ttl is <= 1.
321 Since vendors ship a lot of obsolete (DEC's Ultrix, Sun 3.x) or
322 non-standard (HPUX) software, expect to see this problem
323 frequently and/or take care picking the target host of your
326 Other possible annotations after the time are
331 (host, network or protocol unreachable),
333 (source route failed),
335 (fragmentation needed \- the RFC1191 Path MTU Discovery value is displayed),
337 (communication administratively prohibited),
339 (host precedence violation),
341 (precedence cutoff in effect), or
343 (ICMP unreachable code <num>).
344 These are defined by RFC1812 (which supersedes RFC1716).
345 If almost all the probes result in some kind of unreachable, traceroute
346 will give up and exit.
348 This program is intended for use in network testing, measurement
350 It should be used primarily for manual fault isolation.
351 Because of the load it could impose on the network, it is unwise to use
353 during normal operations or from automated scripts.
355 pathchar(8), netstat(1), ping(8)
357 Implemented by Van Jacobson from a suggestion by Steve Deering. Debugged
358 by a cast of thousands with particularly cogent suggestions or fixes from
359 C. Philip Wood, Tim Seaver and Ken Adelman.
361 The current version is available via anonymous ftp:
364 .I ftp://ftp.ee.lbl.gov/traceroute.tar.gz
367 Please send bug reports to traceroute@ee.lbl.gov.