华为DCN技术:M-LAG

M-LAG(Multichassis Link Aggregation Group)即跨设备链路聚合组,是一种实现跨设备链路聚合的机制。M-LAG主要应用于普通以太网络、VXLAN和IP网络的双归接入,可以起到负载分担或备份保护的作用。相较于另一种常见的可靠性接入技术——堆叠,M-LAG在可靠性、升级等方面有着显著的优势。

1 工作原理

1.1 基本概念

在这里插入图片描述

DFS (Dynamic Fabric Service) Group

用于实现M-LAG设备之间的配对,M-LAG设备之间的接口状态、表项等信息同步。
DFS Group的角色区分主备,配对成功后,两台设备经过DFS Group协商,协商出DFS主设备(M-LAG主设备)和DFS备设备。

peer-link

M-LAG设备之间的直连链路,用于传输协议报文、表项同步报文,并转发部分流量。

通常情况下,M-LAG和堆叠一样,都有一种本框进本框出的机制,尽量避免通过peer-link去转发流量。

DAD link

双主检测链路,是一条三层互通链路,用于M-LAG设备之间发送双主检测报文。
正常情况下,双主检测链路不会参与M-LAG的任何转发行为,只在DFS Group配对失败或者peer-link故障场景下,用于检查是否出现双主的情况。

H3C设备中叫keepalive链路

M-LAG成员接口

连接用户侧设备或主机的Eth-trunk接口,从而实现跨设备链路聚合的目的。

孤立端口

未加入任何M-LAG成员口的端口。

保留端口

当peer-link故障时,M-LAG分裂,配对的两台设备无法相互发送协议报文及同步报文,两台设备处于双主状态。为了避免流量转发异常,需要将一端M-LAG设备上的端口置为Error-Down,但在实际组网应用中,某些端口并不希望被置为Error-Down,这类peer-link故障时不被Error-Down的端口被称为保留端口。
缺省情况下,设备上仅管理网口和peer-link接口为保留口,其他端口需手工设置。

1.2 协议交互

在这里插入图片描述

❶ DFS Group配对

首先通过peer-link链路发送DFS Group的Hello报文。当设备收到对端的Hello报文后,会判断报文中携带的DFS Group编号是否和本端相同,如果两台设备的DFS Group编号相同,则两台设备DFS Group配对成功。

❷ DFS Group协商主备

配对成功后,两台设备会向对端发送DFS Group的设备信息报文,设备根据报文中携带的DFS Group优先级以及系统MAC地址确定出DFS Group的主备状态。

DFS Group的角色区分为主和备,正常情况下,主设备和备设备同时进行业务流量的转发,转发行为没有区别,仅在故障场景下,主备设备的行为会有差别。

❸ M-LAG成员接口协商主备

通过peer-link链路发送M-LAG设备信息报文,报文中携带了M-LAG成员接口的配置信息。在成员口信息同步完成后,确定M-LAG成员接口的主备状态。
与对端同步成员口信息时,状态由Down先变为Up的M-LAG成员接口成为主M-LAG成员口,对端对应的M-LAG成员口为备,且主备状态默认不回切。

❹ 双主检测

通过双主检测链路发送双主检测报文,在45秒内两台设备均能够收到对端发送的双主检测报文,双活系统即开始正常的工作;若45秒内未收到双主检测报文则心跳超时。一旦设备感知到peer-link故障,设备会快速发送双主检测链路报文,加速检测。
在DFS Group配对失败或者peer-link故障场景下,双主检测链路用于检查是否出现双主的情况。

两台设备在心跳链路Up之后即会按照周期发送双主检测报文。若DFS Group绑定了本端和对端的IP地址,则在二次故障恢复场景下(设备已使能二次故障增强功能),即原DFS主设备或备设备故障恢复且peer-link链路仍然故障时,M-LAG设备根据双主检测报文中携带的DFS信息协商出HB DFS主备状态,触发HB DFS状态为备的设备相应端口Error-Down,从而避免双主场景下的流量异常。

❺ M-LAG同步信息

通过peer-link同步MAC表项、ARP以及STP等,并发送M-LAG成员端口的状态,这样任意一台设备故障都不会影响流量的转发,保证正常的业务不会中断。

