CN112925581A - Dpdk容器的启动方法、装置及电子设备 - Google Patents

Dpdk容器的启动方法、装置及电子设备 Download PDF

Info

Publication number
CN112925581A
CN112925581A CN202110196718.2A CN202110196718A CN112925581A CN 112925581 A CN112925581 A CN 112925581A CN 202110196718 A CN202110196718 A CN 202110196718A CN 112925581 A CN112925581 A CN 112925581A
Authority
CN
China
Prior art keywords
dpdk
container
containers
virtual network
starting
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.)
Pending
Application number
CN202110196718.2A
Other languages
English (en)
Inventor
彭林涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bigo Technology Pte Ltd
Original Assignee
Bigo Technology Pte Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Bigo Technology Pte Ltd filed Critical Bigo Technology Pte Ltd
Priority to CN202110196718.2A priority Critical patent/CN112925581A/zh
Publication of CN112925581A publication Critical patent/CN112925581A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例提供了一种DPDK容器的启动方法、装置及电子设备,涉及互联网技术领域。该方法包括:获取数据平面开发工具包DPDK容器的第一数量M,M为正整数;根据所述第一数量,确定所需的虚拟网卡的第二数量,并将物理网卡虚拟出所述第二数量的虚拟网卡;为M个DPDK容器中每一DPDK容器配置一个虚拟网卡,得到M个目标DPDK容器;根据所述M个DPDK容器中每一DPDK容器的启动参数,启动对应的目标DPDK容器。上述方案,每个DPDK进程的流量都是独立的,只收发属于当前DPDK进程的报文,当某个进程出现问题后,也只影响当前进程,对其他进程不会产生影响,提高整机稳定性。

Description

