一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

实现高性能DNS服务的方法、装置、计算机设备和存储介质与流程

2022-04-27 08:19:58 来源:中国专利 TAG:

实现高性能dns服务的方法、装置、计算机设备和存储介质
技术领域
1.本技术涉及计算机域名解析技术领域,特别是涉及一种实现高性能dns服务的方法、装置、计算机设备和存储介质。


背景技术:

2.dns(domainname system,域名系统),因特网上作为域名和ip地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的ip数串。通过主机名,最终得到该主机名对应的ip地址的过程叫做域名解析(或主机名解析)。dns协议运行在udp协议之上,使用端口号53。在rfc文档中rfc 2181对dns有规范说明,rfc 2136对dns的动态更新进行说明,rfc 2308对dns查询的反向缓存进行说明。
3.dns(domain name system)是互联网查询的第一跳,是重要的互联网基础设施。随着互联网和物联网的发展对dns的性能要求日益增加。
4.现有的dns主要有两种数据层面的架构:
5.一、采用传统的socket服务器编程开发,依赖内核协议栈,性能受限于内核协议栈。
6.二、另外也有采用内核bypass(绕开)技术,绕过内核协议栈的限制,将数据包直接发送到用户态直接处理。
7.但是,上述两种架构都存在一定的缺陷:
8.第一种架构,主要是性能不高,一般在200w qps(query per second)以下。
9.第二种架构,开发环境部署复杂,内核被bypass(绕开)之后,内核中丰富的资源无法被使用,所以需要将很多功能实现也移植到用户态。


技术实现要素:

10.基于此,有必要针对上述技术问题,提供一种实现高性能dns服务的方法、装置、计算机设备和存储介质,可以不对内核bypass的同时还满足高性能需求。
11.本发明的第一方面,提供了一种实现高性能dns服务的方法,包括:
12.将bpf包过滤器附着在内核网卡驱动上的xdp钩子上;
13.对传输层协议中为udp53端口的数据包,直接传送到用户态进程处理dns请求,对其它非udp53端口的数据包传送给内核协议栈后再传送到用户态进程处理dns请求;
14.用户态进程处理完所述dns请求后根据socket端口类型采取不同的应答发送方式。
15.进一步地,用户态进程处理完udp53端口发来的dns请求后通过网卡发送出去,对非udp53端口发来的dns请求通过内核协议栈发送出去,其它非udp53端口的数据包包括tcp 53端口的数据包。
16.进一步地,所述的bpf包过滤器是执行包过滤程序的字节码,由ebpf虚拟机执行。
17.进一步地,在操作系统内核的网卡驱动上暴漏一或多个xdp钩子,bpf的包过滤程
序连接到这些钩子上。
18.进一步地,ebpf过滤包和用户层程序通过bpf map进行双向通讯。
19.本发明的第二方面,提供了一种实现高性能dns服务的装置,包括:
20.bpf包过滤单元,所述bpf包过滤单元附着于内核网卡驱动上的xdp钩子上,用于将接收的dns数据包进行处理后发送给dns应答服务单元,其中,对传输层协议中为udp53端口的数据包,直接传送到用户态进程处理dns请求,对其它非udp53端口的数据包传送给内核协议栈后再传送到用户态进程处理dns请求;
21.dns应答服务单元,用于处理bpf包过滤单元传送过来的dns数据包,其中,对udp53端口发来的dns请求通过网卡将发送应答,对非udp53端口发来的dns请求通过内核协议栈发送应答。
22.本发明的第三方面,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本发明第一方面所述的方法之一。
23.本发明的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如本发明第一方面所述的方法之一。
24.本发明所提供的实现高性能dns服务的方法、装置、计算机设备和存储介质,通过将bpf包过滤单元附着于内核中网卡驱动上的xdp钩子上,udp53流量不经过内核协议栈,处理快,同时不影响其他流量,对udp53请求包的处理速度有明显提升,对于10g网卡能达到800w qps的性能。
附图说明
25.图1为本发明实施例中的实现高性能dns服务的方法的流程示意图;
26.图2为本发明实施例中的实现高性能dns服务的装置的结构示意图。
27.图3是本发明实施例中的计算机设备的结构示意图。
具体实施方式
28.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。此外,为了清楚和简洁,省略对公知功能和结构的描述。
29.本文使用的术语仅用于描述本发明的各种实施例,而不旨在限制本发明。除非上下文另有明确指示,否则单数形式旨在包括复数形式。在本发明中,应理解,术语“包括”或“具有”指示特征、数字、步骤、操作、元件、部件或其组合的存在,并且不排除一个或更多个其它特征、数字、步骤、操作、元件、部件或其组合的存在,或添加一个或更多个其它特征、数字、步骤、操作、元件、部件或其组合的可能性。
30.在介绍本发明实施例提供的实现高性能dns服务的方法及装置之前,先介绍linux网络的架构。
31.linux网络核心架构从上往下可以分为三层,分别是:用户空间的应用层、内核空间的网络协议栈层、物理硬件层。
32.linux的整个网络协议栈都构建于linux kernel中,整个栈也是严格按照分层的
思想来设计的,整个栈共分为五层,分别是:1,系统调用接口层,实质是一个面向用户空间应用程序的接口调用库,向用户空间应用程序提供使用网络服务的接口。2,协议无关的接口层,就是socket层,这一层的目的是屏蔽底层的不同协议(更准确的来说主要是tcp与udp,当然还包括raw ip,sctp等),以便与系统调用层之间的接口可以简单,统一。简单的说,不管应用层使用什么协议,都要通过系统调用接口来建立一个socket,这个socket其实是一个巨大的sock结构,它和下面一层的网络协议层联系起来,屏蔽了不同的网络协议的不同,只把数据部分呈献给应用层(通过系统调用接口来呈献)。3,网络协议实现层,是整个协议栈的核心,这一层主要实现各种网络协议,最主要的是ip,icmp,arp,rarp,tcp,udp等。4,与具体设备无关的驱动接口层,这一层的目的主要是为了统一不同的接口卡的驱动程序与网络协议层的接口,它将各种不同的驱动程序的功能统一抽象为几个特殊的动作,如open,close,init等,这一层可以屏蔽底层不同的驱动程序。5,驱动程序层,这一层的目的就是建立与硬件的接口层。
33.实施例一
34.图1为根据本技术的示例性的实施例提供的实现高性能dns服务的方法的流程图。该方法包括如下步骤:
35.步骤s101,将bpf包过滤器附着在内核网卡驱动上的xdp钩子上;bpf包过滤器作用于网卡接收到的每个数据包,进行过滤,其中,对传输层协议中为udp53端口的数据包,直接传送到用户态进程处理dns请求,对其它非udp53端口的数据包传送给内核协议栈后再传送到用户态进程处理dns请求。其中,其它非udp53端口的数据包包括tcp 53端口的数据包,对其它非udp53的数据包通过传统的内核协议栈再到达位于用户层的dns进行应答服务。53端口为dns服务器所开放,主要用于域名解析。hook机制允许应用程序拦截并处理消息或指定事件。
36.在计算机网络中,hook钩子在操作系统中用于在调用前或执行过程中拦截网络数据包,linux内核中暴露了1或多个xdp钩子,bpf程序可以连接到这些钩子上,实现数据收集和自定义事件处理。linux内核中存在的钩子点可以有很多,比如说说xdp钩子和tc钩子。
37.xdp全称为express data path,是linux网络数据路径上内核集成的网卡驱动程序中的一个快速处理数据包的hook点,也就是一个钩子,具有安全、可编程、高性能的特点。xdp程序可以在最早的时间点,对接收到的数据包进行丢弃、修改、允许等操作,本质上xdp程序所做的是对接收的数据包进行决策,然后对接收的数据包内容进行编辑或者仅返回一个结果码,结果码用于决定对数据包进行的操作:可以丢弃数据包,或将其发送到同一个接口,也可以将其传递给其余的网络栈。xdp对数据包的处理位于非常的底层(在网卡的驱动程序处),它只存在于rx路径上,允许在网络设备驱动内部网络堆栈中数据来源最早的地方进行数据包处理,在特定模式下可以在操作系统分配内存(skb)之前就已经完成处理,避免了很多内核skb处理开销(socketbuffer,数据包的管理结构),可以将很多处理逻辑offload到网卡硬件。xdp暴露了一个可以加载bpf程序的网络钩子,在这个钩子中,程序能够对传入的数据包进行任意修改和快速决策,避免了内核内部处理带来的额外开销。这使得xdp在性能速度方面成为最佳钩子。ebpf分为用户空间程序和内核程序两部分:用户空间程序负责加载bpf字节码至内核,如需要也会负责读取内核回传的统计信息或者事件详情;内核中的bpf字节码负责在内核中执行特定事件,如需要也会将执行的结果通过maps或者
perf-event事件发送至用户空间;其中用户空间程序与内核bpf字节码程序可以使用map结构实现双向通信,这为内核中运行的bpf字节码程序提供了更加灵活的控制。
38.其中,bpf包过滤器是执行包过滤程序的字节码,由ebpf虚拟机执行。
39.其中,bpf全称叫做“berkeley packet filter”(柏克莱封包过滤器),最初用于网络链路层的报文过滤,但经过多年的发展,bpf现在所能实现的功能已经远远超过了“包过滤”这一范畴。bpf分为cbpf和ebpf,其中cbpf指的是classic bpf,即经典(老的)bpf,ebpf(extended berkeley packet filter)指的是扩展(新的)bpf,在原来的bpf基础上加入了jit,使得它实际上成了一个虚拟机。ebpf可以理解为linux内核中的“虚拟机”,虚拟机中运行的是bpf的“字节码”,在将字节码附着于入口前,内核会使用“检查器”对字节码的合法性、规范性进行检查,检查通过的才会进行附着。ebpf程序具有如下特点:ebpf程序支持自己的字节码语言,基于该字节码语言编译成内核原生代码,就像bpf程序一样;ebpf在内核中运行;ebpf程序对内核内存访问是有限制的,只能通过内核提供的函数去获取严格限制的必须的内存;ebpf可以和user空间的程序通过bpf map进行通讯;ebpf必须编译成字节码才能使用。
40.步骤s102,用户态进程处理完所述dns请求后根据socket端口类型采取不同的应答发送方式。
41.其中,用户态进程处理完udp53端口发来的dns请求后通过网卡将应答结果发送出去,对非udp53端口发来的dns请求通过内核协议栈将应答结果发送出去。
42.实施例二
43.本发明的实施例二提供了一种实现高性能dns服务的装置,包括:bpf包过滤单元和dns应答服务单元,其中,
44.bpf包过滤单元,位于内核态层面,附着于内核网卡驱动上的xdp钩子上,用于将接收的dns数据包进行处理后发送给dns应答服务单元,其中,对传输层协议中为udp53端口的数据包,直接传送到用户态进程处理dns请求,对其它非udp53端口的数据包传送给内核协议栈后再传送到用户态进程处理dns请求;
45.dns应答服务单元,位于用户态层面,用于处理bpf包过滤单元传送过来的dns数据包,其中,对udp53端口发来的dns请求通过网卡将发送应答,对非udp53端口发来的dns请求通过内核协议栈发送应答。
46.由于bpf包过滤单元是在网卡刚收到数据包还没有拷贝到内核协议栈之前,所以udp53的请求与应答都没有经过内核协议栈,所以性能非常高,处理速度会有显著提升。
47.关于本实施例实现高性能dns服务的装置的具体限定可以参见上文中对于实现高性能dns服务的方法的限定,在此不再赘述。上述实现高性能dns服务的装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
48.实施例三
49.本发明的实施例三提供了一种计算机设备,其内部结构图可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非
易失性存储介质存储有操作系统、计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与其他的终端或者服务通过网络连接通信。该计算机程序被处理器执行时以实现一种实现高性能dns服务的方法。其中,该计算机设备可以服务器,该服务器还可以包括数据库,该服务器的数据库可以存储预先训练的分类模型。该计算机设备还可以终端,该终端还可以包括显示屏和输入装置,该终端的显示屏可以是液晶显示屏或者电子墨水显示屏,该终端的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等,也还可以是语音识别装置或者文字识别装置。
50.本领域技术人员可以理解,图3中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
51.在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述实现高性能dns服务的方法的步骤。此处实现高性能dns服务的方法的步骤可以是上述各个实施例的实现高性能dns服务的方法中的步骤:将bpf包过滤器附着在内核网卡驱动上的xdp钩子上;对传输层协议中为udp53端口的数据包,直接传送到用户态进程处理dns请求,对其它非udp53端口的数据包传送给内核协议栈后再传送到用户态进程处理dns请求;用户态进程处理完所述dns请求后根据socket端口类型采取不同的应答发送方式。
52.实施例四
53.本发明的实施例四,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述实现高性能dns服务的方法的步骤。此处实现高性能dns服务的方法的步骤可以是上述各个实施例的实现高性能dns服务的方法中的步骤:将bpf包过滤器附着在内核网卡驱动上的xdp钩子上;对传输层协议中为udp53端口的数据包,直接传送到用户态进程处理dns请求,对其它非udp53端口的数据包传送给内核协议栈后再传送到用户态进程处理dns请求;用户态进程处理完所述dns请求后根据socket端口类型采取不同的应答发送方式。
54.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
55.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
56.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献