Cisco交换机端口聚合配置实战:EtherChannel与LACP从原理到排错
很多网工第一次接触交换机端口聚合都是在现网带宽不够用、链路又没法说换就换的时候。两边设备明明还有空闲端口单条链路却已经跑满了业务一忙就丢包。这时候端口聚合EtherChannel就是最直接、成本最低的解法。这篇文章我就用Packet Tracer完整走一遍Cisco交换机的端口聚合配置从原理到命令从实验到排错把该踩的坑提前给你标出来。无论你是刚入行的网络运维还是准备CCNA认证的考生又或者是公司里要扩带宽但不想动光模块的“兼职网管”这篇东西都能直接用。文章里的拓扑、命令、验证思路都是我实际敲过、测过的不是抄文档那种流水账。1. 端口聚合到底解决了什么问题1.1 从“链路带宽不够”说起先想一个很常见的场景公司核心交换机下接了一台文件服务器服务器双网卡做了bonding出口带宽2Gbps。但交换机这边只有一根千兆线连着服务器再快到交换机这里还是被卡在1Gbps。业务部门天天抱怨上传下载慢你查服务器、查磁盘、查网线都没问题最后才发现瓶颈就在这根单薄的物理链路上。这种时候你会面临两个选择一是升级交换机端口到万兆二是加线做端口聚合。前者要换模块、换线缆预算审批慢还可能牵动其他设备后者只需要加一根网线改一下交换机配置几乎零成本。端口聚合的价值就在这里通过把多个物理端口绑成一个逻辑端口把带宽叠加上去同时还能获得链路冗余。1.2 端口聚合的三个核心能力端口聚合在Cisco里叫EtherChannel在华为叫Eth-Trunk干的事情是一样的。我习惯把它理解成“把几根麻绳拧成一股钢丝绳”。它给网络带来的不是简单的带宽翻倍而是三个层面的能力提升带宽叠加4条千兆链路聚合成逻辑口理论带宽4Gbps。虽然实际跑不满理论值但比单链路翻了几倍是很实在的。链路冗余聚合组里有一根线断了流量自动切到剩余链路上对业务无感知。这个特性在生产环境里比带宽更值钱。负载均衡EtherChannel会把流量分散到多条物理链路上避免某一条链路闲置、某一条链路爆满的不均衡情况。1.3 为什么不用STP的“等价多路径”你可能会有疑问Spanning Tree ProtocolSTP不是会自动阻塞冗余链路吗我多接几根线到交换机上让STP去跑不就行了这里有个关键区别STP是为了防环它会主动阻塞掉冗余路径让网络里物理上存在、逻辑上不通。而EtherChannel是把多条链路看成一个逻辑端口STP对这个逻辑端口只计算一次不会阻塞内部成员链路。也就是说普通多链路会被STP干掉EtherChannel里的多链路却能同时转发数据这才是聚合的核心价值。2. 实验环境准备与拓扑设计2.1 为什么选Packet Tracer做实验生产环境的交换机不能随便动尤其是核心设备配置错了可能就是全网瘫痪的事故。所以在动手之前先在模拟器里把配置流程、验证命令、排错思路跑通是最稳妥的做法。Cisco Packet Tracer这个模拟器虽然不如GNS3、EVE-NG那么“硬核”但对于端口聚合这个级别的内容它完全够用而且对新手极其友好。Packet Tracer自带图形化拓扑界面拖拽设备、连线、配置都是一目了然的。你不需要去搞虚拟机镜像、不需要配置桥接网卡下载安装完成就能用。尤其适合刚学Cisco命令的同学把大部分精力放在理解协议和命令上而不是折腾模拟环境本身。2.2 安装与初始化的几个常见卡点Packet Tracer的安装包在Cisco NetAcad官网注册后可以免费下载这里不展开讲注册流程但有三个高频问题你需要知道版本选择新版本对老电脑不友好如果你机器配置一般选7.x版本就够用了不必盲目追新。登录问题装完之后第一次启动需要登录思科账号偶尔会出现登录超时。解决办法是把软件完全退出重新打开一次基本都能解决。菜单显示不全如果你的界面选项灰显或者菜单缺失多半是当前模式不对检查右下角是否处于Realtime模式而不是Simulation模式。2.3 实验拓扑两台交换机四根线我的实验拓扑很简单但也最能说明问题两台Cisco Catalyst 2960交换机分别命名为SW1和SW2中间用4根交叉线连接端口分别从Gig0/1到Gig0/4。SW1上接一台PC-ASW2上接一台PC-B用于测试聚合后的连通性和实际效果。注意在Packet Tracer里新旧版本的2960型号接口编号有区别有的从FastEthernet开始有的直接是GigabitEthernet。选设备时看清型号别配置的时候接口敲错了。拓扑搭好之后先别急着配置给两台交换机配上主机名和管理IP保证基础管理通道是通的。这里有个经验无论做什么实验先把管理面搞定后面排查问题会省很多事。3. 端口聚合的两种协商协议PAgP与LACP3.1 分清谁是Cisco亲儿子谁是国际标准Cisco交换机上的EtherChannel支持两种动态协商协议PAgPPort Aggregation Protocol和LACPLink Aggregation Control Protocol。PAgP是Cisco私有协议只能在Cisco设备之间使用LACP是IEEE 802.3ad标准协议所有主流厂商都支持。我在实际项目中只要不是全Cisco环境一律用LACP。原因很简单万一以后要接非Cisco设备LACP通用性最好。如果你在纯Cisco机房PAgP也能用而且配置起来更“Cisco”。但从学习和考试的角度LACP是必会的PAgP了解即可。3.2 模式的排列组合一张表记住EtherChannel的接口模式写在接口下有点像DTPDynamic Trunking Protocol的模式配置。我把常用组合整理成了表格方便你对照模式含义与谁搭配能协商成功ON手工聚合不协商强制加入聚合组对端也是ONDesirablePAgP主动主动发送PAgP协商包对端是Desirable或AutoAutoPAgP被动被动响应PAgP不主动发对端必须是DesirableActiveLACP主动主动发送LACP协商包对端是Active或PassivePassiveLACP被动被动响应LACP不主动发对端必须是Active从这个表能看到一个规律协商协议要一样模式至少有一方是主动的。最稳的组合就是对端都配成Active简单好记不容易出问题。Passive和Auto这种被动模式只有当对端很明确、你又不想主动发包时才用。3.3 手工ON模式和协商模式怎么选ON模式其实就是“我说你是聚合你就是聚合”不跑协商协议配置最简单。但它的坑在于如果两端条件不一致比如一边配了ON一边配了Active链路就不会变成EtherChannel而且两边都不报错状态看着还正常实际上流量就是不通。协商模式的好处在于它能自动检测两端参数是否匹配协商不成功接口保持普通状态不会出现“假聚合”。所以除非你有特殊需求我都建议用LACP Active模式。毕竟配置命令就多一行换来的是可诊断性和安全性。4. 手把手配置LACP端口聚合实操4.1 交换机基础配置先把两台交换机的基础配置做好这是后面所有操作的地基。进入命令行后第一件事就是改主机名方便后续排错时区分设备。配置如下Switchenable Switch#configure terminal Switch(config)#hostname SW1 SW1(config)#interface vlan 1 SW1(config-if)#ip address 192.168.1.1 255.255.255.0 SW1(config-if)#no shutdown SW1(config-if)#exit SW1(config)#interface range gigabitEthernet 0/1-4 SW1(config-if-range)#no shutdownSW2也做类似配置IP换成192.168.1.2。这里的IP地址只是管理用途实际业务VLAN地址可以按你的规划来。有一点要提醒接口范围用interface range批量配置时注意命令提示符变成了config-if-range别觉得奇怪。4.2 创建Port-channel逻辑接口端口聚合的第一步是创建一个逻辑接口这个接口就是聚合后的“大脑”。在Cisco IOS里命令是interface port-channel 1。这里的编号可以自己定只要全局唯一即可。创建之后要在这个逻辑接口上把该配的属性配好比如Trunk模式、允许的VLAN等。SW1(config)#interface port-channel 1 SW1(config-if)#switchport mode trunk SW1(config-if)#switchport trunk allowed vlan all SW1(config-if)#exit为什么要在逻辑接口上配置Trunk因为端口聚合链路通常用于交换机之间的互联必须承载多个VLAN的流量。如果你只在物理接口上配Trunk、逻辑接口没配最终生效的配置可能跟你预期不一致。这个顺序问题很多新手栽过跟头。4.3 物理接口绑定到聚合组接下来是关键步骤把物理接口划分到聚合组里。在Cisco IOS下用channel-group命令完成绑定。我用的是LACP模式所以命令是这样的SW1(config)#interface range gigabitEthernet 0/1-4 SW1(config-if-range)#channel-group 1 mode active SW1(config-if-range)#exit这行命令的含义是把Gig0/1到Gig0/4这四个接口以LACP Active模式加入聚合组1。执行完之后系统会自动在这些物理接口下生成port-channel相关的配置你不需要再单独去配Trunk因为逻辑接口上已经配好了。4.4 别忘了对端也要配很多人在模拟器里配置到这一步就去测试连通性了发现不通然后各种怀疑人生。其实原因很简单对端SW2也要做一模一样的配置。EtherChannel是两端协商的协议不可能一头热。SW2(config)#interface port-channel 1 SW2(config-if)#switchport mode trunk SW2(config-if)#switchport trunk allowed vlan all SW2(config-if)#exit SW2(config)#interface range gigabitEthernet 0/1-4 SW2(config-if-range)#channel-group 1 mode active SW2(config-if-range)#exit这里要特别提一个细节在配置对端之前四根物理线的状态是UP/UP但被STP阻塞的因为存在物理环路。当你把两端的聚合配置都做完之后STP会发现这是一个逻辑端口环路消失物理链路开始正常转发。如果你发现配置做完后端口还是一直阻塞优先检查两端模式是否一致。4.5 用PC验证聚合效果配置完成后分别给PC-A和PC-B配好IP地址PC-A用192.168.1.10PC-B用192.168.1.20然后在PC-A上ping PC-B。如果通了说明聚合链路基本工作正常。C:\ping 192.168.1.20 Pinging 192.168.1.20 with 32 bytes of data: Reply from 192.168.1.20: bytes32 time1ms TTL128能ping通只是第一步真正要验证的是流量是不是真的在四条链路上分担了。这个我们后面在验证环节细说。5. 验证聚合状态与负载均衡效果5.1 show etherchannel summary一眼看全局配置做完第一件事就是查看聚合汇总状态。show etherchannel summary是使用频率最高的验证命令SW1#show etherchannel summary Flags: D - down P - bundled in port-channel I - stand-alone s - suspended H - Hot-standby (LACP only) R - Layer3 S - Layer2 U - in use N - not in use, no aggregation f - failed to allocate aggregator Number of channel-groups in use: 1 Number of aggregators: 1 Group Port-channel Protocol Ports ----------------------------------------------------------------------------- 1 Po1(SU) LACP Gi0/1(P) Gi0/2(P) Gi0/3(P) Gi0/4(P)看到Po1后面的状态是SU四个接口都是Pbundled说明聚合已经成功。这里的S代表Layer2U代表in use。如果某个接口状态是ssuspended或者Istand-alone说明这个端口没有成功加入聚合组需要排查原因。5.2 检查协商细节show etherchannel port-channel有时候聚合汇总看着正常但你想知道每个端口的具体协商细节这时候用show etherchannel port-channelSW1#show etherchannel port-channel Channel-group listing: --------------------- Group: 1 ---------- Port-channels in the group: --------------------------- Port-channel: Po1 (Primary Aggregator) ------------ Age of the Port-channel 0d:00h:05m:32s Logical slot/port 2/1 Number of ports 4 HotStandBy port null Port state Port-channel Ag-Inuse Protocol LACP Ports in the Port-channel: Loads Rx Tx Switch Port ID Port Port Name Priority Port Num State Role Gi0/1 128 1 0x3D Up Selected Gi0/2 128 2 0x3D Up Selected Gi0/3 128 3 0x3D Up Selected Gi0/4 128 4 0x3D Up Selected重点关注每个端口的Role角色和State状态正常的应该是Selected和Up。如果出现Standby说明有端口处于热备状态这在LACP里是正常的最多可能有热备端口但如果你期望四条链路全部转发就要检查是不是配置了lacp max-bundle之类的限制。5.3 验证负载均衡show etherchannel load-balance很多人配置完聚合只看接口状态就认为大功告成其实还差一步确认负载均衡算法。show etherchannel load-balance可以看到当前设备使用什么哈希算法进行流量分担SW1#show etherchannel load-balance EtherChannel load-balancing: Source MAC address and Destination MAC address默认算法是基于源MAC和目的MACsrc-dst-mac。这意味着如果PC-A到PC-B之间只有一条会话那么流量只会走其中一条物理链路不会出现“四根线同时传一个文件”的效果。这跟很多人想象的“一根线传一半”完全不同。如果你希望流量更均匀地分散可以根据业务类型调整算法。比如在IP网络里用源目IP做哈希往往比MAC更均匀SW1(config)#port-channel load-balance src-dst-ip这个配置是全局生效的会影响所有EtherChannel。调整之后不同IP之间的流量会分散到不同物理链路上。5.4 中断测试拔线看业务会不会断真正的生产环境验证一定要做链路切换测试。在Packet Tracer里手动把SW1的Gig0/1接口shutdown然后立刻在PC-A上持续ping PC-B观察丢包情况SW1(config)#interface gigabitEthernet 0/1 SW1(config-if)#shutdown正常情况下ping只会丢掉一两个包甚至零丢包因为剩余三条链路会无缝接管流量。这个特性就是我们前面说的高可用。我自己在做这个实验时每次都会反复拔线插线目的就是直观感受链路冗余带来的安全感。6. 常见问题与排查技巧实录6.1 配置做完端口起不来这是最常见的坑。很多时候你按教程把命令敲完了show etherchannel summary一看端口状态是Istand-alone或者ssuspended。排查方向是固定的按顺序检查两端模式是否匹配一端Active另一端Passive可以两端都Passive肯定不行一端ON另一端Active也不行。物理接口属性是否一致两端接口的速率、双工模式、VLAN、Trunk配置必须完全一致。注意EtherChannel要求所有成员端口具有相同的VLAN配置。接口是否被其他功能占用比如接口已经被划到别的channel-group里了或者被配置成SPAN目的端口就不能再加入新聚合组。6.2 VLAN配置不一致导致的“假聚合”有一种情况特别隐蔽show etherchannel summary显示端口全部是P状态聚合显示正常但数据包就是不通。这时候十有八九是两端Trunk允许的VLAN列表不一致。比如SW1的Po1允许VLAN 1-10SW2的Po1只允许VLAN 1-5那么VLAN 10的流量到了SW2就被丢弃。排查方法很简单在两台设备上分别执行show interfaces trunk对比Port-channel的VLAN列表是否一致。我自己就因为这个原因在模拟器里折腾了半个多小时后来养成一个习惯配完聚合第一件事就是检查两端的Trunk列表。6.3 PAgP和LACP混用会怎样有的同学可能从别的地方复制了一段配置没注意协议类型。比如一端用的channel-group 1 mode desirablePAgP另一端用的channel-group 1 mode activeLACP这种情况下两个协议互不认识协商必然失败接口保持独立状态。解决办法就是统一协议全用LACP或者全用PAgP。6.4 Packet Tracer里的特殊限制Packet Tracer对EtherChannel的支持还是不错的但有几个模拟器特有的限制你心里要有数部分旧型号交换机只支持最多8个成员端口超过的会被拒绝。有些2900系列交换机的默认端口是FastEthernet配置时要注意速率匹配。在模拟器里执行shutdown后再no shutdown端口恢复速度比真机略慢属于正常现象。6.5 生产环境追加成员端口如果你的生产环境已经配好了EtherChannel后来要扩容比如从两条链路扩到四条命令也很简单SW1(config)#interface gigabitEthernet 0/3 SW1(config-if)#channel-group 1 mode active SW1(config-if)#exit但注意新加进来的物理接口必须预先配置好与聚合组一致的属性VLAN、Trunk等然后执行channel-group命令即可。系统会自动将接口加入聚合组无需重启或重新协商。7. 写在最后我踩过的那些坑讲真端口聚合的配置命令就那么几行真正常见的问题不是不会配而是对原理理解不透彻出了问题不知道从哪里查。我自己在给一个客户做网络改造时就遇到过一端配了EtherChannel、另一端没配的情况结果物理环路被STP阻塞业务全断。后来排查了半个小时才发现是两端配置不一致。所以我在每次配置完EtherChannel之后一定会在现场做三件事看一眼show etherchannel summary确认端口状态是P看一眼show interfaces trunk确认两端VLAN列表一致最后拔一根线测试业务是否中断。这三步走完基本可以放心收工。再分享一个小技巧如果你不确定当前端口聚合在跑什么协议、什么模式直接执行show running-config interface port-channel 1和show running-config interface gigabitEthernet 0/1两条命令叠在一起看配置一目了然。排查问题的时候这条命令比任何图形界面都好用。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →