[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: AXFR "clarify"
Edward Lewis wrote:
At 15:50 +1100 1/18/08, Mark Andrews wrote:
I said *allows* for innovation.
When it comes to tightening up a requirement like you mention, I think
that we need to hear from more implementers that such a change is
desired.
Such a change is desired.
Correct me if I'm wrong, but it doesn't matter what the deployed base
is, or the state of the software, or where or how it's used.
Anyone doing any kind of implementation, for any purpose, of RFC
1034/1035/1995/1996 has a chip in the game. Like me.
I vote for tightening up requirements.
In 1034/1035, the language is "should" (lower case). At a minimum it
should be "SHOULD", and preferably "MUST".
(The irony of the case comparison between "should" and "SHOULD" is not
lost on me.)
I see no reason that the language describing the behavior (recommending
against changing case on rdata) should be ignored,
and the RFC text near that language, even contemplates potential reasons
for this.
Actually it isn't. The worst thing the IETF can do is produce
wishy washy specification.
Which it already has done. The worst next thing is to break the world
we built on a bad foundation.
Just like the data described in the protocols (like 822):
(IMHO) Maintainers of RFCs should be liberal in what they accept, and
strict in what they send.
If you are updating an RFC, the worst thing you can do is weaken a
specification. In fact, it could/should be argued, that when the opportunity
to tighten up language *known* to be ambiguous, that it SHOULD be done.
RFCs do not get updated that often, and this RFC is rather important
to the health of the Internet.
People DO care about this. I've got the bug reports to
prove it.
This is the first I have heard of it. Anyone else? And in that vein,
a soapbox moment:
I want to issue this challenge to the implementers on this list. A
lot is heard about ISC's BIND experience. ISC has been energetic in
contributing to the process. But the volume of the contribution
sometimes backfires, and one victim has been the axfr-clarify
document. To make a clarification, or an updated definition, have
merit it needs to be based on a broad spectrum of implementation
experiences.
The goal is not to declare, by default, the BIND way of doing DNS as a
standard. The goal is an interoperable definition. The experience of
BIND yields a wealth of information to us, and that's valuable input.
The question is how can the document benefit from the BIND reports
without becoming BIND centric? The answer is to have input and
reactions from other implementations.
I humbly disagree
The issue is strictly interoperability between implementations, which
needs to be based on very strong RFCs.
Interoperability is particularly critical for AXFR and IXFR.
Inadequately specifications can (and will, and may in the past have)
lead to problems directly as a consequence of implementation choices
which are incompatible.
And just as important - tightening up the RFCs lowers the barriers to
new implementations which will interoperate with existing implementations.
New implementations are important to ensuring a healthy diversity of
available code for operators.
Diversity is critical to protecting infrastructure.
Single implementation populations are vulnerable to zero-day issues,
which for DNS is not a reasonable situation.
Case in point:
AXFR/IXFR are special, because of the need/desire to achieve performance
optimizations due to the volume of data, and the fact that both ends are
authority servers.
Consider a small mesh of servers, which for redundancy reasons includes
multiple implementations. Data originates at a true, hidden master "M".
Servers use software implementations, call them "B" and "N".
It is quite conceivable that [AI]XFR paths could look like:
M-N-N-B
\ \
B-B-B-B(client)
If the software "B" includes optimizations to determine the fingerprint
of the upstream XFR sender, and quite reasonably assumes that case will
be preserved on the XFR, it can then do simple binary comparison of
labels, rather than a much slower byte-by-byte case-insensitive comparison.
However, if "N" does case-smashing, then the two paths will contain XFR
data which differs in case, but is otherwise identical.
This *will* break the optimization. At the "client", the data from "N"
path will be compared against data from the non-"N" path. Binary
comparison of different-case data will fail, and zone data corruption is
likely to occur (duplicate rdata differing only by case, specifically).
(I will avoid naming names, but this exact situation *has* occurred in
the past, in production zone data, so it's not just hypothetical.)
Having case preserved specifically on XFR, is something much more
important than any normal query/answer data.
And, IMHO, special attention SHOULD be paid to this, possibly specifying
case preservation as a "MUST".
The *proper* place to do case-smashing is on the master (e.g. when data
is imported into the DNS system), after which the issue can be viewed as
moot.
If the data prior to XFR is single-case, then problems can't be
introduced by trying to optimize case, nor is there any *need* to do
case optimizations.
Brian Dickson
--
to unsubscribe send a message to namedroppers-request@ops.ietf.org with
the word 'unsubscribe' in a single line as the message text body.
archive: <http://ops.ietf.org/lists/namedroppers/>