如何选择DNS TTL值

来源:https://blog.apnic.net/2019/09/27/how-to-choose-dns-ttl-values/

对于如何选择域名的DNS存活时间(TTL)值没有一致的意见。然而,ttl非常重要,因为它间接控制解析器缓存记录的时间,直接影响用户体验。

我们在SIDN实验室和USC/ISI进行了一项测量研究,以了解不同的TTL值选择如何影响操作网络,目的是帮助运营商为他们的场景做出明智的TTL值选择。

我们通知了8家TTL值较短的ccTLD运营商,导致乌拉圭的.uy增加了其NS记录的TTL,从而显著改善了用户的延迟。

以下是我们的研究论文的总结和建议,我们将在即将在阿姆斯特丹举行的ACM IMC 2019年会议上提交。

一、重点:

DNS TTLs间接控制缓存,从而影响用户体验。

8个cctld被告知其NS记录的TTL值被认为太低;三个人增加了。

乌拉圭的.uy通过将其NS TTL从5分钟更改为1天,将中位延迟从28ms减少到8ms,将第75百分位延迟从183ms减少到21ms,实现了显著的性能提升。真正使用.uy的用户可以获得类似的性能收益,其他两个cctl也是如此。

在权威服务器端使用带有短TTL的anycast不能获得与长TTL相同的收益。

二、新域名,什么TTL?

假设你要为自己或雇主注册一个新域名。必须为其关联的记录选择生存时间(time-to-live, TTL)值。例如,下面的图1显示了我们用来管理域cachetest.net记录的实际注册商的仪表板。观察设置为1小时(荷兰语为1 Uur)和1天(荷兰语为1 Dag)的TTL值。

DNS TTL的值可能从0秒到248555天不等(2^31 -1秒)。给定如此大范围的可能值,很难知道应该选择什么值。由于跨分布式DNS服务的交互,准确理解TTL值选择如何影响操作网络是一项挑战。

三、DNS TTLs实际用于什么?

TTLs间接控制解析器缓存。缓存反过来是DNS性能的基石:一个15ms的答案是快的,但是一个1ms的缓存答案要快得多。

要解析域名,用户通常连接到DNS解析器(如下面的图2所示)。然后,解析器将用户的查询转发到DNS权威服务器,然后,DNS权威服务器将相应的TTL值(图中为1h)发送回查询响应。这意味着解析器可以缓存检索到的答案长达1小时。

然后,当其他用户在一个小时的窗口内询问相同的查询时(如蓝色和绿色箭头所示),而不必再次查询权威服务器,查询可以通过直接引用DNS解析器的缓存来回答,这通常要快得多。

在这个意义上,缓存可以被看作是解析器端临时复制的一种形式(我们在以前的研究中已经展示了,当权威服务器受到DDoS攻击时,缓存如何保护用户)。

如果没有共识,在野外使用什么价值观?

即使对于什么是最好的TTL值没有共识,人们在配置他们的域名时也必须设置它们。

为了了解在野外通常使用什么值,我们抓取了5个数据源:

(1)一个国家代码顶级域名(荷兰nl),拥有580万个域名

(2)前三名(Alexa、Majestic和Umbrella)

(3)根DNS区域

对于每个域,我们要求从子权威服务器获取NS、A、AAAA、MX、DNSKEY记录。

图3显示了有关域的NS和A记录的结果(其他记录可以在我们的研究论文中找到)。我们可以看到:

TTLs显示了所有列表和记录类型的值的巨大变化,从1分钟到48小时不等。

根区域中的顶级域(图1中的根)比顶级列表(Alexa、Majestic、Umbrella)保守得多:对于NS和A的大多数ttl至少24小时(请记住,这些是子委托ttl)。

对于所有列表,NS记录的ttl往往比A记录的ttl长,但是,对于多长还是短,仍然没有一致的意见。

Umbrella包含许多完全合格的域名,比如CDNs使用的域名,包括wp-0f21050000000000.id.cdn.upcbroadband.com。这是我们在Umbrella上看到的记录TTL低于其他列表的原因之一,其他列表包含二级域(如examplenl和examplecouk): CDNs以使用短TTL值而闻名,这在一定程度上是为了负载平衡。

三、乌拉圭的.uy延时因TTL变长而增加

在对根区域(顶级域)进行爬行时,我们发现34个顶级域(顶级域)的NS记录TTL值小于30分钟—这与其他顶级域相比非常短。我们联系了34个国家代码中的8个,并将我们的观察结果通知了他们。我们收到了5个人的回复;在我们第一次接触后,3个增加了他们NS记录的TTLs。这些包括:

