[bind10-dev] new in-memory zone data design
JINMEI Tatuya / 神明達哉
jinmei at isc.org
Wed Jun 20 22:53:33 UTC 2012
At Wed, 20 Jun 2012 11:29:55 +0200,
Michal 'vorner' Vaner <michal.vaner at nic.cz> wrote:
> However, my biggest concern is, this looks complicated like hell. I
> don't know if we have time for all this logic and if we won't get
> lost in it.
Focusing only on this point again, so we don't lose the highest level
point that can affect plans most:
I'd first like to clarify that discussions between RB-tree vs AVL or
other type of trees are not critical in this context.
The initially proposed version is a result of trying to achieve best
possible performance both in terms of memory footprint and query
processing performance by
- compressing as much data as possible (e.g., avoid storing duplicate
domain labels)
- storing RDATA in render-ready format and using that data directly
for building responses
- enabling shortcut pointers for RDATA names for faster additional
section processing (and possibly faster name compression)
The resulting performance is of course subject to measurement, but my
gut feeling is that it could be several times faster than BIND 9, and
closer to other implementations that solely focus on response
performance.
As for necessary development time, my guess was 2-3 sprints, but like
performance I could be wrong.
If we don't think that level of higher performance or we don't think
we can afford the expected development time, I can think of a couple
of alternatives:
1. just give up name shortcuts. This is mostly equal to the current
BIND 9's design (without acache). And the resulting performance in
query handling and memory consumption would be more or less
equivalent to BIND 9. It will be slower than BIND 9 that enables
acache, especially for environments like top level domains
(delegation centric, often requires a few to many additional
records). I guess the required development time would be half of
that of the full version.
2. give up name shortcuts, and store full name data in tree nodes
instead of portion of it. We probably still do search for the
effective label sequence only. This will require more memory (it's
closer to NSD, which maintains all names in a single RB tree where
each node represents a complete domain name), but query processing
can be faster because of the easier access to names. It's
difficult to guess its performance compared to BIND 9 with acache,
but that's probably somewhat equivalent. Development will be even
much easier because it's more closer to our current implementation,
but the difference in total development time between this 1 and
first option would be marginal.
---
JINMEI, Tatuya
Internet Systems Consortium, Inc.
More information about the bind10-dev
mailing list