背景介绍
项目中涉及4台核心交换机做虚拟化,实施中发现不同的检测方式在脑裂情况下存活设备并不是一样的现象,在BFD监测、万兆业务单板的情况下,一旦主master节点主业务单板故障,则业务会全部中断、所有存活设备均会抑制端口,必须采用lacp mad方式监测,以保留脑裂后存活节点多的一组设备。
H3C 交换机支持IRF2功能,可将多台设备虚拟化为一台逻辑设备,可简化管理并提高可靠性。
IRF是利用设备普通的万兆接口建立的,某些特殊性况下(如物理线路故障)会导致IRF设备之间通信中断,一个IRF变成多个新的IRF。这些IRF拥有相同的IP地址等三层配置,会引起地址冲突,导致故障在网络中扩大。为了提高系统的可用性,当IRF分裂时我们就需要一种机制,能够检测出网络中同时存在多个IRF,并进行相应的处理,尽量降低IRF分裂对业务的影响。MAD(Multi-ActiveDetection,多Active检测)就是这样一种检测和处理机制。
BFD MAD检测原理
BFD MAD检测是通过BFD协议来实现的。要使BFD MAD检测功能正常运行,除在三层接口下使能BFD MAD检测功能外,还需要在该接口上配置MAD IP地址。MAD IP地址与普通IP地址不同的地方在于:MAD IP地址与成员设备是绑定的,IRF中的每个成员设备上都需要配置,且所有成员设备的MAD IP必须属于同一网段。
当IRF正常运行时,只有主设备上配置的MAD IP地址生效,从设备上配置的MAD IP地址不生效,BFD会话处于down状态;(使用display bfd session命令查看BFD会话的状态。如果Session State显示为Up,则表示激活状态;如果显示为Down,则表示处于down状态)
当IRF分裂形成多个IRF时,不同IRF中主设备上配置的MADIP地址均会生效,BFD会话被激活,此时会检测到多Active冲突。
冲突处理原则:对于BFD MAD,与ARP MAD、ND MAD检测处理原则相同,冲突处理会直接让主设备成员编号小的IRF继续正常工作;其它IRF迁移到Recovery状态。
LACP MAD检测原理
LACP MAD检测是通过扩展LACP协议报文内容实现的,即在LACP协议报文的扩展字段内定义新的TLV(Type/Length/Value,类型/长度/值)数据域——用于交互IRF的DomainID(域编号)和ActiveID(等于主设备的成员编号)及成员数量。
使能LACP MAD检测后,成员设备通过LACP协议报文和其它成员设备交互DomainID和ActiveID信息。
当成员设备收到LACP协议报文后,先比较DomainID。如果DomainID相同,再比较ActiveID;如果DomainID不同,则认为报文来自不同IRF,不再进行MAD处理。
如果ActiveID相同,则表示IRF正常运行,没有发生多Active冲突;如果ActiveID值不同,则表示IRF分裂,检测到多Active冲突。
冲突处理原则:对于LACP MAD检测,冲突处理会先比较两个IRF中成员设备的数量:数量多的IRF继续正常工作;数量少的迁移到Recovery状态(即禁用状态);如果成员数量相等,则主设备成员编号小的IRF继续正常工作,其它IRF迁移到Recovery状态。为减小当IRF分裂对网络的影响,当只有两个成员设备组成IRF时,建议您配置成员编号小的成员设备为Master。
本端设备 | 本端接口 | 对端设备 | 对端接口 | 备注 |
CSW-01 | Ten-GE10/0/1 Ten-GE10/0/2 | DWDM-01 | Ten-GE10/0/1 Ten-GE10/0/2 | IRF 1/1 |
CSW-01 | Ten-GE10/0/4 Ten-GE10/0/5 | CSW-02 | Ten-GE10/0/4 Ten-GE10/0/5 | IRF1/2 |
CSW-02 | Ten-GE10/0/1 Ten-GE10/0/2 | DWDM-02 | Ten-GE10/0/1 Ten-GE10/0/2 | IRF 2/2 |
CSW-02 | Ten-GE10/0/4 Ten-GE10/0/5 | CSW-01 | Ten-GE10/0/4 Ten-GE10/0/5 | IRF 2/1 |
CSW-01 | Ten-GE10/0/1 Ten-GE10/0/2 | DWDM-01 | Ten-GE10/0/1 Ten-GE10/0/2 | IRF 3/2 |
CSW-01 | Ten-GE10/0/4 Ten-GE10/0/5 | CSW-02 | Ten-GE10/0/4 Ten-GE10/0/5 | IRF 3/1 |
CSW-02 | Ten-GE10/0/1 Ten-GE10/0/2 | DWDM-02 | Ten-GE10/0/1 Ten-GE10/0/2 | IRF 4/1 |
CSW-02 | Ten-GE10/0/4 Ten-GE10/0/5 | CSW-01 | Ten-GE10/0/4 Ten-GE10/0/5 | IRF 4/2 |
交换机1/2/3/4 IRF端口都是采用万兆端口建立邻居关系,BFD检测采用的千兆端口互联,核心交换机优先级设置规则:1号交换机对应20,2号交换机对应15,3号交换机对应10,4号交换机对应5,虚拟组内的交换机将根据设置的优先级进行master和slave选举,优先级高的将会成为虚拟组内的master机器,在虚拟组合并过程中将根据设备的成员编号进行选举,成员编号低的将选举成为虚拟组内存活设备。
原来核心区域部署方式采用BFD MAD检测,在模拟故障测试过程中,将核心交换机1的万兆板卡拔掉后,交换机1和交换机2/3/4IRF端口失效,邻居关系中断。由于BFD检测采用的是千兆板卡互联,所以交换机1和交换机2/3/4之间BFD检测是正常的,但是万兆板卡故障后IRF邻居关系却失效了,BFD检测发现IRF邻居出现异常了,交换机1优先级高会成为master,成员编号最低会成为存活设备。反之交换机2/3/4 被迁移为Recovery状态,业务无法通过交换机1的万兆板卡传输(万兆板卡故障),同时交换机2/3/4处于Recovery状态无法传输万兆业务,造成亦庄和东坝数据中心万兆业务全部中断。
目前核心区域部署方式改为LACP MAD检测,LACP MAD检测和BFD MAD处理原则不同,LACP MAD冲突处理会先比较两个IRF中成员设备的数量:数量多的IRF继续正常工作;数量少的迁移到Recovery状态(即禁用状态);如果成员数量相等,则主设备成员编号小的IRF继续正常工作,其它IRF迁移到Recovery状态。
当模拟核心交换机1万兆板卡故障时,LACP MAD同样会检测到1和2/3/4之间的IRF邻居关系失效。选举方式会先比较成员设备数量,2/3/4交换机 IRF邻居关系是正常的并且设备成员数量多会继续存活下去,相反交换机1只有一台存活被迁移为Recovery状态。交换机2/3/4会形成一个虚拟组并正常转发数据和处理业务。交换机1被Recovery后,交换机2优先级最高选举成为master。
当IRF分裂后,不要在存活的交换机上敲save命令,一旦保存配置会将分裂的状态写入设备,将丢失掉分裂出去的设备配置。
当虚拟组中的设备万兆板卡出现故障时,尽量将故障设备断电将万兆板卡更换完毕后再启动设备,这样分裂出去的交换机会重新加入虚拟组中,并且不会与现有的虚拟组设备进行竞争。如果在线更换板卡,交换机IRF邻居将会以新的角色与现有的虚拟组以合并的方式进行竞选,竞选失败的交换机会重启并成为slave。
本文出自 “说逍遥不逍遥” 博客,谢绝转载!
原文地址:http://maorui2005.blog.51cto.com/863709/1710338