
1. 为什么网络工程师迟早要面对跨厂商端口聚合先说个场景公司核心机房里一台 H3C S5560 做汇聚下联几台华为 S5720 做接入中间跑着 VLAN 10 的办公网和 VLAN 20 的服务器网。某天业务部门反馈上网偶尔卡一下排查半天发现是两根千兆线只走了一根另一根链路处于阻塞状态。原因很简单——端口聚合没做STP 把冗余链路给 block 了。这不是个例。实际项目里H3C 和华为交换机混用的情况太常见了尤其是政企、教育、中小型数据中心常常是上一批设备是 H3C下一批招标买了华为或者反过来。而端口聚合Link Aggregation也叫 Eth-Trunk、Bridge-Aggregation是组网绕不开的基础操作把多条物理链路绑成一条逻辑链路既能提升带宽又能做链路冗余。可一旦碰上跨厂商组网很多人就懵了——两边命令不一样、模式叫法不一样、甚至协商机制都有差异。这篇文章就把 H3C 和华为交换机端口聚合配置这件事从头到尾讲透。内容包括两边协议和术语的对应关系、手工聚合与 LACP 模式的配置命令、跨厂商对接时的关键注意事项、以及我在实际割接中踩过的坑。适合刚入门网络工程师、以及那些平时只配同厂商设备、突然要面对混编环境的同行参考。先说结论免得你看一半被绕晕H3C 和华为在端口聚合上只要选对模式、统一速率双工、不要混用标准跨厂商配置完全可以做而且稳定性没问题。但细节上有一堆坑下面一个个拆。2. 配置前必须搞清楚的协议与术语对应关系2.1 同样的东西两家叫法完全不同端口聚合这个技术IEEE 802.3ad 定义的是标准 LACPLink Aggregation Control Protocol但两家设备在命令行里对聚合口的称呼不一样项目H3C华为聚合接口名称Bridge-Aggregation二层/ Route-Aggregation三层Eth-Trunk聚合接口编号Bridge-Aggregation 1Eth-Trunk 1成员接口加入方式port link-aggregation group 1eth-trunk 1LACP 模式dynamic动态聚合lacp动态 LACP手工模式static静态聚合manual手工负载分担查看聚合状态命令display link-aggregation summarydisplay eth-trunk 1你看本质是同一个东西但命令关键字完全不同。如果你拿 H3C 的习惯去敲华为的机器或者拿华为的习惯去敲 H3C 的机器第一关就过不去。更要命的是两家对静态聚合和动态聚合的定义有细微差别。H3C 的静态聚合指的是手工指定成员口、不跑 LACP 协议华为的manual也是这个意思。H3C 的动态聚合就是跑 LACP华为的lacp同理。这块概念是对得上的没问题。2.2 二层聚合与三层聚合的选择逻辑端口聚合分两种二层聚合和三层聚合区别在于聚合口工作在链路层还是网络层。二层聚合聚合口是一个二层接口可以划入 VLAN、配 trunk 属性用于交换机之间的透传或者交换机到防火墙/路由器的透明模式。这是最常见的用法。三层聚合聚合口是一个三层接口直接配 IP 地址用于路由模式对接比如交换机上行到核心路由器或者两台三层交换机之间跑路由。H3C 里需要先创建 Bridge-Aggregation 或 Route-Aggregation 接口再把物理口加入。华为里统一用 Eth-Trunk但通过接口类型来区分是二层还是三层——如果先创建 Eth-Trunk 并直接配 IP它就是三层口如果把它加进 VLAN 或配 trunk它就是二层口。这一点跨厂商对接时特别容易出问题。你如果在华为侧先给 Eth-Trunk 配了 IP又在同一台交换机上把它划进 VLAN那配置会直接报错。反过来 H3C 更严格创建 Route-Aggregation 之后物理口只能走三层。提示跨厂商配置前先想清楚这个聚合口到底是二层还是三层。我的建议是交换机之间跑 VLAN 透传用二层聚合交换机与路由器/防火墙做路由对接用三层聚合。二三层选错了后面所有配置都白做。2.3 成员口硬性条件速率、双工、类型必须一致端口聚合不是随便拉两根线绑一起就行。IEEE 802.3ad 标准里有硬性要求两家设备都会校验成员口速率必须一致。千兆口只能跟千兆口聚合不能千兆加百兆混绑部分高端框式设备支持 Mix 速率聚合但不是默认功能低端盒式基本不支持。双工模式必须一致。全双工对全双工不能一个全双工一个半双工。成员口必须是同类型接口。都是电口就都是电口都是光口就都是光口不能电口光口混绑。成员口不能配置了其他业务。比如一个口已经做了镜像目的口、或已经加入了别的聚合组那肯定不能再次加入。这些条件在配同厂商设备的时候设备会自动检查并报错但跨厂商对接时因为两台设备各自检查自己的如果线缆或模块问题导致一端协商成千兆另一端协商成百兆聚合状态即使 Up 了也可能会有丢包。所以物理层检查永远是第一步。在实际项目里我见过太多配了聚合结果还是不通的案例查到最后是某一端的光模块速率协商异常。所以我会在聚合配置前先做一遍物理检查两端速率、双工是否一致光功率是否正常光纤收发是否接反。3. 同厂商配置实操先把基础夯实3.1 H3C 手工静态聚合配置步骤H3C 的静态聚合也就是手工聚合适用于对端设备不支持 LACP 的场景或者你明确知道链路两端必须强制绑定的场景。配置流程分三步第一步创建二层聚合接口system-view interface Bridge-Aggregation 1 port link-type trunk port trunk permit vlan 10 20 quit这里把 Bridge-Aggregation 1 配成 trunk透传 VLAN 10 和 20。如果你的场景是 access 口那就配port link-type access和port access vlan 10。第二步把物理口加入聚合组interface GigabitEthernet 1/0/1 port link-aggregation group 1 quit interface GigabitEthernet 1/0/2 port link-aggregation group 1 quit注意加入聚合组之前物理口上不要配置任何业务命令。H3C 会检查如果物理口上已经有配置加入聚合组时会报错需要先清掉。第三步查看聚合状态display link-aggregation summary看到 Aggregate Interface 的状态是 Up成员口都 Selected就说明聚合成功了。3.2 H3C 动态 LACP 聚合配置步骤动态聚合跑 LACP 协议两端会自动协商一个口断了会自动从聚合组里摘除比手工聚合更智能。H3C 的动态聚合配置system-view interface Bridge-Aggregation 1 port link-type trunk port trunk permit vlan 10 20 link-aggregation mode dynamic quit interface GigabitEthernet 1/0/1 port link-aggregation group 1 quit interface GigabitEthernet 1/0/2 port link-aggregation group 1 quit关键区别就一行link-aggregation mode dynamic。这一行配置在聚合接口下而不是物理口下。如果漏了这行即使你在物理口上配了port link-aggregation group 1两边默认也还是静态模式协商不起来。注意H3C 动态聚合我建议只和同样支持 LACP 的设备对接比如华为的 LACP 模式、或者标准交换机。如果对端是个傻瓜交换机或者不支持 LACP那就老老实实用静态聚合。3.3 华为手工负载分担与 LACP 配置步骤华为的命令风格和 H3C 不一样但逻辑类似。先是手工负载分担模式system-view interface Eth-Trunk 1 port link-type trunk port trunk allow-pass vlan 10 20 quit interface GigabitEthernet 0/0/1 eth-trunk 1 quit interface GigabitEthernet 0/0/2 eth-trunk 1 quit然后是 LACP 模式system-view interface Eth-Trunk 1 mode lacp port link-type trunk port trunk allow-pass vlan 10 20 quit interface GigabitEthernet 0/0/1 eth-trunk 1 quit interface GigabitEthernet 0/0/2 eth-trunk 1 quit华为这里有个容易踩的细节mode lacp这条命令要求先配置再配置端口类型和 VLAN。如果先配了port link-type trunk再敲mode lacp某些版本会提示错误或者模式切换不干净。4. 跨厂商对接H3C 和华为端口聚合实战配置4.1 跨厂商对接时模式选型的核心逻辑跨厂商配置端口聚合最重要的一件事是确定用哪种模式。我的结论很直接首选 LACP 动态聚合。因为 LACP 是 IEEE 标准协议H3C 和华为都完整支持协商过程透明可控两端状态能通过命令直观看到。而且 LACP 模式下一端拔线另一端能快速感知并切换比手工聚合感知快。次选手工静态聚合。如果对端设备老、不支持 LACP、或者你明确知道两根线必须同时转发那用手工静态聚合也完全没问题。但要注意手工聚合没有协商过程两端各自的 member 口必须手动保持一致一旦有一端漏加了一个口这个口不会转发流量但设备不报错排查起来比较隐蔽。实际项目里我遇到过一种情况用户现场有两台交换机一台是 H3C 的老款 S5120一台是华为 S5720中间通过光模块互联。我一开始想配置 LACP 动态聚合结果发现 H3C 那台老款设备系统版本太旧LACP 协议实现有点问题协商总是失败。后来改用了手工静态聚合两边配置一敲就通了。所以我的建议是先试 LACP不行就退到手工不要纠结。4.2 完整配置实例H3C S5560 与华为 S5720 跨厂商二层聚合下面给一个完整的可直接套用的配置模板。假设场景是H3C S5560 作为汇聚交换机连接华为 S5720 作为接入交换机中间两根千兆光纤需要透传 VLAN 10办公网和 VLAN 20服务器网。H3C S5560 侧配置LACP 动态聚合system-view sysname H3C-Core interface Bridge-Aggregation 1 description Link-to-Huawei-Access port link-type trunk port trunk permit vlan 10 20 link-aggregation mode dynamic quit interface Ten-GigabitEthernet 1/0/1 port link-aggregation group 1 quit interface Ten-GigabitEthernet 1/0/2 port link-aggregation group 1 quit save force华为 S5720 侧配置LACP 模式system-view sysname Huawei-Access interface Eth-Trunk 1 description Link-to-H3C-Core mode lacp port link-type trunk port trunk allow-pass vlan 10 20 quit interface GigabitEthernet 0/0/1 eth-trunk 1 quit interface GigabitEthernet 0/0/2 eth-trunk 1 quit save配置完成后两边的验证命令H3C 侧用display link-aggregation summary华为侧用display eth-trunk 1。正常情况应该看到成员口状态是 SelectedH3C或 Negotiate华为聚合口状态是 Up。4.3 跨厂商对接的协商机制与注意事项跨厂商配置端口聚合原理上没有任何障碍因为 LACP 是标准协议只要遵循标准实现两台设备就能正常协商。但是实际对接中还是有几个坑值得特别注意坑一LACP 系统优先级不一致导致主控端不同但功能无影响LACP 协商时会比较两端设备优先级优先级高的成为主动端主动端的成员口状态决定最终 Selected 还是 Standby。两家设备默认系统优先级都是 32768此时会比较 MAC 地址MAC 小的成为主动端。不管谁成为主动端只要两端物理链路都正常最终结果都是所有成员口变为 Selected。只有在成员口数量超过最大支持数时才有意义去调系统优先级指定哪些口优先。坑二两端成员口数量不一致如果你在 H3C 侧加入了两个口华为侧只加入了一个口那华为侧那个口会正常转发H3C 侧两个口的状态就会有一个变 Standby。结果是物理上明明连着两根线实际只有一根在转发。这就是为什么配置完成后一定要核对两端成员口数量一致。坑三VLAN 放通列表必须完全一致这是跨厂商对接里最隐蔽的坑。H3C 的port trunk permit vlan 10 20和华为的port trunk allow-pass vlan 10 20功能相同但如果一端放通了 VLAN 10 20 30另一端只放通了 VLAN 10 20那 VLAN 30 的流量在某一段会被直接丢弃而且两端设备都不会报错。坑四PVID 必须一致H3C 默认 PVID 是 VLAN 1华为默认也是 VLAN 1。如果你在某一端把 PVID 改了而另一端没改那不打标签的流量比如某些打印机、摄像头就会在两端 VLAN 不一致的情况下转发异常。跨厂商对接时PVID 必须同步。5. 实战中的排错链路聚合配好却不通的完整排查思路端口聚合配好了状态也显示 Up 了但业务就是不通。这个问题在跨厂商环境里出现频率极高。下面是我在实际割接中反复验证过的排查链路每一步都对应具体的命令和判断标准。5.1 第一步确认物理层没问题先不要急着看聚合配置。物理层有问题聚合层做得再完美也是白搭。在两台设备上分别执行H3Cdisplay interface brief或display transceiver interface Ten-GigabitEthernet 1/0/1华为display interface brief或display transceiver interface GigabitEthernet 0/0/1确认两端物理口状态都是 Up速率、双工一致。如果是光口看光功率是否在正常范围内。我遇到过一种情况光模块老化导致光功率偏低物理口状态虽然是 Up但实际有丢包查了很久才发现是光模块问题而不是聚合配置问题。5.2 第二步确认聚合口状态与成员口状态这一步是关键。聚合口 Up 不等于成员口都在正常工作。很多人在这一层忽略细节。H3C 执行display link-aggregation summary关注每个聚合组的 Selected 端口数和 Unselected 端口数。正常情况 Selected 端口数应该等于你配置的成员口数。如果有一个口是 Unselected说明这个口没被选上原因可能是速率不一致、双工不一致、或者对端没有加入对应聚合组。华为侧执行display eth-trunk 1关注每个成员口的状态。正常应该是 Negotiate 状态。如果某个口是 Standby说明这个口没有参与转发。如果两端成员口状态都是正常的那就进入下一步。5.3 第三步检查 VLAN 配置与实际流量路径这个坑最常见也最隐蔽。聚合口状态正常但 VLAN 配置不一致流量还是不通。在两台设备上分别查看H3Cdisplay port trunk或display vlan 10华为display port vlan trunk或display vlan 10确认两端 trunk 放通的 VLAN 列表完全一致PVID 一致。尤其注意有些交换机默认放通 VLAN 1如果你的业务 VLAN 是 10 和 20一定要确认两端都显式放通了 VLAN 10 和 20不要漏。我遇到过一个案例华为侧 Eth-Trunk 放通了 VLAN 10 和 20但 H3C 侧只把 Bridge-Aggregation 1 配成了 trunk忘记输入port trunk permit vlan 10 20结果默认只放通 VLAN 1业务直接断。排查到最后发现是 H3C 侧的 permit 列表问题而不是聚合本身的问题。5.4 第四步抓包确认 LACP 报文交互如果前面三步都正常还是不通那就要看 LACP 协商细节了。这一步对于跨厂商环境尤其重要因为不同厂商对 LACP 的实现细节可能有微小差异。在 H3C 上执行debugging link-aggregation或者在华为上执行debugging lacp查看 LACP 报文交互情况。正常的 LACP 协商过程应该是两端互发 LACPDU报文里包含系统优先级、系统 MAC、端口优先级、端口号等信息协商成功后成员口变为 Selected。如果你发现两端一直在互发报文但状态始终无法稳定那有可能是两端 LACP 模式不匹配。一端是动态 LACP另一端是手工静态聚合那永远协商不起来。两端版本对 LACP 协议的实现有差异。遇到这种情况最简单的解决方案就是退回到手工静态聚合绕过协议协商。5.5 第五步检查生成树和策略路由最后一步往往被人忽略。端口聚合配好了、VLAN 也放通了、物理层也正常但业务就是不通那问题可能在生成树STP或路由策略上。在跨厂商对接场景里STP 的兼容性问题比较典型。H3C 默认生成树模式是 MSTP华为默认生成树模式也是 MSTP但实际环境里可能一端被改成了 RSTP一端是 MSTP导致 BPDU 处理方式不一致某些端口被阻塞。检查方法H3Cdisplay stp brief华为display stp brief确认两端端口状态都是 Forwarding 而不是 Blocking。如果发现 Blocking那就检查生成树模式是否一致或者直接在互联端口上配置边缘端口H3Cstp edged-port华为stp edged-port enable来避免不必要的阻塞。6. 高级场景三层聚合与跨厂商混合组网6.1 三层聚合的适用场景与配置要点前面讲的都是二层聚合主要解决 VLAN 透传问题。但有些场景需要三层聚合典型场景是两台三层交换机之间做路由互联通过三层聚合提供冗余和带宽。交换机上行到核心路由器或防火墙使用三层聚合口跑路由协议。三层聚合配置比二层复杂一点但核心逻辑一样。下面给一个 H3C 与华为三层聚合对接的配置示例。场景H3C S5560 与华为 S5720 之间跑三层聚合互联地址 192.168.100.0/30。H3C 侧system-view interface Route-Aggregation 1 description Link-to-Huawei-Router ip address 192.168.100.1 255.255.255.252 quit interface Ten-GigabitEthernet 1/0/1 port link-aggregation group 1 quit interface Ten-GigabitEthernet 1/0/2 port link-aggregation group 1 quit华为侧注意华为不需要显式创建三层 Eth-Trunk直接配 IP 即可system-view interface Eth-Trunk 1 description Link-to-H3C-Core ip address 192.168.100.2 255.255.255.252 quit interface GigabitEthernet 0/0/1 eth-trunk 1 quit interface GigabitEthernet 0/0/2 eth-trunk 1 quit6.2 三层聚合跨厂商对接的坑三层聚合跨厂商对接有两个需要特别注意的坑。坑一H3C 的 Route-Aggregation 和 Bridge-Aggregation 不能混用H3C 的设备里如果你先创建了 Bridge-Aggregation 1又把物理口加入了 group 1那就不能再把这个 group 变更为 Route-Aggregation。需要先删除原来的聚合口重新创建。所以三层聚合的场景H3C 侧要先创建 Route-Aggregation再添加物理口。坑二华为 Eth-Trunk 的二三层类型切换有额外验证华为的 Eth-Trunk 是通过是否配置 IP 来决定二三层类型的。如果你先给 Eth-Trunk 配了port link-type trunk然后又想改成三层必须先把二层配置全部清掉否则系统会提示错误。反过来同理。跨厂商对接时先明确二三层角色再一次性配置到位避免中间状态导致业务闪断。6.3 混合组网案例H3C 核心 华为接入 锐捷汇聚这个案例是我实际做过的直接分享出来给大家参考。网络拓扑H3C S7506E 作为核心下联锐捷 S5750 汇聚汇聚下联华为 S5720 接入。核心到汇聚、汇聚到接入之间都做了端口聚合。这里有个关键点核心到汇聚用的是 H3C 到锐捷的跨厂商聚合H3C 动态 LACP 对锐捷的 LACP汇聚到接入用的是锐捷到华为的跨厂商聚合锐捷静态聚合对华为手工负载分担。为什么这么选因为当时锐捷和华为之间 LACP 协商有个 bug握手不稳定干脆用了手工静态负载分担反而最省事。这个案例说明一个问题跨厂商聚合的选型不是一成不变的。真正到了现场要结合设备版本、已知 bug、物理条件灵活选择。我的优先级通常是LACP 动态 静态手工 使用各厂商特有的堆叠/集群技术。后者虽然功能更强大但跨厂商完全无法互通只适合单厂商组网。7. 我踩过的最值得分享的几个坑7.1 H3C 版本差异导致的 LACP 协商失败之前做项目遇到一台 H3C S5120 V2 和华为 S5700 对接配置完全正确但 LACP 协商就是不成功。查到最后发现是 S5120 V2 的某一旧版本对 LACP 协议状态机的实现有 bug升级固件后问题解决。这种情况在跨厂商对接时很难通过配置层面解决只能升级版本或改用静态聚合。7.2 华为 Eth-Trunk 成员口上残留配置导致加入失败华为交换机如果某个物理口上已经配置了 port link-type access 或其他业务加入 Eth-Trunk 时会提示错误。很多人排错时卡在这——明明配置命令对了但就是加不进去。解决办法是在物理口上执行undo port link-type清空端口类型再重新执行eth-trunk 1。H3C 也有类似问题加入聚合组前需要确保物理口是干净状态。7.3 跨厂商聚合时因为系统优先级问题产生的困惑之前说过LACP 协商时两端系统优先级默认都是 32768此时会比较 MAC 地址。这在功能上没有任何问题但很多初学者会在查看状态时发现主动端是某一端然后误以为配置有问题。其实只要两端成员口都是 Selected主动端是谁根本无所谓。只有在成员口数量超过设备支持上限时才需要手动调整系统优先级来控制哪些口优先成为 Selected。7.4 千万记住配完必须保存配置这个听起来像废话但在我实际踩坑经历里因为忘记保存配置导致重启后聚合配置丢失的项目至少有三四个。H3C 用save force华为用save配完立即执行别拖。有些工程师习惯全部配完再统一保存结果中途断电或者设备重启前面配了两小时的聚合配置全没了。7.5 跨厂商聚合配置完成后建议做割接验证新配置的端口聚合尤其在跨厂商环境里强烈建议做一次完整的割接验证拔掉一根成员线看业务是否依然正常聚合口是否自动切换。插回一根看成员口是否自动恢复并进入 Selected 状态。同时拔掉两根看业务是否中断应该中断因为没有备用链路了。对端重启看 LACP 协商是否自动恢复。这些验证动作看似简单但能发现大量配置隐患。我做过一个项目验证时发现拔掉一根线后业务时通时不通查下去发现是对端设备另一个成员口的光模块松动速率协商成了百兆导致链路状态不稳定。如果没做验证这个隐患可能要到业务峰值时才会暴露。最后再分享一个实战中的小技巧做跨厂商端口聚合配置前我强烈建议先在两端设备上分别抓一份display输出存档尤其是display link-aggregation summaryH3C和display eth-trunk 1华为。配置出问题的时候这两份存档能帮你快速定位是配置问题、协商问题还是物理问题。另外如果你经常要操作 H3C 和华为两种设备建议自己整理一份命令对照表把两台设备的聚合配置命令、查看命令、调试命令放一起。我自己的对照表里除了端口聚合还有 VLAN 配置、静态路由、ACL、DHCP 等常用命令每次跨厂商排错都能省不少时间。端口聚合这个东西原理不复杂但跨厂商实施时细节特别多。只要把模式一致、速率一致、VLAN 一致这三个核心原则记牢把上面的排错链路走一遍大部分问题都能解决。希望这篇实战经验对你有用。