一种端口状态迁移的方法

文档序号:7951568阅读:419来源:国知局
专利名称:一种端口状态迁移的方法
技术领域
本发明涉及计算机网络通信领域,尤其涉及一种端口状态迁移的方法。
背景技术
由于网桥依赖运行网络中存在的MAC地址和端口对应表来进行数据的转发,若收到目的地址未知的数据包,只能利用广播的形式来寻址,其后果就是在一个环形网络中造成大量的数据流量,即“广播风暴”,从而导致网络的瘫痪。
为了解决上述基于二层的“广播风暴”问题,IEEE(电机和电子工程师学会)制定了生成树协议STP、快速生成树协议RSTP以及多生成树协议MSTP,它们通过有选择性地阻塞网络冗余链路,来达到消除网络二层环路的目的,从而有效抑制广播风暴的产生。同时,一旦拓扑结构发生变化,网络会根据生成树协议,重新进行端口角色的选举,并改变相关端口状态,直至各端口角色进入新的稳定状态。
现有基于各生成树协议的端口角色有多种。其中根端口、指定端口以及主端口在稳定时,通常处于可以转发数据报文的转发状态。备份端口、可选端口,通常处于无法转发数据报文的阻塞状态。当拓扑结构发生变化时,根据生成树协议会进行新的选举,进而许多端口角色及其状态会随之发生改变。
在进行新的选举过程中,各端口会暂时进入阻塞状态,然后经过一系列过程再迁移至所需的稳定状态。例如新被选举的根端口,要通过ReRoot(根端口迁移)过程,进入学习状态,然后再迁移至转发状态;新被选举的指定端口,要通过与下层根端口之间的握手过程才能进入学习状态,然后迁移至转发状态。同时,下层原本处于转发状态的指定端口,在完成同步前会被阻塞,需要与其下层的根端口再握手才能恢复到转发状态,即需要逐层握手,指定端口才能全部稳定到转发状态;新被选举的主端口,要等待本桥上的所有端口都已经同步,即经过同步过程后,才能进入学习状态,然后迁移至转发状态。
由此可见,在上述端口全部进入转发状态之前,整个主用链路上的端口还不能全部真正进行数据报文的转发,进而在此时间段内,会不可避免地引起网络中断,这对于许多时效性很强的业务而言,是无法接受甚至是致命的。

发明内容
本发明的目的是提供一种端口状态迁移的方法,以解决现有端口角色变化进行状态迁移时,要经过一系列过程才能进入转发状态导致的网络中断的技术问题。
为解决上述技术问题,本发明的目的是通过以下技术方案实现的一种端口状态迁移的方法设置至少一个端口为快速迁移属性;当端口角色转换到预置端口时,如果所述端口为快速迁移属性,则直接进入学习状态,然后迁移至转发状态。
优选的,当端口角色转换到预置端口时,判断所述端口是否为快速迁移属性。
优选的,端口角色稳定后,处于阻塞状态的端口发起全网地址表项的刷新。
优选的,所述处于阻塞状态的端口包括可选端口和备份端口。
优选的,在端口角色转换状态机中,设置学习状态的优先级最高。
优选的,端口角色转换时,优先判断是否满足进入学习状态的条件。
所述预置端口包括根端口、指定端口和/或主端口。
当端口角色转换到根端口时,如果所述端口为快速迁移属性,则跨过ReRoot过程直接进入学习状态,然后迁移至转发状态。当端口角色转换到指定端口时,如果所述端口为快速迁移属性,则跨过握手过程直接进入学习状态,然后迁移至转发状态。当端口角色转换到主端口时,如果所述端口为快速迁移属性,则跨过同步过程直接进入学习状态,然后迁移至转发状态。
以上技术方案可以看出,在本发明中,由于为需要的端口设置快速迁移属性,然后在该端口被选举为新角色时,跨过原有必经的迁移过程,直接进入学习状态,再迁移至转发状态,降低、甚至防止了网络中断现象的发生。


