VRRP拓扑网络中二层环路的检测与保护方法转让专利

申请号 : CN200910106388.2

文献号 : CN101557343B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 叶子彭兆华车任秋

申请人 : 联想天工网络(深圳)有限公司

摘要 :

一种VRRP拓扑网络中二层环路的检测与保护方法,核心层接入互为备份的两个三层交换设备;使一个三层交换设备设置为发送者状态,并设置其中一个端口为主端口,而另一个三层交换设备设置为接收者状态;当接收者检测到自身端口的链路状态变化时,主动发送协议报文通知发送者进行端口状态的保护切换:发送者中的链路状态为连通状态的端口,若该端口存在映射端口,则将该端口设置为阻塞状态,否则设置为转发状态;发送者中的链路状态为断开状态的端口设置为关闭状态;接收者中的链路状态为连通状态的端口设置为转发状态;接收者中的链路状态为断开状态的端口设置为关闭状态。本发明可有效解决目前VRRP拓扑中的环路问题,简单方便的实现环路检测与保护。

权利要求 :

1.一种VRRP拓扑网络中二层环路的检测与保护方法,该VRRP拓扑网络包括:若干个接入层的二层交换设备;接入核心层且互为备份的两个三层交换设备;其特征在于包括:a、使其中一个三层交换设备设置为主动发送协议报文的发送者状态,并设置该发送者的其中一个端口为处于转发状态的主端口,而另一个三层交换设备设置为仅当检测到自身端口的链路状态变化时才会主动发送协议报文的接收者状态;

b、当接收者检测到自身端口的链路状态变化时,主动发送协议报文通知发送者进行端口状态的保护切换:

b1、发送者中的主端口的STP状态设置为转发状态;发送者中的链路状态为连通状态的端口,若该端口存在映射端口,即记录了与该端口进行协议报文交互的对端三层交换设备的保护端口,则将该端口的STP状态设置为阻塞状态,否则设置为转发状态;发送者中的链路状态为断开状态的端口的STP状态设置为关闭状态;

b2、接收者中的链路状态为连通状态的端口的STP状态设置为转发状态;接收者中的链路状态为断开状态的端口的STP状态设置为关闭状态。

2.根据权利要求1所述VRRP拓扑网络中二层环路的检测与保护方法,其特征在于:

若两个三层交换设备同时启动,则两个三层交换设备均从初始状态迁移为发送者状态,且从所有链路状态为连通状态的端口发送协议报文进行状态选举,由设备优先级较高、或优先级相同而MAC地址较大的一个三层交换设备迁移为接收者状态,而另一个三层交换设备保持为发送者状态;

若VRRP拓扑网络中已经存在一个三层交换设备为接收者,则后续接入VRRP拓扑网络中的三层交换设备启动后迁移为发送者。

3.根据权利要求1所述VRRP拓扑网络中二层环路的检测与保护方法,其特征在于:当发送者接收到链路状态查询报文时,根据该报文所记录的优先级及MAC地址进行比较,若该报文所记录的优先级较小、或优先级相同而MAC地址较小,则发送者迁移到接收者状态,且关闭查询定时器,用报文中的发送间隔更新设备的查询间隔参数,计算中断间隔参数,启动中断定时器,并清除主端口。

4.根据权利要求1所述VRRP拓扑网络中二层环路的检测与保护方法,其特征在于:当接收者接收到链路状态应答报文时迁移到发送者状态,关闭中断定时器、更新查询间隔参数、计算中断间隔参数、启动查询定时器、触发“保护设备因接收到链路状态应答报文迁移至发送者状态”事件发送到所有的端口、触发“发送链路状态查询报文”事件发送到所有的端口。

5.根据权利要求1所述VRRP拓扑网络中二层环路的检测与保护方法,其特征在于:一个处于关闭状态的端口接收到链路连接事件时迁移到阻塞状态,且启动该端口的中断定时器;若该端口位于发送者,则从该端口发送链路状态查询报文,若该端口位于接收者,则从该端口发送链路状态改变报文。

6.根据权利要求1所述VRRP拓扑网络中二层环路的检测与保护方法,其特征在于:

一个处于阻塞状态的端口接收到端口中断定时器超时事件时,清除映射端口索引号,迁移到转发状态;

一个处于转发状态的端口接收到端口中断定时器超时事件时,清除映射端口索引号,且当该端口位于发送者时,若该端口为主端口,则清除主端口并选择新的主端口,且将新的主 端口设置为转发状态。

7.根据权利要求1所述VRRP拓扑网络中二层环路的检测与保护方法,其特征在于:

