M-LAG系统是由两台独立的设备组成的,其实在官网上说的是对这两台设备的版本、型号等是没有要求的,但是为了避免出现各种问题,推荐在做M-LAG的时候,参与组成M-LAG系统的两台设备还是要保持同型号同版本。
在M-LAG系统中,我们只能有两台设备,一台是primary角色,也就是M-LAG的主设备,另一台是secondary角色,也就是M-LAG的备设备。
除了这俩种角色之外,还有一种角色是none角色,这是在一种比较特殊的情况下才会出现的角色。
01 选举原则
这两种角色是通过选举原则选举出来的,选举原则如下:M-LAG设备通过角色计算,可能出现三种设备角色,分别是primary、secondary和none角色。而且并不是只有在M-LAG系统形成的时候才会进行角色计算,在以下四种情况都会进行角色的计算
第一种是M-LAG系统形成的时候;
第二种是peer-link链路down,但是keepalive链路up的时候,触发的双主检测;
第三种是peer-link链路重新恢复up的时候;
第四种是peer-link链路和keepalive链路都down的时候,此时会通过设备上M-LAG接口的状态来设置角色。
02 角色选举参考因素
比较设备所有M-LAG接口的状态,有可工作M-LAG接口的一端为优;比较计算前角色,primary端为优;比较M-LAG MAD DOWN状态,不存在处于M-LAG MAD DOWN状态的接口的一端为优;比较设备健康状况,健康值越小越优;比较设备角色优先级,越高越优;比较设备的桥mac地址,越小越优;如果通过peer-link链路进行角色选择,则不比较设备的所有M-LAG接口的状态。
03 peer-link链路
其实对于这两种链路来说,我们有一个很好的对比案例。那就是将IRF的堆叠线缆和多活检测线缆和peer-link链路以及keepalive链路做对比,堆叠线缆就类似于peer-link链路,多活检测线缆就类似于keepalive链路。所以peer-link链路的作用就是:
1.传递DRCP协议的报文DRCPDU,用来判断两个设备能否形成M-LAG系统;
2.跨设备流量需要经过peer-link链路传递。对于peer-link链路而言,是M-LAG系统中最重要的一条链路,所以自然对peer-link链路的要求就格外的高。
也就是说并不是所有的接口都可以指定为peer-link链路的接口,必须是二层聚合接口才可以指定为peer-link链路接口,但是如果是在EVPN+VXLAN+M-LAG的组网中,peer-link链路也可以选择vxlan的tunnel接口作为peer-link链路的接口。除此之外,peer-link链路的另一个要求就是对一个M-LAG系统来说,只能存在一条peer-link链路,可以通过创建二层聚合组,然后在聚合组中添加多条物理链路,将聚合组指定为peer-link链路接口的方式,来保证peer-link链路的可靠性。
这些是peer-link链路的作用以及你需要注意的内容。对于在peer-link链路上传递的DRCPDU来说,因为其关系到M-LAG系统的形成,所以也是需要你重点关注的内容。即然要判断能否形成M-LAG系统,那也就类似于IRF中两台设备能否堆叠到一起。也就是说,肯定会协商相应的参数来判断M-LAG系统能否形成,这些参数包括系统的M-LAG系统编号、M-LAG系统优先级、M-LAG系统mac地址。
04 M-LAG系统编号、优先级、mac地址
M-LAG系统编号,这个你可以类比IRF中的成员编号来看,在IRF系统中,不同设备的成员编号是不同的,所以在M-LAG系统中也是同样的,M-LAG系统编号也不能相同。
第二个参数是M-LAG系统优先级,这一个参数就不能类比IRF中的irf成员优先级了,这个参数的作用是用来指定在LACPDU中的system-id字段的设备的优先级。
那不用想,另一个M-LAG的MAC地址肯定是LACPDU中的system-id字段的设备的mac地址了。
那这儿会有一个小问题,就是两台设备的M-LAG系统优先级和M-LAG系统mac地址要不要配置为相同的呢?
答案是肯定的。
因为要在LACPDU中携带system-id字段,如果不配置为相同的,当你和对方配置跨设备链路聚合的时候,而且是使用动态聚合的模式;
此时对端设备从一个接口收到的LACPDU中system-id字段假设是32768.1-1-1,另一个接口收到的LACPDU中的system-id字段假设是32768.2-2-2;
此时对于该设备而言,就很容易能判断出这两个接口是连接了两个不同的设备来配置的动态链路聚合,肯定会有一个接口聚合失败。
所以从这一点来看,两台设备的M-LAG系统优先级和M-LAG系统mac地址肯定是要配置成为一样的,但是M-LAG系统成员编号却不能一样。
这个优先级是M-LAG的role priority,也就是角色优先级,配置命令是M-LAG role priority,默认是32768。
除此之外,为了能够形成跨设备的链路聚合组,能够将在不同设备上的两个接口加入到同一个M-LAG组(类似于聚合组)中,必须保证这些接口添加到的M-LAG组相同。
上述就是peer-link链路的基本内容。
05 keepalive链路
对于该链路,它的作用其实就是进行双主检测的,也就是在peer-link链路down之后,来检测双主的,但是在M-LAG中我们对此进行了细分,分为以下几种情况。
第一种情况:
keepalive链路up,也就是可以在定时器超时时间内收到对方发来的keepalive报文,如果此时peer-link链路也up,此时M-LAG系统正常,定期检测即可,不做任何处理
第二种情况:
keepalive链路up,但是peer-link链路down掉,那么此时就类似于堆叠线缆down了,但是多活检测线缆正常,也就是触发了M-LAG的双主检测机制,此时为了避免双主,会在keepalive hold timeout时间之后进行MAD机制,在keepalive hold timeout时间内收集故障原因。
第三种情况:
keepalive链路down掉,但是peer-link链路是up的,那么此时M-LAG系统是完整的,只不过多活检测线缆故障,所以此时设备只会打印日志,提醒M-LAG的keepalive链路故障。
第四种情况:
keepalive链路先down掉,之后peer-link链路又down了,那么此时因为keepalive链路先down,造成多活检测失效,此后peer-link链路down之后,就无法进行多活检测,此时设备就会进入primary角色,并且如果本设备存在up的M-LAG接口,那么设备会保持primary角色,如果不存在,在会进入none角色。
这是keepalive链路的作用和几种不同的机制,对于keepalive链路来说,只需要保证keepalive链路同网段可以互通即可,没有特别的要求。
对于MAD机制的处理、M-LAG MAD DOWN状态的保持、延迟恢复时间以及配置一致性检查等内容