EVPN-VXLAN基本原理
介绍
EVPN(Ethernet Virtual Private Network)是一种用于二层网络互联的VPN技术。EVPN技术采用类似于BGP/MPLS IP VPN的机制,在BGP协议的基础上定义了一种新的NLRI(Network Layer Reachability Information,网络层可达信息)即EVPN NLRI,EVPN NLRI定义了几种新的BGP EVPN路由类型,用于处在二层网络的不同站点之间的MAC地址学习和发布。
原有的VXLAN实现方案没有控制平面,是通过数据平面的流量泛洪进行VTEP发现和主机信息(包括IP地址、MAC地址、VNI、网关VTEP IP地址)学习的,这种方式导致数据中心网络存在很多泛洪流量。为了解决这一问题,VXLAN引入了EVPN作为控制平面,通过在VTEP之间交换BGP EVPN路由实现VTEP的自动发现、主机信息相互通告等特性,从而避免了不必要的数据流量泛洪。
综上所述,EVPN通过扩展BGP协议新定义了几种BGP EVPN路由,这些BGP EVPN路由可以用于传递VTEP地址和主机信息,因此EVPN应用于VXLAN网络中,可以把原本依赖数据平面的VTEP发现和主机信息学习从数据平面转移到控制平面。
BGP EVPN路由
在EVPN NLRI中定义了如下几种应用于VXLAN控制平面的BGP EVPN路由类型:
Type2路由—MAC/IP路由
该类型路由的报文格式如图12-34所示:
各字段的解释如表12-4所示:
字段 |
说明 |
---|---|
Route Distinguisher |
该字段为EVPN实例下设置的RD(Route Distinguisher)值。 |
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。 |
MPLS Label2 |
该字段为此路由携带的三层VNI。 |
该类型路由在VXLAN控制平面中的作用包括:
主机MAC地址通告
要实现同子网主机的二层互访,两端VTEP需要相互学习主机MAC。作为BGP EVPN对等体的VTEP之间通过交换MAC/IP路由,可以相互通告已经获取到的主机MAC。其中,MAC Address Length和MAC Address字段为主机MAC地址。
主机ARP通告
MAC/IP路由可以同时携带主机MAC地址+主机IP地址,因此该路由可以用来在网关设备之间传递主机ARP表项,实现主机ARP通告。其中,MAC Address和MAC Address Length字段为主机MAC地址,IP Address和IP Address Length字段为主机IP地址。此时的MAC/IP路由也称为ARP类型路由。
主机IP路由通告
在分布式网关场景中,要实现跨子网主机的三层互访,网关设备需要互相学习主机IP路由。作为BGP EVPN对等体的VTEP之间通过交换MAC/IP路由,可以相互通告已经获取到的主机IP路由。其中,IP Address Length和IP Address字段为主机IP路由的目的地址,同时MPLS Label2字段必须携带三层VNI。此时的MAC/IP路由也称为IRB(Integrated Routing and Bridge)类型路由。
ARP类型路由携带的有效信息有:主机MAC地址+主机IP地址+二层VNI;IRB类型路由携带的有效信息有:主机MAC地址+主机IP地址+二层VNI+三层VNI。因此,IRB类型路由包含着ARP类型路由,不仅可以用于主机IP路由通告,也能用于主机ARP通告。
主机IPv6路由通告
在分布式网关场景中,要实现跨子网IPv6主机的三层互访,网关设备需要互相学习主机IPv6路由。作为BGP EVPN对等体的VTEP之间通过交换MAC/IP路由,可以相互通告已经获取到的主机IPv6路由。其中,IP Address Length和IP Address字段为主机IPv6路由的目的地址,同时MPLS Label2字段必须携带三层VNI。此时的MAC/IP路由也称为IRBv6类型路由。
ND类型路由携带的有效信息有:主机MAC地址+主机IPv6地址+二层VNI;IRBv6类型路由携带的有效信息有:主机MAC地址+主机IPv6地址+二层VNI+三层VNI。因此,IRBv6类型路由包含着ND类型路由,不仅可以用于主机IPv6路由通告,也能用于ND表项扩散。
Type3路由—Inclusive Multicast路由
该类型路由是由前缀和PMSI属性组成,报文格式如图12-35所示:
各字段的解释如表12-5所示:
字段 |
说明 |
---|---|
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地址。 |
Inclusive Multicast路由在VXLAN控制平面中主要用于VTEP的自动发现和VXLAN隧道的动态建立。作为BGP EVPN对等体的VTEP,通过Inclusive Multicast路由互相传递L2VNI和VTEP IP地址信息。其中,Originating Router's IP Address字段为本端VTEP IP地址,MPLS Label字段为L2VNI。如果对端VTEP IP地址是三层路由可达的,则建立一条到对端的VXLAN隧道。同时,本端会创建一个基于VNI的头端复制表并将对端VTEP IP地址加入其中,用于后续BUM报文转发。
Type5路由—IP前缀路由
该类型路由的报文格式如图12-36所示:
各字段的解释如表12-6所示:
字段 |
说明 |
---|---|
Route Distinguisher |
该字段为VPN实例下设置的RD(Route Distinguisher)值。 |
Ethernet Segment Identifier |
该字段为当前设备与对端连接定义的唯一标识。 |
Ethernet Tag ID |
该字段为当前设备上实际配置的VLAN ID。 |
IP Prefix Length |
该字段为此路由携带的IP前缀掩码长度。 |
IP Prefix |
该字段为此路由携带的IP前缀地址。 |
GW IP Address |
该字段为默认网关地址。 |
MPLS Label |
该字段为此路由携带的三层VNI。 |
该类型路由既可以携带主机IP地址,也可以携带网段地址:
当携带主机IP地址时,该类型路由在VXLAN控制平面中的作用与IRB类型路由是一样的,主要用于分布式网关场景中的主机IP路由通告。
当携带网段地址时,通过传递该类型路由,可以实现VXLAN网络内部主机访问其他网段,或者访问外部网络。