一种VXLAN报文转发方法及装置与流程

文档序号:11628649阅读:221来源:国知局
一种VXLAN报文转发方法及装置与流程

本申请涉及通信技术领域,特别涉及一种vxlan报文转发方法及装置。



背景技术:

随着云计算的快速发展,数据中心的虚拟化程度越来越高,对物理网络的要求也越来越苛刻,比如tor(topofrack,机柜顶端)交换机需要支持大规格mac地址表;4094个vlan(virtuallocalareanetwork,虚拟局域网)无法划分海量虚拟机;需要支持多租户的网络隔离等。正是这些需求使得叠加网络技术vxlan(virtualextensiblelocalareanetwork,虚拟可扩展局域网)应运而生。

在实际应用中,当本端vm(virtualmachine,虚拟机)与对端vm处于不同的vxlan网络时,本端vm向对端vm发送的报文,会先由本端vm接入的vtep(vxlantunnelingendpoint,vxlan隧道终端)设备发送至vxlan网关设备,然后由vxlan网关设备对报文进行接封装,查路由,加封装后发送至对端vm接入的vtep设备。在这个过程中,报文会通过两个vxlan隧道,vxlan网关设备的工作量较大,会导致转发效率低下的问题。



技术实现要素:

有鉴于此,本申请提供一种vxlan报文转发方法及装置,用以解决现有技术中,vxlan报文三层跨隧道转发过程中,vxlan网关设备的工作量较大,导致转发效率低下的问题。

具体地,本申请是通过如下技术方案实现的:

一种vxlan报文转发方法,应用于本端vtep设备,其中,所述本端vtep设备接入了第一vm,对端vtep设备接入了第二vm,所述第一vm通过vxlan网关设备与隶属于不同的vxlan网络的所述第二vm互联,包括:

接收所述对端vtep设备通过所述vxlan网关设备透传的所述第二vm的ip地址,以及所述对端vtep设备的ip地址;其中,所述对端vtep设备的ip地址携带在所述vxlan网关设备发送的vxlan报文的vxlan报文头中;

创建所述第二vm的ip地址与所述对端vtep设备的ip地址之间的映射关系,并基于所述映射关系在所述本端vtep设备和所述对端vtep设备之间建立vxlan隧道;

当接收到所述第一vm发送至所述第二vm的单播报文后,基于所述vxlan隧道将所述单播报文发送至所述对端vtep设备,以由所述对端vtep设备将所述单播报文转发至所述第二vm。

在所述vxlan报文转发方法中,所述本端vtep设备与所述vxlan网关设备之间建立了第一vxlan隧道,所述vxlan网关设备与所述对端vtep设备之间建立了第二vxlan隧道;

所述接收所述对端vtep设备通过所述vxlan网关设备透传的所述第二vm的ip地址,以及所述对端vtep设备的ip地址,包括:

接收到所述vxlan网关设备通过所述第一vxlan隧道发送的vxlan报文;其中,所述vxlan报文是封装vxlan报文头的所述第二vm发送至所述第一vm的单播报文;

解封装所述vxlan报文的vxlan报文头,并获取所述vxlan报文头携带的所述对端vtep设备的ip地址以及所述单播报文的源ip;其中,所述单播报文的源ip为所述第二vm的ip地址。

在所述vxlan报文转发方法中,所述创建所述第二vm的ip地址与所述对端vtep设备的ip地址之间的映射关系之前,还包括:

接收到所述vxlan网关设备发送的vxlan报文;其中,所述vxlan报文是封装vxlan报文头的所述第二vm发送至所述vxlan网关设备的arp请求报文,所述vxlan报文头携带所述第二vm的vni;

获取所述arp请求报文的源ip和源mac,以及所述第二vm的vni,并基于该源ip、该源mac和所述第二vm的vni生成对应于所述第二vm的arp表项;其中,该源ip即为所述第二vm的ip地址,该mac即为所述第二vm的mac地址。

在所述vxlan报文转发方法中,所述创建所述第二vm的ip地址与所述对端vtep设备的ip地址之间的映射关系之前,还包括:

接收到所述vxlan网关设备发送的通告消息;其中,所述通告消息携带所述vxlan网关设备创建的对应于所述第二vm的arp表项;该arp表项由所述vxlan网关设备基于封装vxlan报文头的所述第二vm发送至所述vxlan网关设备的arp请求报文的源ip、源mac和所述第二vm的vni创建;

获取所述通告消息中携带的对应于所述第二vm的arp表项,在本地保存对应于所述第二vm的arp表项。

在所述vxlan报文转发方法中,所述创建所述第二vm的ip地址与所述对端vtep设备的ip地址之间的映射关系,包括:

基于所述第二vm的ip地址和所述对端vtep设备的ip地址之间的对应关系,以及本地保存的对应于所述第二vm的arp表项,生成所述第二vm的ip地址、所述对端vtep设备的ip地址、以及所述第二vm的vni之间的映射关系。

