交换机堆叠和 M-LAG 有什么区别?高可靠组网怎么选?
前者叫堆叠(华为盒式叫 iStack、框式叫 CSS;华三统一叫 IRF),后者叫 M-LAG。那什么情况下该用哪个呢?。
记住一个比喻:堆叠是「合体」,M-LAG 是「联手」。
合体,两辆卡车焊成一辆铰接车,一个司机开;联手,两辆独立卡车并排跑,各开各的,但对外走同一条专用道。
一、为什么会有堆叠和M-LAG
首先高可靠的诉求很简单:核心设备挂了,网络不能跟着挂。所以核心交换机从来是两台起步,这叫双归冗余。
但传统双归方案有个尴尬——靠 STP(生成树)加 VRRP 撑起来的那套,用起来浑身难受:
• 带宽浪费:两条上联链路,STP 为了防环必须 Block 掉一条,等于一半的链路投资晾在那吃灰
• 收敛慢:断一根线,STP 重新收敛要几秒甚至几十秒,视频会议、远程桌面这种业务当场就有人骂
• 管理割裂:两台汇聚各管各的,登录两次、查两次 MAC 表,配置同步全凭自觉,一边改了一边漏了,排障查到怀疑人生
这三个痛点,堆叠和 M-LAG 都想解决,但走的路线完全不同。这就引出开头那个比喻:一个选择「合体」,一个选择「联手」。
二、堆叠:合体,一个大脑管所有
堆叠把多台交换机用堆叠线缆连起来,从控制面到转发面完全融合,对外变成一台逻辑设备。你登录一次,看到的是所有端口、所有板卡,配置统一,转发统一。
我习惯按机型分两种叫法记:盒式交换机(S5700、S6720 这类)叫 iStack;高端框式核心(S7700、S9700、S12700)叫 CSS 集群。名字不同,干的是一件事——合体。
华三这边不分盒式框式,统一叫 IRF(智能弹性架构),比华为更简单粗暴:不管什么机型,合体这一下都叫 IRF。横向合体(同系列、同版本几台捆一起)是 IRF2;纵向合体(把接入交换机当一块「远程板卡」并进主设备)是 IRF3,只有部分 EI 系列支持。
这是两家名词对照表,混着用设备的时候可以参考下:
技术 | 华为 | 华三(H3C) |
盒式交换机堆叠 | iStack | IRF(IRF2 横向) |
框式交换机集群 | CSS | IRF(不分盒式框式) |
纵向虚拟化 | SVF | IRF3(部分 EI 系列) |
堆叠分裂双主检测 | MAD | MAD(BFD MAD 常用) |
跨设备链路聚合 | M-LAG | M-LAG |
一眼看全,就是下面这张图:

