首页 / 专利库 / 软件 / 数据处理 / 基于DPDK的多进程DNS服务方法和系统

基于DPDK的多进程DNS服务方法和系统

阅读:42发布:2020-05-08

专利汇可以提供基于DPDK的多进程DNS服务方法和系统专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于DPDK的多 进程 DNS服务方法和系统,其中,该方法包括:将从网卡接收的DNS 请求 报文信息发送给位于用户态的DPDK 数据处理 平面;DPDK数据处理平面根据不同的协议类型分别进行不同处理;将DPDK数据处理平面转发的的DNS请求报文信息解析,其中,对所述DNS请求报文信息的解析根据协议类型采用权威 服务器 处理、缓存服务器处理及递归服务器处理三种分离的处理模式。本发明所公开的方法及系统,能够避免数据在 内核 态和用户台之间的往返拷贝,且可以灵活的根据业务场景提供不同的DNS服务能 力 ,满足高性能、高灵活度的业务场景需求。,下面是基于DPDK的多进程DNS服务方法和系统专利的具体信息内容。

1.一种基于DPDK的多进程DNS服务方法,其特征在于,所述方法包括:
将从网卡接收的DNS请求报文信息发送给位于用户态的DPDK数据处理平面;
DPDK数据处理平面根据不同的协议类型分别进行不同处理;
将DPDK数据处理平面转发的的DNS请求报文信息解析,其中,对所述DNS请求报文信息的解析根据协议类型采用权威服务器处理、缓存服务器处理及递归服务器处理三种分离的处理模式。
2.根据权利要求1所述的方法,其特征在于,所述DPDK数据处理平面基于轮询机制收发包,对于为UDP类型的包,通过DPDK Ring转发给权威服务器处理,对于其他类型的包通过DPDK的KNI接口重新注入操作系统的协议栈。
3.根据权利要求2所述的方法,其特征在于,对于UDP类型的包,DNS服务器进行如下处理:
权威服务器如果查询匹配到权威服务器的区数据,通过DPDK Ring应答给数据处理平面的主进程,数据处理平面的主进程负责将应答包发送出去;若不匹配,则转给缓存进程继续处理;
缓存服务器收到权威服务器转发的DNS请求报文后,如果查询匹配到缓存服务器中的缓存数据,通过DPDK Ring应答给数据处理平面的主进程,数据处理平面主进程负责将应答包发送出去;若不匹配,转给递归服务器继续处理;
递归服务器则按照递归进程负责迭代查询。
4.根据权利要求2所述的方法,其特征在于,对于非UDP类型的包,DNS服务器进行如下处理:
若收到内核层通过socket发送的非UDP数据包,则由递归服务器进行递归查询,包括对外部和本机内部的迭代查询,得到最终应答后通过socket将应答包发送出去,数据处理平面通过KNI获取操作系统协议栈中的应答包,并发送至物理网卡。
5.根据权利要求3或4所述的方法,其特征在于,数据处理平面对接收到的DNS请求报文信息进行分析,过滤出UDP数据包后转发给DNS服务解析模,等待DNS服务解析模块的应答报文;对过滤出非UDP数据包通过KNI重新注入操作系统的协议栈。
6.根据权利要求1~4任一权利要求书所述的方法,其特征在于,所述方法还包括:权威服务器处理、缓存服务器处理及递归服务器可通过启动多个实例的方式,或者更具业务特点停止指定的某服务器处理,为其它服务器保留更多的硬件资源。
7.根据权利要求6所述的方法,其特征在于,对实例数量的调整,可通过手动调整,或者机器动态调整。
8.一种基于DPDK的多进程DNS服务系统,其特征在于,所述系统包括:
DPDK数据处理平面,在用户态工作,用于从网卡接收DNS请求报文信息并进行数据包筛选,根据数据包类型进行不同的处理;
DNS服务解析模块,在用户态工作,将DPDK数据处理平面转发的DNS请求报文信息进行解析,其中,DNS服务解析模块中采用了权威、缓存和递归三种可分离的工作模式。
9.根据权利要求8所述的系统,其特征在于,所述DNS服务解析模块包括:权威服务器、缓存服务器及递归服务器,其中,对于接收到的为UDP类型的包,DNS服务解析模块进行如下处理:
权威服务器如果查询匹配到权威服务器的区数据,通过DPDK Ring应答给数据处理平面的主进程,数据处理平面的主进程负责将应答包发送出去;若不匹配,则转给缓存进程继续处理;
缓存服务器收到权威服务器转发的DNS请求报文后,如果查询匹配到缓存服务器中的缓存数据,通过DPDK Ring应答给数据处理平面的主进程,数据处理平面主进程负责将应答包发送出去;若不匹配,转给递归服务器继续处理;
递归服务器则按照递归进程负责迭代查询。
10.根据权利要求9所述的系统,其特征在于,所述系统还包括服务监控模块,根据每个服务的进程自身的业务压,动态新增或删除指定服务器进程的实例数量。

