在芯片中实现vxlan网关分布式路由的方法及报文处理系统的制作方法
【技术领域】
[0001]本发明涉及数据中心虚拟化应用领域,尤其是涉及一种在芯片中实现VXLAN网关分布式路由的方法及报文处理系统。
【背景技术】
[0002]VXLAN(Virtual Extensible Local Area Network,虚拟可扩展局域网)协议定义了一个在四层协议UDP(User Datagram Protocol,用户数据包协议)之上的二层网络框架,并实现上层的二层网络转发域的隔离,主要用于数据中心的虚拟化。
[0003]如图1所示,在虚拟化的数据中心中,物理服务器被虚拟化成多台虚拟机(VM)。如图2所示,虚拟机的数据包流量在出物理服务器网卡时,会被加上“外层MAC头+外层IP头+VXLAN头,,的隧道封装,具体报文格式如图3所示。
[0004]当物理设备要接入到虚拟化的网络中时,就需要用到VXLAN网关,VXLAN网关可以提供为特定流量封装特定VXLAN隧道头部的功能。加VXLAN封装和解VXLAN封装的功能实体称为VTEP(VXLAN Tunneling End Point,VXLAN隧道终结点),它可能位于VXLAN网关上,也可能位于支持VXLAN虚拟化的服务器内部。
[0005]VXLAN协议向上提供了虚拟化二层转发域,然而在实际的数据中心应用中,存在跨虚拟化二层转发域的三层虚拟流量。例如,同一租户存在两个虚拟子网,且两个虚拟子网间需要相互通信。当虚拟机需要做三层流量转发的时候,每一个虚拟网段都可能存在一个虚拟网关。在虚拟化的环境中,每一个虚拟网关都是相互独立地,也就是说,两个虚拟网关可能属于完全不同的三层转发域,它们的虚拟MAC地址也可能各不相同。在VXLAN网关不支持虚拟三层转发功能时,通常通过在VXLAN网关下挂一个特殊的路由设备,比如运行OpenStack的设备,所有的虚拟网关功能都被集成在这台设备上。
[0006]如图四所不,若网段1.1.1.0/24和网段1.1.2.0/24是同一个用户的两个子网,分别被封装在VXLAN网络标识符VNIlOO和VNI200中。若是本网段的通信,带有VTEP功能的VXLAN网关设备只需要在二层转发的基础上给报文加上对应的VXLAN头即可。但如果要跨网段通信,例如,PCl要和虚拟机VMl通信,由于跨网段需要路由,在VXLAN网关设备不支持跨网段通信的情况下,只能在VXLAN网关设备下挂一台路由设备,所有跨网段的流量先发往该路由设备,在查找路由表后发往目的地。而且需要注意的是,在路由设备上的虚拟网络的网关1.1.1.254和1.1.2.254通常会使用不同的虚拟路由MAC地址。
[0007]这样一来,路由设备对路由进行集中式转发,负荷将会非常大。并且一旦路由设备故障,虚拟化数据中心内的所有东西向通信流量将无法进行三层转发。
【发明内容】
[0008]本发明的目的在于克服现有技术的缺陷,提供一种在芯片中实现VXLAN网关分布式路由的方法及报文处理系统,通过在VXLAN网关上设置分布式路由,将原本应在路由设备上进行的部分路由功能转移到VXLAN网关上,以降低外部路由设备的负荷。
[0009]为实现上述目的,本发明提出如下技术方案:一种在芯片中实现VXLAN网关分布式路由的方法,包括以下步骤:
[0010]SI,SDN控制端将同一用户不同子网的默认路由出口信息、路由信息及交换出口信息配置到VXLAN网关,分别对应生成相应的匹配表、路由表和MAC表;
[0011]S2,所述VXLAN网关将收到的报文的目的MAC地址和VLAN信息与其内部的所述匹配表相匹配,若匹配到,得到进行VXLAN封装并发往路由设备的出口动作,但并不执行该出口动作并且继续进行所述路由表查找,进入步骤S3 ;若所述匹配表未匹配到,则进入步骤S4 ;
[0012]S3,若在所述路由表中匹配到相应条目,则将所述报文封装上路由目的地所在VXLAN网络标识符VNI和VXLAN隧道终结点VTEP的VXLAN头并将所述封装后的报文进行路由转发,VXLAN网关上的处理到此结束;若未在所述路由表中匹配到,则进入步骤S5 ;
[0013]S4,将报文走二层转发流程进行二层所述MAC表查找,按查找结果单播或广播,若目的地不在本VXLAN网关下,则按所述报文的目的MAC地址所在VTEP和VNI封装VXLAN头,若目的地在本VXLAN网关下,则直接进行二层转发,VXLAN网关上的处理到此结束;
[0014]S5,将报文按所述出口动作转发,按所述路由设备所在VTEP和VNI封装VXLAN头,并发往所述路由设备,VXLAN网关上的处理到此结束。
[0015]优选地,所述同一用户不同子网网关的虚拟MAC地址也各不相同。
[0016]优选地,每个所述子网采用VLAN ID标识,所述用户采用VRF ID标识,所述用户VRF ID由所述子网VLAN ID映射得来,且同一用户的不同子网的所述VLAN ID映射到同一所述VRF ID。
[0017]优选地,所述匹配表使用MAC地址加VLAN进行查找,所述匹配表配置条目中的MAC地址为虚拟网关地址;所述路由表使用IP目的地址IPDA加VRF ID进行查找;所述MAC表使用MACDA加VLAN ID进行查找。
[0018]本发明的另一目的还在于,提供一种基于VXLAN网关的报文处理系统,包括数据中心、SDN控制端、源物理设备、目的虚拟机、VXLAN网关和路由设备,
[0019]SDN控制端用于将同一用户不同子网的默认路由出口信息、路由信息及交换出口信息配置到VXLAN网关,分别对应生成相应的匹配表、路由表和MAC表;
[0020]所述VXLAN网关用于接收所述源物理设备发来的报文,并将所述报文的目的MAC地址和VLAN信息与其内部的所述匹配表相匹配,若匹配到结果,则根据匹配结果确定一个发送给所述路由设备的转发动作,并且确定进行所述路由表查找;若根据所述路由表匹配到结果,则按路由查找结果将报文封装上相应的VXLAN头后发送给所述目的虚拟机;若进行了所述路由表查找,但未匹配到结果,则按所述匹配表的匹配结果将报文封装上相应的VXLAN头后发送给所述路由设备;若匹配表未匹配到结果,则按所述MAC表查找结果进行二层交换转发。
[0021]所述目的虚拟机所在的物理设备用于解封装由所述VXLAN网关发送过来的报文,所述目的虚拟机用于接收解封装后的报文;
[0022]所述路由设备用于决定在所述路由表中查找不到匹配路由条目的报文的下一步出口和编辑动作。
[0023]优选地,若根据所述路由表匹配到结果,则将所述报文封装上路由目的地所在VXLAN网络标识符VNI和VXLAN隧道终结点VTEP的VXLAN头并将所述封装后的报文进行路由转发给所述目的虚拟机;若在匹配表未匹配到结果,则将报文进行所述MAC表查找,按查找结果单播或广播,若目的地不在本VXLAN网关下,则按所述报文的目的MAC地址所在VTEP和VNI封装VXLAN头后进行二层交换转发,出口为普通以太网口或VXLAN隧道。
[0024]优选地,所述SDN控制端还用于将所述数据中心的全局路由和外部路由信息配置到所述路由设备上VXLAN网关上的路由为数据中心内的局部路由,路由设备上的路由包含整数据中心级的路由和数据中心外部的路由。
[0025]本发明的有益效果是:
[0026]1、本发明在数据中心虚拟化部署中的VXLAN网关上设置分布式路由,将原本应在路由设备上进行的部分路由功能转移到VXLAN网关上,大大降低了外部路由设备的压力和性能要求,并且使得虚拟化数据中心内的东西向路由流量能够按最优路径转发,降低了数据中心的整体带宽的消耗。
[0027]2、本发明支持基于虚拟网关的路由MAC地址进行分布式路由,在虚拟化路由的部署方式上灵活性很高。
[0028]3、本发明允许不同虚拟网关的路由MAC地址各不相同,实际支持的虚拟MAC地址个数仅受限于匹配条目表的大小,与实际物理设备支持的路由MAC地址个数无关。
【附图说明】
[0029]图1是现有虚拟化的数据中心的原理示意图;
[0030]图2是现有虚拟机的数据包流量出物理服务器网卡的原理示意图;
[0031]图3是现有虚拟机的数据包流量出物理服务器网卡的报文格式示意图;
[0032]图4是现有虚拟化的数据中心跨网段通信的原理示意图;
[0033]图5是基于本发明的VXLAN网关的虚拟化的数据中心的原理示意图;
[0034]图6是本发明在芯片中实现VXLAN网关分布式路由的方法的流程示意图。
【具体实施方式】
[0035]下面将结合本发明的附图,对本发明实施例的技术方案进行清楚、完整的描述。
[0036]如图5所示,物理设备PCl和虚拟机VMl处于同一网段1,物理设备PC2和虚拟机VM2处于同一网段2,且网段I和网段2是同一个用户的两个子网。假设网段I在VTEPl所在设备(即VXLAN网关I)上对应的VLAN ID为100,网段2对应的VLAN ID为200。采用VRF ID来标示用户,VRFID可由本地VLAN ID映射得来,假定本地VLAN 100和VLAN 200均映射到VRF 1000
[0037]如图6所示,本发明在VXLAN网关上实现分布式路由的方法,以VTEPl所在设备为例,具体步骤如下:
[0038]SLSDN控制端将同一用户不同子网的默认路由出口信息、路由信息及交换出口信息配置到VXLAN网关I,分别对应生成相应的匹配表、路由表和MAC表;SDN控制端还用于将数据中心的全局路由和外部路由信息配置到路由设备上VXLAN网关上的路由为数据中心内的局部路由,路由设备上的路由包含整数据中心级的路由和数据中心外部的路由。
[0039]其中,匹配表使用MAC地址加VLAN进行查找,匹配表配置条目中的MAC地址为虚拟网关地址;路由表使用IP目的地址IPD