基于VXLAN网络的报文转发方法及装置转让专利

申请号 : CN201410619056.5

文献号 : CN105577417B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 俞国平

申请人 : 新华三技术有限公司

摘要 :

本申请公开了一种基于VXLAN网络的报文转发方法及装置,其中,该方法包括:当本设备为主VTEP和备VTEP的对端VTEP时,建立本设备与主VTEP之间的隧道,配置该隧道为主隧道,建立本设备与备VTEP之间的隧道,配置该隧道为备隧道;接收到要发往非虚拟化网络的用户报文之后,确定出该用户报文的出接口是隧道;若隧道表中该隧道的隧道状态为Active,则使用该隧道的目的IP地址,将该用户报文封装成VXLAN报文后通过该隧道转发出去;若隧道表中该隧道的隧道状态为Inactive,则使用该隧道的关联隧道的目的IP地址,将该用户报文封装成VXLAN报文后通过该关联隧道转发出去;其中,当该隧道是主隧道时,该关联隧道是备隧道,当该隧道是备隧道时,该关联隧道是主隧道。

权利要求 :

1.一种基于虚拟可扩展局域网VXLAN网络的报文转发方法,所述VXLAN网络中包括:连接一非虚拟化网络的主VXLAN隧道终端VTEP和备VTEP,其特征在于,所述方法应用于VTEP,所述方法包括:当本设备为主VTEP和备VTEP的对端VTEP时,建立本设备与主VTEP之间的隧道,配置该隧道为主隧道,建立本设备与备VTEP之间的隧道,配置该隧道为备隧道;

接收到要发往所述非虚拟化网络的用户报文之后,确定出该用户报文的出接口是隧道;

若隧道表中该隧道的隧道状态为激活Active,则使用该隧道的目的IP地址,将该用户报文封装成VXLAN报文后通过该隧道转发出去;

若所述隧道表中该隧道的隧道状态为非激活Inactive,则使用该隧道的关联隧道的目的IP地址,将该用户报文封装成VXLAN报文后通过该关联隧道转发出去;其中,当该隧道是主隧道时,该关联隧道是备隧道,当该隧道是备隧道时,该关联隧道是主隧道。

2.根据权利要求1所述的方法,其特征在于,所述使用该隧道的目的IP地址,将该用户报文封装成VXLAN报文后通过该隧道转发出去的方法包括:若该隧道为主隧道,则根据主隧道的隧道ID,在所述隧道表中查找到主隧道对应的表项,在主隧道对应的表项中的隧道状态为Active时,根据主隧道对应的表项中主隧道的源IP地址和目的IP地址,将该用户报文封装成VXLAN报文后通过主隧道转发给主VTEP;

若该隧道为备隧道,则根据备隧道的隧道ID,在所述隧道表中查找到备隧道对应的表项,在备隧道对应的表项中的隧道状态为Active时,根据备隧道对应的表项中备隧道的源IP地址和目的IP地址,将该用户报文封装成VXLAN报文后通过备隧道转发给备VTEP。

3.根据权利要求1所述的方法,其特征在于,所述使用该隧道的关联隧道的目的IP地址,将该用户报文封装成VXLAN报文后通过该关联隧道转发出去的方法包括:若该隧道为主隧道,则根据主隧道的隧道ID,在所述隧道表中查找到主隧道对应的表项,在主隧道对应的表项中的隧道状态为Inactive时,根据主隧道对应的表项中主隧道的源IP地址和备隧道的目的IP地址,将该用户报文封装成VXLAN报文后通过备隧道转发给备VTEP;

若该隧道为备隧道,则根据备隧道的隧道ID,在所述隧道表中查找到备隧道对应的表项,在备隧道对应的表项中的隧道状态为Inactive时,根据备隧道对应的表项中备隧道的源IP地址和主隧道的目的IP地址,将该用户报文封装成VXLAN报文后通过主隧道转发给主VTEP。

4.根据权利要求2或3所述的方法,其特征在于,

所述建立本设备与主VTEP之间的隧道,配置该隧道为主隧道,建立本设备与备VTEP之间的隧道,配置该隧道为备隧道的方法包括:在所述隧道表中添加主隧道对应的表项和备隧道对应的表项;其中,主隧道对应的表项中包括:隧道ID、主隧道的源IP地址和目的IP地址、备隧道的目的IP地址、以及置为Active的隧道状态;备隧道对应的表项中包括:隧道ID、备隧道的源IP地址和目的IP地址、主隧道的目的IP地址、以及置为Inactive的隧道状态;

所述方法还包括:若主VTEP故障、或主隧道故障,则将所述主隧道对应的表项中的隧道状态更新为Inactive,将所述备隧道对应的表项中的隧道状态更新为Active;若主VTEP故障恢复且需要回切到主VTEP、或主隧道故障恢复且需要回切到主隧道,则将所述主隧道对应的表项中的隧道状态更新为Active,将所述备隧道对应的表项中的隧道状态更新为Inactive。

5.根据权利要求1所述的方法,其特征在于,主VTEP和备VTEP作为VXLAN IP网关连接所述非虚拟化网络,所述方法还包括:若主VTEP正常、或主隧道正常,则在接收到来自虚拟机VM的地址解析协议ARP报文后,保存该ARP报文,将该ARP报文通过主隧道发送给主VTEP以及通过备隧道发送给备VTEP;

若主VTEP故障恢复且需要回切到主VTEP、或主隧道故障恢复且需要回切到主隧道,则将本地保存的ARP报文通过主隧道发送给主VTEP。

6.根据权利要求5所述的方法,其特征在于,所述方法还包括:

当本设备为主VTEP或备VTEP时,在接收到ARP报文之后,根据该ARP报文,在VM路由信息表中配置VM对应的路由的表项,其中,该表项中包括:本设备与该VM所在的对端VTEP之间的隧道的隧道ID;向所述非虚拟化网络中与主VTEP和备VTEP直连的路由设备发布该VM对应的路由;其中,针对同一VM,主VTEP发布的路由的优先级高于备VTEP发布的路由的优先级;

若本设备与对端VTEP之间的隧道故障,则根据故障隧道的隧道ID在所述VM路由信息表中查找到VM对应的路由,向所述路由设备回收查找到的VM对应的路由。

7.一种基于虚拟可扩展局域网VXLAN网络的报文转发方法,所述VXLAN网络中包括:作为VXLAN IP网关连接一非虚拟化网络的主VXLAN隧道终端VTEP和备VTEP,其特征在于,所述方法应用于所述非虚拟化网络中与主VTEP和备VTEP直连的路由设备,所述方法包括:在接收到主VTEP发布的虚拟机VM对应的路由之后,根据该VM对应的路由,计算出下一跳为主VTEP的从本设备到该VM的路由;

在接收到备VTEP发布的VM对应的路由之后,根据该VM对应的路由,计算出下一跳为备VTEP的从本设备到该VM的路由;其中,针对同一VM,主VTEP发布的路由的优先级高于备VTEP发布的路由的优先级,计算出的下一跳为主VTEP的路由的优先级高于下一跳为备VTEP的路由的优先级;

针对计算出的从本设备到同一VM的至少两个路由,将下一跳为主VTEP的路由的表项添加到路由表中;

在接收到用户报文之后,根据该用户报文的目的IP地址,在所述路由表中查找到对应表项,根据该对应表项将该用户报文转发给主VTEP或备VTEP。

8.根据权利要求7所述的方法,其特征在于,所述方法还包括:

若主VTEP故障,则删除计算出的下一跳为主VTEP的所有路由,删除所述路由表中下一跳为主VTEP的所有表项,将下一跳为备VTEP的所有路由的表项添加到所述路由表中;

在接收到来自主VTEP的用于回收VM对应的路由的报文之后,删除计算出的下一跳为主VTEP的从本设备到该VM的路由,删除所述路由表中下一跳为主VTEP的从本设备到该VM的路由的表项,将下一跳为备VTEP的从本设备到该VM的路由的表项添加到所述路由表中;

在接收到主VTEP重新发布的VM对应的路由之后,根据该VM对应的路由,重新计算出下一跳为主VTEP的从本设备到该VM的路由,将所述路由表中下一跳为备VTEP的从本设备到该VM的路由的表项删除,在所述路由表中添加下一跳为主VTEP的从本设备到该VM的路由的表项。

