Benchmarking Website Domain Name Servers
This post evaluates a few methods to benchmark name servers that resolve your website's domain name to its IP address. While DNS resolution for your domain is a small piece of the process for a user to retrieve a page, it is still important to provide the fastest experience possible, regardless of where they are connecting from. There are several methods to benchmark: from a dedicated host, or VPS or a last-mile endpoint such as a residential connection. Dedicated host benchmark examples would include DNSPerf and TurboBytes Pulse. While the metrics provided by these assessments may be consistent, they may not necessarily represent realistic last-mile performance the end user would typically experience. This is because these agents are typically on backbone internet connections that have peering agreements with very low latency providers. One exception is TurboBytes Pulse, where some measurement agents are hosted on last-mile connections. However, those results are averaged into the overall score.
Last-mile metrics provide us with an idea of what our site users first request for a DNS lookup will be. Specifically, a request for a record that is not cached by the system performing the lookup e.g. browser cache, operating system resolver cache, or local DNS forwarder. Depending on the user's geographic location and network connection (latency considerations), this could be the difference of several hundred milliseconds for an initial lookup. A few ways to examine last mile DNS are via browser, visitor analytics, or scripts. All have their pros and cons just as backbone tests do. Examples include:
The aforementioned tools provide some solid metrics but I wanted a way to assess my domain's name servers with a large number of DNS requests from locations of my choosing. I modified Google's Namebench code available here to allow for on demand name server benchmarks of the specified domain(s) versus its original purpose of benchmarking name servers for general DNS lookups. Next I setup the zone I wanted to examine at other DNS providers, Hurricane Electric (HE) and CloudFlare (CF). While these two hosts are not authoritative for my domain, i.e. they are not the name servers registered with my domain registrar, they will still respond if I have setup DNS records. In this case I am testing www.rsreese.com from a Digital Ocean host. Again, this is not realistic as we are testing from a host on optimal network and route conditions but merely to show the output.
Fastest individual response (in milliseconds):
----------------------------------------------
HE 3 ## 1.45507
HE 5 ## 1.56093
HE 5 IPv6 ## 1.58811
HE 3 IPv6 ## 1.61195
HE 4 ## 1.62816
HE 2 ## 1.63388
HE 4 IPv6 ## 1.66416
HE 1 ## 1.66702
HE 2 IPv6 ## 1.70302
CF Ram ## 1.98388
CF Erin ## 1.98603
Linode 4 ### 4.05502
Linode 4 IPv6 ### 4.06694
Linode 3 ############### 19.89603
Linode 3 IPv6 ################ 21.06285
Linode 1 IPv6 ################################ 42.38200
Linode 1 ################################# 43.81895
Linode 5 IPv6 ################################################### 69.63682
Linode 2 IPv6 #################################################### 70.39404
Linode 2 ##################################################### 71.63501
Linode 5 ##################################################### 72.44182 Mean response (in milliseconds):
--------------------------------
HE 2 ## 2.49
HE 1 ## 2.56
HE 4 IPv6 ## 2.63
HE 5 ## 2.64
HE 2 IPv6 ## 2.68
HE 5 IPv6 ## 2.74
HE 4 ## 2.98
HE 3 IPv6 ## 3.06
CF Erin ## 3.75
HE 3 ### 5.51
CF Ram ### 6.14
Linode 4 IPv6 ########## 21.88
Linode 4 ########## 21.99
Linode 3 ############ 25.73
Linode 3 IPv6 ################## 40.60
Linode 1 ###################### 49.54
Linode 1 IPv6 ########################### 61.91
Linode 2 ################################# 75.84
Linode 2 IPv6 ####################################### 90.58
Linode 5 IPv6 ################################################### 117.52
Linode 5 ##################################################### 123.20
A similar test run from a residential internet connection providing more realistic metrics for a broadband connection:
Fastest individual response (in milliseconds):
----------------------------------------------
CF Erin ######## 13.67188
CF Ram ######## 13.88907
HE 1 ########### 18.39805
HE 5 ########### 18.72587
HE 2 ########### 18.76688
HE 4 ########### 18.77284
HE 3 ########### 18.92185
Linode 4 ############# 21.31605
Linode 3 ################# 28.21493
Linode 1 ############################ 48.61617
Linode 2 ################################################# 83.48799
Linode 5 ##################################################### 92.02409 Mean response (in milliseconds):
--------------------------------
HE 3 ############## 27.24
HE 4 ############## 27.68
HE 1 ############### 28.58
HE 5 ############### 28.58
HE 2 ############### 28.89
Linode 4 ################ 31.83
CF Erin ################### 38.02
Linode 3 ########################## 51.06
CF Ram ########################## 51.32
Linode 1 #################################### 71.66
Linode 5 ################################################### 102.22
Linode 2 ##################################################### 106.29
Based on the results that I tested from a number of locations, Hurricane Electric and Cloudflare were consistently faster than Linode, which hosts my authoritative name servers, i.e. the servers that will respond if no one upstream has the answer cached. Lastly, the Namebench tool does have some built in graphing capability as shown below (not representative of the tabular data above):
If you find yourself wanting a little more in the way of graphs than what the Google chart API provides, Namebench provides us a handy spreadsheet that we can use for graphing in R which we demonstrate in the next blog post.






