4. EVPN多归属与DF选举

EVPN多归属(Multi-Homing)解决的是同一台CE或同一台服务器通过多条链路接入两台(或多台)PE/Leaf的问题。它的目标不是简单地把链路绑在一起,而是在控制平面建立一套“谁负责转发、谁负责备份、如何避免环路、如何利用多路径”的协作规则。理解这一节,关键要抓住四个对象:ESI、DF、水平分割标签、别名与备份路径。

一、ESI:多归属的身份标识

ESI(Ethernet Segment Identifier)是EVPN中标识“一个以太网段”的10字节标识符。同一个CE接入多台PE时,这些PE上针对该CE的接口必须配置相同的ESI,EVPN才会把它们识别为同一个多归属段。ESI通常由Type、Value和区分符组成,工程中常见写法如00:11:22:33:44:55:66:77:88:99,其中前若干字节可编码系统MAC或管理域信息,后部用于区分不同段。

在Arista EOS上,ESI配置在接口层面,并配合EVPN多归属模式。典型片段如下:

interface Ethernet1
   no switchport
   evpn ethernet-segment
      identifier 00:11:22:33:44:55:66:77:88:99
      route-target import 00:11:22:33:44:55:66:77:88:99
   lacp system-id 0011.2233.4455

这里identifier就是ESI,route-target import用于导入该以太网段的MAC/IP路由,lacp system-id则保证CE侧LACP协商时看到一致的System ID。若两端ESI不一致,PE之间不会形成同一以太网段的协同,DF选举和别名机制都会失效。

二、LACP与全活多归属

多归属有两种常见形态:单活(Active-Standby)和全活(All-Active)。全活多归属下,CE通过LACP把多条链路聚合成一个LAG,PE侧各自与CE建立LACP邻居,但只有DF负责转发BUM流量,单播流量则可由多台PE共同承担。这样既提高了带宽利用率,又通过DF机制抑制了BUM复制环路。

LACP在全活多归属中承担两个作用:一是链路聚合协商,让CE认为对端是一个逻辑系统;二是通过System ID和端口Key保证成员端口归属一致。Arista EOS中,PE侧通常配置lacp system-id与CE侧一致,并在EVPN以太网段下启用designated-forwarder相关参数。若LACP未起来,CE可能只把链路当作独立端口,全活优势无法体现。

三、DF选举算法

DF(Designated Forwarder)选举决定在同一个ESI下,哪台PE负责向CE转发BUM流量(广播、未知单播、组播)。EVPN定义了基于以太网段和VLAN的DF选举算法,核心是比较各PE通告的DF Election候选属性。常见算法包括默认的Highest Random Weight(HRW)和偏好算法。HRW的基本思想是:对每个VLAN,用ESI、VLAN ID和PE地址做哈希,选出一个权重最高的PE作为DF。

以两台PE为例,PE1地址10.0.0.1,PE2地址10.0.0.2,ESI相同,VLAN 10。HRW会对每个PE计算一个哈希值,值大者为DF。若PE1胜出,则VLAN 10的BUM由PE1转发,PE2进入备份状态。当PE1故障或ESI撤销时,PE2重新参与选举并接管。DF选举是按VLAN独立进行的,因此不同VLAN的DF可以落在不同PE上,实现负载分担。

EVPN多归属:ESI、DF选举与BUM转发路径 CE / 服务器 LACP LAG · 全活多归属 PE1 / Leaf1 ESI: 00:11:...:99 VLAN 10 DF · VLAN 20 备份 PE2 / Leaf2 ESI: 00:11:...:99 VLAN 20 DF · VLAN 10 备份 LACP LACP BUM (VLAN10) DF转发 BUM (VLAN20) DF转发 BGP EVPN 控制平面 Type-1 自动发现 · Type-4 以太网段路由 水平分割:PE1从CE收到BUM后,不再通过EVPN隧道转发给同一ESI的PE2;PE2同理 别名与备份路径:PE1故障时,PE2通过Type-1/Type-4撤销感知并接管DF角色

四、水平分割与别名机制

水平分割(Split Horizon)在多归属中用于防止BUM流量在PE之间来回转发。规则是:当一台PE从某个ESI的CE侧收到BUM流量后,它不会再通过EVPN隧道把该流量转发给同一ESI下的其他PE。这样,即使多台PE都连接同一CE,BUM也不会在PE之间形成环路。水平分割依赖ESI标签或以太网段路由来识别“同一段”。

别名(Aliasing)解决的是单播转发效率问题。当远端PE要向该CE发送单播时,它可能只知道其中一台PE的MAC地址。别名机制允许远端PE把流量发给同一ESI下的任意一台PE,由该PE再转发给CE。这样,即使远端PE没有学到CE的精确MAC,也能通过多归属组实现负载分担和快速收敛。Arista EOS中,别名通常与evpn ethernet-segment下的route-target和designated-forwarder配合使用。

五、备份路径控制与故障切换

备份路径控制的核心是:当DF故障时,备份PE能快速接管。EVPN通过Type-1(以太网自动发现)和Type-4(以太网段路由)通告ESI状态。当PE1的ESI撤销或链路故障时,PE2收到更新,重新进行DF选举,并在毫秒级到秒级内接管BUM转发。实际工程中,需要关注show evpn ethernet-segment的输出,确认DF角色、ESI状态和备份路径是否正常。

以下是一个可参考的检查清单,用于验证多归属配置是否生效:

检查项预期结果常用命令
ESI一致性两端PE的ESI完全相同show evpn ethernet-segment
LACP状态CE侧LAG成员端口均为Upshow lacp neighbor
DF角色每个VLAN有且仅有一个DFshow evpn ethernet-segment detail
水平分割同一ESI的PE之间不转发BUM抓包或查看EVPN路由
别名远端PE可通过任意PE到达CEshow evpn mac
故障切换DF故障后备份PE接管断开链路后观察DF变化
在全活多归属中,DF选举是按VLAN独立进行的。若希望不同VLAN的DF落在不同PE上,可以调整HRW权重或使用偏好算法,从而实现BUM流量的负载分担。
ESI配置错误是多归属故障的常见原因。若两端ESI不一致,PE之间不会形成同一以太网段,DF选举、水平分割和别名机制都会失效,CE侧可能看到LACP正常但BUM转发异常。

总结来说,EVPN多归属的工程落地可以归纳为一条主线:用ESI标识同一以太网段,用LACP实现全活接入,用DF选举决定BUM转发者,用水平分割防止环路,用别名提升单播效率,用备份路径保证故障切换。理解这条主线,再结合Arista EOS的实际命令和状态输出,就能把多归属从概念落到可操作、可验证的配置与排障过程中。