BGP EVPN
最初的VXLAN方案(RFC 7348)中没有定义控制平面,是手工配置VXLAN隧道,然后通过流量泛洪的方式学习主机地址。这种方式实现上较为简单,但是会导致网络中存在很多泛洪流量,并且网络扩展起来困难。
为了解决上述问题,VXLAN引入了EVPN(Ethernet Virtual Private Network,以太网虚拟专用网)作为VXLAN的控制平面。EVPN参考了BGP/MPLS IP VPN的机制,通过扩展BGP(Border Gateway Protocol,边界网关协议)新定义了几种BGP EVPN路由,通过在网络中发布路由来实现VTEP的自动发现、主机地址学习。采用EVPN作为控制平面具有以下一些优势:
- 可实现VTEP自动发现、VXLAN隧道自动建立,从而降低网络部署、扩展的难度。
- EVPN可以同时发布二层MAC和三层路由信息。
- 可以减少网络中泛洪流量。
EVPN通过扩展BGP协议新定义了几种BGP EVPN路由,这些BGP EVPN路由用于传递VTEP地址和主机信息,可以使VTEP发现和主机信息学习从数据平面转移到控制平面。这三种主要的控制面路由类型的作用如下:
- Type2路由——MAC/IP路由:用来通告主机MAC地址、主机ARP(Address Resolution Protocol,地址解析协议)和主机路由信息。
- Type3路由——Inclusive Multicast路由:用于VTEP的自动发现和VXLAN隧道的动态建立。
- Type5路由——IP前缀路由:用于通告引入的外部路由,也可以通告主机路由信息。
VXLAN隧道的动态创建
下面结合图1-6,以VTEP2和VTEP3为例,介绍一下通过BGP EVPN方式动态建立VXLAN隧道的过程:
首先在VTEP2和VTEP3之间建立BGP EVPN对等体。然后,在VTEP2和VTEP3上分别创建二层广播域,并在二层广播域下配置关联的VNI。接下来在二层广播域下创建EVPN实例,配置本端EVPN实例的RD、出方向VPN-Target(ERT)、入方向VPN-Target(IRT)。在配置完本端VTEP IP地址后,VTEP2和VTEP3会生成BGP EVPN路由并发送给对端,该路由携带本端EVPN实例的出方向VPN-Target和BGP EVPN协议新定义的Type3路由即Inclusive Multicast路由。
VTEP2和VTEP3在收到对端发来的BGP EVPN路由后,首先检查该路由携带的EVPN实例的出方向VPN-Target,如果与本端EVPN实例的入方向VPN-Target相等,则接收该路由,否则丢弃该路由。在接收该路由后,VTEP2和VTEP3将获取其中携带的对端VTEP IP地址和VNI,如果对端VTEP IP地址是三层路由可达,则建立一条到对端的VXLAN隧道;同时,如果对端VNI与本端相同,则创建一个头端复制表,用于后续BUM报文转发。
VTEP2和VTEP1之间、VTEP3和VTEP1之间通过BGP EVPN方式动态建立VXLAN隧道的过程与上述相同,这里不再赘述。