虚拟机环境下链路管理方法、装置和系统与流程

文档序号:14723319发布日期:2018-06-18 12:12阅读:488来源:国知局

本发明涉及通信领域,尤其涉及一种虚拟机环境下链路管理方法、装置和系统。



背景技术:

传统IT网络设备中,为了降低服务器网络接口管理复杂度,同时应用软件对网络接口带宽需求不断增加,对服务器的多个对外网络接口一般都采用了链路汇聚控制协议(LACP,LinkAggregationControlProtocol),将多个物理端口汇聚为一个聚合口由OS及上层业务使用。

在非虚拟化的主机操作系统(OperationSystem,OS)中,通过运行802.3ad链路汇聚控制协议,可以自动完成与交换机侧连接的多个端口的协商及管理。在虚拟机环境中,网卡设备通过单根I/O虚拟化(SingRootI/OVirtualization,SR-IOV)或虚拟机设备队列(VirtualMachineDeviceQueue,VMDq)等I/O虚拟化技术实现多个虚拟网卡(VF,VirtualFunction),每个虚拟机根据需求分配一定数量的VF,如果多个虚拟机均需要对各自挂接的VF网卡运行802.3ad链路汇聚控制协议,将导致交换侧LACP状态机混乱,可能导致无法完成链路汇聚协商过程。

举个典型组网例子,一台服务器有两块物理网卡A、B,连接支持LACP的以太网交换机端口PA、PB,服务器网卡A通过SRIOV配置两个VF端口,命名为VF1、VF2,服务器网卡B同样配置两个VF端口,命名为VF3、VF4,在服务器上启动两个虚拟机VM1、VM2,将VF1、VF3分配给VM1,VF2、VF4分配给VM2,这样两个虚拟机的网络流量最终通过两个物理端口连接到交换机。这种组网目前只能通过静态配置交换机的方式来实现VM中两个端口的负荷分担,否则VM1、VM2中同时运行LACP协议,两个虚拟机的LACP数据单元(LACPDataUnit)协议报文将同时与交换机的LACP进行协商,此时将可能导致协商不成功。

如果在虚拟机环境中采用静态配置交换机的方法,有如下缺点:

缺少VF到外部交换机的全路径检测机制,一旦发生链路故障,无法判别是虚拟机内部VF问题,还是外部物理链路到交换机之间的问题,增加故障处理难度。

除了静态配置交换机外,目前常用的方法还有:

宿主操作系统(HostOS)管理的PF运行LACP协议并构建物理聚合组,客户操作系统(GuestOS)管理的VF构建虚拟LACP聚合组,物理聚合组的状态信息同步到虚拟聚合组,虚拟聚合组根据物理聚合组的协议状态信息来管理VF端口,虚拟机上不需要实际的LACP协商过程,但也缺少VF到外部交换机的全路径检测机制。

由上可以看出,上述两种方法均存在无法实现虚拟机网络链路的全路径检测的问题,从而造成当VF内部端口异常时会导致虚拟机LACP聚合组丢包的情况的出现。

为了解决虚拟机环境下VF网口的链路聚合控制管理,需要有一种方法来实现GuestOS、VF端口、HostOS、PF端口这四者之间的协商管理。



技术实现要素:

本发明提供一种虚拟机环境下链路管理方法、装置和系统,要解决的技术问题是如何实现对虚拟机网络链路的全路径检测。

为解决上述技术问题,本发明提供了如下技术方案:

一种虚拟机环境下链路管理方法,包括:

与虚拟机建立心跳握手链路;

在所述心跳握手链路构建成功后,获取网络接口卡上物理端口的链路汇聚控制协议LACP状态信息;

通过所述心跳握手链路将所述LACP状态信息发送给所述虚拟机。

其中,所述方法还具有如下特点:所述心跳握手链路是基于共享通信队列机制在网络接口卡上物理端口与虚拟网卡之间建立的,其中所述虚拟网卡是由所述网络接口卡为所述虚拟机提供的。

其中,所述方法还具有如下特点:同一虚拟机的多个虚拟网卡是由不同的网络接口卡提供的。

一种虚拟机环境下链路管理方法,包括:

与主机建立心跳握手链路;

在所述心跳握手链路构建成功后,检测是否接收到所述主机发送所述网络接口卡上物理接口的链路汇聚控制协议LACP状态信息;

根据检测结果,对虚拟机与虚拟网卡之间的链路进行控制。

其中,所述方法还具有如下特点:所述与主机建立心跳握手链路之前,还包括:

利用两个网络接口卡上的虚拟网卡与外部进行通信。

