M-LAG 跨设备链路聚合
将两台物理设备在聚合层面虚拟成一台设备来实现跨设备链路聚合,从而提供设备级冗余和流量负载分担
M-LAG除了提供设备级冗余和流量负载分担以及可靠性还具备以下优势:
- 无环拓扑:即使部署了stp,M-LAG组网中也不会有阻塞端口
- 更高的可靠性:把链路可靠性从单板级提高到了设备级
- 双归接入:将两台设备的链路进行聚合,实现流量的负载分担
- 用户流量不中断:M-LAG组网中的接口、链路或者设备发生故障时,可将用户流量快速切换到正常设备/链路转发,确保用户业务不中断
- 简化组网及拓扑:提供二层无环拓扑,同时实现冗余备份,不再需要繁琐的防环协议配置
- 独立升级:两台设备可以分别进行升级,保证有一台正常运行即可,对正在运行的业务无影响
M-LAG网络模型及基本概念
网络模型:M-LAG设备组成的组网叫做M-LAG系统,在系统中M-LAG设备互为邻居。例如两台M-LAG组成系统,Device A为主设备,Device B为从设备形成负载分担,共同进行流量转发,当其中一台设备发生故障时,流量可以快速切换到另一台设备上保证业务正常运行
基本概念:
- M-LAG主设备:部署M-LAG且状态为Primary的设备
- M-LAG从设备:部署M-LAG且状态为Secondary的设备
- peer-link链路:M-LAG设备间的交互M-LAG协议报文及传输数据流量的链路peer-link可以是聚合链路,也可以是Tunnel隧道,管理员需要根据不同组网环境选择peer-link链路。当采用聚合链路作为peer-link链路时,建议将多条链路进行聚合。一个M-LAG系统只有一条peer-link链路
- peer-link接口:peer-link链路对应的接口,可以是聚合接口,也可以是Tunnel接口,每台M-LAG设备只有一个peer-link接口
- keepalive链路:M-LAG主备设备之间的一条三层链路,用于主备设备间检测邻居状态,即通过keepalive报文来进行peer-link链路故障时的双主检测
- M-LAG组:设备之间的配对,M-LAG设备上相同编号的M-LAG接口属于同一M-LAG组
- M-LAG接口:M-LAG主备设备与外部设备相连的二层聚合接口。为了提高可靠性需要使用动态聚合。M-LAG设备上相同编号的M-LAG接口属于同一M-LAG组M-LAG组ID为M-LAG接口编号
M-LAG接口白话:主备设备上的聚合链路1,都属于同一个M-LAG组,聚合链路2也就属于另一个M-LAG组
PS:正常情况下,主从设备同时参与流量转发,转发行为没有区别,仅在故障场景下主备设备的行为会有差别
DRCP协议
M-LAG通过在peer-ink链路上运行DRCP来交互分布式聚合的相关信息,以确定两台设备是否可以组成M-LAG系统。运行该协议的设备之间通过互发DRCPDU(Distributed RelayControl ProtocolData Unit,分布式聚合控制协议数据单元) 来交互分布式聚合的相关信息
DRCPDU的交互:通过peer-link链路定期交互DRCPDU报文,当收到对端发来的DRCP协商报文后,会判断DRCP协商报文中的M-LAG系统配置是否和本端相同。只有两端的M-LAG设备均相同,则两台设备可以组成M-LAG系统
DRCP超时时间:是指peer-link接口等待接收DRCPDU的超时时间,超过时间未收到对端发来的DRCPDU,则认为对端M-LAG设备peer-link链路已失效
DRCP超时时间同时也决定了对端M-LAG设备发送DRCPDU的速率。DRCP超时有短超时 (3秒)和长超时 (90秒) 两种:
1.若本端DRCP超时时间为短超时,则对端M-LAG设备将快速发送DRCPDU(每1秒发送1个DRCPDU)。(慎用,容易误检测)
2.若本端DRCP超时时间为长超时,则对端M-LAG设备将慢速发送DRCPDU(每30秒发送1个DRCPDU)
keepalive机制
M-LAG设备间通过keepalive链路检测邻居状态,即通过keepalive报文来进行peer-link链路故障时的双主检测
如果在keepalive timeout(超时)时间内,本端M-LAG收到对端发来的keepalive报文:
1.如果peer-link链路状态为down,则认为peer-link故障,启动keepalive hold timeout(超时保持)定时器:
(1)在该定时器超时前收到DRCP报文则认为该peer-link恢复UP,M-LAG系统正常工作
(2)在该定时器超时前未收到DRCP报文,则根据之前收到的keepalive报文来计算主设备,保证只能有一台设备参与转发
2.如果peer-link为up则M-LAG系统可以正常运行
如果在keepalive timeout(超时)时间内,本端M-LAG未收到对端发来的keepalive报文:
1.如果peer-link链路状态为down,则认为对端M-LAG设备为down,启动keepalive hold timeout定时器,在该定时器超时后:
(1)本端设备为主设备时,如果本端存在UP状态的M-LAG接口,则本端仍为主设备,否则本端称为none角色
(2)本端设备为备设备时,则升级为主设备。此后如果本端有存在UP状态的M-LAG接口,则保持主设备,否则成为none角色
PS:当设备处于none角色时,设备不能收发keepalive报文,keepalive链路处于down状态
2.如果peer-link链路状态为up,则认为keepalive链路为down,此时主设备正常工作,同时设备打印日志信息,提醒用户检查keepalive链路
MAD机制
前景:peer-link链路故障后,为了防止备设备继续转发流量,M-LAG提供MAD(多active检测)机制,即在系统分裂时将设备上部分接口置为M-LAG MAD DOWN状态,仅允许M-LAG状态、peer-link接口转发流量,避免流量转发错误,如果希望M-LAG系统中有特殊用途的接口(比如keepalive接口)保持UP状态,可以将其指定为M-LAG保留接口
设备上接口在M-LAG系统分裂后有以下状态:
1.系统分裂后接口处于M-LAG MAD DOWN状态
2.系统分裂后接口保持原状态不变
3.系统分裂时设备上的保留接口和强制UP功能的接口不被置位M-LAG MAD DOWN状态
保留接口包括系统保留与用户配置,系统保留包含以下:
1.peer-link接口
2.peer-link接口所对应的二层聚合接口的成员接口
3.M-LAG接口
4.管理以太网接口
当peer-link链路故障恢复后,为了防止丢包,备设备尽可能在延迟恢复时间内完成表项(MAC地址表、ARP 等) 同步,其后该设备上处于M-LAG MAD DOWN状态的接口将恢复为up状态
PS:当peer-link链路故障时,keepalive链路正常工作时,主设备正常工作,备设备会自动关闭本设备上除M-LAG保留接口外的所有接口,将这些接口置为M-LAG MAD DOWN状态。如果此时keepalive链路也发生故障,备设备上的接口会解除M-LAG MAD DOWN状态,并升级为主设备,但是这就导致了系统中两台设备都参与转发,引起网络故障,为了避免需要开启M-LAG MAD DOWN保持功能,使设备上的接口一直处于M-LAG MAD DOWN状态,不参与流量转发
角色计算
通过计算可能会出现三种设备角色,分别是primary、secondary、none
角色触发条件包括:
M-LAG设备在系统初始化时(包括在新配置M-LAG或带M-LAG配置重启设备)
1.peer-link链路UP时,设备角色通过peer-link链路计算
2.peer-link链路故障,依靠keepalive链路计算
3.peer-link链路和keepalive链路均故障,根据本端M-LAG接口状态决定设备角色
当通过peer-link链路或者keepalive链路交互报文计算设备角色时,依次比较以下因素:
1.比较设备所有M-LAG接口的状态,有可工作的M-LAG接口的一端为优
2.比较计算角色,若有一端为primary,另一端为none,则primary端优
3.优先选择不存在M-LAG MAD DOWN状态的接口的一端为优
4.比较健康状态,健康值越小越优先,设备健康值可以通过display system health命令查看
5.比较设备角色优先级,越高越优
6.比较设备桥MAC,越小越优
经过上述顺序比较,结果为优的称为primary、另一端称为secondary。如果设备通过peer-link链路计算角色,则不比较设备所有M-LAG接口的状态
M-LAG系统建立及工作过程:
M-LAG设备之间通过DRCP和keepaliv报文建立维护M-LAG系统,系统正常工作时主从设备同时参与转发负载分担
例如A、B之间M-LAG系统建立流程如下
1.通过peer-link链路定期发送DRCP报文,用来协商报文参数的一致性,协商成功建立M-LAG系统
2.确定主从状态,使用角色计算顺序进行协商,主从协商完成之后,M-LAG会进行配置一致性检查
3.周期性发送keepalive报文检测邻居状态
4.系统开始工作之后,会实时同步对端信息,例如MAC、ARP地址表项,这样任意一台设备故障都不会影响流量转发,保证正常的业务不会中断
M-LAG设备的工作模式分为两种:
1.M-LAG系统独立操作模:作为M-LAG系统成员设备参与报文转发
2.独立工作模式:脱离M-LAG系统独立工作,独自转发报文
PS:系统分裂时为了避免都作为主设备参与转发。在peer-link链路和keepalive链路均处于down状态时,从设备会经过一段时间切换到独立运行模式。回到独立模式的设备的聚合接口将变为普通聚合接口,使同一个M-LAG组的两个聚合接口的LACP系统MAC地址和LACP系统优先级不一致,这样只有一边聚合接口的成员端口可以被选中,避免流量转发异常
配置一致性检查-Type 1
type1配分为全局配置和M-LAG接口配置,全局type1配置不一样则备设备所有M-LAG接口置位down状态,接口type1类型不一致,down掉被设备对应的M-LAG接口。主设备仅产生相应报文,不做任何动作
全局type1类型一致性检查包括以下:
1.peer-link接口链路类型:access、hybrid、trunk
2.peer-link接口的PVID
3.生成树功能:全局生成树是否开启和vlan内生成树是否开启
4.生成树模式:stp、rstp、mstp、pvst
5.MST域的配置:域名、修订级别、映射关系
M-LAG接口type1一致性检查如下:
1.聚合组的工作模式:静态或者动态
2.接口生成树是否开启
3.接口的链路类型:access、hybrid、trunk
4.接口的PVID
配置一致性检查-type 2
分为全局和接口
全局type2类型配置
1.peer-link接口所属的vlan
2.vlan接口处于up状态且peer-link接口加入该vlan
3.vlan接口状态:是否被手动关闭
4.vlan接口是否配置了IPv4地址
M-LAG接口type2类型配置
1.M-LAG接口所属的vlan
2.M-LAG口上的端口速率作为优先选择参考端口功能是否配置
3.M-LAG口上的选择选中端口时忽略端口速率功能是否配置
简要总结:
Type1类型配置:影响M-LAG系统转发的配置。如果Type 1类型配置不匹配,则将备设备上M-LAG口置为down状态
Type2类型配置:仅影响业务模块的配置。如果Type2类型配置不匹配,备设备上M-LAG口依然为up状态,不影响M-LAG系统正常工作。由Type2类型配置对应的业务模块决定是否关闭该业务功能,其他业务模块不受影响
M-LAG安全机制
M-LAG序列号校验:为了防止重放攻击,保证流量正常转发,M-LAG支持序列号校验,以识别非法攻击报文
M-LAG报文认证:为防止攻击者篡改DRCP报文和Keepalive报文内容,M-LAG提供报文认证功能,提高安全性。M-LAG设备发送的协议报文中会携带一个消息摘要,该消息摘要是对协议报文内容经Hash计算得到。对端M-LAG设备收到该报文时,会与自己计算的该报文的消息摘要进行比对,如果一致,则认为其合法
故障处理机制
M-LAG接口故障处理机制:
1.M-LAG接口故障指的是成员故障,M-LAG聚合接口保持全局UP,表项同步不受影响,
2.故障网络侧流量会通过peer-link链路发送给另外一台设备,所有流量均由另外一台M-LAG设备转发,下行流量不感知故障
peer-link链路故障处理机制:
peer-link链路故障但是keepalive链路正常,则会将从设备设备上除保留接口以外的接口全部置于M-LAG MAD DOWN状态。主设备上的M-LAG接口所在聚合链路状态仍为up,从设备上的MM-LAG接口所在聚合接口链路状态为down,从而保证所有流量都通过主设备发送。一旦peer-link链路恢复,处于M-LAG MAD DOWN状态的接口经过延迟时间自动恢复UP状态(延迟时间缺省为30秒)
设备故障处理机制
当主设备故障后,主设备上的聚合链路状态变为down,不再转发流量。将从设备升级为主设备,该设备上的聚合链路状态为up,流量转发状态不变,继续转发流量。主设备故障恢复后,当前系统中的主设备保持不变,故障恢复的设备成为从设备
上行链路故障处理:
上行链路故障并不会影响M-LAG系统的转发,一台设备的上行链路故障,将会经过peer-link链路发送流量,转发全部交由另一台设备处理
经过peer-link链路转发影响效率,可以使用monitor link功能,将M-LAG组成员和上行端口关联,上行链路down了联动下行的M-LAG组成员接口down,使其流量全部通过另一台设备转发,提高效率
H3C的M-LAG相关命令解释
m-lag system-mac 0001-0001-0001 | 配置m-lag系统的MAC地址 |
m-lag system-number 1 | 配置M-LAG系统编号 |
m-lag system-priority 123 | M-LAG系统优先级 |
m-lag keepalive ip destination 1.1.1.1 source 1.1.1.2 | 配置keepalive报文的参数 |
m-lag mad exclude interface GigabitEthernet1/0/5 | 配置m-lag保留接口 |
聚合接口视图:port m-lag peer-link 1 | 配置peer-link接口 |
聚合接口视图:port m-lag group 4 | 配置m-lag接口 |
dis m-lag keepalive | 查看keepalive报文信息 |
dis m-lag summary | 查看m-lag接口的摘要信息和详细信息 |