EVPN VXLAN

为什么会有EVPN(Ethernet VPN)呢?最初的VXLAN方案(RFC7348)中没有定义控制平面,是手工配置VXLAN隧道,然后通过流量泛洪的方式进行主机地址的学习。这种方式实现上较为简单,但是会导致网络中存在很多泛洪流量、网络扩展起来困难。

为了解决上述问题,人们在VXLAN中引入了EVPN作为VXLAN的控制平面

EVPN VXLAN

EVPN参考了MP-BGP(MultiProtocol BGP)的机制。在深入理解EVPN的工作原理前,我们先对MP-BGP(MultiProtocol BGP)做下简单回顾。

传统的BGP-4使用Update报文在对等体之间交换路由信息。一条Update报文可以通告一类具有相同路径属性的可达路由,这些路由放在NLRI(Network Layer Reachable Information,网络层可达信息)字段中。因为BGP-4只能管理IPv4单播路由信息,为了提供对多种网络层协议的支持(例如IPv6、组播),发展出了MP-BGP。MP-BGP在BGP-4基础上对NLRI作了新扩展。玄机就在于新扩展的NLRI上,扩展之后的NLRI增加了地址族的描述,可以用来区分不同的网络层协议,例如IPv6单播地址族、VPN实例地址族等。

类似的,EVPN也是借用了MP-BGP的机制,在L2VPN地址族下定义了新的子地址族——EVPN地址族,在这个地址族下又新增了一种NLRI,即EVPN NLRI。EVPN NLRI定义了几种BGP EVPN路由类型,这些路由可以携带主机IP、MAC、VNI、VRF等信息。这样,当一个VTEP学习到下挂的主机的IP、MAC地址信息后,就可以通过MP-BGP路由将这些信息发送给其他的VTEP,从而在控制平面实现主机IP、MAC地址的学习,抑制了数据平面的泛洪。

采用EVPN作为VXLAN的控制平面具有以下优势:

可实现VTEP自动发现、VXLAN隧道自动建立,从而降低网络部署、扩展的难度。
EVPN可以同时发布二层MAC信息和三层路由信息。
可以减少网络中的泛洪流量。

BGP EVPN 网络组合概念

EVPN网络组合

EVPN网络组合2

BGP EVPN的五种路由

EVPN Type 2路由

EVPN Type2路由,也就是MAC/IP路由,主要用于VTEP之间相互通告主机IP、MAC信息。Type2路由的NLRI部分格式如图1-2所示。
图1-2 Type2路由的报文格式

type2

各字段的解释如下表所示:

字段 说明
Route Distinguisher 该字段为EVPN实例下设置的RD(Route Distinguisher)值。作用类似于L3VPN的RD值,这里的RD是区分不同的EVPN实例。一个二层广播域BD就对应一个EVPN实例。
Ethernet Segment Identifier 该字段为当前设备与对端连接定义的唯一标识。
Ethernet Tag ID 该字段为当前设备上实际配置的VLAN ID。
MAC Address Length 该字段为此路由携带的主机MAC地址的长度。
MAC Address 该字段为此路由携带的主机MAC地址。
IP Address Length 该字段为此路由携带的主机IP地址的掩码长度。
IP Address 该字段为此路由携带的主机IP地址。
MPLS Label1 该字段为此路由携带的二层VNI,用于标识不同的BD。
MPLS Label2 该字段为此路由携带的三层VNI,用于标识不同的VRF。VXLAN网络中为了实现不同租户之间的隔离,需要通过不同的VRF(L3VPN)来隔离不同租户的路由表,从而将不同租户的路由存放在不同的私网路由表中,而三层VNI就是用来标识这些VRF的。

EVPN Type 3路由

