4. 链路聚合与冗余设计

链路聚合是数据中心网络冗余设计的基础手段,但面试中真正拉开差距的,不是“知道有LACP”,而是能否讲清楚聚合口在协商、转发、故障切换各阶段到底发生了什么。本章围绕这一主线展开,先厘清静态聚合与动态聚合的本质差异,再延伸到堆叠与M-LAG两种跨设备冗余方案,最后用故障场景把知识串起来。

一、静态聚合与动态聚合:差异不在“配不配LACP”

静态聚合(手动模式)由管理员在两端手工创建聚合组并加入成员口,不运行协商协议。它的特点是:只要成员口的物理参数(速率、双工、VLAN模式)匹配,聚合口就能up。问题在于,如果一端配置了聚合、另一端没配,或者成员口错连到不同聚合组,静态聚合无法感知,可能形成环路或流量黑洞。

动态聚合通过LACP(Link Aggregation Control Protocol,IEEE 802.3ad/802.1AX)协商。LACP报文以组播MAC 01-80-C2-00-00-02发送,携带系统优先级、系统MAC、端口优先级、端口号、Key等字段。两端通过比较这些参数决定哪些端口能加入聚合组,并选举出活动端口。关键点:LACP的协商结果是“活动/备用”状态,而不是简单的up/down。当活动端口数超过最大活动端口数(max active)时,多余端口进入备用状态,只有活动端口故障时才顶替。

面试常问:LACP超时时间怎么设?LACP有两种超时:短超时(3秒)和长超时(90秒)。短超时用于快速检测,但会增加协议报文开销;长超时适合稳定环境。实际配置中,数据中心内部通常用短超时,因为链路故障需要快速收敛。注意:超时时间必须两端一致,否则协商可能失败。

下面是一个典型的华为交换机LACP配置示例(示例参数,非实测):

interface Eth-Trunk 10
 mode lacp-static
 max active-linknumber 2
 load-balance src-dst-ip
 lacp timeout short
interface GigabitEthernet 0/0/1
 eth-trunk 10
interface GigabitEthernet 0/0/2
 eth-trunk 10
interface GigabitEthernet 0/0/3
 eth-trunk 10

这里max active-linknumber设为2,意味着3个成员口中只有2个处于活动状态,第3个作为备用。判断依据:在交换机上执行display eth-trunk 10,可以看到“Status”列中活动端口为Selected,备用端口为Unselected。如果两端Key不一致,端口会显示为Unselected,聚合口无法up。

二、堆叠与M-LAG:跨设备冗余的两条路线

单台交换机做链路聚合,只能防链路故障,防不了设备故障。跨设备冗余有两种主流方案:堆叠和M-LAG。

堆叠(Stack)把多台物理交换机通过堆叠线缆连成一台逻辑设备,统一管理、统一转发。堆叠后,跨设备的链路聚合成为可能,因为逻辑上是一台设备。堆叠的故障切换:主交换机故障时,备交换机接管。但堆叠有一个致命问题——堆叠线缆故障可能导致脑裂(双主),需要配置双主检测(如MAD检测)。堆叠的收敛速度取决于协议,通常较快,但堆叠线缆本身是单点风险。

M-LAG(Multi-Chassis Link Aggregation Group)是另一种思路:两台交换机独立管理,但通过Peer-Link同步状态,对外呈现为一个聚合口。与堆叠不同,M-LAG的两台设备控制面独立,转发面通过Peer-Link协调。M-LAG的故障切换更精细:当一台设备故障时,另一台设备接管所有流量,但需要Peer-Link正常。如果Peer-Link故障,M-LAG会进入双主状态,此时需要依赖Keepalive链路检测。

面试中常对比:堆叠适合中小规模、追求管理简单的场景;M-LAG适合大规模、需要独立控制面的场景。M-LAG的配置通常包括:Peer-Link口、Keepalive链路、M-LAG接口。以华为为例,M-LAG配置片段(示例):

interface Eth-Trunk 1
 mode lacp-static
 peer-link 1
interface Eth-Trunk 2
 mode lacp-static
 m-lag 1

判断M-LAG是否正常:执行display m-lag summary,查看“Peer-link status”和“M-LAG status”。如果Peer-link为down,M-LAG会进入双主,此时需要检查Keepalive链路是否正常。

三、故障切换场景分析:从链路到设备

面试中常给一个拓扑,问“某条链路断了,流量怎么走”。我们用一个具体场景来拆解。

假设拓扑:两台交换机SW1、SW2做M-LAG,下联服务器双网卡分别接SW1和SW2,上联核心。服务器与SW1、SW2之间是LACP聚合。现在SW1与SW2之间的Peer-Link断了,但Keepalive正常。此时M-LAG会检测到Peer-Link故障,触发双主检测。如果Keepalive也断了,则两台设备都认为自己是主,可能导致服务器收到重复流量。实际处理:M-LAG通常配置为“Peer-Link故障时,备用设备关闭M-LAG接口”,从而避免双主。判断依据:查看display m-lag summary中“Peer-link status”为down,且“M-LAG status”变为“dual-active”。

另一个场景:LACP聚合中某条成员链路故障。动态聚合下,LACP会重新协商,备用端口顶替,流量中断时间通常在毫秒级。静态聚合下,如果成员口down,聚合口可能直接down,导致流量中断。这就是为什么生产环境推荐动态聚合。

再一个场景:堆叠系统中主交换机故障。堆叠协议会重新选举主设备,备设备接管。但堆叠线缆故障可能导致脑裂,此时需要MAD检测。MAD检测通常通过业务口或专用口发送检测报文,如果检测到双主,则关闭其中一台设备的业务口。判断依据:查看堆叠状态display stack,如果出现“双主”告警,需要检查MAD配置。

四、面试答题要点与检查清单

回答链路聚合与冗余设计问题时,建议按以下逻辑组织:先讲聚合类型(静态/动态),再讲跨设备方案(堆叠/M-LAG),最后讲故障切换。面试官常追问:“LACP协商失败怎么排查?”排查步骤:检查两端Key是否一致、超时时间是否匹配、成员口速率双工是否一致、VLAN配置是否匹配。如果LACP报文被中间设备过滤,也会导致协商失败。

下面给出一份可直接使用的检查清单,用于面试前快速复盘:

检查项静态聚合动态聚合(LACP)
协商协议无LACP
成员口状态up即加入Selected/Unselected
故障切换慢,可能中断快,备用顶替
配置一致性要求高高,且Key/超时需匹配
适用场景简单环境生产环境推荐

对于堆叠与M-LAG,检查清单如下:

  • 堆叠:堆叠线缆是否冗余?MAD检测是否配置?主备切换是否测试过?
  • M-LAG:Peer-Link是否冗余?Keepalive是否独立?双主检测是否生效?
  • 通用:聚合口负载均衡算法是否合理?是否根据流量特征选择src-dst-ip或src-dst-mac?

最后强调一个面试中容易忽略的点:链路聚合的负载均衡算法。默认算法可能基于源MAC,导致流量分布不均。实际配置中,应根据流量特征选择。例如,服务器到存储的流量,用src-dst-ip更均匀;虚拟机流量,用src-dst-mac可能更好。判断依据:在交换机上执行display eth-trunk 10 load-balance查看当前算法,并通过流量统计观察各成员口利用率。如果某条链路利用率明显偏高,说明算法需要调整。

掌握以上内容,面试中遇到链路聚合与冗余设计问题,就能从“是什么”讲到“怎么做”,再到“怎么判断”,形成完整的回答闭环。