拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

H3C与华为交换机端口聚合配置详解:从Bridge-Aggregation到Eth-Trunk

H3C与华为交换机端口聚合配置详解:从Bridge-Aggregation到Eth-Trunk

做网络运维这行,端口聚合大概是每个搞交换机的兄弟都绕不过去的基础操作。H3C叫Bridge-Aggregation,华为叫Eth-Trunk,叫法不一样,做的事是一件事:把交换机上几个物理口捆成一个逻辑口,带宽叠加、链路冗余,解决一根千兆光纤跑到跑满、公司一到下午全网卡成PPT的破事。我最早接触端口聚合配置是在一个接近两百人的项目现场,核心到接入一根千兆扛全部办公流量,交换机上明明还有一堆空闲电口,愣是不知道能捆起来用。后来学会配置,才觉得这功能应该写进教科书第一课。这篇文章不是单纯背命令,而是把H3C交换机和华为交换机的端口聚合放一起讲,适合三类人:正在做园区网接入或汇聚项目的集成兄弟、准备H3CNE/HCIA这类认证的考生、还有想系统搞明白链路聚合原理并少踩坑的运维新人。我会从原理、命令、对比、实战案例到排障思路一次性讲清楚。

1. 端口聚合到底在解决什么问题:先理解再动手

1.1 为什么不能简单粗暴多插几根网线

很多人一开始的想法很直接:一根千兆不够用,我再插一根不就行了?实际上不行。两根物理链路同时插在同一对交换机上,二层会形成环路,STP生成树协议一定会阻塞掉其中一根端口,等于白插。除非这两根线分别接到两台做了堆叠或集群的交换机上,否则普通多线不仅不提升带宽,还可能让网络拓扑变得复杂。端口聚合的出现就是为了绕开STP这个限制。它把多根物理链路抽象成一个逻辑口,对STP来说这是一个接口,不会被阻塞;从数据转发角度看,它可以把流量分散到不同的物理链路上,带宽翻倍的同时还自动具备冗余能力。一根线断了,剩下几根继续跑,业务最多卡一下,不会彻底断网。这个逻辑我在项目上跟甲方解释过很多次,听完基本都能接受。

不过有一点要提前说明:端口聚合带来的带宽不是严格“×2”或“×4”的硬性叠加,而是通过负载分担实现的线速转发效果。理论上两根千兆聚合成2Gbps,实际要看流量模型和hash结果,但在大多数办公/业务场景下,体感上就是“宽了一倍”。理解这个区别,后面排障时就不会被“为什么没到2Gbps”这种问题卡住。

1.2 手动聚合和LACP动态聚合,怎么选

端口聚合有两种工作模式。第一种是手动负载分担模式,H3C里叫静态,华为叫手工负载分担。特点是本地配置好就UP,不需要和对端协商,适合对端是很老的设备、或者不支持LACP协议的场景。缺点是没人帮你检查,如果对端接错口、接线交叉,很容易出环路或者流量异常,排查起来全靠肉眼。第二种是LACP动态模式,H3C里叫dynamic,华为叫lacp-static(新版本也有直接叫lacp的),底层都是IEEE 802.3ad标准,现在叫802.1AX。两端都开启LACP后,交换机会通过LACPDU报文协商参数,链路正常、参数一致才会把端口置为活动状态,安全性高很多。

选型建议很简单:同厂商设备之间,无脑推荐LACP;跨厂商对接,只要两边都支持标准LACP,也推荐用LACP。只有对端实在不支持,才退回手动模式。我见过一些老工程师习惯配静态聚合,理由是“简单、不用协商”,但静态模式没有对端检测能力,万一旁边有人误插了一根跳线,你根本不知道,这种事故一旦发生就是广播风暴级别的。所以现在我做项目,默认都上LACP。

1.3 负载分担不是“平均分配流量”

端口聚合的负载分担,不是路由器那种按会话数或者按字节数平均分配。它是根据报文的某些字段,比如源MAC、目的MAC、源IP、目的IP、甚至端口号,做一个hash计算,算出一个值之后再映射到某一条物理链路上。所以如果两个大流量互传的设备,源IP和目的IP都固定,hash出来很可能永远选中同一条链路,看起来就像聚合没生效。这时候不是设备坏了,是流量模型本身就不适合当前hash算法。

