一、M-LAG 概要:

A、协议概念:

image.png

M-LAG(Multichassis Link Aggregation Group)提供一种跨设备链路聚合的技术。M-LAG通过将两台接入交换机以同一个状态和用户侧设备或服务器进行跨设备的链路聚合,把链路的可靠性从单板级提升到设备级。同时,由于M-LAG设备可以单独升级,保证了业务流量的稳定性,使得M-LAG技术在数据中心网络广泛应用。

PS:M-LAG 技术虽然大家都有,但各大品牌并不互相兼容。

M-LAG设备在M-LAG系统中互为邻居,其中Device A为主设备,其状态且状态为primary的设备;Device B为从设备,且状态为secondary的设备。M-LAG为每个M-LAG设备定义了以下几个接口角色:

  • M-LAG接口:与外部设备相连的二层聚合接口,一般使用动态聚合。与外部设备上相同聚合组相连的M-LAG接口属于同一M-LAG组。如图所示,Device A上的二层聚合接口1和Device B上的二层聚合接口2属于同一M-LAG组。M-LAG组中的M-LAG接口由多条链路聚合组成,且具有相同的M-LAG组编号。

  • peer-link接口:连接对端M-LAG邻居设备用于内部控制的接口。每台M-LAG设备只有一个peer-link接口。peer-link接口间的链路为peer-link链路,链路可以是多条物理聚合链路,也可以是Tunnel隧道。M-LAG设备通过peer-link链路交互协议报文及传输数据流量。一个M-LAG系统只有一条peer-link链路。

  • M-LAG设备间通过Keepalive链路检测邻居状态。关于Keepalive机制的详细描述,后面再阐述。

如果一台外部设备仅接入M-LAG系统的其中一台M-LAG设备,则该设备称为单挂设备,这种接入方式称为单归接入。

B、DRCP协议:

image.png

M-LAG通过在peer-link链路上运行DRCP(Distributed Relay Control Protocol,分布式聚合控制协议)来交互分布式聚合的相关信息,以确定两台设备是否可以组成M-LAG系统。运行该协议的设备之间通过互发DRCPDU(Distributed Relay Control Protocol Data Unit,分布式聚合控制协议数据单元)来交互M-LAG的相关信息。

1、DRCPDU的交互

两端M-LAG设备通过peer-link链路定期交互DRCP报文。当本端M-LAG设备收到对端M-LAG设备的DRCP协商报文后,会判断DRCP协商报文中的M-LAG系统配置是否和本端相同。如果两端的M-LAG系统配置相同,则这两台设备可以组成M-LAG系统。

2. DRCP超时时间

DRCP超时时间是指peer-link接口等待接收DRCPDU的超时时间。在DRCP超时时间之前,如果本端peer-link接口未收到来自对端M-LAG设备的DRCPDU,则认为对端M-LAG设备peer-link接口已经失效。

DRCP超时时间同时也决定了对端M-LAG设备发送DRCPDU的速率。DRCP超时有短超时(3秒)和长超时(90秒)两种:

  • 若本端DRCP超时时间为短超时,则对端M-LAG设备将快速发送DRCPDU(每1秒发送1个DRCPDU),慎用,容易误检查。

  • 若本端DRCP超时时间为长超时,则对端M-LAG设备将慢速发送DRCPDU(每30秒发送1个DRCPDU),默认长超时。

C、Keepalive机制:

M-LAG设备间通过Keepalive链路检测邻居状态,即通过交互Keepalive报文来进行peer-link链路故障时的双主检测。

如果在指定时间内,本端M-LAG设备收到对端M-LAG设备发送的Keepalive报文:

  • 如果peer-link链路状态为down,则本端和对端M-LAG设备根据收到的Keepalive报文选举主从设备,保证M-LAG系统中仅一台M-LAG设备转发流量,避免两台M-LAG设备均升级为主设备。

  • 如果peer-link链路状态为up,则M-LAG系统正常工作。

如果在指定时间内,本端M-LAG设备未收到对端M-LAG设备发送的Keepalive报文时:

  • 如果peer-link链路状态为down,则认为对端M-LAG设备状态为down:

    • 本端设备为主设备时,如果本端设备上存在处于up状态的M-LAG接口,则本端仍为主设备;否则,本端设备角色变为None角色。

    • 本端设备为从设备时,则升级为主设备。此后,只要本端设备上存在处于up状态的M-LAG接口,则保持为主设备,否则本端设备角色变为None角色。

    • 当设备为None角色时,设备不能收发Keepalive报文,Keepalive链路处于down状态。

  • 如果peer-link链路状态为up,则认为Keepalive链路状态为down。此时主从设备正常工作,同时设备打印日志信息,提醒用户检查Keepalive链路。

二、机制解析:

A、角色计算:

image.png

M-LAG设备通过角色计算,可能出现三种设备角色,分别是Primary、Secondary和None。

角色计算触发条件包括:

  • M-LAG设备在系统初始化时(包括新配置M-LAG或带M-LAG配置重启设备)。

  • peer-link链路UP时,设备角色通过peer-link链路计算。

  • peer-link链路故障,Keepalive正常工作,设备角色通过Keepalive链路计算。

  • peer-link链路和Keepalive链路均故障,根据本端M-LAG设备上M-LAG接口状态决定设备角色。

当通过peer-link链路或Keepalive链路交互报文计算设备角色时,依次比较如下因素:

  1. 比较设备所有M-LAG接口的状态,有可工作M-LAG接口的一端为优;

  2. 比较计算前角色,若有一端为Primary,另一端为None,则Primary端优;

  3. 比较M-LAG MAD DOWN状态,若一端存在处于M-LAG MAD DOWN状态的接口,另一端不存在处于M-LAG MAD DOWN状态的接口,则不存在处于M-LAG MAD DOWN状态的接口的一端优;

  4. 比较设备健康状况,健康值越小越优。设备的健康值可通过display system health命令查看,健康值越小设备越健康,设备无故障运行时,健康值为0。有关display system health命令的详细介绍,请参见“基础配置命令参考”中的“设备管理”;

  5. 比较设备角色优先级,越高越优;

  6. 比较设备桥MAC,越小越优。

上述因素按顺序比较,结果为优的一端角色计算为Primary,另一端为Secondary。如果设备通过peer-link链路计算角色,则不比较设备所有M-LAG接口的状态。

B、M-LAG系统建立及工作过程:

Device A和Device B之间M-LAG系统建立及工作过程如下:

  1. 当M-LAG设备完成M-LAG系统参数配置后,两端设备通过peer-link链路定期发送DRCP报文。当本端收到对端的DRCP协商报文后,会判断DRCP协商报文中的M-LAG系统配置是否和本端相同。如果两端的M-LAG系统配置相同,则这两台设备组成M-LAG系统。

  2. 配对成功后,两端设备会确定出主从状态。依次比较两端M-LAG设备的初始角色、M-LAG MAD DOWN状态、设备的健康值、角色优先级、设备桥MAC,比较结果更优的一端为主设备,具体比较原则请参见前面的角色计算。主从协商后,M-LAG设备间会进行配置一致性检查。有关一致性检查的后面详细介绍。

  3. 当主从角色确定后,两端设备通过Keepalive链路周期性地发送Keepalive报文检测邻居状态。

  4. M-LAG系统开始工作后,两端设备之间会实时同步对端的信息,例如MAC地址表项、ARP表项等,这样任意一台设备故障都不会影响流量的转发,保证正常的业务不会中断。

image.png

M-LAG设备工作模式分为以下两种:

  • M-LAG系统工作模式:作为M-LAG系统成员设备参与报文转发。

  • 独立工作模式:脱离M-LAG系统独立工作,独自转发报文。

当M-LAG系统分裂时,为了避免M-LAG系统中的两台设备都作为主设备转发流量的情况,需要M-LAG设备独立工作。在peer-link链路和Keepalive链路均处于DOWN状态时,从设备会立即或经过一段时间切换到独立运行模式。

M-LAG设备切换到独立运行模式后,聚合接口发送的LACP报文中携带的M-LAG系统参数还原为聚合接口的LACP系统MAC地址和LACP系统优先级,使同一M-LAG组中的两个聚合接口的LACP系统MAC地址和LACP系统优先级不一致。这样只有一边聚合接口的成员端口可以被选中,通过被选中的设备转发业务流量,避免流量转发异常。

C、配置一致性检查:

