8. Multihoming NVEs - NVE Residing in ToR Switch
8. Multihoming NVEs - NVE Residing in ToR Switch (多归属 NVE - 位于 ToR 交换机中的 NVE)
在本节中, 我们讨论 NVE 驻留在 ToR 交换机中并且服务器 (VM 所在的位置) 多归属到这些 ToR 交换机的场景。多归属 NVE 以全活或单活冗余模式运行。如果服务器单归属到 ToR 交换机, 那么就所需的 EVPN 功能而言, 该场景类似于 NVE 驻留在 hypervisor 上的场景 (如第 7 节所述)。
[RFC7432] 定义了一组 BGP 路由, 属性和过程来支持多归属。我们首先描述这些功能和过程, 然后讨论其中哪些受 VXLAN (或 NVGRE) 封装的影响以及需要进行哪些修改。如本节后面所示, 唯一受非 MPLS 覆盖封装 (例如 VXLAN 或 NVGRE) 影响的 EVPN 过程 (其中它为一个 ID 而不是标签堆栈提供空间) 是第 8.3.1 节中描述的多归属 ES 的水平分割过滤。
8.1. EVPN Multihoming Features (EVPN 多归属特性)
在本节中, 我们将回顾 EVPN 的多归属特性以突出封装依赖性。本节仅在高层描述特性和功能。有关更多详细信息, 读者应参考 [RFC7432]。
8.1.1. Multihomed ES Auto-Discovery (多归属 ES 自动发现)
连接到同一 ES 的 EVPN NVE (或 PE) (例如, 通过链路聚合组 (LAG) 连接到同一服务器) 可以通过交换 BGP 路由, 以最少或无需配置的方式自动相互发现。
8.1.2. Fast Convergence and Mass Withdrawal (快速收敛和批量撤回)
EVPN 定义了一种机制, 用于在 ES 连接失败 (例如, 链路或端口故障) 时, 有效且快速地向远程 NVE 发出更新其转发表的需要。这是通过让每个 NVE 为每个本地连接的段通告每个 ES 的 Ethernet A-D 路由来完成的。当连接到所连接段的连接失败时, NVE 撤回相应的 Ethernet A-D 路由。这触发所有接收撤回的 NVE 更新与相关 ES 关联的所有 MAC 地址的下一跳邻接。如果没有其他 NVE 为同一段通告 Ethernet A-D 路由, 则接收撤回的 NVE 仅使该段的 MAC 条目无效。否则, NVE 相应地更新下一跳邻接列表。
8.1.3. Split-Horizon (水平分割)
如果服务器多归属到两个或多个 NVE (由 ES ES1 表示) 并且以全活冗余模式运行, 则向其中一个 NVE 发送 BUM (即, 广播, 未知单播或组播) 数据包, 那么重要的是确保数据包不会通过连接到此服务器的另一个 NVE 循环回到服务器。NVE 上用于防止此类循环和数据包重复的过滤机制称为 "水平分割过滤"。
8.1.4. Aliasing and Backup Path (别名和备份路径)
在站点多归属到多个 NVE 的情况下, 可能只有一个 NVE 学习与站点发送的流量关联的一组 MAC 地址。这导致远程 NVE 从单个 NVE 接收这些地址的 MAC Advertisement 路由的情况, 即使多个 NVE 连接到多归属站点。结果, 远程 NVE 无法有效地在连接到多归属 ES 的 NVE 之间负载均衡流量。例如, 当 NVE 在接入上执行数据路径学习并且站点上的负载均衡功能将来自给定源 MAC 地址的流量散列到单个 NVE 时, 可能会出现这种情况。另一个发生这种情况的场景是当 NVE 依赖接入上的控制平面学习 (例如, 使用 ARP) 时, 因为 ARP 流量将被散列到 LAG 中的单个链路。
为了缓解这个问题, EVPN 引入了 "别名" 的概念。这是指 NVE 发信号表示它可以到达给定的本地连接 ES 的能力, 即使它没有从该段学习任何 MAC 地址。每个 EVI 的 Ethernet A-D 路由用于此目的。接收具有非零 ESI 的 MAC Advertisement 路由的远程 NVE 应该考虑 MAC 地址可以通过所有通告使用具有相同 ESI 且单活标志复位的 Ethernet A-D 路由到达相关段的可达性的 NVE 到达。
备份路径是一个密切相关的功能, 尽管它适用于冗余模式为单活的情况。在这种情况下, NVE 也使用 Ethernet A-D 路由发信号表示它可以到达给定的本地连接 ES。接收具有非零 ESI 的 MAC Advertisement 路由的远程 NVE 应该将 MAC 地址视为可通过通告 NVE 到达。此外, 远程 NVE 应该为所述 MAC 安装备份路径到使用具有相同 ESI 且单活标志设置的 Ethernet A-D 路由通告到达相关段的可达性的 NVE。
8.1.5. DF Election (DF 选举)
如果主机多归属到在全活冗余模式下运行的 ES 上的两个或多个 NVE, 那么对于给定的 EVI, 这些 NVE 中只有一个 (称为 "指定转发器" (DF)) 负责向其发送广播, 组播, 以及如果为该 EVI 配置的话, 未知单播帧。
这是必需的, 以防止在全活冗余的情况下向多归属主机或 VM 重复交付多目标帧。
在从主机接收标记为 IEEE 802.1Q [IEEE.802.1Q] 的帧的 NVE 中, 应该根据 [RFC7432] 第 8.5 节基于主机 VID 执行 DF 选举。此外, 给定 ES 的多归属 PE 可以 (MAY) 使用配置的 ID (如 VNI, EVI, 规范化的 VID 等) 执行 DF 选举, 只要这些 ID 在多归属 PE 之间一致配置。
在接收 VXLAN 封装帧的 GW 中, DF 选举在 VNI 上执行。同样, 假设对于给定的以太网段, VNI 是唯一且一致的 (例如, 不存在重复的 VNI)。
8.2. Impact on EVPN BGP Routes and Attributes (对 EVPN BGP 路由和属性的影响)
由于此场景支持多归属, 因此使用 [RFC7432] 中定义的整套 BGP 路由和属性。MAC Advertisement, 每个 EVI 的 Ethernet A-D 和 IMET 路由中的 Ethernet Tag 字段的设置遵循第 5.1.3 节。此外, MAC Advertisement 和每个 EVI 的 Ethernet A-D 路由中的 VNI 字段的设置遵循第 5.1.3 节。
8.3. Impact on EVPN Procedures (对 EVPN 过程的影响)
这里需要检查两种情况, 具体取决于 NVE 是在单活还是全活冗余模式下运行。
首先, 让我们考虑单活冗余模式的情况, 其中主机多归属到一组 NVE; 但是, 在给定时间点, 对于给定 VNI, 只有一个 NVE 处于活动状态。在这种情况下, 不需要别名, 并且可能不需要水平分割过滤, 但需要其他功能, 如多归属 ES 自动发现, 快速收敛和批量撤回, 备份路径和 DF 选举。
其次, 让我们考虑全活冗余模式的情况。在这种情况下, 在第 8.1 节中列出的所有 EVPN 多归属特性中, VXLAN 或 NVGRE 封装的使用会影响水平分割和别名特性, 因为这两者依赖于 MPLS 客户端层。鉴于这些类型的封装缺少此 MPLS 客户端层, 需要替代过程和机制来提供所需的功能。接下来将详细讨论这些。
8.3.1. Split Horizon (水平分割)
在 EVPN 中, MPLS 标签用于水平分割过滤以支持全活多归属, 其中入口 NVE 在封装数据包时添加对应于源站点的标签 (也称为 ESI 标签)。出口 NVE 在尝试将多目标帧转发到接口时检查 ESI 标签, 如果标签对应于与该接口关联的相同站点标识符 (ESI), 则丢弃数据包。这可以防止转发循环的发生。
由于 VXLAN 和 NVGRE 封装不包含 ESI 标签, 因此必须为这些封装设计执行水平分割过滤功能的其他方法。当使用 VXLAN (或 NVGRE) 封装时, 建议采用以下方法进行水平分割过滤。
每个 NVE 跟踪与其共享多归属 ES 的其他 NVE 关联的 IP 地址。当 NVE 从覆盖网络接收多目标帧时, 它检查隧道头部中的源 IP 地址 (对应于入口 NVE), 并在与入口 NVE 共享的所有 ES 连接的所有本地接口上过滤掉该帧。使用这种方法, 要求入口 NVE 对从接入接口 (即, 从主机) 入口的所有泛洪流量在本地复制到所有直接连接的以太网段 (无论 DF 选举状态如何)。这种方法被称为 "本地偏好", 其优点是每个 NVE 仅需要使用一个 IP 地址进行水平分割过滤, 而不是需要每个 NVE 的每个以太网段一个 IP 地址。
为了允许在同一组多归属 PE 设备之间正确操作水平分割过滤, 一方面运行 [RFC7432] 中用于水平分割过滤的过程的带有 MPLS over GRE 封装的 PE 设备和另一方面在给定以太网段上运行本地偏好过程的 VXLAN/NVGRE 封装的混合绝对不能 (MUST NOT) 配置。
8.3.2. Aliasing and Backup Path (别名和备份路径)
VXLAN/NVGRE 封装的别名和备份路径过程与 MPLS 的过程非常相似。在 MPLS 的情况下, 当相应的 ES 在全活多归属中运行时, 每个 EVI 的 Ethernet A-D 路由用于别名, 当相应的 ES 在单活多归属中运行时, 同一路由用于备份路径。在 VXLAN/NVGRE 的情况下, 同一路由用于别名和备份路径, 区别在于每个 EVI 的 Ethernet A-D 路由中的 Ethernet Tag 和 VNI 字段按照第 5.1.3 节所述设置。
8.3.3. Unknown Unicast Traffic Designation (未知单播流量指定)
在 EVPN 中, 当入口 PE 使用入口复制将未知单播流量泛洪到出口 PE 时, 入口 PE 使用不同的 EVPN MPLS 标签 (与用于已知单播流量的标签不同) 来标识此类 BUM 流量。出口 PE 使用此标签来标识此类 BUM 流量, 从而对全活多归属站点应用 DF 过滤。在缺少未知单播流量指定并且启用未知单播泛洪的情况下, 在以下条件下可能会出现到全活多归属站点的瞬态重复流量: 主机 MAC 地址由出口 PE 学习并通告给入口 PE; 但是, MAC Advertisement 尚未被入口 PE 接收或处理, 导致主机 MAC 地址在入口 PE 上未知但在出口 PE 上已知。因此, 当目标为该主机 MAC 地址的数据包到达入口 PE 时, 它通过入口复制将其泛洪到所有出口 PE, 并且由于它们对出口 PE 是已知的, 因此多个副本被发送到全活多归属站点。应该注意的是, 这种瞬态数据包重复仅在以下情况下发生: a) 目标主机通过全活冗余模式多归属, b) 网络中启用了未知单播的泛洪, c) 使用入口复制, 以及 d) 目标主机的流量在入口 PE 通过 BGP EVPN 通告学习主机 MAC 地址之前到达入口 PE。如果希望避免发生这种瞬态数据包重复 (无论概率多么低), 则需要在这些 PE 之间使用 VXLAN-GPE 封装, 并且入口 PE 需要设置 BUM Traffic Bit (B bit) [VXLAN-GPE] 以指示这是入口复制的 BUM 流量。