I've read draft-ietf-dnsop-serve-stale-03. In addition to the
high-level draft organization matter I mentioned in another thread,
here are my other comments on this version:
- Section 4:
The definition of TTL in [RFC1035] Sections 3.2.1 and 4.1.3 is
amended to read:
TTL [...] If the authority for the data is unavailable
when attempting to refresh, the record MAY be used as though it is
unexpired.
On understanding that this is the only real normative description,
I'd suggest making some more points explicit to prevent abusing of
this leniency:
- explicitly say "all authoritative servers" instead of just "the
authority"
- also explicitly note that this MUST NOT be allowed if at least one
authoritative server is available
- clarify whether this means a 0-TTL record can be cached and reused
under this condition (I assume it must not, but it's not very clear
to me)
- Section 5
If it
finds no relevant unexpired data and the Recursion Desired flag is
not set in the request, it SHOULD immediately return the response
without consulting the cache for expired records.
It would be nice if it clarified *what* to return in this case (if
it's intentionally left open, explicitly say so).
- Section 5
Outside the period of the resolution recheck timer, the resolver
SHOULD start the query resolution timer and begin the iterative
resolution process.
It's not clear to me how this timer is related to the 'server-stale'
behavior; this draft doesn't explain what happens when this timer
expires, for example. Also, in my understanding unbound doesn't
have this timer - it eventually gives up a resolution if all
possible external query fails with a per-query timeout, but it
doesn't cap the overall resolution time. That may not matter much
as this section doesn't seem to be normative and it's just an
implementation detail of a particular implementation, but if the
role of this timer doesn't matter either, we might rather simplify
the text by just omitting it.
- Section 6
Stale data is used only when refreshing has failed, in order to
adhere to the original intent of the design of the DNS and the
behaviour expected by operators.
I agree on this statement, but I wonder how widely this behavior is
actually implemented. As noted in Section 7, unbound doesn't behave
this way, and in my understanding it's intentional, mainly due to
a concern about related IPR. If that's more common for other open
source implementors (BIND 9 seems to work as described here, but I
don't know about others), the description won't match the actual
implementation behavior very well in reality. So I'm curious about
implementation status about this point, and if many different
implementations intentionally ignore this "caveat" for the same
reason, I think we should adjust the text to match the reality.
- Section 7
Unbound has a similar feature for serving stale answers, but will
respond with stale data immediately if it has recently tried and
failed to refresh the answer by pre-fetching.
If I understand the implementation correctly, this is not 100%
accurate: unbound always return the stale data if it's found in the
cache as long as the "serve-expired" option is enabled. So I
suggest revising the text to:
Unbound has a similar feature for serving stale answers, but will
respond with stale data immediately whenever the feature is
enabled.
--
JINMEI, Tatuya
_______________________________________________
DNSOP mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/dnsop