EVPN Type3路由主要用于在VTEP之间相互通告二层VNI、VTEP IP信息,以建立头端复制列表,即用于VTEP的自动发现和VXLAN隧道的动态建立:如果对端VTEP IP地址是三层路由可达的,则建立一条到对端的VXLAN隧道。同时,如果对端VNI与本端相同,则创建一个头端复制表,用于后续BUM报文转发。
Type3路由的NLRI是由“前缀”和“PMSI”属性组成,报文格式如图1-3所示。其中VTEP IP信息体现在NLRI的Originating Router’s IP Address字段中,二层VNI信息则体现在PMSI属性的MPLS Label中。

图1-3 Type3路由的报文格式

type3

各字段的解释如下表所示:

字段 说明
Route Distinguisher 该字段为EVPN实例下设置的RD(Route Distinguisher)值。
Ethernet Tag ID 该字段为当前设备上的VLAN ID。在此路由中为全0。
IP Address Length 该字段为此路由携带的本端VTEP IP地址的掩码长度。
Originating Router’s IP Address 该字段为此路由携带的本端VTEP IP地址。
Flags 该字段为标志位,标识当前隧道是否需要叶子节点信息。在VXLAN场景中,该字段没有实际意义。
Tunnel Type 该字段为此路由携带的隧道类型。目前,在VXLAN场景中,支持的类型只有“6:Ingress Replication”,即头端复制,用于BUM报文转发。
MPLS Label 该字段为此路由携带的二层VNI。
Tunnel Identifier 该字段为此路由携带的隧道信息。目前,在VXLAN场景中,该字段也是本端VTEP IP地址。

EVPN Type 5路由

EVPN Type5路由又称IP前缀路由,主要用于传递网段路由。不同于Type2路由只传递32(IPv4)/128(IPv6)位的主机路由,Type5路由可传递0~32/0~128掩码长度的网段路由。
Type5路由的报文格式:

图1-4 Type5路由的报文格式

type5

各字段的解释如下表所示:

字段 说明
Route Distinguisher 该字段为EVPN实例下设置的RD(Route Distinguisher)值。
Ethernet Segment Identifier 该字段为当前设备与对端连接定义的唯一标识。
Ethernet Tag ID 该字段为当前设备上实际配置的VLAN ID。
IP Prefix Length 该字段为此路由携带的IP前缀掩码长度。
IP Prefix 该字段为此路由携带的IP前缀。
GW IP Address 该字段为默认网关地址。该字段在VXLAN场景中没有实际意义。
MPLS Label 该字段为此路由携带的三层VNI。

总结:

BGP EVPN报文作用 主要传送参数
Type2报文建立MAC表 MAC/IP
Type3报文建立隧道,创建头端复制列表[VNI,Source,Destination] 二层VNI和VTEP IP
Type5报文通告Internet外网 网段

理解BGP EVPN作为VXLAN控制面的工作过程

在用BGP EVPN方式部署分布式VXLAN网络的场景中,控制平面的流程包括VXLAN隧道建立、MAC地址动态学习;转发平面的流程包括同子网已知单播报文转发、同子网BUM报文转发、跨子网报文转发。BGP EVPN方式实现的功能全面,支持主机IP路由通告、主机MAC地址通告、主机ARP通告等,还可以使能ARP广播抑制功能。如果在VXLAN网络中采用分布式网关,推荐使用BGP EVPN方式。

本文下面的内容以Underlay网络和Overlay网络均为IPv4为例,介绍EVPN作为VXLAN控制面的工作过程。

使用EVPN学习MAC地址

使用EVPN作为VXLAN的控制平面,可以用EVPN来进行MAC学习,以替代数据平面泛洪方式的MAC学习,减少泛洪流量。使用EVPN来进行MAC学习的过程,是通过在VTEP之间传递Type2路由完成的。

下面以图1-5为例,介绍VTEP之间是如何通过EVPN来实现远程主机的MAC学习的。

图1-5 使用EVPN来学习远程主机MAC地址的过程示意图

远程主机MAC学习

