【技术】跨设备链路聚合的技术——M-LAG

原创:厦门微思网络

M-LAG(Multichassis Link Aggregation Group)提供一种跨设备链路聚合的技术。M-LAG通过将两台接入交换机以同一个状态和用户侧设备或服务器进行跨设备的链路聚合,把链路的可靠性从单板级提升到设备级。同时,由于M-LAG设备可以单独升级,保证了业务流量的稳定性,使得M-LAG技术在数据中心网络广泛应用。

点击查看【相关学习】

高可用技术——M-LAG

【华为】VRRP原理与配置

【实验】配置STP

为什么需要M-LAG

近几年来,M-LAG作为一项虚拟化技术被广泛使用,然而M-LAG技术的发展并非一蹴而就。

众所周知,传统的数据中心网络采用设备和链路冗余保证高可靠性。因其链路利用率低和网络维护成本高,数据中心交换机又提出了堆叠技术,将多台交换机虚拟成一台交换机,达到简化网络部署和降低网络维护的目的。

为了满足业务量增大和对网络更高可靠性的要求,于是出现了M-LAG虚拟化技术,通过多台设备间的链路聚合将链路的可靠性从单板级提高到设备级。

STP+VRRP技术

传统的数据中心网络采用STP+VRRP协议来保障链路冗余,满足了基本的可靠性需求。

图片


STP+VRRP技术示意图

但STP+VRRP方案存在如下痛点,已无法满足数据中心流量和规模的快速增长。

  • STP的阻塞链路机制,导致二层链路利用率低。
  • VRRP的主备备份功能,导致三层链路利用率低。
  • Server仅支持以主备方式接入设备。

针对STP+VRRP方案的缺点,先后出现了堆叠和M-LAG虚拟化技术,用于满足业务量增大和对网络更高可靠性的要求。

堆叠和M-LAG虚拟化技术

堆叠和M-LAG实现跨设备链路聚合提高二层链路利用率,M-LAG的双活网关技术提高了三层链路利用率,且服务器可以通过链路聚合实现双活接入设备。

图片


堆叠和M-LAG虚拟化技术示意图

M-LAG和堆叠都可以解决传统数据中心网络的问题,但从业务稳定性考虑,通常选择M-LAG。

堆叠和M-LAG作为广泛运用于数据中心网络接入层的两种横向虚拟化技术,他们都可实现终端的冗余接入,实现链路冗余备份,提高数据中心网络的可靠性和可扩展性。然而,与堆叠技术相比,M-LAG存在更高的可靠性和独立升级的优势。

对比了堆叠和M-LAG的优劣。针对升级过程业务中断时间要求高、对组网可靠性要求高的场景,我们推荐用户使用M-LAG技术,用作数据中心网络终端接入技术。

图片

堆叠和M-LAG的对比

如何实现M-LAG组网

在M-LAG系统中,ServerA、DeviceA和DeviceB进行跨设备链路聚合。DeviceA和DeviceB通过动态交换服务组DFS Group(Dynamic Fabric Service Group)完成M-LAG设备之间的配对,当DeviceA和DeviceB配对成功后会协商出主备关系。在M-LAG正常工作后,DeviceA和DeviceB之间通过peer-link链路实时同步对端信息。而M-LAG的故障检测则主要依赖于双主检测链路(DAD link,Dual-Active Detection link),设备通过双主检测链路定期互发心跳报文。

图片


M-LAG组网示意图

M-LAG组网详细的实现流程包括以下五步:DFS Group配对、DFS Group协商主备、M-LAG成员口协商主备、双主检测和M-LAG信息同步。

图片


M-LAG组网实现过程

M-LAG是如何工作的

M-LAG正常工作场景

  • 已知单播流量转发

当M-LAG正常工作时,自用户侧发往网络侧的已知单播流量(图中绿色流量)由M-LAG主备设备形成逐流负载分担,共同进行流量的转发。反之,自网络侧发往用户侧的已知单播流量(图中黄色流量)同样由M-LAG主备设备形成逐流负载分担,共同进行流量的转发。

图片

M-LAG已知单播流量转发示意图

  • 组播、广播和未知单播流量转发

