什么是M-LAG?为什么需要M-LAG?

你们好,我的网工朋友。

今天给你说说M-LAG技术。

总有人把M-LAG技术和IRF堆叠技术放在一起做对比,说这是可以取代堆叠的技术。

那M-LAG和堆叠到底有没有关系?

其实关系并不是很大,M-LAG可以理解为IRF和链路聚合的结合体。

那为什么这么说?M-LAG到底是啥技术?接着往下看就对了

今日文章阅读福利:《M-LAG最佳实践【华为官方出品】》

分享一份华为官方的M-LAG最佳实践手册给你。私信发送暗号“M-LAG”,即可限时获取资料哈。

01 普通的链路聚合组网

M-LAG又叫做跨设备链路聚合技术,其实从名字来看,你就能发现M-LAG肯定和链路聚合有一定的关系。

所以我们先来将普通的链路聚合和M-LAG做一个对比。

我们都知道链路聚合有很多的优点,比如可以提高链路的带宽,增加链路的可靠性,提供流量的负载分担能力等。

但是对于链路聚合来说,存在一个很明显的缺点,那就是对参与聚合的设备有一定的要求。

这句话的含义并不是说对设备的型号有要求,而是对链路所连接的设备的要求,那就是要求参与聚合的这些链路都连接在同一台设备上。

就比如S5通过2条链路连接到S6,此时S5就可以配置链路聚合来连接到S6,当然S6也是要配置链路聚合的。

如图:普通的链路聚合(不区分动态还是静态)

这儿可能有细心的小伙伴就注意到了:

虽然链路聚合提高了链路的可靠性,提供了链路级冗余保护的能力;

但是如果S5故障了,那么是不是也就意味着,不管S5上有几条链路参与聚合并且聚合成功,这些链路都不能转发数据了。

所以链路聚合的缺点就在这,无法提供设备级别的冗余保护能力。

那到这儿可能有学过IRF的同学就提出了一个拓扑:

你可以看到这个拓扑中,S5和S6通过XGE1/0/50接口配置IRF,形成IRF系统,那么从控制层面来看S5和S6就相当于一台设备了。

那么此时是不是也就符合了链路聚合的要求:

一台设备通过多条链路连接到另一台设备,所以S5和S6对接S7是不是也可以配置链路聚合了。

这么做当然是没问题的,而且这种方式也是风靡一时,只不过这种架构也会存在一定的问题。

就拿IRF来说,对于IRF,你应该不陌生,你在学习IRF的时候,老师会这么说,将两台框式设备进行IRF,形成一台更大的框式设备,其中原先的两台框式设备的主控板,只有master设备的主用主控板上的CPU能够承担CPU的功能,对于其他的主控板均作为备用主控板来使用。

这也就是IRF的单主控的问题,也就是说如果IRF系统收到了一个报文,此时该报文要上送CPU处理,则该报文会上送主用主控板的CPU,而不是其他的备用主控板,这样来看,CPU的性能受到影响。

另一个IRF的问题就是升级的问题。

对于IRF系统来讲,普通情况下,想要进行IRF升级,必须同时对IRF系统中的所有设备进行升级,因为IRF的要求就是只有同型号同版本的设备才能完成堆叠,这一点其实是很不友好的。

因为我们更希望的是,我对其中一台设备升级,另一台设备先正常工作,互不影响,但是IRF之后变为一台设备,就决定了很难做到这一点。

但是你要说完全做不到也是不对的,因为在IRF升级的时候是有一定的方法解决这一点的,不过该方法相对较为复杂,但是可以极大的减少网络中断的时间。今天就不在详细阐述了。

所以针对于这些问题:

1.链路聚合要求问题,2.IRF的单主控问题。

就出现了M-LAG技术。

首先从名字来看,跨设备链路聚合,我们就知道它肯定解决了链路聚合要求必须是同一台设备的问题,其次,M-LAG系统中的设备是不同的设备,也就解决了IRF单主控的问题。

02 M-LAG技术的系统组成和概念

M-LAG系统是由两台独立的设备组成的,其实在官网上说的是对这两台设备的版本、型号等是没有要求的,但是为了避免出现各种问题,推荐在做M-LAG的时候,参与组成M-LAG系统的两台设备还是要保持同型号同版本。

在M-LAG系统中,我们只能有两台设备,一台是primary角色,也就是M-LAG的主设备,另一台是secondary角色,也就是M-LAG的备设备。

除了这俩种角色之外,还有一种角色是none角色,这是在一种比较特殊的情况下才会出现的角色。