9.一种基于虚拟可扩展局域网VXLAN网络的报文转发装置,所述VXLAN网络中包括:连接一非虚拟化网络的主VXLAN隧道终端VTEP和备VTEP,其特征在于,所述装置应用于VTEP上,所述装置包括:隧道建立模块,用于当本设备为主VTEP和备VTEP的对端VTEP时,建立本设备与主VTEP之间的隧道,配置该隧道为主隧道,建立本设备与备VTEP之间的隧道,配置该隧道为备隧道;

接收模块,用于当本设备为主VTEP和备VTEP的对端VTEP时,接收要发往所述非虚拟化网络的用户报文;

发送模块,用于当本设备为主VTEP和备VTEP的对端VTEP时,在所述接收模块接收到要发往所述非虚拟化网络的用户报文之后,确定出该用户报文的出接口是隧道;若隧道表中该隧道的隧道状态为激活Active,则使用该隧道的目的IP地址,将该用户报文封装成VXLAN报文后通过该隧道转发出去;若所述隧道表中该隧道的隧道状态为非激活Inactive,则使用该隧道的关联隧道的目的IP地址,将该用户报文封装成VXLAN报文后通过该关联隧道转发出去;其中,当该隧道是主隧道时,该关联隧道是备隧道,当该隧道是备隧道时,该关联隧道是主隧道。

10.根据权利要求9所述的装置,其特征在于,所述发送模块包括:

隧道查找单元,用于若该隧道为主隧道,则根据主隧道的隧道ID,在所述隧道表中查找到主隧道对应的表项;若该隧道为备隧道,则根据备隧道的隧道ID,在所述隧道表中查找到备隧道对应的表项;

封装发送单元,用于在所述隧道查找单元查找到的主隧道对应的表项中的隧道状态为Active时,根据主隧道对应的表项中主隧道的源IP地址和目的IP地址,将所述接收模块接收到的用户报文封装成VXLAN报文后通过主隧道转发给主VTEP;在所述隧道查找单元查找到的备隧道对应的表项中的隧道状态为Active时,根据备隧道对应的表项中备隧道的源IP地址和目的IP地址,将所述接收模块接收到的用户报文封装成VXLAN报文后通过备隧道转发给备VTEP;在所述隧道查找单元查找到的主隧道对应的表项中的隧道状态为Inactive时,根据主隧道对应的表项中主隧道的源IP地址和备隧道的目的IP地址,将所述接收模块接收到的用户报文封装成VXLAN报文后通过备隧道转发给备VTEP;在所述隧道查找单元查找到的备隧道对应的表项中的隧道状态为Inactive时,根据备隧道对应的表项中备隧道的源IP地址和主隧道的目的IP地址,将所述接收模块接收到的用户报文封装成VXLAN报文后通过主隧道转发给主VTEP。

11.根据权利要求10所述的装置,其特征在于,所述隧道建立模块具体用于:在所述隧道表中添加主隧道对应的表项和备隧道对应的表项;其中,主隧道对应的表项中包括:隧道ID、主隧道的源IP地址和目的IP地址、备隧道的目的IP地址、以及置为Active的隧道状态;

备隧道对应的表项中包括:隧道ID、备隧道的源IP地址和目的IP地址、主隧道的目的IP地址、以及置为Inactive的隧道状态;

所述装置还包括:更新模块,用于当本设备为主VTEP和备VTEP的对端VTEP时,若主VTEP故障、或主隧道故障,则将所述主隧道对应的表项中的隧道状态更新为Inactive,将所述备隧道对应的表项中的隧道状态更新为Active;若主VTEP故障恢复且需要回切到主VTEP、或主隧道故障恢复且需要回切到主隧道,则将所述主隧道对应的表项中的隧道状态更新为Active,将所述备隧道对应的表项中的隧道状态更新为Inactive。

12.根据权利要求9所述的装置,其特征在于,

所述接收模块,还用于接收来自虚拟机VM的地址解析协议ARP报文;

所述发送模块,还用于当主VTEP和备VTEP作为VXLAN IP网关连接所述非虚拟化网络,且本设备为主VTEP和备VTEP的对端VTEP时,若主VTEP正常、或主隧道正常,则在所述接收模块接收到来自VM的ARP报文后,保存该ARP报文,将该ARP报文通过主隧道发送给主VTEP以及通过备隧道发送给备VTEP;若主VTEP故障恢复且需要回切到主VTEP、或主隧道故障恢复且需要回切到主隧道,则将本地保存的ARP报文通过主隧道发送给主VTEP。

13.根据权利要求12所述的装置,其特征在于,所述装置还包括:

配置模块,用于当主VTEP和备VTEP作为VXLAN IP网关连接所述非虚拟化网络,且本设备为主VTEP或备VTEP时,在所述接收模块接收到来自VM的ARP报文之后,根据该ARP报文,在VM路由信息表中配置VM对应的路由的表项,其中,该表项中包括:本设备与该VM所在的对端VTEP之间的隧道的隧道ID;

路由处理模块,用于当主VTEP和备VTEP作为VXLAN IP网关连接所述非虚拟化网络,且本设备为主VTEP或备VTEP时,在所述接收模块接收到来自VM的ARP报文之后,根据该ARP报文,向所述非虚拟化网络中与主VTEP和备VTEP直连的路由设备发布该VM对应的路由;其中,针对同一VM,主VTEP发布的路由的优先级高于备VTEP发布的路由的优先级;若本设备与对端VTEP之间的隧道故障,则根据故障隧道的隧道ID在所述VM路由信息表中查找到VM对应的路由,向所述路由设备回收查找到的VM对应的路由。

14.一种基于虚拟可扩展局域网VXLAN网络的报文转发装置,所述VXLAN网络中包括:作为VXLAN IP网关连接一非虚拟化网络的主VXLAN隧道终端VTEP和备VTEP,其特征在于,所述装置应用于所述非虚拟化网络中与主VTEP和备VTEP直连的路由设备上,所述装置包括:接收模块,用于接收主VTEP和备VTEP发布的虚拟机VM对应的路由,其中,针对同一VM,主VTEP发布的路由的优先级高于备VTEP发布的路由的优先级;还用于接收用户报文;

计算模块,用于根据所述接收模块接收到的主VTEP发布的VM对应的路由,计算出下一跳为主VTEP的从本设备到该VM的路由;根据所述接收模块接收到的备VTEP发布的该VM对应的路由,计算出下一跳为备VTEP的从本设备到该VM的路由;其中,针对同一VM,计算出的下一跳为主VTEP的路由的优先级高于下一跳为备VTEP的路由的优先级;

添加模块,用于针对所述计算模块计算出的从本设备到同一VM的至少两个路由,将下一跳为主VTEP的路由的表项添加到路由表中;

查找模块,用于在所述接收模块接收到用户报文之后,根据该用户报文的目的IP地址,在所述路由表中查找到对应表项;

发送模块,用于根据所述查找模块查找到的对应表项,将所述接收模块接收到的用户报文转发给主VTEP或备VTEP。

15.根据权利要求14所述的装置,其特征在于,还包括:更新模块,其中:

所述接收模块,还用于接收用于回收VM对应的路由的报文;

所述更新模块,用于若主VTEP故障,则删除所述计算模块计算出的下一跳为主VTEP的所有路由,删除所述路由表中下一跳为主VTEP的所有表项,将下一跳为备VTEP的所有路由的表项添加到所述路由表中;还用于在所述接收模块接收到来自主VTEP的用于回收VM对应的路由的报文之后,删除所述计算模块计算出的下一跳为主VTEP的从本设备到该VM的路由,删除所述路由表中下一跳为主VTEP的从本设备到该VM的路由的表项,将下一跳为备VTEP的从本设备到该VM的路由的表项添加到所述路由表中;还用于在所述计算模块根据所述接收模块接收到的主VTEP重新发布的VM对应的路由,重新计算出下一跳为主VTEP的从本设备到该VM的路由之后,将所述路由表中下一跳为备VTEP的从本设备到该VM的路由的表项删除,在所述路由表中添加下一跳为主VTEP的从本设备到该VM的路由的表项。

说明书 :

基于VXLAN网络的报文转发方法及装置

技术领域

[0001] 本申请涉及网络通信技术领域,特别涉及一种基于VXLAN网络的报文转发方法及装置。

背景技术

