跳到主要内容

10. Data-Center Interconnections (DCIs)

10. Data-Center Interconnections (DCIs) (数据中心互联)

对于 DCI, 在通过 MPLS/IP 核心网络连接运行 evpn-overlay (如此处所述) 的数据中心时, 考虑以下两种主要场景:

  • 场景 1: 使用 GW 的 DCI
  • 场景 2: 使用 ASBR 的 DCI

以下两个小节描述了这些场景中每个场景的操作。

10.1. DCI Using GWs (使用 GW 的 DCI)

这是通过 WAN 互连数据中心的典型场景。在此场景中, EVPN 路由在每个 GW 中终止和处理, MAC/IP 路由始终从 DC 重新通告到 WAN, 但从 WAN 到 DC, 如果 NVE 中使用未知 MAC 地址 (和默认 IP 地址), 则不会重新通告它们。在此场景中, 每个 GW 为每个 EVI 维护一个 MAC-VRF (和/或 IP-VRF)。此方法的主要优点是, 当使用默认 IP 路由和未知 MAC 路由时, NVE 不需要维护来自任何远程数据中心的 MAC 和 IP 地址; 也就是说, 它们只需要维护本地到其自己 DC 的路由。当使用默认 IP 路由和未知 MAC 路由时, 来自 NVE 的任何未知 IP 和 MAC 数据包都被转发到维护所有 VPN MAC 和 IP 路由的 GW。这种方法显著减少了 NVE 上的 MAC-VRF 和 IP-VRF 的大小。此外, 它导致在多归属网络或设备冗余场景中链路或 NVE 故障时更快的收敛时间, 因为与故障相关的 BGP 路由 (如批量撤回消息) 不需要一直传播到远程 DC 中的远程 NVE。此方法在 [DCI-EVPN-OVERLAY] 第 3.4 节中详细描述。

10.2. DCI Using ASBRs (使用 ASBR 的 DCI)

这种方法可以被认为是第一种方法的相反。它有利于 DCI 设备的简化而不是 NVE, 因此需要在 NVE 上维护更大的 MAC-VRF (和 IP-VRF) 表; 而 DCI 设备不需要维护任何 MAC (和 IP) 转发表。此外, DCI 设备不需要终止和处理与多归属相关的路由, 而是中继这些消息以建立端到端标签交换路径 (LSP)。换句话说, 此方法中的 DCI 设备的操作类似于 AS 间选项 B 的 ASBR (参见 [RFC4364] 第 10 节)。这需要使用本地分配的 VNI, 就像下游分配的 MPLS VPN 标签一样, 对于所有实际目的而言, VNI 的功能类似于 24 位 VPN 标签。此方法同样适用于具有 MPLS 封装的数据中心 (或运营商以太网网络)。

在 AS 间选项 B 中, 当 ASBR 通过内部 BGP (iBGP) 从其 DC 接收 EVPN 路由并将其重新通告给其他 ASBR 时, 它通过将 BGP 下一跳重写为自身来重新通告 EVPN 路由, 从而丢失发起通告的 PE 的身份。BGP 下一跳的这种重写对 EVPN 批量撤回路由 (每个 ES 的 Ethernet A-D) 及其过程产生不利影响。但是, 它不会影响 EVPN 别名机制/过程, 因为当别名路由 (每个 EVI 的 Ethernet A-D) 被通告时, 接收 PE 首先将给定 EVI 的 MAC 地址解析为其相应的 <ES, EVI>, 随后, 它将 <ES, EVI> 解析为多个路径 (及其关联的下一跳), 通过这些路径可以到达 <ES, EVI>。由于别名和 MAC 路由都是按每个 EVI 基础通告的, 并且它们使用相同的 RD 和 RT (每个 EVI), 因此接收 PE 可以按每个 BGP 路径基础 (例如, 每个始发 PE) 将它们关联在一起。因此, 它可以执行递归路由解析, 例如, MAC 可通过 <ES, EVI> 到达, 而 <ES, EVI> 又可通过一组 BGP 路径到达; 因此, MAC 可通过该组 BGP 路径到达。由于基于每个 EVI, MAC 路由和相应别名路由的关联是固定的并由相同的 RD 和 RT 确定; 当这些路由通过 ASBR 时 BGP 下一跳被重写时没有歧义。也就是说, 接收 PE 可能从单个下一跳 (单个 ASBR) 接收同一 EVI 的多个别名路由, 并且它仍然可以创建指向该 <ES, EVI> 的多个路径。