一个处于阻塞状态的端口接收到链路状态查询报文时,当该端口位于接收者且该链路状态查询报文记录的发送端口是阻塞状态或该链路状态查询报文的发送端口是主端口,则将接收者的该端口迁移到转发状态,设置映射端口索引号,重新启动端口中断定时器,且从该端口发送链路状态应答报文;当该端口位于发送者时则从该端口发送链路状态查询报文;

一个处于转发状态的端口接收到链路状态查询报文时,若该端口位于接收者,且该链路状态查询报文中发送端口的状态是转发状态且发送端口不是主端口,则将该端口迁移到阻塞状态,设置映射端口索引号并重新启动端口中断定时器,从该端口发送链路状态应答报文;若该端口位于发送者,如果该端口不是主端口则迁移到阻塞状态,重新启动端口中断定时器,从该端口发送链路状态查询报文。

8.根据权利要求1所述VRRP拓扑网络中二层环路的检测与保护方法,其特征在于:

当发送者的一个处于阻塞状态的端口接收到链路状态应答报文时,设置映射端口索引号,重新启动端口中断定时器,如果该发送者尚无主端口则将接收到链路状态应答报文的端口设置为主端口并迁移到转发状态,如果链路状态应答报文中发送端口的STP状态是阻塞状态,则从接收到链路状态应答报文的端口发送链路状态查询报文;

当发送者的一个处于转发状态的端口接收到链路状态应答报文时,设置映射端口索引号,重新启动端口中断定时器,如果发送者尚未有主端口则将接收到链路状态应答报文的端口设置为主端口,如果接收到链路状态应答报文的端口不是主端口则将该端口迁移到阻塞状态,如果链路状态应答报文中发送端口的STP状态是阻塞状态,则从接收到链路状态应答报文的端口发送链路状态查询报文。

9.根据权利要求1所述VRRP拓扑网络中二层环路的检测与保护方法,其特征在于:

当发送者的一个处于阻塞状态或转发状态的端口接收到链路状态改变报文时,设置链路状态改变报文中的发送端口为映射端口,重新启动端口中断定时器;

如果链路状态改变报文中链路状态发生改变的变化端口的链路状态是断开状态,则从端口映射表中查找变化端口对应的本地端口,如果存在本地端口,则处理该本地端口:如果该本地端口的STP状态是阻塞状态则迁移到转发状态,清除该本地端口的映射端口索引号,关闭该本地端口中断定时器;如果该本地端口是主端口则清除主端口,接收到链路状态改变报文的端口成为主端口,若该端口处于阻塞状态则迁移到转发状态;

如果链路状态改变报文中链路状态发生改变的变化端口的链路状态是连通状态,则在无主端口的情况下接收到链路状态改变报文的本地端口成为主端口,若该本地端口处于阻塞状态则迁移到转发状态,若该本地端口处于转发状态且未设置为主端口则迁移到阻塞状态,并从该本地端口发送链路状态查询报文。

10.根据权利要求1所述VRRP拓扑网络中二层环路的检测与保护方法,其特征在于,所述报文封装在MAC帧内,其至少包括:版本域;分别表示链路状态查询报文、链路状态应答报文和链路状态改变报文三种报文类型的报文类型域;设备优先级域;查询报文发送间隔域;为主端口的索引号的主端口域;表示发送报文的端口索引号的发送端口域;表示链路状态发生改变的端口索引号的变化端口域;表示变化端口的链路状态为连通状态或断开状态的端口链路状态域;分别表示变化端口的STP状态为关闭状态、阻塞状态或转发状态的端口STP状态域。

说明书 :

VRRP拓扑网络中二层环路的检测与保护方法

技术领域

[0001] 本发明涉及应用于以太网三层核心交换设备的交换技术,尤其是涉及一种VRRP的网络环境检测并保护VRRP拓扑产生的二层环路。

背景技术

[0002] 虚拟路由冗余协议(VRRP:Virtual Router Redundancy Protocol)是虚拟路由器备份协议,实现终端缺省网关的冗余备份,当其中一台网关出现故障时,备份网关会自动接管转发工作,这种切换对终端用户是透明的。在配置VRRP的网络实现中,为了主备网关的切换,必然会有冗余链路存在。冗余链路的存在是为了保证备份设备的切换,但同时必然会形成二层环路。为此,对二层环路的检测与保护是VRRP应用的一个必要过程。
[0003] 现有的二层环路解决办法有STP、RSTP、MSTP、PVST。STP与RSTP的环路计算与虚拟局域网(VLAN:Virtual Local Area Network)无关,而实际应用中VRRP协议与VLAN相关,环路计算不涉及VLAN的STP与RSTP无法胜任该环路检测。MSTP与PVST的环路计算与VLAN相关,可解决多个VLAN内二层环路问题,但是需要VRRP拓扑中所有的二层与三层交换设备均实现MSTP或PVST,而目前的二层交换设备多不支持MSTP与PVST,故MSTP与PVST对于VRRP拓扑的二层环路问题也是有心无力。

