一种虚拟设备间的通信方法及装置
技术领域
本发明涉及通信技术领域,尤其涉及一种虚拟设备间的通信方法及装置。
背景技术
多租户虚拟设备(以下简称“虚拟设备”)是指通过虚拟化技术将一台物理设备划分成多台虚拟设备,每台虚拟设备拥有自己专属的软硬件资源,独立运行,独立转发,独立提供业务。为了提高安全性,不同虚拟设备之间需要相互隔离,不能直接通信。
现有技术中,虚拟设备之间通过在业务端口中***外部模块和线缆进行通信,不仅不能充分利用内部带宽,还占用了业务端口,影响业务处理效率,并且额外增加的模块、端口、线缆等设备导致成本升高。
发明内容
有鉴于此,本发明提供一种虚拟设备间的通信方法及装置来解决现有技术中虚拟设备之间占用业务端口通信的问题。
具体地,本发明是通过如下技术方案实现的:
本发明提供一种虚拟设备间的通信方法,所述方法应用于物理设备中的虚拟设备,所述方法包括:
在转发第一报文的出端口为本地第一互联端口的出方向时,将所述第一报文环回至所述第一互联端口的入方向,之后将所述第一报文从所述第一互联端口的入方向镜像至对端虚拟设备的第二互联端口的出方向,所述第一互联端口连接对端虚拟设备的第二互联端口;
在对端虚拟设备将第二报文镜像至本地第一互联端口的出方向时,将第二报文环回到第一互联端口的入方向,为第二报文确定转发的出端口并进行转发。
进一步的,所述将第一报文从第一互联端口的入方向镜像至对端虚拟设备的第二互联端口的出方向,包括:
在本地找到匹配项为第一互联端口的镜像策略,所述镜像策略的优先级高于虚拟设备之间的隔离规则的优先级,所述镜像策略还包括操作项,所述操作项为将第一报文镜像至对端虚拟设备的第二互联端口的出方向;
基于所述镜像策略的操作项将第一报文镜像至对端虚拟设备的第二互联端口的出方向。
进一步的,转发第一报文的出端口通过以下步骤确定:
在本地找到第一报文匹配的转发表项;
将转发表项的出端口确定为转发第一报文的出端口。
进一步的,转发第一报文的出端口通过以下步骤确定:
识别所述第一报文为所述物理设备上的CPU发出的报文时,将本地第一互联端口的出方向指定为转发第一报文的出端口。
进一步的,所述方法还包括:
所述转发第一报文的出端口为本地第一互联端口的出方向是按照负载分担方式从第一互联端口组选择出的;
所述第二报文是由对端虚拟设备从第二互联端口的入方向镜像至本设备的;其中,对端虚拟设备是在按照负载分担方式从第二互联端口组中选择出从第二互联端口的出方向发送第二报文时执行镜像操作的。
基于相同的构思,本发明还提供一种虚拟设备间的通信装置,所述装置应用于物理设备中的虚拟设备,所述装置包括:
镜像单元,用于在转发第一报文的出端口为本地第一互联端口的出方向时,将所述第一报文环回至所述第一互联端口的入方向,之后将所述第一报文从所述第一互联端口的入方向镜像至对端虚拟设备的第二互联端口的出方向,所述第一互联端口连接对端虚拟设备的第二互联端口;
转发单元,用于在对端虚拟设备将第二报文镜像至本地第一互联端口的出方向时,将第二报文环回到第一互联端口的入方向,为第二报文确定转发的出端口并进行转发。
进一步的,所述镜像单元,具体用于在本地找到匹配项为第一互联端口的镜像策略,所述镜像策略的优先级高于虚拟设备之间的隔离规则的优先级,所述镜像策略还包括操作项,所述操作项为将第一报文镜像至对端虚拟设备的第二互联端口的出方向;基于所述镜像策略的操作项将第一报文镜像至对端虚拟设备的第二互联端口的出方向。
进一步的,所述装置还包括:
第一确定单元,用于在本地找到第一报文匹配的转发表项;将转发表项的出端口确定为转发第一报文的出端口。
进一步的,所述装置还包括:
第二确定单元,用于识别所述第一报文为所述物理设备上的CPU发出的报文时,将本地第一互联端口的出方向指定为转发第一报文的出端口。
进一步的,所述装置还包括:
端口选择单元,用于按照负载分担方式从本地第一互联端口组选择第一互联端口的出方向作为转发所述第一报文的出端口;
所述转发单元中的所述第二报文是由对端虚拟设备从第二互联端口的入方向镜像至本设备的;其中,对端虚拟设备是在按照负载分担方式从第二互联端口组中选择出从第二互联端口的出方向发送第二报文时执行镜像操作的。
由此可见,本发明通过在转发第一报文的出端口为本地第一互联端口的出方向时,将所述第一报文环回至所述第一互联端口的入方向,之后将所述第一报文从所述第一互联端口的入方向镜像至对端虚拟设备的第二互联端口的出方向,再经过环回机制,使报文转发到该互联端口的入方向。因此本发明通过内部通道实现多租户虚拟设备之间的通信,提高了内部带宽的利用率,摆脱外部线缆的组网限制,使得部署更加灵活可靠,并且降低了硬件成本。
附图说明
图1是本发明一种示例性实施方式中的一种虚拟设备间的通信方法的处理流程图;
图2是本发明一种示例性实施方式中的多租户虚拟设备的连接示意图;
图3本发明一种示例性实施方式中的虚拟设备的报文处理流程图;
图4a本发明一种示例性实施方式中的虚拟设备间的通信装置所在设备的硬件结构图;
图4b本发明一种示例性实施方式中的一种虚拟设备间的通信装置的逻辑结构图。
具体实施方式
为了解决现有技术存在的问题,本发明提供了一种虚拟设备间的通信方法及装置,通过在转发第一报文的出端口为本地第一互联端口的出方向时,将所述第一报文环回至所述第一互联端口的入方向,之后将所述第一报文从所述第一互联端口的入方向镜像至对端虚拟设备的第二互联端口的出方向,再经过环回机制,使报文转发到该互联端口的入方向。因此本发明通过互联端口之间的内部通道实现多租户虚拟设备之间的通信,提高了内部带宽的利用率,摆脱外部线缆的组网限制,使得部署更加灵活可靠,并且降低了硬件成本。
请参考图1,是本发明一种示例性实施方式中的一种虚拟设备间的通信方法的处理流程图,该方法应用于物理设备中的虚拟设备,该物理设备中至少包括两个虚拟设备,物理设备会为用户提供设置功能,即如果用户需要本地虚拟设备和对端虚拟设备进行通信,则可以在该物理设备中进行设置,具体来讲,可以预先在本地虚拟设备与对端虚拟设备中分别设置互为邻居关系的第一互联端口和第二互联端口,所述方法包括:
步骤101、在转发第一报文的出端口为本地第一互联端口的出方向时,将第一报文环回至第一互联端口的入方向;
在本实施例中,本地虚拟设备在转发第一报文的出端口为本地的第一互联端口出方向时,可以将所述第一报文环回至所述第一互联端口的入方向,其中所述出方向指报文从虚拟设备向外发的方向;入方向指报文从外向虚拟设备进入的方向;作为一个实施例,这里的环回是指将第一报文从所述第一互联端口的出方向先转发到物理设备的链路层单元(例如,mac/phy芯片)时,判断该第一报文的出端口是否为互联端口,若是,则从链路层单元将第一报文回传到所述第一互联端口的入方向;若否,则将第一报文按照正常流程从第一互联端口的出方向查表转发。现有技术中,由于出方向的报文在链路层被设置只能外发的指令,因此出方向的报文只能发往物理设备以外的设备,所以才需要在出端口上通过外接电缆来实现虚拟设备之间的交互。而本发明可以通过环回机制将报文从互联端口的出方向回传到入方向,可以进一步通过虚拟设备之间的内部通道进行转发,从而节省了外接电缆的开销,并能够提高内部带宽的利用率。
步骤102、将第一报文从第一互联端口的入方向镜像至对端虚拟设备的第二互联端口的出方向;
在本实施例中,可以预先在本地虚拟设备上下发镜像策略,镜像策略包括匹配项和操作项,其中匹配项为源端口为第一互联端口的入方向;操作项为将第一报文镜像至对端虚拟设备的第二互联端口的出方向,为保证报文能成功镜像到对端虚拟设备,可以该镜像策略的优先级高于虚拟设备之间的隔离规则的优先级。当本地虚拟设备的第一互联端口的入方向收到该第一报文后,可以在本地找到匹配项为第一互联端口的镜像策略,然后基于所述镜像策略的操作项将第一报文镜像至对端虚拟设备的第二互联端口的出方向;然后将第一互联端口处的第一报文丢弃。
对端虚拟设备从第二互联端口的出方向接到的第一报文后,可以进一步将第一报文环回到该第二互联端口的入方向,具体环回方法与本地虚拟设备中的环回方法原理相同,此处不再赘述。
同理,在对端虚拟设备将第二报文镜像至本地第一互联端口的出方向时,本地虚拟设备可以将第二报文环回到第一互联端口的入方向,若第二报文的目的地址非互联端口的地址,则为第二报文确定转发的出端口并进行转发。
在本发明可选的实施例中,本地虚拟设备为第一报文确定出端口具体是,先在本地通过源端口找到第一报文匹配的转发表项;然后将该转发表项中的出端口确定为转发第一报文的出端口。
此外,若第一报文是由CPU发出的直接指定出端口是所述第一互联端口时,由于第一报文不在交换芯片中进行查表转发,无法应用镜像规则。因此,当本地虚拟设备识别出所述第一报文为所述物理设备上的CPU发出的协议报文时,可以将本地第一互联端口的出方向指定为转发第一报文的出端口;经过转发流程后将该第一报文从第一互联端口的出方向环回至第一互联端口的入方向。
在本发明可选的实施例中,本地虚拟设备可将本地的包括第一互联端口在内的多个互联端口聚合成第一互联端口组,同理,对端虚拟设备会将包括第二互联端口在内的多个互联端口聚合成第二互联端口组,本地的每个互联端口组在对端有唯一对应的互联端口组。因此当第一互联端口组收到发往第二互联端口组的报文时,可以通过负载分担方式从第一互联端口组中选择第一互联端口进行报文转发,将第一报文环回至所述第一互联端口的入方向,之后将第一报文从第一互联端口的入方向镜像至对端虚拟设备的第二互联端口的出方向。
当对端虚拟设备发送第二报文时,可以按照负载分担方式从第二互联端口组中选择出从第二互联端口的出方向作为第二报文的出端口,经过环回后,将第二报文第二互联端口的入方向镜像至本地虚拟设备的第一互联端口组中的第一互联端口的出方向。因此本发明可以通过负载均衡提高虚拟设备之间的带宽的利用率和报文的转发效率。
为使本发明的目的、技术方案及优点更加清楚明白,下面结合图2对本发明的方案作进一步地详细说明。
请参见图2是本发明实施例中多租户虚拟设备的连接示意图,其中物理设备的CPU可包括主控板CPU和多个单板CPU,例如单板1CPU到单板NCPU,每块板卡上的CPU都与多租户虚拟设备MDC1、MDC2连接,其中,每个MDC的既可以由一个单板的转发芯片构成,也可以是由多个单板的转发芯片构成,并且一个转发芯片的端口只能属于一个MDC,如图2所示,所示MDC1上设置端口P1和P2,MDC2上设置端口P3和P4,所述端口P1、P2、P3、P4均为交换网板上的物理端口。
在现有技术中,若需要MDC1与MDC2进行通信,则需要将MDC1与MDC2上的物理端口通过物理线路连接起来,而本发明的实施例中,可以将交换网板上的原本需要进行物理线路连接的端口设置成互联端口,以使MDC之间的互联端口通过内部通道进行通信,从而避免外接线缆。
在本实施例中,若MDC之间存在多个互联端口的对应关系,其中多个互联端口的对应关系可以是本地MDC的一个互联端口对应对端MDC的多个互联端口,或者是本地MDC的多个互联端口对应对端MDC的一个互联端口;又或者是本地MDC的多个互联端口对应对端MDC的多个互联端口;那么可以将这些互联端口聚合成为互联端口组,其中两端MDC的互联端口组中的端口数量可以不一样。例如,若MDC1的端口P1与MDC2的端口P3为互联端口,MDC1的端口P2与MDC2的端口P4为互联端口,则可以将端口P1和端口P2聚合为MDC1上的互联端口组1;将端口P3和端口P4聚合为MDC2上的互联端口组2。互联端口组收到报文时,可以根据负载分担的方式,选出一个互联端口承担报文转发工作。具体的负载分担方法与本发明的主题无关,此处不再详细说明。
请参考图3的报文处理流程,其中包括步骤:
步骤301、接收报文,确定报文的出端口;
在本实施例中,当MDC1通过自身的端口收到报文的是数据报文时,可以根据数据报文的目的地址查找二层转发表/三层转发表,确定该数据报文的出端口在MDC2上,由于MDC1与MDC2之间预先设置了互联端口组1和互联端口组2,则MDC1可以确定本端的出端口为互联端口组1中的互联端口,例如,可以根据负载分担的方式选择端口P1作为该报文的出端口。
此外,如果该报文是1从CPU收到的指定的出端口的协议报文,则该报文没有转发表项,则根据CPU为该报文指定的出端口进行转发。
步骤302、将报文从端口的出方向环回到端口的入方向;
本实施例中,MDC1确定报文的出端口为互联端口P1时,可以在转发芯片上完成所有转发过程后,从互联端口P1出去前,将该报文进行链路层环回到该互联端口P1的入方向。如图2中端口P1、端口P3处的双向箭头所示。
步骤303、将该报文镜像到对端互联端口,并丢弃本端的报文;
当报文到达互联端口P1的入方向后,根据匹配项查找源端口为P1的入方向的镜像策略,该镜像策略记载的操作项具体为将报文镜像到互联端口P3的出方向;从而再根据该镜像策略,复制该报文到互联端口P3的出方向;然后根据预先设置的丢弃策略,将MDC1的互联端口P1上的报文丢弃。
步骤304、判断该报文的出端口是否为互联端口,若是,则转步骤302;若否,则转步骤305;
当MDC2从互联端口P3的出方向收到该报文后,可以根据该报文的目的地址查找二层转发表/三层转发表,确定该报文的出端口是否为互联端口。
步骤305、将该报文从该互联端口的出方向转发出去,并结束。
当确定该报文的出端口为互联端口时,重复步骤301的操作,直至将该报文转发到目标端口;当确定该报文的出端口非互联端口时,可以将该报文根据转发表项转发到目标端口。
因此,本发明可以在不需要连线的条件下通过内部通道进行虚拟设备间的互通。
基于相同的构思,本发明还提供一种虚拟设备间的通信装置,该装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,本发明的虚拟设备间的通信装置作为一个逻辑意义上的装置,是通过其所在设备的CPU将存储器中对应的计算机程序指令读取后运行而成。
请参考图4a,是本发明一种示例性实施方式中的一种虚拟设备间的通信装置400,所述装置应用于物理设备中的虚拟设备,该装置基本运行环境包括CPU,存储器、网络接口、交换芯片以及其他硬件,从逻辑层面上来看,该装置400的逻辑结构如图4b所示,其中包括:
镜像单元401,用于在转发第一报文的出端口为本地第一互联端口的出方向时,将所述第一报文环回至所述第一互联端口的入方向,之后将所述第一报文从所述第一互联端口的入方向镜像至对端虚拟设备的第二互联端口的出方向,所述第一互联端口连接对端虚拟设备的第二互联端口;
转发单元402,用于在对端虚拟设备将第二报文镜像至本地第一互联端口的出方向时,将第二报文环回到第一互联端口的入方向,为第二报文确定转发的出端口并进行转发。
可选的,所述镜像单元401,具体用于在本地找到匹配项为第一互联端口的镜像策略,所述镜像策略的优先级高于虚拟设备之间的隔离规则的优先级,所述镜像策略还包括操作项,所述操作项为将第一报文镜像至对端虚拟设备的第二互联端口的出方向;基于所述镜像策略的操作项将第一报文镜像至对端虚拟设备的第二互联端口的出方向。
可选的,所述装置还包括:
第一确定单元403,用于在本地找到第一报文匹配的转发表项;将转发表项的出端口确定为转发第一报文的出端口。
可选的,所述装置还包括:
第二确定单元404,用于识别所述第一报文为所述物理设备上的CPU发出的报文时,将本地第一互联端口的出方向指定为转发第一报文的出端口。
可选的,所述装置还包括:
端口选择单元405,用于按照负载分担方式从本地第一互联端口组选择第一互联端口的出方向作为转发所述第一报文的出端口;
所述转发单元402中的所述第二报文是由对端虚拟设备从第二互联端口的入方向镜像至本设备的;其中,对端虚拟设备是在按照负载分担方式从第二互联端口组中选择出从第二互联端口的出方向发送第二报文时执行镜像操作的。
由此可见,本发明通过在转发第一报文的出端口为本地第一互联端口的出方向时,将所述第一报文环回至所述第一互联端口的入方向,之后将所述第一报文从所述第一互联端口的入方向镜像至对端虚拟设备的第二互联端口的出方向,再经过环回机制,使报文转发到该互联端口的入方向。因此本发明通过内部通道实现多租户虚拟设备之间的通信,提高了内部带宽的利用率,摆脱外部线缆的组网限制,使得部署更加灵活可靠,并且降低了硬件成本。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。