8.5. Designated Forwarder Election (指定转发器选举)
8.5. Designated Forwarder Election (指定转发器选举)
考虑一个作为主机或路由器的 CE, 它在给定 Ethernet segment 上的某个 EVPN 实例中直接多宿主连接到多个 PE. 该 Ethernet segment 上可以配置一个或多个 Ethernet tag. 在此场景中, 只有一个 PE 负责某些动作, 该 PE 称为 Designated Forwarder (DF, 指定转发器):
-
在特定 Ethernet segment 上的给定 Ethernet tag 中, 向 CE 发送 multicast 和 broadcast traffic.
-
如果环境要求泛洪 unknown unicast traffic, 则在特定 Ethernet segment 上的给定 Ethernet tag 中向 CE 泛洪 unknown unicast traffic (即 PE 不知道目的 MAC 地址的流量).
注意, 这种允许以 < ES, VLAN> 或 < ES, VLAN bundle> 粒度为 multicast, broadcast 和 unknown unicast traffic 选择 DF 的行为, 是本规范中的默认行为.
注意, CE 总是使用通向某个 PE 的单条链路发送属于特定流的数据包. 例如, 如果 CE 是主机, 则如前所述, 该主机会把用于到达 PE 的多条链路视为 Link Aggregation Group (LAG). CE 使用本地哈希函数将流量流映射到 LAG 中的链路.
如果桥接网络通过交换机多宿主连接到 EVPN 网络中的多个 PE, 则支持 All-Active redundancy mode 要求该桥接网络使用 LAG 连接到两个或更多 PE.
如果桥接网络没有使用 LAG 连接到 PE, 则对于给定 < ES, VLAN> 或 < ES, VLAN bundle>, 桥接网络与 PE 之间必须只有一条链路是 active link. 在这种情况下, 每个 PE 通告的 Ethernet A-D per ES route 集合 MUST 将 ESI Label extended community 的 flags 中 "Single-Active" bit 设置为 1.
VLAN-based service 中以 < ES, VLAN> 粒度, 或 VLAN-(aware) bundle service 中以 < ES, VLAN bundle> 粒度进行 DF 选举的默认过程称为 "service carving". 通过 service carving, 可以为每个 Ethernet segment 选举多个 DF (每个 VLAN 或 VLAN bundle 一个), 以便对发往给定 segment 的 multi-destination traffic 执行负载均衡. 负载均衡过程在各 PE 节点之间均匀划分每个 ES 的 VLAN 空间, 使每个 PE 都成为该 ES 中一组互不相交的 VLAN 或 VLAN bundle 的 DF. Service carving 的过程如下:
-
当 PE 发现所连接 Ethernet segment 的 ESI 时, 它通告一条带有关联 ES-Import extended community attribute 的 Ethernet Segment route.
-
随后 PE 启动一个定时器 (默认值 = 3 秒), 以便接收来自连接到同一 Ethernet segment 的其他 PE 节点的 Ethernet Segment route. 连接到同一 Ethernet segment 的所有 PE 上, 该定时器值应相同.
-
定时器到期后, 每个 PE 按数值递增顺序构建所有连接到该 Ethernet segment 的 PE 节点 (包括自身) 的 IP 地址有序列表. 该列表中的每个 IP 地址都从所通告 Ethernet Segment route 的 "Originating Router's IP address" 字段提取. 随后每个 PE 都获得一个 ordinal, 表示其在有序列表中的位置, 从数值最低 IP 地址对应 PE 的 ordinal 0 开始. 该 ordinal 用于按照以下规则确定哪个 PE 节点将成为该 Ethernet segment 上给定 EVPN 实例的 DF:
假设冗余组包含 N 个 PE 节点, 对于 VLAN-based service, 当 (V mod N) = i 时, ordinal 为 i 的 PE 是 < ES, VLAN V> 的 DF. 对于 VLAN-(aware) bundle service, 该 ES 上该 bundle 中数值最低的 VLAN 值 MUST 用于取模函数.
需要注意, 使用 Ethernet Segment route 中的 "Originating Router's IP address" 字段获取有序列表所需的 PE IP 地址, 可以在将来有此需求时允许 CE 跨不同 AS 多宿主.
- 被选为给定 < ES, VLAN> 或 < ES, VLAN bundle> 的 DF 的 PE, 将在对应 ES 上解除该 VLAN 或 VLAN bundle 的 multi-destination traffic 阻塞. 注意, DF PE 是在朝向该 segment 的出口方向解除 multi-destination traffic 阻塞. 所有 non-DF PE 继续在朝向该 < ES, VLAN> 或 < ES, VLAN bundle> 的出口方向丢弃 multi-destination traffic.
发生链路或端口故障时, 受影响的 PE 撤销其 Ethernet Segment route. 这将重新触发冗余组中所有 PE 上的 service carving 过程. 对于 PE 节点故障, 或在 PE 投入使用或退役时, PE 会重新触发 service carving. 在 Single-Active multihoming 情况下, 当某个服务由于重新划分而从冗余组中的一个 PE 迁移到另一个 PE 时, 最终被选为该服务 DF 的 PE SHOULD 向关联的 Ethernet segment 触发 MAC address flush notification. 例如, 可以使用 IEEE 802.1ak Multiple VLAN Registration Protocol (MVRP) 的 'new' declaration 来完成.