[comp.protocols.tcp-ip] route tracing through gateways

tomc@dftsrv.gsfc.nasa.gov (Tom Corsetti) (02/18/89)

Hi!
I recently found source for Van J's traceroute program.  It is a really
neat program for finding out what gateways your packets are travelling
through, and for seeing how long it takes to get there.  Unfortunately,
I can't get it to work on my Sun 3/260 running Sun OS 3.5.  I went and
installed all the new TCP/IP from Berkeley, which includes new "slow
start" algorithms, and also made the patch to raw_output that was in
the README for traceroute.  I reconfigured my kernel with all this
new tcp/ip stuff.  The kernel works fine.  All existing networking
functions still function.  Traceroute compiled without serious errors.
But, when I run it, it dumps core.  Has anyone out there gotten this
program to work on a Sun running OS 3.5 ?, or for that matter, Sun OS 3.x?
I would appreciate hearing from you!  Thanks in advance!
                                       - Tom Corsetti
 
-- 
  Tom Corsetti                 * * * *   internet - tomc@dftsrv.gsfc.nasa.gov
  NASA/Goddard Space Flt Ctr    * * *    decnet   - dftnic::tomc
  Greenbelt Maryland           * * * *   bitnet   - tomc at dftbit

dpz@pilot.njin.net (David Zimmerman) (02/19/89)

Tom, I've gotten route recording working at Rutgers.  You need four conditions
to exist to get back the information you want:

1- you have to be able to set up IP options to go out in an IP packet

2- your gateways have to do "the right thing"; that is, each has to look at
the IP options, note the IPOPT_RR field, and append its Internet address to
that field (if there is room)

3- if your destination machine has to turn the packet around, it must do so
correctly (see below)

4- you have to be able to read the IP options out of a packet

4.3BSD-derived systems do the right thing for #1 and #4.  cisco gateways do
the right thing with #2.  I'm not sure whether 4.2BSD-derived systems do the
right thing with #1, #2, or #4, since our single link to the outside world is
a 4.3BSD VAX here -> 4.2BSD VAX at JVNC, and we're more or less out of that
manner of beast around here.  However, my experience has been rather negative
with 4.2BSD-derived systems in that respect.

I wanted to set the IP options for route recording in a ICMP echo packet, so
that the echo reply back to me would have the path, or as much of the path as
possible, that the packet took.  Due to the maximum length of the IP option
area, you get a maximum of 9 Internet addresses.

My problem was that a target Unix box using 4.xBSD-derived networking would do
the wrong thing.  4.3BSD-derived systems (including SunOS 4.x) would send me
back an echo reply without any IP options, so I would see that the machine is
up, but not be able to tell what path the packet took to get there and back.
4.2BSD-derived systems (including SunOS 3.x) would get confused and not send
me back anything, so not only would I not get the route back, I couldn't even
tell if the machine was up.

I'm not sure if your problem is related to any of this, but...

I have fixes to sys/netinet/ip_input.c and sys/netinet/ip_icmp.c to take care
of that.  I also have a modified ping to send out and parse back these route
recording creatures (although the code is a one night hack, and looks it).
All our SunOS 4.x Suns and 4.3BSD VAX 11/750 now reflect the ICMP echo back
correctly, and we get to see how our routing isn't working.

Drop me a line if you are interested.

						David
-- 
David P. Zimmerman, the Dorm Networking Pilot Project, the UUCP Project, etc
dpz@dorm.rutgers.edu          rutgers!dpz          dpzimmerman@zodiac.bitnet