
做网络维护的朋友十有八九都遇到过这种场景服务器上明明装了两块千兆网卡业务也确实在喊带宽不够可因为交换机和服务器之间的链路协商不上最后只能一根线在跑业务另一根线躺在机柜里做备胎更糟的是跑业务那条线一旦被误拔、被老鼠咬断、或者光模块突然掉线业务说断就断连个自动切换的机会都没有。华三交换机上的二层链路聚合也就是常说的二层聚合、端口汇聚、Bridge-Aggregation就是专门用来同时解决“带宽不够”和“单点故障”这两个问题的。这篇文章我打算从原理讲到实战把华三交换机上的二层链路聚合一次说透什么情况下该用静态聚合什么情况下该上动态 LACPBridge-Aggregation 接口和成员端口到底是什么关系配置完以后怎么看状态、怎么排错。适合两类人看一类是刚接触华三或 HPE 网络设备、想快速上手做接入聚合的新人另一类是已经在用二层聚合但总被 Selected、Unselected 状态折腾得头疼的运维老手。1. 华三交换机二层链路聚合到底在解决什么问题1.1 带宽翻倍的底层逻辑链路聚合的核心思想很简单把多条物理链路捆成一条逻辑链路。以最常见的四口千兆聚合为例四个 GigabitEthernet 端口加起来逻辑带宽就是 4Gbps。这里要留个心眼4Gbps 是理论总带宽实际转发时流量会按哈希散到四条物理链路上能不能跑满取决于你的数据流多不多、哈希效果好不好。用生活化的话说传统单链路就像一条单车道公路车多了只能堵着链路聚合则是把四条单车道合并成一条四车道的“逻辑公路”只要有车流分布合理总通过能力自然上去了。但很多人忽略了一点链路聚合最大的价值其实不只是带宽而是可靠性。四条物理链路里断掉一两条只要还有一条或者两条处于 Selected 状态业务就不会中断转发面上感觉不到任何切换动作。这一点在生产环境里比带宽叠加更值钱尤其现在很多业务是 7x24 小时跑的一分钟的中断都可能造成事故。1.2 静态聚合和动态 LACP 怎么选华三交换机上的二层聚合分为两种模式静态聚合和动态 LACP。静态聚合两端只要在物理上起来并且都在聚合组里就会被选为 Selected没有协商报文配置也比较简单。动态 LACP两端通过 LACPDU 报文协商只有协商成功、参数匹配的端口才会进入 Selected 状态对端异常时能更快感知和调整。我实际用下来的建议是如果对端设备是华三交换机或者支持标准 LACP 的设备优先用动态 LACP如果对端是老旧设备或者你自己都说不清对端支不支持 LACP那就用静态聚合先把业务跑通再说。这里有个容易踩的坑静态聚合和动态 LACP 不能混用。比如本端配了动态 LACP对端却配了静态聚合两边协商不上端口会一直停在 Unselected业务直接不通。刚入门的朋友往往先配置一个四口聚合结果发现只有部分端口是 Selected十有八九就是模式不匹配。1.3 二层聚合和三层聚合的区别链路聚合从接口类型上又分二层聚合和三层聚合。二层聚合是把物理端口捆成一个二层逻辑接口逻辑接口上可以配置 Access、Trunk、Hybrid跑 VLAN、STP 这些东西典型应用是接入交换机到核心交换机之间的互联、服务器接入等等。三层聚合则是把物理端口捆成一个三层路由口直接给逻辑口配置 IP 地址常用于路由器之间或三层交换机之间的互联。本文主要聊二层聚合但如果你把后面的原理看懂了三层聚合的差异其实只在于把 BAGG 接口当路由口用成员端口的加入方式几乎一模一样。所以按这个思路往下推学一套配置能覆盖好几种场景。2. 配置前必须要吃透的几个关键概念2.1 Bridge-Aggregation 到底是什么华三设备上二层聚合逻辑接口叫 Bridge-Aggregation简称 BAGG。你创建了一个 Bridge-Aggregation 1 接口然后把物理端口一股脑加进 group 1这些物理端口就都归 BAGG1 管。平时配 VLAN、配 Trunk、配 QoS全部在 BAGG1 上操作物理端口上不单独配业务。打个比方BAGG1 是组长两个成员端口是组员。对外谈业务、谈 VLAN 的授权都由组长出面组员只负责干活。华三的配置哲学也一直是这样把你对逻辑链路的要求都集中到聚合口上避免在成员端口上散配导致状态不一致。需要特别注意的是成员端口加入聚合组之后端口原有的独立配置会失效或者干脆不允许你配置。比如端口已经用port access vlan 10配了 VLAN想再把它加到聚合组里很多版本会直接报错或要求你先恢复默认配置。所以最佳实践是先把物理端口恢复默认再加聚合组再在 BAGG 接口上做业务配置。2.2 Selected 和 Unselected 状态是怎么回事判断链路聚合是否生效最关键的就是看端口状态。华三设备上每个聚合成员端口只有两种有效状态Selected 和 Unselected。Selected 表示端口参与数据转发是真正“干活”的端口Unselected 表示端口处于备份或异常状态不参与转发。端口最终进入哪种状态取决于一组非常“硬”的条件物理端口是否 up、速率和双工是否一致、两端聚合模式是否匹配、VLAN 配置是否一致、LACP 协商是否成功。只要有一个不满足端口就会被判为 Unselected。这里也解释了很多人的一个误解以为只要把端口加进聚合组四条链路就一起工作了。实际上如果四条链路的速率不一致比如两条千兆两条百兆在多数机型上百兆那两条根本进不了 Selected最终带宽叠加的效果也达不到预期。所以拿到一台新设备时第一件事就是确认所有成员的物理参数一致。2.3 流量怎么分流哈希算法链路聚合不是把数据包像水流一样平均劈开而是根据哈希算法把一个个数据流“归类”到某条物理链路上。二层聚合的默认哈希维度一般是源 MAC 和目的 MAC如果是三层流量要参与可以再加上源 IP、目的 IP、端口号等。哈希的结果决定了某条流走哪个成员口。同一个流的所有报文会走同一条物理链路这就避免了乱序。但哈希也带来了一个现实问题如果业务里只有一两条大流量流所有报文最终的哈希结果可能都落在同一条链路上四条链路里的另外三条反而闲着。这时候光靠二层聚合是不够的你需要合理规划业务流数量或者在条件允许时让三层参与哈希把流拆得更细。哈希算法本身不分好坏关键看场景。两台交换机之间的互联如果主要流量是跨网段的大流量数据同步建议把三层哈希维度打开如果只是二层接入环境源目 MAC 往往也够用了。3. 实战配置两台华三交换机之间做四口聚合3.1 组网需求与规划做一张最典型的组网图核心交换机 CORE-SW 和接入交换机 ACC-SW 之间用四条千兆双绞线或四条千兆光口互联需要把四条链路聚合为一条逻辑链路放通 VLAN 10、20、30同时在故障情况下允许剩余链路继续工作。这个场景在企业园区网里非常常见。规划时有几个要点两台交换机都要选择支持二层聚合的物理端口不建议混合使用光口和电口尽量同速率同双工两端聚合模式保持一致本次先用静态聚合演示四根线最好不要全走同一个线槽尽量分散避免一次物理事故导致四条链路全断。四口聚合是最推荐的起步配置。四个口既能体现带宽叠加效果排错时又不像八口那么复杂。我第一次做生产聚合就是从两口开始练手跑通后才敢扩到四口。3.2 静态聚合配置命令逐条讲解先在 CORE-SW 上操作。第一步创建 Bridge-Aggregation 1把它设为 Trunk 口放通 VLANsystem-view interface Bridge-Aggregation 1 port link-type trunk port trunk permit vlan 10 20 30 quit第二步把四个物理口加入聚合组。在多数盒式交换机上口默认就是二层口如果你用的是 S5560 这类支持二层三层切换的机型需要先强制成 bridge 模式interface GigabitEthernet1/0/1 port link-mode bridge port link-aggregation group 1 quit interface GigabitEthernet1/0/2 port link-mode bridge port link-aggregation group 1 quit interface GigabitEthernet1/0/3 port link-mode bridge port link-aggregation group 1 quit interface GigabitEthernet1/0/4 port link-mode bridge port link-aggregation group 1 quit第三步回到 ACC-SW 上重复同样的配置只是提示符变成 ACC-SW。两端配置完成后正常情况下四端口应该全部为 Selected。这里有一个我踩过的小坑有些人在成员口上多打了一条port link-type trunk后又加到聚合组里结果提示配置冲突。正确做法是成员口只管加组业务配置全写到 BAGG1 上。3.3 配置完成了怎么验证验证命令最常用就三条display link-aggregation summary display link-aggregation verbose display interface Bridge-Aggregation 1display link-aggregation summary查看一共有几个聚合组、勾选了哪些成员、Selected 和 Unselected 数量。大致输出类似Bridge-Aggregation 1 S 4 4 0S 表示静态聚合四个端口已全部被选没有 Unselected。如果还看到不是 0 的 Unselected 数量就得去查具体原因。display link-aggregation verbose能看得更细它会展示每个成员端口的状态、速率、对端信息。排错时基本得靠它定位到底是哪条链路没协商上。display interface Bridge-Aggregation 1则是看逻辑接口本身的物理状态、协议状态以及收发包统计。验证阶段建议再做一次连通性测试从 ACC-SW 上 ping CORE-SW 上某个 VLAN 的三层网关地址或者直接找一台 PC 测跨 VLAN 通信。光看端口状态全绿不代表业务通真实流量才是最终答案。3.4 动态 LACP 模式的差异如果你决定用动态 LACP整个配置只多一行。在创建完 BAGG1 后先执行interface Bridge-Aggregation 1 link-aggregation mode dynamic port link-type trunk port trunk permit vlan 10 20 30 quit物理口加入聚合组的命令和静态聚合一模一样。同样地对端也必须配置为动态 LACP。配置完成后两端会周期性互发 LACPDU匹配成功后端口才进入 Selected。动态模式还有一个优势是支持限制最大或最小选中端口数比如lacp selected-port maximum 2用得比较少但当你需要做预留带宽时很有用。我在生产环境里曾经用过一个四口动态聚合故意限制最大选中数为 3这样即使四条链路全好也只有三条转发剩下一条做冷备避免两台设备之间链路上出现意料之外的带宽波动。当然这种情况不是通用需求大家按需使用。4. 配置过程中最常见的坑与排查实录4.1 端口加不进聚合组先查这三项第一项物理端口是否已经配置过其他业务。最常见的报错是端口已配置 VLAN、端口已加入镜像组、端口已跑 STP 边缘导致系统无法把它纳入聚合组。处理办法是先把端口恢复默认配置或者干脆清掉端口上的配置再重新加。第二项端口是否自动使能了 RRPP、ERPS 等环网协议。这些协议会把端口占为己有你再加聚合组就冲突了。对这种端口先把相关协议在端口上 undo 掉。第三项设备型号和接口板资源。主控板或接口板的聚合组资源被占满了端口自然加不进去。可以先用display link-aggregation summary看看现有聚合组数量确认设备规格是否够用。4.2 端口一直 Unselected对端模式不一致是头号嫌疑我前文特意强调过静态和动态不能混配实际排障中这确实是最常见的原因。遇到端口 Unselected先别急着怀疑硬件第一步是两台设备同时看聚合模式display link-aggregation verbose在输出里找到聚合模式字段确认两端是 Static 对 Static或者 Dynamic 对 Dynamic。如果两端不一致改一边让它们对齐。还有一种隐蔽情况对端链路本身是好的但一端的光模块是第三方兼容模块协商信息异常导致 LACP 收到的对端信息不对。这种问题在第三方光模块时代很常见建议优先换原厂模块测试。另外链路中间如果接了光端机或传输设备也可能改变 LACP 报文的一些参数导致协商成功但流量不稳定。4.3 聚合口和 STP、VLAN 的相爱相杀二层聚合口在 STP 眼里是一个逻辑端口STP 计算时不会把四条成员口当成四个端口这是好设计。但问题常常出在你把 BAGG1 配成了 Trunk放通了 VLAN 10 20 30却忘了对端也放通一样的 VLAN或者一端放通了 VLAN 40另一端没放结果 VLAN 40 的数据包在成员口上变成“半通不通”。VLAN 配置不一致导致的现象往往是ping 网关能通但跨交换机访问某些网段不通。排查时直接对比两端的聚合逻辑口确认两台设备实际放通的 VLAN 范围一致。STP 方面如果你在接入交换机上把 BAGG1 当普通 Trunk 口用建议根据规划打开或关闭边缘端口属性。有些聚合口一直 Blocking是因为 STP 计算认为存在环而管理员忘了确认拓扑规划。记住原则聚合口是逻辑口STP 只会聚合出一个角色但角色错误会卡住整个聚合口。4.4 光口到底该做聚合还是做主备这也是个高频问题。先说结论如果对端设备支持链路聚合且你确实需要叠加带宽那就做聚合如果你只需要冗余不指望带宽叠加做接口主备或简单的 Active/Standby 更省心。举个例子交换机 A 到交换机 B 之间有两根光纤一根走主路径一根走备份路径。如果做聚合正常情况下两条链路都在转发带宽翻倍断掉一条后剩余链路继续转发但负载分担比例自动变化。如果做主备主链路任何时候都在跑备链路只在主链路故障后接管带宽全程不叠加。实际选型还要看两端能力。对端是另一台华三交换机随便聚合对端是运营商的传输设备、光端机可能不支持 LACP用主备反而更稳妥。别为了“看起来高级”强行做聚合结果对端不支持自己给自己添堵。4.5 明明聚合了带宽却没翻倍这类问题我收到过不少“灵魂拷问”。最常见的原因是哈希粒度太粗、业务流太少。比如你拿一台服务器 iperf 单线程测速四口聚合测出来的速度往往只有一条链路的上限因为单线程大流量会被哈希到某一条物理链路上。解决思路有三个一是多跑几条流比如多线程 iperf或者让业务自己产生多条会话二是调整哈希模式把源 IP、目的 IP、端口号都加进哈希因子三是如果你测的是单流极限带宽那就必须承认链路聚合对单条流不叠加带宽叠加的是总吞吐量。调整哈希在聚合接口视图下配置就行示例interface Bridge-Aggregation 1 link-aggregation load-sharing mode source-ip destination-ip quit改完后用display link-aggregation load-sharing确认当前生效的哈希因子。我实测下来四口千兆聚合多线程跑到 3Gbps 以上是常态偶尔能到 3.5Gbps如果你看到只有 0.9Gbps基本可以认定是哈希没吃满或者有端口根本没 Selected。5. 更进一步的场景与日常维护建议5.1 跨设备聚合IRF 堆叠下的二层聚合很多高可用场景已经不再满足于单台交换机的聚合而是要求服务器双网卡分别接在两台交换机上任何一台交换机挂了业务都不中断。华三的实现方式是先做 IRF 堆叠把两台物理设备虚拟成一台逻辑设备然后在虚拟设备上配置跨设备的链路聚合。IRF 的基本配置思路是两台设备分别设置成员编号和优先级用专用堆叠线把 IRF-Port 连起来重启后两台设备合并为一台。完成堆叠后你创建的 BAGG1 成员口可以同时分布在原来两台设备的物理端口上。对服务器来说它看到的是一个逻辑交换机的两个端口按标准 LACP 协商即可。这套方案很成熟但对新手来说门槛不低。我的建议是IRF 配置前先把两台设备的软件版本对齐堆叠线尽量用高频线缆别用普通千兆口拉倒否则堆叠分裂时整个二层拓扑都会乱。做完跨设备聚合后要重点测试单台设备掉电的场景确认另一台设备上的成员口能快速接管转发。5.2 日常维护慢速追查状态必备命令速查表下面这张表是我在实际维护中几乎天天要用的命令按排查顺序整理用途命令什么时候用看聚合组摘要display link-aggregation summary最优先使用确认 Selected/Unselected 数量看聚合组详细display link-aggregation verbose定位具体端口状态和协商信息看逻辑口流量display interface Bridge-Aggregation 1确认逻辑口收发速率、错包、丢包看 LACP 报文统计display lacp statistics动态聚合时排查协商异常看哈希因子display link-aggregation load-sharing带宽不满时检查哈希配置清聚合组统计reset link-aggregation statistics需要重置计数重新观察时使用提醒一句reset类命令在生产环境务必先确认影响范围尤其是别在生产业务高峰期临时清统计容易误判故障。5.3 实验模拟器 HCL 的一点体会如果你手头没有真机华三官方的 HCL 模拟器可以拿来练手。我曾经在 HCL 上完整复现过两台交换机的四口二层聚合实验命令和真机基本一致只是模拟器的虚拟 CPU 负载比较高尤其当你创建多个 BAGG 组和多个 VLAN 后交换机启动会明显变慢。HCL 偶尔会报启动失败常见的提示和 VirtualBox 底层服务相关比如 virtualboxapi 之类。我的经验是先检查系统里是否装了其他版本的 VirtualBox卸载干净再装配套版本其次用管理员身份启动 HCL最后如果还起不来把 Windows 的 Hyper-V 关掉再试。这类环境问题大多数是虚拟化组件冲突和网络配置本身无关。模拟器里做二层聚合有一个好处你可以在没有业务压力的情况下反复训练排错流程比如故意把一端改成动态、一端改成静态看看端口状态如何变化这种练习在真机上很难放心搞。结尾的话从原理到实战从排错到扩展二层链路聚合这套东西说复杂也复杂说简单也简单。我个人这些年最大的体会是配置聚合的命令就那么几条真正让网络工程师翻车的地方几乎都在物理链路和两端设备的“配合细节”上——VLAN 没对齐、速率不一致、静态动态混用、光模块兼容性差。所以我每次在新环境上聚合都会坚持先把物理参数统一好再动手敲命令配置完成后再逐个端口看 Selected 状态最后用真实业务流量验证。如果你正准备在华三交换机上做二层聚合建议第一次配置时别贪多先拿两个端口练手跑通以后再扩到四口、八口。链路聚合不是非黑即白的功能它背后的哈希、状态机、协商机制值得你花时间慢慢琢磨。等你把这些细节吃透了再去看 IRF、跨设备聚合、MC-LAG 这些更高级的场景会发现很多思路其实是共通的。