当M-LAG正常工作时,自用户侧发往网络侧的组播、广播和未知单播流量(图中黄色流量)在设备间泛洪扩散。对于可能造成的环路(图中红色),则利用M-LAG的单向隔离机制隔绝由peer-link发往M-LAG成员口的流量。反之,当网络侧发往用户侧的组播、广播和未知单播流量(图中绿色流量)在设备间泛洪扩散时,同样利用单向隔离机制隔绝由peer-link发往M-LAG成员口的流量。

图片

M-LAG组播、广播和未知单播流量转发示意图

M-LAG故障工作场景

  • 上行链路故障

M-LAG接入普通以太网场景,由于M-LAG主设备的上行链路故障,通过M-LAG主设备的流量均经过peer-link链路进行转发。M-LAG接入三层网络场景下,需要在M-LAG主备设备间配置三层逃生链路,使得到达M-LAG主设备的上行流量通过三层逃生链路到达M-LAG备设备。

当故障的上行链路恰好为双主检测链路,此时对于M-LAG正常工作没有影响。一旦peer-link也发生故障,M-LAG出现双主冲突,双主检测又无法进行,此时用户侧发往Master的流量会因为没有上行口而被丢弃。针对这个问题我们可以用管理口作为双主检测链路;也可以配置Monitor-link功能,将M-LAG成员口和上行口关联,一旦上行链路故障会联动M-LAG成员口故障,这样就防止了流量的丢失。

图片

上行链路故障示意图

  • M-LAG成员口故障

当M-LAG成员口故障时,用户侧发往网络侧的流量(图中绿色流量)由正常链路负载分担转发,网络侧不感知故障,流量依然发送给双归设备。由于M-LAG成员口故障,双归场景变为单归场景,此时端口隔离机制放开。当M-LAG成员口故障设备收到从网络侧发往用户侧流量(图中黄色流量),会通过peer-link将流量交给正常工作的M-LAG设备转发到用户侧。

当M-LAG成员口故障恢复后,M-LAG成员口UP会触发一次M-LAG系统的MAC表项同步,单归场景恢复为双归场景,流量恢复负载分担转发。

图片

M-LAG成员故障示意图

  • peer-link故障

M-LAG双归接入设备一旦感知peer-link链路状态为Down,会立即通过DAD链路发起一次双主检测。如果在一定时间内未收到对端发布的双主检测报文,则认为对端设备故障。如果收到对端发送的双主检测报文,则认为peer-link故障。

Peer-link故障时,两台M-LAG设备不能同时转发流量,若同时转发流量会出现广播风暴、MAC漂移等问题。因此M-LAG备设备会将除peer-link口、堆叠口和管理网口之外的所有物理接口Error-down。此时,流量都只会从M-LAG主设备转发。

Peer-link故障恢复后,peer-link接口UP,M-LAG系统将重新协商。协商完成后,为保障M-LAG的端口隔离机制生效,除M-LAG成员口以外的其他口恢复UP状态,而M-LAG成员口在4分钟后恢复UP状态。

图片

peer-link故障示意图

  • M-LAG设备故障

M-LAG主设备故障,M-LAG备设备将升级为主,其设备侧Eth-Trunk链路状态仍为UP,流量转发状态不变,继续转发流量。M-LAG主设备侧Eth-Trunk链路状态变为Down,双归场景变为单归场景。

如果是M-LAG备设备发生故障,M-LAG的主备状态不会发生变化,M-LAG备设备侧Eth-Trunk链路状态变为Down。M-LAG主设备侧Eth-Trunk链路状态仍为UP,流量转发状态不变,继续转发流量,双归场景变为单归场景。

M-LAG设备故障恢复时,peer-link先UP,DFS状态重新协商,M-LAG成员口恢复UP,流量恢复负载分担。M-LAG主设备恢复后设备状态仍然为主,M-LAG备设备恢复后设备状态仍然为备。

图片

M-LAG设备故障示意图

如何应用M-LAG技术

通过上文我们了解到M-LAG有负载分担流量和备份保护的作用,那么下面我们介绍M-LAG的应用场景。

M-LAG主要应用于将服务器或交换机双归接入二层网络、VXLAN网络和三层网络,以及多级M-LAG。

