Bug 172198 - a new traceroute
a new traceroute
Status: CLOSED RAWHIDE
Product: Fedora
Classification: Fedora
Component: traceroute (Show other bugs)
rawhide
All Linux
medium Severity medium
: ---
: ---
Assigned To: Radek Vokal
Mike McLean
ftp://ftp.lst.de/pub/people/okir/trac...
: FutureFeature
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2005-11-01 10:08 EST by acount closed by user
Modified: 2007-11-30 17:11 EST (History)
1 user (show)

See Also:
Fixed In Version:
Doc Type: Enhancement
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2005-11-08 05:46:17 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:


Attachments (Terms of Use)
traceroute-1.0.3-compat.patch (1.79 KB, patch)
2005-11-02 06:58 EST, Robert Scheck
no flags Details | Diff
fixes (2.37 KB, patch)
2005-11-02 14:01 EST, acount closed by user
no flags Details | Diff
Further suggestions for changes (1.89 KB, patch)
2005-11-02 18:39 EST, Robert Scheck
no flags Details | Diff

  None (edit)
Description acount closed by user 2005-11-01 10:08:02 EST
This is a small traceroute replacement that works without requiring a
setuid bit. 

This traceroute implementation relies on a number of features of the
2.4 Linux kernel. It works pretty much like ANK's tracepath, but 
tries to be command line compatible with the original traceroute.
I also has IPv6 support, and does parallel probes, which makes it
a little faster.
Comment 1 Robert Scheck 2005-11-01 10:31:24 EST
Generally a good idea, but at first, the new traceroute doesn't work here 
(Rawhide system) as expected ;-)

> ./traceroute www.redhat.com
traceroute to www.redhat.com (209.132.177.50), 30 hops max, 40 byte packets
[nothing happens for minutes until pressing ctl+c]

Strace output (looping):
[...]
gettimeofday({1130858960, 57373}, NULL) = 0
recvmsg(3, 0xbfa7d50c, MSG_ERRQUEUE)    = -1 EAGAIN (Resource temporarily 
unavailable)
[...]

At least, I still would also prefer IDN (umlaut domain) support when changing to 
another traceroute - it's something upcoming but mostly ignored, yet.
Comment 2 acount closed by user 2005-11-01 10:35:54 EST
kernel bug:

http://marc.theaimsgroup.com/?l=linux-kernel&m=113084416222510&w=2
Comment 3 Robert Scheck 2005-11-02 04:30:59 EST
Ah, thanks Xose. Until next reboot, I'll only use the (working) IPv6 traceroute. 

And yesterday, I talked with Olaf: The result is version 1.0.3 with native IDN 
support using the libidn features from glibc >= 2.3.4.

From now I'm *really* interested to get this nice traceroute replacement into 
Fedora - Radek? ;-)
Comment 4 Radek Vokal 2005-11-02 04:44:12 EST
What happened to -g option? Is it gone or does it still work?
Comment 5 Radek Vokal 2005-11-02 04:48:11 EST
Aha, just not listed in options (I won't cry if it will be gone for good :) )
From my side, it looks good, works good. I will package it ASAP. 
Comment 6 Radek Vokal 2005-11-02 04:50:50 EST
One more thing, why did you changed -i option to -I where in old traceroute -I
is used for ICMP ECHO? This might be quite misleading .. 
Comment 7 Robert Scheck 2005-11-02 06:58:51 EST
Created attachment 120637 [details]
traceroute-1.0.3-compat.patch

I've mailed the upstream author once again (working in the same timezone and
country). His goal was it to keep compatibility with Van Jacobson's traceroute,
but he doesn't know, why it isn't the case now. Maybe the option didn't exist,
when Olaf startet writing the replacement, he told me. He also knows, that the
situation is unfavorable, but he'll think about it and maybe change it in a 2.0
version.

IMHO there are two acceptable and possible solutions, where I still would
favorite the first one:

a) Quiet change of the command line parameter (would be a five lines fix) -
   this even could be combined with a out-of-date message for -I
b) Migration to the new parameter with the chance that upstream maybe changes
   the parameter back to keep wanted compatibility

Attached a patch for the solution, I would prefer.
Comment 8 Radek Vokal 2005-11-02 07:10:23 EST
I would prefer to use -I for interface cos it's same option as ping/ping6 is
using but it breaks the compatibility, so your patch is sane. But also I wonder
if sb is using the old -I option for ICMP ECHO which disappeard in new traceroute. 

