CN115934361B - 本地域名***服务器的优化方法及相关设备 - Google Patents
本地域名***服务器的优化方法及相关设备 Download PDFInfo
- Publication number
- CN115934361B CN115934361B CN202310050242.0A CN202310050242A CN115934361B CN 115934361 B CN115934361 B CN 115934361B CN 202310050242 A CN202310050242 A CN 202310050242A CN 115934361 B CN115934361 B CN 115934361B
- Authority
- CN
- China
- Prior art keywords
- main process
- dpdk
- sub
- domain name
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例公开了一种本地域名***服务器的优化方法及相关设备,该方法包括:启动本地DNS服务器的主进程;基于主进程***出多个子进程,以及启动多个子进程;其中,在子进程启动完成的情况下,控制子进程向主进程发送第一信号,第一信号用于指示子进程启动完成;在主进程收到全部子进程发送的第一信号的情况下,控制主进程进行数据平面开发套件DPDK初始化。根据本申请的实施例,能够有效提升DNS服务器的性能表现。
Description
技术领域
本申请属于互联网技术领域,尤其涉及一种本地域名***服务器的优化方法及相关设备。
背景技术
目前,很多厂商实现了对权威DNS的DPDK支持,但对于本地DNS服务器,这些优化方案并不完全适用。这主要是因为本地DNS服务器的网络实现与权威DNS的网络实现不同,包含缓存模块、递归模块以及用于外部运维的控制模块。
而且,由于本地DNS服务器多采用多进程架构,使得DPDK对于fork等***调用支持不佳。
发明内容
本申请实施例提供一种本地域名***服务器的优化方法及相关设备,能够解决目前DPDK对本地DNS服务器并不适用的问题。
第一方面,本申请实施例提供一种本地域名***DNS服务器的优化方法,该方法包括:
启动本地DNS服务器的主进程;
基于主进程***出多个子进程,以及启动多个子进程;其中,在子进程启动完成的情况下,控制子进程向主进程发送第一信号,第一信号用于指示子进程启动完成;
在主进程收到全部子进程发送的第一信号的情况下,控制主进程进行数据平面开发套件DPDK初始化。
第二方面,本申请实施例提供一种本地域名***DNS服务器的优化装置,本地域名***DNS服务器的优化装置包括:
启动模块,用于启动本地DNS服务器的主进程;
***模块,用于基于主进程***出多个子进程,以及启动多个子进程;其中,子进程在启动完成的情况下,控制子进程向主进程发送第一信号,第一信号用于指示子进程启动完成;
主进程初始化模块,用于在主进程收到全部子进程发送的第一信号的情况下,控制主进程进行数据平面开发套件DPDK初始化。
第三方面,本申请实施例提供了一种电子设备,该设备包括:处理器以及存储有计算机程序指令的存储器;处理器执行计算机程序指令时,实现如第一方面或者第一方面的任一可能实现方式中的方法。
第四方面,本申请实施例提供了一种可读存储介质,该计算机可读存储介质上存储有计算机程序指令,计算机程序指令被处理器执行时实现如第一方面或者第一方面的任一可能实现方式中的方法。
本申请实施例中,通过启动本地DNS服务器的主进程,基于主进程***出多个子进程,以及启动多个子进程;其中,在子进程启动完成的情况下,控制子进程向主进程发送第一信号,第一信号用于指示子进程启动完成,在主进程收到全部子进程发送的第一信号的情况下,控制主进程进行数据平面开发套件DPDK初始化。这里,能够避免出现子进程未启动完成时主进程就开始进行DPDK初始化的情况,有效避免了本地DNS服务器在该情况下可能出现的崩溃问题。由此,本申请的实施例,基于信号控制,能够精准控制主进程和子进程的启动流程,实现本地DNS服务器对DPDK多进程架构的支持,使本地DNS服务器获得更好的并发能力,能够提升本地DNS服务器的整体性能,增强安全性。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单的介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种本地DNS服务器的查询过程示意图;
图2是本申请实施例提供的一种本地域名***DNS服务器的优化方法的流程图;
图3是本申请实施例提供的一种本地DNS服务器的实现架构图;
图4是本申请实施例提供的一种实现本地域名***DNS服务器的优化方法的流程图;
图5是本申请实施例提供的一种本地域名***DNS服务器的优化装置的结构示意图;
图6是本申请实施例提供的一种电子设备的硬件结构示意图。
具体实施方式
下面将详细描述本申请的各个方面的特征和示例性实施例,为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本申请进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本申请,并不被配置为限定本申请。对于本领域技术人员来说,本申请可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本申请的示例来提供对本申请更好的理解。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
下面对本申请涉及到的技术术语进行简要介绍。
域名***(Domain Name System,DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
本地域名服务器本身不具备权威域名服务器解析域名的功能,它的作用有两个:第一,代替用户设备参与域名查询的迭代过程,帮助获取域名查询结果返回给用户设备;第二,缓存域名查询记录,当其他用户发起相同的域名查询请求时可以直接返回查询结果,可以加快域名查询速度,同时也降低了权威服务器,尤其是根服务器的工作压力。
递归DNS,负责接受用户对任意域名查询,并返回结果给用户。递归DNS可以缓存结果以避免重复向上查询。递归DNS一定要有可靠的互联网连接方可使用。
权威DNS是经过上一级授权对域名进行解析的服务器,同时它可以把解析授权转授给其他人。
分布式拒绝服务攻击(Distributed denial of service attack,DDos),分布式拒绝服务攻击可以使很多的计算机在同一时间遭受到攻击,使攻击的目标无法正常使用,分布式拒绝服务攻击已经出现了很多次,导致很多的大型网站都出现了无法进行操作的情况,这样不仅仅会影响用户的正常使用,同时造成的经济损失也是非常巨大的。
分布式拒绝服务攻击方式在进行攻击的时候,可以对源IP地址进行伪造,这样就使得这种攻击在发生的时候隐蔽性是非常好的,同时要对攻击进行检测也是非常困难的,因此这种攻击方式也成为了非常难以防范的攻击。
数据平面开发套件(Data Plane Development Kit,DPDK),用于快速数据包处理的函数库与驱动集合,可以极大提高数据处理性能和吞吐量,提高数据平面应用程序的工作效率。
Kernel一般指实时操作***,实时操作***(RealTime Operating System,RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理***做出快速响应,调度一切可利用的资源完成实时任务,并控制所有实时任务协调一致运行的操作***。提供及时响应和高可靠性是其主要特点。
无线网卡,是一种终端无线网络设备,它能够帮助计算机连接到无线网络上,例如WiFi或者蓝牙。
复刻(fork),又译作派生、分支,fork***调用用于创建一个与原来进程几乎完全相同的进程,称为子进程,它与进程(称为***调用fork的进程)同时运行,此进程称为父进程。即fork函数可以将运行着的程序分成2个几乎完全一样的进程,每个进程都启动一个从代码的同一位置开始执行的线程。这两个进程中的线程继续执行,就像是两个用户同时启动了该应用程序的两个副本;两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事;一个进程,包括代码、数据和分配给进程的资源。
本申请实施例提供的本地域名***DNS服务器的优化方法至少可以应用于下述应用场景中,下面进行说明。
本地DNS服务器,作为用户入网的入口,帮助用户实现域名到IP的解析过程,一般本地DNS的服务架构示意图,如图1所示。首先,某用户在客户端向本地DNS服务器发起DNS请求,本地DNS服务器中的缓存模块响应于DNS请求,基于DNS请求中的域名信息查询缓存模块对应的缓存数据库,若查询到域名信息对应的地址信息,则将域名解析内容通过DNS响应信息返回至客户端。若未查询到域名信息对应的地址信息,则向递归模块转发DNS请求,以用于递归模块向权威DNS服务器查询到域名信息对应的地址信息。
随着5G以及宽带网络的普及,网络用户基数已经非常庞大,因此对本地DNS的性能和抗DDos攻击等安全能力提出了更高的要求。
DPDK,为用户空间高效的数据包处理提供库函数和驱动的支持。DPDK技术相对于传统网络编程,将网卡驱动和网络报文处理在用户态进行实现,从而大幅提升网络应用的性能。
目前,很多厂商实现了对权威DNS的DPDK支持,但对于本地DNS,这些优化方案并不完全适用。这主要体现在,本地DNS服务器***的网络实现包含缓存模块、递归模块以及用于外部运维的控制模块等,同时,为了提高***的整体性能,多采用多进程架构实现,因此存在以下问题:
首先,本地DNS各部分并不都适用于DPDK使用场景,本地DNS***的缓存部分,类似于权威DNS,基于DPDK的实现可以极大提升性能;
对于递归模块部分,由于递归模块的主要性能瓶颈在于本地DNS和各级权威DNS的网络时延,支持DPDK并不能提升此部分性能表现,同时会对DPDK的网络包控制策略带来极大负担,其具体原因是由于物理距离,DPDK只能对本机加速。
对于控制模块部分,由于控制模块一般用于运维维护,且访问量较小,使用DPDK会改变原有运维方式,增加运维负担。
其次,DPDK对于fork等***调用支持不佳,由于本地DNS多采用多进程架构。DPDK的用户态编程思想以及独特的主子进程初始化顺序要求,使得其对多进程架构需要使用的fork等***调用支持不佳。
其中,DPDK的用户态的主要功能是拦截中断,并重设中断回调行为,从而绕过内核协议栈后续的处理流程。它将硬件操作映射到用户空间,对用户空间提供文件接口。
图2是本申请实施例提供的一种本地域名***DNS服务器的优化方法的流程图。
如图2所示,该本地域名***DNS服务器的优化方法可以包括步骤210-步骤230,该方法应用于本地域名***DNS服务器的优化装置,具体如下所示:
步骤210,启动本地DNS服务器的主进程;
步骤220,基于主进程***出多个子进程,以及启动多个子进程;其中,在子进程启动完成的情况下,控制子进程向主进程发送第一信号,第一信号用于指示子进程启动完成;
步骤230,在主进程收到全部子进程发送的第一信号的情况下,控制主进程进行数据平面开发套件DPDK初始化。
本申请实施例中,通过启动本地DNS服务器的主进程,基于主进程***出多个子进程,以及启动多个子进程;其中,在子进程启动完成的情况下,控制子进程向主进程发送第一信号,第一信号用于指示子进程启动完成,在主进程收到全部子进程发送的第一信号的情况下,控制主进程进行数据平面开发套件DPDK初始化。这里,能够避免出现子进程未启动完成时主进程就开始进行DPDK初始化的情况,有效避免了本地DNS服务器在该情况下可能出现的崩溃问题。由此,本申请的实施例,基于信号控制,能够精准控制主进程和子进程的启动流程,实现本地DNS服务器对DPDK多进程架构的支持,使本地DNS服务器获得更好的并发能力,能够提升本地DNS服务器的整体性能,增强安全性。
下面,对步骤210-步骤230的内容分别进行描述:
涉及步骤210。
启动本地DNS服务器的主进程。
涉及步骤220。
基于主进程***出多个子进程,以及启动多个子进程;其中,在子进程启动完成的情况下,控制子进程向主进程发送第一信号,第一信号用于指示子进程启动完成。
基于主进程***出多个子进程,具体可以通过调用***方法fork,复制主进程,得到多个子进程。
具体地,主进程启动后,加载配置,调用***方法fork,***出子进程,然后进入信号等待状态,等待子进程启动完成。
子进程启动后,向主进程发送第一信号信号,之后进入等待“主进程DPDK初始化”完成信号的状态。
涉及步骤230。
在主进程收到全部子进程发送的第一信号的情况下,控制主进程进行数据平面开发套件DPDK初始化。
这里,需要先把子进程***出来,才可以进行主进程DPDK初始化,否则会导致***崩溃。
因此,主进程收到全部子进程发送的第一信号的情况下,说明全部子进程启动完成,这时可以进行控制主进程进行DPDK初始化。
DPDK初始化,包括创建DPDK共享资源池和网卡收发队列等步骤。
这里,基于信号控制主进程和子进程的启动,使DPDK能够良好兼容***方法fork,从而使本地DNS服务器整体依旧保持原有的多进程实现架构,获得更好的并发能力。
DPDK的初始化工作,主要是将配置的大内存页,根据其映射的物理地址是否连续、属于哪个套接字(Socket)等信息,有效的组织起来,为后续管理提供便利。
这里,通过在主进程收到全部子进程发送的第一信号的情况下,控制主进程进行数据平面开发套件DPDK初始化,能够实现对主进程和子进程启动顺序的精准控制,获得良好的***并发能力,从而使DPDK兼容fork等***调用,大幅提升本地DNS***的整体性能,增强***的抗DDos等安全能力。
一种可能的实施例中,步骤230,之后,还可以包括以下步骤:
在主进程完成DPDK初始化的情况下,对主进程进行网络加载。
在主进程完成DPDK初始化的情况下,向所有子进程发送用于指示“主进程DPDK初始化“完成的第二信号,以及加载主进程的网络,以进入服务状态。
传统本地DNS多进程实现架构,在主进程复制***出子进程前,完成网络的加载,从而达到***子出进程后,子进程继承主进程网络配置的目的。
基于本申请的实施例,由于是基于DPDK进行实现的,网络的加载需要在DPDK完成初始化之后进行,因此需要调整网络加载顺序,在主进程完成DPDK初始化的情况下,对主进程进行网络加载。一种可能的实施例中,步骤230之后,还可以包括以下步骤:
在主进程完成DPDK初始化的情况下,控制主进程向全部子进程发送第二信号,第二信号用于指示主进程完成DPDK初始化;
在子进程收到第二信号的情况下,控制子进程进行DPDK初始化。
传统本地DNS多进程实现流程,如图3所示,采用fork等***调用复制出子进程。但是,DPDK要求主进程负责共享资源等创建,主进程必须先完成DPDK初始化,子进程才能继续完成初始化,因此DPDK本身对***调用fork等方式兼容性差。
为解决上述问题,本申请的实施例,在主进程完成DPDK初始化的情况下,控制主进程向全部子进程发送用于指示主进程完成DPDK初始化的第二信号,以用于在子进程收到第二信号的情况下,控制子进程进行DPDK初始化,实现对主进程和子进程启动顺序的精准控制,从而使DPDK兼容fork等***调用,本地DNS***依旧保持原有多进程实现方式。
具体地,由于DPDK要求主进程负责共享资源等创建,主进程必须先完成DPDK初始化,子进程才能继续完成初始化,如图4所示,信号控制的具体步骤为:
首先,主进程启动后,加载配置,调用***方法fork***出子进程,进入信号等待状态,等待子进程启动完成。
其次,子进程启动后,向主进程发送用于指示“启动完成”的第一信号,之后进入等待“主进程DPDK初始化”完成信号状态。
接着,主进程收到全部子进程发送的用于指示“启动完成”的第二信号后,进行“主进程DPDK”初始化,包括创建DPDK共享资源池、网卡收发队列等。初始化完成后,向所有子进程发送“主进程DPDK初始化“完成信号,之后加载网络,进入服务状态。
最后,子进程收到“主进程DPDK”初始化完成信号后,进行“子进程DPDK初始化”,包括匹配DPDK共享资源池、匹配网卡收发队列等,之后进行网络加载,进入服务状态。
本申请的实施例,延续本地DNS***原有的多进程实现架构,同时,设计了基于信号的进程控制流程,使得DPDK可以兼容原本支持不佳的fork等***调用。
一种可能的实施例中,在上述涉及到的子进程收到第二信号的情况下,控制子进程进行DPDK初始化的步骤之后,还可以包括以下步骤:
在子进程完成DPDK初始化的情况下,对子进程进行网络加载。
其中,本地DNS的网络服务一般包含缓存模块、递归模块和控制模块。不同于一般的权威DNS服务器***,本地DNS并不是所有网络服务模块都适用于使用DPDK优化网络服务能力。具体原因如前文所述。
同时,为配合DPDK主子进程的加载顺序,对本地DNS网络加载顺序进行调整。其中,传统本地DNS多进程实现架构,在主进程复制***出子进程前,完成网络的加载,从而达到***子出进程后,子进程继承主进程网络配置的目的。
对于本申请的实施例,由于基于DPDK进行实现,网络的加载需要在DPDK完成初始化之后进行,因此需要调整网络加载顺序。即在子进程完成DPDK初始化的情况下,对子进程进行网络加载,由此,能够保证***的平稳运行。
其中,上述涉及到的在主进程完成DPDK初始化的情况下,对主进程进行网络加载的步骤中,具体可以包括以下步骤:
基于DPDK加载主进程的缓存模块;以及,
基于Kernel加载主进程的递归模块和主进程的控制模块。
在保证本地DNS原有多进程实现架构的情况下,将缓存模块、递归模块与控制模块的网络实现进行分离。
基于DPDK加载主进程的缓存模块,大幅提升本地DNS***的缓存服务性能;递归模块和控制模块保持基于kernel的实现方式,即基于Kernel加载主进程的递归模块和主进程的控制模块,***整体改动量小。
其中,控制模块,由于外部指令控制一般量很小,此部分同样使用挂载到kernel的***网卡。保证了外部***无感知,对***的控制与往常一致,易于运维。
其中,上述涉及到的在子进程完成DPDK初始化的情况下,对子进程进行网络加载的步骤中,具体可以包括以下步骤:
基于DPDK加载子进程的缓存模块;以及,
基于Kernel加载子进程的递归模块和子进程的控制模块。
本地DNS***的网络实现一般包含缓存模块、递归模块和用于外部运维的控制模块。
本申请的实施例,将缓存模块、递归模块和用于外部运维的控制模块分离实现,基于DPDK加载子进程的缓存模块,递归DNS和控制模块保持原有实现方式不变,基于Kernel加载子进程的递归模块和子进程的控制模块,即采用kernel提供的网络***调用实现。
一种可能的实施例中,本地DNS服务器包括:缓存模块、递归模块和控制模块,DPDK应用于缓存模块;实时操作***Kernel应用于递归模块和控制模块。
将本地DNS中缓存与递归、控制部分的网络实现进行分离,大幅提高本地DNS缓存响应服务能力,且做到***外部无感知,对***的控制等与往常一致;
由于递归模块的主要性能瓶颈在于与各级权威DNS服务器的网络时延,因此使用DPDK并不能带来递归性能的提升,所以本申请的实施例将缓存模块、递归模块和用于外部运维的控制模块进行分离,缓存网络处理基于DPDK实现,递归模块和控制模块基于kernel实现。
一种可能的实施例中,本地DNS服务器的网际互连协议地址IP为基于DPDK驱动的网卡IP,以用于客户端向基于DPDK驱动的网卡IP发送查询请求,方法还包括:
接收客户端发送的查询请求,查询请求包括域名信息;
响应于查询请求,查询域名信息对应的地址信息;
向客户端发送地址信息。
本地DNS服务器使用DPDK驱动的网卡,即本地DNS对外服务IP应为DPDK驱动的网卡IP,响应于客户端向基于DPDK驱动的网卡IP发送的查询请求,查询域名信息对应的地址信息,向客户端发送地址信息。
经测试,在DPDK驱动万兆网卡情况下,本地DNS***的缓存响应能力达到1000万QPS量级,***缓存性能提升数十倍。同时,由于本地DNS的服务中,缓存服务占据绝大多数,所以意味着***整体性能得到大幅提升,也因此在抗DDos攻击等安全能力方面得到提升。
每秒查询率(Queries-per-second,QPS)是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。
基于本方法的本地DNS***的性能优化方法,可以做到***外部无感知,对***的控制与往常一致,易于运维。
大幅提升本地DNS***整体性能,也因此在抗DDos等安全能力方面,获得极大提升。
其中,上述涉及到的响应于查询请求,查询域名信息对应的地址信息的步骤中,具体可以包括以下步骤:
响应于查询请求,在本地DNS服务器的缓存模块中查询域名信息对应的地址信息;
在查询到域名信息对应的地址信息的情况下,通过基于DPDK驱动的网卡IP向客户端发送地址信息。
DNS请求到来后,先在本地DNS服务器的缓存模块中查询域名信息对应的地址信息,若查询到域名信息对应的地址信息,则直接使用基于DPDK驱动的网卡IP网卡进行响应,向客户端发送地址信息。
其中,上述涉及到的响应于查询请求,在本地DNS服务器的缓存模块中查询域名信息对应的地址信息之后,还可以包括以下步骤:
在未在本地DNS服务器的缓存模块中查询到域名信息对应的地址信息的情况下,向递归模块转发查询请求,以用于递归模块查询域名信息对应的地址信息;
接收递归模块发送的域名信息对应的地址信息。
若未查询到域名信息对应的地址信息,则进入递归模块,即向递归模块转发查询请求,以用于递归模块查询域名信息对应的地址信息。其中,递归模块,使用挂载到kernel的***网卡,向各级权威进行递归查询,以用于递归模块查询域名信息对应的地址信息。
然后,接收递归模块发送的域名信息对应的地址信息,向客户端发送地址信息。
其中,上述涉及到的在未在本地DNS服务器的缓存模块中查询到域名信息对应的地址信息的情况下,向递归模块转发查询请求,以用于递归模块查询域名信息对应的地址信息的步骤中,具体可以包括以下步骤:
递归模块通过挂载到Kernel的***网卡IP,向各级权威DNS服务器进行递归查询,以获取域名信息对应的地址信息。
由于递归模块采用kernel提供的网络***调用实现,即递归模块使用挂载到kernel的***网卡,向各级权威DNS服务器进行递归查询,以用于接收各级权威DNS服务器发送的域名信息对应的地址信息。
然后,递归模块向缓存模块发送域名信息对应的地址信息,缓存模块向客户端发送地址信息。
本申请提供的本地域名***DNS服务器的优化方法中,通过启动本地DNS服务器的主进程,基于主进程***出多个子进程,以及启动多个子进程;其中,在子进程启动完成的情况下,控制子进程向主进程发送第一信号,第一信号用于指示子进程启动完成,在主进程收到全部子进程发送的第一信号的情况下,控制主进程进行数据平面开发套件DPDK初始化。这里,能够避免出现子进程未启动完成时主进程就开始进行DPDK初始化的情况,有效避免了本地DNS服务器在该情况下可能出现的崩溃问题。由此,本申请的实施例,基于信号控制,能够精准控制主进程和子进程的启动流程,实现本地DNS服务器对DPDK多进程架构的支持,使本地DNS服务器获得更好的并发能力,能够提升本地DNS服务器的整体性能,增强安全性。
基于上述图1所示的本地域名***DNS服务器的优化方法,本申请实施例还提供一种本地域名***DNS服务器的优化装置,如图5所示,该本地域名***DNS服务器的优化装置500可以包括:
启动模块510,用于启动所述本地DNS服务器的主进程;
***模块520,用于基于所述主进程***出多个子进程,以及启动所述多个子进程;其中,所述子进程在启动完成的情况下,控制所述子进程向所述主进程发送第一信号,所述第一信号用于指示所述子进程启动完成;
主进程初始化模块530,用于在所述主进程收到全部所述子进程发送的所述第一信号的情况下,控制主进程进行数据平面开发套件DPDK初始化。
一种可能的实施例中,该DNS服务器的优化装置500还包括:
发送模块,用于在所述主进程完成所述DPDK初始化的情况下,控制所述主进程向全部所述子进程发送第二信号,所述第二信号用于指示所述主进程完成所述DPDK初始化;
子进程初始化模块,用于在所述子进程收到所述第二信号的情况下,控制所述子进程进行DPDK初始化。
一种可能的实施例中,本地DNS服务器包括:缓存模块、递归模块和控制模块,所述DPDK应用于所述缓存模块;实时操作***Kernel应用于所述递归模块和所述控制模块。
一种可能的实施例中,该DNS服务器的优化装置500还包括:
第一加载模块,用于在所述主进程完成所述DPDK初始化的情况下,对所述主进程进行网络加载。
一种可能的实施例中,该DNS服务器的优化装置500还包括:
第二加载模块,用于在所述子进程完成所述DPDK初始化的情况下,对所述子进程进行网络加载。
一种可能的实施例中,第一加载模块,具体用于:
基于所述DPDK加载所述主进程的缓存模块;以及,
基于Kernel加载所述主进程的递归模块和所述主进程的控制模块。
一种可能的实施例中,第二加载模块,具体用于:
基于所述DPDK加载所述子进程的缓存模块;以及,
基于Kernel加载所述子进程的递归模块和所述子进程的控制模块。
一种可能的实施例中,所述本地DNS服务器的网际互连协议地址IP为基于所述DPDK驱动的网卡IP,以用于客户端向所述基于所述DPDK驱动的网卡IP发送查询请求,该DNS服务器的优化装置500还包括:
接收模块,用于接收所述客户端发送的查询请求,所述查询请求包括域名信息;
查询模块,用于响应于所述查询请求,查询所述域名信息对应的地址信息;
发送模块,用于向客户端发送所述地址信息。
一种可能的实施例中,查询模块,具体用于:
响应于所述查询请求,在所述本地DNS服务器的缓存中查询所述域名信息对应的所述地址信息;
在查询到所述域名信息对应的地址信息的情况下,通过所述基于所述DPDK驱动的网卡IP向客户端发送所述地址信息。
一种可能的实施例中,该DNS服务器的优化装置500还包括:
转发模块,用于在未在所述本地DNS服务器的缓存中查询到所述域名信息对应的地址信息的情况下,向所述递归模块转发所述查询请求,以用于所述递归模块查询所述域名信息对应的地址信息;
接收模块,还用于接收所述递归模块发送的所述域名信息对应的地址信息。
一种可能的实施例中,转发模块,具体用于:
所述递归模块通过挂载到Kernel的***网卡IP,向各级权威DNS服务器进行递归查询,以获取所述域名信息对应的地址信息。
本申请实施例,通过启动本地DNS服务器的主进程,基于主进程***出多个子进程,以及启动多个子进程;其中,在子进程启动完成的情况下,控制子进程向主进程发送第一信号,第一信号用于指示子进程启动完成,在主进程收到全部子进程发送的第一信号的情况下,控制主进程进行数据平面开发套件DPDK初始化。这里,能够避免出现子进程未启动完成时主进程就开始进行DPDK初始化的情况,有效避免了本地DNS服务器在该情况下可能出现的崩溃问题。由此,本申请的实施例,基于信号控制,能够精准控制主进程和子进程的启动流程,实现本地DNS服务器对DPDK多进程架构的支持,使本地DNS服务器获得更好的并发能力,能够提升本地DNS服务器的整体性能,增强安全性。
图6示出了本申请实施例提供的一种电子设备的硬件结构示意图。
在电子设备可以包括处理器601以及存储有计算机程序指令的存储器602。
具体地,上述处理器601可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。
存储器602可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器602可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(UniversalSerial Bus,USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器602可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器602可在综合网关容灾设备的内部或外部。在特定实施例中,存储器602是非易失性固态存储器。在特定实施例中,存储器602包括只读存储器(ROM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。
处理器601通过读取并执行存储器602中存储的计算机程序指令,以实现图所示实施例中的任意一种本地域名***DNS服务器的优化方法。
在一个示例中,电子设备还可包括通信接口606和总线610。其中,如图6所示,处理器601、存储器602、通信接口606通过总线610连接并完成相互间的通信。
通信接口606,主要用于实现本申请实施例中各模块、装置、单元和/或设备之间的通信。
总线610包括硬件、软件或两者,将电子设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、***组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线610可包括一个或多个总线。尽管本申请实施例描述和示出了特定的总线,但本申请考虑任何合适的总线或互连。
该电子设备可以执行本申请实施例中的本地域名***DNS服务器的优化方法,从而实现结合图1-4描述的本地域名***DNS服务器的优化方法。
另外,结合上述实施例中的本地域名***DNS服务器的优化方法,本申请实施例可提供一种计算机可读存储介质来实现。该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现图1的本地域名***DNS服务器的优化方法。
需要明确的是,本申请并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本申请的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本申请的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本申请的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
还需要说明的是,本申请中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或***。但是,本申请不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
以上所述,仅为本申请的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的***、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。
Claims (15)
1.一种本地域名***DNS服务器的优化方法,其特征在于,所述方法包括:
启动所述本地DNS服务器的主进程;
基于所述主进程***出多个子进程,以及启动所述多个子进程;其中,在所述子进程启动完成的情况下,控制所述子进程向所述主进程发送第一信号,所述第一信号用于指示所述子进程启动完成;
在所述主进程收到全部所述子进程发送的所述第一信号的情况下,控制主进程进行数据平面开发套件DPDK初始化。
2.根据权利要求1所述的方法,其特征在于,所述在所述主进程收到全部所述子进程发送的所述第一信号的情况下,控制主进程进行数据平面开发套件DPDK初始化之后,所述方法还包括:
在所述主进程完成所述DPDK初始化的情况下,控制所述主进程向全部所述子进程发送第二信号,所述第二信号用于指示所述主进程完成所述DPDK初始化;
在所述子进程收到所述第二信号的情况下,控制所述子进程进行DPDK初始化。
3.根据权利要求1所述的方法,其特征在于,所述本地DNS服务器包括:缓存模块、递归模块和控制模块,所述DPDK应用于所述缓存模块;实时操作***Kernel应用于所述递归模块和所述控制模块。
4.根据权利要求1所述的方法,其特征在于,所述在所述主进程收到全部所述子进程发送的所述第一信号的情况下,控制主进程进行数据平面开发套件DPDK初始化之后,所述方法还包括:
在所述主进程完成所述DPDK初始化的情况下,对所述主进程进行网络加载。
5.根据权利要求2所述的方法,其特征在于,所述在所述子进程收到所述第二信号的情况下,控制所述子进程进行DPDK初始化之后,所述方法还包括:
在所述子进程完成所述DPDK初始化的情况下,对所述子进程进行网络加载。
6.根据权利要求4所述的方法,其特征在于,所述在所述主进程完成所述DPDK初始化的情况下,对所述主进程进行网络加载,包括:
基于所述DPDK加载所述主进程的缓存模块;以及,
基于Kernel加载所述主进程的递归模块和所述主进程的控制模块。
7.根据权利要求5所述的方法,其特征在于,所述在所述子进程完成所述DPDK初始化的情况下,对所述子进程进行网络加载,包括:
基于所述DPDK加载所述子进程的缓存模块;以及,
基于Kernel加载所述子进程的递归模块和所述子进程的控制模块。
8.根据权利要求3所述的方法,其特征在于,所述本地DNS服务器的网际互连协议地址IP为基于所述DPDK驱动的网卡IP,以用于客户端向所述基于所述DPDK驱动的网卡IP发送查询请求,所述方法还包括:
接收所述客户端发送的查询请求,所述查询请求包括域名信息;
响应于所述查询请求,查询所述域名信息对应的地址信息;
向客户端发送所述地址信息。
9.根据权利要求8所述的方法,其特征在于,所述响应于所述查询请求,查询所述域名信息对应的地址信息,包括:
响应于所述查询请求,在所述本地DNS服务器的缓存中查询所述域名信息对应的所述地址信息;
在查询到所述域名信息对应的地址信息的情况下,通过所述基于所述DPDK驱动的网卡IP向客户端发送所述地址信息。
10.根据权利要求9所述的方法,其特征在于,所述响应于所述查询请求,在所述本地DNS服务器的缓存中查询所述域名信息对应的所述地址信息之后,所述方法还包括:
在未在所述本地DNS服务器的缓存中查询到所述域名信息对应的地址信息的情况下,向所述递归模块转发所述查询请求,以用于所述递归模块查询所述域名信息对应的地址信息;
接收所述递归模块发送的所述域名信息对应的地址信息。
11.根据权利要求10所述的方法,其特征在于,所述在未在所述本地DNS服务器的缓存中查询到所述域名信息对应的地址信息的情况下,向所述递归模块转发所述查询请求,以用于所述递归模块查询所述域名信息对应的地址信息,包括:
所述递归模块通过挂载到Kernel的***网卡IP,向各级权威DNS服务器进行递归查询,以获取所述域名信息对应的地址信息。
12.一种本地域名***DNS服务器的优化装置,其特征在于,所述本地域名***DNS服务器的优化装置包括:
启动模块,用于启动所述本地DNS服务器的主进程;
***模块,用于基于所述主进程***出多个子进程,以及启动所述多个子进程;其中,所述子进程在启动完成的情况下,控制所述子进程向所述主进程发送第一信号,所述第一信号用于指示所述子进程启动完成;
主进程初始化模块,用于在所述主进程收到全部所述子进程发送的所述第一信号的情况下,控制主进程进行数据平面开发套件DPDK初始化。
13.根据权利要求12所述的装置,其特征在于,所述装置还包括:
发送模块,用于在所述主进程完成所述DPDK初始化的情况下,控制所述主进程向全部所述子进程发送第二信号,所述第二信号用于指示所述主进程完成所述DPDK初始化;
子进程初始化模块,用于在所述子进程收到所述第二信号的情况下,控制所述子进程进行DPDK初始化。
14.一种电子设备,其特征在于,所述电子设备包括:处理器以及存储有计算机程序指令的存储器;所述处理器执行所述计算机程序指令时实现如权利要求1-11任一项所述本地域名***DNS服务器的优化方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现如权利要求1-11任一项所述本地域名***DNS服务器的优化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310050242.0A CN115934361B (zh) | 2023-02-01 | 2023-02-01 | 本地域名***服务器的优化方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310050242.0A CN115934361B (zh) | 2023-02-01 | 2023-02-01 | 本地域名***服务器的优化方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115934361A CN115934361A (zh) | 2023-04-07 |
CN115934361B true CN115934361B (zh) | 2023-06-23 |
Family
ID=86700991
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310050242.0A Active CN115934361B (zh) | 2023-02-01 | 2023-02-01 | 本地域名***服务器的优化方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115934361B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109445944A (zh) * | 2018-10-25 | 2019-03-08 | 武汉虹旭信息技术有限责任公司 | 一种基于dpdk的网络数据采集处理***及其方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018032399A1 (en) * | 2016-08-17 | 2018-02-22 | Zte Corporation | Server and method having high concurrency capability |
CN110413386B (zh) * | 2019-06-27 | 2023-06-30 | 深圳市富途网络科技有限公司 | 多进程处理方法、装置、终端设备及计算机可读存储介质 |
CN111107081B (zh) * | 2019-12-17 | 2022-01-11 | 深圳网基科技有限公司 | 基于dpdk的多进程dns服务方法和*** |
CN115150464B (zh) * | 2022-06-22 | 2024-03-15 | 北京天融信网络安全技术有限公司 | 应用代理方法、装置、设备及介质 |
-
2023
- 2023-02-01 CN CN202310050242.0A patent/CN115934361B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109445944A (zh) * | 2018-10-25 | 2019-03-08 | 武汉虹旭信息技术有限责任公司 | 一种基于dpdk的网络数据采集处理***及其方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115934361A (zh) | 2023-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8161544B2 (en) | Trusted communications with child processes | |
CN110377438B (zh) | 跨进程通信接口的路由方法、装置和*** | |
US7886139B2 (en) | Method to enable firmware to boot a system from an ISCSI device | |
JP5744717B2 (ja) | ディレクトリへのアクセスのための方法及びデバイス | |
US6772420B1 (en) | System for obtaining appropriate device drivers by accessing table having list of manufacturers and link-layer addresses assigned to device drivers | |
US20040249926A1 (en) | System and methd for common information model object manager proxy interface and management | |
US6868450B1 (en) | System and method for a process attribute based computer network filter | |
CN106375442B (zh) | 一种跨平台管理设备信息的方法和装置 | |
CN110532106B (zh) | 进程间的通讯方法、装置、设备和存储介质 | |
JP2017513098A (ja) | ファウンテンコードを用いる管理情報のブロードキャスト | |
CN112597039A (zh) | 虚拟机访问方法、***、设备及计算机可读存储介质 | |
CN1726463A (zh) | 用于安装和集成部件数据模型的***及方法 | |
CN115934361B (zh) | 本地域名***服务器的优化方法及相关设备 | |
KR101846778B1 (ko) | Id 확인 서비스 방법 및 이를 적용한 m2m 시스템 | |
US20050177577A1 (en) | Accessing data on remote storage servers | |
US6763387B1 (en) | Method and system for sharing a single communication port between a plurality of servers | |
CN107018140B (zh) | 一种权限控制方法和*** | |
US20050132237A1 (en) | Method, apparatus and program storage device for providing a remote power reset at a remote server through a network connection | |
CN110401686B (zh) | Whois查询方法、装置、设备及其存储介质 | |
CN114301872A (zh) | 基于域名的访问方法及装置、电子设备、存储介质 | |
CN110677378B (zh) | 一种mac地址的控制方法、智能终端及存储介质 | |
US20080140687A1 (en) | Socket structure simultaneously supporting both toe and ethernet network interface card and method of forming the socket structure | |
KR100317748B1 (ko) | 안전한 도메인 네임 시스템(dns)에서의전송제어프로토콜(tcp) 질의/응답 처리를 위한 존 정보접근 제어방법 및 네이밍 서비스 서버 | |
CN107766093B (zh) | 一种功能模块的共享方法及客户端 | |
CN111641668B (zh) | 网络中心进程控制***中的异构执行引擎 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder |
Address after: 100007 room 205-32, floor 2, building 2, No. 1 and No. 3, qinglonghutong a, Dongcheng District, Beijing Patentee after: Tianyiyun Technology Co.,Ltd. Address before: 100093 Floor 4, Block E, Xishan Yingfu Business Center, Haidian District, Beijing Patentee before: Tianyiyun Technology Co.,Ltd. |
|
CP02 | Change in the address of a patent holder |