乌拉圭的.uy NS记录由300s NS TTL更改为86400(1天)

非洲ccTLD和中东ccTLD的NS TTLs也从480和30秒增加到86400秒。

在TTL改变之前,我们偶然在.uy ccTLD上进行了DNS测量:使用10,000个成熟的Atlas探针请求NS和A记录。我们在更改之后重复测量,以查看这如何影响用户的体验(图4显示了结果)。

图4显示,中位延迟从28ms减少到8ms,第75百分位延迟从183ms减少到21ms——只需要改变一个参数。换句话说,.uy的中值用户注意到响应时间的变化是20ms,这仅仅是TTL变化的结果。而第75百分位的用户将体验到超过160ms的改进。

我们的结果还显示了根据地理区域在Atlas探测有利位置所经历的延迟增益:所有区域都经历了性能增益。需要注意的是,这些显著的性能改进只需要更改一个参数,而根本不需要更改.uy基础结构。

这可不是件小事:DNS运营商一直在努力改善延迟。为了提高性能,还经常使用IP anycast将更权威的服务器放置在解析器附近。但是,正如我们在论文(第6.2节)中所展示的,使用更长的TTLs进行缓存甚至比使用更短的TTLs进行任何类型的转换都要快。

四、选择长或短ttl的理由

网络运营商选择长TTLs或短TTLs的原因有很多:

更长的缓存会导致更快的响应:更长的TTL支持更长时间的缓存,并且缓存命中要比从权威服务器检索答案快得多,正如.uy的经验所示。我们设计了几个实验来研究这一点,在我们的论文中有描述。结果表明,较长的缓存比大型的anycast网络更能提高结果。

较长的缓存会降低DNS流量:权威操作人员可能对设置较高的TTLs感兴趣,因为缓存减少了他们接收的查询数量。如果要测量DNS服务,这一点尤其重要。

更长的缓存对权威DNS服务器上的DDoS攻击更健壮:对DNS服务提供商的DDoS攻击已经损害了几个著名的网站。最近的研究表明,如果缓存的时间比攻击的时间长,那么DNS缓存可以极大地减少DDoS对DNS的影响。

较短的缓存有助于操作更改:从旧服务器转换到新服务器的简单方法是更改DNS记录。由于没有删除缓存的DNS记录的方法,TTL持续时间表示完全迁移到新服务器所需的转换延迟。因此,低TTLs允许更快速的转变。但是,如果部署计划比TTL的长度更早,TTL可以在重大操作更改之前降低,而在更改生效后再次升高。

更短的缓存有助于对DDoS攻击作出基于dna的响应:一些DDoS清除服务在攻击期间使用DNS重定向流量。由于DDoS攻击的到来是不事先通知的,基于DDoS的流量重定向要求TTL一直保持在较低的水平,以准备应对潜在的攻击。

更短的缓存有助于基于DNS的负载平衡:许多大型服务使用基于DNS的负载平衡。每个传入的DNS请求都提供了一个调整负载的机会,因此短的TTLs可能适合于对流量动态的快速响应(尽管许多递归解析器具有几十秒的最低缓存时间,这限制了灵活性)。

五、建议

虽然我们的分析并没有提出一个理想的TTL值,但它确实阐明了权衡,使我们能够针对不同的情况提出以下建议:

TTL持续时间:TTL值的选择部分取决于外部因素,因此没有一种推荐适合所有网络或网络类型。

对于一般的区域所有者:我们建议较长的ttl,至少1小时,最好是4、8或24小时。假设计划维护可以提前安排,长ttl的成本很小。

对于TLD和其他注册操作符:允许域的公共注册的DNS操作符(如大多数ccTLDs、.com、.net、.org和许多slds)允许客户端在其区域文件中为客户端NS记录复制ttl(如果在bailiwick中,则是glue)。在我们论文的3.3节中,我们展示了大多数解析器使用来自子委托的TTL值,一些使用父委托的TTL值。因此,我们建议对父级和子级NS记录使用更长的TTLs(至少一小时,最好更长)。

基于DNS 的负载平衡或ddos预防的用户可能需要较短的TTLs: TTLs可能短至5分钟,尽管15分钟可能为许多操作人员提供足够的灵活性。较短的ttl有助于敏捷性;他们是一个例外,我们的第一个建议更长的TTLs。

你可能感兴趣的:(如何选择DNS TTL值)