[0002] VXLAN(Virtual eXtensible Local Area Network,虚拟可扩展局域网)是一种基于IP(Internet Protocol,因特网协议)网络,并且采用“MAC(Media Access Control,媒体访问控制)in UDP(User Datagram Protocol,用户数据包协议)”封装形式的二层VPN(Virtual Private Network,虚拟专用网络)技术。VXLAN可以基于已有的服务提供商或企业IP网络,为分散的物理站点提供二层互联,并能够为不同的租户提供业务隔离。VXLAN作为网络虚拟化的核心技术,正在与SDN(Software Defined Network,软件定义网络)一起被越来越多的运用于大型数据中心网络。
[0003] VTEP(VXLAN Tunnel End Point,VXLAN隧道终端)是VXLAN网络的边缘设备,VTEP之间通过建立VXLAN隧道(VXLAN TUNNEL)来穿越三层网络(如IP核心网络)进行数据通信。VXLAN网络由VNI(VXLAN Network Identifier,VXLAN网络标识)唯一标识,VNI的长度为
24bit(比特)。
[0004] 当VXLAN网络需要与传统三层网络(即非虚拟化网络)进行通信时,就需要在VXLAN网络用于连接非虚拟化网络的边缘,架设一台支持二三层转发的VXLAN IP网关与外部的非虚拟化网络进行通信。此时,可以由一台独立设备作为VXLAN IP网关,一端连接VXLAN网络,另一端连接非虚拟化网络;也可以由VTEP充当VXLAN IP网关,一端连接VXLAN网络,另一端连接非虚拟化网络。
[0005] 现有技术中,为了提高链路可靠性,一般使用等价路径或备份路径来保护VTEP之间的链路,具体的,两个VTEP间存在等价路径或备份路径,当某一路径上发生了链路故障时,利用路由收敛自动将该路径上的数据流切换到其他路径上进行转发。但是,这种方式只能对VTEP之间的链路故障进行保护,存在局限性。

发明内容

[0006] 有鉴于此,本申请提供了一种基于VXLAN网络的报文转发方法及装置。
[0007] 本申请的技术方案如下:
[0008] 一方面,提供了一种基于VXLAN网络的报文转发方法,该VXLAN网络中包括:连接一非虚拟化网络的主VTEP和备VTEP,该方法应用于VTEP,该方法包括:
[0009] 当本设备为主VTEP和备VTEP的对端VTEP时,建立本设备与主VTEP之间的隧道,配置该隧道为主隧道,建立本设备与备VTEP之间的隧道,配置该隧道为备隧道;
[0010] 接收到要发往非虚拟化网络的用户报文之后,确定出该用户报文的出接口是隧道;
[0011] 若隧道表中该隧道的隧道状态为Active,则使用该隧道的目的IP地址,将该用户报文封装成VXLAN报文后通过该隧道转发出去;
[0012] 若隧道表中该隧道的隧道状态为Inactive,则使用该隧道的关联隧道的目的IP地址,将该用户报文封装成VXLAN报文后通过该关联隧道转发出去;其中,当该隧道是主隧道时,该关联隧道是备隧道,当该隧道是备隧道时,该关联隧道是主隧道。
[0013] 另一方面,还提供了一种基于VXLAN网络的报文转发方法,该VXLAN网络中包括:作为VXLAN IP网关连接一非虚拟化网络的主VTEP和备VTEP,该方法应用于非虚拟化网络中与主VTEP和备VTEP直连的路由设备,该方法包括:
[0014] 在接收到主VTEP发布的VM对应的路由之后,根据该VM对应的路由,计算出下一跳为主VTEP的从本设备到该VM的路由;
[0015] 在接收到备VTEP发布的VM对应的路由之后,根据该VM对应的路由,计算出下一跳为备VTEP的从本设备到该VM的路由;其中,针对同一VM,主VTEP发布的路由的优先级高于备VTEP发布的路由的优先级,计算出的下一跳为主VTEP的路由的优先级高于下一跳为备VTEP的路由的优先级;
[0016] 针对计算出的从本设备到同一VM的至少两个路由,将下一跳为主VTEP的路由的表项添加到路由表中;
[0017] 在接收到用户报文之后,根据该用户报文的目的IP地址,在路由表中查找到对应表项,根据该对应表项将该用户报文转发给主VTEP或备VTEP。
[0018] 又一方面,还提供了一种基于VXLAN网络的报文转发装置,该VXLAN网络中包括:连接一非虚拟化网络的主VTEP和备VTEP,该装置应用于VTEP上,该装置包括:
[0019] 隧道建立模块,用于当本设备为主VTEP和备VTEP的对端VTEP时,建立本设备与主VTEP之间的隧道,配置该隧道为主隧道,建立本设备与备VTEP之间的隧道,配置该隧道为备隧道;
[0020] 接收模块,用于当本设备为主VTEP和备VTEP的对端VTEP时,接收要发往非虚拟化网络的用户报文;
[0021] 发送模块,用于当本设备为主VTEP和备VTEP的对端VTEP时,在接收模块接收到要发往非虚拟化网络的用户报文之后,确定出该用户报文的出接口是隧道;若隧道表中该隧道的隧道状态为Active,则使用该隧道的目的IP地址,将该用户报文封装成VXLAN报文后通过该隧道转发出去;若隧道表中该隧道的隧道状态为Inactive,则使用该隧道的关联隧道的目的IP地址,将该用户报文封装成VXLAN报文后通过该关联隧道转发出去;其中,当该隧道是主隧道时,该关联隧道是备隧道,当该隧道是备隧道时,该关联隧道是主隧道。
[0022] 又一方面,还提供了一种基于VXLAN网络的报文转发装置,该VXLAN网络中包括:作为VXLAN IP网关连接一非虚拟化网络的主VTEP和备VTEP,该装置应用于非虚拟化网络中与主VTEP和备VTEP直连的路由设备上,该装置包括:
[0023] 接收模块,用于接收主VTEP和备VTEP发布的VM对应的路由,其中,针对同一VM,主VTEP发布的路由的优先级高于备VTEP发布的路由的优先级;还用于接收用户报文;
[0024] 计算模块,用于根据接收模块接收到的主VTEP发布的VM对应的路由,计算出下一跳为主VTEP的从本设备到该VM的路由;根据接收模块接收到的备VTEP发布的该VM对应的路由,计算出下一跳为备VTEP的从本设备到该VM的路由;其中,针对同一VM,计算出的下一跳为主VTEP的路由的优先级高于下一跳为备VTEP的路由的优先级;
[0025] 添加模块,用于针对计算模块计算出的从本设备到同一VM的至少两个路由,将下一跳为主VTEP的路由的表项添加到路由表中;
[0026] 查找模块,用于在接收模块接收到用户报文之后,根据该用户报文的目的IP地址,在路由表中查找到对应表项;
[0027] 发送模块,用于根据查找模块查找到的对应表项,将接收模块接收到的用户报文转发给主VTEP或备VTEP。
[0028] 本申请的以上技术方案中,通过为连接非虚拟化网络的VTEP部署备份VTEP,实现了VTEP设备故障、或VTEP间的链路故障时,VXLAN网络与非虚拟化网络之间的通信业务保护,提高了网络的健壮性和容错能力,增强了VXLAN网络的冗余保护功能。

附图说明

[0029] 图1是VXLAN网络的示意图;
[0030] 图2是VTEP充当VXLAN IP网关时,VXLAN网络与非虚拟化网络通信的组网示意图;
[0031] 图3是一台独立设备作为VXLAN IP网关时,VXLAN网络与非虚拟化网络通信的组网示意图;
[0032] 图4是在图2中使用等价路径或备份路径时的网络示意图;
[0033] 图5是在图3中使用等价路径或备份路径时的网络示意图;
[0034] 图6是本申请实施例的在图2中部署作为VXLAN IP网关的主VTEP和备VTEP的网络示意图;
[0035] 图7是本申请实施例的报文转发方法应用于如图6所示的网络时,在主VTEP和备VTEP上进行配置的流程图;
[0036] 图8是本申请实施例的报文转发方法应用于如图6所示的网络时,对端VTEP在主VTEP正常、或主隧道正常时的操作流程图;
[0037] 图9是本申请实施例的报文转发方法应用于如图6所示的网络时,对端VTEP在主VTEP故障、或主隧道故障时的操作流程图;
[0038] 图10是本申请实施例的报文转发方法应用于如图6所示的网络时,对端VTEP在主VTEP故障恢复且需要回切到主VTEP、或主隧道故障恢复且需要回切到主隧道时的操作流程图;
[0039] 图11是本申请实施例的在图3中部署主VTEP和备VTEP的网络示意图;
[0040] 图12是本申请实施例的包含报文转发装置的VTEP的硬件架构示意图;
[0041] 图13是本申请实施例的包含报文转发装置的路由设备的硬件架构示意图。