M-LAG系统建立过程中会进行配置一致性检查,以确保两端M-LAG设备配置匹配,不影响M-LAG设备转发报文。M-LAG设备通过交换各自的配置信息,检查配置是否匹配。目前M-LAG支持对两种类型的配置一致性检查:

  • Type 1类型配置:影响M-LAG系统转发的配置。如果Type 1类型配置不匹配,则将从设备上M-LAG接口置为down状态。

  • Type 2类型配置:仅影响业务模块的配置。如果Type 2类型配置不匹配,从设备上M-LAG接口依然为up状态,不影响M-LAG系统正常工作。由Type 2类型配置对应的业务模块决定是否关闭该业务功能,其他业务模块不受影响。

为了避免设备M-LAG接口震荡,设备会在延迟恢复定时器一半时间之后进行配置一致性检查。

1、Type 1类型配置:

image.png

2、Type 2类型配置:

image.png

D、MAD 机制:

peer-link链路故障后,为了防止从设备继续转发流量,M-LAG提供MAD(Multi-Active Detection,多Active检测)机制,即在M-LAG系统分裂时将设备上部分接口置为M-LAG MAD DOWN状态,不允许此类接口转发流量,避免流量错误转发,尽量减少对业务影响。

M-LAG系统分裂时,设备上以下接口不被置为M-LAG MAD DOWN状态:

  • M-LAG保留接口(包括用户配置的和系统保留的)。

  • 在接口上配置了强制端口up功能:

    • 通过loopback命令开启接口的环回功能。有关本命令的详细介绍,请参见“二层技术-以太网交换命令参考”中的“以太网接口”。

    • 通过mirroring-group reflector-port命令为远程源镜像组配置反射端口。有关本命令的详细介绍,请参见“网络管理和监控命令参考”中的“端口镜像”。

    • 通过port up-mode命令强制开启光口。有关本命令的详细介绍,请参见“二层技术-以太网交换命令参考”中的“以太网接口”。

  • M-LAG保留接口包括系统保留接口和用户配置的保留接口。系统保留接口包括:peer-link接口、peer-link接口所对应的二层聚合接口的成员接口、M-LAG接口、管理以太网接口

当peer-link链路故障恢复后,为了防止丢包,从设备尽可能在延迟恢复时间内完成表项(MAC地址表、ARP表等)同步,其后该设备上处于M-LAG MAD DOWN状态的接口将恢复为up状态。

M-LAG MAD DOWN保持功能:当peer-link链路故障,Keepalive链路正常工作时,主设备正常工作,从设备会自动关闭本设备上除M-LAG保留接口外的所有接口,将这些接口置为M-LAG MAD DOWN状态。如果此时Keepalive链路也发生故障,从设备上的接口会解除M-LAG MAD DOWN状态,并升级为主设备,使M-LAG系统中的两台设备都作为主设备转发流量,引起网络故障。为了避免以上情况,需要开启M-LAG MAD DOWN保持功能,使设备上的接口一直处于M-LAG MAD DOWN状态,不参与流量转发。

E、安全机制:

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设备发送的协议报文中会携带一个消息摘要,该消息摘要是对协议报文内容经Hash计算得到。对端M-LAG设备收到该报文时,会与自己计算的该报文的消息摘要进行比对,如果一致,则认为其合法。

image.png
image.png

三、流量转发和故障处理:

A、流量转发:

当流量通过peer-link链路广播到对端M-LAG设备,在peer-link链路与M-LAG成员口之间设置 单方向的流量隔离,即从peer-link口进来的流量不会再从M-LAG口转发出去,所以不会形成环路,这就是M-LAG单向隔离机制

1、单播流量:

Device D设备接入M-LAG系统,已知单播流量转发机制如下:

  • 对于南北向的单播流量,在M-LAG接入侧,M-LAG设备接收到接入设备通过聚合链路负载分担发送的流量后,按本地转发优先原则,共同进行流量转发。发往Network侧的流量到达M-LAG设备后将根据路由表转发流量。

  • 对于东西向的单播流量,二层流量通过M-LAG本地优先转发,三层流量通过双活网关转发,都不经过peer-link链路,直接由M-LAG设备转发。

image.png
image.png

上行南北向流量转发机制如下:

  • 对于来自M-LAG接口的单播流量,Device A与Device B形成负载分担,共同对来自M-LAG接口端口的单播流量进行转发。单播流量按本地转发优先原则,避免对peer-link链路造成压力。

  • 对于来自非M-LAG接口的单播流量,Device B按本地转发优先原则直接转发,不向peer-link链路转发。

对于来自网络侧的南北向单播流量,根据本地转发优先原则,直接本地转发。