图中Leaf1和Leaf2作为VTEP,分别连接同网段的主机Host1和Host2,以Leaf1向Leaf2发送Type2路由为例。

  1. Host1在连接至Leaf1时,通常会触发ARP、DHCP等行为。通过这些流量,Leaf1上就会学习到Host1的MAC信息,记录在本地MAC表中。
  2. Leaf1学习到本地主机的MAC表项后,会向其对等体Leaf2发送EVPN Type2路由。该路由会携带本端EVPN实例的ERT、VTEP IP地址、二层VNI、Host1的MAC地址等信息。其中本端的EVPN实例的ERT、VTEP IP地址、二层VNI这些信息来源于本端VTEP上的配置,样例如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
[Leaf1]
bridge-domain 10
vxlan vni 10 //二层VNI
evpn
route-distinguisher 10:1
vpn-target 0:10 export-extcommunity //EVPN实例的ERT
vpn-target 100:5000 export-extcommunity
vpn-target 0:10 import-extcommunity
#
interface Nve1
source 1.1.1.1 //Leaf1的VTEP IP地址
vni 10 head-end peer-list protocol bgp
#
  1. Leaf2收到Leaf1发来的Type2路由后,能够学习到Host1的MAC地址信息,并将其保存在MAC表中,其下一跳为Leaf1的VTEP IP地址。
  2. 需要说明的是,Leaf2收到Leaf1发送的EVPN路由时,能否接纳该路由信息,是需要通过EVPN实例的RT(Route Target)值是否匹配来判断的。RT是一种BGP扩展团体属性,用于控制EVPN路由的发布与接收。也就是说,RT决定了本端的EVPN路由可以被哪些对端所接收,以及本端是否接收对端发来的EVPN路由。
  3. 在本例中,Leaf2上接收Leaf1发过来的EVPN路由,则需保证Leaf2上配置的IRT(Import RT)与Leaf1配置的ERT(Export RT)一致,例如Leaf2上EVPN中的IRT配置为0:10,与上文中Leaf1上的ERT一致:
1
2
3
4
5
6
7
8
9
[Leaf2]
bridge-domain 10
vxlan vni 10 //二层VNI
evpn
route-distinguisher 10:2
vpn-target 0:10 export-extcommunity
vpn-target 100:5000 export-extcommunity
vpn-target 0:10 import-extcommunity //EVPN实例的IRT
#

经过以上的流程,在未发送广播请求的情况下,Leaf2就可以学习到Host1的MAC地址。类似的,Leaf1也可以学习到Host2的MAC地址。
另外需要强调的是,EVPN只是减少了网络中的流量泛洪,并不会完全避免,例如在以下一些场景:

1.网络中存在“静默”主机的情况,这种情况下主机不会触发ARP、DHCP等行为,导致VTEP学习不到本地主机MAC地址,从而也就无法发送MAC地址信息让其他VTEP学习到。
2.主机首次通信的过程中,主机会发送ARP广播请求报文,这种也会产生泛洪。这种情况还可以通过ARP广播抑制功能来避免泛洪,可参考本文中的VXLAN BGP EVPN网络中的ARP广播抑制。

同子网VXLAN隧道的建立

VXLAN隧道由一对VTEP确定,在同子网互通场景下,因为只需要在同一个二层广播域(BD)内互通,所以只要两端VTEP的IP地址路由可达,VXLAN隧道就可以建立。通过EVPN动态建立VXLAN隧道,就是在两端VTEP之间建立BGP EVPN对等体,然后对等体之间通过交互Type3路由来互相传递VNI和VTEP IP地址信息,从而实现动态建立VXLAN隧道。

下面以图1-6为列,介绍VTEP之间是如何通过Type3路由建立VXLAN隧道。

图1-6 同子网VXLAN隧道的建立示意图

同子网VXLAN隧道建立