打个比方,端口聚合的hash机制就像快递分拣系统,同一个发货人和同一个收件人的所有包裹,会被分到同一条传送带上,不会因为A传送带忙就把这个人的包裹拆开放到别的传送带上。这样做的目的是保证同一对会话的报文始终走同一条链路,避免乱序。代价就是“忙闲不均”在某些特定流量模型下必然存在。理解了这一点,后面配置负载分担算法时,你才会知道为什么要去选基于IP的hash,而不是基于MAC。

2. H3C交换机端口聚合配置详解:Bridge-Aggregation实战

2.1 H3C二层静态聚合配置(接入/汇聚最常用)

H3C把二层聚合口叫Bridge-Aggregation,默认工作在二层,模式默认static。配置步骤并不复杂,但顺序很重要。我的习惯是先创建聚合口,再清空成员口配置,然后把成员口加入聚合组,最后在聚合口上统一配置VLAN和Trunk。

system-view interface Bridge-Aggregation 1 quit interface GigabitEthernet1/0/1 port link-aggregation group 1 interface GigabitEthernet1/0/2 port link-aggregation group 1

上面这段就是最基础的静态聚合配置,H3C里默认就是静态模式,所以不需要额外写link-aggregation mode static。如果你需要配置Trunk并放通VLAN,就在聚合口视图下操作:

interface Bridge-Aggregation 1 port link-type trunk port trunk permit vlan 10 20 30 40 50

有一个容易踩的坑:H3C成员口加入聚合组之前,如果物理口上已经有access、trunk或port-service这类配置,系统会报冲突,甚至加入失败。所以在加成员口之前,一定要先把物理口上的配置清理干净。另外H3C对聚合口和成员口的VLAN配置有一致性检查,不一致时也会有提示。配置完可以用两条命令查看状态:

display link-aggregation summary display link-aggregation verbose

display结果里,关键是看Port Status是Selected还是Unselected。Selected表示这个成员口已经是活动链路,参与数据转发;Unselected表示这个口虽然加入了聚合组,但处于备份或异常状态。正常情况下所有成员口都应该是Selected。

2.2 H3C动态LACP聚合配置(推荐)

H3C动态聚合的命令和静态很像,唯一的区别是在聚合口视图下多了一条link-aggregation mode dynamic。推荐大家在实际生产环境用动态模式,因为它会自动和对端协商,两端参数不匹配时不会启用,安全系数高很多。

system-view interface Bridge-Aggregation 1 link-aggregation mode dynamic quit interface GigabitEthernet1/0/1 port link-aggregation group 1 interface GigabitEthernet1/0/2 port link-aggregation group 1

动态模式涉及两个优先级参数:系统LACP优先级和端口LACP优先级。系统优先级默认32768,值越小越优先。如果两台交换机的系统优先级相同,就进一步比较MAC地址,MAC小的优先。高优先级的一端在LACP协商中占主导,决定哪些端口成为Selected活动端口。

lacp system-priority 1000 interface GigabitEthernet1/0/1 lacp port-priority 100

这里解释一下应用场景:如果你有两根链路,希望其中一根主用、一根备份,就可以通过调整系统优先级和端口优先级来实现,让高优先级的端口成为Selected,低优先级端口保持Unselected待命。优先级平时不用动,但遇到两端链路数量不一致,或者有主备需求时,这个参数就是唯一抓手。H3C还支持在聚合口下配置lacp edge-port,用于对端不是交换机而是服务器的场景,但这个属于进阶用法,一般园区网用不到。

2.3 H3C三层聚合口:核心与防火墙互联这样配

三层聚合口在H3C里叫Route-Aggregation,创建方法和Bridge-Aggregation类似。区别在于Route-Aggregation是一个三层接口,可以直接配IP地址,用于核心交换机到防火墙、路由器,或者两台三层交换机之间跑OSPF/BGP的场景。

system-view interface Route-Aggregation 1 ip address 192.168.1.1 30 quit interface GigabitEthernet1/0/1 port link-aggregation group 1 interface GigabitEthernet1/0/2 port link-aggregation group 1

