一种处理生成树协议报文的方法和交换机的制作方法

文档序号:7656014阅读:189来源:国知局
专利名称:一种处理生成树协议报文的方法和交换机的制作方法
技术领域
本发明涉及二层交换网络通信技术,特别是涉及一种处理生成树协议报 文的方法和交换:才几。
背景技术
二层网络中交换机并不能像路由器 一样明确数据报文可以经过多少次 转发, 一旦网络存在环路,就会造成数据报文在环路内不断循环和增生而产 生广播风暴。在这种情况下,生成树协议便应运而生了。
生成树协议是二层管理协议,从广义上包括普通的生成树协议(STP, Spanning Tree Protocol)、快速生成树协议(RSTP, Rapid Spanning Tree Protocol)以及多生成树协议(MSTP, Multiple Spanning Tree Protocol)等。
对某些端口进行阻塞以消除环路,最终将环路网络修剪成无环路的树型网 络,从而避免数据报文在环路网络中不断增生和无限循环。
将环路网络修剪成无环路的树型网络的过程其实就是选举生成树的根、 确定设备各端口角色以及端口状态等过程。具体地说,环路网络中的所有交 换机先将自身作为生成树的根向与自身连接的其它交换机发送生成树协议 报文,并在接收到其它交换机发送的生成树协议报文时,按照生成树协议对 报文进行处理,即端口角色选择、端口角色迁移以及端口状态迁移等。这 里所述生成树的根可以指STP或RSTP生成树的根,也可以指MSTP域内生 成树的域根,根和域根通常也称为根桥,是全网或域内优先级最高的设备, 而其他设备则称为非根桥。所述端口可以分为根端口、指定端口、备选端口 等角色,其中,根端口是离生成树的根最近的端口,负责与根进行通讯;指
定端口是负责向自身下游设备发送报文的端口;而备选端口则可以作为根端
口的备用端口。各种端口还可以按照生成树协议的规定具有不同的状态,如 阻塞状态、学习状态、转发状态等。当然,从环路网络到无环路的树型网络 可能会经过较长的时间,生成树的根、设备端口角色以及端口状态等可能会
反复变化,直到网络稳定。比如设备A的端口 1原来处于转发状态,如 果设备A在接收到某个报文后确定应该将该端口 l设定为备选端口,则可 以将端口 1从转发状态迁移到阻塞状态。此后,如果在接收到另外一个报文 后确定应该将端口 l设定为指定端口,则在协议允许的情况下,又可以将端 口 1从阻塞状态迁移到转发状态。总之,生成树协议处理报文的情况比较复 杂,具体如何通过交互选举生成树的冲艮,如何确定各个端口的角色,如何进 行端口状态迁移等情况可以参见现有的生成树协议,此处不再赘述。
生成树构造完成之后,根端口和指定端口处于转发状态,备选端口处于 阻塞状态,数据报文就可以沿着生成树,即通过处于转发状态的根端口和指 定端口逐级进行转发。但如果生成树的根发生了切换,就需要重新构造生成 树,并使数据报文沿着新的生成树进行转发。
在重新构造生成树的过程中,由于STP规定了指定的根端口和指定端 口需要经过一定的延时之后才能进入转发状态,通常不会引起环路。而RSTP 和MSTP可以对端口状态进行快速迁移,所以在重新构造生成树的过程中, 就有可能将阻塞状态的端口直接迁移成转发状态,从而形成环路,引起瞬间 的广播风暴。
下面以MSTP为例说明在重新构造生成树的过程中形成环路的现象 图1是重新构造之前MSTP域内生成树的示意图。如图1所示,该域包 括Al、 A2和A3共三个交换机,Al的默认优先级最高,A2的默认优先级 次之,A3的默认优先级最低。在构造生成树时,假设将默认优先级最低的 A3配置为域根。生成树构造完之后,假设PA31、 PA32、 PA11为指定端口, 处于转发状态;PA12、 PA22为根端口,也处于转发状态;PA21为备选端 口,处于阻塞状态。也就是说,利用MSTP协议将生成树构造完之后,由于交换机A2的备选端口处于阻塞状态,不允许转发数据报文,从而将这个环
路网络修剪成了一个无环网络。
此后,如果取消A3作为域根的配置,恢复A3的默认优先级,A3将通 过端口 PA31向Al发送携带默认优先级信息的MSTP报文,通过端口 PA32 向A2发送携带默认优先级信息的MSTP报文,Al和A2可以从接收到的 MSTP报文中确定A3的优先级不再是网络中最高的优先级,不应该继续作 为域根,从而引发生成树的重新构造过程。
图2是重新构造之后MSTP域内生成树的示意图。如图2所示,生成树 重新构造完成之后,优先级最高的Al为生成树的域根,PAll、 PA12、 PA22 为指定端口 ,处于转发状态;PA21、 PA31为才艮端口 ,也处于转发状态;PA32 为备选端口,处于阻塞状态。也就是说,利用MSTP协议将生成树重新构造 完之后,由于交换机A3的备选端口处于阻塞状态,不允许转发报文,也可 以将这个环路网络重新修剪为 一个无环网络。
但是在从图1所示生成树重新构造成图2所示生成树的过程中,如果按 照MSTP协议处理报文,则可能会有环路现象的产生,其具体过程可以为
Al从端口 PA12接收到来自A3的MSTP报文后,按照MSTP协议对报 文进行处理,由于Al的优先级高于A3的优先级,那么Al确定自身的端口 PA11和PA12为指定端口 ,都保持转发状态,并通过端口 PA11向A2发送 携带自身优先级信息的MSTP报文,通过端口 PA12向A3发送携带自身优 先级信息的MSTP报文;A2先从端口 PA22接收到来自A3的MSTP报文, 按照MSTP协议对报文进行处理,由于A2的优先级高于A3的优先级,A2 确定PA21和PA22为指定端口 , PA22保持转发状态,PA21保持阻塞状态, 并通过端口 PA21向Al发送携带自身优先级信息的MSTP报文,通过端口 PA22向A3发送携带自身优先级信息的MSTP报文;A2又从端口 PA21接 收到来自Al的MSTP报文,按照MSTP协议对净艮文进行处理,由于A2的 优先级低于Al的优先级,A2确定PA21为根端口 , PA22为指定端口 , PA21 从阻塞状态直接迁移到转发状态,而PA22仍然保持转发状态不变。至此,
由于A2将端口 PA21从阻塞状态直接迁移到转发状态时,A3的端口 PA32 还没有确定为备选端口,并仍然保持转发状态,从而导致环路的产生。此后, 直到A3将端口 PA32确定为备选端口并迁移为阻塞状态时才能消除环路。
也就是说,如果按照现有的生成树协议对报文进行处理,在生成树的根 发生变化需要重新构成生成树时,就可能由于端口状态的快速迁移而导致环 路的产生,引起瞬间的广播风暴。