DPDK容器的启动方法、装置及电子设备
技术领域
本发明涉及互联网技术领域,尤其涉及一种DPDK容器的启动方法、装置及电子设备。
背景技术
近年来,随着数据平面开发工具包(Data Plane Development Kit,DPDK)这种收发数据报文绕过Linux内核协议栈KERNEL BY PASS的技术的普及以及该技术带来巨大的性能收益,目前越来越倾向于使用DPDK来优化网络输入/输出(Input/Output,IO)密集型应用。而基于DPDK的应用和基于传统Linux协议栈的应用有很大不同。DPDK应用一般需要独占物理机,这样做主要是因为DPDK整个流程都处于用户态,很容易受到其他进程干扰,从而产生丢包影响。虽然使用DPDK提高了整体收益,但是独占机器就意味着硬件利用率的下降。而且DPDK应用需要独占至少一张物理网卡,这就意味着如果DPDK应用崩溃,网络就断开了,整机的稳定性会变差,给运维DPDK的应用也带来了大的挑战。
发明内容
本发明提供一种DPDK容器的启动方法、装置及电子设备,以便在一定程度上解决现有技术DPDK整个流程都处于用户态,很容易受到其他进程干扰,易导致整机稳定性较差等问题。
在本发明实施的第一方面,提供了一种DPDK容器的启动方法,所述方法包括:
获取数据平面开发工具包DPDK容器的第一数量M,M为正整数;
根据所述第一数量,确定所需的虚拟网卡的第二数量,并将物理网卡虚拟出所述第二数量的虚拟网卡;
为M个DPDK容器中每一DPDK容器配置一个虚拟网卡,得到M个目标DPDK容器;
根据所述M个DPDK容器中每一DPDK容器的启动参数,启动对应的目标DPDK容器。
在本发明实施的第二方面,提供了一种DPDK容器的启动装置,所述装置包括:
第一获取模块,用于获取DPDK容器的第一数量M,M为正整数;
第一处理模块,用于根据所述第一数量,确定所需的虚拟网卡的第二数量,并将物理网卡虚拟出所述第二数量的虚拟网卡;
第一配置模块,用于为M个DPDK容器中每一DPDK容器配置一个虚拟网卡,得到M个目标DPDK容器;
第一启动模块,用于根据所述M个DPDK容器中每一DPDK容器的启动参数,启动对应的目标DPDK容器。
在本发明实施的第三方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现如上所述的DPDK容器的启动方法中的步骤。
在本发明实施的第四方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的DPDK容器的启动方法。
在本发明实施例的第五方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如上所述的DPDK容器的启动方法。
针对在先技术,本发明具备如下优点:
本发明实施例中,通过获取数据平面开发工具包DPDK容器的第一数量M,根据所述第一数量,确定所需的虚拟网卡的第二数量,并将物理网卡虚拟出所述第二数量的虚拟网卡,使用虚拟网卡可以保证每个进程所接收到的流量都是自己的,不会额外产生其他进程的流量转发带来的性能损耗;并且,通过为M个DPDK容器中每一DPDK容器配置一个虚拟网卡,得到M个目标DPDK容器,根据所述M个DPDK容器中每一DPDK容器的启动参数,启动对应的目标DPDK容器,由于每个DPDK进程的流量都是独立的,只收发属于当前DPDK进程的报文,当某个进程出现问题后,也只影响当前进程,对其他进程不会产生影响,提高整机稳定性。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1为本发明实施例提供的DPDK容器的启动方法的流程图;
图2为本发明实施例提供的物理机的结构框图;
图3为本发明实施例提供的DPDK容器的启动装置的结构框图;
图4为本发明实施例提供的电子设备的结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
具体的,如图1所示,本发明实施例提供了一种DPDK容器的启动方法,该方法适配多种场景,主要应用于物理机中,方便传统网络IO密集型应用快速改造成DPDK应用,并且,DPDK和容器技术相结合,方便无缝的接入容器编排***Kubernetes。
在上述方法应用于物理机中的情况下,该方法具体包括如下步骤:
步骤101,获取数据平面开发工具包DPDK容器的第一数量M,M为正整数。
在上述步骤101中,物理机获取需要部署的DPDK容器的第一数量,该第一数量可以用M表示,M为大于或等于1的正整数。如果物理机需要部署第一数量(即M个)的DPDK容器,则需要在物理机中安装M个DPDK容器。其中,DPDK表示Intel开发的一种高性能网络IO转发库。
步骤102,根据所述第一数量,确定所需的虚拟网卡的第二数量,并将物理网卡虚拟出所述第二数量的虚拟网卡。
在上述步骤102中,物理机根据DPDK容器的第一数量,可以得知物理机中所需的虚拟网卡(即虚拟化网卡)的第二数量,在确定虚拟网卡的第二数量之后,物理机根据第二数量可以将物理机中的物理网卡虚拟出第二数量的虚拟网卡,使用虚拟网卡可以保证每个进程所接收到的流量都是自己的,不会额外产生其他进程的流量转发带来的性能损耗。
进一步的,如果物理机需要部署M个DPDK容器,则物理机需要M个虚拟网卡。在确定虚拟网卡的第二数量为M之后,物理机根据第二数量M可以将物理机中的物理网卡虚拟出M个虚拟网卡。
步骤103,为M个DPDK容器中每一DPDK容器配置一个虚拟网卡,得到M个目标DPDK容器。
在上述步骤103中,在确定DPDK容器的第一数量以及虚拟网卡的第二数量之后,物理机将为每一个DPDK容器分配一个虚拟网卡,换句话说,M个DPDK容器中的每一DPDK容器均被分配一个虚拟网卡。
步骤104,根据所述M个DPDK容器中每一DPDK容器的启动参数,启动对应的目标DPDK容器。
在上述步骤104中,针对M个DPDK容器中的每一DPDK容器,根据DPDK容器的启动参数,可以启动该DPDK容器对应的目标DPDK容器,由于每个DPDK进程的流量都是独立的,只收发属于当前DPDK进程的报文,当某个进程出现问题后,也只影响当前进程,对其他进程不会产生影响,提高整机稳定性。
下面通过一具体实施例说明上述物理机的具体结构:
如图2所示,物理机21包括物理网卡216,物理机21通过物理网卡216与交换机22通信连接。通过上述步骤101可以获取DPDK容器的第一数量M,例如:M为4,即需要在物理机中部署第一DPDK容器211、第二DPDK容器212、第三DPDK容器213以及第四DPDK容器214。根据步骤102可以得知虚拟网卡的第二数量为4,并将物理网卡216虚拟出4个虚拟网卡,虚拟出的四个虚拟网卡分别为:第一虚拟网卡2111、第二虚拟网卡2121、第三虚拟网卡2131以及第四虚拟网卡2141。根据步骤103可以将第一虚拟网卡2111分配给第一DPDK容器211,将第二虚拟网卡2121分配给第二DPDK容器212,将第三虚拟网卡2131分配给第三DPDK容器213,将第四虚拟网卡2141分配给第四DPDK容器214,从而得到四个目标DPDK容器。
本发明上述实施例中,通过获取数据平面开发工具包DPDK容器的第一数量M,根据所述第一数量,确定所需的虚拟网卡的第二数量,并将物理网卡虚拟出所述第二数量的虚拟网卡,使用虚拟网卡可以保证每个进程所接收到的流量都是自己的,不会额外产生其他进程的流量转发带来的性能损耗;并且,通过为M个DPDK容器中每一DPDK容器配置一个虚拟网卡,得到M个目标DPDK容器,根据所述M个DPDK容器中每一DPDK容器的启动参数,启动对应的目标DPDK容器,由于每个DPDK进程的流量都是独立的,只收发属于当前DPDK进程的报文,当某个进程出现问题后,也只影响当前进程,对其他进程不会产生影响,提高整机稳定性。
可选的,所述步骤102根据所述第一数量,确定所需的虚拟网卡的第二数量,并将物理网卡虚拟出所述第二数量的虚拟网卡,具体可以包括如下步骤:
根据所述第一数量,确定所需的虚拟网卡的第二数量;
根据所述第二数量,通过网卡虚拟化技术(Single Root input/outputVirtualization,SR-IOV)将物理网卡虚拟出所述第二数量的虚拟网卡。
在上述实施例中,物理机根据DPDK容器的第一数量,可以得知物理机中所需的虚拟网卡(即虚拟化网卡)的第二数量,在确定虚拟网卡的第二数量之后,物理机根据第二数量,可以采用SR-IOV技术将物理机中的物理网卡虚拟出第二数量的虚拟网卡,SR-IOV可以将物理网卡虚拟出多块虚拟网卡,每块虚拟网卡都有自己独立的媒体存取控制位址(MediaAccess Control Address,MAC),DPDK多进程可以让每个进程接管一个独立的虚拟网卡,相对于现有技术使用虚拟网卡,可以保证每个进程所接收到的流量都是自己的,不会额外产生其他进程的流量转发带来的性能损耗,解决了现有技术DPDK跨进程转发性能下降的问题。并且,使用SR-IOV虚拟出虚拟网卡之后,由于每个DPDK进程的流量都是独立的,只收发属于当前DPDK进程的报文,因此当某个进程出问题后,也只影响当前进程,对其他进程不影响,解决了现有技术DPDK多进程稳定性差的问题。
可选的,所述步骤101获取DPDK容器的第一数量M之后,所述方法还可以包括如下步骤:
根据所述第一数量,确定所需隔离的中央处理器(central processing unit,CPU)的第三数量;
根据所述第三数量,采用CPU隔离技术隔离出所述第三数量的CPU。
在上述实施例中,物理机根据DPDK容器的第一数量,可以得知物理机中所需要隔离的CPU的第三数量,在确定需要隔离的CPU的第三数量之后,物理机根据第三数量,采用CPU隔离技术隔离出所述第三数量的CPU,即物理机根据第三数量,采用CPU隔离技术隔离每一个DPDK容器所在的CPU。如图2所示,为了使得DPDK环境上机器充分利用多余的CPU资源,可以混合部署其他应用,利用SR-IOV技术和CPU隔离技术,可以做到DPDK应用和传统应用215完全隔离开,保证DPDK应用和传统应用215和谐的共存于同一台机器。CPU隔离主要是为了将一些CPU固定分配给DPDK容器后,传统应用215不会调度在DPDK应用所在的CPU上,从而影响每一个DPDK容器中的DPDK应用。
可选的,所述步骤103为M个DPDK容器中每一DPDK容器配置一个虚拟网卡,得到M个目标DPDK容器,具体可以包括如下步骤:
为M个DPDK容器中每一DPDK容器配置一个虚拟网卡;
通过第一接口,获取每一所述DPDK容器配置的虚拟网卡的外设部件互联标准(Peripheral Component Interconnect,PCI)地址;
根据每一所述DPDK容器配置的虚拟网卡的PCI地址,配置每一所述DPDK容器中的应用程序的虚拟网卡白名单参数;
根据每一所述DPDK容器以及所述DPDK容器中的应用程序的虚拟网卡白名单参数,得到对应的目标DPDK容器。
在上述实施例中,在确定DPDK容器的第一数量以及虚拟网卡的第二数量之后,针对每一个DPDK容器,物理机为每一个DPDK容器分配一个虚拟网卡,并通过第一接口获取虚拟网卡的PCI地址,可以记作:VF_PCI。其中,所述第一接口可以为Linux proc接口,Linuxproc接口是一个虚拟文件操作***接口,通过它可以使用在Linux内核空间和用户空间之间进行通信。并且,物理机根据每一DPDK容器配置的虚拟网卡的PCI地址,配置每一DPDK容器中的应用程序的虚拟网卡白名单参数pci-whitelist=VF_PCI,可以记作:DPDK_PCI_WHITELIST,该虚拟网卡白名单参数用于DPDK应用识别需要接管的虚拟网卡,即通过虚拟网卡白名单参数,DPDK应用可以识别出对应的虚拟网卡。
可选的,所述步骤104根据所述M个DPDK容器中每一DPDK容器的启动参数,启动对应的目标DPDK容器之前,所述方法还可以包括如下步骤:
针对所述M个DPDK容器中每一DPDK容器,配置对应的启动参数。
在上述实施例中,针对每一个DPDK容器,物理机为每一个DPDK容器均配置其对应的启动参数,用于启动每一个DPDK容器对应的目标DPDK容器。
进一步的,上述针对所述M个DPDK容器中每一DPDK容器,配置对应的启动参数的步骤,具体可以包括如下内容:
为每一所述DPDK容器配置容器安装镜像;
为每一所述DPDK容器配置一个IP地址;
为每一所述DPDK容器配置一个已隔离的CPU;
为每一所述DPDK容器配置网络模式启动参数;
配置每一所述DPDK容器中的应用程序的隔离参数。
在上述启动参数的配置步骤中,针对每一个DPDK容器,物理机为该DPDK容器配置容器安装镜像IMAGE;针对每一个DPDK容器,物理机为该DPDK容器配置一个独立可以与外界通信的IP地址,可以记作:IP_ADDR;针对每一个DPDK容器,物理机为该DPDK容器配置一个已经被隔离的CPU,可以记作:CPU_NR;针对每一个DPDK容器,物理机为该DPDK容器配置网络模式启动参数,可以记作:NETWORK_MODE,该网络模式启动参数用于完全隔离物DPDK容器和物理机的网络环境,DPDK进程使用的虚拟网卡和物理网卡互不影响,在DPDK进程崩溃或者停止的情况下,其他应用依然可以通过物理网卡和外界正常通信,解决现有技术DPDK应用崩溃导致运维困难的问题。
并且,针对每一个DPDK容器,物理机为该DPDK容器配置应用程序的隔离参数file-prefix,可以记作:DPDK_ISOLATE,用于隔离不同DPDK容器中的DPDK应用间的内存资源。
需要说明的是,上述启动参数的配置时间并没有先后限定,可以同时配置所有参数,也可以在不同时间配置不同启动参数。
可选的,所述方法还可以包括如下步骤:
安装容器化工具;
其中,在上述为每一所述DPDK容器配置容器安装镜像的步骤中,通过所述容器化工具配置所述容器安装镜像。
在上述实施例中,物理机安装容器化工具DOCKER,使用该容器化工具DOCKER为DPDK应用程序配置容器安装镜像。
可选的,所述步骤101获取DPDK容器的第一数量M之后,所述方法还可以包括如下步骤:
根据所述第一数量,确定所需配置的内存块的第四数量;
根据所述第四数量以及每一所述DPDK容器所需的内存块容量,得到所需的内存总容量。
在上述实施例中,物理机根据DPDK容器的第一数量,可以得知物理机中所需的内存块的第四数量,即可以得知需要分配的大页内存块个数;如果一个DPDK容器需要的大页内存块的内存块容量为SIZE,则通过计算可以得出总共需要的大页内存大小(即内存总容量)为M*SIZE的数值,通过Linux proc接口获取总共所需要的大页内存(即内存总容量)。
可选的,所述步骤104根据所述M个DPDK容器中每一DPDK容器的启动参数,启动对应的目标DPDK容器之前,所述方法还可以包括如下步骤:
安装所述DPDK容器所需的第一驱动;
将每一所述DPDK容器配置的虚拟网卡与所述第一驱动进行绑定。
在上述实施例中,在启动目标DPDK容器之前,物理机需要安装DPDK容器所需要的第一驱动IGB_UIO驱动,该驱动为共享驱动,可以使用DPDK开发包自带工具DEV_BIND将DPDK容器配置的虚拟网卡绑定该驱动。
并且,物理机还可以安装第二驱动RTE_KNI驱动,RTE_KNI驱动可以使用内核多线程模式安装;在启动目标DPDK容器之后,每一所述DPDK容器配置的虚拟网卡自动连接该第二驱动,用于使内核协议栈和DPDK应用互通。
可选的,所述步骤104根据所述M个DPDK容器中每一DPDK容器的启动参数,启动对应的目标DPDK容器,具体可以包括如下内容:
根据所述M个DPDK容器中每一DPDK容器的启动参数以及所述第一驱动,启动对应的目标DPDK容器。
在上述实施例中,在物理机配置每一DPDK容器的启动参数、且将每一所述DPDK容器配置的虚拟网卡与所述第一驱动进行绑定之后,物理机可以根据启动参数以及第一驱动,通过容器化工具DOCKER启动每一DPDK容器对应的目标DPDK容器,从而使得目标DPDK容器处于工作状态。
综上所述,本发明实施例采用SR-IOV可以将物理网卡虚拟出多块虚拟网卡,每块虚拟网卡都有自己独立的MAC地址,DPDK多进程可以让每个进程接管一个独立的虚拟网卡,可以保证每个进程所接收到的流量都是自己的,不会额外产生其他进程的流量转发带来的性能损耗,并且DPDK应用不需要独占机器,节省了机器使用成本,提高了单进程CPU性能,解决了现有技术DPDK跨进程转发性能下降的问题;并且,使用SR-IOV虚拟出虚拟网卡之后,由于每个DPDK进程的流量都是独立的,只收发属于当前DPDK进程的报文,因此当某个进程出问题后,也只影响当前进程,对其他进程不影响,解决了现有技术DPDK多进程稳定性差的问题;并且,通过SR-IOV技术和CPU隔离技术结合,可以做到DPDK应用和传统应用完全隔离开,保证DPDK应用和传统应用和谐的共存于同一台机器,并通过网络模式启动参数完全隔离物DPDK容器和物理机的网络环境,DPDK进程使用的虚拟网卡和物理网卡互不影响,在DPDK进程崩溃或者停止的情况下,其他应用依然可以通过物理网卡和外界正常通信,解决现有技术DPDK应用崩溃导致运维困难的问题。
如图3所示,本发明实施例提供的一种DPDK容器的启动装置300,所述装置包括:
第一获取模块301,用于获取DPDK容器的第一数量M,M为正整数;
第一处理模块302,用于根据所述第一数量,确定所需的虚拟网卡的第二数量,并将物理网卡虚拟出所述第二数量的虚拟网卡;
第一配置模块303,用于为M个DPDK容器中每一DPDK容器配置一个虚拟网卡,得到M个目标DPDK容器;
第一启动模块304,用于根据所述M个DPDK容器中每一DPDK容器的启动参数,启动对应的目标DPDK容器。
本发明上述实施例中,通过获取数据平面开发工具包DPDK容器的第一数量M,根据所述第一数量,确定所需的虚拟网卡的第二数量,并将物理网卡虚拟出所述第二数量的虚拟网卡,使用虚拟网卡可以保证每个进程所接收到的流量都是自己的,不会额外产生其他进程的流量转发带来的性能损耗;并且,通过为M个DPDK容器中每一DPDK容器配置一个虚拟网卡,得到M个目标DPDK容器,根据所述M个DPDK容器中每一DPDK容器的启动参数,启动对应的目标DPDK容器,由于每个DPDK进程的流量都是独立的,只收发属于当前DPDK进程的报文,当某个进程出现问题后,也只影响当前进程,对其他进程不会产生影响,提高整机稳定性。
可选的,所述第一处理模块302,包括:
第一确定单元,用于根据所述第一数量,确定所需的虚拟网卡的第二数量;
第一处理单元,用于根据所述第二数量,通过网卡虚拟化技术SR-IOV将物理网卡虚拟出所述第二数量的虚拟网卡。
可选的,所述第一获取模块301之后,所述装置还包括:
第一确定模块,用于根据所述第一数量,确定所需隔离的中央处理器CPU的第三数量;
第一隔离模块,用于根据所述第三数量,采用CPU隔离技术隔离出所述第三数量的CPU。
可选的,所述第一配置模块303,包括:
第一配置单元,用于为M个DPDK容器中每一DPDK容器配置一个虚拟网卡;
第一获取单元,用于通过第一接口,获取每一所述DPDK容器配置的虚拟网卡的外设部件互联标准PCI地址;
第二配置单元,用于根据每一所述DPDK容器配置的虚拟网卡的PCI地址,配置每一所述DPDK容器中的应用程序的虚拟网卡白名单参数;
第二获取单元,用于根据每一所述DPDK容器以及所述DPDK容器中的应用程序的虚拟网卡白名单参数,得到对应的目标DPDK容器。
可选的,所述第一启动模块304之前,所述装置还包括:
第二配置模块,用于针对所述M个DPDK容器中每一DPDK容器,配置对应的启动参数。
可选的,所述第二配置模块,包括:
第三配置单元,用于为每一所述DPDK容器配置容器安装镜像;
第四配置单元,用于为每一所述DPDK容器配置一个IP地址;
第五配置单元,用于为每一所述DPDK容器配置一个已隔离的CPU;
第六配置单元,用于为每一所述DPDK容器配置网络模式启动参数;
第七配置单元,用于配置每一所述DPDK容器中的应用程序的隔离参数。
可选的,所述装置还包括:
第一安装模块,用于安装容器化工具;
其中,在所述第三配置单元中,通过所述容器化工具配置所述容器安装镜像。
可选的,所述第一获取模块301之后,所述装置还包括:
第二确定模块,用于根据所述第一数量,确定所需配置的内存块的第四数量;
第二获取模块,用于根据所述第四数量以及每一所述DPDK容器所需的内存块容量,得到所需的内存总容量。
可选的,所述第一启动模块304之前,所述装置还包括:
第二安装模块,用于安装所述DPDK容器所需的第一驱动;
第二处理模块,用于将每一所述DPDK容器配置的虚拟网卡与所述第一驱动进行绑定。
可选的,所述第一启动模块304,包括:
第一启动单元,用于根据所述M个DPDK容器中每一DPDK容器的启动参数以及所述第一驱动,启动对应的目标DPDK容器。
需要说明的是,该DPDK容器的启动装置实施例是与上述DPDK容器的启动方法相对应的装置,上述实施例的所有实现方式均适用于该装置实施例中,也能达到与其相同的技术效果,在此不做赘述。
综上所述,本发明实施例采用SR-IOV可以将物理网卡虚拟出多块虚拟网卡,每块虚拟网卡都有自己独立的MAC地址,DPDK多进程可以让每个进程接管一个独立的虚拟网卡,可以保证每个进程所接收到的流量都是自己的,不会额外产生其他进程的流量转发带来的性能损耗,并且DPDK应用不需要独占机器,节省了机器使用成本,提高了单进程CPU性能,解决了现有技术DPDK跨进程转发性能下降的问题;并且,使用SR-IOV虚拟出虚拟网卡之后,由于每个DPDK进程的流量都是独立的,只收发属于当前DPDK进程的报文,因此当某个进程出问题后,也只影响当前进程,对其他进程不影响,解决了现有技术DPDK多进程稳定性差的问题;并且,通过SR-IOV技术和CPU隔离技术结合,可以做到DPDK应用和传统应用完全隔离开,保证DPDK应用和传统应用和谐的共存于同一台机器,并通过网络模式启动参数完全隔离物DPDK容器和物理机的网络环境,DPDK进程使用的虚拟网卡和物理网卡互不影响,在DPDK进程崩溃或者停止的情况下,其他应用依然可以通过物理网卡和外界正常通信,解决现有技术DPDK应用崩溃导致运维困难的问题。
本发明实施例还提供了一种电子设备,该电子设备可以为物理机。如图4所示,包括处理器401、通信接口402、存储器403和通信总线404,其中,处理器401,通信接口402,存储器403通过通信总线404完成相互间的通信。
存储器403,用于存放计算机程序。
处理器401用于执行存储器403上所存放的程序时,实现本发明实施例提供的一种DPDK容器的启动方法中的部分或者全部步骤。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中所述的DPDK容器的启动方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中所述的DPDK容器的启动方法。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,包含在本发明的保护范围内。

