Expand PMF_FN_* macros.
[netbsd-mini2440.git] / usr.sbin / traceroute / traceroute.8
blob9608d0beed88603f55f61096c1ad646f22451c60
1 .\" $NetBSD: traceroute.8,v 1.27 2005/11/09 23:43:59 wiz Exp $
2 .\"
3 .\" Copyright (c) 1989, 1995, 1996, 1997
4 .\"     The Regents of the University of California.  All rights reserved.
5 .\"
6 .\" Redistribution and use in source and binary forms are permitted
7 .\" provided that the above copyright notice and this paragraph are
8 .\" duplicated in all such forms and that any documentation,
9 .\" advertising materials, and other materials related to such
10 .\" distribution and use acknowledge that the software was developed
11 .\" by the University of California, Berkeley.  The name of the
12 .\" University may not be used to endorse or promote products derived
13 .\" from this software without specific prior written permission.
14 .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
15 .\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
16 .\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
17 .\"
18 .\"     Header: traceroute.8,v 1.11 97/04/22 13:45:13 leres Exp
19 .\"
20 .TH TRACEROUTE 8 "17 February 2006"
21 .UC 6
22 .SH NAME
23 traceroute \- print the route packets take to network host
24 .SH SYNOPSIS
25 .na
26 .B traceroute
28 .B \-aDFPIdlMnrvx
29 ] [
30 .B \-f
31 .I first_ttl
33 .br
34 .ti +8
36 .B \-g
37 .I gateway
38 ] [
39 .B \-i
40 .I iface
41 ] [
42 .B \-m
43 max_ttl
45 .br
46 .ti +8
48 .B \-p
49 .I port
50 ] [
51 .B \-q
52 .I nqueries
53 ] [
54 .B \-s
55 .I src_addr
57 .br
58 .ti +8
60 .B \-t
61 .I tos
62 ] [
63 .B \-w
64 .I waittime
65 ] [
66 .B \-A
67 .I as_server
69 .br
70 .ti +8
71 .I host
73 .I packetlen
75 .ad
76 .SH DESCRIPTION
77 The Internet is a large and complex aggregation of
78 network hardware, connected together by gateways.
79 Tracking the route one's packets follow (or finding the miscreant
80 gateway that's discarding your packets) can be difficult.
81 .I Traceroute
82 uses the IP protocol `time to live' field and attempts to elicit an
83 ICMP TIME_EXCEEDED response from each gateway along the path to some
84 host.
85 .PP
86 The only mandatory parameter is the destination host name or IP number.
87 The default probe datagram length is 40 bytes, but this may be increased
88 by specifying a packet length (in bytes) after the destination host
89 name.
90 .PP
91 Other options are:
92 .TP
93 .B \-a
94 Turn on AS# lookups for each hop encountered.
95 .TP
96 .B \-A
97 Turn on AS# lookups and use the given server instead of the default.
98 .TP
99 .B \-d
100 Turn on socket-level debugging.
102 .B \-D
103 Dump the packet data to standard error before transmitting it.
105 .B \-f
106 Set the initial time-to-live used in the first outgoing probe packet.
108 .B \-F
109 Set the "don't fragment" bit.
111 .B \-g
112 Specify a loose source route gateway (8 maximum).
114 .B \-i
115 Specify a network interface to obtain the source IP address for
116 outgoing probe packets. This is normally only useful on a multi-homed
117 host. (See the
118 .B \-s
119 flag for another way to do this.)
121 .B \-I
122 Use ICMP ECHO instead of UDP datagrams.
124 .B \-l
125 Display the ttl value of the returned packet.  This is useful for
126 checking for asymmetric routing.
128 .B \-m
129 Set the max time-to-live (max number of hops) used in outgoing probe
130 packets.  The default value is taken from the
131 .I net.inet.ip.ttl
132 sysctl(3) variable.
134 .B \-M
135 If found, show the MPLS Label and the Experimental (EXP) bit for the hop.
137 .B \-n
138 Print hop addresses numerically rather than symbolically and numerically
139 (saves a nameserver address-to-name lookup for each gateway found on the
140 path).
142 .B \-p
143 Set the base UDP port number used in probes (default is 33434).
144 Traceroute hopes that nothing is listening on UDP ports
145 .I base
147 .I base + nhops \- 1
148 at the destination host (so an ICMP PORT_UNREACHABLE message will
149 be returned to terminate the route tracing).  If something is
150 listening on a port in the default range, this option can be used
151 to pick an unused port range.
153 .B \-P
154 Set the "don't fragment" bit, and use the next hop mtu each time we get
155 the "need fragmentation" error, thus probing the path MTU.
157 .B \-q
158 Set the number of probe packets sent for each hop.  By default, traceroute
159 sends three probe packets.
161 .B \-r
162 Bypass the normal routing tables and send directly to a host on an attached
163 network.
164 If the host is not on a directly-attached network,
165 an error is returned.
166 This option can be used to ping a local host through an interface
167 that has no route through it (e.g., after the interface was dropped by
168 .IR routed (8)).
170 .B \-s
171 Use the following IP address (which usually is given as an IP number, not
172 a hostname) as the source address in outgoing probe packets.  On
173 multi-homed hosts (those with more than one IP
174 address), this option can be used to
175 force the source address to be something other than the IP address
176 of the interface the probe packet is sent on.  If the IP address
177 is not one of this machine's interface addresses, an error is
178 returned and nothing is sent. (See the
179 .B \-i
180 flag for another way to do this.)
182 .B \-t
183 Set the
184 .I type-of-service
185 in probe packets to the following value (default zero).  The value must be
186 a decimal integer in the range 0 to 255.  This option can be used to
187 see if different types-of-service result in different paths.  (If you
188 are not running 4.4BSD, this may be academic since the normal network
189 services like telnet and ftp don't let you control the TOS).
190 Not all values of TOS are legal or
191 meaningful \- see the IP spec for definitions.  Useful values are
192 probably
193 .RB ` -t
194 .IR 16 '
195 (low delay) and
196 .RB ` -t
197 .IR 8 '
198 (high throughput).
200 .B \-v
201 Verbose output.  Received ICMP packets other than TIME_EXCEEDED and
202 UNREACHABLEs are listed.
204 .B \-w
205 Set the time (in seconds) to wait for a response to a probe (default 5
206 sec.).
208 .B \-x
209 Toggle checksums. Normally, this prevents traceroute from calculating
210 checksums. In some cases, the operating system can overwrite parts of
211 the outgoing packet but not recalculate the checksum (so in some cases
212 the default is to not calculate checksums and using
213 .B \-x
214 causes them to be calculated). Note that checksums are usually required
215 for the last hop when using ICMP ECHO probes
216 .RB ( \-I ).
218 This program attempts to trace the route an IP packet would follow to some
219 internet host by launching UDP probe
220 packets with a small ttl (time to live) then listening for an
221 ICMP "time exceeded" reply from a gateway.  We start our probes
222 with a ttl of one and increase by one until we get an ICMP "port
223 unreachable" (which means we got to "host") or hit a max (which
224 defaults to 30 hops \*[Am] can be changed with the
225 .B \-m
226 flag).  Three
227 probes (change with
228 .B \-q
229 flag) are sent at each ttl setting and a
230 line is printed showing the ttl, address of the gateway and
231 round trip time of each probe.  If the probe answers come from
232 different gateways, the address of each responding system will
233 be printed.  If there is no response within a 5 sec. timeout
234 interval (changed with the
235 .B \-w
236 flag), a "*" is printed for that
237 probe.
239 We don't want the destination
240 host to process the UDP probe packets so the destination port is set to an
241 unlikely value (if some clod on the destination is using that
242 value, it can be changed with the
243 .B \-p
244 flag).
246 A sample use and output might be:
250 [yak 71]% traceroute nis.nsf.net.
251 traceroute to nis.nsf.net (35.1.1.48), 30 hops max, 38 byte packet
252  1  helios.ee.lbl.gov (128.3.112.1)  19 ms  19 ms  0 ms
253  2  lilac-dmc.Berkeley.EDU (128.32.216.1)  39 ms  39 ms  19 ms
254  3  lilac-dmc.Berkeley.EDU (128.32.216.1)  39 ms  39 ms  19 ms
255  4  ccngw-ner-cc.Berkeley.EDU (128.32.136.23)  39 ms  40 ms  39 ms
256  5  ccn-nerif22.Berkeley.EDU (128.32.168.22)  39 ms  39 ms  39 ms
257  6  128.32.197.4 (128.32.197.4)  40 ms  59 ms  59 ms
258  7  131.119.2.5 (131.119.2.5)  59 ms  59 ms  59 ms
259  8  129.140.70.13 (129.140.70.13)  99 ms  99 ms  80 ms
260  9  129.140.71.6 (129.140.71.6)  139 ms  239 ms  319 ms
261 10  129.140.81.7 (129.140.81.7)  220 ms  199 ms  199 ms
262 11  nic.merit.edu (35.1.1.48)  239 ms  239 ms  239 ms
266 Note that lines 2 \*[Am] 3 are the same.  This is due to a buggy
267 kernel on the 2nd hop system \- lilac-dmc.Berkeley.EDU \- that forwards
268 packets with a zero ttl (a bug in the distributed version
269 of 4.3BSD).  Note that you have to guess what path
270 the packets are taking cross-country since the NSFNET (129.140)
271 doesn't supply address-to-name translations for its NSSes.
273 A more interesting example is:
277 [yak 72]% traceroute allspice.lcs.mit.edu.
278 traceroute to allspice.lcs.mit.edu (18.26.0.115), 30 hops max
279  1  helios.ee.lbl.gov (128.3.112.1)  0 ms  0 ms  0 ms
280  2  lilac-dmc.Berkeley.EDU (128.32.216.1)  19 ms  19 ms  19 ms
281  3  lilac-dmc.Berkeley.EDU (128.32.216.1)  39 ms  19 ms  19 ms
282  4  ccngw-ner-cc.Berkeley.EDU (128.32.136.23)  19 ms  39 ms  39 ms
283  5  ccn-nerif22.Berkeley.EDU (128.32.168.22)  20 ms  39 ms  39 ms
284  6  128.32.197.4 (128.32.197.4)  59 ms  119 ms  39 ms
285  7  131.119.2.5 (131.119.2.5)  59 ms  59 ms  39 ms
286  8  129.140.70.13 (129.140.70.13)  80 ms  79 ms  99 ms
287  9  129.140.71.6 (129.140.71.6)  139 ms  139 ms  159 ms
288 10  129.140.81.7 (129.140.81.7)  199 ms  180 ms  300 ms
289 11  129.140.72.17 (129.140.72.17)  300 ms  239 ms  239 ms
290 12  * * *
291 13  128.121.54.72 (128.121.54.72)  259 ms  499 ms  279 ms
292 14  * * *
293 15  * * *
294 16  * * *
295 17  * * *
296 18  ALLSPICE.LCS.MIT.EDU (18.26.0.115)  339 ms  279 ms  279 ms
300 Note that the gateways 12, 14, 15, 16 \*[Am] 17 hops away
301 either don't send ICMP "time exceeded" messages or send them
302 with a ttl too small to reach us.  14 \- 17 are running the
303 MIT C Gateway code that doesn't send "time exceeded"s.  God
304 only knows what's going on with 12.
306 The silent gateway 12 in the above may be the result of a bug in
307 the 4.[23]BSD network code (and its derivatives):  4.x (x \(<= 3)
308 sends an unreachable message using whatever ttl remains in the
309 original datagram.  Since, for gateways, the remaining ttl is
310 zero, the ICMP "time exceeded" is guaranteed to not make it back
311 to us.  The behavior of this bug is slightly more interesting
312 when it appears on the destination system:
316  1  helios.ee.lbl.gov (128.3.112.1)  0 ms  0 ms  0 ms
317  2  lilac-dmc.Berkeley.EDU (128.32.216.1)  39 ms  19 ms  39 ms
318  3  lilac-dmc.Berkeley.EDU (128.32.216.1)  19 ms  39 ms  19 ms
319  4  ccngw-ner-cc.Berkeley.EDU (128.32.136.23)  39 ms  40 ms  19 ms
320  5  ccn-nerif35.Berkeley.EDU (128.32.168.35)  39 ms  39 ms  39 ms
321  6  csgw.Berkeley.EDU (128.32.133.254)  39 ms  59 ms  39 ms
322  7  * * *
323  8  * * *
324  9  * * *
325 10  * * *
326 11  * * *
327 12  * * *
328 13  rip.Berkeley.EDU (128.32.131.22)  59 ms !  39 ms !  39 ms !
332 Notice that there are 12 "gateways" (13 is the final
333 destination) and exactly the last half of them are "missing".
334 What's really happening is that rip (a Sun-3 running Sun OS3.5)
335 is using the ttl from our arriving datagram as the ttl in its
336 ICMP reply.  So, the reply will time out on the return path
337 (with no notice sent to anyone since ICMP's aren't sent for
338 ICMP's) until we probe with a ttl that's at least twice the path
339 length.  I.e., rip is really only 7 hops away.  A reply that
340 returns with a ttl of 1 is a clue this problem exists.
341 Traceroute prints a "!" after the time if the ttl is \(<= 1.
342 Since vendors ship a lot of obsolete (DEC's ULTRIX, Sun 3.x) or
343 non-standard (HP-UX) software, expect to see this problem
344 frequently and/or take care picking the target host of your
345 probes.
347 Other possible annotations after the time are
348 .BR !H ,
349 .BR !N ,
351 .B !P
352 (got a host, network or protocol unreachable, respectively),
353 .B !S
355 .B !F
356 (source route failed or fragmentation needed \- neither of these should
357 ever occur and the associated gateway is busted if you see one),
358 .B !X
359 (communication administratively prohibited), or
360 .B !\*[Lt]N\*[Gt]
361 (ICMP unreachable code N).
362 If almost all the probes result in some kind of unreachable, traceroute
363 will give up and exit.
367 traceroute \-g 10.3.0.5 128.182.0.0
371 will show the path from the Cambridge Mailbridge to PSC, while
375 traceroute \-g 192.5.146.4 \-g 10.3.0.5 35.0.0.0
379 will show the path from the Cambridge Mailbridge to Merit, using PSC to
380 reach the Mailbridge.
382 This program is intended for use in network testing, measurement
383 and management.
384 It should be used primarily for manual fault isolation.
385 Because of the load it could impose on the network, it is unwise to use
386 .I traceroute
387 during normal operations or from automated scripts.
388 .SH SEE ALSO
389 netstat(1), ping(8)
390 .SH AUTHOR
391 Implemented by Van Jacobson from a suggestion by Steve Deering.  Debugged
392 by a cast of thousands with particularly cogent suggestions or fixes from
393 C. Philip Wood, Tim Seaver and Ken Adelman.
395 The current version is available via anonymous ftp:
398 .I ftp://ftp.ee.lbl.gov/traceroute.tar.Z
400 .SH BUGS
401 Please send bug reports to traceroute@ee.lbl.gov.
403 The AS number capability reports information that may sometimes be
404 inaccurate due to discrepancies between the contents of the routing
405 database server and the current state of the Internet.