]>
Commit | Line | Data |
---|---|---|
2b484d24 | 1 | .\" Copyright (c) 1989, 1995, 1996, 1997, 1999, 2000 |
b7080c8e A |
2 | .\" The Regents of the University of California. All rights reserved. |
3 | .\" | |
2b484d24 A |
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. | |
b7080c8e | 15 | .\" |
2b484d24 | 16 | .Dd September 21, 2000 |
b7080c8e A |
17 | .Dt TRACEROUTE 8 |
18 | .Os BSD 4.3 | |
19 | .Sh NAME | |
20 | .Nm traceroute | |
21 | .Nd print the route packets take to network host | |
22 | .Sh SYNOPSIS | |
23 | .Nm traceroute | |
b8dff150 | 24 | .Op Fl dFISdNnrvx |
2b484d24 A |
25 | .Op Fl f Ar first_ttl |
26 | .Op Fl g Ar gateway | |
27 | .Op Fl i Ar iface | |
28 | .Op Fl M Ar first_ttl | |
b7080c8e | 29 | .Op Fl m Ar max_ttl |
2b484d24 | 30 | .Op Fl P Ar proto |
b7080c8e A |
31 | .Op Fl p Ar port |
32 | .Op Fl q Ar nqueries | |
b7080c8e | 33 | .Op Fl s Ar src_addr |
b7080c8e A |
34 | .Op Fl t Ar tos |
35 | .Op Fl w Ar waittime | |
2b484d24 | 36 | .Op Fl z Ar pausemsecs |
b7080c8e A |
37 | .Ar host |
38 | .Op Ar packetsize | |
39 | .Sh DESCRIPTION | |
40 | The Internet is a large and complex aggregation of | |
41 | network hardware, connected together by gateways. | |
42 | Tracking the route one's packets follow (or finding the miscreant | |
43 | gateway that's discarding your packets) can be difficult. | |
44 | .Nm Traceroute | |
45 | utilizes the IP protocol `time to live' field and attempts to elicit an | |
46 | .Tn ICMP | |
47 | .Dv TIME_EXCEEDED | |
48 | response from each gateway along the path to some | |
49 | host. | |
50 | .Pp | |
51 | The only mandatory parameter is the destination host name or IP number. | |
2b484d24 | 52 | The default probe datagram length is 40 bytes, but this may be increased |
b7080c8e A |
53 | by specifying a packet size (in bytes) after the destination host |
54 | name. | |
55 | .Pp | |
56 | Other options are: | |
57 | .Bl -tag -width Ds | |
2b484d24 A |
58 | .It Fl f Ar first_ttl |
59 | Set the initial time-to-live used in the first outgoing probe packet. | |
60 | .It Fl F | |
61 | Set the "don't fragment" bit. | |
62 | .It Fl d | |
63 | Enable socket level debugging. | |
64 | .It Fl g Ar gateway | |
65 | Specify a loose source route gateway (8 maximum). | |
66 | .It Fl i Ar iface | |
67 | Specify a network interface to obtain the source IP address for | |
68 | outgoing probe packets. This is normally only useful on a multi-homed | |
69 | host. (See the | |
70 | .Fl s | |
71 | flag for another way to do this.) | |
72 | .It Fl I | |
73 | Use | |
74 | .Tn ICMP | |
75 | ECHO instead of | |
76 | .Tn UDP | |
77 | datagrams. (A synonym for "-P icmp"). | |
78 | .It Fl M Ar first_ttl | |
79 | Set the initial time-to-live value used in outgoing probe packets. | |
80 | The default is 1, i.e., start with the first hop. | |
b7080c8e A |
81 | .It Fl m Ar max_ttl |
82 | Set the max time-to-live (max number of hops) used in outgoing probe | |
2b484d24 A |
83 | packets. The default is |
84 | .Em net.inet.ip.ttl | |
85 | hops (the same default used for | |
b7080c8e A |
86 | .Tn TCP |
87 | connections). | |
b8dff150 A |
88 | .It Fl N |
89 | Disables the increment of the destination port (see -p). Useful for using tcpdump through firewalls. | |
b7080c8e A |
90 | .It Fl n |
91 | Print hop addresses numerically rather than symbolically and numerically | |
92 | (saves a nameserver address-to-name lookup for each gateway found on the | |
93 | path). | |
2b484d24 A |
94 | .It Fl P Ar proto |
95 | Send packets of specified IP protocol. The currently supported protocols | |
96 | are: | |
97 | .Tn UDP | |
98 | , | |
99 | .Tn TCP | |
100 | , | |
101 | .Tn GRE | |
102 | and | |
103 | .Tn ICMP | |
104 | Other protocols may also be specified (either by name or by number), though | |
105 | .Nm traceroute | |
106 | does not implement any special knowledge of their packet formats. This | |
107 | option is useful for determining which router along a path may be | |
108 | blocking packets based on IP protocol number. But see BUGS below. | |
b7080c8e | 109 | .It Fl p Ar port |
2b484d24 | 110 | Protocol specific. For |
b7080c8e | 111 | .Tn UDP |
2b484d24 A |
112 | and |
113 | .Tn TCP, | |
114 | sets the base | |
b7080c8e A |
115 | .Ar port |
116 | number used in probes (default is 33434). | |
117 | .Nm Traceroute | |
118 | hopes that nothing is listening on | |
119 | .Tn UDP | |
120 | ports | |
121 | .Em base | |
122 | to | |
123 | .Em base+nhops-1 | |
124 | at the destination host (so an | |
125 | .Tn ICMP | |
126 | .Dv PORT_UNREACHABLE | |
127 | message will | |
128 | be returned to terminate the route tracing). If something is | |
129 | listening on a port in the default range, this option can be used | |
130 | to pick an unused port range. | |
131 | .It Fl q Ar nqueries | |
132 | Set the number of probes per ``ttl'' to | |
133 | .Ar nqueries | |
134 | (default is three probes). | |
135 | .It Fl r | |
136 | Bypass the normal routing tables and send directly to a host on an attached | |
137 | network. | |
138 | If the host is not on a directly-attached network, | |
139 | an error is returned. | |
140 | This option can be used to ping a local host through an interface | |
141 | that has no route through it (e.g., after the interface was dropped by | |
142 | .Xr routed 8 ) . | |
143 | .It Fl s Ar src_addr | |
144 | Use the following IP address | |
145 | (which must be given as an IP number, not | |
146 | a hostname) as the source address in outgoing probe packets. On | |
147 | hosts with more than one IP 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. | |
2b484d24 A |
152 | (See the |
153 | .Fl i | |
154 | flag for another way to do this.) | |
155 | .It Fl S | |
156 | Print a summary of how many probes were not answered for each hop. | |
b7080c8e A |
157 | .It Fl t Ar tos |
158 | Set the | |
159 | .Em type-of-service | |
160 | in probe packets to the following value (default zero). The value must be | |
161 | a decimal integer in the range 0 to 255. This option can be used to | |
162 | see if different types-of-service result in different paths. (If you | |
163 | are not running a | |
2b484d24 | 164 | .Bx 4.4 |
b7080c8e A |
165 | or later system, this may be academic since the normal network |
166 | services like telnet and ftp don't let you control the | |
167 | .Dv TOS ) . | |
168 | Not all values of | |
169 | .Dv TOS | |
170 | are legal or | |
171 | meaningful \- see the IP spec for definitions. Useful values are | |
172 | probably | |
173 | .Ql \-t 16 | |
174 | (low delay) and | |
175 | .Ql \-t 8 | |
176 | (high throughput). | |
177 | .It Fl v | |
178 | Verbose output. Received | |
179 | .Tn ICMP | |
180 | packets other than | |
181 | .Dv TIME_EXCEEDED | |
182 | and | |
183 | .Dv UNREACHABLE Ns s | |
184 | are listed. | |
185 | .It Fl w | |
2b484d24 A |
186 | Set the time (in seconds) to wait for a response to a probe (default 5 sec.). |
187 | .It Fl x | |
188 | Toggle IP checksums. Normally, this prevents traceroute from calculating | |
189 | IP checksums. In some cases, the operating system can overwrite parts of | |
190 | the outgoing packet but not recalculate the checksum (so in some cases | |
191 | the default is to not calculate checksums and using | |
192 | .Fl x | |
193 | causes them to be calculated). Note that checksums are usually required | |
194 | for the last hop when using | |
195 | .Tn ICMP | |
196 | ECHO probes ( | |
197 | .Fl I | |
198 | ). So they are always calculated when using ICMP. | |
199 | .It Fl z Ar pausemsecs | |
200 | Set the time (in milliseconds) to pause between probes (default 0). | |
201 | Some systems such as Solaris and routers such as Ciscos rate limit | |
202 | ICMP messages. A good value to use with this this is 500 (e.g. 1/2 second). | |
b7080c8e A |
203 | .El |
204 | .Pp | |
205 | This program attempts to trace the route an IP packet would follow to some | |
206 | internet host by launching | |
207 | .Tn UDP | |
208 | probe | |
209 | packets with a small ttl (time to live) then listening for an | |
210 | .Tn ICMP | |
211 | "time exceeded" reply from a gateway. We start our probes | |
212 | with a ttl of one and increase by one until we get an | |
213 | .Tn ICMP | |
214 | "port unreachable" | |
215 | (which means we got to "host") or hit a max (which | |
2b484d24 A |
216 | defaults to |
217 | .Em net.inet.ip.ttl | |
218 | hops & can be changed with the | |
b7080c8e A |
219 | .Fl m |
220 | flag). Three | |
221 | probes (changed with | |
222 | .Fl q | |
223 | flag) are sent at each ttl setting and a | |
224 | line is printed showing the ttl, address of the gateway and | |
225 | round trip time of each probe. If the probe answers come from | |
226 | different gateways, the address of each responding system will | |
2b484d24 | 227 | be printed. If there is no response within a 5 sec. timeout |
b7080c8e A |
228 | interval (changed with the |
229 | .Fl w | |
230 | flag), a "*" is printed for that | |
231 | probe. | |
232 | .Pp | |
233 | We don't want the destination | |
234 | host to process the | |
235 | .Tn UDP | |
236 | probe packets so the destination port is set to an | |
237 | unlikely value (if some clod on the destination is using that | |
238 | value, it can be changed with the | |
239 | .Fl p | |
240 | flag). | |
241 | .Pp | |
242 | A sample use and output might be: | |
243 | .Bd -literal | |
244 | [yak 71]% traceroute nis.nsf.net. | |
2b484d24 | 245 | traceroute to nis.nsf.net (35.1.1.48), 64 hops max, 38 byte packet |
b7080c8e A |
246 | 1 helios.ee.lbl.gov (128.3.112.1) 19 ms 19 ms 0 ms |
247 | 2 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 39 ms 19 ms | |
248 | 3 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 39 ms 19 ms | |
249 | 4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 39 ms 40 ms 39 ms | |
250 | 5 ccn-nerif22.Berkeley.EDU (128.32.168.22) 39 ms 39 ms 39 ms | |
251 | 6 128.32.197.4 (128.32.197.4) 40 ms 59 ms 59 ms | |
252 | 7 131.119.2.5 (131.119.2.5) 59 ms 59 ms 59 ms | |
253 | 8 129.140.70.13 (129.140.70.13) 99 ms 99 ms 80 ms | |
254 | 9 129.140.71.6 (129.140.71.6) 139 ms 239 ms 319 ms | |
255 | 10 129.140.81.7 (129.140.81.7) 220 ms 199 ms 199 ms | |
256 | 11 nic.merit.edu (35.1.1.48) 239 ms 239 ms 239 ms | |
257 | ||
258 | .Ed | |
259 | Note that lines 2 & 3 are the same. This is due to a buggy | |
260 | kernel on the 2nd hop system \- lbl-csam.arpa \- that forwards | |
261 | packets with a zero ttl (a bug in the distributed version | |
262 | of 4.3 | |
263 | .Tn BSD ) . | |
264 | Note that you have to guess what path | |
265 | the packets are taking cross-country since the | |
266 | .Tn NSFNet | |
267 | (129.140) | |
268 | doesn't supply address-to-name translations for its | |
269 | .Tn NSS Ns es . | |
270 | .Pp | |
271 | A more interesting example is: | |
272 | .Bd -literal | |
273 | [yak 72]% traceroute allspice.lcs.mit.edu. | |
2b484d24 | 274 | traceroute to allspice.lcs.mit.edu (18.26.0.115), 64 hops max |
b7080c8e A |
275 | 1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms |
276 | 2 lilac-dmc.Berkeley.EDU (128.32.216.1) 19 ms 19 ms 19 ms | |
277 | 3 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 19 ms 19 ms | |
278 | 4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 19 ms 39 ms 39 ms | |
279 | 5 ccn-nerif22.Berkeley.EDU (128.32.168.22) 20 ms 39 ms 39 ms | |
280 | 6 128.32.197.4 (128.32.197.4) 59 ms 119 ms 39 ms | |
281 | 7 131.119.2.5 (131.119.2.5) 59 ms 59 ms 39 ms | |
282 | 8 129.140.70.13 (129.140.70.13) 80 ms 79 ms 99 ms | |
283 | 9 129.140.71.6 (129.140.71.6) 139 ms 139 ms 159 ms | |
284 | 10 129.140.81.7 (129.140.81.7) 199 ms 180 ms 300 ms | |
285 | 11 129.140.72.17 (129.140.72.17) 300 ms 239 ms 239 ms | |
286 | 12 * * * | |
287 | 13 128.121.54.72 (128.121.54.72) 259 ms 499 ms 279 ms | |
288 | 14 * * * | |
289 | 15 * * * | |
290 | 16 * * * | |
291 | 17 * * * | |
292 | 18 ALLSPICE.LCS.MIT.EDU (18.26.0.115) 339 ms 279 ms 279 ms | |
293 | ||
294 | .Ed | |
295 | Note that the gateways 12, 14, 15, 16 & 17 hops away | |
296 | either don't send | |
297 | .Tn ICMP | |
298 | "time exceeded" messages or send them | |
299 | with a ttl too small to reach us. 14 \- 17 are running the | |
300 | .Tn MIT | |
301 | C Gateway code that doesn't send "time exceeded"s. God | |
302 | only knows what's going on with 12. | |
303 | .Pp | |
304 | The silent gateway 12 in the above may be the result of a bug in | |
305 | the 4.[23] | |
306 | .Tn BSD | |
307 | 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 | |
311 | .Tn ICMP | |
312 | "time exceeded" is guaranteed to not make it back | |
313 | to us. The behavior of this bug is slightly more interesting | |
314 | when it appears on the destination system: | |
315 | .Bd -literal | |
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 ! | |
329 | ||
330 | .Ed | |
331 | Notice that there are 12 "gateways" (13 is the final | |
332 | destination) and exactly the last half of them are "missing". | |
333 | What's really happening is that rip (a Sun-3 running Sun OS3.5) | |
334 | is using the ttl from our arriving datagram as the ttl in its | |
335 | .Tn ICMP | |
336 | reply. So, the reply will time out on the return path | |
337 | (with no notice sent to anyone since | |
338 | .Tn ICMP's | |
339 | aren't sent for | |
340 | .Tn ICMP's ) | |
341 | until we probe with a ttl that's at least twice the path | |
342 | length. I.e., rip is really only 7 hops away. A reply that | |
343 | returns with a ttl of 1 is a clue this problem exists. | |
344 | .Nm Traceroute | |
345 | prints a "!" after the time if the ttl is <= 1. | |
346 | Since vendors ship a lot of obsolete | |
347 | .Pf ( Tn DEC Ns \'s | |
348 | Ultrix, Sun 3.x) or | |
349 | non-standard | |
350 | .Pq Tn HPUX | |
351 | software, expect to see this problem | |
352 | frequently and/or take care picking the target host of your | |
353 | probes. | |
2b484d24 | 354 | .Pp |
b7080c8e A |
355 | Other possible annotations after the time are |
356 | .Sy !H , | |
357 | .Sy !N , | |
2b484d24 | 358 | or |
b7080c8e | 359 | .Sy !P |
2b484d24 | 360 | (host, network or protocol unreachable), |
b7080c8e | 361 | .Sy !S |
2b484d24 | 362 | (source route failed), |
b7080c8e | 363 | .Sy !F |
2b484d24 A |
364 | (fragmentation needed \- the RFC1191 Path MTU Discovery value is displayed), |
365 | .Sy !X | |
366 | (communication administratively prohibited), | |
367 | .Sy !V | |
368 | (host precedence violation), | |
369 | .Sy !C | |
370 | (precedence cutoff in effect), or | |
371 | .Sy !<num> | |
372 | (ICMP unreachable code <num>). | |
373 | These are defined by RFC1812 (which supersedes RFC1716). | |
374 | If almost all the probes result in some kind of unreachable, | |
b7080c8e A |
375 | .Nm traceroute |
376 | will give up and exit. | |
377 | .Pp | |
378 | This program is intended for use in network testing, measurement | |
379 | and management. | |
380 | It should be used primarily for manual fault isolation. | |
381 | Because of the load it could impose on the network, it is unwise to use | |
382 | .Nm traceroute | |
383 | during normal operations or from automated scripts. | |
384 | .Sh AUTHOR | |
385 | Implemented by Van Jacobson from a suggestion by Steve Deering. Debugged | |
386 | by a cast of thousands with particularly cogent suggestions or fixes from | |
387 | C. Philip Wood, Tim Seaver and Ken Adelman. | |
388 | .Sh SEE ALSO | |
389 | .Xr netstat 1 , | |
390 | .Xr ping 8 | |
2b484d24 A |
391 | .Sh BUGS |
392 | When using protocols other than UDP, functionality is reduced. | |
393 | In particular, the last packet will often appear to be lost, because | |
394 | even though it reaches the destination host, there's no way to know | |
395 | that because no ICMP message is sent back. | |
396 | In the TCP case, | |
b7080c8e | 397 | .Nm |
2b484d24 A |
398 | should listen for a RST from the destination host (or an intermediate |
399 | router that's filtering packets), but this is not implemented yet. |