This post evaluates a few methods to benchmark name servers that provide resolution of your websites domain name to its respective IP address. While DNS resolution for you 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 end-point 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. An exception to Pulse is some of the agents are hosted at locations that would be considered last-mile but at this time the results are averaged into the mean result.
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, OS, local network DNS forwarder, etc. Depending on the users 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 pro and cons just as backbone tests do. Examples include:
The aforementioned tools provide some solid metrics but I wanted a way to assess my domains name servers with a large number of DNS requests from locations of my choosing. I modified Googles Namebench code available here to allow for on demand name server benchmarks of the specified domain(s) verse 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, whom 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 then 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. Until then, please leave any questions you have regarding this post below or file an issue on the Github page relevant to the issue you are having with the customized Namebench tool.
Comments
comments powered by Disqus