MacTraceroute 1.0 02/04/95 ©1994-5 Jim Browne (jbrowne@uiuc.edu) (No awards yet, but since when do unfinished applications win awards?) € Contents What is it? How much does it cost? What's new with this release? Any known bugs in 1.0? What do you plan for future versions? What are the features? How do I use it? How does it work? Who should I sue if it destroys my machine? Who should I thank? Who wrote this? What else has Jim Browne written? What horrid bugs existed in former versions? € What is it? MacTraceroute is a program that attempts to trace the route an IP packet would follow to some internet host. It is not guaranteed to be 100% accurate, but more often than not is close enough to reality to assist in debugging network problems. € How much does it cost? Nothing. MacTraceroute and the associated Traceroute Ethernet LAP are free. You can do anything you want with them except incorporate them into a commercial product without my written permission. Public domain, shareware, and SUMEX-like CD collections, however, may include both packages on their product. € What's new with this release? 1) Zoomed windows are constrained to available desktop. 2) Now using System 7's new window stagger function since it's there. 3) Probes per TTL used actually matches value in New Traceroute dialog, rather than using one less than the value entered. 4) When traces are started when MacTraceroute is in the background (i.e. from an AppleEvent), windows have inactive scrollbars (as they should). 5) Trace times are now "attached" to the right side of the window. 6) Results of traces may now be copied to the clipboard. 7) Fixed the application icon masks. € Any known bugs in 1.0? 1) Simultaneous traces act a little weird. Excessive timeouts. 2) Some visual problems with the trace window: Horizontal scroll bar problems. Sometimes updates aren't drawing everything. € What do you plan for future versions? 1) Add some optional parameters to the "traceroute" appleevent. 2) Make New Trace dialog moveable modal. 3) Implement pinging of hops. 4) Incorporate Adam Goodfellow's nifty path MTU discovery code. € What are the features? MacTraceroute implements almost all of the features supported by the UNIX traceroute command. MacTraceroute does not currently support the Loose Source Record Route option of traceroute. € How do I use it? First, hit command-n to bring up a new traceroute dialog. Type in the host name or IP address of the host you wish to attempt to traceroute to. The remaining fields in the dialog require some explanation: Max TTL: This specifies the maximum ttl traceroute should use in its outgoing probes. This usually coincides with the number of hops, but not neccessarily. Timeout per Probe: This specifies the number of seconds to wait for a response to a probe. Probes per TTL: This specifies the number of probes to send with a given TTL value. Usually is Probers per hop, but not always. Starting Port: This specifies the UDP port number that MacTraceroute will start the probes at. If something on the target machine is using a port at or just above this port number, traceroute may fail to work correctly. If you suspect this to be the problem, try a different starting port. This field is automatically filled with a random number. Resolve IP Addresses: If this is checked, MacTraceroute will try a reverse DNS lookup on the ip addresses of each hop. Loose Source Record Route: Currently not supported. The remaining fields can be used to set certain bits in the probes' IP header. Reference RFC 791 for a complete description of these fields. They are, in my opinion, self explanatory. After you hit the "Traceroute" button, a window will appear showing the results of the traceroute. The number on the left is the hop number. To the right of this is the IP address of the hop, and optionally the DNS name of the hop. To the right of this information is the round trip time for each probe. When the trace is completed, the window title will have a "€" inserted at the beginning. A few other things can appear in place of round trip times: !SE An error occurred when attempting to send the probe * A timeout occurred waiting for the probe to return !N A network unreachable condition was reported !H A host unreachable condition was reported !P A protocol unreachable condition was reported !S A source route failure occurred !F A fragmentation needed condition was reported (Shouldn't happen) € How does it work? MacTraceroute works by sending UDP packets with a destination IP address of the host you wish to trace to, and an artificially low TTL field. When a gateway or router forwards an IP packet, it decrements the TTL field. When the TTL field is decremented to zero, an ICMP Time Exceeded error message is sent to the originating host. Thus, by sending out UDP packets with TTLs of 1,2,3, and so on, and listening for the ICMP error messages, you can determine the route the packets are taking to the host in question. This method is not 100% reliable, for reasons beyond the scope of this document. It works well enough for most uses. MacTraceroute requires a special LAP for MacTCP since MacTCP does not allow applications to modify the TTL field of packets, nor does it give applications direct access to ICMP messages. € Who should I sue if it destroys my machine? Not me. The MacTraceroute application and the Traceroute Ethernet LAP have no warranty whatsoever. I have tried to eliminate all of the bugs from the code, but I probably will never eliminate them all. If MacTraceroute or the LAP damage your machine in any way, I am sorry, but I cannot be held liable. If you think it stinks just remember: You get what you pay for. € Who should we thank? First and foremost, the legendary Van Jacobsen (van@helios.ee.lbl.gov). This application was inspired by and is directly derived from the code of Van Jacobsen's traceroute. VJ thanks Steve Deering, C. Phillip Wood, Tim Seaver, and Ken Adelman in the traceroute man page, so you should too. I would like to thank Blaine Kubesh for bugging me to work on the MacTraceroute application and the Traceroute Ethernet LAP. I'd also like to thank Apple for producing A/UX, a UNIX implementation so crappy it drove me to port traceroute to MacOS. Without A/UX, I'd probably be happy to continue running traceroute on my local UNIX box. As with everything I program, Matt Elliott for being such a nagging pain. I probably would just watch TV all day if it weren't for Matt bitching at me. ;) I should also thank Steve Dorner for exclaiming 'Why in the hell are you doing that there?' (paraphrased) about my LDEF code. He put me onto the trail of some updating bugs that have plauged many of my programs. € Who wrote this? MacTraceroute was written by Jim Browne (jbrowne@uiuc.edu). Jim was a Senior in Computer Engineering at the University of Illinois - Chambana. Jim currently works for Sonic Systems, Inc., a manufacturer of Ethernet hardware and Macintosh Software. Jim likes all things related to Led Zeppelin and frisbee (which is a brand name and registered trademark of the wham-o mfg. company). Jim doesn't mind getting bug reports and wish list suggestions via email, so long as they contain "Traceroute" in their subject so Eudora can filter them to the proper mailbox. Beginning with the writing of this file, Jim apparently likes referring to himself in the third person. € What else has Jim Browne written? DNSLib A library that makes working with MacTCP's DNR much easier by providing application-time callbacks for DNR responses, queueing of DNR requests, and handling of N concurrent DNR questions. MacTraceroute and MacFSP use this library. MacFSP A Macintosh client for the FSP protocol. € What horrid bugs existed in former versions? Version 1.0b1 (12/23/94): 1) DNS errors from the destination host lookup produce an error dialog. 2) About Dialog is now centered. 3) Horizontal window growth is now bounded. 4) Removed "Probes Per TTL" from info bar as it was redundant. 5) Zoom box has been added. 6) Support for the four required appleevents added. 7) Support for a "traceroute" appleevent. Version 1.0d4 (11/22/94): 1) Fixed the corruption bug that was causing intermittent crashes. 2) Fixed the "crash if you close an active traceroute window" bug. 3) Fixed the updating bugs. 4) Text is no longer clipped at the bottom (losing the bottom of a "g", etc.) 5) First hop is no longer duplicated. 6) Target hop results are now displayed. 7) Scroll bar strangeness has been corrected. Version 1.0d3 (11/4/94): 1) New interface. 2) Optional inverse DNS lookups of hops. 3) Fixed "crash on second trace" bug. 4) More than one traceroute allowed at a time. 5) Precedence and Type of Service implemented Version 1.0d2 (7/30/94): This release fixes a bug in the source IP address in the outgoing traceroute probes. Version 1.0d1 (7/29/94): This is the first time this code has left my machine in any capacity. .