EVPN 部署场景

用于二层部署的 EVPN

二层 EVPN 部署使用桥接叠加,如图 7 所示。它在 EVPN 网络中提供以太网桥接,并在叶子设备之间跨 VXLAN 隧道扩展 VLAN。这些叶子到叶子的 VXLAN 隧道在需要叶子设备之间连接但不需要 VLAN 间路由的网络中非常有用。因此,智能位于叶子层。Spine 层仅提供叶子设备之间的连接。叶子设备建立 VTEP 以连接到其他叶子设备。隧道支持叶子设备与数据中心内以太网连接的终端系统之间的通信。

图 7 - 二层 EVPN 示例

STP 是一种二层交换协议,它通过始终在网络中创建单路径树结构来确保无环路网络拓扑。如果存在链路故障或重新配置网络,则在生成树算法重新计算允许的无环路路径时,所有网络流量都会停止。但是,由于固有的水平分割功能,这不再是必要的。

需要考虑的点

  • 当二层域被三层结构分隔并需要跨越它们时(例如,传统的二层应用程序、ESF 等),这非常有用。
  • 每个 ToR(叶子)都是一个 VTEP,并托管位于其机架上的 VLAN(映射到 VNI)。
  • 要拥有扩展的二层域,必须在适用的 VTEP 上配置特定的 VNI。
  • 使用这种类型的环境不允许 VLAN 间连接。对于不同 VNI 之间的路由,我们需要查看三层部署模型或 Fabric 外部的外部网关,以便在 VLAN 之间执行路由。

考虑使用二层 EVPN 的场景

  • 当您在数据中心内的机架上拥有子网时。
  • 当架构使用防火墙作为网关时。例如,如果您的安全策略定义所有 VLAN 间流量必须通过防火墙,则三层网关功能在设计上由 Fabric 外部提供,因此桥接叠加架构非常适合。
  • 当您拥有现有的基于以太网的数据中心网络并想要引入 EVPN/VXLAN 时。由于桥接叠加方法非常基础和简单,因此当您想要实现数据中心环境现代化,但又希望采取分阶段或增量方法时,这是一个不错的选择。

用于三层部署的 EVPN

传统上,数据中心使用二层技术,例如 STP 和 MLAG。随着数据中心的发展和扩展,它们往往会超出其限制;STP 会阻止端口,从而锁定所需的带宽,而 MLAG 可能无法提供足够的冗余。此外,设备中断是一个重大事件,而较大的模块化机箱设备会消耗大量电力。

路由模型

您可能需要在二层域之间以及 VXLAN 隧道与外部世界之间进行通信,为此,您可以在网络中启用 VXLAN 路由。

VXLAN 路由可以通过以下两种架构之一执行

  • 集中式路由在中心路由器(边界叶子上的路由)上执行所有 VXLAN 路由,这对于南北流量大的数据中心来说是一个不错的选择。这可能会导致数据中心内额外的东西流量。
  • 分布式路由在直接连接的叶子交换机(叶子层中的路由)上最靠近主机的路由处提供 VXLAN 路由,这对于东西流量大的数据中心来说是一个不错的选择。这简化了流量流。

BGP EVPN 用于将 VXLAN 三层路由信息传达给叶子。

集中式路由

集中路由桥接叠加的性质是路由发生在数据中心网络内的中央网关(在本例中为边界叶子),而不是终端系统连接的 VTEP 设备(在本例中为叶子层)。当流量需要通过中央网关路由或边缘 VTEP 设备缺少所需的路由功能时,可以使用此叠加模型。

图 8 显示了部署此模型的常用方法。边界设备位于数据中心 Fabric 的边缘或边界。这些设备也充当进出网络 Fabric 的南北流量的 VTEP。源自以太网连接的终端系统的流量通过中继(多个 VLAN)或接入端口(单个 VLAN)转发到叶子 VTEP 设备。VTEP 设备将流量转发到本地终端系统或远程 VTEP 设备上的终端系统。边界设备上的集成路由和桥接 (IRB) 接口在以太网虚拟网络之间路由流量。