一种vxlan报文转发装置,应用于本端vtep设备,其中,所述本端vtep设备接入了第一vm,对端vtep设备接入了第二vm,所述第一vm通过vxlan网关设备与隶属于不同的vxlan网络的所述第二vm互联,包括:

接收单元,用于接收所述对端vtep设备通过所述vxlan网关设备透传的所述第二vm的ip地址,以及所述对端vtep设备的ip地址;其中,所述对端vtep设备的ip地址携带在所述vxlan网关设备发送的vxlan报文的vxlan报文头中;

创建单元,用于创建所述第二vm的ip地址与所述对端vtep设备的ip地址之间的映射关系,并基于所述映射关系在所述本端vtep设备和所述对端vtep设备之间建立vxlan隧道;

发送单元,用于当接收到所述第一vm发送至所述第二vm的单播报文后,基于所述vxlan隧道将所述单播报文发送至所述对端vtep设备,以由所述对端vtep设备将所述单播报文转发至所述第二vm。

在所述vxlan报文转发装置中,所述本端vtep设备与所述vxlan网关设备之间建立了第一vxlan隧道,所述vxlan网关设备与所述对端vtep设备之间建立了第二vxlan隧道;

所述接收单元,进一步用于:

接收到所述vxlan网关设备通过所述第一vxlan隧道发送的vxlan报文;其中,所述vxlan报文是封装vxlan报文头的所述第二vm发送至所述第一vm的单播报文;

解封装所述vxlan报文的vxlan报文头,并获取所述vxlan报文头携带的所述对端vtep设备的ip地址以及所述单播报文的源ip;其中,所述单播报文的源ip为所述第二vm的ip地址。

在所述vxlan报文转发装置中,所述接收单元,进一步用于:

接收到所述vxlan网关设备发送的vxlan报文;其中,所述vxlan报文是封装vxlan报文头的所述第二vm发送至所述vxlan网关设备的arp请求报文,所述vxlan报文头携带所述第二vm的vni;

获取所述arp请求报文的源ip和源mac,以及所述第二vm的vni,并基于该源ip、该源mac和所述第二vm的vni生成对应于所述第二vm的arp表项;其中,该源ip即为所述第二vm的ip地址,该mac即为所述第二vm的mac地址。

在所述vxlan报文转发装置中,所述接收单元,进一步用于:

接收到所述vxlan网关设备发送的通告消息;其中,所述通告消息携带所述vxlan网关设备创建的对应于所述第二vm的arp表项;该arp表项由所述vxlan网关设备基于封装vxlan报文头的所述第二vm发送至所述vxlan网关设备的arp请求报文的源ip、源mac和所述第二vm的vni创建;

获取所述通告消息中携带的对应于所述第二vm的arp表项,在本地保存对应于所述第二vm的arp表项。

在所述vxlan报文转发装置中,其特征在于,所述创建单元,进一步用于:

基于所述第二vm的ip地址和所述对端vtep设备的ip地址之间的对应关系,以及本地保存的对应于所述第二vm的arp表项,生成所述第二vm的ip地址、所述对端vtep设备的ip地址、以及所述第二vm的vni之间的映射关系。

在本申请实施例中,本端vtep设备接收到对端vtep设备通过所述vxlan网关设备透传的第二vm的ip地址,以及所述对端vtep设备的ip地址;其中,所述对端vtep设备的ip地址携带在所述vxlan网关设备发送的vxlan报文的vxlan报文头中;然后可以创建所述第二vm的ip地址与所述对端vtep设备的ip地址之间的映射关系,并基于该映射关系在所述本端vtep设备和所述对端vtep设备之间建立vxlan隧道;所述本端vtep设备在接收到所述第一vm发送至所述第二vm的单播报文后,可以基于所述vxlan隧道将所述单播报文发送至所述对端vtep设备,以由所述对端vtep设备将所述单播报文转发至所述第二vm;

由于在本申请实施例中,本端vtep设备基于所述对端vtep设备的ip地址和所述第二vm的ip地址的映射关系,在所述本端vtep设备与所述对端vtep设备之间建立了vxlan隧道,并可以将第一vm发送至第二vm的单播报文直接通过所述vxlan隧道发送至所述对端vtep设备;vxlan网关设备接收到封装vxlan报文头的所述单播报文后,可以将封装vxlan报文头的所述单播报文进行普通的三层转发,无需解封装vxlan报文头再加上新的vxlan报文头,减少了工作量,有效地提高了转发效率。

附图说明

图1是现有技术的一种vxlan报文转发的网络架构图;

图2是本申请示出的一种vxlan报文转发的网络架构图;

图3是本申请示出的一种vxaln报文转发方法的流程图;

图4是现有技术的一种vxlan报文头的示意图;

图5是本申请示出的一种vxlan报文头的示意图;

图6是本申请示出的一种vxaln报文转发装置的逻辑框图;

图7是本申请示出的一种vxlan报文转发装置的硬件结构图。

