「BGP MPLS-based EVPN」- 工作流程:数据转发

  CREATED BY JENKINSBOT

站在 CE 角度

EVPN 流量转发阶段由 CE 侧用户流量发起开始。用户 CE 设备并不感知 PE 设备的 EVPN 协议交互;

我们站在高层的角度,CE1 访问 CE2 业务流程如下,仿佛出于同个网络:

下面,我们将学习数据转发的详细过程;

请求阶段(左侧)

1)CE1 发送的 ARP 达到 PE1,PE1 通过数据面学习到 CE1 的 MAC 地址,然后通过 TYPE-2-ROUTE 发送给所有邻居;
2)当控制平面行为完成后,PE1 将执行数据平面行为,即转发 ARP 广播请求;
3)最后因 PE3 为 DF,PE3 转发 ARP 广播报文(BUM)到 CE2;

控制平面:传播 MAC 地址

CE1 访问 CE2,首先发送 ARP 请求。PE1 接收报文,PE1 学习到该 MAC 地址,生成本地 MAC 表条目,将其加入 MAC-VRF 表;CE 发出的数据包不带任何标签,所以 PE 设备上 MAC-VRF 表中的入标签为 NULL;
PE1 EVPN 将本地 MAC 地址条目生成 TYPE-2-ROUTE,携带 PE1 设备分配的标签 301;
远端的 PE 设备通过 MP-BGP 学习到 EVPN 路由,生成 MAC 表条目;

EVPN 支持 CE 多活接入 PE。PE2 感知直连 CE1,刷新最优的 MAC 表条目,并生成和通告 TYPE-2-ROUTE;
因 PE1 和 PE2 分配不同的 MPLS 标签,PE3 和 PE4 有两条路径到达 CE1;

针对 DF 设备,再次说明,其仅控制 BUM 流量的转发,对于单播流量仍能通过两台 PE 到达 CE 以实现负载分担的效果;

数据平面:转发 ARP 请求

PE1 => PE3
1)PE1 发送 ARP Request 到 PE3 设备,PE1 将查询 BUM 流量转发表转发,携带 Label=103,最外层 Tunnel 为 Data Plane 的标签;
2)PE3 为 DF,转发报文到 Port3;

PE1 => PE4
1)PE1 发送 ARP Request 到 PE4 设备,PE1 将查询 BUM 流量转发表转发,携带 Label=104,最外层 Tunnel 为 Data Plane 的标签;
2)PE4 根据标签确认是 BUM 流量,因 PE4 为非 DF,丢弃报文;

PE1 => PE2
1)PE1 和 PE2 属于相同 ES,所以 PE1 到 PE2 的流量同时携带 ESI-Label=202 和 BUM-Label=102;
2)PE2 接收到报文发现有标签 202,则丢弃该报文(原因是通过 Type 1 Route 分配的 ESI Label 实现水平分割);

响应阶段(右侧)

1)CE2 单播回复 ARP 应答;
2)PE3 首先本地学习 CE2 的 MAC 地址,然后触发 EVPN 控制面行为,即发送 Type 2 路由;
3)PE3 查询 MAC 地址表转发单播报文到 PE1,最后 PE1 转发 ARP 报文到 CE1;

控制平面:传播 MAC 地址

CE2 回复单播 ARP 应答。PE3 通过数据面学习到 CE2 的 MAC 地址,生成本地 MAC-VRF 表项。
PE3 生成并通告 Type 2 路由。其他 PE 接收 PE3 发出的 Type 2 路由,刷新本地 MAC 表项;

PE4 的接口属于 ESI 2,因此刷新更优的 MAC 地址表。同时生成和发布 Type 2 路由;

数据平面:响应 ARP 响应

PE3通过负载分担算法找出下一跳(如:PE1)发送报文,携带标签301。
PE3根据报文目的MAC为1-1-1查MAC-VRF表,发现下一跳有两个选择:PE1和PE2。PE3通过负责分担算法找出一条路径(例如PE1)发送。

PE1PE1接收报文(ARP应答)后,查询MAC-VRF,将报文从Port1发出。