但是, 当重写与始发 PE 对应的 BGP 下一跳地址时, 批量撤回路由 (每个 ES 的 Ethernet A-D) 与其相应 MAC 路由之间的关联不能基于它们的 RD 和 RT 建立, 因为批量撤回路由的 RD 与 MAC 路由的 RD 不同。因此, ASBR 和接收 PE 所需的功能取决于是否发起批量撤回路由以及是否需要处理此路由的路由解析歧义。以下两个小节根据 NVE 驻留在 hypervisor 还是 ToR 交换机中描述了 ASBR 和接收 PE 所需的功能。

10.2.1. ASBR Functionality with Single-Homing NVEs (使用单归属 NVE 的 ASBR 功能)

当 NVE 驻留在 hypervisor 中 (如第 7.1 节所述) 时, 没有多归属; 因此, 发起 NVE 无需发送每个 ES 的 Ethernet A-D 或每个 EVI 的 Ethernet A-D 路由。但是, 如第 7 节所述, 为了使单归属入口 NVE 在与连接到给定 ES 的多归属出口 NVE 交互时能够利用快速收敛, 别名和备份路径, 单归属 NVE 应该能够接收和处理每个 ES 的 Ethernet A-D 和每个 EVI 的 Ethernet A-D 路由。这些路由的处理在下一节中描述。

10.2.2. ASBR Functionality with Multihoming NVEs (使用多归属 NVE 的 ASBR 功能)

当 NVE 驻留在 ToR 交换机中并以多归属冗余模式运行时, 如第 8 节所述, 需要发起多归属 NVE 发送每个 ES 的 Ethernet A-D 路由 (用于批量撤回) 和每个 EVI 的 Ethernet A-D 路由 (用于别名)。如上所述, ASBR 重写 BGP 下一跳会在不同 ASBR 中的远程 NVE 接收每个 ES 的 Ethernet A-D 路由时产生歧义, 因为接收 NVE 无法将该路由与同一始发 NVE 通告的该 ES 的 MAC/IP 路由关联。这种歧义阻碍了不同 AS 中的接收 NVE 的每个 ES 批量撤回功能。

例如, 考虑一个场景, 其中 CE 多归属到 PE1 和 PE2, 其中这些 PE 通过 ASBR1 然后 ASBR2 连接到远程 PE3。此外, 考虑 PE1 从 CE1 接收 M1 但 PE2 不接收。因此, PE1 通告每个 ES1 的 Ethernet A-D, 每个 EVI1 的 Ethernet A-D 和 M1; 而 PE2 仅通告每个 ES1 的 Ethernet A-D 和每个 EVI1 的 Ethernet A-D。ASBR1 接收所有这五个通告并将它们传递给 ASBR2 (以自身作为 BGP 下一跳)。ASBR2 反过来将它们传递给远程 PE3, 以自身作为 BGP 下一跳。PE3 接收这五个路由, 其中所有路由都具有相同的 BGP 下一跳 (即, ASBR2)。此外, PE3 接收的两个每个 ES 的 Ethernet A-D 路由具有相同的信息, 即相同的 ESI 和相同的 BGP 下一跳。尽管这两个路由都由 PE3 中的 BGP 进程维护 (因为它们具有不同的 RD, 因此被视为不同的 BGP 路由), 但只有其中一个的信息在 L2 路由表 (L2 RIB) 中使用。

                  PE1
/ \
CE ASBR1---ASBR2---PE3
\ /
PE2

图 3: AS 间选项 B

现在, 当 PE2 和 CE 之间的 AC 失败并且 PE2 发送每个 ES 的 Ethernet A-D 路由的网络层可达性信息 (NLRI) 撤回时, 并且此撤回被传播并由 PE3 接收时, PE3 中的 BGP 进程删除相应的 BGP 路由; 但是, 它不会从 L2 路由表 (L2 RIB) 中删除关联的信息 (即 ESI 和 BGP 下一跳), 因为它仍然具有来自 PE1 的其他每个 ES 的 Ethernet A-D 路由, 其中包含相同的信息。这就是为什么在使用 AS 间选项 B 进行 DCI 时批量撤回机制不起作用的原因。但是, 如前所述, 别名功能起作用, "每个 EVI 的批量撤回" 也起作用 (与撤回与别名关联的 EVPN 路由相关联, 即每个 EVI 的 Ethernet A-D 路由)。

