一种基于DPDK的报文分流方法及系统技术方案

技术编号:37374126 阅读:9 留言:0更新日期:2023-04-27 07:18
本发明专利技术提供了一种基于DPDK的报文分流方法及系统,方法包括:在入口网卡上配置DPDK套件并获取入口网卡编号及出口网卡编号,并初始化入口网卡;基于网络层地址或传输层协议号及其端口号并按照预设格式制定报文匹配规则,存储至Mbuf结构内存;采用轮询方式获取报文,并根据报文匹配规则对报文进行第一次报文匹配,并将匹配成功的报文复制至Mbuf结构内存;根据报文匹配规则对内存空间的报文进行第二次报文匹配,并将匹配成功的报文按照所述出口网卡编号发送至对应出口网卡缓冲队列。本发明专利技术基于DPDK套件进行报文分流,无需经过硬件中断与内核调用,缩短了解析流程,提高了CPU利用率与转发效率,降低了内存读写次数。降低了内存读写次数。降低了内存读写次数。

【技术实现步骤摘要】
一种基于DPDK的报文分流方法及系统


[0001]本专利技术涉及网络数据处理
,具体涉及一种基于DPDK的报文分流方法及系统。

技术介绍

[0002]伴随当今互联网网络环境的普及和网络流量的瞬间暴涨,网络服务器作为一种为用户提供共享信息资源和各种服务的高性能网络设备,其处理网络数据的能力显得尤为重要。而网卡作为网络服务器的网络接口部件,负责接收和处理网络数据,其网络数据处理能力决定了网络服务器的性能。随着多核CPU技术在网卡上的应用,其并行处理数据的方式大大提升了网络数据的处理速度。
[0003]在现有具体实现方式中,报文分流一般基于内核协议栈实现,通过配置IP地址等5元组信息选择出口网卡。数据报文从网卡到内核协议栈需要频繁的响应硬件中断,同时报文解析过程由内核协议栈处理,流程较长且无法充分利用CPU进行合理的分配。在报文规则匹配时需要对报文进行多次拷贝,且规则需要通过命令工具如iptables/ebtables等下发到内核中才可以生效,想要达到灵活的分流效果,则需要通过命令建立多个iptables链,需要经过多次规则匹配才能实现。此外分流策略受限于arp(address resolution protocol,地址解析协议)表,无法实现多网口广播。
[0004]在进行分流的过程中如果同时进行攻击防护,如DDOS(Distributed Denial of Service,分布式阻断服务攻击的防护),由于报文在内核协议栈中经过较长的流程,报文解析、规则匹配、攻击防护等流程是通过协议栈的不同挂载点实现调用的,这会导致攻击防护功能不理想,报文处理不及时等问题。

技术实现思路

