M-LAG
title: M-LAG
id: 4c255256-a866-406e-80d5-db091e02e0e7
date: 2024-01-05 11:23:51
auther: caoshaoqing
excerpt: M-LAG简介 定义 M-LAG(Multichassis Link Aggregation Group) 跨设备链路聚合组,是一种实现跨设备链路聚合的机制,将SwitchA和SwitchB通过peer-link链路连接并以同一个状态和Switch进行链路聚合协商,从而把链路可靠性从单板级提高到了设
permalink: /archives/e8079a2f-6e55-4a80-822d-736d62a75015
M-LAG简介
定义
M-LAG(Multichassis Link Aggregation Group) 跨设备链路聚合组,是一种实现跨设备链路聚合的机制,将SwitchA和SwitchB通过peer-link链路连接并以同一个状态和Switch进行链路聚合协商,从而把链路可靠性从单板级提高到了设备级。
目的
M-LAG作为一种跨设备链路聚合的技术,除了具备增加带宽、提高链路可靠性、负载分担的优势外,还具备以下优势:
-
更高的可靠性
- 把链路可靠性从单板级提高到了设备级。
-
简化组网及配置
- 可以将M-LAG理解为一种横向虚拟化技术,将双归接入的两台设备在逻辑上虚拟成一台设备。M-LAG本身提供了一个没有环路的二层拓扑同时实现冗余备份,极大的简化了组网及配置。
-
独立升级
- 两台设备可以分别进行升级,保证有一台设备正常工作即可,对正在运行的业务几乎没有影响。
概念 | 说明 |
---|---|
DFS Group | 动态交换服务组DFS Group(Dynamic Fabric Service Group),主要用于部署M-LAG设备之间的配对,M-LAG双归设备之间的接口状态,表项(==ARP、MAC表==)等信息同步需要依赖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成员接口的主备角色存在转发行为差异。 |
M-LAG协议交互原理
-
DFS Group配对
当设备完成M-LAG配置后,设备首先通过peer-link链路发送DFS Group的Hello报文。当设备收到对端的Hello报文后,会判断报文中携带的DFS Group编号是否和本端相同,如果两台设备的DFS Group编号相同,则两台设备DFS Group配对成功。
-
DFS Group协商主备
配对成功后,两台设备会向对端发送DFS Group的设备信息报文,设备根据报文中携带的DFS Group优先级以及系统MAC地址确定出DFS Group的主备状态。
以SwitchB为例,当SwitchB收到SwitchA发送的报文时,SwitchB会查看并记录对端信息,然后比较DFS Group的优先级,如果SwitchA的DFS Group优先级高于本端的DFS Group优先级,则确定SwitchA为DFS主设备,SwitchB为DFS备设备。如果SwitchA和SwitchB的DFS Group优先级相同,比较两台设备的MAC地址,确定==MAC地址小的一端为DFS主设备==。
==DFS Group的角色区分为主和备,正常情况下,主设备和备设备同时进行业务流量的转发,转发行为没有区别,仅在故障场景下,主备设备的行为会有差别。==
-
M-LAG成员接口协商主备
在DFS Group协商出主备状态后,M-LAG的两台设备会通过peer-link链路发送M-LAG设备信息报文,报文中携带了M-LAG成员接口的配置信息。在成员口信息同步完成后,确定M-LAG成员接口的主备状态。
与对端同步成员口信息时,状态由Down先变为Up的M-LAG成员接口成为主M-LAG成员口,对端对应的M-LAG成员口为备,且主备状态默认不回切,即:当M-LAG成员接口状态为主的设备故障恢复后,先前由备状态升级为主状态的接口仍保持主状态,恢复故障的M-LAG成员接口状态为备,此处与DFS Group协商主备状态不一致。
==仅在M-LAG接入组播场景下,M-LAG成员接口的主备角色存在转发行为差异。==
-
双主检测
协商出M-LAG主备后,两台设备之间会通过双主检测链路发送双主检测报文,在45秒内两台设备均能够收到对端发送的双主检测报文,双活系统即开始正常的工作;若==45秒内未收到双主检测报文则心跳超时==。一旦设备感知到peer-link故障,设备会快速发送双主检测链路报文,加速检测。
在DFS Group配对失败或者peer-link故障场景下,双主检测链路用于检查是否出现双主的情况。双主检测链路可以通过外部网络承载(比如,如果M-LAG上行接入IP网络,那么两台双归设备通过IP网络可以互通,那么互通的链路就可以作为双主检测链路)。也可以单独配置一条三层可达的链路来作为双主检测链路(比如通过管理口、推荐==Loopback口==)。
- 双主检测链路通过管理网口互通,DFS Group绑定的管理网口IP地址要保证可以相互通信,管理网口下绑定VPN实例,保证双主检测报文与业务流量隔离。
- 双主检测链路通过业务网络互通,DFS Group绑定的IP地址要保证可以三层互通。如果peer-link接口之间建立路由邻居关系,则业务网络双主检测报文会直接通过最优路由经peer-link链路传输。一旦peer-link故障,路由收敛期间,双主检测报文通过次优路径传输到对端,双主检测时间会慢0.5秒或者1秒的时间。
==两台设备在心跳链路Up之后即会按照周期发送双主检测报文。若DFS Group绑定了本端和对端的IP地址,则在二次故障恢复场景下(设备已使能二次故障增强功能),即原DFS主设备或备设备故障恢复且peer-link链路仍然故障时,M-LAG设备根据双主检测报文中携带的DFS信息协商出HB DFS主备状态,触发HB DFS状态为备的设备相应端口Error-Down,从而避免双主场景下的流量异常。==
-
M-LAG同步信息
正常工作后,两台设备之间会通过peer-link链路发送M-LAG同步报文实时同步对端的信息,M-LAG同步报文中主要包括MAC表项、ARP以及STP等,并发送M-LAG成员端口的状态,这样任意一台设备故障都不会影响流量的转发,保证正常的业务不会中
M-LAG防环机制
M-LAG本身具有防环机制,可以构造出一个无环网络。
从接入设备或网络侧到达M-LAG配对设备的单播流量,会优先从本地转发出去,peer-link链路一般情况下不用来转发数据流量。当流量通过peer-link链路广播到对端M-LAG设备,在peer-link链路与M-LAG成员口之间设置单方向的流量隔离,即从peer-link口进来的流量不会再从M-LAG口转发出去,所以不会形成环路,这就是M-LAG单向隔离机制。
单向隔离机制
机制生效前提
当M-LAG两台设备协商出M-LAG主备后,系统通过M-LAG同步报文判断接入设备是否双活接入:
-
若接入设备双活接入M-LAG系统,则M-LAG两台设备下发对应M-LAG成员口的单向隔离配置,来隔离由peer-link口发往M-LAG成员口的流量。
- ==M-LAG防环机制中的单向隔离对二层(包括单播、组播、广播)流量生效,三层组播流量生效,三层单播流量不生效。==
-
若接入设备单归接入M-LAG系统,则M-LAG系统不会下发对应M-LAG成员口的单向隔离配置。
- ==从peer-link 收到的bum帧,不会发送给m-lag成员端口==
在设备双活接入M-LAG场景下,设备会默认按下列顺序下发全局ACL配置:
- Rule1:允许通过源端口为peer-link接口,目的端口为M-LAG成员口的三层单播报文;
- Rule2:拒绝通过源端口为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规则组。
堆叠与M-LAG的对比
对比维度 | 堆叠 | M-LAG(推荐) |
---|---|---|
可靠性 | 一般: - 控制面集中,可能故障在成员设备上扩散 - 设备级、单板级、链路级等都具备高可靠性 | 更高: - 控制面独立,故障域隔离 - 设备级、单板级、链路级等都具备高可靠性 |
配置复杂度 | 简单:逻辑上是一台设备 | 一般:两台设备均需独立配置 |
成本 | 一般:需要部署堆叠线缆 | 一般:需要部署Peer-link连线 |
性能 | 一般:Master控制面要控制所有堆叠成员的转发面,CPU载荷加重 | 高:成员交换机独立转发,CPU载荷保持不变 |
升级复杂度 | 高:通过堆叠快速升级可以降低业务中断时间,但升级操作时间变长,升级风险变高 | 低:通过reboot升级,操作简单,风险低 |
升级中断时间 | 相对较长:通过堆叠快速升级,典型配置组网下,业务中断时间在20秒~1分钟左右,与业务量强相关 | 短:流量秒级中断 |
网络设计 | 相对简单:逻辑上单节点设计 | 相对复杂:逻辑上双节点设计 |
适用场景 | - 对软件版本升级中断时间无要求 - 维护简单 | - 对软件版本升级时业务中断时间要求较高 - 可靠性更高 - 可接受增加一定程度的维护复杂度 |
设备在peer-link故障但双主检测正常时接口Error-Down情况
设备配置情况 | M-LAG接入普通以太网络、VXLAN网络或IP网络 |
---|---|
设备缺省情况 | 除管理网口、peer-link接口和堆叠口以外的接口处于ERROR DOWN状态。 |
设备仅配置suspend功能 | 仅M-LAG成员口以及配置该功能的接口处于ERROR DOWN状态。 |
设备仅配置reserved功能 | 除配置该功能的接口、管理网口、peer-link接口和堆叠口以外的接口处于ERROR DOWN状态。 |
设备同时配置suspend功能和reserved功能 | 仅M-LAG成员口以及配置suspend功能的接口处于ERROR DOWN状态。 |
M-LAG同步报文信息
类型 | 描述 |
---|---|
MAC信息 | MAC表项同步 |
ARP信息 | ARP报文同步 |
ND信息 | ND报文同步 |
STP信息 | STP状态同步 |
其他 | M-LAG成员端口状态|、LACP System ID、DHCP Snooping表等 |
配置示例
CE6820 主机
#
dfs-group 1
authentication-mode hmac-sha256 password 123456
dual-active detection source ip 10.2.0.29 peer 10.2.0.30
priority 150
#
interface Eth-Trunk0
description peer-link
stp disable
mode lacp-static
peer-link 1
port vlan exclude 1
#
interface Eth-Trunk1
undo portswitch
ip address 10.2.0.29 255.255.255.252
mode lacp-static
#
interface Eth-Trunk1022
port link-type trunk
undo port trunk allow-pass vlan 1
port trunk allow-pass vlan 2 to 4094
mode lacp-static
dfs-group 1 m-lag 2
#
interface Eth-Trunk1023
port link-type trunk
undo port trunk allow-pass vlan 1
port trunk allow-pass vlan 2 to 4094
mode lacp-static
dfs-group 1 m-lag 1
#
interface 10GE1/0/45
eth-trunk 1023
device transceiver 10GBASE-FIBER
#
interface 10GE1/0/46
eth-trunk 1022
device transceiver 10GBASE-FIBER
#
interface 10GE1/0/47
eth-trunk 1
device transceiver 10GBASE-FIBER
#
interface 10GE1/0/48
eth-trunk 1
device transceiver 10GBASE-FIBER
#
interface 100GE1/0/5
eth-trunk 0
device transceiver 40GBASE-FIBER
#
interface 100GE1/0/6
eth-trunk 0
device transceiver 40GBASE-FIBER
CE6820 备机
dfs-group 1
authentication-mode hmac-sha256 password 123456
dual-active detection source ip 10.2.0.30 peer 10.2.0.29
priority 101
#
interface Eth-Trunk0
description peer-link
stp disable
mode lacp-static
peer-link 1
port vlan exclude 1
#
interface Eth-Trunk1
undo portswitch
ip address 10.2.0.30 255.255.255.252
mode lacp-static
#
interface Eth-Trunk1022
port link-type trunk
undo port trunk allow-pass vlan 1
port trunk allow-pass vlan 2 to 4094
mode lacp-static
dfs-group 1 m-lag 2
#
interface Eth-Trunk1023
port link-type trunk
undo port trunk allow-pass vlan 1
port trunk allow-pass vlan 2 to 4094
mode lacp-static
dfs-group 1 m-lag 1
#
interface 10GE1/0/45
eth-trunk 1023
device transceiver 10GBASE-FIBER
#
interface 10GE1/0/46
eth-trunk 1022
device transceiver 10GBASE-FIBER
#
interface 10GE1/0/47
eth-trunk 1
device transceiver 10GBASE-FIBER
#
interface 10GE1/0/48
eth-trunk 1
device transceiver 10GBASE-FIBER
#
interface 100GE1/0/5
eth-trunk 0
device transceiver 40GBASE-FIBER
#
interface 100GE1/0/6
eth-trunk 0
device transceiver 40GBASE-FIBER
#