图 8 - 集中式 IRB 示例

这种方法的主要缺点是可扩展性和可能非最佳的流量流。

使用集中式 IRB 的场景

  • 需要在 Fabric 内发生 VXLAN 间路由。这种方法的优势在于集中和整合路由功能(而不是将其分布在叶子层)。
  • 该架构针对主要运行南北流量的数据中心进行了优化。

分布式路由

此模型可以加快服务器到服务器的数据中心内流量(也称为东西流量)。由于端点连接到同一叶子设备 VTEP,因此路由比集中式 IRB 模型更靠近终端系统。它还允许更简单的整体网络。Spine 设备配置为仅处理 IP 流量,从而无需将桥接叠加扩展到 Spine 设备。

在使用分布式架构时,《互联网工程任务组 (IETF)》定义了两种模型来实现使用 EVPN 的子网间路由:非对称 (IRB) 和对称 IRB。借助 Cumulus Linux,您可以根据需求选择其中一种方法。

对称 IRB

这是默认的 EVPN 路由模型。对称模型在入口和出口叶子上路由和桥接。这导致双向流量能够在同一 VNI 上传输,因此得名“对称”。但是,一个新的专用传输 VNI 用于所有路由的 VXLAN 流量,称为 L3VNI。所有必须路由的流量都路由到 L3VNI,通过三层基础设施进行隧道传输,从 L3VNI 路由到适当的 VLAN,并最终桥接到目的地。图 9 显示了示例对称配置中的桥接和路由。

图 9 - 对称 IRB 示例

需要考虑的点

  • 叶子交换机只需要托管位于其机架上的 VLAN 和相应的 VNI,以及 L3VNI 及其关联的 VLAN。入口叶子交换机不需要知道目标 VNI。
    • 仅托管本地 VNI(外加一个额外的 VNI)的能力有助于扩展。
  • 配置更加复杂,因为您的网络中需要额外的 VXLAN 隧道和 VLAN。
  • 多租户需要每个 VRF 一个 L3VNI,并且参与该 VRF 的所有交换机都必须配置相同的 L3VNI。出口叶子使用 L3VNI 来标识要在其中路由数据包的 VRF。

使用对称 IRB 的场景

  • 数据中心内 EVPN Fabric 的所有用例,除了需要集中式网关的情况。
  • 网络 Fabric 具有非 EVPN 路由(例如默认路由、静态路由或动态路由)的部署。
  • 大规模 EVPN 部署。
    • 广泛分散的 VLAN、子网或 VNI。

对称 VXLAN 路由直接在 ToR 上配置,将 EVPN 用于 VLAN 和 VXLAN 桥接以及 VXLAN 和外部路由。每台服务器都在 VLAN 上配置,并在服务器和叶子之间设置 MLAG 或 MH 绑定。每个叶子都配置有任播网关,服务器的默认网关指向相应的叶子交换机 IP 网关地址。租户 VNI(对应于 VLAN/VXLAN 的数量)桥接到相应的 VLAN。这种方法的优点包括

  • 二层域减少到一对 ToR。
  • 聚合层全部为三层。
  • 路由扩展和灵活性。
  • 高可用性。
  • 叠加流通过相同的 VNI(传输 VNI),提供对称的叠加路径,从而易于监控流。

非对称 IRB

非对称模型在 VXLAN 隧道入口处启用路由和桥接,但在出口处仅启用桥接。这导致双向 VXLAN 流量在每个方向(始终是目标 VNI)在路由基础设施上以不同的 VNI 传输。图 10 显示了示例非对称配置中的桥接和路由。即使 Cumulus Linux 支持此功能,对称 IRB 也是推荐的部署模型。

图 10 - 非对称 IRB 示例

