Dns递归方法及其系统的制作方法

文档序号:7795147阅读:329来源:国知局
Dns递归方法及其系统的制作方法
【专利摘要】本发明提供一种DNS递归方法及其系统,属于计算机域名解析【技术领域】。该方法包括:接收来自客户端的域名解析请求;查询在一级缓存模块有没有缓存与域名信息对应的域名解析响应,若没有,则将域名解析请求发送至二级共享缓存模块;查询二级共享缓存模块有没有缓存与域名信息对应的域名解析响应,若没有,则将域名解析请求发送至递归查询模块;递归查询模块接收来自权威服务器针对域名信息进行域名解析操作后得到的域名解析响应,并将域名解析响应发送给二级共享缓存模块;二级共享缓存模块缓存并发送该域名解析响应至一级缓存模块,一级缓存模块缓存并发送该域名解析响应至客户端。
【专利说明】DNS递归方法及其系统
【技术领域】
[0001]本发明属于计算机域名解析【技术领域】,具体涉及一种DNS递归方法及其系统。
【背景技术】
[0002]目前计算机域名系统或域名解析服务器(Domain Name System,简称DNS)主要是由运营商部署,并为自己的客户端提供免费的DNS解析服务。当前的互联网规模在客户端数量和域名数量上都是亿级别的,为了应对这样的查询量,一般的部署方式是采用多个单机的DNS服务器,以轮转的方式来实现负载均衡,从而提高服务能力。
[0003]图1为现有技术中的多个单机的DNS服务器查询过程,如图1所示,当客户端访问某个域名时,向本地DNS服务器发送解析请求,本地DNS服务器根据客户端查询的域名,首先查看该域名是不是被查询过,且没有过期,如果存在就直接把缓存的结果发给客户端,如果不存在或是缓存过期就向权威服务器发送DNS请求,通过对权威服务器的域名树的迭代查询最后找到客户端需要的域名,返回给客户端并将本次查找的结果缓存下来。
[0004]多个单机的DNS服务器查询过程存在以下缺陷:由于各台DNS服务器的缓存是独立的,则根据查询域名的特点,每台DNS服务器缓存的内容将大致相同。这种缓存间相互独立的部署,一方面导致数据出现极大的冗余性,浪费内存;另一方面由于单机内存容量的限制,导致很多域名无法存储在缓存中,因此需要消耗DNS服务器资源和时间去做递归查询,从而严重影响了 DNS服务器的性能。

【发明内容】