图中Leaf1、Leaf2、Leaf3作为VTEP,以Leaf1向Leaf2、Leaf3发送路由为例。

  1. 在Leaf1上完成VTEP IP、二层VNI、EVPN实例等相关配置后(这些配置的样例如下所示),Leaf1会向对等体Leaf2、Leaf3分别发送EVPN Type3路由。路由中会携带二层VNI、本端VTEP IP、EVPN实例的RD、出方向VPN-Target(ERT)等信息。
1
2
3
4
5
6
7
8
9
10
11
12
13
[Leaf1]
bridge-domain 10
vxlan vni 10 //二层VNI
evpn
route-distinguisher 1:10 //EVPN实例的RD
vpn-target 0:10 export-extcommunity //EVPN实例的ERT
vpn-target 100:5000 export-extcommunity
vpn-target 0:10 import-extcommunity
#
interface Nve1
source 1.1.1.1 //Leaf1的VTEP IP地址
vni 10 head-end peer-list protocol bgp
#
  1. Leaf2、Leaf3收到Leaf1发来的Type3路由后,如果Leaf1的VTEP IP三层路由可达,则建立一条到Leaf1的二层VXLAN隧道;同时,如果本地有相同的VNI,则建立一条头端复制列表,用于后续广播、组播、未知单播报文的转发。
  2. 在Leaf2、Leaf3收到Leaf1发送的EVPN路由时,会基于路由携带的RT值(EVPN实例的ERT值)是否与本地EVPN实例的IRT值匹配,来判断是否接纳该路由。

经过以上的流程,Leaf2、Leaf3上就能建立到Leaf1的头端复制列表,指导后续BUM报文的转发。类似的,Leaf1上也会建立到Leaf2、Leaf3的头端复制列表。

跨子网VXLAN隧道建立

具体都和同子网建立差不多,就是多了L3 VNI(对应不同的VRF)。详细点这

网段路由发布

网段路由发布

图中Leaf1和Leaf2作为VTEP,同时作为三层网关,其中Leaf1连接一个192.168.1.0/24的网段。

  1. Leaf1收集到本地IP网段路由,把该IP网段路由通过EVPN Type5路由发送给Leaf2。路由中携带有IP前缀、掩码长度、对应VRF的三层VNI等信息。
  2. Leaf2收到Leaf1发来的Type5路由后,能够学习到IP网段路由信息,并将其保存在相应的路由表中,其下一跳为Leaf1的VTEP IP地址,同时记录对应的三层VNI信息。
    Leaf2收到Leaf1发送的EVPN路由时,根据EVPN路由携带的RT值(Type 5路由使用L3VPN实例的ERT值填充)是否与本地L3VPN实例的IRT值匹配,来将网段路由添加到对应VRF的路由表中。如果某VRF的IRT值与EVPN路由携带的RT值相同,则接收该路由,同时提取其中的网段路由+三层VNI信息,在其路由表中生成网段路由。该路由的下一跳会被设置为Leaf1的VTEP IP地址。同时,如果Leaf1的VTEP IP地址三层路由可达,则建立一条到Leaf1的VXLAN隧道。

经过以上的流程,Leaf2就可以学习到Leaf1的网段路由信息,后续转发至该网段的报文时,可以根据查找路由表进行转发。

VXLAN BGP EVPN网络中流量的转发过程

本文下面的内容以Underlay网络和Overlay网络均为IPv4为例,介绍用BGP EVPN部署的分布式VXLAN网络中,报文的转发过程。

同子网报文转发

同子网报文转发为二层转发,只在VXLAN二层网关之间进行,三层网关无需感知。

同子网已知单播报文转发

如图1-9所示,Host1和Host2同属于一个子网,下面以Host1向Host2发送已知单播报文为例介绍报文在VXLAN网络中的转发流程。

图1-9 同子网已知单播报文转发示意图