使用非对称 IRB 的场景

  • 集中式网关部署的首选模型。
  • 网络具有不支持三层 VXLAN 的传统 ASIC 的交换机,因此必须使用集中式网关。
  • 中小型数据中心部署。
    • 更简单的配置,例如在所有叶子上配置所有 VLAN、子网或 VNI。它配置起来更简单,并且不需要额外的 VNI 来进行故障排除。

多租户和 VRF

VRF 分段用于在共享网络上组织用户和设备组,同时隔离和隔离不同的组。网络上的路由设备为每个组创建和维护单独的虚拟路由和转发 (VRF) 表。您可以在数据中心中使用 VRF 来为多租户环境传输多个隔离的流量流。由于多个路由实例彼此独立并且可以使用不同的传出接口,因此重叠的 IP 地址不会引起任何冲突,从而实现多租户。

在 EVPN 中,假定路由发生在 VRF 的上下文中。无论模型是对称还是非对称,都是如此。假定底层路由表位于默认路由表或全局路由表中,而叠加路由表假定位于 VRF 特定的路由表中。非对称路由有可能在不使用 VRF 的情况下工作。但是,如果端点必须与外部世界通信,则 VRF 是必需的,因为涉及到 RT-5 通告。RT-5 通告始终发生在 VRF 的上下文中:通告中指示的 L3 VNI。因此,为了保持统一的路由模型,建议始终将 VRF 与 EVPN 路由一起使用。

如图 11 所示,组中的服务器放置在一个 VRF 段中,并且可以相互通信,但它们无法与另一个 VRF 段中的用户通信。如果您想在一个 VRF 段到另一个 VRF 段之间发送和接收流量,则必须配置路由泄漏或依赖外部网关。

图 11 - 使用 VRF 的多租户

需要考虑的点

  • 您必须在特定的 VRF 中配置叠加(租户),并与位于默认 VRF 中的底层分开。Cumulus Linux 不支持默认 VRF 的三层 VNI 映射。
  • VRF 表可以具有 IP 地址,即 VRF 的环回接口。
  • Cumulus Linux 会自动添加关联的规则。
  • 您可以添加默认路由,以避免在内核转发数据包时跳过表。
  • VRF 表名称最多可以包含 15 个字符。但是,您不能使用名称 mgmt;Cumulus Linux 将此名称用于管理 VRF。
  • Cumulus Linux 在 Spectrum 1 交换机上最多支持 255 个 VRF。

要配置 VRF BLUE 并自动分配表 ID

nv set vrf BLUE table auto
nv set interface swp1 ip vrf BLUE
nv config apply

BGP 团体列表

您可以使用团体列表来定义 BGP 团体以标记一个或多个路由。然后,您可以使用团体在出口或入口上应用路由策略。BGP 团体列表可以是标准列表或扩展列表。标准 BGP 团体列表是一对值(例如 100:100),您可以将其标记在特定前缀上并通告给其他邻居,或者您可以将它们应用于路由入口。扩展的 BGP 团体列表采用团体的正则表达式并匹配列出的团体。

当邻居收到前缀时,它会检查团体值并采取相应的操作,例如允许或拒绝路由策略中的团体成员。BGP EVPN 路由可以具有一组 EVPN 扩展团体,这些团体在 BGP 更新消息路径属性中携带,因此,您可以使用这些扩展团体来过滤 BGP EVPN 路由。扩展团体中提供的 EVPN 特定信息包括,例如,封装类型、MAC 移动性信息、EVPN 水平分割标签信息、EVPN ESI 水平分割标签、ESI 模式、E-tree 叶子标签等等。

这是一个标准团体列表过滤器的示例

nv set router policy community-list COMMUNITY1 rule 10 action permit
nv set router policy community-list COMMUNITY1 rule 10 community 100:100
nv config apply

汇总路由通告