具体实施方式

为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对现有技术方案和本发明实施例中的技术方案作进一步详细的说明。

参见图1,为现有技术的一种vxlan报文转发的网络架构图。如图1所示,vm1所在的vxlan网络的vni(vxlannetworkidentifier,虚拟可扩展局域网网络身份)是1000,vm1的vlanid(virtuallocalareanetworkidentifier,虚拟局域网标识)是101,vm1的ip地址为10.1.1.100/24,mac地址为mac1,vm1通过port1接入vtep1;

vm2所在的vxlan网络的vni是2000,vm2的vlanid是102,vm2的ip地址为20.1.1.200/24,mac地址为mac2,vm2通过port4接入vtep2。

vxlan网关设备上配置vxlan网关接口1,vxlan网关接口1被指定为vxlan1000的三层网关,且为vm1的默认网关,ip地址为10.1.1.1/24,mac地址为macgw1;vxlan网关设备上还配置vxlan网关接口2,vxlan网关接口2被指定为vxlan2000的三层网关,且为vm2的默认网关,ip地址为20.1.1.1/24,mac地址为macgw2。

vtep1与vxlan网关设备之间建立第一vxlan隧道,即图中的tunnel1;vtep2与vxlan网关设备之间建立第二vxlan隧道,即图中的tunnel2。

上述vm,指的是利用虚拟化技术,在一台物理服务器上虚拟出多个主机。每个虚拟主机互相独立,有各自的操作系统和逻辑上相互独立的内存、cpu、网卡等设备,从应用程序的角度来看,绝大部分情况下和使用物理服务器没有差别。

上述vtep设备,指的是vxlan网络中隧道终点的设备,用于在vxlan网络中发送、接收vxlan报文;其中,vxlan报文即为封装了vxlan报文头的报文。一台vtep设备可以接入多台处于不同或相同vxlan网络的vm,其中,每个vm的二层网络地址和三层网络地址都是不同的。

上述vxlan网关设备,指的是vxlan网络中的网关设备,预配置了对应于多个vxlan网络的网关接口,用于转发跨vxlan网络的vxlan报文;另外,vxlan网关设备也可以完成普通ip报文的三层转发。

现在从vtep1的角度对现有技术的vxlan报文转发的方法进行描述,以下提到的第一vm指vm1,本端vtep设备指vtep1,对端vtep设备指vtep2,第二vm指vm2。

现有技术中,第一vm与第二vm之间的通信过程可分为两个阶段:

在第一阶段,第一vm学习默认网关的mac地址;

在第二阶段,本端vtep设备通过第一vxlan隧道将第一vm发送至第二vm的单播报文转发至vxlan网关设备,vxlan网关设备再通过第二vxlan隧道将上述单播报文转发至对端vtep设备,对端vtep设备接收到该单播报文后,转发至第二vm。

以下对第一阶段进行说明:

首先第一vm发送arp(addressresolutionprotocol,地址解析协议)请求来获得默认网关10.1.1.1/24的mac地址,目的mac为广播mac地址,源mac为第一vm的mac地址mac1;第一vm将arp请求发送至本端vtep设备。

本端vtep设备接收到第一vm发送的arp请求报文后,将该arp请求报文封装vxlan报文头,并将封装后的该arp请求报文在vni为1000的vxlan网络中进行广播,并同时学习对应第一vm的mac表项,该mac表项包括第一vm的vni、第一vm的mac地址、第一接口索引和第一vm的vlanid的映射关系;其中,第一接口索引为第一vm接入本端vtep设备的接口索引port1;学习到的表项用于后续单播转发,学习到的mac表项存储在mac表中,如下表1所示:

表1

vxlan网关设备从第一vxlan隧道接收到封装vxlan报文头的上述arp请求报文后,对上述arp请求报文解封装,确定上述arp请求报文的请求地址为本地vxlan网关接口1的ip地址,则通过第一vxlan隧道向本端vtep设备发送封装vxlan报文头的arp应答报文,以将vxlan网关接口1的mac地址返回给本端vtep设备;其中,该arp应答报文的源mac是macgw1,目的mac是mac1。vxlan网关设备还可以学习对应第一vm的mac表项,学习到的表项用于后续单播转发,学习到的mac表项存储在mac表中,如下表2所示:

表2

本端vtep设备接收到封装vxlan报文头的上述arp应答报文后,解封装vxlan报文头,然后读取上述arp应答报文的报文头,目的mac是mac1,查找mac表,获得对应mac1的mac表项。本端vtep设备将上述arp应答报文通过端口port1和虚拟局域网标识101发送至第一vm,并学习对应vxlan网关设备上的vxlan网关接口1的mac表项,学习到的mac表项存储在mac表中,如下表3所示:

表3

第一vm接收到上述arp应答报文后,在本地的arp表中记录vxlan网关接口1的ip地址和mac地址的对应关系。

此时,第一vm成功学习到默认网关的mac地址,后续可以通过默认网关发送单播报文。

