Don't stone the DNS heretics
They only said that Anycast was good enough for Jehovah
Sysadmin blog I recently asked Rodney Joffe, chief technologist at Neustar, four-decade industry veteran and chair of the Conficker working group, about why he founded UltraDNS and implemented IP Anycast.
Joffe, whose early career involved creating technologies for load balancing and fault tolerance, part of content distribution system Genuity, thought the same ideas would improve DNS. He was asking why the DNS servers of the day used round-robin instead of the closest geographic server: why couldn’t geographic load balancing be brought in to the DNS system, giving answer A to an individual located at X, and answer B to an individual located at Y?
He asked Paul Vixie, DNS guru and creator of BIND, the same question. Vixie’s position was that messing with DNS was fundamentally wrong, as it would violate the principles of network communications: if you are authoritative, you must deliver the same address to all askers, which the DNS Anycast method does not do*. This was to become the official IETF position.
But practice and theory didn’t match up. According to the IETF, when using Anycast, "one in a million DNS queries would fail." But in the late 1990s only 95 per cent of DNS queries succeeded on first request. According to Joffe, Anycast offered better practical results, but was rejected because of the ideas on which it was based.
Instead he created a beta for his friends on the North American Network Operators Group (NANOG) mailing list. Though the idea was viewed as heresy - Joffe was once marched out of an IETF working group meeting because of his ideas - many of the individuals on NANOG began to play with the code. Eventually, a few root server operators quietly incorporated the Anycast DNS technique into their operations, a decision which would shape the internet as we know it today.
On October 21, 2002, a DDoS attack was launched against the root name servers. The ones that survived were those that had quietly switched in the background to using Anycast. When a more powerful DDoS against the root servers occurred in 2007, only the two root servers that had yet to switch to Anycast were laid low.
UltraDNS would grow to become authoritative for more than 10 per cent of all TLD lookups and nearly 20 million domain names, and the customer list includes TLDs including .ca, .us and .uk. His revolutionary approach to root DNS services enabled the internet to withstand the DDoS attacks that once threatened to cripple it.
The lesson is that sometimes the white paper or entrenched rules of best practice are simply wrong. If it weren’t for heretics like Rodney Joffe, the internet wouldn’t function nearly as reliably as it does today. ®
* Editor's note - Trevor adds, by way of clarification: "While Anycast provides a method for DNS servers to offer the same information to all askers, it is also an enabling technology for both geocasting of DNS services and geolocating the requestor. In this way, Anycasting is the technology used by services such as UltraDNS to provide different responses to DNS queries based upon geographic location."
Two separate concepts here
Anycast may have the ability to deliver different answers to different queriers, but that is not what happens in the root zone.
When the root zones moved to be mostly hosted on anycast nodes, so that it could better stand up to DoS attacks and provide faster, more local responses, the root servers all still serve up consistent data.
Serving up different answers is usually geo-specific DNS, which is sometimes (not always) implemented using anycast. However there is no requirement for the answers to be different. In the root zones, the answers are all consistent, but served up with anycast.
It is the serving of different answers to different requesters that was considered heresy and was complained about, not the serving of DNS via anycast itself.
I think the article does not separate these two concepts at all.
Sorry for the mixup
I have asked my editor to post this as a footnote to the article.:
While Anycast provides a method for DNS servers to offer the same information to all askers, it is also an enabling technology for both Geocasting of DNS services and Geolocating the requestor. In this way, Anycasting is the technology used by services such as UltraDNS to provide different responses to DNS queries based upon geographic location.
Thanks to everyone for catching the missing information!
You might want to look at the manpage for inet_addr(), in particular the sections that describe handling of "a", "a.b", "a.b.c" and how the "parts" can be specified. The behavior you're complaining about has existed in inet_addr() since before the DNS existed.