一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种实现负载均衡的多RDMA网卡虚拟化的方法、设备与流程

2021-10-22 21:58:00 来源:中国专利 TAG:网卡 虚拟 负载均衡 方法 设备

一种实现负载均衡的多rdma网卡虚拟化的方法、设备
技术领域
1.本发明涉及计算机通信领域中的rdma网卡虚拟化技术,具体地,涉及一种实现负载均衡的多rdma网卡虚拟化的方法、设备。


背景技术:

2.一般而言,虚拟化,多是指通过虚拟化技术将一台计算机虚拟为多个逻辑计算机;而每个逻辑计算机的应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。虚拟化通过软件重新定义划分it资源,通常能够实现it资源的动态分配、灵活调度、跨域共享,以提高it资源利用率,使有限的it资源作为计算能力的基础设施,在各行业应用过程中满足各种的多样且多变的需求。
3.在最初的虚拟化技术应用场景中,通常只是通过虚拟机技术(例如vmware)、容器技术(例如docker)等对计算机的计算资源(如cpu、gpu)、存储资源(如内存、硬盘)进行虚拟化,虚拟出多个彼此隔离的用于各个业务运算、存储的逻辑计算机,往往不涉及各个逻辑计算机间的通信,更不涉及不同机器设备虚拟出的逻辑计算机间的通信。但是,随着一些新场景的出现和技术的演进,催生了不同逻辑计算机(例如同一机器设备的不同逻辑计算机、不同机器设备间的逻辑计算机)间通信的问题。显然为每个逻辑计算机配置独立的物理网络设备是可以实现它们间的通信的,但是无疑这种方式是存在局限(毕竟现有的机器设备的网络设备接口是严格遵照一定的行业标准设置的,其数量有限)和缺乏灵活性的。而macvlan则是一种网络虚拟化的解决方案;其将一块物理网卡虚拟成多块虚拟网卡,相当于对物理网卡施展了分身术,通过多个子接口配置给各逻辑计算机,有一个网卡变成“多个”。通过不同的子接口,macvlan还可以做到流量隔离;macvlan会根据收到包的目的mac地址判断这个包需要交给哪个虚拟网卡,虚拟网卡再把包交给上层的协议栈处理。
4.但是,rdma(remotedirect memory access),即远程直接内存访问技术,作为一种无需通信双方操作系统介入、高吞吐、低延迟的网络通信,已经在越来越多的新场景下进行应用。相较于普通网卡支持的传统的tcp/ip网络通信存在的i/o bottleneck瓶颈问题(即在高速网络条件下与网络i/o相关的处理的高开销(例如数据移动操作、复制操作)限制了可以在机器之间发送的带宽;具体而言,即传统的tcp/ip网络通信是通过内核发送消息的;messaging passing through kernel(即消息传输需要内核介入)这种方式会导致很低的性能和很低的灵活性。其中性能低下的原因主要是由于网络通信通过内核传递,这种通信方式存在的很高的数据移动和数据复制的开销;且如今内存带宽性相较如cpu带宽和网络带宽有着很大的差异;而很低的灵活性的原因主要是所有网络通信协议通过内核传递,这种方式很难去支持新的网络协议和新的消息通信协议以及发送和接收接口),由rdma网卡(即支持rdma通信的特殊网卡)支持下实现的rdma通信很好地避免了上述问题。
5.然而,需要指出的是,正是由于rdma技术无需通信双方操作系统介入,不经过内核协议栈,那么前面述及的普通网卡的虚拟化技术也无法直接应用于rdma网卡的虚拟化,特别是多rdma网卡的虚拟化。此外,即便能够对同一设备的多个rdma网卡均实现虚拟化,也仍
需要考虑如何充分地、均衡地和高效地利用各个rdma网卡。


技术实现要素:

6.有鉴于此,本发明提供一种实现负载均衡的多rdma网卡虚拟化的方法、设备。
7.一方面,本发明实施例提供一种实现负载均衡的多rdma网卡虚拟化的方法。
8.上述的实现负载均衡的多rdma网卡虚拟化的方法,包括:
9.在配置有多rdma网卡的设备上运行网络虚拟化软件,而其中包括多网卡虚拟化管理单元;上述的多网卡虚拟化管理单元被配置得分别与各个逻辑计算机耦接,以及与rdma网卡虚拟化单元耦接,并进而通过rdma网卡虚拟化单元与各个rdma网卡耦接;
10.其中,多网卡虚拟化管理单元,用于获取对应着各个rdma网卡的rdma网卡物理功能模块配置,和根据上述的rdma网卡物理功能模块配置以及根据各rdma网卡的负载情况选择其中低负载的rdma网卡,进而通过rdma网卡虚拟化单元虚拟化该rdma网卡,以为逻辑计算机提供虚拟rdma网卡;其中,上述的rdma网卡物理功能模块配置,是指rdma网卡虚拟化单元的rdma网卡物理功能模块的配置信息;不同的rdma网卡,分别对应不同的rdma网卡物理功能模块;
11.而rdma网卡虚拟化单元,则用于提供上述的rdma网卡物理功能模块、以及rdma网卡虚拟功能模块;其中,rdma网卡物理功能模块,具备rdma网卡全功能的pcie功能,能够像作为硬件的rdma网卡那样被发现、管理和处理等;且每个rdma网卡物理功能模块都可以关联一定数目的rdma网卡虚拟功能模块;而rdma网卡虚拟功能模块,则仅被允许执行涉及自身的资源配置操作;rdma网卡虚拟功能模块和与之关联的rdma网卡物理功能模块一起,则能够通过对应的rdma网卡,为逻辑计算机提供虚拟rdma网卡,实现rdma网卡配置和提供完整的rdma网卡功能;
12.其中,对于任一被配置具有rdma通信需求的逻辑计算机,在其被创建时,多网卡虚拟化管理单元,即通过(获取的)rdma网卡物理功能模块配置及rdma网卡负载情况从各rdma网卡中选择其中低负载的rdma网卡,并将可用的、与上述rdma网卡对应的rdma网卡物理功能模块关联的rdma网卡虚拟功能模块分配给逻辑计算机,继而实现为该逻辑计算机提供虚拟rdma网卡的目的。
13.另一方面,本发明实施例提供一种负载均衡的多rdma网卡虚拟化的管理方法。
14.结合第一方面,上述的负载均衡的多rdma网卡虚拟化的管理方法,包括:
15.在配置有多rdma网卡的设备上运行网络虚拟化软件,而其中包括多网卡虚拟化管理单元;上述的多网卡虚拟化管理单元被配置得分别与各个逻辑计算机耦接,并与rdma网卡虚拟化单元耦接;
16.上述的多网卡虚拟化管理单元,即如第一方面述及的多网卡虚拟化管理单元;其用于管理多rdma网卡虚拟化,以及为逻辑计算机提供rdma虚拟网卡;具体而言,多网卡虚拟化管理单元,能够获取对应着各个rdma网卡的rdma网卡物理功能模块配置,根据上述的rdma网卡物理功能模块配置和根据各rdma网卡的负载情况选择其中低负载的rdma网卡虚拟化,以及为逻辑计算机分配可用的、与上述低负载rdma网卡对应的rdma网卡物理功能模块关联的rdma网卡虚拟功能模块,以使上述rdma网卡物理功能模块和被分配的rdma网卡虚拟功能模块二者一起通过上述的低负载rdma网卡为逻辑计算机提供虚拟rdma网卡;
17.其中,上述的rdma网卡物理功能模块和与之关联的rdma网卡虚拟功能模块,都是由上述的rdma网卡虚拟化单元提供的;上述的rdma网卡物理功能模块,具备rdma网卡全功能的pcie功能,能够像作为硬件的rdma网卡那样被发现、管理和处理等;且每个rdma网卡物理功能模块都可以关联一定数目的rdma网卡虚拟功能模块;而上述的rdma网卡虚拟功能模块,则仅被允许执行涉及自身的资源配置操作;二者一起能够通过对应的rdma网卡,为逻辑计算机提供虚拟rdma网卡,实现rdma网卡配置和提供完整的rdma网卡功能。
18.再一方面,本发明实施例提供一种多rdma网卡的机器设备。
19.结合第一、第二方面,上述的多网卡机器设备,包括:
20.不少于两个的rdma网卡;其中,
21.上述的机器设备能够执行第一方面述及的负载均衡的多rdma网卡虚拟化的方法或第二方面述及的负载均衡的多rdma网卡虚拟化的管理方法,实现上述各rdma网卡负载均衡的虚拟化。
22.又一方面,本发明实施例提供一种计算机可读存储介质。
23.结合第一、第二方面,上述的计算机可读存储介质,存储有用于多rdma网卡虚拟化的代码,其中包括用于执行第一方面述及的负载均衡的多rdma网卡虚拟化的方法或第二方面述及的负载均衡的多rdma网卡虚拟化的管理方法的指令。
24.上述实施例提供的涉及实现多rdma网卡负载均衡虚拟化的一系列方法、设备、存储相关代码的计算机可读存储介质等,通过多网卡虚拟化管理单元对rdma网卡虚拟化单元虚拟化过程的管理,具体而言,即通过(获取的)rdma网卡物理功能模块配置和根据各rdma网卡的负载情况选择其中低负载的rdma网卡通过rdma网卡虚拟化单元进行虚拟化,并将可用的、与上述低负载rdma网卡对应的且由rdma网卡虚拟化单元提供的rdma网卡物理功能模块关联的、同样由rdma网卡虚拟化单元提供的rdma网卡虚拟功能模块分配给逻辑计算机,以使二者(rdma网卡物理功能模块和被分配的、与之关联的rdma网卡虚拟化单元)一起通过上述的低负载rdma网卡,为逻辑计算机提供虚拟rdma网卡。
25.下面通过附图、具体实施例对本发明的技术方案做进一步的描述。
附图说明
26.为更加清楚地说明本发明实施例或现有技术中的技术方案,下面将对本发明中一部分实施例或现有技术描述中涉及的附图做简单介绍。
27.图1为本发明一些实施例提供的实现设备多rdma网卡负载均衡虚拟化的具体过程示意图。
具体实施方式
28.下面结合本发明实施例的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
29.在现有技术中,macvlan是本领域惯用的一种网卡虚拟化方案。具体地,macvlan通过为一张物理网卡设置多个mac地址,进而即可设置多个ip地址,一方面通过多个子接口配
置给各个逻辑计算机,另一方面还可以通过物理接口连接网络线缆与外部网络通信,从而实现从“一张物理网卡接入网络”变成“多个虚拟网卡接入网络”。但是支持高速通信的rdma网卡,因为在通信时避免了通信双方操作系统介入,不经过内核协议栈,所以像macvlan这样的普通网卡虚拟化技术基本上是无法直接应用于rdma网卡的虚拟化,特别是多rdma网卡的虚拟化。此外,即便能够对同一设备的多个rdma网卡均实现虚拟化,也仍需要考虑如何充分地、均衡地和高效地利用各个rdma网卡,以提高设备的硬件通信资源利用率和获得更优质的通信服务。
30.于是,本发明提供一种实现负载均衡的多rdma网卡虚拟化的方法、设备。以下为本发明的一些优选实施例。其中,
31.本发明的一些优选实施例提供一种实现负载均衡的多rdma网卡虚拟化的方法。该方法包括:
32.在配置有多rdma网卡的设备上运行网络虚拟化软件,而其中包括多网卡虚拟化管理单元;而该多网卡虚拟化管理单元被配置得分别与各个逻辑计算机耦接,为其提供虚拟网卡;以及与rdma网卡虚拟化单元耦接,并进而通过rdma网卡虚拟化单元与各个rdma网卡耦接,来最终实现对(物理意义上的)rdma网卡的虚拟化;
33.其中,多网卡虚拟化管理单元,能够获取对应着各个rdma网卡的rdma网卡虚拟化单元的rdma网卡物理功能模块的配置信息(即rdma网卡物理功能模块配置;其中,设备上配置的不同的rdma网卡对应着不同的rdma网卡物理功能模块),和根据上述的rdma网卡物理功能模块配置以及根据各rdma网卡的负载情况选择其中低负载的rdma网卡,进而通过rdma网卡虚拟化单元虚拟化该rdma网卡,以为逻辑计算机提供虚拟rdma网卡;
34.而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网卡功能;
35.其中,对于利用设备资源对外通信的任一逻辑计算机,如果它有rdma通信需要,在它被创建时,即被配置的:通过(获取的)rdma网卡物理功能模块配置及rdma网卡负载情况从各rdma网卡中选择其中低负载的rdma网卡,并将一个可用的、与上述低负载rdma网卡对应的rdma网卡物理功能模块关联的rdma网卡虚拟功能模块分配给逻辑计算机,继而实现为该逻辑计算机提供虚拟rdma网卡的目的,使其(逻辑计算机)具有rdma通信功能。
36.进一步地,在上述的优选实施例中的一些提供的一种实现负载均衡的多rdma网卡
虚拟化的方法中,其中的根据负载情况选择低负载rdma网卡进行虚拟化,可以是:同时获取各rdma网卡物理功能模块关联的可用rdma网卡虚拟功能模块的配置信息(即可用rdma网卡虚拟功能模块配置),根据各rdma网卡对应rdma网卡物理功能模块关联的可用rdma网卡虚拟功能模块数量判断各rdma网卡的负载,优先分配可用rdma网卡虚拟功能模块数量最多的rdma网卡物理功能模块关联的可用rdma网卡虚拟功能模块。
37.进一步地,在上述的优选实施例中的一些提供的一种实现负载均衡的多rdma网卡虚拟化的方法中,其中的根据负载情况选择低负载rdma网卡进行虚拟化,可以是:检测各个rdma网卡的负载情况,并上报给其中的多网卡虚拟化管理单元或使之能够获取各个rdma网卡的负载检测结果,以便据此选择低负载rdma网卡以及进行后续的rdma网卡虚拟化。而更进一步地是,其中的rdma网卡负载,优选为单位时间内的平均负载;如此,较之rdma网卡的瞬时负载,更能反映rdma网卡在通信过程中的真实负载情况。
38.进一步地,在上述的优选实施例中的一些提供的一种实现负载均衡的多rdma网卡虚拟化的方法中,当其中的任一逻辑计算机被移除,取消其rdma网卡虚拟功能模块的分配。例如,比较典型的是,以虚拟机作为逻辑计算机时,在分配rdma网卡虚拟功能模块时,即是将待分配的rdma网卡虚拟功能模块与虚拟机的虚拟rdma网卡接口耦接的;而取消分配时,则将上述的rdma网卡虚拟功能模块与上述的虚拟rdma网卡接口解耦即可。其具体实现则通常如下:分配时将待分配的rdma网卡虚拟功能模块的配置信息(即rdma网卡虚拟功能模块配置)写入虚拟机分区的对应位置中;取消分配时,则移除其中的上述配置,解除上述rdma网卡虚拟功能模块的占用,即能实现释放上述的rdma网卡虚拟功能模块、取消分配的目的。
39.进一步地,在上述的优选实施例中的一些提供的一种实现负载均衡的多rdma网卡虚拟化的方法中,其中的逻辑计算机,还可以为容器/容器组(即由若干个容器组成的逻辑计算机,例如kubernets中的pod);当在分配rdma网卡虚拟功能模块时,则只需将待分配的rdma网卡虚拟功能模块配置写入目的容器/容器组的命名空间(namespace)即可;而在移除容器/容器组时,也即要取消分配时,则可以通过将上述的rdma网卡虚拟功能模块配置从待移除的容器/容器组的命名空间移出的方式取消分配,解除占用。而更进一步地,其中从待移除的容器/容器组的命名空间移出rdma网卡虚拟功能模块配置,通常将其移到公共的命名空间,以便容器化场景下rdma网卡虚拟功能模块的高效管理和复用。
40.本发明的另一些优选实施例提供一种负载均衡的多rdma网卡虚拟化的管理方法。该管理方法包括:在配置有多rdma网卡的设备上运行网络虚拟化软件,而其中包括多网卡虚拟化管理单元;上述的多网卡虚拟化管理单元被配置得分别与各个逻辑计算机耦接,并与rdma网卡虚拟化单元耦接;
41.其中,多网卡虚拟化管理单元,即如上述优选实施例所述的实现负载均衡的多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网卡功能。
42.以下结合具体实施例来说明在设备上实现多个rdma网卡负载均衡虚拟化的过程,即通过在配置有多张rdma网卡的设备上负载均衡地为其逻辑计算机提供虚拟rdma网卡的过程。
43.如图1所示,其中展示了一台配置有两张支持sr-iov功能的rdma网卡的服务器设备,其上被部署了容器/容器组;如图1所示,其上运行着kubernetes,在其上被拉起(spawn)了4个pod(即kubernetes的最小调度单位,其实际上是又一组紧密结合的容器组成的,可以理解其为一种逻辑计算机);
44.在其上运行mult_sriov_cni以及支持sr-iov功能的rdma网卡驱动等;在为各个pod提供(虚拟)rdma网卡前,检测所有的pf(rdma网卡的物理功能模块),对没有启用sriov功能的,启动sriov功能,并获取与其关联的vf(rdma网卡的虚拟功能模块),也即同一pf下的vf;
45.在pod被拉起时,为其提供虚拟rdma网卡的具体过程可以如下:
46.mult_sriov_cni获取各pf以及其关联的可用vf的信息;
47.根据其中各pf的可用vf数量,选择可用vf数量最多的pf;
48.获取该pod所对应的命名空间;
49.从选定pf的关联vf中选择可用vf,将其移到该pod对应的命名空间,实现vf的分配;
50.vf分配完成,再为vf配置ip等,最终通过对应的pf和分配的关联vf为相应的pod提供rdma通信功能。
51.而某个pod被移除并释放资源时,其虚拟rdma网卡卸载和资源释放的具体过程,则如下:
52.当接收到移除和释放某个pod的请求时,同时收到目标pod对应的vf的配置信息;
53.将该vf移到公共的命名空间复用,以完成vf的释放,也即虚拟rdma网卡的卸载。
54.在上述优选实施例提供方法的基础上,本发明的再一些优选实施例提供一种多rdma网卡的机器设备。该设备被配置有多张rdma网卡;其中,上述的机器设备能够执行上述任一优选实施例中的负载均衡的多rdma网卡虚拟化的方法或负载均衡的多rdma网卡虚拟化的管理方法,进而实现上述各rdma网卡负载均衡的虚拟化。
55.在上述优选实施例提供方法的基础上,本发明的又一些优选实施例提供一种计算
机可读存储介质。该计算机可读存储介质,存储有用于多rdma网卡虚拟化的代码,其中包括用于执行上述任一优选实施例中的负载均衡的多rdma网卡虚拟化的方法或负载均衡的多rdma网卡虚拟化的管理方法的指令。
56.以上所述仅为本发明的具体实施方式,但本发明的保护范围并不局限于此。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