M-LAG双归接入二层网络

M-LAG双归接入二层网络时,需要将两台M-LAG设备模拟成同一个STP逻辑节点,达到与STP对接破环的目的。

我们可以通过手动配置双归设备为STP网络根桥或配置VSTP协议,将M-LAG两个设备模拟成一个STP节点。其中,VSTP协议的作用主要是在双归设备之间同步STP协议状态,将两台设备以同一个状态对外进行STP协商。

图片


M-LAG双归接入二层网络示意图

M-LAG双归接入VXLAN网络

M-LAG双归接入VXLAN网络时,需要将两台M-LAG设备虚拟成一个VTEP。无论是手工建立隧道还是通过MP-BGP自动建立隧道,DeviceA和DeviceB均用这个虚拟的VTEP的IP和外界建立VXLAN隧道。

图片


M-LAG双归接入VXLAN网络示意图

M-LAG双归接入三层网络

M-LAG双归接入三层网络时,M-LAG双归设备成为二层网络和三层网络的分界点,即承担网关的作用。由于是两台设备做网关,他们对网络侧需要展示相同的网关IP和MAC。在DeviceA和DeviceB上配置相同IP地址和虚拟MAC地址,达到相同网关的目的。

图片


M-LAG双归接入三层网络示意图

多级M-LAG

在网络规模较大场景下,可以在Spine和Leaf同时部署M-LAG来保证链路可靠性。图中灰色底纹中的两台设备组成M-LAG。

多级M-LAG应用场景,不能使用手动配置根桥的方式来进行STP破环,需要通过VSTP协议来同步M-LAG双归设备的STP协议状态信息。

图片


多级M-LAG网络示意图

近期开班

图片

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/news/908349.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI健康小屋+微高压氧舱:科技如何重构我们的健康防线?

目前,随着科技和社会的不断发展,人们的生活水平和方式有了翻天覆地的变化。 从吃饱穿暖到吃好喝好再到健康生活,观念也在逐渐发生改变。 尤其是在21世纪,大家对健康越来越重视,这就不得不提AI健康小屋和氧舱。 一、A…

Python训练营---Day44

DAY 44 预训练模型 知识点回顾: 预训练的概念常见的分类预训练模型图像预训练模型的发展史预训练的策略预训练代码实战:resnet18 作业: 尝试在cifar10对比如下其他的预训练模型,观察差异,尽可能和他人选择的不同尝试通…

1.文件操作相关的库

一、filesystem(C17) 和 fstream 1.std::filesystem::path - cppreference.cn - C参考手册 std::filesystem::path 表示路径 构造函数: path( string_type&& source, format fmt auto_format ); 可以用string进行构造,也可以用string进行隐式类…

【 java 集合知识 第二篇 】

目录 1.Map集合 1.1.快速遍历Map 1.2.HashMap实现原理 1.3.HashMap的扩容机制 1.4.HashMap在多线程下的问题 1.5.解决哈希冲突的方法 1.6.HashMap的put过程 1.7.HashMap的key使用什么类型 1.8.HashMapkey可以为null的原因 1.9.HashMap为什么不采用平衡二叉树 1.10.Hash…

【Dify 知识库 API】“根据文本更新文档” 真的是差异更新吗?一文讲透真实机制!

在使用 Dify 知识库 API 过程中,很多开发者在调用 /datasets/{dataset_id}/document/update-by-text 接口时,常常会产生一个疑问: 👉 这个接口到底是 “智能差异更新” 还是 “纯覆盖更新”? 网上的资料并不多,很多人根据接口名误以为是增量更新。今天我结合官方源码 …

大模型如何革新用户价值、内容匹配与ROI预估

写在前面 在数字营销的战场上,理解用户、精准触达、高效转化是永恒的追求。传统方法依赖结构化数据和机器学习模型,在用户价值评估、人群素材匹配以及策略ROI预估等核心问题上取得了显著成就。然而,随着数据维度日益复杂,用户行为愈发多变,传统方法也面临着特征工程繁琐、…

基于端到端深度学习模型的语音控制人机交互系统

