背景技术
随着以太网在城域网中的广泛应用,特别是在以太网上的点对点协议(PPPoE,Point-to-Point Protocol over Ethernet)接入模式中和虚拟局域网(Vlan,Virtual Local Area Network)类型的虚拟专用网(VPN,Virtual Private Network)应用模式中,二层网络的规模越来越大,而随着网络规模的不断扩大,在大型交换网络中将可能会出现环路。在出现了环路的大型网络中,由于报文很有可能会在环路中被不断地循环转发,使得网络中所生成的广播帧的数量在很短的时间内以指数形式迅速增长,形成“广播风暴”,从而使网络变得不堪重负,无法执行任何功能,造成网络拥塞。
在现有技术中,通常使用生成树(STP,Spanning Tree Protocol)技术来解决上述的问题。所述的STP技术的基本思想为:通过构造不会出现环路的树状网络结构来达到防止出现网络环路的目的,即可通过阻塞冗余链路来消除网络中可能存在的环路,并在当前活动路径发生故障时激活冗余备份链路恢复网络连通性,以确保数据或报文只能通过单一路径抵达网络中的其他设备。此外,为了解决STP技术在扩展性和收敛速度上存在的问题,Extreme公司还推出了一种以太网备用路由器协议(EAPS)技术,该技术常用于环形主干网,且不需要网络中所有的交换机都支持上述技术,因此具备更大的灵活性。另外,除了EAPS技术,其他一些厂家也推出了类似的以太环网解决方案。
在上述的这些解决方案中,一般都是指定环网上的某个节点为主节点,环网中的其他节点为传输节点,环网的管理、计算等大部分工作都是由主节点完成。如图1所示,图1中的S1为主节点,S2、S3和S4为传输节点,四个节点之间的传输路径分别为链路1~4,从而形成一个环网。在上述的环网中,如果某条链路发生了故障,则该链路将处于故障状态,此时,各节点在该链路上的端口也将处于故障状态;同理,当某节点的某个端口出现故障时,该端口将处于故障状态,此时,该端口所在的链路也将处于故障状态,并导致该端口所在的链路上的其他端口也将处于故障状态。
在通常情况下,可将主节点S1与环网连接的两个端口分别指定为指定主端口和从端口,例如,将主节点S1在链路1上的端口指定为主端口,而将主节点S1在链路4上的端口指定为从端口。主节点S1从主端口发出环路检测报文,如果主节点S1在一段设定的时间内从从端口接收到自己发送的上述环路检测报文,则说明环网中存在完整的环路,因此主节点S1将阻塞自己的从端口,使得在环网中不会形成环路;如果主节点S1在一段设定的时间内没有收到自己发送的上述环路检测报文,则说明环网中的某处出现了故障,没有形成环路,因此主节点S1将从端口设置为转发状态,并分别通过主端口和从端口将环网中出现故障的信息通知给环网上的各个节点。而对于传输节点S2、S3和S4来说,它们将透传上述的环路检测报文,并在获知本节点在环网上的端口处于故障状态后,由本节点在环网上的处于正常状态的端口向主节点S1发送链路故障告警的信息。例如,当图1中的链路2处于故障状态时,传输节点S2和S3在链路2上的端口也分别处于故障状态,此时传输节点S2可通过在链路1上的端口向主节点S1发送链路故障告警的信息,而传输节点S3则可通过在链路3上的端口向传输节点S4发送链路故障告警的信息,并由传输节点S4将该链路故障告警的信息转发给主节点S1。如果主节点S1在收到自己发送的环路检测报文或通过其他方式获知环网中存在完整环路后,又收到上述链路故障告警的信息,则主节点S1将在收到第一条链路故障告警的信息时,将从端口设置为转发状态,并分别通过主端口和从端口将环网中出现故障的信息通知给环上各个节点。
当上述环网中的链路故障得到恢复后,该链路故障得到恢复的消息需要经过一定的时延才能传播到整个网络。因此,在所有网络节点获知网络结构的变化之前,为了避免在重新计算传输路径时出现临时性环路,连接在上述故障已恢复的链路(例如,链路2)上的传输节点(例如,上述的传输节点S2和S3)在获知该链路的故障已得到恢复时,并不马上将在该故障已恢复的链路上的端口(称为故障端口)设置为转发状态,而是先将该故障端口设置为阻塞状态(也可称之为临时阻塞状态),并启动故障恢复定时器,使得该故障端口只能转发环路检测报文(例如,以太环协议中的hello报文),而不转发数据。当环网上所有的链路故障都得到恢复之后,由于环网上的各传输节点都将透传主节点S1所发送的hello报文,因此主节点S1可收到自己所发送的hello报文。当主节点S1第一次收到自己所发送的hello报文后,主节点S1将阻塞从端口,并将环路完整的信息通知给环网上的各个节点。上述与故障已恢复的链路相连接的各个传输节点在收到主节点S1的环路完整的信息后,将改变上述故障端口的状态,将上述的故障端口设置为转发状态,同时关闭故障恢复定时器。
但是,如果环网上存在多处链路故障,则当其中某一处链路故障得到恢复,而其他的链路故障还尚未得到恢复时,由于环路尚不完整,所以主节点S1不会收到hello报文,因此也不会向各个节点发送环路完整的信息,上述与故障已恢复的链路相连接的传输节点只能等到故障恢复定时器超时(时间长度一般为hello报文发送周期的三倍)时,才能将上述临时阻塞的端口设置为转发状态。
由上述可知,在现有技术中,如果环网上存在多处链路故障,则即使是该环网上某条链路的故障已得到恢复时,与该故障已恢复的链路相连接的各个节点也必须在接收到主节点所发送的环路完整的信息之后,或者是在节点的故障恢复定时器超时之后,才能将在该故障已恢复的链路上的端口设置为转发状态,从而使得在故障已恢复的链路上的端口进入转发状态的时间较长,导致整个环网的故障恢复的收敛时间较长,降低了网络的传输效率。
发明内容
有鉴于此,本发明实施例的主要目的在于提供一种在环网中实现快速收敛的方法、装置及系统,从而缩短环网的故障恢复的收敛时间。
为达到上述目的,本发明实施例中的技术方案是这样实现的:
一种在环网中实现快速收敛的方法,该方法包括:
当环网中的一条链路从故障状态恢复到正常状态时,与所述恢复到正常状态的链路相连接的节点查询环网中是否有至少一条链路仍处于故障状态,如果是,则该节点将其与所述恢复到正常状态的链路相连的端口设置为转发状态;
其中,与所述恢复到正常状态的链路相连接的节点查询环网中是否至少一条链路仍处于故障状态包括:
与所述恢复到正常状态的链路相连接的节点,判断其在环网中未与所述恢复到正常状态的链路相连接的端口是否处于故障状态;
如果所述端口处于故障状态,则所述节点获知与所述处于故障状态的端口相连接的链路处于故障状态;
如果所述端口处于正常状态,则所述节点通过所述端口发送查询信息;根据从所述端口接收到与所述查询信息相对应的应答信息,获知环网中所述恢复到正常状态的链路之外的至少一条链路仍处于故障状态。
本发明的实施例中还提供了一种在环网中实现快速收敛的装置,该装置包括:信息处理模块和设置模块;
所述信息处理模块,用于当与该装置相连接的链路从故障状态恢复到正常状态时,查询环网中是否有至少一条链路仍处于故障状态;当环网中有至少一条链路仍处于故障状态时,向所述设置模块发送转发指令;
所述设置模块,用于根据所述转发指令,将该装置与所述恢复到正常状态的链路相连的端口设置为转发状态;
其中,所述信息处理模块包括:判断单元、发送单元和处理单元;
所述判断单元,用于判断所述装置在环网中未与所述恢复到正常状态的链路相连接的端口是否处于故障状态;如果所述端口处于故障状态,则判断单元向所述处理单元发送链路故障信息;如果所述端口处于正常状态,则判断单元向所述发送单元发送查询指令;
所述发送单元,用于根据所接收到的查询指令,通过所述未与所述恢复到正常状态的链路相连接的端口发送查询信息;
所述处理单元,用于根据从所述未与所述恢复到正常状态的链路相连接的端口接收到的与所述查询信息相对应的应答信息,或所述判断单元发送的链路故障信息,向所述设置模块发送转发指令。
本发明的实施例中还提供了一种在环网中实现快速收敛的系统,该系统包括:主节点和至少两个传输节点;
所述主节点,通过链路与环网中的传输节点相连接,用于根据检测周期发送环路检测报文,当收到自身发出的环路检测报文时,发送环路完整的信息,并将从端口设置为阻塞状态;用于当获知环网中至少有一处链路故障未得到恢复时,将该主节点与故障已恢复的链路相连的端口设置为转发状态;
所述传输节点,通过链路与环网中的主节点或相邻传输节点相连接,用于当收到环路完整的信息时,将处于阻塞状态的端口设置为转发状态;用于当获知环网中至少有一处链路故障未得到恢复时,将该传输节点与故障已恢复的链路相连接的端口设置为转发状态。
综上可知,本发明的实施例中提供了一种在环网中实现快速收敛的方法、装置及系统。通过使用上述的方法、装置及系统,使得当环网中存在多处链路故障时,如果环网中的一条链路从故障状态恢复到正常状态,则与所述恢复到正常状态的链路相连接的节点节点可通过故障查询应答机制或快/慢检测切换机制,快速地将其在所述恢复到正常状态的链路上的端口设置为转发状态,因此有效地缩短了链路故障恢复的收敛时间,使其小于50毫秒(ms),从而缩短来了整个环网的故障恢复的收敛时间,提高了网络的传输效率。
具体实施方式
为使本发明的目的、技术方案和优点表达得更加清楚明白,下面结合附图及具体实施例对本发明再作进一步详细的说明。
图2为本发明实施例中在环网中实现快速收敛的方法的总流程图。如图2所示,本发明实施例中在环网中实现快速收敛的方法包括如下所述的步骤:
步骤201,存在多处链路故障的环网中的某一条链路从故障状态恢复到正常状态。可将所述恢复到正常状态的链路称之为故障恢复链路。
步骤202,在故障恢复链路上的节点查询并获知环网中的其他链路仍处于故障状态。
在该步骤中,所述节点首先判断其在环网中未与上述故障恢复链路相连接的端口是否处于故障状态,即该节点在环网上的其他端口是否可用;
如果其他的端口中有至少一个端口处于故障状态,则该端口所连接的链路必然处于故障状态;该节点可立即获知环网中的其他链路仍处于故障状态;
如果其他端口均处于正常状态,即其他端口均可用,则所述节点将通过上述可用端口发送查询信息;环网中的其他传输节点在接收到该查询信息后,如果发现该环网中与自身相连接的链路均未处于故障状态时,则该节点将透传该查询信息,直至环网中的主节点接收到该查询信息;当主节点在接收到上述查询信息后,如果发现该环网中与自身相连接的链路均未处于故障状态时,则主节点不做任何操作。
而如果接收到该查询信息的节点(包括主节点和其他传输节点)发现该环网中与自身相连接的链路处于故障状态时,则该节点将从接收到上述查询信息的端口返回一个与上述查询信息相对应的应答信息;当上述发送查询信息的节点从上述可用端口接收到了与所述查询信息相对应的应答信息时,则该节点可知环网中的至少有一处链路仍处于故障状态,因此执行步骤203。
步骤203,该节点将其在故障恢复链路上的端口设置为转发状态。
以下将结合具体实施例对上述的在环网中实现快速收敛的方法进行更进一步的介绍。
实施例一:使用故障查询应答机制实现快速收敛的方法。
在本实施例中,所述的故障查询应答机制为:当环网中的存在多处链路故障时,如果某处链路故障得到了恢复,则与该故障已恢复的链路相连接的各个节点可通过发送查询消息来查询环网上是否还存在其他的链路故障;如果与该故障已恢复的链路相连接的节点接收到了与上述查询信息相对应的应答信息,则该节点可获知环网上还存在其他的链路故障,因此,该节点可将当前故障恢复的端口直接设置为转发状态。
在以下的描述中,将以一个具有1个主节点和3个传输节点的环网为例,对本实施例的具体实施方式进行介绍。
图3为本发明实施例一中实现快速收敛的方法的示意图。如图3所示,图3中的环网具有一个主节点S1,3个传输节点:S2、S3和S4。其中,可假设环网中的链路2和链路4均发生了故障,此时,传输节点S2和S3在链路2上的端口处于故障状态,主节点S1和传输节点S4在链路4上的端口也处于故障状态。
如果在一段时间后链路2的故障得到了恢复,则传输节点S3可通过在链路2上的端口获知链路2的故障已得到恢复。此时,S3判断自己在环网中的另一个端口,即S3在链路3上的端口是否处于故障状态。如果S3在链路3上的端口处于故障状态,则此时链路3必然也处于故障状态,所以在环网中不会出现完整的环路,因此S3将其在链路2上的端口直接设置为转发状态;如果S3在链路3上的端口处于正常状态,则S3将通过其在链路3上的端口向S4发送链路恢复报文;当S4通过链路3收到上述链路恢复报文时,由于链路4的故障仍未得到恢复,因此传输节点S4将通过收到链路恢复报文的端口,即S4在链路3上的端口向S3发送链路故障报文;当S3收到S4的链路故障报文后,S3可获知链路4的故障仍未得到恢复,因此在环网中不会出现完整的环路,所以S3可立即将其在链路2上的端口直接设置为转发状态。
与上述的传输节点S3相类似,当传输节点S2通过在链路2上的端口获知链路2的故障已得到恢复时,S2也将判断自己在环网中的另一个端口,即S2在链路1上的端口是否处于故障状态。如果S2在链路1上的端口处于故障状态,此时链路1必然也处于故障状态,所以在环网中不会出现完整的环路,因此S2将其在链路2上的端口直接设置为转发状态;如果S2在链路1上的端口处于正常状态,则S2将通过其在链路1上的端口上向主节点S1发送链路恢复报文;当主节点S1通过链路1收到上述链路恢复报文时,由于链路4的故障仍未得到恢复,因此主节点S1将通过收到链路恢复报文的端口,即S1在链路1上的端口向S2发送链路故障报文;当S2收到S1发送的链路故障报文后,S2将其在链路2上的端口直接设置为转发状态,并将所接收到的链路故障报文转发给传输节点S3;如果S3在接收到S2所转发的链路故障报文时,已经将其在链路2上的端口设置为转发状态,则S3只向S4转发所接收到的链路故障报文,不做其他的操作。
此时,在整个环路中,链路2已经从故障状态恢复到正常状态,而链路4仍处于故障状态,因此主节点S1不会发送环路完整的信息。但传输节点S2和S3可根据所接收到的链路故障报文分别将自身在链路2上的端口直接设置为转发状态,而并不需要等到故障恢复定时器超时后,再将上述在链路2上的端口设置为转发状态。因此,通过上述的方法,当环网中至少有一处链路故障未得到恢复时,各个节点可以直接将其在故障已恢复的链路上的端口设置为转发状态,而无须等到接收到主节点发送的环路完整的信息后,或在该节点的故障恢复定时器超时之后,才将上述端口设置为转发状态,从而缩短了环网的故障恢复的收敛时间。
在上述的描述中,是以链路2和链路4均发生故障,且链路2的故障先得到恢复为例来进行说明的;当链路4的故障先得到恢复,而链路2的故障未得到恢复时,所进行的处理过程与上述实施例中的处理过程是相类似的,因此不再赘述。
另外,在本实施例中,在使用故障查询应答机制实现快速收敛的基础上,还可以同时使用如下所述的实施例二中的快/慢检测切换机制来实现快速收敛的方法。
实施例二:使用快/慢检测切换机制实现快速收敛的方法。
在本实施例中,所述的快/慢检测切换机制为:主节点首先判断其所处的环网处于何种状态,如果主节点判断所处的环网处于正常状态,则采用慢检测模式,即主节点以慢检测周期(例如,1秒)连续发送环路检测报文,进行状态维护;而当环网中出现故障时,则主节点将切换到快检测模式,即主节点以快检测周期(例如,10毫秒)连续发送环路检测报文,从而可快速地发现环网上的链路故障恢复情况。在快检测模式中,环网上的非主节点(例如,传输节点等)的故障恢复定时器采用主节点快发周期的三倍或以上,例如30毫秒,即在发生故障的端口的故障得到恢复的30ms后,就将该发生故障的端口设置为转发状态。其中,上述的慢检测周期和快检测周期可根据具体实际情况预先进行设置。
图4为本发明实施例二中实现快速收敛的方法的示意图。如图4所示,当环网上存在多处故障时,即链路2和4均发生故障时,此时环网处于故障状态,所以主节点S1将采用快检测模式,以快检测周期快速发送环路检测报文,例如,每10毫秒(ms)发送一个环路检测报文。在本实施例中,可假设链路2的故障先得到恢复,而链路4仍然存在故障,此时主节点S1仍然收不到自己所发送的环路检测报文,因此主节点判断环网仍然处于故障状态,继续采用快检测模式。此时,传输节点S2和传输节点S3在故障恢复定时器超时(例如,30毫秒)后,将在链路2上的端口设置为转发状态。
如果上述的环网中仅出现了一处故障,例如,图4所示的链路4出现了故障。当链路4的故障得到恢复后,主节点S1和传输节点S4在链路4上的端口都进入阻塞状态,同时S1和S2都启动了各自的故障恢复定时器。因为此时的环网仍处于故障状态,所以主节点S1采用的是快检测模式,因此,在一个发送周期(例如,10毫秒)后,主节点S1便可以收到自己所发送的环路检测报文,从而阻塞S1的从端口,使得环网由故障状态进入到环路完整的状态,此时,主节点S1将切换到慢检测模式,并将环路完整的信息发送给环网上的各个节点;环网上的其他非主节点(例如,S4)收到上述环路完整的信息后,将上述被阻塞的端口设置为转发状态。
在本发明的实施例中,还可提供一种在环网中实现快速收敛的装置。图5为本发明实施例中实现快速收敛的装置的示意图。如图5所示,本发明实施例中的实现快速收敛的装置包括:信息处理模块和设置模块;
所述信息处理模块,用于当与该装置相连接的链路从故障状态恢复到正常状态时,查询环网中是否有至少一条链路仍处于故障状态;当环网中有至少一条链路仍处于故障状态时,向所述设置模块发送转发指令;
所述设置模块,用于根据所述转发指令,将该装置与所述恢复到正常状态的链路相连的端口设置为转发状态。
其中,所述信息处理模块包括:判断单元、发送单元和处理单元。
所述判断单元,用于判断所述装置在环网中未与所述恢复到正常状态的链路相连接的端口是否处于故障状态;如果所述端口处于故障状态,则判断单元向所述处理单元发送链路故障信息;如果所述端口处于正常状态,则判断单元向所述发送单元发送查询指令;
所述发送单元,用于根据所接收到的查询指令,通过所述未与所述恢复到正常状态的链路相连接的端口发送查询信息;
所述处理单元,用于根据从所述未与所述恢复到正常状态的链路相连接的端口接收到的与所述查询信息相对应的应答信息,或所述判断单元发送的链路故障信息,向所述设置模块发送转发指令。
上述的在环网中实现快速收敛的装置可以时传输节点,也可以是主节点。如果上述的在环网中实现快速收敛的装置为主节点,则该装置还可以包括:检测模块;此时:
所述检测模块,用于发送环路检测报文,并根据所接收到的自身所发送的环路检测报文(此时表明环网中不存在链路故障),切换到慢检测模式,根据设定的慢检测周期发送环路检测报文,并阻塞自身的从端口,通过主端口将环路完整的信息发送给环网上的各个节点;还用于根据所接收到的至少一条链路仍处于故障状态的信息(此时表明环网中仍存在链路故障),切换到快检测模式时,根据设定的快检测周期发送环路检测报文;其中,所述快检测周期小于所述慢检测周期。
所述信息处理模块中的接收单元,还用于将接收到的环路检测报文发送给所述的检测模块;当环网中有至少一条链路仍处于故障状态时,向检测模块发送故障信息。
此外,本发明的实施例中还提供了一种在环网中实现快速收敛的系统,该系统包括:主节点和至少两个传输节点。
所述主节点,通过链路与环网中的传输节点相连接,用于根据检测周期发送环路检测报文,当收到自身发出的环路检测报文时,发送环路完整的信息,并将从端口设置为阻塞状态;用于当获知环网中至少有一处链路故障未得到恢复时,将该主节点与故障已恢复的链路相连的端口设置为转发状态;
所述传输节点,通过链路与环网中的主节点或相邻传输节点相连接,用于当收到环路完整的信息时,将处于阻塞状态的端口设置为转发状态;用于当获知环网中至少有一处链路故障未得到恢复时,将该传输节点与故障已恢复的链路相连接的端口设置为转发状态。
此外,所述主节点,还用于根据所接收到的自身所发送的环路检测报文切换到慢检测模式,根据设定的慢检测周期发送环路检测报文;当获知环网中至少有一处链路故障未得到恢复时,切换到快检测模式,根据设定的快检测周期发送环路检测报文;其中,所述快检测周期小于所述慢检测周期。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。