一种域名数据采集方法、系统和装置与流程

文档序号:14010541阅读:169来源:国知局
一种域名数据采集方法、系统和装置与流程

本发明涉及网络通信领域,更具体地说,涉及一种域名数据采集方法、系统和装置。



背景技术:

目前网络通信中,用户可以不用记住ip地址就能方便地访问互联网,是由于dns解析功能可以将域名解析为ip地址,以通过域名就能与对应ip的服务器连接。

现在dns系统仍在很多隐患,由于dns不同层次的域名解析服务器存在依赖关系,一旦位于高层次网络中的dns服务器遭到攻击而陷入瘫痪,则用户无法正常获得dns服务。同时目前存在很多针对dns的攻击,如dos攻击,dns缓存污染,dns重定向,dns劫持等,这些攻击都会威胁dns的安全性和可用性,影响用户正常使用互联网。

对现有域名系统设计备份系统也逐渐成为国内外专家学者的研究热点。dns备份系统即在dns服务器不能正常为用户提供域名解析服务时,通过预先存储的大量域名解析数据,直接向用户返回域名解析数据。而获取这些预先存储的域名数据通常会占用大量的时间,导致不能为用户提供快速的为用户提供正常的服务。

因此,如何快速获取到域名数据,是本领域技术人员需要解决的问题。



技术实现要素:

本发明的目的在于提供一种域名数据采集方法、系统和装置,快速获取到域名数据。

为实现上述目的,本发明实施例提供了如下技术方案:

一种域名数据采集方法,包括:

利用dpdk主程序捕获dns数据包,并将所述dns数据包写入共享内存;

将所述共享内存中的所述dns数据包进行处理得到域名数据,并将所述域名数据读至虚拟内存;其中,所述域名数据包括所述dns数据包的域名、a记录。

其中,所述将所述域名数据读至虚拟内存,包括:

利用至少两个线程将所述域名数据读至虚拟内存。

其中,所述利用dpdk主程序捕获dns数据包,并将所述dns数据包写入共享内存,包括:

利用dpdk主程序检查接收内核的接收队列是否有数据包;

若是,则读取所述数据包,并判断所述数据包是否为dns数据包;

若是,则将所述dns数据包写入共享内存。

其中,所述判断所述数据包是否为dns数据包,包括:

利用预设acl规则对所述数据包进行匹配以判断所述数据包是否为dns数据包。

其中,所述将所述dns数据包写入共享内存之前,还包括:

通过检查所述dns数据包的udp首部,判断所述dns数据包是否为分片数据包;

若是,则继续接收对应所述dns数据包的其他分片数据包,并将所述所有分片重组得到新的dns数据包;

则所述将所述dns数据包写入共享内存,包括:

将所述新的dns数据包写入共享内存。

其中,所述将dns数据包进行处理得到域名数据,并将所述域名数据读至虚拟内存之后,还包括:

对所述域名数据进行处理得到ip地址定位表;其中,所述ip地址定位表包括起始ip地址、终止ip地址、地理位置、所属运营商。

一种域名数据采集系统,包括:

捕获模块,用于利用dpdk主程序捕获dns数据包,并将所述dns数据包写入共享内存;

第一处理模块,用于将所述共享内存中的所述dns数据包进行处理得到域名数据,并将所述域名数据读至虚拟内存;其中,所述域名数据包括所述dns数据包的域名、a记录。

其中,所述捕获模块,包括:

检查单元,用于利用dpdk主程序检查接收内核的接收队列是否有数据包;

判断单元,用于所述接收队列由数据包时,读取所述数据包,并判断所述数据包是否为dns数据包;

写入单元,用于所述数据包是dns数据包时,将所述dns数据包写入共享内存。

其中,还包括:

第二处理模块,用于将dns数据包进行处理得到域名数据,并将所述域名数据读至虚拟内存之后,对所述域名数据进行处理得到ip地址定位表;其中,所述ip地址定位表包括起始ip地址、终止ip地址、地理位置、所属运营商。

一种域名数据采集装置,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如权利要求1至6任一项所述域名数据采集方法的步骤。

通过以上方案可知,本发明实施例提供的一种域名数据采集方法,利用dpdk主程序捕获dns数据包,并将所述dns数据包写入共享内存;将所述共享内存中的所述dns数据包进行处理得到域名数据,并将所述域名数据读至虚拟内存;其中,所述域名数据包括所述dns数据包的域名、a记录。

由此可见,本发明实施例提供的一种域名数据采集方法,基于inteldpdk技术,依托其每秒达到百万级bps收发包的高性能特性,来捕获dns数据包,从而提高了域名数据采集的效率,可以使dns备份系统更好的提供dns服务。本发明实施例还提供了一种域名数据采集系统及装置,同样可以实现上述技术效果。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例公开的一种域名数据采集方法流程图;

