一种网口状态检测和同步方法及装置与流程

文档序号:11147497阅读:562来源:国知局
一种网口状态检测和同步方法及装置与制造工艺

本发明涉及虚拟化云操作系统,尤其涉及一种单根I/O虚拟化(SR-IOV,Single-Root I/O Virtualization)网口在主备联合(bond)模式下的虚拟功能(VF,Virtual Function)&物理功能(PF,Physical Function)主备状态的检测和同步方法及装置。



背景技术:

SR-IOV标准允许在I/O来宾域之间高效共享快速外设组件互连(PCIe,Peripheral Component Interconnect Express,)设备。SR-IOV设备可以具有数十个与某个PF关联的VF。比较典型的应用就是多个云主机共享同一个支持SR-IOV标准的PCIe网口,图1为本发明两个云主机共享一个SR-IOV网口的网络结构示意图,如图1所示,每个云主机可以使用一个或多个VF网口,云主机之间共用一个物理网口完成与外部网络的交互。

在对可靠性要求很高的场景中,多个云主机共享单物理网口的方式并不能满足物理链路级冗余的应用需求。针对这一场景,通常的解决方法是将SR-IOV网口的一对网口组成bond主备模式(active-standby),共同服务所有云主机。图2为本发明云主机启用SR-IOV网口bond结构示意图,如图2所示,主机在创建时,会同时绑定一对SR-IOV网口的两个VF网口,这两个VF网口由于物理上归属于不同的网口,所以可以为云主机提供物理链路冗余的功能。

现有的大多数云操作系统都支持SR-IOV网口bond的功能,在实际使用过程中,云操作系统负责管控这对物理网口的主备状态,并通知PF驱动实时更新。由于物理主机的网口有主备之分,因此,物理主机上面运行的云主机就需要关注网口的主备状态,并且需要感知网口主备切换的过程,当VF和PF网口 状态保持同步后,就能保证报文处理的及时性及准确性。

要实现云主机感知物理网口的状态,就需要一套VF驱动与PF驱动通信机制,但是SR-IOV标准并没有定义这条通信线路的实现机制。目前主流的硬件厂商会采用邮箱通知的方式来支持该通信特性,图3为本发明邮箱通信机制示意图,如图3所述,通过使用一系列硬件信箱和门铃寄存器来为每个VF实现这个通信信道。但是,硬件厂商在驱动中实现的基于邮箱通知方式的VF和PF网口之间的通信消息仅限于VF复位、配置VF MAC地址、设置多播地址、设置VLAN过滤器、设置最大包长等基本参数设置等等,这些参数是在云主机上电时VF网口初始化时使用到的。

目前,还可以基于软件的信道来实现VF驱动与PF驱动通信功能,但是需要由Hypervisor子系统提供支持。各个生产商的信道的实现方法并不相同,因此,需要客户自己启动这些支持。而且,并不是所用Hypervisor生产商都提供基于软件的消息机制。

可见,针对云主机运行过程中的VF&PF网口链路主备同步需求,现有技术还无法实现。



技术实现要素:

有鉴于此,本发明实施例期望提供一种网口状态检测和同步方法及装置,能够保持PF网口和VF网口主备状态的一致。

为达到上述目的,本发明的技术方案是这样实现的:

本发明提供了一种网口状态检测和同步方法,所述方法包括:

查询当前虚拟功能VF网口对应的物理功能PF网口是否为主用网口;

根据查询结果,进行VF网口主备状态的切换/保持操作。

上述方案中,所述查询当前VF网口对应的PF网口是否为主用网口包括:

第一网口驱动发送VF网口同步查询消息到第二网口驱动,查询当前VF网口对应的物理功能PF网口是否为主用网口;

其中,所述当前VF网口为当前主用VF网口;

所述第一网口驱动为VF网口驱动,所述第二网口驱动为PF网口驱动。

上述方案中,所述查询当前虚拟功能VF网口对应的物理功能PF网口是否为主用网口包括:周期性、和/或实时查询当前VF网口对应的PF网口是否为主用网口。

上述方案中,所述根据查询结果,进行VF网口主备状态的切换/保持操作包括:

当前VF网口对应的PF网口为主用网口时,进行VF网口主备状态保持操作;当前VF网口对应的PF网口为非主用用网口时,进行VF网口主备状态切换操作。

上述方案中,所述方法还包括:

使用进行切换/保持操作之后的最新的主用VF网口进行外部通信。

本发明还提供了一种网口状态检测和同步装置,所述装置包括:查询模块、切换模块,其中,