东西向流量转发机制如下:

  • 如果本地存在出接口,则按照本地转发优先原则,本地直接转发。

  • 如果本地不存在出接口,则流量绕行peer-link链路,通过对端M-LAG设备转发。

image.png

2、未知单播/广播流量转发:

Device D设备接入M-LAG系统,未知单播/广播流量转发机制如下:

  • Device B收到来自非M-LAG接口的未知单播/广播流量后,将向相连设备的同一广播域转发。当流量到达Device A时,由于peer-link接口与M-LAG接口存在单向隔离机制,到达Device A的流量不会向Device D转发。

  • Device D发送的未知单播/广播流量到达M-LAG设备(以Device A为例)后,将向相连设备的同一广播域转发。当流量到达Device B时,由于peer-link接口与M-LAG接口存在单向隔离机制,到达Device B的流量不会向Device D转发。

image.png
image.png

3、组播流量转发

M-LAG组网环境中组播流量的转发过程,具体请参见“8  二层组播支持M-LAG”和“9  三层组播支持M-LAG”。

B、故障处理:

1、M-LAG接口故障处理机制:

某M-LAG接口故障,来自外网侧的流量会通过peer-link链路发送给另外一台设备,所有流量均由另外一台M-LAG设备转发,具体过程如下:

(1) Device B的某M-LAG接口故障,外网侧不感知,流量依然会发送给所有M-LAG设备。

(2) Device A的相同M-LAG接口正常,则Device B收到外网侧访问Device C的流量后,通过peer-link链路将流量交给Device A后转发给Device C。

(3) 故障恢复后,Device B的该M-LAG接口up,流量正常转发。

对于已知单播,当M-LAG接口被手动shutdown、undo shutdown或M-LAG接口所在设备重启后,M-LAG设备支持下行链路切换无丢包。

image.png

2、peer-link链路故障处理机制:

peer-link链路故障但Keepalive链路正常会导致备设备上除M-LAG保留接口以外的接口处于M-LAG MAD DOWN状态。主设备上的M-LAG接口所在聚合链路状态仍为up,备设备上的M-LAG接口所在聚合链路状态变为down,从而保证所有流量都通过主设备转发。一旦peer-link链路故障恢复,处于M-LAG MAD DOWN状态的接口经过延迟恢复时间自动恢复为up状态。

image.png

3、设备故障处理机制:

Device A为主设备,Device B为备设备。当主设备故障后,主设备上的聚合链路状态变为down,不再转发流量。备设备将升级为主设备,该设备上的聚合链路状态为up,流量转发状态不变,继续转发流量。主设备故障恢复后,M-LAG系统中由从状态升级为主状态的设备仍保持主状态,故障恢复后的设备成为M-LAG系统的备设备。

如果是备设备发生故障,M-LAG系统的主备状态不会发生变化,备设备上的聚合链路状态变为down。主设备上的聚合链路状态为up,流量转发状态不变,继续转发流量。

image.png

4、上行链路故障处理机制

上行链路故障并不会影响M-LAG系统的转发。如所示,Device A上行链路虽然故障,但是外网侧的转发相关表项由Device B通过peer-link链路同步给Device A,Device A会将访问外网侧的流量发送给Device B进行转发。而外网侧发送给Device C的流量由于接口故障,自然也不会发送给Device A处理。

上行链路故障时,如果通过Device A将访问外网侧的流量发送给Device B进行转发,会降低转发效率。此时用户可以配置Monitor Link功能,将M-LAG组成员端口和上行端口关联起来,一旦上行链路故障了,会联动M-LAG组成员端口状态,将其状态变为down,提高转发效率。

image.png

C、M-LAG二次故障处理机制:

M-LAG二次故障是指在peer-link发生故障后,Keepalive链路也发生故障,或者在Keepalive链路发生故障后,peer-link也发生故障。针对M-LAG设备上不同的配置情况,当发生二次故障时,处理方式不同。

1、缺省配置场景:

若peer-link链路先发生故障,此时两端M-LAG设备会根据Keepalive链路进行设备角色选举,并依据MAD检测机制,将从设备上除M-LAG保留接口外的所有接口置为M-LAG MAD DOWN状态。

此后,若Keepalive链路也发生故障,从设备也会升为主设备,并解除设备上所有接口的M-LAG MAD DOWN状态,以双主双活的方式转发流量。由于peer-link链路故障时,无法同步表项,可能导致流量转发错误。