在具有 VXLAN 主动-主动 (MLAG) 的 EVPN 对称路由配置中,所有 EVPN 路由都使用任播 IP 地址作为下一跳 IP 地址,并使用任播 MAC 地址作为路由器 MAC 地址。在故障情况下,交换机可能会将流量转发到没有目标路由的叶子交换机。为了防止在此故障情况下丢弃流量,Cumulus Linux 默认启用“通告主 IP 地址”功能,以便交换机根据路由类型有条件地处理 VTEP 的下一跳 IP 地址:主机 type-2(MAC 和 IP 通告)或 type-5(IP 前缀路由)。

  • 对于主机 type-2 路由,任播 IP 地址是下一跳 IP 地址,任播 MAC 地址是路由器 MAC 地址。
  • 对于 type-5 路由,系统 IP 地址(VTEP 的唯一主环回 IP 地址)是下一跳 IP 地址,VTEP 的唯一路由器 MAC 地址是路由器 MAC 地址。

基于前缀的路由

EVPN type-2(MAC 和 IP)通告不支持通告汇总路由或前缀路由,例如 /16 或 /24 路由。这会影响解决方案的可扩展性。

如果您考虑一个具有边缘设备的网络,则边缘设备通常仅向边界设备通告默认路由。在几乎所有部署中,Spine 和叶子都不携带外部世界的路由表。它们仅携带默认路由,该路由将它们引导至边界设备,然后从那里引导至边缘设备。默认路由是 0.0.0.0/0,它具有非 /32 前缀(IPv6 具有 ::/0 作为默认路由)。

引入了一种新的路由类型 type-5 (RT-5) 来支持此用例。Cumulus Linux 中的 EVPN 支持使用 EVPN type-5(前缀)路由的基于前缀的路由。Type-5 路由(或前缀路由)主要路由到数据中心 Fabric 外部的目的地。EVPN 前缀路由携带三层 VNI 和路由器 MAC 地址,并遵循对称路由模型路由到目标前缀。

需要考虑的点

  • 当连接到 WAN 边缘路由器以到达数据中心外部的目的地时,请部署特定的边界或出口叶子交换机以始发 type-5 路由。
  • 在具有 Spectrum ASIC 的交换机上,集中式路由、对称路由和基于前缀的路由仅适用于 Spectrum-A1 及更高版本。
  • 配置每个租户的 VXLAN 接口,该接口指定租户的三层 VNI。此 VXLAN 接口是网桥的一部分;远程 VTEP 的路由器 MAC 地址通过此接口安装。
  • 配置与每个租户的 VXLAN 接口相对应的 SVI(三层接口)。这附加到租户的 VRF。远程前缀路由通过此 SVI 安装。
  • 指定 VRF 到三层 VNI 的映射。此配置用于 BGP 控制平面。

使用基于前缀的路由的场景

  • 路由到数据中心 Fabric 外部的目的地。

  • 将数据中心细分为多个 Pod,在 Pod 内实现完全主机移动性,但仅在 Pod 之间执行基于前缀的路由。您可以通过仅在 Pod 之间交换 EVPN type-5 路由来实现此目的。以下示例命令配置 EVPN 以在叶子上通告 type-5 路由

    nv set router policy route-map map1 rule 10 match type ipv4
    nv set router policy route-map map1 rule 10 match evpn-route-type ip-prefix
    nv set router policy route-map map1 rule 10 action permit
    nv set vrf default router bgp address-family ipv4-unicast route-export to-evpn route-map map1
    nv config apply
    
  • 仅交换携带特定 VXLAN ID 的 EVPN 路由。例如,如果数据中心或数据中心内的 Pod 仅共享某些租户,则可以使用路由映射来控制基于 VNI 交换的 EVPN 路由。以下示例配置了一个路由映射,该映射仅通告来自 VNI 1000 的 EVPN 路由

    nv set router policy route-map map1 rule 10 match evpn-vni 1000
    nv set router policy route-map map1 rule 10 action permit
    nv config apply
    
  • Cumulus Linux 支持始发 EVPN 默认 type-5 路由。默认 type-5 路由源自边界(出口)叶子,并通告到 Pod 内的所有其他叶子。Pod 内的任何叶子都遵循指向边界叶子的默认路由,以用于所有外部流量(指向 Internet 或不同的 Pod)。

    nv set vrf RED router bgp address-family ipv4-unicast route-export to-evpn default-route-origination on
    nv set vrf RED router bgp address-family ipv6-unicast route-export to-evpn default-route-origination on
    nv config apply
    