发明内容
本发明的第一个目的在于提供处理生成树协议报文的方法,可以在生成 树的根发生切换的情况下阻塞端口 ,从而可以在重新构造生成树的过程中避 免环路的产生。
本发明的第二个目的在于提供处理生成树协议报文的交换机,可以在生 成树的根发生切换的情况下阻塞端口 ,从而可以在重新构造生成树的过程中 避免环路的产生。
为了达到上述第一个发明目的,本发明提出的技术方案为 一种处理生成树协议报文的方法,该方法包括
按照生成树协议对接收到的生成树协议报文进行处理,在处理过程中检测 生成树的根是否发生切换,如果发生切换,则将端口进行阻塞;否则,继续按 照生成树协议进行处理。
上述方案中,所述在处理过程中^f全测生成树的是否发生切换,并在发生切 换时将端口进行阻塞的方法为
在处理过程中获得生成树原有的根标识信息和新的根标识信息,并在端口 角色迁移之前根据原有的根标识信息和新的根标识信息判断生成树的根是否发 生了切换,如果发生了切换,则i殳置端口需要阻塞的指示信息,并在端口角色 迁移和后续处理过程中根据端口需要阻塞的指示信息将端口进行阻塞。
上述方案中,在判断出生成树的根发生了切换时,该方法进一步包括 处理生成树协议报文的交换机根据新的根标识信息和自身标识判断自身是
否为生成树新的根,如果是,则执行所述设置端口需要阻塞的指示信息的步骤;
否则,执行所述继续按照生成树协议进行处理的步骤。
上述方案中,在判断出生成树的根发生了切换时,该方法进一步包括 处理生成树协议报文的交换机根据原有的根标识信息和自身标识判断自身
是否为生成树原有的根,如果是,则执行所述设置端口需要阻塞的指示信息的
步骤;否则,执行所述继续按照生成树协议进行处理的步骤。
上述方案中,所述端口为指定端口,所述端口需要阻塞的指示信息为指示
指定端口需要同步的信息。
上述方案中,所述设置指示指定端口需要同步的信息的步骤包括 将指定端口的同步sync标志置位,将指定端口的已同步synced标志复位。 上述方案中,所述后续处理过程为端口状态迁移过程,所述在端口角色迁
移和后续处理过程中根据指示指定端口需要阻塞的信息将指定端口进行阻塞的
步骤包括
根据生成树协议对端口角色进行迁移,并在对端口角色进行迁移的过程中, 根据sync标志和synced标志生成指示状态迁移的信息;在端口状态迁移过程 中再4艮据指示状态迁移的信息将指定端口的状态迁移为阻塞状态。
上述方案中,所述对端口角色进行迁移的方法为利用符合生成树协议的 端口角色迁移状态才几PRT对端口角色进4亍迁移;
所述对端口状态进行迁移的方法为利用符合生成树协议的端口状态迁移 状态机PST对端口状态进行迁移。
上述方案中,所述生成树协议报文为快速生成树协议RSTP报文,所述生 成树的根为RSTP的根;或者,
所述生成树协议报文为多生成树协议MSTP报文,所述生成树的根为MSTP 域根。
为了达到上述第二个发明目的,本发明提出的技术方案为 一种处理生成树协议报文的交换机,该交换机包括
生成树协议处理模块,用于按照生成树协议对接收到的生成树协议报文进
行处理;将在处理过程中获得的生成树原有的根标识信息和新的根标识信息传 输给根切换判别模块;还用于在端口角色迁移和后续过程中根据设置的端口需 要阻塞的指示信息将端口进行阻塞;
根切换判别模块,用于根据原有的根标识信息和新的根标识信息判断生成 树的根是否发生了切换,如果发生了切换,则将通知消息发送出去;
信息设置模块,用于在接收到通知消息时在生成树协议处理模块中设置端 口需要阻塞的指示信息。
上述方案中,,所述信息设置模块为同步信息设置模块,所述端口需要阻塞 的指示信息为同步信息设置模块设置的指示指定端口需要同步的信息。
上述方案中,,该交换机进一步包括
第一判别模块,用于在接收到通知消息时,根据新的根标识信息和交换机 自身标识判断交换机自身是否为生成树新的根,如果是,则将通知消息发送给 同步信息设置模块。
上述方案中,,该交换机进一步包括
第二判别模块,用于在接收到通知消息时,根据原有的根标识信息和交换 机自身标识判断交换机自身是否为生成树原有的根,如果是,则将通知消息发 送给同步信息设置模块。
综上所述,本发明提出的一种处理生成树协议报文的方法和交换机,由 于在报文处理过程中可以获得生成树原有的根标识信息和新的根标识信息, 在端口角色迁移之前根据原有的根标识信息和新的根标识信息判断生成树 的根是否发生了切换,并在生成树的根发生了切换的情况下,将端口阻塞, 从而可以在重新构造生成树的过程中避免环路的产生。