其中,所述方法还具有如下特点:所述方法还包括:

在检测到主机进行LACP协商没有完成前,控制所述虚拟机对应的两个虚拟网卡以主备工作模式运行。

其中,所述方法还具有如下特点:所述根据检测结果,对虚拟机与虚拟网卡之间的链路进行控制,包括:

如果接收的LACP状态信息为LACP协商完成状态,使能状态正常的物理端口对应的虚拟网卡,并将处于使能状态的虚拟网卡以负荷分担模式运行;如果所述虚拟网卡运行于主备模式,则选择状态正常的物理端口对应的虚拟网卡作为主用端口,其它作为备用端口。

其中,所述方法还具有如下特点:所述根据检测结果,对虚拟机与虚拟网卡之间的链路进行控制,还包括:

在接收到LACP协商完成状态后,如果从虚拟网卡未接收到物理端口和/或虚拟网卡的聚合状态信息,则确定所述虚拟网卡故障;

如果所述虚拟网卡运行在负荷分担聚合模式,则将所述出现故障的虚拟网卡退出当前负荷分担聚合组,在所述虚拟网卡心跳恢复且LACP状态正常时,将对应虚拟网卡重新加入负荷分担聚合组;

如果所述虚拟网卡运行在主备模式聚合模式,则发起虚拟网卡端口主备倒换以选择下一可用虚拟网卡端口为主用。

一种虚拟机环境下链路管理装置,包括:

第一建立模块,用于与虚拟机建立心跳握手链路;

获取模块,用于在所述心跳握手链路构建成功后,获取网络接口卡上物理端口的链路汇聚控制协议LACP状态信息;

发送模块,用于通过所述心跳握手链路将所述LACP状态信息发送给所述虚拟机。

其中,所述装置还具有如下特点:所述心跳握手链路是基于共享通信队列机制在网络接口卡上物理端口与虚拟网卡之间建立的,其中所述虚拟网卡是由所述网络接口卡为所述虚拟机提供的。

其中,所述装置还具有如下特点:同一虚拟机的多个虚拟网卡是由不同的网络接口卡提供的。

一种虚拟机环境下链路管理装置,包括:

第二建立模块,用于与主机建立心跳握手链路;

检测模块,用于在所述心跳握手链路构建成功后,检测是否接收到所述主机发送所述网络接口卡上物理接口的链路汇聚控制协议LACP状态信息;

第一控制模块,用于根据检测结果,对虚拟机与虚拟网卡之间的链路进行控制。

其中,所述装置还具有如下特点:所述装置还包括:

通信模块,用于利用两个网络接口卡上的虚拟网卡与外部进行通信。

其中,所述装置还具有如下特点:所述装置还包括:

第二控制模块,用于在检测到主机进行LACP协商没有完成前,控制所述虚拟机对应的两个虚拟网卡以主备工作模式运行。

其中,所述装置还具有如下特点:所述控制模块具体用于:

如果接收的LACP状态信息为LACP协商完成状态,使能状态正常的物理端口对应的虚拟网卡,并将处于使能状态的虚拟网卡以负荷分担模式运行;如果所述虚拟网卡运行于主备模式,则选择状态正常的物理端口对应的虚拟网卡作为主用端口,其它作为备用端口。

其中,所述装置还具有如下特点:所述控制模块还包括:

确定单元,用于在接收到LACP协商完成状态后,如果从虚拟网卡未接收到物理端口和/或虚拟网卡的聚合状态信息,则确定所述虚拟网卡故障;

控制单元,用于如果所述虚拟网卡运行在负荷分担聚合模式,则将所述出现故障的虚拟网卡退出当前负荷分担聚合组,在所述虚拟网卡心跳恢复且LACP状态正常时,将对应虚拟网卡重新加入负荷分担聚合组;如果所述虚拟网卡运行在主备模式聚合模式,则发起虚拟网卡端口主备倒换以选择下一可用虚拟网卡端口为主用。

一种虚拟机环境下链路管理系统,包括上文所述的两种装置。

本发明提供的实施例,在不修改对端交换机配置的情况下自动完成服务器网卡的LACP协商,降低了设备现场部署的难度,通过NIC内部共享通信机制实现了HOST主机与VF之间的心跳保护,实现了从VF到外部交换机的全链路的可靠性检测,提升了系统的可靠性与可用性。

另外,外部链路状态信息可以由VF发送到VM,使得VM可以根据外部链路状态对VF聚合组进行调整,进一步的,VM通过检测是否收到VF发送的链路状态信息,可以进一步获取VF与VM之间的链路状态,实现自动调整聚合组的目的,防止通信丢包情况的发生,保证数据传输的安全。