以下对第二阶段进行说明:

第一vm向第二vm发送单播报文,该单播报文的源mac为mac1,目的mac为vxlan网关接口1的mac地址macgw1,源ip为第一vm的ip地址10.1.1.100/24,目的ip为第二vm的ip地址20.1.1.200/24。第一vm将该单播报文发送至本端vtep设备。

本端vtep设备接收到上述单播报文后,根据接收该单播报文的第一接口索引port1确定发送该单播报文的第一vm的vni,然后根据第一vm的vni和该单播报文的目的mac查找mac表,获得对应于vxlan网关接口1的mac表项,然后将上述单播报文封装vxlan报文头后,通过第一vxlan隧道将封装vxlan报文头的上述单播报文发送至vxlan网关接口1所在的vxlan网关设备。

vxlan网关设备接收到封装vxlan报文头的上述单播报文后,解封装vxlan报文头,然后判断上述单播报文的目的mac是否为本地的mac地址。由于上述单播报文的目的mac为macgw1,因此vxlan网关设备可以确定上述单播报文的目的mac是本地vxlan网关接口1的mac地址,进而确定该单播报文需走三层转发。

在这种情况下,vxlan网关设备可以根据上述单播报文的目的ip查找路由表,确定对应的路由表项;其中,该路由表项包括对应于第二vm的出接口。对应于第二vm的出接口即为vxlan网关接口2,vxlan网关接口2是vni为2000的vxlan网络的默认网关。

vxlan网关设备在确定需将上述单播报文发送至vni为2000的vxlan网络后,可以将上述单播报文的目的mac更改为第二vm的mac地址mac2,将源mac更改为vxlan网关接口2的mac地址macgw2,然后为该单播报文封装vxlan报文头,通过第二vxlan隧道将封装vxlan报文头的该单播报文发送至对端vtep设备;其中,vxlan报文头中携带的vni为2000。

此时默认vxlan网关设备已经学习到第二vm的mac地址,学习mac地址的过程与前述vxlan网关设备学习到第一vm的mac地址的过程类似,在此不再赘述;

或者,如果vxlan网关设备尚未学习到第二vm的mac地址,可以向对端vtep设备发送arp请求报文,来学习第二vm的mac地址。在学习到第二vm的mac地址之前,vxlan网关设备可以先缓存上述单播报文,等学习完成后,再进行发送。

对端vtep设备通过第二vxlan隧道接收到封装vxlan报文头的上述单播报文后,解封装vxlan报文头,然后根据上述单播报文的目的mac,查找本地的mac表,获得对应于第二vm的mac表项,并根据该mac表项中的端口port4和虚拟局域网标识102将上述单播报文发送至第二vm。

至此,第一vm与第二vm之间完成通信。第二vm向第一vm发送单播报文的过程与第一vm向第二vm发送单播报文的过程类似,在此不再赘述。

从第一vm向第二vm发送单播报文的过程中,可以发现,vxlan网关设备需要将从第一vxlan隧道接收到的封装vxlan报文头的单播报文,在解封装后,重新封装vxlan报文头,然后将封装vxlan报文头的单播报文从第二vxlan隧道发送至对端vtep设备;对端vtep设备再将接收到的封装vxlan报文头的单播报文解封装后发送至第二vm。整个过程中,vxlan网关设备需对单播报文解封装vxlan报文头后,再封装新的vxlan报文头,工作内容繁琐,对性能的压力较大,并且转发效率不高。

为解决上述问题,在本申请实施例中,本端vtep设备预先学习第二vm的ip地址和对端vtep设备的ip地址的映射关系,并基于该映射关系在本地vtep设备与对端vtep设备之间建立vxlan隧道,后续接收到第一vm发送至第二vm的单播报文后,可以直接通过该vxlan隧道将该单播报文发送至对端vtep设备,以由对端vtep设备将该单播报文转发至第二vm。整个转发过程中,vxlan网关设备只需进行普通的三层ip转发,无需解封装vxlan报文头再封装新的vxlan报文头,减少了工作量,有效提高了转发效率。

参见图2,为本申请示出的一种vxlan报文转发的网络架构图,如图2所示,该网络架构图与图1近似,vm1所在的vxlan网络的vni是1000,vm1的vlanid是101,vm1的ip地址为10.1.1.100/24,mac地址为mac1,vm1通过port1接入vtep1;

vm2所在的vxlan网络的vni是2000,vm2的vlanid是102,vm2的ip地址为20.1.1.200/24,mac地址为mac2,vm2通过port4接入vtep2。

vxlan网关设备上配置vxlan网关接口1,vxlan网关接口1被指定为vxlan1000的三层网关,且为vm1的默认网关,ip地址为10.1.1.1/24,mac地址为macgw1;

vxlan网关设备上还配置vxlan网关接口2,vxlan网关接口2被指定为vxlan2000的三层网关,且为vm2的默认网关,ip地址为20.1.1.1/24,mac地址为macgw2。