路由泄漏

当您需要多个独立的路由和转发表时,通常使用 VRF。要从一个 VRF 到达另一个 VRF 中的目的地,Cumulus Linux 支持动态 VRF 路由泄漏。通过路由泄漏,目标 VRF 想要知道源 VRF 的路由。随着路由在源 VRF 中来来去去,它们通过 BGP 动态泄漏到目标 VRF。如果 BGP 获知源 VRF 中的路由,则无需执行任何其他配置。如果 OSPF 获知源 VRF 中的路由,如果您静态配置路由,或者您需要到达直接连接的网络,则需要首先将路由重新分发到 BGP(在源 VRF 中)。

您还可以使用路由泄漏来到达远程目的地以及另一个 VRF 中直接连接的目的地。多个 VRF 可以从单个源 VRF 导入路由,并且 VRF 可以从多个源 VRF 导入路由。当单个 VRF 提供与外部网络或公共服务(例如 DHCP 或 DNS,这些服务通常交付给多个租户 VRF)的连接时,可以使用此方法。您可以使用路由映射来控制跨 VRF 动态泄漏的路由。

由于路由泄漏通过 BGP 发生,因此底层机制依赖于 RDRTs 的 BGP 构造。但是,您无需配置这些参数;当您在 VRF 对之间启用路由泄漏时,Cumulus Linux 会自动派生它们。

需要考虑的点

  • 您可以将接口仅分配给一个 VRF;Cumulus Linux 使用关联的 VRF 路由表路由到达该接口的任何数据包。
  • 您无法路由泄漏重叠的地址。
  • 您只能在对称路由配置中将 VRF 路由泄漏与 EVPN 一起使用。
  • 您不能在租户 VRF 和具有 Onlink 下一跳(BGP 未编号)的默认 VRF 之间使用 VRF 路由泄漏。
  • 您无法从另一个 VRF 到达 VRF 的环回地址(分配给 VRF 设备的地址)。
  • 您必须在 BGP 中使用 redistribute 命令来泄漏非 BGP 路由(连接或静态路由);您不能使用 network 命令。
  • Cumulus Linux 不会泄漏管理 VRF 中下一跳为 eth0 或管理接口的路由。
  • 您可以泄漏 iBGP 或多跳 eBGP 获知的 VRF 中的路由,即使它们的下一跳变得不可达。NVIDIA 建议对 BGP 通过单跳 eBGP 获知的路由进行路由泄漏。
  • 您不能在多个自治系统 (AS) 或与全局 AS 不同的 AS 中配置 BGP 的 VRF 实例。
  • 不要使用默认 VRF 作为共享服务 VRF。为共享服务创建另一个 VRF,例如服务 VRF,以简化配置并避免使用路由映射进行过滤。
  • 要从导入过程中排除某些前缀,请在路由映射中配置前缀。

当在默认 VRF 和非默认 VRF 之间泄漏路由时,EVPN 对称路由配置具有某些限制。默认 VRF 具有指向 VTEP 地址的路由,您无法将这些路由泄漏到任何租户 VRF。如果您需要在默认 VRF 和非默认 VRF 之间泄漏路由,则必须过滤掉指向 VTEP 地址的路由,以防止泄漏这些路由。

下游 VNI 使您能够通过 EVPN 路由从下游远程 VTEP 分配 VNI,而不是在整个网络中全局配置三层 VNI。要配置下游 VNI,您可以像往常一样配置租户 VRF;但是,要配置所需的路由泄漏,您可以定义路由目标导入和/或导出语句。

使用路由泄漏的场景

  • 使防火墙等服务可用于多个 VRF。
  • 为多个 VRF 启用到外部网络或 Internet 的路由,其中外部网络本身可通过特定的 VRF 访问。

