• 华为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设备故障)

    V-STP

    V-STP方式(推荐方式)

    根桥方式

    M-LAG技术的应用


    M-LAG(Muntichassis Link Aggregation Group)跨设备链路聚合组,将不同设备上的不同端口组成一个聚合组,达到跟普通LAG一样的功能,主要应用场景是“双归接入”场景,即用户侧双归接入到两台设备上

    对于下游设备来说,认为上游设备是一台设备


    为什么会出现M-LAG

    实现双归接入的传统技术有:堆叠、Smart-Link等技术

    堆叠的多台设备使用同一个控制面,单点故障可能影响到整个系统

    Smart-Link等技术使用的是主备方式接入,链路利用率不搞

    M-LAG和堆叠的区别

    堆叠是设备级别的多虚一,管理平面共用一个

    MC-LAG协议级别的多虚一,管理平面是独立的

    什么是协议级别的多虚一

    即仅仅是在LACP这个协议上,将多个设备的接口认为是一台设备的接口,只有LACP协议这样认为,除此之外,这两台设备都是独立工作的


    M-LAG基本概念

    DFS-Group(Dynamic Fabric Service Group)动态交换服务组

    通过DFS-Group对部署了M-LAG的设备进行配对,实现多台设备间的链路聚合

    动态交换服务组的ID只能为1,绑定M-LAG的ID可以是1~2048

    主备设备之间要确保M-LAG的ID是一致的

    M-LAG双归设备之间的接口状态、表项等信息的同步需要依赖DFS Group协议进行同步

    DFS 主/备设备

    部署了M-LAG 并且状态为主/备的设备(也称为M-LAG主/备设备)

    通过DFS Group协议协商

    角色选举的因素

    比较DFS Group的优先级,越大越优先

    比较MAC地址,越小越优先

    此处的主备交换机都会转发数据

    正常情况下,主/备设备转发行为没有区别,其主备接口都可以进行负载分担转发

    仅在故障场景下,主备设备的行为会有差别

    Peer-lik

    Peer-link链路

    Peer-link链路是部署MC-LAG的两台设备之间必须存在的一条直连二层链路

    此链路必须做链路聚合,此链路用于协商报文以及传输部分流量

    Peer-link接口

    peer-link链路两端直连的接口均为peer-link接口(Peer-Link接口默认放行所有Vlan)

    接口配置为peer-link接口后,该接口上不能再配置其它业务。

    Peer-Link接口ID只能为1

    双主检测链路(也称心跳链路、Keepalive链路)

    是一条三层互通链路,用于在M-LAG主备设备之间发送双主检测报文(DAD)

    正常情况下双主检测链路不会参与M-LAG的任何转发行为

    只有在故障发生的情况下用于检查是否出现双主的情况

    链路配置的两种方式

    1. 可以单独配置一条三层链路
    2. 也可以通过现有IP网络互通,互通的链路就作为双主检测链路

    HB DFS主/备设备

    通过双主检测报文(心跳链路报文)协商的状态为主/备的设备

    正常情况下不会协商HB DFS主/备,仅用于二次故障的特殊场景下进行HB DFS协商

    M-LAG成员口

    DFS主/备设备上连接用户侧的Eth-Trunk接口

    M-LAG成员接口也分主备(接口的主备主要在组播场景下的转发行为有区别)

    用户侧Switch

    可以是交换机,也可以是主机

    使用ETH-trunk(标准的LACP协议)接入双活系统,组成双归接入

    M-LAG主/备设备同时转发用户侧流量

    双活网关

    在DFS主备设备上配置网关,作为用户侧的网关

    主备设备上的网关配置相同的IP地址和MAC地址,实现双活网关

    此双活网关也可以通过VRRP来实现

    VRRP用来选举主备,此时需要双网关,为什么还要做VRRP

    因为Peer-link默认拒绝放行VRRP的报文

    并且对于设备来说,M-LAG的成员接口是一个逻辑接口,从本接口收到的VRRP报文不会再发送出去,即成员口不会将收到的VRRP报文在转发出去

    此时主备都互相收不到对方的VRRP报文,不会进行VRRP主备协商

    当将DFS主备交换机的VRRP的虚拟地址配置为一样时,由于主备之间不会选举主从

    即两个都是主,也可以达到双活网关的效果

    最早是通过VRRP来做双活的,但是现在更推荐配置相同IP、MAC的方式来实现双活网关的效果


    M-LAG建立过程

    4步建立M-LAG+1步双主检测

    工作步骤

    1. 当M-LAG两台的设备完成配置后,两台的设备会通过peer-link链路定期发送DFS Group Hello报文;当收到对端的Hello报文后,会判断Hello报文中的M-LAG ID是否和本端相同;如果两台的M-LAG ID相同,则这两台设备配对成功
    2. 配对成功后,两台设备会通过比较DFS Group设备信息报文中的优先级、MAC来确定出设备主备状态(这里的主、备不影响正常的流量转发,只有在出现故障时才起作用);以Switch B为例,当Switch B收到Switch A发送的报文时,Switch B会查看并记录对端信息,然后比较的优先级;如果Switch A的优先级低于本端的优先级,则确定Switch A为M-LAG主设备,Switch B为M-LAG备设备;如果Switch A和Switch B的优先级相同,比较两台设备的MAC地址,确定MAC地址小的一端为M-LAG主设备
    3. 通过M-LAG设备信息报文协商出来M-LAG成员接口的主备状态(在组播流量转发情况下会有作用)
    4. 协商出设备主备后,两台设备之间会通过网络侧链路周期性地发送M-LAG心跳报文; 当两台设备均能够收到对端发送的报文时,双活系统即开始正常的工作(两台设备开始正常工作)
    5. 正常工作后,两台设备之间会通过peer-link链路发送M-LAG同步报文实时同步对端的信息;

    涉及的报文类型及其作用

    DFS Group Hello报文(设备信息报文)

    携带自己的DFS Group ID、协议版本号、系统MAC等信息

    DFS Group ID相同的设备配对成功

    DFS Group设备信息报文

    携带DFS Group优先级(优先级默认为100)、系统MAC等信息

    确定DFS主、备设备

    M-LAG设备信息报文

    携带了M-LAG成员接口的配置信息

    确定M-LAG成员接口的主备状态

    M-LAG心跳报文(DAD报文)

    M-LAG心跳报文主要用于peer-link故障时的双主检测

    M-LAG同步报文

    同步的信息包括设备名、系统MAC、软件版本、M-LAG成员端口状态、STP BPDU信息、MAC表项、ARP表项、IGMP表项等

    保证任意一台设备故障都不影响流量的转发,保证正常的业务不中断

    注意事项

    同步的MAC地址表和ARP表等其它表项时不是直接将表项同步过去,而是将生成表项的报文传递给对端(将生成表项的源报文封装在M-LAG的同步报文中传递给对方,对方根据源报文生成表项)

    例如:

    主/备设备通过端口收到的ARP生成表项后,将此ARP报文封装在DFS-Group同步报文通过Peer-link链路传递给备/主设备

    备/主设备解封装DFS-Group同步报文,得到ARP报文信息,根据此ARP报文信息再生成表项

    此做法更容易实现版本之间的兼容性(即传递的是原始报文)

    双主检测

    正常情况1s发送一次DAD报文进行检测

    一旦感知故障100ms发送3次DAD报文进行检测(加速检测)

    除了DAD报文,其余报文都在二层的Peer-Link链路上传输


    M-LAG的协议兼容性

    前提须知

    M-LAG协议报文携带的DATA部分是按照TLV格式封装的,方便扩展

    协议不兼容问题

    M-LAG升级一般都是逐台升级(保证业务不中断)

    在设备进行M-LAG升级过程中必然会出现版本不一致的情况

    在设备升级过程中,备用设备升级到了新版,主设备还在旧版

    如何解决兼容性问题,使其尽少丢包

    解决的工作原理

    如图所示,SWA和SWB组成一个M-LAG系统。

    版本均为V1R5C10,现在要将两台设备升级为V2R1C00版本。

    假设V2R1C00版本新增了一个同步LACP SystemID的功能

    在V1R5C10版本,两端设备LACP System ID必须手动配置为一致

    而在V2R1C00版本中,主设备会将自己的LACP SystemID封装在同步报文中,备设备收到后,会使用该System ID替换自己的SystemID,防止了手动配置错误的情况发生

    那么升级过程如下:

    1.SWB换包重启,M-LAG由双归变成单归,SWA独立承担报文转发

    2.SWB升级完成后,以V2R1C00版本启动,发送HELLO报文重新配对

    由于新增了一个功能,SWB发送的HELLO报文中新增了TLV(这里以新增TLV为例,实际新增功能并不一定会在HELLO报文中新增TLV)

    3.SWA收到SWB的报文后,只处理可以识别的TLV,并向SWB发送Hello报文

    4.SWB收到SWA发送的HELLO报文后,发现HELLO报文中携带的版本号比自己低

    于是不会校验是否有该新增的TLV,两者可以正常协商(新增的TLV功能暂时不生效)

    5.协商完成后,SWB开始发送LACP System ID的同步报文,这是一个新增的报文类型

    SWA是仍然是老版本,不会处理,直接忽略

    6.SWA接收到SWB发来的同步LACP SystemID报文,不会有任何处理

    两设备继续保持手动配置System ID状态,LACP功能也就继续保持以前的工作状态

    7.开始升级SWA,同之前类似,双归切换为单归,SWB独立承担报文转发

    8.SWA升级完,最终两边版本一致

    此时两台设备可以交互LACP System ID的同步报文

    此时可以将之前手工配置的System ID删除,全部切换完自动协商形式


    M-LAG的防环机制

    对于广播流量

    对广播泛洪流量进行单向隔离(类似堆叠的单向隔离机制)

    单向隔离机制生效的前提

    当协商出主备后,通过M-LAG同步报文来判断接入设备是否已经双活接入

    如果设备已经双活接入,则M-LAG两台设备下发对应M-LAG成员口的单向隔离配置

    如果成员端口已经断了一边,变为单归接入,此时就不用去下发单向隔离配置了

    M-LAG同步报文是如何具体判断出接入设备是双活接入的呢?

    M-LAG同步报文携带了成员端口状态,通过Peer-Link互发M-LAG报文

    当感受到同一个M-LAG的成员口在不同的设备上Up起来了

    M-LAG设备就知道这个M-LAG组是双活接入

    注意事项

    单向隔离机制主备都会隔离(看广播流量从那边上来,从备用上来,主就会隔离,从主上来,备就会隔离)

    上图是广播流量从主设备上来,备设备被单向隔离了

    单向隔离机制实现原理

    检测到双活接入后,会下发全局ACL配置(配置如下)

    允许通过 源端口为Peer-link接口,目的端口为M-LAG成员口的三层单播报文

    拒绝通过 源端口为Peer-link接口,目的端口为M-LAG成员口的所有报文

    即:通过匹配ACL规则,隔离由Peer-Link接口发往M-LAG成员口的广播等泛洪流量

    当检测到为单归时,会撤销ACL全局配置


    M-LAG正常工作流量转发

    单播流量转发

    自用户侧发往网络侧的已知单播流量由M-LAG主备设备形成逐流负载分担,共同进行流量的转发;自网络侧发往用户侧的已知单播流量同样由M-LAG主备设备形成逐流负载分担,共同进行流量的转发。

    在用户侧通过Eth-Trunk负载分担算法将流量分到DFS主、备设备,实现负载分担

    组播流量转发

    组播接入二层网络——通过单向隔离机制来防止接收重复的组播流量

    接入二层网络故障,单向隔离机制就会取消掉

    组播接入三层网络——通过PIM协议来获取组播流量

    三层网络中,对于组播接收者,要保证组播接收者只能收到一份组播流量(同组播源、组播组的流量只能是一份)

    如何解决组播组成员收到重复流量的问题

    按照以下规则由M-LAG主备设备在本地查找组播表后将流量负载分担给组播组成员

    若组播组地址最后一位为奇数(例如225.1.1.1或FF1E::B),则由M-LAG成员端口状态为主的设备转发至组播组成员

    若组播组地址最后一位为偶数(例如225.1.1.2或FF1E::A),则由M-LAG成员端口状态为备的设备转发至组播组成员

    注意事项:

    M-LAG主备设备不会发送剪枝报文,对于组播流量主备设备都收的到,只是转发给组成员是会进行筛选

    一般主设备的成员端口状态也为主,但是不一定一直为主(正常情况下是主,发生障后就不一定为主了)

    组播三层组网中,当上行链路故障,一部分组播成员收不到组播流量,如何解决

    通过在主备之间加入三层链路,运行PIM,可以避免单上行

    独立三层PIM链路的其它作用

    当DFS主设备(端口状态为主)上行链路故障后,当下发奇数组播流量时,DFS主设备是收不到的

    DFS备设备收到了此奇数组播流量,但是由于其端口状态为备,不转发奇数组播流量

    此时就需要通过PIM独立三层口将奇数组播流量转发给DFS主,然后再由其下发给组播组成员

    所以对于组播三层网络,建议加上独立的三层PIM链路,增强其可靠性

    广播流量转发

    网络上的的广播流量,单向隔离


    M-LAG故障场景流量转发

    M-LAG作为一种跨设备链路聚合的技术,把链路可靠性从单板级提高到了设备级。如果出现故障(不管是链路故障、设备故障还是peer-link故障),M-LAG都能够保证正常的业务不受影响

    上行链路故障

    若主/备上行链路故障,也就是Keepalive链路故障,但是Peer-Link链路是正常的

    此时M-Lag系统完整,主备设备能够正常转发数据

    只不过下游通过主/备设备的流量均经过Peer-Link链路进行转发

    下行链路故障

    M-LAG主备状态不会发生变化,不会引发双主检测,但是成员端口状态可能会发生变化

    如果M-LAG成员端口状态为主的链路出现故障

    发生故障的M-LAG成员口所在的链路状态变为Down,双归场景变为单归场景

    故障M-LAG成员口的MAC地址指向peer-link接口(将成员端口的MAC表项复制到Peer-Link口),并通过Peer-Link引到M-LAG备用设备

    成员端口状态为备端口其状态转为主,流量切换到该链路上进行转发

    对于组播源在网络侧,组播成员在接入侧的组播流量

    当M-LAG主设备的M-LAG成员口故障时

    通过M-LAG同步报文通知对端设备进行组播表项刷新

    M-LAG主备设备不再按照组播地址奇偶进行负载分担

    而是所有组播流量都由端口状态Up的M-LAG备设备进行转发,反之亦然

    在故障M-LAG成员口恢复后

    M-LAG成员口状态不再回切

    由备升主的M-LAG成员口状态仍为主

    原主M-LAG成员口在故障恢复后状态为备

    M-LAG主设备故障

    如果是M-LAG主设备故障

    M-LAG主设备侧Eth-Trunk链路状态变为Down,M-LAG的主备状态会发生变化

    M-LAG备设备将升级为主,其设备侧Eth-Trunk链路状态仍为Up,流量转发状态不变,继续转发流量,双归场景变为单归场景(当M-LAG主设备故障恢复后,M-LAG由备状态升级为主状态的设备仍保持主状态,恢复故障的主设备成为M-LAG的备设备)

    如果是M-LAG备设备发生故障

    M-LAG备设备侧Eth-Trunk链路状态变为Down,M-LAG的主备状态不会发生变化

    M-LAG主设备侧Eth-Trunk链路状态仍为Up,流量转发状态不变,继续转发流量,双归场景变为单归场景。

    当M-LAG设备故障恢复时

    peer-link先UP,DFS状态重新协商,M-LAG成员口恢复UP,流量恢复负载分担

    M-LAG主设备恢复后设备状态仍然为主,M-LAG备设备恢复后设备状态仍然为备。

    Peer-link故障

    peer-link故障会引发双主现象

    双归设备一旦感知peer-link口down,即立刻发起一次双主检测过程(100ms发3次DAD)

    M-LAG应用在普通以太网络、VXLAN网络或IP网络的双归接入

    peer-link故障但双主检测心跳状态正常时

    会触发M-LAG备设备上除逻辑端口、管理网口、peer-link接口和堆叠口以外的其他接口处于Error-Down状态。

    M-LAG应用在TRILL网络的双归接入

    peer-link故障但双主检测心跳状态正常时,会触发M-LAG备设备上的M-LAG接口处于Error-Down状态。

    Peer-Link故障恢复时

    处于Error Down状态的其它接口将立即自动恢复为Up状态。

    处于Error Down状态的M-LAG接口默认将在240s后自动恢复为Up状态

    M-LAG二次故障(Peer-Link故障+M-LAG设备故障)

    当Peer-link链路故障后,如果M-LAG备设备再次发生故障,此时不会对流量转发行为产生影响,仍由DFS状态为主的设备进行流量转发。

    当Peer-link链路故障后,如果M-LAG主设备再次发生故障,将导致系统无法转发流量

    此时需要通过二次故障增强功能来解决

    若M-LAG已使能二次故障增强功能

    则DFS状态为备的设备会借助M-LAG双主检测机制感知到DFS主设备故障(在一定周期内接收不到任何的M-LAG双主检测心跳报文会认为主故障)

    此时DFS备设备将升级为DFS主设备并恢复设备上处于ERROR DOWN状态的端口为Up状态,继续转发流量。

    若原DFS状态为主的设备故障恢复后但peer-link故障仍故障

    若配置的LACP M-LAG的系统ID在一定时间内切换为本设备的LACP系统ID

    则在LACP协商时接入侧仅选择上行链路中的一条链路为活动链路,实际流量转发正常。

    若配置的LACP M-LAG的系统ID为缺省情况,即系统ID不回切

    M-LAG两台设备均使用同一系统ID来与接入侧设备协商,链路均能被选中成为活动链路。

    该场景下,由于peer-link链路仍然故障,M-LAG两端无法同步对端的优先级、系统MAC等信息,形成M-LAG两台设备双主的情况,可能导致流量异常。

    此时,可以借助心跳链路报文中携带必要的DFS Group协商主备的必要信息(如DFS Group优先级、系统MAC等)来协商M-LAG两台设备的HB DFS主备信息

    触发HB DFS状态为备的设备上某些端口处于ERROR DOWN状态,HB DFS状态为主的设备继续工作。


    V-STP

    V-STP方式(推荐方式)

    V-STP(Virtua Spannning Tree Protocol)是二层拓扑管理特性,可以将两台设备的STP虚拟成一台设备的STP协议,对外呈现为一台设备进行STP协议计算

    为什么要使用V-STP

    需要给下游交换机营造出是一台设备的感觉,如果DFS主备设备都发各自的BPDU

    下游交换机就会从一个逻辑接口上收到两份不同的BPDU,会认为自己连接了两台设备

    正常情况下,一个物理接口收到的BPDU就是上游设备的那一个BPDU

    V-STP具体实现原理

    M-LAG主备设备配置了V-STP使能之后,在M-LAG主备协商成功后

    STP同步M-LAG主备的桥MAC信息和实例优先级信息

    M-LAG备设备使用M-LAG主设备同步过来的桥MAC信息和实例优先级信息进行STP计算和收发报文,保证虚拟化成一台设备后的STP计算参数。

    主要应用场景

    V-STP只能用于M-LAG组网

    可以解决多级M-LAG互联场景和组成M-LAG的设备作为非根桥场景的需求。

    注意事项

    配置V-STP功能时,需要保证组成M-LAG的两台设备上STP/RSTP定时器配置一致

    否则可能导致网络拓扑震荡。

    根桥方式

    通过配置根桥(V-STP出现之前使用此种方式)的方式也可以实现V-STP的功能

    根桥方式如何具体实现

    M-LAG主设备和备设备均作为STP网络中的根桥且配置相同的桥ID

    将两台设备模拟成同一个根桥,M-LAG主备设备在二层网络中不受其他组网变化的影响,保证正常的工作(保证了主备交换机的端口不被阻塞)

    注意事项

    如果M-LAG设备是在接入层的,我们一般不会把接入层设备设置为根桥

    如果上层网络是纯三层网络,此时把主备交换机是否设置为根桥意义也不大

    以上两种情况我们会使用V-STP方式,现网中也是推荐使用V-STP方式

    例如:现在Vxlan追求的是纯二层网络,使用V-STP效果更好


    M-LAG技术的应用

    N-LAG双归接入二层网络

    M-LAG双归接入Vxlan网络

    在DFS主备设备上配置Vxlan隧道(通过Eth-Trunk子接口配置)

    多级M-LAG

    在网络规模较大场景下, 可以通过配置多级M-LAG来保证链路可靠性

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

  • 相关阅读:
    leetcode做题笔记2342. 数位和相等数对的最大和
    小程序中如何查看会员的优惠券领取记录
    高项 进度管理论文
    矿产行业智能采购管理系统开发,采购平台提升矿企核心竞争力
    借助开源表单设计器,让办公流程化更顺畅!
    【代码思路】2023mathorcup 大数据数学建模B题 电商零售商家需求预测及库存优化问题
    SpringBoot通过配置切换注册中心(多注册中心nacos和eureka)
    《网络安全笔记》第七章:注册表基础
    攻防视角下,初创企业安全实战经验分享
    机器学习--浅谈朴素贝叶斯
  • 原文地址:https://blog.csdn.net/m0_49864110/article/details/127912374