1.3 M-LAG防环

单向隔离机制

在这里插入图片描述

接入设备或网络侧到达M-LAG配对设备的单播流量,会优先从本地转发出去,peer-link链路一般情况下不用来转发数据流量。当流量通过peer-link链路广播到对端M-LAG设备,在peer-link链路与M-LAG成员口之间设置单方向的流量隔离。即从peer-link口进来的流量不会再从M-LAG口转发出去,所以不会形成环路

2 协同工作

2.1 STP

由于peer-link为二层链路,且会允许所有的VLAN通过,因此涉及到生成树的问题,这条线路是M-LAG的生命线,因此不能够被STP阻塞掉。有两种方案解决这个问题

  1. 手工将M-LAG设备配置为根,并将两台设备的桥ID配置成一致,这样两台设备都认为自己的是根桥,形成逻辑上的一台根桥

  2. 使用V-STP同步信息,无需让M-LAG交换机变成根桥

V-STP(Virtual Spanning Tree Protocol)

二层拓扑管理特性,核心思想是将两台设备的STP协议虚拟成一台设备的STP协议,对外呈现为一台设备进行STP协议计算
STP可以感知M-LAG主备协商状态,M-LAG主备设备配置了V-STP,在M-LAG主备协商成功后,两台设备被虚拟化成一台设备进行端口角色计算和快速收敛计算。STP需要同步M-LAG主备的桥MAC信息和实例优先级信息。M-LAG主备协商成功后,M-LAG备设备使用M-LAG主设备同步过来的桥MAC信息和实例优先级信息进行STP计算和收发报文,保证虚拟化成一台设备后的STP计算参数。

当前,V-STP只能用于M-LAG组网,可以解决多级M-LAG互联场景和组成M-LAG的设备作为非根桥场景的需求。

配置V-STP功能时,需要保证组成M-LAG的两台设备上STP/RSTP定时器配置一致,否则可能导致网络拓扑震荡。

在多级M-LAG互联场景中,可以根据需要,将这两种方案结合起来使用。注意手工配置的根交换机建议开启根防护。

2.2 L3网关

当M-LAG的下游设备是二层设备时,M-LAG主备设备需要同时作为三层网关,必须保证M-LAG成员接口对应的VLANIF或VBDIF接口具有相同的IP地址和MAC地址。可以通过如下方式实现:在VLANIF或VBDIF接口上配置相同的IP地址和虚拟MAC地址(双活)
另外还可以配置VRRP,结果是M-LAG组中的所有交换机都会扮演master的角色。
在M-LAG双归接入VXLAN的场景中,当下行一条链路发生故障时,业务流量需绕行M-LAG设备之间的peer-link链路。因此,在该场景下M-LAG设备之间必须配置静态Bypass VXLAN隧道,将绕行的业务流量引导至peer-link链路上。

2.3 路由协议

当M-LAG的下游设备是三层设备时,通常需要和M-LAG主备设备建立动态路由协议的邻居关系。在这种场景下,M-LAG主备设备要在成员口对应的VLANIF接口或VBDIF接口配置IP地址,M-LAG接口对应的VLANIF/VBDIF接口配置不同的M-LAG IPv4/IPv6 Link-local地址用于OSPF/OSPFv3动态路由协议邻居建立,使得M-LAG成员设备和DeviceC之间建立OSPF/OSPFv3邻居。
由于M-LAG主备设备使用了相同的IP地址和MAC地址,无法同时和下游设备建立邻居关系,因此需要另外在M-LAG主备设备上配置sub地址来用于动态路由协议的邻居建立。

配置方式如下:

[DeviceB] interface vlanif 100
[DeviceB-Vlanif100] ip address 10.100.0.1 255.255.255.0
[DeviceB-Vlanif100] ospf source sub-address 10.100.0.3
[DeviceB-Vlanif100] m-lag ip address 10.100.0.3 255.255.255.0		# sub地址
[DeviceB-Vlanif100] mac-address 0000-5e00-0101
[DeviceB-Vlanif100] arp proxy enable
[DeviceB-Vlanif100] quit

3 故障恢复

3.1成上行链路故障

