ARTICLE DETAIL

资讯详情

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

跨厂商LACP对接实战:华为思科华三链路聚合配置与排障

跨厂商LACP对接实战:华为思科华三链路聚合配置与排障 跨厂商LACP对接这件事我在现场踩过的坑比很多人见过的配置都多。华为、思科、华三三家的交换机在国内机房几乎成了标配组合尤其是三层交换机做部门VLAN划分、跑链路聚合上联的场景几乎每个中大型企业都有一套。单说LACP本身IEEE 802.3ad是个标准协议理论上谁跟谁都该能通但实际配置时你会发现华为的Eth-Trunk、思科的Port-Channel、华三的Bridge-Aggregation命令风格完全不是一个路子模式命名、优先级配置位置、状态显示方式全都不一样稍微对齐错一个参数链路要么起不来要么起来之后只有一条线路在转发业务直接抽风。这篇文章我就用华为S5730、思科C9300、华三S5560三台设备做示例把LACP跨厂商对接的完整思路和配置命令一步步拆开讲同时加入我自己在处理这类问题时积累的参数规划和排障经验。无论你是在真机上做割接还是在模拟器里做实验这套方法都能直接照搬。1. 跨厂商LACP对接前先搞懂这几件事1.1 为什么公司会同时出现三家不同品牌的设备先别急着敲命令得先弄清楚一个现实问题好好的网络环境怎么就成了“多国部队”我接触过的客户里最常见的情况是这几种公司早年机房用了思科后来扩容采购时华为价格优势明显新设备就全上了华为也可能是因为业务部门合并两套网络要打通一边是华三一边是华为核心交换机之间必须做链路聚合扩容。还有一种情况是项目分标段实施一期集成商用了A品牌二期另一家集成商用了B品牌最后都堆在机房里。这种局面在二层接入和三层核心之间尤为常见。比如公司5个部门要划分5个子网A部门100台主机、B部门50台、C部门20台核心交换机大概率是华为S5730或S5735这种三层交换机接入交换机可能是思科C9300或者华三S5560。为了带宽和冗余核心和接入之间不可能只拉一根物理线肯定要做链路聚合。问题就来了华为和思科之间、华为和华三之间这个聚合该用什么模式、哪些参数必须一致就成了一个绕不开的课题。1.2 LACP选主机制谁说了算这件事很关键LACP的协商逻辑看似复杂其实核心就一句话两边通过互相发送LACPDU报文选出“主动端”然后由主动端决定哪些成员链路进入转发状态。理解这个选主机制后面配置起来心里才有底。选主依据是系统优先级和系统IDMAC地址。LACP报文里携带了Actor的系统优先级、系统MAC、端口优先级、端口号以及状态字两个设备交互这些信息后先比较系统优先级数值小的成为主动端如果系统优先级相同就比较系统MAC地址MAC小的成为主动端。主动端确定之后它再根据自己这边的端口优先级和端口号从高到低挑选链路作为Active链路并通过对端状态字里的Synchronization位告知对方哪些链路被选中。打个比方这就像两个班长要合班上课先比谁职位高职位一样就比谁的学号靠前选出一个总班长然后由总班长指定哪些同学坐前排另外一边照着执行就行。所以参数设计的时候你得提前想好“希望哪台设备做主动端”然后通过调整系统优先级来控盘而不是靠运气。1.3 三厂商LACP模式与术语对照搞清楚了原理再看三家的命令差异就顺多了。华为管链路聚合接口叫Eth-TrunkLACP模式叫lacp-static也就是静态LACP思科叫Port-Channel模式写active或passive对应动态LACP华三叫Bridge-Aggregation模式写dynamic才是LACPstatic反而是手工聚合。这命名上的差异新手第一次接手三厂商混合环境时基本都会懵。我整理了一张对照表建议直接收藏对比项华为 VRP思科 IOS-XE华三 Comware聚合接口名称Eth-TrunkPort-ChannelBridge-AggregationLACP启用命令mode lacp-staticchannel-group 1 mode activelink-aggregation mode dynamic手工聚合静态mode manual load-balancechannel-group 1 mode onlink-aggregation mode static默认系统优先级配置视图系统视图全局配置模式系统视图系统优先级命令lacp prioritylacp system-prioritylacp system-priority端口优先级命令lacp prioritylacp port-prioritylacp port-priority最大活跃链路数max active-linknumber无直接命令自动协商link-aggregation selected-port maximum查看聚合状态display eth-trunkshow etherchannel summarydisplay link-aggregation summary这里有个特别容易踩的坑华为的lacp priority这个命令在系统视图下配置的是系统优先级在接口视图下配置的却是端口优先级同一个命令在不同视图含义完全不同。我见过有人想在系统视图下调端口优先级结果敲了一晚上系统优先级链路半天起不来气得直挠头。2. 对接参数规划与场景设计2.1 动态LACP还是手工聚合先定模式再谈其他跨厂商对接第一步先把模式商量好。华为的Eth-Trunk支持mode lacp-static和mode manual load-balance两种思科支持active、passive、on三种on是手工模式不走协议华三则分dynamic和static。只要是为了做主备或负载均衡我建议无条件选LACP动态协商。手工模式两边虽然也能通但出了故障不会自动切换链路状态变化全靠人工感知生产环境里这就是事故隐患。如果两边都是LACP那就必须保证一端是主动模式另一端可以主动也可以被动。华为的lacp-static本身就会主动发送LACPDU所以华为这一端没有被动选项思科那边配active即可别配passive华三动态聚合默认主动发送报文配置dynamic就行。简单记华为lacp-static、思科active、华三dynamic这组搭配一定不会错。还有个细节容易被忽略LACP超时时间。华为接口下有lacp timeout fast/slow思科有lacp rate fast/slow华三有lacp period short/long默认值各厂商还不一样。如果一端快超时一端慢超时会导致对端状态字里的Timeout位一直不一致极端情况下链路会在震荡中反复横跳。对接时建议把两端的LACP超时时间显式配成一致都配fast或都配slow减少一个变量。2.2 参数规划表VLAN、PVID、物理口速率全对齐动手配置之前我习惯先在纸上把参数规划表列出来。这张表不能省因为它可以避免你配到一半发现VLAN放通列表不一致、PVID概念理解错位的低级问题。以我常用的实验环境为例核心华为S5730接入是思科C9300中间跑两条万兆链路做Eth-Trunk1。规划表长这样参数项华为 S5730 侧思科 C9300 侧说明聚合模式mode lacp-staticmode active两端必须匹配为LACP系统优先级10004096华为数值小主动端在华为物理成员口GE0/0/1、GE0/0/2Te1/0/1、Te1/0/2速率双工保持一致链路类型trunktrunk二层端口PVID / Native VLAN默认1不修改native vlan 1不修改两端保持一致放通VLAN10、20、3010、20、30按业务网段规划负载均衡算法src-dst-ipsrc-dst-ip按IP负载防止哈希不均注意PVID这个概念各厂商叫法不同华为叫PVID思科叫Native VLAN华三也叫PVID但本质是一个东西不打标签的VLAN。跨厂商对接时最容易出的问题就是这边PVID改成20了那边Native VLAN还是1结果VLAN20的流量到对端全部被当成VLAN1处理排查起来非常费劲。所以我的原则是除非有特殊需求两边PVID全部保持默认1不动。2.3 子网划分计算100台、50台、20台分别用多大掩码我前面提到5个部门要划分5个子网这个环节也一并讲清楚因为LACP承载的多VLAN流量通常就是按部门粒度隔离的。A部门100台主机需要能容纳100个可用IP的网段那就得用/25掩码可用地址126个B部门50台/26掩码可用地址62个够用C部门20台/27掩码可用地址30个正好。如果偷懒全用/24当然也能跑但网络规划上浪费了地址空间而且广播域变大从运维规范角度说不值得。这个计算逻辑是可用主机数 2的N次方减2N是主机位长度。/25情况下主机位是7位128减2等于126/26主机位6位64减2等于62/27主机位5位32减2等于30。把这些网段映射到VLAN上比如VLAN10对应192.168.10.0/25VLAN20对应192.168.20.0/26VLAN30对应192.168.30.0/27然后让LACP聚合链路把这些VLAN全部放通部门的流量就能通过两条物理线负载均衡地上行到核心。整个过程里三层网关都在华为核心上做VLANIF接口接入侧全程二层透传这个架构在中小型企业里非常典型。3. 华为与思科C9300 LACP对接实操3.1 华为侧配置S5730完整命令先看华为这一端。登录设备之后第一步创建VLAN第二步创建Eth-Trunk并配置模式第三步把物理口加进去。华为S5730的命令顺序不敏感但我习惯按照“接口先建好、参数先配好、最后加成员”的顺序操作这样如果配置有误物理口不会瞬时震荡。# 创建业务VLAN system-view vlan batch 10 20 30 # 配置LACP系统优先级数值越小越优先 # 这里把华为设为主动端 lacp priority 1000 # 创建Eth-Trunk1并配置为LACP模式 interface Eth-Trunk1 mode lacp-static max active-linknumber 2 load-balance src-dst-ip port link-type trunk port trunk allow-pass vlan 10 20 30 # 将物理接口加入Eth-Trunk interface GigabitEthernet0/0/1 eth-trunk 1 quit interface GigabitEthernet0/0/2 eth-trunk 1 quit这里有两个细节要特别说明。第一max active-linknumber 2表示最多允许两条链路同时处于转发状态如果成员口多于2个剩下的自动作为备份链路待命一旦活跃链路断掉备份立即顶上。第二load-balance src-dst-ip是把负载均衡的哈希因子设为源目IP这对跨设备的业务流量来说是最公平的算法。如果你全是二层环境、没有三层IP那就要改成src-dst-mac否则所有流量都会哈希到同一条链路上等于聚合没起作用。配置完成后用display eth-trunk 1查看状态。正常时两个接口均应为Selected状态如果出现Unselected说明对端协商没通过需要往下排查。[~HUAWEI] display eth-trunk 1 Eth-Trunk1 current state : UP ID: 1 Local: LAG ID: 1 WorkingMode: STATIC Preempt Delay: Disabled Hash arithmetic: src-dst-ip System Priority: 1000 System ID: 00e0-fc12-3456 Least Active-linknumber: 1 Max Active-linknumber: 2 Operate status: up Number Of Up Port In Trunk: 2 ------------------------------------------------------------------------ ActorPortName Status PortType PortPri PortNo PortKey Weight GigabitEthernet0/0/1 Selected 1GE 32768 2 305 1 GigabitEthernet0/0/2 Selected 1GE 32768 3 305 13.2 思科侧配置C9300完整命令思科C9300跑的是IOS-XE配置思路上和华为完全不同但逻辑对应关系很清晰。第一步配置Port-Channel接口第二步把物理口放进channel-group第三步调整LACP优先级。# 进入全局配置模式 configure terminal # 配置LACP系统优先级 lacp system-priority 4096 # 创建Port-Channel1并配置trunk属性 interface Port-channel1 switchport mode trunk switchport trunk allowed vlan 10,20,30 spanning-tree portfast disable # 将物理口加入channel-group interface TenGigabitEthernet1/0/1 channel-group 1 mode active quit interface TenGigabitEthernet1/0/2 channel-group 1 mode active quit # 配置全局负载均衡算法 port-channel load-balance src-dst-ip配置注意点有三个。第一channel-group 1 mode active里的active对应LACP主动模式不要选passive。第二思科新一代C9300交换机默认使用dot1q封装不需要像老款3560那样单独敲switchport trunk encapsulation dot1q但如果你用的是老设备这行命令必须提前配上否则trunk口根本起不来。第三Port-Channel接口下默认放通所有VLAN但为了配合华三侧默认只放通VLAN1的机制建议还是显式写清楚allowed vlan避免两边VLAN列表不一致。查看思科侧状态用下面两条命令# 查看聚合组概要状态 show etherchannel summary # 查看LACP邻居信息 show lacp neighbor正常情况下show etherchannel summary里Port-Channel1状态应为SUL2 Up两个成员口都显示为P bundled in port-channel如果显示为Istandalone说明LACP协商失败对端设备没有正常回包。3.3 对接后的逐层验证方法配置完成不等于验收通过。我的习惯是分四步验证物理层、协议层、VLAN层、流量层。物理层看两端光口和电口的up状态协议层看LACP状态用华为的display lacp statistics看LACPDU收发计数思科用show lacp countersVLAN层看trunk是否放通了指定VLAN华为是display port vlan思科是show interfaces trunk流量层打流或者用业务验证。# 华为侧查看LACP报文统计 [~HUAWEI] display lacp statistics 1 Eth-Trunk1 LACP statistics: LACPDU Sent : 10245 LACPDU Received : 10235 Marker PDU Sent : 0 Marker PDU Received : 0 LACPDU Unknown PDU Sent : 0 LACPDU Illegal PDU Received : 0统计里Sent和Received两个数字应该基本相当如果Received持续为0那就是对端根本没发LACPDU问题一定出在思科那边的模式配置上如果Illegal增多说明报文格式有问题通常是两端LACP版本或参数不兼容需要检查速率双工是否协商一致。很多跨厂商对接失败最后定位到的问题都是这种小细节。4. 华为与华三S5560 LACP对接实操4.1 华三侧配置S5560完整命令华三S5560跑Comware V7配置命令在思科和华为之间算是个折中系统优先级用lacp system-priority聚合接口叫Bridge-Aggregation。老手都知道华三默认端口模式是static也就是手工聚合要让端口走LACP必须显式改成dynamic。system-view # 创建VLAN vlan 10 20 30 quit # 配置LACP系统优先级华为侧设1000华三侧设4096 lacp system-priority 4096 # 创建Bridge-Aggregation1并配置为动态LACP模式 interface Bridge-Aggregation1 link-aggregation mode dynamic link-aggregation selected-port maximum 2 port link-type trunk port trunk permit vlan 10 20 30 quit # 将物理口加入聚合组 interface GigabitEthernet1/0/1 port link-aggregation group 1 quit interface GigabitEthernet1/0/2 port link-aggregation group 1 quit quit这里有个华三和华为、思科都不同的地方Comware V7创建trunk口之后默认只放通VLAN1你必须显式执行port trunk permit vlan 10 20 30否则业务VLAN流量根本过不去。我见过不止一个同事在华为上配惯了转到华三上就漏了这一步结果现场抓耳挠腮查半天回头一看配置里根本没放通VLAN。华三的link-aggregation selected-port maximum 2相当于华为的max active-linknumber 2限制最大选中端口数。这里还牵扯到华三内部的Selected/Unselected判定机制说的直白点华三动态聚合组在LACP协商完成后会从所有成员口里选出若干端口作为Selected其余作为Unselected。如果这个参数不配华三默认是全部成员口都选中一旦对端只允许两条Active链路两边状态就会不一致。4.2 华为与华三重点参数对齐原则华为和华三对接时除了前面说的系统优先级、放通VLAN、模式匹配还有一个容易被忽略的点两端成员口的物理参数必须一致。华三的动态聚合对速率双工非常敏感成员口里如果有一个端口协商成了半双工它就会被华三标记为Unselected即使LACP协议已经协商通过。我实际的配置习惯是在把物理口加入聚合组之前先用display interface brief把两端端口状态全部看一遍确认所有成员口都是全双工、相同速率、没有error-down历史记录再做配置。华三上如果看到某个成员口是Unselected可以用display link-aggregation verbose查看详细原因系统会直接显示端口不匹配的具体原因比猜来得快。验证命令方面华三用下面两条# 查看聚合组摘要信息 display link-aggregation summary # 查看LACP详细信息包括端口优先级和状态 display lacp verbosedisplay lacp verbose的输出里会明确显示本端和对端的System ID、System Priority以及每个成员端口的状态这也是我判断两端参数是否对齐的最直接手段。看到对端System ID和Priority跟预期一致基本就可以放心了。4.3 华三层交换机上的常见配置误区华三动态聚合配置容易踩的坑我归纳下来有三个。第一个是把成员口分别配了不同速率或者干脆没配速率让两边自适应导致聚合组里只选出一个端口。第二个是在Bridge-Aggregation接口下没有配置link-aggregation mode dynamic而是沿用了默认的static模式此时物理口加进去后不发送LACPDU华为那边必然协商失败。第三个是把成员口单独配置了port link-type而没有在聚合组接口下配置华三规矩是成员口的二层属性必须与聚合组一致不一致时端口会被强制Unselected。这三个坑的症状都一样端口状态UP但流量不均衡或直接不通。排查的时候不要上来就怀疑光模块先看聚合组状态和成员口被Unselected的原因90%的问题都是配置不一致导致的。5. 常见故障排查与LACPDU报文定位5.1 问题速查表跨厂商对接典型故障一览把几种典型故障整理成速查表接到现场问题直接对照着查效率会高很多故障现象大概率原因排查命令解决办法所有成员口都是Unselected/Down模式不匹配一端未启用LACPdisplay eth-trunk / show etherchannel summary统一改为lacp-staticactivedynamic只有一条链路转发另一条备份系统优先级或端口优先级偏了主动端只选了部分链路display eth-trunk / display lacp verbose调低期望设备系统优先级检查max active-linknumber业务VLAN不通管理VLAN通trunk放通列表不一致display port vlan / show interfaces trunk统一两端allowed vlan列表协商正常但流量哈希不均负载均衡算法不对按MAC还是按IP没匹配display eth-trunk / show etherchannel load-balance统一两端load-balance src-dst-ip链路频繁震荡一会儿up一会儿downLACP超时时间不一致或物理层不稳display lacp statistics / show lacp counters统一fast/slow模式检查光模块和链路质量5.2 我亲历的两次跨厂商联通故障说一个我印象特别深的现场案例。某客户机房华为S5730核心和思科C9300接入做LACP对接配置完成后思科侧显示Port-Channel1是SU成员口也是P状态但华为侧两条成员链路全是Unselected。拿display lacp statistics一看华为发送的LACPDU有几千条接收却是0说明思科口口声声说自己active实际报文根本没到华为。后来排查发现问题出在中间还有个透明防火墙防火墙策略把组播MAC地址01:80:c2:00:00:02给过滤掉了而LACPDU正是发往这个目的MAC的报文。这个坑提醒我跨设备对接只要中间还有串联设备第一件事就要确认二层组播报文被正常放行。第二个案例是华三和华为对接后四条万兆链路只协商出两条另外两条一直是Standby。查了两边配置都对后来在华为侧做了display eth-trunk 5 verbose发现unselected端口的原因是“The ports speed or duplex mode is incorrect”原来那两条线缆被接在了接入侧的两个SFP口上但接入侧那两个口被其他配置强行设置了千兆和华为侧万兆对不上。物理层参数不一致LACP协议就算再有本事也救不回来。5.3 用Wireshark分析LACPDU从报文层定位问题有些故障命令行的状态看不出来抓包反而是最直观的手段。LACPDU报文是发往目的MAC 01:80:c2:00:00:02的二层组播帧EtherType是0x8809Subtype是1。只要在思科交换机上做monitor session端口镜像或者华为侧用observe-port镜像把成员口流量镜像给一个分析口再接电脑跑Wireshark就能看到实时LACPDU交互。收到LACPDU后重点看两个TLV字段Actor Information和Partner Information。Actor Information里包含本端系统优先级、系统MAC、端口号、端口优先级、状态字状态字里的Activity位表示是否主动发送Synchronization位表示是否同步Collecting和Distributing位表示是否正常收发业务流量。如果对端报文的Synchronization始终为0说明对端没有被你选中问题多半在主动端选举上如果Collecting和Distributing一直为0说明对端虽然协商成功但没进入转发态这种时候重点查VLAN放通和PVID配置。抓包分析最大的价值在于它能跳过厂商命令行的差异直接看协议本体的交互过程。很多配置层面的“看似正常”放在报文层一眼就能看穿。6. 最后分享几点实战心得做跨厂商LACP对接这几年我最大的体会是这类问题90%不是协议本身难而是厂商实现细节的差异把人绕晕了。所以每次碰上前我都会先做一件事把两端设备的品牌、型号、软件版本写清楚。因为同是思科C9300跟老款3560命令都有细微差别更别说跨品牌了。版本信息确认了再去查对应的命令手册能省掉大量试错时间。另外建议养成一个习惯配置完成后等30秒再验收。LACP协商不是瞬时的链路状态需要经过几次报文交互才能稳定。有些人刚配完立刻看状态发现一个端口还是standby就慌了结果过30秒再看一切正常这是正常现象。耐心等30秒再打流量验证基本不用担心状态没收敛的问题。最后再分享一个操作上的小技巧华为侧用dis mac-address | in broad能快速查看远端设备MAC是否学习到聚合口思科用show mac address-table | include XXX华三用display mac-address三家的MAC表查看命令刚好都是这种格式。这种跨厂商命令的对应关系建议平时就整理在自己的笔记里现场用起来比百度快得多。链路聚合本身不复杂难的是厂商之间的“方言”差异把这些差异摸透了跨厂商对接也就是按部就班的活儿。
返回列表