华为交换机堆叠分裂与多主检测

来自Linux78|wiki

堆叠分裂

堆叠分裂是指稳定运行的堆叠系统中带电移出部分成员交换机,或者堆叠线缆多点故障导致一个堆叠系统变成多个堆叠系统。

根据原堆叠系统主备交换机分裂后所处位置的不同,堆叠分裂可分为以下两类:

  • 堆叠分裂后,原主备交换机被分裂到同一个堆叠系统中:原主交换机会重新计算堆叠拓扑,将移出的成员交换机的拓扑信息删除,并将新的拓扑信息同步给其他成员交换机;而移出的成员交换机检测到堆叠协议报文超时,将自行复位,重新进行选举。

如图,堆叠系统分裂后,原主交换机SwitchA删除SwitchD和SwitchE的拓扑信息,并将新的拓扑信息同步给SwitchB和SwitchC;SwitchD和SwitchE重启后,重新进行堆叠建立。

Stack-5.png
  • 堆叠分裂后,原主备交换机被分裂到不同的堆叠系统中:原主交换机所在堆叠系统重新指定备交换机,重新计算拓扑信息并同步给其他成员交换机;原备交换机所在堆叠系统将发生备升主,原备交换机升级为主交换机,重新计算堆叠拓扑并同步到其他成员交换机,并指定新的备交换机。

如图所示,堆叠系统分裂后,原主交换机SwitchA指定SwitchD作为新的备交换机,重新计算拓扑信息,并将新的拓扑信息同步给SwitchD和SwitchE;原备交换机SwitchB升级为主交换机,重新计算堆叠拓扑并同步给SwitchC,并指定SwitchC作为新的备交换机。

Stack-6.png

多主检测

由于堆叠系统中所有成员交换机都使用同一个IP地址和MAC地址(堆叠系统MAC),一个堆叠分裂后,可能产生多个具有相同IP地址和MAC地址的堆叠系统。为防止堆叠分裂后,产生多个具有相同IP地址和MAC地址的堆叠系统,引起网络故障,必须进行IP地址和MAC地址的冲突检查。

多主检测MAD(Multi-Active Detection),是一种检测和处理堆叠分裂的协议。链路故障导致堆叠系统分裂后,MAD可以实现堆叠分裂的检测、冲突处理和故障恢复,降低堆叠分裂对业务的影响。

MAD检测方式

MAD检测方式有两种:直连检测方式和代理检测方式。在同一个堆叠系统中,两种检测方式互斥,不可以同时配置。

  • 直连检测方式

直连检测方式是指堆叠成员交换机间通过普通线缆直连的专用链路进行多主检测。在直连检测方式中,堆叠系统正常运行时,不发送MAD报文;堆叠系统分裂后,分裂后的两台交换机以1s为周期通过检测链路发送MAD报文进行多主冲突处理。

直连检测的连接方式包括通过中间设备直连和堆叠成员交换机Full-mesh方式直连:

通过中间设备直连:如图所示,堆叠系统的所有成员交换机之间至少有一条检测链路与中间设备相连。

Stack-7.png

Full-mesh方式直连:如图3-17所示,堆叠系统的各成员交换机之间通过检测链路建立Full-mesh全连接,即每两台成员交换机之间至少有一条检测链路。

Stack-8.png

通过中间设备直连可以实现通过中间设备缩短堆叠成员交换机之间的检测链路长度,适用于成员交换机相距较远的场景。与通过中间设备直连相比,Full-mesh方式直连可以避免由中间设备故障导致的MAD检测失败,但是每两台成员交换机之间都建立全连接会占用较多的接口,所以该方式适用于成员交换机数目较少的场景。

接口配置直连多主检测功能后,不能再配置其他业务。
为保证可靠性,成员交换机之间最多可以配置8条直连检测链路。
由于MAD报文是BPDU报文,采用通过中间设备的直连检测方式时,在直连检测链路的中间设备上需要配置转发BPDU报文,配置方法请参见《S2720, S5700, S6700 V200R019C00 配置指南-以 太网交换》 二层协议透明传输配置 中的“配置基于接口的二层协议透明传输”。

代理检测方式

代理检测方式是在堆叠系统Eth-Trunk上启用代理检测,在代理设备上启用MAD检测功能。此种检测方式要求堆叠系统中的所有成员交换机都与代理设备连接,并将这些链路加入同一个Eth-Trunk内。与直连检测方式相比,代理检测方式无需占用额外的接口,Eth-Trunk接口可同时运行MAD代理检测和其他业务。

在代理检测方式中,堆叠系统正常运行时,堆叠成员交换机以30s为周期通过检测链路发送MAD报文。堆叠成员交换机对在正常工作状态下收到的MAD报文不做任何处理;堆叠分裂后,分裂后的两台交换机以1s为周期通过检测链路发送MAD报文进行多主冲突处理。

根据代理设备的不同,代理检测方式可分为单机作代理和两套堆叠系统互为代理。

Stack-9.png
Stack-10.png

代理设备必须为支持MAD代理功能的交换机,S系列交换机都支持MAD代理功能。

设备支持两套堆叠系统互为代理进行多主检测,此时必须通过配置保证两套堆叠系统的堆叠域的域编号(Domain ID)不同。组成一个堆叠系统的交换机构成一个堆叠域。一个网络中可以部署多个堆叠系统,因此会有多个堆叠域,不同的堆叠域的域编号不同。

当9台设备堆叠时,由于每个Eth-Trunk最多加入8个成员接口,导致一个Eth-Trunk不能包含所有的成员交换机。此时需要配置多个Eth-Trunk,来保证任意两台成员交换机之间都有检测链路。如图所示,Switch1-8配置在Eth-Trunk1里,Switch2-9配置在Eth-Trunk2里,Switch1和Switch9配置在Eth-Trunk3里。

Stack-11.png

MAD冲突处理

堆叠分裂后,MAD冲突处理机制会使分裂后的堆叠系统处于Detect状态或Recovery状态。Detect状态表示堆叠正常工作状态,Recovery状态表示堆叠禁用状态。

MAD冲突处理机制如下:MAD分裂检测机制会检测到网络中存在多个处于Detect状态的堆叠系统,这些堆叠系统之间相互竞争,竞争成功的堆叠系统保持Detect状态,竞争失败的堆叠系统会转入Recovery状态;并且在Recovery状态堆叠系统的所有成员交换机上,关闭除保留端口以外的其它所有物理端口,以保证该堆叠系统不再转发业务报文。

MAD竞争原则与主交换机的竞争原则类似:

  1. 先比较启动时间,启动完成时间早的堆叠系统成为Detect状态。启动完成时间差在20秒内则认为堆叠的启动完成时间相同。
  2. 启动完成时间相同时,比较堆叠中主交换机的优先级,优先级高的堆叠系统成为Detect状态。
  3. 优先级相同时,比较堆叠系统的MAC,MAC小的堆叠系统成为Detect状态。

MAD故障恢复

通过修复故障链路,分裂后的堆叠系统重新合并为一个堆叠系统。重新合并的方式有以下两种:

  • 堆叠链路修复后,处于Recovery状态的堆叠系统重新启动,与Detect状态的堆叠系统合并,同时将被关闭的业务端口恢复Up,整个堆叠系统恢复。
  • 如果故障链路修复前,承载业务的Detect状态的堆叠系统也出现了故障。此时,可以先将Detect状态的堆叠系统从网络中移除,再通过命令行启用Recovery状态的堆叠系统,接替原来的业务,然后再修复原Detect状态堆叠系统的故障及链路故障。故障修复后,重新合并堆叠系统。