本发明涉及通信领域,特别涉及一种虚拟网卡链路状态设置方法、装置及存储介质。
背景技术:
在电信运营商组网场景下,为提高业务网元的网络通信可靠性,一般采用多个网元备份的方式。在一个网元的业务网卡链路中断时可以在毫秒级的时间内就收到中断信号,并及时切换到另外一个备用网元。
但网元由物理节点变为虚拟机(virtualmachine,简称vm)后,上述冗余保障方式受到很大影响。
原因在于虚拟机的网卡是一个虚拟设备,其链路状态并不能真实反映承载其报文的物理网卡的链路状态。为此,业界的通常做法是虚拟机在内部发送检测报文来判断网络通讯故障发生与否,当判断出检测报文收发异常时再进行虚拟机或网卡切换。但是由于性能要求,这种报文软检测方式的响应速率一般来说是秒级的,与原来的物理网卡链路中断的毫秒内响应相比,极大增加了数据丢失的可能性,对业务服务带来了较大的风险。
技术实现要素:
本发明提供了一种虚拟网卡链路状态设置方法、装置及存储介质,以解决现有技术中虚拟网卡链路状态确定慢,造成链路中断响应慢的问题。
根据本发明的一个实施例,提供了一种虚拟网卡链路状态设置方法,包括:
通过内核态方式监测物理网卡的链路状态;
根据监测到的物理网卡链路状态设置所述物理网卡对应的虚拟网卡的链路状态。
进一步的,所述根据监测到的物理网卡链路状态设置所述物理网卡对应的虚拟网卡的链路状态,包括:
在监测到所述物理网卡链路状态为断开的情况下,设置所述物理网卡对应的虚拟网卡的链路状态为断开。
进一步的,所述根据监测到的物理网卡链路状态设置所述物理网卡对应的虚拟网卡链路状态,包括:
在监测到所述物理网卡的主备关系发生变化,且变化为从物理网卡的情况下,设置所述物理网卡对应的虚拟网卡链路状态为断开;或
在监测到所述物理网卡的主备关系发生变化,且变化为主物理网卡的情况下,设置所述物理网卡对应的虚拟网卡链路状态为连接。
进一步的,所述根据监测到的物理网卡链路状态设置虚拟网卡的链路状态,包括:
将监测到的物理网卡链路状态发送给网卡代理,通过所述网卡代理设置所述虚拟网卡的链路状态。
进一步的,所述通过所述网卡代理设置所述虚拟网卡的链路状态,包括:
所述网卡代理通过虚拟机监控器vmm(virtualmachinemonitor)或虚拟功能vf(virtualfunction)设置所述虚拟网卡的链路状态。
根据本发明的另一个实施例,提供了一种虚拟网卡链路状态设置装置,包括:监测装置,用于通过内核态方式监测物理网卡的链路状态;设置装置,用于根据监测到的物理网卡链路状态设置所述物理网卡对应的虚拟网卡的链路状态。
进一步的,所述设置装置还用于,在监测到所述物理网卡链路状态为断开的情况下,设置所述物理网卡对应的虚拟网卡的链路状态为断开。
进一步的,所述设置装置还用于,在监测到所述物理网卡的主备关系发生变化,且变化为从物理网卡的情况下,设置所述物理网卡对应的虚拟网卡链路状态为断开;或在监测到所述物理网卡的主备关系发生变化,且变化为主物理网卡的情况下,设置所述物理网卡对应的虚拟网卡链路状态为连接。
根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以实现如上述方法实施例中任一项所述的方法。
根据本发明的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中所述计算机程序被设置为运行时执行如上述方法实施例中任一项所述的方法。
本发明实施例通过内核态的方式直接监测物理网卡的链路状态,并根据监测到的物理网卡链路状态设置该物理网卡对应的虚拟网卡的链路状态,取代了现有技术通过报文检测链路异常的方法,从而确保了虚拟网卡确定自身链路状态的速度。后续虚拟机就可以根据设置后的虚拟网卡链路状态进行虚拟网卡保护倒换等一系列动作。
说明书附图
图1是根据本发明实施例一的一种虚拟网卡链路状态设置方法流程图;
图2是根据本发明实施例二的一种虚拟网卡链路状态设置装置框图;
图3是根据本发明实施例三提供的一种虚拟网卡部署图;
图4是根据本发明实施例三提供的一种虚拟网卡链路状态跟随物理网卡链路状态变化图;
图5是根据本发明实施例四提供的又一种虚拟网卡部署图;
图6是根据本发明实施例四提供的又一种虚拟网卡链路状态跟随物理网卡链路状态变化图。
具体实施方法
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。需要说明的是,文中的″第一″、″第二″仅用作区别,不表示先后顺序。另外,下列实施例中的方案在不产生冲突的情况下,方案可以任意组合。
实施例一
本发明实施例一提供了一种虚拟网卡链路状态设置方法。图1是根据本发明实施例一的一种虚拟网卡链路状态设置方法流程图,如图1所示,该方法包括以下步骤:
s102,通过内核态方式监测物理网卡的链路状态;
s104,根据监测到的物理网卡链路状态设置该物理网卡对应的虚拟网卡的链路状态。
通过上述方法,虚拟网卡可以迅速及时地确定自身的链路状态.后续虚拟机就可以根据设置后的虚拟网卡链路状态进行虚拟网卡保护倒换等一系列动作,从而提高了虚拟机网络的稳定性。
进一步的,该根据监测到的物理网卡链路状态设置该物理网卡对应的虚拟网卡的链路状态,包括:在监测到该物理网卡链路状态为断开的情况下,设置该物理网卡对应的虚拟网卡的链路状态为断开。
进一步的,该根据监测到的物理网卡链路状态设置该物理网卡对应的虚拟网卡链路状态,包括:在监测到该物理网卡的主备关系发生变化,且变化为从物理网卡的情况下,设置该物理网卡对应的虚拟网卡链路状态为断开;或在监测到该物理网卡的主备关系发生变化,且变化为主物理网卡的情况下,设置该物理网卡对应的虚拟网卡链路状态为连接。
上述方法介绍了物理网卡存在主备绑定bonding时,绑定状态发生变化情况下的虚拟网卡链路状态设置流程。
进一步的,该根据监测到的物理网卡链路状态设置虚拟网卡的链路状态,包括:将监测到的物理网卡链路状态发送给网卡代理,通过该网卡代理设置该虚拟网卡的链路状态。
进一步的,该通过该网卡代理设置该虚拟网卡的链路状态,包括:该网卡代理通过虚拟机监控器vmm或虚拟功能vf设置该虚拟网卡的链路状态。
本发明实施例一采用了一类更贴近网卡驱动的嵌入式检测方案。在虚拟机所在的宿主机上设置网卡代理,该网卡代理可以在毫秒级时间内感知到物理网卡链路状态变化。对于物理网卡链路中断,或者物理网卡由主转为备的场景下,采用vmm控制技术或sr-iov(singleroot-i/ovirtualization,单根输入/输出虚拟化)虚拟功能(virtualfunction,或称vf,sr-iov技术中的虚拟网卡)设置技术将虚拟网卡强行中断,以将外部链路状态通知到虚拟机内部,使得虚拟机内部能迅速及时地确认外部网络异常并做相应业务切换处理,从而提高了虚拟机网络的稳定性。
实施例二
本发明实施例二提供了一种虚拟网卡链路状态设置装置,图2是根据本发明实施例二的一种虚拟网卡链路状态设置装置框图,如图2所示,该虚拟网卡链路状态设置装置包括以下模块:
监测装置22,用于通过内核态方式监测物理网卡的链路状态;
设置装置24,用于根据监测到的物理网卡链路状态设置该物理网卡对应的虚拟网卡的链路状态。
进一步的,该设置装置24还用于,在监测到该物理网卡链路状态为断开的情况下,设置该物理网卡对应的虚拟网卡的链路状态为断开。
进一步的,该设置装置24还用于,在监测到该物理网卡的主备关系发生变化,且变化为从物理网卡的情况下,设置该物理网卡对应的虚拟网卡链路状态为断开;或在监测到该物理网卡的主备关系发生变化,且变化为主物理网卡的情况下,设置该物理网卡对应的虚拟网卡链路状态为连接。
实施例三
以下结合具体场景,对本发明实施例三进行说明。
本发明实施例三的方案可用在目前最常用的kvm云平台的任意虚拟化环境上,主机利用kvm平台为虚拟机提供虚拟网卡服务。kvm(kernel-basedvirtualmachine)是业界主流vmm之一。
图3是根据本发明实施例三提供的一种虚拟网卡部署图,如图3所示:
两台主机host1和host2通过kvm平台提供两个业务虚拟机vm1和vm2。
物理网卡nic1和nic2为虚拟机vm1和vm2提供vnic1和vnic2虚拟网卡服务。
host1及host2通过nic1和nic2与外部交换机switch的p1、p2交换端口连接。p1、p2以主备方式运行。
vm1和vm2是事实上的主备关系,由vm1和vm2内的业务软件根据vnic1和vnic2的链路状态情况做业务在vm间切换。
图4是根据本发明实施例三提供的一种虚拟网卡链路状态跟随物理网卡链路状态变化图,如图4所示:
s401,host1和host2上创建虚拟机vm1和vm2时,通知虚拟网卡代理nicagent1和nicagent2将vnic1和vnic2纳入管理,并启动内核态的物理网卡中断监控程序;
s402,nic1和p1之间的链路异常时,处于内核态的中断监控程序会将信息发送给nicagent1;
s403,nicagent1将vnic1的链路状态设置为down;
s404,vm1里的vnic1状态发生变化,并经由中断方式发送给应用程序app。
s405,app的冗余保障系统会主动向vm2发起业务倒换,保障了上层业务的连续性。
单物理网卡级(即不进行bonding)场景下,首先使用os(operationsystem,即操作系统)提供的内核方法接收网卡链路状态中断消息。其次,驻留一个nicagent于用户内存中。在上述中断监控机制被触发后,在毫秒级的时间内,nicagent可收到系统通知。nicagent使用kvm提供的虚拟机管理方法将虚拟机对应的虚拟网卡链路状态设置为断开状态,触发虚拟机内的业务异常处理流程。
实施例四
以下结合具体场景,对本发明实施例四进行说明。
本发明实施例四的方案可以用在复杂组网下,基于网络通讯可用性的更高驱动,基础服务商进而在单一主机上利用bonding技术绑定多个物理网卡,以在其中一个物理链路中断时不进行虚拟机切换就可以提供通讯高可用性。
图5是根据本发明实施例四提供的又一种虚拟网卡部署图,如图5所示:主机host1通过kvm平台提供一个业务虚拟机vm1。
host1通过nic1和nic2与外部交换机的p1、p2交换端口连接。p1、p2以主备方式运行。
物理网卡nic1基于sr-iov技术分别为虚拟机vm1提供vnic1虚拟网卡能力;相应地,nic2为vm1提供vnic2虚拟网卡。
相应于nic1和nic2在host1上做bonding;vnic1和vnic2在vm1里也做bonding。
图6是根据本发明实施例四提供的又一种虚拟网卡链路状态跟随物理网卡链路状态变化的处理过程。
s601,host1上创建虚拟机vm1时通知nicagent1对vnic1、vnic2进行管理,并且启动内核态的网卡bonding监控程序;
s602,nic1和p1之间的bonding主备关系变化时(此时,nic1和p1之间的连接是主用链路,nic1和p1之间发生链路故障,需要进行主备倒换),nicagent1会收到内核态发来的网卡bonding切换信号;
s603,nicagent1将vnic1的链路状态设置为down;
s604,vm1里的vnic1状态发生变化,会由中断方式发送给bonding管理模块,停止在vnic1上发包,最大限度地保障上层业务的连续性。
网卡bonding级监控代理则使用bonding管理层(bondingmanagementlayer,目前ct虚拟化商用场景最常见的是openvswitch)的监控机制实时接收bonding状态。
此外,驻留一个nicagent于用户内存中。在上述主备关系变化后,在毫秒级的时间内,nicagent可收到系统通知。nicagent使用kvm提供的虚拟机管理方法将主连接对应的虚拟网卡链路状态设置为断开状态,进而触发虚拟机内的业务异常处理流程。
本发明的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
s1,通过内核态方式监测物理网卡的链路状态;
s2,根据监测到的物理网卡链路状态设置该物理网卡对应的虚拟网卡的链路状态。
可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(read-onlymemory,简称为rom)、随机存取存储器(randomaccessmemory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
s1,通过内核态方式监测物理网卡的链路状态;
s2,根据监测到的物理网卡链路状态设置该物理网卡对应的虚拟网卡的链路状态。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
以上仅为本发明的实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
1.一种虚拟网卡链路状态设置方法,其特征在于,包括:
通过内核态方式监测物理网卡的链路状态;
根据监测到的物理网卡链路状态设置所述物理网卡对应的虚拟网卡的链路状态。
2.如权利要求1所述的方法,其特征在于,所述根据监测到的物理网卡链路状态设置所述物理网卡对应的虚拟网卡的链路状态,包括:
在监测到所述物理网卡链路状态为断开的情况下,设置所述物理网卡对应的虚拟网卡的链路状态为断开。
3.如权利要求1所述的方法,其特征在于,所述根据监测到的物理网卡链路状态设置所述物理网卡对应的虚拟网卡链路状态,包括:
在监测到所述物理网卡的主备关系发生变化,且变化为从物理网卡的情况下,设置所述物理网卡对应的虚拟网卡链路状态为断开;或
在监测到所述物理网卡的主备关系发生变化,且变化为主物理网卡的情况下,设置所述物理网卡对应的虚拟网卡链路状态为连接。
4.如权利要求1-3任一项所述的方法,其特征在于,所述根据监测到的物理网卡链路状态设置虚拟网卡的链路状态,包括:
将监测到的物理网卡链路状态发送给网卡代理,通过所述网卡代理设置所述虚拟网卡的链路状态。
5.如权利要求4所述的方法,其特征在于,所述通过所述网卡代理设置所述虚拟网卡的链路状态,包括:
所述网卡代理通过虚拟机监控器vmm或虚拟功能vf设置所述虚拟网卡的链路状态。
6.一种虚拟网卡链路状态设置装置,其特征在于,包括:
监测装置,用于通过内核态方式监测物理网卡的链路状态;
设置装置,用于根据监测到的物理网卡链路状态设置所述物理网卡对应的虚拟网卡的链路状态。
7.如权利要求6所述的装置,其特征在于,所述设置装置还用于,在监测到所述物理网卡链路状态为断开的情况下,设置所述物理网卡对应的虚拟网卡的链路状态为断开。
8.如权利要求6所述的方法,其特征在于,所述设置装置还用于,
在监测到所述物理网卡的主备关系发生变化,且变化为从物理网卡的情况下,设置所述物理网卡对应的虚拟网卡链路状态为断开;或
在监测到所述物理网卡的主备关系发生变化,且变化为主物理网卡的情况下,设置所述物理网卡对应的虚拟网卡链路状态为连接。
9.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以实现如权利要求1-5中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中所述计算机程序被设置为运行时执行如权利要求1-5中任一项所述的方法。
技术总结