01 选举原则

这两种角色是通过选举原则选举出来的,选举原则如下:

M-LAG设备通过角色计算,可能出现三种设备角色,分别是primary、secondary和none角色。

而且并不是只有在M-LAG系统形成的时候才会进行角色计算,在以下四种情况下都会进行角色的计算:

第一种是M-LAG系统形成的时候;

第二种是peer-link链路down,但是keepalive链路up的时候,触发的双主检测;

第三种是peer-link链路重新恢复up的时候;

第四种是peer-link链路和keepalive链路都down的时候,此时会通过设备上M-LAG接口的状态来设置角色。

02 角色选举参考因素

比较设备所有M-LAG接口的状态,有可工作M-LAG接口的一端为优;

比较计算前角色,primary端为优;

比较M-LAG MAD DOWN状态,不存在处于M-LAG MAD DOWN状态的接口的一端为优;

比较设备健康状况,健康值越小越优;

比较设备角色优先级,越高越优;

比较设备的桥mac地址,越小越优;

如果通过peer-link链路进行角色选择,则不比较设备的所有M-LAG接口的状态。

那好,我们继续回到M-LAG系统的组成介绍中来,刚才介绍了设备的角色,那么在M-LAG中除了设备之外还有链路。

这些链路分别是peer-link链路和keepalive链路以及M-LAG接口,在此先给你说peer-link链路和keepalive链路。

03 peer-link链路

其实对于这两种链路来说,我们有一个很好的对比案例。

那就是将IRF的堆叠线缆和多活检测线缆和peer-link链路以及keepalive链路做对比,堆叠线缆就类似于peer-link链路,多活检测线缆就类似于keepalive链路。

所以peer-link链路的作用就是:

1.传递DRCP协议的报文DRCPDU,用来判断两个设备能否形成M-LAG系统;

2.跨设备流量需要经过peer-link链路传递。

对于peer-link链路而言,是M-LAG系统中最重要的一条链路,所以自然对peer-link链路的要求就格外的高。

也就是说并不是所有的接口都可以指定为peer-link链路的接口,必须是二层聚合接口才可以指定为peer-link链路接口,但是如果是在EVPN+VXLAN+M-LAG的组网中,peer-link链路也可以选择vxlan的tunnel接口作为peer-link链路的接口。

除此之外,peer-link链路的另一个要求就是对一个M-LAG系统来说,只能存在一条peer-link链路,可以通过创建二层聚合组,然后在聚合组中添加多条物理链路,将聚合组指定为peer-link链路接口的方式,来保证peer-link链路的可靠性。

这些是peer-link链路的作用以及你需要注意的内容。

对于在peer-link链路上传递的DRCPDU来说,因为其关系到M-LAG系统的形成,所以也是需要你重点关注的内容。

即然要判断能否形成M-LAG系统,那也就类似于IRF中两台设备能否堆叠到一起。

也就是说,肯定会协商相应的参数来判断M-LAG系统能否形成,这些参数包括系统的M-LAG系统编号、M-LAG系统优先级、M-LAG系统mac地址。

接下来我们单独对这三个进行解释:

04 M-LAG系统编号、优先级、mac地址

M-LAG系统编号,这个你可以类比IRF中的成员编号来看,在IRF系统中,不同设备的成员编号是不同的,所以在M-LAG系统中也是同样的,M-LAG系统编号也不能相同。

第二个参数是M-LAG系统优先级,这一个参数就不能类比IRF中的irf成员优先级了,这个参数的作用是用来指定在LACPDU中的system-id字段的设备的优先级。

那不用想,另一个M-LAG的MAC地址肯定是LACPDU中的system-id字段的设备的mac地址了。

那这儿会有一个小问题,就是两台设备的M-LAG系统优先级和M-LAG系统mac地址要不要配置为相同的呢?

答案是肯定的。

因为要在LACPDU中携带system-id字段,如果不配置为相同的,当你和对方配置跨设备链路聚合的时候,而且是使用动态聚合的模式;

此时对端设备从一个接口收到的LACPDU中system-id字段假设是32768.1-1-1,另一个接口收到的LACPDU中的system-id字段假设是32768.2-2-2;

此时对于该设备而言,就很容易能判断出这两个接口是连接了两个不同的设备来配置的动态链路聚合,肯定会有一个接口聚合失败。

所以从这一点来看,两台设备的M-LAG系统优先级和M-LAG系统mac地址肯定是要配置成为一样的,但是M-LAG系统成员编号却不能一样。

