一种多节点协作的域名解析和缓存方法及系统的制作方法
【技术领域】
[0001]本发明涉及一种多节点协作的域名解析和缓存方法及系统,属于网络技术领域。
【背景技术】
[0002]DNS域名系统是互联网络的基础设施,它将域名和IP地址做映射解析,支撑着互联网络的正常运行。其中,递归域名服务器作为域名系统的重要角色,为客户端向各级权威服务器发送域名解析请求,并最终完成域名解析请求。
[0003]为了提高递归域名服务的服务质量和抵御DDOS攻击,递归服务提供商会在不同的地理位置和网络运营商部署很多服务节点,这样就能够将用户解析请求流量分散到不同的节点上,希望是接近用户的节点上。通过BGP和IP anycast技术,广播一个或几个IP地址,并通过这些地址对外提供递归解析服务。递归用户只要配置了这个(些)地址,就可以使用递归服务。不同地理位置、不同网络的递归用户被互联网络的路由系统路由映射到了分散在不同地域、不同网络运营商的服务节点。
[0004]路由到的节点不管是在地理距离,还是在网络距离上都可能不是最优的,甚至可能是较差的。因此递归服务器不能更好地代表最终用户,如果某个区的权威服务器根据递归服务器的来源和解析数据分配策略,对不同的递归服务器响应不同的域名数据,那么由此递归服务器就将较差的数据返回给最终用户。当一个用户的解析请求被路由到一个较远的节点,而不是离他较近的节点时,他可能获得较差的解析数据,并因此访问了目标DNS应用的一个服务质量相对不理想的站点,用户的网络体验将受影响。
【发明内容】
[0005]本发明的目的是提供一种多节点协作的域名解析和缓存方法及系统,解决以上提到的“用户就远”的问题,减少权威递归请求的次数,提高缓存数据的利用率。
[0006]由于递归服务的各个服务节点是相互孤立的;虽然各个节点作为一个整体对外服务,但是实际上它们就像很多孤岛一样,各自独立做递归解析,没有进行充分的信息交流,没有很好的协同工作。例如,它们的缓存数据也是独享的、彼此重复的、低利用率的。如果递归服务的多个节点能够很好的协同工作,就可以解决“用户就远”的问题,也可以提高缓存的利用率,从而提高服务质量。
[0007]本发明的技术方案为:
[0008]—种多节点协作的域名解析和缓存方法,其步骤为:当服务节点接收到一域名解析请求时,判断该域名解析请求是否属于该服务节点解析,如果是,则在本地缓存中查找该域名解析请求类型的资源记录集,如果找到则将其返给发出该域名解析请求的客户端,如果没有找到则进行递归解析,将获得的数据返回给发出该域名解析请求的客户端并保存到本地缓存,如果该域名解析请求不属于该服务节点解析,则将该域名解析请求转发给距离发出该域名解析请求客户端最近的服务节点进行解析。
[0009]进一步的,根据该域名解析请求的来源IP地址信息和路由探测信息判断该域名解析请求是否属于该服务节点解析。
[0010]进一步的,判断该域名解析请求归属哪个服务节点解析的方法为:用户归属计算集群周期性地对访问递归服务的来源地址进行分析,分析每个地址的归属节点,从而形成一个来源地址与部署的服务节点相关联的档案;服务节点根据该档案判断该域名解析请求归属哪个服务节点解析。
[0011]进一步的,计算距离发出该域名解析请求客户端最近的服务节点的方法为:服务节点根据该域名解析请求的IP地址获得发出该域名解析请求客户端的AS号、运营商信息和地址位置信息,然后根据这些信息计算得到距离最近的服务节点,根据该域名解析请求客户端的AS号离各个服务节点所在AS号的BGP路径,找出路径长度最短的服务节点,作为最近的服务节点;看该用户所在运营商与各个服务节点的运营商的关系,选择一个与用户所在运营商相同或者运营商关系更加紧密的节点作为离该用户最近的服务节点,因为关系更加紧密的互联互通性要相对更好;看该用户所在地理位置与各个服务节点的地理位置,选择一个离用户位置较近的节点作为离该用户最近的服务节点。
[0012]进一步的,计算距离发出该域名解析请求客户端最近的服务节点的方法为:服务节点上探测到发出该域名解析请求客户端所经过路径上的路由器的IP地址,获取所有服务节点到发出该域名解析请求客户端的所有链路,然后选取链路最短的起始服务节点作为该域名解析请求的最近服务节点。
[0013]进一步的,服务节点通过向客户端与服务器节点所经过路径上的路由器的IP地址发送ICMP包、UDP或TCP包,获取了各服务节点到该客户端的所有链路。
[0014]进一步的,服务节点根据域名解析请求中的域名、请求类、请求类型,查看本地缓存中是否有目标资源记录类型。
[0015]—种多节点协作的域名解析和缓存系统,其特征在于,每一服务节点上均设有查询处理模块、归属判断模块、缓存模块、解析模块、请求转发模块和档案同步模块;其中:
[0016]所述查询模块,用于接收客户端的域名解析请求,以及发送递归查询请求并接收查询结果数据;
[0017]归属判断模块,用于判断收到的域名解析请求是否归属本服务节点,如果归属本节点,则向缓存模块发送域名数据查询;否则向查询模块发送递归查询请求;
[0018]解析模块,用于接收递归查询请求,向相关权威服务器做迭代查询,以及将查询获得的DNS数据发送给缓存模块;
[0019]缓存模块,用于接收查询模块和递归查询模块的查询请求,返回查找到相应数据;以及缓存收到的DNS数据;
[0020]档案同步模块,用于接收归属判断模块的请求,并向其他服务节点发送用户的归属信息,以及接收其他服务节点发送来的用户归属信息;
[0021]请求转发模块,用于接收查询模块的转发请求,将待转发的域名解析请求发送给指定服务节点。
[0022]进一步的,所述归属判断模块周期性地对域名解析请求的来源地址进行分析,将其与部署的服务节点相关联,然后将关联信息保存成一档案;以及根据该档案判断域名解析请求的来源地址判断该域名解析请求是否归所在服务节点解析。
[0023]进一步的,所述请求转发模块根据域名解析请求的IP地址获得发出该域名解析请求客户端的地理位置信息,然后根据该地理位置信息计算得到距离最近的服务节点,即指定的服务节点。
[0024]与现有技术相比,本发明的优点:
[0025]本发明站在权威服务器的角度,离用户更近的节点更能代表用户,节点更能为用户获得更加优质的域名解析数据:
[0026](I)将DNS用户与服务节点相关联,为每个用户指定离他最近的节点,并将其访问流量转发到最近节点上。
[0027](2)在递归服务使用网络层BGP和IP anycast技术下,接收到转发数据包的节点代替转发节点为用户提供更加优质的服务。
【附图说明】
[0028]图1为本发明的架构示意图;
[0029]图2为本发明的方法流程图;
[0030]图3为本发明的系统模块图。
【具体实施方式】
[0031]本发明方案如图1所示,将用户的解析请求发送给离用户更近的节点,接收到的节点为此请求做递归解析并直接应答该用户请求。具体来说,当一个服务节点接收到用户的请求时,如果发现存在一个离该用户更近的节点,那么就将该请求转发给那个节点,那个节点接收到请求后做递归解析,并将获取的应答数据直接返回给用户。
[0032]如图2所示,当接收到某个客户端的递归解析请求时,具体解析步骤如下:
[0033](I)判断该用户的域名解析请求是不是应该在本节点解析,如果是就跳转到(3);否则就跳转到(2)。
[0034](2)通过一定的方式计算和获取该请求应该去的节点,如果能够获取到,将DNS请求信息通过一定的方式发送给它并退出,否则,就转到(3)。
[0035](3)在本地缓存中查找该域名请求类型的资源记录集,如果有就将其返回给客户端并退出;否则就进行递归解析,获得数据并将其应答,并将其保存到本地缓存。
[0036]作为接收到转发DNS请求的节点,具体解析步骤如下:当那个节点接收到其他节点转发过来的数据包时,就根据数据包中的请求信息查找缓存,如果有就直接将其返回给用户;否则,就做递归解析,将获取的数据返回给用户,并将其保存到本地缓存。然后退出。
[0037]4.1解析节点归属
[0038]用户的解析请求归属哪个(些)节点要依据来源IP地址信息和路由探测信息等。综合考虑这些信息,分析用户应该在哪个(些)节点解析。当一个节点接受到一个不归属本节点的DNS请求时,就要将其转发到到另外一个(些)服务质量相对更好的节点。
[0039]用于收集递归服务器用户来源地址的方法:(I)通过收集各个服务节点的解析日志,并从中收集递归用户的来源地址;(2)在路由设备、防火墙、服务器或者节点流量链路上部署流量采集程序或者硬件,并从中收集递归用户的来源地址;(3)签订业务合同或者注册使用DNS服务的用户来源地址。这些方法并不互相排斥,而是互为补充,可以采用一种或者多种。
[0040]一个用户的解析请求归属于哪个节点负责,即用户归属的计算,按照是否实时,可分为一一线下计算、实时计算或者两者相互结合完成。线下计算是周期性地将访问递归服务的来源地址进行分析,分析每个地址的归属节点,从而形成一个来源地址与部署的服务节点相关联的档案。实时计算是当用户请求时才计算该用户的归属节点。两者要相互结合,才会有较高的效率和准确性。在服务的用户中,有一些用户是稳定的用户,它们可以通过线下计算的方式算得,从而避免了实时计算带来的时间浪费。与此同时,不断会有新用户使用本发明的递归服务,在档案中并没有,那么就在接收到的节点提供服务。