I found VanJacobson's announcement of the original traceroute (see TracerouteLikeTools) tool in the archives of the end2end-interest mailing list for the year 1988. Here it is -- SimonLeinen - 06 May 2005

From van@helios.ee.lbl.gov  Tue Dec 20 05:14:46 1988
Posted-Date: Tue, 20 Dec 88 05:13:28 PST
Received-Date: Tue, 20 Dec 88 05:14:46 PST
Received: from helios.ee.lbl.gov by venera.isi.edu (5.54/5.51)
   id AA25560; Tue, 20 Dec 88 05:14:46 PST
Received: by helios.ee.lbl.gov (5.59/s2.2)
   id AA03127; Tue, 20 Dec 88 05:13:30 PST
Message-Id: <8812201313.AA03127@helios.ee.lbl.gov>
To: ietf@venera.isi.edu, end2end-interest@venera.isi.edu
Subject: 4BSD routing diagnostic tool available for ftp
Date: Tue, 20 Dec 88 05:13:28 PST
From: Van Jacobson 
Content-Length: 2373
X-Lines: 46
Status: RO

After a frustrating week of trying to figure out "where the !?*!
are the packets going?", I cobbled up a program to trace out
the route to a host.  It works by sending a udp packet with a
ttl of one & listening for an icmp "time exceeded" message.  If
it gets one, it prints the source address from the icmp message,
then bumps the ttl by one & etc.  (As usual, I didn't come up
with this clever idea -- I heard Steve Deering mention it at an
end-to-end task force meeting.)

The use and printout looks like the following:

    % traceroute nis.nsf.net.
    traceroute to nis.nsf.net (, 30 hops max, 56 byte packet
     1: helios.ee.lbl.gov (  0 ms  0 ms  19 ms
     2: lbl-csam.arpa (  10 ms  0 ms  10 ms
     3: lilac-dmc.Berkeley.EDU (  39 ms  19 ms  39 ms
     4: ccngw-ner-cc.Berkeley.EDU (  39 ms  39 ms  39 ms
     5: ccn-nerif22.Berkeley.EDU (  39 ms  39 ms  39 ms
     6: (  39 ms  39 ms  40 ms
     7: (  59 ms  39 ms  40 ms
     8: (  99 ms  99 ms  99 ms
     9: (  139 ms  139 ms  139 ms
    10: (  180 ms  199 ms  199 ms
    11: nic.merit.edu (  259 ms  219 ms  219 ms

(I typed the stuff after the "%" on the first line; the rest is trace
output.)  The first field is # hops, the second is the gateway used
at that hop, the three remaining fields are the time it took the
gateway to respond (three probe packets are sent at each ttl setting).
[There's no manual entry yet but there's more documentation at the
front of the source.]

The (good?) news is you're welcome to ftp the source of this program
from ftp.ee.lbl.gov (, file traceroute.tar.Z.  The
bad news is that you'll have to hack your kernel to use it:  You
need to fix the raw IP output routine to allow a user program
to set ip ttl.  I've put my version of rip_output (raw ip output) in
the README file of the tar.  This works on our system but our system
is rather non-standard.  If you have source and are comfortable with
kernel hacking, this should be the example you need to fix up your
netinet/raw_ip.c (if you don't have source or aren't comfortable in
the kernel, I'm afraid I can't help).

Hope this is useful to someone.  Good luck.  Merry Christmas.

 - Van

Topic revision: r1 - 2005-05-06 - SimonLeinen
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2004-2009 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.