域名解析的方法和装置与流程

文档序号:21102242发布日期:2020-06-16 20:55阅读:280来源:国知局
域名解析的方法和装置与流程

本发明涉及计算机技术领域,尤其涉及一种域名解析的方法和装置。



背景技术:

域名是由标签和点号“.”间隔组成的树型结构。全体域名构成了域名空间,域名空间可以看做是一颗由域名标签逆向生长的树,树的根节点是长度为0的空标签。一个节点所代表的域名是从节点本身开始,沿路径向上并由点号分隔路径上各个标签生成的字符串,域名空间中任意一颗子树可以被称作域。

目前,几乎所有需要网络连接的应用都会依赖域名解析服务(dns)。域名解析服务通常作为一次网络连接的先导,将人们便于记忆和理解的计算机名称解析成计算机设备适合处理的网络地址。dns的解析数据被分布式存储,不同域名的解析数据可能存储在不同的服务器上并被不同的主体管理。同一个域的域名的解析数据可以归类在一起并形成一个区域,一个区域由一台服务器管理。该域的子域的解析数据管理能够被该域的管理主体授权给另一主体,形成新的区域,存储在另一台服务器中。存储了区域解析数据的dns服务器称作对应的域的权威dns服务器。

同时,从连通范围的角度,网络又可以被分为公网和内部网络,在不同类型的网络中部署域名解析服务,存在着不同的要求。随着网络规模越来越大,内网不再局限于企业内部的办公网络,更发展为企业对外提供服务的生产网络,甚至在云计算服务蓬勃发展的当下,部署云环境的网络也成为了内网。

在实际网络应用中,处于内部网络中的主机需要访问公网中的网络服务,同时也需要访问同一内网其他主机所提供的服务,所以内部网络中所部署dns服务需要能同时支持这两部分域名的解析,因此,内部网络的dns服务部署通常有三个目的:内部网络中的主机能够通过该dns服务获取公网域名的解析结果;内部网络中的主机能够通过该dns服务获取内网域名的解析结果;dns服务能够减小对外dns服务产生的流量,并减轻网络压力。

现有技术在部署内网dns服务时,一般是通过部署开源dns服务,来实现内网dns服务部署的三个目。随着内网规模的扩大和业务调用的增加,为满足这些改变对dns服务性能要求,现有的技术是增加权威dns服务器的数量,同时通过加入负载均衡设备或者与接入交换机之间通过链路状态路由协议(ospf协议)发布虚拟互联网协议地址(ip)。

在实现本发明过程中,发明人发现现有技术中至少存在如下问题:

1.权威解析、递归解析和缓存解析性能较差,无法满足内网规模增大和业务调用增加面带来的dns服务需求;

2.通过硬件资源的堆叠来提高dns服务性能,则提高了网络的复杂程度和网络运维的成本。



技术实现要素:

有鉴于此,本发明实施例提供一种域名解析的方法和装置,能够提高dns服务性能;提高权威解析、递归解析和缓存解析的性能,降低网络的复杂程度和网络运维的成本。

为实现上述目的,根据本发明实施例的一个方面,提供了一种域名解析的方法。

本发明实施例的一种域名解析的方法包括:获取域名解析请求中的待解析域名;查询本地区域配置文件或本地缓存中是否存在所述待解析域名;若存在,则利用dpdkdns根据所述本地区域配置文件或所述本地缓存生成所述待解析域名的解析结果;若不存在,则利用递归dns基于所述待解析域名进行递归解析,得到所述待解析域名的解析结果。

可选地,获取域名解析请求中的待解析域名之前还包括:利用dpdkdns从网卡的消息队列获取dns数据包;其中,所述dns数据包携带有域名解析结果或域名解析请求;当所述dns数据包携带有所述域名解析结果时,利用所述dpdkdns将所述域名解析结果缓存至本地缓存。

可选地,获取域名解析请求中的待解析域名包括:当所述dns数据包携带有域名解析请求时,利用所述dpdkdns获取所述域名解析请求中的待解析域名。

可选地,利用递归dns基于所述待解析域名进行递归解析,得到所述待解析域名的解析结果包括:利用所述dpdkdns将所述dns数据包通过dpdk驱动发送至虚拟网口;利用递归dns通过内核协议栈监听所述虚拟网口,并从所述虚拟网口获取所述dns数据包;基于所述待解析域名的树型结构,利用所述递归dns通过所述dpdkdns和所述网卡的消息队列向外部发送dns数据包中携带的域名解析请求,以进行递归解析,得到所述待解析域名的解析结果。

可选地,得到所述待解析域名的解析结果之后还包括:将所述待解析域名的解析结果封装为dns数据包,并发送到所述网卡的消息队列。

