一种网络拓扑计算方法和设备的制作方法

文档序号:7553059阅读:237来源:国知局
专利名称:一种网络拓扑计算方法和设备的制作方法
技术领域
本发明涉及通信领域,尤其涉及一种网络拓扑计算方法和设备。
背景技术
生成树协议是一种二层管理协议,它通过有选择性地阻塞网络冗余链路来达到消除网络二层环路的目的,同时具备链路的备份功能。生成树协议随着网络的不断发展而不断更新换代。最初被广泛应用的是IEEE802.1D-1998STP (Spanning Tree Protocol,生成树协议),随后以它为基础产生了 IEEE802.1wRSTP (Rapid Spanning Tree Protocol,快速生成树协议)、PVST (Per VLANSpanning Tree,每 VLAN 生成树)协议和 IEEE802.1s MSTP(Multiple Spanning Tree Protocol,多生成树协议)。
MSTP引入“域”的概念,将一个交换网络划分成多个域。每个域内计算出多个MSTI(Multiple Spanning Tree Instance,多生成树实例),形成多棵生成树,生成树之间彼此独立;在域间,MSTP利用CIST (Common and Internal Spanning Tree,公共和内部生成树)保证全网络拓扑结构的无环路存在。
运行生成树协议的设备之间,互相通告生成树协议消息,如BPDU (BridgeProtocol Data Unit,桥协议数据单元),其中携带有用于生成树计算的所有有用信息,设备根据这些信息进行比较计算,确定出端口角色,在整个网络内计算出具有唯一树根节点的无环路树形网络拓扑结构。
在MSTP的计算过程中,端口角色有根端口、指定端口、替换端口和阻塞端口等,其中:
根(root port)端口:通向根桥并提供转发通路的端口,负责向根桥方向转发数据;
指定端口(designated port):从树根指向树的叶子节点,提供下行转发通路的端口,负责向下游网段或设备转发数据;
替换(alternative port)端口:通向根桥,但只提供备份的阻塞端口为替换端口,当根端口被阻塞后,替换端口将成为新的根端口 ;
阻塞(backup port)端口:当开启了 MSTP的同一台设备的两个端口互相连接时就存在一个环路,此时设备会阻塞端口 ID较小的端口,而另外一个端口则处于转发状态,成为指定端口。阻塞端口是指定端口的备份端口。
所有网桥的MSTP角色都是通过生成树协议消息中携带的信息计算出来的,消息中携带的最重要的信息就是生成树的优先级向量,优先级向量的组成为:{根桥ID,根路径开销,指定桥ID,指定端口 ID},其中各向量成员含义如下:
根桥ID:即根桥的标识,由根桥的优先级和MAC (Media Access Control,媒体访问控制)地址组成;
根路径开销:到根桥的总路径开销;
指定桥ID:即发送桥的标识,由指定桥的优先级和MAC地址组成;
指定端口 ID:即指向下游设备的发送端口的标识,由指定端口的优先级和该端口的全局编号组成。
运行生成树协议的设备根据生成树协议计算生成树时所依据的优先级向量中除包括{根桥ID,根路径开销,指定桥ID,指定端口 ID}以外,还在该向量的尾部加上接收端口 ID,S卩,优先级向量的组成为:{根桥ID,根路径开销,指定桥ID,指定端口 ID,接收端口ID}。
MSTP角色和端口角色的计算中涉及到的一些优先级向量包括:
消息优先级向量:由从生成树协议消息中接收的优先级向量,加上接收端口 ID所构成的优先级向量;
端口优先级向量:端口优先级向量是随端口收到的消息优先级向量更新的:如果端口收到的消息优先级向量优于端口优先级向量,则将端口优先级向量更新为消息优先级向量;否则,端口优先级向量保持不变;
根路径优先级向量:根路径优先级向量由端口优先级向量计算得到,如果端口优先级向量来自同一域的网桥,根路径优先级向量的内部路径开销为端口优先级向量的内部根路径开销和端口路径开销之和;
桥优先级向量:桥优先级向量中的根桥ID和指定桥ID都是本桥ID,路径开销为0,指定端口 ID和接收端口 ID也全为O ;
根优先级向量:根优先级向量是桥优先级向量和所有指定桥ID和本桥ID值不相同的根路径优先级向量的最优值;
指定优先级向量:端口的指定优先级向量由根优先级向量计算得到,将根优先级向量的指定桥ID替换为本桥ID,指定端口 ID替换为自己的端口 ID。
如图1所示,假定设备I的桥ID为A,设备2的桥ID为C,设备3的桥ID为D ;且各设备的端口 ID分别为Px (比如设备I的Portl的端口 ID为P1,设备2的Port2的端口ID为P2,以此类推),各端口的路径开销都为I。生成树的最终计算结果为:设备I是整个网络中的树根,根桥ID为A,端口 Portl、Port3和Port5都为指定端口,设备2的Port2和设备3的Port4为根端口,设备3的Porte为阻塞备份链路的替换端口。设备2的根优先级向量为{A,1,A,P1,P2},设备3的根优先级向量为{A,2,C,P3,P4}。
Portl发送的优先级向量为{A,O, A, PI},Port2的端口优先级向量为{A, O, A, PI, P2},接收自设备I ;Port3发送的优先级向量为{A, I, C,P3},设备3的Port4的端口优先级向量为{A, 1,(:,?3^4},接收自设备2屮0代5发送的优先级向量为{A, 1,C,P5},Port6的端口优先级向量为{A, 1,C,P5,P6},接收自设备2。端口 Port2、Port4和Port6的端口优先级向量要靠其上游设备周期持续发送的生成树协议消息(Brou)来保活,以保持生成树拓扑的稳定。
如果设备I运行的是堆叠系统或在主备倒换的操作过程中,整机设备的桥MAC地址变小,新的桥ID在整个网络中是最优的,则生成树协议重新计算的端口角色不会发生变化,也就不会引起拓扑震荡。但如果根桥设备的桥MAC地址变大,则因为直连的下游桥设备2接收不到原根桥(桥ID为A )的生成树协议消息,因此在接收超时的时候会触发一次拓扑震荡。
如图2所示,当根桥设备I的桥MAC地址变大,例如桥ID从A变为B(A优于B)后,设备I的端口 Portl周期性地发出以B为根桥的BPDU,其中携带有优先级向量{B,O, B, P1}。但由于设备2的Port2持有更优的端口优先级向量{A,O, A, PI, P2},因此接收到携带有{B, O, B, P1}的BPDU后会被认为是低优先级消息被丢弃。当Port2的端口优先级向量超时老化后(原根桥A已不存在,不再向下游桥发送保活消息),设备2的3个端口 Port2、Port3和Port5会分别向外发出以自己为根桥的BTOU,其中携带有优先级向量{C,O, C,P2 | P3 | P5},这样就出现了一次拓扑重新计算的震荡过程。
根桥设备的桥MAC地址变大,但新的桥ID仍然是网络中最优的桥ID的情况下,弓丨起下游设备的拓扑震荡,重新计算出的端口角色不会发生变化,因此这种拓扑震荡是不必要的。发明内容
本发明实施例提供了一种网络拓扑计算方法和设备,用以减少因桥ID变化所引起的网络拓扑震荡。
本发明实施例提供的网络拓扑计算方法,应用于运行生成树协议的设备,该方法包括:
当设备的桥ID因本设备的MAC地址变大而变更时,所述设备从本设备的指定端口向下游设备发送桥ID变化消息,其中携带有本设备变更前和变更后的桥ID,所述设备根据变更后的桥ID更新本设备的桥优先级向量和各端口的端口优先级向量,进行生成树计算,并根据计算结果从本设备的指定端口发送生成树协议消息,其中携带的优先级向量中本设备的桥ID为本设备变更后的桥ID ;
当设备接收到上游设备发送的桥ID变化消息后,从本设备的指定端口向下游设备发送所述桥ID变化消息,根据所述桥ID变化消息中携带的变更后的桥ID更新本设备各端口的端口优先级向量,进行生成树计算,并根据计算结果从本设备的指定端口发送生成树协议消息。
本发明实施例提供的网络设备,运行有生成树协议,包括:
桥ID变化通知模块,用于在本设备的桥ID因本设备的桥MAC地址变大而变更时,从本设备的指定端口向下游设备发送桥ID变化消息,其中携带有本设备变更前和变更后的桥ID ;以及,接收上游设备发送的桥ID变化消息,并从本设备的指定端口发送所述桥ID变化消息;
优先级向量更新模块,用于在本设备的桥ID因本设备的桥MAC地址变大而变更时,根据变更后的桥ID更新本设备的桥优先级向量和各端口的端口优先级向量;以及,在接收到上游设备发送的桥ID变化消息后,根据所述桥ID变化消息中携带的变更后的桥ID更新本设备各端口的端口优先级向量;
生成树协议模块,用于在所述优先级向量更新模块更新优先级向量后,进行生成树计算,并根据计算结果从本设备的指定端口发送生成树协议消息;其中,若本设备的桥ID发生变更,则所述生成树协议消息中携带的优先级向量中本设备的桥ID为本设备变更后的桥ID。
本发明的上述实施例中,运行生成树协议的设备在其桥MAC地址变大后,通过指定端口向下游设备发送携带有变更前和变更后的桥ID变化消息,下游设备再通过其指定端口继续向下游扩散该桥ID变化消息,从而将该桥ID变化消息扩散到发生桥ID变更的设备的下游网络;发生桥ID变更的设备以及接收到桥ID变化消息的设备,需要根据变更后的桥ID更新本设备的生成树协议优先级向量,进行生成树计算,并发送生成树协议消息。采用上述实施例可减少因桥MAC地址变大而引起的网络拓扑震荡,尤其针对根桥设备的桥MAC地址变大,且变更后的桥ID依然是网络中的最优桥ID的情况,可以避免因桥ID变化所引起的网络拓扑震荡。


图1为现有技术中根桥生成树拓扑示意图2为现有技术中根桥ID变化后的消息发送/接收示意图3A和图3B为现有技术中以变更前的桥ID为根的生成树协议消息在网络中残留的不意图4A和图4B为本发明实施例中桥ID变化消息和BPDU的传输示意图5为本发明实施例提供的桥ID变化消息的格式示意图6为本发明实施例提供的网络设备的结构示意图。
具体实施方式
本发明实施例提供了一种网络拓扑计算方法,可以在以下情况时避免网络拓扑震荡的发生:根桥设备的桥MAC地址变大而导致根桥ID变更,但变更后的根桥ID仍然是网络中最优的桥ID。
下面对本发明实施例进行详细描述。
本发明实施例中,在生成树网络中的每个设备上,当本设备的桥MAC地址变大时,执行以下操作:
-组装桥ID变化消息,并从本设备的指定端口(designatedport)向本设备的下游设备发送该桥ID变化消息。该桥ID变化消息中携带桥MAC地址变更前的桥ID以及桥MAC地址变更后的桥ID。为描述方便,以下将桥ID变化消息表示为{老桥ID,新桥ID},其中,老桥ID即为桥MAC地址变更前的桥ID,新桥ID即为桥MAC地址变更后的桥ID。
-根据新桥ID更新生成树协议的优先级向量,包括本设备的桥优先级向量和各端口的端口优先级向量。其中,根据新桥ID更新优先级向量的操作具体为:用本设备的新桥ID替换优先级向量中本设备的老桥ID。
-触发协议生成树拓扑计算,根据生成树协议计算结果,从指定端口发送生成树协议消息,该生成树协议消息中携带的优先级向量中的本设备的桥ID为新桥ID。
进一步的,为保证桥ID变化消息的可靠性,当设备在感知自身的桥MAC地址变大时立即发送桥ID变化消息之后,当发送生成树协议消息的时间到达时,可在发送生成树协议消息之前,重新发送桥ID变化消息。重新发送桥ID消息的次数可根据需要设定,比如,在本设备桥MAC地址变大后的连续N (N≥1,可预先设定)个生成树协议消息发送周期,每当发送生成树协议消息的时间到达时,在发送生成树协议消息之前,重新发送桥ID变化消息。优选的,N=l,这样既可以保证桥ID变化消息的可靠传输,又不会造成太多网络开销。
当设备接收到上游设备发送的桥ID变化消息后,执行以下操作:
-从本设备的指定端口转发接收到的桥ID变化消息。需要说明的是,如果接收到桥ID变化消息的设备是生成树上的叶子节点,由于该设备上没有指定端口,因此不再转发接收到的桥ID变化消息。
-从接收到的桥ID变化消息中解析出老桥ID和新桥ID,用该新桥ID更新本设备各端口的端口优先级向量。其中,用新桥ID更新优先级向量的操作具体为:用新桥ID替换各端口持有的端口优先级向量中与该老桥ID相同的桥ID。
-触发协议生成树拓扑计算,根据生成树协议计算结果,从本设备的指定端口发送生成树协议消息。
进一步的,各端口的指定优先级向量可在协议生成树拓扑计算后更新,可以不用在收到桥ID变化消息后立即更新。
上述过程中,设备在计算端口角色时,可依据现有生成树协议进行计算。具体的,可依次比较端口收到的优先级向量和该端口的端口优先级向量中的各向量成员,并以数值小为优,若端口优先级向量优于接收到的优先级向量,则忽略接收到的优先级向量,否则,用接收到的优先级向量更新接收端口的端口优先级向量,重新计算设备的根优先级向量并重新计算每个端口的角色。若端口接收到的BPDU来自同一个指定桥(对端的发送桥),则认为是收到较优的BPDU。具有最优根优先级向量的BPDU来源的接收端口被计算为通向根桥的根端口,其它也收到包含根优先级向量的BPDU的端口计算为替换端口,即通向根桥的备份链路。
若发生桥ID变更的设备为根桥设备,当根桥设备的下游网络中的设备收到生成树协议消息后,一方面,由于该下游网络中的设备之前已经根据接收到的桥ID变化消息更新了各端口的端口优先级向量,即,各端口的端口优先级向量中的老桥ID更新为新桥ID,另一方面,由于新桥ID仍为网络中最优的桥ID,因此该设备所接收到的生成树协议消息中的优先级向量与该设备的接收端口的端口优先级向量相匹配,因此该接收端口的端口角色不变,设备重置端口优先级向量的老化定时器,以保活该端口的端口优先级向量,进而不会因该端口的端口优先级向量的老化定时器超时而弓丨起网络拓扑震荡。
考虑到发生桥ID变更的设备的下游网络中存在冗余备份链路,则有可能发生包含有老桥ID的生成树协议消息绕圈的拓扑震荡,本发明实施例还针对该问题提供了解决方案。
下面结合图2、图3A和图3B,说明采用现有方式进行网络拓扑计算时,包含有老桥ID的生成树协议消息绕圈的拓扑震荡过程。
如图2所示,设备I的桥ID从A变为B (A优于B)后,设备I从指定端口发送包含有{B, O, B, P1}的BPDU ;由于设备2的Port2的端口优先级向量{A,0,A,Pl,P2},因此接收到携带有{B,0,B,P1}的BPDU后会被认为是低优先级消息被丢弃。
如图3A所示,当Port2的端口优先级向量超时老化后,设备2的3个端口Port2、Port3和Port5会分别向外发出以自己为根桥的BTOU,其中携带有优先级向量{C,O, C,P2 IP3 IP5}。假如设备3的Port6先收到设备2发送的包含有{C,O, C,P5}的BPDU,因端口 Port6上持有的以桥ID A为根桥的端口优先级向量{A,2,C,P5, P6}也来自发送桥C,结果Port6的端口优先级向量被更新为{C,0,C,P5,P6}。
如图3B所示,因端口 Port4持有的以桥ID A为根桥的端口优先级向量{A, I, C, P3, P4}还未老化,根据生成树协议计算比较Port6没有Port4优,结果Port4仍然是根端口,Port6计算成了指定端口,并向外传播以桥ID A为根桥的BPDU,其中携带{A, 2,D, P6}。而设备2的Port5收到此较优的以根桥ID A为根的BPDU之后,又会计算为根端口,并从其它端口传播以根桥ID A为根的BPDU。设备3的Port4在收到这个以根桥ID A为根的BPDU后,因为与本端口持有的端口优先级向量来自同一个发送桥C,其接收端口优先级向量会被更新。结果Port4计算为根端口,其端口优先级向量为{A,3,C,P3,P4}。
可以看出,因优先级向量传播多经过了一个设备,端口的路径开销增加了,这样就出现了以根桥ID A为根的BPDU残留在网络中并绕圈传播,结果引起网络拓扑的震荡(生成树的端口角色变化),直到以根桥ID A为根的优先级向量被老化。
同样,如果是设备2的桥ID发生变化(桥ID没有原来的优),例如设备2的MAC地址变大,在其下游网络中也会引起类似的拓扑震荡或包含有老桥ID的BPDU绕圈问题(优先级向量中的指定桥ID变化)。
为避免传输链路上滞留有老桥ID的BPDU带来的影响,本发明实施例在上述桥ID更新通知机制的基础上,还采用了以下处理机制:
当设备感知到本设备的桥MAC地址变大后,后续又收到了包含有老桥ID的BPDU,则丢弃此消息,并向此消息的接收端口再次发送桥ID变化消息,其中携带本设备变更前的桥ID和变更后的桥ID: {老桥ID,新桥ID}。
当设备接收到上游设备发送的桥ID变化消息后,记录下该消息中携带的老桥ID和新桥ID以及此桥ID变化消息的接收来源端口,并对该条记录启动一的老化定时器。该老化定时器的定时时长至少是I秒(因为协议的基准tick是I秒),优选的,大于一个BPDU的发送间隔,最好为两倍BPDU的发送间隔。在该老化定时器的计时期间,如果该设备收到了 BTOU,并从其中携带的优先级向量中解析出的桥ID与该老化定时器所对应的记录条目中的老桥ID相同,则丢弃此消息。进一步的,如果该BPDU的接收端口不是包含该老桥ID的桥ID变化消息的来源端口,则再次从该BPDU的接收端口发送桥ID变化消息,其中携带该老桥ID以及对应的新桥ID。
为了更清楚的说明本发明实施例的具体实现过程,下面结合具体应用场景对本发明实施例进行详细说明。
仍以图1所示的网络拓扑组网为例,当设备I的桥MAC地址变大,设备I的桥ID从A变为B (A优于B),但桥ID B仍为网络中的最优桥ID的情况下,其网络拓扑计算过程可包括:
如图4A和图4B所示,设备I从其指定端口 Portl发送桥ID变化消息,以指示桥ID由A变为了 B,然后设备I将本设备的桥优先级向量从{A, O, A, O, 0}更新为{B, O, B, O, O},据桥ID B更新本设备端口优先级向量,设备I根据生成树协议进行生成树计算,并根据新根优先级向量{B, O, B, O, 0}从指定端口 Portl发送携带有优先级向量{B, O, B, P1}的BPDU。生成树的具体计算方法可采用现有技术实现。
设备2从其根端口 Port2接收到设备I发送的桥ID变化消息后,从其指定端口Port3和Port5转发该桥ID变化消息。设备2从接收到的桥ID变化消息中解析出老桥ID为桥ID A、新桥ID为桥ID B后,用桥ID B替换各端口(包括根端口 Port2以及指定端口 Port3、Port5)持有的端口优先级向量中的桥ID A,其中,Port2的端口优先级向量从{A,0,A,P1,P2}更新为{B,0,B,P1,P2},然后,设备2根据生成树协议进行计算,由于桥IDB仍为网络中最优的桥ID,因此计算得到的根优先级向量{B,I, B, PI, P2}中的根桥ID为桥ID B,Port3、Pix)t5仍为指定端口 ;设备2根据计算出的根优先级向量从指定端口 Port3和Port5分别发送BTOU,其中,从Port3发送的BPDU中携带的优先级向量为{B, I, C,P3},从Port5发送的BPDU中携带的优先级向量为{B,I, C,P5}。
其后,当设备2的根端口 Port2收到设备I发送的携带有{B,O, B, P1}的BPDU时,由于Port2持有的端口优先级向量中已经将桥ID A替换为桥ID B,Port2接收到的优先级向量与Port2持有的端口优先级向量相匹配,因此会认为收到的是重复发送的BTOU,即用于保活生成树的BPDU,设备2重置Port2的优先级向量的保活时间,因而Port2的优先级向量不会被超时老化,进而设备2不会生成以自己为根桥的BPDU并向外发送,因此也就不会引起拓扑震荡。
同理,当最下游的设备3的根端口 Port4接收到桥ID变化消息后,从接收到的桥ID变化消息中解析出老桥ID为桥ID A、新桥ID为桥ID B后,用桥ID B替换各端口(包括根端口 Port4和阻塞端口 Port6)持有的端口优先级向量中的桥ID A,其中,Port4的端口优先级向量从{A,1,C,P3,P4}更新为{B,1,C,P3,P4},并根据生成树协议进行计算,计算结果为Port4仍为根端口。其后,当设备3的根端口 Port4收到设备2发来的携带有{B,I, C,P3}的BPDU后,由于Port4当前持有的端口优先级向量中已经将桥ID A替换为桥ID B,Port4接收到的优先级向量与Port4当前持有的端口优先级向量相匹配,因此设备3重置Port4的优先级向量的保活时间,因而Port4的优先级向量不会被超时老化,进而设备3不会生成以自己为根桥的BPDU并向外发送,因此也就不会引起拓扑震荡。
同理,当设备2的MAC地址变大时,则设备2从其指定端口发送桥ID变化消息,触发本设备和其下游设备更新优先级向量中的桥ID的过程,具体处理流程与上述流程类似,在此不再详述。在设备2的MAC地址变大,但变更后的桥ID仍优于设备3的桥ID,设备I的桥ID仍优于设备2变更后的桥ID的情况下,也就是说,在中间设备的桥ID变劣,但仍优于其下游设备桥ID的情况下,基于与上述实施例相同的原理,不会引起网络拓扑震荡。
本发明实施例中,桥ID变化消息的编码和携带方式,可以采用独立的消息报文格式,也可以借用现有协议标准定义的消息报文内容编码格式。
以CIST实例为例,其MSTP消息的消息格式可如图5所示,其中CIST消息部分第5个字节的Flag字段,按目前协议标准的规定不会发出取值为O的标记。
本发明实施例中,设备间可以协定,当CIST实例的Flag字段为O时,此消息表示是根桥ID变化消息。其中第6-13字节的CIST的根桥ID表示变更前的根桥ID,而18-25字节的CIST域根桥ID表示变更后的桥ID,对于其它字段值接收端可以不处理。使用CIST实例的Flag字段来表示根桥ID变化消息,可以同时适用于RSTP和MSTP生成树协议拓扑网络。
通过以上描述可以看出,运行生成树协议的设备在自己的桥MAC地址变大(新桥ID没有原桥ID优)时,从本设备的各指定端口发送桥ID变化消息以通知下游网络设备该桥ID已发生变化。下游设备接收到桥ID变化消息后,继续向下游设备传播此桥ID变化消息,然后自己用新桥ID替换各端口的优先级向量中对应的老桥ID,并重新进行生成树角色计算。这样,对于根桥的桥MAC地址发生变化的情况来说,如果新根桥ID仍是整个网络中最优的桥ID,则不会发生因端口角色变化所导致的拓扑震荡。
基于相同的技术构思,本发明实施例还提供了一种网络设备,该网络设备运行了生成树协议。
参见图6所示,为本发明实施例提供的网络设备的结构示意图。该设备可包括:桥ID变化通知模块61、优先级向量更新模块62、生成树协议模块63,其中:
桥ID变化通知模块61,用于在本设备的桥ID因本设备的桥MAC地址变大而变更时,从本设备的指定端口向下游设备发送桥ID变化消息,其中携带有本设备变更前和变更后的桥ID ;以及,接收上游设备发送的桥ID变化消息,并从本设备的指定端口发送所述桥ID变化消息;
优先级向量更新模块62,用于在本设备的桥ID因本设备的桥MAC地址变大而变更时,根据变更后的桥ID更新本设备的桥优先级向量和各端口的端口优先级向量;以及,在接收到上游设备发送的桥ID变化消息后,根据所述桥ID变化消息中携带的变更后的桥ID更新本设备各端口的端口优先级向量;
生成树协议模块63,用于在优先级向量更新模块62更新优先级向量后,进行生成树计算,并根据计算结果从本设备的指定端口发送生成树协议消息;其中,若本设备的桥ID发生变更,则所述生成树协议消息中携带的优先级向量中本设备的桥ID为本设备变更后的桥ID。
进一步的,生成树协议模块63还用于:根据设定次数,当生成树协议消息发送周期到达时,先指示桥ID变化通知模块61发送所述桥ID变化消息,再从指定端口发送生成树协议消息。相应的,桥ID变化通知模块61根据生成树协议模块63的指示发送所述桥ID变化消息。
进一步的,生成树协议模块63还用于:在桥ID变更通知模块61从本设备的指定端口向下游设备发送桥ID变化消息之后,若接收到生成树协议消息,并解析出该生成树协议消息携带的优先级向量中的桥ID与本设备变更前的桥ID相同,则丢弃所述生成树协议消息,并指示桥ID变化通知模块61从该生成树协议消息的接收端口发送所述桥ID变化消息。相应的,桥ID变化通知模块61还根据生成树协议模块63的指示发送桥ID变化消息。
进一步的,桥ID变化通知模块61还用于:在接收到上游设备发送的桥ID变化消息后,记录所述桥ID变化消息中携带的变更前和变更后的桥ID以及所述桥ID变化消息的接收端口,并对应该条记录启动老化定时器。相应的,生成树协议模块63还用于:若在所述老化定时器计时时间内,接收到生成树协议消息,并解析出该生成树协议消息携带的优先级向量中的桥ID与对应记录中的变更前的桥ID相同,则丢弃该生成树协议消息,并指示桥ID通知模块61从所述生成树协议消息的接收端口发送桥ID变化消息,其中包含对应记录中的变更前的桥ID和变更后的桥ID。相应的,桥ID变化通知模块61还根据生成树协议模块63的指示发送桥ID变化消息。
优选的,所述老化定时器的计时时长为:大于或等于I个生成树协议消息的发送间隔,并且小于或等于2个生成树协议消息的发送间隔。
具体的,优先级向量更新模块62具体用于:当本设备的桥ID变更时,用本设备变更后的桥ID替换本设备的桥优先级向量中本设备变更前的桥ID,用本设备变更后的桥ID替换本设备各端口的端口优先级向量中本设备变更前的桥ID;当接收到上游设备发送的桥ID变化消息后,解析出所述桥ID变化消息中携带的变更前和变更后的桥ID,将本设备各端口的端口优先级向量中与解析出的变更前的桥ID相同的桥ID,替换为解析出的变更后的桥ID。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
权利要求
1.一种网络拓扑计算方法,应用于运行生成树协议的设备,其特征在于,该方法包括: 当设备的桥ID因本设备的桥MAC地址变大而变更时,所述设备从本设备的指定端口向下游设备发送桥ID变化消息,其中携带有本设备变更前和变更后的桥ID,所述设备根据变更后的桥ID更新本设备的桥优先级向量和各端口的端口优先级向量,进行生成树计算,并根据计算结果从本设备的指定端口发送生成树协议消息,其中携带的优先级向量中本设备的桥ID为本设备变更后的桥ID ; 当设备接收到上游设备发送的桥ID变化消息后,从本设备的指定端口向下游设备发送所述桥ID变化消息,根据所述桥ID变化消息中携带的变更后的桥ID更新本设备各端口的端口优先级向量,进行生成树计算,并根据计算结果从本设备的指定端口发送生成树协议消息。
2.如权利要求1所述的方法,其特征在于,桥ID变更的设备从本设备的指定端口向下游设备发送桥ID变化消息之后,还执行以下步骤: 根据设定次数,当生成树协议消息发送周期到达时,在发送生成树协议消息之前,从本设备的指定端口发送所述桥ID变化消息。
3.如权利要求1所述的方法,其特征在于,该方法还包括: 桥ID变更的设备从本设备的指定端口向下游设备发送桥ID变化消息之后,若接收到生成树协议消息,并解析出该生成树协议消息携带的优先级向量中的桥ID与本设备变更前的桥ID相同,则丢弃所述生成树协议消息,并从该生成树协议消息的接收端口发送所述桥ID变化消息。
4.如权利要求1所述的方法,其特征在于,该方法还包括: 当设备接收到上游设备发送的桥ID变化消息后,记录所述桥ID变化消息中携带的变更前和变更后的桥ID以及所述桥ID变化消息的接收端口,并对应该条记录启动老化定时器; 若所述设备在所述老化定时器计时时间内,接收到生成树协议消息,并解析出该生成树协议消息携带的优先级向量中的桥ID与对应记录中的变更前的桥ID相同,则丢弃该生成树协议消息,并从所述生成树协议消息的接收端口发送桥ID变化消息,其中包含对应记录中的变更前的桥ID和变更后的桥ID。
5.如权利要求4所述的方法,其特征在于,所述老化定时器的计时时长为:大于或等于I个生成树协议消息的发送间隔,并且小于或等于2个生成树协议消息的发送间隔。
6.如权利要求1-5任意项所述的方法,其特征在于,桥ID变更的设备根据本设备变更后的桥ID更新本设备的桥优先级向量和各端口的端口优先级向量,具体为: 桥ID变更的设备用本设备变更后的桥ID替换本设备的桥优先级向量中本设备变更前的桥ID,用本设备变更后的桥ID替换本设备各端口的端口优先级向量中本设备变更前的桥ID ; 接收到上游设备发送的桥ID变化消息的设备,根据所述桥ID变化消息中携带的变更后的桥ID更新本设备各端口的端口优先级向量,具体为: 接收到上游设备发送的桥ID变化消息的设备,解析出所述桥ID变化消息中携带的变更前和变更后的桥ID,将本设备各端口的端口优先级向量中与解析出的变更前的桥ID相同的桥ID,替换为解析出的变成后的桥ID。
7.—种网络设备,运行有生成树协议,其特征在于,包括: 桥ID变化通知模块,用于在本设备的桥ID因本设备的桥MAC地址变大而变更时,从本设备的指定端口向下游设备发送桥ID变化消息,其中携带有本设备变更前和变更后的桥ID ;以及,接收上游设备发送的桥ID变化消息,并从本设备的指定端口发送所述桥ID变化消息; 优先级向量更新模块,用于在本设备的桥ID因本设备的桥MAC地址变大而变更时,根据变更后的桥ID更新本设备的桥优先级向量和各端口的端口优先级向量;以及,在接收到上游设备发送的桥ID变化消息后,根据所述桥ID变化消息中携带的变更后的桥ID更新本设备各端口的端口优先级向量; 生成树协议模块,用于在所述优先级向量更新模块更新优先级向量后,进行生成树计算,并根据计算结果从本设备的指定端口发送生成树协议消息;其中,若本设备的桥ID发生变更,则所述生成树协议消息中携带的优先级向量中本设备的桥ID为本设备变更后的桥ID。
8.如权利要求7所述的设备,其特征在于,所述生成树协议模块还用于,根据设定次数,当生成树协议消息发送周期到达时,先指示所述桥ID变化通知模块发送所述桥ID变化消息,再从指定端口发送生成树协议消息; 所述桥ID变化通知模块还用于,根据所述生成树协议模块的指示发送所述桥ID变化消息。
9.如权利要求7所述的设备,其特征在于,所述生成树协议模块还用于,在所述桥ID变更通知模块从本设备的 指定端口向下游设备发送桥ID变化消息之后,若接收到生成树协议消息,并解析出该生成树协议消息携带的优先级向量中的桥ID与本设备变更前的桥ID相同,则丢弃所述生成树协议消息,并指示所述桥ID变化通知模块从该生成树协议消息的接收端口发送所述桥ID变化消息; 所述桥ID变化通知模块还用于,根据所述生成树协议模块的指示发送桥ID变化消息。
10.如权利要求7所述的设备,其特征在于,所述桥ID变化通知模块还用于,在接收到上游设备发送的桥ID变化消息后,记录所述桥ID变化消息中携带的变更前和变更后的桥ID以及所述桥ID变化消息的接收端口,并对应该条记录启动老化定时器; 所述生成树协议模块还用于,若在所述老化定时器计时时间内,接收到生成树协议消息,并解析出该生成树协议消息携带的优先级向量中的桥ID与对应记录中的变更前的桥ID相同,则丢弃该生成树协议消息,并指示所述桥ID通知模块从所述生成树协议消息的接收端口发送桥ID变化消息,其中包含对应记录中的变更前的桥ID和变更后的桥ID ; 所述桥ID变化通知模块还用于,根据所述生成树协议模块的指示发送桥ID变化消息。
11.如权利要求10所述的方法,其特征在于,所述老化定时器的计时时长为:大于或等于I个生成树协议消息的发送间隔,并且小于或等于2个生成树协议消息的发送间隔。
12.如权利要求7-11任意项所述的设备,其特征在于,所述优先级向量更新模块具体用于,当本设备的桥ID变更时,用本设备变更后的桥ID替换本设备的桥优先级向量中本设备变更前的桥ID,用本设备变更后的桥ID替换本设备各端口的端口优先级向量中本设备变更前的桥ID ;当接收到上游设备发送的桥ID变化消息后,解析出所述桥ID变化消息中携带的变更前和变更后的桥ID,将本设备各端口的端口优先级向量中与解析出的变更前的桥ID相同的桥ID, 替换为解析出的变成后的桥ID。
全文摘要
本发明公开了一种网络拓扑计算方法和设备。该方法包括当运行生成树协议的设备的桥MAC地址变大时,从指定端口发送桥ID变化消息,其中携带有本设备变更前后的桥ID,该设备根据变更后的桥ID更新本设备的桥优先级向量和各端口的端口优先级向量,进行生成树计算,从本设备的指定端口发送生成树协议消息,其中携带的优先级向量中本设备的桥ID为本设备变更后的桥ID;当设备接收到上游设备发送的桥ID变化消息后,从指定端口发送所述桥ID变化消息,根据桥ID变化消息中携带的变更后的桥ID更新本设备各端口的端口优先级向量,进行生成树计算,从本设备的指定端口发送生成树协议消息。本发明可减少因桥ID变化所引起的网络拓扑震荡。
文档编号H04L12/757GK103139080SQ20131007089
公开日2013年6月5日 申请日期2013年3月6日 优先权日2013年3月6日
发明者王明军, 周万 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1