M-LAG(Multichassis Link Aggregation Group)即跨设备链路聚合组,是一种实现跨设备链路聚合的机制,将一台设备与另外两台设备进行跨设备链路聚合,从而把链路可靠性从单板级提高到了设备级,组成双活系统。
M-LAG作为一种跨设备链路聚合的技术,除了具备增加带宽、提高链路可靠性、负载分担的优势外,还具备以下优势:
用户侧设备Switch(可以是交换机或主机)通过M-LAG机制与另外两台设备(SwitchA和SwitchB)进行跨设备链路聚合,共同组成一个双活系统。这样可以实现SwitchA和SwitchB共同进行流量转发的功能,保证网络的可靠性。
M-LAG涉及的相关概念:
概念 | 说明 |
---|---|
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成员接口的主备角色存在转发行为差异。 |
1.DFS Group配对
当M-LAG两台设备完成配置后,设备首先通过peer-link链路发送DFS Group的Hello报文。当设备收到对端的Hello报文后,会判断报文中携带的DFS Group编号是否和本端相同,如果两台设备的DFS Group编号相同,则两台设备DFS Group配对成功。
2.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的角色区分为主和备,正常情况下,主设备和备设备同时进行业务流量的转发,转发行为没有区别,仅在故障场景下,主备设备的行为会有差别。
3.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成员接口的主备角色存在转发行为差异。
4.双主检测
协商出M-LAG主备后,两台设备之间会通过双主检测链路按照1s的周期发送M-LAG双主检测报文,一旦设备感知peer-link故障,会按照100ms的周期发送三个双主检测链路报文,加速检测。当两台设备均能够收到对端发送的报文时,双活系统即开始正常的工作。
在DFS Group配对失败或者peer-link故障场景下,双主检测链路用于检查是否出现双主的情况。双主检测链路可以通过外部网络承载(比如,如果M-LAG上行接入IP网络,那么两台双归设备通过IP网络可以互通,那么互通的链路就可以作为双主检测链路)。也可以单独配置一条三层可达的链路来作为双主检测链路(比如通过管理口)。
在V200R005C10版本及之后版本,两台设备在心跳链路Up之后即会按照周期发送双主检测报文。若DFS Group绑定了本端和对端的IP地址,则在二次故障恢复场景下(设备已使能二次故障增强功能),即原DFS主设备或备设备故障恢复且peer-link链路仍然故障时,M-LAG设备根据双主检测报文中携带的DFS信息协商出HB DFS主备状态,触发HB DFS状态为备的设备相应端口Error-Down,从而避免双主场景下的流量异常。
5.M-LAG同步信息
正常工作后,两台设备之间会通过peer-link链路发送M-LAG同步报文实时同步对端的信息,M-LAG同步报文中包括MAC表项、ARP以及STP、VRRP协议报文信息等,如表 M-LAG同步报文信息所示,并发送M-LAG成员端口的状态,这样任意一台设备故障都不会影响流量的转发,保证正常的业务不会中断。
对于CE6870EI、CE6875EI、CE6881、CE6881K、CE6881E、CE6863、CE6863K、CE6820、CE5880EI,M-LAG设备上配置了VLANIF、VBDIF后,VLANIF、VBDIF的真实MAC地址会通过M-LAG同步通道同步到对端设备上,并下发为动态MAC。
M-LAG双活系统建立成功后即进入正常的工作,M-LAG主备设备负载分担共同进行流量的转发,转发行为没有区别。
单播流量转发
如图1所示,M-LAG双活系统在接入设备双归接入场景下的已知单播流量转发:
对于南北向单播流量,在M-LAG接入侧,M-LAG的成员设备接收到接入设备通过链路捆绑负载分担发送的流量后,共同进行流量转发。到达M-LAG主备设备发往网络侧的流量则根据路由表转发流量。
对于东西向单播流量,在全部组建M-LAG,没有孤立端口的场景下,二层流量通过M-LAG本地优先转发,三层流量通过双活网关转发,都不经过peer-Link链路,直接由M-LAG主备设备转发至对应成员口。
组播流量转发
M-LAG上行接入二层网络,那么二层网络必须要保证发往M-LAG的流量只有一份,否则会有成环的风险。如图2所示,假设右侧M-LAG上行接口被STP协议阻塞:
在ServerB作为组播源、ServerA作为组播组成员时,M-LAG主备都可以转发组播流量,在网络侧只引流一份流量的情况下,接收到流量的设备直接转发到本地的M-LAG成员口。如果本地M-LAG成员口故障,则组播流量如图3所示会从peer-link绕行,转发至M-LAG系统另一台设备的成员口进行转发。
在ServerA作为组播源、ServerB作为组播组成员时,组播源的流量通过负载分担发送至M-LAG主备设备,由于右端M-LAG设备的上行接口被阻塞,那么右端设备的组播出接口指向peer-link链路。
M-LAG上行接入三层网络,M-LAG系统成员设备需要支持二三层组播混跑。如图4所示,M-LAG双活系统在接入设备双归接入场景下的组播流量转发:
在ServerB作为组播源、ServerA作为组播组成员时,M-LAG主备设备都从组播源引流,且按照以下规则由M-LAG主备设备在本地查找组播表后将流量负载分担转发至组播组成员:◾若组播组地址最后一位为奇数(例如225.1.1.1或FF1E::1、FF1E::B),则由M-LAG成员口状态为主的设备转发至组播组成员;
◾若组播组地址最后一位为偶数(例如225.1.1.2或FF1E::2、FF1E::A),则由M-LAG成员口状态为备的设备转发至组播组成员;
对于V200R003C00之前的版本,仅M-LAG成员口状态为主的设备转发组播流量到接收者,从V200R003C00版本开始,M-LAG成员口状态为主备的设备均可以转发组播流量到接收者,实现负载分担。当M-LAG系统两台设备版本不一致时,组播流量转发规则以低版本为准。
在ServerA作为组播源、ServerB作为组播组成员时,组播源发出的流量负载分担到M-LAG系统主备设备,主备设备收到流量后在本地查找组播表将报文发送出去。
区别于单播流量,由组播流量转发示意图可以看出,M-LAG系统在转发组播流量时需要在M-LAG两台设备间配置一条独立三层链路。因为在故障场景下,可能出现网络侧只有单链路上行,此时M-LAG主备设备间部署一条独立的单独L3链路可以用来传输组播报文。如图5所示,在网络侧链路连接M-LAG备设备场景下,由peer-link接口转发的组播报文由于单向隔离无法转发至指定的M-LAG成员口,组播地址最后一位为奇数的组播报文是无法通过peer-link链路绕行至M-LAG成员口状态为主的设备,只能由独立三层链路转发至该设备。
广播流量转发
M-LAG上行接入二层网络,那么二层网络必须要保证发往M-LAG的流量只有一份,否则会有成环的风险。此处以M-LAG主设备的转发为例,如图6所示,假设右侧M-LAG上行接口被STP协议阻塞,M-LAG主设备收到广播流量后向各个下一跳转发,当流量到达M-LAG备设备时,由于peer-link与M-LAG成员接口存在单向隔离机制,到达备设备的流量不会向S-1转发。
此处以M-LAG备设备的转发为例,如图7所示,M-LAG备设备收到广播流量后向各个下一跳转发,当流量到达M-LAG主设备时,由于peer-link与M-LAG成员接口存在单向隔离机制,到达主设备的流量不会向S-1转发。
M-LAG作为一种跨设备链路聚合的技术,把链路可靠性从单板级提高到了设备级。如果出现故障(不管是链路故障、设备故障还是peer-link故障),M-LAG都能够保证正常的业务不受影响,下面介绍M-LAG在故障情况下是如何保障业务的正常运行的。
上行链路故障
如图1所示,M-LAG接入普通以太网场景,由于M-LAG主设备的上行链路故障,通过M-LAG主设备的流量均经过peer-link链路进行转发。
当故障的上行链路恰好为双主检测链路,此时对于M-LAG正常工作没有影响。一旦peer-link也发生故障,M-LAG出现双主冲突,双主检测又无法进行,则会出现丢包现象。
下行链路故障
当下行M-LAG成员口故障时,DFS Group主备状态不会变化,但如果故障M-LAG成员口状态为主,则备M-LAG成员口状态由备升主,流量切换到该链路上进行转发。发生故障的M-LAG成员口所在的链路状态变为Down,双归场景变为单归场景。故障M-LAG成员口的MAC地址指向peer-link接口。在故障M-LAG成员口恢复后,M-LAG成员口状态不再回切,由备升主的M-LAG成员口状态仍为主,原主M-LAG成员口在故障恢复后状态为备。可以执行display dfs-group dfs-group-id node node-id m-lag命令来查看成员接口当前状态。
对于组播源在网络侧,组播成员在接入侧的组播流量,当M-LAG主设备的M-LAG成员口故障时,通过M-LAG同步报文通知对端设备进行组播表项刷新,M-LAG主备设备不再按照组播地址奇偶进行负载分担,而是所有组播流量都由端口状态Up的M-LAG备设备进行转发,反之亦然。
M-LAG主设备故障
M-LAG主设备故障,M-LAG备设备将升级为主,其设备侧Eth-Trunk链路状态仍为Up,流量转发状态不变,继续转发流量。M-LAG主设备侧Eth-Trunk链路状态变为Down,双归场景变为单归场景。
如果是M-LAG备设备发生故障,M-LAG的主备状态不会发生变化,M-LAG备设备侧Eth-Trunk链路状态变为Down。M-LAG主设备侧Eth-Trunk链路状态仍为Up,流量转发状态不变,继续转发流量,双归场景变为单归场景。
peer-link故障
缺省情况下,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状态的M-LAG接口默认将在240s后自动恢复为Up状态,处于Error Down状态的其它接口将立即自动恢复为Up状态。
通过命令可以配置M-LAG场景下peer-link故障但双主检测心跳状态正常时,触发Error-Down的端口包括逻辑端口。如当M-LAG应用在VXLAN网络或IP网络的双归接入,peer-link故障但双主检测状态正常时,会触发M-LAG备设备上VLANIF接口、VBDIF接口、LoopBack接口以及M-LAG成员口处于Error-Down状态。
在配置M-LAG场景下peer-link故障但双主检测心跳状态正常时触发端口Error-Down的范围包括逻辑端口后,若M-LAG系统peer-link接口故障恢复,为保证大规格VLANIF接口下的ARP同步正常,设备将在DFS
Group配对成功后延迟6s恢复VLANIF接口、VBDIF接口、LoopBack接口为Up状态。此时,如果在接口下配置了接口三层协议状态延时Up时间,则VLANIF接口、VBDIF接口、LoopBack接口恢复Up状态的延迟时间为两者之和。
通过在端口下配置命令可以灵活配置某个端口在M-LAG场景下peer-link故障但双主检测心跳状态正常时是否将端口Error-Down。配置和设备端口Error-Down对应情况如表1所示。
表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二次故障(peer-link故障+M-LAG设备故障)
如图5中2所示,在M-LAG应用于双归接入时,当peer-link故障但双主检测心跳状态正常会触发DFS备设备上某些端口处于Error-Down状态,此时DFS状态为主的设备继续工作。在该场景的基础上,若DFS状态为主的设备由于断电、主控板损坏、整机故障重启等其他故障导致主设备不能工作时,由图5中3所示,此时M-LAG主备设备皆不能正常转发流量。
在该场景下,可以借助M-LAG二次故障增强功能来实现该故障场景下业务不中断的可靠性要求,如图5所示,通过M-LAG二次故障增强功能来说明不同的故障阶段和产生的行为:
若在peer-link故障后,二次故障的设备为DFS状态为备的设备,则此时不会对流量转发行为产生影响,仍由DFS状态为主的设备进行流量转发。
M-LAG特性主要应用于将服务器或交换机双归接入普通以太网络、TRILL(Transparent Interconnection of Lots of Links)、VXLAN(Virtual eXtensible Local Area Network)和IP网络。一方面可以起到负载分担流量的作用,另一方面可以起到备份保护的作用。由于M-LAG支持多级互联,M-LAG的组网可以分为单级M-LAG和多级M-LAG。
单级M-LAG场景
如图1所示,为了保证可靠性,交换机在接入网络时需要考虑链路的冗余备份,采用部署MSTP等破环协议的方式可以实现,但是这种方式下链路的利用率很低,浪费大量的带宽资源。为了实现冗余备份同时提高链路的利用率,在SwitchA与SwitchB之间部署M-LAG,实现Switch的双归接入。这样SwitchA与SwitchB形成负载分担,共同进行流量转发,当其中一台设备发生故障时,流量可以快速切换到另一台设备,保证业务的正常运行。
如图2所示,为了保证可靠性,服务器一般采用链路聚合的方式接入网络,如果服务器接入的设备故障将导致业务的中断。为了避免这个问题的发生,服务器可以采用跨设备链路聚合的方式接入网络,在SwitchA与SwitchB之间部署M-LAG,实现服务器的双归接入。SwitchA与SwitchB形成负载分担,共同进行流量转发,当其中一台设备发生故障时,流量可以快速切换到另一台设备,保证业务的正常运行。
服务器双归接入时的配置和一般的链路聚合配置没有差异,必须保证服务器侧和交换机侧的链路聚合模式一致,推荐两端均配置为LACP模式。
多级M-LAG场景
如图3所示,SwitchA和SwitchB之间部署M-LAG后,在SwitchC和SwitchD之间部署M-LAG并与下层的M-LAG进行级联,这样不仅可以简化组网,而且在保证可靠性的同时可以扩展双归接入服务器的数量。多级M-LAG互联必须基于V-STP方式进行配置。
参考文档:华为产品文档