可选地,利用dpdkdns根据所述本地区域配置文件或所述本地缓存生成所述待解析域名的解析结果包括:利用dpdkdns查询所述本地区域配置文件中是否存在所述待解析域名;若存在,则利用所述dpdkdns根据所述本地区域配置文件生成所述待解析域名的解析结果;若不存在,则在所述本地缓存中存在所述待解析域名时,利用所述dpdkdns根据所述本地缓存生成所述待解析域名的解析结果。

为实现上述目的,根据本发明实施例的另一方面,提供了一种域名解析的装置。

本发明实施例的一种域名解析的装置包括:获取模块,用于获取域名解析请求中的待解析域名;查询模块,用于查询本地区域配置文件或本地缓存中是否存在待解析域名;解析模块,用于在所述本地区域配置文件或所述本地缓存中存在所述待解析域名时,利用dpdkdns根据所述本地区域配置文件或所述本地缓存生成所述待解析域名的解析结果;递归模块,用于在所述本地区域配置文件或所述本地缓存中不存在待解析域名时,利用递归dns基于所述待解析域名进行递归解析,得到所述待解析域名的解析结果。

可选地,所述装置还包括缓存模块,所述缓存模块用于:利用dpdkdns从网卡的消息队列获取dns数据包;其中,所述dns数据包携带有域名解析结果或域名解析请求;当所述dns数据包携带有所述域名解析结果时,利用所述dpdkdns将所述域名解析结果缓存至本地缓存。

可选地,所述获取模块还用于:当所述dns数据包携带有域名解析请求时,利用所述dpdkdns获取所述域名解析请求中的待解析域名。

可选地,所述递归模块还用于:利用所述dpdkdns将所述dns数据包通过dpdk驱动发送至虚拟网口;利用递归dns通过内核协议栈监听所述虚拟网口,并从所述虚拟网口获取所述dns数据包;基于所述待解析域名的树型结构,利用所述递归dns通过所述dpdkdns和所述网卡的消息队列向外部发送dns数据包中携带的域名解析请求,以进行递归解析,得到所述待解析域名的解析结果。

可选地,所述装置还包括发送模块,所述发送模块用于:将所述待解析域名的解析结果封装为dns数据包,并发送到所述网卡的消息队列。

可选地,所述解析模块还用于:利用dpdkdns查询所述本地区域配置文件中是否存在所述待解析域名;若存在,则利用所述dpdkdns根据所述本地区域配置文件生成所述待解析域名的解析结果;若不存在,则在所述本地缓存中存在所述待解析域名时,利用所述dpdkdns根据所述本地缓存生成所述待解析域名的解析结果。

为实现上述目的,根据本发明实施例的又一方面,提供了一种域名解析的电子设备。

本发明实施例的一种域名解析的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例的一种域名解析的方法。

为实现上述目的,根据本发明实施例的再一方面,提供了一种计算机可读存储介质。

本发明实施例的一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例的一种域名解析的方法。

上述发明中的一个实施例具有如下优点或有益效果:因为采用获取域名解析请求中的待解析域名;查询本地区域配置文件或本地缓存中是否存在待解析域名;若存在,则利用dpdkdns根据本地区域配置文件或本地缓存生成待解析域名的解析结果;若不存在,则利用递归dns基于待解析域名进行递归解析,得到待解析域名的解析结果的技术手段,利用dpdkdns和递归dns共同提供dns服务,对内部网络的域名可以进行权威解析,对外部网络的域名可以进行缓存解析或递归解析,所以克服了权威解析、递归解析和缓存解析性能较差;网络的复杂程度和网络运维的成本较高的技术问题,进而达到在不增加相关设备的情况下,仍能够显著提升权威解析、递归解析和缓存解析的性能;减小对外dns服务产生的流量,并减轻网络压力;降低网络的复杂程度和网络运维的成本的技术效果。

上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。

附图说明

附图用于更好地理解本发明,不构成对本发明的不当限定。其中:

图1是根据本发明实施例的域名解析的方法的主要步骤的示意图;

图2是根据本发明一个可参考实施例的域名解析的方法的主要流程的示意图;

图3是根据本发明实施例的域名解析的方法的实现框架的示意图;

图4是根据本发明实施例的域名解析的方法的权威解析的消息交互的示意图;

图5是根据本发明实施例的域名解析的方法的递归解析的消息交互的示意图;

图6是根据本发明实施例的域名解析的方法的缓存解析的消息交互的示意图;

图7是根据本发明实施例的域名解析的方法的处理dns数据包的主要流程的示意图;

图8是根据本发明实施例的域名解析的装置的主要模块的示意图;