[0005]因此,本专利技术要解决的技术问题在于克服现有技术中报文分流繁琐、报文处理不及时的缺陷,从而提供一种基于DPDK的报文分流方法及系统,能够基于DPDK套件采用轮询方式获取报文,并通过更灵活的进出网口报文匹配规则与bpf字节码快速匹配方式进行报文匹配,CPU利用更充分,且无需多次解析协议,提高了转发效率。
[0006]本专利技术解决上述技术问题的技术方案如下:
[0007]第一方面,本专利技术提供了一种基于DPDK的报文分流方法,包括以下步骤:
[0008]在入口网卡上配置DPDK套件并通过读取所述入口网卡的配置文件获取当前入口网卡编号及出口网卡编号,并根据所述入口网卡编号对入口网卡进行初始化,分配Mbuf结构内存;
[0009]通过读取所述入口网卡的转发规则文件获取网络层地址或传输层协议号及其端口号,基于所述网络层地址或传输层协议号及其端口号并按照预设格式制定报文匹配规则,并按照预设存储方式存储至所述Mbuf结构内存;
[0010]采用轮询方式从入口网卡驱动获取报文,并根据所述报文匹配规则对所述报文进
行第一次报文匹配,并将匹配成功的报文复制至所述Mbuf结构内存;
[0011]根据所述报文匹配规则对所述内存空间的报文进行第二次报文匹配,并将匹配成功的报文按照所述出口网卡编号发送至对应出口网卡缓冲队列进行报文发送。
[0012]本专利技术实施例提供的基于DPDK的报文分流方法,通过在入口网卡上配置DPDK套件,并通过配置文件获取入口网卡编号及出口网卡编号,分配Mbuf结构内存,并根据入口网卡的网络层地址或传输层协议号及其端口号制定报文匹配规则,存至Mbuf结构内存,采用轮询方式从入口网卡驱动获取报文并根据报文匹配规则进行两次报文匹配,并将匹配成功的报文按照出口网卡编号发送至对应出口网卡缓冲队列进行报文发送,实现报文分流。本专利技术基于DPDK套件进行报文分流,采用轮询方式获取报文,并采用bpf字节码快速匹配报文完成报文分流,无需经过硬件中断与内核调用,缩短了解析流程,提高了CPU利用率与转发效率,降低了内存读写次数。
[0013]可选地,所述报文匹配规则的预设格式,包括:(入口网卡编号){网络层地址或传输层协议号及其端口号}[出口网卡编号]。
[0014]本专利技术通过制定较为简单的报文匹配规则,包括入口网卡编号、出口网卡编号及网络层地址或传输层协议号及其端口号,不需要将ip地址与网络出口绑定,能够采用更灵活的进出网口报文匹配规则来进行报文分流,无需考虑arp表缓存等问题,支持多网卡数据广播。
[0015]可选地,所述预设存储方式,包括:数组与链表混合方式;所述数组包括入口网卡编号与链表头指针;所述链表包括每个节点编译前的报文匹配规则、编译后的bpf字节码、入口网卡编号及出口网卡编号。
[0016]本专利技术通过数组与链表混合方式存储报文匹配规则的相关信息,其中数组是顺序存储,存储速度慢但查询速度快,包括入口网卡编号与链表头指针;链表是链式存储,存储速度快但查询速度慢,包括每个节点编译前的报文匹配规则、编译后的bpf字节码、入口网卡编号及出口网卡编号。这样进行存储能够先根据数组中入口网卡编号进行内容查询,找到对应入口网卡后再遍历链表中的内容,在一定程度上兼顾了存储速度与查询速度。
[0017]可选地,所述通过读取所述入口网卡的转发规则文件获取网络层地址或传输层协议号及其端口号,基于所述网络层地址或传输层协议号及其端口号并按照预设格式制定报文匹配规则,并按照预设存储方式存储至所述Mbuf结构内存的过程,包括:读取入口网卡的转发规则文件,获取转发规则中的网络层地址或传输层协议号及其端口号;基于所述网络层地址或传输层协议号及其端口号,并按照预设格式制定报文匹配规则,并将所述报文匹配规则加载至bpf寄存器;将加载后的报文匹配规则编译为bpf字节码,并按照预设存储方式储存至所述Mbuf结构内存。
[0018]本专利技术通过读取入口网卡的配置文件获取入口网卡编号与出口网卡编号,通过读取转发规则文件获取网络层地址或传输层协议号及其端口号,按照预设格式制定报文匹规则,并将报文匹配规则编译为bpf字节码存储至Mbuf结构内存中。bpf字节码为一些特殊的指令,其格式是一种应用广泛的元数据格式,由一系列结构体定义与类型编码组成。在报文从网卡复制到内存时会进行bpf过滤,只有符合条件的才会进行复制,保证了报文在后续进一步匹配时不会重复多次的复制数据,减少了内存读写的次数,同时也避免了报文缓冲带来的高时延与内存使用过多文档。
[0019]可选地,所述第一次报文匹配及第二次报文匹配的过程,均包括:通过读取所述报文的网络层信息或传输层信息获取所述报文所包含的网络层地址或传输层协议号及其端口号;根据所述数组中的入口网卡编号遍历所述链表,获取所述入口网卡编号所对应的bpf字节码;将所述网络层地址或传输层协议号及其端口号与bpf字节码所对应寄存器中的参数值进行匹配,若内容相同则匹配成功。
[0020]本专利技术基于DPDK套件中的bpf相关函数实现报文匹配,根据制定的报文匹配规则将报文中所包含的网络层地址或传输层协议号及其端口号与bpf字节码所对应的寄存器中的参数值进行匹配。第一次匹配过程中,将从入口网卡驱动获取的报文进行匹配与过滤,将不符合网络层协议或传输层协议的报文直接丢弃,将符本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于DPDK的报文分流方法,其特征在于,包括如下步骤:在入口网卡上配置DPDK套件并通过读取所述入口网卡的配置文件获取当前入口网卡编号及出口网卡编号,并根据所述入口网卡编号对入口网卡进行初始化,分配Mbuf结构内存;通过读取所述入口网卡的转发规则文件获取网络层地址或传输层协议号及其端口号,基于所述网络层地址或传输层协议号及其端口号并按照预设格式制定报文匹配规则,并按照预设存储方式存储至所述Mbuf结构内存;采用轮询方式从入口网卡驱动获取报文,并根据所述报文匹配规则对所述报文进行第一次报文匹配,并将匹配成功的报文复制至所述Mbuf结构内存;根据所述报文匹配规则对所述内存空间的报文进行第二次报文匹配,并将匹配成功的报文按照所述出口网卡编号发送至对应出口网卡缓冲队列进行报文发送。2.根据权利要求1所述的基于DPDK的报文分流方法,其特征在于,所述报文匹配规则的预设格式,包括:(入口网卡编号){网络层地址或传输层协议号及其端口号}[出口网卡编号]。3.根据权利要求1所述的基于DPDK的报文分流方法,其特征在于,所述预设存储方式,包括:数组与链表混合方式;所述数组包括入口网卡编号与链表头指针;所述链表包括每个节点编译前的报文匹配规则、编译后的bpf字节码、入口网卡编号及出口网卡编号。4.根据权利要求2或3所述的基于DPDK的报文分流方法,其特征在于,所述通过读取所述入口网卡的转发规则文件获取网络层地址或传输层协议号及其端口号,基于所述网络层地址或传输层协议号及其端口号并按照预设格式制定报文匹配规则,并按照预设存储方式存储至所述Mbuf结构内存的过程,包括:读取入口网卡的转发规则文件,获取转发规则中的网络层地址或传输层协议号及其端口号;基于所述网络层地址或传输层协议号及其端口号,并按照预设格式制定报文匹配规则,并将所述报文匹配规则加载至bpf寄存器;将加载后的报文匹配规则编译为bpf字节码,并按照预设存储方式储存至所述Mbuf结构内存。5.根据权利要求4所述的基于DPDK的报文分流方法,其特征在于,所述第一次报文匹配及第二次报文匹配的过...

【专利技术属性】
技术研发人员:曹泽禹
申请(专利权)人:北京力控华康科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1