M-LAG
M-LAG(跨设备链路聚合组),是一种实现跨设备链路聚合的机制,将一台设备与另外两台设备进行跨设备链路聚合,从而把链路可靠性从单板级提高到了设备级。
. 对二层来讲,可将M-LAG理解为一种横向虚拟化技术,将M-LAG的两台设备在逻辑上虚拟成一台设备,形成一个统一的二层逻辑节点。实际应用中,可通过此横向虚拟化
技术(M-LAG),实现汇聚-接入之间的网络逻辑无环化,取代STP。这种设计相对传统的STP破环保护,逻辑拓扑更加清晰、链路利用更加高效。
. 可用该技术,构建高可靠性的二层网络
M-LAG 基本概念
如下图
用户侧设备Switch(可以是交换机或服务器)通过M-LAG机制与另外两台设备(SwitchA和SwitchB)进行跨设备链路聚合,共同组成一个M-LAG双活系统。这样可以实现SwitchA和SwitchB共同进行流量的转发,保证网络的可靠性。
概念 | 说明 | 补充 |
---|---|---|
DFS Group | 动态交换服务组,主要用于部署M-LAG设备之间的配对;M-LAG双归设备之间的接口状态,表项等信息的同步需要依赖DFS-Group协议进行同步 | |
DFS主设备 | 部署M-LAG且状态为主的设备 | |
DFS备设备 | 部署M-LAG且状态为备的设备 | DFS Group的角色区分为主和备,正常情况下,主设备和备设备同时进行业务流量的转发,转发行为没有区别,仅在故障场景下,主备设备的行为会有差别 |
peer-link链路 | peer-link链路是一条直连链路,用于交换协商报文及传输部分流量。接口配置为peer-link接口后,该接口上不能再配置其它业务 | 为了增加peer-link链路的可靠性,推荐采用多条链路做链路聚合 |
peer-link接口 | peer-link链路两端直连的接口均为peerlink接口 | |
双主检测链路 | 双主检测链路是一条三层互通链路,用于M-LAG主备设备间发送双主检测报文 | 正常情况下,双主检测链路不会参与M-LAG的任何转发行为,只在故障场景下,用于检查是否出现双主的情况。双主检测链路可以通过外部网络承载(比如,如果M-LAG上行接入IP网络,那么两台双归设备通过IP网络可以互通,那么互通的链路就可以作为双主检测链路)。也可以单独配置一条三层可达的链路来作为双主检测链路(比如通过管理口) |
M-LAG成员接口 | M-LAG主备设备上连接用户侧主机(或交换设备)的Eth-Trunk接口。为了增加可靠性,推荐链路聚合配置为LACP模式。M-LAG成员接口角色也区分主和备,与对端同步成员口信息时,状态由Down先变为Up的M-LAG成员接口成为主M-LAG成员口,对端对应的M-LAG成员口为备 | 仅在M-LAG接入组播场景下,M-LAG成员接口的主备角色存在转发行为差异 |
M-LAG 优势
仅在M-LAG接入组播场景下,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的主备状态,如果优先级相同的话,比较两台设备的MAC地址,确定MAC地址小的一端为DFS主设备
- M-LAG成员接口协商主备
与对端同步成员口信息时,状态由Down先变为Up的M-LAG成员接口成为主MLAG成员口,对端对应的M-LAG成员口为备,且主备状态默认不回切,即:当M-LAG成员接口状态为主的设备故障恢复后,先前由备状态升级为主状态的接口仍保持主状态,恢复故障的M-LAG成员接口状态为备,此处与DFS Group协商主备状态不一致
- 双主检测
. 协商出M-LAG主备后,两台设备之间会通过双主检测链路按照1s的周期发送MLAG双主检测报文,一旦设备感知peer-link故障,会按照100ms的周期发送三个双主检测链路报文,加速检测。当两台设备均能够收到对端发送的报文时,双活系统即开始正常的工作
. 正常情况下,双主检测链路不会参与M-LAG的任何转发行为,只在DFS Group配对失败或者peer-link故障场下,用于检查是否出现双主的情况,所以即便双主检测
失败也不会影响M-LAG正常工作。
- (推荐) 双主检测链路通过管理网口互通,DFS Group绑定的管理网口IP地址要保证可以相互通信,管理网口下绑定v*n实例,保证双主检测报文与业务流量隔离
- 双主检测链路通过业务网络互通,DFS Group绑定的IP地址要保证可以三层互通。如果peer-link接口之间建立路由邻居关系,则业务网络双主检测报文会直接通过最优路由经peer-link链路传输。一旦peer-link故障,路由收敛期间,双主检测报文通过次优路径传输到对端,双主检测时间会慢0.5秒或者1秒的时间
- M-LAG同步信息
正常工作后,两台设备之间会通过peer-link链路发送M-LAG同步报文实时同步对端的信息,M-LAG同步报文中包括MAC表项、ARP表项等,发送M-LAG成员端口的状态,并同步STP、VRRP协议报文,这样任意一台设备故障都不会影响流量的转发,保证正常的业务不会中断
M-LAG 防环机制
M-LAG本身具有防环机制,可以构造出一个无环网络。如下图所示,从接入设备或网络侧到达M-LAG配对设备的单播流量,会优先从本地转发出去,peer-link链路一般情况下不用来转发数据流量。当流量通过peer-link链路广播到对端M-LAG设备,在peerlink链路与M-LAG成员口之间设置单方向的流量隔离,即从peer-link口进来的流量不会再从M-LAG口转发出去,所以不会形成环路,这就是M-LAG单向隔离机制
但在一些特殊场景,如下图所示,比如一端设备上的M-LAG成员口故障时,数据流量可以从peer-link链路到达对端设备,然后在对端设备上进行转发
M-LAG 配置建议
STP协议配置
. 从STP协议角度来看,一个Eth-Trunk接口可以看做一条逻辑链路,这样的话M-LAG系统和接入设备就构成了一个星形拓扑(在这种拓扑下,没有被STP阻塞的端口)。因此,STP主要作为故障保护机制来避免人为因素造成的任何网络环路,比如直接在组建M-LAG系统的两台设备之间连接一条线路等
. 虽然通过使用跨设备链路聚合,M-LAG可以构造出一个无环网络,但是我们还是建议部署STP,用于防止误配置、误接线导致的环路,或者用于特殊场景的接入
如图
在M-LAG系统中,STP协议的作用如下:
- 检测二层环路进行破环,保证二层网络无环
- 计算非双归接入M-LAG系统设备的二层路径
- 在配置或删除M-LAG配置的操作过程中防止环路
M-LAG双主检测链路配置建议
- 通过管理网口建立双主检测链路:建议绑定v*n,配置方式见如下所示,相对专用线路的双主检测,成本低
- 通过已有的三层链路建立双主检测链路
- 通过业务网口建立双主检测链路:由于双主检测报文数量较少,选择GE口就可以,建议绑定v*n
说明: 双主检测链路和peer-link链路不能共用,若双主检测报文通过peer-link链路转发,peer-link链路down时,双主检测不能进行,无法触发备设备端口error down动作,可能会导致流量转发异常
M-LAG peer-link 配置建议
- 建议配置peer-link接口的成员口采用10GE或者更大带宽的物理口
- 建议配置Peer-link口的成员口数不少于2个
- 针对华为CE12800系列交换机,建议配置peer-link接口成员口要跨板部署,防止某一单板故障导致peer-link故障
- 建议配置peer-link接口启用静态LACP模式
- 建议组建M-LAG系统的两台设备的peer-link接口要直连,中间不能加透传设备
- peer-link接口默认加入所有VLAN,不需要通过peer-link转发流量的VLAN可以通过执行port vlan exclude命令从peer-link口退出
- 基于根桥方式配置M-LAG,由于两端设备需要模拟成同一个STP根桥,保证设备直连接口不会被阻塞掉,需要将接口STP功能去使能。基于V-STP方式配置MLAG,需要使能peer-link接口下的STP功能
故障处理
. 当M-LAG应用于普通以太网络、VXLAN网络或IP网络的双归接入时,peer-link故障但双主检测状态正常会触发状态为备的设备上除管理网口、peer-link接口和堆叠口以外的接口处于Error-Down状态。M-LAG主设备侧Eth-Trunk链路状态仍为Up,M-LAG备设备侧Eth-Trunk链路状态变为Down,双归场景变为单归场景。一旦peer-link故障恢复,处于Error-Down状态的M-LAG接口默认将在2分钟后自动恢复为Up状态,处于Error-Down状态的其它物理接口将自动恢复为Up状态
. 但在实际组网应用中,当某些上行端口运行路由协议或者是双主检测链路时是不希望被Error-Down的。此时,可以根据实际情况,在其他的非M-LAG成员接口上配置m-lagunpaired-port suspend命令
M-LAG 成员口配置建议
- 建议组建M-LAG系统的两台设备型号、版本均保持一致
- 为了保证流量的正常转发,M-LAG主备设备上绑定M-LAG ID相同的M-LAG成员接口相关的配置必须保持一致
- LACP M-LAG的系统优先级和系统ID,建议在全局视图下配置,避免繁琐性
- 为了提高可靠性,避免M-LAG在配置过程中的误接或者成环,建议将链路聚合模式配置为LACP模式
设备接入 M-LAG配置建议
- 位于接入层的M-LAG配对设备所有上连位于汇聚层的M-LAG配对设备的接口要放到同一个Eth-Trunk里
- 位于汇聚层M-LAG配对设备上的所有下连位于接入层M-LAG配对设备的接口要放到同一个Eth-Trunk里
- 为了方便配置和维护,建议Eth-Trunk ID和M-LAG ID保持一致
接入设备一般双归接入到M-LAG系统,如下图所示,是M-LAG的最推荐、最常见用法
使用链路聚合技术,双归接入到M-LAG系统具有以下优点:
- Peer-link故障时,可以快速收敛,双活场景,流量转发行为一致
- 提高链路可靠性,提供双活冗余转发路径
接入设备单归接入到M-LAG
如果设备不能双归接入到M-LAG系统,优先把设备接入到已双归接入到M-LAG系统的设备上,如下图所示
这样在peer-link链路故障时,在M-LAG双活场景提供一致性转发行为,能把影响降到最小。但同时也引入了新的问题:
- 需要新增接入设备
- 增加了M-LAG系统的管理负担
如果不能接入到已双归接入M-LAG系统的设备,次优选择是把设备接入到M-LAG主设备上,以避免peer-link故障时,接入设备被孤立起来(peer-link故障情况下默认会ErrorDown 备设备上除堆叠口、管理网口、peer-link口之外的所有接口),并建议使用MLAG成员口不使用的VLAN ID