在当今互联网环境中,域名系统(DNS)延迟是影响良好在线体验的关键因素。为了最小化DNS延迟,精心选择DNS服务器和匿名中继起着重要作用。然而,减少延迟的最佳方法是从一开始就避免发送无用的查询。这就是为什么DNS从一开始就被设计成一个高度可缓存的协议。每个记录都有一个生存时间(TTL),最初由区域管理员设置,解析器使用这些信息来在内存中保留这些记录,以避免不必要的流量。缓存效率如何?几年前我进行的一项快速研究表明,还有改进的空间。今天,我想重新审视当前的情况。为此,我对一个加密DNS服务器进行了修补,以存储每个入站查询的原始TTL,定义为其记录的最小TTL。这为我们提供了对现实世界流量TTL分布的良好概述,同时也考虑了单个查询的流行度。这个修补版本运行了几个小时。 resulting data set is composed of 1,583,579 ( name, qtype, TTL, timestamp ) tuples. 在这里,我们可以看到整体TTL分布(X轴是秒数):图1 – 整体TTL分布(X轴是秒数)。除了在86,400(主要针对SOA记录)处有一个可忽略的峰值外,很明显,TTL值处于较低范围。让我们放大查看:图2 – 0到10,000秒的TTL分布。好吧,超过1小时的TTL在统计上不显著。让我们专注于0-3,600秒的范围:图3 – 0到3,600秒的TTL分布。并且大多数TTL值在0到15分钟之间:图4 – 0到800秒的TTL分布。这并不好。累积分布可能会使问题更加明显:图6 – 0到3,500秒的TTL累积分布。一半的互联网TTL为1分钟或更少,四分之三的TTL为5分钟或更少。但是等等,这实际上更糟糕。这些是由权威服务器定义的TTL。然而,从客户端解析器(例如,路由器、本地缓存)检索到的TTL会随着每秒上流解析器的递减而递减。因此,平均而言,客户端可以使用缓存条目的时间是原始TTL的一半。也许这些非常低的TTL只影响不常见的查询,而不是流行的网站和API。让我们看看:图7 — TTL(X轴)与查询流行度(Y轴)的关系。不幸的是,最流行的查询也是最不值得缓存的。让我们放大查看:图8 — TTL(X轴)与查询流行度(Y轴)的关系。结论:这真的很糟糕。
TTL分布分析
通过对大量DNS查询的TTL值进行分析,我们发现大多数TTL值都集中在0到5分钟之间。这意味着许多DNS记录的缓存时间非常短,这会导致频繁的网络流量和查询延迟。这种低TTL值的使用在统计上不必要,并且对网络性能产生了负面影响。
实际影响评估
尽管权威服务器定义的TTL值可能看起来不高,但实际上,客户端解析器在递减TTL时,用户能够使用缓存条目的时间只有原始TTL的一半。这意味着,即使权威服务器设置了较长的TTL值,由于递减,用户实际上只能获得很短的缓存时间。
对运维/网络工程师的实际意义
对于运维和网络工程师来说,了解和优化DNS TTL值对于提高网络性能至关重要。通过适当设置TTL值,可以减少不必要的网络流量,提高DNS查询效率,从而改善用户体验。此外,通过分析TTL分布,工程师可以识别出需要特别关注的网络资源,并采取相应措施来优化性能。
结论:停止使用荒谬的低 DNS TTL 值
在当前的网络环境中,大量使用低TTL值是不合理的,并且对网络性能产生了负面影响。运维和网络工程师应该重新评估和优化DNS TTL设置,以提高网络效率和用户体验。
原文: APNIC Blog(2019-11-12)|编译自 APNIC Blog,事实以原文为准。
来源:APNIC Blog