CN116016687A - 一种基于dpdk的报文分流方法及系统 - Google Patents
一种基于dpdk的报文分流方法及系统 Download PDFInfo
- Publication number
- CN116016687A CN116016687A CN202211675471.3A CN202211675471A CN116016687A CN 116016687 A CN116016687 A CN 116016687A CN 202211675471 A CN202211675471 A CN 202211675471A CN 116016687 A CN116016687 A CN 116016687A
- Authority
- CN
- China
- Prior art keywords
- message
- network card
- dpdk
- matching rule
- inlet
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 230000015654 memory Effects 0.000 claims abstract description 80
- 230000006870 function Effects 0.000 claims description 12
- 238000004891 communication Methods 0.000 claims description 2
- 230000005540 biological transmission Effects 0.000 abstract description 14
- 238000004458 analytical method Methods 0.000 abstract description 7
- 238000012545 processing Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 4
- 230000003139 buffering effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种基于DPDK的报文分流方法及系统,方法包括:在入口网卡上配置DPDK套件并获取入口网卡编号及出口网卡编号,并初始化入口网卡;基于网络层地址或传输层协议号及其端口号并按照预设格式制定报文匹配规则,存储至Mbuf结构内存;采用轮询方式获取报文,并根据报文匹配规则对报文进行第一次报文匹配,并将匹配成功的报文复制至Mbuf结构内存;根据报文匹配规则对内存空间的报文进行第二次报文匹配,并将匹配成功的报文按照所述出口网卡编号发送至对应出口网卡缓冲队列。本发明基于DPDK套件进行报文分流,无需经过硬件中断与内核调用,缩短了解析流程,提高了CPU利用率与转发效率,降低了内存读写次数。
Description
技术领域
本发明涉及网络数据处理技术领域,具体涉及一种基于DPDK的报文分流方法及系统。
背景技术
伴随当今互联网网络环境的普及和网络流量的瞬间暴涨,网络服务器作为一种为用户提供共享信息资源和各种服务的高性能网络设备,其处理网络数据的能力显得尤为重要。而网卡作为网络服务器的网络接口部件,负责接收和处理网络数据,其网络数据处理能力决定了网络服务器的性能。随着多核CPU技术在网卡上的应用,其并行处理数据的方式大大提升了网络数据的处理速度。
在现有具体实现方式中,报文分流一般基于内核协议栈实现,通过配置IP地址等5元组信息选择出口网卡。数据报文从网卡到内核协议栈需要频繁的响应硬件中断,同时报文解析过程由内核协议栈处理,流程较长且无法充分利用CPU进行合理的分配。在报文规则匹配时需要对报文进行多次拷贝,且规则需要通过命令工具如iptables/ebtables等下发到内核中才可以生效,想要达到灵活的分流效果,则需要通过命令建立多个iptables链,需要经过多次规则匹配才能实现。此外分流策略受限于arp(address resolution protocol,地址解析协议)表,无法实现多网口广播。
在进行分流的过程中如果同时进行攻击防护,如DDOS(Distributed Denial ofService,分布式阻断服务攻击的防护),由于报文在内核协议栈中经过较长的流程,报文解析、规则匹配、攻击防护等流程是通过协议栈的不同挂载点实现调用的,这会导致攻击防护功能不理想,报文处理不及时等问题。
发明内容
因此,本发明要解决的技术问题在于克服现有技术中报文分流繁琐、报文处理不及时的缺陷,从而提供一种基于DPDK的报文分流方法及系统,能够基于DPDK套件采用轮询方式获取报文,并通过更灵活的进出网口报文匹配规则与bpf字节码快速匹配方式进行报文匹配,CPU利用更充分,且无需多次解析协议,提高了转发效率。
本发明解决上述技术问题的技术方案如下:
第一方面,本发明提供了一种基于DPDK的报文分流方法,包括以下步骤:
在入口网卡上配置DPDK套件并通过读取所述入口网卡的配置文件获取当前入口网卡编号及出口网卡编号,并根据所述入口网卡编号对入口网卡进行初始化,分配Mbuf结构内存;
通过读取所述入口网卡的转发规则文件获取网络层地址或传输层协议号及其端口号,基于所述网络层地址或传输层协议号及其端口号并按照预设格式制定报文匹配规则,并按照预设存储方式存储至所述Mbuf结构内存;
采用轮询方式从入口网卡驱动获取报文,并根据所述报文匹配规则对所述报文进行第一次报文匹配,并将匹配成功的报文复制至所述Mbuf结构内存;
根据所述报文匹配规则对所述内存空间的报文进行第二次报文匹配,并将匹配成功的报文按照所述出口网卡编号发送至对应出口网卡缓冲队列进行报文发送。
本发明实施例提供的基于DPDK的报文分流方法,通过在入口网卡上配置DPDK套件,并通过配置文件获取入口网卡编号及出口网卡编号,分配Mbuf结构内存,并根据入口网卡的网络层地址或传输层协议号及其端口号制定报文匹配规则,存至Mbuf结构内存,采用轮询方式从入口网卡驱动获取报文并根据报文匹配规则进行两次报文匹配,并将匹配成功的报文按照出口网卡编号发送至对应出口网卡缓冲队列进行报文发送,实现报文分流。本发明基于DPDK套件进行报文分流,采用轮询方式获取报文,并采用bpf字节码快速匹配报文完成报文分流,无需经过硬件中断与内核调用,缩短了解析流程,提高了CPU利用率与转发效率,降低了内存读写次数。
可选地,所述报文匹配规则的预设格式,包括:(入口网卡编号){网络层地址或传输层协议号及其端口号}[出口网卡编号]。
本发明通过制定较为简单的报文匹配规则,包括入口网卡编号、出口网卡编号及网络层地址或传输层协议号及其端口号,不需要将ip地址与网络出口绑定,能够采用更灵活的进出网口报文匹配规则来进行报文分流,无需考虑arp表缓存等问题,支持多网卡数据广播。
可选地,所述预设存储方式,包括:数组与链表混合方式;所述数组包括入口网卡编号与链表头指针;所述链表包括每个节点编译前的报文匹配规则、编译后的bpf字节码、入口网卡编号及出口网卡编号。
本发明通过数组与链表混合方式存储报文匹配规则的相关信息,其中数组是顺序存储,存储速度慢但查询速度快,包括入口网卡编号与链表头指针;链表是链式存储,存储速度快但查询速度慢,包括每个节点编译前的报文匹配规则、编译后的bpf字节码、入口网卡编号及出口网卡编号。这样进行存储能够先根据数组中入口网卡编号进行内容查询,找到对应入口网卡后再遍历链表中的内容,在一定程度上兼顾了存储速度与查询速度。
可选地,所述通过读取所述入口网卡的转发规则文件获取网络层地址或传输层协议号及其端口号,基于所述网络层地址或传输层协议号及其端口号并按照预设格式制定报文匹配规则,并按照预设存储方式存储至所述Mbuf结构内存的过程,包括:读取入口网卡的转发规则文件,获取转发规则中的网络层地址或传输层协议号及其端口号;基于所述网络层地址或传输层协议号及其端口号,并按照预设格式制定报文匹配规则,并将所述报文匹配规则加载至bpf寄存器;将加载后的报文匹配规则编译为bpf字节码,并按照预设存储方式储存至所述Mbuf结构内存。
本发明通过读取入口网卡的配置文件获取入口网卡编号与出口网卡编号,通过读取转发规则文件获取网络层地址或传输层协议号及其端口号,按照预设格式制定报文匹规则,并将报文匹配规则编译为bpf字节码存储至Mbuf结构内存中。bpf字节码为一些特殊的指令,其格式是一种应用广泛的元数据格式,由一系列结构体定义与类型编码组成。在报文从网卡复制到内存时会进行bpf过滤,只有符合条件的才会进行复制,保证了报文在后续进一步匹配时不会重复多次的复制数据,减少了内存读写的次数,同时也避免了报文缓冲带来的高时延与内存使用过多文档。
可选地,所述第一次报文匹配及第二次报文匹配的过程,均包括:通过读取所述报文的网络层信息或传输层信息获取所述报文所包含的网络层地址或传输层协议号及其端口号;根据所述数组中的入口网卡编号遍历所述链表,获取所述入口网卡编号所对应的bpf字节码;将所述网络层地址或传输层协议号及其端口号与bpf字节码所对应寄存器中的参数值进行匹配,若内容相同则匹配成功。
本发明基于DPDK套件中的bpf相关函数实现报文匹配,根据制定的报文匹配规则将报文中所包含的网络层地址或传输层协议号及其端口号与bpf字节码所对应的寄存器中的参数值进行匹配。第一次匹配过程中,将从入口网卡驱动获取的报文进行匹配与过滤,将不符合网络层协议或传输层协议的报文直接丢弃,将符合网络层协议或传输层协议的报文复制至Mbuf结构内存中。第二次匹配过程中。将Mbuf结构内存中的报文进行相同过程的规则匹配,并将匹配成功的报文按照出口网卡编号发送至对应出口网卡缓冲队列进行报文发送,此过程也完成了报文分流,采用bpf字节码快速匹配数据的方式,无需重复解析协议,减少了报文的处理流程,在防护DDOS样的网络攻击时可以更早的丢弃报文,缓解正常报文的处理压力。
可选地,所述报文发送的过程,包括:通过DPDK套件中API将所述报文匹配规则加载至入口网卡收取队列的回调函数中,并根据所述回调函数的返回值判断发送结果,若发送失败则重复直至成功。
本发明通过DPDK套件的API实现报文的发送,将报文匹配规则加载至入口网卡队列的回调函数中,并根据回调函数的返回值判断是否发送成功,在一定程度上保证数据发送成功。
第二方面,本发明实施例提供了基于DPDK的报文分流系统,所述系统包括:
环境配置模块,用于在入口网卡上配置DPDK套件并通过读取所述入口网卡的配置文件获取当前入口网卡编号及出口网卡编号,并根据所述入口网卡编号对入口网卡进行初始化,分配Mbuf结构内存;
规则制定模块,用于通过读取所述入口网卡的转发规则文件获取网络层地址或传输层协议号及其端口号,基于所述网络层地址或传输层协议号及其端口号并按照预设格式制定报文匹配规则,并按照预设存储方式存储至所述Mbuf结构内存;
报文复制模块,用于采用轮询方式从入口网卡驱动获取报文,并根据所述报文匹配规则对所述报文进行第一次报文匹配,并将匹配成功的报文复制至所述Mbuf结构内存;
报文分流模块,用于根据所述报文匹配规则对所述内存空间的报文进行第二次报文匹配,并将匹配成功的报文按照所述出口网卡编号发送至对应出口网卡缓冲队列进行报文发送。
本发明实施例提供的基于DPDK的报文分流系统,通过在入口网卡上配置DPDK套件,并通过配置文件获取入口网卡编号及出口网卡编号,分配Mbuf结构内存,并根据入口网卡的网络层地址或传输层协议号及其端口号制定报文匹配规则,存至Mbuf结构内存,采用轮询方式从入口网卡驱动获取报文并根据报文匹配规则进行两次报文匹配,并将匹配成功的报文按照出口网卡编号发送至对应出口网卡缓冲队列进行报文发送,实现报文分流。本发明基于DPDK套件进行报文分流,采用轮询方式获取报文,并采用bpf字节码快速匹配报文完成报文分流,无需经过硬件中断与内核调用,缩短了解析流程,提高了CPU利用率与转发效率,降低了内存读写次数。
第三方面,本发明实施例提供了一种计算机设备,包括:存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行第一方面,或者第一方面任意一种可选实施方式中所述的方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行第一方面,或者第一方面任意一种可选实施方式中所述的方法。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于DPDK的报文分流方法的流程示意图;
图2为本发明实施例提供的一种基于DPDK的报文分流方法的报文匹配规则存储方式示意图;
图3为本发明实施例提供的一种基于DPDK的报文分流方法关键步骤的流程框图;
图4为本发明实施例提供的一种基于DPDK的报文分流系统的结构示意图;
图5为本发明实施例提供的一种计算机设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。
本发明实施例提供了一种基于DPDK的报文分流方法,如图1所示,该方法具体包括如下步骤:
步骤S1:在入口网卡上配置DPDK套件并通过读取所述入口网卡的配置文件获取当前入口网卡编号及出口网卡编号,并根据所述入口网卡编号对入口网卡进行初始化,分配Mbuf结构内存。
具体地,在本发明实施例中,首先在所有入口网卡上配置Intel的DPDK套件。通过读取入口网卡的配置文件获取当前的网卡数量编号(包括网卡入口编号及网卡出口编号)及CPU核心数量,在DPDK套件初始化时根据网卡入口编号对网卡初始化,分配Mbuf(structrte_Mbuf)结构内存,开启混杂模式(Promiscuous Mode)。此时网卡能够接收所有经过网卡的数据包且无需经过硬件中断与内核调用。其中,DPDK将内存封装在Mbuf结构体内。Mbuf主要用来封装网络帧缓存,也可以用来封装通用控制信息缓存。
步骤S2:通过读取所述入口网卡的转发规则文件获取网络层地址或传输层协议号及其端口号,基于所述网络层地址或传输层协议号及其端口号并按照预设格式制定报文匹配规则,并按照预设存储方式存储至所述Mbuf结构内存。
具体地,在本发明实施例中,通过入口网卡的转发规则文件读取转发规则,规则中包含网络层地址或传输层协议号及其端口号,根据所获得的信息并按照预先设定好的格式制定报文匹配规则,其中报文匹配规则的格式表示如下:
(入口网卡编号){网络层地址或传输层协议口及其端口号}[出口网卡编号]
本发明实施例中报文分流不需要将ip地址与网络出口绑定,可以更灵活的通过网络层协议或传输层协议进行报文分流,其中传输层端口信息进行选择需要的网络出口。例如:将网卡1入口的tcp端口8080数据转发至网卡2,网卡1其他入口tcp数据转发到网卡3,则可以用以下规则表示:
(1){tcp port 8080}[2]
(1){tcp}[3]
本发明实施例中,将报文匹配规则加载至bpf寄存器。将加载后的报文匹配规则编译为bpf字节码,并按照数组与链表混合的存储方式储存至Mbuf结构内存中。同时,通过DPDK套件中的API将其加载到网卡收取队列的回调函数中,其中数组与链表混合的存储方式如图2所示,数组包含入口网卡编号与链表头指针,入口网卡编号与数组下标一致,能够保证后续匹配无需全部翻译,只需翻译对应入口网卡编号所对应的匹配规则。链表头指针指向链表第一个节点的指针。链表包括每个节点编译前的报文匹配规则、编译后的bpf字节码、入口网卡编号及出口网卡编号。
步骤S3:采用轮询方式从入口网卡驱动获取报文,并根据所述报文匹配规则对所述报文进行第一次报文匹配,并将匹配成功的报文复制至所述Mbuf结构内存。
具体地,在本发明实施例中,通过使用Intel的DPDK套件,采用轮询方式直接从网卡驱动获取报文。在收到数据包时,经DPDK重载的网卡驱动不会通过中断通知CPU,而是直接将数据包存入内存,交付应用层软件通过DPDK提供的接口来直接处理。CPU在任何时候都不会收到收包或者发包成功的中断信号,也不需要任何收发包有关的中断处理,这样节省了大量的CPU中断时间和内存拷贝时间,因此后续的报文处理流程能够独占CPU核心。
本发明实施例中,如图3所示,在报文从网卡复制到Mbuf结构内存前会根据报文匹配规则进行第一次报文匹配,只有符合报文匹配规则的才会进行复制,不符合规则的报文则直接丢弃,保证了报文在后续进一步匹配时不会重复多次的复制数据,减少了内存读写的次数,同时也避免了报文缓冲带来的高时延与内存使用过多文档。此外在防护DDOS样的网络攻击时可以在报文从网卡缓冲区读取到内存的同时进行报文匹配,如果判断报文为DDOS的攻击特征,则不会进行下一步操作,及时进入下一次轮询报文的流程,从而更早的丢弃报文,缓解正常报文的处理压力。其中报文匹配的过程为:
(1)通过读取所述报文的网络层信息或传输层信息获取所述报文所包含的网络层地址或传输层协议号及其端口号;
(2)根据所述数组中的入口网卡编号遍历所述链表,获取所述入口网卡编号所对应的bpf字节码;
(3)将所述网络层地址或传输层协议号及其端口号与bpf字节码所对应寄存器中的参数值进行匹配,若内容相同则匹配成功。
步骤S4:根据所述报文匹配规则对所述内存空间的报文进行第二次报文匹配,并将匹配成功的报文按照所述出口网卡编号发送至对应出口网卡缓冲队列进行报文发送。
具体地,在本发明实施例中,如图3所示,在报文成功复制到Mbuf结构内存后,进行第二次报文匹配,匹配过程同上。此次匹配目的是进行报文分流,根据入口网卡编号所对应的数组下标遍历链表,同时执行bpf字节码对报文进行匹配,匹配成功后则按照出口网卡编号将报文发送至对应出口网卡缓冲队列,完成报文分流。
本发明实施例中,报文发送是通过DPDK套件中API将报文匹配规则加载至入口网卡收取队列的回调函数中,并根据所述回调函数的返回值判断发送结果,若发送失败则重复直至成功。
本发明实施例提供的基于DPDK的报文分流方法,通过在入口网卡上配置DPDK套件,并通过配置文件获取入口网卡编号及出口网卡编号,分配Mbuf结构内存,并根据入口网卡的网络层地址或传输层协议号及其端口号制定报文匹配规则,存至Mbuf结构内存,采用轮询方式从入口网卡驱动获取报文并根据报文匹配规则进行两次报文匹配,并将匹配成功的报文按照出口网卡编号发送至对应出口网卡缓冲队列进行报文发送,实现报文分流。本发明基于DPDK套件进行报文分流,采用轮询方式获取报文,并采用bpf字节码快速匹配报文完成报文分流,无需经过硬件中断与内核调用,缩短了解析流程,提高了CPU利用率与转发效率,降低了内存读写次数。
本发明实施例提供了一种基于DPDK的报文分流系统,如图4所示,系统包括:
环境配置模块1,用于在入口网卡上配置DPDK套件并通过读取所述入口网卡的配置文件获取当前入口网卡编号及出口网卡编号,并根据所述入口网卡编号对入口网卡进行初始化,分配Mbuf结构内存。详细内容参见上述方法实施例中步骤S1的相关描述,在此不再进行赘述。
规则制定模块2,用于通过读取所述入口网卡的转发规则文件获取网络层地址或传输层协议号及其端口号,基于所述网络层地址或传输层协议号及其端口号并按照预设格式制定报文匹配规则,并按照预设存储方式存储至所述Mbuf结构内存。详细内容参见上述方法实施例中步骤S2的相关描述,在此不再进行赘述。
报文复制模块3,用于采用轮询方式从入口网卡驱动获取报文,并根据所述报文匹配规则对所述报文进行第一次报文匹配,并将匹配成功的报文复制至所述Mbuf结构内存。详细内容参见上述方法实施例中步骤S3的相关描述,在此不再进行赘述。
报文分流模块4,用于根据所述报文匹配规则对所述内存空间的报文进行第二次报文匹配,并将匹配成功的报文按照所述出口网卡编号发送至对应出口网卡缓冲队列进行报文发送。详细内容参见上述方法实施例中步骤S4的相关描述,在此不再进行赘述。
本发明实施例提供的基于DPDK的报文分流系统,通过在入口网卡上配置DPDK套件,并通过配置文件获取入口网卡编号及出口网卡编号,分配Mbuf结构内存,并根据入口网卡的网络层地址或传输层协议号及其端口号制定报文匹配规则,存至Mbuf结构内存,采用轮询方式从入口网卡驱动获取报文并根据报文匹配规则进行两次报文匹配,并将匹配成功的报文按照出口网卡编号发送至对应出口网卡缓冲队列进行报文发送,实现报文分流。本发明基于DPDK套件进行报文分流,采用轮询方式获取报文,并采用bpf字节码快速匹配报文完成报文分流,无需经过硬件中断与内核调用,缩短了解析流程,提高了CPU利用率与转发效率,降低了内存读写次数。
图5示出了本发明实施例中计算机设备的结构示意图,包括:处理器901和存储器902,其中,处理器901和存储器902可以通过总线或者其他方式连接,图5中以通过总线连接为例。
处理器901可以为中央处理器(Central Processing Unit,CPU)。处理器901还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
存储器902作为一种非暂态计算机可读存储介质,可用于存储非暂态服务器程序、非暂态计算机可执行程序以及模块,如上述方法实施例中的方法所对应的程序指令/模块。处理器901通过运行存储在存储器902中的非暂态服务器程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施例中的方法。
存储器902可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器901所创建的数据等。此外,存储器902可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器902可选包括相对于处理器901远程设置的存储器,这些远程存储器可以通过网络连接至处理器901。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个模块存储在存储器902中,当被处理器901执行时,执行上述方法实施例中的方法。
上述计算机设备具体细节可以对应参阅上述方法实施例中对应的相关描述和效果进行理解,此处不再赘述。
本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,实现的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(Random Access Memory,RAM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,缩写:HDD)或固态硬盘(Solid-State Drive,SSD)等;存储介质还可以包括上述种类的存储器的组合。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (9)
1.一种基于DPDK的报文分流方法,其特征在于,包括如下步骤:
在入口网卡上配置DPDK套件并通过读取所述入口网卡的配置文件获取当前入口网卡编号及出口网卡编号,并根据所述入口网卡编号对入口网卡进行初始化,分配Mbuf结构内存;
通过读取所述入口网卡的转发规则文件获取网络层地址或传输层协议号及其端口号,基于所述网络层地址或传输层协议号及其端口号并按照预设格式制定报文匹配规则,并按照预设存储方式存储至所述Mbuf结构内存;
采用轮询方式从入口网卡驱动获取报文,并根据所述报文匹配规则对所述报文进行第一次报文匹配,并将匹配成功的报文复制至所述Mbuf结构内存;
根据所述报文匹配规则对所述内存空间的报文进行第二次报文匹配,并将匹配成功的报文按照所述出口网卡编号发送至对应出口网卡缓冲队列进行报文发送。
2.根据权利要求1所述的基于DPDK的报文分流方法,其特征在于,所述报文匹配规则的预设格式,包括:(入口网卡编号){网络层地址或传输层协议号及其端口号}[出口网卡编号]。
3.根据权利要求1所述的基于DPDK的报文分流方法,其特征在于,所述预设存储方式,包括:数组与链表混合方式;
所述数组包括入口网卡编号与链表头指针;
所述链表包括每个节点编译前的报文匹配规则、编译后的bpf字节码、入口网卡编号及出口网卡编号。
4.根据权利要求2或3所述的基于DPDK的报文分流方法,其特征在于,所述通过读取所述入口网卡的转发规则文件获取网络层地址或传输层协议号及其端口号,基于所述网络层地址或传输层协议号及其端口号并按照预设格式制定报文匹配规则,并按照预设存储方式存储至所述Mbuf结构内存的过程,包括:
读取入口网卡的转发规则文件,获取转发规则中的网络层地址或传输层协议号及其端口号;
基于所述网络层地址或传输层协议号及其端口号,并按照预设格式制定报文匹配规则,并将所述报文匹配规则加载至bpf寄存器;
将加载后的报文匹配规则编译为bpf字节码,并按照预设存储方式储存至所述Mbuf结构内存。
5.根据权利要求4所述的基于DPDK的报文分流方法,其特征在于,所述第一次报文匹配及第二次报文匹配的过程,均包括:
通过读取所述报文的网络层信息或传输层信息获取所述报文所包含的网络层地址或传输层协议号及其端口号;
根据所述数组中的入口网卡编号遍历所述链表,获取所述入口网卡编号所对应的bpf字节码;
将所述网络层地址或传输层协议号及其端口号与bpf字节码所对应寄存器中的参数值进行匹配,若内容相同则匹配成功。
6.根据权利要求4所述的基于DPDK的报文分流方法,其特征在于,所述报文发送的过程,包括:通过DPDK套件中API将所述报文匹配规则加载至入口网卡收取队列的回调函数中,并根据所述回调函数的返回值判断发送结果,若发送失败则重复直至成功。
7.一种基于DPDK的报文分流系统,其特征在于,包括:
环境配置模块,用于在入口网卡上配置DPDK套件并通过读取所述入口网卡的配置文件获取当前入口网卡编号及出口网卡编号,并根据所述入口网卡编号对入口网卡进行初始化,分配Mbuf结构内存;
规则制定模块,用于通过读取所述入口网卡的转发规则文件获取网络层地址或传输层协议号及其端口号,基于所述网络层地址或传输层协议号及其端口号并按照预设格式制定报文匹配规则,并按照预设存储方式存储至所述Mbuf结构内存;
报文复制模块,用于采用轮询方式从入口网卡驱动获取报文,并根据所述报文匹配规则对所述报文进行第一次报文匹配,并将匹配成功的报文复制至所述Mbuf结构内存;
报文分流模块,用于根据所述报文匹配规则对所述内存空间的报文进行第二次报文匹配,并将匹配成功的报文按照所述出口网卡编号发送至对应出口网卡缓冲队列进行报文发送。
8.一种电子设备,其特征在于,包括:
存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行权利要求1-6中任一项所述的基于DPDK的报文分流方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行权利要求1-6中任一项所述的基于DPDK的报文分流方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211675471.3A CN116016687B (zh) | 2022-12-26 | 2022-12-26 | 一种基于dpdk的报文分流方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211675471.3A CN116016687B (zh) | 2022-12-26 | 2022-12-26 | 一种基于dpdk的报文分流方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116016687A true CN116016687A (zh) | 2023-04-25 |
CN116016687B CN116016687B (zh) | 2024-07-12 |
Family
ID=86026065
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211675471.3A Active CN116016687B (zh) | 2022-12-26 | 2022-12-26 | 一种基于dpdk的报文分流方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116016687B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118519753A (zh) * | 2024-07-23 | 2024-08-20 | 天翼云科技有限公司 | 一种基于池化内存的计算资源聚合方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109309626A (zh) * | 2018-09-10 | 2019-02-05 | 南京知常容信息技术有限公司 | 一种基于dpdk的高速网络数据包捕获分流及缓存方法 |
CN113472523A (zh) * | 2021-05-25 | 2021-10-01 | 派日科技(广州)有限公司 | 用户态协议栈报文处理优化方法、系统、装置及存储介质 |
WO2022105884A1 (zh) * | 2020-11-23 | 2022-05-27 | 中兴通讯股份有限公司 | 数据传输方法、装置、网络设备、存储介质 |
CN115037708A (zh) * | 2022-08-10 | 2022-09-09 | 深圳星云智联科技有限公司 | 一种报文处理方法、系统、装置及计算机可读存储介质 |
-
2022
- 2022-12-26 CN CN202211675471.3A patent/CN116016687B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109309626A (zh) * | 2018-09-10 | 2019-02-05 | 南京知常容信息技术有限公司 | 一种基于dpdk的高速网络数据包捕获分流及缓存方法 |
WO2022105884A1 (zh) * | 2020-11-23 | 2022-05-27 | 中兴通讯股份有限公司 | 数据传输方法、装置、网络设备、存储介质 |
CN113472523A (zh) * | 2021-05-25 | 2021-10-01 | 派日科技(广州)有限公司 | 用户态协议栈报文处理优化方法、系统、装置及存储介质 |
CN115037708A (zh) * | 2022-08-10 | 2022-09-09 | 深圳星云智联科技有限公司 | 一种报文处理方法、系统、装置及计算机可读存储介质 |
Non-Patent Citations (1)
Title |
---|
别体伟;华蓓;: "用户空间协议栈的并行化与性能优化", 电子技术, no. 08, 25 August 2016 (2016-08-25) * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118519753A (zh) * | 2024-07-23 | 2024-08-20 | 天翼云科技有限公司 | 一种基于池化内存的计算资源聚合方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN116016687B (zh) | 2024-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12095882B2 (en) | Accelerated network packet processing | |
US8681819B2 (en) | Programmable multifield parser packet | |
WO2015058699A1 (en) | Data forwarding | |
WO2017000593A1 (zh) | 报文处理方法及装置 | |
CN116016687B (zh) | 一种基于dpdk的报文分流方法及系统 | |
CN112600882B (zh) | 一种基于共享内存通信模式的硬件加速方法 | |
US20120140640A1 (en) | Apparatus and method for dynamically processing packets having various characteristics | |
US20060029088A1 (en) | Reducing latency in a channel adapter by accelerated I/O control block processing | |
CN113472523A (zh) | 用户态协议栈报文处理优化方法、系统、装置及存储介质 | |
CN113553137A (zh) | 一种nfv架构下基于dpdk的接入能力网元高速数据处理方法 | |
US11271985B2 (en) | Method and network node for handling SCTP packets | |
CN115866103A (zh) | 一种报文处理方法、装置、智能网卡和服务器 | |
CN112422457B (zh) | 报文处理方法、装置和计算机存储介质 | |
US7613133B2 (en) | Method, system and computer program product for processing packets at forwarder interfaces | |
CN114615348B (zh) | 基于udp gso的数据传输方法、装置、计算机设备和存储介质 | |
CN113783778B (zh) | 基于DDoS设备的策略路由方法、系统、计算机及存储介质 | |
JP5581995B2 (ja) | メッセージ受信装置およびマイクロコントローラ | |
CN116264571A (zh) | 文件还原方法、装置、设备及计算机可读存储介质 | |
Melnyk | Modeling of the messages search mechanism in the messaging process on the basis of TCP protocols | |
CN111817818A (zh) | 一种传输数据包的方法和装置 | |
CN114090481A (zh) | 一种发送数据的方法、接收数据的方法及相关装置 | |
CN113312605A (zh) | 一种数据传输方法、装置、电子设备及存储介质 | |
CN114401232A (zh) | 一种数据传输方法、装置、电子设备及存储介质 | |
CN117278491A (zh) | 一种数据报文处理方法、装置、存储介质及电子装置 | |
CN114979018A (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 |