vtep1与vxlan网关设备之间建立第一vxlan隧道,即图中的tunnel1;vtep2与vxlan网关设备之间建立第二vxlan隧道,即图中的tunnel2。

图2与图1的区别在于,vtep1与vtep2之间建立了第三vxlan隧道,即图中的tunnel3,第三vxlan隧道的建立过程将在下文进行说明。

现在从vtep1的角度对本申请vxlan报文转发方法进行描述,以下提到的第一vm指vm1,本端vtep设备指vtep1,对端vtep设备指vtep2,第二vm指vm2。第一接口索引指port1,第四接口索引指port4。

请继续参见图3,为本申请示出的一种vxlan报文转发方法的流程图,该方法的执行主体是本端vtep设备,所述方法包括以下步骤:

步骤301:接收所述对端vtep设备通过所述vxlan网关设备透传的所述第二vm的ip地址,以及所述对端vtep设备的ip地址;其中,所述对端vtep设备的ip地址携带在所述vxlan网关设备发送的vxlan报文的vxlan报文头中。

步骤302:创建所述第二vm的ip地址与所述对端vtep设备的ip地址之间的映射关系,并基于所述映射关系在所述本端vtep设备和所述对端vtep设备之间建立vxlan隧道。

步骤303:当接收到所述第一vm发送至所述第二vm的单播报文后,基于所述vxlan隧道将所述单播报文发送至所述对端vtep设备,以由所述对端vtep设备将所述单播报文转发至所述第二vm。

其中,上述vtep设备的ip地址,可以是物理接口的ip地址;或者,也可以是本地loopback接口的ip地址。如果本端vtep设备和对端vtep设备在建立vxlan隧道和转发报文时,使用本地loopback接口的ip地址,则可以提高vxlan报文转发过程的可靠性。

在本申请实施例中,可以先对vxlan报文头进行扩展。vxlan网关设备在本端vtep设备与对端vtep设备建立第三vxlan隧道时,利用扩展后的vxlan报文头携带本端vtep设备或对端vtep设备的ip地址。

参见图4,为现有技术的一种vxlan报文头的示意图;参见图5,为本申请示出的一种vxlan报文头的示意图。如图所示,本申请示出的vxlan报文头比现有技术方案中的vxlan报文头多出ip高位字段和ip低位字段,ip高位字段可用于记录ip地址的前24位,ip低位字段可用于记录ip地址的后8位。

在本申请实施例中,第一vm与第二vm的通信可分为三个阶段:

在第一阶段,第一vm学习默认网关的mac地址;

在第二阶段,本端vtep设备与对端vtep设备之间建立跨网段vxlan隧道(即第三vxlan隧道);

在第三阶段,本端vtep设备通过第三vxlan隧道将第一vm发送至第二vm的单播报文发送至对端vtep设备,对端vtep设备接收到该单播报文后,转发至第二vm。

以下对第一阶段进行说明:

首先第一vm发送arp请求来获得默认网关10.1.1.1/24的mac地址,目的mac为广播mac地址,源mac为第一vm的mac地址mac1;第一vm将arp请求发送至本端vtep设备。

在本申请实施例中,本端vtep设备接收到第一vm发送的arp请求报文后,将该arp请求报文封装vxlan报文头,并将封装后的该arp请求报文在vni为1000的vxlan网络中进行广播,并同时学习对应于第一vm的mac表项,学习到的表项用于后续单播转发,学习到的mac表项存储在mac表中,如下表4所示:

表4

在本申请实施例中,vxlan网关设备从第一vxlan隧道接收到封装vxlan报文头的上述arp请求报文后,对上述arp请求报文解封装,确定上述arp请求报文的请求地址为本地vxlan网关接口1的ip地址,则通过第一vxlan隧道向本端vtep设备发送封装vxlan报文头的arp应答报文,以将vxlan网关接口1的mac地址返回给本端vtep设备;

其中,该arp应答报文的源mac是macgw1,目的mac是mac1。vxlan网关设备还可以学习对应第一vm的mac表项,学习到的表项用于后续单播转发,学习到的mac表项存储在mac表中,如下表5所示:

表5

在本申请实施例中,本端vtep设备接收到封装vxlan报文头的上述arp应答报文后,解封装vxlan报文头,然后读取上述arp应答报文的报文头,目的mac是mac1,查找mac表,获得对应mac1的mac表项。

本端vtep设备将上述arp应答报文通过端口port1和虚拟局域网标识101发送至第一vm,并学习对应vxlan网关设备上的vxlan网关接口1的mac表项,学习到的mac表项存储在mac表中,如下表6所示:

表6

在本申请实施例中,第一vm接收到上述arp应答报文后,在本地的arp表中记录vxlan网关接口1的ip地址和mac地址的对应关系。

此时,第一vm成功学习到默认网关的mac地址,后续可以通过默认网关发送单播报文。

