背景技术
现有技术中,STP(spanning tree protocol,生成树协议)广泛用于用在以太网交换机中,来保护以太网业务。通过在各个节点之间交换BPDU(Bridge Protocol Data Unit,即网桥协议数据单元,其中包括节点的路径信息,该节点的角色等),每个交换机确定其端口的STP状态(例如,转发-forwarding、禁止-disabled、阻塞-blocking、监听-listening、学习-learning),将特定的端口处于block状态,避免了网络环路,从而解决了广播风暴的问题。
而EPS(Equipment Protection Switching,设备保护切换)通过设备的冗余,即在一个交换机中安装2个控制器(一个是主控制器,一个是从控制器),来实现保护和切换。主、从两个控制器均独立地运行STP协议。并且主、从控制器均在正常状态下,主控制器负责对各个端口的状态(block/forward)进行控制。而当主控制器出现如下故障时,EPS将进行由主控制器到从控制器的切换。该切换若在短时间内完成,则不会影响通信业务。切换的条件包括:
1.主控制器所在的插卡丢失;
2.主控制器所在的插卡出现错误(包括断电,电压过低)或不可访问;
3.主控制器所在插卡中的软件问题;
4.主控制器所在的插卡或其中的软件重启。
如果要保证主、从控制器的输出结果(输出结果包括,本节点的BPDU包和端口STP状态以及MAC地址擦除信息(对应于被阻塞的端口的MAC地址))一致,必须满足:
主从控制器具有相同的输入(包括来自上层网管的配置信息和来自底层的硬件信息)。
如果直接将EPS冗余备份系统应用于STP生成树协议,会产生如下缺点:
对于来自上层的网管的配置信息,因为对于网管来说,主控制器和从控制器是具有不同的地址的2个不同的实体,所以网管对主、从两个控制器的配置不同;
此外,因为EPS主、从控制器得到的硬件信息也不同(因为传统的EPS保护并不对特定的协议所需要获取哪些硬件信息作特殊的设计);
即使主、从控制器得到相同的网管配置信息和相同的硬件信息,由于主、从控制器分别基于各自的输入进行自主运算,而现有的EPS保护不要求:1、主从控制器针对STP协议进行同步的运算,2、主从控制器之间同步用于STP协议所需要的信息,3、主从控制器针对STP运算结果所做的不同的输出处理(如是否发送BPDU,或需要对哪些端口进行怎么的处理),因此不能保证主、从控制器运算的内部状态机的同步,因此从控制器的输出结果与主控制器不同。
所以当主控制器发生上述故障时,由主控制器切换到从控制器,从控制器得到的网络拓扑视图与主控制器不同,从控制器需要重新学习网络的拓扑结构,这会需要几秒甚至几十秒,造成业务的中断。
具体实施方式
参考图1,图1示出了一个运行以太网生成树协议的一个以太网交换机,在该交换机中部署了一个控制装置2。
图2示出了本应用的状态机的框图。两个控制器均经历了从启动到运行到交互的3个阶段。这是对图1的补充,是从状态机的角度描述2个控制器。其中UCT(un-conditioned transfer)为无条件转移。
参考图3并结合图1,从系统角度对本发明进行描述,本领域技术人员理解,本发明应不限于基于以太网的通信网络。
图3是根据本发明的一个优选的实施例的,运行以太网生成树协议的运用设备保护切换(EPS,Equipment Protection Switching)的设备故障保护的系统方法的示意图。
在步骤s1和s1’中,也即初始的配置步骤中,管理员M1(典型地,可以是网管)向主控制器MC20和从控制器SC21发送配置指令(手动或自动配置),例如,可以是SNMP(Simple Network ManagementProtocol)SET消息。确保网管M1向主、从控制器MC20和SC21配置的信息是相同的。配置信息包括:
i)生成树协议的类型,即包含所述的交换机的以太网所运行的生成树的类型,例如,可以是PVST(每个VLAN一个生成树,Per-VLAN Spanning Tree),RSTP(快速生成树协议,Rapid Spanning Tree Protocol)or MST(多生成树,Multiple Spanning Tree);
ii)节点信息,具体地,节点的优先级,节点的MAC地址(指本交换机)等;
iii)端口信息,例如,端口的优先级,和端口的路径代价。
对于主控制器MC20和从控制器SC21的角色分配,可以是由网管MC手动分配,也可以是通过两个控制器之间的资源竞争而获取。
在由网管M1管理的主控制器MC1和从控制器MC2中,运行一个软件部件称为代理(agent),该代理通过SNMP机制向管理系统(即网管M1)报告信息。网管M1可以通过SNMP GET协议操作,从代理处获取信息;而代理可以不需要询问直接通过SNMPTRAP协议向网管M1发送数据,以告知网管M1板级告警,以及控制器中的状态的变化或者网线被人为地拔出等造成的端口断开连接,等。值得注意的是,对于那些来自网管M1的配置信息的请求(例如SNMP GET消息)只由主控制器MC20应答,而SNMP TRAP消息(例如,状态通知)只由主控制器MC20产生。从控制器既不应答请求(SNMP GET)也不生成通知或请求(SNMP TRAPPING或状态通知)。
在网管M1的初始的配置结束之后,控制器(包括主控制器MC20和从控制器SC21)进入步骤s2。在步骤s2中,主控制器MC20从硬件HW3(hardware)中获取硬件信息。需要从硬件获取的硬件信息包括如下:
I)端口运行状态,即本交换机上的端口运行状态。端口运行状态包括转发-forwarding、禁止-disabled、阻塞-blocking、监听-listening、学习-learning。
II)MAC地址,即本交换机的MAC地址
III)BPDU(Bridge Packet Data Unit)包,即从其他交换机的端口处获取的BPDU包,用来交换各自的桥ID和其他交换机的各个端口的根路径花费。
对于获取硬件信息的操作,控制器中的应用软件可以通过主动的查询的方式(polling-only),或者被动的基于中断的方式(interrupt-based)获取硬件信息。或者硬件HW3可以周期性地报告自己的状态,本领域技术人员可以理解,上述硬件信息的获取方式属于现有技术,在此不需赘述。
主控制器MC20获取的硬件信息将被存储在例如主控制器MC20的存储器RAM中。值得注意的是,RAM可以独立于主控制器MC20,但是上述的变形不会影响本发明的实质。
在主控制器MC20和从控制器SC21从获取网管M1获取配置信息,且主控制器MC20从硬件HW3获取硬件信息后,主控制器MC20进入步骤s3,确定主控制器MC20是否发生故障。在一个变化的实施例中,上述的步骤s3可以由独立于主控制器MC20的一个硬件模块完成,但是上述变形不会影响本发明的实质。主控制器MC20是否正常工作可以由以下条件所确定(主控制器MC20通常位于插板中,以下称为插卡):
条件1.主控制器所在的插卡丢失;
条件2.主控制器所在的插卡出现错误(包括断电,电压过低)或不可访问;
条件3.主控制器所在插卡中的软件问题;
条件4.主控制器所在的插卡或其中的软件重启。
如果满足上述一个或多个条件,则确定主控制器发生故障。
如果上述条件均未满足,则确认主控制器MC20正常工作。如果主控制器MC20正常工作,主控制器MC20进入步骤s4,当满足特定的要求后,将主控制器MC20的RAM中的所述的硬件信息传送到从控制器SC21中。具体地,下述事件将触发主控制器MC20将相关的硬件信息传送到从控制器SC21中:
■BPDU包到达硬件,更具体地,BPDU到达本交换机的某一端口。
■主控制器MC20检测到端口的运行状态发生改变,例如,原本转发状态的端口发生了一些机械或人为的故障,造成了端口的阻塞。
因此,主控制MC20向从控制器SC21传送的信息的内容包括:
来自其他交换机的端口的BPDU包;
本交换机以及其他交换机的端口运行状态变换。
考虑到硬件接入的限制,我们只允许主控制器MC20获取硬件信息,主控制器MC20通过内部高速总线将硬件信息传送给从控制器SC21。从控制器SC21将通过内部总线获取硬件信息。
在主控制器MC20和从控制器SC21均获取硬件信息的步骤s4后,主、从控制器内的协议实体开始在步骤s5和s5’中计算STP协议和端口状态。STP协议的计算的规则在现有技术中已经有了相关的规定,具体的细节可以参考相关的文档。简要地,两个控制器中的协议实体同时运行计算,而输入是相同的,因此,两个协议状态机所生成的结果是相同的,因此确保了STP协议计算的相同的结果。
此后,在步骤s6中,主控制器MC20将其计算的结果向外广播,广播的内容包括,STP端口状态的计算结果,用于配置本交换机的端口状态,以及本交换机的BPDU包,用于向其他交换机广播,以利于其他交换机各自的STP协议计算。至于从控制器SC21的计算结果,从控制器SC21也生成端口STP状态配置信息和BPDU传送请求,但是当主控制器MC20正常工作时,均将其丢弃。
如果在步骤s3中,判断条件“主控制器MC20是否正常工作”的结果是否定的,那么,系统进入步骤s7,具体地,如果主控制器MC20发生故障,从控制器SC21将直接从硬件HW3而不是通过高速内部总线从主控制器MC20处获取硬件信息。由主控制器MC20向从控制器SC21的切换属于现有技术,在此不予赘述,可以由硬件设备完成。
然后,在步骤s8中,从控制器SC21基于从硬件HW3处直接获取的硬件信息计算STP协议和端口状态。STP协议计算的中间状态已被保存在从控制器SC21中,例如最近的一次STP协议的计算结果,该计算结果是与主控制器MC20的计算结果是一致的,包括但不限于节点的STP角色(根节点root,指定节点designate,备份节点backup,可选节点alternative等)。基于最近一次的STP协议的计算结果以及从硬件HW3新获取的硬件信息,从控制器SC21可以更新STP协议计算和端口的状态。
接着,在步骤s9中,从控制器SC21承担主控制器MC20的角色,向外广播本交换机的BPDU包并配置其端口的STP状态。
在一个变化的实施例中,步骤s5’可以被省略,即,从控制器SC21只从主控制器MC20中获取硬件信息,但是从控制器SC20并不进行STP协议的计算.因此,在步骤s7中,如果主控制器MC20发生故障,从控制器SC21需要从硬件HW3处获取硬件信息,并且初始化STP协议的计算。在协议计算的初始阶段,每个交换机均将自己视为根交换机,并向其连接的LAN(local area network局域网)发送BPDU包。通过STP协议的计算,可以建立STP树拓扑结构。在这段时间内,协议计算可能不收敛,但是最终将达到收敛的状态,以建了一个非环状的拓扑结构。
在另外一个变化的实施例中,在步骤s2中,在主控制器正常工作时,由从控制器来周期性地获取硬件信息并报告给主控制器,主控制器无需直接由硬件设备处获取硬件信息。而在步骤s5中,接到从控制器报告的硬件信息后,主控制器根据所述硬件信息进行STP协议的计算,生成端口状态控制信息,用于对本交换设备处的端口进行配置并进行广播;在步骤s7中,当检测到主控制器发生故障后,从控制器基于其预先(最近一次)获得的硬件信息来计算端口状态控制信息,从而完成故障保护。
结合图4,描述本发明的第二方面,同时结合图1.图4所示的装置10包括一个控制装置100,检测装置101,计算装置102和第二控制装置103。具体地,所述第二控制装置103还包括配置控制装置1030。
第一控制装置100用于控制主控制器与从控制器间交换各自所获取的硬件相关信息。所交换的硬件相关信息包括BPDU包包括本交换机的桥IP和路径花费用来向其他交换机广播以利于他们的STP协议的计算,以及端口配置信息,以配置本交换机的端口STP状态。信息的交换是经由内部总线。交换优选地为一种单向的硬件信息传递,也即,主控制器通过内部总线向从控制器发送其获得的硬件信息。但是,上述单向传输的方式仅对应于本发明的一个最优选的实施方式,本发明还有包括但不限于以下的实现方式:Step1:在主控制器正常工作时,由从控制器来周期性地获取硬件信息并报告给主控制器,主控制器无需直接由硬件设备处获取硬件信息(在发明人提供的交底材料中,主控制器所接收到的);Step2:接到从控制器报告的硬件信息后,主控制器根据所述硬件信息生成端口状态控制信息,用于对本交换设备处的端口进行配置并进行广播;Step3:当检测到主控制器发生故障后,从控制器基于其预先(最近一次)获得的硬件信息来计算端口状态控制信息,从而完成故障保护。
在下文中,我们将描述主控制器MC20从硬件HW3获取硬件信息,而来自从控制器SC21的读取硬件信息的请求将被丢弃,也即,第一控制装置100控制主控制器MC20将其获取的硬件信息发送给从控制器SC21。第一控制装置100同样负责当主控制器MC20发生故障时,由主控制器MC20切换到从控制器SC21。具体的内容将在下文中讨论。
在从控制器SC21通过内部总线由主控制器MC20处获取硬件信息后,从控制器SC21的计算装置102将基于来自上层的由网管M1处获得的配置信息和来自主控制器MC20的硬件信息进行STP协议计算。值得注意的是,计算装置102可以独立于从控制器SC21或者集成在从控制器SC21中,上述的变形不会影响本发明的实质。至于STP协议计算的规则,与现有的规则相同,具体地,选举具有最小桥ID的桥为根桥,确定具有到根桥的最小路径花费的为根端口,确定具有最小路径花费的为选取交换机(designate switch),确定从每个网段的最小路径花费,以产生生成树拓扑结构。计算装置102的输出结果是端口状态的控制信息,包括BPDU包和端口的运行状态。从控制器SC21的计算装置102与主控制器MC20的计算装置同时运行。如果检测装置101检测到主控制器MC20正常工作,则从控制器SC21的计算装置将丢弃其计算结果。然而,如果检测装置101检测到主控制器MC20发生故障,从控制器SC21将保存其STP协议的计算结果。
检测装置101确定所述主控制器MC20是否发生故障,并将其检测的结果发送给第二控制装置103和第一控制装置100。确定主控制是否发生故障的规则可以参考步骤s3中的相应的描述。检测装置101也将其确定的结果发送给第一控制装置100。例如,当检测装置101检测到主控制器MC20发生故障,它将发送一个信号给第一控制装置100,则第一控制装置100将控制由主控制器MC20到从控制器SC21的切换。这样,从控制器SC21将直接从硬件处获取硬件信息。
第二控制装置103包括配置控制装置1030,进一步处理计算装置102的计算结果。在第二控制装置103中的配置控制装置1030在检测装置101检测到所述主控制器MC20发生故障时,控制从控制器21配置所述交换机上的端口状态。当主控制器MC20正常工作时,第二控制装置103控制从控制器21将其STP运算结果丢弃。
在本装置的一个变化的实施例中,计算装置102可以集成第二控制装置103中,在此标记为计算控制装置1031(图4中未示出)。计算控制装置1031控制从控制器21只在主控制器MC20发生故障时,计算STP协议。而当主控制器MC20正常工作时,从控制器SC21只由主控制器MC20处获取硬件信息,但是不进行STP协议计算。
以上对本发明的实施例进行了描述,但是本发明并不局限于特定的系统、设备和具体协议,本领域内技术人员可以在所附权利要求的范围内做出各种变形或修改。