I am aware of (terrible) paths inside Canada which get close to 600ms. I believe 1 second will make traceroute subtly fail to diagnose network issues. I suspect 3 seconds might still work in the majority of cases, but even 2 seconds seems too tight.
I remember many years ago when the around-australia research mpls was incorrectly configured such that icmp replies generated inside had to go all the way around to find an exit. From my point of view in Calgary, I recall timestamps exceeding 2 seconds. If the default for listening was 1 second, those replies would simply not be captured, and you cannot figure out what is happening. But since I could see the outrageous timestamps, I was able to to figure it out, laugh, and then tell them about it. If traceroute was refactored to probe and listen out of order (like MTR), then it's speed could be increased. There have been discussions about this before... Florian Obser <[email protected]> wrote: > I guess I was too optimistic. > I regularly work on machines that are 600-700 ms away and figured an > additional 300 ms is good enough. Maybe not in case of congested links... > > On 20 August 2021 13:17:12 CEST, Mark Kettenis <[email protected]> > wrote: > >> From: Florian Obser <[email protected]> > >> Date: Fri, 20 Aug 2021 10:46:21 +0200 > >> > >> Makes sense to me, OK florian > > > >Doesn't make sense to me. The RTT for an ICMP packet can be a > >significant part of a second (think Europe-Australia the wrong way > >around cause that is where all the bandwidth is, or when satellites > >are involved). I think this means that a single dropped packet could > >result in a failure to resolve one of the hops on such a path. > > > >I don't necessarily object to giving folks the ammunition to shoot > >themselves into the foot by dropping the minimum value to 1 second. > >But the default should be larger I think. > > > >> On 2021-08-19 23:47 -07, <[email protected]> wrote: > >> > The default traceroute timeout of 5 seconds is excruciatingly long > >> > when there are elements of the route that don't respond, and it > >> > wasn't allowed to be set lower than 2 seconds. > >> > > >> > This changes the minimum to 1 second, matching FreeBSD, and also > >> > makes that the default, which should be reasonable for the vast > >> > majority of users today. > >> > > >> > The two awk files in this directory are two decades old, and > >> > not installed anywhere they can be executed as part of a traceroute > >> > pipeline; can they be removed? If the functionality is useful, > >> > implementing mean/median reporting as a new option in C would be > >> > straightforward. > >> > > >> > Index: usr.sbin/traceroute/traceroute.8 > >> > =================================================================== > >> > RCS file: /cvs/src/usr.sbin/traceroute/traceroute.8,v > >> > retrieving revision 1.69 > >> > diff -u -p -u -r1.69 traceroute.8 > >> > --- usr.sbin/traceroute/traceroute.8 11 Feb 2020 18:41:39 -0000 > >> > 1.69 > >> > +++ usr.sbin/traceroute/traceroute.8 20 Aug 2021 06:33:30 -0000 > >> > @@ -201,7 +201,7 @@ and > >> > are listed. > >> > .It Fl w Ar waittime > >> > Set the time, in seconds, to wait for a response to a probe. > >> > -The default is 5. > >> > +The default is 1. > >> > .It Fl x > >> > Print the ICMP extended headers if available. > >> > This option is not available for IPv6. > >> > Index: usr.sbin/traceroute/traceroute.c > >> > =================================================================== > >> > RCS file: /cvs/src/usr.sbin/traceroute/traceroute.c,v > >> > retrieving revision 1.164 > >> > diff -u -p -u -r1.164 traceroute.c > >> > --- usr.sbin/traceroute/traceroute.c 12 Jul 2021 15:09:21 -0000 > >> > 1.164 > >> > +++ usr.sbin/traceroute/traceroute.c 20 Aug 2021 06:33:30 -0000 > >> > @@ -351,7 +351,7 @@ main(int argc, char *argv[]) > >> > rcvsock4 = rcvsock6 = sndsock4 = sndsock6 = -1; > >> > v4sock_errno = v6sock_errno = 0; > >> > > >> > - conf->waittime = 5 * 1000; > >> > + conf->waittime = 1000; > >> > > >> > if ((rcvsock6 = socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6)) == > >> > -1) > >> > v6sock_errno = errno; > >> > @@ -554,9 +554,9 @@ main(int argc, char *argv[]) > >> > err(1, "setsockopt SO_RTABLE"); > >> > break; > >> > case 'w': > >> > - conf->waittime = strtonum(optarg, 2, INT_MAX, > >> > &errstr); > >> > + conf->waittime = strtonum(optarg, 1, INT_MAX, > >> > &errstr); > >> > if (errstr) > >> > - errx(1, "wait must be >1 sec."); > >> > + errx(1, "wait must be >=1 sec."); > >> > conf->waittime *= 1000; > >> > break; > >> > case 'x': > >> > > >> > > >> > >> -- > >> I'm not entirely sure you are real. > >> > >> > > -- > Sent from a mobile device. Please excuse poor formatting. >
