传输报文的方法、网络边缘设备与报文传输系统转让专利

申请号 : CN201810594640.8

文献号 : CN108989248B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 赵崇日

申请人 : 华为技术有限公司

摘要 :

本申请提供一种传输报文的方法,包括:第一虚拟机的网络边缘设备判断第一容器与第二容器之间的通信链路中是否具有不支持对第一报文进行vxlan封装的接入交换机,第一报文是针对第二容器的vxlan报文,且是对第一容器的IP报文进行vxlan封装产生的;若否,对第一报文进行外层封装,产生第二报文,将第二报文发送至接入交换机,外层封装与vxlan封装为不同类型的封装。该方法在通信链路具有不支持对vxlan报文进行vxlan封装的接入交换机时,对报文的传输路径进行自动配置,对来自网络边缘设备的vxlan报文进行外层封装后发送至接入交换机,使得通信链路能够传输对vxlan报文进行vxlan封装后产生的报文。

权利要求 :

1.一种传输报文的方法,其特征在于,包括:

第一虚拟机的网络边缘设备构造第三报文,所述第三报文为vxlan报文;

所述网络边缘设备将所述第三报文发送至接入交换机,所述接入交换机用于对所述第三报文进行vxlan封装,并用于将经过vxlan封装的第三报文发送至第二虚拟机;

所述网络边缘设备根据是否接收到所述第二虚拟机发送的针对所述第三报文的回应报文,判断所述第一虚拟机上的第一容器与第二虚拟机上的第二容器之间的通信链路中是否具有至少一个不支持对第一报文进行vxlan封装的接入交换机,其中,所述第一报文是针对所述第二容器的vxlan报文,所述第一报文是所述网络边缘设备对所述第一容器的IP报文进行vxlan封装而产生的;

若所述通信链路中具有至少一个不支持对第一报文进行vxlan封装的接入交换机,所述网络边缘设备对所述第一报文进行外层封装以产生第二报文,并将所述第二报文发送至接入交换机,其中,所述外层封装与所述vxlan封装为不同类型的封装,所述接入交换机设置在所述通信链路中,且与所述第一虚拟机连接。

2.根据权利要求1所述的方法,其特征在于,所述若所述通信链路中具有至少一个不支持对第一报文进行vxlan封装的接入交换机,所述网络边缘设备对所述第一报文进行外层封装以产生第二报文,并将所述第二报文发送至接入交换机,具体包括:若所述网络边缘设备未接收到所述第二虚拟机发送的针对所述第三报文的回应报文,所述网络边缘设备对所述第一报文进行外层封装以产生第二报文,并将所述第二报文发送至接入交换机。

3.根据权利要求2所述的方法,其特征在于,若所述网络边缘设备未接收到所述第二虚拟机发送的针对所述第三报文的回应报文,所述第一虚拟机判断所述通信链路中是否具有至少一个不支持对所述第一报文进行vxlan封装的接入交换机,包括:所述网络边缘设备构造第四报文,所述第四报文为依次经过vxlan封装与所述外层封装的报文;

所述网络边缘设备将所述第四报文发送至所述接入交换机,所述接入交换机用于对所述第四报文进行vxlan封装,并用于将经过vxlan封装的第四报文发送至所述第二虚拟机;

所述网络边缘设备根据是否接收到所述第二虚拟机发送的针对所述第四报文的回应报文,判断所述第一虚拟机上的第一容器与第二虚拟机上的第二容器之间的通信链路中是否具有至少一个不支持对第一报文进行vxlan封装的接入交换机;

所述若所述通信链路中具有至少一个不支持对第一报文进行vxlan封装的接入交换机,所述网络边缘设备对所述第一报文进行外层封装以产生第二报文,并将所述第二报文发送至接入交换机,具体包括:若所述网络边缘设备接收到所述第二虚拟机发送的针对所述第四报文的回应报文,所述网络边缘设备对所述第一报文进行外层封装以产生第二报文,并将所述第二报文发送至接入交换机。

4.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:所述网络边缘设备接收第五报文,所述第五报文为依次经过所述外层封装与vxlan封装的报文;

所述网络边缘设备对所述第五报文依次进行解所述外层封装与vxlan解封装,获得所述第五报文对应的原始报文。

5.根据权利要求1至3中任一项所述的方法,其特征在于,所述第一报文与所述第二报文中携带的源网络之间互连的协议IP地址相同。

6.根据权利要求1至3中任一项所述的方法,其特征在于,所述外层封装至少包括通用路由封装GRE、网络协议安全性封装IPSec封装与IPv4 over IPv4封装中的任意一种。

7.一种网络边缘设备,其特征在于,所述网络边缘设备设置在第一虚拟机上,包括:探测进程,用于构造第三报文,所述第三报文为vxlan报文;

所述探测进程,还用于将所述第三报文发送至接入交换机,所述接入交换机用于对所述第三报文进行vxlan封装,并用于将经过vxlan封装的第三报文发送至第二虚拟机;

所述探测进程,还用于根据是否接收到所述第二虚拟机发送的针对所述第三报文的回应报文,判断第一虚拟机上的第一容器与第二虚拟机上的第二容器之间的通信链路中是否具有至少一个不支持对第一报文进行vxlan封装的接入交换机;

vxlan封装/解封装模块,用于对所述第一容器的IP报文进行vxlan封装,产生所述第一报文;

外层封装/解封装模块,用于若所述通信链路中具有至少一个不支持对第一报文进行vxlan封装的接入交换机,对所述第一报文进行外层封装以产生第二报文,并将所述第二报文发送至接入交换机,其中,所述外层封装与所述vxlan封装为不同类型的封装,所述接入交换机设置在所述通信链路中,且与所述第一虚拟机连接。

8.根据权利要求7所述的网络边缘设备,其特征在于,

所述外层封装/解封装模块,具体用于:若所述探测进程未接收到所述第二虚拟机发送的针对所述第三报文的回应报文,对所述第一报文进行外层封装以产生第二报文,并将所述第二报文发送至接入交换机。

9.根据权利要求8所述的网络边缘设备,其特征在于,

所述探测进程,还用于构造第四报文,所述第四报文为依次经过vxlan封装与所述外层封装的报文;

所述探测进程,还用于将所述第四报文发送至所述接入交换机,所述接入交换机用于对所述第四报文进行vxlan封装,并用于将经过vxlan封装的第四报文发送至所述第二虚拟机;

所述探测进程,还用于根据是否接收到所述第二虚拟机发送的针对所述第四报文的回应报文,判断所述第一虚拟机上的第一容器与第二虚拟机上的第二容器之间的通信链路中是否具有至少一个不支持对第一报文进行vxlan封装的接入交换机;

所述外层封装/解封装模块,具体用于:若所述探测进程接收到所述第二虚拟机发送的针对所述第四报文的回应报文,对所述第一报文进行外层封装以产生第二报文,并将所述第二报文发送至接入交换机。

10.根据权利要求7至9中任一项所述的网络边缘设备,其特征在于,

所述外层封装/解封装模块,还用于接收第五报文,所述第五报文为依次经过所述外层封装与vxlan封装的报文;

所述外层封装/解封装模块,还用于对所述第五报文进行解所述外层封装;

所述vxlan封装/解封装模块,还用于对经过所述解外层封装的第五报文进行vxlan解封装,获得所述第五报文对应的原始报文。

11.根据权利要求7至9中任一项所述的网络边缘设备,其特征在于,所述第一报文与所述第二报文中携带的源网络之间互连的协议IP地址相同。

12.根据权利要求7至9中任一项所述的网络边缘设备,其特征在于,所述外层封装至少包括通用路由封装GRE、网络协议安全性封装IPSec封装与IPv4 over IPv4封装中的任意一种。

13.一种网络边缘设备,其特征在于,包括存储器、处理器与接口,

存储器,用于存储程序;

处理器,用于执行该存储器中存储的程序,当该存储器中的程序被执行时,该处理器,用于构造第三报文,所述第三报文为vxlan报文;

所述处理器,还用于将所述第三报文发送至接入交换机,所述接入交换机用于对所述第三报文进行vxlan封装,并用于将经过vxlan封装的第三报文发送至第二虚拟机;

