CN112052076A - 一种基于libvirt的dpdk vhostuser网卡管理方法及管理装置 - Google Patents
一种基于libvirt的dpdk vhostuser网卡管理方法及管理装置 Download PDFInfo
- Publication number
- CN112052076A CN112052076A CN202011078263.6A CN202011078263A CN112052076A CN 112052076 A CN112052076 A CN 112052076A CN 202011078263 A CN202011078263 A CN 202011078263A CN 112052076 A CN112052076 A CN 112052076A
- Authority
- CN
- China
- Prior art keywords
- network card
- virtual machine
- libvirt
- parameters
- parameter
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title claims abstract description 24
- 238000007726 management method Methods 0.000 claims description 17
- 238000004458 analytical method Methods 0.000 claims description 12
- 238000010276 construction Methods 0.000 claims description 11
- 238000007689 inspection Methods 0.000 claims description 7
- 230000008569 process Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000005457 optimization Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network 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)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于libvirt的dpdk vhostuser网卡管理方法及管理装置,包括在XML中配置vhostuser相关参数;创建虚拟机;在libvirt中根据解析的vhostuser参数,构建openvswitch命令行,指定端口、网卡路径以及名称;调用openvswitch命令,创建网卡;检查在指定路径下是否生成网卡,以及网卡参数是否正确,以及在虚拟机命令行参数中是否包含了网卡路径;关闭虚拟机,检查指定路径下的socket文件是否清除,以及ovs网络中的网卡是否删除,通过在libvirt中实现虚拟机DPDK网卡的创建,实现网络数据的高速收发,提升了虚拟机的网络性能。
Description
技术领域
本发明涉及在虚拟化平台应用技术领域,具体为一种基于libvirt的dpdkvhostuser网卡管理方法及管理装置。
背景技术
DPDK使用了轮询(polling)而不是中断来处理数据包。在收到数据包时,经DPDK重载的网卡驱动不会通过中断通知CPU,而是直接将数据包存入内存,交付应用层软件通过DPDK提供的接口来直接处理,这样节省了大量的CPU中断时间和内存拷贝时间;vhost user实现基于内核的vhost架构,将所有特性实现在用户空间;vhost user协议由两方组成:主方--QEMU;从方--Open vSwitch或者其它软件交换机;在vhostuser client模式中QEMU作为服务端,软件交换机作为客户端。
当QEMU客户机启动时,它将所有的客户机内存分配为共享的巨页内存,其操作系统的半虚拟化驱动virtio将保留这些巨页内存的一部分用作virtio环形缓存,这样OVSDPDK将可以直接读写客户机的virtio环形缓存,OVS DPDK和QEMU可通过此保留的内存空间交换网络数据包;用户空间进程接收到客户机预先分配的共享内存文件描述符后,可直接存取与之关联的客户机内存空间中的vrings环结构。
vhost user协议使用一个UNIX套接口处理vswitch和QEMU之间的通信,包括在初始化过程中,和数据包拷贝到共享内存的virtio环中需要通知对方时,所以两者的交互包括基于控制通道(vhu)的创建操作和通知机制,与拷贝数据包的数据通道(直接内存访问);vhostuser client模式下,QEMU创建vhu套接口,OVS进行连接;使用DPDK vhostuser网卡可以大幅提高虚拟机网络收发的性能,但是libvirt中并不支持将vhostuser类型的网卡添加至ovs网桥中,而且也不支持指定virtual port;因此,亟待一种改进的技术来解决现有技术中所存在的这一问题。
发明内容
本发明的目的在于提供一种基于libvirt的dpdk vhostuser网卡管理方法及管理装置,在libvirt中支持DPDK vhostuser类型网卡,将dpdk网卡添加到ovs网桥中,同时可以指定virtual port,在虚拟机开机的时候实现dpdk网卡的自动创建,以及虚拟机关机时,网卡的自动删除与资源释放,实现在用户态对网卡的操作,在包处理时避免中断上下文切换的开销,同时利用大内存页,来实现主机和虚拟机之间内存的共享,降低tlb miss,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:一种基于libvirt的dpdk vhostuser网卡管理方法,包括以下步骤:
步骤一:在XML中配置vhostuser相关参数,设置网卡socket路径以及指定bridge名字,virtual port的类型以及interfaceid;
步骤二:创建虚拟机,libvirt对xml进行解析,支持网卡类型为vhostuser时,对bridge以及virtualport的支持,将相关参数保存在数据结构中;
步骤三:在libvirt中根据解析的vhostuser参数,构建openvswitch命令行,指定端口、网卡路径以及名称;
步骤四:调用openvswitch命令,创建网卡;
步骤五:检查在指定路径下是否生成网卡,以及网卡参数是否正确,以及在虚拟机命令行参数中是否包含了网卡路径ovs-vsctl list interface net-id;
步骤六:关闭虚拟机,检查指定路径下的socket文件是否清除,以及ovs网络中的网卡是否删除。
优选的,所述步骤一中vhostuser相关参数包括接口类型、mac地址、来源信息及设备类型。
优选的,所述步骤二中libvirt采用C、C++、Python、Go、Perl、Ruby、OCaml、java、JavaScript、php其中一种或多种语言。
优选的,所述步骤二中虚拟机为微软虚拟机、BM虚拟机、HP虚拟机、Intel虚拟机、AMD虚拟机、Java虚拟机、Linux虚拟机其中的一种或多种。
优选的,所述步骤三中openvswitch支持标准的管理接口和协议。
一种基于libvirt的dpdk vhostuser网卡管理装置,包括参数配置模块、参数解析模块、构建命令模块和参数检查模块,
参数配置模块,配置vhostuser相关参数,设置网卡路径以及指定bridge名字,virtualport的类型以及interfaceid;
参数解析模块,创建虚拟机并对xml进行解析,支持bridge以及virtualport,将相关参数保存在数据结构中;
构建命令模块,根据解析的vhostuser参数,构建openvswitch命令行,指定端口、网卡路径以及名称;
参数检查模块,检查在指定路径下是否生成网卡,网卡参数是否正确,以及在虚拟机命令行参数中是否包含了网卡路径;
所述参数配置模块配置参数后经参数解析模块进行参数解析,构建命令模块根据解析后的参数进行命令构建,完成命令构建后,参数检查模块进行各项参数的检查。
与现有技术相比,本发明的有益效果是:
本发明提出的一种基于libvirt的dpdk vhostuser网卡管理方法及管理装置,能够实现dpdk网卡创建与删除的自动化,采用了大页来作为host和vm之间通信的内存空间,利用内存大页HUGEPAGE降低TLB miss,利用内存多通道交错访问提高内存访问有效带宽,在包处理时避免中断上下文切换的开销;在用户态操作网卡,使用类似于netmap的zerocopy技术来加速对物理设备的访问,规避不必要的内存拷贝和系统调用,便于快速迭代优化;对于vhost-user-client端口,OVS作为客户端,QEMU为服务器,这意味着OVS可以挂掉,并在不引起问题的情况下重新启动,也可重新启动客户机自身。
具体实施方式
下面对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供一种技术方案:一种基于libvirt的dpdk vhostuser网卡管理方法,包括以下步骤:
步骤一:在XML中配置vhostuser相关参数,设置网卡socket路径以及指定bridge名字,virtual port的类型以及interfaceid;
步骤二:创建虚拟机,libvirt对xml进行解析,支持网卡类型为vhostuser时,对bridge以及virtualport的支持,将相关参数保存在数据结构中;
步骤三:在libvirt中根据解析的vhostuser参数,构建openvswitch命令行,指定端口、网卡路径以及名称;
步骤四:调用openvswitch命令,创建网卡;
步骤五:检查在指定路径下是否生成网卡,以及网卡参数是否正确,以及在虚拟机命令行参数中是否包含了网卡路径ovs-vsctl list interface net-id;
步骤六:关闭虚拟机,检查指定路径下的socket文件是否清除,以及ovs网络中的网卡是否删除。
其中,步骤一中vhostuser相关参数包括接口类型、mac地址、来源信息及设备类型;步骤二中libvirt采用C、C++、Python、Go、Perl、Ruby、OCaml、java、JavaScript、php其中一种或多种语言;步骤二中虚拟机为微软虚拟机、BM虚拟机、HP虚拟机、Intel虚拟机、AMD虚拟机、Java虚拟机、Linux虚拟机其中的一种或多种;步骤三中openvswitch支持标准的管理接口和协议。
实施例一:
步骤一,在XML中配置vhostuser相关参数,设置网卡socket路径以及指定bridge名字,virtualport的类型以及interfaceid,具体格式如下:
步骤二,创建虚拟机,libvirt对xml进行解析,支持网卡类型为vhostuser时,对bridge以及virtualport的支持,将相关参数保存在数据结构中
步骤三,在libvirt中根据解析的vhostuser参数,构建openvswitch命令行,指定端口、网卡路径以及名称。
步骤四,调用openvswitch命令,创建网卡
步骤五,检查在指定路径下是否生成网卡,以及网卡参数是否正确,以及在虚拟机命令行参数中是否包含了网卡路径ovs-vsctl list interface net-id。
步骤六,关闭虚拟机,检查指定路径下的socket文件是否清除,以及ovs网络中的网卡是否删除。
实施例二:
步骤一,在XML中配置vhostuser相关参数,设置网卡socket路径以及指定bridge名字,virtualport的类型以及interfaceid,具体格式如下:
步骤二,创建虚拟机,libvirt对xml进行解析,支持网卡类型为vhostuser时,对bridge以及virtualport的支持,将相关参数保存在数据结构中
步骤三,在libvirt中根据解析的vhostuser参数,构建openvswitch命令行,指定端口、网卡路径以及名称。
步骤四,调用openvswitch命令,创建网卡
步骤五,检查在指定路径下是否生成网卡,以及网卡参数是否正确,以及在虚拟机命令行参数中是否包含了网卡路径ovs-vsctl list interface net-id。
步骤六,关闭虚拟机,检查指定路径下的socket文件是否清除,以及ovs网络中的网卡是否删除。
实施例三:
步骤一,在XML中配置vhostuser相关参数,设置网卡socket路径以及指定bridge名字,virtualport的类型以及interfaceid,具体格式如下:
步骤二,创建虚拟机,libvirt对xml进行解析,支持网卡类型为vhostuser时,对bridge以及virtualport的支持,将相关参数保存在数据结构中。
步骤三,在libvirt中根据解析的vhostuser参数,构建openvswitch命令行,指定端口、网卡路径以及名称。
步骤四,调用openvswitch命令,创建网卡。
步骤五,检查在指定路径下是否生成网卡,以及网卡参数是否正确,以及在虚拟机命令行参数中是否包含了网卡路径ovs-vsctl list interface net-id。
步骤六,关闭虚拟机,检查指定路径下的socket文件是否清除,以及ovs网络中的网卡是否删除。
为了进一步的对本申请进行保护,一种基于libvirt的dpdk vhostuser网卡管理装置,包括参数配置模块、参数解析模块、构建命令模块和参数检查模块,
参数配置模块,配置vhostuser相关参数,设置网卡路径以及指定bridge名字,virtualport的类型以及interfaceid;
参数解析模块,创建虚拟机并对xml进行解析,支持bridge以及virtualport,将相关参数保存在数据结构中;
构建命令模块,根据解析的vhostuser参数,构建openvswitch命令行,指定端口、网卡路径以及名称;
参数检查模块,检查在指定路径下是否生成网卡,网卡参数是否正确,以及在虚拟机命令行参数中是否包含了网卡路径;
所述参数配置模块配置参数后经参数解析模块进行参数解析,构建命令模块根据解析后的参数进行命令构建,完成命令构建后,参数检查模块进行各项参数的检查。
本发明提出的一种基于libvirt的dpdk vhostuser网卡管理方法及管理装置,能够实现dpdk网卡创建与删除的自动化,采用了大页来作为host和vm之间通信的内存空间,利用内存大页HUGEPAGE降低TLB miss,利用内存多通道交错访问提高内存访问有效带宽,在包处理时避免中断上下文切换的开销;在用户态操作网卡,使用类似于netmap的zerocopy技术来加速对物理设备的访问,规避不必要的内存拷贝和系统调用,便于快速迭代优化;对于vhost-user-client端口,OVS作为客户端,QEMU为服务器,这意味着OVS可以挂掉,并在不引起问题的情况下重新启动,也可重新启动客户机自身。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
Claims (6)
1.一种基于libvirt的dpdk vhostuser网卡管理方法,其特征在于:包括以下步骤:
步骤一:在XML中配置vhostuser相关参数,设置网卡socket路径以及指定bridge名字,virtualport的类型以及interfaceid;
步骤二:创建虚拟机,libvirt对xml进行解析,支持网卡类型为vhostuser时,对bridge以及virtualport的支持,将相关参数保存在数据结构中;
步骤三:在libvirt中根据解析的vhostuser参数,构建openvswitch命令行,指定端口、网卡路径以及名称;
步骤四:调用openvswitch命令,创建网卡;
步骤五:检查在指定路径下是否生成网卡,以及网卡参数是否正确,以及在虚拟机命令行参数中是否包含了网卡路径ovs-vsctllist interface net-id;
步骤六:关闭虚拟机,检查指定路径下的socket文件是否清除,以及ovs网络中的网卡是否删除。
2.根据权利要求1所述的一种基于libvirt的dpdk vhostuser网卡管理方法,其特征在于:所述步骤一中vhostuser相关参数包括接口类型、mac地址、来源信息及设备类型。
3.根据权利要求1所述的一种基于libvirt的dpdk vhostuser网卡管理方法,其特征在于:所述步骤二中libvirt采用C、C++、Python、Go、Perl、Ruby、OCaml、java、JavaScript、php其中一种或多种语言。
4.根据权利要求1所述的一种基于libvirt的dpdk vhostuser网卡管理方法,其特征在于:所述步骤二中虚拟机为微软虚拟机、BM虚拟机、HP虚拟机、Intel虚拟机、AMD虚拟机、Java虚拟机、Linux虚拟机其中的一种或多种。
5.根据权利要求1所述的一种基于libvirt的dpdk vhostuser网卡管理方法,其特征在于:所述步骤三中openvswitch支持标准的管理接口和协议。
6.一种基于libvirt的dpdk vhostuser网卡管理装置,包括参数配置模块、参数解析模块、构建命令模块和参数检查模块,其特征在于:
参数配置模块,配置vhostuser相关参数,设置网卡路径以及指定bridge名字,virtualport的类型以及interfaceid;
参数解析模块,创建虚拟机并对xml进行解析,支持bridge以及virtualport,将相关参数保存在数据结构中;
构建命令模块,根据解析的vhostuser参数,构建openvswitch命令行,指定端口、网卡路径以及名称;
参数检查模块,检查在指定路径下是否生成网卡,网卡参数是否正确,以及在虚拟机命令行参数中是否包含了网卡路径;
所述参数配置模块配置参数后经参数解析模块进行参数解析,构建命令模块根据解析后的参数进行命令构建,完成命令构建后,参数检查模块进行各项参数的检查。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011078263.6A CN112052076A (zh) | 2020-10-10 | 2020-10-10 | 一种基于libvirt的dpdk vhostuser网卡管理方法及管理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011078263.6A CN112052076A (zh) | 2020-10-10 | 2020-10-10 | 一种基于libvirt的dpdk vhostuser网卡管理方法及管理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112052076A true CN112052076A (zh) | 2020-12-08 |
Family
ID=73605547
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011078263.6A Withdrawn CN112052076A (zh) | 2020-10-10 | 2020-10-10 | 一种基于libvirt的dpdk vhostuser网卡管理方法及管理装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112052076A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113438170A (zh) * | 2021-08-30 | 2021-09-24 | 云宏信息科技股份有限公司 | libvirt管理OVS的流表规则的方法、存储介质及系统 |
CN113645057A (zh) * | 2021-06-25 | 2021-11-12 | 济南浪潮数据技术有限公司 | 一种云平台支持添加网卡模型的方法、装置 |
-
2020
- 2020-10-10 CN CN202011078263.6A patent/CN112052076A/zh not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113645057A (zh) * | 2021-06-25 | 2021-11-12 | 济南浪潮数据技术有限公司 | 一种云平台支持添加网卡模型的方法、装置 |
CN113438170A (zh) * | 2021-08-30 | 2021-09-24 | 云宏信息科技股份有限公司 | libvirt管理OVS的流表规则的方法、存储介质及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11372802B2 (en) | Virtual RDMA switching for containerized applications | |
WO2017066944A1 (zh) | 一种存储设备访问方法、装置和系统 | |
CN110609730B (zh) | 一种实现虚拟处理器间中断透传的方法及设备 | |
US9697024B2 (en) | Interrupt management method, and computer implementing the interrupt management method | |
US10922153B2 (en) | Communication method and device for virtual base stations | |
JP4788124B2 (ja) | データ処理システム | |
CN110046026B (zh) | 云主机指定虚拟磁盘限速方法、计算设备及云平台 | |
EP3594807A1 (en) | Virtual disk file format conversion method and device | |
US20150113114A1 (en) | Network interface adapter registration method, driver, and server | |
US8607231B1 (en) | Method and system for processing isochronous data packets using virtual USB controller and placing the isochronous data packets into a look-ahead queue having a plurality of blank packets | |
US11792272B2 (en) | Establishment of socket connection in user space | |
CN112052076A (zh) | 一种基于libvirt的dpdk vhostuser网卡管理方法及管理装置 | |
US6345241B1 (en) | Method and apparatus for simulation of data in a virtual environment using a queued direct input-output device | |
US11467998B1 (en) | Low-latency packet processing for network device | |
WO2016019566A1 (zh) | 内存管理方法、装置和系统、以及片上网络 | |
US20210397492A1 (en) | Establishment of queue between threads in user space | |
WO2019099328A1 (en) | Virtualized i/o | |
CA3129984A1 (en) | Method and system for accessing distributed block storage system in user mode | |
CN114691286A (zh) | 服务器系统、虚拟机创建方法及装置 | |
CN109857517B (zh) | 一种虚拟化系统及其数据交换方法 | |
CN115033348B (zh) | 一种对虚拟机和容器统一管理方法、系统、设备及介质 | |
CN111290829A (zh) | 访问控制模组、虚拟机监视器及访问控制方法 | |
CN114726657B (zh) | 中断管理和数据收发管理的方法、装置及智能网卡 | |
JP2008065515A (ja) | リモートi/oを構成する計算機システム及びi/oデータ転送方法 | |
WO2024174877A1 (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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20201208 |