Also man page for traceroute should be in "8" section, not "1". 
Comment 9 Radek Vokal 2005-11-02 09:43:07 EST
Here's my test-srpm, man page is now in 8 section and I've included compat
patch. I'm willing to replace current traceroute with this package (need to get
some #   acknowledgement that it won't break some scripts)

http://people.redhat.com/rvokal/traceroute/traceroute-1.0.3-1.src.rpm
Comment 10 acount closed by user 2005-11-02 10:41:24 EST
(In reply to comment #9)
> I'm willing to replace current traceroute with this package (need to get
> some #   acknowledgement that it won't break some scripts)

put a request on fedora-devel ml to test it ;-)
Comment 11 acount closed by user 2005-11-02 13:58:41 EST
Olaf vs Van Jacobson

missing:

       -d     Enable socket level debugging.
       -I     Use ICMP ECHO instead of UDP datagrams.
       -r     Bypass the normal routing tables and send directly to a host on an
attached network.  If the  host
              is  not  on  a directly-attached network, an error is returned. 
This option can be used to ping a
              local host through an interface that has no route  through  it 
(e.g.,  after  the  interface  was
              dropped by routed(8C)).
       -v     Verbose output.  Received ICMP packets other than TIME_EXCEEDED
and UNREACHABLEs are listed.
       -x     Toggle ip checksums. Normally, this prevents traceroute from
calculating  ip  checksums.  In  some
              cases,  the  operating  system  can overwrite parts of the
outgoing packet but not recalculate the
              checksum (so in some cases the default is to not calculate
checksums and using -x causes  them  to
              be  calcualted).  Note  that  checksums are usually required for
the last hop when using ICMP ECHO
              probes (-I).  So they are always calculated when using ICMP.
       -z     Set the time (in milliseconds) to pause between probes (default
0).  Some systems such as  Solaris
              and  routers  such  as  Ciscos rate limit icmp messages. A good
value to use with this this is 500
              (e.g. 1/2 second).

differences:

-S = -s and -I = -i
Comment 12 acount closed by user 2005-11-02 14:01:15 EST
Created attachment 120657 [details]
fixes
Comment 13 Robert Scheck 2005-11-02 18:39:47 EST
Created attachment 120669 [details]
Further suggestions for changes

Okay, here are (my|another) two cents ;-)

- "install -c" is seems to be crap, install man page and install --help are 
  telling me that it's ignored, anyway.
- "install -D -m ???" looks better, saves mkdirs and rpm macros
- Well, the traceroute replacement is IPv6 capable, why should we use the
  other (bigger?) traceroute6 by iputils? Requires a small change in iputils!
- Do we really need to keep those old compatibility symbolic links introduced
  in early 2003?! I don't think so - at least, nothing in this traceroute
  package has SUID or SGID bits. However, /bin is before /usr/sbin in $PATH, 
  so it shouldn't hurt. But IF you don't agree with me, there should be a
  symbolic link for traceroute6 in /usr/sbin also! :)

Okay, the last point, where I'm competing for, is -I vs. -i and -S vs. -s. 
Normally, Red Hat has the opinion to keep as much compatibility as possible to 

avoid breaking something. In this case, we maybe even should do the same change

for -S. But on the other hand, there's no rule, what's the better option:

- ping, ping6, pppoe, arping are using -I
- netstat, arp, tcpdump, iptables, pump, tcpick, arp, ethereal, vnstat,
  ethtool, ether-wake, ntop, dhcpcd, snort are using -i

I absolutely don't know, what's the best solution for these parameters...hehe,
personally, I don't use neither nor ;-)
Comment 14 Radek Vokal 2005-11-03 04:19:06 EST
ok, new src rpm is avaliable here

http://people.redhat.com/rvokal/traceroute/traceroute-1.0.3-3.src.rpm

and also I've sent an announce to fedora-devel, so let's see what else will pop up. 

I've supressed traceroute6 so it can be installed against current iputils
package. If it is accepted, I will also make change in iputils. 

About -I vs. -i and -S vs. -s: I kept -i option for interfaces, cos I know some
scripts using it.
Comment 15 Radek Vokal 2005-11-08 05:46:17 EST
I get no feedback on my testing package so I've decided to push new traceroute
into rawhide. It breaks iputils package, so new iputils -30 has to be updated
before traceroute. Also options -i and -s are in use to keep compatibility with
old traceroute. 

Note You need to log in before you can comment on or make changes to this bug.