那可能有的小伙伴会问了,在角色选举中有一个优先级越大越优,这个优先级是什么呢?

这个优先级是M-LAG的role priority,也就是角色优先级,配置命令是M-LAG role priority,默认是32768。

除此之外,为了能够形成跨设备的链路聚合组,能够将在不同设备上的两个接口加入到同一个M-LAG组(类似于聚合组)中,必须保证这些接口添加到的M-LAG组相同。

上述就是peer-link链路的基本内容。

05 keepalive链路

对于该链路,它的作用其实就是进行双主检测的,也就是在peer-link链路down之后,来检测双主的,但是在M-LAG中我们对此进行了细分,分为以下几种情况。

第一种情况:

keepalive链路up,也就是可以在定时器超时时间内收到对方发来的keepalive报文,如果此时peer-link链路也up,此时M-LAG系统正常,定期检测即可,不做任何处理

第二种情况:

keepalive链路up,但是peer-link链路down掉,那么此时就类似于堆叠线缆down了,但是多活检测线缆正常,也就是触发了M-LAG的双主检测机制,此时为了避免双主,会在keepalive hold timeout时间之后进行MAD机制,在keepalive hold timeout时间内收集故障原因。

第三种情况:

keepalive链路down掉,但是peer-link链路是up的,那么此时M-LAG系统是完整的,只不过多活检测线缆故障,所以此时设备只会打印日志,提醒M-LAG的keepalive链路故障。

第四种情况:

keepalive链路先down掉,之后peer-link链路又down了,那么此时因为keepalive链路先down,造成多活检测失效,此后peer-link链路down之后,就无法进行多活检测,此时设备就会进入primary角色,并且如果本设备存在up的M-LAG接口,那么设备会保持primary角色,如果不存在,在会进入none角色。

这是keepalive链路的作用和几种不同的机制,对于keepalive链路来说,只需要保证keepalive链路同网段可以互通即可,没有特别的要求。

对于MAD机制的处理、M-LAG MAD DOWN状态的保持、延迟恢复时间以及配置一致性检查等内容,以后俱乐部会继续给你介绍,先关注一波啊。

整理:老杨丨10年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部

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

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

相关文章

开放领域问答机器人2——开发流程和方案

开放领域问答机器人是指在任何领域都能够回答用户提问的智能机器人。与特定领域问答机器人不同,开放领域问答机器人需要具备更广泛的知识和更灵活的语义理解能力,以便能够回答各种不同类型的问题。 开发开放领域问答机器人的流程和方案可以包括以下步骤…

SecureCRT 超时自动断开连接问题解决方法

很多人在使用SecureCRT时,会遇到这种情况:SecureCRT 超时自动断开连接,这种情况会给工作带来很多不便, 比如在做数据库还原操作时,连接突然断掉了,会导致还原操作失败,很是令人困扰。 那么我们…

JVS低代码表单自定义按钮的使用说明和操作示例

在普通的表单设计中,虽然自带的【提交】、【重置】、【取消】按钮可以满足基本操作需求,但在面对更多复杂的业务场景时,这些按钮的显示控制就显得有些力不从心。为了更好地满足用户在表单操作过程中的个性化需求,JVS低代码推出了表…

【优化版】DOSBox及常用汇编工具的详细安装教程

🌈个人主页:聆风吟 🔥系列专栏:网络奇遇记、图解数据结构 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. dosbox的介绍、下载和安装1.1 dosbos简介1.2 dosbox的下载1.2.1 方式一&a…

Java16新增特性

前言 前面的文章,我们对Java9、Java10、Java11、Java12 、Java13、Java14、Java15 的特性进行了介绍,对应的文章如下 Java9新增特性 Java10新增特性 Java11新增特性 Java12新增特性 Java13新增特性 Java14新增特性 Java15新增特性 今天我们来一起看一下…

用excel计算一个矩阵的转置矩阵

假设我们的原矩阵是一个3*3的矩阵: 125346789 现在求它的转置矩阵: 鼠标点到一个空白的地方,用来存放结果: 插入-》函数: 选择TRANSPOSE,这个就是求转置矩阵的函数: 点击“继续”&#xff1a…

交叉编译 openssl

要在 x86 平台上编译适用于 aarch64 架构的 OpenSSL 动态库,你需要使用交叉编译工具链。可以按照以下步骤进行: 安装 aarch64 交叉编译工具链: $ sudo apt-get install gcc-aarch64-linux-gnu g-aarch64-linux-gnu 这将安装 aarch64 交叉编…