[0005]本发明提供一种DNS递归方法及其系统,通过采用共享内存的方式,提高了缓存容量和缓存命中率,进一步提高了 DNS服务器的性能。
[0006]为实现上述目的,本发明提供一种DNS递归方法,该DNS递归方法包括:
[0007]接收来自客户端的域名解析请求;
[0008]查询在一级缓存模块有没有缓存与域名信息对应的域名解析响应,若没有,则利用一致性哈希映射算法将所述域名解析请求发送至二级共享缓存模块中与该域名相应的DNS服务器;
[0009]查询二级共享缓存模块中相应的DNS服务器有没有与所述域名信息对应的域名解析响应,若没有,则将所述域名解析请求发送至递归查询模块;
[0010]递归查询模块接收所述二级共享缓存模块发送的域名解析请求,向权威服务器进行迭代查询获取域名解析响应,并将查询到的对应的域名解析响应发送给所述二级共享缓存模块;
[0011]二级缓存共享模块缓存并发送该域名解析响应至一级缓存模块,一级缓存模块缓存并发送该域名解析响应至所述客户端。
[0012]进一步地,所述二级共享缓存模块包括多个DNS服务器,所述多个DNS服务器分布式缓存与域名信息对应的域名解析响应:采用一致性哈希算法,将域名及所述多个DNS服务器映射至哈希环上,并沿着顺时针方向从域名的哈希值出发,直到遇见一个服务器的哈希值,将该域名对应的域名解析响应存储在该服务器上,完成所有域名解析响应到服务器的映射。
[0013]进一步地,一级缓存模块和二级共享缓存模块还用于预取本模块的缓存数据,在缓存过期前的一段时间内刷新缓存数据。
[0014]进一步地,该DNS递归方法还包括:
[0015]在一级缓存模块缓存有与所述域名信息对应的域名解析响应时,将所述域名解析响应发送给所述客户端。
[0016]进一步地,该DNS递归方法还包括:
[0017]在二级共享缓存模块缓存有与所述域名信息对应的域名解析响应时,将所述域名解析响应发送给一级缓存模块,一级缓存模块缓存该域名解析响应并将所述域名解析响应发送给所述客户端。
[0018]为实现上述目的,本发明提供一种DNS递归系统,包括:
[0019]查询处理模块,接收来自客户端的域名解析请求;
[0020]一级缓存模块,用于在一级缓存模块没有缓存与域名信息对应的域名解析响应时,则利用一致性哈希映射算法将所述域名解析请求发送至二级共享缓存模块中与该域名相应的DNS服务器;
[0021]二级共享缓存模块,用于在二级共享缓存模块中相应的DNS服务器没有与所述域名信息对应的域名解析响应时,则将所述域名解析请求发送至递归查询模块,以及在二级共享缓存模块中相应的DNS服务器缓存有与所述域名信息对应的域名解析响应时,发送该域名解析响应至一级缓存模块,一级缓存模块缓存并发送该域名解析响应至所述客户端;
[0022]递归查询模块,用于接收所述二级共享缓存模块发送的域名解析请求,向权威服务器进行迭代查询获取域名解析响应,并将查询到的对应的域名解析响应发送给所述二级共享缓存模块。
[0023]进一步地,所述查询处理模块还用于在一级缓存模块中缓存有对应的域名解析响应时,则将所述域名解析响应发送至客户端。
[0024]进一步地。所述二级共享缓存模块包括多个DNS服务器,所述多个DNS服务器分布式缓存与域名信息对应的多个域名解析响应。
[0025]进一步地,还包括:控制模块,用于实时将域名和二级共享缓存模块的对应关系通知所述查询处理模块。
[0026]进一步地,还包括:通信模块,用于建立查询处理模块、缓存模块、递归查询模块和控制模块之间的通信。
[0027]进一步地,所述一级缓存模块和二级共享缓存模块分为DNS数据包缓存和DNS资源记录的缓存以及否定缓存,数据包的缓存共享资源记录的缓存。
[0028]本发明提供的DNS递归方法及其系统,通过设置二级共享缓存模块,采用分布式缓存数据实现内存共享,使得每台DNS服务器的缓存数据相互共享,降低缓存数据冗余,节约内存,提高了缓存数据容量和缓存命中率,该提高了查询效率,提升了用户的上网体验。
【专利附图】

