I’ve been meaning for a while to do some DNS query performance testing against cheap little ARM boards running Linux that I have lying around. Finally got a few minutes to do this. Why? Because I like having local DNS servers near the users’ eyeballs - it makes the user experience measurably better. Little ARM boards are inexpensive to buy and don’t draw much power.

Methodology: Used queryperf to run recursive queries sourced from file full of lookups in a bogus TLD (in this case, .fx). The test harness client runs on a <a href=https://smartos.org>SmartMachine</a> on an HP DL160G6 host.

Ten thousand queries (sufficient for these tests) were generated using Stephane Bortzmeyer’s <a href=http://www.bortzmeyer.org/performances-serveur-dns.html>nice little Python script.</a> A new set of random queries was created for each test.

Caveats: This is just returning NXDOMAIN against a TLD for which (after the first run) there is already cached information that the TLD is bogus, so this test doesn’t involve traffic actually leaving the box. It might be interesting to run the same test against an authoritative nameserver similarly configured.

Results as follows:

<a href=http://www.hardkernel.com/main/products/prdt_info.php?g_code=G138745696275>ODROID U3:</a> uname -a: Linux odroid-server #1 SMP PREEMPT Tue Jun 3 16:01:36 UTC 2014 armv7l armv7l armv7l GNU/Linux BIND version: 9.9.5-3-Ubuntu DNSSEC Validation Enabled: Queries per second: 329.463597 qps DNSSEC Validation Disabled: Queries per second: 325.943743 qps

Raspberry Pi Model B: uname -a: Linux raspberrypi 3.12.28+ #709 PREEMPT Mon Sep 8 15:28:00 BST 2014 armv6l GNU/Linux BIND version: 9.8.4-rpz2+rl005.12-P1 DNSSEC Validation Enabled: Queries per second: 81.508335 qps DNSSEC Validation Disabled: Queries per second: 163.549054 qps