在上面的示例中, PE3 接收具有相同 BGP 下一跳 (ASBR2) 但不同 RD 的两个别名路由。其中一个别名路由与通告的 MAC 路由 (M1) 具有相同的 RD。PE3 在接收两个别名路由时遵循 [RFC7432] 中指定的路由解析过程; 也就是说, 它将 M1 解析为 <ES, EVI1>, 随后, 它将 <ES, EVI1> 解析为具有两个路径的 BGP 路径列表以及相应的 VNI/MPLS 标签 (一个与 PE1 关联, 另一个与 PE2 关联)。应该注意的是, 即使两个路径都由相同的 BGP 下一跳 (ASRB2) 通告, 接收 PE3 也可以正确处理它们。因此, M1 可通过两条路径到达。这创建了两个端到端 LSP, 从 PE3 到 PE1 和从 PE3 到 PE2, 用于 M1, 使得当 PE3 想要转发目标为 M1 的流量时, 它可以在两个 LSP 之间进行负载均衡。尽管 [RFC7432] 中没有明确提到具有相同 BGP 下一跳的别名路由的路由解析, 但这是预期的操作; 因此, 在此详细说明。

当 PE2 和 CE 之间的 AC 失败并且 PE2 发送每个 EVI 的 Ethernet A-D 路由的 NLRI 撤回时, 并且这些撤回被传播并由 PE3 接收时, PE3 删除别名路由并更新路径列表; 也就是说, 它删除对应于 PE2 的路径。因此, 指向该路径列表的该 <ES, EVI> 的所有相应 MAC 路由现在将具有与 PE1 关联的单个路径的更新路径列表。此操作可以被视为每个 EVI 级别的批量撤回。每个 EVI 级别的批量撤回的收敛时间比每个 ES 级别的批量撤回的收敛时间长; 但是, 它比按每个 MAC 基础进行撤回时的收敛时间快得多。

如果 PE 与给定 ES 分离, 那么除了撤回其先前通告的每个 ES 的 Ethernet A-D 路由外, 它还必须 (MUST) 撤回其先前通告的该 ES 的每个 EVI 的 Ethernet A-D 路由。对于通过一个或多个 EVPN AS 间选项 B ASBR 与撤回 PE 分离的远程 PE, 每个 ES 的 Ethernet A-D 路由的撤回是不可操作的。但是, 远程 PE 能够将先前通告的每个 EVI 的 Ethernet A-D 路由与撤回 PE 也为该 <ES, EVI, BD> 通告的任何 MAC/IP Advertisement 路由相关联。因此, 当它接收到每个 EVI 的 Ethernet A-D 路由的撤回时, 它应该 (SHOULD) 将撤回 PE 作为与该 <ES, EVI, BD> 关联的所有 MAC 地址的下一跳删除。

在前面的示例中, 当 PE2 和 CE 之间的 AC 失败时, PE2 将撤回其每个 ES 和每个 EVI 的 Ethernet A-D 路由。当 PE3 接收到每个 EVI 的 Ethernet A-D 路由的撤回时, 它将 PE2 作为与相应 <ES, EVI, BD> 关联的所有 MAC 地址的有效下一跳删除。因此, 该 <ES, EVI, BD> 的所有 MAC 下一跳现在将具有单个下一跳, 即到 PE1 的 LSP。

总之, 可以看出, 别名 (和备份路径) 功能应该按原样工作, 用于 AS 间选项 B, 而无需在 ASBR 或 PE 中需要任何额外功能。但是, 批量撤回功能从每个 ES 模式回退到 AS 间选项 B 的每个 EVI 模式。也就是说, 从同一 AS 接收批量撤回路由的 PE 对每个 ES 的 Ethernet A-D 路由采取行动; 而从不同 AS 接收批量撤回路由的 PE 对每个 EVI 的 Ethernet A-D 路由采取行动。