有些型号在把二层口加入Route-Aggregation时,会提示该端口将从二层口变成三层路由口,按Y确认即可。这里要注意:二层聚合和三层聚合不能混用。Bridge-Aggregation用于透传VLAN的二层场景,Route-Aggregation用于需要IP地址的三层互联场景。如果你的核心交换机下面接了很多VLAN,网关要做在核心上,那么接入侧通常用二层聚合,核心侧用VLANIF加二层聚合来终结VLAN;只有与防火墙或路由器互联,才真正需要Route-Aggregation。

一个更进阶的玩法是三层聚合口加子接口。你可以在Route-Aggregation下创建子接口,每个子接口封装一个VLAN,这样一条聚合链路就能同时承载多个VLAN的三层路由流量。这个配置在大型园区网的汇聚层非常常见,建议在模拟器里先练熟。

3. 华为交换机端口聚合配置实操:Eth-Trunk实战

3.1 华为手工负载分担:先建Eth-Trunk再添加成员口

华为的聚合口叫Eth-Trunk,默认模式是手工负载分担,对应H3C的静态模式。配置流程和H3C类似,但命令措辞不一样,千万别搞混。第一步创建Eth-Trunk,第二步在成员口下执行eth-trunk命令加入,第三步在Eth-Trunk上统一配置VLAN,第四步查看确认。

system-view interface Eth-Trunk 1 quit interface GigabitEthernet0/0/1 eth-trunk 1 interface GigabitEthernet0/0/2 eth-trunk 1

放通VLAN的命令和H3C的permit不一样,华为用的是allow-pass:

interface Eth-Trunk 1 port link-type trunk port trunk allow-pass vlan 10 20 30 40 50

我在实际项目中踩过的坑是:华为成员口加入Eth-Trunk时,如果物理口上已经配置了port link-type或者VLAN,命令有很大概率被拒绝,或者提示端口配置与Eth-Trunk不一致。所以我现在的习惯是,先清空物理口上跟VLAN相关的配置,再执行eth-trunk 1。另外,华为手工负载分担模式下,只要端口状态是Up,它就会进入转发,不会像LACP那样做对端参数检查。所以上架前一定要核对两端的光口和电口位置,千万别接错。

配置完可以用display eth-trunk 1查看,手工模式下看到的直接是端口Up状态。这个模式适合对端是老设备、不支持LACP的场景,但我不建议在生产环境大规模使用,原因前面说过:没有对端检测,出问题就是大事。

3.2 华为LACP模式配置:mode lacp-static 关键点

华为动态聚合在大多数S系列交换机上命令是mode lacp-static,部分新版本会直接写成mode lacp,含义一样。配置命令:

system-view interface Eth-Trunk 1 mode lacp-static quit interface GigabitEthernet0/0/1 eth-trunk 1 interface GigabitEthernet0/0/2 eth-trunk 1

为了让两条链路都被选中,通常还需要设置系统LACP优先级,并且按需开启抢占功能:

lacp priority 1000 interface Eth-Trunk 1 lacp preempt enable

系统优先级默认也是32768,值越小优先级越高。lacp preempt enable的作用是,当高优先级或者低端口号的链路从故障中恢复后,自动抢占当前活动链路。生产环境如果有主备链路需求,这个功能很实用;但如果不希望频繁切换造成转发抖动,就保持默认关闭。查看命令仍然是display eth-trunk 1,重点看端口状态是不是Selected。两个成员口都应该是Selected,如果出现Unselected,就需要检查对端配置或者链路质量。

有一点要注意:华为新老版本对LACP模式的关键字支持不同。老版本模拟器或者老款S5700只认lacp-static,新版本设备可能同时支持lacp。我遇到过一次在eNSP里用mode lacp报错、改成lacp-static就正常的情况,后来上真机发现新版本两种都能用。所以做项目前先确认设备版本,别在命令关键字上浪费时间。

3.3 华为三层Eth-Trunk与VLANIF配合

华为S系列交换机端口默认是二层口,Eth-Trunk创建后默认也是二层。如果要做三层聚合口,需要先执行undo portswitch把它切换成三层口,然后配置IP地址:

system-view interface Eth-Trunk 1 undo portswitch ip address 10.1.1.2 30 quit interface GigabitEthernet0/0/1 eth-trunk 1 interface GigabitEthernet0/0/2 eth-trunk 1

