一、M-LAG介绍


M-Lag.mp4 (57.42MB)

1.1 M-LAG简介

M-LAG(Multichassis Link Aggregation Group)即跨设备链路聚合组,是一种实现跨设备链路聚合的机制,如下图所示,将两台接入交换机以同一个状态和被接入的设备进行链路聚合协商,从而把链路可靠性从单板级提高到了设备级,组成双活系统
image.png
M-LAG作为一种跨设备链路聚合的技术,除了具备增加带宽、提高链路可靠性、负载分担的优势外,还具备以下优势:

  • 更高的可靠性
    • 把链路可靠性从单板级提高到了设备级
  • 简化组网及配置
    • 可以将M-LAG理解为一种横向虚拟化技术,将双归接入的两台设备在逻辑上虚拟成一台设备。M-LAG提供了一种没有环路的二层拓扑同时实现逻辑冗余,不再需要繁琐的生成树协议配置,极大的简化了组网及配置。
  • 独立升级
    • 两台设备可以分别进行升级,保证有一台设备正常工作即可,对正在运行的业务几乎没有影响。

二、M-LAG原理描述


2.1 M-LAG的基本概念

image.png
如上图所示,用户侧设备Switch(可以是交换机或主机)通过M-LAG机制与另外两台设备(SwitchA和SwitchB)进行跨设备链路聚合,共同组成一个双活系统。这样可以实现SwitchA和SwitchB共同进行流量转发的功能,保证网络的可靠性。

概念 说明
DFS Group 动态交换服务组DFS Group(Dynamic Fabric Service Group),主要用于部署M-LAG设备之间的配对,M-LAG双归设备之间的接口状态,表项等信息同步需要依赖DFS Group协议进行同步。
DFS主设备 部署M-LAG且状态为主的设备,通常也称为M-LAG主设备
DFS备设备 部署M-LAG且状态为备的设备,通常也称为M-LAG备设备
说明DFS Group的角色区分为主和备,正常情况下,主设备和备设备同时进行业务流量的转发,转发行为没有区别,仅在故障场景下,主备设备的行为会有差别。
双主检测链路 双主检测链路,又称为心跳链路,是一条三层互通链路, 用于M-LAG主备设备间发送双主检测报文。
说明正常情况下,双主检测链路不会参与M-LAG的任何转发行为,只在故障场景下,用于检查是否出现双主的情况。双主检测链路可以通过外部网络承载(比如,如果M-LAG上行接入IP网络,那么两台双归设备通过IP网络可以互通,那么互通的链路就可以作为双主检测链路)。也可以单独配置一条三层可达的链路来作为双主检测链路(比如通过管理口)。
peer-link接口 peer-link链路两端直连的接口均为peer-link接口。
peer-link链路 peer-link链路是一条直连链路且必须做链路聚合,用于交换协商报文及传输部分流量。接口配置为peer-link接口后,该接口上不能再配置其它业务。 为了增加peer-link链路的可靠性,推荐采用多条链路做链路聚合
HB DFS主设备 通过心跳链路来协商的状态为主的设备。
说明:
通过心跳链路报文来协商的设备HB DFS主备状态在正常情况下, 对M-LAG的转发行为不会产生影响,仅用于二次故障恢复场景下,在原DFS主设备或备设备故障恢复且peer-link链路仍然故障时,触发HB DFS状态为备的设备上相应端口Error-Down,避免M-LAG设备在双主情况下出现的流量异常。
HB DFS备设备 通过心跳链路来协商的状态为备的设备。
说明:
通过心跳链路报文来协商的设备HB DFS主备状态在正常情况下, 对M-LAG的转发行为不会产生影响,仅用于二次故障恢复场景 下,在原DFS主设备或备设备故障恢复且peer-link链路仍然故障时,触发HB DFS状态为备的设备上相应端口Error-Down,避免M-LAG设备在双主情况下出现的流量异常。
M-LAG成员接口 M-LAG主备设备上连接用户侧主机(或交换设备)的Eth-Trunk接口。
为了增加可靠性,推荐链路聚合配置为LACP模式。
M-LAG成员接口角色也区分主和备,与对端同步成员口信息时,状态由Down先变为Up的M-LAG成员接口成为主M-LAG成员口,对端对应的M-LAG成员口为备。
说明:
仅在M-LAG接入组播场景下,M-LAG成员接口的主备角色存在转发行为差异。

2.2 M-LAG协议交互原理

