Question about _res structure (retrans/retry)

Ronald F. Guilmette rfg at tristatelogic.com
Thu Apr 27 10:00:16 UTC 2017


Regarding the _res structure and the resolver library res_send()
function...

I have been unable to find any clear statement on the exact semantics
of the .retrans and .retry fields of the _res structure, specifically
with respect to the res_send() function.

The man page for resolver(5) seems to suggest that when there is a need
to retry the transmission of a given query, the resolver library, or
at any rate some functions therein, will wait, in the first instance at
least, for an amount of seconds equal to the current value of the
_res.retrans field before resending the query, and that for each of
the second and subesquent retries the delay period that is inserted
prior to each of these subsequent retransmissions willl be calculated
so that it will represent "an exponential back-off".  But it seems
that this term is nowhere very well defined.

Some years ago I read something somewhere that I interpreted as suggesting
that the first retry delay is equal to the value of the _res.retrans
field (default: 5 second) and that this delay period would be doubled
for each subsequent retry attempted, so that the first delay would
be 5 seconds, the second delay would be 10 seconds long, the third,
20 seconds long, and so on.  Is that in fact an accurate description of
the behavior of, for example, the res_send() function?

Thanks in advance for any & all responses.


Regards,
rfg


P.S.  If in fact the resolver library simply doubles the delay time
prior to each repeated retry, I'm not sure if that effective but
simplistic way of providing the server with progressively more
time to answer (on each attempt) really qualifies as an example of
"exponential back-off" per se.  At least it does not seem to comport
with the general description of that term as elaborated here:

    https://en.wikipedia.org/wiki/Exponential_backoff

(But my point here is of course just a very small and a very nitpicking
quibble about a very small part of the resolver(5) man page.)


More information about the bind-users mailing list