在以下示例命令中,VRF BLUE 的 BGP 路由表中的路由动态泄漏到 VRF RED 中。

nv set vrf RED router bgp address-family ipv4-unicast route-import from-vrf list BLUE
nv config apply

以下示例配置了一个路由映射,以匹配源协议 BGP 并将路由从 VRF BLUE 导入到 VRF RED。对于导入的路由,团体在 VRF RED 中为 11:11

nv set vrf RED router bgp address-family ipv4-unicast route-import from-vrf list BLUE
nv set router policy route-map BLUEtoRED rule 10 match type ipv4
nv set router policy route-map BLUEtoRED rule 10 match source-protocol bgp
nv set router policy route-map BLUEtoRED rule 10 action permit
nv set router policy route-map BLUEtoRED rule 10 set community 11:11
nv set vrf RED router bgp address-family ipv4-unicast route-import from-vrf route-map BLUEtoRED
nv config apply

ARP 抑制

使用 EVPN 的 ARP 抑制允许 VTEP 最大程度地抑制 VXLAN 隧道上的 ARP 泛洪。它有助于减少广播流量,方法是使用 EVPN 将 ARP 请求的代理响应直接从 ToR VTEP 发送到客户端。本地代理处理来自本地连接主机的远程主机的 ARP 请求。ARP 抑制适用于 IPv4;ND 抑制适用于 IPv6。

Cumulus Linux 默认在所有 VNI 上启用 ARP 和 ND 抑制,以减少 VXLAN 隧道上的 ARP 和 ND 数据包泛洪;但是,您必须配置三层接口 (SVI) 才能使 ARP 和 ND 抑制与 EVPN 一起工作。

在没有 ARP 抑制的情况下,所有 ARP 请求都在整个 VXLAN Fabric 中广播,并发送到网络中具有 VNI 的每个 VTEP。启用 ARP 抑制后,通过 EVPN 学习的 MAC 地址将传递到 ARP 控制平面。充当 VTEP 的叶子交换机通过代理 ARP 回复直接响应 ARP 请求者。

由于 IP 到 MAC 的映射已通过使用 EVPN type-2 消息的 VXLAN 控制平面进行通信,因此实施 ARP 抑制可以优化叠加控制平面的更快解析。它还减少了 Fabric 中的广播流量量,因为 ARP 抑制减少了将 ARP 请求泛洪到 VXLAN 基础设施中每个 VTEP 的需求。

需要考虑的点

  • 您只能在 Spectrum_A1 及更高版本上使用 ND 抑制。
  • Cumulus Linux 默认启用 ARP 抑制。但是,在 VXLAN 主动-主动 (MLAG) 配置中,如果交换机不抑制 ARP,则控制平面不会同步以主动-主动模式运行的两个交换机之间的邻居条目。您看不到对转发的任何影响。
  • 在 EVPN 集中式路由配置中,当二层网络扩展到 VTEP 之外时(例如,具有网桥的主机),当网关上存在 ARP 抑制时,网关 MAC 地址不会在网络中刷新。要解决此问题,请在集中式网关上禁用 ARP 抑制。

用于 BUM 流量的 EVPN

引用泛洪数据包的常用术语是广播、未知单播和未知组播,或 BUM 数据包。EVPN 为 BUM 数据包的数据包转发提供两种选择:入口复制和三层底层组播。

入口复制称为头端复制,它执行跨远程 VTEP 的 VXLAN 封装数据包的单播交付。在单播复制中,源 VTEP 将相同的数据交付到每个其他远程 VTEP。而在组播复制中,所有 VTEP 都加入一个汇集点(首选 PIM-SM RP)以接收 VXLAN 封装的数据。与单播相比,这使组播具有更低的开销和更快的交付速度;但是,组播的安全性较低。

入口复制/头端复制

在入口复制中,入口 NVE 发送数据包的多个副本,每个副本对应一个对虚拟网络感兴趣的出口 NVE。