配置完成后,Eth-Trunk就是一个三层路由口,可以直接跑静态路由、OSPF或BGP。这个场景和H3C的Route-Aggregation是等价的。另一种更常见的情况是:核心交换机要终结多个VLAN的网关,这时不会把Eth-Trunk切成三层口,而是让Eth-Trunk放通多个VLAN,再用VLANIF接口配网关地址。很多人分不清什么时候用三层Eth-Trunk、什么时候用VLANIF。判断标准很简单:如果聚合链路两端是“点到点”路由互联,用三层Eth-Trunk;如果聚合链路是用来承载下面接入交换机的多个VLAN流量,用二层Eth-Trunk加VLANIF。记住这个标准,基本不会搞混。

4. H3C和华为端口聚合配置对比:一张表看懂差异

4.1 概念与命令对照表

这两家设备的端口聚合原理完全一样,但命令差异很大。我把最常见的对应关系整理成一张表,建议收藏。

功能或概念H3C Comware华为 VRP
二层聚合口名称Bridge-AggregationEth-Trunk
三层聚合口名称Route-AggregationEth-Trunk + undo portswitch
创建聚合口interface Bridge-Aggregation 1interface Eth-Trunk 1
成员口加入port link-aggregation group 1eth-trunk 1
手动模式关键字静态(默认)手工负载分担(默认)
动态模式关键字link-aggregation mode dynamicmode lacp-static
系统LACP优先级lacp system-prioritylacp priority
端口LACP优先级lacp port-prioritylacp port-priority
放通VLAN命令port trunk permit vlanport trunk allow-pass vlan
负载分担命令link-aggregation load-sharing modeload-balance
查看聚合状态display link-aggregation summarydisplay eth-trunk

华为的load-balance命令通常直接打在Eth-Trunk接口视图下,比如load-balance dst-ip src-ip。H3C的负载分担配置稍微特殊一点,既可以在系统视图下做全局配置,也可以进入具体聚合口配置。老工程师更习惯在系统视图直接配置全局负载分担,让所有聚合口统一生效;如果不同聚合口的hash需求不一样,就在各自聚合口下单独配置。

4.2 跨厂商对接时模式怎么选

H3C的dynamic对应华为的lacp-static,两边都是标准LACP,可以正常互通。H3C的静态对应华为的手工负载分担,也可以互通。最容易出问题的是两边模式混搭:H3C配了dynamic,华为还是默认手工负载分担,结果就是对端收不到LACPDU,聚合口死活起不来。

跨厂商对接时,概念名不一样,一定要看功能别只看命令。比如你看到H3C配置里有link-aggregation mode dynamic,那对面华为就必须能看到mode lacp-static;你看到H3C是静态,对面华为就要保持默认手工负载分担。协商成功后,H3C显示Selected,华为也显示Selected,两端链路才是真正通了。我建议上架顺序是:先配置一端,再配置另一端,两端都UP之后再观察流量分担情况。不要在两端同时操作,否则出了问题很难定位是谁先配错。

4.3 除了命令,还有哪些一致性要求

模式一致只是第一步。端口聚合一个隐藏很深的坑是物理参数不一致。两端端口的速率、双工模式必须一致,否则协商失败;放通VLAN列表必须一致,否则链路UP了业务还是不通;Trunk或Access类型必须一致;PVID两边也要对齐。跨厂商对接时尤其要注意PVID,H3C默认PVID是1,华为默认也是1,但如果有人改过PVID,两边没对上,就会出现部分VLAN通、部分VLAN不通的诡异现象。

另外,两边成员口数量不一致时,LACP模式会自动根据优先级和端口号选出相同数量的活动链路。比如H3C侧有4个成员口,华为侧只有2个,那么H3C只会选2个作为Selected,另外2个保持Unselected待命。但手动模式没有这种自动协调能力,两边数量不一致时会乱套,所以手动模式只适合非常简单的两端口场景。聚合口下也不要随便开流控、EEE这种低功耗特性,部分交换机固件上这些功能和LACP互相干扰,会导致接口频繁抖动。

5. 实战案例:H3C核心与华为接入的聚合对接