说明书全文

基于DPDK的多进程DNS服务方法和系统

技术领域

[0001] 本发明属于计算机技术领域,具体涉及一种基于DPDK的多进程DNS服务方法和系统。

背景技术

[0002] DNS服务可以看作对主机信息的查询和应答服务。该查询应答采用典型的CS模型。客户端发起DNS请求,查询某主机的信息。DNS服务器收到该请求后生成携带主机IP地址等信息并返回给客户端。客户端进一步使用DNS服务器返回信息进行查询并获取相应服务,DNS的出现能够使人们不用记住服务器的IP地址,就可以方便地访问互联网,整个查询及访问的过程称为域名解析。
[0003] 通常的DNS服务运行在网络模型中的应用层,工作流程包括如下步骤:
[0004] 1、从客户端获得的DNS请求报文,首先到达物理层的网卡驱动模,网卡驱动模块将DNS请求报文转发给数据链路层,该过程在核内进行。
[0005] 2、位于数据链路层的数据处理模块接收网卡驱动转发的DNS请求报文,并添加该报文相应的逻辑网络设备信息,并将信息发送给网络层,该过程在核内进行。
[0006] 3、网络层的IP报文处理模块将IP报文解成传输层可以理解的TCP/UDP包等,并将处理后的报文递送给传输层,该过程在核内进行。
[0007] 4、传输层根据报文端口信息查找注册的服务程序,经UDP报文处理模块将报文交付给应用层。由于报文要从内核层转移到应用层,所以要对整个报文拷入内存。
[0008] 5、DNS请求报文到达应用层后,DNS服务处理模块生成DNS应答报文并原路回传。在回传的过程中,需要进行用户层到内核的第二次拷贝。
[0009] 6、经过传输层、网络层、链路层和物理层的传输,最终应答报文到达客户端。
[0010] 其中,网络模型中的传输层、网络层、数据链路层和物理层属于系统内核,应用层属于系统应用层面。
[0011] 客户端的DNS请求报文需要经过网卡驱动模块、数据帧处理模块等多个Linux内核模块才到应用层的DNS服务处理模块。反过来,DNS服务处理模块产生的DNS应答报文也需要经过多个模块才能发送出去。而且数据在从内核到应用层和从应用层到内核的两个过程中,不可避免地进行两次内存拷贝,大大降低了DNS的服务效率。
[0012] 因此,如何避免数据在内核态和用户台之间的往返拷贝,且可以灵活的根据业务场景提供不同的DNS服务能,以满足高性能、高灵活度的业务场景需求,便成为了目前亟待解决的问题。

发明内容

