一种报文转发方法和VxLAN网关的制作方法

文档序号:7835221阅读:222来源:国知局
一种报文转发方法和VxLAN网关的制作方法
【专利摘要】本发明提供一种报文转发方法和VxLAN网关,通过接收VxLAN报文,该VxLAN报文的载荷中包括第一VM向第二VM发送的通信报文,根据VxLAN报文的报文头中的第一VNI以及载荷中的第二VM的IP地址,确定通信报文的下一跳设备所在子网的第二VNI,并根据第二VNI,对该通信报文进行封装,进而通过第二VNI对应的隧道,向该下一跳设备转发封装后的VxLAN报文,从而避免了VxLAN网关对该VxLAN报文的载荷中的通信报文进行修改才能实现VxLAN报文的转发,提高了VxLAN报文的转发效率。
【专利说明】一种报文转发方法和VxLAN网关

【技术领域】
[0001]本发明涉及通信技术,尤其涉及一种报文转发方法和VxLAN网关。

【背景技术】
[0002]虚拟可扩展局域网(VirtualExtensible Local Area Network, VxLAN)技术是用于扩展网络虚拟化,以得到足够数量的虚拟网络来满足用户使用的技术。
[0003]但是现有技术中,VxLAN网关在向下一跳设备转发VxLAN报文时,需要对该VxLAN报文的载荷中的通信报文进行修改,将通信报文中的源MAC修改为该VxLAN网关的MAC地址,将目的MAC修改为下一跳设备的MAC地址,以实现将VxLAN报文转发至下一跳设备,降低了 VxLAN报文的转发效率。


【发明内容】