具体实施方式

[0042] 如图1所示,VXLAN网络通常由以下几个部分组成:
[0043] 服务器(Server):位于分散的物理站点中,一个站点中可以有一台或多台服务器。
[0044] VM:在一台服务器中可以创建多个VM,不同的VM可以属于不同的VXLAN。属于相同VXLAN的VM处于同一个逻辑二层网络,彼此之间二层互通;属于不同VXLAN的VM之间二层隔离。
[0045] VTEP:VXLAN网络的边缘设备,可以是一台独立的物理设备,也可以是VM所在的服务器。VTEP负责为来自VM的用户报文封装VXLAN头、UDP(User Datagram Protocol,用户数据包协议)头和IP(Internet Protocol,因特网协议)头,并将得到的VXLAN报文通过VXLAN隧道发送给目的VTEP;并且,将从VXLAN隧道上收到的VXLAN报文进行解封装,并将得到的用户报文发送给目的VM。
[0046] VXLAN隧道:VTEP之间的点到点的逻辑隧道。
[0047] 核心设备:IP核心网络中的设备(如图1中的P设备)。核心设备不参与VXLAN处理,仅需要根据VXLAN报文的目的IP地址,对VXLAN报文进行三层转发。
[0048] 如图2所示,当VXLAN网络与非虚拟化网络(例如,WAN(广域网))进行通信时,位于VXLAN网络用于连接非虚拟化网络的边缘的VTEP充当VXLAN IP网关,一端连接VXLAN网络,另一端连接非虚拟化网络中的路由设备。或者,如图3所示,当VXLAN网络与非虚拟化网络进行通信时,在位于VXLAN网络用于连接非虚拟化网络的边缘,架设一台独立的设备作为VXLAN IP网关,一端连接VXLAN网络中的VTEP,另一端连接非虚拟化网络中的路由设备。
[0049] 在现有技术中,为了提高链路可靠性,使用等价路径或备份路径的方法保护VTEP之间的链路。将该方法应用于如图2所示的组网中时的网络示意图如图4所示,VTEP1与作为VXLAN IP网关的VTEP2之间存在2条路径,其中,途径P1的路径是主路径,途径P2的路径是备路径;当主路径发生了链路故障时,可以将数据流切换到备路径上进行转发。将该方法应用于如图3所示的组网中时的网络示意图如图5所示,VTEP1与VTEP2之间存在2条路径,其中,途径P1的路径是主路径,途径P2的路径是备路径;当主路径发生了链路故障时,可以将数据流切换到备路径上进行转发。但是,这种方法只能保护VTEP之间的链路故障,对于VTEP本身的设备故障无法进行保护。当连接非虚拟化网络的VTEP发生故障时,例如,图4或图5中的VTEP2发生故障,此时,就无法使用等价路径或备份路径的方法对VXLAN网络与非虚拟化网络之间的通信业务进行保护。
[0050] 本申请以下实施例中提供了一种基于VXLAN网络的报文转发方法,以及一种可以应用该方法的报文转发装置,旨在实现如图2或图3所示的网络架构中,VTEP本身故障时的通信业务保护。在VXLAN网络中部署具有主备关系的主VTEP和备VTEP连接一非虚拟化网络,主VTEP和备VTEP的对端VTEP会建立本设备与主VTEP之间的隧道,并配置该隧道为主隧道,建立本设备与备VTEP之间的隧道,并配置该隧道为备隧道。这样,若主VTEP正常、或主隧道正常,则在接收到要发往该非虚拟化网络的用户报文之后,该对端VTEP可以将该用户报文通过主隧道发送给主VTEP,从而通过主VTEP将该用户报文转发给该非虚拟化网络中的目的设备;若主VTEP故障、或主隧道故障,则在接收到要发往该非虚拟化网络的用户报文之后,对端VTEP可以将该用户报文通过备隧道发送给备VTEP,从而通过备VTEP将该用户报文转发给该非虚拟化网络中的目的设备;若主VTEP故障恢复且需要回切到主VTEP、或主隧道故障恢复且需要回切到主隧道,则在接收到要发往该非虚拟化网络的用户报文之后,对端VTEP可以将该用户报文通过主隧道发送给主VTEP,从而通过主VTEP将该用户报文转发给该非虚拟化网络中的目的设备。
[0051] 从而,通过为连接非虚拟化网络的VTEP部署备份VTEP,实现了VTEP设备故障、或VTEP间链路故障时,VXLAN网络与非虚拟化网络之间的通信业务保护,提高了网络的健壮性和容错能力,增强了VXLAN网络的冗余保护功能。
[0052] 如图6所示,在VXLAN网络用于连接非虚拟化网络的边缘部署至少两个互为主备关系的VTEP作为VXLAN IP网关,对途径的通信业务进行保护。例如,可以部署一个主VTEP和一个备VTEP进行1:1备份,也可以部署一个主VTEP和多个(记为N,N为大于1的自然数)备VTEP进行1:N备份,这样,主VTEP同时作为主VXLAN IP网关,备VTEP同时作为备VXLAN IP网关。图6中以部署一个主VTEP和一个备VTEP为例进行说明。
[0053] 应用于如图6所示的网络架构中时的报文转发方法包括以下几个方面的内容:
[0054] 配置过程:
[0055] 如图7所示,在作为主VXLAN IP网关的主VTEP和作为备VXLAN IP网关的备VTEP上进行如下配置:
[0056] 步骤S102,在主VTEP和备VTEP上配置发布VM对应的路由的优先级,其中,针对同一VM对应的路由,主VTEP上配置的优先级高于备VTEP;
[0057] 步骤S104,在主VTEP上,建立主VTEP与对端VTEP之间的隧道;在备VTEP上,建立备VTEP与同一对端VTEP之间的隧道;
[0058] 具体的,在TUNNEL表中添加对应的表项,添加的表项中可以包括:隧道ID、隧道的源IP地址和目的IP地址、以及隧道状态,隧道状态置为Active(激活)。
[0059] 若主VTEP故障、或主VTEP与对端VTEP之间的隧道故障,则主VTEP会将TUNNEL表中该隧道对应的表项中的隧道状态更新为Inactive(非激活),若主VTEP故障恢复、或主VTEP与对端VTEP之间的隧道故障恢复,则主VTEP会将TUNNEL表中该隧道对应的表项中的隧道状态更新为Active。同样,备隧道也会执行相同的操作。
[0060] 步骤S106,在主VTEP和备VTEP上,为每一个VXLAN配置对应的网关IP地址和网关MAC地址,其中,在主VTEP和备VTEP上,对应于同一VXLAN的网关IP地址相同,对应于同一VXLAN的网关MAC地址也相同。这样,主/备VXLAN IP网关对VM透明,在主/备VXLAN IP网关切换前后网关IP地址和网关MAC地址不会发生变化,VM总是通过同一网关MAC地址来访问非虚拟化网络。
[0061] VM可以通过现有的ARP(Address Resolution Protocol,地址解析协议)请求过程获取到所属VXLAN对应的网关MAC地址和网关IP地址,以便在向非虚拟化网络发送用户报文时使用。
[0062] 上述步骤S102~步骤S106之间没有特定的先后顺序。
[0063] 在主VTEP和备VTEP的对端VTEP上进行如下配置:建立本设备与主VTEP之间的隧道,配置该隧道为主隧道,建立本设备与备VTEP之间的隧道,配置该隧道为备隧道,具体的,在TUNNEL表中添加主隧道对应的表项和备隧道对应的表项;其中,添加的表项中包括:隧道ID、隧道的源IP地址和目的IP地址、关联隧道的目的IP地址、隧道状态、以及主备信息。其中,在主隧道对应的表项中,关联隧道是备隧道,隧道状态置为Active(激活),主备信息为主(Master);在备隧道对应的表项中,关联隧道是主隧道,隧道状态置为Inactive(非激活),主备信息为备(Backup)。
[0064] 在实际实施过程中,上述配置过程可以采用手动配置方式进行,也可以由SDN(Software Defined Network,软件定义网络)控制器(Controller)进行配置,本申请对此不做限定。
[0065] 在图6中,主VTEP和备VTEP的对端VTEP为VTEP1;在作为主VXLAN IP网关的主VTEP上建立主VTEP与VTEP1之间的隧道,该隧道的隧道ID为1;在作为备VXLAN IP网关的备VTEP上建立备VTEP与VTEP1之间的隧道,该隧道的隧道ID为2;在VTEP1上,建立VTEP1与主VTEP之间的隧道,该隧道的隧道ID为1,配置该隧道为主隧道,建立VTEP1与备VTEP之间的隧道,该隧道的隧道ID为2,配置该隧道为备隧道;则主VTEP上的TUNNEL表中添加的表项可以如表1-1所示,备VTEP上的TUNNEL表中添加的表项可以如表1-2所示,VTEP1上的TUNNEL表中添加的表项可以如表1-3所示:
[0066] 表1-1
[0067]
[0068] 表1-2
[0069]
[0070] 表1-3
[0071]
[0072] 其中,在表1-3中,M(Master)表示对应隧道为主隧道,B(Backup)表示对应隧道为备隧道。
[0073] MAC地址学习过程:
[0074] 包括主VTEP、备VTEP、对端VTEP在内的各个设备的MAC地址学习过程与现有技术相同,即,采用源MAC地址学习方式学习接收到的用户报文和VXLAN报文的源MAC地址,并在MAC地址转发表中添加相应表项。MAC地址转发表的格式可以如表2所示:
[0075] 表2
[0076]MAC地址 VXLAN 出接口
[0077] 在表2中,在接收到用户报文之后添加的表项中的出接口为:本设备用于连接发来该用户报文的设备的实际物理端口,在接收到VXLAN报文之后添加的表项中的出接口为:接收到该VXLAN报文的隧道,以隧道ID标识。
[0078] VM对应的路由学习和发布过程:
[0079] 对端VTEP在接收到来自VM的ARP报文之后,保存该ARP报文,将该ARP报文通过主隧道发送给主VTEP以及通过备隧道发送给备VTEP。由于ARP报文是广播报文,对端VTEP接收到ARP报文之后,会向所属VXLAN内的所有接口复制并转发该ARP报文,其中,与正常数据流转发不同的是:对于ARP报文而言,不仅要通过主隧道发送,也要通过备隧道发送,从而,主VTEP和备VTEP都会接收到来自VM的ARP报文。
[0080] 主VTEP和备VTEP在接收到该ARP报文之后,根据该ARP报文学习到VM对应的路由,具体的,在VM路由信息表中添加VM对应的路由的表项,其中,该表项中包括:VM的IP地址、VM的MAC地址、VXLAN、本设备与该VM所在的对端VTEP之间的隧道的隧道ID;该表项可以如表3所示:
[0081] 表3
[0082]
[0083] 在表3中,VM1直连的对端VTEP为VTEP1。
[0084] 主VTEP向非虚拟化网络中与主VTEP和备VTEP直连的路由设备发布VM对应的路由,备VTEP也会向该路由设备发布同一VM对应的路由,且主VTEP发布的路由的优先级高于备VTEP。这样,该路由设备在接收到主VTEP发布的该VM对应的路由之后,在协议层面上,会计算出下一跳为主VTEP的从本设备到该VM的路由,并且,在接收到备VTEP发布的该VM对应的路由之后,也会计算出下一跳为备VTEP的从本设备到该VM的路由,其中,下一跳为主VTEP的路由的优先级高于下一跳为备VTEP的路由的优先级;然后,会将优先级最高的从本设备到该VM的路由下发到路由表中,即,在路由表中添加一表项,该表项中包含有下一跳为主VTEP的路由。
[0085] 在实际实施过程中,也可以采用除ARP协议以外的其它控制协议来实现VM对应的路由的学习,或者,还可以通过SDN控制器来实现VM对应的路由的学习,本申请对此不做限定。
[0086] VXLAN隧道的连通性检测过程:
[0087] 主VTEP、备VTEP和对端VTEP各自对VXLAN隧道进行连通性检测。在实际实施过程中,可以利用BFD(Bidirectional Forwarding Detection,双向转发检测)对VXLAN隧道进行检测。具体的,使用隧道的源IP地址和目的IP地址建立BFD会话,检测VXLAN隧道的连通性。如果VTEP之间存在等价路径或备份路径,在进行BFD时应考虑路由收敛的影响,避免BFD误检。
[0088] VM→非虚拟化网络方向的报文转发过程:
[0089] 主VTEP正常、或主隧道正常的情况下,此时,对端VTEP(如图6中的VTEP1)通过BFD检测到本设备与主VTEP之间的隧道的状态正常,该对端VTEP需要执行的操作包括以下步骤,如图8所示:
[0090] 步骤S202,接收到VM发来的用户报文之后,根据该用户报文的目的MAC地址(即所属VXLAN对应的网关MAC地址)和所属VXLAN,在如表2所示的MAC地址转发表中查找到对应的出接口;
[0091] 其中,所属VLAN的确定方式可以是:根据该用户报文的入端口确定对应的VXLAN,也可以根据该用户报文的入端口和VLAN确定对应的VXLAN。
[0092] 步骤S204,判断查找到的出接口是主隧道还是备隧道,若是主隧道,则执行步骤S206,若是备隧道,则执行步骤S208;
[0093] 步骤S206,根据主隧道的隧道ID,在如表1-3所示的隧道表中查找到主隧道对应的表项,若主隧道对应的表项中的隧道状态为Active,则根据主隧道对应的表项中主隧道的源IP地址和目的IP地址,将该用户报文封装成VXLAN报文后转发出去,从而,通过主隧道转发给了主VTEP。
[0094] 步骤S208,根据备隧道的隧道ID,在如表1-3所示的隧道表中查找到备隧道对应的表项,若备隧道对应的表项中的隧道状态为Inactive,则根据备隧道对应的表项中备隧道的源IP地址和主隧道的目的IP地址,将该用户报文封装成VXLAN报文后转发出去,从而,通过主隧道转发给了主VTEP。
[0095] 主VTEP接收到该VXLAN报文后进行解封装得到用户报文,然后,根据该用户报文的目的IP地址在路由表中查找到下一跳等转发信息,查找到的下一跳即为非虚拟化网络中与主VTEP和备VTEP直连的路由设备,从而,可以将该用户报文转发给该路由设备,并由该路由设备继续转发给非虚拟化网络中的目的设备。
[0096] 主VTEP故障、或主隧道故障的情况下,此时,对端VTEP(如图6中的VTEP1)会通过BFD检测到本设备与主VTEP之间的隧道的状态变为异常,该对端VTEP需要执行的操作包括以下步骤,如图9所示:
[0097] 步骤S302,将如表1-3所示的TUNNEL表中主隧道对应的表项中的隧道状态更新为Inactive,将备隧道对应的表项中的隧道状态更新为Active;此时,如表1-3所示的TUNNEL表更新为如表4所示:
[0098] 表4
[0099]
[0100] 步骤S304,接收到VM发来的用户报文之后,根据该用户报文的目的MAC地址和所属VXLAN,在如表2所示的MAC地址转发表中查找到对应的出接口;
[0101] 步骤S306,判断查找到的出接口是主隧道还是备隧道,若是主隧道,则执行步骤S308,若是备隧道,则执行步骤S310;
[0102] 步骤S308,根据主隧道的隧道ID,在如表4所示的隧道表中查找到主隧道对应的表项,若主隧道对应的表项中的隧道状态为Inactive,则根据主隧道对应的表项中主隧道的源IP地址和备隧道的目的IP地址,将该用户报文封装成VXLAN报文后转发出去,从而,通过备隧道转发给了备VTEP;
[0103] 步骤S310,根据备隧道的隧道ID,在如表4所示的隧道表中查找到备隧道对应的表项,若备隧道对应的表项中的隧道状态为Active,则根据备隧道对应的表项中备隧道的源IP地址和目的IP地址,将该用户报文封装成VXLAN报文后转发出去,从而,通过备隧道转发给了备VTEP。
[0104] 备VTEP接收到该VXLAN报文后进行解封装得到用户报文,然后,根据该用户报文的目的IP地址在路由表中查找到下一跳等转发信息,查找到的下一跳即为非虚拟化网络中与主VTEP和备VTEP直连的路由设备,从而,可以将该用户报文转发给该路由设备,并由该路由设备继续转发给非虚拟化网络中的目的设备。
[0105] 主VTEP故障恢复且需要回切到主VTEP、或主隧道故障恢复且需要回切到主隧道的情况下,对端VTEP(如图6中的VTEP1)会通过BFD检测到本设备与主VTEP之间的隧道的状态变为正常,该对端VTEP需要执行的操作包括以下步骤,如图10所示:
[0106] 步骤S402,将如表4所示的TUNNEL表中主隧道对应的表项中的隧道状态更新为Active,将备隧道对应的表项中的隧道状态更新为Inactive;此时,如表4所示的TUNNEL表更新为如表1-3所示;
[0107] 步骤S404,接收到VM发来的用户报文之后,根据该用户报文的目的MAC地址和所属VXLAN,在如表2所示的MAC地址转发表中查找到对应的出接口;
[0108] 步骤S406,判断查找到的出接口是主隧道还是备隧道,若是主隧道,则执行步骤S408,若是备隧道,则执行步骤S410;
[0109] 步骤S408,根据主隧道的隧道ID,在如表1-3所示的隧道表中查找到主隧道对应的表项,若主隧道对应的表项中的隧道状态为Active,则根据主隧道对应的表项中主隧道的源IP地址和目的IP地址,将该用户报文封装成VXLAN报文后转发出去,从而,通过主隧道转发给了主VTEP;
[0110] 步骤S410,根据备隧道的隧道ID,在如表1-3所示的隧道表中查找到备隧道对应的表项,若备隧道对应的表项中的隧道状态为Inactive,则根据备隧道对应的表项中备隧道的源IP地址和主隧道的目的IP地址,将该用户报文封装成VXLAN报文后转发出去,从而,通过主隧道转发给了主VTEP。
[0111] 主VTEP接收到该VXLAN报文后进行解封装得到用户报文,然后,根据该用户报文的目的IP地址在路由表中查找到下一跳等转发信息,查找到的下一跳即为非虚拟化网络中与主VTEP和备VTEP直连的路由设备,从而,可以将该用户报文转发给该路由设备,并由该路由设备继续转发给非虚拟化网络中的目的设备。
[0112] 非虚拟化网络→VM方向的报文转发过程:
[0113] 主VTEP正常、或主隧道正常的情况下,非虚拟化网络中与主VTEP和备VTEP直连的路由设备接收到用户报文后,根据该用户报文的目的IP地址,即目的VM的IP地址,在路由表中查找到下一跳为主VTEP的从本设备到目的VM的路由的表项,则根据该表项,将该用户报文发送给主VTEP;主VTEP可以按照现有技术将该用户报文封装成VXLAN报文后转发给目的VM所在的对端VTEP,具体的,根据该用户报文的目的IP地址,在如表3所示的VM路由信息表中查找到目的VM的MAC地址、VXLAN和出接口,并根据这些信息将该用户报文封装成VXLAN报文后转发给对端VTEP;对端VTEP接收到该VXLAN报文后进行解封装得到用户报文,根据该用户报文的目的MAC地址,即,目的VM的MAC地址,在MAC地址转发表中查找到出接口,通过查找到的出接口将该用户报文转发给目的VM。
[0114] 主VTEP故障的情况下,上述路由设备通过现有的三层路由快速收敛技术,使路由协议快速收敛,删除协议层面上计算出的下一跳为主VTEP的所有路由,删除路由表中下一跳为主VTEP的所有表项,在路由表中添加下一跳为备VTEP的所有路由的表项。该路由设备接收到用户报文后,根据该用户报文的目的IP地址,即目的VM的IP地址,在路由表中查找到下一跳为备VTEP的从本设备到目的VM的路由的表项,则根据该表项,将该用户报文发送给备VTEP;备VTEP可以按照现有技术将该用户报文封装成VXLAN报文后转发给目的VM所在的对端VTEP;对端VTEP接收到该VXLAN报文后进行解封装得到用户报文,根据该用户报文的目的MAC地址,即,目的VM的MAC地址,在MAC地址转发表中查找到出接口,通过查找到的出接口将该用户报文转发给目的VM。
[0115] 主隧道故障的情况下,此时主VTEP通过BFD检测到本设备与对端VTEP之间的隧道的状态变为异常,则根据该故障隧道的隧道ID在VM路由信息表中查找到VM对应的路由,然后,向上述路由设备回收查找到的VM对应的路由,即,向该路由设备发送用于回收查找到的VM对应的路由的报文;该路由设备在接收到用于回收VM对应的路由的报文之后,删除计算出的下一跳为主VTEP的从本设备到该VM的路由,删除路由表中下一跳为主VTEP的从本设备到该VM的路由的表项,将下一跳为备VTEP的从本设备到该VM的路由的表项添加到路由表中。该路由设备接收到用户报文后,根据该用户报文的目的IP地址,即目的VM的IP地址,在路由表中查找到对应表项,假设,此时主VTEP与目的VM所在的对端VTEP之间的隧道故障,则该对应表项中的下一跳为备VTEP,根据该对应表项,将该用户报文发送给备VTEP;备VTEP可以按照现有技术将该用户报文封装成VXLAN报文后转发给目的VM所在的对端VTEP;对端VTEP接收到该VXLAN报文后进行解封装得到用户报文,根据该用户报文的目的MAC地址,即,目的VM的MAC地址,在MAC地址转发表中查找到出接口,通过查找到的出接口将该用户报文转发给目的VM。
[0116] 主VTEP故障恢复且需要回切到主VTEP、或主隧道故障恢复且需要回切到主隧道的情况下,对端VTEP会将本地保存的ARP报文通过主隧道重新发送给主VTEP;主VTEP接收到这些ARP报文后,根据这些ARP报文重新学习到VM对应的路由,并重新以较高的优先级向上述路由设备发布VM对应的路由;上述路由设备收到后,在协议层面上会重新计算出下一跳为主VTEP的从本设备到该VM的路由,此时,下一跳为主VTEP的从本设备到该VM的路由的优先级是最高的,路由设备会将路由表中下一跳为备VTEP的从本设备到该VM的路由的表项删除,在路由表中添加下一跳为主VTEP的从本设备到该VM的路由的表项。路由设备接收到用户报文后,根据该用户报文的目的IP地址,即目的VM的IP地址,在路由表中查找到下一跳为主VTEP的表项,则将该用户报文发送给主VTEP;主VTEP可以按照现有技术将该用户报文封装成VXLAN报文后转发给目的VM所在的对端VTEP;对端VTEP接收到该VXLAN报文后进行解封装得到用户报文,根据该用户报文的目的MAC地址,即,目的VM的MAC地址,在MAC地址转发表中查找到出接口,通过查找到的出接口将该用户报文转发给目的VM。
[0117] 如图11所示,在VXLAN网络用于连接非虚拟化网络的边缘部署至少两个互为主备关系的VTEP,对途径的通信业务进行保护。例如,可以部署一个主VTEP和一个备VTEP进行1:1备份,也可以部署一个主VTEP和多个(记为N,N为大于1的自然数)备VTEP进行1:N备份,这样,主VTEP和备VTEP均通过VXLAN IP网关连接非虚拟化网络。图11中以部署一个主VTEP和一个备VTEP为例进行说明。
[0118] 应用于如图11所示的网络架构中时的报文转发方法包括以下几个方面的内容:
[0119] 配置过程:
[0120] 在主VTEP和备VTEP上进行如下配置:在主VTEP上,建立主VTEP与对端VTEP之间的隧道;在备VTEP上,建立备VTEP与同一对端VTEP之间的隧道;具体的,在TUNNEL表中添加对应的表项,添加的表项中包括:隧道ID、隧道的源IP地址和目的IP地址、以及隧道状态,隧道状态置为Active。
[0121] 在主VTEP和备VTEP的对端VTEP上进行如下配置:建立本设备与主VTEP之间的隧道,配置该隧道为主隧道,建立本设备与备VTEP之间的隧道,配置该隧道为备隧道,具体的,在TUNNEL表中添加主隧道对应的表项和备隧道对应的表项;其中,添加的表项中包括:隧道ID、隧道的源IP地址和目的IP地址、关联隧道的目的IP地址、隧道状态、以及主备信息。其中,在主隧道对应的表项中,关联隧道是备隧道,隧道状态置为Active,主备信息为主;在备隧道对应的表项中,关联隧道是主隧道,隧道状态置为Inactive),主备信息为备。
[0122] 在与主VTEP和备VTEP直连的VXLAN IP网关上进行如下配置:在该VXLAN IP网关与主VTEP之间的链路和该VXLAN IP网关与备VTEP之间的链路上,启动二层主备冗余链路保护。具体的,配置该VXLAN IP网关与主VTEP之间的链路为主用链路,以及该VXLAN IP网关与备VTEP之间的链路为备用链路,当主用链路的状态正常时,启用主用链路,将备用链路设置为阻塞状态,禁止数据流通过备用链路转发;当主用链路故障时,启用备用链路转发数据流。二层主备冗余链路保护可以利用现有的各种二层保护技术,例如:冗余组技术或STP(Spanning Tree Protocol,生成树协议)等。
[0123] 在图11中,主VTEP和备VTEP的对端VTEP为VTEP1;在主VTEP上建立主VTEP与VTEP1之间的隧道,该隧道的隧道ID为1;在备VTEP上建立备VTEP与VTEP1之间的隧道,该隧道的隧道ID为2;在VTEP1上,建立VTEP1与主VTEP之间的隧道,该隧道的隧道ID为1,配置该隧道为主隧道,建立VTEP1与备VTEP之间的隧道,该隧道的隧道ID为2,配置该隧道为备隧道;则主VTEP上的TUNNEL表中添加的表项可以如表1-1所示,备VTEP上的TUNNEL表中添加的表项可以如表1-2所示,VTEP1上的TUNNEL表中添加的表项可以如表1-3所示。
[0124] MAC地址学习过程和VXLAN隧道的连通性检测过程,与应用于如图6所示的网络架构中时的报文转发方法相同,这里不再赘述。
[0125] VM→非虚拟化网络方向的报文转发过程:
[0126] 主VTEP正常、或主隧道正常的情况下,此时,对端VTEP(如图11中的VTEP1)通过BFD检测到本设备与主VTEP之间的隧道的状态正常,该对端VTEP需要执行的操作包括如图8所示的步骤S202~步骤S208。主VTEP接收到该VXLAN报文后进行解封装得到用户报文,然后,根据该用户报文的目的MAC地址和所属VXLAN在MAC地址表中查找到出接口,查找到的出接口即为主VTEP上连接VXLAN IP网关的端口,从而,可以将该用户报文转发给该VXLAN IP网关,并由该VXLAN IP网关通过直连的路由设备继续转发给非虚拟化网络中的目的设备。
[0127] 主VTEP故障、或主隧道故障的情况下,此时,对端VTEP(如图11中的VTEP1)会通过BFD检测到本设备与主VTEP之间的隧道的状态变为异常,该对端VTEP需要执行的操作包括如图9所示的步骤S302~步骤S310。备VTEP接收到该VXLAN报文后进行解封装得到用户报文,然后,根据该用户报文的目的MAC地址和所属VXLAN在MAC地址表中查找到出接口,查找到的出接口即为备VTEP上连接VXLAN IP网关的端口,从而,可以将该用户报文转发给该VXLAN IP网关,并由该VXLAN IP网关通过直连的路由设备继续转发给非虚拟化网络中的目的设备。
[0128] 主VTEP故障恢复且需要回切到主VTEP、或主隧道故障恢复且需要回切到主隧道的情况下,对端VTEP(如图11中的VTEP1)会通过BFD检测到本设备与主VTEP之间的隧道的状态变为正常,该对端VTEP需要执行的操作包括如图10所示的步骤S402~步骤S410。主VTEP接收到该VXLAN报文后进行解封装得到用户报文,然后,根据该用户报文的目的MAC地址和所属VXLAN在MAC地址表中查找到出接口,查找到的出接口即为主VTEP上连接VXLAN IP网关的端口,从而,可以将该用户报文转发给该VXLAN IP网关,并由该VXLAN IP网关通过直连的路由设备继续转发给非虚拟化网络中的目的设备。
[0129] 非虚拟化网络→VM方向的报文转发过程:
[0130] 主VTEP正常、或主隧道正常的情况下,与主VTEP直连的VXLAN IP网关会启用主用链路,并阻塞备用链路,因此,该VXLAN IP网关接收到非虚拟化网络中的路由设备发来的用户报文之后,通过主用链路转发给主VTEP;主VTEP可以按照现有技术将该用户报文封装成VXLAN报文后转发给目的VM所在的对端VTEP,具体的,根据该用户报文的目的MAC地址(即目的VM的MAC地址)和所属VXLAN,在MAC地址转发表中查找到出接口,该出接口为主VTEP与目的VM所在的对端VTEP之间的隧道的隧道ID,然后,根据该隧道ID在TUNNEL表中查找到对应的转发信息,根据该转发信息将该用户报文封装成VXLAN报文后转发给该对端VTEP;对端VTEP接收到该VXLAN报文后进行解封装得到用户报文,根据该用户报文的目的MAC地址,即,目的VM的MAC地址,在MAC地址转发表中查找到出接口,通过查找到的出接口将该用户报文转发给目的VM。
[0131] 主VTEP故障、或主隧道故障的情况下,该VXLAN IP网关会启用备用链路,因此,该VXLAN IP网关接收到非虚拟化网络中的路由设备发来的用户报文之后,通过备用链路转发给备VTEP;备VTEP可以按照现有技术将该用户报文封装成VXLAN报文后转发给目的VM所在的对端VTEP;对端VTEP接收到该VXLAN报文后进行解封装得到用户报文,根据该用户报文的目的MAC地址,即,目的VM的MAC地址,在MAC地址转发表中查找到出接口,通过查找到的出接口将该用户报文转发给目的VM。
[0132] 主VTEP故障恢复且需要回切到主VTEP、或主隧道故障恢复且需要回切到主隧道的情况下,VXLAN IP网关会重新启用主用链路,并阻塞备用链路,因此,该VXLAN IP网关接收到非虚拟化网络中的路由设备发来的用户报文之后,通过主用链路转发给主VTEP;主VTEP可以按照现有技术将该用户报文封装成VXLAN报文后转发给目的VM所在的对端VTEP;对端VTEP接收到该VXLAN报文后进行解封装得到用户报文,根据该用户报文的目的MAC地址,即,目的VM的MAC地址,在MAC地址转发表中查找到出接口,通过查找到的出接口将该用户报文转发给目的VM。
[0133] 本申请具体实施例的VTEP和路由设备是可以软硬件结合的可编程设备。从硬件层面而言,VTEP的硬件架构示意图具体可以参见图12,路由设备的硬件架构示意图具体可以参见图13。
[0134] 图12为本申请具体实施例中包含报文转发装置的VTEP的硬件结构示意图。该VTEP中包括:非易失性存储器、CPU(中央处理器)、转发芯片、内存和其它硬件;其中:
[0135] 非易失性存储器,用于存储指令代码;所述指令代码被CPU执行时完成的操作主要为内存中的报文转发装置完成的功能。
[0136] CPU,用于与转发芯片通信,接收转发芯片上送来的用户报文,将VXLAN报文发送给转发芯片,接收转发芯片上送来的来自VM的ARP报文,并且,当本设备作为VXLAN IP网关时,将封装有ARP报文的VXLAN报文发送给转发芯片,将要发布的VM对应的路由发送给转发芯片;用于与非易失性存储器通信,读取和执行非易失性存储器中存储的所述指令代码,完成上述报文转发装置完成的功能。
[0137] 转发芯片,用于将接收到的用户报文上送给CPU,将CPU发来的VXLAN报文通过隧道发送给对端VTEP,将接收到的来自VM的ARP报文上送给CPU,并且,当本设备作为VXLAN IP网关时,将CPU发来的封装有ARP报文的VXLAN报文通过隧道发送给对端VTEP,将CPU发来的VM对应的路由发送给非虚拟化网络中与本设备直连的路由设备。
[0138] 内存,当非易失性存储器中的所述指令代码被执行时完成的操作主要为内存中的报文转发装置完成的功能。
[0139] 如图12所示,从软件层面而言,应用于VTEP中的报文转发装置中包括以下模块:隧道建立模块501、接收模块502和发送模块503,其中:
[0140] 隧道建立模块501,用于当本设备为主VTEP和备VTEP的对端VTEP时,建立本设备与主VTEP之间的隧道,配置该隧道为主隧道,建立本设备与备VTEP之间的隧道,配置该隧道为备隧道;
[0141] 接收模块502,用于当本设备为主VTEP和备VTEP的对端VTEP时,接收要发往非虚拟化网络的用户报文;
[0142] 发送模块503,用于当本设备为主VTEP和备VTEP的对端VTEP时,在接收模块502接收到要发往非虚拟化网络的用户报文之后,确定出该用户报文的出接口是隧道;若隧道表中该隧道的隧道状态为Active,则使用该隧道的目的IP地址,将该用户报文封装成VXLAN报文后通过该隧道转发出去;若隧道表中该隧道的隧道状态为Inactive,则使用该隧道的关联隧道的目的IP地址,将该用户报文封装成VXLAN报文后通过该关联隧道转发出去;其中,当该隧道是主隧道时,该关联隧道是备隧道,当该隧道是备隧道时,该关联隧道是主隧道。
[0143] 其中,发送模块中可以包括:隧道查找单元和封装发送单元,其中:
[0144] 隧道查找单元,用于若该隧道为主隧道,则根据主隧道的隧道ID,在隧道表中查找到主隧道对应的表项;若该隧道为备隧道,则根据备隧道的隧道ID,在隧道表中查找到备隧道对应的表项;
[0145] 封装发送单元,用于在隧道查找单元查找到的主隧道对应的表项中的隧道状态为Active时,根据主隧道对应的表项中主隧道的源IP地址和目的IP地址,将接收模块接收到的用户报文封装成VXLAN报文后通过主隧道转发给主VTEP;在隧道查找单元查找到的备隧道对应的表项中的隧道状态为Active时,根据备隧道对应的表项中备隧道的源IP地址和目的IP地址,将接收模块接收到的用户报文封装成VXLAN报文后通过备隧道转发给备VTEP;在隧道查找单元查找到的主隧道对应的表项中的隧道状态为Inactive时,根据主隧道对应的表项中主隧道的源IP地址和备隧道的目的IP地址,将接收模块接收到的用户报文封装成VXLAN报文后通过备隧道转发给备VTEP;在隧道查找单元查找到的备隧道对应的表项中的隧道状态为Inactive时,根据备隧道对应的表项中备隧道的源IP地址和主隧道的目的IP地址,将接收模块接收到的用户报文封装成VXLAN报文后通过主隧道转发给主VTEP。
[0146] 其中,隧道建立模块具体用于:在隧道表中添加主隧道对应的表项和备隧道对应的表项;其中,主隧道对应的表项中包括:隧道ID、主隧道的源IP地址和目的IP地址、备隧道的目的IP地址、以及置为Active的隧道状态;备隧道对应的表项中包括:隧道ID、备隧道的源IP地址和目的IP地址、主隧道的目的IP地址、以及置为Inactive的隧道状态。
[0147] 另外,如图12所示,该报文转发装置中还可以包括:保存模块504和更新模块505,其中:
[0148] 保存模块504,用于保存隧道表;
[0149] 更新模块505,用于当本设备为主VTEP和备VTEP的对端VTEP时,若主VTEP故障、或主隧道故障,则将主隧道对应的表项中的隧道状态更新为Inactive,将备隧道对应的表项中的隧道状态更新为Active;若主VTEP故障恢复且需要回切到主VTEP、或主隧道故障恢复且需要回切到主隧道,则将主隧道对应的表项中的隧道状态更新为Active,将备隧道对应的表项中的隧道状态更新为Inactive。
[0150] 另外,接收模块502,还用于接收来自VM的ARP报文;发送模块503,还用于当主VTEP和备VTEP作为VXLAN IP网关连接非虚拟化网络,且本设备为主VTEP和备VTEP的对端VTEP时,若主VTEP正常、或主隧道正常,则在接收模块502接收到来自VM的ARP报文后,保存该ARP报文,将该ARP报文通过主隧道发送给主VTEP以及通过备隧道发送给备VTEP;若主VTEP故障恢复且需要回切到主VTEP、或主隧道故障恢复且需要回切到主隧道,则将本地保存的ARP报文通过主隧道发送给主VTEP。
[0151] 另外,如图12所示,该报文转发装置中还可以包括:配置模块506和路由处理模块507,其中:
[0152] 配置模块506,用于当主VTEP和备VTEP作为VXLAN IP网关连接非虚拟化网络,且本设备为主VTEP或备VTEP时,在接收模块502接收到来自VM的ARP报文之后,根据该ARP报文,在VM路由信息表中配置VM对应的路由的表项,其中,该表项中包括:本设备与该VM所在的对端VTEP之间的隧道的隧道ID;
[0153] 保存模块504,还用于保存VM路由信息表;
[0154] 路由处理模块507,用于当主VTEP和备VTEP作为VXLAN IP网关连接非虚拟化网络,且本设备为主VTEP或备VTEP时,在接收模块502接收到来自VM的ARP报文之后,根据该ARP报文,向非虚拟化网络中与主VTEP和备VTEP直连的路由设备发布该VM对应的路由;其中,针对同一VM,主VTEP发布的路由的优先级高于备VTEP发布的路由的优先级;若本设备与对端VTEP之间的隧道故障,则根据故障隧道的隧道ID在VM路由信息表中查找到VM对应的路由,向路由设备回收查找到的VM对应的路由。
[0155] 图13为本申请具体实施例中包含报文转发装置的路由设备的硬件结构示意图。该VTEP中包括:非易失性存储器、CPU(中央处理器)、转发芯片、内存和其它硬件;其中:
[0156] 非易失性存储器,用于存储指令代码;所述指令代码被CPU执行时完成的操作主要为内存中的报文转发装置完成的功能。
[0157] CPU,用于与转发芯片通信,接收转发芯片上送来的用户报文,接收转发芯片上送来的VM对应的路由,接收转发芯片上送来的用于回收VM对应的路由的报文,将用户报文发送给转发芯片;用于与非易失性存储器通信,读取和执行非易失性存储器中存储的所述指令代码,完成上述报文转发装置完成的功能。
[0158] 转发芯片,用于将接收到的用户报文上送给CPU,将接收到的VM对应的路由上送给CPU,将接收到的用于回收VM对应的路由的报文上送给CPU,将CPU发来的用户报文发送给直连的主VTEP或备VTEP。
[0159] 内存,当非易失性存储器中的所述指令代码被执行时完成的操作主要为内存中的报文转发装置完成的功能。
[0160] 如图13所示,从软件层面而言,应用于路由设备中的报文转发装置中包括以下模块:接收模块601、计算模块602、添加模块603和保存模块604,其中:
[0161] 接收模块601,用于接收主VTEP和备VTEP发布的VM对应的路由,其中,针对同一VM,主VTEP发布的路由的优先级高于备VTEP发布的路由的优先级;还用于接收用户报文;
[0162] 计算模块602,用于根据接收模块601接收到的主VTEP发布的VM对应的路由,计算出下一跳为主VTEP的从本设备到该VM的路由;根据接收模块601接收到的备VTEP发布的该VM对应的路由,计算出下一跳为备VTEP的从本设备到该VM的路由;其中,针对同一VM,计算出的下一跳为主VTEP的路由的优先级高于下一跳为备VTEP的路由的优先级;
[0163] 添加模块603,用于针对计算模块602计算出的从本设备到同一VM的至少两个路由,将下一跳为主VTEP的路由的表项添加到路由表中;
[0164] 保存模块604,用于保存路由表和计算模块602计算出的路由;
[0165] 查找模块605,用于在接收模块601接收到用户报文之后,根据该用户报文的目的IP地址,在路由表中查找到对应表项;
[0166] 发送模块606,用于根据查找模块605查找到的对应表项,将接收模块601接收到的用户报文转发给主VTEP或备VTEP。
[0167] 另外,如图13所示,该报文转发装置中还可以包括:更新模块607,其中:
[0168] 接收模块601,还用于接收用于回收VM对应的路由的报文;
[0169] 更新模块607,用于若主VTEP故障,则删除计算模块602计算出的下一跳为主VTEP的所有路由,删除路由表中下一跳为主VTEP的所有表项,将下一跳为备VTEP的所有路由的表项添加到路由表中;还用于在接收模块601接收到来自主VTEP的用于回收VM对应的路由的报文之后,删除计算模块602计算出的下一跳为主VTEP的从本设备到该VM的路由,删除路由表中下一跳为主VTEP的从本设备到该VM的路由的表项,将下一跳为备VTEP的从本设备到该VM的路由的表项添加到路由表中;还用于在计算模块602根据接收模块601接收到的主VTEP重新发布的VM对应的路由,重新计算出下一跳为主VTEP的从本设备到该VM的路由之后,将路由表中下一跳为备VTEP的从本设备到该VM的路由的表项删除,在路由表中添加下一跳为主VTEP的从本设备到该VM的路由的表项。
[0170] 综上,本申请以上实施例可以达到以下技术效果:
[0171] 本申请实施例的技术方案中,通过为连接非虚拟化网络的VTEP部署备份VTEP,实现了VTEP设备故障、或VTEP间的链路故障时,VXLAN网络与非虚拟化网络之间的通信业务保护,提高了网络的健壮性和容错能力,增强了VXLAN网络的冗余保护功能。
[0172] 以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。