同子网已知单播

  1. Host1发送目的地址为Host2的报文。如果Host1没有Host2的MAC地址,会先发送广播ARP请求来获取Host2的MAC地址,此处该过程不再详述,认为Host1已经获取了Host2的MAC地址。
  2. Leaf1收到Host1的报文后,根据报文入端口或VLAN信息判断其所属的BD,并在该BD内查找出接口(通过上一节使用EVPN学习MAC地址可以知道,Leaf1上会学习到Host2的MAC地址,出接口为VTEP 2.2.2.2)。然后Leaf1会对报文进行VXLAN封装后转发。
  3. Leaf2接收到VXLAN报文后,根据报文中VNI获取二层广播域,进行VXLAN解封装,获取内层的二层报文。
  4. Leaf2根据内层报文的目的MAC地址,从本地MAC表中找到对应的出接口,然后转发给对应的主机Host2。

Host2向Host1发送报文的过程与上述过程相同。

同子网BUM报文转发

如果是同子网的BUM报文(广播、组播、未知单播),则会向同子网的所有VTEP发送一份报文。

如图1-10所示,Host1向外发送广播报文。Leaf1收到Host1的广播报文后,根据报文入端口或VLAN信息判断其所属的BD,并在该BD内查找所有的隧道列表,依据获取的隧道列表进行报文封装后,向所有隧道发送报文,从而将报文转发至同子网的Host2和Host3。

图1-10 同子网BUM报文转发示意图

同子网BUM

跨子网报文转发

如图1-11所示,在分布式网关场景下,Leaf1、Leaf2作为VXLAN的三层网关,进行VXLAN封装及三层转发,Spine仅作为VXLAN报文转发节点,不进行VXLAN报文的处理

图1-11 分布式网关场景下跨子网报文转发示意图

分布式网关场景下跨子网报文

以Host1向Host2发送报文为例介绍报文在VXLAN网络中的转发流程:

  1. 因为Host1与Host2属于不同网段,所以Host1会先将报文发送给网关(Leaf1),交由网关进行转发。
  2. Leaf1接收到来自Host1的报文,根据报文的目的地址判断需要进行三层转发。Leaf1根据报文入端口或VLAN信息判断其所属的BD,找到绑定该BD的L3VPN实例,然后在该L3VPN实例下查找路由表。在前面跨子网VXLAN隧道的建立和路由发布章节已经介绍过,在分布式网关场景下,网关Leaf1会学习到Host2的主机路由。
  3. Leaf1根据路由获取三层VNI、下一跳等信息,然后进行VXLAN封装,将报文转发至Leaf2。Leaf2收到VXLAN报文后进行解封装,根据报文携带的三层VNI找到对应的L3VPN实例,通过查找该L3VPN实例下的路由表,获取报文的下一跳是网关接口地址,然后将目的MAC地址替换为Host2的MAC地址,源MAC地址替换为Leaf2网关的MAC地址,转发给Host2。

Host2向Host1发送报文的过程与上述过程相同。

VXLAN BGP EVPN网络中的ARP广播抑制

地址解析协议ARP(Address Resolution Protocol)用来将IP地址解析为MAC地址。网络中同网段主机首次通信时,由于没有目标主机的MAC地址信息,因此会发送ARP广播请求来获取目的MAC地址信息。ARP广播请求报文在VXLAN网络中会泛洪转发,大量的ARP报文存在会占用过多的网络资源,导致网络性能下降。

为了抑制ARP广播请求给网络带来的负面影响,可以通过ARP广播抑制功能来尽可能的减少ARP报文在VXLAN网络中的泛洪。ARP广播抑制有两种方式,一种是ARP广播变单播的功能,另一种是ARP二层代答功能。

ARP广播变单播

ARP广播变单播,顾名思义,就是将ARP广播报文转变成ARP单播,从而以单播形式进行转发。ARP广播变单播的实现思路是在VXLAN三层网关上根据ARP生成ARP广播抑制表(包括主机IP、MAC、VNI、VTEP IP信息),然后通过EVPN将主机信息发送给二层网关;二层网关在收到ARP广播请求后,直接使用学习到的主机MAC替换原来的全F的广播MAC,从而将广播变为单播进行转发。