若Keepalive链路先发生故障,peer-link链路后发生故障,则M-LAG设备上的接口不会被置为M-LAG MAD DOWN状态,而是直接以双主双活的方式转发流量,可能导致流量转发错误。

image.png

2、开启M-LAG MAD DOWN状态保持功能场景:

情景一:

若peer-link先发生故障,此时两端M-LAG设备会根据Keepalive链路进行设备角色选举,并依据MAD检测机制,将从设备上除M-LAG保留接口外的所有接口置为M-LAG MAD DOWN状态。

此后,若Keepalive链路也发生故障,从设备也会升为主设备,但由于M-LAG设备已开启M-LAG MAD DOWN状态保持功能,将不会解除设备上所有接口的M-LAG MAD DOWN状态,继续只从原来的主设备转发流量。这样将不会出现双主双活的情况,避免流量转发异常。

若Keepalive链路先发生故障,peer-link链路后发生故障,则M-LAG设备上的接口不会被置为M-LAG MAD DOWN状态,而是直接以双主双活的方式转发流量。M-LAG MAD DOWN状态保持功能不能解决Keepalive链路先故障,peer-link后故障导致的双主双活问题。

情景二:

如果主设备故障或者主设备上M-LAG接口故障,则无法转发流量。为了避免这种情况可以关闭M-LAG MAD DOWN状态保持功能,解除从设备上所有接口的M-LAG MAD DOWN状态,使从设备升级为主设备,以保证流量正常转发,减少流量中断时间。

image.png

2、开启设备独立工作功能场景:

若peer-link先发生故障,此时两端M-LAG设备会根据Keepalive链路进行设备角色选举,并依据MAD检测机制,将从设备上除M-LAG保留接口外的所有接口置为M-LAG MAD DOWN状态。

此后,若Keepalive链路也发生故障,从设备也会升为主设备,解除所有接口的M-LAG MAD DOWN状态。但由于已开启立即或延迟切换到设备独立工作状态功能,两台M-LAG设备将切换到独立工作状态,切换后M-LAG接口对应的聚合接口发送的LACP报文中携带的M-LAG系统参数还原为聚合接口的LACP系统MAC地址和LACP系统优先级,使同一M-LAG组中的两个聚合接口的LACP系统MAC地址和LACP系统优先级不一致。这样M-LAG设备中只有一台设备的聚合接口的成员端口可以被选中(接入设备上仅一个成员端口可以被选中),通过被选中的设备转发业务流量,避免流量转发异常。成员端口的选中与LACP系统优先级和系统MAC地址相关,与M-LAG设备角色无关。LACP系统优先级和系统MAC地址越小,则优先被选中。若选中的成员端口也发生故障,则将选中另外一台设备上聚合接口的成员端口,通过该聚合接口继续转发流量。

若Keepalive链路先发生故障,peer-link链路后发生故障,则M-LAG设备上的接口不会被置为M-LAG MAD DOWN状态,将立即或延迟一段时间切换到设备独立工作模式。

image.png

四、组网方式:

单级M-LAG场景:为了保证可靠性,Device C在接入网络时需要考虑链路的冗余备份,虽然可以采用部署MSTP等环路保护协议的方式,但是这种方式下链路的利用率很低,浪费大量的带宽资源。

为了实现冗余备份同时提高链路的利用率,在Device A与Device B之间部署M-LAG,实现设备的双归属接入。这样Device A与Device B形成负载分担,共同进行流量转发,当其中一台设备发生故障时,流量可以快速切换到另一台设备,保证业务的正常运行。

image.png

多级M-LAG场景:多级M-LAG互联可以在保证可靠性、提供链路利用率的同时扩展双归属接入的网络规模,可以在大二层数据中心网络设备数量比较多时提供稳定网络环境。同时汇聚层设备作为双活网关,核心层设备和汇聚层设备之间采用M-LAG组成聚合链路,保证设备级可靠性。

image.png

M-LAG VLAN双活网关方案

在M-LAG设备上部署VLAN双活网关,为用户侧提供冗余备份的网关。

image.png

五、和 IRF 对比:

image.png

M-LAG技术白皮书-6W102-新华三集团-H3C

00-园区场景M-LAG组网推荐方案-新华三集团-H3C

05-M-LAG配置-新华三集团-H3C