浅谈DNS智能解析

如何让DNS解析更加智能?

智能解析所需的功能

智能解析应该包括以下内容:

  • 基于IP地址段智能递归查询选择,即记录基于不同IP地址段智能选择递归查询设备的过程,实现对递归查询请求的分流、减荷和引导。
  • 基于区域智能域名解析,记录DNS请求根据不同区域返回最优解析结果的过程;
  • 基于用户群智能域名解析,记录DNS请求根据不同用户群返回最优解析结果的过程;
  • 基于网络智能域名解析,记录当一个域名有多个结果IP地址的情况下,使用基于网络的智能解析,能把属于本网的结果IP地址优先返回给用户。

DNS服务节点内包括DNS缓存设备、DNS递归设备两种服务器设备。其中,缓存服务器缓存互联网 域名解析结果,直接面向用户提供解析结果;在缓存设备系统中未查找到缓存应答结果的DNS请求,就会将其透传给递归设备,递归服务器向ICP权威服务器进行域名查询并将解析结果存入DNS缓存服务器。DNS服务节点智能解析的逻辑功能如图所示。

关键技术

缓存设备的智能解析关键技术

DNS缓存设备面向访问用户,为其提供直接的DNS基本解析服务,按照服务对象的类型划分缓存视图分区,不同的视图提供不同的解析结果。服务对象通常有以下类型:固网用户、移动网用户、高质量用户、特定的区域用户。服务用户的属性目前以用户的IP地址段进行区分,即事先根据用户IP地址段划分不同的分组,可以根据网络运营者进行分组定义,以IP地址段区分固网用户、移动用户、某地市区域用户等。

缓存设备主要通过缓存视图实现智能解析技术。在不同的视图中,可以再将用户细化到不同的分组中,不同的分组返回不同的智能解析结果。例如,对于普通的固网用户,可以按照省份或者所属运营商等不同的维度,细化到不同的分组,不同的分组按照智能解析策略优先返回不同的解析结果

主要技术方案如下:

  1. 基于区域智能域名解析可以对某域名的DNS请求按照不同的网络区域范围,返回最优的解析结果,以提高解析速度及用户业务体验。
  2. 基于用户群智能域名解析可以对某域名的DNS请求按照用户群返回不同的结果,例如:QQ等网站为基本宽带用户群和4G用户群设置不同的网站,系统可以基于基本宽带用户群和4G用户群返回不同的服务地址,以提高用户的业务体验。
  3. 基于网络智能域名解析当解析一个域名返回多个结果时,可能包括外省或其他运营商的IP地址,这时希望总是把本网的IP地址返回给用户,那么可以使用基于网络的智能解析,把本网的IP地址优先返回给用户。
  4. 全局或IP地址段强制域名解析强制域名解析功能(分为全局强制域名解析和IP地址段强制域名解析两种)可以实现对源为全局IP地址或特定IP地址段的在查询某些特殊的域名,返回预设的解析结果,既不从缓存中查询,也不进行后端查询和proxy查询,从而加快服务器的解析速度,提高了服务器的有效负载,解决了安全隐患问题。
  5. 泛地址域名解析泛地址域名解析功能将前缀不确定的域名统一解析成预设的地址,为DNS网管人员提供了一种便捷、高效的方法,能对相应部门发现的有问题域名进行封堵(如不法分子利用DNS发布对国家有害的信息、网上赌博、域名攻击行为等)。

递归设备的智能解析关键技术

DNS节点中,缓存设备和递归设备是紧耦合的方式,递归设备为本地缓存设备服务,在缓存设备系统中未查找到缓存应答结果的DNS请求,就会将其透传给递归设备。递归服务器负责查询ICP权威服务器或联系其他DNS服务器,并随后将返回的查询结果存入DNS缓存服务器。递归设备智能解析实现的关键技术功能主要如下。

  1. 基于IP地址段智能递归选择缓存设备根据域名查询的用户属性,将不同用户的DNS请求智能调度到相关的递归设备中。实现对递归查询请求进行分流和引导,递归服务器采用特定的服务地址向权威服务器进行递归域名查询,从而获取最优的解析结果。
  2. 递归设备间的智能调度应用递归服务器的智能调度,除了可以很好地实现各个递归服务器之间的负载均衡外,还可以结合网络距离、运营商等策略,实现用户DNS请求的就近递归解析或者本网递归解析等。