[0013] 基于现有技术的上述缺陷,本发明的目的是提供一种基于DPDK的多进程DNS服务的方法及系统,避免数据在内核态和用户台之间的往返拷贝,且可以灵活的根据业务场景提供不同的DNS服务能力,以满足高性能、高灵活度的业务场景需求。
[0014] 本发明采用的技术方案如下:
[0015] 一种基于DPDK的多进程DNS服务的方法,所述方法包括:
[0016] 将从网卡接收的DNS请求报文信息发送给位于用户态的DPDK数据处理平面;
[0017] DPDK数据处理平面根据不同的协议类型分别进行不同处理;
[0018] 将DPDK数据处理平面转发的的DNS请求报文信息解析,其中,对所述DNS请求报文信息的解析根据协议类型采用权威服务器处理、缓存服务器处理及递归服务器处理三种处理模式。
[0019] 进一步地,所述DPDK数据处理平面基于轮询机制收发包,对于为UDP类型的包,通过DPDK Ring转发给权威服务器处理,对于其他类型的包通过DPDK的KNI接口重新注入操作系统的协议栈。
[0020] 进一步地,对于UDP类型的包,DNS服务器进行如下处理:
[0021] 权威服务器如果查询匹配到权威服务器的区数据,通过DPDK Ring应答给数据处理平面的主进程,数据处理平面的主进程负责将应答包发送出去;若不匹配,则转给缓存进程继续处理;
[0022] 缓存服务器收到权威服务器转发的DNS请求报文后,如果查询匹配到缓存服务器中的缓存数据,通过DPDK Ring应答给数据处理平面的主进程,数据处理平面主进程负责将应答包发送出去;若不匹配,转给递归服务器继续处理;
[0023] 递归服务器则按照递归进程负责迭代查询。
[0024] 进一步地,对于非UDP类型的包,DNS服务器进行如下处理:
[0025] 若收到内核层通过socket发送的非UDP数据包,则由递归服务器进行递归查询,包括对外部和本机内部的迭代查询,得到最终应答后通过socket将应答包发送出去,数据处理平面通过KNI获取操作系统协议栈中的应答包,并发送至物理网卡。
[0026] 进一步地,数据处理平面对接收到的DNS请求报文信息进行分析,过滤出UDP数据包后转发给DNS服务解析模块,等待DNS服务解析模块的应答报文;对过滤出非UDP数据包通过KNI重新注入操作系统的协议栈。
[0027] 进一步地,所述方法还包括:权威服务器处理、缓存服务器处理及递归服务器可通过启动多个实例的方式,或者更具业务特点停止指定的某服务器处理,为其它服务器保留更多的硬件资源。
[0028] 进一步地,对实例数量的调整,可通过手动调整,或者机器动态调整。DNS服务解析模块采用了权威、缓存和递归三个模块分离的方案,每个模块为单独的服务进程。可根据业务特点和性能瓶颈点,动态新增/删除指定服务模块的进程实例数量,或者关闭特定服务实例为其它模块预留更多硬件资源足。
[0029] 基于本发明的另一构思,还提供了一种基于DPDK的多进程DNS服务的系统,该系统包括:
[0030] DPDK数据处理平面,在用户态工作,用于从网卡接收DNS请求报文信息并进行数据包筛选,根据数据包类型进行不同的处理;
[0031] DNS服务解析模块,在用户态工作,将DPDK数据处理平面转发的DNS请求报文信息进行解析,其中,DNS服务解析模块中采用了权威、缓存和递归三种可分离的工作模式。
[0032] 进一步地,所述DNS服务解析模块包括:权威服务器、缓存服务器及递归服务器,其中,对于接收到的为UDP类型的包,DNS服务解析模块进行如下处理:
[0033] 权威服务器如果查询匹配到权威服务器的区数据,通过DPDK Ring应答给数据处理平面的主进程,数据处理平面的主进程负责将应答包发送出去;若不匹配,则转给缓存进程继续处理;
[0034] 缓存服务器收到权威服务器转发的DNS请求报文后,如果查询匹配到缓存服务器中的缓存数据,通过DPDK Ring应答给数据处理平面的主进程,数据处理平面主进程负责将应答包发送出去;若不匹配,转给递归服务器继续处理;
[0035] 递归服务器则按照递归进程负责迭代查询。
[0036] 进一步地,所述系统还包括服务监控模块,根据每个服务的进程自身的业务压力,动态新增或删除指定服务器进程的实例数量。本发明还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述任一项所述的方法的步骤。
[0037] 与现有技术相比,本发明所公开的一种基于DPDK的多进程DNS服务的方法和系统,具有如下技术效果:
[0038] 1、DPDK数据处理平面位于用户态,它接收的是直接来自网卡的请求报文,数据报文的处理也在DPDK中完成,避开了在原来的在内核层的各个协议栈的处理,避免了之前两次访问内存带来的开销,有效解决了内核协议栈处理性能较低的问题,DNS服务解析模块负责接收并回应来自DPDK数据处理平台和内核的DNS请求报文。
[0039] 2、本发明对于UDP DNS数据包,通过DPDK轮询方式,绕开了内核中协议栈对DNS报文的处理,减少了开销,对于TCP DNS数据包,仍使用原来的方法进行解析。
[0040] 3、本发明将权威、缓存和递归服务器模块进行模块分离,模块之间通过DPDK Ring进行通信,提升多进程间通信的性能和处理性能。
[0041] 4、本发明根据业务特点停止指定的服务模块(如纯递归环境,无需启动权威进程),为其它模块预留更多硬件资源,提供满足业务场景的最佳性能。
[0042] 5、本发明的各服务器进程实例数量可调整,既支持手动调整,也支持动态调整功能,开启了动态调整后,服务监控模块会监控每个服务进程自身的业务压力,根据硬件资源的使用情况来动态新增/删除指定服务进程的实例数量,保证具体业务场景的最佳解析性能。附图说明
[0043] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0044] 图1为本发明实施例中基于DPDK的多进程DNS服务系统的结构示意图。
[0045] 图2为本发明实施例中基于DPDK的多进程DNS服务方法的步骤图。
[0046] 图3为本发明实施例中DNS UDP数据包在基于DPDK的多进程DNS服务系统中的解析流程图
[0047] 图4为本发明实施例中DNS TCP数据包在基于DPDK的多进程DNS服务系统中的解析流程图。