5.1 场景规划:5个部门VLAN,两条千兆上联

这是一个真实项目缩略版。公司分了5个部门,对应5个子网,网关全部放在核心H3C S5560交换机上,VLAN分别是10、20、30、40、50,其中A部门规模最大,约100台主机,其他部门从50台到20台不等。接入侧是一台华为S5735交换机,下面挂着办公区域的PC和几台服务器。原来核心到接入只有一根千兆光纤,白天高峰直接跑满,延迟飙升。现决定扩容成两根千兆光纤,并且用端口聚合,核心侧H3C配动态LACP,接入侧华为配lacp-static,两边放通5个部门VLAN。

这里我特意选LACP而不是手动模式,是因为接入侧有服务器流量,如果手动模式万一哪根线插错,排查起来非常痛苦。LACP至少能自动检测,而且后续如果还有扩容需求,加一根线就能自动纳入负载分担,不用改配置。

5.2 核心侧H3C配置步骤

先登录核心交换机,创建Bridge-Aggregation 1,配置Trunk和放通VLAN,然后设置动态模式,最后把两个物理口加入聚合组。我的配置习惯是:先建逻辑口,再配置逻辑口,最后加成员口,顺序不要反。

system-view interface Bridge-Aggregation 1 port link-type trunk port trunk permit vlan 10 20 30 40 50 link-aggregation mode dynamic quit interface GigabitEthernet1/0/1 port link-aggregation group 1 interface GigabitEthernet1/0/2 port link-aggregation group 1 quit display link-aggregation summary

配置完display输出里,Bridge-Aggregation 1的模式应该是Dynamic,两个成员口状态都是Selected。这个顺序的好处是:成员口加入时,H3C会自动检查逻辑口和物理口的VLAN配置是否一致,如果先加成员口再配置逻辑口,可能出现中间状态。另外物理口如果有旧配置,提前清掉,别在加聚合组的时候让系统报冲突。

如果核心交换机还要接防火墙,建议单独建一个Route-Aggregation 2做三层互联,配一个互联地址,然后跑静态路由或OSPF。不要把办公网VLAN和三层的防火墙互联混在同一个聚合口里,否则路由和二层流量互相干扰,排障时非常难受。

5.3 接入侧华为配置步骤与验证

接入交换机华为侧配置如下:

system-view interface Eth-Trunk 1 port link-type trunk port trunk allow-pass vlan 10 20 30 40 50 mode lacp-static quit interface GigabitEthernet0/0/1 eth-trunk 1 interface GigabitEthernet0/0/2 eth-trunk 1 quit display eth-trunk 1

这里同样先创建Eth-Trunk并配置好模式,再把物理口加入,顺序保持一致。配置完成后,display eth-trunk 1应该看到两个端口都是Selected,本端和对端的LACP信息正常。

业务验证这一步不能省。从A部门终端ping网关地址,确认基本无丢包;然后拔掉其中一根光纤,观察ping的情况,正常情况下最多丢一两包,另一根链路会立刻接管。这个断链测试是端口聚合项目验收的关键环节。如果拔线后丢包严重或者直接断网,说明STP可能在中间干扰,或者聚合口没有真正切换到冗余状态,需要马上查。我的经验是,这一步只要做了,后面运维基本不会收到半夜告警。

6. 端口聚合配置常见问题与排障实录

6.1 聚合口不UP,先查Selected/活动口

生产环境中遇到最多的问题就是聚合口不UP。处理顺序我一般固定为:先看物理口是不是Up,再看聚合口有没有Selected成员,最后查两端模式是否匹配。H3C用display link-aggregation summary,华为用display eth-trunk 1,这两条命令就是最核心的排查入口。

常见的几种现象和处理思路如下:

  • 物理口Up,但聚合口没有任何Selected成员:多半是两端模式不匹配,一边LACP一边手动,导致协商失败。
  • 两个成员口一个Selected一个Unselected:可能是链路质量差,或者端口优先级不一致,也可能是对端只有一根线接入。
  • display里Member Ports数量为0:说明成员口没有成功加入聚合组,回到物理口检查eth-trunk或port link-aggregation group命令是否生效。
  • 物理口本身Down:查光模块、跳线、两端收发光,这个问题跟聚合配置无关,别在聚合口上浪费时间。