DNS的智能解析优化方案

利用缓存模块化视图技术进行智能解析的优化

面对日益复杂的全网资源按需调度需要以及高质量用户所需求的高质量用户体验,采用模块化图技术,以用户属性为维度,划分缓存模块视图,不同维度的用户群可以获取不同的DNS应答结果,每个维度单独维护自己的DNS缓存结果。用户属性识别通过用户的DNS查询报文的源IP地址进行区分。在定制智能解析策略前,首先需要定义用户属性的分组,以不同用户的源IP地址段为依据进行分组,例如分组1为广州市用户、分组2为深圳市用户、分组N为高质量用户等。

DNS模块化缓存视图原理如图所示,用户识别模块将DNS域名记录数据以用户属性为维度划分不同的组,DNS缓存设备接收到用户的报文即可从源IP地址判断其所属分组;DNS缓存同样以用户分组为维度,对应不同的分片缓存,相同域名的分片缓存以红黑树的形式关联在一起。不同的分片缓存存储对应用户属性的最优DNS应答结果,保证每个不同用户都能够得到最优的应答结果,提高用户的上网体验。

模块化缓存视图技术的主要优势如下。

  1. 简单性每一种属性的用户群有对应的视图进行服务,在缓存服务器的功能实现和系统管理方面都具有可操作性、易于管理等特点。

  2. 安全性:通过视图,用户只能看到和查询它所对应的视图及域名数据,对于其他视图,用户无法获取结果。

  3. 不同模块可以匹配不同的对外DNS服务地址:为了进一步提升缓存视图的不同维度分组服务能力,运营商所应用的缓存视图技术,不但可以匹配用户源地址段所对应的不同分组,也可以匹配用户所访问的不同DNS服务地址,进行不同的分组划分,即同一个DNS缓存服务器,可以配置多个不同的对外服务地址,多个不同的服务器地址可以关联对应的模块化视图(例如两个不同的模块化视图可分别配置118.118.118.1和118.118.118.2的服务地址),不同的用户群可能会访问不同的服务器地址,缓存服务器可以根据用户访问的服务地址匹配对应的视图。

利用递归服务器进行按需智能递归调度的智能解析优化

为了配合缓存设备模块视图的解析精确性,需要对本地递归服务器进行按需智能递归算法调度,将DNS请求按需地调度到不同的递归服务器上,得到不同的应答结果。

传统的DNS转发策略都是采用轮询调度算法,轮询调度算法的原理是每一次把来自用户的请求轮流分配给DNS递归服务器,从第1个开始,直到第N(内部服务器个数)个,然后重新开始循环。轮询调度算法的优点是简洁,无需记录当前所有连接的状态,所以是一种无状态调度。

轮询调度算法前提是所有服务器的处理性能都相同,不关注每台服务器的当前连接数和响应速度。当请求服务间隔时间变化比较大时,轮询调度算法容易导致服务器间的负载不平衡。所以,此种均衡算法适合于服务器组中的所有服务器都有相同的软硬件配置并且平均服务请求相对均衡的情况。

DNS智能递归算法考虑到不同DNS递归服务器有不同的处理性能,采用了基于权重的轮询调度算法。由于每台服务器的配置、安装的业务应用等不同,其处理能力会不一样。所以,根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值数的服务请求。

假设有一组服务器S={S0,S1,…,Sn-1},W(Si)表示服务器Si的权值,一个指示变量i表示上一次选择的服务器,指示变量cw表示当前调度的权值,max(S)表示集合S中所有服务器的最大权值,gcd(S)表示集合S中所有服务器权值的最大公约数。变量i初始化为-1,cw初始化为零。

主要算法流程如图所示。

通过智能递归技术,可以有效调动不同能力的服务器资源向外进行DNS递归查询,并结合缓存分片视图的联动,进一步提高了智能解析的准确性、高效性、高速性。