图9是本发明实施例可以应用于其中的示例性系统架构图;

图10是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。

具体实施方式

以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

需要指出的是,在不冲突的情况下,本发明的实施例以及实施例中的技术特征可以相互结合。

通常,dns的解析数据被分布式存储,不同域名的解析数据可能存储在不同的服务器上并被不同的主体管理。同一个域的域名的解析数据可以归类在一起并形成一个区域,一个区域由一台服务器管理。该域的子域的解析数据管理能够被该域的管理主体授权给另一主体,形成新的区域,存储在另一台服务器中。存储了区域解析数据的dns服务器称作对应的域的权威dns。

电脑等网络终端上的具备dns逻辑的程序可以称为dns客户端。由于dns客户端并不知道所请求域名对应的权威dns服务器的地址,所以还会部署dns服务,其ip地址可被dns客户端直接感知,dns客户端通过dns服务得到所请求域名的解析数据。在解析过程中,dns客户端对于任何域名的域名解析请求都会发送至dns服务,dns服务可以采用以下三种方式得到该域名的解析数据:

1、权威解析,dns服务根据所配置的本地区域配置文件做出解析应答,返回给dns客户端;

2、递归解析,当该域名所属域与根域的权威dns服务器不是同一个域时,根域的权威dns服务器根据域名的树型结构判断出被授权解析这个域的下一级权威dns服务器的地址,并告知dns服务,dns服务将会向下一级权威dns服务器发送该域名的域名解析请求,如果该域名的解析存在多层级的授权关系,上述过程将会迭代多次,最终dns服务将会获得该域名对应的权威dns服务器的地址并发起请求,该域名对应的权威dns服务器查询本地区域配置文件向dns服务做出解析应答,dns服务将解析应答中的解析数据返回给dns客户端;

3、缓存解析,dns服务缓存了该域名的解析数据,并根据缓存数据直接将解析数据返回给dns客户端。

权威解析、递归解析、缓存解析是域名解析的特性,各种软件实现对这些特性的支持和对应的性能各不相同。现有的dns服务主要有以下两种:

一、开源dns服务,例如bind(dns开源服务器)和powerdns(跨平台的开源dns服务组件),能够同时支持权威解析、递归解析和缓存解析,但是单节点解析性能普遍不高;

二、基于dpdk平台开发的dns服务,对dns数据包的处理绕过了内核协议栈,由dpdk驱动通过轮询方式直接操作网卡的接收和发送队列,并在用户态直接进行权威解析和缓存解析。但基于dpdk平台开发的dns服务主要着眼于性能和稳定性的提升,并不适于加入诸如递归解析这种消息交互次数多、会话状态复杂的强业务逻辑,同时由于该实现不涉及递归解析,其缓存保存的功能也就没有必要存在了。

在实际网络应用中,处于内部网络中的主机需要访问公网中的网络服务,同时也需要访问同一内网其他主机所提供的服务,所以内部网络中所部署的dns服务需要能同时支持这两部分域名的解析。因此内部网络部署dns服务通常有三个目的:其一,内部网络中的主机能够通过该dns服务获取公网域名的解析结果,即支持递归解析;其二,内部网络中的主机能够通过该dns服务获取内网域名的解析结果,即支持权威解析;其三,dns服务能够减小dns对外的流量,减轻网络压力,即支持缓存解析。

随着网络规模越来越大,内网不再局限于企业内部的办公网络,更发展为企业对外提供服务的生产网络,甚至在云计算服务蓬勃发展的当下,部署云环境的网络也成为了内网,数以万计的节点与服务不停地使用dns服务,对服务的解析性能提出了极高要求。其中,开源dns服务软件很难满足这些改变所带来的性能要求,只能增加权威dns服务器的数量,同时通过加入负载均衡设备或者与接入交换机之间通过ospf协议发布虚拟ip来提高dns服务性能,性能提升的比率与硬件成本增加的比率呈线性关系,即局限于硬件资源的堆叠;同时,权威dns服务器的增加,还提高了网络的复杂程度和网络运维的成本。而基于dpdk平台开发的dns服务,不具备递归解析能力、且在运行时不进行缓存解析,因此无法应用到内部网络。

本发明实施例的一种域名解析的方法,均遵从现有dns协议框架的要求,符合当前dns的运行机制,旨在使用最少的硬件设备,提高域名解析服务能力,同时达到内网部署dns服务的三个目的,满足内网的dns服务要求。因此,对于在内部网络中部署域名解析服务具有技术更新的意义,且对于大型或者业务繁忙的网络更具特殊意义。

图1是根据本发明实施例的域名解析的方法的主要步骤的示意图。

