华为DCN技术:M-LAG

news2024/11/27 0:33:28

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.coloradmin.cn/o/1848877.html

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

相关文章

vue实现的商品列表网页

一、商品列表效果如下 二、代码&#xff1b; vue实现的商品列表网页 &#xff0c; 图片在vue项目的Public文件夹里的 imgs中 <template><div class"common-layout"><!-- el-container:外层容器。 当子元素中包含 <el-header> 或 <el-foo…

每天写java到期末考试(6.22)--集合5--练习

集合方法 正常输入对象到集合里面&#xff0c;运用public使用类方法 import java.util.ArrayList;public class test {public static void main(String[] args) {ArrayList<Student> listnew ArrayList<>();//2.创建学生对象Student s1new Student("yanxiao1&…

Allegro X PCB设计小诀窍系列--如何在Allegro X中将动态铜皮冻结

背景介绍&#xff1a;我们在进行PCB设计时&#xff0c;经常会用到动态铜皮&#xff0c;因为动态铜皮可以根据约束规则设置进行自动调整。但是在一些设计场景中&#xff0c;设计人员不希望对印制板的调整影响到动态铜皮&#xff0c;如果将动态铜皮转换为静态铜皮&#xff0c;又可…

Apple - Core Foundation Design Concepts

本文翻译整理自&#xff1a;Core Foundation Design Concepts&#xff08;更新日期&#xff1a;2013-12-16 https://developer.apple.com/library/archive/documentation/CoreFoundation/Conceptual/CFDesignConcepts/CFDesignConcepts.html#//apple_ref/doc/uid/10000122i 文章…

reidis的内存回收和内存淘汰策略

redis的内存回收 8种内存淘汰策略

地缘风险对出口的影响分析

核心观点 5月以来&#xff0c;CCFI运价涨幅显著扩大。除外需回暖外&#xff0c;集运“涨价”还有哪些催化因素&#xff0c;或如何影响后续出口&#xff1f; 一问&#xff1a;装箱航线运价大幅上涨背后&#xff1f;5月以来运价明显上涨&#xff0c;与外需复苏、出口改善相互印证…

基于uni-app和图鸟UI的云课堂小程序开发实践

摘要&#xff1a; 随着移动互联网的快速发展&#xff0c;移动学习已成为教育领域的重要趋势。本文介绍了基于uni-app和图鸟UI框架开发的云课堂小程序&#xff0c;该小程序实现了移动教学、移动学习、移动阅读和移动社交的完美结合&#xff0c;为用户提供了一个便捷、高效的学习…

数仓中数据分层的标准流向解读

在大数据开发中&#xff0c;数据分层是一个至关重要的概念。合理的数据分层可以有效地提升数据处理的效率和质量。本文将详细介绍数据分层的标准流向和相关注意事项&#xff0c;并结合实际应用进行说明。 数据分层的标准流向 根据行业标准&#xff0c;数据分层的标准流向如下…

七、yolov8图像标注和模型训练(目标检测)

环境配置方法&#xff1a;点这里 环境配置完毕后&#xff0c;需要进行标注工作和训练任务&#xff0c;以下分两个部分进行。 图片标注 1、按照以下的格式&#xff0c;将图片放入images中。&#xff08;不限制文件夹路径&#xff09; 2、然后下载labelme标注工具&#xff0…

【分布式系列】分布式锁timeout了怎么办?

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

百度地图3d区域掩膜,最常见通用的大屏地图展现形式

需求及效果 原本项目使用的是百度地图3.0,也就是2d版本的那个地图,客户不满意觉得不够好看,让把地图改成3d的,但是我们因为另外的系统用的都是百度地图,为了保持统一只能用百度地图做 经过3天的努力,最后我终于把这个效果实现了,效果如下: 如何引用GL版本 为了实现…

DDK电通拧紧MFC-S060控制器过流维修

一、DDK伺服拧紧轴控制器过流故障的成因 1. 电源电压过低&#xff1a;当电源电压过低时&#xff0c;控制器可能会出现过流现象。 2. 负载过大&#xff1a;当负载过大时&#xff0c;DDK电通拧紧机控制器MFC-S060的电流也会随之增大&#xff0c;可能导致过流故障。 3. 控制器内部…

Java——IO流(一)-(6/8):字节流-FileInputStream 每次读取多个字节(示例演示)、一次读取完全部字节(方式一、方式二,注意事项)

目录 文件字节输入流&#xff1a;每次读取多个字节 实例演示 注意事项 文件字节输入流&#xff1a;一次读取完全部字节 方式一 方式二 注意事项 文件字节输入流&#xff1a;每次读取多个字节 用到之前介绍过的常用方法&#xff1a; 实例演示 需求&#xff1a;用每次读取…

Linux测试服务器端口是否打开

前言 服务器端口在计算机网络通信中扮演着至关重要的角色&#xff0c;其作用可以归纳如下&#xff1a; 区分不同的应用程序或服务&#xff1a; 服务器端口用于标识和定位不同应用程序或服务在服务器上的通信入口。 通过不同的端口号&#xff0c;服务器可以同时运行多个应用程…

为何人类需重复学习与记忆?人工智能与人类认知机制的融合 —— 生物体AI

零、 AI 与人的认知背景知识 人作为一种生物智能体&#xff0c;学习和记忆的过程往往需要重复与实践。这是因为人的大脑并非一次性就能完美地吸收和储存信息&#xff0c;而是通过反复的认知加工&#xff0c;将短期记忆转化为长期记忆&#xff0c;并通过深度理解、归纳总结以及…

【Research】Model Stealing

What is Model Stealing? Extract an approximation that of the target model that “closely matches” the original Accuracy? Fidelity? Funtional equivalence? Threat Models API Access Model extraction using: Prediction Vectors Labels Only Model Access …

Git 和 TortoiseGit 安装和配置(图文详解)

使用git&#xff0c;需要在Windows上需要安装两个软件&#xff1a;1&#xff09;Git 2&#xff09;TortoiseGit 若需要&#xff0c;可以下载TortoiseGit汉化语言包。 注意&#xff1a;tortoiseGit是在安装了Git的基础上运行的&#xff0c;所以需要先安装Git&#xff0c;后安装…

Java多线程基础知识-3

ReentrantLock&#xff1a; condition.await()方法之前必须调用lock.lock()代码获取同步监视器。类比&#xff1a; Object类中的wait()相当于Condition类中的await()Object类中wait(long timeout)相当于Condition类中await(long time, TimeUnit unit)方法Object类中notify()相…

QT基础 - 文件目录操作

目录 零. 简介 一. QDir 二. QFileSystemWatcher 三. 总结 零. 简介 在 QT 中&#xff0c;文件目录操作主要涉及到QDir类和QFileInfo类。 QDir类具有存取目录结构和内容的能力&#xff0c;可以操作目录、存取目录或文件信息、操作底层文件系统&#xff0c;还可以存取 Qt 的…

公司名称含有关商标名称可能涉及侵权!

有个朋友找到普推商标知产老杨&#xff0c;说有个人给他打电话&#xff0c;说他的公司名称侵权另一家的商标名称&#xff0c;让他要改下公司名称&#xff0c;不改就要告侵权&#xff0c;此前看到过许多&#xff0c;在一些省市注册公司时&#xff0c;如果公司名称与已注册商标相…