排障时我习惯先看成员口状态,再看两端模式,最后查VLAN配置。顺序不能乱,否则容易被表面现象带偏。

6.2 流量还是只走一条链路,别急着怪设备

聚合口明明都Up了,结果一看流量还是集中在一条链路上,另一条链路基本空闲。这种情况太常见了,但大多数时候不是设备故障,而是负载分担算法和流量模型不匹配。

小流量场景下,比如办公网只有几十个终端,hash桶本身就用不满,流量集中在某一条链路很正常。两个大流量设备互传时,源IP和目的IP固定,hash结果也固定,会一直走同一条链路。这时要解决,一个是改hash算法。H3C可以在系统视图或聚合口下配置:

link-aggregation global load-sharing mode destination-ip source-ip

华为在Eth-Trunk接口视图下配置:

interface Eth-Trunk 1 load-balance dst-ip src-ip

基于IP的hash通常比基于MAC更分散,因为办公网里IP地址的变化比MAC地址更频繁。但如果业务流量本身就单一,比如存储备份和办公业务混在同一个聚合口里,再好的hash也救不了。这时候最有效的方案是拆口,把存储流量和办公流量分到不同的聚合口,从物理层面隔离。这个思路在项目中比调hash参数更实用。

6.3 配置顺序不对引发环路,一个习惯救大命

端口聚合配置过程中最危险的情况是环路。我见过不止一次:有人先在两台交换机上把两个物理口都配成Trunk,放通了VLAN,再接聚合口,结果STP还没收敛,直接广播风暴,整个楼层断网。还有人是先把物理口加入聚合组,但物理口上残留了access或trunk配置,导致一边在聚合协商,一边在正常转发,中间状态极其危险。

我个人项目里固定了一套配置顺序,基本可以避免这种事故:

  1. 把要加入聚合的物理口全部shutdown;
  2. 清空物理口上的VLAN配置,包括port link-type、port trunk permit等;
  3. 创建聚合口,配置模式和放通VLAN;
  4. 把物理口加入聚合组;
  5. 全部配置完成后再undo shutdown统一放通。

这样即使配置有错误,最坏情况只是聚合口起不来,不会形成环路。这个习惯我至少避免了两次生产事故。现场如果时间紧迫,也至少要保证“先建逻辑口,再清物理口,再加成员口”的顺序,别跳步。

6.4 模拟器里练手时容易忽略的差异

很多兄弟喜欢用eNSP和H3C Cloud Lab练端口聚合,这是好事,但有几个差异点要清楚。先说环境问题,很多人遇到的“H3C Cloud Lab设备启动不了”,多半是VirtualBox版本不匹配,或者WinPcap驱动没装好。把电脑虚拟化功能打开,VirtualBox装回对应版本,驱动换成匹配版本,基本就能解决。环境稳定后,再开始练端口聚合。

模拟器和真机的差异主要有三点:

  • LACP优先级参数在模拟器里不一定生效,别拿模拟器行为当真机标准;
  • 命令关键字有版本差异,比如华为老模拟器只认lacp-static,新版本可能已经改成lacp;
  • 二层聚合和三层聚合的区别,在模拟器里一定要各配一遍,特别是H3C的Route-Aggregation和华为的undo portswitch,很多初学者只在模拟器里配过二层,上真机遇到三层聚合就懵。

我在实际项目里发现,凡是能把模拟器里二层聚合、三层聚合都完整跑通的人,上真机基本不会出大问题。端口聚合大多数排障思路,靠的就是对原理和命令双重的熟练度。

最后再多说一句我的个人习惯:不管用H3C还是华为,我配置完聚合口都会做三件事。第一,用display link-aggregation summary或display eth-trunk确认两个成员口都是Selected;第二,把聚合口的模式、放通VLAN、PVID、负载分担算法记到交接文档里;第三,拔一根光纤做一次断链测试,确认业务无感切换。端口聚合这件事,本身命令不复杂,真正决定项目成败的往往是配置习惯和排查思路。这个功能用好之后,再遇到带宽瓶颈,我的第一反应就不再是“要不要换万兆”,而是“现有链路有没有聚合到位”——毕竟白捡的带宽和冗余,不用白不用。

返回列表