如图1所示,本发明实施例的域名解析的方法主要包括以下步骤:

步骤s101:获取域名解析请求中的待解析域名。

由于dns客户端并不知道所请求域名(即待解析域名)对应的权威dns服务器的地址,所以dns客户端需要通过dns服务得到所请求域名的解析数据。在解析过程中,dns客户端对于任何域名的域名解析请求都会发送至dns服务,dns服务从域名解析请求中获取待解析域名,以进行后续解析服务。

在本发明实施例中,执行步骤s101之前还可以包括:利用dpdkdns从网卡的消息队列获取dns数据包;当dns数据包携带有域名解析结果时,利用dpdkdns将域名解析结果缓存至本地缓存。

dpdkdns是基于dpdk平台开发的一种dns服务,dpdk平台是一种数据平面开发工具集,能够为处理器架构下用户空间高效的数据包处理提供库函数和驱动的支持,dpdk平台专注于网络应用中数据包的高性能处理,可以极大提高数据处理性能和吞吐量,提高数据平面应用程序的工作效率。dpdk平台会接管网卡的驱动,操作系统不能感知到网卡,进而也感知不到网卡上接收到和要发送的数据包,而网卡的状态、发送或接收了哪些数据包会被基于dpdk平台开发的进程(即dpdkdns)感知到,如果有数据包需要操作系统处理,则需要dpdk驱动,dpdk驱动对于操作系统而言类似于物理网卡的驱动,操作系统中建立网络接口,如果dpdk平台基于dpdk驱动向该网络接口的消息队列(即网卡的消息队列)写数据(dns数据包),操作系统可以在该网络接口读到数据(dns数据包),同样地,当操作系统向该网络接口中写数据,dpdk平台基于dpdk驱动也能够读取到数据。

dns数据包与网络中的其它数据包相同,是通过网卡的消息队列发送或接收的,其携带有域名解析结果或域名解析请求,如果dns数据包携带的是域名解析结果,则将域名解析结果缓存至本地缓存,以使dpdkdns能够实现缓存解析。网卡的消息队列可以是网卡的接收/发送队列,基于网卡的接收/发送队列实现dns数据包的接收和发送。

在本发明实施例中,步骤s101可以通过以下方式实现:当dns数据包携带有域名解析请求时,利用dpdkdns获取域名解析请求中的待解析域名。

如果dns数据包携带的是域名解析请求,可以利用dpdkdns获取待解析域名,以进行后续解析服务。

步骤s102:查询本地区域配置文件或本地缓存中是否存在待解析域名;若存在,则执行步骤s103;若不存在,则执行步骤s104。

步骤s103:利用dpdkdns根据本地区域配置文件或本地缓存生成待解析域名的解析结果;

步骤s104:利用递归dns基于待解析域名进行递归解析,并得到待解析域名的解析结果。

为了使内部网络部署的dns服务能够具备较好的权威解析、递归解析和缓存解析性能,本发明实施例的域名解析的方法利用dpdkdns和递归dns共同提供dns服务,且可以将内部网络的域名划分为一个或多个域名解析区域,对内部网络的域名可以进行权威解析,对外部网络的域名可以进行缓存解析或递归解析。其中,dpdkdns主要用于权威解析和缓存解析,dpdkdns对dns数据包的处理绕过了内核协议栈,由dpdk平台提供的dpdk驱动可以通过轮询方式直接操作网卡的接收和发送队列,并使dpdkdns能够在用户态直接处理dns数据包,减小了中断和内核协议栈带来的开销;递归dns是一种基于内核协议栈的开源dns服务,可以是bind或powerdns,递归dns主要用于递归解析。

通过dpdkdns使内部网络的dns服务的权威解析和缓存解析的性能得到提升,通过递归dns弥补了dpdkdns不具备递归解析的缺陷,从而使内部网络在不增加相关设备的情况下,显著提升权威解析、递归解析和缓存解析的性能。

在本发明实施例中,步骤s103可以通过以下方式实现:利用dpdkdns查询本地区域配置文件中是否存在待解析域名;若存在,则利用dpdkdns根据本地区域配置文件生成待解析域名的解析结果;若不存在,则在本地缓存中存在待解析域名时,利用dpdkdns根据本地缓存生成待解析域名的解析结果。

本地区域配置文件中记录了内部网络中的所有域名和域名所对应的网络地址。本发明实施例的域名解析的方法中,dpdkdns与权威dns服务器的作用相同,能够进行权威解析,即如果待解析域名属于dpdkdns所服务的内部网络,则可以在本地区域配置文件中找到对应的网络地址,整个流程不需要内核态的内核协议栈进行处理,解析性能有极大提升。如果待解析域名属于外部网络,则查询本地缓存,若本地缓存中存在待解析域名,则利用dpdkdns根据本地缓存生成待解析域名的解析结果,从而减小对外dns服务产生的流量,并减轻网络压力。

