如果您的客户、托管和 DNS 服务位于澳大利亚,使用 .com.au 域而不是 .com 是否有任何速度优势,特别是在最坏的典型情况下(域未缓存在客户的任何本地 DNS 中继中)?假设两个域最终都指向相同的名称服务器。
我知道这主要是学术性的,因为我们谈论的 DNS 查找最多需要几百毫秒,并且只会在会话开始时相关一次。我只是很好奇。
我知道未缓存的 .com 查找将涉及查询至少一台?.gtld-servers.net.
服务器,而未缓存的 .com.au 将涉及查询至少一台?.au.
服务器。
现在,我想我需要知道的是
- 各种
?.gtld-servers.net.
服务器是否使用任播技术,在澳大利亚拥有本地完全权威的节点,使它们对澳大利亚人来说一样快,?.au.
并避免 200 毫秒以上的海外延迟,或者它们中的一部分或全部仅在美国或北半球托管?
我的初步研究表明答案是肯定的。使用
dig <domain> +trace
我一直在注意相关的顶级名称服务器从下一步返回名称服务器所花费的时间(在大多数情况下,返回 ns1.someisp.com 和 ns2.someisp.com 的步骤)。虽然对 .au 域和 .com 域的大量查询来自似乎涉及往返美国的名称服务器,但 .com 域比 .au 域发生的更多。
...
好的,所以我做了更多的研究,我想我也可以报告结果。
所有 DNS 查询都从根区域开始,尽管根区域中的查询不太可能必须查询根区域服务器,因为它几乎总是被缓存(这是一个小区域,它只解析名称“com "、"org"、"au" 等。根区域名称服务器在澳大利亚的存在相当不错(我认为 13 个中有 4 个在澳大利亚有节点)。但我们可能不需要担心这一点。
然后 DNS 查询将查询顶级域服务器。对于一个未知的域名,这不会被缓存,所以这一步对于解决问题的速度很重要。
在.com和.net域的 13 个 TLD 服务器中,其中1个将从澳大利亚回复(很可能是因为它使用任播寻址并具有澳大利亚节点)。在为未知的 .com 域尝试随机名称服务器时,有 1/13 的机会它会快速返回(我的意思是澳大利亚人 <25 毫秒,而不是 190-280 毫秒,这是往返美国的典型时间)。
在.au域的 12 个 TLD 服务器中,其中4个将从澳大利亚回复。在为未知的 .*.au 域尝试随机名称服务器时,有 4/12(或 1/3)的机会它会快速返回。仅供参考,其中两个在我测试的悉尼位置不到 5 毫秒的时间内回复。
在.org域的 6 个 TLD 服务器中,其中1个将从澳大利亚东海岸回复,另外1 个将从大约 55 毫秒以外的附近位置回复(例如,这可能意味着新加坡),所以我们将给出那个半点。在为未知的 .org 域尝试随机名称服务器时,有 1.5/6(或 1/4)的机会它会快速返回。
我所做的时间测试来解决 .au 与 .org 的问题支持了这一点:未缓存域的返回时间各不相同,因为测试的 DNS 服务器随机选择了名称服务器。但.au域的平均查找时间为203 毫秒(12 次试验) ,. com域的平均查找时间为278 毫秒(12 次试验)。正如我在下面讨论的那样,当使用繁忙的 DNS 服务器(一个具有良好缓存的服务器)时,这可能会变得更快。
一个繁忙的递归 DNS 服务器运行类似于最近的 BIND 副本将缓存各种名称服务器的 RTT(返回行程时间),并且将优先选择以前返回最快的那些。这是个好消息,但要使其正常运行,它必须是流量相当大的 DNS 服务器。服务器的 RTT 信息会随着时间的推移而衰减,并在它超过 30 分钟或完成对更快服务器的一定数量的查询时被丢弃。要很好地“启动”此 RTT 缓存,需要针对不同域进行数十次或数百次查询(以便您至少访问每个 ?.gtld-servers.net 名称服务器、每个 ?.au 名称服务器等一次)。因此,要保持它的准备就绪,每半小时需要数十或数百个查询。
大型 ISP 的一对典型的递归 DNS 服务器应该在这方面做得很好。
仅仅从 TLD 服务器获得结果是不够的——它只是将您引向域自己的名称服务器。然后你也必须查询那些。如果 TLD 服务器上没有胶水记录(例如,如果您的域是example.com并且您的名称服务器是 ns?.example.org 则不会),这需要一个全新的 DNS 查找再次为名称服务器地址。
当我最初进行此测试时,我很惊讶有多少 .au 名称服务器在 > 190 毫秒内回复(表明它们几乎肯定在美国)。