15. MAC Mobility (MAC 移动性)
15. MAC Mobility (MAC 移动性)
给定 host 或 end-station (由其 MAC 地址定义) 可能从一个 Ethernet segment 移动到另一个 Ethernet segment; 这称为 'MAC Mobility' 或 'MAC move', 它不同于给定 MAC 地址可通过同一 Ethernet segment 的多个 PE 到达的 multihoming 情况. 在 MAC move 中, 会有两组 MAC/IP Advertisement route -- 一组带有新的 Ethernet segment, 另一组带有先前的 Ethernet segment -- 且该 MAC 地址看起来可通过这些 segment 中的每一个到达.
为了让 EVPN 实例中的所有 PE 正确确定该 MAC 地址的当前位置, 先前为旧 Ethernet segment 通告过该 MAC 地址可达性的 PE, MUST 撤销所有表示该 MAC 地址可通过先前 Ethernet segment 到达的通告.
如果使用数据平面执行 local learning, 这些 PE 将无法检测到该 MAC 地址已移动到另一个 Ethernet segment, 因而从其他 PE 收到带有 MAC Mobility extended community attribute 的 MAC/IP Advertisement route 会作为触发条件, 使这些 PE 撤销其通告. 如果使用控制平面或管理平面执行 local learning, 则这些交互会作为触发条件, 使这些 PE 撤销其通告.
在给定 MAC 发生多次移动的情况下, 可能是在同两个 Ethernet segment 之间移动, 可能会出现多次撤销和重新通告. 为了确保 EVPN 实例中的所有 PE 都能通过中间 BGP infrastructure 正确收到所有这些更新, 有必要在 MAC Mobility extended community attribute 中引入 sequence number.
为了正确处理 mobility event, 实现 MUST 处理 sequence number wraparound 发生的场景.
给定 MAC 地址的每个 MAC mobility event 都将包含一个 sequence number, 该编号按以下规则设置:
-
首次通告某个 MAC 地址的 PE 通告该地址时不携带 MAC Mobility extended community attribute.
-
如果 PE 检测到某个本地连接 MAC 地址, 且此前曾收到带有不同 Ethernet segment identifier 的该地址 MAC/IP Advertisement route, 则该 PE 在带有 MAC Mobility extended community attribute 的 MAC/IP Advertisement route 中通告该 MAC 地址, 其中 sequence number 比收到的 MAC/IP Advertisement route 的 MAC Mobility extended community attribute 中的 sequence number 大 1. 对于给定 MAC 地址的首次 mobility event, 如果收到的 MAC/IP Advertisement route 不携带 MAC Mobility extended community attribute, 则出于此处理目的, 假定收到路由中的 sequence number 值为 0.
-
如果 PE 检测到某个本地连接 MAC 地址, 且此前曾收到带有相同非零 Ethernet segment identifier 的该地址 MAC/IP Advertisement route, 则它按如下方式通告该地址:
-
如果收到的路由未携带上述属性, 则不携带 MAC Mobility extended community attribute.
-
如果收到的路由携带 MAC Mobility extended community attribute, 则携带 MAC Mobility extended community attribute, 其 sequence number 等于收到的 MAC/IP Advertisement route 中最高的 sequence number.
- 如果 PE 检测到某个本地连接 MAC 地址, 且此前曾收到带有相同零 Ethernet segment identifier (single-homed 场景) 的该地址 MAC/IP Advertisement route, 则它通告该地址时携带 MAC Mobility extended community attribute, 并正确设置 sequence number. 在 single-homed 场景中, 不需要 ESI 比较. ESI 比较用于 multihoming, 以防止在连接到同一 multihomed site 的 PE 之间错误检测 MAC move.
如果 PE 收到某个 MAC 地址的 MAC/IP Advertisement route, 该路由带有不同 Ethernet segment identifier 且 sequence number 高于它此前通告的值, 则该 PE 撤销自己的 MAC/IP Advertisement route. 如果两个 (或更多) PE 使用相同 sequence number 但不同 Ethernet segment identifier 通告同一 MAC 地址, 则收到这些路由的 PE 选择由 IP 地址最低的 PE 通告的路由作为 best route. 如果该 PE 是 MAC route 的发起者, 且收到相同 MAC 地址并带有其生成的相同 sequence number, 它会将自身 IP 地址与远程 PE 的 IP 地址进行比较并选择最低 IP. 如果其自身路由不是最佳路由, 它会撤销该路由.