图1是MSTP域内生成树重新构造之前的示意图; 图2是MSTP域内生成树重新构造之后的示意图; 图3是应用本发明方案的方法实施例的流程图4是应用本发明方案的交换机的内部基本结构示意图; 图5是应用本发明方案的交换机实施例 一 的基本结构示意图; 图6是应用本发明方案的交换机实施例二的基本结构示意图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体 实施例对本发明作进一步地详细描述。
在处理生成树协议报文的过程中,由于交换机在某个时刻将原来阻塞状 态的端口直接迁移为转发状态,使处于环路上的所有端口都同时处于转发状 态,从而导致环路的产生。那么,如果在导致环路产生的阻塞状态迁移为转 发状态之前,将任何一个交换机中处于环路的端口阻塞,就可以按照生成树 协议的规定,在此后构造生成树的过程中避免环路的产生。
为了更好地说明本发明方案,下面先分析将阻塞状态快速迁移为转发状 态而引起环路的情况。另外,为了描述方便,下述内容都将生成树协议报文 简称为报文。
交换机处理报文之前和处理报文之后有以下几种情况
一、 交换机在处理报文之前和处理报文之后都是非根桥。在这种情况下, 如果在处理报文的过程中需要将端口的阻塞状态迁移为转发状态,生成树协 议本身是可以保证不产生环路的。
二、 交换机处理报文之前是非根桥,而在处理报文之后成为根桥。在这 种情况下,处理完报文的交换机各个端口都应该为指定端口 ,那么,按照生 成树协议规定,不存在将阻塞状态直接迁移为转发状态而产生环路的情况。
三、 交换机处理报文之前是根桥,而在处理报文之后是非根桥。在这种 情况下,交换机需要将某个端口作为根端口,并直接迁移为转发状态。
四、 交换机处理报文之前和处理报文之后都是根桥。在这种情况下,处 理完报文的交换机各个端口都应该为指定端口 ,那么,按照生成树协议规定, 也不存在将阻塞状态直接迁移为转发状态而产生环路的情况。
从上述的分析可以看出,只有第三种情况才存在将端口状态直接迁移为 转发状态的情况。也就是说,如果交换机在处理报文之前是根桥,并且某端 口还处于阻塞状态,那么,处理完报文之后,如果将处于阻塞状态的端口作 为根端口,并直接迁移到转发状态,就可能产生环路。而具有阻塞状态端口 的交换机,在成为根桥之前必定为非根桥,否则,该交换机的所有端口都应 该是处于转发状态的指定端口,而不可能存在阻塞状态的端口。
也就是说,第三种情况中所述的交换机必定存在"非根桥一>根桥一> 非根桥"这样一个变化过程。如果在这个过程的端口状态迁移为转发状态之 前,将交换机任何一个处于环路的端口进行阻塞就可达到避免环路的目的。 具体地说,可以在"非根桥一>根桥"的过程中将端口阻塞,也可以在"根 桥一>非根桥"的过程中将端口阻塞。但不管是哪个过程,都需要交换机在 处理报文的过程中确定生成树的根发生了切换,才将端口进行阻塞。
另外,由于网络中所有交换机处理报文的方法是相同的,不属于第三种 情况的交换机如果也在确定生成树的根发生切换时阻塞其端口 ,同样可以达 到避免环路的目的。
需要注意的是,本发明所迷在确定生成树的根发生切换时阻塞端口并不
一定一直阻塞该端口。比如阻塞的是指定端口,按照生成树协议的规定,
生成树构造完之后的指定端口应该处于转发状态,所以,本发明中所述在生 成树的根发生切换时阻塞的端口还可能需要在后续被迁移为转发状态。但至 于被阻塞的端口是否应该被迁移,什么时候迁移为转发状态,以及如何迁移 为转发状态等情况则可以按照现有的生成树协议来实现。总之,只要在上述 第三种情况所述交换机将阻塞端口直接迁移为转发状态之前,将环路上任何 一个交换机的处于环路的端口阻塞,就可以在重新构造生成树的整个过程中 避免环路的产生。
按照以上的分析结果,本发明提出的技术方案可以为 按照生成树协议对接收到的生成树协议报文进行处理,在处理过程中检 测生成树的根是否发生切换,如果发生切换,则将端口进行阻塞;否则,继
续按照生成树协议进行处理。
实际应用中,可以在发现生成树的根发生切换时,直接阻塞端口,包括
根端口、指定端口等等;也可以先设置端口需要阻塞的指示信息,再根据端
口需要阻塞的指示信息将端口进行阻塞。
如果采用先设置端口需要的指示信息这种方法,那么,所述在处理过程 中检测生成树的是否发生切换,并在发生切换时将端口进行阻塞的方法可以

