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

文章详情

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

M-LAG原理与实战:跨设备链路聚合如何替代堆叠,实现高可用网络

M-LAG原理与实战:跨设备链路聚合如何替代堆叠,实现高可用网络 M-LAG这个东西圈里聊得很多但能把原理讲透的人不算多。我早些年调CE交换机的时候第一次看到M-LAG的配置心里其实挺嘀咕的“这不就是堆叠吗搞这么复杂干嘛”后来被生产环境的故障教育了几次才真正明白M-LAG想解决的根本不是“把两台设备变成一台”这种表象问题而是要在不牺牲设备独立性的前提下把跨设备的链路聚合能力做出来。这篇就把我对华为M-LAG的理解从设计动机到转发细节再到踩坑经历一次说清楚。1. 从STP的痛到M-LAG的诞生为什么传统组网不够用了1.1 传统双上行的链路利用率困局先看一个再常见不过的场景。两台服务器做双网卡绑定分别接到两台不同的交换机上上行链路各跑各的。没有M-LAG之前这台服务器要想实现链路冗余只有两条路要么走STP生成树协议把其中一条链路Block掉另一条作为备份要么干脆把两台交换机用堆叠线缆捆成一台逻辑设备。走STP路线的痛点是显而易见的。Block掉的那条链路纯粹是摆设流量全压在一条链路上带宽利用率天花板就是50%。我在现网见过不少客户服务器明明做了四网卡绑定结果流量一出服务器就被STP砍半业务一上来就丢包排查半天才发现是网络侧把出口给堵了一半。更麻烦的是STP的收敛时间虽然RSTP已经能把收敛压缩到秒级甚至亚秒级但在虚拟化大行其道的今天业务迁移、虚拟机热迁移对网络中断的容忍度通常是毫秒级STP这种机制从骨子里就不太合适了。有人会问那堆叠呢堆叠确实能解决链路利用率的问题。两台交换机堆叠之后跨设备链路聚合组跨框Eth-Trunk就能把两条物理链路同时用起来一条断了另一条继续扛带宽不浪费。但堆叠有一个绕不开的坎它把两台设备的控制平面合并了主控板一旦出问题整台逻辑设备的稳定性就取决于那一根堆叠线缆。堆叠链路抖动、主备倒换引发整个堆叠系统重启的场景我亲眼见过不止一次。1.2 M-LAG的设计哲学设备独立转发协同M-LAG的英文全称是Multi-Chassis Link Aggregation Group也就是跨设备链路聚合组。它要解决的就是上面这两个问题既要让两条上行链路同时干活又不能让两台设备的命运绑在一起。华为M-LAG的核心设计思想可以概括为八个字控制独立转发协同。每台成员设备依然拥有独立的控制平面、独立的转发表项、独立的管理IP设备之间的角色主备关系仅仅是协商出来的逻辑角色而不是堆叠那种“一个主控带一群备机”的强耦合关系。M-LAG只在一件事上做协同让双归设备服务器、路由器、防火墙等认为它们连接的是同一台交换机从而把跨设备的链路正常聚合起来。这个设计带来的一个直接好处是两台设备可以运行不同版本的操作系统当然官方建议一致可以分别重启、分别升级一台设备故障不会拖垮另一台。这在现网运维里是实打实的优势。1.3 一个M-LAG域的基本成员组成华为M-LAG的实现里有几个关键组件是必须搞清楚的M-LAG成员设备参与M-LAG组网的两台交换机可以是CE系列框式设备也可以是S系列盒式设备两者之间通过堆叠线缆互联后统一对外呈现M-LAG能力。Peer-link成员设备之间的互连链路负责传递M-LAG协商报文也承担部分跨设备流量转发。华为要求peer-link必须使用Eth-Trunk捆绑至少两条物理链路避免单点故障。DFS Group双主检测组M-LAG的协商机制成员设备通过DFS Group协议在peer-link上交互DRCPDistributed Relay Control Protocol分布式中继控制协议报文完成角色选举和状态同步。Keepalive链路设备之间的独立心跳链路用于在peer-link故障后检测双主状态通常通过管理口或独立三层接口实现不承载业务流量。这些组件配合起来才构成了一个完整的M-LAG系统。下面逐个拆开讲。2. 控制面协作与转发面行为M-LAG核心机理拆解2.1 DRCP协议与角色选举过程M-LAG的两个成员设备之间怎么确定谁是主谁是备靠的是DRCP协议。这个协议工作在peer-link上报文周期性地在M-LAG成员设备之间交互。每台设备通过DRCP报文通告自己的优先级、系统MAC、M-LAG组编号等信息然后基于优先级进行角色选举。华为设备的选举规则不复杂。M-LAG优先级数值小的设备优先成为主设备如果优先级相同则比较系统MAC地址MAC小的为主。主设备在M-LAG系统中承担什么特殊职责呢虽然两台设备都独立转发流量但M-LAG相关的全局协商、角色维护、配置同步这些活是以主设备为准的。细节上要注意DFS Group在peer-link上需要有一个虚拟的IP地址也就是M-LAG的虚拟系统MAC对应的管理地址。这个地址是两台设备共享的用于交互DFS报文。华为实现里peer-link两端的Eth-Trunk接口需要配置相同的M-LAG IDDRCP才能正确协商起来。2.2 M-LAG接口与普通接口两种角色的转发逻辑差异M-LAG域建立之后成员设备上的接口会被划分为两类M-LAG接口两台设备上配置了相同M-LAG ID的接口属于同一M-LAG组。这类接口对双归设备呈现为一个逻辑Eth-Trunk接口。M-LAG接口之间有跨设备的本地邻居表同步机制也就是说一端接口学到MAC地址后会通过peer-link同步给对端保证两端都能独立做出转发决策。M-LAG接口有一个重要特性流量从哪个M-LAG接口进来优先从哪台设备本地出。普通接口成员设备上未加入M-LAG组的接口行为跟普通交换机接口一致。普通接口接入的设备如果是单归的也不会因为对端M-LAG状态波动而感知到网络变化。转发逻辑上有个关键点对于M-LAG接口收到的流量设备会优先从本地的M-LAG成员口转发只有目的地址对应的出接口在对端设备也就是单归在对端设备的端口或者对端的M-LAG接口时流量才会通过peer-link跨设备转发。2.3 跨设备流量转发的三种模型M-LAG系统里流量从接入设备进入后出方向可能落在任意一台成员设备上。我把实际可能遇到的转发模型归纳成三种模型一源和目的都命中本设备M-LAG口。比如服务器A双归到M-LAG-1组服务器B双归到M-LAG-2组两组都在这台设备上有成员口。这时候流量从本设备进、本设备出完全不经过peer-link转发效率最高。这是M-LAG的高速路。模型二源在本设备M-LAG口目的在对端普通口或对端M-LAG口。这种情况下本设备查MAC表发现出接口在对端就会把报文通过peer-link转发过去由对端完成最终转发。这种流量会吃掉peer-link带宽所以做规划的时候peer-link带宽一定要留够余量。模型三双归设备的单播流量通过ECMP或哈希分摊到M-LAG的两个成员口上。链路聚合的哈希算法决定流量的分配策略五元组哈希会把不同TCP连接分摊到两条物理链路上。一旦其中一条链路故障聚合组会重新哈希剩余链路接管所有流量。这个收敛过程不涉及STP状态机速度要快得多。2.4 MAC与ARP在M-LAG域内的同步机制M-LAG能实现跨设备转发基础是MAC地址表和ARP表在两台设备之间保持一致。华为的实现方式是在peer-link上建立一条逻辑的同步通道M-LAG成员设备通过DFS Group的扩展报文把本地学到的MAC地址、ARP表项同步给对端。这个机制要注意一个细节同步的优先级高于业务报文的正常学习。当一台设备从peer-link收到来自对端的同步表项后如果本地已有相同的MAC但出接口不同会以同步表项覆盖避免出现MAC表震荡。这在双归服务器发生主备切换的场景下尤为关键。另外对于虚拟系统MACM-LAG虚拟MAC华为默认生成一个虚拟MAC地址作为M-LAG域的标识两台设备对外呈现相同的MAC这样下游设备比如路由器在做ARP解析的时候只会学到同一个MAC对应两个接口不会因为MAC漂移触发ARP刷新风暴。3. M-LAG vs 堆叠相似的表象不同的内核3.1 配置形态上的相似性很多第一次接触M-LAG的人会在配置界面上产生迷惑。因为华为设备的M-LAG配置里可以看到类似“Eth-Trunk”、“双主检测”、“系统MAC”这些关键词跟堆叠配置非常像。如果只看配置文件两台设备组M-LAG和一个堆叠系统之间的界限似乎很模糊。这种相似性是刻意为之的。M-LAG的配置模型吸收了堆叠的很多优点尤其在上行链路的聚合配置上两者都支持跨设备链路聚合组。但对工程师来说必须清醒地认识到堆叠和M-LAG是两条不同的技术路线。3.2 控制平面耦合度差异堆叠的本质是多个成员设备通过堆叠口形成虚拟设备成员设备之间共享一套控制平面。主设备统一运行路由协议、管理整个系统的转发表备设备更像是一个远程线卡。主设备掉电或堆叠链路断开整个堆叠系统会进入竞争或分裂状态严重的话会引发整机重启。M-LAG则完全不同。两台设备各自运行各自的路由协议进程、各自维护转发表只是通过DFS Group做有限的状态同步。peer-link断掉不会导致设备重启只会触发双主检测和相应的流量切换逻辑。从故障域隔离的角度看M-LAG把一个潜在的大规模故障隔离成了单台设备级别的小故障。3.3 升级维护方式的本质差别这一点在运维中的体感最明显。堆叠系统做软件升级通常需要整机升级虽然可以通过issuIn-Service Software Upgrade技术做到业务不中断但操作复杂度高风险也不小。M-LAG系统升级则可以做到真正的一台一台来把其中一台设备的流量先切走升级重启恢复业务再操作另一台。两台设备软件版本可以短暂不一致M-LAG协议会兼容这种状态。我在一个数据中心项目里做过一次M-LAG设备升级整个过程只影响了被升级设备上单归业务口的那部分流量双归业务完全不受影响。这在堆叠架构下是不可想象的。如果对业务连续性要求高M-LAG在运维灵活性上的优势值得认真考虑。3.4 一个直观的对比表格对比维度M-LAG堆叠控制平面各自独立共享一套故障影响域单台设备整个堆叠系统跨设备链路聚合支持支持软件升级方式逐台升级主备倒换或整机升级版本一致性要求建议一致允许短时不一致必须一致管理模型每台独立管理虚拟成一台管理Peer链路角色协商主备 备份转发承载堆叠协议与控制报文这个表格基本能回答“为什么有了堆叠还要搞M-LAG”这个问题。堆叠适合追求管理简化、端口密度整合的场景M-LAG适合追求可靠性、运维灵活性的场景。4. 双主故障场景peer-link断了会发生什么4.1 双主问题的根源M-LAG的正常运行高度依赖peer-link的稳定性。一旦peer-link发生故障两台设备之间的协商通道中断会立刻产生一个严重问题两台设备各自认为自己是主设备都开始独立处理转发。如果此时双归设备比如服务器依然同时向两台设备发送流量就会出现环路风险。以服务器为例正常情况下服务器通过Eth-Trunk把两条物理链路聚合无论流量从哪台交换机进最终转发结果都一致。但peer-link断掉后两台交换机之间没有互联通道无法同步MAC表。服务器从两个口发出的流量在两台设备上分别处理遇到广播报文或未知单播两台设备都会独立泛洪导致下游收到重复报文。更严重的是如果M-LAG成员设备下方还有二层环路拓扑甚至会产生广播风暴。4.2 双主检测机制DFM备机的自我约束华为M-LAG解决双主问题的手段叫做DFMDual-Failure Mode双主检测机制。M-LAG成员设备之间通过keepalive报文周期性交互心跳。当peer-link故障后设备检测不到对端的DRCP报文但keepalive链路依然正常此时就能明确判断peer-link断了但对端设备还活着。检测到双主状态后备机要做什么关键动作是把自己M-LAG接口全部置为Down同时保留普通接口的转发能力。这样一来双归设备通过M-LAG口接入的流量只会走到主设备避免了双主泛洪的问题。单归在备机普通口上的流量不受影响可以继续转发。这个设计的巧妙之处在于它把故障的影响范围精确控制在M-LAG接口上。备机的M-LAG口全部失效但其他业务口照常工作设备的可用性并没有完全丧失。4.3 双主恢复与状态回切peer-link恢复后两台设备重新建立DFS协商备机会根据新收到的表项信息重新把M-LAG接口置为Up。这个恢复过程要小心因为如果M-LAG接口重新加入以太网聚合组的速度太快可能造成短暂的MAC漂移或环路。华为的实现在恢复过程中会有延迟校验确保两端表项基本一致后才放通M-LAG口。这里有一个重要的运维经验peer-link故障后不要急着恢复先检查两台设备的MAC表是否一致再确认备用设备状态最后再恢复peer-link物理链路。如果peer-link恢复瞬间两台设备表项差异过大可能引发一次小的流量震荡。建议在维护窗口内人工确认后再恢复。4.4 Keepalive链路设计要点既然keepalive链路承担着双主检测的职责它在可靠性设计上就不能马虎。华为要求keepalive链路必须与peer-link走不同的物理路径最好使用独立的三层接口或管理口不能跟业务流量混在一起。我在一个项目里见过一个反面教材keepalive走的是业务VLAN的三层接口结果业务侧一割接keepalive跟着断了peer-link恰好在同一时间做了收敛两套链路同时失联设备直接进入双主状态M-LAG口全Down业务全断。这个案例告诉我们keepalive链路越独立越好它不承载任何业务流量存在的意义就是在最坏时刻告诉设备“对端还活着”。在配置keepalive时还有一点要注意华为通过peer-link之间的虚拟IP做心跳检测如果peer-link断了但keepalive也断了设备无法确认对端状态此时华为默认选择不阻塞M-LAG口确保至少还有流量能转发。在极端情况下这可能带来环路风险所以keepalive链路的双链路保护也建议做上。5. 配置一个M-LAG域的完整思路与关键命令顺序5.1 配置前必须明确的组网规划动手配置之前有几个问题必须先想清楚。你把哪两个接口定义成M-LAG接口双归设备接哪两台交换机peer-link用哪个Eth-Trunkkeepalive走哪个接口这些不确定后面配置全是空中楼阁。我在现网推荐的做法是画一张表把所有规划列清楚再动设备项目规划值说明成员设备CE6857-01 / CE6857-02两台相同型号版本保持一致Peer-linkEth-Trunk 1捆绑两个40GE口互联对端M-LAG ID10对应服务器接入的M-LAG组虚拟系统MAC手动配置或自动生成建议手动便于后续排障识别Keepalive接口GE0/0/1管理面走独立路径不承载业务DFS Group编号1两台设备配置相同双归设备服务器A四网卡绑定两两接入两台设备业务VLAN、接口类型是Access还是Trunk也要提前定好。M-LAG接口的VLAN配置必须保持一致否则双归设备在聚合后会出现VLAN成员不一致的问题流量转发会出奇奇怪怪的故障。5.2 核心配置命令序列华为CE系列示例华为CE交换机的M-LAG配置我一般按这个顺序操作第一步配置peer-link的底层链路。两台设备各拿出两个物理口加入Eth-Trunk 1配置Trunk模式放通业务VLAN但不能配置为M-LAG口peer-link本身是邻居链路不是M-LAG接入链路。# 设备CE6857-01 interface eth-trunk 1 mode lacp-static trunkport 10GE1/0/1 trunkport 10GE1/0/2 port link-type trunk port trunk allow-pass vlan 100 200 # 对等设备CE6857-02配置相同第二步配置DFS Group和虚拟系统信息。# 两台设备都要配置 dfs-group 1 peer-link 1 source ip 10.10.10.1 peer ip 10.10.10.2 m-lag system-mac 0000-5e00-0101这里的source ip和peer ip实际上被华为用来做keepalive检测和状态交换需要配置在本设备实际可达的地址上。系统MAC配置则让两台设备对外呈现统一标识。第三步配置M-LAG接口并加入对应Eth-Trunk。# 设备CE6857-01 interface eth-trunk 10 mode lacp-static m-lag id 10 port link-type trunk port trunk allow-pass vlan 100 200 # 对等设备CE6857-02Eth-Trunk编号可以不同比如Eth-Trunk 20但m-lag id必须同为10 interface eth-trunk 20 mode lacp-static m-lag id 10 port link-type trunk port trunk allow-pass vlan 100 200第四步配置Keepalive链路。# 设备CE6857-01 interface MEth0/0/1 ip address 192.168.10.1 255.255.255.0 # 设备CE6857-02 interface MEth0/0/1 ip address 192.168.10.2 255.255.255.0华为实现上keepalive地址通常配置在管理口上也可以配置在专用VLANIF接口上但不要跟业务VLAN共用。第五步检查M-LAG收敛状态。配置完成后用display m-lag verbose和display dfs-group verbose查看协商结果。正常情况下能看到两台设备角色一主一备、M-LAG口状态正常、keepalive链路状态为Up。5.3 配置顺序为什么不能乱有人图省事先把M-LAG接口配置进去再配DFS Group最后配peer-link结果发现M-LAG状态一直起不来。这是因为DFS Group的协商依赖于peer-link的底层链路。peer-link没有Up之前DFS Group无法建立邻居关系M-LAG域的虚拟系统MAC也不会生效。接口已经带上了M-LAG属性却没有可用的控制平面来协调自然起不来。所以最稳妥的顺序永远是底层链路 - Eth-Trunk - DFS Group - 虚拟系统MAC - M-LAG接口 - keepalive。这个顺序背后的逻辑是让设备先把控制面通道建好再去处理转发面接口避免中间状态下的流量异常。5.4 接入双归服务器的配置要点服务器侧接入M-LAG设备通常也是配置链路聚合LACP模式。服务器的Eth-Trunk要与交换机侧保持相同的LACP参数比如LACP超时时间、系统优先级。交换机侧M-LAG口已经配置了lacp-static模式服务器侧用LACP动态模式即可正常协商。这里有个常见的坑服务器绑定网卡时如果配置了不同的哈希策略会出现流量分布不均的现象。比如服务器默认按源MAC哈希而交换机按五元组哈希两边哈希策略不一致会导致流量在跨M-LAG设备转发时出现倾斜。建议把服务器网卡绑定的哈希策略跟交换机Eth-Trunk的负载分担策略对齐尽量都按五元组哈希。6. 业务场景适用性分析M-LAG适合干什么不适合干什么6.1 数据中心服务器接入场景M-LAG最适合的场景就是数据中心里的服务器双归接入。虚拟机服务器、物理机集群、存储双活这些业务的特点是要求链路高可用、支持负载分担、带宽利用率要高。M-LAG提供的跨设备聚合能力让服务器一段网线连一台交换机另一段网线连另一台交换机两台交换机之间无需堆叠线缆即可协同工作。尤其对存储网络来说M-LAG几乎是必选项。存储双活场景里FC链路或者iSCSI链路如果走堆叠堆叠分裂会直接导致存储链路中断M-LAG的两台设备独立转发一台挂掉另一台继续提供服务存储多路径软件感知不到交换机侧的变化业务连续性有保障。6.2 网关设备双归与路由协议联动如果M-LAG域还需要作为网关比如VLANIF接口终结业务VLAN华为的实现也支持VLANIF在M-LAG设备上做主备或双活。双网关模式下两台设备配置相同的VRRP虚拟IP结合M-LAG的跨设备聚合业务侧接入的服务器网关只有一个IP但物理上是两台设备在同时转发。上层路由协议OSPF或BGP跑在M-LAG设备上时华为通过NSTNon-Stop-Forwarding不间断转发配合M-LAG的peer-link同步机制实现主备切换时路由协议不中断。实测下来M-LAG设备主备倒换期间OSPF邻居关系保持稳定业务丢包很少。6.3 M-LAG的边界哪些场景不该用M-LAG不是万能的。它在二层接入和三层网关接入表现优秀但不适合作为核心骨干的替代方案。核心层需要的是路由级冗余和快速收敛M-LAG的跨设备链路聚合优势在这个场景体现不出来。另外如果两台M-LAG设备之间的距离过远peer-link的时延会成为瓶颈。华为建议peer-link最好在同一机房内跨楼宇甚至跨城市部署M-LAG不仅延迟高DRCP协商报文的稳定性也会受影响。跨地域的可靠性应该交给路由协议和上层业务方案去解决而不是靠M-LAG硬扛。还有一点要提醒不要把M-LAG当作两台设备性能叠加的手段。M-LAG的跨设备转发能力受限于peer-link带宽和两台设备各自的转发能力并不会因为组成M-LAG域就获得2倍的整机转发性能。在考虑容量规划时仍应按单台设备的处理能力加一定冗余来考虑。7. 常见故障排查链路从现象到根因的实战路径7.1 M-LAG口起不来这是我接到的排障请求里频率最高的问题之一。M-LAG口状态长期在Down状态服务器侧的聚合链路也起不来。排查的时候按这个顺序走第一步确认peer-link状态。display eth-trunk 1查看Eth-Trunk成员口是否都处于Up状态如果成员口Down先查物理光模块和光衰。peer-link不在Up状态M-LAG域根本建立不起来。第二步确认DFS Group协商状态。display dfs-group verbose看两台设备的邻居状态是否达到Full。如果一直停留在Init检查source ip和peer ip的配置是否对映以及底层路由是否可达。第三步确认M-LAG接口的m-lag id是否一致。这个错误非常隐蔽两台设备上配置的Eth-Trunk编号可以不同但m-lag id必须完全一致。id不一致时DRCP协商会失败但设备上的错误日志并不直观。7.2 双归设备聚合成功但流量不通聚合起来了状态也是Up但服务器之间互访不通。这种问题通常要从MAC表入手排查。在两台设备上分别执行display mac-address对比同一台服务器的MAC地址出现在哪个接口上。正常情况下MAC应该在M-LAG接口上同步出现。如果发现MAC只出现在一端而另一端没有说明M-LAG的MAC同步出了问题。常见的根因是peer-link的Eth-Trunk配置中没有放通业务VLAN。M-LAG的MAC同步报文依赖于peer-link承载业务VLAN的转发能力VLAN被过滤掉同步自然失败。7.3 主备切换后流量瞬间中断华为M-LAG在主备切换时理论上能做到亚秒级收敛但实测中偶发秒级中断需要看几种可能性。一是keepalive检测周期配置过长双主检测延迟导致切换时间拉长。二是设备上有大量MAC表项NST同步需要消耗时间。三是M-LAG口对应的物理链路出现了link flapping导致LACP一直在重新协商。排障的时候建议打开debug开关debugging dfs-group all抓取DFS协商报文看看主备切换的时间戳和状态机跳转是否和业务中断时间吻合。这个方法能快速定位问题出在协商阶段还是转发阶段。7.4 配置同步不一致导致的诡异现象M-LAG两台设备的配置必须保持高度一致尤其在VLAN、接口类型、QoS策略这些跟转发强相关的配置上。如果一端配了VLAN 200而另一端没配双归设备从这个VLAN接入的流量就可能出现“时通时不通”的诡异现象。华为的配置同步机制能把M-LAG接口的配置从主设备同步到备设备但它同步的是M-LAG相关配置不是全量配置。普通接口的VLAN配置不会自动同步必须人工确保两台设备配置一致。建议在每台设备上定期做配置比对或者配置完成后用display current-configuration逐项核对。8. 现网设计里的隐藏细节与经验补遗8.1 Peer-link带宽规划不能只看当前流量前面讲过M-LAG的跨设备流量模型命中时peer-link要承担转发。这就意味着peer-link的带宽规划不能只按“平时没多少跨设备流量”来估算。真实场景里一旦双归服务器的流量发生哈希倾斜可能产生大量本来可以本地转发的流量被送到对端。两台设备的M-LAG口全部Up时peer-link利用率可能很低但某些端口故障后流量重新分布peer-link利用率立刻飙升。我在一个虚拟化集群里遇到过这种情况四台服务器做双归其中一台交换机有两个M-LAG口因光模块故障被置Down结果原本均匀分布在两台设备上的流量就集中到另一台上peer-link利用率从20%直接干到90%。所以peer-link带宽至少按单台设备业务口总带宽的30%-50%来预留条件允许的话直接跟对端用两根100GE或40GE捆绑别在带宽上省成本。8.2 版本配套与兼容性检查M-LAG是控制面协议和转发面协同的结合体不同版本间的兼容性很关键。华为在V200R005以及之后的多数版本里都支持M-LAG但不同版本的功能特性有差异。早期版本不支持M-LAG接口上的IPv6组播同步也不支持某些VXLAN场景下的M-LAG能力。部署之前一定要去华为官网查对应版本的特性支持列表。两台设备的软件版本官方要求一致实际运维中短期不一致可以运行但长期跨版本运行M-LAG会带来不可预知的风险。版本升级时必须遵循先备后主的顺序避免主备同时处于不同版本而出现协议兼容问题。8.3 网管监控层面的盲区M-LAG组网下网管系统的监控配置有一个容易忽略的地方。很多网管软件默认按单台设备的接口状态去告警但M-LAG接口在备机上Down掉时业务不一定中断因为流量已经全部切到主机。如果网管的告警规则不做聚合和抑制会频繁产生误报。我在实际运维中把M-LAG接口的告警策略绑定到M-LAG组状态上只有当整个M-LAG组的成员口全部Down才告警单台设备接口状态变化并不直接触发高优先级告警。这一招大幅度降低了告警噪音。8.4 与VXLAN的协同如果数据中心网络用了VXLAN虚拟可扩展局域网M-LAG同样可以作为VXLAN接入层的主要冗余方案。华为VXLANM-LAG的部署模型里两台M-LAG设备作为 VTEPVXLAN隧道端点通过peer-link同步VXLAN隧道的MAC/VNI表项。VXLAN流量在M-LAG设备间走peer link转发时要注意配置peer-link允许VXLAN报文封装后的外层IP报文通过。这个场景下peer-link可能承载大量带VXLAN封装的业务流量带宽规划更要留足余量。8.5 一些可以拿来就用的检查命令最后分享几条我在每次M-LAG割接或故障处理时必用的命令display m-lag verbose查看M-LAG整体状态包括主备角色、M-LAG接口清单、peer-link状态。display dfs-group verbose查看DFS邻居状态、keepalive链路状态、表项同步情况。display m-lag error查看M-LAG相关的错误记录排查协商失败原因很直接。display mac-address m-lag查看M-LAG同步的MAC表项确认同步是否正常。display eth-trunk 10查看Eth-Trunk成员状态与负载分担算法。M-LAG这个东西原理搞清楚之后配置和排障就不会一头雾水了。它不像堆叠那样把所有状态集中在一起而是通过一个精炼的协商机制把两台设备耦合成一个逻辑转发平面。理解它关键不是背命令而是理解主备角色、peer-link、keepalive、MAC同步这四个核心要素之间的关系。实际部署时多看状态输出、多想故障场景、多做版本兼容性验证就能避免大多数经典坑。如果有条件建议在实验室里先搭一套最小M-LAG环境亲眼看一次peer-link断掉后M-LAG口Down掉的过程再亲眼看一次恢复比看十篇文档都有用。
返回列表