M-Lag理论 - 图4
M-LAG的建立过程有如下几个步骤:

  1. DFS Group配对
    1. 当M-LAG两台设备完成配置后,设备首先通过peer-link链路发送DFS Group的Hello报文。当设备收到对端的Hello报文后,会判断报文中携带的DFS Group编号是否和本端相同,如果两台设备的DFS Group编号相同,则两台设备DFS Group配对成功。
  2. DFS Group协商主备
    1. 配对成功后,两台设备会向对端发送DFS Group的设备信息报文,设备根据报文中携带的DFS Group优先级以及系统MAC地址确定出DFS Group的主备状态。
  3. M-LAG成员接口协商主备
    1. 在DFS Group协商出主备状态后,M-LAG的两台设备会通过peer-link链路发送M-LAG设备信息报文,报文中携带了M-LAG成员接口的配置信息。在成员口信息同步完成后,确定M-LAG成员接口的主备状态。
    2. 与对端同步成员口信息时,状态由Down先变为Up的M-LAG成员接口成为主M-LAG成员口,对端对应的M-LAG成员口为备,且主备状态默认不回切,即:当M-LAG成员接口状态为主的设备故障恢复后,先前由备状态升级为主状态的接口仍保持主状态,恢复故障的M-LAG成员接口状态为备,此处与DFS Group协商主备状态不一致。
    3. 仅在M-LAG接入组播场景下,M-LAG成员接口的主备角色存在转发行为差异。
  4. 双主检测
    1. 协商出M-LAG主备后,两台设备之间会通过双主检测链路按照1s的周期发送M-LAG双主检测报文,一旦设备感知peer-link故障,会按照100ms的周期发送三个双主检测链路报文,加速检测。当两台设备均能够收到对端发送的报文时,双活系统即开始正常的工作。
    2. 正常情况下,双主检测链路不会参与M-LAG的任何转发行为,只在DFS Group配对失败或者peer-link故障场景下,用于检查是否出现双主的情况,所以即便双主检测失败也不会影响M-LAG正常工作。双主检测链路可以通过外部网络承载(比如,如果M-LAG上行接入IP网络,那么两台双归设备通过IP网络可以互通,那么互通的链路就可以作为双主检测链路)。也可以单独配置一条三层可达的链路来 作为双主检测链路(比如通过管理口)。
    3. (推荐)双主检测链路通过管理网口互通,DFS Group绑定的管理网口IP地址要保证可以相互通信,管理网口下绑定VPN实例,保证双主检测报文与业务流量隔离
    4. 双主检测链路通过业务网络互通,DFS Group绑定的IP地址要保证可以三层互通。如果peer-link接口之间建立路由邻居关系,则业务网络双主检测报文会直接通过最优路由经peer-link链路传输。一旦peer-link故障,路由收敛期间,双主检测报文通过次优路径传输到对端,双主检测时间会慢0.5秒或者1 秒的时间。
  5. M-LAG同步信息
    1. 正常工作后,两台设备之间会通过peer-link链路发送M-LAG同步报文实时同步对端的信息,M-LAG同步报文中包括MAC表项、ARP表项以及STP、VRRP协议报文信息等,并发送M-LAG成员端口的状态,这样任意一台设备故障都不会影响流量的转发,保证正常的业务不会中断。
      | 说明:
      在V200R005C10版本及之后版本,两台设备在心跳链路Up之后即会按照周期发送双主检测 报文。若DFS Group绑定了本端和对端的IP地址,则在二次故障恢复场景下(设备已使能 二次故障增强功能),即原DFS主设备或备设备故障恢复且peer-link链路仍然故障时,M-LAG设备根据双主检测报文中携带的DFS信息协商出HB DFS主备状态,触发HB DFS状态为 备的设备相应端口Error-Down,从而避免双主场景下的流量异常。 | | —- |

2.3 M-LAG防环机制

M-LAG本身具有防环机制,可以构造出一个无环网络。那么M-LAG是如何构造无环网络的呢?如图下图所示,从接入设备或网络侧到达M-LAG配对设备的单播流量,会优先从本地转发出去,peer-link链路一般情况下不用来转发数据流量。当流量通过peer-link链路广播到对端M-LAG设备,在peer-link链路与M-LAG成员口之间设置单方向的流量隔离,即从peer-link口进来的流量不会再从M-LAG口转发出去,所以不会形成环路,这就是M-LAG单向隔离机制
image.png

2.3.1 单向隔离机制