基于端到端深度学习模型的语音控制人机交互系统 摘要 本文设计并实现了一个基于端到端深度学习模型的人机交互系统,通过语音指令控制其他设备的程序运行,并将程序运行结果通过语音合成方式反馈给用户。系统采用Python语言开发,使用PyTorch框架实现端到端的语音识别(ASR)…

【2025年】解决Burpsuite抓不到https包的问题

环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…

Jenkins 工作流程

1. 触发构建 Jenkins 的工作流程从触发构建开始。构建可以由以下几种方式触发: 代码提交触发:通过与版本控制系统(如 Git、SVN)集成,当代码仓库有新的提交时,Jenkins 会自动触发构建。 定时触发&#xff…

Jmeter如何进行多服务器远程测试?

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 JMeter是Apache软件基金会的开源项目,主要来做功能和性能测试,用Java编写。 我们一般都会用JMeter在本地进行测试,但是受到…

Kafka入门-生产者

生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…

分类预测 | Matlab实现CNN-LSTM-Attention高光谱数据分类

分类预测 | Matlab实现CNN-LSTM-Attention高光谱数据分类 目录 分类预测 | Matlab实现CNN-LSTM-Attention高光谱数据分类分类效果功能概述程序设计参考资料 分类效果 功能概述 代码功能 该MATLAB代码实现了一个结合CNN、LSTM和注意力机制的高光谱数据分类模型,核心…

gemini和chatgpt数据对比:谁在卷性能、价格和场景?

先把结论“剧透”给赶时间的朋友:顶配 Gemini Ultra/2.5 Pro 在纸面成绩上普遍领先,而 ChatGPT 家族(GPT-4o / o3 / 4.1)则在延迟、生态和稳定性上占优。下面把核心数据拆开讲,方便你对号入座。附带参考来源&#xff0…

代码训练LeetCode(23)随机访问元素

代码训练(23)LeetCode之随机访问元素 Author: Once Day Date: 2025年6月5日 漫漫长路,才刚刚开始… 全系列文章可参考专栏: 十年代码训练_Once-Day的博客-CSDN博客 参考文章: 380. O(1) 时间插入、删除和获取随机元素 - 力扣(LeetCode)力…

C++面试5——对象存储区域详解

C++对象存储区域详解 核心观点:内存是程序员的战场,存储区域决定对象的生杀大权!栈对象自动赴死,堆对象生死由你,全局对象永生不死,常量区对象只读不灭。 一、四大地域生死簿 栈区(Stack) • 特点:自动分配释放,速度极快(类似高铁进出站) • 生存期:函数大括号{}就…

STM32 智能小车项目 L298N 电机驱动模块

今天开始着手做智能小车的项目了 在智能小车或机器人项目中,我们经常会听到一个词叫 “H 桥电机驱动”,尤其是常见的 L298N 模块,就是基于“双 H 桥”原理设计的。那么,“H 桥”到底是什么?为什么要用“双 H 桥”来驱动…

python项目如何创建docker环境

这里写自定义目录标题 python项目创建docker环境docker配置国内镜像源构建一个Docker 镜像验证镜像合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPant…

MySQL-多表关系、多表查询

一. 一对多(多对一) 1. 例如;一个部门下有多个员工 在数据库表中多的一方(员工表)、添加字段,来关联一的一方(部门表)的主键 二. 外键约束 1.如将部门表的部门直接删除,然而员工表还存在其部门下的员工,出现了数据的不一致问题&am…

【 HarmonyOS 5 入门系列 】鸿蒙HarmonyOS示例项目讲解

【 HarmonyOS 5 入门系列 】鸿蒙HarmonyOS示例项目讲解 一、前言:移动开发声明式 UI 框架的技术变革 在移动操作系统的发展历程中,UI 开发模式经历了从命令式到声明式的重大变革。 根据华为开发者联盟 2024 年数据报告显示,HarmonyOS 设备…

【SSM】SpringMVC学习笔记7:前后端数据传输协议和异常处理

这篇学习笔记是Spring系列笔记的第7篇,该笔记是笔者在学习黑马程序员SSM框架教程课程期间的笔记,供自己和他人参考。 Spring学习笔记目录 笔记1:【SSM】Spring基础: IoC配置学习笔记-CSDN博客 对应黑马课程P1~P20的内容。 笔记2…