[0004]本发明实施例提供一种报文转发方法和VxLAN网关,用于提高VxLAN报文的转发效率。
[0005]本发明实施例的第一个方面提供一种报文转发方法,包括:虚拟可扩展局域网VxLAN网关接收VxLAN报文,所述VxLAN报文的载荷中包括通信报文,所述VxLAN报文的报文头中包括第一虚拟可扩展局域网网络标识VNI ;其中,所述通信报文是第一虚拟机VM向第二 VM发送的报文,所述第一 VM与所述第二 VM属于不同的子网,所述通信报文包括所述第二 VM的IP地址;所述第一 VNI为所述第一 VM所在子网的网络标识;所述VxLAN网关对所述VxLAN报文进行解封装,得到所述第一 VNI和所述通信报文;所述VxLAN网关根据所述第二 VM的IP地址和所述第一 VNI,确定所述通信报文的下一跳设备所在子网的第二 VNI ;所述VxLAX网关根据所述第二 VNI,对所述通信报文进行封装,获得封装后的VxLAX报文;所述封装后的VxLAX报文的报文头中包括所述第二 VNI,所述封装后的VxLAX报文的载荷中包括所述通信报文;所述VxLAX网关通过所述第二 VNI对应的隧道,发送所述封装后的VxLAX报文给所述通信报文的下一跳设备。
[0006]在第一方面的第一种可能的实现方式中,所述VxLAN网关根据所述第二 VM的IP地址和所述第一 VNI,确定所述通信报文的下一跳设备所在子网的第二 VNI,包括:所述VxLAN网关根据所述第一 VNI,确定所述第一 VNI关联的路由表;所述第一 VNI关联的路由表中,同一个IP地址对应的下一跳设备所在子网的网络标识相同;所述VxLAN网关根据所述第二 VM的IP地址,查询所述第一 VNI关联的路由表,获得所述第二 VNI。
[0007]结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,软件定义网络SDN控制器中预先配置有所述第一 VNI关联的路由表,则所述VxLAN网关根据所述第二 VM的IP地址,查询所述第一 VNI关联的路由表,获得所述第二 VNI,包括:所述VxLAN网关根据所述第一 VNI和所述第二 VM的IP地址,查询所述SDN控制器,获得所述第二 VNI。
[0008]结合第一方面、第一方面的第一种可能的实现方式和第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述VxLAX网关根据所述第二 VNI,对所述通信报文进行封装,包括:所述VxLAN网关将所述VxLAN报文的报文头中的第一 VNI修改为所述第二 VNI。
[0009]本发明实施例的第二个方面提供一种VxLAN网关,包括:接收模块,用于接收VxLAN报文,所述VxLAN报文的载荷中包括通信报文,所述VxLAN报文的报文头中包括第一虚拟可扩展局域网网络标识VNI ;其中,所述通信报文是第一虚拟机VM向第二 VM发送的报文,所述第一 VM与所述第二 VM属于不同的子网,所述通信报文包括所述第二 VM的IP地址;所述第一 VNI为所述第一 VM所在子网的网络标识;解封装模块,用于对所述VxLAN报文进行解封装,得到所述第一 VNI和所述通信报文;处理模块,用于根据所述第二 VM的IP地址和所述第一 VNI,确定所述通信报文的下一跳设备所在子网的第二 VNI ;封装模块,用于根据所述第二 VNI,对所述通信报文进行封装,获得封装后的VxLAX报文;所述封装后的VxLAX报文的报文头中包括所述第二 VNI,所述封装后的VxLAX报文的载荷中包括所述通信报文;转发模块,用于通过所述第二 VNI对应的隧道,发送所述封装后的VxLAX报文给所述通信报文的下一跳设备。
[0010]在第二方面的第一种可能的实现方式中,所述处理模块,包括:确定单元,用于根据所述第一 VNI,确定所述第一 VNI关联的路由表;所述第一 VNI关联的路由表中,同一个IP地址对应的下一跳设备所在子网的网络标识相同;查询单元,根据所述第二 VM的IP地址,查询所述第一 VNI关联的路由表,获得所述第二 VNI。
[0011]结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,软件定义网络SDN控制器中预先配置有所述第一 VNI关联的路由表,则所述查询单元,具体用于根据所述第一 VNI和所述第二 VM的IP地址,查询所述SDN控制器,获得所述第二VNI。
[0012]结合第二方面、第二方面的第一种可能的实现方式和第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述封装模块,具体用于将所述VxLAN报文的报文头中的第一 VNI修改为所述第二 VNI。
[0013]本发明实施例的第三个方面是提供一种VxLAN网关,包括:处理器、存储器和总线.
[0014]所述存储器用于存储计算机执行指令,所述处理器与所述存储器通过所述总线连接,当所述VxLAN网关运行时,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述VxLAN网关执行如第一方面及第一方面中各种可能的实现方式中任一项所述的报文转发方法。
[0015]本发明实施例的第四个方面是提供一种计算机可读介质,包括计算机执行指令,以供计算机的处理器执行所述计算机执行指令时,所述计算机执行如第一方面及第一方面中各种可能的实现方式中任一项所述的报文转发方法。
[0016]本发明实施例提供的报文转发方法和VxLAN网关,通过接收VxLAN报文,所述VxLAN报文的载荷中包括第一 VM向第二 VM发送的通信报文,根据VxLAN报文的报文头中的VNI以及载荷中的第二 VM的IP地址,确定通信报文的下一跳设备所在子网的第二 VNI,并根据第二 VNI,对该通信报文进行封装,进而通过第二 VNI对应的隧道,向该下一跳设备转发封装后的VxLAN报文,由于VxLAN网关根据第二 VM的IP地址和第一 VNI,确定通信报文的下一跳设备所在子网的第二 VNI,因此,可确定唯一的一个下一跳设备,据此将VxLAN报文转发至该下一跳设备,从而避免了 VxLAN网关对该VxLAN报文的载荷中的通信报文进行修改才能实现VxLAN报文的转发,提高了 VxLAN报文的转发效率。

【专利附图】

【附图说明】
[0017]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0018]图1为本发明一实施例提供的一种报文转发方法的流程示意图;
[0019]图2为本发明另一实施例提供的一种报文转发方法的流程示意图;
[0020]图3为本发明一实施例提供的一种VxLAN网关的结构示意图;
[0021]图4为本发明另一实施例提供的一种VxLAN网关的结构不意图;
[0022]图5为本发明又一实施例提供的一种VxLAN网关的结构示意图。

