Subject: [DNSOP] Recursive DNS service with external Shared Cache

From: Brian Smith <[email-masked]>
Date: Wed, 29 Sep 2010 09:07:18 -0400

I'm looking for an installation that will use multiple resolvers. What I 
would like to do is to use 1 server that will be the shared cache for 
all of the resolvers to share. Theoretically this will reduce the amount 
of traffic going out of the network as well as reduce latency.

I've looked at the usual suspects, bind, djb and unbound, for this and 
have been left wanting. Any suggests are very welcome and I thank the 
group for accepting my topic for discussion.

--
Brian Smith

---

From: Joe Abley <[email-masked]>
Date: Wed, 29 Sep 2010 13:24:44 +0000

On 2010-09-29, at 13:07, Brian Smith wrote:

> I'm looking for an installation that will use multiple resolvers. What I would like to do is to use 1 server that will be the shared cache for all of the resolvers to share. Theoretically this will reduce the amount of traffic going out of the network as well as reduce latency.
> 
> I've looked at the usual suspects, bind, djb and unbound, for this and have been left wanting. Any suggests are very welcome and I thank the group for accepting my topic for discussion.

Resolvers are sensitive beasts; when the resolver goes down the helpdesk phone rings. A client with two resolver addresses supplied during IPCP or DHCP tends not to add much practical redundancy since failing over from one to the other involves a timeout. Availability is hence most visible on the servers that end users talk to.

I have heard talk of the following:

 - deploy multiple servers providing user-facing resolver service on a single address, e.g. using anycast

(e.g. see RFC 4786, <http://www.usenix.org/events/usenix04/tech/sigs/full_papers/abley/abley.pdf>, <http://www.usenix.org/publications/login/2008-02/openpdfs/abley.pd>f, <http://nanog.org/meetings/nanog34/presentations/abley.nameservers.pdf>)

 - deploy one or more servers providing intermediate resolver service (the shared cache you mention)

 - configure the user-facing resolvers to use the intermediate resolvers

(e.g. use "forward first" and "forwarders" phrases in named.conf, or maybe a forward-zone "." phrase with unbound, YMMV, read the manual, this is from memory).

Anycasting the user-facing resolvers means you have the ability to take them down and patch them without users seeing any/much downtime. Your helpdesk will thank you.

The use of non-user-facing intermediate resolvers means you can restrict the clients able to use it to just the user-facing resolvers, perhaps meaning that it is less vulnerable to harmful effects caused by software defects (since the client population is run by you), and hence perhaps you need to patch/reboot/flush it less often. Maybe this is wishful thinking.

You might want to think about whether it's wise to use a single intermediate resolver, or whether you should experiment with using multiple (use anycast again, or verify that the user-facing resolvers will fail over nicely between multiple unicast servers). A single point of failure will make you lose sleep at some point.

Joe

---

From: Tony Finch <[email-masked]>
Date: Wed, 29 Sep 2010 14:26:02 +0100

On Wed, 29 Sep 2010, Brian Smith wrote:

> I'm looking for an installation that will use multiple resolvers. What I would
> like to do is to use 1 server that will be the shared cache for all of the
> resolvers to share. Theoretically this will reduce the amount of traffic going
> out of the network as well as reduce latency.

Use bind's or unbound's "forward" feature.

Tony.
-- 
f.anthony.n.finch  <[email-masked]>  http://dotat.at/
HUMBER THAMES DOVER WIGHT PORTLAND: NORTH BACKING WEST OR NORTHWEST, 5 TO 7,
DECREASING 4 OR 5, OCCASIONALLY 6 LATER IN HUMBER AND THAMES. MODERATE OR
ROUGH. RAIN THEN FAIR. GOOD.