此模型的优点包括

  • 它使底层保持简单。底层只需要提供 IP 单播路由即可支持网络虚拟化。
  • 它易于配置 - 无需其他配置。复制列表是从 BGP EVPN RT-3(携带 VTEP 感兴趣的 VNI)消息自动构建的,无需用户的任何进一步干预。
  • 这使解决方案更加可靠,因为人为错误的可能性大大降低。

此模型的缺点包括

  • 底层所需的复制带宽可能很高,尤其是在 BUM 数据包很多的情况下。

如果需要复制到的 NVE 数量不多且 BUM 流量不大,则此方法效果很好。即使需要复制到的 NVE 数量较多,但流量不大,此方法也效果很好。

Cumulus Linux 默认将头端复制与 EVPN 多宿主一起使用。

组播复制

通过使用组播,入口 NVE 不必为每个出口 NVE 发送单独的副本。最常用的组播路由协议称为 PIMPIM-SM 用于优化具有 EVPN-MH 的网络中的泛洪流量。

此模型的优点包括

  • 可以有效地处理大量 BUM 数据包,甚至众所周知的组播数据包。

此模型的缺点包括

  • 这可能变得难以管理。在此模型中,除了提供单播路由支持外,底层还必须提供组播路由支持。
  • PIM-SM 需要额外的协议,例如会话发现协议 (SDP),才能实现可靠的部署。
  • 为了确保每个虚拟网络只有关联的 NVE 获得数据包,每个虚拟网络都必须在其自己的组播组中。但这会导致组播组过多,难以良好地扩展。因此,您现在必须手动将所有虚拟网络映射到较少数量的组播组。这反过来又导致一些 NVE 接收到它们不感兴趣的虚拟网络的 BUM 数据包。
  • 将虚拟网络映射到组播组也增加了显著的配置复杂性。您必须在每个 NVE 上配置虚拟网络到组播组的映射。没有简单的方法来确保此配置在所有 NVE 上都是一致且正确的。

图 12 显示了 EVPN-PIM 配置,其中底层组播分布 BUM 流量。

图 12 – 用于 BUM 流量的 EVPN-PIM

默认情况下,VTEP 会将其收到的所有 BUM 数据包(例如 ARP、NS 或 DHCP)泛洪到所有接口(传入接口除外)和同一广播域中的所有 VXLAN 隧道接口。当交换机在 VXLAN 隧道接口上收到此类数据包时,它会将数据包泛洪到数据包广播域中的所有接口。对于 PIM-SM,type-3 路由不会导致任何转发条目。当 VNI 的 BUM 模式为 PIM-SM 时,Cumulus Linux 不会通告二层 VNI 的 type-3 路由。

丢弃 BUM 数据包

许多网络管理员认为 BUM 数据包是启动网络分布式拒绝服务 (DDoS) 攻击的廉价方法。通过将数据包发送到网络可能永远看不到的地址,可用于合法流量的网络带宽减少。此类数据包可能会淹没该虚拟网络中的终端主机,并导致它们发生故障,因为系统非常忙于处理 BUM 数据包。

丢弃 BUM 数据包意味着在我们从端点听到消息后,其 MAC 地址将通过 BGP 传达给所有其他节点。因此,实际上没有必要泛洪这些数据包。

您可以禁用 VXLAN 隧道上的 BUM 泛洪,以便 EVPN 不会通告每个本地 VNI 的 type-3 路由,并停止对收到的 type-3 路由采取操作。

在具有控制器或编排器的部署中,禁用 BUM 泛洪非常有用,在这种部署中,交换机已预先配置,并且无需泛洪任何 ARP、NS 或 DHCP 数据包。

nv set nve vxlan flooding enable off
nv config apply

这种方法的主要缺点是可能与用于静默服务器的流量发生通信中断。静默服务器越来越少见,因此这可能不是您网络的问题。丢弃 BUM 数据包是本地配置设置,不会通告给其他邻居。