所述处理器,还用于根据是否接收到所述第二虚拟机发送的针对所述第三报文的回应报文,判断第一虚拟机上的第一容器与第二虚拟机上的第二容器之间的通信链路中是否具有至少一个不支持对第一报文进行vxlan封装的接入交换机;

所述处理器,还用于对所述第一容器的IP报文进行vxlan封装,产生所述第一报文;

所述处理器,还用于若所述通信链路中具有至少一个不支持对第一报文进行vxlan封装的接入交换机,对所述第一报文进行外层封装以产生第二报文;

接口,用于将所述第二报文发送至接入交换机,

其中,所述外层封装与所述vxlan封装为不同类型的封装,所述接入交换机设置在所述通信链路中,且与所述第一虚拟机连接。

14.根据权利要求13所述的网络边缘设备,其特征在于,

所述处理器,还用于若未接收到所述第二虚拟机发送的针对所述第三报文的回应报文,对所述第一报文进行外层封装以产生第二报文,并将所述第二报文发送至接入交换机。

15.根据权利要求14所述的网络边缘设备,其特征在于,

所述处理器,还用于构造第四报文,所述第四报文为依次经过vxlan封装与所述外层封装的报文;

所述处理器,还用于将所述第四报文发送至所述接入交换机,所述接入交换机用于对所述第四报文进行vxlan封装,并用于将经过vxlan封装的第四报文发送至所述第二虚拟机;

所述处理器,还用于根据是否接收到所述第二虚拟机发送的针对所述第四报文的回应报文,判断所述第一虚拟机上的第一容器与第二虚拟机上的第二容器之间的通信链路中是否具有至少一个不支持对第一报文进行vxlan封装的接入交换机;

所述处理器,还用于若接收到所述第二虚拟机发送的针对所述第四报文的回应报文,对所述第一报文进行外层封装以产生第二报文,并将所述第二报文发送至接入交换机。

16.根据权利要求13至15中任一项所述的网络边缘设备,其特征在于,所述接口,还用于接收第五报文,所述第五报文为依次经过所述外层封装与vxlan封装的报文;

所述处理器,还用于对所述第五报文进行解所述外层封装;

所述处理器,还用于对经过所述解外层封装的第五报文进行vxlan解封装,获得所述第五报文对应的原始报文。

17.根据权利要求13至15中任一项所述的网络边缘设备,其特征在于,所述第一报文与所述第二报文中携带的源网络之间互连的协议IP地址相同。

18.根据权利要求13至15中任一项所述的网络边缘设备,其特征在于,所述外层封装至少包括通用路由封装GRE、网络协议安全性封装IPSec封装与IPv4 over IPv4封装中的任意一种。

19.一种报文传输系统,其特征在于,所述报文传输系统包括:第一虚拟机、第二虚拟机、接入交换机,所述第一虚拟机上部署有第一容器和网络边缘设备,所述第二虚拟机上部署有第二容器;

所述网络边缘设备,用于构造第三报文,所述第三报文为vxlan报文;

所述网络边缘设备,还用于将所述第三报文发送至接入交换机,所述接入交换机用于对所述第三报文进行vxlan封装,并用于将经过vxlan封装的第三报文发送至所述第二虚拟机;

所述网络边缘设备,还用于根据是否接收到所述第二虚拟机发送的针对所述第三报文的回应报文,判断所述第一虚拟机上的第一容器与第二虚拟机上的第二容器之间的通信链路中是否具有至少一个不支持对第一报文进行vxlan封装的接入交换机;

所述网络边缘设备,还用于若所述通信链路中具有至少一个不支持对第一报文进行vxlan封装的接入交换机,对所述第一报文进行外层封装以产生第二报文,并将所述第二报文发送至接入交换机;

所述接入交换机,用于对所述第二报文进行vxlan封装,并将经过vxlan封装的所述第二报文发送至所述第二虚拟机,其中,所述外层封装与所述vxlan封装为不同类型的封装,所述接入交换机设置在所述通信链路中,且与所述第一虚拟机连接。

20.根据权利要求19所述的报文传输系统,其特征在于,

所述网络边缘设备,还用于若未接收到所述第二虚拟机发送的针对所述第三报文的回应报文,对所述第一报文进行外层封装以产生第二报文,并将所述第二报文发送至接入交换机。

21.根据权利要求20所述的报文传输系统,其特征在于,

所述网络边缘设备,还用于构造第四报文,所述第四报文为依次经过vxlan封装与所述外层封装的报文;

所述网络边缘设备,还用于将所述第四报文发送至所述接入交换机,所述接入交换机用于对所述第四报文进行vxlan封装,并用于将经过vxlan封装的第四报文发送至所述第二虚拟机;

所述网络边缘设备,还用于根据是否接收到所述第二虚拟机发送的针对所述第四报文的回应报文,判断所述第一虚拟机上的第一容器与第二虚拟机上的第二容器之间的通信链路中是否具有至少一个不支持对第一报文进行vxlan封装的接入交换机;

所述网络边缘设备,还用于若接收到所述第二虚拟机发送的针对所述第四报文的回应报文,对所述第一报文进行外层封装以产生第二报文,并将所述第二报文发送至接入交换机。

22.根据权利要求19至21中任一项所述的报文传输系统,其特征在于,所述网络边缘设备,还用于接收第五报文,所述第五报文为依次经过所述外层封装与vxlan封装的报文;

所述网络边缘设备,还用于对所述第五报文依次进行解所述外层封装与vxlan解封装,获得所述第五报文对应的原始报文。

23.根据权利要求19至21中任一项所述的报文传输系统,其特征在于,所述第一报文与所述第二报文中携带的源网络之间互连的协议IP地址相同。

24.根据权利要求19至21中任一项所述的报文传输系统,其特征在于,所述外层封装至少包括通用路由封装GRE、网络协议安全性封装IPSec封装与IPv4 over IPv4封装中的任意一种。

说明书 :

传输报文的方法、网络边缘设备与报文传输系统

技术领域

[0001] 本申请涉及信息技术领域,并且更具体地,涉及信息技术领域中的传输报文的方法、网络边缘设备与报文传输系统。

背景技术

[0002] 容器作为一种新兴的虚拟化方式,与传统的虚拟化方式相比具有众多的优势。在数据中心中,容器部署在数据中心的若干虚拟机上。一种用于容器通信的报文传输系统包括位于不同虚拟机上的至少两个容器和至少两个容器之间的网络设备。
[0003] 在该报文传输系统中,不同虚拟机上的至少两个容器的通信需要通过其所在的虚拟机。具体地,源端容器将报文发送给源端容器所在的源端虚拟机上的网络边缘设备,由源端虚拟机的网络边缘设备将源端容器报文转发至目的端的网络边缘设备,再由目的端网络边缘设备将报文转发至目的端容器,其中源端虚拟机的网络边缘设备通过至少一个接入交换机将报文转发至目的端虚拟机。容器之前通过可扩展虚拟局域网(Virtual Extensible LAN,vxlan)网络通信,当虚拟机之间也通过vxlan网络进行通信时,需要对容器的报文进行两层vxlan封装,具体如下。
[0004] 源端虚拟机上的源端容器向目的端虚拟机上的目的端容器发送报文,该报文首先经过源端虚拟机上的网络边缘设备,该网络边缘设备对该报文进行vxlan封装,再将经过vxlan封装的报文发送至接入交换机,由接入交换机再次对该vxlan报文进行vxlan封装,接入交换机将连续经过两次vxlan封装的该报文发送至目的端虚拟机上的目的端容器。
[0005] 然而,在报文传输系统中,可能存在某两个虚拟机上的容器之间的通信链路中具有至少一个不支持对vxlan报文进行vxlan封装的接入交换机,例如,当网络边缘设备将经过vxlan封装的报文发送至接入交换机时,若该接入交换机不支持对vxlan报文进行vxlan封装,此时,接入交换机识别到该报文已经进行过vxlan封装,便会对该报文进行解封装,或者,直接丢弃该报文,进而导致容器之间的通信链路不通。

发明内容