在本发明实施例中,步骤s104可以通过以下方式实现:利用dpdkdns将dns数据包通过dpdk驱动发送至虚拟网口;利用递归dns通过内核协议栈监听虚拟网口,并从虚拟网口获取dns数据包;基于待解析域名的树型结构,利用递归dns通过dpdkdns和网卡的消息队列向外部发送dns数据包中携带的域名解析请求,以进行递归解析,得到待解析域名的解析结果。

如果本地区域配置文件和本地缓存中均不存在待解析域名,则需要进行递归解析来得到待解析域名对应的网络地址。dpdkdns可以通过dpdk驱动向内核协议栈暴露虚拟网口,该虚拟网口可以作为dns服务端口,而递归dns可以通过内核协议栈监听虚拟网口,因此,可以利用dpdkdns将dns数据包通过dpdk驱动发送至虚拟网口,递归dns从dns服务端口获取dns数据包,并从dns数据包中获取域名解析请求,从而获取到域名解析请求中的待解析域名。

在进行递归解析时,可以根据待解析域名的树型结构得出被授权解析该待解析域名的下一级权威dns服务器的地址,递归dns通过内核协议栈、dpdk驱动、dpdkdns、环形缓冲区、网卡的消息队列向下一级权威dns服务器发送域名解析请求,即递归dns将域名解析请求通过内核协议栈和dpdk驱动发送给dpdkdns,dpdkdns将域名解析请求通过环形缓冲区和网卡的消息队列发送给下一级权威dns服务器,如果该域名的解析存在多层级的授权关系,上述过程将会迭代多次,最终递归dns将会获得该待解析域名对应的权威dns服务器的地址并发起请求,从而得到待解析域名的解析结果并返回给dns客户端。

在本发明实施例中,在生成待解析域名的解析结果之后,还可以将待解析域名的解析结果封装为dns数据包,并发送到网卡的消息队列。

由待解析域名的解析结果封装成的dns数据包,即为携带有域名解析结果的dns数据包,该dns数据包发送到网卡的消息队列后,网卡的消息队列将dns数据包返回至dns客户端,同时,dpdkdns可以将本次的域名解析结果缓存至本地缓存,以在再次收到该待解析域名的解析请求时能够进行缓存解析。由于进行递归解析时,消息会在内核态网络协议栈中进行处理和传递,有较大的系统开销,但在进行缓存解析时,与内核态网络协议栈无关联,性能近似于权威解析,使解析性能有极大提升。

根据本发明实施例的域名解析的方法可以看出,因为采用获取域名解析请求中的待解析域名;查询本地区域配置文件或本地缓存中是否存在待解析域名;若存在,则利用dpdkdns根据本地区域配置文件或本地缓存生成待解析域名的解析结果;若不存在,则利用递归dns基于待解析域名进行递归解析,得到待解析域名的解析结果的技术手段,利用dpdkdns和递归dns共同提供dns服务,对内部网络的域名可以进行权威解析,对外部网络的域名可以进行缓存解析或递归解析,所以克服了权威解析、递归解析和缓存解析性能较差;网络的复杂程度和网络运维的成本较高的技术问题,进而达到在不增加相关设备的情况下,仍能够显著提升权威解析、递归解析和缓存解析的性能;减小对外dns服务产生的流量,并减轻网络压力;降低网络的复杂程度和网络运维的成本的技术效果。

图2是根据本发明一个可参考实施例的域名解析的方法的主要流程的示意图。

如图2所示,本发明实施例的域名解析的方法可参考以下流程实施:

步骤s201:利用dpdkdns从网卡的消息队列获取dns客户端发送的dns数据包;若dns数据包携带有域名解析结果,则执行步骤s202;若dns数据包携带有域名解析请求,则执行步骤s203;

步骤s202:利用dpdkdns将域名解析结果缓存至本地缓存;

步骤s203:利用dpdkdns获取域名解析请求中的待解析域名;

步骤s204:利用dpdkdns查询本地区域配置文件中是否存在待解析域名;若存在,则执行步骤s205;若不存在,则执行步骤s206;

步骤s205:利用dpdkdns根据本地区域配置文件生成待解析域名的解析结果,并将待解析域名的解析结果封装为dns数据包,发送到网卡的消息队列;

步骤s206:查询本地缓存中是否存在待解析域名;若存在,则执行步骤s207;若不存在,则执行步骤s208;