图1为本发明公开的端口状态迁移方法的第一实施例流程图;图2为一种运行生成数协议的组网示意图;图3为本发明公开的端口状态迁移方法的第二实施例流程图;图4为指定端口与根端口之间的握手过程示意图;图5为本发明公开的端口状态迁移方法的第三实施例流程图;图6为本发明公开的端口状态迁移方法的第四实施例流程图;图7为本发明公开的端口状态迁移方法的第五实施例流程图。
具体实施例方式
本发明的核心思想是为需要的端口设置快速迁移属性,然后在该端口被选举为新角色时,跨过原有必经的迁移过程,直接进入学习状态,再迁移至转发状态。
请参阅图1,其为本发明公开的端口状态迁移方法的第一实施例流程图。
步骤110设置部分端口为快速迁移属性;运行生成树协议(STP/RSTP/MSTP)的网络包含大量桥接器,每个桥接器通常具有多个端口,可以根据实际需要,为其中部分端口配置快速迁移属性,其余端口仍然使用默认的常规属性。由于网络中的链路故障是不可预知的,所以在哪些端口配置快速迁移属性没有统一的标准,只能根据具体组网情况具体分析。例如图2所示的一种组网情况,桥接器21是被选举出的根桥,桥接器13的右边端口被阻塞,桥接器22无法和桥接器23之间无法通过桥接器23右边的端口转发数据报文。因为无法预知会出现什么样的链路故障,因此三个桥接器的任意一个端口都可能出现快速迁移的需求。但是,如果link1非常强壮,基本能够保证不出故障,只有link2和link3之间需要进行切换时,就可以仅在link2和link3的端口上配置快速迁移属性;此外,由于根端口的ReRoot过程比较短,所以有时只需要在上游端口配置快速迁移属性即可达到效果。仍然以图2为例,只要在桥接器21的link2端口以及桥接器22的link3端口上配置快速迁移属性,就能够在link2和link3进行切换时,达到比较好的效果。
步骤120端口角色转换到根端口时,判断所述端口是否为快速迁移属性。如果否,则进入步骤130;如果是,则进入步骤140。
由于网络拓扑结构改变,根据生成树协议进行新的选举,端口角色转换到根端口时,判断该端口此时的属性,是默认属性还是快速迁移属性。通常情况下,如果快速迁移属性处于关闭状态,则该端口即为默认的常规属性。
步骤130所述端口在完成ReRoot过程之后,进入学习状态。然后进入步骤150。
当端口角色转换到根端口时,所述端口通过调用函数向其所在的桥上所有其他端口发送根端口迁移(ReRoot)指令。每个端口都有一个定时器(rrWhile),收到所述ReRoot指令的其他端口,进行如下操作(a)如果端口的rrWhile已经为0,则将自己的bReRoot变量复位(False)。
(b)如果端口的rrWhile不为0,目前处于阻塞状态,则在rrWhile逐渐递减至0后,将bReRoot复位,完成响应;目前处于转发状态,则先让自己转到阻塞状态,然后将rrWhile逐渐递减至0,再将bReRoot复位,完成响应。
当其他端口的rrWhile都等于0后,而且该发送ReRoot指令的根端口最近不曾为备份端口,就可以进入学习状态了。然后迁移至转发状态,并把自己的bReRoot变量复位。此时这个被新选举的根端口才能够真正进行数据报文的转发。
步骤140所述端口跨过上述步骤130所述的ReRoot过程,直接进入学习状态。然后进入步骤150。
步骤150所述端口由学习状态迁移至转发状态。
步骤160各端口角色稳定后,由处于阻塞状态的端口发起全网地址表项的刷新,从而防止非法MAC,尽快恢复网络中的业务。现有的根端口、指定端口以及主端口在角色稳定后都会自动进行全网地址表项的刷新,此外,处于阻塞状态的端口也需要发起全网地址表项的刷新,进而保证在所有端口稳定的最后时刻能够刷新一次地址表项。所述处于阻塞状态的端口包括可选端口,备份端口等等。
由此可见,对于设置为快速迁移的端口,在其端口角色变化为根端口时,该端口可以快速进入转发状态,能够在非常短的时间内真正转发数据报文,从而降低甚至防止了网络中断的问题。对于没有设置为快速迁移属性的新根端口,仍然可以按照现有方案进行状态迁移。
请参阅图3,其为本发明公开的端口状态迁移方法的第二实施例流程图。
步骤210设置部分端口为快速迁移属性;步骤220端口角色转换到指定端口时,判断所述端口是否为快速迁移属性。如果否,则进入步骤230;如果是,则进入步骤240。
步骤230所述端口在完成握手过程之后,进入学习状态。然后进入步骤250。
请结合参阅图4,其为指定端口与根端口之间的握手示意图。
(1)指定端口31发送握手请求报文;握手是由指定端口31发起的。当端口31角色被选为指定端口时,端口31会进行状态与标志检测,如果目前不是处于转发状态、非边缘端口并且已握手变量(Agreed)没有被置位,那么它就会向下游的根端口32发送带有提议标志(Proposal Flag)和同意标志(Agreement Flag)的握手请求报文。发送Agreement Flag,表示该指定端口31已经准备好,可以进行握手了。
(2)根端口32处理接收到的握手请求;根端口32收到握手请求后,先判断本端口的Agreed是否已经置位,如果置位则直接进入(3);否则将本端口的Agreed置位,并向全桥发送同步指令(Sync)。
各个端口收到Sync指令后进行如下处理a)已同步变量(Synced)已经置位,即为True,则直接把Sync指令复位(Fasle);b)Synced处于复位,即为False,如果目前处于阻塞状态,则把Synced置位,并将Sync指令复位;如果目前处于转发状态,则先转移至阻塞状态,再把Synced置位,并将Sync指令复位,完成响应。此外,这些转移到阻塞状态的端口要想回到转发状态,还需要与其下层的根端口握手,然后才能恢复为转发状态。
(3)根端口32等待本桥的其他端口全部完成同步;当桥上所有端口的Synced已经置位后,即已经AllSynced,则激励端口角色转换状态机(PRT),根端口32向指定端口31发送带有同意标志(Agreement Flag)的BPDU报文。
(4)指定端口31收到带有同意标志的报文,完成本次握手过程。
指定端口31收到根端口32发回的带有Agreement Flag的BPDU报文后,将本端口31的已握手变量(Agreed)置位,表示已经完成握手。
完成握手后,如果没有再收到Sync同步指令,而且该指定端口31最近不是根端口或者没有收到ReRoot指令,则该端口31就可以迁移到学习状态了。
步骤240所述端口跨过步骤230所述的握手过程,直接进入学习状态。然后进入步骤250。
步骤250所述端口由学习状态迁移至转发状态。
步骤260各端口角色稳定后,由处于阻塞状态的端口发起全网地址表项的刷新,从而防止非法MAC,尽快恢复网络中的业务。所述处于阻塞状态的端口包括可选端口,备份端口等等。
由此可见,对于设置为快速迁移的端口,在其端口角色变化为指定端口时,该端口可以快速进入转发状态,能够在非常短的时间内真正转发数据报文,从而降低甚至防止了网络中断的问题。对于没有设置为快速迁移属性的新指定端口,仍然可以按照现有方案进行状态迁移。
请参阅图5,其为本发明公开的端口状态迁移方法的第三实施例流程图。
步骤410设置部分端口为快速迁移属性;步骤420端口角色转换到主端口时,判断所述端口是否为快速迁移属性。如果否,则进入步骤430;如果是,则进入步骤440。
步骤430所述端口在完成同步过程之后,进入学习状态。然后进入步骤450。
新选举出的主端口,等待本桥上的其他所有端口都已经同步后,迁移至学习状态步骤440所述端口跨过步骤430所述的同步过程,直接进入学习状态。然后进入步骤450。
步骤450所述端口由学习状态迁移至转发状态。
步骤460各端口角色稳定后,由处于阻塞状态的端口发起全网地址表项的刷新,从而防止非法MAC。
由此可见,对于设置为快速迁移的端口,在其端口角色变化为主端口时,该端口可以快速进入转发状态,能够在很短的时间内真正转发数据报文,从而降低甚至防止了网络中断的问题。对于没有设置为快速迁移属性的新主端口,仍然可以按照现有方案进行状态迁移。
上述三个实施例分别是针对新选举出的根端口、指定端口以及主端口而言,实际应用中,上述三个实施例可以任意两两组合或者全部同时使用。由于相关内容前文已经有很详细的介绍,下面只结合图5,简要说明三种实施例同时结合使用的步骤。两两组合使用的原理雷同,不再赘述。
请参看图6,其为本发明公开的端口状态迁移方法的第四实施例流程图。
步骤510设置部分端口属性为快速迁移;步骤520端口角色转换到根端口时,判断所述端口是否为快速迁移属性;端口角色转换到指定端口时,判断所述端口是否为快速迁移属性;端口角色转换到主端口时,判断所述端口是否为快速迁移属性;如果否,则进入步骤530;如果是,则进入步骤540。
步骤530转换到的角色为根端口时,完成ReRoot过程后,进入学习状态;转换到的角色为指定端口时,完成握手过程后,进入学习状态;转换到的角色为主端口时,完成同步过程后,进入学习状态。此后进入步骤550。
步骤540所述端口跨过步骤530所述的ReRoot/握手/同步过程,直接进入学习状态。然后进入步骤550。
步骤550所述端口由学习状态迁移至转发状态。
步骤560各端口角色稳定后,由处于阻塞状态的端口发起全网地址表项的刷新,从而防止非法MAC。
上述四个实施例都是针对网络中部分端口设置快速迁移属性。由于部分端口设置了快速迁移属性,而另外一部分端口没有设置快速迁移属性,于是就会涉及到它们彼此之间的相互响应问题。例如上游端口被选举为指定端口,但没有配置快速迁移属性,而下游端口都配置了快速迁移属性,于是上游端口在迁移到指定端口时会向下游端口发起握手请求,下游端口虽然是快速迁移端口,但是仍然会响应握手,此时可能会有短暂的中断,但由于快速迁移属性的作用,下游端口又会马上迁移到转发状态,这个中断是非常短的。未设置快速迁移属性的端口被选举为根端口和主端口的情况也类似,它们在Reroot和同步的过程中也会导致部分配置了快速迁移属性的端口短暂进入阻塞状态,引起网络中断,但同样会立刻恢复。于是在实际应用中,还可以对运用生成树协议的网络全部端口设置快速迁移属性,这样所有端口都能够快速进入转发,进而也不会出现设置为快速迁移属性的端口为了配合其他没有设置快速迁移属性端口的握手、Reroo以及同步等过程,而出现短暂的阻塞现象。请参看图7,其为本发明公开的基于生成树协议的端口状态迁移方法的第五实施例流程图。
步骤610设置全部端口为快速迁移属性;步骤620端口角色转换到根端口时,跨过ReRoot过程,直接进入学习状态;端口角色转换到指定端口时,跨过握手过程,直接进入学习状态;端口角色转换到主端口时,跨过同步过程后,直接进入学习状态。
步骤630所述端口由学习状态迁移至转发状态。
步骤640各端口角色稳定后,由处于阻塞状态的端口发起全网地址表项的刷新,从而防止非法MAC。现有的根端口、指定端口以及主端口在角色稳定后都会自动进行全网地址表项的刷新,此外,处于阻塞状态的端口也需要发起全网地址表项的刷新,进而保证在所有端口稳定的最后时刻能够刷新一次地址表项。
此外,由于在STP/RSTP/MSTP等生成树协议家族中,是通过一系列状态机来控制协议变迁的。例如端口信息状态机,用于处理报文信息和时间信息等;发送状态机,用于发送STP报文;端口角色转换状态机,负责端口角色(根端口、指定端口、主端口、备份端口、可选端口等)发生变化时的处理。
本发明主要涉及到的是端口角色转换状态机。设置快速迁移属性,就是要在一定条件下优先直接进入学习状态,于是为了避免先进入原有的握手或ReRoot等过程,可以将端口角色转换状态机中学习状态的优先级设置为最高,即优先判断是否能进入学习,如果可以就立刻迁移。此外还可以将转发状态一并设置为最高优先级。
实际应用中,不进行优先级设置也是可行的。因为即使在快速迁移属性下,状态机临时进入握手或ReRoot等过程,当状态机再次进行下一个状态判断时,也会由于满足直接进入学习状态的条件,而进入学习状态,再迁移到转发状态。
本实施例虽然是以根端口、指定端口以及主断口同时使用快速迁移方法为例,但实际应用中,可以根据具体需要单独使用或任意组合使用。
以上对本发明所提供的一种端口状态迁移的方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种端口状态迁移的方法,其特征在于设置至少一个端口为快速迁移属性;当端口角色转换到预置端口时,如果所述端口为快速迁移属性,则直接进入学习状态,然后迁移至转发状态。
2.如权利要求1所述的端口状态迁移方法,其特征在于还包括当端口角色转换到预置端口时,判断所述端口是否为快速迁移属性。
3.如权利要求1所述的端口状态迁移方法,其特征在于还包括端口角色稳定后,处于阻塞状态的端口发起全网地址表项的刷新。
4.如权利要求3所述的端口状态迁移方法,其特征在于所述处于阻塞状态的端口包括可选端口和备份端口。
5.如权利要求1所述的端口状态迁移的方法,其特征在于还包括在端口角色转换状态机中,设置学习状态的优先级最高。
6.如权利要求5所述的端口状态迁移的方法,其特征在于端口角色转换时,在端口角色转换状态机中,优先判断是否满足进入学习状态的条件。
7.如权利要求1至6中任意一项所述的端口状态迁移的方法,其特征在于所述预置端口包括根端口、指定端口和/或主端口。
8.如权利要求7所述的端口状态迁移的方法,其特征在于当端口角色转换到根端口时,如果所述端口为快速迁移属性,则跨过ReRoot过程直接进入学习状态,然后迁移至转发状态。
9.如权利要求7所述的端口状态迁移的方法,其特征在于当端口角色转换到指定端口时,如果所述端口为快速迁移属性,则跨过握手过程直接进入学习状态,然后迁移至转发状态。
10.如权利要求7所述的端口状态迁移的方法,其特征在于当端口角色转换到主端口时,如果所述端口为快速迁移属性,则跨过同步过程直接进入学习状态,然后迁移至转发状态。
全文摘要
本发明公开了一种端口状态迁移的方法,预置至少一个端口为快速迁移属性;当端口角色转换到预置端口时,如果所述端口为快速迁移属性,则直接进入学习状态,然后迁移至转发状态。
文档编号H04L12/56GK1801820SQ200610000568
公开日2006年7月12日 申请日期2006年1月11日 优先权日2006年1月11日
发明者徐鹏飞, 周万 申请人:杭州华为三康技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1