图1-12 ARP广播变单播示意图

ARP广播变单播

以图1-12所示的分布式网关为例,其中Host1和Host2属于同一子网,但是部署在不同的VTEP下。ARP广播变单播过程如下:

  1. Leaf2通过Host2发送的ARP报文,可以学习到Host2的ARP表项。然后Leaf2可以根据ARP生成相应的ARP广播抑制表,并通过EVPN向Leaf1发布,这样Leaf1也可以学习到Host2的主机信息。
  2. Host1初次访问Host2,发送ARP广播请求来获取Host2的MAC地址。
  3. Leaf1收到ARP广播请求后,查询ARP广播抑制表。因为已经有Host2的主机信息,所以Leaf1将ARP请求报文中的全F的广播目的MAC替换为Host2的MAC地址,将ARP广播变为ARP单播,然后再进行VXLAN封装后向Leaf2发送。
    如果Leaf1上没有Host2的ARP广播抑制表,那么依然按照正常的流程进行广播。
  4. Leaf2收到VXLAN报文并解封装后,将ARP请求发送给Host2。

可以看出ARP广播变单播功能强依赖于三层网关,需要三层网关学习到主机的ARP信息,如果三层网关学习不到主机ARP,就不能抑制ARP广播。

ARP二层代答

ARP广播变单播的抑制方式需要三层网关的存在,在纯二层网络中,由于不存在三层网关,没有相应的ARP表项,也就无法生成ARP广播抑制表进行ARP抑制。上述二层场景面临的ARP抑制问题,就可以通过ARP二层代答功能来解决。

ARP二层代答的实现思路是在二层网关上收到主机ARP报文,获取ARP报文中的主机信息并生成ARP广播抑制表,然后通过EVPN将主机信息发送给其他二层网关;二层网关在收到ARP广播请求后,根据ARP广播抑制表中的主机信息,直接进行ARP代答。

ARP二层代答是一种有效减少ARP广播报文的机制。使能ARP二层代答之后,二层网关设备在收到ARP请求之后,优先尝试本地代答,只有当本地无法代答时,才会进行广播。

图1-13 ARP二层代答示意图

ARP二层代答

以图1-13为例,其中Host1和Host2属于同一子网,在二层网关设备开启基于BD的ARP二层代答之后,ARP二层代答过程如下:

  1. Leaf2上开启ARP二层代答功能后,Leaf2会检测主机发送的ARP报文。当Leaf2接收到Host2的ARP报文后,可以根据ARP生成相应的ARP广播抑制表项,并通过EVPN向Leaf1发布,这样Leaf1也可以学习到Host2的主机信息。
  2. Host1初次访问Host2,发送ARP广播请求来获取Host2的MAC地址。
  3. Leaf1收到ARP广播请求后,查询ARP广播抑制表。因为已经有Host2的主机信息,所以Leaf1直接对ARP请求进行代答。

如果Leaf1上没有Host2的ARP广播抑制表,那么依然按照正常的流程进行广播。

同网段二层互通

建立VXLAN隧道

建立VXLAN隧道

前提条件

1.Leaf1 和 leaf2属于统一BD
2.两端leaf的VTEP IP地址路由可达
3.完成 BGP EVPN配置

结果:
Leaf1 和 Leaf2建立BGP EVPN对等体
步骤:

  1. Peer建立后,Leaf1和Leaf2生成Type3类型的BGP EVPN路由给对方
  2. Leaf2收到Leaf1发来的BGP EVPN路由后,先检查 Ex RT是否与本地的EVPN实例的Im RT 值相同。不同,丢弃;相同,接受
  3. 接受路由后,如果检查两端的VTEP IP地址路由可达,则建立一条到达对端的VXLAN隧道
  4. 这样Leaf1和Leaf2之间就通过BGP EVPN自动建立了一条VXLAN隧道

