多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

华三交换机二层链路聚合配置实战:静态聚合与LACP详解

华三交换机二层链路聚合配置实战:静态聚合与LACP详解 最近在客户现场调整一张老网络的接入链路。接入交换机上联核心的两条千兆光口平时流量一大就出现丢包和延迟抖动抓包看是一条链路跑到95%以上另一条基本闲着。客户的需求很简单把两条物理链路捆成一条逻辑链路带宽翻倍单条链路断了也不影响业务。这活儿就是华三交换机最典型的二层链路聚合Link Aggregation配置。这篇文章就把我这次的完整操作过程、命令、踩坑点全部梳理一遍覆盖二层静态聚合和LACP动态聚合两种方式适合正在学华三交换机配置、或者准备在现网做接入链路改造的朋友参考。1. 二层链路聚合到底是什么链路聚合就是把交换机上多个物理端口捆绑成一个逻辑端口这个逻辑口在华三设备上叫Bridge-Aggregation二层聚合口。从上层协议来看它就是一个普通的二层接口可以配置VLAN、Trunk、STP等属性。实际转发数据时流量会按照一定的HASH算法分摊到各个成员口上同时任何一个成员口down掉流量自动改走其他正常成员口整个过程对上层设备完全透明。就二层聚合来说它的核心价值有两个。第一是带宽叠加两条千兆口聚合成一个逻辑口理论最大转发带宽就是两倍虽然实际流量分配受HASH均匀度影响不可能刚好每条链路都50%但整体吞吐提升是实实在在的。第二是冗余成员链路中的一条断掉聚合口依然保持up业务不中断这是单条物理链路根本无法做到的。那什么时候用二层聚合什么时候用三层聚合判断标准很简单看这个逻辑口是打算当二层口用还是三层口用。接入交换机上联核心如果互联接口走Trunk透传多个业务VLAN这就是二层聚合如果互联接口要配IP地址跑路由那就是三层聚合Route-Aggregation。核心和汇聚之间的互联很多场景会直接起三层聚合口配IP但这个文章聚焦二层场景把大部分接入汇聚场景覆盖掉。华三二层聚合又分两种模式静态聚合和动态LACP聚合。静态聚合不和对端跑任何协商协议只要本端把物理口加进聚合组对端同样做了聚合配置链路就能工作。动态LACP聚合需要两端跑LACP协议报文协商通过后才进入Selected状态优点是对端配置错误时能自己感知到不会出现本端聚合了、对端没聚合而导致广播环路。选择上二层接入口和服务器网卡bonding对接我通常推荐LACP动态如果对端是老设备或者对端不方便做LACP就用静态聚合两条命令的事稳妥省心。另外一个容易混淆的点华三交换机上的二层聚合口和成员口的关系。成员口加入聚合组之后它在二层属性上就不再独立了你不能在单独的成员口上配置access vlan、trunk permit这类命令必须在聚合口上统一配置。这个机制避免了几条成员口配置不一致导致的VLAN错乱但也正是新手最容易卡壳的地方。2. 配置前的环境梳理与规划动手配之前先把现状和规划搞清楚。这次现场的设备是一台华三S5130系列作为接入交换机上联到同品牌的汇聚交换机中间有两对千兆光纤互联。我准备把光口G1/0/25和G1/0/26做成一个二层聚合口VLAN透传10、20、30这三个业务网段。在做规划的时候有几个点必须先确认。第一是确认端口能不能做聚合。华三绝大多数固定端口交换机普通千兆口、万兆口都可以做聚合成员口。但不建议把光口和电口混在一个聚合组里虽然技术上有些型号允许但光电口之间延迟、缓存、速率都有差异HASH分摊效果和故障切换行为不可控。我做聚合的习惯是同介质、同速率、同时双工状态这是铁律。第二是速率和双工必须一致。两个成员口一个千兆一个百兆聚合口虽然能起来但低速口会成为瓶颈而且流量HASH到低速口上就会丢包。配之前我习惯用display interface brief先看一下所有候选端口的状态确认都是up、速率千兆、双工full。顺便也看下光模块衰减值光功率异常的口子别急着做聚合先把物理层弄干净。第三是VLAN规划。聚合口要透传哪些VLANpvid设多少先在规划表里写清楚。聚合口是Trunk口的话pvid要跟成员口原生的VLAN一致否则可能会出现打上意外tag的流量。第四是STP的影响。二层聚合口默认是参与STP计算的成员口最终成为Selected之后逻辑口的STP状态会映射到每个成员口。如果有人在接入交换机上把某个成员口单独配置了STP边缘端口之类加入聚合组后这类配置会被忽略统一由聚合口的STP状态接管。这个机制本身没毛病但现场遇到过因为STP状态是Discarding导致聚合口看起来up但业务不通的情况所以配置完一定记得看STP状态。规划阶段我习惯做一张小表把每个聚合组的编号、成员口、VLAN属性、聚合模式、对端设备端口都列出来。多设备同时改配置的时候这张表就是排障的依据省得改到一半不知道哪台配到哪了。3. 华三二层链路聚合完整配置步骤下面进入正题。以华三Comware V7版本的命令为例S5130、S5500、S6300等型号基本通用老版本V5的命令也几乎一致差异我会单独标注。先说静态聚合的配置方法。整个过程分三步创建聚合口、把物理成员口加入聚合组、在聚合口上配置二层属性。登录交换机后第一步创建二层聚合口system-view interface Bridge-Aggregation 1 quit这根命令执行完交换机里就多了一个逻辑口Bridge-Aggregation 1。华三默认新建的聚合口就是二层聚合口如果要明确指定可以加一条port link-mode bridge命令不过V7下默认就是二层模式不加也没问题。第二步进入两个物理口把它们加入聚合组interface GigabitEthernet1/0/25 port link-aggregation group 1 quit interface GigabitEthernet1/0/26 port link-aggregation group 1 quit执行完这两条之后G1/0/25和G1/0/26就成了聚合组1的成员口。这时候如果在成员口上执行display this你会看到端口下的配置已经被聚合组接管原来端口上的二层配置全部失效这一点后面实操部分再细说。第三步在聚合口上配置二层属性。这个聚合口是上联口要透传多个业务VLAN所以配成Trunkinterface Bridge-Aggregation 1 port link-type trunk port trunk permit vlan 10 20 30 port trunk pvid vlan 1 quit如果场景是接服务器的access口做聚合那就把link-type改成access再配port access vlan 10就行。总之所有VLAN相关的配置都写在聚合口上成员口不需要也不允许单独配。第四步保存配置save force静态聚合到这就结束了。对端设备同样把对应的两个口做成一个聚合口两端配置对上链路就起来了。再讲LACP动态聚合的配置。静态聚合的基础上只需要在聚合口上改一个模式interface Bridge-Aggregation 1 link-aggregation mode dynamic quit注意这个mode命令只需要在聚合口上配置。执行完之后成员口会主动向对端发LACP报文对端也必须配置动态模式或者支持LACP协议两端才能协商出Selected成员口。如果对端是静态聚合本端是动态两边协商不起来我们就得在display link-aggregation summary里看到Selected数为0这是很经典的对端类型不匹配故障。另外有一个小细节华三设备默认的LACP系统优先级是32768这个值在两端相同时比较MAC地址谁小谁是主动端。大多数场景不需要改但如果对接的是第三方交换机、要控制哪边主动发报文可以用lacp system-priority命令调整。配置完成后在聚合口上查看状态display link-aggregation summary显示结果里会列出聚合接口编号、模式Static还是Dynamic、成员口数量、Selected口数量以及每个成员口的状态。我每次配完必看的就是Selected这一列Selected2说明两条成员口都正常工作Selected0就要开始查问题了。再介绍一个排查利器display link-aggregation verbose Bridge-Aggregation 1这个命令会列出每个成员口的详细信息包括端口状态、LACP协商状态、Received和Sent的LACP报文计数。对端没配合适的时候这里能看到报文收发不正常结合端口up但聚合Selected不了的现象能快速定位是哪一端的问题。4. 二层聚合口的流量分担与HASH机制聚合口配好只是第一步流量能不能均匀分摊到两条物理链路上直接决定了带宽叠加的效果。刚开始接触聚合的朋友经常问为什么我两条千兆做了聚合跑大流量还是只有一条链路满了答案就在HASH算法里。华三二层聚合的默认HASH因子是源MAC和目的MAC的组合也就是根据报文的SMAC和DMAC做哈希计算结果映射到某一条成员链路上。这个机制本身没毛病但在特定流量模型下会出现明显的负载不均。举个例子。接入交换机上联核心的场景如果下面接的终端数量不多所有流量的目的MAC都是核心设备的MAC源MAC也只有那么几个HASH算来算去结果就那么几种可能所有流量都落在同一条成员口上另一条成员口几乎空转。这不是设备故障是HASH因子单一导致的必然结果。解决方法有两个方向。第一个方向是修改全局的聚合负载分担模式把HASH因子改成包含IP地址的组合。华三V7系统视图下执行link-aggregation load-sharing mode source-ip destination-ip这个命令在不同型号上写法略有差异老版本可能是link-aggregation global load-sharing mode建议执行前先用display link-aggregation load-sharing查看当前模式和可用参数。改成源目IP模式后同样数量终端产生的IP地址组合比MAC组合丰富得多负载均佈效果会有明显改善。第二个方向是改造流量模型让业务流量分散。比如让不同VLAN的终端交错连接到交换机的不同端口上避免大量终端集中在同一块面板上。这个手段对已经跑着的网络来说是伤筋动骨的一般不推荐主要是做新网络规划时可以考虑。还有个细节聚合口下的HASH是按数据流分摊的不是按报文轮询。同一条TCP连接的所有报文会固定走同一条成员链路这样能保证数据包不乱序、TCP性能不下降。所以实际测速时单线程TCP下载往往只能吃到一条链路的带宽这是正常现象想验证聚合带宽得开多线程或者多个并发连接去压测。我现场验收时一般用iperf或者打流仪起几十个会话看到两条成员口都有流量且总吞吐接近2G就说明聚合生效了。最后提一句堆叠环境。如果交换机和另一台做了堆叠IRF跨设备的聚合口也能做。比如聚合组1的成员口一部分在主设备上、一部分在备设备上两台设备如同一个逻辑设备工作。这种场景下链路切换由堆叠内部的转发机制处理比单机聚合更稳。但堆叠本身又是一个大话题这里只提示一句跨设备聚合在堆叠场景下是天然支持的前提是堆叠系统正常运行。5. 实操过程中的问题与排查技巧聚合配置本身命令不多但现场出问题的频率一点都不低。我把这次调试以及过往项目里遇到的高频问题整理成一份速查表每个问题都配上排查思路和解决办法。第一个高频问题聚合口下有成员口但Selected数为0。这种情况我先看对端有没有做对应配置。静态聚合对静态聚合、LACP对LACP模式不匹配最常见。再一个可能是成员口本身物理就不通用display interface brief看端口up状态物理down的口子永远进不了Selected。还有一个隐蔽原因成员口上残留了三层IP地址配置。华三V7下配置了IP地址的物理口是不能加入二层聚合组的需要先undo ip address再执行port link-aggregation group命令。第二个高频问题聚合口是up的但业务流量不通。重点查VLAN配置是否只在聚合口上做了成员口上不要单独再去配置trunk permit。还有一个原因是STP阻塞。接入交换机上联口如果接了多台设备又开了STP逻辑口可能处于Discarding状态物理链路通了但业务被STP挡住。用display stp brief看聚合口和成员口的STP状态如果确实被阻塞确认网络无环之后在对应接口上做STP边缘端口处理或者根据网络设计调整STP优先级。第三个高频问题流量始终走一条成员链路。按照前面说的先确认HASH模式是什么。如果默认源目MAC且终端数量少修改为源目IP模式再做压力测试。同时检查对端设备是不是也做了聚合如果对端两个物理口是独立口没有聚合那HASH后的流量倒是都进了聚合口但回程流量会走对端的某个单独口整体效果自然也不好这个要两端一起捋。第四个问题成员口加入聚合组后原来在物理口上的配置好像“丢了”。这不是丢了是华三的机制就是如此——成员口加入二层聚合组后它自身的二层配置属性完全由聚合口接管物理口上原有配置被覆盖。如果你想把某个成员口从聚合组里摘出来用undo port link-aggregation group原来被覆盖的配置并不会自动恢复需要重新配置。所以做聚合前最好保存一份原始配置或者从运行配置里把端口原有配置备份出来摘除成员口时再补回去。第五个问题LACP动态聚合配置正确但协商不稳定。检查两端LACP报文收发是否正常用display link-aggregation verbose看每个成员口的Received/Sent报文计数。如果报文计数一直在涨但端口状态长期处于Unselected看下两端LACP系统优先级设置。优先级高的设备数值小是主动端主动端的端口状态决定整个聚合组的Selected状态。如果两端优先级都是默认值且MAC地址大小导致主动端落在配置错误的那一端就会出现奇怪的现象这时在正确的设备上手动调低lacp system-priority就能解决。再单独讲讲我现在用的一个监控技巧。配置完聚合口后我会把display link-aggregation summary的Selected数、每个成员口的流量速率都记录一次作为基线数据。后期巡检时只要对比Selected数有没有异常变化、两条成员口入方向速率是否相对均衡就能判断聚合链路健康度。比等人报障再排查被动得多。另外一个和模拟器相关的小提示很多朋友喜欢先在HCL华三模拟器里练手会遇到启动报virtualbox api相关错误。这基本都是HCL版本和VirtualBox版本不兼容导致的网上常见解法是安装指定版本的VirtualBox或者调整HCL的兼容模式。命令本身在模拟器里和真机几乎一致但模拟器对LACP协商的仿真有时和真机有细微差异真实项目还是以真机验证为准模拟器更适合练命令流程。6. 实际项目中的几点配置经验最后分享几条我在实际项目中沉淀下来的经验不一定写在官方文档里但对减少故障很有帮助。第一聚合口和对端设备要同步修改配置。我见过不止一次一台设备配好了聚合另一台设备还没来得及改中间业务已经出现瞬断。后来我就养成了一个习惯先把两端所有配置命令准备好写在文本里核对一遍然后约定一个变更窗口两端同时提交配置。如果条件不允许同时操作至少先做好对端的配置脚本配完一端立即去配另一端中间不让流量长时间跑在半聚合状态。第二聚合口不要随意修改成员口的速率和双工模式。华三设备在聚合口下通常会自动同步成员口速率但如果你手工在某个成员口上强制了speed或者duplex可能导致该成员口和对端协商异常。物理参数尽量保持默认自协商除非现场有特殊的长距离链路问题。第三注意聚合口和业务侧配置的联动。比如上层设备在Trunk口到接入交换机之间跑了VLAN10的DHCP聚合口的pvid改了、或者permit vlan漏了某个VLAN终端拿地址或者访问业务就会出问题。这类问题排查起来特别隐蔽因为物理层全通、聚合口也up业务却断断续续。我的排查顺序是聚合状态 - VLAN透传 - 三层网关 - DHCP/STP兜底一步步缩圈。第四机框式交换机如果做跨板聚合成员口分布在不同业务板上要注意板卡的转发芯片能力和HASH算法可能存在的差异。跨板聚合的HASH结果偶尔会出现板卡间不均衡这时候调整HASH模式还是有效手段。不过对于绝大多数固定端口的盒式交换机来说没有这个烦恼成员口随便选。这次现场配置收尾时我还在聚合口上顺手开了流量统计功能display interface Bridge-Aggregation 1能看到入方向和出方向的累计流量过几天回访客户时直接对比数据就能判断带宽是否真的翻倍了。链路聚合在华三设备上是一项非常基础但又极其重要的功能理解了它的HASH机制和状态协商逻辑后续再接触三层聚合、跨设备聚合、堆叠场景都能触类旁通。先把二层这一套跑熟比什么都强。
返回列表