步骤s207:利用dpdkdns根据本地缓存生成待解析域名的解析结果,并将待解析域名的解析结果封装为dns数据包,发送到网卡的消息队列;

步骤s208:利用dpdkdns将dns数据包通过dpdk驱动发送至虚拟网口;

步骤s209:利用递归dns通过内核协议栈监听虚拟网口,并从虚拟网口获取dns数据包;

步骤s210:基于待解析域名的树型结构,利用递归dns通过dpdkdns和网卡的消息队列向外部发送dns数据包携带的域名解析请求,以进行递归解析,得到待解析域名的解析结果,并将待解析域名的解析结果封装为dns数据包;

步骤s211:利用递归dns将步骤s210得到的dns数据包发送至dpdkdns;

步骤s212:dpdkdns通过ringbuffer将步骤s210得到的dns数据包发送到网卡的消息队列;

步骤s213:网卡的消息队列将步骤s210得到的dns数据包返回至dns客户端。

图3是根据本发明实施例的域名解析的方法的实现框架的示意图。

如图3所示,本发明实施例的域名解析的方法是将dpdkdns和递归dns融合部署于一台服务主机中。其中,环形缓冲区(ringbuffer)和内核协议栈(tcp/ipstack)分别代表dpdk和内核协议栈既有的消息通信机制。dpdkdns可以利用ringbuffer直接从网卡的接收/发送队列(rx/txqueue)获取或发送dns数据包,从而绕过内核协议栈,同时,dpdkdns还可以通过dpdk驱动(knidriver)向tcp/ipstack暴露虚拟网络接口作为dns服务端口。递归dns利用tcp/ipstack对虚拟网络接口进行监听,并获取dns数据包,同时,递归dns开启支持递归查询的配置选项,以配置根服务器地址信息。递归dns以外的组件对递归dns透明。tcp/ipstack从虚拟网络接口获取的消息包,若确定该消息包是dns数据包,则分发给递归dns,同样地,主机进程下发给虚拟网络接口的消息包也会由tcp/ipstack预先处理。

图4是根据本发明实施例的域名解析的方法的权威解析的消息交互的示意图。

如图4所示,本发明实施例的域名解析的方法中进行权威解析时的消息交互如下:

1、rx/txqueue接收dns客户端的dns数据包;

2、rx/txqueue通过ringbuffer将dns数据包发送至dpdkdns;

3、dpdkdns收到dns数据包:

根据dpdkdns对数据包的处理逻辑,当dns数据包携带有域名解析请求,且dpdkdns中配置了待解析域名所对应的区域配置文件(即dpdkdns作为该待解析域名的权威dns服务器)时,dpdkdns可以直接根据本地区域配置文件生成待解析域名的解析结果,并将待解析域名的解析结果封装为dns数据包;

4、dpdkdns通过ringbuffer将上一步得到的dns数据包发送到rx/txqueue;

5、rx/txqueue将dns数据包返回至dns客户端。

图5是根据本发明实施例的域名解析的方法的递归解析的消息交互的示意图。

如图5所示,本发明实施例的域名解析的方法中进行递归解析时的消息交互如下:

1、rx/txqueue接收dns客户端的dns数据包;

2、rx/txqueue通过ringbuffer将dns数据包发送至dpdkdns;

3、dpdkdns将dns数据包发送至dpdk驱动:

根据dpdkdns对数据包的处理逻辑,当dns数据包携带有域名解析请求,而dpdkdns中未配置待解析域名所对应的区域,且本地缓存也没有该待解析域名对应的有效解析记录时,dpdkdns需要将dns数据包发送至dpdk驱动;

4、dpdk驱动将dns数据包传递至虚拟网口,内核协议栈从虚拟网口获取dns数据包;

5、递归dns从内核协议栈获取dns数据包:

递归dns在收到dns数据包时触发递归解析流程,根据待解析域名的树型结构得出被授权解析该待解析域名的下一级权威dns服务器的地址,递归dns通过内核协议栈、dpdk驱动、dpdkdns、环形缓冲区(ringbuffer)、rx/txqueue向下一级权威dns服务器发送域名解析请求;

6、递归dns将域名解析请求通过内核协议栈发送至dpdk驱动;

7、dpdk驱动通过ringbuffer将域名解析请求发送至rx/txqueue;

8、rx/txqueue将域名解析请求发送至下一级权威dns服务器;

9、rx/txqueue接收响应数据包;

10、rx/txqueue通过ringbuffer将响应数据包发送至dpdkdns;

11、dpdkdns将响应数据包发送至dpdk驱动;

12、dpdk将响应数据包驱动传递至虚拟网口,内核协议栈从虚拟网口获取响应数据包;