Claims (13)

1.一种DPDK容器的启动方法,其特征在于,所述方法包括:
获取数据平面开发工具包DPDK容器的第一数量M,M为正整数;
根据所述第一数量,确定所需的虚拟网卡的第二数量,并将物理网卡虚拟出所述第二数量的虚拟网卡;
为M个DPDK容器中每一DPDK容器配置一个虚拟网卡,得到M个目标DPDK容器;
根据所述M个DPDK容器中每一DPDK容器的启动参数,启动对应的目标DPDK容器。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一数量,确定所需的虚拟网卡的第二数量,并将物理网卡虚拟出所述第二数量的虚拟网卡,包括:
根据所述第一数量,确定所需的虚拟网卡的第二数量;
根据所述第二数量,通过网卡虚拟化技术SR-IOV将物理网卡虚拟出所述第二数量的虚拟网卡。
3.根据权利要求1所述的方法,其特征在于,所述获取数据平面开发工具包DPDK容器的第一数量M之后,所述方法还包括:
根据所述第一数量,确定所需隔离的中央处理器CPU的第三数量;
根据所述第三数量,采用CPU隔离技术隔离出所述第三数量的CPU。
4.根据权利要求3所述的方法,其特征在于,所述为M个DPDK容器中每一DPDK容器配置一个虚拟网卡,得到M个目标DPDK容器,包括:
为M个DPDK容器中每一DPDK容器配置一个虚拟网卡;
通过第一接口,获取每一所述DPDK容器配置的虚拟网卡的外设部件互联标准PCI地址;
根据每一所述DPDK容器配置的虚拟网卡的PCI地址,配置每一所述DPDK容器中的应用程序的虚拟网卡白名单参数;
根据每一所述DPDK容器以及所述DPDK容器中的应用程序的虚拟网卡白名单参数,得到对应的目标DPDK容器。
5.根据权利要求1所述的方法,其特征在于,所述根据所述M个DPDK容器中每一DPDK容器的启动参数,启动对应的目标DPDK容器之前,所述方法还包括:
针对所述M个DPDK容器中每一DPDK容器,配置对应的启动参数。
6.根据权利要求5所述的方法,其特征在于,所述针对所述M个DPDK容器中每一DPDK容器,配置对应的启动参数,包括:
为每一所述DPDK容器配置容器安装镜像;
为每一所述DPDK容器配置一个IP地址;
为每一所述DPDK容器配置一个已隔离的CPU;
为每一所述DPDK容器配置网络模式启动参数;
配置每一所述DPDK容器中的应用程序的隔离参数。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
安装容器化工具;
其中,在所述为每一所述DPDK容器配置容器安装镜像的步骤中,通过所述容器化工具配置所述容器安装镜像。
8.根据权利要求1所述的方法,其特征在于,所述获取数据平面开发工具包DPDK容器的第一数量M之后,所述方法还包括:
根据所述第一数量,确定所需配置的内存块的第四数量;
根据所述第四数量以及每一所述DPDK容器所需的内存块容量,得到所需的内存总容量。
9.根据权利要求1所述的方法,其特征在于,所述根据所述M个DPDK容器中每一DPDK容器的启动参数,启动对应的目标DPDK容器之前,所述方法还包括:
安装所述DPDK容器所需的第一驱动;
将每一所述DPDK容器配置的虚拟网卡与所述第一驱动进行绑定。
10.根据权利要求9所述的方法,其特征在于,所述根据所述M个DPDK容器中每一DPDK容器的启动参数,启动对应的目标DPDK容器,包括:
根据所述M个DPDK容器中每一DPDK容器的启动参数以及所述第一驱动,启动对应的目标DPDK容器。
11.一种DPDK容器的启动装置,其特征在于,所述装置包括:
第一获取模块,用于获取DPDK容器的第一数量M,M为正整数;
第一处理模块,用于根据所述第一数量,确定所需的虚拟网卡的第二数量,并将物理网卡虚拟出所述第二数量的虚拟网卡;
第一配置模块,用于为M个DPDK容器中每一DPDK容器配置一个虚拟网卡,得到M个目标DPDK容器;
第一启动模块,用于根据所述M个DPDK容器中每一DPDK容器的启动参数,启动对应的目标DPDK容器。
12.一种电子设备,其特征在于,还包括:处理器、通信接口、存储器和通信总线;其中,处理器、通信接口以及存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现如权利要求1至10任一项所述的DPDK容器的启动方法中的步骤。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至10任一项所述的DPDK容器的启动方法。
CN202110196718.2A 2021-02-22 2021-02-22 Dpdk容器的启动方法、装置及电子设备 Pending CN112925581A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110196718.2A CN112925581A (zh) 2021-02-22 2021-02-22 Dpdk容器的启动方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110196718.2A CN112925581A (zh) 2021-02-22 2021-02-22 Dpdk容器的启动方法、装置及电子设备

