CN113535433A - 基于Linux系统的控制转发分离方法、装置、设备和存储介质 - Google Patents
基于Linux系统的控制转发分离方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN113535433A CN113535433A CN202110822845.9A CN202110822845A CN113535433A CN 113535433 A CN113535433 A CN 113535433A CN 202110822845 A CN202110822845 A CN 202110822845A CN 113535433 A CN113535433 A CN 113535433A
- Authority
- CN
- China
- Prior art keywords
- network
- message
- processed
- processing module
- dpdk
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Abstract
本发明公开的基于Linux系统的控制转发分离方法、装置、设备和存储介质,涉及网络协议技术领域,由DPDK网络处理模块接管物理网卡,并通过虚拟网口与系统网络处理模块进行通信,配合控制模块和共享内存完成信息的更新和其他处理,将DPDK用户态网络处理作为Linux网络协议栈的加速部件,实现了对Linux网络协议栈的应用软件生态有效的保留与兼容,可以有效提高网络协议栈的性能和生态的兼容性。此外,本发明还通过读写分离避免共享内存的并发冲突,解决了依赖于网卡RSS队列网络分发所带来的限制问题,本发明DPDK快速路径模块可随意绑定多个网卡RSS队列,无需采用一对一绑定方式,进一步提升网络性能以及架构的灵活性。
Description
技术领域
本发明涉及网络协议栈技术领域,具体涉及一种基于Linux系统的控制转发分离方法、装置、设备和存储介质。
背景技术
Linux操作系统作为目前常用的操作系统之一,其网络协议栈具有通用性、生态健全、运行稳定等特点,主要的内核组件包括linux bridge、route table、Netfilter、conntrack连接跟踪、网络接口等,并配套了iproute2、ifconfig、iptables、route、brctl、openvswitch等Linux操作系统生态下的网络应用工具,在防火墙、路由服务、网桥服务、云计算虚拟网络等网络服务产品中得到广泛的应用。而随着多核CPU以及高性能网卡的技术发展,Linux网络协议栈往往需要运行在多核环境下,并且需要处理高并发大流量的网络报文,但是Linux网络协议栈在通用性为基础的设计上难以避免大量中断下上文切换、CPU锁、内存拷贝、CPU核间缓存失效等开销,导致网络处理性能不足。
DPDK(Intel Data Plane Development Kit,intel开源的数据平面开发工具集)提供在用户空间高效的数据包处理提供库函数和驱动的支持,DPDK应用程序是运行在用户空间上利用自身提供的数据平面库来收发数据包,绕过了Linux内核协议栈对数据包处理过程。KNI(Kernel NIC Interface,内核网卡接口)是DPDK允许用户态和内核态交换报文的功能组件,KNI模拟了一个虚拟的网口,提供dpdk的应用程序和linux内核之间通讯。用于DPDK和内核的交互,KNI接口允许报文从用户态接收后转发到内核协议栈去。
由于DPDK仅作为面向数据平面的开发工具,不提供网络协议栈功能,因此现有技术一般采用开源的用户态网络协议栈技术,如mTCP和f-stack等。其技术本质通过移植或开发一套轻量级的网络协议栈,对接DPDK的函数接口,以摆脱Linux网络协议栈为目标,最终实现具有多线程并行、零拷贝、线性扩展的用户态网络协议栈。
发明人在研究中发现,现有技术至少存在以下缺点:
缺点一:与Linux操作系统的生态兼容性差。在DPDK基础上或开发一套轻量级用户态网络协议栈的方式,无法与Linux操作系统配套的iproute2、ifconfig、iptables、route、brctl、openvswitch等Linux操作系统生态下的网络应用工具结合,大量的网络工具缺失,导致生态网络开源软件无法移植,很大程度上限制了用户态网络协议栈技术发展,大量的网络软件改造带来巨大的成本。
缺点二:过度依赖网卡RSS(Receive Side Scaling,一种能够在多处理器系统下使接收报文在多个CPU之间高效分发的网卡驱动技术)功能,难以实现多线程交互的业务功能。用户态网络协议栈是采用多线程并行且相互独立架构设计的,为了避免多线程的锁开销,往往会采用通过网卡RSS对网络报文MAC地址、IP地址、端口号进行dispatch处理,将相同的MAC地址、IP地址、端口号的报文分配到固定的线程处理,但是这样的方式会带来一些问题,①如果是单一网络流量的高并发,其处理性能只能在一个线程上处理,导致处理性能不足。②网卡的RSS数量是有限制的,网卡的RSS数量限制了用户态协议栈的多线程数量,高端网卡的RSS数量比较多,其成本也是高。
发明内容
本发明实施例提供的基于Linux系统的控制转发分离方法、装置、设备和存储介质,在Linux网络协议栈的应用软件生态得到保留与兼容的基础上,有效地结合DPDK工具提高网络协议栈的处理速度,可以有效提高网络协议栈的性能和生态的兼容性。
本发明第一实施例提供的一种基于Linux系统的控制转发分离方法,由包括DPDK网络处理模块、系统网络处理模块、控制模块和共享内存的网络协议栈执行;所述方法包括步骤:
所述DPDK网络处理模块通过物理网卡获取待处理报文,根据所述待处理报文,从所述共享内存中查询所述待处理报文的关联信息;
所述DPDK网络处理模块根据所述关联信息,判断所述关联信息是否需要更新;若判断所述待处理报文不需要更新,根据所述关联信息对所述待处理报文进行网络逻辑处理;若判断所述待处理报文的状态需要更新,将所述待处理报文发送至所述系统网络处理模块;所述DPDK网络处理模块与所述系统网络处理模块之间的通信通过虚拟网口进行;
所述系统网络处理模块对所述待处理报文进行网络逻辑处理,并将经过网络逻辑处理后的待处理报文发送至所述DPDK网络处理模块;所述系统网络处理模块更新所述关联信息,将更新后的关联信息记录到内核内存;
所述控制模块根据对所述内核内存更新事件的监听,将更新后的关联信息写入所述共享内存;
所述DPDK网络处理模块通过所述物理网卡输出经过网络逻辑处理后的待处理报文;所述网络逻辑处理后的待处理报文为,经过所述DPDK网络处理模块进行网络逻辑处理的待处理报文,或经过所述系统网络处理模块进行网络逻辑处理的待处理报文。
作为上述方案的改进,所述DPDK网络处理模块通过物理网卡获取待处理报文,根据所述待处理报文,从所述共享内存中查询所述待处理报文的关联信息,包括步骤:
通过DPDK进程启动与CPU核对应数量的轮询线程;其中,每个所述轮询线程与一个CPU核对应绑定,每个所述轮询线程绑定所述物理网卡的全部收发队列;
由所述与CPU核对应数量的轮询线程进行轮询,通过所述物理网卡获取所述待处理报文;
根据所述待处理报文的报文协议头特征,从所述共享内存中查询所述待处理报文的关联信息;所述关联信息包括所述待处理报文的状态信息和网络规则的配置信息。
作为上述方案的改进,所述DPDK网络处理模块通过vfio驱动或uio驱动的方式控制所述物理网卡的全部收发队列;所述虚拟网口为KNI虚拟网口;所述网络逻辑处理包括网桥处理、VLAN处理、NAT转换、路由转发和Netfilter网络规则过滤中的一项或多项;
所述DPDK网络处理模块将所述待处理报文发送至所述系统网络处理模块,具体为:所述DPDK网络处理模块通过所述虚拟网卡的通信接口,将所述待处理报文发送至所述系统网络处理模块。
作为上述方案的改进,所述系统网络处理模块更新所述关联信息,将更新后的关联信息记录到内核内存,包括步骤:
根据所述待处理报文的报文协议特征,从所述内核内存中查询并更新所述待处理报文的状态信息;
基于Linux提供的通用网络应用工具,配置所述网络规则。
作为上述方案的改进,所述控制模块根据对所述内核内存更新事件的监听,将更新后的关联信息写入所述共享内存,包括步骤:
通过netlink方式监听所述内核内存的更新事件;所述更新事件包括所述待处理报文的状态信息的更新,和所述网络规则的配置信息的更新;
在监听到所述内核内存发生所述更新事件的情况下,根据所述更新事件,将更新内容写入到所述共享内存。
作为上述方案的改进,所述DPDK网络处理模块根据所述关联信息,判断所述关联信息是否需要更新,具体包括:
当判断所述待处理报文为状态更新网络报文,则判断所述关联信息需要更新。
作为上述方案的改进,所述DPDK网络处理模块对所述共享内存为只读权限;所述控制模块对所述共享内存为只写权限。
本发明第二实施例提供了一种基于Linux系统的控制转发分离装置,包括DPDK态、内核态、用户态和共享内存;所述DPDK态包括DPDK网络处理模块、所述内核态包括系统网络处理模块和内核内存、所述用户态包括控制模块;
所述DPDK网络处理模块,用于通过物理网卡获取待处理报文,根据所述待处理报文,从所述共享内存中查询所述待处理报文的关联信息;还用于根据所述关联信息,判断所述关联信息是否需要更新;若判断所述待处理报文的状态需要更新,将所述待处理报文发送至所述系统网络处理模块;若判断所述待处理报文不需要更新,根据所述关联信息对所述待处理报文进行网络逻辑处理;
所述系统网络处理模块,用于对所述待处理报文进行网络逻辑处理,并将经过网络逻辑处理后的待处理报文发送至所述DPDK网络处理模块;所述系统网络处理模块更新所述关联信息,将更新后的关联信息记录到内核内存;
所述控制模块,用于根据对所述内核内存更新事件的监听,将更新后的关联信息写入所述共享内存;
所述DPDK网络处理模块,还用于通过所述物理网卡输出经过网络逻辑处理后的待处理报文;所述网络逻辑处理后的待处理报文为,经过所述DPDK网络处理模块进行网络逻辑处理的待处理报文,或经过所述系统网络处理模块进行网络逻辑处理的待处理报文。
本发明第三实施例提供了一种基于Linux系统的控制转发分离设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如上任意一项所述的基于Linux系统的控制转发分离方法。
本发明第四实施例提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序;其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备实现如上任意一项所述的基于Linux系统的控制转发分离方法。
本发明实施例提供的基于Linux系统的控制转发分离方法、装置、设备和存储介质,由DPDK网络处理模块接管物理网卡,并通过虚拟网口与系统网络处理模块进行通信,配合控制模块和共享内存完成信息的更新和其他处理,将DPDK用户态网络处理作为Linux网络协议栈的加速部件,实现了对Linux网络协议栈的应用软件生态有效的保留与兼容,可以有效提高网络协议栈的性能和生态的兼容性。此外,本发明还通过读写分离避免共享内存的并发冲突,解决了依赖于网卡RSS队列网络分发所带来的限制问题,本发明DPDK快速路径模块可随意绑定多个网卡RSS队列,无需采用一对一绑定方式,进一步提升网络性能以及架构的灵活性。
附图说明
图1是本发明第一实施例提供的网络协议栈的结构示意图。
图2是本发明第一实施例提供的基于Linux系统的控制转发分离方法的流程示意图。
图3是本发明第二实施例提供的基于Linux系统的控制转发分离装置的结构示意图。
图4是本发明第三实施例提供的基于Linux系统的控制转发分离设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明第一实施例提供了一种基于Linux系统的控制转发分离方法。参见图1,是执行该方法的网络协议栈100的结构示意图,网络协议栈100包括DPDK网络处理模块110、内核态、用户态和共享内存140。DPDK网络处理模块为DPDK态;内核态包括系统网络处理模块120和内核内存,所述系统网络处理模块具体为Linux网络协议栈;用户态包括控制模块130和Linux提供的通用网络应用工具。参见图2,该方法包括步骤S110至S150。
S110、所述DPDK网络处理模块110通过物理网卡nic获取待处理报文,根据所述待处理报文,从所述共享内存140中查询所述待处理报文的关联信息。
具体地,步骤S110可以包括步骤S111至步骤S113。
S111、通过DPDK进程启动与CPU核对应数量的轮询线程;其中,每个所述轮询线程与一个CPU核对应绑定,每个所述轮询线程绑定所述物理网卡nic的全部收发队列。
通过DPDK进程启动N个轮询线程pmd(Poll Mode Driver,基于用户态的轮询机制的驱动),每个pmd与一个cpu核绑定,每个pmd绑定物理网卡nic所有队列。其中,N为可调用的CPU核数量。
优选地,所述DPDK网络处理模块110可以通过vfio(Virtual Function IO,通过IOMMU以安全的方式来将设备的访问直接暴露到用户空间的技术)驱动或uio(UserspaceI/O,是运行在用户空间的I/O技术)驱动的方式控制所述物理网卡nic的全部收发队列,将物理网卡nic收发包队列直接暴露到用户空间,从而实现本发明DPDK网络处理模块110对物理网卡nic的收发包控制。
S112、由所述与CPU核对应数量的轮询线程进行轮询,通过所述物理网卡nic获取所述待处理报文。
通过多线程轮询的方式,从所述物理网卡nic获取所述待处理报文。
S113、根据所述待处理报文的报文协议头特征,从所述共享内存140中查询所述待处理报文的关联信息。
所述关联信息包括所述待处理报文的状态信息和网络规则的配置信息。所述共享内存140中保存有报文协议头特征对应的关联信息,并且通过所述控制模块130的写入操作,对保存的信息进行更新。
S120、所述DPDK网络处理模块110根据所述关联信息,判断所述关联信息是否需要更新。若判断所述待处理报文不需要更新,根据所述关联信息对所述待处理报文进行网络逻辑处理。若判断所述待处理报文的状态需要更新,将所述待处理报文发送至所述系统网络处理模块120;所述DPDK网络处理模块110与所述系统网络处理模块120之间的通信通过虚拟网口进行。
优选地,所述虚拟网口具体为KNI虚拟网口,通过KNI虚拟网卡实现所述DPDK网络处理模块110和所述第二模块之间的通信。为了保证DPDK态和内核态的网卡对齐,并通过DPDK的KNI模块创建一张MAC地址与物理网卡nicMAC地址相同的KNI虚拟网卡,DPDK快速路径可通过KNI接口经过KNI虚拟网卡将需要协议栈状态更新的报文发送到内核态的网络协议栈;Linux网络协议栈可通过KNI虚拟网卡接收来自DPDK快速路径发送过来的报文,可通过KNI虚拟网卡将报文发送到DPDK快速路径网络报文发送。这样可Linux网络协议栈保留原有的处理逻辑,与直接使用物理网卡nic的处理逻辑一致。
所述DPDK网络处理模块110仅负责网络逻辑处理,如网桥处理、VLAN处理、NAT转换、路由转发和Netfilter网络规则过滤等项目中的一项或多项。因此,若所述待处理报文是目标地址为本机IP地址的报文,或需要完成网络协议栈状态更新报文,如MAC地址学习、ARP更新、contrack新建连接等状态更新网络报文,则判断所述关联信息需要更新,所述DPDK网络处理模块110通过KNI虚拟网口将所述待处理报文发送到KNI虚拟网卡,由系统网络处理模块120进行处理。
S130、所述系统网络处理模块120对所述待处理报文进行网络逻辑处理,并将经过网络逻辑处理后的待处理报文发送至所述DPDK网络处理模块110;所述系统网络处理模块120更新所述关联信息,将更新后的关联信息记录到内核内存。
优选地,步骤S130具体可以包括步骤S131至S132。
S131、根据所述待处理报文的报文协议特征,从所述内核内存中查询并更新所述待处理报文的状态信息。
具体地,在虚拟网口为KNI虚拟网口的情况下,所述系统网络处理模块120通过KNI虚拟网口接收所述待处理报文,进入Linux网络协议栈的正常处理流程,并更新信息记录。
S132、基于Linux提供的通用网络应用工具,配置所述网络规则。
具体地,所述通用网络应用工具可以包括iproute2、ifconfig、iptables、route、brctl、openvswitch等Linux操作系统生态下的网络应用工具。
S140、所述控制模块130根据对所述内核内存更新事件的监听,将更新后的关联信息写入所述共享内存140。
优选地,步骤S140可以包括步骤S141至步骤S142。
S141、通过netlink方式监听所述内核内存的更新事件;所述更新事件包括所述待处理报文的状态信息的更新,和所述网络规则的配置信息的更新。
S142、在监听到所述内核内存发生所述更新事件的情况下,根据所述更新事件,将更新内容写入到所述共享内存140。
具体地,所述控制模块130通过Netlink监听Linux网络协议栈下接口表、ARP表、网络过滤规则表、连接跟踪表、路由表等网络信息的更新事件,将网卡配置、网桥配置、Vlan配置、ARP配置、ARP状态更新、连接跟踪状态更新、路由表配置、iptables配置等更新事件同步写入到所述共享内存140。
S150、所述DPDK网络处理模块110通过所述物理网卡nic输出经过网络逻辑处理后的待处理报文;所述网络逻辑处理后的待处理报文为,经过所述DPDK网络处理模块110进行网络逻辑处理的待处理报文,或经过所述系统网络处理模块120进行网络逻辑处理的待处理报文。
对不需要更新的所述待处理报文,所述DPDK网络处理模块110中根据报文的状态信息以及网络规则的配置项,对报文进行二层、三层的网络逻辑处理,并在需要转发的情况下,通过所述物理网卡nic将经过网络逻辑处理的待处理报文发送出去。
更优选地,所述DPDK网络处理模块110对所述共享内存140为只读权限;所述控制模块130对所述共享内存140为只写权限。
所述DPDK网络处理模块110对所述共享内存140采用只读操作,所述控制模块130对所述共享内存140采用只写操作。从而实现所述共享内存140的读写分离,所述共享内存140采用Copy on write机制,保障读写过程内存冲突,从而实现所述DPDK网络处理模块110的多核并行的无锁机制,提升性能。通过读写分离避免共享内存140的并发冲突,解决了依赖于网卡RSS队列网络分发所带来的限制问题,本发明DPDK快速路径模块可随意绑定多个网卡RSS队列,无需采用一对一绑定方式,进一步提升网络性能以及架构的灵活性。
本发明实施例提供的基于Linux系统的控制转发分离方法,由DPDK网络处理模块接管物理网卡,并通过虚拟网口与系统网络处理模块进行通信,配合控制模块和共享内存完成信息的更新和其他处理,将DPDK用户态网络处理作为Linux网络协议栈的加速部件,实现了对Linux网络协议栈的应用软件生态有效的保留与兼容,可以有效提高网络协议栈的性能和生态的兼容性。此外,本发明还通过读写分离避免共享内存的并发冲突,解决了依赖于网卡RSS队列网络分发所带来的限制问题,本发明DPDK快速路径模块可随意绑定多个网卡RSS队列,无需采用一对一绑定方式,进一步提升网络性能以及架构的灵活性。
本发明第二实施例提供了一种基于Linux系统的控制转发分离装置。参见图3,控制转发分离装置200包括DPDK态、内核态、用户态和共享内存240。其中,所述DPDK态包括DPDK网络处理模块210;所述内核态包括系统网络处理模块220和内核内存;所述用户态包括控制模块230和Linux提供的通用网络应用工具。
所述DPDK网络处理模块210,用于通过物理网卡获取待处理报文,根据所述待处理报文,从所述共享内存240中查询所述待处理报文的关联信息;还用于根据所述关联信息,判断所述关联信息是否需要更新;若判断所述待处理报文不需要更新,根据所述关联信息对所述待处理报文进行网络逻辑处理;若判断所述待处理报文的状态需要更新,将所述待处理报文发送至所述系统网络处理模块220;所述DPDK网络处理模块210与所述系统网络处理模块220之间的通信通过虚拟网口进行;
所述系统网络处理模块220,用于对所述待处理报文进行网络逻辑处理,并将经过网络逻辑处理后的待处理报文发送至所述DPDK网络处理模块210;所述系统网络处理模块220更新所述关联信息,将更新后的关联信息记录到内核内存;
所述控制模块230,用于根据对所述内核内存更新事件的监听,将更新后的关联信息写入所述共享内存240;
所述DPDK网络处理模块210,还用于通过所述物理网卡输出经过网络逻辑处理后的待处理报文;所述网络逻辑处理后的待处理报文为,经过所述DPDK网络处理模块210进行网络逻辑处理的待处理报文,或经过所述系统网络处理模块220进行网络逻辑处理的待处理报文。
所述控制转发分离装置200的工作过程如第一实施例的方法流程,在此不作赘述。
本发明实施例提供的基于Linux系统的控制转发分离装置,由DPDK网络处理模块接管物理网卡,并通过虚拟网口与系统网络处理模块进行通信,配合控制模块和共享内存完成信息的更新和其他处理,将DPDK用户态网络处理作为Linux网络协议栈的加速部件,实现了对Linux网络协议栈的应用软件生态有效的保留与兼容,可以有效提高网络协议栈的性能和生态的兼容性。此外,本发明还通过读写分离避免共享内存的并发冲突,解决了依赖于网卡RSS队列网络分发所带来的限制问题,本发明DPDK快速路径模块可随意绑定多个网卡RSS队列,无需采用一对一绑定方式,进一步提升网络性能以及架构的灵活性。
参见图4,是本发明第三实施例提供的基于Linux系统的控制转发分离设备300的示意图。所述基于Linux系统的控制转发分离设备300包括:处理器310、存储器320以及存储在所述存储器中并可在所述处理器上运行的计算机程序,例如控制转发分离程序。所述处理器执行所述计算机程序时实现上述基于Linux系统的控制转发分离方法实施例中的步骤,例如图1所示的控制转发分离方法的步骤。或者,所述处理器执行所述计算机程序时实现上述各装置实施例中各模块的功能,例如实施例2所述的基于Linux系统的控制转发分离装置的各模块的功能。
示例性的,所述计算机程序可以被分割成一个或多个模块,所述一个或者多个模块被存储在所述存储器320中,并由所述处理器310执行,以完成本发明。所述一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述控制转发分离终端设备中的执行过程。例如,所述计算机程序可以被分割成DPDK态、内核态、用户态和共享内存,各模块具体功能如下:所述DPDK态包括DPDK网络处理模块、所述内核态包括系统网络处理模块和内核内存、所述用户态包括控制模块;所述DPDK网络处理模块,用于通过物理网卡获取待处理报文,根据所述待处理报文,从所述共享内存中查询所述待处理报文的关联信息;还用于根据所述关联信息,判断所述关联信息是否需要更新;若判断所述待处理报文的状态需要更新,将所述待处理报文发送至所述系统网络处理模块;若判断所述待处理报文不需要更新,根据所述关联信息对所述待处理报文进行网络逻辑处理;所述系统网络处理模块,用于对所述待处理报文进行网络逻辑处理,并将经过网络逻辑处理后的待处理报文发送至所述DPDK网络处理模块;所述系统网络处理模块更新所述关联信息,将更新后的关联信息记录到内核内存;所述控制模块,用于根据对所述内核内存更新事件的监听,将更新后的关联信息写入所述共享内存;所述DPDK网络处理模块,还用于通过所述物理网卡输出经过网络逻辑处理后的待处理报文;所述网络逻辑处理后的待处理报文为,经过所述DPDK网络处理模块进行网络逻辑处理的待处理报文,或经过所述系统网络处理模块进行网络逻辑处理的待处理报文。
所述基于Linux系统的控制转发分离设备300可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述基于Linux系统的控制转发分离设备300可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,所述示意图仅仅是基于Linux系统的控制转发分离设备300的示例,并不构成对基于Linux系统的控制转发分离设备300的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述基于Linux系统的控制转发分离设备300还可以包括输入输出设备、网络接入设备、总线等。
所称处理器310可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器310是所述基于Linux系统的控制转发分离设备300的控制中心,利用各种接口和线路连接整个控制转发分离终端设备的各个部分。
所述存储器320可用于存储所述计算机程序或模块,所述处理器310通过运行或执行存储在所述存储器内的计算机程序或模块,以及调用存储在存储器内的数据,实现所述控制转发分离终端设备的各种功能。所述存储器320可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器320可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
其中,所述基于Linux系统的控制转发分离设备300集成的模块或单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明实施例提供的基于Linux系统的控制转发分离设备和存储介质,由DPDK网络处理模块接管物理网卡,并通过虚拟网口与系统网络处理模块进行通信,配合控制模块和共享内存完成信息的更新和其他处理,将DPDK用户态网络处理作为Linux网络协议栈的加速部件,实现了对Linux网络协议栈的应用软件生态有效的保留与兼容,可以有效提高网络协议栈的性能和生态的兼容性。此外,本发明还通过读写分离避免共享内存的并发冲突,解决了依赖于网卡RSS队列网络分发所带来的限制问题,本发明DPDK快速路径模块可随意绑定多个网卡RSS队列,无需采用一对一绑定方式,进一步提升网络性能以及架构的灵活性。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (10)
1.一种基于Linux系统的控制转发分离方法,其特征在于,由包括DPDK网络处理模块、系统网络处理模块、控制模块和共享内存的网络协议栈执行;所述方法包括步骤:
所述DPDK网络处理模块通过物理网卡获取待处理报文,根据所述待处理报文,从所述共享内存中查询所述待处理报文的关联信息;
所述DPDK网络处理模块根据所述关联信息,判断所述关联信息是否需要更新;若判断所述待处理报文不需要更新,根据所述关联信息对所述待处理报文进行网络逻辑处理;若判断所述待处理报文的状态需要更新,将所述待处理报文发送至所述系统网络处理模块;所述DPDK网络处理模块与所述系统网络处理模块之间的通信通过虚拟网口进行;
所述系统网络处理模块对所述待处理报文进行网络逻辑处理,并将经过网络逻辑处理后的待处理报文发送至所述DPDK网络处理模块;所述系统网络处理模块更新所述关联信息,将更新后的关联信息记录到内核内存;
所述控制模块根据对所述内核内存更新事件的监听,将更新后的关联信息写入所述共享内存;
所述DPDK网络处理模块通过所述物理网卡输出经过网络逻辑处理后的待处理报文;所述网络逻辑处理后的待处理报文为,经过所述DPDK网络处理模块进行网络逻辑处理的待处理报文,或经过所述系统网络处理模块进行网络逻辑处理的待处理报文。
2.如权利要求1所述的控制转发分离方法,其特征在于,所述DPDK网络处理模块通过物理网卡获取待处理报文,根据所述待处理报文,从所述共享内存中查询所述待处理报文的关联信息,包括步骤:
通过DPDK进程启动与CPU核对应数量的轮询线程;其中,每个所述轮询线程与一个CPU核对应绑定,每个所述轮询线程绑定所述物理网卡的全部收发队列;
由所述与CPU核对应数量的轮询线程进行轮询,通过所述物理网卡获取所述待处理报文;
根据所述待处理报文的报文协议头特征,从所述共享内存中查询所述待处理报文的关联信息;所述关联信息包括所述待处理报文的状态信息和网络规则的配置信息。
3.如权利要求2所述的控制转发分离方法,其特征在于,所述DPDK网络处理模块通过vfio驱动或uio驱动的方式控制所述物理网卡的全部收发队列;所述虚拟网口为KNI虚拟网口;所述网络逻辑处理包括网桥处理、VLAN处理、NAT转换、路由转发和Netfilter网络规则过滤中的一项或多项;
所述DPDK网络处理模块将所述待处理报文发送至所述系统网络处理模块,具体为:所述DPDK网络处理模块通过所述KNI虚拟网口,将所述待处理报文发送至所述系统网络处理模块。
4.如权利要求2所述的控制转发分离方法,其特征在于,所述系统网络处理模块更新所述关联信息,将更新后的关联信息记录到内核内存,包括步骤:
根据所述待处理报文的报文协议特征,从所述内核内存中查询并更新所述待处理报文的状态信息;
基于Linux提供的通用网络应用工具,配置所述网络规则。
5.如权利要求4所述的控制转发分离方法,其特征在于,所述控制模块根据对所述内核内存更新事件的监听,将更新后的关联信息写入所述共享内存,包括步骤:
通过netlink方式监听所述内核内存的更新事件;所述更新事件包括所述待处理报文的状态信息的更新,和所述网络规则的配置信息的更新;
在监听到所述内核内存发生所述更新事件的情况下,根据所述更新事件,将更新内容写入到所述共享内存。
6.如权利要求1所述的控制转发分离方法,其特征在于,所述DPDK网络处理模块根据所述关联信息,判断所述关联信息是否需要更新,具体包括:
当判断所述待处理报文为状态更新网络报文,则判断所述关联信息需要更新。
7.如权利要求1-6任一项所述的控制转发分离方法,其特征在于,所述DPDK网络处理模块对所述共享内存为只读权限;所述控制模块对所述共享内存为只写权限。
8.一种基于Linux系统的控制转发分离装置,其特征在于,包括DPDK态、内核态、用户态和共享内存;所述DPDK态包括DPDK网络处理模块、所述内核态包括系统网络处理模块和内核内存、所述用户态包括控制模块;
所述DPDK网络处理模块,用于通过物理网卡获取待处理报文,根据所述待处理报文,从所述共享内存中查询所述待处理报文的关联信息;还用于根据所述关联信息,判断所述关联信息是否需要更新;若判断所述待处理报文的状态需要更新,将所述待处理报文发送至所述系统网络处理模块;若判断所述待处理报文不需要更新,根据所述关联信息对所述待处理报文进行网络逻辑处理;
所述系统网络处理模块,用于对所述待处理报文进行网络逻辑处理,并将经过网络逻辑处理后的待处理报文发送至所述DPDK网络处理模块;所述系统网络处理模块更新所述关联信息,将更新后的关联信息记录到内核内存;
所述控制模块,用于根据对所述内核内存更新事件的监听,将更新后的关联信息写入所述共享内存;
所述DPDK网络处理模块,还用于通过所述物理网卡输出经过网络逻辑处理后的待处理报文;所述网络逻辑处理后的待处理报文为,经过所述DPDK网络处理模块进行网络逻辑处理的待处理报文,或经过所述系统网络处理模块进行网络逻辑处理的待处理报文。
9.一种基于Linux系统的控制转发分离设备,其特征在于,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至7中任意一项所述的基于Linux系统的控制转发分离方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序;其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备实现如权利要求1至7中任意一项所述的基于Linux系统的控制转发分离方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110822845.9A CN113535433B (zh) | 2021-07-21 | 2021-07-21 | 基于Linux系统的控制转发分离方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110822845.9A CN113535433B (zh) | 2021-07-21 | 2021-07-21 | 基于Linux系统的控制转发分离方法、装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113535433A true CN113535433A (zh) | 2021-10-22 |
CN113535433B CN113535433B (zh) | 2023-08-11 |
Family
ID=78129073
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110822845.9A Active CN113535433B (zh) | 2021-07-21 | 2021-07-21 | 基于Linux系统的控制转发分离方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113535433B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114124503A (zh) * | 2021-11-15 | 2022-03-01 | 北京邮电大学 | 一种逐级并发缓存优化效能的智能网络感知方法 |
CN114157631A (zh) * | 2021-11-30 | 2022-03-08 | 深圳市共进电子股份有限公司 | 一种获取终端信息的方法、装置、拓展设备及存储介质 |
CN114448909A (zh) * | 2021-12-27 | 2022-05-06 | 天翼云科技有限公司 | 基于ovs的网卡队列轮询方法、装置、计算机设备及介质 |
CN115296956A (zh) * | 2022-07-29 | 2022-11-04 | 广东浪潮智慧计算技术有限公司 | 一种内核的隧道转发方法、装置、电子设备及存储介质 |
CN115473811A (zh) * | 2022-09-21 | 2022-12-13 | 西安超越申泰信息科技有限公司 | 一种网络性能优化方法、装置、设备及介质 |
WO2024013830A1 (ja) * | 2022-07-11 | 2024-01-18 | 日本電信電話株式会社 | サーバ内データ転送装置、データ転送システム、サーバ内データ転送方法およびプログラム |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110380992A (zh) * | 2019-07-24 | 2019-10-25 | 南京中孚信息技术有限公司 | 报文处理方法、装置及网络流量采集设备 |
CN110768994A (zh) * | 2019-10-30 | 2020-02-07 | 中电福富信息科技有限公司 | 一种基于dpdk技术的提高sip网关性能的方法 |
CN111371779A (zh) * | 2020-02-29 | 2020-07-03 | 苏州浪潮智能科技有限公司 | 一种基于dpdk虚拟化管理系统的防火墙及其实现方法 |
CN111934894A (zh) * | 2019-05-13 | 2020-11-13 | 烽火通信科技股份有限公司 | 基于dpdk管理无线网络接口的方法及系统 |
-
2021
- 2021-07-21 CN CN202110822845.9A patent/CN113535433B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111934894A (zh) * | 2019-05-13 | 2020-11-13 | 烽火通信科技股份有限公司 | 基于dpdk管理无线网络接口的方法及系统 |
CN110380992A (zh) * | 2019-07-24 | 2019-10-25 | 南京中孚信息技术有限公司 | 报文处理方法、装置及网络流量采集设备 |
CN110768994A (zh) * | 2019-10-30 | 2020-02-07 | 中电福富信息科技有限公司 | 一种基于dpdk技术的提高sip网关性能的方法 |
CN111371779A (zh) * | 2020-02-29 | 2020-07-03 | 苏州浪潮智能科技有限公司 | 一种基于dpdk虚拟化管理系统的防火墙及其实现方法 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114124503A (zh) * | 2021-11-15 | 2022-03-01 | 北京邮电大学 | 一种逐级并发缓存优化效能的智能网络感知方法 |
CN114124503B (zh) * | 2021-11-15 | 2022-09-27 | 北京邮电大学 | 一种逐级并发缓存优化效能的智能网络感知方法 |
CN114157631A (zh) * | 2021-11-30 | 2022-03-08 | 深圳市共进电子股份有限公司 | 一种获取终端信息的方法、装置、拓展设备及存储介质 |
CN114157631B (zh) * | 2021-11-30 | 2024-02-20 | 深圳市共进电子股份有限公司 | 一种获取终端信息的方法、装置、拓展设备及存储介质 |
CN114448909A (zh) * | 2021-12-27 | 2022-05-06 | 天翼云科技有限公司 | 基于ovs的网卡队列轮询方法、装置、计算机设备及介质 |
CN114448909B (zh) * | 2021-12-27 | 2023-10-13 | 天翼云科技有限公司 | 基于ovs的网卡队列轮询方法、装置、计算机设备及介质 |
WO2024013830A1 (ja) * | 2022-07-11 | 2024-01-18 | 日本電信電話株式会社 | サーバ内データ転送装置、データ転送システム、サーバ内データ転送方法およびプログラム |
CN115296956A (zh) * | 2022-07-29 | 2022-11-04 | 广东浪潮智慧计算技术有限公司 | 一种内核的隧道转发方法、装置、电子设备及存储介质 |
CN115296956B (zh) * | 2022-07-29 | 2024-03-22 | 广东浪潮智慧计算技术有限公司 | 一种内核的隧道转发方法、装置、电子设备及存储介质 |
CN115473811A (zh) * | 2022-09-21 | 2022-12-13 | 西安超越申泰信息科技有限公司 | 一种网络性能优化方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113535433B (zh) | 2023-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113535433A (zh) | 基于Linux系统的控制转发分离方法、装置、设备和存储介质 | |
US10095645B2 (en) | Presenting multiple endpoints from an enhanced PCI express endpoint device | |
US8743894B2 (en) | Bridge port between hardware LAN and virtual switch | |
JP5601601B2 (ja) | 通信制御システム、スイッチノード、及び通信制御方法 | |
US8774055B2 (en) | Switching method | |
CN108270676B (zh) | 一种基于Intel DPDK的网络数据处理方法及装置 | |
US11907749B2 (en) | RDMA with virtual address space | |
EP3913893A1 (en) | Method and apparatus for processing data message | |
US20140059160A1 (en) | Systems and methods for sharing devices in a virtualization environment | |
US10630587B2 (en) | Shared memory communication in software defined networking | |
WO2007146343A2 (en) | Sharing data between partitions in a partitionable system | |
US9973574B2 (en) | Packet forwarding optimization without an intervening load balancing node | |
CN111147391B (zh) | DPDK用户态与linux内核网络协议栈之间的数据传输方法及系统 | |
CN108366018A (zh) | 一种基于dpdk的网络数据包处理方法 | |
Tianhua et al. | The design and implementation of zero-copy for linux | |
CN112433826B (zh) | 混合异构虚拟化通信方法及芯片 | |
CN109617833B (zh) | 多线程用户态网络协议栈系统的nat数据审计方法和系统 | |
CN114629744B (zh) | 基于macvlan主机网络的数据访问方法、系统及相关装置 | |
US10554552B2 (en) | Monitoring network addresses and managing data transfer | |
CN110896378B (zh) | 网络流量转发方法、装置、电子设备及机器可读存储介质 | |
CN111240845A (zh) | 一种数据处理方法、装置和存储介质 | |
JP2006121699A (ja) | 第1のデータネットワークから第2のデータネットワークへのデータパケットのカーネルレベルの通過のための方法及び装置 | |
KR20140098430A (ko) | 가상 실행 환경에서 네트워크 프레임을 전달하기 위한 장치 및 방법 | |
JP7401484B2 (ja) | 情報処理装置、情報処理装置の制御方法、及び、情報処理装置の制御プログラム | |
CN114039894B (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 |