Hide Forgot
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.
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.
kernel bug: http://marc.theaimsgroup.com/?l=linux-kernel&m=113084416222510&w=2
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? ;-)
What happened to -g option? Is it gone or does it still work?
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.
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 ..
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.
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".
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
(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 ;-)
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
Created attachment 120657 [details] fixes
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 ;-)
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.
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.