bloxHub

www.infoblox.com/community

Quantifying DNSSEC Overhead

I realized last week that I'd never actually traced all the queries sent and responses received by a recursive name server resolving a domain name in a zone signed with DNSSEC. I decided to trace the recursive resolution of an RRset in a signed top-level domain, since I wanted to see the "chain of trust" in action. I knew .org was signed and figured isc.org (the Internet Systems Consortium's domain) would probably already have a DS (Delegation Signer) record. Sure enough, a quick query using dig verified that:

% dig ds isc.org. +dnssec

I chose www.isc.org/IN/A as the RRset I'd look up.

I started by clearing the cache on my BIND name server (running BIND 9.7.0rc1), so that I could watch my name server query the .org name servers and see the records returned:

% sudo rndc flush

Then I fired up tcpdump to capture DNS traffic:

% sudo tcpdump -w www.isc.org.cap port 53

And then sent the query:

% dig www.isc.org. +dnssec

This turned out not to capture enough data when the responses were long, so I refined my tcpdump command by specifying the option "-s 4096". Then I found out I wasn't catching all fragments of really long responses, so I dumped the "port 53" argument (since fragments don't carry port information) and used Wireshark to filter out all the non-DNS traffic. Now I actually had a complete record of the queries my name server sent and the responses it received.

The results surprised me: I saw five queries and five resulting responses, when resolution of a domain name from an unsigned zone, such as www.cert.org, would usually require at most just three roundtrips. And, of course, the signed responses were much larger than most unsigned responses.

This isn't a perfect comparison--isc.org has four authoritative name servers, while cert.org only has two, which would make isc.org responses larger even without DNSSEC--but it gives you a sense of how much more traffic DNSSEC will use: In this case, over 6.5 times as much!

Now, not all resolutions of RRsets in signed zones will require this many roundtrips: Once our name server has validated the signature of www.isc.org's A record, as well as the public keys for isc.org and org, it'll cache those results. Still, even the individual response that contained www.isc.org's A record (Response 3) was a whopping 17 times as large as the response containing the address of www.cert.org, and that record's TTL is just ten minutes, so we might have to look it up frequently.

Of course, the workload involved in sending and receiving those UDP datagrams pales in comparison with all the hashing and decryption that needs to be done to validate the records received. Here's what those five responses contained:

  • Response 1: 6 NS records, 6 A records, 6 AAAA records
  • Response 2: 4 NS records, 2 DS records, 1 RRSIG record
  • Response 3: 4 A records, 1 AAAA record, 4 NS records, 12 RRSIG records
  • Response 4: 4 DNSKEY records, 14 RRSIG records, 4 NS records, 3 A records, 1 AAAA record,
  • Response 5: 4 DNSKEY records, 2 RRSIG records, 6 NS records, 1 RRSIG record, 2 A records, 2 AAAA records

Now, some of these are duplicates, and some RRSIG records aren't needed in the validation process, but each RRSIG record requires one cryptographic hashing operation and one asymmetric encryption operation to check, and each DS record requires one cryptographic hashing operation to check. Compare that with the resolution of www.cert.org, which would require all of, er, zero hashing operations and no asymmetric encryption operations.

As a consequence, we should expect to see CPU overhead go up dramatically as our name servers start handling more DNSSEC-signed responses. After you configure validation, you'd be well advised to begin monitoring your name server's CPU utilization, too, so you aren't caught by surprise when your recursive name server pegs the processor.

File attachments: 
Archived: 
Section: 

Tags:

BIND, DNSSEC

Comments

I am not looking forward to a DNSSEC-enabled future since it puts a ton of burden on me and nobody will actually derive benefit from it.

+1
0
-1

Nobody, David? That's a fairly extreme position. Why do you think nobody will benefit?

+1
0
-1

I suppose the DNSSEC vendors will benefit. :-)I don't think the real world will benefit because I have a hard time imagining anyone running a resolver that throws away unsigned answers. And if they don't throw them away, then the benefit of DNSSEC is moot.

+1
0
-1

I'm not sure they'll have the choice. If you configure BIND with a trust anchor for, say, .org, it'll discard answers from .org or secure subzones of .org that don't validate. The administrator doesn't have the option of saying, "Go ahead and return answers that don't validate."

+1
0
-1

Sometimes tells me the option to discard answers will be added quickly as soon as we have enough production traffic on DNSSEC since there are bound to be catastrophic key management mistakes that take down big zones or even entire TLDs.

+1
0
-1

*Something (not sometimes) :-)** And we've already seen these catastrophic mistakes, but since nobody uses DNSSEC, nobody cares.

+1
0
-1

That's certainly a possibility (the part about the option being added--I agree that the key management mistake is likely, if not inevitable).

+1
0
-1

So how do people feel about the possible DOS-amplification 'benefits' of this 'new' technology ?

+1
0
-1

Add comment

Log in or register to post comments

Welcome to bloxHub

Welcome to bloxHub, our community for users of Infoblox products. Most of our content can be viewed as a guest, but if you wish to contribute or join a conversation, you will need to log in. If you don't have a bloxHub account, we invite you to register an account and join us.

Follow us on Twitter

Follow us on Twitter at @bloxHub and we'll keep you notified of new content on the community as well as webinars and other items of interest to Infoblox users.