发明内容

[0004] 本发明针对目前VRRP应用现状提出一种二层环路检测与保护方法,在每个启动VRRP的VLAN内独自进行环路计算,进行检测与切换保护,而二层交换设备仅透传交互报文,无需参与环路计算,从而解决了目前VRRP二层环路计算需与VLAN相关的技术问题。
[0005] 本发明采用如下技术方案实现:一种VRRP拓扑网络中二层环路的检测与保护方法,该VRRP拓扑网络包括:若干个接入层的二层交换设备;接入核心层且互为备份的两个三层交换设备;其包括:
[0006] a、使其中一个三层交换设备设置为主动发送协议报文的发送者状态,并设置该发送者的其中一个端口为处于转发状态的主端口,而另一个三层交换设备设置为仅当检测到自身端口的链路状态变化时才会主动发送协议报文的接收者状态;
[0007] b、当接收者检测到自身端口的链路状态变化时,主动发送协议报文通知发送者进行端口状态的保护切换:
[0008] b1、发送者中的主端口的STP状态设置为转发状态;发送者中的链路状态为连通状态的端口,若该端口存在映射端口,则将该端口的STP状态设置为阻塞状态,否则设置为转发状态;发送者中的链路状态为断开状态的端口的STP状态设置为关闭状态;
[0009] b2、接收者中的链路状态为连通状态的端口的STP状态设置为转发状态;接收者中的链路状态为断开状态的端口的STP状态设置为关闭状态。
[0010] 优选的,若两个三层交换设备同时启动,则两个三层交换设备均从初始状态迁移为发送者状态,且从所有链路状态为连通状态的端口发送协议报文进行状态选举,由设备优先级较高、或优先级相同而MAC地址较大的一个三层交换设备迁移为接收者状态,而另一个三层交换设备保持为发送者状态;
[0011] 若VRRP拓扑网络中已经存在一个三层交换设备为接收者,则后续接入VRRP拓扑网络中的三层交换设备启动后迁移为发送者。
[0012] 优选的,当发送者接收到链路状态查询报文时,根据该报文所记录的优先级及MAC地址进行比较,若该报文所记录的优先级较小、或优先级相同而MAC地址较小,则发送者迁移到接收者状态,且关闭查询定时器,用报文中的发送间隔更新设备的查询间隔参数,计算中断间隔参数,启动中断定时器,并清除主端口。
[0013] 优选的,当接收者接收到链路状态应答报文时迁移到发送者状态,关闭中断定时器、更新查询间隔参数、计算中断间隔参数、启动查询定时器、触发“保护设备因接收到链路状态应答报文迁移至发送者状态”事件发送到所有的端口、触发“发送链路状态查询报文”事件发送到所有的端口。
[0014] 优选的,一个处于关闭状态的端口接收到链路连接事件时迁移到阻塞状态,且启动该端口的中断定时器;若该端口位于发送者,则从该端口发送链路状态查询报文,若该端口位于接收者,则从该端口发送链路状态改变报文。
[0015] 优选的,一个处于阻塞状态的端口接收到端口中断定时器超时事件时,清除映射端口索引号,迁移到转发状态;
[0016] 一个处于转发状态的端口接收到端口中断定时器超时事件时,清除映射端口索引号,且当该端口位于发送者时,若该端口为主端口,则清除主端口并选择新的主端口,且将新的主端口设置为转发状态。
[0017] 优选的,一个处于阻塞状态的端口接收到链路状态查询报文时,当该端口位于接收者且该链路状态查询报文记录的发送端口是阻塞状态或该链路状态查询报文的发送端口是主端口,则将接收者的该端口迁移到转发状态,设置映射端口索引号,重新启动端口中断定时器,且从该端口发送链路状态应答报文;当该端口位于发送者时则从该端口发送链路状态查询报文;
[0018] 一个处于转发状态的端口接收到链路状态查询报文时,若该端口位于接收者,且该链路状态查询报文中发送端口的状态是转发状态且发送端口不是主端口,则将该端口迁移到阻塞状态,设置映射端口索引号并重新启动端口中断定时器,从该端口发送链路状态应答报文;若该端口位于发送者,如果该端口不是主端口则迁移到阻塞状态,重新启动端口中断定时器,从该端口发送链路状态查询报文。
[0019] 优选的,当发送者的一个处于阻塞状态的端口接收到链路状态应答报文时,设置映射端口索引号,重新启动端口中断定时器,如果该发送者尚无主端口则将接收到链路状态应答报文的端口设置为主端口并迁移到转发状态,如果链路状态应答报文中发送端口的STP状态是阻塞状态,则从接收到链路状态应答报文的端口发送链路状态查询报文;
[0020] 当发送者的一个处于转发状态的端口接收到链路状态应答报文时,设置映射端口索引号,重新启动端口中断定时器,如果发送者尚未有主端口则将接收到链路状态应答报文的端口设置为主端口,如果接收到链路状态应答报文的端口不是主端口则将该端口迁移到阻塞状态,如果链路状态应答报文中发送端口的STP状态是阻塞状态,则从接收到链路状态应答报文的端口发送链路状态查询报文。
[0021] 优选的,当发送者的一个处于阻塞状态或转发状态的端口接收到链路状态改变报文时,设置链路状态改变报文中的发送端口为映射端口,重新启动端口中断定时器;
[0022] 如果链路状态改变报文中链路状态发生改变的变化端口的链路状态是断开状态,则从端口映射表中查找变化端口对应的本地端口,如果存在本地端口,则处理该本地端口:如果该本地端口的STP状态是阻塞状态则迁移到转发状态,清除该本地端口的映射端口索引号,关闭该本地端口中断定时器;如果该本地端口是主端口则清除主端口,接收到链路状态改变报文的端口成为主端口,若该端口处于阻塞状态则迁移到转发状态;
[0023] 如果链路状态改变报文中链路状态发生改变的变化端口的链路状态是连通状态,则在无主端口的情况下接收到链路状态改变报文的本地端口成为主端口,若该本地端口处于阻塞状态则迁移到转发状态,若该本地端口处于转发状态且未设置为主端口则迁移到阻塞状态,并从该本地端口发送链路状态查询报文。
[0024] 优选的,所述报文封装在MAC帧内,其至少包括:
[0025] 版本域;分别表示链路状态查询报文、链路状态应答报文和链路状态改变报文三种报文类型的报文类型域;设备优先级域;查询报文发送间隔域;为主端口的索引号的主端口域;表示发送报文的端口索引号的发送端口域;表示链路状态发生改变的端口索引号的变化端口域;表示变化端口的链路状态为连通状态或断开状态的端口链路状态域;分别表示变化端口的STP状态为关闭状态、阻塞状态或转发状态的端口STP状态域。
[0026] 与现有技术相比,本发明具有如下有益效果:
[0027] 本发明无需增加二层交换设备负担,二层交换设备无需升级,环路计算由核心三层交换设备完成,在三层交换设备端口实现阻塞,切断环路,可有效解决目前VRRP拓扑中的环路问题,实现环路检测与保护。

