[bind10-dev] BIND 9 compatibility, was BIND 10 face to face meeting Y2-2 agenda

Michael Graff mgraff at isc.org
Fri Aug 27 21:01:22 UTC 2010


Please don't discuss topics on this thread. Or better yet wait 2 days.  :)

--Michael (from an iPhone)


On Aug 27, 2010, at 15:38, Evan Hunt <each at isc.org> wrote:

>> We prefer separate tasks, like you describe, but need to see if it is
>> efficient to do that. This is the main point of Stephen's recent
>> research, which he will be presenting & discussing with us on Tuesday
>> morning. It looks like we may be able to have separate tasks.
> 
> I think Fujiwara-san's concern is about a single server sharing both
> recursive and authoritative functionality, listening on port 53 and
> handling both sorts of queries.
> 
> AIUI, relatively few DNS implementaitons allow you to do both of these
> things with a single server.  BIND and dnsmasq are the only ones I can
> think of offhand (but I'm probably forgetting something).  I'm also not
> sure how much demand there really is for it in the real world:  My home
> server handles both recursive and authoritative queries, but I don't think
> it's very common setup for serious production name servers.  But, it's
> something all previous versions of BIND have done, and we do want to be
> compatible.
> 
> We've had a bunch of conversations about how handle it (even in the
> informal discussions between Joao, Michael and myself, back before the
> BIND 10 project had properly gotten started).  It's going to be tricky to
> do it if we also stick with our vague plans to separate "auth" and
> "recurse" into separate processes.  Because doing that means the two of
> them will have to be sharing the socket somehow, and working out between
> themselves which process answers which queries.
> 
> Now, having a "receptionist" process that receives all the packets and
> distributes them to the right processes doesn't seem too hard,
> conceptually, if it's dividing them into broad categories (updates go
> to an update process, notifies to go xfrin, ixfr/axfr goes to xfrout...).
> But the receptionist can't be expected to know whether a query should
> go to auth or recurse; to do so it would have to know in advance whether
> we're authoritative for the name or not, and that's something even auth
> doesn't know at first.
> 
> So we decided the receptionist would have to send the queries to one or the
> other, and if it turns out to be the wrong choice, it can pass the query
> along to the other one.  One of the ideas that came up was that we could
> usually configure a server to *prefer* authoritative or recursive,
> depending on the kind of traffic that was expected.  A server might, for
> instance, be handling recursive traffic most of the time but get an
> occasional authoritative query; in that case we'd configure it so that
> "recurse" gets all the queries, but if one of them turns out to be for a
> name for which the server is authoritative, then the query gets handed off
> to "auth" instead.  A server whose traffic pattern was the reverse would
> have "auth" handle all the queries, but pass them off to "recurse" if
> it couldn't answer.
> 
> Having spent some time looking into the recursive algorithm in more detail,
> I no longer think we can take that flexible approach.  Recursion boils down
> to this:
> 
>  1) check authoritative data sources for an answer
>  2) if the answer isn't complete, check the cache for anything missing
>  3) if the answer still isn't complete, recurse for anything still
>     missing, and cache the response
> 
> Step one isn't optional.  If we're answering recursive queries on a server
> that's authoritative for anything, then *every* query is going to have to
> check the authoritative data sources first.  So I see two options:
> 
>  1) we separate b10-auth and b10-recurse as planned; all queries go to
>     b10-auth; failures or partial successes are handed off to b10-recurse
>     for additional work.  (Sometimes a query might ping-pong back and forth
>     between the two several times.)
>  2) we don't separate b10-auth and b10-recurse, but have a single process
>     that handles all queries.
> 
> I regret to say it, but I like option 2 better.  I thought separate
> processes would simplify the design, but I now think it does the reverse.
> 
>                                                eh
> 
> _______________________________________________
> bind10-dev mailing list
> bind10-dev at lists.isc.org
> https://lists.isc.org/mailman/listinfo/bind10-dev



More information about the bind10-dev mailing list