CN113535319A - 一种实现多rdma网卡虚拟化的方法、设备及存储介质 - Google Patents
一种实现多rdma网卡虚拟化的方法、设备及存储介质 Download PDFInfo
- Publication number
- CN113535319A CN113535319A CN202010276369.0A CN202010276369A CN113535319A CN 113535319 A CN113535319 A CN 113535319A CN 202010276369 A CN202010276369 A CN 202010276369A CN 113535319 A CN113535319 A CN 113535319A
- Authority
- CN
- China
- Prior art keywords
- network card
- rdma network
- function module
- rdma
- virtualization
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 47
- 238000007726 management method Methods 0.000 claims description 43
- 238000004891 communication Methods 0.000 claims description 24
- 230000006870 function Effects 0.000 description 68
- 238000005516 engineering process Methods 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
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/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/45583—Memory management, e.g. access or allocation
-
- 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)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种实现多RDMA网卡虚拟化的方法、设备及存储介质。其中提供的方法、设备、存储相关代码的计算机可读存储介质等,通过多网卡虚拟化管理单元对RDMA网卡虚拟化单元虚拟化过程的管理,具体来说,即通过(获取的)RDMA网卡物理功能模块配置确定由RDMA网卡虚拟化单元提供的RDMA网卡物理功能模块,并将可用的、与上述RDMA网卡物理功能模块关联的、同样由RDMA网卡虚拟化单元提供的RDMA网卡虚拟功能模块分配给逻辑计算机,以使二者(RDMA网卡物理功能模块和被分配的、与之关联的RDMA网卡虚拟化单元)一起通过对应的RDMA网卡,为逻辑计算机提供虚拟RDMA网卡。
Description
技术领域
本发明涉及计算机通信领域中的通信设备虚拟化技术,具体地,涉及一种实现多RDMA网卡虚拟化的方法、设备及存储介质。
背景技术
一般而言,虚拟化,多是指通过虚拟化技术将一台计算机虚拟为多个逻辑计算机;而每个逻辑计算机的应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。虚拟化通过软件重新定义划分IT资源,通常能够实现IT资源的动态分配、灵活调度、跨域共享,以提高IT资源利用率,使有限的IT资源作为计算能力的基础设施,在各行业应用过程中满足各种的多样且多变的需求。
在最初的虚拟化技术应用场景中,通常只是通过虚拟机技术(例如VMware)、容器技术(例如docker)等对计算机的计算资源(如CPU、GPU)、存储资源(如内存、硬盘)进行虚拟化,虚拟出多个彼此隔离的用于各个业务运算、存储的逻辑计算机,往往不涉及各个逻辑计算机间的通信,更不涉及不同机器设备虚拟出的逻辑计算机间的通信。但是,随着一些新场景的出现和技术的演进,催生了不同逻辑计算机(例如同一机器设备的不同逻辑计算机、不同机器设备间的逻辑计算机)间通信的问题。显然为每个逻辑计算机配置独立的物理网络设备是可以实现它们间的通信的,但是无疑这种方式是存在局限(毕竟现有的机器设备的网络设备接口是严格遵照一定的行业标准设置的,其数量有限)和缺乏灵活性的。而macvlan则是一种网络虚拟化的解决方案;其将一块物理网卡虚拟成多块虚拟网卡,相当于对物理网卡施展了分身术,通过多个子接口配置给各逻辑计算机,有一个网卡变成“多个”。通过不同的子接口,macvlan还可以做到流量隔离;macvlan会根据收到包的目的MAC地址判断这个包需要交给哪个虚拟网卡,虚拟网卡再把包交给上层的协议栈处理。
但是,RDMA(RemoteDirect Memory Access),即远程直接内存访问技术,作为一种无需通信双方操作系统介入、高吞吐、低延迟的网络通信,已经在越来越多的新场景下进行应用。相较于普通网卡支持的传统的TCP/IP网络通信存在的I/O bottleneck瓶颈问题(即在高速网络条件下与网络I/O相关的处理的高开销(例如数据移动操作、复制操作)限制了可以在机器之间发送的带宽;具体而言,即传统的TCP/IP网络通信是通过内核发送消息的;Messaging passing through kernel(即消息传输需要内核介入)这种方式会导致很低的性能和很低的灵活性。其中性能低下的原因主要是由于网络通信通过内核传递,这种通信方式存在的很高的数据移动和数据复制的开销;且如今内存带宽性相较如CPU带宽和网络带宽有着很大的差异;而很低的灵活性的原因主要是所有网络通信协议通过内核传递,这种方式很难去支持新的网络协议和新的消息通信协议以及发送和接收接口),由RDMA网卡(即支持RDMA通信的特殊网卡)支持下实现的RDMA通信很好地避免了上述问题。
然而,需要指出的是,正是由于RDMA技术无需通信双方操作系统介入,不经过内核协议栈,那么前面述及的普通网卡的虚拟化技术也无法直接应用于RDMA网卡的虚拟化,特别是多RDMA网卡的虚拟化。
发明内容
有鉴于此,本发明提供一种实现多RDMA网卡虚拟化的方法、设备及存储介质。
一方面,本发明实施例提供一种实现多RDMA网卡虚拟化的方法。
上述的实现多RDMA网卡虚拟化的方法,包括:
在配置有多RDMA网卡的设备上运行网络虚拟化软件,而其中包括多网卡虚拟化管理单元;上述的多网卡虚拟化管理单元被配置得分别与各个逻辑计算机耦接,以及与RDMA网卡虚拟化单元耦接,并进而通过RDMA网卡虚拟化单元与各个RDMA网卡耦接;
其中,多网卡虚拟化管理单元,用于获取RDMA网卡物理功能模块配置,以及据此通过RDMA网卡虚拟化单元虚拟化对应的RDMA网卡,为逻辑计算机提供虚拟RDMA网卡;其中,上述的RDMA网卡物理功能模块配置,是指RDMA网卡虚拟化单元的RDMA网卡物理功能模块的配置信息;不同的RDMA网卡,分别对应不同的RDMA网卡物理功能模块;
而RDMA网卡虚拟化单元,则用于提供上述的RDMA网卡物理功能模块、以及RDMA网卡虚拟功能模块;其中,RDMA网卡物理功能模块,具备RDMA网卡全功能的PCIe功能,能够像作为硬件的RDMA网卡那样被发现、管理和处理等;且每个RDMA网卡物理功能模块都可以关联一定数目的RDMA网卡虚拟功能模块;而RDMA网卡虚拟功能模块,则仅被允许执行涉及自身的资源配置操作;RDMA网卡虚拟功能模块和与之关联的RDMA网卡物理功能模块一起,则能够通过对应的RDMA网卡,为逻辑计算机提供虚拟RDMA网卡,实现RDMA网卡配置和提供完整的RDMA网卡功能;
其中,对于任一被配置具有RDMA通信需求的逻辑计算机,在其被创建时,多网卡虚拟化管理单元,即通过(获取的)RDMA网卡物理功能模块配置,确定RDMA网卡物理功能模块,并将可用的、与上述RDMA网卡物理功能模块关联的RDMA网卡虚拟功能模块分配给该逻辑计算机,继而实现为该逻辑计算机提供虚拟RDMA网卡的目的。
另一方面,本发明实施例提供一种多RDMA网卡虚拟化的管理方法。
结合第一方面,上述的多RDMA网卡虚拟化的管理方法,包括:
在配置有多RDMA网卡的设备上运行网络虚拟化软件,而其中包括多网卡虚拟化管理单元;上述的多网卡虚拟化管理单元被配置得分别与各个逻辑计算机耦接,并与RDMA网卡虚拟化单元耦接;
上述的多网卡虚拟化管理单元,即如第一方面述及的多网卡虚拟化管理单元;其用于管理多RDMA网卡虚拟化,以及为逻辑计算机提供RDMA虚拟网卡;其中,多网卡虚拟化管理单元,能够获取RDMA网卡物理功能模块配置,并根据其确定RDMA网卡物理功能模块(其中,不同的RDMA网卡,分别对应不同的RDMA网卡物理功能模块),以及为逻辑计算机分配可用的、与上述RDMA网卡物理功能模块关联的RDMA网卡虚拟功能模块,进而以使上述RDMA网卡物理功能模块和被分配的RDMA网卡虚拟功能模块二者一起通过对应的RDMA网卡为逻辑计算机提供虚拟RDMA网卡;
其中,上述的RDMA网卡物理功能模块和与之关联的RDMA网卡虚拟功能模块,都是由上述的RDMA网卡虚拟化单元提供的;上述的RDMA网卡物理功能模块,具备RDMA网卡全功能的PCIe功能,能够像作为硬件的RDMA网卡那样被发现、管理和处理等;且每个RDMA网卡物理功能模块都可以关联一定数目的RDMA网卡虚拟功能模块;而上述的RDMA网卡虚拟功能模块,则仅被允许执行涉及自身的资源配置操作;二者一起能够通过对应的RDMA网卡,为逻辑计算机提供虚拟RDMA网卡,实现RDMA网卡配置和提供完整的RDMA网卡功能。
再一方面,本发明实施例提供一种多RDMA网卡的机器设备。
结合第一、第二方面,上述的多网卡机器设备,包括:
不少于两个的RDMA网卡;其中,
上述的机器设备能够执行第一方面述及的实现多RDMA网卡虚拟化的方法或第二方面述及的多RDMA网卡虚拟化的管理方法,实现多RDMA网卡的可行、有序的虚拟化。
又一方面,本发明实施例提供一种计算机可读存储介质。
结合第一、第二方面,上述的计算机可读存储介质,存储有用于多RDMA网卡虚拟化的代码,其中包括用于执行第一方面述及的实现多RDMA网卡虚拟化的方法或第二方面述及的多RDMA网卡虚拟化的管理方法操作的指令。
上述实施例提供的涉及实现多RDMA网卡虚拟化的一系列方法、设备、存储相关代码的计算机可读存储介质等,通过多网卡虚拟化管理单元对RDMA网卡虚拟化单元虚拟化过程的管理,具体来说,即通过(获取的)RDMA网卡物理功能模块配置确定由RDMA网卡虚拟化单元提供的RDMA网卡物理功能模块,并将可用的、与上述RDMA网卡物理功能模块关联的、同样由RDMA网卡虚拟化单元提供的RDMA网卡虚拟功能模块分配给逻辑计算机,以使二者(RDMA网卡物理功能模块和被分配的、与之关联的RDMA网卡虚拟化单元)一起通过对应的RDMA网卡,为逻辑计算机提供虚拟RDMA网卡。
下面通过附图、具体实施例对本发明的技术方案做进一步的描述。
附图说明
为更加清楚地说明本发明实施例或现有技术中的技术方案,下面将对本发明中一部分实施例或现有技术描述中涉及的附图做简单介绍。
图1为本发明一些实施例提供的实现设备多RDMA网卡虚拟化的具体过程示意图。
具体实施方式
下面结合本发明实施例的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
在现有技术中,macvlan是本领域惯用的一种网卡虚拟化方案。具体地,macvlan通过为一张物理网卡设置多个mac地址,进而即可设置多个IP地址,一方面通过多个子接口配置给各个逻辑计算机,另一方面还可以通过物理接口连接网络线缆与外部网络通信,从而实现从“一张物理网卡接入网络”变成“多个虚拟网卡接入网络”。但是支持高速通信的RDMA网卡,因为在通信时避免了通信双方操作系统介入,不经过内核协议栈,所以像macvlan这样的普通网卡虚拟化技术基本上是无法直接应用于RDMA网卡的虚拟化,特别是多RDMA网卡的虚拟化。
于是,本发明提供一种实现多RDMA网卡虚拟化的方法、设备及存储介质。以下为本发明的一些优选实施例。其中,
本发明的一些优选实施例提供一种实现多RDMA网卡虚拟化的方法。该方法包括:
在配置有多RDMA网卡的设备上运行网络虚拟化软件,而其中包括多网卡虚拟化管理单元;而该多网卡虚拟化管理单元被配置得分别与各个逻辑计算机耦接,为其提供虚拟网卡;以及与RDMA网卡虚拟化单元耦接,并进而通过RDMA网卡虚拟化单元与各个RDMA网卡耦接,来最终实现对(物理意义上的)RDMA网卡的虚拟化;
其中,多网卡虚拟化管理单元,能够获取RDMA网卡虚拟化单元的RDMA网卡物理功能模块的配置信息(即RDMA网卡物理功能模块配置;其中,设备上配置的不同的RDMA网卡对应着不同的RDMA网卡物理功能模块),并根据上述的配置信息通过RDMA网卡虚拟化单元虚拟化对应的RDMA网卡,为逻辑计算机提供RDMA虚拟网卡;
而RDMA网卡虚拟化单元,则用于提供上述的RDMA网卡物理功能模块、以及RDMA网卡虚拟功能模块;RDMA网卡虚拟化单元,通常是由支持硬件虚拟化的RDMA网卡结合相关固件等实现的;一般来说,一张支持硬件虚拟化的RDMA网卡(例如具备SR-IOV功能的RDMA网卡),即可视为一个RDMA网卡虚拟化单元;即对应设备上配置的RDMA网卡数量,一台设备可以存在多个RDMA网卡虚拟化单元;其中,RDMA网卡物理功能模块,具备RDMA网卡全功能的PCIe功能,能够像作为硬件的RDMA网卡那样被发现、管理和处理等;上述的多网卡虚拟化管理单元,即是通过其(获取的)RDMA网卡物理功能模块配置确定相应RDMA网卡物理功能模块的,即相当于选定了相应的RDMA网卡虚拟化单元,进而也即确定了对应的RDMA网卡;另外,每个RDMA网卡物理功能模块都是可以关联一定数目的RDMA网卡虚拟功能模块(例如具备SR-IOV功能的RDMA网卡,其PF最多可以关联数万个VF);而RDMA网卡虚拟功能模块,则仅被允许执行涉及自身的资源配置操作,例如被挂载到网卡接口等操作;RDMA网卡虚拟功能模块和与之关联的RDMA网卡物理功能模块一起,则能够通过对应的RDMA网卡,为逻辑计算机提供虚拟RDMA网卡,实现RDMA网卡配置和提供完整的RDMA网卡功能;
其中,对于利用设备资源对外通信的任一逻辑计算机,如果它有RDMA通信需要,在它被创建时,即被配置的:通过(获取的)RDMA网卡物理功能模块配置,确定RDMA网卡物理功能模块,并将一个可用的、与上述RDMA网卡物理功能模块关联的RDMA网卡虚拟功能模块分配给该逻辑计算机,继而达成为该逻辑计算机提供RDMA虚拟网卡的目的,使其(逻辑计算机)具有RDMA通信功能。
进一步地,在上述的优选实施例中的一些提供的一种实现多RDMA网卡虚拟化的方法中,若上述的多网卡虚拟化管理单元无法获取某个(RDMA网卡虚拟化单元的)RDMA网卡物理功能模块的配置信息(即RDMA网卡物理功能模块配置)或者是无法通过确定的RDMA网卡物理功能模块找到可用的与之关联的RDMA网卡虚拟功能模块时,即无法分配给逻辑计算机以可用的、与确定的RDMA网卡物理功能模块关联的RDMA网卡虚拟功能模块时,则由多网卡虚拟化管理单元从其他的RDMA网卡物理功能模块中重新确定新的RDMA网卡物理功能模块,并将与其关联的可用RDMA网卡虚拟功能模块分配给逻辑计算机,以实现重新分配失败后为逻辑计算机提供虚拟RDMA网卡目的;若仍分配失败,则再重新分配,直至分配成功或无可用的RDMA网卡物理功能模块。
进一步地,在上述的优选实施例中的一些提供的一种实现多RDMA网卡虚拟化的方法中,当其中的任一逻辑计算机被移除,取消其RDMA网卡虚拟功能模块的分配。
进一步地,在上述的优选实施例中的一些提供的一种实现多RDMA网卡虚拟化的方法中,其中的逻辑计算机可以为虚拟机;
而在分配RDMA网卡虚拟功能模块时,则即可将待分配的RDMA网卡虚拟功能模块与虚拟机的虚拟RDMA网卡接口耦接;而在取消分配时,则将上述的RDMA网卡虚拟功能模块与上述的虚拟RDMA网卡接口解耦即可。具体地,例如可以是,将将待分配的RDMA网卡虚拟功能模块的配置信息(即RDMA网卡虚拟功能模块配置)写入虚拟机分区的对应位置中;取消分配时,则移除其中的上述配置,解除上述RDMA网卡虚拟功能模块的占用,以释放上述的RDMA网卡虚拟功能模块。
进一步地,在上述的优选实施例中的一些提供的一种实现多RDMA网卡虚拟化的方法中,其中的逻辑计算机可以为容器/容器组(即由若干个容器组成的逻辑计算机,例如Kubernets中的Pod);
当在分配RDMA网卡虚拟功能模块时,则只需将待分配的RDMA网卡虚拟功能模块配置写入目的容器/容器组的命名空间(namespace)即可;而在移除容器/容器组时,也即要取消分配时,则可以通过将上述的RDMA网卡虚拟功能模块配置从待移除的容器/容器组的命名空间移出的方式取消分配,解除占用。而更进一步地,其中从待移除的容器/容器组的命名空间移出RDMA网卡虚拟功能模块配置,通常将其移到公共的命名空间,以便容器化场景下RDMA网卡虚拟功能模块的高效管理和复用。
进一步地,在上述的优选实施例中的一些提供的一种实现多RDMA网卡虚拟化的方法中,其中的多网卡虚拟化管理单元通过获取RDMA网卡物理功能模块配置以及据此通过RDMA网卡虚拟化单元虚拟化对应的RDMA网卡来为逻辑计算机提供虚拟RDMA网卡的过程中,可以根据轮询或者负载最小的方式获取RDMA网卡物理功能模块配置以及据其通过RDMA网卡虚拟化单元虚拟化相应的RDMA网卡。例如,以轮询或者负载最小的方式获取相应的RDMA网卡物理功能模块配置以及据此进行后续虚拟化,抑或是,通过获取RDMA网卡物理功能模块配置并以轮询或者负载最小的方式确定RDMA网卡物理功能模块进而对相应的RDMA网卡执行后续虚拟化等。
本发明的另一些优选实施例提供一种多RDMA网卡虚拟化的管理方法。该管理方法包括:在配置有多RDMA网卡的设备上运行网络虚拟化软件,而其中包括多网卡虚拟化管理单元;上述的多网卡虚拟化管理单元被配置得分别与各个逻辑计算机耦接,并与RDMA网卡虚拟化单元耦接;
其中,多网卡虚拟化管理单元,即如上述优选实施例所述的实现多RDMA网卡虚拟化的方法中的多网卡虚拟化管理单元;其用于管理多RDMA网卡虚拟化和为逻辑计算机提供RDMA虚拟网卡等;具体而言,多网卡虚拟化管理单元,能够获取RDMA网卡物理功能模块配置,并根据其确定RDMA网卡物理功能模块(其中,不同的RDMA网卡,分别对应不同的RDMA网卡物理功能模块),进而为逻辑计算机分配可用的、与上述RDMA网卡物理功能模块关联的RDMA网卡虚拟功能模块,并通过上述RDMA网卡物理功能模块和被分配的RDMA网卡虚拟功能模块二者一起通过对应的RDMA网卡为逻辑计算机提供虚拟RDMA网卡,以实现在设备上的有序、可控的多RDMA网卡的虚拟化,进而提供高效的RDMA通信服务。需要补充说明的是,其中上述的RDMA网卡物理功能模块和与之关联的RDMA网卡虚拟功能模块,都是由上述的RDMA网卡虚拟化单元提供的。而RDMA网卡虚拟化单元,通常是由支持硬件虚拟化的RDMA网卡结合相关固件等实现的;一般来说,一张支持硬件虚拟化的RDMA网卡,即可视为一个RDMA网卡虚拟化单元。而其中,RDMA网卡物理功能模块,具备RDMA网卡全功能的PCIe功能,能够像作为硬件的RDMA网卡那样被发现、管理和处理等;另外,每个RDMA网卡物理功能模块都是可以关联一定数目的RDMA网卡虚拟功能模块(例如具备SR-IOV功能的RDMA网卡,其PF最多可以关联数万个VF);而RDMA网卡虚拟功能模块,则仅被允许执行涉及自身的资源配置操作,例如被挂载到网卡接口等操作;上述二者(即RDMA网卡虚拟功能模块和与之关联的RDMA网卡物理功能模块)一起,则能够通过对应的RDMA网卡,为逻辑计算机提供虚拟RDMA网卡,实现RDMA网卡配置和提供完整的RDMA网卡功能。
以下结合具体实施例来说明在设备上实现多个RDMA网卡虚拟化的过程,即通过在配置有多张RDMA网卡的设备上为其逻辑计算机提供虚拟RDMA网卡的过程。
如图1所示,其中展示了一台配置有两张支持SR-IOV功能的RDMA网卡的服务器设备,其上被部署了容器/容器组;如图1所示,其上运行着Kubernetes,在其上被拉起(spawn)了4个Pod(即Kubernetes的最小调度单位,其实际上是又一组紧密结合的容器组成的,可以理解其为一种逻辑计算机);
在其上运行mult_sriov_cni以及支持SR-IOV功能的RDMA网卡驱动等;在为各个Pod提供(虚拟)RDMA网卡前,检测所有的PF(RDMA网卡的物理功能模块),对没有启用SRIOV功能的,启动SRIOV功能,并获取与其关联的VF(RDMA网卡的虚拟功能模块),也即同一PF下的VF;
在Pod被拉起时,为其提供虚拟RDMA网卡的具体过程可以如下:
mult_sriov_cni通过配置文件(从PF(0)和PF(1)中)获取拟使用的PF;
获取该Pod所对应的命名空间;
根据PF获取其对应RDMA网卡的信息(主要是指其关联的VF的信息),确定有无可用VF;
如有,则将其移到该Pod对应的命名空间,实现VF的分配;若无,则获取其他PF,并重复上述分配过程,直至有可用VF被分配给该Pod;
VF分配完成(如图所示,VF1(0)等即被分配给了Pod1-Pod4)后,再为VF配置IP等,最终通过对应的PF和分配的关联VF为相应的Pod提供RDMA通信功能。
而某个Pod被移除并释放资源时,其虚拟RDMA网卡卸载和资源释放的具体过程,则如下:
当接收到移除和释放某个Pod的请求时,同时收到目标Pod对应的VF的配置信息;
将该VF移到公共的命名空间复用,以完成VF的释放,也即虚拟RDMA网卡的卸载。
在上述优选实施例提供方法的基础上,本发明的再一些优选实施例提供一种多RDMA网卡的机器设备。该设备被配置有多张RDMA网卡;其中,上述的机器设备能够执行上述任一优选实施例中的实现多RDMA网卡虚拟化的方法或多RDMA网卡虚拟化的管理方法,进而实现多RDMA网卡的可行、有序的虚拟化。
在上述优选实施例提供方法的基础上,本发明的又一些优选实施例提供一种计算机可读存储介质。该计算机可读存储介质,存储有用于多RDMA网卡虚拟化的代码,其中包括用于执行上述任一优选实施例中的实现多RDMA网卡虚拟化的方法或多RDMA网卡虚拟化的管理方法操作的指令。
以上所述仅为本发明的具体实施方式,但本发明的保护范围并不局限于此。
Claims (10)
1.一种实现多RDMA网卡虚拟化的方法,其特征在于,包括:
在配置有多RDMA网卡的设备上运行网络虚拟化软件,其中包括多网卡虚拟化管理单元;
所述的多网卡虚拟化管理单元被配置得分别与各个逻辑计算机耦接,及与RDMA网卡虚拟化单元耦接,并进而通过RDMA网卡虚拟化单元与各个RDMA网卡耦接;
其中,多网卡虚拟化管理单元,用于获取RDMA网卡物理功能模块配置,以及据此通过RDMA网卡虚拟化单元虚拟化对应的RDMA网卡,为逻辑计算机提供虚拟RDMA网卡;其中,RDMA网卡物理功能模块配置,即RDMA网卡虚拟化单元的RDMA网卡物理功能模块的配置信息;所述的各RDMA网卡,分别对应不同的RDMA网卡物理功能模块;
RDMA网卡虚拟化单元,用于提供所述的RDMA网卡物理功能模块、以及RDMA网卡虚拟功能模块;其中,RDMA网卡物理功能模块,具备RDMA网卡全功能的PCIe功能;且每个RDMA网卡物理功能模块关联若干个的RDMA网卡虚拟功能模块;RDMA网卡虚拟功能模块,则被用于执行涉及自身的资源配置操作;RDMA网卡虚拟功能模块和与之关联的RDMA网卡物理功能模块一起,能够通过对应的RDMA网卡,为逻辑计算机提供虚拟RDMA网卡;
其中,对于任一被配置具有RDMA通信需求的逻辑计算机,在其被创建时,多网卡虚拟化管理单元,即通过RDMA网卡物理功能模块配置,确定RDMA网卡物理功能模块,并将可用的、与所述RDMA网卡物理功能模块关联的RDMA网卡虚拟功能模块分配给该逻辑计算机。
2.根据权利要求1所述的实现多RDMA网卡虚拟化的方法,其特征在于,
若所述多网卡虚拟化管理单元无法分配给逻辑计算机以可用的、与确定的RDMA网卡物理功能模块关联的RDMA网卡虚拟功能模块时,则由所述多网卡虚拟化管理单元从其他的RDMA网卡物理功能模块中重新确定新的RDMA网卡物理功能模块,并将与其关联的可用RDMA网卡虚拟功能模块分配给逻辑计算机。
3.根据权利要求1所述的实现多RDMA网卡虚拟化的方法,其特征在于,
当其中的任一逻辑计算机被移除,则取消其RDMA网卡虚拟功能模块的分配。
4.根据权利要求1所述的实现多RDMA网卡虚拟化的方法,其特征在于,
所述的逻辑计算机为虚拟机;其中,
当分配所述RDMA网卡虚拟功能模块时,则将其与虚拟机的虚拟RDMA网卡接口耦接;
而在取消分配时,则将所述RDMA网卡虚拟功能模块与所述虚拟RDMA网卡接口解耦。
5.根据权利要求1所述的实现多RDMA网卡虚拟化的方法,其特征在于,
所述的逻辑计算机为容器/容器组;其中,
当分配所述RDMA网卡虚拟功能模块时,则将待分配的RDMA网卡虚拟功能模块配置写入目的容器/容器组的命名空间;
而在取消分配时,则将所述RDMA网卡虚拟功能模块配置移出待移除的容器/容器组的命名空间。
6.根据权利要求5所述的实现多RDMA网卡虚拟化的方法,其特征在于,
当将所述RDMA网卡虚拟功能模块配置移出容器/容器组的命名空间时,将其移到公共的命名空间管理和复用。
7.根据权利要求1所述的实现多RDMA网卡虚拟化的方法,其特征在于,
其中的多网卡虚拟化管理单元通过获取RDMA网卡物理功能模块配置以及据此通过RDMA网卡虚拟化单元虚拟化对应的RDMA网卡来为逻辑计算机提供虚拟RDMA网卡的过程中,根据轮询或者负载最小的方式获取RDMA网卡物理功能模块配置及据其通过RDMA网卡虚拟化单元虚拟化相应的RDMA网卡。
8.一种多RDMA网卡虚拟化的管理方法,其特征在于,包括:
在配置有多RDMA网卡的设备上运行网络虚拟化软件,其中包括权利要求1-7中任一所述方法中的多网卡虚拟化管理单元;
所述的多网卡虚拟化管理单元被配置得分别与各个逻辑计算机耦接,并与RDMA网卡虚拟化单元耦接;
所述的多网卡虚拟化管理单元,用于管理多RDMA网卡虚拟化和为逻辑计算机提供RDMA虚拟网卡;
其中,多网卡虚拟化管理单元,能够获取RDMA网卡物理功能模块配置,并根据其确定RDMA网卡物理功能模块,以及为逻辑计算机分配可用的、与所述RDMA网卡物理功能模块关联的RDMA网卡虚拟功能模块;
其中,所述的RDMA网卡物理功能模块和与之关联的RDMA网卡虚拟功能模块,均由所述的RDMA网卡虚拟化单元提供;其中,所述的RDMA网卡物理功能模块,具备RDMA网卡全功能的PCIe功能;且每个RDMA网卡物理功能模块关联若干个的RDMA网卡虚拟功能模块;RDMA网卡虚拟功能模块,则被用于执行涉及自身的资源配置操作;RDMA网卡虚拟功能模块和与之关联的RDMA网卡物理功能模块一起,能够通过对应的RDMA网卡,为逻辑计算机提供虚拟RDMA网卡。
9.一种设备,其特征在于,包括:
不少于两个的RDMA网卡;其中,
所述设备能够执行权利要求1-8任一所述的方法,实现所述各RDMA网卡的虚拟化。
10.一种计算机可读存储介质,其特征在于,
存储有用于多RDMA网卡虚拟化的代码;
其中包括用于执行权利要求1-8任一所述方法操作的指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010276369.0A CN113535319A (zh) | 2020-04-09 | 2020-04-09 | 一种实现多rdma网卡虚拟化的方法、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010276369.0A CN113535319A (zh) | 2020-04-09 | 2020-04-09 | 一种实现多rdma网卡虚拟化的方法、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113535319A true CN113535319A (zh) | 2021-10-22 |
Family
ID=78087761
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010276369.0A Pending CN113535319A (zh) | 2020-04-09 | 2020-04-09 | 一种实现多rdma网卡虚拟化的方法、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113535319A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114374609A (zh) * | 2021-12-06 | 2022-04-19 | 东云睿连(武汉)计算技术有限公司 | 基于rdma设备的深度学习作业运行方法及系统 |
CN115102877A (zh) * | 2022-05-23 | 2022-09-23 | 苏州浪潮智能科技有限公司 | 一种虚拟网卡网络检测方法、装置、设备及介质 |
WO2023160033A1 (zh) * | 2022-02-28 | 2023-08-31 | 苏州浪潮智能科技有限公司 | 虚拟网卡资源的配置方法、装置、计算机设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103763173A (zh) * | 2013-12-31 | 2014-04-30 | 华为技术有限公司 | 数据传输方法和计算节点 |
US20160239323A1 (en) * | 2015-02-13 | 2016-08-18 | Red Hat Israel, Ltd. | Virtual Remote Direct Memory Access Management |
CN108614726A (zh) * | 2018-03-22 | 2018-10-02 | 华为技术有限公司 | 虚拟机创建方法及装置 |
CN108924268A (zh) * | 2018-09-11 | 2018-11-30 | 网宿科技股份有限公司 | 一种容器云服务系统及pod创建方法、装置 |
CN110752937A (zh) * | 2018-07-23 | 2020-02-04 | 中兴通讯股份有限公司 | 一种物理功能复用方法、装置和计算机存储介质 |
-
2020
- 2020-04-09 CN CN202010276369.0A patent/CN113535319A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103763173A (zh) * | 2013-12-31 | 2014-04-30 | 华为技术有限公司 | 数据传输方法和计算节点 |
US20160239323A1 (en) * | 2015-02-13 | 2016-08-18 | Red Hat Israel, Ltd. | Virtual Remote Direct Memory Access Management |
CN108614726A (zh) * | 2018-03-22 | 2018-10-02 | 华为技术有限公司 | 虚拟机创建方法及装置 |
CN110752937A (zh) * | 2018-07-23 | 2020-02-04 | 中兴通讯股份有限公司 | 一种物理功能复用方法、装置和计算机存储介质 |
CN108924268A (zh) * | 2018-09-11 | 2018-11-30 | 网宿科技股份有限公司 | 一种容器云服务系统及pod创建方法、装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114374609A (zh) * | 2021-12-06 | 2022-04-19 | 东云睿连(武汉)计算技术有限公司 | 基于rdma设备的深度学习作业运行方法及系统 |
CN114374609B (zh) * | 2021-12-06 | 2023-09-15 | 东云睿连(武汉)计算技术有限公司 | 基于rdma设备的深度学习作业运行方法及系统 |
WO2023160033A1 (zh) * | 2022-02-28 | 2023-08-31 | 苏州浪潮智能科技有限公司 | 虚拟网卡资源的配置方法、装置、计算机设备及介质 |
CN115102877A (zh) * | 2022-05-23 | 2022-09-23 | 苏州浪潮智能科技有限公司 | 一种虚拟网卡网络检测方法、装置、设备及介质 |
CN115102877B (zh) * | 2022-05-23 | 2023-08-04 | 苏州浪潮智能科技有限公司 | 一种虚拟网卡网络检测方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109302466B (zh) | 数据处理方法、相关设备及计算机存储介质 | |
CN113535319A (zh) | 一种实现多rdma网卡虚拟化的方法、设备及存储介质 | |
CN110098946B (zh) | 虚拟化网元设备的部署方法以及装置 | |
US11928493B2 (en) | Sharing of FPGA board by multiple virtual machines | |
US11201836B2 (en) | Method and device for managing stateful application on server | |
CN104050045A (zh) | 基于磁盘io的虚拟资源分配方法及装置 | |
CN102316043A (zh) | 端口虚拟化方法、交换机及通信系统 | |
CN113296926B (zh) | 一种资源分配方法、计算设备及存储介质 | |
US8458702B1 (en) | Method for implementing user space up-calls on java virtual machine before/after garbage collection | |
CN114050998A (zh) | 实现远程直接内存访问的方法、装置、电子设备及介质 | |
CN115686875A (zh) | 用于在多个进程之间传输数据的方法、设备和程序产品 | |
CN112583655A (zh) | 数据传输方法、装置、电子设备及可读存储介质 | |
CN106302075B (zh) | 一种创建逻辑卷的方法及装置 | |
CN112099728A (zh) | 一种执行写操作、读操作的方法及装置 | |
CN113535370A (zh) | 一种实现负载均衡的多rdma网卡虚拟化的方法、设备 | |
CN115934624B (zh) | 多主机远程直接内存访问网络管理的方法、设备及介质 | |
CN111294220B (zh) | 基于nginx的网络隔离配置方法和装置 | |
CN112667318A (zh) | 逻辑核的绑定方法、装置、设备及存储介质 | |
CN113254160B (zh) | 一种io资源请求方法和装置 | |
US8041902B2 (en) | Direct memory move of multiple buffers between logical partitions | |
CN112019645B (zh) | 基于toe的网络地址管理方法及装置 | |
CN111245794B (zh) | 数据传输方法和装置 | |
CN112015515B (zh) | 一种虚拟网络功能的实例化方法及装置 | |
EP3811210B1 (en) | Method and supporting node for supporting process scheduling in a cloud system | |
CN111580935A (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 |