元核云亮相金博会,智能质检助力金融合规

11月初,第五届中新(苏州)数字金融应用博览会|2023金融科技大会在苏州国际博览中心举办,围绕金融科技发展热点领域及金融行业信息科技领域重点工作,分享优秀实践经验,探讨数字化转型路径与未来发…

(三)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB

一、七种算法(DBO、LO、SWO、COA、LSO、KOA、GRO)简介 1、蜣螂优化算法DBO 蜣螂优化算法(Dung beetle optimizer,DBO)由Jiankai Xue和Bo Shen于2022年提出,该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁…

【Copilot】登录报错 Extension activation failed: “No auth flow succeeded.“(VSCode)

问题描述 当尝试在 Visual Studio Code 中登录 GitHub Copilot 插件时,会出现报错的情况,如下图所示: 尽管在浏览器中成功授权了 GitHub 账户,但在返回 VSCode 后仍然报错,如下图所示: 同时,在…

PHP中传值与引用的区别

在PHP中,变量的传递方式主要分为传值和传引用两种。这两种方式在操作中有一些重要的区别,影响着变量在函数调用或赋值操作中的表现。下面详细解释一下这两种传递方式的区别。 传值(By Value) 传值是指将变量的值复制一份传递给函…

OpenAtom OpenHarmony三方库创建发布及安全隐私检测

OpenAtom OpenHarmony三方库(以下简称“三方库”或“包”),是经过验证可在OpenHarmony系统上可重复使用的软件组件,可帮助开发者快速开发OpenHarmony应用。三方库根据其开发语言分为2种,一种是使用JavaScript和TypeScr…

React【异步逻辑createAsyncThunk(一)、createAsyncThunk(二)、性能优化、createSelector】(十二)

文章目录 异步逻辑 createAsyncThunk(一) createAsyncThunk(二) 性能优化 createSelector 异步逻辑 //Product.js const onAdd () > {const name nameRef.current.value// 触发添加商品的事件dispatch(addProduct({name…

3D Gaussian Splatting:用于实时的辐射场渲染

Kerbl B, Kopanas G, Leimkhler T, et al. 3d gaussian splatting for real-time radiance field rendering[J]. ACM Transactions on Graphics (ToG), 2023, 42(4): 1-14. 3D Gaussian Splatting 是 Siggraph 2023 的 Best Paper,法国团队在会议上展示了其实现的最…

线性代数(二)| 行列式性质 求值 特殊行列式 加边法 归纳法等多种方法

文章目录 1. 性质1.1 重要性质梳理1.1.1 转置和初等变换1.1.2加法行列式可拆分1.1.3 乘积行列式可拆分 1.2 行列式性质的应用1.2.1 简化运算1.2.2 将行列式转换为(二)中的特殊行列式 2 特殊行列式2.1 上三角或下三角行列式2.2 三叉行列式2.3 行列式行和&…

VueCli 自定义创建项目及配置

一、VueCli 自定义创建项目 1.安装脚手架 (已安装) npm i vue/cli -g2.创建项目 vue create hm-exp-mobile选项 Vue CLI v5.0.8 ? Please pick a preset:Default ([Vue 3] babel, eslint)Default ([Vue 2] babel, eslint) > Manually select features 选自定义手动…

生活污水处理一体化处理设备有哪些

生活污水处理一体化处理设备有多种类型,包括但不限于以下几种: 鼓风机:提供曝气系统所需的气流。潜水污水提升泵:将污水从低处提升到高处。旋转式滚筒筛分机:对污水中的悬浮物进行分离和筛选。回旋式格栅:…

【计算机网络笔记】网络层服务模型——虚电路网络

系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…

图的表示与基础--Java

1.图的基础知识 该图片来自于&#xff1a; https://b23.tv/KHCF2m6 2.稀疏图与稠密图 G(V,E)&#xff1a;V顶点个数&#xff0c;E边的个数 稀疏图&#xff1a;E<<V 一般用邻接表表示(数组链表) 稠密图&#xff1a;E接近V 一般用邻接矩阵表示&#xf…

中断处理机制解析

要处理中断&#xff0c;需要有一个中断处理函数。定义如下&#xff1a; irqreturn_t (*irq_handler_t)(int irq, void * dev_id);/*** enum irqreturn* IRQ_NONE interrupt was not from this device or was not handled* IRQ_HANDLED interrupt was handled by this de…