[0006] 本申请提供一种传输报文的方法,该方法能够在容器之间的通信链路具有至少一个不支持对vxlan报文进行vxlan封装的接入交换机时,通过对报文的传输路径进行自动配置,从而导通运行在不同计算设备上的容器之间的通信链路,使得该通信链路能够传输对vxlan报文进行vxlan封装后产生的报文。
[0007] 第一方面,提供了一种传输报文的方法,包括:第一虚拟机的网络边缘设备判断该第一虚拟机上的第一容器与第二虚拟机上的第二容器之间的通信链路中是否具有至少一个不支持对第一报文进行vxlan封装的接入交换机,其中,该第一报文是针对该第二容器的vxlan报文,该第一报文是该网络边缘设备对该第一容器的IP报文进行vxlan封装而产生的;若该通信链路中具有至少一个不支持对第一报文进行vxlan封装的接入交换机,该网络边缘设备对该第一报文进行外层封装以产生第二报文,并将该第二报文发送至接入交换机,该接入交换机用于对该第二报文进行vxlan封装,并用于将经过vxlan封装的该第二报文发送至第二虚拟机,其中,该外层封装与该vxlan封装为不同类型的封装,该接入交换机设置在该通信链路中,且与该第一虚拟机连接。
[0008] 通过在网络边缘设备中配置探测进程、vxlan封装/解封装模块与外层封装/解封装模块,并通过探测进程判断运行在不同计算设备上的容器之间的通信链路是否具有至少一个不支持对vxlan报文进行vxlan封装的接入交换机,在该通信链路中具有不支持对vxlan报文进行vxlan封装的接入交换机时,通过对发送端容器输出的IP报文的传输路径进行自动配置,使得该IP报文依次经过vxlan封装与外层封装后到达接入交换机,再由接入交换机将依次经过vxlan封装与外层封装的IP报文发送至接收端容器。
[0009] 本申请提供的传输报文的方法能够在容器之间的通信链路具有至少一个不支持对vxlan报文进行vxlan封装的接入交换机时,通过对报文的传输路径进行自动配置,对来自网络边缘设备的vxlan报文进行外层封装后发送至接入交换机,使得该通信链路能够传输对vxlan报文进行vxlan封装后产生的报文。
[0010] 结合第一方面,在第一方面的第一种实现方式中,该第一虚拟机的网络边缘设备判断该第一虚拟机上的第一容器与第二虚拟机上的第二容器之间的通信链路中是否具有至少一个不支持对第一报文进行vxlan封装的接入交换机,包括:该网络边缘设备构造第三报文,该第三报文为vxlan报文;该网络边缘设备将该第三报文发送至该接入交换机,该接入交换机用于对该第三报文进行vxlan封装,并用于将经过vxlan封装的第三报文发送至该第二虚拟机;该网络边缘设备根据是否接收到该第二虚拟机发送的针对该第三报文的回应报文,判断该第一虚拟机上的第一容器与第二虚拟机上的第二容器之间的通信链路中是否具有至少一个不支持对第一报文进行vxlan封装的接入交换机;该若通信链路中具有至少一个不支持对第一报文进行vxlan封装的接入交换机,该网络边缘设备对该第一报文进行外层封装以产生第二报文,并将该第二报文发送至接入交换机,具体包括:若该网络边缘设备未接收到该第二虚拟机发送的针对该第三报文的回应报文,该网络边缘设备对该第一报文进行外层封装以产生第二报文,并将该第二报文发送至接入交换机。
[0011] 结合第一方面的第一种实现方式,在第一方面的第二种实现方式中,该第三报文可以是网络边缘设备中的探测进程构造的,即,该探测进程在对该构造该第三报文时,便完成了对该第三报文的vxlan封装。
[0012] 结合第一方面的第一种实现方式,在第一方面的第三种实现方式中,该第三报文还可以是由网络边缘设备中的vxlan封装/解封装模块对探测进程构造的探测报文进行vxlan封装生成的。
[0013] 通过向第二虚拟机发送经过vxlan嵌套封装的第三报文,当第一虚拟机成功接收到第二虚拟机发送的针对第三报文的回应报文时,网络边缘设备确定第一虚拟机上运行的容器与第二虚拟机上运行的容器之间的通信链路具有至少一个不支持对vxlan报文进行vxlan封装的接入交换机;否则,当第一虚拟机未能成功接收到第二虚拟机发送的针对第三报文的回应报文时,网络边缘设备确定第一虚拟机上运行的容器与第二虚拟机上运行的容器之间的通信链路中包括的接入交换支持对vxlan报文进行vxlan封装。
[0014] 通过对容器之间的通信链路中是否包括不支持对vxlan报文进行vxlan封装的接入交换机进行判断,使得网络边缘设备能够根据判断结果,灵活地确定是否对第一报文进行外层封装,从而在确定无需对第一报文进行外层封装时,能够有效地节省信令开销,并且能够节省第一报文的传输时延。
[0015] 结合第一方面的第一种至第三种实现方式,在第一方面的第四种实现方式中,若该网络边缘设备未接收到该第二虚拟机发送的针对该第三报文的回应报文,该第一虚拟机判断该通信链路中是否具有至少一个不支持对该第一报文进行vxlan封装的接入交换机,包括:该网络边缘设备构造第四报文,该第四报文为依次经过vxlan封装与该外层封装的报文;该网络边缘设备将该第四报文发送至该接入交换机,该接入交换机用于对该第四报文进行vxlan封装,并用于将经过vxlan封装的第四报文发送至该第二虚拟机;该网络边缘设备根据是否接收到该第二虚拟机发送的针对该第四报文的回应报文,判断该第一虚拟机上的第一容器与第二虚拟机上的第二容器之间的通信链路中是否具有至少一个不支持对第一报文进行vxlan封装的接入交换机;该若该通信链路中具有至少一个不支持对第一报文进行vxlan封装的接入交换机,该网络边缘设备对该第一报文进行外层封装以产生第二报文,并将该第二报文发送至接入交换机,具体包括:若该网络边缘设备接收到该第二虚拟机发送的针对该第四报文的回应报文,该网络边缘设备对该第一报文进行外层封装以产生第二报文,并将该第二报文发送至接入交换机
[0016] 结合第一方面的第四种实现方式,在第一方面的第五种实现方式中,该第四报文可以是网络边缘设备中的探测进程构造的,即,该探测进程在对该构造该第四报文时,便完成了对该第四报文依次进行vxlan封装与外层封装的操作。
[0017] 结合第一方面的第四种实现方式,在第一方面的第六种实现方式中,该第四报文还可以是由网络边缘设备中的vxlan封装/解封装模块与外层封装/解封装模块对探测进程构造的探测报文依次进行vxlan封装与外层封装后生成的。
[0018] 通过向第二虚拟机发送依次经过vxlan封装与外层封装的第四报文,当第一虚拟机成功接收到第二虚拟机发送的针对第四报文的回应报文时,网络边缘设备确定第一虚拟机上运行的容器与第二虚拟机上运行的容器之间的通信链路具有至少一个不支持对vxlan报文进行vxlan封装的接入交换机。
[0019] 通过对容器之间的通信链路中是否包括不支持对vxlan报文进行vxlan封装的接入交换机进行判断,使得网络边缘设备能够根据判断结果,灵活地确定是否对第一报文进行外层封装,从而在确定无需对第一报文进行外层封装时,能够有效地节省信令开销,并且能够节省第一报文的传输时延。
[0020] 结合第一方面的第一种至第六种实现方式,在第一方面的第七种实现方式中,该方法还包括:该网络边缘设备接收第五报文,该第五报文为依次经过该外层封装与vxlan封装的报文;该网络边缘设备对该第五报文依次进行解该外层封装与vxlan解封装,获得该第五报文对应的原始报文。
[0021] 结合第一方面的第一种至第七种实现方式,在第一方面的第八种实现方式中,该第一报文与该第二报文中携带的网络之间互连的协议(Internet Protocol,IP)地址相同。
[0022] 结合第一方面的第一种至第八种实现方式,在第一方面的第九种实现方式中,该外层封装至少包括通用路由封装(Generic Routing Encapsulation,GRE)、网络协议安全性封装(Internet Protocol Security,IPSec)封装与IPv4 over IPv4封装中的任意一种。
[0023] 第二方面,提供一种网络边缘设备,该网络边缘设备用于执行上述第一方面或第一方面的任一可能的实现方式中的方法。具体地,该网络边缘设备可以包括用于执行第一方面或第一方面的任一可能的实现方式中的方法的进程与模块。
[0024] 第三方面,提供一种网络边缘设备,该装置包括接口、存储器和处理器,该存储器用于存储指令,该处理器用于执行该存储器存储的指令,并且对该存储器中存储的指令的执行使得该处理器执行第一方面或第一方面的任一可能的实现方式中的方法。
[0025] 第四方面,提供一种报文传输系统,该报文传输系统包括:第一虚拟机、第二虚拟机、接入交换机,该第一虚拟机上部署有第一容器和网络边缘设备,该第二虚拟机上部署有第二容器;该网络边缘设备,用于判断该第一虚拟机上的第一容器与第二虚拟机上的第二容器之间的通信链路中是否具有至少一个不支持对第一报文进行vxlan封装的接入交换机,其中,该第一报文是针对该第二容器的vxlan报文,该第一报文是该网络边缘设备对该第一容器的IP报文进行vxlan封装而产生的;该网络边缘设备,还用于若该通信链路中具有至少一个不支持对第一报文进行vxlan封装的接入交换机,对该第一报文进行外层封装以产生第二报文,并将该第二报文发送至接入交换机;该接入交换机,用于对该第二报文进行vxlan封装,并将经过vxlan封装的该第二报文发送至该第二虚拟机,其中,该外层封装与该vxlan封装为不同类型的封装,该接入交换机设置在该通信链路中,且与该第一虚拟机连接。
[0026] 第五方面,提供一种芯片,该芯片包括接口、存储器和处理器,该存储器用于存储指令,该处理器用于执行该存储器存储的指令,并且对该存储器中存储的指令的执行使得该处理器执行第一方面或第一方面的任一可能的实现方式中的方法。
[0027] 第六方面,提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该指令在计算机上运行时,使得计算机执行第一方面或第一方面的任一可能的实现方式中的方法。
[0028] 第七方面,提供一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行第一方面或第一方面的任一可能的实现方式中的方法。

