NSD test

Hi, all,

Recently, I tested the performance of BIND,NSD and UNBOUND. However, I am confused with the testing results. I list them here for your help.

I fake the root, ‘test’ top level domain and ‘my.test’ second level domain.

I use the ‘queryperf’ in the client and the number of queries is 50000, all of them belong to ‘my.test’ domain and have positive responses. In the zone file of ‘test’ and ‘my.test’, TTL is set to 0, and then every query should be performed from root to the ‘my.test’ server without the assistance of cache.

Client executes the DNS query using ‘queryperf’ under the following four scenarios (where SA and TA denote the Second level Authority server and Top level Authority server respectively), their QPS results are:

Case1: Recursive (bind)—Root(bind) —TA**(bind)** —SA(bind)

153.521955 qps

Case2: Recursive (bind) —Root (bind) —TA (bind)SA (nsd)

173.912569 qps

Case3: Recursive (bind) — Root (bind) —TA (nsd)SA (bind)

1857.768915 qps

Case4: Recursive (bind) —Root (bind) —A (nsd)SA (nsd)

1923.845425 qps

As you find, only when the NSD is deployed on the TA, the performance (e.g., QPS) can be promoted significantly. In other words, even when the SA uses the NSD, the QPS is just similar with the case when all the servers use BIND. This confused me, so why the results are totally different when TA uses NSD and SA uses NSD.

In my mind, the results should be similar in these two cases.

This same results appear when the recursive server uses UNBOUND. And the corresponding results is listed as following:

Case1: Recursive (unbound) — Root (bind) — TA (bind)SA (bind)

254.047935 qps

Case2: Recursive (unbound) — Root (bind) — TA (bind)SA (nsd)

293.855172 qps

Case3: Recursive (unbound) — Root (bind) —TA (nsd)SA (bind)

14968.491326 qps

Case4: Recursive (unbound) —Root (bind) — TA (nsd)SA (nsd)

15071.630940 qps

Thank you very much for your attention!

Zhiwei Yan

2011-09-16

Hi Zhiwei Yan,

I do not fully understand your test. But I think that the 0 TTL affects
the NS records for my.test. and thus the recursor is not allowed to
cache the NS records. The recursor must ask the TLD server to fetch the
NS records again. This is why performance depends on the TLD server.

Best regards,
   Wouter

Dear Wouter,

Thank you very much for your answer.

I set the TTL to 0 in order to test the processing ability of DNS softwares.

In this way, all the queries should do : root query—TLD query—SLD query. No cache for all queries and in all cases.

When the TLD server uses NSD, the performance is promoted than the all-BIND case. That means the NSD can improve the DNS processing efficiency. However, because the SLD uses BIND, the bottleneck still exists. So, when all the authority servers (both TLD and SLD) use NSD. The performance is promoted significantly.

However, when the SLD server uses NSD, the performance is not promoted than the all-BIND case. So the results are different for the following two cases and that is just my confusion.

Case2: Recursive (bind) —Root (bind) —TA (bind) —SA (nsd)

173.912569 qps

Case3: Recursive (bind) — Root (bind) —TA (nsd) —SA (bind)

1857.768915 qps

You said: “The recursor must ask the TLD server to fetch the NS records again. This is why performance depends on the TLD server.”

Yes, but the recursor also must ask the SLD server to fetch the answer. So why NSD cannot improve the performance of SLD server?

BR,

Zhiwei

2011-09-16