.no TLD performance
Daniel Aleksandersen from Ctrl blog wrote that he used points earned from his RIPE Atlas probe to run his tests. As luck would have it, I also have such a probe. I reached out to Daniel and he was very helpful in explaining how he had run his test (thanks Daniel!).
I ran tests for .net, .org and .no for about 2.5 days. Interval was set to 6 hours.
|Median (50%)||85% percentile||Samples|
|.net||11 ms||38 ms||4544|
|.org||14 ms||47 ms||4552|
|.no||27 ms||111 ms||4545|
.no is operated by Norid, they write the following about their domain name service:
The name service is designed to be extremly robust. This is achieved by implementing it as a mixture of Unicast and Anycast-structures, which results in a large number of physical machines, which are geographically and networkwise dispered around the world. The service is delivered partly by external and independent suppliers and partly by Norid.
I'm a bit surprised at the performance of the .no TLD, actually outperforming a lot of the other global TLDs. My web server IP doesn't change, unless I migrate to a different server, so I can set my DNS records to be long-lived and maybe get a small performance gain.
- Click +DNS
- Set Interval to 21600
- Check "Use the Probe's Resolver"
- Set Query Type to "NS"
- Set Query Argument to "org." (with dot!)
- Repeat step 2–5 for more TLDs
- Click Probe Selection Wizard
- Write "Worldwide"
- Click Worldwide
- Select 300 probes
- Click Add, Add, OK
- Choose start and stop time
- Click Create
- Go to https://atlas.ripe.net/measurements/?page=1#tab-mine and wait for data
- Downloads->json to get the test data
To analyze the json file I downloaded I used the following Python script:
import json, sys import numpy as np datafile = str(sys.argv) with open(datafile) as json_file: data = json.load(json_file) rt =  for p in data: for r in p['resultset']: try: rt.append(r['result']['rt']) except KeyError: pass print('samples: ' + str(len(rt))) print('50 pctl: ' + str(round(np.percentile(rt, 50), 0))) print('85 pctl: ' + str(round(np.percentile(rt, 85), 0)))