文章目录
- 概述
- 1、Type2 路由——MAC/IP 路由
- 2、Type3 路由——Inclusive Multicast 路由
- 3、Type5 路由——IP 前缀路由
概述
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路由类型:
1、Type2 路由——MAC/IP 路由
MAC/IP 路由的报文格式
各字段的解释如下表所示:
该类型路由在 VXLAN 控制平面中的作用包括:
① 主机 MAC 地址通告:
要实现同子网主机的二层互访,两端 VTEP需要相互学习主机 MAC。作为 BGP EVPN 对等体的 VTEP 之间通过交换 MAC/IP 路由,可以相互通告已经获取到的主机 MAC。其中,MAC Address Length 和 MAC Address 字段为主机 MAC 地址。
② 主机 ARP 通告:
MAC/IP 路由可以同时携带主机 MAC 地址+主机 IP 地址,因此该路由可以用来在
VTEP 之间传递主机 ARP 表项,实现主机 ARP 通告。其中,MAC Address 和 MAC Address Length字段为主机 MAC 地址,IP Address 和 IPAddress Length 字段为主机 IP 地址。此时的 MAC/IP 路由也称为 ARP 类型路由。主机 ARP 通告主要用于以下两种场景:
a.ARP 广播抑制。
当三层网关学习到其子网下的主机 ARP 时,生成主机信息(包含主机 IP 地址、主机 MAC 地址、二层 VNI、网关 VTEP IP 地址),然后通过传递 ARP 类型路由将主机信息同步到二层网关上。这样当二层网关再收到 ARP 请求时,先查找是否存在目的IP 地址对应的主机信息,如果存在,则直接将ARP请求报文中的广播MAC地址替换为目的单播 MAC 地址,实现广播变单播,达到 ARP 广播抑制的目的。
b.分布式网关场景下的虚拟机迁移。
当一台虚拟机从当前网关迁移到另一个网关下之后,新网关学习到该虚拟机的 ARP(一般通过虚拟机发送免费 ARP 实现),并生成主机信息(包含主机 IP 地址、主机 MAC地址、二层 VNI、网关 VTEP IP 地址),然后通过传递 ARP 类型路由将主机信息发送给虚拟机的原网关。原网关收到后,感知到虚拟机的位置发生变化,触发 ARP探测,当探测不到原位置的虚拟机时,撤销原位置虚拟机的 ARP 和主机路由。
③ 主机 IP 路由通告:
在分布式网关场景中,要实现跨子网主机的三层互访,两端 VTEP(作为三层网关)需要互相学习主机 IP 路由。作为 BGP EVPN 对等体的 VTEP 之间通过交换 MAC/IP 路由,可以相互通告已经获取到的主机 IP 路由。其中,IP Address Length 和 IPAddress字段为主机IP路由的目的地址,同时MPLSLabel2 字段必须携带三层 VNI。此时的 MAC/IP 路由也称为 IRB(Integrated Routing and Bridge)类型路由。
ARP 类型路由携带的有效信息有:
主机 MAC 地址+主机 IP 地址+二层 VNI;IRB类型路由携带的有效信息有:主机MAC地址+主机IP 地址+二层VNI+三层VNI。因此,IRB 类型路由包含着 ARP 类型路由,不仅可以用于主机 IP 路由通告,也能用于主机 ARP 通告。
④ND 表项扩散:
MAC/IP 路由可以同时携带主机 MAC 地址+主机 IPv6地址,因此该路由可以用来在VTEP之间传递ND表项,实现 ND 表项扩散。其中,MAC Address 和 MAC Address Length 字段为主机 MAC 地址,IP Address 和 IP Address Length 字段为主机 IPv6 地址。此时的MAC/IP 路由也称为 ND 类型路由。ND 表项扩散主要用于以下场景(详细描述请参见 VXLAN 网络 NS 组播抑制):
⑤ NS 组播抑制:
当VXLAN网关设备收集到本地IPv6主机的信息后,生成 ND 表或 ND 代答表,然后通过 MAC/IP 路由进行扩散,其他 VXLAN 网关(BGP EVPN 对等体)收到该路由后生成本地的 ND 代答表。这样,当 VXLAN网关再收到 NS 报文时先查找本地的 ND 代答表,查找成功就直接进行 ND 代答或组播转单播处理,从而减少或抑制 NS 报文洪泛。
⑥ 防止 ND 欺骗攻击:
ND 欺骗攻击是指攻击者将自己的 MAC 地址与某一主机的 IPv6 地址相关联,从而使发往该 IPv6 地址的任何流量都发送给攻击者。通过 ND 扩散功能,VXLAN 网关之间可以同步同一 IPv6 主机的 ND 代答表。当攻击者上线后,针对同一 IPv6 主机,会重复生成 ND 代答表并扩散到其他 VXLAN 网关。这样通过 ND 代答表冲突检测触发 IPv6 地址冲突告警,进而提醒用户可能存在 ND 欺骗攻击。
⑦ 主机 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 表项扩散。
2、Type3 路由——Inclusive Multicast 路由
该类型路由是由前缀和 PMSI 属性组成,报文格式如下图所示:
Inclusive Multicast 路由的报文格式
各字段的解释如下表所示:
该类型路由在 VXLAN 控制平面中主要用于 VTEP 的自动发现和 VXLAN 隧道的动态建立。
作为 BGP EVPN 对等体的 VTEP,通过 Inclusive Multicast 路由互相传递二层 VNI 和 VTEP IP 地址信息。其中,Originating Router’s IP Address字段为本端 VTEP IP 地址,MPLS Label 字段为二层 VNI。如果对端 VTEP IP 地址是三层路由可达的,则建立一条到对端的 VXLAN 隧道。同时,如果对端 VNI 与本端相同,则创建一个头端复制表,用于后续 BUM 报文转发。
3、Type5 路由——IP 前缀路由
IP 前缀路由的报文格式
各字段的解释如下表所示:
该类型路由的 IP Prefix Length 和 IP Prefix 字段既可以携带主机 IP 地址,也可以携带网段地址:
①当携带主机 IP 地址时,该类型路由在 VXLAN 控制平面中的作用与 IRB 类型路由是一样的,主要用于分布式网关场景中的主机 IP 路由通告。
② 当携带网段地址时,通过传递该类型路由,可以实现 VXLAN 网络中的主机访问外部网络