图2为本发明实施例公开的一种具体的域名数据采集方法流程图;

图3为本发明实施例公开的一种具体的域名数据采集方法流程图;

图4为本发明实施例公开的一种域名数据采集系统结构示意图;

图5为本发明实施例公开的一种具体的域名数据采集系统结构示意图;

图6为本发明实施例公开的一种具体的域名数据采集系统结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例公开了一种域名数据采集方法、系统和装置,快速获取到域名数据。

参见图1,本发明实施例提供的一种域名数据采集方法,具体包括:

s101,利用dpdk主程序捕获dns数据包,并将所述dns数据包写入共享内存。

在本方案中利用inteldpdk(dataplanedevelopmentkit,数据平面开发套件)来捕获dns数据包。inteldpdk是一套专门针对高速网络而设计的数据平台库。它与英特尔架构产品家族中的所有处理器兼容,提供了一个可以用于从英特尔凌动到最新的英特尔至强处理器的统一软件编程模式,适用于大量不同的网络应用程序和系统配置。

inteldpdk应用程序位于用户空间中,并使用数据平台库来接收和发送数据包,在进行常规数据平台处理时绕过了linux内核。它的编译、连接和载入都是以常规方式进行的。同时应用程序作为一个单一linux进程启动,使用线程实现并发处理,并将每个线程附着到指定的内核。

在传统的linux模式下,系统接收数据包和将数据包发送出系统的过程占了包处理中很大一部分时间。换句话说,即使用户空间应用程序什么都不做,而只是将数据包从接收端口传送到发送端口,那么仍然会花费大量的处理时间。一个网络包从被网卡接收到递交给用户空间应用程序,要经历中断处理、上下文切换、系统调用、数据复制等过程,这些过程将花费额外的时间。而inteldpdkapi(应用程序编程接口)使应用程序在初始化的时候留出内存,包括缓冲池、描述符环和无锁队列。通过在一开始就分配缓冲区,应用程序就可以避免在常规数据平台处理的时候向linux内核请求缓冲区以及相关的开销。在正常的操作中,应用程序根据需要调用相应的inteldpdkapi,从这一内存中分配和取消分配缓冲区。再加上inteldpdk启用的网卡驱动程序,数据帧就可以在接收时被直接放置到应用程序缓冲区中,并且在发送时直接从应用程序缓冲区中获取,而无需内核的干预,从而提供了一个零拷贝的数据平台环境。这样的实际效果就是inteldpdk使数据平台的处理能够绕过linux内核。inteldpdk通过持续地检查网卡有没有接收到数据帧,消除了处理网络活动中断而引起的开销。

在本方案中,采用inteldpdk技术,依托其每秒达百万级bps收发包的高性能特性,可在多个省份部署节点,同时使用dpdk捕获引擎获得发往dns服务器的镜像数据流。而后提取数据流中的dns请求包和dns响应包,并加以分析,从而提取其中的域名、a记录、访问时间等信息,最后将其存入数据库缓冲,等待存入数据存储模块。

具体地,首先利用dpdk主程序捕获dns数据包,然后将dns数据包写入到共享内存中。其中,对于dns数据包的捕获可以通过接收内核的接收队列进行捕获。在接收队列中,还会有非dns数据包,因此还可以在捕获时进行判断,如果是dns包,再进行捕获。对于dns包的判断可以通过预设的acl规则进行匹配。

将s102,将所述共享内存中的所述dns数据包进行处理得到域名数据,并将所述域名数据读至虚拟内存;其中,所述域名数据包括所述dns数据包的域名、a记录。

具体地,对捕获到的dns数据包作进一步的处理以获取域名、a(address)记录等信息。在具体实现中,首先可以利用程序调用函数来初始化共享内存,然后将数据包进行处理并将处理结果存储到虚拟内存中。需要说明的是,读到虚拟内存的过程可以是多线程共同进行,以提高效率。

由此可见,本发明实施例提供的一种域名数据采集方法,基于inteldpdk技术,依托其每秒达到百万级bps收发包的高性能特性,来捕获dns数据包,从而提高了域名数据采集的效率,可以使dns备份系统更好的提供dns服务。

本发明实施例提供一种具体的域名数据采集方法,区别于上述实施例,本发明实施例对上述实施例中s101做了具体的限定和说明,其他步骤内容与上述实施例大致相同,具体可以参考上述实施例,此处不再赘述。

参见图2,本发明实施例提供的一种具体的域名数据采集方法,具体包括:

s201,利用dpdk主程序检查接收内核的队列是否有数据包。

具体地,对于dns数据包的捕获,可以通过接收内核来完成。利用dpdk主程序检查接收内核的接收队列是否有数据包。其中,对数据包的检查可以是周期性进行,每次检查的间隔时间可以根据实际情况确定。

s202,若是,则读取所述数据包,并判断所述数据包是否为dns数据包。

具体地,由于队列中接收到的数据包可能会存在其他类型的数据包,因此需要对数据包进行进一步的判断,判断其是否为dns数据包。判断方法可以利用预先设定的acl规则进行匹配,若匹配到则为dns数据包,进行下列步骤,如果没有匹配到,则说明此包不是dns数据包,则可以将其丢弃。

s203,若是,则将所述dns数据包写入共享内存。

s204,将所述共享内存中的所述dns数据包进行处理得到域名数据,并将所述域名数据读至虚拟内存;其中,所述域名数据包括所述dns数据包的域名、a记录。

为了提高dns数据包在网络中传输的效率,通常会对数据包进行分片处理,即当数据包比链路最大传输单元大时,就可以被分解为很多的足够小片段,以便能够在其上进行传输。为此,本发明实施例提供一种具体的域名数据采集方法,在接收dns数据包时,检查其是否分片,从而保证可以对分片的dns数据包进行合并,保证dns数据包的完成性。本发明实施例与上述实施例可以相互参考。

参见图3,本发明实施例提供的一种具体的域名数据采集方法,具体包括:

s301,利用dpdk主程序检查接收内核的队列是否有数据包。

s302,若是,则读取所述数据包,并判断所述数据包是否为dns数据包。

s303,若是,则通过检查所述dns数据包的udp首部,判断所述dns数据包是否为分片数据包。

s304若是,则继续接收对应所述dns数据包的其他分片数据包,并将所述所有分片重组得到新的dns数据包。

在本方案中,可以通过检查数据包的udp首部判断当前数据包是否分片,若是则继续等待下一个分片,接收到所有分片后,对所有分片进行组装,得到新的dns数据包。

s305,若是,则将所述新的dns数据包写入共享内存。

s306,将所述共享内存中的所述dns数据包进行处理得到域名数据,并将所述域名数据读至虚拟内存;其中,所述域名数据包括所述dns数据包的域名、a记录。

本发明实施例提供一种具体的域名数据采集方法,以提供更详细的域名信息,从而可以使dns备份系统可以为用户提供更智能的域名解析服务。本发明实施例与上述实施例可以相互参照。本发明实施例在上述任一实施例的基础上增加对域名数据进一步处理的步骤。具体地,在上述任一实施例的基础上,将dns数据包进行处理得到域名数据,并将所述域名数据读至虚拟内存之后,还包括:

对所述域名数据进行处理得到ip地址定位表;其中,所述ip地址定位表包括起始ip地址、终止ip地址、地理位置、所属运营商。

在本方案中,获得到域名数据后,对其中ip地址进行定位,即对dns请求的源ip地址进行定位以确定用户的地理位置和运营商,使dns备份系统在解析时选取与用户地理位置、运营商均相同的a记录,以提高服务的速度和质量。定位时,本方案中使用纯真ip地址数据库,并对其进一步处理,生成一个包含起始ip地址、终止ip地址、地理位置和所属运营商的ip地址定位表。

下面对本发明实施例提供的一种域名数据采集系统进行介绍,下文描述的一种域名数据采集系统与上文描述的一种域名数据采集方法可以相互参照。

参见图4,本发明实施例提供的一种域名数据采集系统,具体包括:

捕获模块401,用于利用dpdk主程序捕获dns数据包,并将所述dns数据包写入共享内存。

具体地,首先捕获模块401利用dpdk主程序捕获dns数据包,然后将dns数据包写入到共享内存中。其中,对于dns数据包的捕获可以通过接收内核的接收队列进行捕获。在接收队列中,还会有非dns数据包,因此还可以在捕获时进行判断,如果是dns包,再进行捕获。对于dns包的判断可以通过预设的acl规则进行匹配。

第一处理模块402,用于将所述共享内存中的所述dns数据包进行处理得到域名数据,并将所述域名数据读至虚拟内存;其中,所述域名数据包括所述dns数据包的域名、a记录。

具体地,第一处理模块402对捕获到的dns数据包作进一步的处理以获取域名、a(address)记录等信息。在具体实现中,首先可以利用程序调用函数来初始化共享内存,然后将数据包进行处理并将处理结果存储到虚拟内存中。需要说明的是,读到虚拟内存的过程可以是多线程共同进行,以提高效率。