【具体实施方式】
[0023]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0024]根据VxLAN协议的规定,VxLAN报文通常包括载荷和报文头,其中,报文头中通常包括24位(bit)的虚拟可扩展局域网网络标识(VxLAN Network Identifier, VNI)、源NVE的IP地址、目的NVE的IP地址等信息,用于VxLAN报文的转发;载荷中通常包括虚拟机(virtual machine, VM)之间用于通信的通信报文,例如数据包、源VM的MAC地址和目的VM的MAC地址等。通常情况下,源VM向目的VM发送通信报文时,由源NVE为源VM发送的通信报文加上报文头,如果源VM与目的VM属于不同的子网,则源NVE将加上报文头的源VM发送的通信报文转发给VxLAN网关,VxLAN网关在向下一跳设备转发报文时,需要对源VM发送的通信报文进行修改,将源VM发送的通信报文中的源MAC修改为该VxLAN网关的MAC地址,将目的MAC修改为下一跳设备的MAC地址,才能将报文转发至下一跳设备,降低了 VxLAN报文的转发效率。
[0025]为了解决上述问题,本发明实施例提供了一种报文转发方法,图1为本发明一实施例提供的一种报文转发方法的流程示意图,如图1所示,本发明实施例所提供的方法可以由VxLAN网关执彳丁,具体包括:
[0026]101、VxLAN 网关接收 VxLAN 报文。
[0027]其中,VxLAN报文的载荷中包括所述通信报文,所述VxLAN报文的报文头中包括第一VNI ;其中,所述通信报文是第一虚拟机VM向第二 VM发送的报文,所述第一 VM与所述第二VM属于不同的子网,所述通信报文包括所述第二 VM的IP地址;所述第一 VNI为所述第一 VM所在子网的网络标识。
[0028]具体地,第一 VM与第二 VM属于不同的子网,当第一 VM(即源VM)需要向第二VM (即目的VM)发送通信报文时,需要VxLAN网关参与,可以由第一 VM对应的源NVE对来自所述第一 VM的通信报文进行封装,得到VxLAN报文后发送给VxLAN网关(即第一 VM所在子网的网关),从而所述文VxLAN网关能够接收源NVE发送的VxLAN报文,其中对所述通信报文进行封装获得VxLAN报文可以为:封装所述通信报文作为VxLAN报文的载荷部分,然后添加报文头,该报文头中包括第一 VM的所在子网的网络标识,即第一 VNI。
[0029]102、VxLAN网关对VxLAN报文进行解封装,得到第一 VNI和通信报文。
[0030]VxLAN网关可以根据VxLAN协议,对VxLAN报文进行解封装,获得VxLAN报文的报文头中的第一 VNI,以及VxLAN报文的载荷中的通信报文。
[0031]103,VxLAN网关根据第二 VM的IP地址和第一 VNI,确定通信报文的下一跳设备所在子网的第二 VNI。
[0032]具体地,可以在软件定义网络(Software Defined Network, SDN)控制器中预先配置有所述第一 VNI关联的路由表,在所述第一 VNI关联的路由表中,同一个IP地址对应的下一跳设备所在子网的网络标识相同,所述VxLAN网关可以根据第一 VNI和第二 VM的IP地址查询SDN控制器,以确定第一 VNI关联的路由表中第二 VM的IP地址对应的下一跳设备所在子网的网络标识,即确定所述通信报文的下一跳设备所在子网的第二 VNI。
[0033]104、VxLAX网关根据第二 VNI,对通信报文进行封装,获得封装后的VxLAX报文。
[0034]其中,封装后的VxLAX报文的报文头中包括第二 VNI,封装后的VxLAX报文的载荷中包括通信报文,所述VxLAX网关对所述通信报文进行封装时,无需对所述通信报文中的源MAC地址或者目的MAC地址进行修改,提高了 VxLAN报文的转发效率。
[0035]具体地,所述VxLAN网关可以将所述VxLAN报文的报文头中的第一 VNI修改为所述第二 VNI。然后将通信报文封装在VxLAN报文的载荷部分,从而获得封装后的VxLAX报文。
[0036]105、VxLAX网关通过第二 VNI对应的隧道,发送封装后的VxLAX报文给通信报文的下一跳设备。
[0037]需要说明的是,本实施例中的下一跳设备可为不同于实施上述报文转发方法的其他VxLAN网关,该其他VxLAN网关接收到封装后的VxLAX报文之后,可以将该封装后的VxLAX报文直接或间接转发给第二 VM ;另外,本实施例中的第二 VM接收到该通信报文之后,该第二 VM生成向第一 VM发送的对所述通信报文的响应,从而下一跳设备对该响应进行封装获得第二 VxLAN报文,进而本实施例中的VxLAN网关需要对该第二 VxLAN报文进行转发。在上述两种场景中,均可采用上述报文转发方法转发VxLAN报文,区别仅在于,在上述两种场景中,步骤103中查询获得的第二 VNI,会出现与通信报文的目的VM所在子网的VNI相同的情况,从而在步骤104之前还需要对通信报文的源MAC地址和目的MAC地址进行修改。
[0038]为了清楚说明上述两种场景中的报文转发方法,具体的,以本实施例中VxLAX网关对第二 VxLAN报文进行转发的流程为例,进行具体说明:
[0039]VxLAN网关接收第二 VxLAN报文,所述第二 VxLAN报文的报文头中包括所述第一VNI,所述第第二 VxLAN报文的载荷中包括第二通信报文,所述第二通信报文是第二 VM向第一 VM发送的报文,所述第二通信报文包括所述第一 VM的IP地址。相应地,前面描述的第一VM向第二 VM发送的通信报文也可以称为第一通信报文,封装了所述第一通信报文的VxLAN报文也可以称为第一 VxLAN报文。
[0040]VxLAN网关对所述第二 VxLAN报文进行解封装,得到所述第一 VNI和所述第二通信报文。
[0041]VxLAN网关根据所述第一 VNI,确定所述第一 VNI关联的路由表,根据所述第一 VM的IP地址,查询所述第一 VNI关联的路由表,确定第二通信报文的下一跳设备所在子网的第二 VNI。
[0042]当第二通信报文的下一跳设备所在子网与所述第一 VM所在子网相同时,所述VxLAN网关对所述第二通信报文进行修改,所述修改后的第二通信报文中的源MAC地址为所述VxLAN网关的MAC地址,所述修改后的第二通信报文中的目的MAC地址为所述第一 VM的MAC地址,以及根据所述第二通信报文的下一跳设备所在子网的VNI,对所述修改后的第二通信报文进行封装,所述封装后的第二 VxLAX报文的载荷中包括所述修改后的第二通信报文,所述封装后的第二 VxLAX报文的报文头中包括所述第二通信报文的下一跳设备所在子网的VNI。
[0043]VxLAX网关根据所述第二通信报文的下一跳设备所在子网的VNI,将所述封装后的第二 VxLAX报文发送给所述第一 VM所在子网的网络虚拟化端点(networkvirtualizat1n endpoint, NVE),以将所述 VxLAX 报文发送给所述第一 VM。
[0044]其中,VxLAN网关获取第一 VM的MAC地址的方法可为:VxLAN网关生成地址解析协议ARP请求,其中,ARP请求用于请求获取所述第一 VM的MAC地址;VxLAN网关将ARP请求封装为VxLAN组播报文之后,根据VxLAN协议对VxLAN组播报文进行组播转发,从而VxLAN网关接收ARP响应,其中,ARP响应用于指示所述第一 VM的MAC地址,从ARP响应中获取第一 VM的MAC地址。
[0045]本发明实施例中,通过接收VxLAN报文,所述VxLAN报文的载荷中包括第一 VM向第二 VM发送的通信报文,根据VxLAN报文的报文头中的VNI以及载荷中的第二 VM的IP地址,确定通信报文的下一跳设备所在子网的第二 VNI,并根据第二 VNI,对该通信报文进行封装,进而通过第二 VNI对应的隧道,向该下一跳设备转发封装后的VxLAN报文,由于VxLAN网关根据第二 VM的IP地址和第一 VNI,确定通信报文的下一跳设备所在子网的第二 VNI,因此,可确定唯一的一个下一跳设备,据此将VxLAN报文转发至该下一跳设备,从而避免了VxLAN网关对该VxLAN报文的载荷中的通信报文进行修改才能实现VxLAN报文的转发,提高了 VxLAN报文的转发效率。
[0046]图2为本发明另一实施例提供的一种报文转发方法的流程示意图,本实施例中VMl (IP地址和MAC地址分别为IPl和MAC1)对应NVEl (IP地址和MAC地址分别为IP5和MAC5),GWl (IP地址和MAC地址分别为IP3和MAC3)是VMl所在子网的网关,VM2 (IP地址和MAC地址分别为IP2和MAC2)与VMl属于不同子网,VM2对应NVE2 (IP地址和MAC地址分别为IP6和MAC6),GW2 (IP地址和MAC地址分别为IP4和MAC4)是VM2所在子网的网关,如图2所示,报文转发方法包括:
[0047]201、当VMl访问不在同一子网的VM2时,VMl根据本地存储的MAC-1P映射关系生成通信报文,向VMl所属的NVEl发送该通信报文。
[0048]其中,通信报文中的源MAC (SMAC)、源IP (SIP)、目的MAC (DMAC)和目的IP (DIP)分别为MAC1、IP1、MAC3和IP2,即通信报文中的源MAC和源IP分别为VMl自身的MAC地址和IP地址,通信报文中的目的MAC为VMl所在子网的网关GWl的MAC地址,通信报文中的目的IP为VM2的IP地址。
[0049]具体地,VMl需要访问VM2时,VMl首先根据VM2的IP地址IP2,查询预先生成的MAC-1P映射关系,获得IP2所对应的MAC地址MAC3,然后,VMl将与IP2对应的MAC3作为目的MAC地址,将IP2作为目的IP生成通信报文。VMl生成该通信报文之后,向VMl对应的NVEl发送所生成的通信报文。可以发现,通信报文中的目的MAC即MAC3并不是VM2的MAC地址,这是由于,当VMl仅获知VM2的IP地址时,VMl首先根据VM2的IP地址生成用于获取VM2的MAC地址的ARP请求,发送该ARP请求,以从ARP响应中获取VM2的MAC地址,但实质上,由于VMl与VM2不在同一子网,则VMl从该ARP响应中的获取到的MAC地址是VMl所在子网的VxLAN网关GWl的MAC地址MAC3,并不是VM2的MAC地址。进一步其探究原因,这是由于,当GWl接收到ARP请求时,根据ARP请求中的源IP和目的IP确定目的IP与源IP不在同一子网,则将GWl的MAC地址MAC3作为ARP响应的源MAC,返回ARP响应,因此,VM存储的MAC-1P映射关系为:MAC3与IP2之间存在对应关系。从而通信报文中的目的IP为VM2的IP地址,而通信报文中的目的MAC为VMl所在子网的网关GWl的MAC地址。
[0050]202、NVEl对通信报文进行封装获得VxLAN报文A,向通信报文中目的MAC地址所指示的GWl发送VxLAN报文A。
[0051]具体地,NVEl接收到通信报文后,首先,可以根据通信报文中的源IP,查询SDN控制器中预先配置的虚拟机的IP地址与子网之间的对应关系,从而确定发送该通信报文的源虚拟机,即VMl,所在子网为VNII。然后,NVEI可以向SDN控制器发送该通信报文,以及通知SDN发送该通信报文的源虚拟机所在子网为VNI1。SDN控制器接收到通信报文后,根据通信报文中的目的IP,即IP2,查询在本地配置的虚拟机的IP地址与子网之间的对应关系,获得IP2对应的子网,由于本实施例中VMl和VM2属于不同的子网,也就是说VM2的IP2对应的子网标识不为VMl所在的子网的子网标识VNI1,因而SDN控制器可以确定接收该通信报文的目的虚拟机所在子网不同于发送该通信报文的源虚拟机所在的子网,则SDN控制器通知NVEl向VMl所属的网关GWl发送VxLAN报文。NVEl根据VMl的VNI标识,即VNIl对通信报文进行封装,得到VxLAN报文A,所述VxLAN报文A的报文头中包括所述VNI1,所述VxLAN报文A的载荷包括所述通信报文。其中,VxLAN报文A载荷中的通信报文与VMl所生成的通信报文相同,也就是说,NVEl没有对通信报文中的源IP、源MAC、目的IP和目的MAC进行修改。
[0052]203、Gffl根据VxLAN报文A查询预先配置的路由表获得下一跳设备GW2,根据下一跳设备GW2的VNI对VxLAN报文A的报文头进行修改,获得VxLAN报文B,向下一跳设备GW2发送该VxLAN报文B。
[0053]具体地,GWl对VxLAN报文A解封装后,从VxLAN报文A的报文头中获得的子网标识为VNII,以及从VxLAN报文A的载荷中获得通信报文,其中,该通信报文中的目的IP为IP2。然后,GWl可以根据VxLAN报文A的报文头中的VNII,在SDN控制器预先配置的各路由表中,查询VxLAN报文A的报文头中的VNIl所关联的目标路由表;根据通信报文中的目的IP在目标路由表中进行查询,获得该目的IP对应的隧道VNI3,该隧道用于连接GWl与GW2,因而GWl可通过该隧道向VNI标识为VNI3的下一跳设备GW2转发报文。GWl对解封装所获得的通信报文不进行修改,直接进行封装作为修改后的VxLAN报文的载荷部分,即VxLAN报文B的载荷部分,并且由于报文头中的VNIl不同于下一跳设备GW2的VNI3,将VxLAN报文A的报文头中的VNIl修改为下一跳设备GW2的VNI3,将修改后的VxLAN报文A的报文头作为VxLAN报文B的报文头部分。
[0054]204、GW2根据接收到的VxLAN报文B查询预先配置的路由表获得下一跳设备,对VxLAN报文B的报文头和载荷均进行修改后获得VxLAN报文C,向下一跳设备发送该VxLAN报文C。
[0055]具体地,GW2对VxLAN报文B解封装后,从VxLAN报文B的报文头中获得的子网标识为VNI3,以及从VxLAN报文B的载荷中获得通信报文,其中,该通信报文中的目的IP为IP2。然后,GW2可以根据VxLAN报文B的报文头中的VNI3,在预先配置的各路由表中,查询VxLAN报文B的报文头中的VNI标识所关联的目标路由表;根据通信报文中的目的IP在目标路由表中进行查询,获得该目的IP对应的下一跳设备的VNI为VNI2,由于查询获得的VNI2与VM2所在子网的VNI相同,因此,需要对通信报文中的目的MAC和源MAC进行修改,修改后的通信报文中的源MAC为GW2自身的MAC,目的MAC为目的IP对应的目的虚拟机的MAC。对修改后的通信报文进行封装,并添加报文头,报文头中包含下一跳设备VNE2的VNI标识VNI2,获得VxLAN报文C。GWl向VNE2发送VxLAN报文C。
[0056]需要说明的是,GW2在对通信报文的目的MAC地址进行修改之前,查询本地存储的MAC-1P映射关系,以确定通信报文中的目的IP地址IP2对应的MAC地址,若未在本地存储的MAC-1P映射关系中查询到IP2对应的MAC地址,则GW2生成用于请求获取IP2所对应MAC地址的ARP请求,然后根据通信报文目的IP即IP2确定该IP2属于VNI2子网,对ARP请求进行封装,获得VxLAN组播报文,该组播报文的报文头中包含的VNI为VNI2,在VNI2子网内对该组播报文进行转发,以从ARP响应中获取IP2所对应MAC地址。
[0057]205.NVE2对VxLAN报文进行解封装,获得通信报文,向通信报文中目的IP地址和目的MAC地址所指示的VM2发送该通信报文。
[0058]本发明实施例中,通过接收VxLAN报文,所述VxLAN报文的载荷中包括第一 VM向第二 VM发送的通信报文,根据VxLAN报文的报文头中的VNI以及载荷中的第二 VM的IP地址,确定通信报文的下一跳设备所在子网的第二 VNI,并根据第二 VNI,对该通信报文进行封装,进而通过第二 VNI对应的隧道,向该下一跳设备转发封装后的VxLAN报文,由于VxLAN网关根据第二 VM的IP地址和第一 VNI,确定通信报文的下一跳设备所在子网的第二 VNI,因此,可确定唯一的一个下一跳设备,据此将VxLAN报文转发至该下一跳设备,从而避免了VxLAN网关对该VxLAN报文的载荷中的通信报文进行修改才能实现VxLAN报文的转发,提高了 VxLAN报文的转发效率。
[0059]图3为本发明一实施例提供的一种VxLAN网关的结构示意图,如图3所示,VxLAN网关包括:接收模块31、解封装模块32、处理模块33、封装模块34和转发模块35。
[0060]接收模块31,用于接收VxLAN报文。
[0061]其中,VxLAN报文的载荷中包括所述通信报文,所述VxLAN报文的报文头中包括第一虚拟可扩展局域网网络标识VNI ;其中,所述通信报文是第一虚拟机VM向第二 VM发送的报文,所述第一 VM与所述第二 VM属于不同的子网,所述通信报文包括所述第二 VM的IP地址;所述第一 VNI为所述第一 VM所在子网的网络标识。
[0062]解封装模块32,与接收模块31连接,用于对所述VxLAN报文进行解封装,得到所述第一 VNI和所述通信报文。
[0063]处理模块33,与解封装模块32连接,用于根据所述第二 VM的IP地址和所述第一VNI,确定所述通信报文的下一跳设备所在子网的第二 VNI。
[0064]封装模块34,与处理模块33连接,用于根据所述第二 VNI,对所述通信报文进行封装,获得封装后的VxLAX报文。
[0065]封装模块34,具体用于将所述VxLAN报文的报文头中的第一 VNI修改为所述第二VNI。
[0066]其中,封装后的VxLAX报文的报文头中包括所述第二 VNI,所述封装后的VxLAX报文的载荷中包括所述通信报文。
[0067]转发模块35,与封装模块34连接,用于通过所述第二 VNI对应的隧道,发送所述封装后的VxLAX报文给所述通信报文的下一跳设备。
[0068]本发明实施例中,通过接收VxLAN报文,所述VxLAN报文的载荷中包括第一 VM向第二 VM发送的通信报文,根据VxLAN报文的报文头中的VNI以及载荷中的第二 VM的IP地址,确定通信报文的下一跳设备所在子网的第二 VNI,并根据第二 VNI,对该通信报文进行封装,进而通过第二 VNI对应的隧道,向该下一跳设备转发封装后的VxLAN报文,由于VxLAN网关根据第二 VM的IP地址和第一 VNI,确定通信报文的下一跳设备所在子网的第二 VNI,因此,可确定唯一的一个下一跳设备,据此将VxLAN报文转发至该下一跳设备,从而避免了VxLAN网关对该VxLAN报文的载荷中的通信报文进行修改才能实现VxLAN报文的转发,提高了 VxLAN报文的转发效率。
[0069]图4为本发明另一实施例提供的一种VxLAN网关的结构示意图,在上一实施例的基础上,如图4所示,本实施例中的处理模块33进一步包括:确定单元331和查询单元332。
[0070]确定单元331,用于根据所述第一 VNI,确定所述第一 VNI关联的路由表。
[0071]其中,第一 VNI关联的路由表中,同一个IP地址对应的下一跳设备所在子网的网络标识相同。
[0072]查询单元332,与确定单元331连接,用于根据所述第二 VM的IP地址,查询所述第一 VNI关联的路由表,获得所述第二 VNI。
[0073]SDN控制器中预先配置有所述第一 VNI关联的路由表,则所述查询单元332,具体用于根据所述第一 VNI和所述第二 VM的IP地址,查询所述SDN控制器,获得所述第二 VNI。
[0074]上述VxLAN网关的具体的功能,可以参照实施例一或实施例二的报文转发方法,不再赘述。
[0075]本发明实施例中,通过接收VxLAN报文,所述VxLAN报文的载荷中包括第一 VM向第二 VM发送的通信报文,根据VxLAN报文的报文头中的VNI以及载荷中的第二 VM的IP地址,确定通信报文的下一跳设备所在子网的第二 VNI,并根据第二 VNI,对该通信报文进行封装,进而通过第二 VNI对应的隧道,向该下一跳设备转发封装后的VxLAN报文,由于VxLAN网关根据第二 VM的IP地址和第一 VNI,确定通信报文的下一跳设备所在子网的第二 VNI,因此,可确定唯一的一个下一跳设备,据此将VxLAN报文转发至该下一跳设备,从而避免了VxLAN网关对该VxLAN报文的载荷中的通信报文进行修改才能实现VxLAN报文的转发,提高了 VxLAN报文的转发效率。
[0076]图5为本发明又一实施例提供的一种VxLAN网关的结构示意图,如图5所示,包括:处理器501、存储器502和总线504。
[0077]处理器501和存储器502之间通过总线504连接并完成相互间的通信。
[0078]处理器501可能为单核或多核中央处理单元,或者为特定集成电路,或者为被配置成实施本发明实施例的一个或多个集成电路。
[0079]存储器502可以为高速RAM存储器,也可以为非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。
[0080]存储器502用于存储计算机执行指令503。具体的,计算机执行指令503中可以包括程序代码。
[0081]当所述VxLAN网关运行时,处理器501运行计算机执行指令503,可以执行实施例一或实施例二所述的报文转发方法的方法流程。
[0082]需要说明的是,VxLAN网关还可包括通信接口 505,通过通信接口 505与其他网络实体通信,比如与下一跳设备通信。
[0083]本发明实施例提供了一种计算机可读介质,包括计算机执行指令,以供计算机的处理器执行所述计算机执行指令时,所述计算机执行实施例一或实施例二所述的报文转发方法的方法流程。
[0084]本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0085]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【权利要求】
1.一种报文转发方法,其特征在于,包括: 虚拟可扩展局域网VxLAN网关接收VxLAN报文,所述VxLAN报文的载荷中包括通信报文,所述VxLAN报文的报文头中包括第一虚拟可扩展局域网网络标识VNI ;其中,所述通信报文是第一虚拟机VM向第二 VM发送的报文,所述第一 VM与所述第二 VM属于不同的子网,所述通信报文包括所述第二 VM的IP地址;所述第一 VNI为所述第一 VM所在子网的网络标识; 所述VxLAN网关对所述VxLAN报文进行解封装,得到所述第一 VNI和所述通信报文;所述VxLAN网关根据所述第二 VM的IP地址和所述第一 VNI,确定所述通信报文的下一跳设备所在子网的第二 VNI ; 所述VxLAX网关根据所述第二 VNI,对所述通信报文进行封装,获得封装后的VxLAX报文;所述封装后的VxLAX报文的报文头中包括所述第二 VNI,所述封装后的VxLAX报文的载荷中包括所述通信报文; 所述VxLAX网关通过所述第二 VNI对应的隧道,发送所述封装后的VxLAX报文给所述通信报文的下一跳设备。
2.根据权利要求1所述的报文转发方法,其特征在于,所述VxLAN网关根据所述第二VM的IP地址和所述第一 VNI,确定所述通信报文的下一跳设备所在子网的第二 VNI,包括: 所述VxLAN网关根据所述第一 VNI,确定所述第一 VNI关联的路由表;所述第一 VNI关联的路由表中,同一个IP地址对应的下一跳设备所在子网的网络标识相同; 所述VxLAN网关根据所述第二 VM的IP地址,查询所述第一 VNI关联的路由表,获得所述第二 VNI。
3.根据权利要求2所述的报文转发方法,其特征在于,软件定义网络SDN控制器中预先配置有所述第一 VNI关联的路由表,则所述VxLAN网关根据所述第二 VM的IP地址,查询所述第一 VNI关联的路由表,获得所述第二 VNI,包括: 所述VxLAN网关根据所述第一 VNI和所述第二 VM的IP地址,查询所述SDN控制器,获得所述第二 VNI。
4.根据权利要求1-3任一项所述的报文转发方法,其特征在于,所述VxLAX网关根据所述第二 VNI,对所述通信报文进行封装,包括: 所述VxLAN网关将所述VxLAN报文的报文头中的第一 VNI修改为所述第二 VNI。
5.一种虚拟可扩展局域网VxLAN网关,其特征在于,包括: 接收模块,用于接收VxLAN报文,所述VxLAN报文的载荷中包括通信报文,所述VxLAN报文的报文头中包括第一虚拟可扩展局域网网络标识VNI ;其中,所述通信报文是第一虚拟机VM向第二 VM发送的报文,所述第一 VM与所述第二 VM属于不同的子网,所述通信报文包括所述第二 VM的IP地址;所述第一 VNI为所述第一 VM所在子网的网络标识; 解封装模块,用于对所述VxLAN报文进行解封装,得到所述第一 VNI和所述通信报文;处理模块,用于根据所述第二 VM的IP地址和所述第一 VNI,确定所述通信报文的下一跳设备所在子网的第二 VNI ; 封装模块,用于根据所述第二 VNI,对所述通信报文进行封装,获得封装后的VxLAX报文;所述封装后的VxLAX报文的报文头中包括所述第二 VNI,所述封装后的VxLAX报文的载荷中包括所述通信报文; 转发模块,用于通过所述第二 VNI对应的隧道,发送所述封装后的VxLAX报文给所述通信报文的下一跳设备。
6.根据权利要求5所述的VxLAN网关,其特征在于,所述处理模块,包括: 确定单元,用于根据所述第一 VNI,确定所述第一 VNI关联的路由表;所述第一 VNI关联的路由表中,同一个IP地址对应的下一跳设备所在子网的网络标识相同; 查询单元,根据所述第二 VM的IP地址,查询所述第一 VNI关联的路由表,获得所述第二丽。
7.根据权利要求6所述的VxLAN网关,其特征在于,软件定义网络SDN控制器中预先配置有所述第一 VNI关联的路由表,则所述查询单元,具体用于根据所述第一 VNI和所述第二VM的IP地址,查询所述SDN控制器,获得所述第二 VNI。
8.根据权利要求5-7任一项所述的VxLAN网关,其特征在于, 所述封装模块,具体用于将所述VxLAN报文的报文头中的第一 VNI修改为所述第二VNI。
9.一种虚拟可扩展局域网VxLAN网关,其特征在于,包括:处理器、存储器和总线; 所述存储器用于存储计算机执行指令,所述处理器与所述存储器通过所述总线连接,当所述VxLAN网关运行时,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述VxLAN网关执行如权利要求1-4中任一所述的报文转发方法。
10.一种计算机可读介质,其特征在于,包括计算机执行指令,以供计算机的处理器执行所述计算机执行指令时,所述计算机执行如权利要求1-4中任一所述的报文转发方法。
【文档编号】H04L12/741GK104350714SQ201480001338
【公开日】2015年2月11日 申请日期:2014年5月29日 优先权日:2014年5月29日
【发明者】陈寒冰, 宋宇, 熊志强 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1