附图说明

图1为本发明实施例一提供的虚拟机环境下链路管理方法的流程示意图;

图2为本发明实施例二提供的虚拟机环境下链路管理方法的流程示意图;

图3为本发明提供的说明HOST主机与VM的网络连接的示意图;

图4为图3所示连接关系下LACP控制流与VM业务流的示意图;

图5为图3所示连接关系下HOST主机与VM通过NIC共享通信队列实现信息交互示意图;

图6为图3所示连接关系下HOST主机与VM之间的心跳握手链路建立流程示意图;

图7为图3所示连接关系下HOST主机与VM实现LACP及状态同步的协作流程;

图8为本发明实施例三提供的虚拟机环境下链路管理装置的结构示意图;

图9为本发明实施例四提供的虚拟机环境下链路管理装置的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步的详细描述。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

图1为本发明实施例一提供的虚拟机环境下链路管理方法的流程示意图,图1所示方法包括:

步骤101、与虚拟机建立心跳握手链路;

步骤102、在所述心跳握手链路构建成功后,获取网络接口卡上物理端口的链路汇聚控制协议LACP状态信息;

步骤103、通过所述心跳握手链路将所述LACP状态信息发送给所述虚拟机。

与现有技术中VF与PF必须运行相同的LACP协议相比,本发明实施例一提供的方法中,通过心跳握手链路将PF端口的LACP状态信息共享给虚拟机,使得虚拟机上的VF无需运行LACP协议即可得到LACP状态信息,为虚拟机对全局链路的检测提供了数据依据。

图2为本发明实施例二提供的虚拟机环境下链路管理方法的流程示意图,图2所示方法包括:

步骤201、与主机建立心跳握手链路;

步骤202、在所述心跳握手链路构建成功后,检测是否接收到所述主机发送所述网络接口卡上物理接口的链路汇聚控制协议LACP状态信息;

步骤203、根据检测结果,对虚拟机与虚拟网卡之间的链路进行控制。

与现有技术中VF与PF必须运行相同的LACP协议相比,本发明实施例二提供的方法中,通过心跳握手链路从主机获取PF端口的LACP状态信息,使得虚拟机上的VF无需运行LACP协议即可得到LACP状态信息,为虚拟机对全局链路的检测提供了数据依据。另外,通过检测是否VF发送的LACP信息可以获取之虚拟机和虚拟机网卡之间的链路状况,在虚拟机内VF网口单独故障时能够实现接口的切换,保证数据流的正常传输。

下面对本发明提供的方法实施例作进一步说明:

图3为本发明提供的说明HOST主机与VM的网络连接的示意图。

服务器主机安装有2个及以上的支持I/O虚拟化技术的网络接口卡(NIC,NetworkInterfaceCard),并通过虚拟化技术提供虚拟机,在虚拟机上运行GuestOS,同时提供一定数量的CPU核运行HostOS,各GuestOS之间及GuestOS与HostOS之间相互隔离。

NIC通过IO虚拟化技术(典型方法如SR-IOV)为VM提供虚拟网卡支持。NIC通过I/O虚拟化技术为VM提供所需的VF虚拟网卡,VM采用负荷分担或主备模式将多个VF汇聚为一个端口。如采用SR-IOV技术,NIC可同时构建一个物理端口(PF,PhysicalFunction),用于管理NIC及VF。外部物理端口的LACP协商由服务器HOST主机通过NIC的PF来完成。如果采用VMDq或其它虚拟化技术,则在全部VF中选择其中一个作为对外协商端口,此端口称为主VF端口。以SR-IOV为例,网卡可以提供一个或多个物理功能接口(PF),同时提供多个VF接口,其中PF由HostOS使用,主要用于HostOS自身外部通信需求、对外LACP协议管理及VF资源管理;VF由VM上的GuestOS使用。为提高通信链路的可靠性,同一GuestOS的多个VF分别来自多个不同的NIC,这些VF采用负荷分担或主备模式构建一个Bonding端口(多个网络接口以负荷分担或主备模式构建的一种聚合端口)。

服务器的多个NIC外部接口连接一台标准以太网交换机或多台通过堆叠技术互联的交换机集群。NIC网卡与交换机通过LACP协议构建为一个聚合端口。

