OpenBSD Journal

unwind(8) gains "Happy Eyeballs"-like flexibility

Contributed by rueda on from the ecstatic-nostrils dept.

Florian Obser (florian@) has committed code to give unwind(8) a flexible approach to resolving strategies:

Modified files:
	sbin/unwind    : resolver.c resolver.h 
	usr.sbin/unwindctl: unwindctl.c 

Log message:
Instead of only considering if a resolving strategy is dead, works or
validates, measure how well it is doing.
We keep track of the round trip median time of past queries and sort
strategies according to this in addition to the more basic qualities
of does it resolve and does it validate. If a query is not answered
within the median time the next best strategy gets a chance.  The most
prefered strategy (either from the config file or defaults) gets an
additional head start of 200ms.

A response of SERVFAIL also advances to the next best strategy. This
is helpful when the picked strategy can only see parts of the internet
but another strategy can reach more.

This alone gets us past quite a few captive portals already.
Additionally we doubt NXDOMAIN from anything but the stub resolver for
the first 5 minutes after a network change. This is probably as good
as the http check we had previously but more tests are needed.

This was inspired by RFC 8305, "Happy Eyeballs".

OK otto

As described in an earlier message to tech@, this change removes explicit captive portal configuration.

(Comments are closed)


Credits

Copyright © - Daniel Hartmeier. All rights reserved. Articles and comments are copyright their respective authors, submission implies license to publish on this web site. Contents of the archive prior to as well as images and HTML templates were copied from the fabulous original deadly.org with Jose's and Jim's kind permission. This journal runs as CGI with httpd(8) on OpenBSD, the source code is BSD licensed. undeadly \Un*dead"ly\, a. Not subject to death; immortal. [Obs.]