13、递归dns从内核协议栈获取响应数据包:

该响应数据包中可能携带有待解析域名的解析结果,也有可能携带有被授权解析该待解析域名的再下一级权威dns服务器的地址,如果该待解析域名的解析存在多层级的授权关系,上述过程6-13将会迭代多次,最终递归dns将会获得该待解析域名对应的权威dns服务器的地址并发起请求,从而得到待解析域名的解析结果,并将待解析域名的解析结果封装为dns数据包;

14、递归dns将上一步得到的dns数据包通过内核协议栈发送至dpdk驱动;

15、dpdk驱动通过ringbuffer将上一步的dns数据包发送至rx/txqueue;

16、rx/txqueue将上一步的dns数据包返回给dns客户端。

图6是根据本发明实施例的域名解析的方法的缓存解析的消息交互的示意图。

如图6所示,本发明实施例的域名解析的方法中进行缓存解析时的消息交互如下:

1、rx/txqueue接收dns客户端的dns数据包;

2、rx/txqueue通过ringbuffer将dns数据包发送至dpdkdns;

3、dpdkdns收到dns数据包:

根据dpdkdns对数据包的处理逻辑,当dns数据包携带有域名解析请求,且dpdkdns中未配置待解析域名所对应的区域,而本地缓存中有该待解析域名对应的有效解析记录时,dpdkdns可以根据本地缓存生成待解析域名的解析结果,并将待解析域名的解析结果封装为dns数据包;

4、dpdkdns通过ringbuffer将上一步得到的dns数据包发送到rx/txqueue;

5、rx/txqueue将dns数据包返回至dns客户端。

图7是根据本发明实施例的域名解析的方法的处理dns数据包的主要流程的示意图。

步骤s701:dpdkdns从rx/txqueue获取dns数据包;

步骤s702:判断dns数据包是否为合法包,若是则执行步骤s703;若否,则丢弃;

步骤s703:判断dns数据包携带的是域名解析结果或域名解析请求,若dns数据包携带有域名解析结果,则执行步骤s704;若dns数据包携带有域名解析请求,则执行步骤s705;

步骤s704:dpdkdns将域名解析结果缓存至本地缓存;

步骤s705:dpdkdns获取域名解析请求中的待解析域名;

步骤s706:dpdkdns查询本地区域配置文件中是否存在待解析域名;若存在,则执行步骤s707;若不存在,则执行步骤s708;

步骤s707:dpdkdns根据本地区域配置文件生成待解析域名的解析结果,并将待解析域名的解析结果封装为dns数据包,发送到rx/txqueue;

步骤s708:查询本地缓存中是否存在待解析域名;若存在,则执行步骤s709;若不存在,则执行步骤s710;

步骤s709:dpdkdns根据本地缓存生成待解析域名的解析结果,并将待解析域名的解析结果封装为dns数据包,发送到rx/txqueue;

步骤s710:dpdkdns将dns数据包通过dpdk驱动发送至递归dns。

图8是根据本发明实施例的域名解析的装置的主要模块的示意图。

如图8所示,本发明实施例的域名解析的装置800包括:获取模块801、查询模块802、解析模块803和递归模块804。

其中,

获取模块801,用于获取域名解析请求中的待解析域名;

查询模块802,用于查询本地区域配置文件或本地缓存中是否存在待解析域名;

解析模块803,用于在所述本地区域配置文件或所述本地缓存中存在所述待解析域名时,利用dpdkdns根据所述本地区域配置文件或所述本地缓存生成所述待解析域名的解析结果;

递归模块804,用于在所述本地区域配置文件或所述本地缓存中不存在待解析域名时,利用递归dns基于所述待解析域名进行递归解析,得到所述待解析域名的解析结果。

此外,所述装置800还可以包括缓存模块(图中并未示出),所述缓存模块用于:利用dpdkdns从网卡的消息队列获取dns数据包;其中,所述dns数据包携带有域名解析结果或域名解析请求;当所述dns数据包携带有所述域名解析结果时,利用所述dpdkdns将所述域名解析结果缓存至本地缓存。

在本发明实施例中,所述获取模块801还可以用于:当所述dns数据包携带有域名解析请求时,利用所述dpdkdns获取所述域名解析请求中的待解析域名。

在本发明实施例中,所述递归模块804还可以用于:利用所述dpdkdns将所述dns数据包通过dpdk驱动发送至虚拟网口;利用递归dns通过内核协议栈监听所述虚拟网口,并从所述虚拟网口获取所述dns数据包;基于所述待解析域名的树型结构,利用所述递归dns通过所述dpdkdns和所述网卡的消息队列向外部发送dns数据包中携带的域名解析请求,以进行递归解析,得到所述待解析域名的解析结果。