附图说明

[0028] 图1是本发明的原理结构示意图;
[0029] 图2A、图2B和图2C分别为VRRP网络中环路的链路示意图;
[0030] 图3是本发明的报文交互过程示意图;
[0031] 图4是保护设备的状态迁移示意图;
[0032] 图5是保护端口的状态迁移示意图。

具体实施方式

[0033] 为便于理解,先对二层交换设备和三层交换设备分别作简单介绍。
[0034] 简单的说,按照网络OSI的7层参考模型,数据链路层为第二层,而网络层为第三层。如果交换设备在进行数据包交换(将数据包从一个端口转移到另外一个端口)时根据的是数据链路层信息那么就是二层交换设备,如果根据的是网络层信息那么就是三层交换设备。
[0035] 因此,三层交换是相对于传统交换概念而提出的。三层交换技术是在网络模型中的第三层实现了数据包的高速转发。简单地说,三层交换技术就是:二层交换技术+三层转发技术。应用第三层交换技术即可实现网络路由的功能,又可根据不同的网络状况做到最优的网络性能。
[0036] 目前的传送网络分为3层结构:核心层、汇聚层、接入层。通常将网络中直接面向用户连接或访问网络的部分称为接入层,接入层目的是允许终端用户连接到网络,因此接入层设备具有低成本和高端口密度特性;将位于接入层和核心层之间的部分称为分布层或汇聚层,汇聚层是多台接入层设备的汇聚点,必须能够处理来自接入层设备的所有通信量,并提供到核心层的上行链路,因此汇聚层设备与接入层设备比较,需要更高的性能,更少的接口和更高的交换速率,且在规模较小的网络中,汇聚层与接入层合并使用二层交换设备接入用户;将网络主干部分称为核心层,核心层的主要目的在于通过高速转发通信,提供优化、可靠的骨干传输结构,因此核心层设备采用三层交换设备以拥有更高的可靠性和吞吐量。
[0037] 在核心层通常会采取备份核心层设备的方案,例如在VRRP协议应用中,两台核心层设备组成一个备份组,用于冗余保护,并作为一台虚拟网关提供给用户,用户无需知道到底是哪一台核心层设备在担任实际的数据转发任务,用户只需要指定虚拟网关的IP即可访问外部网络。如图1所示,为一个最简单的传送网络的结构示意图。多个二层交换设备位于接入层直接面向用户提供连接或访问网络的接入;两个位于核心层的三层交换设备来实现备份,两台三层交换设备作为一台虚拟网关向用户提供访问外部网络的服务。
[0038] 这样,在三层交换设备与二层交换设备的物理链路中必然存在多条冗余链路,形成三层交换设备与二层交换设备之间的环路(从一台三层交换设备发出的报文经过二层交换设备又回到该三层交换设备)。如图2A、图2B和图2C所示,以一个VLAN中具有三台二层交换设备和两台三层交换设备为例,则三层交换设备与二层交换设备之间存在3个环路:由三层交换设备1依次经过二层交换设备1、三层交换设备2、二层交换设备3、三层交换设备1的物理链路;由三层交换设备1依次经过二层交换设备2、三层交换设备2、二层交换设备3、三层交换设备1的物理链路;由三层交换设备1依次经过二层交换设备1、三层交换设备2、二层交换设备2、三层交换设备1的物理链路。在实际环境中,备份是必要的,冗余保护也是物理链路的必须,但是同时也必须采取既定方法来阻塞环路,以保证三层交换设备与二层交换设备之间实现单一的数据流的物理链路来维持正常工作。
[0039] 因此,本发明的目的是如何在VRRP的网络中检测并保护环路。解决本发明技术问题的思路如下:在配置VRRP的网络环境中,二层交换设备仅透传交互报文,无需参与环路计算;环路计算由核心的三层交换设备完成,在三层交换设备端口实现阻塞,切断环路。
[0040] 为便于描述,本发明提出以下几个概念:
[0041] 保护设备:在一个或多个VLAN上运行本协议,参与该协议报文交互的三层交换设备。
[0042] 保护端口:在VLAN上参与该协议报文交互的三层交换设备的端口。
[0043] 发送者:保护设备的两种状态之一,在该状态的设备会定时主动发送协议报文;处于发送者状态的三层交换设备即为发送者;接收者从接收者状态迁移到发送者状态时即为发送者。
[0044] 接收者:保护设备的两种状态之一,在该状态的设备不会主动发送协议报文,但是当设备检测到端口的链路状态变化时会主动发送协议报文;处于接收者状态的三层交换设备即为接收者;发送者从发送者状态迁移到接收者状态时即为接收者。
[0045] 主端口:处于发送者状态的保护设备才有主端口,主端口是保护端口,一个发送者最多有一个主端口。
[0046] 端口映射表:记录发送者与接收者的保护端口之间的映射关系,发送者与接收者都各自保存一个端口映射表,端口映射关系即一对发送者保护端口与接收者保护端口之间进行协议报文交互。
[0047] 需要特别说明的是,本发明在无特别说明的情况下,文中所提及的“端口”实际上均是“保护端口”,故下文某些描述中将“保护端口”简称为“端口”。
[0048] 结合图3所示。二层交换设备就相当于一条直连的链路,它只是保证与它相连的两台三层交换设备的端口是连通(LINK UP)的,协议的报文经过二层交换设备时,因为二层交换设备不会解析该协议报文,故不会经过任何处理,协议报文到达对端的三层交换设备时才会被解析处理。因此,二层交换设备仅仅透传两台三层交换设备之间的协议报文,而无须参与环路计算,环路计算与环路阻塞均由三层交换设备实现。
[0049] 本发明的工作原理如下:在VLAN上配置保护设备,并配置相关端口为保护端口。启动时,保护设备从所有的连通(LINK UP)保护端口发送协议报文,与对端的保护设备进行报文交互,两个保护设备进行设备状态选举,从而一个保护设备保持发送者状态,另一个保护设备迁移到接收者状态;发送者主动发送协议报文,接收者应答协议报文;如果接收者的保护端口的链路状态改变,则发送协议报文通知发送者进行保护端口状态切换。
[0050] 其中,保护设备按如下方式进行状态选举:保护设备必然是发送者与接收者两种状态之一,非此即彼;且只允许一台保护设备是接收者状态,如果网络中已经存在一个接收者,则新进入的保护设备的状态迁移为发送者;如果两台保护设备同时启动,通过报文交互进行选举,优先级高的成为接收者,若优先级相同,则MAC地址大的成为接收者,另一台保护设备成为发送者。
[0051] 另外,保护端口的状态规则如下:保护设备是发送者状态时,约定其保护端口中必有一个成为主端口,一台保护设备最多有一个主端口,主端口总是处于转发(FORWARDING)状态;当主端口失效时,发送者必须立即选举出新的主端口。
[0052] 保护端口有两种状态:一种是链路状态,一种是STP(Spanning Tree Protocol,生成树协议,由IEEE Std 802.1D-1998定义)状态。链路状态有两个,分别为连通(LINK UP)与断开(LINK DOWN);STP状态包括:阻塞(BLOCKING)状态、转发(FORWARDING)状态和关闭(DISABLED)状态。其中,链路状态为链路实际的连通、断开状态;而STP状态为实际链路经过环路计算后,把冗余链路进行阻塞后的状态。即,一个链路状态为连通状态的保护端口经过环路计算后,其STP状态可能会被置为阻塞状态,因而无法转发数据。
[0053] 对于是发送者状态的保护设备而言,主端口的STP状态为转发(FORWARDING)状态,对于连通(LINK UP)状态的保护端口,如果存在映射端口,则该保护端口的STP状态为阻塞(BLOCKING)状态,若无映射端口则STP状态为转发(FORWARDING)状态;对于断开(LINK DOWN)状态的保护端口的STP状态为关闭(DISABLED)状态。
[0054] 对于是接收者状态的保护设备而言,链路状态为连通(LINK UP)状态的保护端口,其STP状态为转发(FORWARDING)状态;链路状态为断开(LINK DOWN)状态的保护端口,其STP状态为关闭(DISABLED)状态。
[0055] 另外,前述提到的协议报文封装在MAC帧内,且协议报文包含以下域:
[0056] 1、版本域:1个字节。
[0057] 2、报文类型域:1个字节,有三种报文类型:链路状态查询报文、链路状态应答报文、链路状态改变报文。
[0058] 3、设备优先级域:1个字节,管理员配置的保护设备的优先级。
[0059] 4、查询报文发送间隔域;1个字节,管理员配置的发送者周期发送链路状态查询报文的时间间隔。
[0060] 5、主端口域:2个字节,主端口的索引号。
[0061] 6、发送端口域:2个字节,发送该报文的端口的索引号。
[0062] 7、变化端口域:2个字节,链路状态改变报文中链路状态发生改变的端口索引号;在链路状态查询报文与链路状态应答报文中,变化端口域与发送端口域保持一致。
[0063] 8、端口链路状态域:1个字节,变化端口当前的链路状态(在链路状态改变报文中为变化端口当前的链路状态;在链路状态查询报文和链路状态应答报文中为发送端口当前的链路状态),有两个值,分别表示该端口的链路状态为连通状态或断开状态。
[0064] 9、端口STP状态域:1个字节,变化端口当前的STP状态(在链路状态改变报文中为变化端口当前的STP状态;在链路状态查询报文和链路状态应答报文中为发送端口当前的STP状态),有三个值,分别表示该端口的STP状态为关闭状态、阻塞状态或转发状态。
[0065] 如图4所示,保护设备有三个状态,分别是“初始”状态、“发送者”状态、“接收者”状态。保护设备定义的参数包括:设备状态、设备优先级、主端口、查询定时器、中断定时器、查询间隔、中断间隔。保护设备状态迁移的触发事件包括:“设备启动”事件;“设备关闭”事件;“查询定时器超时”事件;“中断定时器超时”事件;“链路状态查询报文”事件;“链路状态应答报文”事件。
[0066] 如图5所示,保护端口有三个STP状态,分别是“关闭”(DISABLED)状态、“阻塞”(BLOCKING)状态、“转发”(FORWARDING)状态。保护端口定义的参数包括:端口索引号、端口链路状态、端口STP状态、映射端口索引号、中断定时器。保护端口状态迁移的触发事件包括:“链路连接(LINK UP)”事件;“链路断开(LINK DOWN)”事件;“端口中断定时器超时”事件;“链路状态查询报文”事件;“链路状态应答报文”事件;“链路状态改变报文”事件;“发送链路状态查询报文”事件;“保护设备迁移至初始状态”事件;“保护设备从初始状态迁移至发送者状态”事件;“保护设备因中断定时器超时迁移至发送者状态”事件;“保护设备因接收到链路状态应答报文迁移至发送者状态”事件。
[0067] 保护设备接收到触发事件的处理过程如下:
[0068] 1.1、保护设备处于“初始”状态只能接收“设备启动”事件。
[0069] 1.1.1、当保护设备接收到“设备启动”事件时,迁移至“发送者”状态。保护设备更新查询间隔参数;计算中断间隔参数;启动查询定时器;触发“保护设备从初始状态迁移至发送者状态”事件,发送到所有的保护端口;触发“发送链路状态查询报文”事件,发送到所有的保护端口。
[0070] 1.2、保护设备处于“发送者”状态可以接收“设备关闭”事件、“查询定时器超时”事件、“链路状态查询报文”事件。
[0071] 1.2.1、当保护设备接收到“设备关闭”事件时,关闭查询定时器;清除主端口;触发“保护设备迁移至初始状态”事件,发送到所有的保护端口。然后保护设备迁移至初始状态。
[0072] 1.2.2、当保护设备接收到“查询定时器超时”事件时,更新查询间隔参数;计算中断间隔参数;重新启动查询定时器;触发“发送链路状态查询报文”事件,发送到所有的保护端口。保护设备并不迁移状态。
[0073] 1.2.3、当保护设备接收到“链路状态查询报文”事件时,根据协议报文中的对端保护设备优先级及MAC地址进行比较,若对端保护设备的优先级小于自己,或者优先级相同而MAC地址小于自己则迁移至接收者状态。保护设备关闭查询定时器;用报文中发送间隔更新保护设备查询间隔参数;计算中断间隔参数;启动中断定时器;清除主端口。
[0074] 1.3、保护设备处于“接收者”状态可以接收“设备关闭”事件、“中断定时器超时”事件、“链路状态查询报文”事件、“链路状态应答报文”事件。
[0075] 1.3.1、当保护设备接收到“设备关闭”事件时,关闭中断定时器;触发“保护设备迁移至初始状态”事件,发送到所有的保护端口。然后保护设备迁移至初始状态。
[0076] 1.3.2、当保护设备接收到“中断定时器超时”事件时,迁移至发送者状态。保护设备更新查询间隔参数;计算中断间隔参数;启动查询定时器;触发“保护设备因中断定时器超时迁移至发送者状态”事件,发送到所有的保护端口;触发“发送链路状态查询报文”事件,发送到所有的保护端口。
[0077] 1.3.3、当保护设备接收到“链路状态查询报文”事件时,用报文中发送间隔更新保护设备查询间隔参数;计算中断间隔参数;重新启动中断定时器。保护设备并不迁移状态。
[0078] 1.3.4、当保护设备接收到“链路状态应答报文”事件时,迁移至发送者状态。保护设备关闭中断定时器;更新查询间隔参数;计算中断间隔参数;启动查询定时器;触发“保护设备因接收到链路状态应答报文迁移至发送者状态”事件,发送到所有的保护端口;触发“发送链路状态查询报文”事件,发送到所有的保护端口。
[0079] 保护端口接收到触发事件的处理过程如下:
[0080] 2.1、保护端口处于“关闭”状态只能接收“链路连接(LINK UP)”事件。
[0081] 2.1.1、当保护端口接收到“链路连接(LINK UP)”事件时,迁移至阻塞状态。当保护设备是发送者或者接收者,启动端口中断定时器;当保护设备是发送者时,从本端口发送链路状态查询报文;当保护设备是接收者时,从本端口发送链路状态改变报文。
[0082] 2.2、保护端口处于“阻塞”状态,除“链路连接(LINK UP)”事件,可以接收其他所有保护端口的触发事件。
[0083] 2.2.1、当保护端口接收到“链路断开(LINK DOWN)”事件时,迁移至关闭状态。清除映射端口索引号;关闭端口中断定时器;如果保护设备是接收者,则从另一个与对端有映射关系的保护端口发送链路状态改变报文。
[0084] 2.2.2、当保护端口接收到“端口中断定时器超时”事件时,清除映射端口索引号,迁移至转发状态。
[0085] 2.2.3、当保护端口接收到“链路状态查询报文”事件时,如果保护设备是接收者,若链路状态查询报文中发送端口的STP状态是阻塞状态则本保护端口迁移至转发状态,若链路状态查询报文中发送端口是主端口则本保护端口迁移至转发状态;设置映射端口索引号;重新启动端口中断定时器;从本端口发送链路状态应答报文。如果保护设备是发送者,则从本端口发送链路状态查询报文。
[0086] 2.2.4、当保护端口接收到“链路状态应答报文”事件时,只有当保护设备是发送者时进行处理。设置映射端口索引号;重新启动端口中断定时器;如果保护设备尚无主端口则本保护端口成为主端口并迁移至转发状态;如果链路状态应答报文中发送端口的STP状态是阻塞状态,则从本端口发送链路状态查询报文。
[0087] 2.2.5、当保护端口接收到“链路状态改变报文”事件时,只有当保护设备是发送者时进行处理。设置链路状态改变报文中发送端口为映射端口;重新启动本保护端口中断定时器;如果报文中变化端口的链路状态是断开状态,则查找映射表中变化端口对应的本地保护端口,如果存在这个对应的本地保护端口,则处理该端口。如果该本地保护端口的STP状态是阻塞状态则迁移至转发状态;清除该本地保护端口的映射端口索引号;关闭该本地保护端口中断定时器;如果该本地保护端口是主端口则清除主端口,接收到链路状态改变报文的端口成为主端口,且该端口迁移至转发状态。如报文中变化端口的链路状态是连通的,则在无主端口的情况下本端口成为主端口且迁移至转发状态;并从本端口发送链路状态查询报文。
[0088] 2.2.6、当保护端口接收到“发送链路状态查询报文”事件时,只有当保护设备是发送者时,从本端口发送链路状态查询报文。
[0089] 2.2.7、当保护端口接收到“保护设备迁移至初始状态”事件时,清除映射端口索引号;关闭端口中断定时器。保护端口并不迁移状态。
[0090] 2.2.8、当保护端口接收到“保护设备从初始状态迁移至发送者状态”事件时,只有当保护设备是发送者时进行处理:清除映射端口索引号、启动端口中断定时器。保护端口并不迁移状态。
[0091] 2.2.9、当保护端口接收到“保护设备因中断定时器超时迁移至发送者状态”事件时,只有当保护设备是发送者时进行处理:清除映射端口索引号、关闭端口中断定时器。且保护端口迁移至转发状态。
[0092] 2.2.10、当保护端口接收到“保护设备因接收到链路状态应答报文迁移至发送者状态”事件时,只有当保护设备是发送者时进行处理:清除映射端口索引号、重新启动端口中断定时器。保护端口并不迁移状态。
[0093] 2.3、保护端口处于“转发”状态,除“链路连接(LINK UP)”事件,可以接收其他所有保护端口的触发事件。
[0094] 2.3.1、当保护端口接收到“链路断开(LINK DOWN)”事件时,迁移至关闭状态。清除映射端口索引号;关闭端口中断定时器;如果保护设备是发送者且本保护端口是主端口则清除主端口并选择新的主端口,如果新的主端口的STP状态是阻塞状态则新的主端口迁移至转发状态;如果保护设备是接收者,则从另一个与对端有映射关系的保护端口发送链路状态改变报文。
[0095] 2.3.2、当保护端口接收到“端口中断定时器超时”事件时,清除映射端口索引号;如果保护设备是发送者且本保护端口是主端口则清除主端口并选择新的主端口,如果新的主端口的STP状态是阻塞状态则新的主端口迁移至转发状态。
[0096] 2.3.3、当保护端口接收到“链路状态查询报文”事件时,如果保护设备是接收者,若链路状态查询报文中发送端口的STP状态是转发状态且发送端口不是主端口,则本保护端口迁移至阻塞状态;设置映射端口索引号;重新启动端口中断定时器;从本端口发送链路状态应答报文。如果保护设备是发送者,若本保护端口不是主端口,则本保护端口迁移至阻塞状态;重新启动端口中断定时器,从本端口发送链路状态查询报文。
[0097] 2.3.4、当保护端口接收到“链路状态应答报文”事件时,只有当保护设备是发送者时进行处理。设置映射端口索引号;重新启动端口中断定时器;如果保护设备尚无主端口则本保护端口成为主端口,如果本保护端口不是主端口则迁移至阻塞状态;如果链路状态应答报文中发送端口的STP状态是阻塞状态,则从本端口发送链路状态查询报文。
[0098] 2.3.5、当保护端口接收到“链路状态改变报文”事件时,只有当保护设备是发送者时进行处理。设置链路状态改变报文中发送端口为映射端口;重新启动本保护端口中断定时器;如果报文中变化端口的链路状态是断开状态,则查找映射表中变化端口对应的本地保护端口,如果存在这个对应的本地保护端口,则处理该端口。如果该本地保护端口的STP状态是阻塞状态则迁移至转发状态;清除该本地保护端口的映射端口索引号;关闭该本地保护端口中断定时器;如果该本地保护端口是主端口则清除主端口,接收到链路状态改变报文的端口成为主端口。如果报文中变化端口的链路状态是连通状态,则在无主端口的情况下本端口成为主端口;如果本端口未成为主端口则迁移至阻塞状态;从本端口发送链路状态查询报文。
[0099] 2.3.6、当保护端口接收到“发送链路状态查询报文”事件时,只有当保护设备是发送者时,从本端口发送链路状态查询报文。
[0100] 2.3.7、当保护端口接收到“保护设备迁移至初始状态”事件时,清除映射端口索引号;关闭端口中断定时器。保护端口迁移至阻塞状态。
[0101] 2.3.8、当保护端口接收到“保护设备从初始状态迁移至发送者状态”事件时,只有当保护设备是发送者时进行处理:清除映射端口索引号、重新启动端口中断定时器。保护端口迁移至阻塞状态。
[0102] 2.3.9、当保护端口接收到“保护设备因中断定时器超时迁移至发送者状态”事件时,只有当保护设备是发送者时进行处理:清除映射端口索引号、关闭端口中断定时器。保护端口并不迁移状态。
[0103] 2.3.10、当保护端口接收到“保护设备因接收到链路状态应答报文迁移至发送者状态”事件时,只有当保护设备是发送者时进行处理:清除映射端口索引号、重新启动端口中断定时器。保护端口迁移至阻塞状态。