合体之后最直观的三个变化,也就是它的核心价值:
• 一个管理 IP、一套配置、一个系统 MAC——任意一台登录进去,全局都能管
• 配合跨设备 Eth-Trunk,链路全负载分担,不再有 STP 那条「闲置的半边」
• 新增设备自动同步主设备的系统和配置,即插即用
堆叠系统里有三个角色:主(Master)、备(Slave)、从(Standby)。谁当主,靠堆叠优先级定,数值越大越优先。配置的核心就几行:
# 盒式交换机组建 iStack(示意,S5700 一类)
[SW01] interface stack-port 1/1
[SW01-stack-port1/1] port interface xgigabitethernet 1/0/47 to xgigabitethernet 1/0/48 enable
[SW01-stack-port1/1] quit
[SW01] stack
[SW01-stack] stack member 1 priority 150 # 优先级调高,抢主用
堆叠线缆怎么连,分两种玩法:一是专用堆叠卡加高速堆叠线(带宽高、最稳,但得额外买卡);二是复用设备的万兆/40G 业务光口当堆叠口(不花钱,但占业务口、对光模块有要求)。小项目预算紧,业务口堆叠是主流;大项目要稳,老老实实上堆叠卡。
注意华为设备敲堆叠命令时会弹一句警告:「频繁修改优先级会导致堆叠分裂。」官方把风险都写明了——改优先级这事不能随便玩,玩脱了就是下面要讲的命门。
合体的好处是「省心」:一台设备好管,不用跑 MSTP、VRRP 那套复杂协议。但省心的代价,藏在「一个大脑」里。
三、堆叠的命门:脑裂
「一个大脑」是堆叠最大的优点,也是最大的雷。大脑一旦裂成两个,就是网络事故。
华为官方管这个叫「堆叠分裂」:堆叠系统稳定运行中,带电移出部分成员、或者堆叠线缆多点故障,一个堆叠系统变成多个堆叠系统。分裂出来的两套系统,IP 地址一样、MAC 地址一样(用的都是堆叠系统 MAC)。
两个一模一样的大脑同时在线,什么后果?全网 ARP 冲突、IP 冲突,二层环路和双管理面一起出现,轻则全网震荡,重则大面积断网。这就是传说中的「脑裂」,网络工程师的噩梦场景之一。
华为的应对叫 MAD(多主检测):堆叠分裂后,快速发现冲突,然后让竞争失败的成员设备把所有业务端口全部关闭,减少对网络的影响。注意「全部关闭」这四个字——不是优雅降级,是壮士断腕:宁可让半边设备躺平,也不能让两个大脑同时说话。
MAD 有四种检测方式,按项目条件选:业务口直连、Eth-Trunk 代理、管理网口、堆叠端口。原理大同小异——用一条独立链路定期互发心跳,堆叠链路断了、检测链路也断了,就判定双主,动手处置。
华三这边同样叫 MAD,分裂后的处置一个模子:竞争失败的 IRF 被禁用、除保留口外的业务口全关,官方 MIB 文档里写得明明白白。华三项目里最常用的是 BFD MAD——拿一个 VLAN 接口跑 BFD 心跳做检测,查状态用 display mad verbose。分裂时的症状两家也完全一样:ARP 风暴、路由震荡、MAC 漂移形成环路。
我讲一个真实的坑:一个园区核心,堆叠组好了,业务跑得稳,但施工时图省事,没配 MAD。某天堆叠线缆被施工队碰松了,两台核心当场脑裂,全网 ARP 风暴,业务瘫了半个多小时,结果是机房师傅挨个把备用机断电才压下去。
⚠ 配堆叠,MAD 不是可选项,是必选项。华为官方文档的原话是「请在堆叠组建完成之后进行双主检测的配置」。而且配完一定要演练一次:拔掉堆叠线,看抑制策略是不是真的生效。没演练过的 MAD,等于默认它不会生效。
四、M-LAG:联手,两个脑子各自清醒
M-LAG 全称跨设备链路聚合,是堆叠的另一条路。两台交换机保持完全独立的控制面,各自有自己的大脑;只在数据面上联手,让对端设备以为是在跟一台交换机打交道。
回到卡车的比方:两辆独立卡车,各有一个司机,但并排跑在同一条专用道上,对外看起来像一条更宽的车道。一辆抛锚,另一辆照跑,互不拖累。
它的关键零件就三个:
• peer-link:两台设备之间的一条(或多条聚合)直连链路,用来交换协商报文、同步状态、必要时传递流量——这是「联手」的那根手牵手的线
• DFS Group:把两台设备划进同一个组,编号一致才配对成功,再比优先级定主备(主备只影响控制,流量照常双活)
• M-LAG 成员口:两台设备上分别接对端的 Eth-Trunk,对端设备看过来是一台设备的一个聚合口
华为命令大概是这么个结构(示意,具体以机型文档为准):
# 两台设备都配,DFS group 编号要一致
<SWA> system-view
[SWA] dfs-group 1
[SWA-dfs-group-1] peer-link 1 # 把 Eth-Trunk1 配成 peer-link
[SWA-dfs-group-1] quit
# 用户侧 Eth-Trunk 绑进 DFS group,m-lag-id 两端必须相同
[SWA] interface eth-trunk 2
[SWA-Eth-Trunk2] dfs-group 1 m-lag 3
华三也支持 M-LAG,机制和华为一个思路:peer-link 握手 + keepalive 心跳 + MAD 防双主,再配上华三自己的 DRCP 协议做跨设备聚合协商,查状态用 display m-lag summary。两家命令不一样,但「两个脑子联手」的骨架一模一样。
有人会问:M-LAG 的两台设备靠 peer-link 连着,peer-link 断了怎么办,不也变成两个大脑吗?会,这种情况华为也有防护——M-LAG 自带双主检测(dual-active detection),peer-link 断开时通过独立的心跳链路判断,让备设备降级、关闭成员口,避免两个大脑同时对外。也就是说,堆叠怕的「脑裂」,M-LAG 一样防,而且因为控制面本来就独立,防起来代价更小。
和堆叠最大的区别,一句话:M-LAG 的两台设备,脑子是分开的。这个区别带来一串连锁好处,也是华为官方现在明确「推荐 M-LAG」的根本原因。
五、堆叠与 M-LAG对比表
下面这张表不是我自己拍的脑袋,是华为 CloudEngine 官方文档《堆叠与 M-LAG 的对比》里的结论,我按要点重新排了序:
对比维度 | 堆叠 | M-LAG(华为推荐) |
可靠性 | 控制面集中,故障可能在成员间扩散 | 控制面独立,故障域隔离 |
配置复杂度 | 简单,逻辑上一台设备 | 一般,两台设备分别配 |
升级中断 | 相对长:快速升级也要 20 秒到 1 分钟 | 短:秒级中断,还能一台一台升 |
性能 | 主设备控制面管所有成员,CPU 载荷加重 | 成员独立转发,CPU 载荷不变 |
网络设计 | 简单,逻辑单节点 | 复杂些,逻辑双节点 |
这张表里,最能决定选型的就一行:升级中断时间。堆叠快速升级,典型组网下业务中断 20 秒到 1 分钟,还跟业务量强相关;M-LAG 是秒级中断,而且可以两台设备分别升级——升级 A 的时候 B 扛着,升完 A 再升 B,业务几乎无感。
其余的维度都好理解,唯独「控制面」这个抽象词值得再钉一遍:堆叠的脑子只有一个,出了毛病(软件 bug、进程异常)可能带着所有成员一起翻车;M-LAG 两个脑子各自独立,一个出问题,另一个不受影响。这就是「故障域隔离」四个字在底层的意思。
华为官方文档里的立场非常明确:对比表标题下就写着「推荐采用 M-LAG 方式组网」。
六、堆叠与M-LAG到底怎么选
官方推荐 M-LAG,不等于所有场景都无脑上。堆叠到今天还有一席之地,因为它有一个 M-LAG 给不了的东西:省心。逻辑上一台设备,配置、维护、排障的复杂度直接减半,对维护力量不足的小团队,这是实打实的好处。
我的选型思路,就盯两条硬指标:
你的场景 | 选谁 | 理由 |
升级中断不能忍(医院、金融、数据中心) | M-LAG | 秒级中断 + 滚动升级,业务不落地 |
维护力量弱、要简单省心 | 堆叠 | 逻辑单节点,不用跑 MSTP/VRRP,一个人能管 |
接入层、端口密度扩展 | 堆叠 | 多台盒式合成一台,扩容即插即用 |
核心层、东西向流量大、要独立升级 | M-LAG | 控制面隔离 + 成员独立转发,性能更好 |
预算和端口有限、又要设备级冗余 | M-LAG | 不用堆叠卡,peer-link 占几个口就能起 |
我归纳成一句话,方便项目上给用户讲:
「合体」图的是省心,「联手」图的是稳妥和能在线升级。
业务越重要、越不能停,越该往 M-LAG 靠;
网络越简单、维护人手越少,堆叠反而更合适。
还有个现实考量:M-LAG 两台设备要分别配置,配置一致性、日常同步都得自己盯,维护复杂度确实上去了。所以华为官方在对比表里也写得很实诚——M-LAG「可接受增加一定程度的维护复杂度」。这话的意思是:想要更高的可靠性,就得付出更多的维护心思,天底下没有白捡的高可靠。
查状态的命令也记一下:
# 华为:堆叠状态
display stack # 看成员、角色、优先级
display stack configuration
# 华为:M-LAG 状态
display dfs-group # 看配对、主备、peer-link 状态
display m-lag troubleshooting
# 华三:IRF / MAD / M-LAG 状态
display irf # 看 IRF 成员、拓扑
display mad verbose # 看分裂检测状态
display m-lag summary # 看 M-LAG 系统、成员口状态
七、
总结堆叠是把两台交换机合成一个脑子(省心但有脑裂的风险),M-LAG 是两个脑子联手干活(稳妥、能在线升级,但要分别维护)。选型先问自己——升级能不能中断、维护人手够不够。
注:转载文章来自于网络,版权归原作者或企业所有,侵删!