1. 为什么选择VXLAN?

每个广播域 IEEE 802.1Q VLAN 的 ID 上限为 4,094 个,这对于多租户数据中心来说是一个硬性限制,在该数据中心中,数千个客户群必须在共享基础设施上共存。 VXLAN(虚拟可扩展局域网,RFC 7348)通过将以太网帧封装在 UDP/IP 内,使用 24 位 VNI(VXLAN 网络标识符)来支持多达 1670 万个逻辑段,从而解决了这个问题。

VXLAN 将虚拟第 2 层拓扑与物理第 3 层底层解耦,允许在 VXLAN 隧道端点 (VTEP) 之间进行标准 IP 路由(ECMP、OSPF、BGP),而无需扩展 VLAN。外部 UDP 标头使用目标端口4789(IANA 分配;早期部署使用 8472)。 IPv4 上的总封装开销约为 50 字节,IPv6 上的总封装开销约为 70 字节。

封装堆栈(RFC 7348):外部以太网 (14 B) + 外部 IPv4 标头 (20 B) + 外部 UDP 标头(8 B,目标端口 4789) + VXLAN 标头(8 B,包括位 32-55 中的 24 位 VNI)+ 原始内部以太网帧。

2. VTEP发现方法

VTEP 必须发现对等 VTEP 才能建立隧道并分发 BUM(广播、未知单播、组播)流量。实践中采用了三种机制:

方法它是如何运作的优点缺点
组播每个VNI映射到底层的一个PIM多播组; BUM 流量被淹没到该组简单的;自动对等点发现需要底层PIM组播;许多运营商禁用多播
入口复制每个 VTEP 维护每个 VNI 的远程 VTEP 的显式单播列表; BUM 流量被复制到每个对等点无需多播头端对每个 BUM 数据包进行 O(N) 复制;静态对等列表需要手动维护
边界网关协议RT-3 IMET 路由通告 VTEP 成员资格; RT-2路由分配MAC+IP绑定;没有洪水和学习控制平面MAC学习; ARP抑制;可扩展到数千个 VTEP;标准所有 VTEP 或路由反射器上都需要 BGP 堆栈

现代新建数据中心仅使用 BGP EVPN。多播和入口复制是棕地环境中仍然存在的传统方法。

3. BGP EVPN路由类型

BGP EVPN(RFC 7432)使用AFI 25(L2VPN)/SAFI 70(EVPN)分发五种路由类型。 RT-5 单独定义于RFC 9136(2021 年 10 月)。

RT姓名目的NLRI 关键领域
1以太网自动发现链路故障时按 ES 和按 EVI 批量撤回;全主动多宿主负载平衡的别名RD、ESI、以太网标签 ID、MPLS 标签
2MAC/IP 广告分发 MAC 地址(以及可选的绑定 IP)以启用 ARP 抑制并消除泛洪学习RD、ESI、VLAN 标签、MAC 地址、IP 地址(可选)、L2VNI + L3VNI 标签
3包容性多播以太网标签 (IMET)根据 VNI 公布 VTEP 可达性;用于构建入口复制列表并触发 BUM 转发RD,以太网标签 ID,始发路由器的 IP(VTEP 地址); PMSI隧道属性携带VNI和隧道类型
4以太网段路由共享以太网段的 PE 之间的指定转发器 (DF) 选举;确保只有一个 PE 将 BUM 转发到 CE 段RD、ESI、始发路由器 IP
5IP前缀路由(RFC 9136)将 IP 前缀通告到 EVPN 覆盖层以实现子网间路由;需要专用的 L3VNI(中转 VNI)RD、以太网标签 ID、IP 前缀长度、IP 前缀、GW IP 地址、L3VNI 标签
常见文档错误:许多供应商指南都针对所有五种路由类型引用 RFC 7432。 RT-5(IP 前缀)不在原始 RFC 7432 中 - 它已添加到 RFC 9136(2021 年 10 月)中。如果您的设备软件早于该发布,则 RT-5 行为可能与最终 RFC 不同。

4. 对称与非对称 IRB

集成路由和桥接 (IRB) 描述 VTEP 如何在覆盖子网之间路由流量。两个模型定义在RFC 9135:

