DPDK动态网卡添加方法、存储介质、电子设备及程序产品与流程

专利2025-06-19  18


本技术涉及网络通信,具体而言,涉及一种dpdk动态网卡添加方法、存储介质、电子设备及程序产品。


背景技术:

1、dpdk(data plane development kit,数据平面开发套件)是一个开源的、快速处理数据平面数据包转发的开发平台及接口,它通过环境抽象层、旁路内核协议栈、轮询模式的报文无中断收发、优化内存/缓冲区/队列管理、基于网卡多队列和流识别的负载均衡等多项技术,实现了在x86处理器架构下的高性能报文转发能力。

2、首先,环境抽象层(eal)为dpdk应用提供了一个统一的、低延迟的接口来访问底层硬件资源,如cpu核心、内存和网络接口卡(nic),从而绕过了传统操作系统内核的某些限制,减少了上下文切换和数据拷贝的开销。

3、其次,dpdk采用了旁路内核协议栈的策略,即直接在用户态处理网络数据包,避免了传统网络栈中的多次内存拷贝和cpu中断,实现了真正的零拷贝(zero-copy)和高效的数据包处理。这种设计不仅降低了延迟,还显著提高了系统的吞吐量。

4、在报文收发方面,dpdk引入了轮询模式(polling mode driver,pmd),通过轮询而非中断的方式来接收和发送数据包。这种方式减少了cpu的空闲等待时间,并允许应用程序以更高的频率和更低的延迟处理网络事件。

5、此外,dpdk还通过优化内存、缓冲区和队列管理策略,进一步提升了数据包处理的效率。它提供了无锁环形缓冲区(ring buffers)和内存池(memory pools)等高效数据结构,以支持快速的数据包存取和重用,减少了内存分配和释放的开销。

6、在负载均衡方面,dpdk充分利用了现代网卡的多队列特性,并结合流识别技术,实现了基于流量特性和应用需求的智能负载均衡。这有助于分散处理压力,提高系统的整体性能和可扩展性。

7、在高性能网络服务器、网络功能虚拟化场景里,通常使用dpdk来进行数据包的处理和转发。当系统需要扩展其网络功能时,如实现负载均衡,高可用时等,可能需要添加新的网卡,以增加网络的容量,提高转发性能。因此我们需要支持dpdk动态添加网卡。

8、目前使用的动态添加网卡的方法是将新增网卡绑定到dpdk驱动上,之后重启dpdk的网络服务或重启整个dpdk,这种方法会导致dpdk已有接口在重启过程中网络中断,影响网络通信。


技术实现思路

1、本技术实施例的目的在于提供一种dpdk动态网卡添加方法、存储介质、电子设备及程序产品,用以解决现有的网卡的动态添加方法导致dpdk已有接口在重启过程中网络中断的技术问题。

2、本技术实施例提供的一种dpdk动态网卡添加方法,方法包括:

3、利用网卡设备事件监测模块,监测到添加网卡事件;

4、利用dpdk的hotplug模块,调用添加网卡事件处理函数;

5、为添加的网卡分配可用的port id;

6、通过添加网卡事件处理函数,对添加的网卡配置网卡使能的网卡队列数,对网卡使能的每个网卡队列都创建并绑定af_xdp套接字;并启动网卡,根据新建网卡的port id、网卡队列和af_xdp套接字的对应关系,使用af_xdp套接字在对应的网卡队列上进行收包和发包操作。

7、上述技术方案中,通过监控内核发送的添加网卡事件,并调用对应的添加网卡事件处理函数,实时处理动态添加的网卡,在dpdk动态添加网卡的过程中,不需要重启整个dpdk进程,从而不影响已有网卡设备的网络通信。并且,dpdk使用af_xdp套接字可以显著减少数据包处理延迟。af_xdp是一种高效的数据包接收机制,它允许应用程序直接访问网络硬件的队列,绕过内核协议栈,从而减少cpu消耗和延迟。通过为每个网卡队列创建并绑定af_xdp套接字,可以实现更细粒度的数据包处理,提高并行处理能力。

8、在一些可选的实施方式中,利用网卡设备事件监测模块,监测到添加网卡事件之前,还包括:

9、dpdk初始化,启动用于创建网卡设备事件监测模块的线程。

10、上述技术方案中,启动专门的线程来创建和管理网卡设备事件监测模块,可以确保该模块独立于主程序运行,减少了对主程序性能的影响,并提高了系统的稳定性和可靠性。并且,通过专门的线程来监测网卡设备事件,可以更快地响应网卡添加、移除等事件,这种即时响应能力对于需要高实时性的网络应用尤为重要。

11、在一些可选的实施方式中,创建网卡设备事件监测模块,包括:

12、创建用于监听内核发送网卡设备事件数据的udev监控套接字;

13、配置网卡设备事件监测模块,当内核将网卡设备事件数据发送到udev监控套接字时,对网卡设备事件数据进行解析,得到事件类型和设备信息;

14、在一些可选的实施方式中,其中,事件类型包括添加网卡事件和移除网卡事件。

15、在一些可选的实施方式中,设备信息包括网卡名称。

16、上述技术方案中,udev是linux kernel的设备管理器,它能够根据系统中的硬件设备的状态动态更新设备文件,包括设备文件的创建,删除等。udev库提供了监听网卡事件的api接口,通过监听内核发送的uevent来执行相应的热拔插动作。通过udev监控套接字,系统能够实时接收内核发送的网卡设备事件数据。这种机制确保了系统能够几乎立即响应网卡设备的添加或移除,从而提高了事件处理的实时性和准确性。对网卡设备事件数据进行解析,能够准确地识别出事件类型(如添加网卡或移除网卡)以及具体的设备信息(如网卡名称),后续能够根据不同的事件类型执行相应的处理逻辑,提高了系统的灵活性和适应性。

