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 verbosedisplay结果里关键是看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-passinterface 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两边也要对齐。跨厂商对接时尤其要注意PVIDH3C默认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配置导致一边在聚合协商一边在正常转发中间状态极其危险。我个人项目里固定了一套配置顺序基本可以避免这种事故把要加入聚合的物理口全部shutdown清空物理口上的VLAN配置包括port link-type、port trunk permit等创建聚合口配置模式和放通VLAN把物理口加入聚合组全部配置完成后再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、负载分担算法记到交接文档里第三拔一根光纤做一次断链测试确认业务无感切换。端口聚合这件事本身命令不复杂真正决定项目成败的往往是配置习惯和排查思路。这个功能用好之后再遇到带宽瓶颈我的第一反应就不再是“要不要换万兆”而是“现有链路有没有聚合到位”——毕竟白捡的带宽和冗余不用白不用。
返回列表