发明内容
有鉴于此,本发明的目的在于提供一种以太网冗余环网快速倒换方法,该方法能够减少环网的收敛时间。
为了达到上述目的,本发明提供了一种以太网冗余环网快速倒换方法,应用于包括一个管理节点和多个辅助节点的以太网冗余环网中,所述的管理节点包括管理端口和辅助端口,所述的辅助节点包括分别用于接收和转发的环端口;该方法预先设置探测报文最小接收次数N;包括:
所述管理节点,周期性从管理端口发送探测报文,所述辅助节点接收并转发该探测报文,管理节点在辅助端口接收到该探测报文时,将辅助端口设置为阻塞状态;
检测到环端口链路故障的辅助节点将发生链路故障的环端口设置为阻塞状态,从转发的环端口向管理节点发送链路故障报文,接收到链路故障报文的管理节点将辅助端口设置为转发状态;
检测到环端口链路恢复的辅助节点先将链路恢复的环端口设置为阻塞状态,从转发的环端口向管理节点发送链路恢复报文,接收到链路恢复报文的管理节点从管理端口和辅助端口发送刷新报文,接收到刷新报文的辅助节点转发该刷新报文;当管理节点连续N次接收到从管理端口发出的探测报文时,将辅助端口设置为阻塞状态,从管理端口发送拓扑改变报文,接收到管理节点发来的拓扑改变报文的辅助节点再解除阻塞的环端口。
所述检测到环端口链路恢复的辅助节点将链路恢复的环端口设置为阻塞状态之后,从转发的环端口向管理节点发送链路恢复报文之前,进一步包括:启动阻塞定时器;
所述辅助节点在阻塞定时器超时时,解除阻塞的环端口,并刷新本地环端口FDB;
所述辅助节点在接收到管理节点发来的拓扑改变报文后进一步包括:转发该拓扑改变报文,并刷新本地环端口FDB。
所述管理节点从管理端口发送探测报文时,进一步包括:启动探测报文接收定时器;
管理节点在检测到管理端口链路故障或辅助端口链路故障,或探测报文接收定时器已超时还未接收到探测报文时,将辅助端口设置为转发状态。
所述管理节点,在检测到管理端口链路故障时,进一步包括:从辅助端口发送刷新报文,并刷新本地环端口FDB;
所述管理节点在检测到辅助端口链路故障时,进一步包括:从管理端口发送刷新报文,并刷新本地环端口FDB;
所述管理节点在接收到辅助节点发来的链路故障报文或探测报文接收定时器已超时还未接收到探测报文时,进一步包括:从管理端口和辅助端口两个端口发送刷新报文,并刷新本地环端口FDB;
所述辅助节点在接收到管理节点发来的刷新报文后,转发该刷新报文时,还刷新本地环端口FDB。
所述管理节点,在管理端口正常转发,检测到辅助端口链路恢复时,将辅助端口设置为转发状态;
所述管理节点在接收到辅助节点发来的链路恢复报文后进一步包括:刷新本地环端口FDB;所述辅助节点在接收到管理节点发来的刷新报文后,转发该刷新报文时,还刷新本地环端口FDB。
还包括:所述的辅助节点的接收和转发的环端口中的一个环端口链路故障且另一个环端口正常转发,当正常转发的端口链路故障时,将该由正常转发转变为链路故障的端口设置为阻塞状态;所述的辅助节点的接收和转发的环端口都发生链路故障,当其中一个环端口链路恢复时,将链路恢复的端口设置为转发状态。
所述辅助节点进一步用于:如果接收到其它环网协议报文,则转发该报文。
所述检测端口链路故障或端口链路恢复的方法为:将管理节点和辅助节点中与物理层PHY芯片相连的外部光模块的衰减信号直接连接到中央处理单元CPU的通用输入输出GPIO管脚,CPU定期扫描GPIO管脚获取当前光模块衰减LOSS信号的状态,将LOSS信号的状态与从PHY寄存器中获得的链路的状态进行运算处理,得到链路的实际状态,并根据得到的链路的实际状态确定端口链路故障或端口链路恢复。
由上述技术方案可知,本发明的这种以太网冗余环网快速倒换方法,将环网中的一个节点设置为管理节点,其他节点设置为辅助节点,管理节点周期性从管理端口发送探测报文,在管理节点的辅助端口接收该探测报文,在环网故障时,将辅助端口设置为阻塞状态,在环网恢复时,将辅助端口设置为阻塞状态,而辅助节点则用于接收并转发管理端口的探测报文。该方法能够减少环网的收敛时间。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图并举实施例,对本发明进行详细说明。
本发明的主要思想是:将环网中的一个节点设置为管理节点,其他节点设置为辅助节点,管理节点周期性从管理端口发送探测报文,在辅助端口接收该探测报文,以此来检测环网是否发生故障,并根据环网故障与否来设置辅助端口的阻塞或转发状态,而辅助节点则用于接收并转发管理端口的探测报文。这种方法可以减少环网的收敛时间。
参见图1,图1是单环网络结构图,预先设置环中的一个节点为管理节点,其它节点设置为辅助节点,将管理节点的两个端口分别设置为管理端口和辅助端口;管理节点周期性的从管理端口发送探测报文并启动探测报文接收定时器,各辅助节点依次接收并转发该探测报文使其在环上传播;如果管理节点在所述探测报文接收定时器时间内在辅助端口接收到自己从管理端口发送的探测报文,则说明环路处于闭环状态,环网完整;如果管理节点在所述定时器时间内没有收到自己从管理端口发送的探测报文,则认为环路处于开环状态,环网发生链路故障。以此来检测环路的状态。
如果管理节点检测到环路处于闭环状态,则将辅助端口设置成阻塞状态,避免形成环路风暴;如果管理节点检测到环路处于开环状态,则将辅助端口解除阻塞,恢复成转发状态。
图2是环网故障示意图,当环网中的一条链路发生故障断开时,如图2中的辅助节点1和辅助节点2之间的链路断开,辅助节点1和辅助节点2检测到其环端口链路出现故障,分别向管理节点发送链路故障(link-down)报文,管理节点收到link-down报文后,立即将辅助端口解除阻塞,恢复为转发状态,从管理端口和辅助端口两个端口发送刷新报文,通知所有辅助节点刷新转发数据库(FDB);刷新本地环端口FDB转发表。各个辅助节点接收到刷新报文后,转发该刷新报文,并刷新本地环端口FDB。
图3是环网故障恢复示意图,当环网中的某一条链路从故障中恢复时,如图3中的辅助节点1和辅助节点2之间的链路故障恢复,辅助节点1和辅助节点2检测到其环端口链路从故障中恢复,分别向管理节点发送链路恢复(link-up)报文,管理节点收到link-up报文后,从管理端口和辅助端口两个端口发送刷新报文,通知所有辅助节点刷新转发数据库(FDB),同时刷新本地环端口FDB;各个辅助节点接收到刷新报文后,转发该刷新报文,并刷新本地环端口FDB。
当环网中的发生故障的链路全部从故障中恢复时,管理节点能够从辅助端口接收到自己从管理端口发送过来的探测报文,此时环网重新恢复为闭环状态,需要将辅助端口设置为阻塞状态。但是,环网刚恢复为闭环状态时,环网并不稳定,例如在光纤插头插入的瞬间,因接触不良等原因会使链路故障恢复的链路两侧的端口反复检测到链路恢复/故障,导致链路两侧的端口所在的节点不停的发送链路故障报文和链路恢复报文,从而导致环网反复的切换,为了防止因链路抖动导致环网频繁切换,这里采用一种检测机制,预先设置探测报文最小连续接收次数N,如果辅助端口连续N次接收到探测报文,则说明环路处于稳定状态,此时需要将辅助端口设置成阻塞状态,同时从管理端口发送拓扑改变报文,通知所有辅助节点刷新FDB;如果不能连续接收到探测报文,则说明链路还不稳定,此时不需要进行切换,仍然保持当前的状态,即管理端口和辅助端口都处于转发状态。这里的N是自然数,由管理人员根据实际需要设置。
此外,当链路断开时,有些物理层(PHY)芯片对链路的状态变化反应相对要慢一些,这会导致环路倒换时间变长。本发明的技术方案,将管理节点和辅助节点中与PHY相连的外部光模块的衰减(LOSS)信号直接连接到CPU的通用输入输出(GPIO)管脚,如图4所示的链路故障检测示意图,CPU定期,例如每隔16ms,扫描GPIO管脚获取当前光模块LOSS信号的状态。将LOSS信号的状态与从PHY寄存器中获得的链路的状态进行运算处理,最终获得链路的实际状态。通过该方式,当链路断开时,CPU即可迅速得知链路的状态,及时上报link-down事件,充分保证了环网倒换时间。具体处理如下:
用Loss代表光模块的Loss信号,高电平表示没有光信号,低电平表示有光信号。用物理层状态(Phy_status)表示通过PHY芯片检测到的链路状态,1表示链路Up,0表示链路Down。用新链路状态(New_link_status)表示最终的链路状态,则具体算法如下:New_link_status=~Loss&Phy_status。也就是将Loss先执行取反操作,然后再和Phy_status进行与操作,最后得到的结果就是最终的链路状态,1表示Up,0表示Down。
本发明的技术方案中,将管理节点的工作状态分为三种:初始状态、开环状态、闭环状态,其中,初始状态为环网启动时管理节点的状态;开环状态为环网中有链路故障时管理节点的状态;闭环状态为环网中没有链路故障时管理节点的状态。针对管理节点的三种工作状态,本发明给出了三种工作状态变化的协议状态机。参见图5及表一、表二、表三,其中,图5是管理节点工作状态变化的协议状态机示意图;表一、表二、表三给出了管理节点从其中一种工作状态转变到另一种工作状态的变化情况。下面各表中的空(Null)表示无任何前提条件或不作任何动作。
图5中的501表示管理节点的工作状态从初始状态到闭环状态的变化,包括一种情况:初始状态下,如果管理节点在辅助端口接收到从管理端口发出的探测报文,则将辅助端口设置为阻塞状态,管理节点的工作状态转变为闭环状态。对应于表一的编号1。
表一
图5中的502表示管理节点的工作状态从闭环状态到开环状态的变化,包括四种情况:
1、如果管理节点的管理端口链路故障,则解除辅助端口的阻塞状态,恢复为转发状态;从辅助端口发送刷新报文,通知所有辅助节点刷新转发数据库(FDB);刷新本地环端口FDB转发表。管理节点转变为开环状态,对应于表二中的编号1。这里的管理端口链路故障是指与管理端口相连的辅助节点的端口与管理端口之间的链路发生故障。
2、如果管理节点的辅助端口链路故障,则从管理端口发送刷新报文,通知所有辅助节点刷新FDB;刷新本地环端口FDB转发表。管理节点从闭环状态转变为开环状态,对应于表二中的编号2。这里的辅助端口链路故障是指与辅助端口相连的辅助节点的端口与辅助端口之间的链路发生故障。
3、如果管理节点接收到辅助节点发来的链路故障报文,则解除辅助端口的阻塞状态,设置辅助端口为转发状态;从管理端口和辅助端口两个端口发送刷新报文,通知所有辅助节点刷新FDB;刷新本地环端口FDB转发表。管理节点从闭环状态转变为开环状态,对应于表二中的编号3。
4、如果管理节点中探测报文接收定时器超时,则解除辅助端口的阻塞状态,设置辅助端口为转发状态;从管理端口和辅助端口两个端口发送刷新报文,通知所有辅助节点刷新FDB;刷新本地环端口FDB转发表。管理节点转变为开环状态,对应于表二中的编号3。
表二
图5中的503表示管理节点的工作状态保持为开环状态,包括三种情况:
1、在管理节点的辅助端口为正常转发的情况下,如果管理端口故障恢复,管理端口自动恢复为转发状态,管理节点不作任何动作,管理节点保持为开环状态,对应于表三中的编号1。这里,管理端口一直默认为转发状态,当其从故障中恢复时,自动转变为转发状态,与其相连的辅助节点的端口则为阻塞状态。
2、在管理节点的管理端口为正常转发的情况下,如果辅助端口故障恢复,则设置辅助端口为转发状态。管理节点的工作状态保持为开环状态,对应于表三中的编号2。此时,与其相连的辅助节点的端口为阻塞状态。
3、如果管理节点接收到辅助节点发来的链路恢复报文,则从管理端口和辅助端口两个端口发送刷新报文,通知所有辅助节点刷新FDB,同时刷新本地环端口FDB。管理节点的工作状态保持为开环状态,对应于表三中的编号3。
图5中的504表示管理节点的工作状态从开环状态转变为闭环状态,包括一种情况:
1、如果管理节点的辅助端口连续N次接收到从管理端口发送的探测报文,则设置辅助端口为阻塞状态;从管理端口发送拓扑改变报文,通知所有辅助节点刷新FDB;刷新本地环端口FDB转发表。管理节点的工作状态转变为闭环状态,对应于表三中的编号4。
表三
前面对环网中管理节点的工作状态及其状态变化进行了说明,下面对环网中的辅助节点的状态及状态变化进行说明。
环网中的辅助节点分为四种工作状态:空闲状态、环中断状态、环阻塞状态、环转发状态。其中,空闲状态是指辅助节点的两个端口都处于链路故障状态时的工作状态;环中断状态是指辅助节点的其中一个端口链路故障,另一个端口正常转发时的工作状态;环阻塞状态是指辅助节点的其中一个端口从故障中恢复,另一个端口正常转发时的工作状态;环转发状态是指辅助节点的两个端口都处于正常转发状态时的工作状态。下面参见图6及表四、表五、表六、表七对管理节点的三种工作状态变化做详细说明。其中,图6是辅助节点工作状态变化的协议状态机示意图;表四、表五、表六、表七给出了管理节点从其中一种工作状态转变到另一种工作状态的变化情况。
图6中的601表示辅助节点的工作状态从空闲状态转变到环中断状态的变化,包括一种情况:
1、如果辅助节点的两个端口的其中一个端口从链路故障中恢复,则设置该链路恢复端口为转发状态。辅助节点的工作状态转变为环中断状态。对应于表四中的编号1。
表四
图6中的602表示辅助节点的工作状态从空闲状态转变到环中断状态的变化,包括一种情况:
1、辅助节点的一个端口处于正常转发状态,如果另一个端口从链路故障中恢复,则从正常转发的端口发送链路恢复报文到管理节点,设置该从链路故障中恢复的端口为阻塞状态,并启动阻塞定时器。辅助节点的工作状态转变为环阻塞状态。对应于表五中的编号1。
图6中的603表示辅助节点的工作状态从环中断状态转变到空闲状态的变化,包括一种情况:
1、如果辅助节点的正常转发的端口发生链路故障,则设置该发生故障的端口为阻塞状态。辅助节点的工作状态转变为空闲状态,对应于表五中的编号2。
图6中的604表示辅助节点的工作状态保持为环中断状态,包括一种情况:
1、如果辅助节点接收到管理节点发来的刷新报文,则刷新本地环端口FDB转发表。辅助节点的工作状态仍保持环中断状态,对应于表五中的编号3。
表五
图6中的605表示辅助节点的工作状态从环阻塞状态转变到环转发状态的变化,包括两种情况:
1、如果辅助节点接收到管理节点发来的拓扑改变报文,则转发该报文;将阻塞端口设置成转发状态;刷新本地环端口FDB转发表。辅助节点的工作状态转变为环转发状态,对应于表六中的编号1。
2、如果辅助节点的阻塞定时器超时,则将阻塞端口设置成转发状态;刷新本地环端口FDB转发表。辅助节点的工作状态从环阻塞状态转变为环转发状态,对应于表六中的编号3。
图6中的606表示辅助节点的工作状态保持为环阻塞状态,包括两种情况:
1、如果辅助节点接收到管理节点发来的刷新报文,则转发该报文;刷新本地环端口FDB转发表。辅助节点的工作状态保持为环阻塞状态,对应于表六中的编号2。
2、如果辅助节点接收到其他环网协议报文,则转发该报文。辅助节点的工作状态仍保持为环阻塞状态,对应于表六中的编号4。
表六
图6中的607表示辅助节点的工作状态从环转发状态转变为环中断状态,包括一种情况:
1、如果辅助节点的其中一个端口链路故障,则辅助节点从另一个端口发送链路故障报文;刷新该链路故障端口FDB转发表;设置该链路故障端口为阻塞状态。辅助节点的工作状态转变为环中断状态,对应于表七中的编号1。
图6中的608表示辅助节点的工作状态保持为环转发状态,包括三种情况:
1、如果辅助节点接收到管理节点发来的拓扑改变报文,则转发该报文;刷新本地端口的FDB转发表。辅助节点的工作状态保持环转发状态,对应于表七中的编号2。
2、如果辅助节点接收到管理节点发来的刷新报文,则转发该报文;刷新本地端口的FDB转发表。辅助节点的工作状态保持环转发状态,对应于表七中的编号3。
3、如果辅助节点接收到其他报文,则辅助节点转发该报文。辅助节点的工作状态保持环转发状态,对应于表七中的编号4。
表七
由上面的技术方案可知,本发明的这种以太网冗余环网快速倒换方法,通过采用协议状态机,使以太网冗余环网能够快速进行切换,减少收敛时间;此外,当整个环网链路恢复时,如果管理节点的辅助端口连续多次接收到管理节点从管理端口发出的探测报文,则将辅助端口设置为阻塞状态,否则保持辅助端口的转发状态,这样,在个别链路不稳定的状况下,仍然能够保证整个环网的稳定性,避免由于个别链路瞬间的不稳定性,导致整个环网的状态频繁切换,影响整个环网的通信质量;本发明还采用了将与PHY相连的外部光模块的衰减(LOSS)信号直接连接到CPU的通用输入输出(GPIO)管脚的链路检测机制,使得链路检测更加灵敏,可以使产品兼容更多的PHY芯片,尤其包括一些低成本的PHY芯片,即能降低产品成本,又能提高环网的收敛时间,保证环网能够快速实现倒换,满足工业以太网通信领域对环网收敛时间的要求。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。