17、在一些可选的实施方式中,利用dpdk的hotplug模块,调用添加网卡事件处理函数之前,还包括:

18、初始化hotplug模块,启动hotplug处理机制,以监听和响应来自内核的网卡设备事件数据;

19、注册不同事件类型对应的回调函数,回调函数用于在对应事件类型的网卡设备事件发生时被调用。

20、在一些可选的实施方式中,其中,事件类型包括添加网卡事件和移除网卡事件,添加网卡事件对应的回调函数为添加网卡事件处理函数,移除网卡事件对应的回调函数为移除网卡事件处理函数。

21、上述技术方案中,当新的网卡设备被添加到系统中时,系统能够自动调用添加网卡事件处理函数来配置该设备。这包括分配port id、配置网卡队列数、绑定af_xdp套接字等操作。同样地,当网卡设备被移除时,系统也能够自动调用移除网卡事件处理函数来释放相关资源。通过初始化dpdk的hotplug模块并启动其处理机制,带来了高度集成、事件驱动、自动化处理、提高稳定性和可靠性、支持动态网络配置以及优化资源利用等效果。

22、本技术实施例提供的一种基于dpdk的动态网卡添加装置,包括:

23、监测组件,用于利用网卡设备事件监测模块,监测到添加网卡事件;

24、调用组件,用于利用dpdk的hotplug模块,调用添加网卡事件处理函数;

25、分配组件,用于为添加的网卡分配可用的port id;

26、处理组件,用于通过添加网卡事件处理函数,对添加的网卡配置网卡使能的网卡队列数,对网卡使能的每个网卡队列都创建并绑定af_xdp套接字;并启动网卡,根据新建网卡的port id、网卡队列和af_xdp套接字的对应关系,使用af_xdp套接字在对应的网卡队列上进行收包和发包操作。

27、在一些可选的实施方式中,还包括:

28、配置组件,用于dpdk初始化,启动用于创建网卡设备事件监测模块的线程。

29、在一些可选的实施方式中,配置组件还用于:

30、创建用于监听内核发送网卡设备事件数据的udev监控套接字;

31、配置网卡设备事件监测模块,当内核将网卡设备事件数据发送到udev监控套接字时,对网卡设备事件数据进行解析,得到事件类型和设备信息;其中,事件类型包括添加网卡事件和移除网卡事件,设备信息包括网卡名称。

32、在一些可选的实施方式中,配置组件还用于:

33、初始化hotplug模块,启动hotplug处理机制,以监听和响应来自内核的网卡设备事件数据;

34、注册不同事件类型对应的回调函数,回调函数用于在对应事件类型的网卡设备事件发生时被调用;其中,事件类型包括添加网卡事件和移除网卡事件,添加网卡事件对应的回调函数为添加网卡事件处理函数,移除网卡事件对应的回调函数为移除网卡事件处理函数。

35、本技术实施例提供的一种计算机可读存储介质,该存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如以上任一所述的方法。

36、本技术实施例提供的一种电子设备,包括:处理器和存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述机器可读指令被所述处理器执行时执行如以上任一所述的方法。

37、本技术实施例提供的一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现以上任一所述方法的步骤。


技术特征:

1.一种dpdk动态网卡添加方法,其特征在于,所述方法包括:

2.如权利要求1所述的方法,其特征在于,所述利用网卡设备事件监测模块,监测到添加网卡事件之前,还包括:

3.如权利要求2所述的方法,其特征在于,所述创建网卡设备事件监测模块,包括:

4.如权利要求3所述的方法,其特征在于,其中,所述事件类型包括添加网卡事件和移除网卡事件。

5.如权利要求3所述的方法,其特征在于,其中,所述设备信息包括网卡名称。

6.如权利要求1所述的方法,其特征在于,所述利用dpdk的hotplug模块,调用添加网卡事件处理函数之前,还包括:

7.如权利要求6所述的方法,其特征在于,其中,所述事件类型包括添加网卡事件和移除网卡事件,所述添加网卡事件对应的回调函数为添加网卡事件处理函数,所述移除网卡事件对应的回调函数为移除网卡事件处理函数。

8.一种计算机可读存储介质,其特征在于,该存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1-7任一所述的方法。

9.一种电子设备,其特征在于,包括:处理器和存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述机器可读指令被所述处理器执行时执行如权利要求1-7任一所述的方法。

10.一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现权利要求1-7任一所述方法的步骤。


技术总结
本申请提供一种DPDK动态网卡添加方法、存储介质、电子设备及程序产品,通过监控内核发送的添加网卡事件,并调用对应的添加网卡事件处理函数,实时处理动态添加的网卡,在DPDK动态添加网卡的过程中,不需要重启整个DPDK进程,从而不影响已有网卡设备的网络通信。并且,DPDK使用AF_XDP套接字可以显著减少数据包处理延迟。AF_XDP是一种高效的数据包接收机制,它允许应用程序直接访问网络硬件的队列,绕过内核协议栈,从而减少CPU消耗和延迟。通过为每个网卡队列创建并绑定AF_XDP套接字,可以实现更细粒度的数据包处理,提高并行处理能力。

技术研发人员:杨强
受保护的技术使用者:北京天融信网络安全技术有限公司
技术研发日:
技术公布日:2024/12/17
转载请注明原文地址:https://xbbs.6miu.com/read-25502.html