在处理过程中获得生成树原有的根标识信息和新的根标识信息,并在端 口角色迁移之前根据原有的根标识信息和新的根标识信息判断生成树的根 是否发生了切换,如果发生了切换,则设置端口需要阻塞的指示信息,并在 端口角色迁移和后续处理过程中根据端口需要阻塞的指示信息将端口进行 阻塞。
这里所述的根标识信息可以是根桥ID中的媒体接入控制(MAC )地址, 即指示由哪个交换机作为生成树的根。实际应用中,交换机在对报文进行处 理的过程中获得生成树原有的根标识信息和新的根标识信息的方法很多。比 如由于交换机在处理报文过程中端口角色选择时可能会切换生成树的根, 而交换机中设置的根优先级向量实时记录了生成树最新的根标识信息,所 以,交换机可以在进行端口角色选择之前从根优先级向量中获取原有的根标 识信息,在进行端口角色选择之后从根优先级向量中获取新的根标识信息。 又比如交换机根端口的配置消息中也记录了生成树最新的根标识信息,所 以,交换机可以在替换根端口优先级之前从根端口配置消息中获取原有的根
标识信息,在进行端口角色选择之后从根端口配置消息中获取新的根标识信 自
这样,当交换机在处理报文的过程中获取生成树原有的根标识信息和新 的根标识信息后,如果原有的根标识信息和新的根标识信息相同,则可以确 定生成树的根没有发生切换,如果原有的根标识信息和新的根标识信息不相 同,则可以确定生成树的根发生了切换。
确定生成树的根发生了切换后,交换机就可以将端口进行阻塞以达到避 免环路的目的。这里所述被阻塞的端口可以为交换机的指定端口 、根端口等 等,只要可以避免环路即可。
上述方案是交换机确定生成树的根发生切换的情况下将端口进行阻塞 的,以避免环路的产生。这样,即使生成树原有的根和新的根都不是处理报 文的交换机自身,处理报文的交换机也需要将自身端口进行阻塞。在这种情 况下,如果网络比较复杂,就可能有大量的交换机需要将自身端口进行阻塞。 如果阻塞的是指定端口等,按照生成树协议规定,被阻塞的指定端口应该在 网络允许的情况下迁移为转发状态。这就要求指定端口被阻塞的交换机不断 向自身下游交换机发送握手消息,直到下游交换机同意转发或超过30秒延 时后,该交换机才可能将指定端口从阻塞状态迁移为转发状态。也就是说, 如果交换机仅仅在确定生成树的根发生切换就将指定端口进行阻塞,容易在 网络中产生较多的握手消息,不但浪费网络资源,也会延緩重新构造生成树 的速度。
为了进一步节约网络资源,提高重新构造生成树的速度,本发明在上述
方案的基础上,还提出另外两种方案
一种是在判断出生成树的根发生了切换时,还根据新的根标识信息和交 换机自身标识判断自身是否为生成树新的根,如果是,则执行所述设置端口 需要阻塞的指示信息的步骤;否则,执行所述继续按照生成树协议进行处理 的步骤。
这里所述的交换机自身标识其实就是交换机的MAC地址,如果新的根 标识信息和交换机自身标识相同,则可以确定当前生成树的根就是交换机自 身。
另外一种是在判断出生成树的根发生了切换时,还根据原有的根标识信 息和交换机自身标识判断自身是否为生成树原有的根,如果是,则执行所述 设置端口需要阻塞的信息的步骤;否则,执行所述继续按照生成树协议进行 处理的步骤。
同样,这里所述的交换机自身标识也是指交换机的MAC地址,如果原 有的根标识信息和交换机自身标识相同,则可以确定生成树原来的根就是交 换机自身。
上迷两种方案比较相似,都是在确定交换机自身发生根切换时才将端口 阻塞。这样,网络中需要发送握手消息的交换机就将大大减少,从而进一步 节约网络资源,提高重新构造生成树的速度。
不管交换机采用上述哪种方案处理报文,如果需要阻塞的端口为指定端 口 ,所述端口需要阻塞的指示信息就可以是指示指定端口需要同步的信息。 按照生成树协议的规定,对指定端口进行阻塞之前,还可以设置指示指定端
口需要同步的信息,比如将指定端口的同步(sync)标志置位,同时将已 同步(synced)标志复位。这样,在端口角色迁移和后续处理过程中,就可 以才艮4居sync 标志和synced标志对指定端口进4于阻塞,具体方法就可以为
根据生成树协议对端口角色进行迁移,并在对端口角色进行迁移的过程 中,根振sync 标志和synced标志生成指示状态迁移的信息;端口状态迁移 过程根据指示状态迁移的信息将指定端口的状态迁移为阻塞状态。
实际应用中,交换机通常利用各种状态机实现对报文的处理,比如利 用端口角色选择状态机(PRS)实现端口角色选择,利用端口角色迁移状态 机(PRT)实现端口角色迁移,利用端口状态迁移状态机(PST)实现端口 状态迁移等等。各种状态机都是符合生成树协议规定的,其相互关系和实现 机制比较复杂,具体如何实现属于现有技术,此处不再赘述。
另外,本发明所述的生成树协议可以为快速生成树协议(RSTP ),所 述生成树的根可以为RSTP生成树的根;所述生成树协议也可以为多生成树 协议(MSTP),所述生成树的根可以为MSTP生成树的域根。
为了更好地说明本发明方案,下面用 一 个较佳实施例进行详细描述。
本实施例中,々i设生成树协议为MSTP协议,网络#1划分为多个域,每 一个域中可以独立构造生成树,生成树的根为域根,域内的每一个交换机都 可以按照MS TP协议处理所接收到的MSTP报文。图3是本实施例处理MSTP报文的流程图。如图3所示,本实施例包括 步骤301:交换机接收MSTP报文。
步骤302:根据MSTP协议判断是否需要处理所接收到的MSTP报文, 如果需要,则继续执行步骤303;否则,丢弃所接收到的MSTP报文,并退 出本流程。
实际应用中,根据MSTP协议判断是否需要处理MSTP报文的情况比 较多,比如当MSTP报文中携带的优先级比接收该报文端口的优先级高, 交换机就需要对接收到的MSTP报文进行处理。又比如当MSTP报文中携 带的优先级比接收该报文端口的优先级低,但MSTP报文中携带的指定桥 MAC地址等信息与接收该MSTP报文端口所记录的指定桥MAC地址等信 息相同,交换机也需要对接收到的MSTP报文进行处理。至于哪些报文需要 处理,哪些报文可以丢弃则可以按照MSTP协议进行确定,此处不再——列 举。
步骤303:从交换机的根优先级向量中获取生成树原有的根标识信息并 记录下来。
实际应用中,交换机中会设置一个根优先级向量,用于实时记录生成树 当前最新的域根相关信息,如根桥ID等。那么,交换机就可以将从根优先 级向量中获取的根桥ID中的MAC地址作为生成树原有的根标识信息。
步骤304:端口角色选择状态机PRS利用接收到的MSTP报文完成对交 换冲几各个端口角色的选择。
本步骤所述端口角色选择就是确定交换机中哪个端口作为根端口 ,哪些 端口作为指定端口,哪些端口作为备选端口等过程。当然,不同交换机中的
端口角色可能是不同的,比如如果交换机为根桥,所有端口都应该为指定 端口;如果交换机为非根桥,可以有一个根端口,其它端口都为指定端口。 总之,交换机中各个端口的角色可以利用PRS状态机实现,此处不再赘述。 另外,本实施例仅描述了交换机在端口角色选择后存在指定端口的情 况。实际应用中,如果不存在指定端口,处于环路的交换机必定存在处于阻
塞状态的备选端口等情况,那么,构造生成树的过程中也不会出现环路,直 接按照现有的生成树协议处理即可。
步骤305:从交换机根优先级向量中获取生成树新的根标识信息并记录下来。
执行步骤304之后,根优先级向量中的信息可能发生变化,记录的是生 成树当前最新的域根相关信息。那么,交换机就可以将从根优先级向量中获 取的根桥ID中的MAC地址作为生成树新的根标识信息。
步骤306:根据原有的根标识信息和新的根标识信息判断生成树的根是
否发生了切换,如果发生了切换,则执行步骤307;否则,执行步骤309。
本步骤中,判断生成树的根是否发生了切换就是判断原有的根标识信息 是否与新的根标识信息相同,如果相同,则确定没有发生切换;否则,可以
确定发生了切换。
步骤307:根据新的根标识信息和交换机自身标识判断交换机自身是否 为生成树新的根,如果是,则执行步骤308;否则,执行步骤309。
本步骤所述交换机自身标识是事先记录在交换机中的,即交换机的 MAC地址。如果新的根标识信息和交换机自身标识相同,就可以确定交换 机当前为生成树的根,即被切换成了根桥。
另外,本步骤是在判断出接收MSTP报文的交换机自身被切换为生成树 的根的情况下执行步骤308的。而实际应用中,也可以在判断出接收MSTP 报文的交换机自身为生成树原有的根的情况下执行步骤308。也就是说,本 步骤也可以替换为步骤30 ,即
根据原有的根标识信息和交换机自身标识判断自身是否为生成树原有 的根,如果是,则执行步骤308;否则,执行步骤309。
步骤308:将交换机自身指定端口的sync标志置位,将synced标志复位。
步骤309:利用PRT状态机对选择的端口角色进行迁移,并在迁移的过 程中,根据指定端口的sync 标志和synced标志生成指示状态迁移的信息。
实际应用中,当利用PRS状态机实现端口角色选择后,还需要利用PRT 状态机对选择好的端口角色进行迁移。比如交换机某个端口原来的角色是 备选端口,经过端口角色选择之后确定应该为根端口 ,那么,PRT状态机就 可以将作为备选端口迁移为才艮端口 。
同时,如果备选端口为阻塞状态,而根端口应该为转发状态,还需要利 用步骤310将端口的状态从阻塞状态迁移为转发状态。当然,端口角色和端 口状态之间并没有严格的对应关系,是否应该将一个状态迁移为另一个状态 还需要由PRT状态机确定,至于PRT状态机如何确定则属于现有技术,此 处不再赘述。
另外,按照MSTP协议规定,如果指定端口的sync标志置位,synced 标志复位,就需要将该指定端口迁移为阻塞状态。那么,在PRT状态机对 端口角色进行迁移的过程中,就可以生成指示状态迁移的信息,以便于后续 PST状态机将指定端口的状态迁移为阻塞状态。
步骤310: PST状态机利用指示状态迁移的信息将交换机自身的指定端 口迁移到阻塞状态。
本步骤中所述PST状态机是专门用于端口状态迁移的状态机。当然, 如果指定端口原来的状态就是阻塞状态,PST状态机也可以不执行状态迁移 的步骤。总之,不管PST如何处理,只要将指定端口的sync标志置位,synced 标志复位,交换机在处理完接收到的MSTP报文后,其指定端口就必定为阻 塞状态。
另外,本步骤仅描述了将指定端口迁移为阻塞状态,而实际应用,本步 骤还可以按照实际情况对其他端口的状态进行迁移。
不管是可导致环路的交换机执行本实施例方案,还是其它交换机执行本 实施例方案,都可以保证在某个可导致环路的端口直接迁移为转发状态时, 环路中必定有指定端口被设置为了阻塞状态。那么,只要环路中存在阻塞状 态的指定端口,如果按照MSTP协议的规定继续构造生成树,在构造生成树 完毕之前都不可能产生环路。
本实施例中,步骤301、步骤302、步骤304、步骤309以及步骤310 就是现有MSTP协议处理报文的筒要过程。但实际MSTP协议处理4艮文的过 程相当复杂,比如在步骤304完成端口角色选择之后,还需要利用端口信 息状态机(PIM)计算各个端口的优先级。至于MSTP协议如何处理净艮文则 属于现有技术,此处不再详细描述。
本实施例是在步骤303中获取生成树原有的根标识信息,在步骤305中 获取生成树新的根标识信息,但实际应用中,也可以不按照这样的流程进行 处理。比如交换机可以在步骤301和步骤302之间执行获取生成树原有的 根标识信息,在步骤304之后先由PIM状态机计算各个端口的优先级,再 获取生成树新的根标识信息。也就是说,本实施例中的步骤303、步骤305 ~ 步骤308与现有的MSTP协议的流程之间并没有严格的顺序关系,只要在报 文处理过程中获得生成树原有的根标识信息和新的根标识信息,在端口角色 迁移之前判断生成树的根是否发生了切换,并在确定发生切换时设置指示指 定端口需要同步的信息即可。
本实施例是设置指示指定端口需要同步的信息,即将指定端口的sync 标志置位,将synced标志复位,并且后续再利用sync标志和synced标志对 指定端口进4亍阻塞。而实际应用中,交换4几也可以不利用sync标志和synced 标志,而是采用其它方法对端口进行阻塞。比如利用reroot变量作为指定 端口需要阻塞的信息,并在后续利用reroot变量对指定端口进行阻塞。实际 应用中,也可以不设置端口需要阻塞的指示信息,而是在发现生成树的根发 生切换时直接将端口进行阻塞。总之,究竟需要阻塞哪种端口,是否设置需 要阻塞的指示信息,设置哪种端口需要阻塞的指示信息等情况可以由应用本 发明方案的用户自行确定,只要在导致环路产生的端口从阻塞状态迁移为转 发状态之前,可以将处于环路中的端口阻塞,避免环路的产生即可,此处不 再赘述。
针对上述提出的方法,本发明还提出一种处理生成树协议报文的交换 机。图4是本发明交换机的内部结构示意图。如图4所示,该交换机包括
生成树协议处理模块401,用于按照生成树协议对接收到的生成树协议
报文进行处理;将在处理过程中获得的生成树原有的根标识信息和新的根标 识信息传输给根切换判别模块402;还用于在端口角色迁移和后续过程中根 据设置的端口需要阻塞的信息将端口进行阻塞。
根切换判别模块402,用于根据原有的根标识信息和新的根标识信息判断 生成树的冲艮是否发生了切换,如果发生了切换,则将通知消息发送出去。
信息设置模块403,用于在接收到通知消息时在生成树协议处理模块401 中设置端口需要阻塞的指示信息。
也就是说,当交换机接收到生成树协议报文,可以由生成树协议处理模 块401按照生成树协议对接收到的生成树协议报文进行处理,并在处理过程 中获得的生成树原有的根标识信息和新的根标识信息传输给根切换判别模 块402;根切换判别模块402根据原有的根标识信息和新的根标识信息判断 生成树的根是否发生了切换,如果发生了切换,则将通知消息发送出去;信 息设置模块403在接收到通知消息时,在生成树协议处理模块中设置端口需 要阻塞的信息;生成树协议处理模块401在端口角色迁移和后续过程中根据 设置的端口需要阻塞的信息将端口进行阻塞。当然,生成树协议处理模块 401在将端口进行阻塞后,还需要按照生成树协议继续处理报文。另外,如 果生成树的根没有发生切换,生成树协议处理模块401不会存在由信息设置 模块403设置端口需要阻塞的信息,也不会根据设置的端口需要阻塞的信息 将端口进行阻塞,而是需要按照生成树协议继续处理报文。
如果需要被阻塞的端口是指定端口 ,那么,所述的信息设置模块403就
可以为同步信息设置模块403',即在接收到通知消息时在生成树协议处理 模块中设置指示指定端口需要同步的信息。相应地,生成树协议处理模块 401就需要根据设置的指示指定端口需要同步的信息将指定端口进行阻塞。 当然,如果需要被阻塞的端口是其它端口 ,信息设置模块403就可以设置针 对其它端口的指示信息,此处不再赘述。
由于交换机是在确定生成树的根发生切换的情况下将端口进行阻塞的,
以避免环路的产生。这样,即使生成树原有的根和新的根都不是处理报文的 交换机自身,处理报文的交换机也需要将自身端口进行阻塞。在这种情况下, 如果网络比较复杂,就可能有大量的交换机需要将自身端口进行阻塞。如果 被阻塞的是指定端口,按照生成树协议规定,被阻塞的指定端口应该在网络 允许的情况下迁移为转发状态。这就要求指定端口被阻塞的交换机不断向自 身下游交换机发送握手消息,直到下游交换机同意转发或超过30秒延时后, 该交换机才可能将指定端口从阻塞状态迁移为转发状态。也就是说,如果交 换机仅仅在确定生成树的根发生切换就将指定端口进行阻塞,容易在网络中 产生较多的握手消息,不但浪费网络资源,也会延緩重新构造生成树的速度。 为了进一步节约网络资源,提高重新构造生成树的速度,本发明在上述
方案的基础上,还提出两个实施例
图5是应用本发明方案的交换机实施例一的结构图。如图5所示,该交 换机包括生成树协议处理模块401、根切换判别模块402、同步信息设置 模块403'、第一判别模块404a。
其中,生成树协议处理模块401、根切换判别模块402、同步信息设置 模块403'与上述相应的模块相同,此处不再赘述。而第一判别模块404a则 在接收到通知消息时,根据新的根标识信息和交换机自身标识判断交换机自 身是否为生成树新的根,如果是,则将通知消息发送给同步信息设置模块 403。也就是说,当同步信息设置模块403判断出生成树的根发生了切换时, 同步信息设置模块403并不立即在生成树协议处理模块401中设置指示指定 端口需要同步的信息,而是需要先由第一判别模块404a判断交换机自身是 否为生成树新的根,只有在交换机是生成树新的根的情况下才在生成树协议 处理模块401中设置指示指定端口需要同步的信息。
图6是应用本发明方案的交换机实施例二的结构图。如图6所示,该交 换机包括生成树协议处理模块401、根切换判别模块402、同步信息设置 模块403'、第二判别模块404b。
其中,生成树协议处理模块401、根切换判别模块402、同步信息设置
模块403'也与上述相应模块相同,此处也不再赘述。
而第二判别模块404b则在接收到通知消息时,根据原有的根标识信息
知消息发送给同步信息设置模块403。也就是说,当同步信息设置模块403 判断出生成树的根发生了切换时,同步信息设置模块403并不立即在生成树 协议处理模块401中设置指示指定端口需要同步的信息,而是需要先由第二 判别模块404b判断交换机自身是否为生成树新的根,只有在交换机是生成 树新的根的情况下才在生成树协议处理模块401中设置指示指定端口需要 同步的信息。
上迷两个实施例是同步信息设置模块403'设置指示指定端口需要同步 的信息,由生成树协议处理模块401利用指示指定端口需要同步的信息对指 定端口进行阻塞。而实际应用中,也可以不利用同步信息设置模块403'设置 指示指定端口需要同步的信息,而是采用其它方法对端口进行阻塞。比如 利用reroot变量作为指定端口需要阻塞的信息,并在后续利用reroot变量对 指定端口进行阻塞。总之,究竟需要阻塞哪种端口,设置哪种端口需要阻塞 的指示信息等情况可以参考现有的生成树协议,只要在导致环路产生的端口 从阻塞状态迁移为转发状态之前,可以将处于环路中的端口阻塞,避免环路 的产生即可,此处不再赘述。
下面以图1所示的生成树重新构造成图2所示的生成树为例来说明本发 明实施例方案的效果
如果在处理报文的过程中,交换机确定自身切换为生成树新根时才阻塞 指定端口 ,那么,当取消A3作为域根的配置,恢复A3的默认优先级,A3 将通过端口 PA31向Al发送携带默认优先级信息的MSTP才艮文,通过端口 PA32向A2发送携带默认优先级信息的MSTP报文;Al从端口 PA12接收 到来自A3的MSTP报文后,按照本发明实施例的方案对报文进行处理,Al 确定自身的端口 PA11和PA12为指定端口,判断出生成树的根发生了切换, 并且Al自身为生成树新的冲艮,乂人而将指定端口 PA11和PA12的sync标志
置位,将synced标志复位,并在后续处理过程将指定端口 PA11和PA12的 状态迁移为阻塞状态。至此,由于环路上已经有指定端口被阻塞,按照MSTP 协议规定,在后续构造生成树的过程都不可能出现环路。
相应地,如果在处理报文的过程中,交换机确定自身为生成树原有的根 时才阻塞指定端口,那么,当取消A3作为域根的配置,恢复A3的默认优 先级,A3将通过端口 PA31向Al发送携带默认优先级信息的MSTP报文, 通过端口 PA32向A2发送携带默认优先级信息的MSTP报文;Al从端口 PA12接收到来自A3的MSTP报文后,按照本实施例方案对报文进行处理, Al确定自身的端口 PA11和PA12为指定端口 ,判断出生成树的冲艮发生了切 换,并且自身并不是生成树原有的根,在处理完报文之后指定端口保持转发 状态;同样,A2从端口 PA22接收到来自A3的MSTP报文,也按照本实施 例方案对才艮文进行处理,A2确定自身端口 PA21和PA22为指定端口 ,判断 出生成树的根发生了切换,并且自身并不是生成树原有的根,在处理完报文 之后指定端口 PA21保持阻塞状态,PA22保持转发状态;A2再从端口 PA21 接收到来自Al的MSTP报文,按照本实施例方案对报文进行处理,A2确 定端口PA21为根端口, PA22为指定端口,判断出生成树的根发生了切换, 并且自身是生成树原有的根,从而将指定端口 PA22的sync标志置位,将 synced标志复位,并在后续处理过程将指定端口 PA22的状态迁移为阻塞状 态,将根端口 PA21迁移为转发状态。至此,虽然原来阻塞的PA21被快速 迁移为转发状态,但由于环路上已经有指定端口 PA22被阻塞,按照MSTP 协议规定,在后续构造生成树的过程都不可能出现环路。
从以上分析可以看出,图1所示的生成树重新构造成图2所示的生成树 的过程中,由于在A2将PA21快速迁移为转发状态之前,环路上必定会存 在处于阻塞状态的指定端口 ,从而可以避免环路的产生。
应用本发明方案,由于在生成树的根发生切换的情况下将指定端口进行 了阻塞,从而可以在重新构造生成树的过程中避免环路的产生。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的
保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改 进等,均应包含在本发明的保护范围之内。
权利要求
1、一种处理生成树协议报文的方法,其特征在于,该方法包括按照生成树协议对接收到的生成树协议报文进行处理,在处理过程中检测生成树的根是否发生切换,如果发生切换,则将端口进行阻塞;否则,继续按照生成树协议进行处理。
2、 根据权利要求1所述的方法,其特征在于,所述在处理过程中检测生成 树的是否发生切换,并在发生切换时将端口进行阻塞的方法为在处理过程中获得生成树原有的根标识信息和新的根标识信息,并在端口 角色迁移之前根据原有的根标识信息和新的根标识信息判断生成树的根是否发 生了切换,如果发生了切换,则设置端口需要阻塞的指示信息,并在端口角色 迁移和后续处理过程中根据端口需要阻塞的指示信息将端口进行阻塞。
3、 根据权利要求2所述的方法,其特征在于,在判断出生成树的根发生了 切换时,该方法进一步包括处理生成树协议报文的交换机根据新的根标识信息和自身标识判断自身是 否为生成树新的根,如果是,则执行所述设置端口需要阻塞的指示信息的步骤; 否则,执行所述继续按照生成树协议进行处理的步骤。
4、 根据权利要求2所述的方法,其特征在于,在判断出生成树的根发生了 切换时,该方法进一步包括处理生成树协议报文的交换机根据原有的根标识信息和自身标识判断自身 是否为生成树原有的根,如果是,则执行所述设置端口需要阻塞的指示信息的 步骤;否则,执行所述继续按照生成树协议进行处理的步骤。
5、 根据权利要求1至4任一项所述的方法,其特征在于,所述端口为指定 端口 ,所述端口需要阻塞的指示信息为指示指定端口需要同步的信息。
6、 根据权利要求5所述的方法,其特征在于,所述设置指示指定端口需要 同步的信息的步骤包括将指定端口的同步sync标志置位,将指定端口的已同步synced标志复位。
7、 根据权利要求6所述的方法,其特征在于,所述后续处理过程为端口状态迁移过程,所述在端口角色迁移和后续处理过程中根据指示指定端口需要阻塞的信息将指定端口进行阻塞的步骤包括根据生成树协议对端口角色进行迁移,并在对端口角色进行迁移的过程中, 才艮才居sync 标志和synced标志生成指示状态迁移的信息;在端口状态迁移过程 中再根据指示状态迁移的信息将指定端口的状态迁移为阻塞状态。
8、 根据权利要求7所述的方法,其特征在于,所述对端口角色进行迁移的 方法为利用符合生成树协议的端口角色迁移状态机PRT对端口角色进行迁移;所述对端口状态进行迁移的方法为利用符合生成树协议的端口状态迁移 状态机PST对端口状态进行迁移。
9、 根据权利要求1至4任一项所述的方法,其特征在于,所述生成树协议 报文为快速生成树协议RSTP报文,所述生成树的根为RSTP的根;或者,所述生成树协议报文为多生成树协议MSTP报文,所述生成树的根为MSTP 域根。
10、 一种处理生成树协议报文的交换机,其特征在于,该交换机包括 生成树协议处理模块,用于按照生成树协议对接收到的生成树协议报文进行处理;将在处理过程中获得的生成树原有的根标识信息和新的根标识信息传 输给根切换判别冲莫块;还用于在端口角色迁移和后续过程中根据设置的端口需 要阻塞的指示信息将端口进行阻塞;根切换判别模块,用于根据原有的根标识信息和新的根标识信息判断生成 树的根是否发生了切换,如果发生了切换,则将通知消息发送出去;信息设置模块,用于在接收到通知消息时在生成树协议处理模块中设置端 口需要阻塞的指示信息。
11、 根据权利要求IO所述的交换机,其特征在于,所述信息设置模块为同 步信息设置模块,所述端口需要阻塞的指示信息为同步信息设置模块设置的指 示指定端口需要同步的信息。
12、 根据权利要求11所述的交换机,其特征在于,该交换机进一步包括 第一判别模块,用于在接收到通知消息时,根据新的根标识信息和交换机 自身标识判断交换机自身是否为生成树新的根,如果是,则将通知消息发送给 同步信息设置模块。
13、根据权利要求11所述的交换机,其特征在于,该交换机进一步包括 第二判别模块,用于在接收到通知消息时,根据原有的根标识信息和交换机自身标识判断交换机自身是否为生成树原有的根,如果是,则将通知消息发送给同步信息设置模块。
全文摘要
本发明提供一种处理生成树协议报文的方法和交换机,具体为按照生成树协议对接收到的生成树协议报文进行处理,在处理过程中检测生成树的根是否发生切换,如果发生切换,则将端口进行阻塞;否则,继续按照生成树协议进行处理。应用本发明方案,由于在生成树的根发生切换的情况下将端口进行阻塞,从而可以在重新构造生成树的过程中避免环路的产生。
文档编号H04L12/56GK101110820SQ20071012133
公开日2008年1月23日 申请日期2007年9月4日 优先权日2007年9月4日
发明者聪 薛, 赵里遥 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1