此外,vxlan网关设备在接收到封装vxlan报文头的上述arp请求报文后,还可以学习对应于第一vm的arp表项。在本申请实施例中,可以预先扩展vtep设备和vxlan网关设备上的arp表,扩展后的arp表中可以记录vni。vxlan网关设备可以从vxlan报文头中获得第一vm的vni,并读取上述arp请求报文的源ip和源mac,获得第一vm的ip地址和第一vm的mac地址。

vxlan网关设备可以将对应于第一vm的arp表项存储在扩展后的arp表中;该arp表项包括第一vm的ip地址、第一vm的mac地址和第一vm的vni的映射关系。如下表7所示:

表7

vxlan网关设备在学习到对应于第一vm的arp表项后,可以将学习到的arp表项通告至对端vtep设备。

在示出的一种实施方式中,vxlan网关设备可以将封装vxlan报文头的上述arp请求报文的vxlan报文头中的目的ip更改为对端vtep设备的ip地址,以及,将目的mac更改为对端vtep设备的mac地址;

在更改完成后,vxlan网关设备将封装vxlan报文头的上述arp请求报文发送至对端vtep设备;其中,vxlan报文头中携带第一vm的vni。

对端vtep设备接收到封装vxlan报文头的上述arp请求报文后,可以解封装vxlan报文头,读取该vxlan报文头携带的vni,即第一vm的vni;

另外,对端vtep设备还可以读取上述arp请求报文的源ip和源mac,获得第一vm的ip地址和第一vm的mac地址。此时,对端vtep设备学习到了对应于第一vm的arp表项,可以在本地的arp表中存储该arp表项。如下表8所示:

表8

在示出的另一种实施方式中,vxlan网关设备可以在学习到对应于第一vm的arp表项后,向对端vtep设备发送携带该arp表项的通告消息。

对端vtep设备接收到上述通告消息后,可以直接获得该通告消息携带的对应于第一vm的arp表项,并在本地保存该arp表项。其中,上述通告消息可以是基于bgp(bordergatewayprotocol,边界网关协议)的通告消息。

第二vm学习默认网关的mac地址的过程与上述过程类似,在此不再赘述。此外,当第二vm学习默认网关的mac地址时,本端vtep设备也能学习到对应于第二vm的arp表项,学习过程与对端vtep设备学习对应于第一vm的arp表项的过程类似,在此也不再赘述。

以下对第二阶段进行说明:

在本申请实施例中,本端vtep设备与对端vtep设备之间建立第三vxlan隧道可以是在第一vm学习到默认网关的mac地址后,第一vm首次向第二vm发送单播报文时完成。

具体的,第一vm向第二vm发送单播报文,该单播报文的源mac为mac1,目的mac为vxlan网关接口1的mac地址macgw1,源ip为第一vm的ip地址10.1.1.100/24,目的ip为第二vm的ip地址20.1.1.200/24。第一vm将该单播报文发送至本端vtep设备。

在本申请实施例中,本端vtep设备接收到上述单播报文后,根据接收该单播报文的第一接口索引确定发送该单播报文的第一vm的vni,然后根据第一vm的vni和该单播报文的目的mac查找mac表,获得对应于vxlan网关接口1的mac表项,然后将该单播报文封装vxlan报文头后,通过第一vxlan隧道将封装vxlan报文头的上述单播报文发送至vxlan网关接口1所在的vxlan网关设备。

在本申请实施例中,vxlan网关设备接收到封装vxlan报文头的上述单播报文后,解封装vxlan报文头,并记录vxlan报文头中的源ip,即本端vtep设备的ip地址。vxlan网关设备可以判断上述单播报文的目的mac是否为本地的mac地址。

由于上述单播报文的目的mac为macgw1,因此vxlan网关设备可以确定上述单播报文的目的mac是本地vxlan网关接口1的mac地址,进而确定该单播报文需走三层转发。

在这种情况下,vxlan网关设备可以根据上述单播报文的目的ip查找路由表,确定对应的路由表项;其中,该路由表项包括对应于对应于第二vm的出接口。对应于第二vm的出接口即为vxlan网关接口2,vxlan网关接口2是vni为2000的vxlan网络的默认网关。

vxlan网关设备在确定需将上述单播报文发送至vni为2000的vxlan网络后,可以将上述单播报文的目的mac更改为第二vm的mac地址mac2,将源mac更改为vxlan网关接口2的mac地址macgw2,然后为该单播报文封装vxlan报文头,其中,vxlan报文头中携带的vni为2000;

另外,vxlan网关设备可以将在解封装vxlan报文头时记录的源ip(即本端vtep设备的ip地址),填到vxlan报文头中,将源ip的前24位填在ip高位字段,将源ip的后8位填在ip低位字段。例如:vxlan网关设备将ip地址1.1.1.1填入到vxlan报文头时,将1.1.1填入到ip高位字段,将1填入到ip低位字段。

