[bind10-dev] Zone loading requirements, take 1

Stephen Morris stephen at isc.org
Tue Mar 6 12:29:13 UTC 2012


On 02/03/12 10:40, Shane Kerr wrote:
> All,
>
> In the spirit of old-style waterfall software engineering, we are going
> to be doing more requirements documents. We know we need work on our
> zone loader, so I've taken the liberty of typing some requirements up.
> Here's a link to the current draft:
>
> http://bind10.isc.org/wiki/ZoneLoadingRequirements
>
> It turns out that loading a DNS master zone file is... non-trivial. :(

Comments, a number of which may be rather pedantic:

 > 3.1.1 C++ data source
 > The loader will use the BIND 10 C++ data source as the location where 
data is stored.
Suggest: "where data is to be stored".  At the moment, "location" could 
be understood to be the location at which the source data is stored.

 > 3.2.1 Zone loading any time
 > It must be possible to load a zone during runtime.
I would add a requirement as to what to do in the case of a fatal error, 
e.g.

3.2.1.1 Action in case of error
If an error is encountered during a load, existing data in the target 
data source must not be changed.

(This is especially important if loading data into a running system.)

 > 3.2.3 Zone loading from stream
 > It must be possible to load a zone from an input stream.
Probably a design issue, but what constitutes the end of the stream? 
(Important if the new requirement about action in case of an error is 
accepted; how do we know when we have read the entire source of a zone 
and that there are no fatal errors?)

 > unique issue number for this loading attempt
I'm not clear what this is - "issue" seems to refer to a problem, hence 
each "issue identifier".  But a unique number for this loading attempt 
appears to indicate a unique number generated for each instance of an 
error message.

 > 3.3.5 Blank Lines
Should this requirement also state that blank lines are ignored?

 > 3.3.6 $ORIGIN control entry
How about adding a requirement that if $ORIGIN is specified, it is a 
fatal error for the argument not to be a fully-qualified domain name? 
(I am thinking of the case back in 2009 where the trailing "." was 
missed in the zone file of a TLD ...)

 > 3.3.8 $INCLUDE control entry on streams
I can see Michal's argument for allowing this on the basis that a stream 
might be a pipe from a local program, but I think it could be 
error-prone. For example, what if the file specified were something like 
"./common.txt" - the file picked up might not be the one intended.

 > 3.3.20 Broken parenthesis
 > Parenthesis do not nest. A second open paren before a close paren is 
an issue, and usually considered a warning. If treated as a warning, it 
is ignored.
Being nit-picking:
s/arenthesis/arentheses/g
s/paren /parenthesis /g

 >3.4.2 SOA singleton
 >If it appears again with a different value, it is considered an issue 
and usually treated as an error.
By same "value", I assume "same domain name"?

If we take the restricted view that these requirements are for a zone 
loader only, this is perfectly correct.  However, as it stands, this 
requirement appears to rule out the use of a single file containing 
multiple zones.

Perhaps we should add a section about loading multiple zones?  In this 
case, I think it would be fair to require that the SOA be the first RR 
in each zone, and that encountering an SOA with a different name marks 
the end of one zone and the start of the next.

 > 3.4.3 Missing glue
Ambiguous phrasing - the first sentences recognises that glue is not 
required for all delegations, then the remainder of the section ignores 
that and states that missing A/AAAA records mean that the delegation is 
broken.


Stephen


More information about the bind10-dev mailing list