在这里插入图片描述

这种情况下,会通过peer-link链路进行转发。M-LAG主设备上行链路故障恢复后,流量也恢复从主设备转发到网络侧。
当故障的上行链路恰好为双主检测链路,此时对于M-LAG正常工作没有影响。一旦peer-link也发生故障,M-LAG出现双主冲突,双主检测又无法进行,则会出现丢包现象。
三层场景下,需要在M-LAG主备设备之间配置逃生链路,否则到达Master设备的上行流量无法通过peer-link链路到达Backup设备。

3.2 下行链路故障

在这里插入图片描述

当主M-LAG成员口故障时,所在的链路状态变为Down,此时备M-LAG成员口状态由备升主,双归场景变为单归场景。在主M-LAG成员口故障的同时,主设备学习到的DeviceA侧MAC不会被清除,直接刷新MAC表的出端口指向peer-link口,实现流量快速切换,避免未知单播泛洪。
在故障M-LAG成员口恢复后,MAC表的出端口从peer-link指向M-LAG成员口,实现流量快速切换,避免未知单播泛洪。同时,为避免主备M-LAG成员口状态切换造成的某些协议振荡,设备支持M-LAG成员口状态不再回切,即由备升主的M-LAG成员口状态仍为主,原主M-LAG成员口在故障恢复后状态为备。
在M-LAG成员口故障,设备双归变单归场景下,默认对于报文出端口为M-LAG成员接口的所有ARP表项、ND表项、静态路由表项和动态路由表项申请备份的FRR资源,使得出接口指向peer-link口并形成主备路径下发,将表项的下一跳由M-LAG成员口切换为peer-link口,从而提升故障场景下的切换性能。

3.3 设备故障

  • M-LAG主设备故障,M-LAG备设备将升级为主。原主设备侧M-LAG成员口链路状态变为Down,双归场景变为单归场景。
  • M-LAG备设备故障,M-LAG的主备状态不会发生变化,M-LAG备设备侧成员口链路状态变为Down。M-LAG主设备侧成员口链路状态仍为Up,流量转发状态不变,双归场景变为单归场景。

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

3.4 心跳线故障

若心跳链路承载三层网络的业务,心跳故障对设备流量转发会有影响。若心跳链路承载二层业务或不承载三层业务,心跳故障对设备流量转发无影响

3.5 peer-link故障

在这里插入图片描述

当peer-link故障但双主检测心跳状态正常时,在双主检测延时时间(缺省值为3s)后,会触发一端M-LAG设备上除逻辑端口、管理网口和peer-link接口以外的其他接口处于Error-Down状态。M-LAG系统按照如下先后顺序判断触发哪一端M-LAG设备的接口Error-Down:

  1. 是否存在Up状态的上行口:若一端M-LAG设备的上行口全部为Down状态,且另一端存在Up状态的上行口,则对上行口全部为Down状态的M-LAG设备触发端口Error-Down操作。
  2. peer-link接口所在接口板是否全部故障:若peer-link链路为直连聚合链路,一端M-LAG设备的peer-link接口所在接口板全部故障,且另一端M-LAG设备的peer-link接口所在接口板未全部故障,则对peer-link接口所在接口板全部故障的M-LAG设备触发端口Error-Down操作。
  3. 带宽通量差值大小:若一端M-LAG设备计算出的带宽通量差值比另一端M-LAG设备的带宽通量差值更大,则对带宽通量差值更大的那一端M-LAG设备触发端口Error-Down操作。
  4. 其他场景,如图 peer-link故障组网示意图所示,则对M-LAG备设备触发端口Error-Down操作。

DFS配对成功后,M-LAG设备默认每间隔10s统计一次带宽通量;当触发双主检测时,会同时触发M-LAG设备统计此时的带宽通量。
带宽通量差值计算公式:带宽通量差值=上一次统计到的带宽通量-触发双主检测时统计到的带宽通量,且每次统计带宽通量时,不包含peer-link接口。
如果某一端M-LAG设备计算出的带宽通量差值为负值,则该M-LAG设备的带宽通量差值按照0处理。