在图3所示示意图中,服务器主机通过LACP方式利用两个NIC卡与外部交换机的PA、PB两个交换端口连接,该端口通过LACP协议进行管理,且两个NIC以聚合组方式运行。服务器提供两个虚拟机、一个物理机,服务器两块物理网卡通过SR-IOV的方式分别提供一个PF(分别命名为PF1、PF2)和2个VF(分别命名为VF1~VF4)。PF1、PF2构成一个LACP聚合组,此聚合组经由物理机与外部交换机完成LACP协商;VF1、VF3构成一个负荷分担或主备聚合组,由VM1使用;VF2、VF4构成另外一个负荷分担或主备聚合组,由VM2使用。

其中,同一虚拟机的多个虚拟网卡是由不同的网络接口卡提供的,即虚拟机利用两个网络接口卡上的虚拟网卡与外部进行通信,使得在网络接口卡故障时,可以利用工作正常的PF上该虚拟机的其他虚拟网卡继续工作,保证虚拟机的数据流量的正常传输。

图4为图3所示连接关系下LACP控制流与VM业务流的示意图。从图中可知,系统中只需要物理主机在PF1、PF2一个聚合组上运行LACP协议,所有VF聚合组所在的GuestOS不运行LACP协议。

由图4所示示意图可以看出,HOST主机仍然按照现有技术流程运行LACP协议,虚拟机借助NIC卡提供的VF进行数据传输,未进行硬件的改进,保持现有的硬件结构。

图5为图3所示连接关系下HOST主机与VM通过NIC共享通信队列实现信息交互示意图。图5所示示意图中HostOS与GuestOS之间通过共享通信队列构建心跳握手链路并通过此链路同步PF、VF聚合状。

具体来说,在HostOS侧配置NIC的VF功能时会同时为每个VF提供一个邮箱MAILBOX机制,PF与VF之间可以利用此机制实现信息交互。本发明中使用了VF的邮箱功能来建立HostOS与GuestOS之间的心跳握手链路,此链路可以完成HostOS与GuestOS的双向握手和聚合状态同步。

由图5可以看出,所述心跳握手链路是基于共享通信队列机制在网络接口卡上物理端口与虚拟网卡之间建立的,其中所述虚拟网卡是由所述网络接口卡为所述虚拟机提供的,HOST主机可通过心跳握手链路将自身运行LACP协议得到LACP状态信息分享给虚拟机,方便虚拟机获知外部链路状态,实现全链路的检测。

图6为图3所示连接关系下HOST主机与VM之间的心跳握手链路建立流程示意图。

在服务器启动成功后,HostOS与GuestOS首先尝试通过NIC的共享通信队列机制构建心跳握手链路,该链路构建成功后,会同步物理端口和/或虚拟网卡聚合组状态信息;在PF聚合组LACP协商没有完成前,为避免造成传输环路,控制所述虚拟机对应的两个虚拟网卡以主备模式运行,仅保留基本对外通信能力。

心跳握手链路建立后,在HostOS侧,会持续运行PFLACP流程并定时将LACP状态同步到GuestOS;在GuestOS侧,持续检查各VF对应的心跳握手链路是否正常,如果不正常,则关闭对应VF端口,如果正常且已经获得对应PF的LACP状态信息,且本GuestOS将VF配置为负荷分担聚合模式,则首先将VF主备模式聚合组修改为负荷分担聚合组,并根据对应PF是否在LACP聚合组中将该PF对应的VF加入或退出GuestOS的VF负荷分担聚合组;如果PFLACP协商流程没有完成或没有同步到GuestOS,则继续等待。

图7为图3所示连接关系下HOST主机与VM实现LACP及状态同步的协作流程。在心跳握手链路建立后,HOST主机启动PF端口LACP协商流程,协商完成后通过心跳握手链路同步到VM的GuestOSVF端口,根据同步过来的PFLACP聚合组链路状态,将对应VF端口加入或退出VF负荷分担聚合组;当PFLACP协商失败时,重新修改VF聚合组为主备模式,避免环路。如果GuestOS将VF端口配置为主备模式,则在当前主用VF对应的PF端口异常时,发起主备VF链路切换,选择下一可用VF为主用端口。

本发明在网卡支持SR-IOV或VMDq等IO虚拟化技术的情况下,在网卡向虚拟机提供VF虚拟网卡时可以简化对外部交换机的配置,通过将LACP的协商流程迁移到PF端口,并基于网卡设备的邮箱通信机制建立双向心跳握手链路,可以实现VF聚合组不需要运行LACP协议,实现VF端口状态与HostOS中PFLACP聚合组的同步动态管理,同时也可以实现VF到GuestOS之间的内部链路检测。