所述查询模块,用于查询当前虚拟功能VF网口对应的物理功能PF网口是否为主用网口;

所述切换模块,用于根据查询结果,进行VF网口主备状态的切换/保持操作。

上述方案中,所述查询模块具体用于:

第一网口驱动发送VF网口同步查询消息到第二网口驱动,查询当前VF网口对应的物理功能PF网口是否为主用网口;

其中,所述当前VF网口为当前主用VF网口;

所述第一网口驱动为VF网口驱动,所述第二网口驱动为PF网口驱动。

上述方案中,所述查询模块具体用于:周期性、和/或实时查询当前VF网口对应的PF网口是否为主用网口。

上述方案中,所述切换模块具体用于:当前VF网口对应的PF网口为主用网口时,进行VF网口主备状态保持操作;当前VF网口对应的PF网口为非主用用网口时,进行VF网口主备状态切换操作。

上述方案中,所述装置还包括通信模块,用于:使用进行切换/保持操作之后的最新的主用VF网口进行外部通信。

本发明实施例所提供的网口状态检测和同步方法及装置,首先查询当前虚拟功能VF网口对应的物理功能PF网口是否为主用网口;然后根据查询结果,进行VF网口主备状态的切换/保持操作。如此,能够保持PF网口和VF网口主备状态的一直,从而保证报文处理的及时性及准确性。

附图说明

图1为本发明两个云主机共享一个SR-IOV网口的网络结构示意图;

图2为本发明云主机启用SR-IOV网口bond结构示意图;

图3为本发明实施例邮箱通信机制示意图;

图4为本发明实施例一网口状态检测和同步方法流程示意图;

图5为本发明实施例二网口状态检测和同步方法流程示意图;

图6为本发明实施例网口状态检测和同步装置结构示意图。

具体实施方式

本发明实施例中,先查询当前虚拟功能VF网口对应的物理功能PF网口是否为主用网口;然后根据查询结果,进行VF网口主备状态的切换/保持操作。

下面结合附图及具体实施例,对本发明技术方案的实施作进一步的详细描述。图4为本发明实施例一网口状态检测和同步方法流程示意图,如图4所示,本实施例网口状态检测和同步方法包括以下步骤:

步骤401:查询当前虚拟功能VF网口对应的物理功能PF网口是否为主用网口;

其中,所述查询当前VF网口对应的PF网口是否为主用网口包括:第一网口驱动发送VF网口同步查询消息到第二网口驱动,查询当前VF网口对应的物理功能PF网口是否为主用网口;其中,所述当前VF网口为当前主用VF网口;所述第一网口驱动为VF网口驱动,所述第二网口驱动为PF网口驱动。

具体的,以邮箱通知模式为基础,通过主用VF网口同步查询消息,用来实现VF&PF网口的状态的检测和同步,使得能够当PF网口主备关系发生变化时,VF接口能同步实现倒换;其中,所述VF网口同步查询消息可以采用如下消息形式:XXX_VF_GET_MASTER;其中,XXX表示驱动类型,如:IXGBE;

所述VF网口同步查询消息的发送端是VF网口的驱动程序,接收端是PF的网口驱动程序。发送端将VF网口同步查询消息投递到接受端的邮箱,接收端在处理完成后再将响应消息投递回发送端的邮箱,以使得发送端能够根据结果值做相应VF端口的倒换/保持操作。

为了防止混淆,要求云主机VF网口驱动发送请求消息时,一次只能带一个当前主用VF网口对应的PF网口的HW信息,即当前主用VF网口同步查询消息。PF网口驱动根据该HW信息查询PF网口对应的主备状态,在响应消息中携带具体查询结果。所述查询结果可以采用多种方式,例如:所述结果为0表示当前主用VF网口对应的PF网口为主用PF网口,查询结果非0表示当前主用VF网口对应的PF网口为备用网口。

本发明实施例中,可以选择周期性、和/或实时查询当前VF网口对应的PF网口是否为主用网口。

本发明实施例中,所述网口状态检测和切换主要应用于一下场景:

场景一:云主机上电时,需要查询哪个VF网口是主用PF网口对应的VF网口,这样后续才能进行正确的收发操作。

场景二:云主机在运行过程中,需要实时感知VF网口对应的底层的PF网口的主备状态,当PF网口发生主备切换以后,VF接口也要相应的发生切换。

场景三:云主机在运行过程中,如果需要进行备VF接口的倒换,则需要判定新的主用VF网口对应的PF网口是否可用。

对于场景二,本发明实施例中,可以采用周期性查询当前VF网口对应的PF网口是否为主用网口,具体的,