【附图说明】[0029]图1为现有技术中多个单机的DNS服务器查询过程示意图;
[0030]图2为本发明实施例一提供的DNS递归方法的流程示意图;
[0031]图3为本发明实施例二提供的DNS递归系统的结构示意图;
[0032]图4为实施例二中的域名映射到DNS服务器的示意图;
[0033]图5为图4中域名映射到DNS服务器的流程示意图;
[0034]图6为DNS递归系统的应用示意图。
【具体实施方式】
[0035]为使本领域技术人员更好地理解本发明的技术方案,下面结合附图和【具体实施方式】对本发明作进一步详细描述。
[0036]图2为本发明实施例一提供的DNS递归方法的流程示意图,如图2所示,该DNS递归方法包括:
[0037]步骤S201、接收来自客户端的域名解析请求,所述域名解析请求中携带域名信息。
[0038]具体地,客户端需要访问某一网站时,就会向DNS服务器发送域名解析请求,该域名解析请求中携带了该网站的域名信息。
[0039]步骤S202、查询在一级缓存模块有没有缓存与域名信息对应的域名解析响应,若没有,则利用一致性哈希映射算法将所述域名解析请求发送至二级共享缓存模块中与该域名相应的DNS服务器。
[0040]具体地,客户端向DNS服务器发送域名解析请求时,该域名解析请求中携带了该网站的域名信息,首先查询一级缓存模块,也即本地缓存,在域名信息在一级缓存模块缓存有与所述域名信息对应的域名解析响应时,将域名解析请求响应发送给客户端;在本地缓存没有缓存与域名信息对应的域名解析响应时,向域名对应的二级共享缓存模块发送查询请求。其中,一级缓存模块和查询模块设置在DNS服务器中,并保持和记录topn的热点域名,一级缓存模块不共享内存。
[0041]步骤S203、查询二级共享缓存模块中相应的DNS服务器有没有与所述域名信息对应的域名解析响应,若没有,则将所述域名解析请求发送至递归查询模块。
[0042]具体地,在二级共享缓存模块缓存有与域名信息对应的域名解析响应时,将域名解析响应发送给一级缓存模块,一级缓存模块缓存该域名解析响应并将域名解析响应发送给客户端;在二级共享缓存模块没有缓存与域名信息对应的域名解析响应时,则将域名解析请求发送至递归查询模块。
[0043]步骤S204、递归查询模块接收所述二级共享缓存模块发送的域名解析请求,向权威服务器进行迭代查询获取域名解析响应,并将查询到的对应的域名解析响应发送给所述
二级共享缓存模块。
[0044]具体地,递归查询模块将域名解析请求发送至权威服务器,权威服务器针对域名信息进行域名解析操作后得到的域名解析响应,并将域名解析响应发送给二级共享缓存模块。
[0045]步骤S205、二级缓存共享模块发送该域名解析响应至一级缓存模块,一级缓存模块该域名解析响应并将所述域名解析响应发送给所述客户端。
[0046]具体地,二级共享缓存模块缓存并发送该域名解析响应至一级缓存模块,一级缓存模块缓存并发送该域名解析响应至所述客户端。
[0047]优选地,二级共享缓存模块包括多个DNS服务器,所述多个DNS服务器中缓存有与域名信息对应的多个域名解析响应。二级共享缓存模块包括多个DNS服务器,所述多个DNS服务器分布式缓存与域名信息对应的域名解析响应:采用一致性哈希算法,将域名及所述多个DNS服务器映射至哈希环上,并沿着顺时针方向从域名的哈希值出发,直到遇见一个服务器的哈希值,将该域名对应的域名解析响应存储在该服务器上,完成所有域名解析响应到服务器的映射。
[0048]本实施例中,采用一致性哈希算法,将所述多个DNS服务器和所述多个域名解析响应映射至哈希环上,并将所述多个域名解析响应在所述多个DNS服务器中。
[0049]优选地,一级缓存模块和二级共享缓存模块还用于预取本模块的缓存数据,在缓存过期前的一段时间内刷新缓存数据,以提高缓存命中率。
[0050]优选地,在一级缓存模块缓存有与所述域名信息对应的域名解析响应时,将所述域名解析响应发送给所述客户端。在二级共享缓存模块缓存有与所述域名信息对应的域名解析响应时,将所述域名解析响应发送给一级缓存模块,一级缓存模块缓存该域名解析响应并将所述域名解析响应发送给所述客户端。
[0051]进一步地,一级缓存模块包括数据包缓存、资源记录缓存和否定缓存,二级共享缓存模块包括数据包缓存、资源记录缓存和否定缓存。否定缓存使DNS服务器不必频繁查询不存在的域名,降低DNS服务器的响应时间。优选地,数据包缓存共享资源记录缓存。从而最大限度的利用了内存,达到高缓存利用率,提高了域名解析的查询效率,进一步提高了DNS服务器的性能。
[0052]本实施例提供的DNS递归方法,通过设置二级共享缓存模块,采用分布式缓存数据实现内存共享,使得每台DNS服务器的缓存数据相互共享,降低缓存数据冗余,节约内存,提高了缓存数据容量和缓存命中率,该提高了查询效率,提升了用户的上网体验。
[0053]图3为本发明实施例二提供的DNS递归系统的结构示意图,如图3所示,该DNS递归系统包括:查询处理模块301、一级缓存模块3021、二级共享缓存模块3022、递归查询模块303、控制模块304和通信模块305。
[0054]其中,查询处理模块301,用于接收客户端的域名解析请求,并将查询到的对应的域名解析响应发送至客户端。优选地,查询处理模块301还用于在一级缓存模块3021中缓存有对应的域名解析响应时,则将所述域名解析响应发送至客户端。
[0055]一级缓存模块3021,用于在一级缓存模块3021没有缓存与域名信息对应的域名解析响应时,则利用一致性哈希映射算法将所述域名解析请求发送至二级共享缓存模块3022中与该域名相应的DNS服务器。
[0056]二级共享缓存模块3022,用于在二级共享缓存模块3022中相应的DNS服务器没有与所述域名信息对应的域名解析响应时,则将所述域名解析请求发送至递归查询模块303,以及在二级共享缓存模块3022中相应的DNS服务器有与所述域名信息对应的域名解析响应时,发送该域名解析响应至一级缓存模块3021,一级缓存模块3021该域名解析响应并将所述域名解析响应发送给所述客户端。二级共享缓存模块包括多个DNS服务器,所述多个DNS服务器分布式缓存与域名信息对应的多个域名解析响应。
[0057]递归查询模块303,用于接收二级共享缓存模块3022发送的域名解析请求,向权威服务器进行迭代查询获取域名解析响应,并将查询到的对应的域名解析响应发送给二级共享缓存模块3022。
[0058]控制模块304,采用一致性哈希算法,用于将多个DNS服务器和多个域名解析响应映射至哈希环上,并完成多个域名解析响应映射到多个DNS服务器中
[0059]通信模块305,用于建立查询模块301、缓存模块302、递归查询模块303和控制模块304之间的通信。
[0060]一级缓存模块3021和二级共享缓存模块3022还用于在缓存过期前预取和刷新缓存;
[0061]进一步地,一级缓存模块3021和二级共享缓存模块3022包括数据包缓存、资源记录缓存和否定缓存,数据包缓存共享资源记录缓存。
[0062]本实施例中,客户端向查询处理模块301发出域名解析请求,查询处理模块301接收客户端的域名解析请求,查询判断一级缓存模块3021是否有对应的域名解析响应,若是,则应答客户端,若否,则向域名对应的二级共享缓存模块3022发送域名解析请求,二级共享缓存模块3022查询判断缓存共享资源是否有对应的域名解析响应记录,若是,则将对应的域名解析响应记录返回给一级缓存模块3021,一级缓存模块3021缓存该对应的域名解析响应记录并发送给客户端,若否,则向递归查询模块303发送查询请求,递归查询模块303向权威服务器进行迭代查询,并将查询对应的域名解析响应结果返回给二级共享缓存模块3022,二级共享缓存模块3022缓存该对应的域名解析响应记录,并将其返回给一级缓存模块3021,一级缓存模块3021缓存该对应的域名解析响应记录并发送给客户端,自此,完成对客户端发出的域名解析请求的响应。
[0063]进一步地,控制模块304采用一致性哈希算法。作为整个系统的用户接口,部署在中心节点上,负责所有模块的配置和控制,执行节点管理和监控,包括增加节点和删除节点,控制缓存数据分配到各个缓存模块中,实时将域名和缓存模块的对应关系通知查询模块。
[0064]图4为实施例二中的域名映射到DNS服务器的示意图,图5为图4中域名映射到DNS服务器的流程示意图,如图4所示和图5所示,一致性哈希算法实现数据分布式缓存技术的步骤包括:
[0065]步骤501、设置哈希函数的值空间。
[0066]具体地,设哈希函数H的值空间为0-2~n_l (即哈希值是一个η位无符号整形),将整个哈希值空间想象成一个首尾相接的圆环。
[0067]步骤502、将DNS服务器应映射至哈希环上。
[0068]具体地,将各个服务器使用哈希函数计算一个哈希值,可以选择DNS服务器的IP或主机名作为关键字进行哈希,这样每台DNS服务器就能确定其在哈希环上的位置。
[0069]步骤503、将域名解析响应映射至哈希环上。
[0070]具体地,对域名解析响应进行哈希值计算,将域名解析响应映射到哈希环上。
[0071]步骤504、将域名解析响应缓存至DNS服务器中。
[0072]具体地,在服务器和域名都已经通过同一个哈希函数映射到哈希值空间后,接着如果沿着顺时针方向从域名的哈希值出发,直到遇见一个服务器的哈希值,则将该域名的记录存储在该服务器上,如此完成所有域名记录到服务器的映射。[0073]进一步地,控制模块可以进行节点管理,节点管理包括增加节点或者删除节点。具体地,增加节点包括:若添加一台新的服务器,控制模块将对该服务器计算一个哈希值映射到哈希环上,假设映射到图5中server2和server3之间的A位置,这时映射到server2和A之间的域名将从之前存储到server3上改存储到新增的server上,而A到server3之间的域名仍存储到serverf上,其他原有的服务器存储的域名记录均不变,即受影响的仅是新增服务器的下一个服务器。此时,控制模块可以将存储在serverf上的serverf和A之间的域名记录搬移到新增服务器上。对应地,删除节点包括:假设图5中的serverf宕机了,此时存储在server3上的域名记录将存储到server3上,其他服务器不变。
[0074]本实施例提供的DNS递归系统,通过设置二级共享缓存模块,采用分布式缓存数据实现内存共享,使得每台DNS服务器的缓存数据相互共享,降低缓存数据冗余,节约内存,提高了缓存数据容量和缓存命中率,该提高了查询效率,提升了用户的上网体验。
[0075]图6为DNS递归系统的应用示意图,如图6所示,该DNS递归系统包括:DNS服务器和权威服务器,DNS服务器包括一级缓存模块、二级共享缓存模块和递归查询模块,DNS服务器接收来自客户端的域名解析请求,域名解析请求中携带域名信息,查询在一级缓存模块有没有缓存与域名信息对应的域名解析响应,若没有,则将域名解析请求发送至二级共享缓存模块;查询二级共享缓存模块有没有缓存与域名信息对应的域名解析响应,若没有,则将域名解析请求发送至递归查询模块,递归查询模块将域名解析请求发送至权威服务器,权威服务器针对域名信息进行解析操作后发送给二级共享缓存模块,二级共享缓存模块保存并发送域名解析响应至一级缓存模块,一级缓存模块保存并发送该域名解析响应至客户端,自此,完成对客户端发出的域名解析请求的响应。
[0076]本发明提供的DNS递归系统,通过设置二级共享缓存模块。采用内存共享的方式,使得每台DNS服务器的缓存数据相互共享,降低缓存数据冗余,节约内存,提高了缓存容量和缓存命中率,从而提高了 DNS服务器的性能。
[0077]可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。
【权利要求】
1.一种DNS递归方法,其特征在于,包括: 接收来自客户端的域名解析请求; 查询在一级缓存模块有没有缓存与域名信息对应的域名解析响应,若没有,则利用一致性哈希映射算法将所述域名解析请求发送至二级共享缓存模块中与该域名相应的DNS服务器; 查询二级共享缓存模块中相应的DNS服务器有没有与所述域名信息对应的域名解析响应,若没有,则将所述域名解析请求发送至递归查询模块; 递归查询模块接收所述二级共享缓存模块发送的域名解析请求,向权威服务器进行迭代查询获取域名解析响应,并将查询到的对应的域名解析响应发送给所述二级共享缓存模块; 二级缓存共享模块缓存并发送该域名解析响应至一级缓存模块,一级缓存模块缓存并发送该域名解析响应至所述客户端。
2.根据权利要求1所述的DNS递归方法,其特征在于,所述二级共享缓存模块包括多个DNS服务器,所述多个DNS服务器分布式缓存与域名信息对应的域名解析响应:采用一致性哈希算法,将域名及所述多个DNS服务器映射至哈希环上,并沿着顺时针方向从域名的哈希值出发,直到遇见一个服务器的哈希值,将该域名对应的域名解析响应存储在该服务器上,完成所有域名解析响应到 服务器的映射。
3.根据权利要求2所述的DNS递归方法,其特征在于,一级缓存模块和二级共享缓存模块还用于预取本模块的缓存数据,在缓存过期前的一段时间内刷新缓存数据。
4.根据权利要求1所述的DNS递归方法,其特征在于,该方法还包括: 在一级缓存模块缓存有与所述域名信息对应的域名解析响应时,将所述域名解析响应发送给所述客户端。
5.根据权利要求1所述的DNS递归方法,其特征在于,该方法还包括: 在二级共享缓存模块缓存有与所述域名信息对应的域名解析响应时,将所述域名解析响应发送给一级缓存模块,一级缓存模块缓存该域名解析响应并将所述域名解析响应发送给所述客户端。
6.一种DNS递归系统,其特征在于,包括: 查询处理模块,接收来自客户端的域名解析请求; 一级缓存模块,用于在一级缓存模块没有缓存与域名信息对应的域名解析响应时,则利用一致性哈希映射算法将所述域名解析请求发送至二级共享缓存模块中与该域名相应的DNS服务器; 二级共享缓存模块,用于在二级共享缓存模块中相应的DNS服务器没有与所述域名信息对应的域名解析响应时,则将所述域名解析请求发送至递归查询模块,以及在二级共享缓存模块中相应的DNS服务器缓存有与所述域名信息对应的域名解析响应时,发送该域名解析响应至一级缓存模块,一级缓存模块缓存并发送该域名解析响应至所述客户端; 递归查询模块,用于接收所述二级共享缓存模块发送的域名解析请求,向权威服务器进行迭代查询获取域名解析响应,并将查询到的对应的域名解析响应发送给所述二级共享缓存模块。
7.根据权利要求6所述的DNS递归系统,其特征在于,所述查询处理模块还用于在一级缓存模块中缓存有对应的域名解析响应时,则将所述域名解析响应发送至客户端。
8.根据权利要求7所述的DNS递归系统,其特征在于,所述二级共享缓存模块包括多个DNS服务器,所述多个DNS服务器分布式缓存与域名信息对应的多个域名解析响应。
9.根据权利要求8所述的DNS递归系统,其特征在于,还包括:控制模块,用于实时将域名和二级共享缓存模块的对应关系通知所述查询处理模块。
10.根据权利要求9所述的DNS递归系统,其特征在于,还包括:通信模块,用于建立查询处理模块、缓存模块、递归查询模块和控制模块之间的通信。
11.根据权利要求6所述的DNS递归系统,其特征在于,所述一级缓存模块和所述二级共享缓存模块分为DNS数据包缓存和DNS资源记录的缓存以及否定缓存,数据包的缓存共享资源记录的缓存。`
【文档编号】H04L29/12GK103701957SQ201410015983
【公开日】2014年4月2日 申请日期:2014年1月14日 优先权日:2014年1月14日
【发明者】韩枫, 蒋超, 陈政璋, 刘贵荣 申请人:互联网域名系统北京市工程研究中心有限公司, 北龙中网(北京)科技有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1