在完成上述步骤以后,vxlan网关设备可以通过第二vxlan隧道将重新封装vxlan报文头的上述单播报文发送至对端vtep设备。

在本申请实施例中,对端vtep设备在接收到封装vxlan报文头的上述单播报文后,可以解封装vxlan报文头,然后学习对应于vxlan网关设备上的vxlan网关接口2的mac表项,学习到的mac表项存储在mac表中,如下表9所示:

表9

对端vtep设备根据上述单播报文的目的mac查找mac表,获取对应mac2的mac表项,然后将上述单播报文通过端口port4和虚拟局域网标识104发送至第二vm。

此外,对端vtep设备还可以获取该vxlan报文头携带的本端vtep设备的ip地址。

具体的,对端vtep设备可以读取该vxlan报文头的ip高位字段的字段取值,获得本端vtep设备的ip地址的前24位;以及,读取该vxlan报文头的ip低位字段的字段取值,获得本端vtep设备的ip地址的后8位。

对端vtep设备在获得本端vtep设备的ip地址的前24位和后8位后,拼装整理为本端vtep设备的完整的ip地址。

另外,对端vtep设备可以读取上述单播报文的源ip,获得第一vm的ip地址。在获得本端vtep设备的ip地址和第一vm的ip地址后,对端vtep设备可以记录本端vtep设备的ip地址和第一vm的ip地址的映射关系,该映射关系用于在后续建立第三vxlan隧道;对端vtep设备可以根据第一vm的ip地址查找本地的arp表,获得对应于第一vm的arp表项,然后生成第一vm的ip地址、本端vtep设备的ip地址和第一vm的vni的映射关系。将该映射关系存储在预设的ip地址映射表中,如下表10所示:

表10

对端vtep设备可以根据该映射关系建立与本端vtep设备之间的第三vxlan隧道。此时,对端vtep设备可以通过第三vxlan隧道将第二vm向第一vm发送的单播报文发送至本端vtep设备。

本端vtep设备可以根据与对端vtep设备等同的方式获得对端vtep设备的ip地址和第二vm的ip地址的映射关系,并结合对应于第二vm的arp表项生成第二vm的ip地址、对端vtep设备的ip地址和第二vm的vni的映射关系,然后根据该映射关系建立本端vtep设备与对端vtep设备之间的第三vxlan隧道。在此不再赘述。

当本端vtep设备和对端vtep设备之间建立第三vxlan隧道后,本端vtep设备可以通过第三vxlan隧道与对端vtep设备进行通信。

以下对第三阶段进行说明:

第一vm向第二vm发送单播报文,该单播报文的源mac为mac1,目的mac为vxlan网关接口1的mac地址macgw1,源ip为第一vm的ip地址10.1.1.100/24,目的ip为第二vm的ip地址20.1.1.200/24。第一vm将该单播报文发送至本端vtep设备。

在本申请实施例中,本端vtep设备接收到单播报文后,可以判断该单播报文的源ip和目的ip是否属于同一网段。

一方面,如果单播报文的源ip和目的ip属于同一网段,则该单播报文走普通的vxlan二层转发;本端vtep设备可以根据接收该单播报文的接口索引(例:端口号)确定发送该单播报文的第一vm的vni,然后根据第一vm的vni查找和该单播报文的目的mac查找mac表,获得对应于目的mac的mac表项,进而在封装vxlan报文头后,根据该mac表项转发该单播报文;

另一方面,如果单播报文的源ip和目的ip不属于同一网段,则该单播报文走vxlan三层跨隧道转发;本端vtep设备确定第一vm向第二vm发送的上述单播报文的源ip和目的ip不属于同一网段后,根据该目的ip查找本地的ip地址映射表,获得第二vm的ip地址、对端vtep设备的ip地址以及第二vm的vni的映射关系,此外,本端vtep设备可以根据该目的ip查找本地的arp表,获得对应于第二vm的arp表项;其中,该arp表项包括第二vm的ip地址、第二vm的mac地址和第二vm的vni的映射关系;

在获得对应于第二vm的arp表项后,本端vtep设备可以将上述单播报文的目的mac更改为第二vm的mac地址,然后为上述单播报文封装vxlan报文头,其中,该vxlan报文头中的目的mac为vxlan网关设备的mac地址,目的ip为对端vtep设备的ip地址,该vxlan报文头携带第二vm的vni;本端vtep设备将封装vxlan报文头的上述单播报文发送至vxlan网关设备。

在本申请实施例中,vxlan网关设备接收到封装vxlan报文头的上述单播报文后,可以按照普通ip三层转发的方式,将封装vxlan报文头的上述单播报文转发至对端vtep设备。

在本申请实施例中,对端vtep设备接收到封装vxlan报文头的上述单播报文后,解封装vxlan报文头,然后根据上述单播报文的目的mac(即第二vm的mac地址)查找本地的mac表,获得对应于第二vm的mac表项,该mac表项包括第二vm的mac地址、第二vm的vni、第四接口索引和第二vm的vlanid的映射关系。