peer-link故障恢复时,处于Error Down状态的M-LAG成员口默认将在240s后自动恢复为Up状态(为了等待M-LAG主节点将表项同步到备节点),处于Error Down状态的其它接口将立即自动恢复为Up状态,流量恢复实现负载分担。

通过配置peer-link故障但双主检测心跳状态正常时触发Error-Down的端口包括逻辑端口,会触发M-LAG备设备上VLANIF接口、VBDIF接口、LoopBack接口以及M-LAG成员口处于ERROR DOWN状态。当peer-link故障恢复后,为保证大规格ARP同步正常,设备将在DFS Group配对成功后延迟6s恢复VLANIF接口、VBDIF接口、LoopBack接口为Up状态。此时,如果在接口下配置了接口三层协议状态延时Up时间,则VLANIF接口、VBDIF接口、LoopBack接口恢复Up状态的延迟时间为两者之和。

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

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

相关文章

ArkTS开发系列之Web组件的学习(2.9)

上篇回顾:ArkTS开发系列之事件(2.8.2手势事件) 本篇内容: ArkTS开发系列之Web组件的学习(2.9) 一、知识储备 Web组件就是用来展示网页的一个组件。具有页面加载、页面交互以及页面调试功能 1. 加载网络…

ARM架构简明教程

目录 一、ARM架构 1、RISC指令集 2、ARM架构数据类型的约定 2.1 ARM-v7架构数据类型的约定 2.2 ARM-v8架构数据类型的约定 3、CPU内部寄存器 4、特殊寄存器 4.1 SP寄存器 4.2 LR寄存器 4.3 PC寄存器 二、汇编 1、汇编指令(常用) 2、C函数的…

平凉小果子,平凡中的惊艳味道

平凉美食小果子,这看似平凡的名字背后,藏着无数平凉人的美好回忆。它不仅仅是一种食物,更是一种情感的寄托,一种文化的传承。小果子的制作过程看似简单,实则蕴含着深厚的功夫。选用优质的面粉作为主要原料,…

6毛钱SOT-23封装28V、400mA 开关升压转换器,LCD偏置电源和白光LED应用芯片TPS61040

SOT-23-5 封装 TPS61040 丝印PHOI 1 特性 • 1.8V 至 6V 输入电压范围 • 可调节输出电压范围高达 28V • 400mA (TPS61040) 和 250mA (TPS61041) 内部开关电流 • 高达 1MHz 的开关频率 • 28μA 典型空载静态电流 • 1A 典型关断电流 • 内部软启动 • 采用 SOT23-5、TSOT23…

STL迭代器的基础应用

STL迭代器的应用 迭代器的定义方法: 类型作用定义方式正向迭代器正序遍历STL容器容器类名::iterator 迭代器名常量正向迭代器以只读方式正序遍历STL容器容器类名::const_iterator 迭代器名反向迭代器逆序遍历STL容器容器类名::reverse_iterator 迭代器名常量反向迭…

Flutter TIM 项目实现

目录 1. 服务端API 1.1 生成签名 1.1.1 步骤 第一步:获取签名算法 第二步:查看函数输入输出 第三步:nodejs 实现功能 1.1.2 验证签名 小结 1.2 Rest API 调用 1.2.1 签名介绍 1.2.2 腾讯接口 生成管理员 administrator 签名 包装一个 post 请求函数 查询账号 …

新需求:如何实现一个ShardingSphere分库分表平台

大家好,目前我们正面对一个既具挑战又令人兴奋的任务——构建一套高效、稳定的数据处理系统,特别是一个结合了SpringBoot、ShardingSphere、MyBatisPlus和MySQL技术的综合数据分库分表平台。简单来说,我们要做的就是打造一个能轻松应对大数据…

MMDetection训练自己的数据集coco格式

参考 ​​MMDetection 目标检测 —— 环境搭建和基础使用-CSDN博客 利用labelme制作自己的coco数据集(labelme转coco数据集)-CSDN博客 1.下载mmdetection 克隆mmdetection到本地 git clone https://github.com/open-mmlab/mmdetection.git 如果git clone下载的…

【Qt】学习Day1

