Network Working Group T. Brisco
Request for Comments: 1794 Rutgers University
Category: Informational April 1995
DNS Support for Load Balancing
1. Introduction
This RFC is meant to first chronicle a foray into the IETF DNS Working Group, discuss other possible alternatives to provide/simulate load balancing support for DNS, and to provide an ultimate, flexible solution for providing DNS support for balancing loads of many types.
2. History
The history of this probably dates back well before my own time - so undoubtedly some holes are here. Hopefully they can be filled in by other authors.
Brisco [Page 1]
RFC 1794 DNS Support for Load Balancing April 1995
Most of the Internet waited in anticipation of an IETF approved method for simulating "clusters".
Brisco [Page 2]
RFC 1794 DNS Support for Load Balancing April 1995 3. Possible AlternativesDuring various discussions with the DNS Working Group and with the Load Balancing Committee, it was noted that no existing solution dealt with all wishes appropriately. One of the major successes of the DNS is its flexibility - and it was felt that this needed to be retained in all aspects. It was conceived that perhaps not only address information would need to be changed rapidly, but other records may also need to change rapidly (at least this could not be ruled out - who knows what technologies lurk in the future).
4. A Flexible Model
During many hours of discussions, it arose upon suggestion from Rob Austein that the changes could be implemented without changes to the protocol; if zone transfer behavior could be subtly changed, then the zone transfer process could accommodate the changing of various RR information. What was needed was a smarter program to do the zone transfers. Pursuant to this, changes were made to BIND that would permit the specification of the program to do the zone transfers for particular zones.
Brisco [Page 3]
RFC 1794 DNS Support for Load Balancing April 1995
Secondarily, but perhaps more subtly, the problem arises that zone transfers aren't used by primary nameservers, only by secondary nameservers. To clarify this, the idea of "fast" or "volatile" subzones must be dealt with. In a volatile environment (where address or other RR ordering changes rapidly), the refresh rate of a zone must be set very low, and the TTL of the RRs handed out must similarly be very low. There is no use in handing out information with TTLs of an hour, when the conditions for ordering the RRs changes minutely. There must be a relatively close relationship between the refresh rates and TTLs of the information. Of course, with very low refresh rates, zone transfers between the primary and secondary would have to occur frequently. Given that primary and secondary nameservers should be topologically and geographically far apart, moving that much data that frequently is seen as prohibitive. Also; the longer the propagation time between the primary and secondary, the larger the window in which circumstances can change - thus invalidating the secondary's information. It is generally thought that passing volatile information on to a secondary is fairly useless - if secondaries want accurate information, then they should calculate it themselves and not obtain it via zone transfers. This avoids the problem with secondaries losing contact with the primaries (but access to the targets of the volatile domain are still reachable), but the secondary has information that is growing stale.
Brisco [Page 4]
RFC 1794 DNS Support for Load Balancing April 1995 5. ImplementationWith some help from Masataka Ohta (Tokyo Institute of Technology), I implemented modifications to BIND to permit the specification of the zone transfer program (zone transfer agent) for particular domains:
Brisco [Page 5]
RFC 1794 DNS Support for Load Balancing April 1995 6. PerformanceWhile the performance of fast zones isn't exactly stellar, it is not much more than the normal CPU loads induced by BIND. Testing was performed on a Sun Sparc-2 being used as a normal workstation, but no resolvers were using the name server - essentially the nameserver was idle. For a configuration with no fast subzones, BIND accrued 11 CPU seconds in 24 hours. For a configuration with one fast zone, six address records, and being refreshed every 300 seconds (5 minutes), BIND accrued 1 minute 4 seconds CPU time. For the same previous configuration, but being refreshed every sixty seconds, BIND accrued 5 minutes and 38 seconds of CPU time.
7. Acknowledgments
Most of the ideas in this document are the results of conversations and proposals from many, many people - including, but not limited to, Robert Austein, Stuart Vance, Masataka Ohta, Marshall Rose, and the members of the IETF DNS Working Group.
8. References
[1] Mockapetris, P., "Domain Names - Implementation and
Brisco [Page 6]
RFC 1794 DNS Support for Load Balancing April 1995 9. Security ConsiderationsSecurity issues are not discussed in this memo.
10. Author's Address
Thomas P. Brisco Associate Director for Network Operations Rutgers University Computing Services, Telecommunications Division Hill Center for the Mathematical Sciences Busch Campus Piscataway, New Jersey 08855-0879 USA