对端vtep设备在获得对应于第二vm的mac表项后,根据第四接口索引和第二vm的vlanid将上述单播报文发送至第二vm。

至此,第一vm向第二vm之间发送单播报文的过程完成。

综上所述,在本申请技术方案中,本端vtep设备接收对端vtep设备通过vxlan网关设备透传的第二vm的ip地址,以及上述对端vtep设备的ip地址;其中,上述对端vtep设备的ip地址携带在上述vxlan网关设备发送的vxlan报文的vxlan报文头中;本端vtep设备可以创建上述第二vm的ip地址与上述对端vtep设备的ip地址之间的映射关系,并基于该映射关系在本地vtep设备与对端vtep设备之间建立vxlan隧道;本地vtep设备接收到第一vm发送至上述第二vm的单播报文后,基于上述vxlan隧道将上述单播报文发送至上述对端vtep设备,以由上述对端vtep设备将上述单播报文转发至上述第二vm;

由于在本申请中,本端vtep设备在建立与对端vtep设备之间的vxlan隧道后,可以将第一vm发送至第二vm的单播报文直接通过上述vxlan隧道发送至对端vtep设备,以由对端vtep设备向上述第二vm转发上述单播报文;在整个转发过程中,vxlan网关设备在接收到封装vxlan报文头的上述单播报文后,可以将封装vxlan报文头的上述单播报文进行普通的三层转发,无需解封装vxlan报文头,以及封装新的vxlan报文头,减少了工作量,从而减少了vxlan网关设备的性能压力,有效地提高了转发效率。

与前述vxlan报文转发方法的实施例相对应,本申请还提供了vxlan报文转发装置的实施例。

参见图6,是本申请示出的一种vxaln报文转发装置的逻辑框图:

如图6所示,该vxlan报文转发装置60包括:

接收单元610,用于接收所述对端vtep设备通过所述vxlan网关设备透传的所述第二vm的ip地址,以及所述对端vtep设备的ip地址;其中,所述对端vtep设备的ip地址携带在所述vxlan网关设备发送的vxlan报文的vxlan报文头中。

创建单元620,用于创建所述第二vm的ip地址与所述对端vtep设备的ip地址之间的映射关系,并基于所述映射关系在所述本端vtep设备和所述对端vtep设备之间建立vxlan隧道。

发送单元630,用于当接收到所述第一vm发送至所述第二vm的单播报文后,基于所述vxlan隧道将所述单播报文发送至所述对端vtep设备,以由所述对端vtep设备将所述单播报文转发至所述第二vm。

在本例中,所述本端vtep设备与所述vxlan网关设备之间建立了第一vxlan隧道,所述vxlan网关设备与所述对端vtep设备之间建立了第二vxlan隧道;

所述接收单元610,进一步用于:

接收到所述vxlan网关设备通过所述第一vxlan隧道发送的vxlan报文;其中,所述vxlan报文是封装vxlan报文头的所述第二vm发送至所述第一vm的单播报文;

解封装所述vxlan报文的vxlan报文头,并获取所述vxlan报文头携带的所述对端vtep设备的ip地址以及所述单播报文的源ip;其中,所述单播报文的源ip为所述第二vm的ip地址。

在本例中,所述接收单元610,进一步用于:

接收到所述vxlan网关设备发送的vxlan报文;其中,所述vxlan报文是封装vxlan报文头的所述第二vm发送至所述vxlan网关设备的arp请求报文,所述vxlan报文头携带所述第二vm的vni;

获取所述arp请求报文的源ip和源mac,以及所述第二vm的vni,并基于该源ip、该源mac和所述第二vm的vni生成对应于所述第二vm的arp表项;其中,该源ip即为所述第二vm的ip地址,该mac即为所述第二vm的mac地址。

在本例中,所述接收单元610,进一步用于:

接收到所述vxlan网关设备发送的通告消息;其中,所述通告消息携带所述vxlan网关设备创建的对应于所述第二vm的arp表项;该arp表项由所述vxlan网关设备基于封装vxlan报文头的所述第二vm发送至所述vxlan网关设备的arp请求报文的源ip、源mac和所述第二vm的vni创建;

获取所述通告消息中携带的对应于所述第二vm的arp表项,在本地保存对应于所述第二vm的arp表项。

在本例中,所述创建单元620,进一步用于:

基于所述第二vm的ip地址和所述对端vtep设备的ip地址之间的对应关系,以及本地保存的对应于所述第二vm的arp表项,生成所述第二vm的ip地址、所述对端vtep设备的ip地址、以及所述第二vm的vni之间的映射关系。

本申请vxlan报文转发装置的实施例可以应用在本端vtep设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在本端vtep设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图7所示,为本申请vxlan报文转发装置所在本端vtep设备的一种硬件结构图,除了图7所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的本端vtep设备通常根据该vxlan报文转发装置的实际功能,还可以包括其他硬件,对此不再赘述。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1