云主机上电后,VF网口驱动程序定时发送XXX_VF_GET_MASTER查询消息到PF网口驱动,查询当前的VF网口对应的PF网口的主备状态。当响应 消息中告知当前主用VF网口对应的PF网口不是主用PF网口时,执行步骤402中的VF网口倒换操作;当响应消息提示当前VF网口对应的PF网口为主用时,执行步骤402中的VF网口倒换保持操作。本发明实施例中,所述查询周期可以根据实际的VF收发队列缓冲情况而定,也可以根据其他因素设定。通常,新的主用VF网口对应的报文缓冲区能够缓存几秒左右的报文,因此,可以将所述查询周期定为几秒,如果在这段时间内VF网口完成主备切换,那么不会造成太大的丢包影响。

对于场景一和场景三,本发明实施例中,可以采用实时查询当前VF网口对应的PF网口是否为主用网口,当云主机不确定当前哪一个VF接口主用却又立刻要做关键操作时,可以直接发起实时查询消息。根据响应结果判断是否可以做VF网口主备倒换操作。

本发明实施例中,可以同时采用周期性和实时查询当前VF网口对应的PF网口是否为主用网口。即当云主机上电或云主机在运行过程中需要进行主备VF接口的倒换的情况下,实时查询当前VF网口对应的PF网口是否为主用网口;当云主机正常运行过程中,周期性查询当前VF网口对应的PF网口是否为主用网口。

步骤402:根据查询结果,进行VF网口主备状态的切换/保持操作。

具体的,所述根据查询结果,进行VF网口主备状态的切换/保持操作包括:

当前VF网口对应的PF网口为主用网口时,进行VF网口主备状态保持操作;当前VF网口对应的PF网口为非主用用网口时,进行VF网口主备状态切换操作。

本发明实施例中,仅仅是以当前VF网口为主用网口为例,并不限定此范围,在实际应用中,当前VF网口还可以是备用网口,当所述VF网口为备用网口时,只需按照本发明实施例所述网口状态检测和同步方法进行简单替换即可实现。

本发明实施例中,所述方法还包括:使用进行切换/保持操作之后的最新的主用VF网口进行外部通信。

图5为本发明实施例二网口状态检测和同步方法流程示意图,如图5所示,云操作系统支持SR-IOV网口bond的功能后,需要管控这对物理网口的主备状态,并通知PF驱动实时更新。VF驱动需要实时查询PF网口的主备状态,根据结果及时切换VF网口。本发明实施例所述网口状态检测和同步方法包括以下步骤:

步骤501:云平台开启一个后台定时任务,实时监控物理网口的主备情况;

步骤502:云平台通知PF网口驱动保存当前的物理网口主备状态;

步骤503:VF网口驱动主动发送XXX_VF_GET_MASTER消息,查询当前的VF对应的PF网口是否为主用PF网口;

步骤504:VF网口驱动根据响应结果,进行VF网口的切换/保持操作;

步骤505:使用最新的主用VF网口进行外部通信。

本发明实施例所述网口状态检测和同步方法可以实现VF&PF网口链路主备同步功能,在云主机上电时,可以及时保证消息的正确收发;在底层物理网口切换时可以保证上层业务的及时感知,增强云主机业务的可靠性。

本发明实施例还提供了一种网口状态检测和同步装置,图6为本发明实施例网口状态检测和同步装置结构示意图,如图6所示,所述装置包括:查询模块61、切换模块62,其中,

所述查询模块61,用于查询当前虚拟功能VF网口对应的物理功能PF网口是否为主用网口;

本发明实施例中所述查询模块61具体用于:第一网口驱动发送VF网口同步查询消息到第二网口驱动,查询当前VF网口对应的物理功能PF网口是否为主用网口;其中,所述当前VF网口为当前主用VF网口;所述第一网口驱动为VF网口驱动,所述第二网口驱动为PF网口驱动。

具体的,查询模块61以邮箱通知模式为基础,通过主用VF网口同步查询消息,用来实现VF&PF网口的状态的检测和同步,使得能够当PF网口主备关系发生变化时,VF接口能同步实现倒换;其中,所述VF网口同步查询消息可以采用如下消息形式:XXX_VF_GET_MASTER;其中,XXX表示驱动类型, 如:IXGBE;

所述VF网口同步查询消息的发送端是VF网口的驱动程序,接收端是PF的网口驱动程序。发送端将VF网口同步查询消息投递到接受端的邮箱,接收端在处理完成后再将响应消息投递回发送端的邮箱,以使得发送端能够根据结果值做相应VF端口的倒换/保持操作。