Publications (1)

Publication Number Publication Date
CN112925581A true CN112925581A (zh) 2021-06-08

Family

ID=76170077

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110196718.2A Pending CN112925581A (zh) 2021-02-22 2021-02-22 Dpdk容器的启动方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN112925581A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114244717A (zh) * 2022-02-28 2022-03-25 苏州浪潮智能科技有限公司 虚拟网卡资源的配置方法、装置、计算机设备及介质
CN114629844A (zh) * 2022-02-28 2022-06-14 浙江大华技术股份有限公司 一种报文转发的方法、装置及电子设备
CN116257276A (zh) * 2023-05-09 2023-06-13 珠海星云智联科技有限公司 支持虚拟化硬件加速的虚拟宿主机用户后端升级方法
WO2024093574A1 (zh) * 2022-10-31 2024-05-10 中国电信股份有限公司 虚拟机及其配置方法和装置

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107294869A (zh) * 2017-06-22 2017-10-24 郑州云海信息技术有限公司 一种虚拟网卡报文抓取的方法及***
CN108964959A (zh) * 2017-05-27 2018-12-07 阿里巴巴集团控股有限公司 一种用于虚拟化平台的网卡直通***及数据包监管方法
CN109361693A (zh) * 2018-11-21 2019-02-19 南京中孚信息技术有限公司 虚拟设备通信方法和装置
CN109981403A (zh) * 2019-03-05 2019-07-05 北京勤慕数据科技有限公司 虚拟机网络数据流量监控方法及装置
CN110380992A (zh) * 2019-07-24 2019-10-25 南京中孚信息技术有限公司 报文处理方法、装置及网络流量采集设备
CN111447155A (zh) * 2020-03-24 2020-07-24 广州市百果园信息技术有限公司 数据传输方法、装置、设备及存储介质
CN111522624A (zh) * 2020-04-17 2020-08-11 成都安恒信息技术有限公司 一种基于虚拟化技术的报文转发性能弹性扩展***及其扩展方法
CN111711801A (zh) * 2020-06-30 2020-09-25 重庆紫光华山智安科技有限公司 视频数据传输方法、装置、服务器和计算机可读存储介质
CN112003797A (zh) * 2020-07-16 2020-11-27 苏州浪潮智能科技有限公司 一种虚拟化dpdk网络性能提高方法、***、终端及存储介质

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108964959A (zh) * 2017-05-27 2018-12-07 阿里巴巴集团控股有限公司 一种用于虚拟化平台的网卡直通***及数据包监管方法
CN107294869A (zh) * 2017-06-22 2017-10-24 郑州云海信息技术有限公司 一种虚拟网卡报文抓取的方法及***
CN109361693A (zh) * 2018-11-21 2019-02-19 南京中孚信息技术有限公司 虚拟设备通信方法和装置
CN109981403A (zh) * 2019-03-05 2019-07-05 北京勤慕数据科技有限公司 虚拟机网络数据流量监控方法及装置
CN110380992A (zh) * 2019-07-24 2019-10-25 南京中孚信息技术有限公司 报文处理方法、装置及网络流量采集设备
CN111447155A (zh) * 2020-03-24 2020-07-24 广州市百果园信息技术有限公司 数据传输方法、装置、设备及存储介质
CN111522624A (zh) * 2020-04-17 2020-08-11 成都安恒信息技术有限公司 一种基于虚拟化技术的报文转发性能弹性扩展***及其扩展方法
CN111711801A (zh) * 2020-06-30 2020-09-25 重庆紫光华山智安科技有限公司 视频数据传输方法、装置、服务器和计算机可读存储介质
CN112003797A (zh) * 2020-07-16 2020-11-27 苏州浪潮智能科技有限公司 一种虚拟化dpdk网络性能提高方法、***、终端及存储介质

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114244717A (zh) * 2022-02-28 2022-03-25 苏州浪潮智能科技有限公司 虚拟网卡资源的配置方法、装置、计算机设备及介质
CN114244717B (zh) * 2022-02-28 2022-05-20 苏州浪潮智能科技有限公司 虚拟网卡资源的配置方法、装置、计算机设备及介质
CN114629844A (zh) * 2022-02-28 2022-06-14 浙江大华技术股份有限公司 一种报文转发的方法、装置及电子设备
CN114629844B (zh) * 2022-02-28 2024-04-05 浙江大华技术股份有限公司 一种报文转发的方法、装置及电子设备
WO2024093574A1 (zh) * 2022-10-31 2024-05-10 中国电信股份有限公司 虚拟机及其配置方法和装置
CN116257276A (zh) * 2023-05-09 2023-06-13 珠海星云智联科技有限公司 支持虚拟化硬件加速的虚拟宿主机用户后端升级方法