非对称IRB:入口 VTEP 执行 L3 路由(TTL 递减、下一跳重写)到目的地封装和发送之前的L2VNI。出口 VTEP 仅桥接 - 它看到内部帧已寻址到最终 MAC。每个 VTEP 都必须对每个 VNI(子网)进行本地编程,即使是那些没有本地主机的 VNI(子网),这限制了规模。

对称IRB:入口 VTEP 从源 L2VNI 路由到共享L3VNI(过境 VNI,每个 VRF 一个)。出口 VTEP 从 L3VNI 路由到本地目标 L2VNI。两个端点都执行路由。每个VTEP只需要自己的本地L2VNI;单个L3VNI是通用的。这是大织物的推荐型号。

不对称IRB对称IRB
每个 VTEP 所需的 L2VNI结构中的所有 VNI仅本地连接的子网
L3VNI(过境 VNI)不需要必需 — 每个 VRF 一个
路由跳数仅入口 VTEP入口和出口 VTEP
规模差(到处都是 VNI)良好(仅限本地子网)
RT-5 前缀不支持支持(使用L3VNI)

5.ARP抑制

如果没有 EVPN,来自主机的 ARP 请求将广播到其 VNI 中,并洪泛到结构中的每个 VTEP。通过 BGP EVPN,一旦学习到主机,RT-2 路由就会将 MAC+IP 绑定分发到所有 VTEP。当主机针对远程 IP 进行 ARP 请求时,本地 VTEP 直接从其 BGP 填充表中进行应答 — 没有 ARP 数据包穿过 VXLAN 结构。这消除了已知主机的 BUM 泛洪,对于每个 VTEP 具有数千个虚拟机的结构尤其有影响。

ND(邻居发现)抑制对于 IPv6 的工作方式相同 — RT-2 路由在 NLRI 的 IP 字段中携带 IPv6 地址,并且 VTEP 在本地应答 NS 消息。

6. 多归属和ESI

以太网段标识符 (ESI) 是分配给将 CE 设备连接到多个 PE VTEP 的逻辑束的 10 字节标识符。存在两种转发模式:

  • 单主动:一次转发一个PE。 DF 选择(使用 RT-4 路由)为每个以太网标签选择指定转发器。非 DF PE 阻止 BUM 转发到段中,但仍然可以接收单播。
  • 全主动:所有 PE 同时转发,跨捆绑启用 ECMP(就像具有远程支路的端口通道)。 RT-1“别名”路由允许远程 VTEP 在所有连接的 PE 上对流向 ESI 的流量进行负载均衡。 MAC 移动性通过 RT-2 中的 MAC 移动性扩展社区进行处理。

7. 供应商 CLI 快速参考

任务思科 NX-OS阿里斯塔EOS杜松子朱诺斯
显示EVPN路由show bgp l2vpn evpnshow bgp evpnshow route table bgp.evpn.0
显示 VTEP 对等点show nve peersshow vxlan vtepshow evpn instance
显示覆盖 MACshow mac address-tableshow vxlan address-tableshow evpn mac-ip-table
显示 ARP 抑制缓存show ip arp suppression-cache detailshow vxlan address-table detailshow evpn mac-ip-table extensive
显示 VNI 到 VRF 的映射show nve vnishow vxlan vnishow evpn instance extensive
显示 ESI 多宿主show nve ethernet-segmentshow bgp evpn instanceshow evpn instance extensive

参考

  • RFC 7348— VXLAN:在第 3 层网络上叠加虚拟化第 2 层网络的框架 (2014)
  • RFC 7432— 基于 BGP MPLS 的以太网 VPN (BGP EVPN) (2015)
  • RFC 8365— 使用以太网 VPN (EVPN) 的网络虚拟化覆盖解决方案 (2018)
  • RFC 9135— 以太网 VPN (EVPN) 中的集成路由和桥接 (2021)
  • RFC 9136— 以太网 VPN (EVPN) 中的 IP 前缀通告 (2021)
  • IETF BESS 工作组— BGP Enabled ServiceS(有效的 EVPN 草案)