1 健康状态(Complete state)
当整个环网上所有链路都处于UP状态时,RRPP环处于健康状态,主节点的状态反映整个环网的健康状态。环网处于健康状态时,为了防止其上的数据报文形成广播环路,主节点阻塞其副端口。主节点从其主端口周期性的发送HELLO报文,依次经过各传输节点,最后从主节点副端口回到主节点。环网正常时的情况如图1所示。
图1 Complete状态下的RRPP环
2 链路故障
当传输节点交换机上的RRPP端口发生链路DOWN时,该节点将从与故障端口配对的状态为UP的RRPP端口发送LINK-DOWN报文通知主节点,LINK-DOWN上报过程如图2所示。
图2 传输节点链路中断上报示意图
主节点收到LINK-DOWN报文后,立即将状态切换到Failed状态,放开副端口。由于网络拓扑发生改变,以免报文定向错误,主节点还需要刷新FDB表,并从主端口发送COMMON-FLUSH-FDB报文通知所有传输节点刷新FDB。主节点状态向Failed状态迁移过程如图3所示。
图3 主节点向Failed状态迁移过程示意图
故障上报的机制是由传输节点发起的,如果LINK-DOWN报文在传输过程中不幸丢失了怎么办?这时主节点的环网状态检测机制就派上了用场。如果主节点副端口在规定时间(由Fail定时器定义)内仍没有收到主节点发出的HELLO报文,也认为环网发生故障,对故障的处理过程与传输节点主动上报作相同处理。
3 故障恢复
当传输节点交换机上的RRPP端口发生恢复时,传输节点迁移到Preforwarding状态,并阻塞刚刚恢复的端口。传输节点端口恢复时的处理过程如图4所示。
图4 传输节点链路恢复处理过程示意图
环网恢复的过程是由主节点主动发起的,主节点周期性的从主端口发送HELLO报文,环网上的故障链路全部恢复后,主节点将从副端口收到自己发出的检测报文。
主节点收到自己发出的HELLO报文后,首先将状态迁移回Complete状态,阻塞副端口,然后从主端口发送COMPLETE_FLUSH_FDB报文。传输节点收到COMPLETE_FLUSH_FDB报文后,迁移回Link-Up状态,放开临时阻塞端口,并刷新FDB表。环网恢复的处理过程如图5所示。
图5 环网恢复示意图
如果不幸COMPLETE_FLUSH_FDB报文在传播过程中丢失,还有一种备份机制来实现传输节点临时阻塞端口的恢复,就是传输节点处于Preforwarding状态时如果在规定时间(由Fail定时器定义)内收不到主节点发来的COMPLETE_FLUSH_FDB报文,自行放开临时阻塞端口,恢复数据通信。