为了防止混淆,要求查询模块61发送请求消息时,一次只能带一个当前主用VF网口对应的PF网口的HW信息,即当前主用VF网口同步查询消息。PF网口驱动根据该HW信息查询PF网口对应的主备状态,在响应消息中携带具体查询结果。所述查询结果可以采用多种方式,例如:所述结果为0表示当前主用VF网口对应的PF网口为主用PF网口,查询结果非0表示当前主用VF网口对应的PF网口为备用网口。

本发明实施例中,所述查询模块61可以周期性、和/或实时查询当前VF网口对应的PF网口是否为主用网口。

本发明实施例中,所述网口状态检测和切换主要应用于一下场景:

场景一:云主机上电时,需要查询哪个VF网口是主用PF网口对应的VF网口,这样后续才能进行正确的收发操作。

场景二:云主机在运行过程中,需要实时感知VF网口对应的底层的PF网口的主备状态,当PF网口发生主备切换以后,VF接口也要相应的发生切换。

场景三:云主机在运行过程中,如果需要进行备VF接口的倒换,则需要判定新的主用VF网口对应的PF网口是否可用。

对于场景二,本发明实施例中,可以采用周期性查询当前VF网口对应的PF网口是否为主用网口,具体的,

云主机上电后,查询模块61控制VF网口驱动程序定时发送XXX_VF_GET_MASTER查询消息到PF网口驱动,查询当前的VF网口对应的PF网口的主备状态。本发明实施例中,所述查询周期可以根据实际的VF收发队列缓冲情况而定,也可以根据其他因素设定。通常,新的主用VF网口对应的报文缓冲区能够缓存几秒左右的报文,因此,可以将所述查询周期定为几秒, 如果在这段时间内VF网口完成主备切换,那么不会造成太大的丢包影响。

对于场景一和场景三,本发明实施例中,查询模块61可以采用实时查询当前VF网口对应的PF网口是否为主用网口,当云主机不确定当前哪一个VF接口主用却又立刻要做关键操作时,查询模块61可以控制VF网口驱动程序直接发起实时查询消息。根据响应结果判断是否可以做VF网口主备倒换操作。

本发明实施例中,查询模块61可以同时采用周期性和实时查询当前VF网口对应的PF网口是否为主用网口。即当云主机上电或云主机在运行过程中需要进行主备VF接口的倒换的情况下,实时查询当前VF网口对应的PF网口是否为主用网口;当云主机正常运行过程中,周期性查询当前VF网口对应的PF网口是否为主用网口。

所述切换模块62,用于根据查询结果,进行VF网口主备状态的切换/保持操作。

本发明实施例中,所述切换模块62具体用于:当前VF网口对应的PF网口为主用网口时,进行VF网口主备状态保持操作;当前VF网口对应的PF网口为非主用用网口时,进行VF网口主备状态切换操作。

本发明实施例中,仅仅是以当前VF网口为主用网口为例,并不限定此范围,在实际应用中,当前VF网口还可以是备用网口,当所述VF网口为备用网口时,只需按照本发明实施例所述网口状态检测和同步方法进行简单替换即可实现。

本发明实施例中,所述装置还包括通信模块63,用于:使用进行切换/保持操作之后的最新的主用VF网口进行外部通信。

图6和中所示的网口状态检测和同步装置中的各处理模块的实现功能,可参照前述网口状态检测和同步方法的相关描述而理解。本领域技术人员应当理解,图6所示的网口状态检测和同步装置中各处理模块的功能可通过运行于处理器上的程序而实现,也可通过具体的逻辑电路而实现,比如:可由中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)、或现场可编程门阵列(FPGA)实现。

在本发明所提供的几个实施例中,应该理解到,所揭露的方法及装置,可以通过其他的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个模块或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的通信连接可以是通过一些网口,设备或模块的间接耦合或通信连接,可以是电性的、机械的或其他形式的。

上述作为分离部件说明的模块可以是、或也可以不是物理上分开的,作为模块显示的部件可以是、或也可以不是物理模块,即可以位于一个地方,也可以分布到多个网络模块上;可以根据实际的需要选择其中的部分或全部模块来实现本实施例方案的目的。

另外,在本发明各实施例中的各功能模块可以全部集成在一个处理模块中,也可以是各模块分别单独作为一个模块,也可以两个或两个以上模块集成在一个模块中;上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

或者,本发明实施例上述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介 质。

本发明实施例中记载的网口状态检测和同步方法、装置只以上述实施例为例,但不仅限于此,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

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