具体实施方式

[0048] 为使本领域技术人员更好地理解本发明的技术方案,下面结合附图和具体实施方式对本发明作进一步详细描述。
[0049] 参照图1所示,本发明实施例公开了一种基于DPDK的多进程DNS服务的方法,该系统包括:
[0050] 网络接口卡,模拟信号进入网卡后,会进行模数转换操作,写入网卡缓存,然后直接将DNS请求报文发送给位于用户态的DPDK数据处理平面。
[0051] DPDK数据处理平面,在用户态工作,从网卡直接接收DNS请求报文信息,并进行数据包筛选,将DNS UDP包转发给DNS服务解析模块,其他类型的包通过KNI重新注入操作系统协议栈,并且,通过KNI获取系统协议栈中的TCP应答报文并发送给物理网卡。DPDK是用于快速数据包处理的一组库和驱动程序。它主要在Linux用户态环境中运行。在内核看来,DPDK就是一个普通的用户态进程,它的编译、连接和加载方式和普通程序没有什么两样。DPDK数据处理平面位于用户态,它接收的是直接来自网卡的请求报文,数据报文的处理也在DPDK中完成,避开了在原来的在内核层的各个协议栈的处理,避免了之前两次访问内存带来的开销。有效解决了内核协议栈处理性能较低的问题。DPDK使用了轮询而不是中断来处理数据包。在收到数据包时,经DPDK重载的网卡驱动不会通过中断通知CPU,而是直接将数据包存入内存,交付应用层软件通过DPDK提供的接口来直接处理,这样节省了大量的CPU中断时间和内存拷贝时间。
[0052] DNS服务解析模块,在用户态工作,具体用于将数据处理平面转发的DNS请求报文信息进行解析服务。其中,DNS服务解析模块中采用了权威、缓存和递归分离的方案。DNS服务解析模块负责接收并回应来自DPDK数据处理平面和内核的DNS请求报文。
[0053] 具体来说,所述DNS服务解析模块包括:权威服务器、缓存服务器及递归服务器,它们分别进行不同的处理操作,其中,对于接收到的为UDP类型的包,DNS服务解析模块进行如下处理:
[0054] DPDK数据处理平面将DNS UDP请求报文通过DPDK Ring首先发送至权威服务器,权威服务器如果查询匹配到权威服务器的区数据,通过DPDK Ring应答给数据处理平面的主进程,数据处理平面的主进程负责将应答包发送出去;若不匹配,则转给缓存进程继续处理;其中,DPDK Ring提供对一种特殊的链表队列的管理,具有先进先出、定长、无、并发入/出队等特性。该功能使得工作更快,实现简单,适用于块数据的入/出队,让多个进程间的通信变得十分简单。DNS权威服务器保存着域名空间中部分区域的数据。如果DNS服务器负责管辖一个或多个区域时,称此DNS服务器为这些区域的权威服务器。根权威DNS或者二级权威服务器中的资源记录标记被指定为区域权威服务器的DNS服务器。通过资源记录中列出服务器,其他服务器就认为它是该区域的权威服务器。这意味着在NS资源记录中指定的任何服务器都被其他服务器当作权威的来源,并且能肯定应答区域内所含名称的查询。
[0055] 缓存服务器收到权威服务器转发的DNS请求报文后,如果查询匹配到缓存服务器中的缓存数据,通过DPDK Ring应答给数据处理平面的主进程,数据处理平面主进程负责将应答包发送出去;若不匹配,转给递归服务器继续处理;缓存服务器就是存放频繁访问内容的服务器,缓存指的是将需要频繁访问的网络内容存放在离用户较近、访问速度更快的系统中,以提高内容访问速度。
[0056] 递归服务器则按照递归进程负责迭代查询。递归服务器在正常情况下,初始的时候里面没有任何域名解析数据,里面所有的域名解析数据都来自于它到权威解析服务器的查询结果,一旦查询完毕,递归服务器就会根据TTL时间在本地形成一条缓存记录,并为用户提供DNS解析的查询服务,这是递归服务器的功能。
[0057] 本发明通过将权威、缓存和递归模块进行模块分离,模块之间通过DPDK Ring进行通信,提升多进程间通信的性能和处理性能。
[0058] 首先,通过DPDK Ring接收缓存进程转发过来的查询,得到最终应答后,通过DPDK Ring返回给缓存进程,缓存进程更新本地缓存信息后,通过DPDK Ring应答给Dataplane主进程,Dataplane主进程负责将应答包发送出去。
[0059] 其次,若收到内核层通过socket发送的非UDP数据包,则进行递归查询,包括对外部权威和本机权威的迭代查询,得到最终应答后通过socket将应答包发送出去。
[0060] 本发明实施例中的服务系统还包括服务监控模块,连接DNS服务解析模块,监控权威服务器、缓存服务器及递归服务器的业务进程,根据每个服务的进程自身的业务压力和硬件资源的使用情况,动态新增或删除指定服务器进程的实例数量,保证具体业务场景的最佳解析性能。在具体操作下,也可以根据业务特点停止指定的服务模块(如纯递归环境,无需启动权威进程),为其它模块预留更多硬件资源,提供满足业务场景的最佳性能。
[0061] 参照图2所示,为本发明的基于DPDK的多进程DNS服务方法的的工作原理,该方法包含步骤:
[0062] 201、数据处理平面Dataplane从NIC网口获取DNS请求报文,报文的获取基于轮询的机制;
[0063] 202、数据处理平面Dataplane首先对报文进行分析,并判断请求报文是否为UDP数据包;
[0064] 203、数据处理平面Dataplane过滤出UDP数据包后转发给DNS服务解析模块,等待DNS服务解析模块的应答报文;
[0065] 204、DNS服务解析模块收到DNS请求报文后生成相关应答报文,并发送给数据处理平面;
[0066] 205、数据处理平面接收到DNS服务解析模块的应答报文后,将报文返回发送给客户端。
[0067] 其中,在步骤202中,当过滤出非UDP数据包,则进行如下步骤:
[0068] 206、通过KNI重新注入操作系统的协议栈。
[0069] 207、非UDP数据包在系统核内经过网络协议栈处理后,再次通过socket回到用户层的DNS服务解析模块,等待应答报文;
[0070] 208、DNS服务解析模块生成应答报文后,通过socket发送回操作系统协议栈;
[0071] 209、数据处理平面Dataplane通过KNI从协议栈读取相应的应答报文;
[0072] 210、将读取的应答报文发送至物理网卡;
[0073] 对于来自网卡的不同DNS请求报文(UDP DNS/TCP DNS)的具体处理方法不同。其中,对于UDP DNS数据包,通过DPDK轮询方式,绕开了内核中协议栈对DNS报文的处理,减少了开销。对于TCP DNS数据包,仍使用原来的方法进行解析。
[0074] 同时,权威、缓存、递归进程都可以通过启动多实例的方式,来提升本模块的处理性能。在具体操作下,也可以根据业务特点停止指定的服务模块(如纯递归环境,无需启动权威进程),为其它模块预留更多硬件资源,提供满足业务场景的最佳性能。
[0075] 进一步地,进程实例数量的调整,既可手动调整,也可动态调整功能,开启了动态调整后,服务监控模块会监控每个服务进程自身的业务压力,根据硬件资源的使用情况来动态新增/删除指定服务进程的实例数量,保证具体业务场景的最佳解析性能。
[0076] 参照图3所示,当DNS服务解析模块收到的为UDP类型时,DNS UDP数据包到达DNS服务解析模块后的处理流程的具体如下:
[0077] 步骤一:客户端的DNS访问请求从物理网卡,基于DPDK轮询机制收发包,UDP数据包直接到达数据处理平面。
[0078] 步骤二:基于DPDK轮询机制收发包,UDP数据包通过DPDK Ring转发给权威进程处理;
[0079] 步骤三:权威服务模块如果查询到匹配数据,通过DPDK Ring应答给Dataplane主进程;否则就转给缓存进程继续处理;
[0080] 步骤四:缓存服务模块如果查询到匹配数据,通过DPDK Ring应答给Dataplane主进程;否则就转给递归进程继续处理;
[0081] 步骤五:通过DPDK Ring接收缓存进程转发过来的查询,通过外部与内部权威迭代查询得到最终应答后,通过DPDK Ring返回给缓存进程;
[0082] 步骤六:缓存进程更新本地缓存信息后,通过DPDK Ring应答给Dataplane主进程,Dataplane主进程负责将应答包发送出去。
[0083] 本发明将权威、缓存和递归模块进行模块分离,模块之间通过DPDK Ring进行通信,提升多进程间通信的性能和处理性能。
[0084] 参照图4所示,当DNS服务解析模块收到的为TCP类型时,DNS TCP数据包在基于DPDK的多进程DNS服务系统中的实施例,该方法包含步骤。
[0085] 步骤一:来自客户端的原始DNS请求包从物理网卡进入用户层DPDK数据处理平面,Dataplane将TCP包通过KNI重新注入操作系统的协议栈;
[0086] 步骤二:递归服务模块通过socket接收KNI重新注入协议栈的DNS TCP请求;
[0087] 步骤三:递归服务模块经过内部和对外迭代查询,得到最终应答后通过socket将应答包发送回操作系统协议栈。
[0088] 步骤四:Dataplane数据处理平面通过KNI获取操作系统协议栈中的TCP应答包,并发送至物理网卡;
[0089] 本实施例中,DNS TCP数据包没有绕开内核操作系统协议栈的处理,但不同的是,由于本发明将DNS解析服务模块分离为权威、缓存和递归三个服务进程,从而使得TCP数据包只在递归进程中处理。并且最终DNS TCP应答数据包由Dataplane发送到物理网卡,过程中只有Dataplane与物理网卡进行通信。通过上述所有流程设的计减小了开销、提高了效率,提升多进程间通信的性能和处理性能。
[0090] 最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