总结:

VXLAN隧道由一对VTEP组成。

同网段下,只要两端VTEP IP可达,RT匹配,隧道就建成。
建立头端复制列表[VNI,Source,Destination]用于BUM报文的转发

不同网段上,交换机根据主机1所属的BD域,获取相应的二层VNI、L3VPN实例及L3VPN实例关联的三层VNI信息(IP + MAC + Host1所属的二层VNI + L3VPN实例的三层VNI)

生成MAC表

步骤:
1.主机1上线时,通过动态ARP报文
Leaf1就能学到主机1的MAC地址,BD值和入接口(Leaf1的本地MAC表生成主机一的表项)

MAC1

2.Leaf1发送给Leaf2 Type2类型的BGP EVPN路由

MAC2

Type2称为MAC/IP路由,携带本机MAC地址、VTEP IP地址、VNI和Ex RT值

3.Leaf2收到Leaf1发来的BGP EVPN路由后,先检查Ex RT值是否和本地EVPN实例的Im RT值相同。不同,丢弃;相同,接受
4.Leaf2根据路由中主机1的MAC地址、VNI、VTEP IP地址信息在本地的MAC表中生成主机1的MAC表项

MAC3

总结:

Leaf 交换机的MAC表里有两个方向来的表项向里是自己终端的MAC表,有相连终端的MAC地址,BD值(根据接口配置获得的),出接口(往哪个端口走能到终端)。向外是从别的VTEP那学来的MAC表,有其他终端的MAC地址,BD值,出接口(去哪个VTEP能到达那个MAC地址)

转发过程

步骤:
1.当Leaf2 收到目的MAC地址为主机1的报文后,在主机2所属的BD内查找出接口的信息

F1

2.因为Leaf2已经学到了主机1的MAC表项(出接口就是Leaf1的VTEP IP地址)
3.然后Leaf2根据BD和出接口信息,对报文进行VXLAN封装后转发至Leaf1

F2

4.Leaf1收到VXLAN报文后进行解封装,获取内层报文,并根据内层报文的目的MAC地址,从本地MAC表找到对应的出接口,发送给主机1

F3

不同网段三层互通

分布式网关:Spine作为透传节点,Leaf作为三层网关

建立VXLAN隧道

  1. Host1上线时,Leaf1通过ARP学到了Host1的ARP表项,同时根据入接口,可以获得BD以及BD对应的二三层VNI信息和VPN信息

    三层VNI用来标识不同的VPN,VPN用来隔离不同租户

不同网段三层互通1
2. Leaf1根据获取的信息,在本地对应的VPN中保存Host1的主机路由
3. Leaf1向Leaf2发送Type2类型的BGP EVPN路由
不同网段三层互通2
4. Type2主要包含了VTEP地址、主机IP、MAC地址、三层VNI和EVPN实例出方向的RT值
5. Leaf2首先检查RT是否匹配。如果匹配,Leaf2根据Type2路由中主机IP、MAC地址、三层VNI信息在VPN中保存Host1的路由。同时如果VTEP IP可达,Leaf1和Leaf2就成功通过BGP EVPN自动建立一条VXLAN隧道

转发流程

  1. 隧道建立完后,当Host2向Host1发送报文时
    不同网段三层互通3
  2. Leaf2收到主机2的报文后,首先根据报文入接口找到对应的BD,以及BD对应的VRF,然后在该VRF中,查找到至主机1 的路由,以及该路由对应的三层VNI信息。Leaf2根据查找到的信息进行VXLAN封装
    不同网段三层互通4
  3. 并将报文转发至leaf1,封装的VXLAN报文中会携带三层VNI信息,Leaf1接收到VXLAN报文后进行解封装,根据报文携带的三层VNI找到对应的VRF
    不同网段三层互通5
  4. 在该VRF路由表中查找到至主机1的路由,最后将报文转发至主机1
    不同网段三层互通6