由此可见,本发明实施例提供的一种域名数据采集方法,基于inteldpdk技术,捕获模块401依托其每秒达到百万级bps收发包的高性能特性,来捕获dns数据包,从而提高了域名数据采集的效率,可以使dns备份系统更好的提供dns服务。

本发明实施例提供一种具体的域名数据采集系统,区别于上述实施例,本发明实施例对上述实施例中捕获模块401做了具体的限定和说明,其他模块内容与上述实施例大致相同,具体可以参考上述实施例,此处不再赘述。

参见图5,本发明实施例提供的一种具体的域名数据采集系统,具体包括:

检查单元501,用于利用dpdk主程序检查接收内核的接收队列是否有数据包。

具体地,对于dns数据包的捕获,可以通过接收内核来完成。检查单元501利用dpdk主程序检查接收内核的接收队列是否有数据包。其中,对数据包的检查可以是周期性进行,每次检查的间隔时间可以根据实际情况确定。

判断单元502,用于所述接收队列由数据包时,读取所述数据包,并判断所述数据包是否为dns数据包。

具体地,由于队列中接收到的数据包可能会存在其他类型的数据包,因此需要对数据包进行进一步的判断,判断其是否为dns数据包。判断单元502可以利用预先设定的acl规则进行匹配,若匹配到则为dns数据包,继续调用其他模块进行后续的操作,如果没有匹配到,则说明此包不是dns数据包,则可以将其丢弃。

写入单元503,用于所述数据包是dns数据包时,将所述dns数据包写入共享内存。

第一处理模块402,用于将所述共享内存中的所述dns数据包进行处理得到域名数据,并将所述域名数据读至虚拟内存;其中,所述域名数据包括所述dns数据包的域名、a记录。

为了提高dns数据包在网络中传输的效率,通常会对数据包进行分片处理,即当数据包比链路最大传输单元大时,就可以被分解为很多的足够小片段,以便能够在其上进行传输。为此,本发明实施例提供一种具体的域名数据采集系统,在接收dns数据包时,检查其是否分片,从而保证可以对分片的dns数据包进行合并,保证dns数据包的完成性。本发明实施例与上述实施例可以相互参考。

参见图6,本发明实施例提供的一种具体的域名数据采集系统,具体包括:

检查单元501,用于利用dpdk主程序检查接收内核的接收队列是否有数据包。

判断单元502,用于所述接收队列由数据包时,读取所述数据包,并判断所述数据包是否为dns数据包。

分片检查单元601,用于当所述数据包为dns数据包时,通过检查所述dns数据包的udp首部,判断所述dns数据包是否为分片数据包。

重组单元602,用于当所述dns数据包为分片数据包时,继续接收对应所述dns数据包的其他分片数据包,并将所述所有分片重组得到新的dns数据包。

在本方案中,分片检查单元601可以通过检查数据包的udp首部判断当前数据包是否分片,若是则继续等待下一个分片,接收到所有分片后,重组单元602对所有分片进行组装,得到新的dns数据包。

写入单元503,用于将新的dns数据包写入共享内存。

第一处理模块402,用于将所述共享内存中的所述dns数据包进行处理得到域名数据,并将所述域名数据读至虚拟内存;其中,所述域名数据包括所述dns数据包的域名、a记录。

本发明实施例提供一种具体的域名数据采集系统,以提供更详细的域名信息,从而可以使dns备份系统可以为用户提供更智能的域名解析服务。本发明实施例与上述实施例可以相互参照。本发明实施例在上述任一实施例的基础上增加对域名数据进一步处理的操作。具体地,在上述任一实施例的基础上,还包括:

第二处理模块,用于将dns数据包进行处理得到域名数据,并将所述域名数据读至虚拟内存之后,对所述域名数据进行处理得到ip地址定位表;其中,所述ip地址定位表包括起始ip地址、终止ip地址、地理位置、所属运营商。

在本方案中,获得到域名数据后,第二处理模块对其中ip地址进行定位,即对dns请求的源ip地址进行定位以确定用户的地理位置和运营商,使dns备份系统在解析时选取与用户地理位置、运营商均相同的a记录,以提高服务的速度和质量。定位时,本方案中使用纯真ip地址数据库,并对其进一步处理,生成一个包含起始ip地址、终止ip地址、地理位置和所属运营商的ip地址定位表。

下面对本发明实施例提供的一种域名数据采集装置进行介绍,下文描述的一种域名数据采集装置与上文描述的一种域名数据采集方法可以相互参照。

本发明实施例提供的一种域名数据采集装置,具体包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上述任一方法实施例所述域名数据采集方法的步骤。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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