一、DNS
DNS(Domain Name System)“域名系统”,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,提供的服务是用来将主机名和域名转换为IP地址。这是互联网上最广泛使用的协议之一,开发与 1980 年代
DNS使用UDP作为传输层协议,但在某些情况下可以切换到TCP。 因此,使用UDP时,DNS消息的大小限制为512字节。 基本DNS消息以固定的12字节标头开头,后跟四个可变长度的部分:
- 问题(或查询)
- 答案
- 权威记录
-
附加记录
下图说明了典型的DNS消息结构。
二、为何选择EDNS?
DNS的开发是为了适应80年代的速度和流量,因为只有少数参与研究和开发的精英才能访问互联网。然而,自从速度,流量以及更重要的是互联网结构的方式以来,已经发生了很多变化。我们已经从集中式服务器架构走了很长一段路 - 互联网现在已经分发并服务于全球受众。
从上面的DNS消息结构中可以看出,当前表单中的DNS消息没有足够的空间来添加更多信息。在此背景下,增强DNS协议以满足新的要求变得至关重要。因此,提出了DNS的扩展机制,即EDNS。在较高的层面上,EDNS允许我们克服DNS标头中几个标志字段,返回码和标签类型的大小限制。它还允许将DNS消息大小从512字节扩展(当UDP用作传输协议时),而无需切换到TCP。
三、EDNS的影响
这个增强版的DNS如何使内容交付网络能够为最终用户提供高性能?
内容传送网络(CDN)确保最终用户从地理位置靠近它们的服务器提供服务。 这通常以两种方式完成 -
- 依赖于DNS并提供单播地址的CDN:确定最近服务器的逻辑基于请求所源自的递归解析器的位置,并且根本不存在于DNS解析过程中。
- 依赖于Anycast的CDN:BGP确保用户访问最靠近最终用户的CDN服务器。
Catchpoint中的DNS体验测试可用于了解属于第一类的CDN使用的DNS解析过程。 此测试类型还有助于监视CDN网络上DNS服务器的性能和可用性。
-
TLD返回域的权威名称服务器 -
-
权威名称服务器返回指向CDN基础结构的CNAME记录:
请注意,此步骤中的DNS服务器属于CDN: -
最终解析级别的CDN权威名称服务器使用请求源自的递归解析器的IP来分发最终用户附近的CDN服务器
下图说明了使用ISP的DNS解析器时的DNS解析过程。 最终用户从靠近它的CDN服务器提供服务。
随着公共DNS递归解析器(如Google DNS和Open DNS)以及使用集中式DNS解析器基础结构的ISP的出现,最终用户和递归解析器在拓扑上接近的假设不再有效。 例如,Open DNS解析器在印度尚未出现,因此如果最终用户使用Open DNS解析器,则可以在新加坡(https://www.opendns.com)中对Open DNS解析器进行DNS查询。 / data-center-locations /)。 影响 - 增加了往返时间和延迟。 由于距离或跳数的增加,丢包百分比也可能增加。
下图说明了使用Open DNS解析程序时的解析过程:
为了克服上述问题,递归解析器可以将edns-client-subnet(ECS)EDNS0选项传递给转发解析器,中间名称服务器,最终传递给权威名称服务器。 然后,权威的名称服务器使用ECS作为最终用户网络位置的提示,并提供地理上感知的答案。
下图说明了传递edns-client-subnet选项时DNS解析逻辑的更改:
EDNS为依赖DNS的CDN节省了一天,并确保它们符合改进的性能承诺。
支持使用ECS EDNS0选项的方法由Akamai等CDN,Dyn和NS1等DNS提供商以及Google DNS等公共DNS解析器提供。 使用DNS测试和高级设置来传递客户端子网信息,可以确保他们所依赖的网络基础架构能够很好地利用DNS协议的最新增强功能。
如果您对以下任何一点的回答为“是”,则应在DNS监控策略中包含DNS测试,并在其中传递EDNS客户端子网:
您有使用公共DNS解析器的用户抱怨DNS问题。
您使用CDN并查看用户始终路由到远程CDN服务器。
您将名称服务器域提供给公共DNS解析器以进行白名单以支持EDNS客户端子网。生日攻击和缓存污染是与使用EDNS客户端子网相关的两个安全问题。白名单可确保递归解析程序仅将ECS发送到列入白名单的权威名称服务器,反之亦然。
您在启用ECS支持后会看到DNS时间上升。 DNS解析过程通过一堆解析器和服务器 - 存根解析器,转发解析器,递归解析器,中间服务器和权威服务器。由于EDNS相当新,因此并非所有组件都支持它,导致重试和增加DNS时间。如果解析器支持,则解析器将在其请求中添加ECS选项。如果支持,服务器将使用ECS选项进行响应。否则,它会忽略该选项。
您会看到相同的CDN服务器IP被返回到最终用户的广泛网络,并且服务器已经过载。使用ECS时,DNS条目将缓存在查询中包含的客户端子网中。如果客户端子网足够通用以服务大量IP,则可以为其提供相同的CDN服务器。
从监控的角度来看,始终必须考虑协议的最新变化和增强。采用增强功能的策略以及测试和监控采用的平台也是至关重要的。快乐监控!
英文原文:https://blog.catchpoint.com/2017/05/03/should-cdns-be-thankful-for-edns/