机制生效前提
当M-LAG两台设备协商出M-LAG主备后,系统通过M-LAG同步报文判断接入设备是否双活接入:

  • 若接入设备双活接入M-LAG系统,则M-LAG两台设备下发对应M-LAG成员口的单向隔离配置,来隔离由peer-link口发往M-LAG成员口的流量。(M-LAG防环机制中的单向隔离仅对广播流量等泛洪流量生效
  • 若接入设备单归接入M-LAG系统,则M-LAG系统不会下发对应M-LAG成员口的单向隔离配置。

单向隔离机制实现原理
image.png
如上图所示,在设备双活接入M-LAG场景下,设备会默认按下列顺序下发全局ACL配置:

  • Rule 1:允许通过源端口为peer-link接口,目的端口为M-LAG成员口的三层单播报文
  • Rule 2:拒绝通过源端口为peer-link接口,目的端口为M-LAG成员口的所有报文,设备通过匹配ACL规则组来实现peer-link接口与M-LAG成员口之间的单向隔离,隔离由peer-link接口发往M-LAG成员口的广播等泛洪流量。当M-LAG设备感知到本端的M-LAG成员口状态为Down时,会通过peer-link发送M-LAG同步报文,通知对端设备撤销自动下发的相应的M-LAG成员端口的单向隔离ACL规则组。

2.4 M-LAG配置一致性检查

M-LAG是由两台设备组成的一个双活系统,可将M-LAG理解为一种横向虚拟化技术,将M-LAG的两台设备在逻辑上虚拟成一台设备,形成一个统一的二层逻辑节点。这带来了逻辑拓扑的清晰高效,也决定了M-LAG两端设备的某些配置需要保持一致,否则可能会导致M-LAG无法正常工作或者成环等问题。

但M-LAG运用于企业网中时,却面临一个突出的问题:部署企业网数据中心时,通过手工配置、人工比对来保证每一个M-LAG系统两端设备的配置一致性,不仅处理效率低下,更多的是带来诸多潜在的误配置风险。 :::success 为了解决上述问题,华为公司提出了M-LAG配置一致性检查的解决方案。该解决方案中,通过M-LAG机制自带的配置一致性检查功能,去订阅M-LAG系统两端设备的各模块配置。我们可以通过检查功能返回的比对结果,及时地调整M-LAG两端设备的配置部署,防止组网成环或者数据丢包等问题发生。 :::

M-LAG配置一致性检查将设备配置分为两类,如下表所示,分别为关键配置(Type1)一般配置(Type2)。根据对关键配置检查不一致时的处理方式,M-LAG一致性又分为严格模式(Strict)松散模式(loose)

  • 关键配置(Type 1):如果在M-LAG系统两端设备不一致,会导致成环、状态正常但长时间丢包等问题。
    • 严格模式下,如果M-LAG两端设备存在Type 1配置不一致,会导致M-LAG备设备上成员口处于ERROR DOWN状态,且触发设备对Type 1类型配置检查不一致的告警。
    • 松散模式下,如果M-LAG两端设备存在Type 1配置不一致,则会触发设备对两种类型配置检查不一致的告警。
  • 一般配置(Type 2):如果在M-LAG系统两端设备不一致,可能会导致M-LAG运行状态异常。与Type 1类型的配置相比较而言,Type 2类型的配置问题更容易被发现,对组网环境的影响也相对较小。无论处于何种模式,如果M-LAG两端设备存在以下Type 2配置不一致,则会触发设备对两种类型配置检查不一致的告警。
    | 视图 | 配置 | 类型 | | —- | —- | —- | | 全局 | STP功能是否使能 | Type 1 | | | STP工作模式配置 | | | | BPDU保护功能是否使能 | | | | STP多生成树实例与VLAN的映射关系配置:
    说明:
    设备默认仅检查ID为0的STP进程内多生成树实例与VLAN的映射关系。 | | | M-LAG成员口 | STP功能是否使能 | | | | STP端口的Root保护功能是否使能 | | | | M-LAG成员接口的LACP模式配置 | | | 全局 | VLAN配置 | Type2 | | | 静态MAC地址表项
    - 静态MAC地址表项指定接口为M-LAG成员口
    - VXLAN隧道的静态MAC地址表项
    | | | | 动态MAC的老化时间 | | | | 静态ARP表项
    - 短静态ARP表项
    - 长静态ARP表项
    - 若静态ARP表项指定出接口,则仅检查出接口为M-LAG成员口的静态ARP。
    - 若静态ARP表项指定所属VLAN,则直接比较VLAN ID。
    - 若静态ARP表项指定出接口和所属VLAN,则直接比较出接口为M-LAG成员口的静态ARP表项的VLAN ID。
    - VXLAN IPv4隧道的静态ARP表项。
    说明:
    设备不支持检查指定VPN实 例的短静态ARP表项,若长 静态ARP表项的出接口为MLAG成员口且绑定了VPN实 例或者所属VLAN对应的 VLANIF接口绑定了VPN实 例,设备同样不支持检查该 静态ARP表项。 | | | | 动态ARP的老化时间 | | | | 广播域桥域BD(Bridge Domain)配置
    - BD ID
    - BD关联VNI
    | | | | VBDIF接口配置
    - VBDIF接口的BD ID
    - VBDIF接口的IPv4地址
    - VBDIF接口的IPv6地址
    - VBDIF接口的VRRP4备份组
    - VBDIF接口MAC地址
    - VBDIF接口状态
    说明:
    对于VBDIF接口MAC地址, 设备默认仅检查虚拟MAC地址。
    针对IPv6地址以及VRRP4备份组的配置检查,仅在VBDIF接口Up时才进行。若 VBDIF接口状态为Down,则认为该接口下没有相关配置。 | | | | VLANIF接口配置
    - VLAN ID
    - VLANIF接口IPv4地址
    - VLANIF接口IPv6地址
    - VLANIF接口VRRP4备份组
    - VLANIF接口MAC地址
    - VLANIF接口状态
    说明:
    对于VLANIF接口MAC地址,设备默认仅检查虚拟MAC地址。
    针对IPv6地址以及VRRP4备份组的配置检查,仅在VLANIF接口Up时才进行。若VLANIF接口状态为Down,则认为该接口下没有相关配置。 | | | M-LAG成员口 | STP端口优先级配置 | | | | 接口加入VLAN配置 | | | | M-LAG成员口参数配置 | | | | M-LAG成员口所属Eth-Trunk接口成员口个数
    说明:
    仅比较Eth-Trunk接口的成员 口数量,对于成员口物理状 态Up/Down或者成员口带宽 不予检查。 | |

2.5 M-LAG正常工作场景流量转发

2.5.1 单播流量转发

对于南北向单播流量,在M-LAG接入侧,M-LAG的成员设备接收到接入设备通过链路捆绑负载分担发送的流量后,共同进行流量转发。到达M-LAG主备设备发往网络侧的流量则根据路由表转发流量。
对于东西向单播流量,在全部组建M-LAG,没有孤立端口的场景下,二层流量通过M-LAG本地优先转发,三层流量通过双活网关转发,都不经过peer-Link链路,直接由M-LAG主备设备转发至对应成员口
image.png

2.5.2 广播流量转发

M-LAG上行接入二层网络,那么二层网络必须要保证发往M-LAG的流量只有一 份,否则会有成环的风险。此处以M-LAG主设备的转发为例,如下图所示,假设右侧M-LAG上行接口被STP协议阻塞,M-LAG主设备收到广播流量后向各个下一跳转发,当流量到达M-LAG备设备时,由于peer-link与M-LAG成员接口存在单向隔离机制,到达备设备的流量不会向S-1转发。
image.png
此处以M-LAG备设备的转发为例,如下图所示,M-LAG备设备收到广播流量后向各个下一跳转发,当流量到达M-LAG主设备时,由于peer-link与M-LAG成员接 口存在单向隔离机制,到达主设备的流量不会向S-1转发。
image.png

三、M-LAG应用场景


M-LAG特性主要应用于将服务器或交换机双归接入普通以太网络、TRILL(Transparent Interconnection of Lots of Links)、VXLAN(Virtual eXtensible Local Area Network)和IP网络。一方面可以起到负载分担流量的作用,另一方面可以起到备份保护的作用。由于M-LAG支持多级互联,M-LAG的组网可以分为单级M-LAG和多级M-LAG。

3.1 单级M-LAG场景

如下图所示,为了保证可靠性,交换机在接入网络时需要考虑链路的冗余备份,采用部署MSTP等破环协议的方式可以实现,但是这种方式下链路的利用率很低,浪费大量的带宽资源。为了实现冗余备份同时提高链路的利用率,在SwitchA 与SwitchB之间部署M-LAG,实现Switch的双归接入。这样SwitchA与SwitchB形成负载分担,共同进行流量转发,当其中一台设备发生故障时,流量可以快速切换到另一台设备,保证业务的正常运行。
image.png
如下图所示,为了保证可靠性,服务器一般采用链路聚合的方式接入网络,如果服务器接入的设备故障将导致业务的中断。为了避免这个问题的发生,服务器 可以采用跨设备链路聚合的方式接入网络,在SwitchA与SwitchB之间部署M-LAG,实现服务器的双归接入。SwitchA与SwitchB形成负载分担,共同进行流量转发,当其中一台设备发生故障时,流量可以快速切换到另一台设备,保证业务的正常运行。
image.png

3.2 多级M-LAG场景

如下图所示,SwitchA和SwitchB之间部署M-LAG后,在SwitchC和SwitchD之间部署M-LAG并与下层的M-LAG进行级联,这样不仅可以简化组网,而且在保证可靠性的同时可以扩展双归接入服务器的数量。多级M-LAG互联必须基于V-STP方式进行配置。
image.png

image.png
image.png
image.png
image.png
image.png
image.png

二、如何从堆叠切换为M-LAG

从堆叠切换