4. 链路级冗余设计

链路级冗余解决的是“两台设备之间或两台设备到同一目的地之间,只有一条物理链路”这一单点故障。它的核心思路不是让一条链路永不断,而是让多条链路同时存在,并在某条链路失效时,流量仍能沿剩余链路转发。企业网中常见的四类手段是:链路聚合(LAG/Eth-Trunk)、跨设备链路聚合(M-LAG/堆叠聚合)、等价多路径(ECMP)以及链路备份与故障切换。它们分别作用于二层链路、跨设备二层链路、三层转发路径和主备路径,适用位置和切换行为差异明显。

链路聚合:把多条物理链路变成一条逻辑链路

链路聚合将同一对设备之间的多条物理链路绑定为一个逻辑接口。以两台交换机之间的 4 条 10GE 链路为例,聚合后形成一个 40G 的逻辑链路,带宽叠加,同时任意一条成员链路故障时,流量自动重分布到剩余成员,业务不中断。聚合的成立条件是成员链路的速率、双工、VLAN 模式、MTU 等参数一致,且两端配置匹配。

聚合口的流量分布不是逐包轮询,而是按哈希算法选择成员链路。常见哈希因子包括源/目的 MAC、源/目的 IP、源/目的端口号。哈希算法的选择直接决定负载是否均衡:如果两台主机之间只有一条 TCP 流,无论多少条成员链路,该流始终走同一条链路,带宽仍受单链路限制。因此,链路聚合适合“多流并发”的场景,而不是单流大带宽场景。

interface Eth-Trunk 10
 mode lacp-static
 load-balance src-dst-ip
!
interface 10GE1/0/1
 eth-trunk 10
!
interface 10GE1/0/2
 eth-trunk 10

LACP(链路聚合控制协议)通过 LACPDU 报文协商成员状态,只有两端都确认的链路才进入转发状态。静态聚合不跑 LACP,链路是否可用依赖物理状态;动态 LACP 能检测“物理 up 但对端未正确聚合”的隐性故障,可靠性更高。判断聚合是否正常,可查看成员链路是否全部 Selected、聚合口带宽是否为成员带宽之和、以及各成员流量是否大致均衡。

跨设备链路聚合:把可靠性从链路延伸到设备

普通链路聚合只能防链路故障,不能防设备故障:如果两台交换机之间的聚合链路完好,但其中一台交换机整机宕机,链路仍然中断。跨设备链路聚合(M-LAG、堆叠聚合、vPC 等)让一台服务器或接入交换机同时连接两台独立的核心交换机,两条链路聚合成一个逻辑链路。两台核心交换机之间通过 peer-link 同步 MAC、ARP 和转发表项,对外表现为一台逻辑设备。

M-LAG 的关键在于:服务器侧看到的是一个聚合口,两台核心交换机各自有成员链路;当一台核心交换机故障时,服务器侧聚合口只感知到部分成员失效,剩余成员继续转发,无需重新收敛。peer-link 是 M-LAG 的控制与数据通道,必须使用高带宽直连链路,且不能承载普通业务流量,否则故障时可能引发流量绕行和环路。判断 M-LAG 健康状态,主要看 peer-link 是否正常、双主检测是否通过、以及两台设备上的 MAC 表项是否同步。

ECMP:在三层转发层面实现多路径

ECMP(等价多路径)作用于三层路由转发。当路由器到达同一目的网段存在多条开销相同的路由时,ECMP 将这些路径同时放入转发表,按哈希选择下一跳。与链路聚合不同,ECMP 的成员路径可以是不同物理链路、不同设备、甚至不同运营商,只要路由开销相等。

以企业双出口为例,核心路由器到互联网有两条等开销默认路由,分别指向运营商 A 和运营商 B。开启 ECMP 后,去往不同目的 IP 的流量按哈希分散到两条出口,总吞吐提升,单条出口故障时剩余出口继续转发。ECMP 的哈希通常基于源 IP、目的 IP、源端口、目的端口组合,因此同一会话仍走同一路径,避免乱序。

ip route-static 0.0.0.0 0.0.0.0 202.1.1.1
ip route-static 0.0.0.0 0.0.0.0 202.1.2.1
load-balance ecmp

ECMP 的局限在于:它依赖路由协议或静态路由的等价性,如果两条路径开销不同,只有一条进入转发表;此外,ECMP 不感知路径质量,某条路径虽然可达但丢包严重时,流量仍会按哈希分配过去。因此,ECMP 常与 BFD、NQA 等快速检测机制配合,实现路径级故障剔除。

链路备份与故障切换机制

链路备份是主备模式:一条链路为主用,另一条为备用,主用正常时备用不转发业务,主用故障时切换到备用。常见实现包括接口备份、路由备份、以及基于 BFD 的快速切换。与 ECMP 的“同时使用”不同,备份链路平时闲置,切换时依赖检测和收敛速度。

故障切换时间由三部分决定:故障检测时间、路由/转发表更新时间和流量重新收敛时间。以 BFD 为例,检测周期可配置为 3×10ms,即 30ms 内感知故障;路由协议收到 BFD 事件后重新计算,通常在百毫秒级完成切换。如果只依赖路由协议自身的 Hello 超时,检测时间可能达到秒级,业务中断明显。因此,对时延敏感的业务,应在主备链路两端部署 BFD 或 NQA 联动。

下面这张图对比了四种链路级冗余手段的作用层次、成员关系和故障切换行为,便于在实际组网中按位置选择。

链路级冗余四类手段对比 链路聚合 LAG 同一对设备 · 二层 SW-A SW-B 逻辑聚合口 带宽叠加 · 成员故障自动重分布 跨设备链路聚合 M-LAG 跨两台设备 · 二层 Core-1 Core-2 peer-link 服务器聚合口 防设备故障 · 表项同步 ECMP 三层转发 · 多路径 R1 R2 等价路由表项 同时转发 · 按哈希分流 链路备份 主备 · 故障切换 主链路 备链路 BFD 检测切换 平时闲置 · 故障时启用 关键差异与选型参考 作用层次 二层链路 二层跨设备 三层转发 主备路径 成员是否同时转发 是 是 是 否(主用) 防设备故障 否 是 是(多下一跳) 是 典型切换时间 毫秒级 毫秒级 百毫秒级 30ms~秒级

如何组合使用

实际组网中,这四种手段往往叠加使用。接入交换机双上行到两台核心交换机,采用 M-LAG 实现设备级冗余;核心交换机之间跑 OSPF 或 BGP,到出口路由器之间用 ECMP 实现多路径负载;出口路由器到运营商之间用 BFD 联动静态路由做链路备份。这样,从接入到出口,每一段都有冗余,且切换机制与故障类型匹配。

需要特别注意的是,冗余设计不是“越多越好”。链路聚合成员过多会增加哈希不均的概率;ECMP 路径过多会增加转发表规模和排障复杂度;M-LAG 的 peer-link 一旦故障,可能触发双主,需要双主检测机制兜底。设计时应先明确每段链路的故障域和业务容忍中断时间,再选择对应的冗余手段和检测参数。

判断链路级冗余是否真正生效,不能只看接口 up。应实际断开一条成员链路或一台设备,观察业务是否中断、切换时间是否在容忍范围内、以及切换后流量是否重新均衡。只有经过验证的冗余,才是可用的冗余。