图中Leaf1和Leaf2作为VTEP,分别连接同网段的主机Host1和Host2,以Leaf1向Leaf2发送Type2路由为例。
1、Host1在连接至Leaf1时,通常会触发ARP、DHCP等行为。通过这些流量,Leaf1上就会学习到Host1的MAC信息,记录在本地MAC表中。
Leaf1学习到本地主机的MAC表项后,会向其对等体Leaf2发送EVPN Type2路由。该路由会携带本端EVPN实例的ERT、VTEP IP地址、二层VNI、Host1的MAC地址等信息。其中本端的EVPN实例的ERT、VTEP IP地址、二层VNI这些信息来源于本端VTEP上的配置,样例如下:
[Leaf1]
bridge-domain 10
vxlan vni 10
evpn
route-distinguisher 10:1
vpn-target 0:10 export-extcommunity
vpn-target 100:5000 export-extcommunity
vpn-target 0:10 import-extcommunity
#
interface Nve1
source 1.1.1.1
vni 10 head-end peer-list protocol bgp
#
2、Leaf2收到Leaf1发来的Type2路由后,能够学习到Host1的MAC地址信息,并将其保存在MAC表中,其下一跳为Leaf1的VTEP IP地址。
需要说明的是,Leaf2收到Leaf1发送的EVPN路由时,能否接纳该路由信息,是需要通过EVPN实例的RT(Route Target)值是否匹配来判断的。RT是一种BGP扩展团体属性,用于控制EVPN路由的发布与接收。也就是说,RT决定了本端的EVPN路由可以被哪些对端所接收,以及本端是否接收对端发来的EVPN路由。
RT属性分为两类:
在本例中,Leaf2上接收Leaf1发过来的EVPN路由,则需保证Leaf2上配置的IRT(Import RT)与Leaf1配置的ERT(Export RT)一致,例如Leaf2上EVPN中的IRT配置为0:10,与上文中Leaf1上的ERT一致:
[Leaf2]
bridge-domain 10
vxlan vni 10
evpn
route-distinguisher 10:2
vpn-target 0:10 export-extcommunity
vpn-target 100:5000 export-extcommunity
vpn-target 0:10 import-extcommunity
#
经过以上的流程,在未发送广播请求的情况下,Leaf2就可以学习到Host1的MAC地址。类似的,Leaf1也可以学习到Host2的MAC地址。
另外需要强调的是,EVPN只是减少了网络中的流量泛洪,并不会完全避免,例如在以下一些场景:
EVPN只能相对减少网络中的流量泛洪,并不能完全避免。
那么这些不能避免的BUM流量,还是需要建立头端复制列表来进行转发。
头端复制列表的建立可以通过手工方式或者EVPN来建立,本文仅描述EVPN方式:
下面以图1-6为列,介绍VTEP之间是如何通过Type3路由建立头端复制列表的。
图1-6 使用EVPN建立头端复制列表示意图
图中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)等信息。
[Leaf1]
bridge-domain 10
vxlan vni 10
evpn
route-distinguisher 1:10
vpn-target 0:10 export-extcommunity
vpn-target 100:5000 export-extcommunity
vpn-target 0:10 import-extcommunity
#
interface Nve1
source 1.1.1.1
vni 10 head-end peer-list protocol bgp
#
2、Leaf2、Leaf3收到Leaf1发来的Type3路由后,如果Leaf1的VTEP IP三层路由可达,则建立一条到Leaf1的二层VXLAN隧道;同时,如果本地有相同的VNI,则建立一条头端复制列表,用于后续广播、组播、未知单播报文的转发。
在Leaf2、Leaf3收到Leaf1发送的EVPN路由时,会基于路由携带的RT值(EVPN实例的ERT值)是否与本地EVPN实例的IRT值匹配,来判断是否接纳该路由。
经过以上的流程,Leaf2、Leaf3上就能建立到Leaf1的头端复制列表,指导后续BUM报文的转发。类似的,Leaf1上也会建立到Leaf2、Leaf3的头端复制列表。
主机路由发布
EVPN Type2路由不仅可以发布主机MAC地址,还可以发布主机路由信息,这是因为Type2路由还可以携带32位掩码的主机IP地址信息。主机路由的发布可以实现分布式网关场景下跨网段主机之间的互通。VTEP之间需要发布下属主机的IP路由,否则对端VTEP就无法学习到该主机的路由信息,从而没法进行三层转发。简单来说就是“你得告诉我你下面都接了什么网段的路由,否则我怎么知道要发给你呢”。
下面以图1-7为列,介绍VTEP之间是如何使用EVPN来发布主机路由的。
图1-7 使用EVPN发布主机路由的示意图