文章目录 Qt简介创建第一个Qt程序创建过程介绍main函数工程文件头文件控件源文件快捷键按钮控件常用API对象树坐标系 信号和槽自定义信号自定义槽函数触发自定义的信号案例-下课后,老师触发饿了信号,学生响应信号,请客吃饭重载信号连接信号La…

【目标检测】Yolov8 完整教程 | 检测 | 计算机视觉

学习资源:https://www.youtube.com/watch?vZ-65nqxUdl4 努力的小巴掌 记录计算机视觉学习道路上的所思所得。 1、准备图片images 收集数据网站:OPEN IMAGES 2、准备标签labels 网站:CVAT 有点是:支持直接导出yolo格式的标…

PHP师生荣誉管理系统-计算机毕业设计源码10079

目 录 摘要 1 绪论 1.1 研究背景 1.2论文结构与章节安排 2 师生荣誉管理系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据增加流程 2.2.2 数据修改流程 2.2.3 数据删除流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 2.…

AI新热点:边云协同:大模型结合小模型(大小模型联合推理)

背景 AI模型规模不断剧增已是不争的事实。模型参数增长至百亿、千亿、万亿甚至十万亿,大模型在算力推动下演变为人工智能领域一场新的“军备竞赛”。 这种竞赛很大程度推动了人工智能的发展,但随之而来的能耗和端侧部署问题限制了大模型应用落地。2022…

离线安装docker-v26.1.4,compose-v2.27.0

目录 ​编辑 1.我给大家准备好了提取即可 2.安装docker和compose 3.解压 4.切换目录 5.执行脚本 6.卸载docker和compose 7.执行命令 “如果您在解决类似问题时也遇到了困难,希望我的经验分享对您有所帮助。如果您有任何疑问或者想分享您的经历,…

windows10/win11截图快捷键 和 剪贴板历史记录 快捷键

后知后觉的我今天又学了两招: windows10/win11截图快捷键 按 Windows 徽标键‌ Shift S。 选择屏幕截图的区域时,桌面将变暗。 默认情况下,选择“矩形模式”。 可以通过在工具栏中选择以下选项之一来更改截图的形状:“矩形模式”…

计算机组成原理笔记-第1章 计算机系统概论

第一章 计算机系统概论 笔记PDF版本已上传至Github个人仓库:CourseNotes,欢迎fork和star,拥抱开源,一起完善。 该笔记是最初是没打算发网上的,所以很多地方都为了自我阅读方便,我理解了的地方就少有解释&a…

【UE5.3】笔记4-自定义材质蓝图

正常来说,我们都是拿到什么材质用什么材质,那么我们如何去创建自定义的材质呢? 首先,创建MyMaterials文件夹用来存放我们自制的材质; 然后,右键创建一个材质,起个名字,双击打开&am…

springcould-config git源情况下报错app仓库找不到

在使用spring config server服务的时候发现在启动之后的一段时间内控制台会抛出异常,spring admin监控爆红,控制台信息如下 --2024-06-26 20:38:59.615 - WARN 2944 --- [oundedElastic-7] o.s.c.c.s.e.JGitEnvironmentRepository : Error occured …

onlyoffice官方文档中打开文件示例的相关测试

文档地址&#xff1a;https://api.onlyoffice.com/zh/editors/open 开发环境&#xff1a; 后端&#xff1a;zdppy_api开发的一个文档服务前端&#xff1a;vue3开发的客户端 我们在index.html中&#xff0c;引入了文档服务的js文件&#xff1a; <!doctype html> <h…

【新闻】全球热钱,正在流入新加坡 这个夏天有点猛,油价看涨? 普华永道已丢了六成“A股大客户”

新加坡成为全球投资焦点&#xff0c;吸引大量并购活动。预计经济增长2.4%&#xff0c;股指上涨8%。未来可期待更多国际投资涌入。 近期&#xff0c;新加坡成为全球投资者的焦点&#xff0c;吸引了大量的并购和投资活动。 据报道&#xff0c;2024年第二季度&#xff0c;新加坡…

C++ Vector的模拟实现

vector的介绍 1. vector是表示可变大小数组的序列容器。 2. 就像数组一样&#xff0c;vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问&#xff0c;和数组一样高效。但是又不像数组&#xff0c;它的大小是可以动态改变的&#xff0c;而…