此外,所述装置800还可以包括发送模块(图中并未示出),所述发送模块用于:将所述待解析域名的解析结果封装为dns数据包,并发送到所述网卡的消息队列。

在本发明实施例中,所述解析模块803还可以用于:利用dpdkdns查询所述本地区域配置文件中是否存在所述待解析域名;若存在,则利用所述dpdkdns根据所述本地区域配置文件生成所述待解析域名的解析结果;若不存在,则在所述本地缓存中存在所述待解析域名时,利用所述dpdkdns根据所述本地缓存生成所述待解析域名的解析结果。

根据本发明实施例的域名解析的装置可以看出,因为采用获取域名解析请求中的待解析域名;查询本地区域配置文件或本地缓存中是否存在待解析域名;若存在,则利用dpdkdns根据本地区域配置文件或本地缓存生成待解析域名的解析结果;若不存在,则利用递归dns基于待解析域名进行递归解析,得到待解析域名的解析结果的技术手段,利用dpdkdns和递归dns共同提供dns服务,对内部网络的域名可以进行权威解析,对外部网络的域名可以进行缓存解析或递归解析,所以克服了权威解析、递归解析和缓存解析性能较差;网络的复杂程度和网络运维的成本较高的技术问题,进而达到在不增加相关设备的情况下,仍能够显著提升权威解析、递归解析和缓存解析的性能;减小对外dns服务产生的流量,并减轻网络压力;降低网络的复杂程度和网络运维的成本的技术效果。

图9示出了可以应用本发明实施例的域名解析的方法或域名解析的装置的示例性系统架构900。

如图9所示,系统架构900可以包括终端设备901、902、903,网络904和服务器905。网络904用以在终端设备901、902、903和服务器905之间提供通信链路的介质。网络904可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。

用户可以使用终端设备901、902、903通过网络904与服务器905交互,以接收或发送消息等。终端设备901、902、903上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。

终端设备901、902、903可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。

服务器905可以是提供各种服务的服务器,例如对用户利用终端设备901、902、903所浏览的购物类网站提供支持的后台管理服务器。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息)反馈给终端设备。

需要说明的是,本发明实施例所提供的域名解析的方法一般由服务器905执行,相应地,域名解析的装置一般设置于服务器905中。

应该理解,图9中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。

下面参考图10,其示出了适于用来实现本发明实施例的终端设备的计算机系统1000的结构示意图。图10示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图10所示,计算机系统1000包括中央处理单元(cpu)1001,其可以根据存储在只读存储器(rom)1002中的程序或者从存储部分1008加载到随机访问存储器(ram)1003中的程序而执行各种适当的动作和处理。在ram1003中,还存储有系统1000操作所需的各种程序和数据。cpu1001、rom1002以及ram1003通过总线1004彼此相连。输入/输出(i/o)接口1005也连接至总线1004。

以下部件连接至i/o接口1005:包括键盘、鼠标等的输入部分1006;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至i/o接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。

特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1009从网络上被下载和安装,和/或从可拆卸介质1011被安装。在该计算机程序被中央处理单元(cpu)1001执行时,执行本发明的系统中限定的上述功能。

需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括获取模块、查询模块、解析模块和递归模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,获取模块还可以被描述为“获取域名解析请求中的待解析域名的模块”。

作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:步骤s101:获取域名解析请求中的待解析域名;步骤s102:查询本地区域配置文件或本地缓存中是否存在待解析域名;若存在,则执行步骤s103;若不存在,则执行步骤s104;步骤s103:利用dpdkdns根据本地区域配置文件或本地缓存生成待解析域名的解析结果;步骤s104:利用递归dns基于待解析域名进行递归解析,并得到待解析域名的解析结果。

根据本发明实施例的技术方案,因为采用获取域名解析请求中的待解析域名;查询本地区域配置文件或本地缓存中是否存在待解析域名;若存在,则利用dpdkdns根据本地区域配置文件或本地缓存生成待解析域名的解析结果;若不存在,则利用递归dns基于待解析域名进行递归解析,得到待解析域名的解析结果的技术手段,利用dpdkdns和递归dns共同提供dns服务,对内部网络的域名可以进行权威解析,对外部网络的域名可以进行缓存解析或递归解析,所以克服了权威解析、递归解析和缓存解析性能较差;网络的复杂程度和网络运维的成本较高的技术问题,进而达到在不增加相关设备的情况下,仍能够显著提升权威解析、递归解析和缓存解析的性能;减小对外dns服务产生的流量,并减轻网络压力;降低网络的复杂程度和网络运维的成本的技术效果。

上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1