[bind10-dev] Resolver - address database requirements

Stephen Morris stephen at isc.org
Tue Oct 5 14:57:07 UTC 2010


On 5 Oct 2010, at 14:56, JINMEI Tatuya / 神明達哉 wrote:

> At Fri, 1 Oct 2010 11:15:34 +0100,
> Stephen Morris <stephen at isc.org> wrote:
> 
>> Your comments are requested on the first draft of the requirements for the address database component of the resolver. They are not complete, but at this stage the intention is to make sure that there is enough documentation for work on the component to start.  However, if there is anything obviously missing (or just plain wrong), please let me know.
> 
> Some quick (but delayed) comments:
> 
>> For this reason, the resolver needs to maintain a list of nameserver addresses associated with domain names.  Although the information may be in the main cache (in the form of A/AAAA records for the nameservers), using the cache directly is inappropriate because:
>> 
>> a) The additional overhead of multiple lookups to locate first the NS records then the A/AAAA records.
> 
> I'm not sure if this is a valid reason.  Unless the key of this
> "database" is domain names (instead of server names) we still need to
> locate the NS first and then get addresses.  

The first draft of the design does have an index into domain names; given a domain name it identifies the servers associated with it and from that the associated addresses.

> What we can (possibly)
> save with a separate address "database" is the conversion overhead
> from A/AAAA RRs to sockaddr_in/in6, etc.  We can also make the lookup
> faster because lookups in a generic DNS cache requires a search for
> longest match, which is generally expensive, while in the case of
> address "database" we can focus on exact match.

Fair point.  I've made a note of that and will update the requirements document http://bind10.isc.org/wiki/NameserverAddressStoreRequirements once I've received comments back on it.
 
> 
>> Looking up Names
>> ----------------
>> * If only IPv6 addresses have been requested, only the IPv4 addresses associated with a name will be returned.
> 
> s/IPv4/IPv6/
> 
> One other point: in BIND 9, we also use addresses as a search key for
> ADB (see dns_adb_findaddrinfo() in bind9/lib/dns/adb.c) to record RTT,
> etc with forwarders.  We may also need the same interface.

I was wondering about that; the current draft design http://bind10.isc.org/wiki/NameserverAddressStoreDesign attempts to codify the relationship:

    Zone is served by multiple nameservers, each of which may have multiple addresses.

The zone and nameservers are accessible by name; I hadn't put an index on the addresses as I was thinking that the object passed back on a query could include the nameserver name.  When receiving an update on RTT, the object is passed back the the address store, which locates the address by using the nameserver name then searching the linear list of associated addresses.


Stephen


More information about the bind10-dev mailing list