Similar Documents

Publication Publication Date Title
CN112925581A (zh) Dpdk容器的启动方法、装置及电子设备
US10778521B2 (en) Reconfiguring a server including a reconfigurable adapter device
CN106844007B (zh) 一种基于空间复用的虚拟化方法与***
EP3242440B1 (en) Fault tolerant method, apparatus and system for virtual machine
US8966480B2 (en) System for migrating a virtual machine between computers
US8886862B2 (en) Virtualization of interrupts
KR20140002048A (ko) 결합된 가상 그래픽 장치
US8271707B2 (en) Method and system for PCI hybrid function
US20150370582A1 (en) At least one user space resident interface between at least one user space resident virtual appliance and at least one virtual data plane
US10572434B2 (en) Intelligent certificate discovery in physical and virtualized networks
US20200201624A1 (en) State-preserving upgrade of an intelligent server adapter
CN114168271B (zh) 一种任务调度方法、电子设备及存储介质
CN115269213A (zh) 数据接收方法、数据发送方法、装置、电子设备及介质
CN114398172A (zh) 资源配置方法、装置、电子设备及计算机可读存储介质
CN109656675B (zh) 总线设备、计算机设备及实现物理主机云存储的方法
CN115599510A (zh) 一种缺页异常的处理方法及相应装置
US11237859B2 (en) Securing virtual machines in computer systems
CN111522624B (zh) 一种基于虚拟化技术的报文转发性能弹性扩展***及其扩展方法
CN113312141A (zh) 用于虚拟机的虚拟串行端口
Ermakov et al. Testing docker performance for HPC applications
CN113703914B (zh) 测试方法和测试***
CN115292077A (zh) 内核异常处理方法及***
CN104182271A (zh) 一种基于申威处理器的虚拟化实现方法
US11392504B2 (en) Memory page fault handling for network interface devices in a virtualized environment
CN113849277A (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