图8为本发明实施例三提供的虚拟机环境下链路管理装置的结构示意图。图8所示示意图包括:

第一建立模块801,用于与虚拟机建立心跳握手链路;

获取模块802,用于在所述心跳握手链路构建成功后,获取网络接口卡上物理端口的链路汇聚控制协议LACP状态信息;

发送模块803,用于通过所述心跳握手链路将所述LACP状态信息发送给所述虚拟机。

其中,所述心跳握手链路是基于共享通信队列机制在网络接口卡上物理端口与虚拟网卡之间建立的,其中所述虚拟网卡是由所述网络接口卡为所述虚拟机提供的。

其中,同一虚拟机的多个虚拟网卡是由不同的网络接口卡提供的。

与现有技术中VF与PF必须运行相同的LACP协议相比,本发明实施例三提供的装置中,通过心跳握手链路将PF端口的LACP状态信息共享给虚拟机,使得虚拟机上的VF无需运行LACP协议即可得到LACP状态信息,为虚拟机对全局链路的检测提供了数据依据。

图9为本发明实施例三提供的虚拟机环境下链路管理装置的结构示意图。图9所示示意图包括:

第二建立模块901,用于与主机建立心跳握手链路;

检测模块902,用于在所述心跳握手链路构建成功后,检测是否接收到所述主机发送所述网络接口卡上物理接口的链路汇聚控制协议LACP状态信息;

第一控制模块903,用于根据检测结果,对虚拟机与虚拟网卡之间的链路进行控制。

可选的,所述装置还包括:

通信模块,用于利用两个网络接口卡上的虚拟网卡与外部进行通信。

可选的,所述装置还包括:

第二控制模块,用于在检测到主机进行LACP协商没有完成前,控制所述虚拟机对应的两个虚拟网卡以主备工作模式运行。

其中,所述控制模块具体用于:

如果接收的LACP状态信息为LACP协商完成状态,使能状态正常的物理端口对应的虚拟网卡,并将处于使能状态的虚拟网卡以负荷分担模式运行;如果所述虚拟网卡运行于主备模式,则选择状态正常的物理端口对应的虚拟网卡作为主用端口,其它作为备用端口。

可选的,所述控制模块还包括:

确定单元,用于在接收到LACP协商完成状态后,如果从虚拟网卡未接收到物理端口和/或虚拟网卡的聚合状态信息,则确定所述虚拟网卡故障;

控制单元,用于如果所述虚拟网卡运行在负荷分担聚合模式,则将所述出现故障的虚拟网卡退出当前负荷分担聚合组,在所述虚拟网卡心跳恢复且LACP状态正常时,将对应虚拟网卡重新加入负荷分担聚合组;如果所述虚拟网卡运行在主备模式聚合模式,则发起虚拟网卡端口主备倒换以选择下一可用虚拟网卡端口为主用。

与现有技术中VF与PF必须运行相同的LACP协议相比,本发明实施例四提供的装置中,通过心跳握手链路从主机获取PF端口的LACP状态信息,使得虚拟机上的VF无需运行LACP协议即可得到LACP状态信息,为虚拟机对全局链路的检测提供了数据依据。另外,通过检测是否VF发送的LACP信息可以获取之虚拟机和虚拟机网卡之间的链路状况,在虚拟机内VF网口单独故障时能够实现接口的切换,保证数据流的正常传输。

另外,本发明还提供一种虚拟机环境下链路管理系统,包括如图8所示的装置和如图9所示的装置。

本发明提供的实施例,在不修改对端交换机配置的情况下自动完成服务器网卡的LACP协商,降低了设备现场部署的难度,通过NIC内部共享通信机制实现了HOST主机与VF之间的心跳保护,实现了从VF到外部交换机的全链路的可靠性检测,提升了系统的可靠性与可用性。

本领域普通技术人员可以理解上述实施例的全部或部分步骤可以使用计算机程序流程来实现,所述计算机程序可以存储于一计算机可读存储介质中,所述计算机程序在相应的硬件平台上(如系统、设备、装置、器件等)执行,在执行时,包括方法实施例的步骤之一或其组合。

可选地,上述实施例的全部或部分步骤也可以使用集成电路来实现,这些步骤可以被分别制作成一个个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

上述实施例中的各装置/功能模块/功能单元可以采用通用的计算装置来实现,它们可以集中在单个的计算装置上,也可以分布在多个计算装置所组成的网络上。

上述实施例中的各装置/功能模块/功能单元以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。上述提到的计算机可读取存储介质可以是只读存储器,磁盘或光盘等。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求所述的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1