附图说明

[0029] 图1是本申请提供的报文传输系统的示意性框图。
[0030] 图2是对原始报文进行GRE封装的原理性示意图。
[0031] 图3是对原始报文进行vxlan封装的原理性示意图。
[0032] 图4是本申请提供的传输报文的方法的示意性流程图。
[0033] 图5是本申请提供的报文传输路径的示意性流程图。
[0034] 图6是本申请提供的对原始报文依次进行GRE封装与vxlan封装的原理性示意图。
[0035] 图7是本申请提供的报文传输路径的另一示意性流程图。
[0036] 图8是本申请提供的报文传输路径的另一示意性流程图。
[0037] 图9是本申请提供的网络边缘设备的示意性框图。
[0038] 图10是本申请提供的网络边缘设备的另一示意性框图。

具体实施方式

[0039] 下面将结合附图,对本申请中的技术方案进行描述。
[0040] 首先,对当容器之间的通信链路具有至少一个不支持对vxlan报文进行vxlan封装的接入交换机时的传输报文的一般方法进行说明。
[0041] 当容器之间的通信链路具有至少一个不支持对vxlan报文进行vxlan封装的接入交换机时,通过手动命令对接入交换机进行配置,通过配置,使得指定端口放通经过vxlan封装的报文,允许vxlan报文在接入交换机中进行再一次的vxlan封装。
[0042] 该方法的主要问题在于以下两点:
[0043] 1)配置工作量大,云数据中心中大量的接入交换机都需要通过手动命令配置,而且需要根据端口配置。
[0044] 2)当云数据中心中既有支持对vxlan报文进行vxlan封装的接入交换机,又有不支持对vxlan报文进行vxlan封装的接入交换机时,无法确定哪些接入交换机需要进行配置,此外,由于容器支持快速弹性伸缩和迁移,容器可能会由与某个接入交换机通信的虚拟机上迁移到与其他任意一个接入交换机通信的虚拟机上,进一步增加了手动配置接入交换机的工作量和难度。
[0045] 针对该问题,本申请提供一种报文传输系统100,如图1所示,该报文传输系统100包括至少两个虚拟机(例如,该至少虚拟机为第一虚拟机103与第二虚拟机104)与至少一个接入交换机,第一虚拟机103运行在第一计算设备101上,第二虚拟机运行在第二计算设备102上,每个虚拟机上部署有容器(例如,docker)与网络边缘设备,例如,虚拟网络边缘节点(Network Virtualization Edge,NVE。
[0046] 从图1中可以看出,每个虚拟机上部署的网络边缘设备中配置有探测进程、vxlan封装/解封装模块与外层封装/解封装模块,探测进程用于判断运行在两个不同的计算设备上的虚拟机中的容器之间的通信链路中是否具有至少一个不支持对vxlan报文进行vxlan封装的接入交换机,vxlan封装/解封装模块用于对报文进行vxlan封装/解封装,外层封装/解封装模块用于对报文进行外层封装/解封装。
[0047] 其中,第一虚拟机上部署的容器为第一容器105(例如,docker1),第一虚拟机上部署的网络边缘设备为第一网络边缘设备107(例如,NVE1),第一网络边缘设备中配置的探测进程、vxlan封装/解封装模块与外层封装/解封装模块分别为探测进程1、vxlan封装/解封装模块1与外层封装/解封装模块1;第二虚拟机上部署的容器为第二容器106(例如,docker2),第二虚拟机上部署的网络边缘设备为第二网络边缘设备108(例如,NVE2),第二网络边缘设备108中配置的探测进程、vxlan封装/解封装模块与外层封装/解封装模块分别为探测进程2、vxlan封装/解封装模块2与外层封装/解封装模块2,该第一容器105与第二容器106之间的通信链路包括的接入交换机为第一接入交换机109与第二接入交换机110,第一接入交换机109与第一虚拟机103连接,第二接入交换机110与第二虚拟机104连接。
[0048] 基于图1中所示的报文传输系统,本申请提供一种传输报文的方法,通过在网络边缘设备中配置探测进程、vxlan封装/解封装模块与外层封装/解封装模块,并通过探测进程判断运行在不同计算设备上的容器之间的通信链路是否具有至少一个不支持对vxlan报文进行vxlan封装的接入交换机,在该通信链路中具有不支持对vxlan报文进行vxlan封装的接入交换机时,通过对发送端容器输出的IP报文的传输路径进行自动配置,使得该IP报文依次经过vxlan封装与外层封装后到达接入交换机,再由接入交换机将依次经过vxlan封装与外层封装的IP报文发送至接收端容器。
[0049] 本申请提供的传输报文的方法能够在容器之间的通信链路具有至少一个不支持对vxlan报文进行vxlan封装的接入交换机时,通过对报文的传输路径进行自动配置,对来自网络边缘设备的vxlan报文进行外层封装后发送至接入交换机,使得该通信链路能够传输对vxlan报文进行vxlan封装后产生的报文。
[0050] 为了更好地理解本申请,在对本申请的实施例进行介绍之前,首先对本申请涉及的专用术语进行说明。
[0051] 通用路由封装
[0052] GRE为一种路由封装协议,提供了将一种协议的报文封装在另一种协议报文中的机制,使得报文能够在异种网络中传输。
[0053] 具体实现为:对通信链路两端的设备分别进行配置,使得配置后的设备能够对报文进行GRE封装和GRE解封装。图2示出了对原始报文(例如,IP报文)进行GRE封装的示意图。
[0054] 可扩展虚拟局域网
[0055] vxlan是由国际互联网工程任务组(The Internet Engineering Task Force,IETF)定义的第3层的网络虚拟化(Network Virtualization over Layer 3,NVO3)标准技术之一,采用L2over L4(MAC-in-UDP)的报文封装模式,将二层报文用三层协议进行封装,可实现二层网络在三层范围内进行扩展,同时满足数据中心大二层虚拟迁移和多租户的需求。图3示出了对原始报文(例如,以太网帧)进行vxlan封装的示意图。
[0056] 下面结合图1中所示的报文传输系统对本申请提供的传输报文的方法200进行详细说明。
[0057] 图4示出了传输报文的方法200的示意性流程图,该方法200至少包括以下步骤。
[0058] 201,第一虚拟机103的网络边缘设备判断该第一虚拟机103上的第一容器105与第二虚拟机104上的第二容器106之间的通信链路中是否具有至少一个不支持对第一报文进行vxlan封装的接入交换机,其中,该第一报文是针对该第二容器106的vxlan报文,该第一报文是该网络边缘设备对该第一容器105的IP报文进行vxlan封装而产生的。
[0059] 具体地,第一虚拟机103的第一网络边缘设备107(例如,NVE1)判断的第一容器105(例如,docker1)与第二容器106(例如,docker2)之间的通信链路中是否具有至少一个不支持对例如,第一报文进行vxlan封装的接入交换机,该第一报文是由NVE1对docker1生成的IP报文进行vxlan封装后生成的,且该第一报文是待发送至docker2的报文。
[0060] 202,若该通信链路中具有至少一个不支持对第一报文进行vxlan封装的接入交换机,该网络边缘设备对该第一报文进行外层封装以产生第二报文,并将该第二报文发送至接入交换机,其中,该外层封装与该vxlan封装为不同类型的封装,该接入交换机设置在该通信链路中,且与该第一虚拟机103连接。
[0061] 具体地,若NVE1确定docker1与docker2之间的通信链路中包括不支持对vxlan报文进行vxlan封装的接入交换机时,NVE1对docker1生成的IP报文由docker1传输至docker2的传输路径进行配置。
[0062] 作为示例而非限定,上述的NVE1对docker1生成的IP报文由docker1传输至docker2的传输路径进行配置,具体实现时可以为:NVE1通过下发路由表项,对该docker1生成的IP报文的传输路径进行配置,通过配置,使得该docker1生成的IP报文由docker1传输至docker2的传输路径为图5中的实线表示的路径,从图5中可以看出,该IP报文由docker1发送至NVE1后,首先由vxlan封装/解封装模块1对该IP报文进行vxlan封装(记为内层vxlan封装),获得经过内层vxlan封装的待传输报文(即,第一报文)。
[0063] 再由该NVE1中的外层封装/解封装模块1对该第一报文进行外层封装,生成经过外层封装的第一报文(例如,第二报文),该外层封装与该vxlan封装为不同类型的封装,例如,该外层封装为GRE封装。
[0064] 该NVE1中的外层封装/解封装模块1将该第二报文发送至与第一虚拟机103连接的接入交换机(例如,第一接入交换机109),由于该第二报文经过了外层封装,第二报文不再是vxlan报文,因此,该第一接入交换机109便不能识别出该第二报文为vxlan报文(即,不会对该第二报文进行解封装或者直接丢弃该报文),第一接入交换机109对该第二报文进行vxlan封装(记为外层vxlan封装),并将经过外层vxlan封装的该第二报文发送至第二虚拟机104。
[0065] 此时,经过外层vxlan封装的第二报文首先被与第二虚拟机104连接的接入交换机(例如,第二接入交换机110)接收,该第二接入交换机110对该经过外层vxlan封装的第二报文进行vxlan解封装(记为外层vxlan解封装),并将经过外层vxlan解封装的第二报文发送至NVE2中的外层封装/解封装模块2,由该外层封装/解封装模块2对该经过外层vxlan解封装的第二报文进行外层解封装,该外层封装/解封装模块2将经过外层解封装的第二报文发送至vxlan封装/解封装模块2,由该vxlan封装/解封装模块2对该第二报文进行vxlan解封装(记为外层vxlan解封装),获得原始的IP报文,并将该原始的IP报文发送至docker2。至此,该IP报文便由第一虚拟机103中的docker1传输至第二虚拟机104中的docker2。
[0066] 因此,通过在网络边缘设备中配置探测进程、vxlan封装/解封装模块与外层封装/解封装模块,并通过探测进程判断运行在不同计算设备上的容器之间的通信链路是否具有至少一个不支持对vxlan报文进行vxlan封装的接入交换机,在该通信链路中具有不支持对vxlan报文进行vxlan封装的接入交换机时,通过对发送端容器输出的IP报文的传输路径进行自动配置,使得该IP报文依次经过vxlan封装与外层封装后到达接入交换机,再由接入交换机将依次经过vxlan封装与外层封装的IP报文发送至接收端容器。
[0067] 本申请提供的传输报文的方法能够在容器之间的通信链路具有至少一个不支持对vxlan报文进行vxlan封装的接入交换机时,通过对报文的传输路径进行自动配置,对来自网络边缘设备的vxlan报文进行外层封装后发送至接入交换机,使得该通信链路能够传输对vxlan报文进行vxlan封装后产生的报文。
[0068] 作为示例而非限定,上述对IP报文进行vxlan封装后生成的第一报文、对第一报文进行外层封装后生成的第二报文与对第二报文进行vxlan封装后生成的报文中携带的IP地址相同。
[0069] 上述以第一虚拟机103作为发送端,第二虚拟机104作为接收端为例,对当docker1与docker2之间的通信链路具有至少一个不支持对vxlan报文进行vxlan封装的接入交换机时,本申请提供的传输报文的方法进行了说明。但本申请并不限定于此。
[0070] 例如,第一虚拟机103还可以作为接收端,可以接收虚拟机网络中的任意一个虚拟机发送的报文,例如,该第一虚拟机103可以接收第二虚拟机104发送的报文(例如,第五报文),此时,第五报文由第二虚拟机104发送至第一虚拟机103的传输路径为图5中的虚线表示的路径,该vxlan封装/解封装模块2用于实现对第五报文进行vxlan封装的功能,该外层封装/解封装模块2用于实现对第五报文进行外层封装的功能,该vxlan封装/解封装模块1用于实现对第五报文进行vxlan解封装的功能,该外层封装/解封装模块1用于实现对第五报文进行外层解封装的功能。
[0071] 关于第二虚拟机104向第一虚拟机103发送第五报文时的传输流程请参考上述相关描述,为了简洁,此处不再赘述。
[0072] 为了便于区分,将上述对IP报文的vxlan封装称为内层vxlan封装,将上述对第二报文的vxlan封装称为外层vxlan封装;同样地,将vxlan封装的第二报文进行vxlan解封装称为外层vxlan解封装,将vxlan封装的IP报文进行vxlan解封装称为内层vxlan解封装。
[0073] 作为示例而非限定,该外层封装至少包括GRE封装、IPSec封装与IPv4 over IPv4封装中的任意一种。
[0074] 具体地,例如,该外层封装为GRE封装,即,NVE1中的外层封装/解封装模块1对该IP报文进行内层vxlan封装,生成第一报文,并对该第一报文进行GRE封装,生成第二报文,当该第二报文到达第一接入交换机109时,该第一接入交换机109对该第二报文进行外层vxlan封装后将该第二报文发送至第二虚拟机104。图6示出了对该IP报文进行(外层vxlan+GRE+内层vxlan)封装的示意图。
[0075] 在上述步骤201中,当该NVE1确定docker1与docker2之间的通信链路中包括不支持对vxlan报文进行vxlan封装的接入交换机时,则使用步骤202中描述的方法对该待传输报文进行传输;
[0076] 当该NVE1确定docker1与docker2之间的通信链路中的接入交换机支持对vxlan报文进行vxlan封装时,则可以通过下发路由表项,使得NVE1中的vxlan封装/解封装模块1在对该IP报文进行内层vxlan封装后,生成第一报文,便将该第一报文发送至第一接入交换机109,由该第一接入交换机109对该第一报文进行外层vxlan封装,将经过(外层vxlan+内层vxlan)封装的IP报文发送至第二虚拟机104。
[0077] 此时,经过外层vxlan封装的第一报文首先被第二虚拟机104中的第二接入交换机110接收,该第二接入交换机110对该经过外层vxlan封装的第一报文进行外层vxlan解封装,并将经过vxlan解封装的第一报文发送至NVE2中的vxlan封装/解封装模块2,由该vxlan封装/解封装模块2对该第一报文进行内层vxlan解封装,获得原始的IP报文,并将该原始的IP报文发送至docker2。至此,该IP报文便由第一虚拟机103中的docker1传输至第二虚拟机
104中的docker2。
[0078] 下面以该外层封装为GRE封装为例,对步骤201中涉及的NVE1确定容器之间的通信链路中是否包括不支持对vxlan报文进行vxlan封装的接入交换机的方法进行说明。
[0079] 作为示例而非限定,该第一虚拟机103的网络边缘设备判断该第一虚拟机103上的第一容器105与第二虚拟机104上的第二容器106之间的通信链路中是否具有至少一个不支持对第一报文进行vxlan封装的接入交换机,包括:
[0080] 该网络边缘设备构造第三报文,该第三报文为vxlan报文;
[0081] 该网络边缘设备将该第三报文发送至该接入交换机,该接入交换机用于对该第三报文进行vxlan封装,并用于将经过vxlan封装的第三报文发送至该第二虚拟机104;
[0082] 该网络边缘设备根据是否接收到该第二虚拟机104发送的针对该第三报文的回应报文,判断该第一虚拟机103上的第一容器105与第二虚拟机104上的第二容器106之间的通信链路中是否具有至少一个不支持对第一报文进行vxlan封装的接入交换机。
[0083] 具体地,例如,如图7所示,该NVE1中的探测进程(例如,探测进程1)用于构造探测报文或者为接收到的探测报文构造回应报文。
[0084] 例如,NVE1通过探测进程1构造探测报文(例如,第三报文),该第三报文为vxlan报文。
[0085] 此外,NVE1还可以通过探测进程1构造探测报文后,由NVE1中的vxlan封装/解封装模块1对探测报文进行vxlan封装,生成该第三报文。
[0086] 在本申请实施例中,NVE1确定docker1与docker2之间的通信链路中是否包括不支持对vxlan报文进行vxlan封装的接入交换机时,NVE1通过构造该第三报文,并将该第三报文发送至NVE2。
[0087] 若NVE2成功接收到该第三报文,则通过构造针对该第三报文的回应报文,若NVE1成功接收到该针对第三报文的回应报文时,则确定docker1与docker2之间的通信链路中的接入交换机支持对vxlan报文进行vxlan封装。
[0088] 下面以该第三报文是由vxlan封装/解封装模块1对探测进程1构造的探测报文进行vxlan封装生成的为例,对NVE1通过下发第三报文确定docker1与docker2之间的通信链路中是否包括不支持对vxlan报文进行vxlan封装的接入交换机的详细过程进行说明。
[0089] NVE1对第三报文由docker1传输至docker2的传输路径进行配置,例如,NVE1通过下发路由表项,使得第三报文由docker1传输至docker2的传输路径为图7中的实线表示的路径。
[0090] 从图7中的实线表示的传输路径可以看出,首先由vxlan封装解封装模块1对该探测进程1构造的探测报文进行内层vxlan封装,生成该第三报文,之后,经过内层vxlan封装的第三报文便进入第一接入交换机109。
[0091] 此时,会出现以下两种情况:
[0092] 情况1
[0093] 第一接入交换机109支持对vxlan报文进行vxlan封装。
[0094] 情况2
[0095] 第一接入交换机109不支持对vxlan报文进行vxlan封装。
[0096] 下面针对上述两种情况对NVE1确定docker1与docker2之间的通信链路中是否包括不支持对vxlan报文进行vxlan封装的接入交换机的方法分别进行说明。
[0097] 情况1
[0098] 当第一接入交换机109支持vxlan的嵌套封装时,第一接入交换机109会对接收到的经过内层vxlan封装的第三报文进行外层vxlan封装,并将经过(外层vxlan+内层vxlan)封装的第三报文发送至第二接入交换机110,由第二接入交换机110对接收到的经过(外层vxlan+内层vxlan)封装的第三报文进行外层vxlan解封装,再由vxlan封装/解封装模块2对经过外层vxlan解封装的第三报文进行内层vxlan解封装,由vxlan封装/解封装模块2对经过(内层vxlan+外层vxlan)解封装的第三报文发送至探测进程2。
[0099] 此时,探测进程2会构造针对第三报文的回应报文,并将该针对第三报文的回应报文发送至NVE1,对针对第三报文的回应报文由docker1传输至docker2的传输路径进行配置,例如,通过下发路由表项,使得针对第三报文的回应报文由docker1传输至docker2的传输路径为图7中的虚线表示的路径。
[0100] 从图7中表示的虚线的传输路径可以看出,探测进程2构造该针对第三报文的回应报文后,该针对第三报文的回应报文首先由vxlan封装/解封装模块2对该针对第三报文的回应报文进行内层vxlan封装,之后,经过内层vxlan封装的针对第三报文的回应报文便进入第二接入交换机110(假设该第二接入交换机110支持vxlan的嵌套封装)。
[0101] 第二接入交换机110会对接收到的经过内层vxlan封装的针对第三报文的回应报文进行外层vxlan封装,并将经过(外层vxlan+内层vxlan)封装的针对第三报文的回应报文发送至第一接入交换机109,由第一接入交换机109对接收到的经过(外层vxlan+内层vxlan)封装的针对第三报文的回应报文进行外层vxlan解封装,再由vxlan封装/解封装模块1对经过外层vxlan解封装的针对第三报文的回应报文进行内层vxlan解封装,由vxlan封装/解封装模块1将经过(内层vxlan+外层vxlan)解封装的针对第三报文的回应报文发送至探测进程1。
[0102] 在探测进程1接收到的NVE2发送的针对第三报文的回应报文时,则确定docker1与docker2之间的通信链路中的接入交换机支持对vxlan报文进行vxlan封装。
[0103] 情况2
[0104] 当第一接入交换机109不支持对vxlan报文进行vxlan封装时,第一接入交换机109会对经过内层vxlan封装的第三报文进行vxlan解封装或者直接丢弃该第二报文,使得该第二报文无法成功到达NVE2,因此,NVE1便无法接收到NVE2针对第三报文构造的回应报文。
[0105] 针对情况2,探测进程1可以在构造第三报文的时候启动定时器,当该定时器超时时,若NVE1仍没有接收到NVE2发送的针对第三报文的回应报文时,则NVE1可以确定docker1与docker2之间的通信链路中包括不支持对vxlan报文进行vxlan封装的接入交换机。
[0106] 进一步地,NVE1还可以进行重试,例如,NVE1重复多次向NVE2发送第二报文,若探测进程1始终没有接收到NVE2发送的针对第三报文的回应报文时,则确定docker1与docker2之间的通信链路中包括不支持对vxlan报文进行vxlan封装的接入交换机。
[0107] 在本申请中,为了提高探测结果的可靠性,在上述情况2的基础上,NVE1还可以进一步确定docker1与docker2之间的通信链路中是否包括不支持对vxlan报文进行vxlan封装的接入交换机。下面进行详细说明。
[0108] 作为示例而非限定,若该网络边缘设备未接收到该第二虚拟机104发送的针对该第三报文的回应报文,该第一虚拟机103判断该通信链路中是否具有至少一个不支持对该第一报文进行vxlan封装的接入交换机,包括:
[0109] 该网络边缘设备构造第四报文,该第四报文为依次经过vxlan封装与该外层封装的报文;
[0110] 该网络边缘设备将该第四报文发送至该接入交换机,该接入交换机用于对该第四报文进行vxlan封装,并用于将经过vxlan封装的第四报文发送至该第二虚拟机104;
[0111] 该网络边缘设备根据是否接收到该第二虚拟机104发送的针对该第四报文的回应报文,判断该第一虚拟机103上的第一容器105与第二虚拟机104上的第二容器106之间的通信链路中是否具有至少一个不支持对第一报文进行vxlan封装的接入交换机。
[0112] 具体地,例如,NVE1通过探测进程1构造探测报文(例如,第四报文),该第四报文为依次经过vxlan封装与外层封装(例如,GRE封装)的报文。
[0113] 此外,该第四报文还可以是对由探测进程1构造的探测报文依次进行内层vxlan封装与GRE封装生成的,其中,由vxlan封装/解封装模块1对探测进程1构造的探测报文进行内层vxlan封装,由GRE封装/解封装模块1对探测进程构造的探测报文进行GRE封装。
[0114] 下面以该第四报文是由vxlan封装/解封装模块1与GRE封装/解封装模块1依次对探测进程1构造的探测报文进行内层vxlan封装与GRE封装生成的为例,对NVE1通过下发第四报文确定docker1与docker2之间的通信链路中是否包括不支持对vxlan报文进行vxlan封装的接入交换机的详细过程进行说明。
[0115] NVE1对第四报文由docker1传输至docker2的传输路径进行配置,例如,通过下发路由表项,使得第四报文由docker1传输至docker2的传输路径为图8中的实线表示的路径。
[0116] 从图8中的实线表示的传输路径可以看出,首先由vxlan封装解封装模块1对该探测进程1构造的探测报文进行内层vxlan封装,并且由GRE封装/解封装模块1对经过内层vxlan封装的探测报文进行GRE封装,生成该第四报文之后,经过GRE封装的第四报文便进入第一接入交换机109。
[0117] 第一接入交换机109会对接收到的经过(GRE+内层vxlan)封装的第四报文进行外层vxlan封装,并将经过(外层vxlan+GRE+内层vxlan)封装的第四报文发送至第二接入交换机110,由第二接入交换机110对接收到的经过(外层vxlan+GRE+内层vxlan)封装的第四报文进行外层vxlan解封装,再由GRE封装/解封装模块2对经过外层vxlan解封装的第四报文进行内层GRE解封装,再由vxlan封装/解封装模块2对经过GRE解封装的第四报文进行内层vxlan解封装,由vxlan封装/解封装模块2对经过(内层vxlan+GRE+外层vxlan)解封装的第四报文发送至探测进程2。
[0118] 此时,探测进程2会构造针对该第四报文的回应报文,并将该针对第四报文的回应报文发送至NVE1,对针对第四报文的回应报文由docker1传输至docker2的传输路径进行配置,例如,通过下发路由表项,使得针对第四报文的回应报文由docker1传输至docker2的传输路径为图8中的虚线表示的路径。
[0119] 从图8中表示的虚线的传输路径可以看出,探测进程2构造该针对第四报文的回应报文后,该针对第四报文的回应报文首先由vxlan封装/解封装模块2对该针对第四报文的回应报文进行内层vxlan封装,再由GRE封装/解封装模块2对经过内层vxlan封装的针对第四报文的回应报文进行GRE封装,之后,经过GRE封装的针对第四报文的回应报文便进入第二接入交换机110。
[0120] 第二接入交换机110会对接收到的经过(GRE+内层vxlan)封装的针对第四报文的回应报文进行外层vxlan封装,并将经过(外层vxlan+GRE+内层vxlan)封装的针对第四报文的回应报文发送至第一接入交换机109,由第一接入交换机109对接收到的经过(外层vxlan+GRE+内层vxlan)封装的针对第四报文的回应报文进行外层vxlan解封装,再由GRE封装/解封装模块1对经过外层vxlan解封装的针对第四报文的回应报文进行内层GRE解封装,再由vxlan封装/解封装模块1对经过GRE解封装的针对第四报文的回应报文进行内层vxlan解封装,由vxlan封装/解封装模块1对经过(内层vxlan+GRE+外层vxlan)解封装的针对第四报文的回应报文发送至探测进程1。
[0121] 在探测进程1接收到的NVE2发送的针对第四报文的回应报文时,则结合上述情况2进一步确定docker1与docker2之间的通信链路中包括不支持对vxlan报文进行vxlan封装的接入交换机。
[0122] 通过对容器之间的通信链路中是否包括不支持对vxlan报文进行vxlan封装的接入交换机进行判断,使得NVE1能够根据判断结果,灵活地确定是否对第一报文进行外层封装,从而在确定无需对第一报文进行外层封装时,能够有效地节省信令开销,并且能够节省第一报文的传输时延。
[0123] 需要说明的是,当上述第三报文与第四报文是由探测进程1生成的情况下,该第三报文与第四报文可以由探测进程1直接发送至第一接入交换机109,无需经过vxlan封装/解封装模块1与GRE封装/解封装模块1。此时,上述图1、图7与图8中的NVE1可以仅包括探测进程1。
[0124] 还需要说明的是,本申请中的接入交换机与计算设备连接时的布线方式可以是柜顶(Top of Rank,TOR)布线方式、列末(End of Row,EOR)布线方式以及列中(Middle of Row,MOR)布线方式中的任意一种,本申请不做特别限定。
[0125] 还需要说明的是,上述以docker1与docker2之间的通信链路中包括第一接入交换机109与第二接入交换机110为例,对本申请的传输报文的方法进行说明。但本申请并不限定于此,例如,docker1与docker2之间的通信链路中可以仅包括一个接入交换机,该接入交换机既与第一虚拟机103连接,同时又与第二接入交换机110连接,该第一虚拟机103与第二虚拟机104通过该接入交换机上的不同端口进行通信。
[0126] 当docker1与docker2之间的通信链路中仅包括一个接入交换机时,上述方法100中由第一接入交换机109与第二接入交换机110执行的动作均由该接入交换机完成,即,该接入交换机既负责对从第一虚拟机103接收的报文进行vxlan封装,又负责对待发送至第二虚拟机104的报文进行vxlan解封装。
[0127] 上文结合图1至图8,描述了本申请实施例提供的传输报文的方法,下面结合图9至图10描述本申请实施例提供的网络边缘设备。
[0128] 图9为本申请实施例提供的网络边缘设备300的示意性框图,该网络边缘设备300包括探测进程301、vxlan封装/解封装模块302与外层封装/解封装模块303。
[0129] 探测进程301,用于判断第一虚拟机上的第一容器与第二虚拟机上的第二容器之间的通信链路中是否具有至少一个不支持对第一报文进行vxlan封装的接入交换机,其中,该第一报文是针对该第二容器的vxlan报文;
[0130] vxlan封装/解封装模块302,用于对该第一容器的IP报文进行vxlan封装,产生该第一报文;
[0131] 外层封装/解封装模块303,用于若该通信链路中具有至少一个不支持对第一报文进行vxlan封装的接入交换机,对该第一报文进行外层封装以产生第二报文,并将该第二报文发送至接入交换机,其中,该外层封装与该vxlan封装为不同类型的封装,该接入交换机设置在该通信链路中,且与该第一虚拟机连接。
[0132] 可选地,该探测进程301,还用于构造第三报文,该第三报文为vxlan报文;
[0133] 该探测进程301,还用于将该第三报文发送至该接入交换机,该接入交换机用于对该第三报文进行vxlan封装,并用于将经过vxlan封装的第三报文发送至该第二虚拟机;
[0134] 该探测进程301,还用于根据是否接收到该第二虚拟机发送的针对该第三报文的回应报文,判断该第一虚拟机上的第一容器与第二虚拟机上的第二容器之间的通信链路中是否具有至少一个不支持对第一报文进行vxlan封装的接入交换机;
[0135] 该外层封装/解封装模块303,具体用于:若该探测进程301未接收到该第二虚拟机发送的针对该第三报文的回应报文,对该第一报文进行外层封装以产生第二报文,并将该第二报文发送至接入交换机。
[0136] 可选地,该探测进程301,还用于构造第四报文,该第四报文为依次经过vxlan封装与该外层封装的报文;
[0137] 该探测进程301,还用于将该第四报文发送至该接入交换机,该接入交换机用于对该第四报文进行vxlan封装,并用于将经过vxlan封装的第四报文发送至该第二虚拟机;
[0138] 该探测进程301,还用于根据是否接收到该第二虚拟机发送的针对该第四报文的回应报文,判断该第一虚拟机上的第一容器与第二虚拟机上的第二容器之间的通信链路中是否具有至少一个不支持对第一报文进行vxlan封装的接入交换机;
[0139] 该外层封装/解封装模块303,具体用于:若该探测进程301接收到该第二虚拟机发送的针对该第四报文的回应报文,对该第一报文进行外层封装以产生第二报文,并将该第二报文发送至接入交换机。
[0140] 可选地,该外层封装/解封装模块303,还用于接收第五报文,该第五报文为依次经过该外层封装与vxlan封装的报文;
[0141] 该外层封装/解封装模块303,还用于对该第五报文进行解该外层封装;
[0142] 该vxlan封装/解封装模块302,还用于对经过该解外层封装的第五报文进行vxlan解封装,获得该第五报文对应的原始报文。
[0143] 可选地,该第一报文与该第二报文中携带的源网络之间互连的协议IP地址相同。
[0144] 可选地,该外层封装至少包括通用路由封装GRE、网络协议安全性封装IPSec封装与IPv4 over IPv4封装中的任意一种。
[0145] 需要说明的是,该网络边缘设备300可以为图1中的第一网络边缘设备107或第二网络边缘设备108。
[0146] 图10为本申请实施例提供的网络边缘设备400的示意性框图,该网络边缘设备400包括:存储器401、处理器402与接口403,存储器401、处理器402与接口403用于运行图10中所示的网络边缘设备,具体如下。
[0147] 存储器401,用于存储程序。
[0148] 处理器402,用于执行该存储器中存储的程序,当该存储器中的程序被执行时,该处理器402,用于判断第一虚拟机上的第一容器与第二虚拟机上的第二容器之间的通信链路中是否具有至少一个不支持对第一报文进行vxlan封装的接入交换机,其中,该第一报文是针对该第二容器的vxlan报文;
[0149] 该处理器402,还用于对该第一容器的IP报文进行vxlan封装,产生该第一报文。
[0150] 该处理器402,还用于若该通信链路中具有至少一个不支持对第一报文进行vxlan封装的接入交换机,对该第一报文进行外层封装以产生第二报文;
[0151] 接口403,用于将该第二报文发送至接入交换机,
[0152] 其中,该外层封装与该vxlan封装为不同类型的封装,该接入交换机设置在该通信链路中,且与该第一虚拟机连接。
[0153] 可选地,该处理器402,还用于构造第三报文,该第三报文为vxlan报文;
[0154] 该处理器402,还用于将该第三报文发送至该接入交换机,该接入交换机用于对该第三报文进行vxlan封装,并用于将经过vxlan封装的第三报文发送至该第二虚拟机;
[0155] 该处理器402,还用于根据是否接收到该第二虚拟机发送的针对该第三报文的回应报文,判断该第一虚拟机上的第一容器与第二虚拟机上的第二容器之间的通信链路中是否具有至少一个不支持对第一报文进行vxlan封装的接入交换机;
[0156] 该处理器402,还用于若未接收到该第二虚拟机发送的针对该第三报文的回应报文,对该第一报文进行外层封装以产生第二报文,并将该第二报文发送至接入交换机。
[0157] 可选地,该处理器402,还用于构造第四报文,该第四报文为依次经过vxlan封装与该外层封装的报文;
[0158] 该处理器402,还用于将该第四报文发送至该接入交换机,该接入交换机用于对该第四报文进行vxlan封装,并用于将经过vxlan封装的第四报文发送至该第二虚拟机;
[0159] 该处理器402,还用于根据是否接收到该第二虚拟机发送的针对该第四报文的回应报文,判断该第一虚拟机上的第一容器与第二虚拟机上的第二容器之间的通信链路中是否具有至少一个不支持对第一报文进行vxlan封装的接入交换机;
[0160] 该处理器402,还用于若接收到该第二虚拟机发送的针对该第四报文的回应报文,对该第一报文进行外层封装以产生第二报文,并将该第二报文发送至接入交换机。
[0161] 可选地,接口403,还用于接收第五报文,该第五报文为依次经过该外层封装与vxlan封装的报文;
[0162] 该处理器402,还用于对该第五报文进行解该外层封装;
[0163] 该处理器402,还用于对经过该解外层封装的第五报文进行vxlan解封装,获得该第五报文对应的原始报文。
[0164] 可选地,该第一报文与该第二报文中携带的源网络之间互连的协议IP地址相同。
[0165] 可选地,该外层封装至少包括通用路由封装GRE、网络协议安全性封装IPSec封装与IPv4 over IPv4封装中的任意一种。
[0166] 需要说明的是,该网络边缘设备400可以为图1中的第一网络边缘设备107或第二网络边缘设备108。
[0167] 本申请提供了一种报文传输系统,该报文传输系统包括:第一虚拟机、第二虚拟机、接入交换机与第二接入交换机,该第一虚拟机上部署有第一容器和网络边缘设备该第二虚拟机上部署有第二容器与第二网络边缘设备;
[0168] 该网络边缘设备,用于判断该第一虚拟机上的第一容器与第二虚拟机上的第二容器之间的通信链路中是否具有至少一个不支持对第一报文进行vxlan封装的接入交换机,其中,该第一报文是针对该第二容器的vxlan报文,该第一报文是该网络边缘设备对该第一容器的IP报文进行vxlan封装而产生的;
[0169] 该网络边缘设备,还用于若该通信链路中具有至少一个不支持对第一报文进行vxlan封装的接入交换机,对该第一报文进行外层封装以产生第二报文,并将该第二报文发送至接入交换机;
[0170] 该接入交换机,用于对该第二报文进行vxlan封装,并将经过vxlan封装的该第二报文发送至该第二虚拟机,
[0171] 其中,该外层封装与该vxlan封装为不同类型的封装,该接入交换机与该第二接入交换机设置在该通信链路中,该接入交换机与该第一虚拟机连接,该第二接入交换机与该第一虚拟机连接。
[0172] 可选地,该网络边缘设备,还用于构造第三报文,该第三报文为vxlan报文;
[0173] 该网络边缘设备,还用于将该第三报文发送至该接入交换机,该接入交换机用于对该第三报文进行vxlan封装,并用于将经过vxlan封装的第三报文发送至该第二虚拟机;
[0174] 该网络边缘设备,还用于根据是否接收到该第二虚拟机发送的针对该第三报文的回应报文,判断该第一虚拟机上的第一容器与第二虚拟机上的第二容器之间的通信链路中是否具有至少一个不支持对第一报文进行vxlan封装的接入交换机;
[0175] 该网络边缘设备,还用于若未接收到该第二虚拟机发送的针对该第三报文的回应报文,对该第一报文进行外层封装以产生第二报文,并将该第二报文发送至接入交换机。
[0176] 可选地,该网络边缘设备,还用于构造第四报文,该第四报文为依次经过vxlan封装与该外层封装的报文;
[0177] 该网络边缘设备,还用于将该第四报文发送至该接入交换机,该接入交换机用于对该第四报文进行vxlan封装,并用于将经过vxlan封装的第四报文发送至该第二虚拟机;
[0178] 该网络边缘设备,还用于根据是否接收到该第二虚拟机发送的针对该第四报文的回应报文,判断该第一虚拟机上的第一容器与第二虚拟机上的第二容器之间的通信链路中是否具有至少一个不支持对第一报文进行vxlan封装的接入交换机;
[0179] 该网络边缘设备,还用于若接收到该第二虚拟机发送的针对该第四报文的回应报文,对该第一报文进行外层封装以产生第二报文,并将该第二报文发送至接入交换机。
[0180] 可选地,该网络边缘设备,还用于接收第五报文,该第五报文为依次经过该外层封装与vxlan封装的报文;
[0181] 该网络边缘设备,还用于对该第五报文依次进行解该外层封装与vxlan解封装,获得该第五报文对应的原始报文。
[0182] 可选地,该第一报文与该第二报文中携带的源网络之间互连的协议IP地址相同。
[0183] 可选地,该外层封装至少包括通用路由封装GRE、网络协议安全性封装IPSec封装与IPv4 over IPv4封装中的任意一种。
[0184] 需要说明的是,该报文传输系统可以为图1中所示的报文传输系统100,该第一虚拟机为图1中所示的第一虚拟机103、该第二虚拟机为图1中所示的第二虚拟机104,该第一容器为图1中所示的第一容器105,该第二容器为图1中所示的第二容器106,该网络边缘设备为图1中所示的第一网络边缘设备107,该第二网络边缘设备为图1中所示的第二网络边缘设备108,该接入交换机为图1中所示的第一接入交换机109,该第二接入交换机为图1中所示的第二接入交换机110。
[0185] 本申请提供了一种芯片,该芯片包括接口、存储器和处理器,该存储器用于存储指令,该处理器用于执行该存储器存储的指令,并且对该存储器中存储的指令的执行使得该处理器执行本申请实施例的传输报文的方法。
[0186] 本申请提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该指令在计算机上运行时,使得计算机执行本申请实施例的传输报文的方法。
[0187] 本申请提供了一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行本申请实施例的传输报文的方法。
[0188] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
[0189] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0190] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0191] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0192] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0193] 所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0194] 以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。