專利名稱:一種網絡拓撲計算方法和設備的制作方法
技術領域:
本發(fā)明涉及通信領域,尤其涉及一種網絡拓撲計算方法和設備。
背景技術:
生成樹協議是一種二層管理協議,它通過有選擇性地阻塞網絡冗余鏈路來達到消除網絡二層環(huán)路的目的,同時具備鏈路的備份功能。生成樹協議隨著網絡的不斷發(fā)展而不斷更新換代。最初被廣泛應用的是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,公共和內部生成樹)保證全網絡拓撲結構的無環(huán)路存在。
運行生成樹協議的設備之間,互相通告生成樹協議消息,如BPDU (BridgeProtocol Data Unit,橋協議數據單元),其中攜帶有用于生成樹計算的所有有用信息,設備根據這些信息進行比較計算,確定出端口角色,在整個網絡內計算出具有唯一樹根節(jié)點的無環(huán)路樹形網絡拓撲結構。
在MSTP的計算過程中,端口角色有根端口、指定端口、替換端口和阻塞端口等,其中:
根(root port)端口:通向根橋并提供轉發(fā)通路的端口,負責向根橋方向轉發(fā)數據;
指定端口(designated port):從樹根指向樹的葉子節(jié)點,提供下行轉發(fā)通路的端口,負責向下游網段或設備轉發(fā)數據;
替換(alternative port)端口:通向根橋,但只提供備份的阻塞端口為替換端口,當根端口被阻塞后,替換端口將成為新的根端口 ;
阻塞(backup port)端口:當開啟了 MSTP的同一臺設備的兩個端口互相連接時就存在一個環(huán)路,此時設備會阻塞端口 ID較小的端口,而另外一個端口則處于轉發(fā)狀態(tài),成為指定端口。阻塞端口是指定端口的備份端口。
所有網橋的MSTP角色都是通過生成樹協議消息中攜帶的信息計算出來的,消息中攜帶的最重要的信息就是生成樹的優(yōu)先級向量,優(yōu)先級向量的組成為:{根橋ID,根路徑開銷,指定橋ID,指定端口 ID},其中各向量成員含義如下:
根橋ID:即根橋的標識,由根橋的優(yōu)先級和MAC (Media Access Control,媒體訪問控制)地址組成;
根路徑開銷:到根橋的總路徑開銷;
指定橋ID:即發(fā)送橋的標識,由指定橋的優(yōu)先級和MAC地址組成;
指定端口 ID:即指向下游設備的發(fā)送端口的標識,由指定端口的優(yōu)先級和該端口的全局編號組成。
運行生成樹協議的設備根據生成樹協議計算生成樹時所依據的優(yōu)先級向量中除包括{根橋ID,根路徑開銷,指定橋ID,指定端口 ID}以外,還在該向量的尾部加上接收端口 ID,S卩,優(yōu)先級向量的組成為:{根橋ID,根路徑開銷,指定橋ID,指定端口 ID,接收端口ID}。
MSTP角色和端口角色的計算中涉及到的一些優(yōu)先級向量包括:
消息優(yōu)先級向量:由從生成樹協議消息中接收的優(yōu)先級向量,加上接收端口 ID所構成的優(yōu)先級向量;
端口優(yōu)先級向量:端口優(yōu)先級向量是隨端口收到的消息優(yōu)先級向量更新的:如果端口收到的消息優(yōu)先級向量優(yōu)于端口優(yōu)先級向量,則將端口優(yōu)先級向量更新為消息優(yōu)先級向量;否則,端口優(yōu)先級向量保持不變;
根路徑優(yōu)先級向量:根路徑優(yōu)先級向量由端口優(yōu)先級向量計算得到,如果端口優(yōu)先級向量來自同一域的網橋,根路徑優(yōu)先級向量的內部路徑開銷為端口優(yōu)先級向量的內部根路徑開銷和端口路徑開銷之和;
橋優(yōu)先級向量:橋優(yōu)先級向量中的根橋ID和指定橋ID都是本橋ID,路徑開銷為0,指定端口 ID和接收端口 ID也全為O ;
根優(yōu)先級向量:根優(yōu)先級向量是橋優(yōu)先級向量和所有指定橋ID和本橋ID值不相同的根路徑優(yōu)先級向量的最優(yōu)值;
指定優(yōu)先級向量:端口的指定優(yōu)先級向量由根優(yōu)先級向量計算得到,將根優(yōu)先級向量的指定橋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的根優(yōu)先級向量為{A,1,A,P1,P2},設備3的根優(yōu)先級向量為{A,2,C,P3,P4}。
Portl發(fā)送的優(yōu)先級向量為{A,O, A, PI},Port2的端口優(yōu)先級向量為{A, O, A, PI, P2},接收自設備I ;Port3發(fā)送的優(yōu)先級向量為{A, I, C,P3},設備3的Port4的端口優(yōu)先級向量為{A, 1,(:,?3^4},接收自設備2屮0代5發(fā)送的優(yōu)先級向量為{A, 1,C,P5},Port6的端口優(yōu)先級向量為{A, 1,C,P5,P6},接收自設備2。端口 Port2、Port4和Port6的端口優(yōu)先級向量要靠其上游設備周期持續(xù)發(fā)送的生成樹協議消息(Brou)來?;?,以保持生成樹拓撲的穩(wěn)定。
如果設備I運行的是堆疊系統或在主備倒換的操作過程中,整機設備的橋MAC地址變小,新的橋ID在整個網絡中是最優(yōu)的,則生成樹協議重新計算的端口角色不會發(fā)生變化,也就不會引起拓撲震蕩。但如果根橋設備的橋MAC地址變大,則因為直連的下游橋設備2接收不到原根橋(橋ID為A )的生成樹協議消息,因此在接收超時的時候會觸發(fā)一次拓撲震蕩。
如圖2所示,當根橋設備I的橋MAC地址變大,例如橋ID從A變?yōu)锽(A優(yōu)于B)后,設備I的端口 Portl周期性地發(fā)出以B為根橋的BPDU,其中攜帶有優(yōu)先級向量{B,O, B, P1}。但由于設備2的Port2持有更優(yōu)的端口優(yōu)先級向量{A,O, A, PI, P2},因此接收到攜帶有{B, O, B, P1}的BPDU后會被認為是低優(yōu)先級消息被丟棄。當Port2的端口優(yōu)先級向量超時老化后(原根橋A已不存在,不再向下游橋發(fā)送?;钕?,設備2的3個端口 Port2、Port3和Port5會分別向外發(fā)出以自己為根橋的BTOU,其中攜帶有優(yōu)先級向量{C,O, C,P2 | P3 | P5},這樣就出現了一次拓撲重新計算的震蕩過程。
根橋設備的橋MAC地址變大,但新的橋ID仍然是網絡中最優(yōu)的橋ID的情況下,弓丨起下游設備的拓撲震蕩,重新計算出的端口角色不會發(fā)生變化,因此這種拓撲震蕩是不必要的。發(fā)明內容
本發(fā)明實施例提供了一種網絡拓撲計算方法和設備,用以減少因橋ID變化所引起的網絡拓撲震蕩。
本發(fā)明實施例提供的網絡拓撲計算方法,應用于運行生成樹協議的設備,該方法包括:
當設備的橋ID因本設備的MAC地址變大而變更時,所述設備從本設備的指定端口向下游設備發(fā)送橋ID變化消息,其中攜帶有本設備變更前和變更后的橋ID,所述設備根據變更后的橋ID更新本設備的橋優(yōu)先級向量和各端口的端口優(yōu)先級向量,進行生成樹計算,并根據計算結果從本設備的指定端口發(fā)送生成樹協議消息,其中攜帶的優(yōu)先級向量中本設備的橋ID為本設備變更后的橋ID ;
當設備接收到上游設備發(fā)送的橋ID變化消息后,從本設備的指定端口向下游設備發(fā)送所述橋ID變化消息,根據所述橋ID變化消息中攜帶的變更后的橋ID更新本設備各端口的端口優(yōu)先級向量,進行生成樹計算,并根據計算結果從本設備的指定端口發(fā)送生成樹協議消息。
本發(fā)明實施例提供的網絡設備,運行有生成樹協議,包括:
橋ID變化通知模塊,用于在本設備的橋ID因本設備的橋MAC地址變大而變更時,從本設備的指定端口向下游設備發(fā)送橋ID變化消息,其中攜帶有本設備變更前和變更后的橋ID ;以及,接收上游設備發(fā)送的橋ID變化消息,并從本設備的指定端口發(fā)送所述橋ID變化消息;
優(yōu)先級向量更新模塊,用于在本設備的橋ID因本設備的橋MAC地址變大而變更時,根據變更后的橋ID更新本設備的橋優(yōu)先級向量和各端口的端口優(yōu)先級向量;以及,在接收到上游設備發(fā)送的橋ID變化消息后,根據所述橋ID變化消息中攜帶的變更后的橋ID更新本設備各端口的端口優(yōu)先級向量;
生成樹協議模塊,用于在所述優(yōu)先級向量更新模塊更新優(yōu)先級向量后,進行生成樹計算,并根據計算結果從本設備的指定端口發(fā)送生成樹協議消息;其中,若本設備的橋ID發(fā)生變更,則所述生成樹協議消息中攜帶的優(yōu)先級向量中本設備的橋ID為本設備變更后的橋ID。
本發(fā)明的上述實施例中,運行生成樹協議的設備在其橋MAC地址變大后,通過指定端口向下游設備發(fā)送攜帶有變更前和變更后的橋ID變化消息,下游設備再通過其指定端口繼續(xù)向下游擴散該橋ID變化消息,從而將該橋ID變化消息擴散到發(fā)生橋ID變更的設備的下游網絡;發(fā)生橋ID變更的設備以及接收到橋ID變化消息的設備,需要根據變更后的橋ID更新本設備的生成樹協議優(yōu)先級向量,進行生成樹計算,并發(fā)送生成樹協議消息。采用上述實施例可減少因橋MAC地址變大而引起的網絡拓撲震蕩,尤其針對根橋設備的橋MAC地址變大,且變更后的橋ID依然是網絡中的最優(yōu)橋ID的情況,可以避免因橋ID變化所引起的網絡拓撲震蕩。
圖1為現有技術中根橋生成樹拓撲示意圖2為現有技術中根橋ID變化后的消息發(fā)送/接收示意圖3A和圖3B為現有技術中以變更前的橋ID為根的生成樹協議消息在網絡中殘留的不意圖4A和圖4B為本發(fā)明實施例中橋ID變化消息和BPDU的傳輸示意圖5為本發(fā)明實施例提供的橋ID變化消息的格式示意圖6為本發(fā)明實施例提供的網絡設備的結構示意圖。
具體實施方式
本發(fā)明實施例提供了一種網絡拓撲計算方法,可以在以下情況時避免網絡拓撲震蕩的發(fā)生:根橋設備的橋MAC地址變大而導致根橋ID變更,但變更后的根橋ID仍然是網絡中最優(yōu)的橋ID。
下面對本發(fā)明實施例進行詳細描述。
本發(fā)明實施例中,在生成樹網絡中的每個設備上,當本設備的橋MAC地址變大時,執(zhí)行以下操作:
-組裝橋ID變化消息,并從本設備的指定端口(designatedport)向本設備的下游設備發(fā)送該橋ID變化消息。該橋ID變化消息中攜帶橋MAC地址變更前的橋ID以及橋MAC地址變更后的橋ID。為描述方便,以下將橋ID變化消息表示為{老橋ID,新橋ID},其中,老橋ID即為橋MAC地址變更前的橋ID,新橋ID即為橋MAC地址變更后的橋ID。
-根據新橋ID更新生成樹協議的優(yōu)先級向量,包括本設備的橋優(yōu)先級向量和各端口的端口優(yōu)先級向量。其中,根據新橋ID更新優(yōu)先級向量的操作具體為:用本設備的新橋ID替換優(yōu)先級向量中本設備的老橋ID。
-觸發(fā)協議生成樹拓撲計算,根據生成樹協議計算結果,從指定端口發(fā)送生成樹協議消息,該生成樹協議消息中攜帶的優(yōu)先級向量中的本設備的橋ID為新橋ID。
進一步的,為保證橋ID變化消息的可靠性,當設備在感知自身的橋MAC地址變大時立即發(fā)送橋ID變化消息之后,當發(fā)送生成樹協議消息的時間到達時,可在發(fā)送生成樹協議消息之前,重新發(fā)送橋ID變化消息。重新發(fā)送橋ID消息的次數可根據需要設定,比如,在本設備橋MAC地址變大后的連續(xù)N (N≥1,可預先設定)個生成樹協議消息發(fā)送周期,每當發(fā)送生成樹協議消息的時間到達時,在發(fā)送生成樹協議消息之前,重新發(fā)送橋ID變化消息。優(yōu)選的,N=l,這樣既可以保證橋ID變化消息的可靠傳輸,又不會造成太多網絡開銷。
當設備接收到上游設備發(fā)送的橋ID變化消息后,執(zhí)行以下操作:
-從本設備的指定端口轉發(fā)接收到的橋ID變化消息。需要說明的是,如果接收到橋ID變化消息的設備是生成樹上的葉子節(jié)點,由于該設備上沒有指定端口,因此不再轉發(fā)接收到的橋ID變化消息。
-從接收到的橋ID變化消息中解析出老橋ID和新橋ID,用該新橋ID更新本設備各端口的端口優(yōu)先級向量。其中,用新橋ID更新優(yōu)先級向量的操作具體為:用新橋ID替換各端口持有的端口優(yōu)先級向量中與該老橋ID相同的橋ID。
-觸發(fā)協議生成樹拓撲計算,根據生成樹協議計算結果,從本設備的指定端口發(fā)送生成樹協議消息。
進一步的,各端口的指定優(yōu)先級向量可在協議生成樹拓撲計算后更新,可以不用在收到橋ID變化消息后立即更新。
上述過程中,設備在計算端口角色時,可依據現有生成樹協議進行計算。具體的,可依次比較端口收到的優(yōu)先級向量和該端口的端口優(yōu)先級向量中的各向量成員,并以數值小為優(yōu),若端口優(yōu)先級向量優(yōu)于接收到的優(yōu)先級向量,則忽略接收到的優(yōu)先級向量,否則,用接收到的優(yōu)先級向量更新接收端口的端口優(yōu)先級向量,重新計算設備的根優(yōu)先級向量并重新計算每個端口的角色。若端口接收到的BPDU來自同一個指定橋(對端的發(fā)送橋),則認為是收到較優(yōu)的BPDU。具有最優(yōu)根優(yōu)先級向量的BPDU來源的接收端口被計算為通向根橋的根端口,其它也收到包含根優(yōu)先級向量的BPDU的端口計算為替換端口,即通向根橋的備份鏈路。
若發(fā)生橋ID變更的設備為根橋設備,當根橋設備的下游網絡中的設備收到生成樹協議消息后,一方面,由于該下游網絡中的設備之前已經根據接收到的橋ID變化消息更新了各端口的端口優(yōu)先級向量,即,各端口的端口優(yōu)先級向量中的老橋ID更新為新橋ID,另一方面,由于新橋ID仍為網絡中最優(yōu)的橋ID,因此該設備所接收到的生成樹協議消息中的優(yōu)先級向量與該設備的接收端口的端口優(yōu)先級向量相匹配,因此該接收端口的端口角色不變,設備重置端口優(yōu)先級向量的老化定時器,以?;钤摱丝诘亩丝趦?yōu)先級向量,進而不會因該端口的端口優(yōu)先級向量的老化定時器超時而弓丨起網絡拓撲震蕩。
考慮到發(fā)生橋ID變更的設備的下游網絡中存在冗余備份鏈路,則有可能發(fā)生包含有老橋ID的生成樹協議消息繞圈的拓撲震蕩,本發(fā)明實施例還針對該問題提供了解決方案。
下面結合圖2、圖3A和圖3B,說明采用現有方式進行網絡拓撲計算時,包含有老橋ID的生成樹協議消息繞圈的拓撲震蕩過程。
如圖2所示,設備I的橋ID從A變?yōu)锽 (A優(yōu)于B)后,設備I從指定端口發(fā)送包含有{B, O, B, P1}的BPDU ;由于設備2的Port2的端口優(yōu)先級向量{A,0,A,Pl,P2},因此接收到攜帶有{B,0,B,P1}的BPDU后會被認為是低優(yōu)先級消息被丟棄。
如圖3A所示,當Port2的端口優(yōu)先級向量超時老化后,設備2的3個端口Port2、Port3和Port5會分別向外發(fā)出以自己為根橋的BTOU,其中攜帶有優(yōu)先級向量{C,O, C,P2 IP3 IP5}。假如設備3的Port6先收到設備2發(fā)送的包含有{C,O, C,P5}的BPDU,因端口 Port6上持有的以橋ID A為根橋的端口優(yōu)先級向量{A,2,C,P5, P6}也來自發(fā)送橋C,結果Port6的端口優(yōu)先級向量被更新為{C,0,C,P5,P6}。
如圖3B所示,因端口 Port4持有的以橋ID A為根橋的端口優(yōu)先級向量{A, I, C, P3, P4}還未老化,根據生成樹協議計算比較Port6沒有Port4優(yōu),結果Port4仍然是根端口,Port6計算成了指定端口,并向外傳播以橋ID A為根橋的BPDU,其中攜帶{A, 2,D, P6}。而設備2的Port5收到此較優(yōu)的以根橋ID A為根的BPDU之后,又會計算為根端口,并從其它端口傳播以根橋ID A為根的BPDU。設備3的Port4在收到這個以根橋ID A為根的BPDU后,因為與本端口持有的端口優(yōu)先級向量來自同一個發(fā)送橋C,其接收端口優(yōu)先級向量會被更新。結果Port4計算為根端口,其端口優(yōu)先級向量為{A,3,C,P3,P4}。
可以看出,因優(yōu)先級向量傳播多經過了一個設備,端口的路徑開銷增加了,這樣就出現了以根橋ID A為根的BPDU殘留在網絡中并繞圈傳播,結果引起網絡拓撲的震蕩(生成樹的端口角色變化),直到以根橋ID A為根的優(yōu)先級向量被老化。
同樣,如果是設備2的橋ID發(fā)生變化(橋ID沒有原來的優(yōu)),例如設備2的MAC地址變大,在其下游網絡中也會引起類似的拓撲震蕩或包含有老橋ID的BPDU繞圈問題(優(yōu)先級向量中的指定橋ID變化)。
為避免傳輸鏈路上滯留有老橋ID的BPDU帶來的影響,本發(fā)明實施例在上述橋ID更新通知機制的基礎上,還采用了以下處理機制:
當設備感知到本設備的橋MAC地址變大后,后續(xù)又收到了包含有老橋ID的BPDU,則丟棄此消息,并向此消息的接收端口再次發(fā)送橋ID變化消息,其中攜帶本設備變更前的橋ID和變更后的橋ID: {老橋ID,新橋ID}。
當設備接收到上游設備發(fā)送的橋ID變化消息后,記錄下該消息中攜帶的老橋ID和新橋ID以及此橋ID變化消息的接收來源端口,并對該條記錄啟動一的老化定時器。該老化定時器的定時時長至少是I秒(因為協議的基準tick是I秒),優(yōu)選的,大于一個BPDU的發(fā)送間隔,最好為兩倍BPDU的發(fā)送間隔。在該老化定時器的計時期間,如果該設備收到了 BTOU,并從其中攜帶的優(yōu)先級向量中解析出的橋ID與該老化定時器所對應的記錄條目中的老橋ID相同,則丟棄此消息。進一步的,如果該BPDU的接收端口不是包含該老橋ID的橋ID變化消息的來源端口,則再次從該BPDU的接收端口發(fā)送橋ID變化消息,其中攜帶該老橋ID以及對應的新橋ID。
為了更清楚的說明本發(fā)明實施例的具體實現過程,下面結合具體應用場景對本發(fā)明實施例進行詳細說明。
仍以圖1所示的網絡拓撲組網為例,當設備I的橋MAC地址變大,設備I的橋ID從A變?yōu)锽 (A優(yōu)于B),但橋ID B仍為網絡中的最優(yōu)橋ID的情況下,其網絡拓撲計算過程可包括:
如圖4A和圖4B所示,設備I從其指定端口 Portl發(fā)送橋ID變化消息,以指示橋ID由A變?yōu)榱?B,然后設備I將本設備的橋優(yōu)先級向量從{A, O, A, O, 0}更新為{B, O, B, O, O},據橋ID B更新本設備端口優(yōu)先級向量,設備I根據生成樹協議進行生成樹計算,并根據新根優(yōu)先級向量{B, O, B, O, 0}從指定端口 Portl發(fā)送攜帶有優(yōu)先級向量{B, O, B, P1}的BPDU。生成樹的具體計算方法可采用現有技術實現。
設備2從其根端口 Port2接收到設備I發(fā)送的橋ID變化消息后,從其指定端口Port3和Port5轉發(fā)該橋ID變化消息。設備2從接收到的橋ID變化消息中解析出老橋ID為橋ID A、新橋ID為橋ID B后,用橋ID B替換各端口(包括根端口 Port2以及指定端口 Port3、Port5)持有的端口優(yōu)先級向量中的橋ID A,其中,Port2的端口優(yōu)先級向量從{A,0,A,P1,P2}更新為{B,0,B,P1,P2},然后,設備2根據生成樹協議進行計算,由于橋IDB仍為網絡中最優(yōu)的橋ID,因此計算得到的根優(yōu)先級向量{B,I, B, PI, P2}中的根橋ID為橋ID B,Port3、Pix)t5仍為指定端口 ;設備2根據計算出的根優(yōu)先級向量從指定端口 Port3和Port5分別發(fā)送BTOU,其中,從Port3發(fā)送的BPDU中攜帶的優(yōu)先級向量為{B, I, C,P3},從Port5發(fā)送的BPDU中攜帶的優(yōu)先級向量為{B,I, C,P5}。
其后,當設備2的根端口 Port2收到設備I發(fā)送的攜帶有{B,O, B, P1}的BPDU時,由于Port2持有的端口優(yōu)先級向量中已經將橋ID A替換為橋ID B,Port2接收到的優(yōu)先級向量與Port2持有的端口優(yōu)先級向量相匹配,因此會認為收到的是重復發(fā)送的BTOU,即用于?;钌蓸涞腂PDU,設備2重置Port2的優(yōu)先級向量的保活時間,因而Port2的優(yōu)先級向量不會被超時老化,進而設備2不會生成以自己為根橋的BPDU并向外發(fā)送,因此也就不會引起拓撲震蕩。
同理,當最下游的設備3的根端口 Port4接收到橋ID變化消息后,從接收到的橋ID變化消息中解析出老橋ID為橋ID A、新橋ID為橋ID B后,用橋ID B替換各端口(包括根端口 Port4和阻塞端口 Port6)持有的端口優(yōu)先級向量中的橋ID A,其中,Port4的端口優(yōu)先級向量從{A,1,C,P3,P4}更新為{B,1,C,P3,P4},并根據生成樹協議進行計算,計算結果為Port4仍為根端口。其后,當設備3的根端口 Port4收到設備2發(fā)來的攜帶有{B,I, C,P3}的BPDU后,由于Port4當前持有的端口優(yōu)先級向量中已經將橋ID A替換為橋ID B,Port4接收到的優(yōu)先級向量與Port4當前持有的端口優(yōu)先級向量相匹配,因此設備3重置Port4的優(yōu)先級向量的保活時間,因而Port4的優(yōu)先級向量不會被超時老化,進而設備3不會生成以自己為根橋的BPDU并向外發(fā)送,因此也就不會引起拓撲震蕩。
同理,當設備2的MAC地址變大時,則設備2從其指定端口發(fā)送橋ID變化消息,觸發(fā)本設備和其下游設備更新優(yōu)先級向量中的橋ID的過程,具體處理流程與上述流程類似,在此不再詳述。在設備2的MAC地址變大,但變更后的橋ID仍優(yōu)于設備3的橋ID,設備I的橋ID仍優(yōu)于設備2變更后的橋ID的情況下,也就是說,在中間設備的橋ID變劣,但仍優(yōu)于其下游設備橋ID的情況下,基于與上述實施例相同的原理,不會引起網絡拓撲震蕩。
本發(fā)明實施例中,橋ID變化消息的編碼和攜帶方式,可以采用獨立的消息報文格式,也可以借用現有協議標準定義的消息報文內容編碼格式。
以CIST實例為例,其MSTP消息的消息格式可如圖5所示,其中CIST消息部分第5個字節(jié)的Flag字段,按目前協議標準的規(guī)定不會發(fā)出取值為O的標記。
本發(fā)明實施例中,設備間可以協定,當CIST實例的Flag字段為O時,此消息表示是根橋ID變化消息。其中第6-13字節(jié)的CIST的根橋ID表示變更前的根橋ID,而18-25字節(jié)的CIST域根橋ID表示變更后的橋ID,對于其它字段值接收端可以不處理。使用CIST實例的Flag字段來表示根橋ID變化消息,可以同時適用于RSTP和MSTP生成樹協議拓撲網絡。
通過以上描述可以看出,運行生成樹協議的設備在自己的橋MAC地址變大(新橋ID沒有原橋ID優(yōu))時,從本設備的各指定端口發(fā)送橋ID變化消息以通知下游網絡設備該橋ID已發(fā)生變化。下游設備接收到橋ID變化消息后,繼續(xù)向下游設備傳播此橋ID變化消息,然后自己用新橋ID替換各端口的優(yōu)先級向量中對應的老橋ID,并重新進行生成樹角色計算。這樣,對于根橋的橋MAC地址發(fā)生變化的情況來說,如果新根橋ID仍是整個網絡中最優(yōu)的橋ID,則不會發(fā)生因端口角色變化所導致的拓撲震蕩。
基于相同的技術構思,本發(fā)明實施例還提供了一種網絡設備,該網絡設備運行了生成樹協議。
參見圖6所示,為本發(fā)明實施例提供的網絡設備的結構示意圖。該設備可包括:橋ID變化通知模塊61、優(yōu)先級向量更新模塊62、生成樹協議模塊63,其中:
橋ID變化通知模塊61,用于在本設備的橋ID因本設備的橋MAC地址變大而變更時,從本設備的指定端口向下游設備發(fā)送橋ID變化消息,其中攜帶有本設備變更前和變更后的橋ID ;以及,接收上游設備發(fā)送的橋ID變化消息,并從本設備的指定端口發(fā)送所述橋ID變化消息;
優(yōu)先級向量更新模塊62,用于在本設備的橋ID因本設備的橋MAC地址變大而變更時,根據變更后的橋ID更新本設備的橋優(yōu)先級向量和各端口的端口優(yōu)先級向量;以及,在接收到上游設備發(fā)送的橋ID變化消息后,根據所述橋ID變化消息中攜帶的變更后的橋ID更新本設備各端口的端口優(yōu)先級向量;
生成樹協議模塊63,用于在優(yōu)先級向量更新模塊62更新優(yōu)先級向量后,進行生成樹計算,并根據計算結果從本設備的指定端口發(fā)送生成樹協議消息;其中,若本設備的橋ID發(fā)生變更,則所述生成樹協議消息中攜帶的優(yōu)先級向量中本設備的橋ID為本設備變更后的橋ID。
進一步的,生成樹協議模塊63還用于:根據設定次數,當生成樹協議消息發(fā)送周期到達時,先指示橋ID變化通知模塊61發(fā)送所述橋ID變化消息,再從指定端口發(fā)送生成樹協議消息。相應的,橋ID變化通知模塊61根據生成樹協議模塊63的指示發(fā)送所述橋ID變化消息。
進一步的,生成樹協議模塊63還用于:在橋ID變更通知模塊61從本設備的指定端口向下游設備發(fā)送橋ID變化消息之后,若接收到生成樹協議消息,并解析出該生成樹協議消息攜帶的優(yōu)先級向量中的橋ID與本設備變更前的橋ID相同,則丟棄所述生成樹協議消息,并指示橋ID變化通知模塊61從該生成樹協議消息的接收端口發(fā)送所述橋ID變化消息。相應的,橋ID變化通知模塊61還根據生成樹協議模塊63的指示發(fā)送橋ID變化消息。
進一步的,橋ID變化通知模塊61還用于:在接收到上游設備發(fā)送的橋ID變化消息后,記錄所述橋ID變化消息中攜帶的變更前和變更后的橋ID以及所述橋ID變化消息的接收端口,并對應該條記錄啟動老化定時器。相應的,生成樹協議模塊63還用于:若在所述老化定時器計時時間內,接收到生成樹協議消息,并解析出該生成樹協議消息攜帶的優(yōu)先級向量中的橋ID與對應記錄中的變更前的橋ID相同,則丟棄該生成樹協議消息,并指示橋ID通知模塊61從所述生成樹協議消息的接收端口發(fā)送橋ID變化消息,其中包含對應記錄中的變更前的橋ID和變更后的橋ID。相應的,橋ID變化通知模塊61還根據生成樹協議模塊63的指示發(fā)送橋ID變化消息。
優(yōu)選的,所述老化定時器的計時時長為:大于或等于I個生成樹協議消息的發(fā)送間隔,并且小于或等于2個生成樹協議消息的發(fā)送間隔。
具體的,優(yōu)先級向量更新模塊62具體用于:當本設備的橋ID變更時,用本設備變更后的橋ID替換本設備的橋優(yōu)先級向量中本設備變更前的橋ID,用本設備變更后的橋ID替換本設備各端口的端口優(yōu)先級向量中本設備變更前的橋ID;當接收到上游設備發(fā)送的橋ID變化消息后,解析出所述橋ID變化消息中攜帶的變更前和變更后的橋ID,將本設備各端口的端口優(yōu)先級向量中與解析出的變更前的橋ID相同的橋ID,替換為解析出的變更后的橋ID。
通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件平臺的方式來實現,當然也可以通過硬件,但很多情況下前者是更佳的實施方式。基于這樣的理解,本發(fā)明的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在一個存儲介質中,包括若干指令用以使得一臺終端設備(可以是手機,個人計算機,服務器,或者網絡設備等)執(zhí)行本發(fā)明各個實施例所述的方法。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視本發(fā)明的保護范圍。
權利要求
1.一種網絡拓撲計算方法,應用于運行生成樹協議的設備,其特征在于,該方法包括: 當設備的橋ID因本設備的橋MAC地址變大而變更時,所述設備從本設備的指定端口向下游設備發(fā)送橋ID變化消息,其中攜帶有本設備變更前和變更后的橋ID,所述設備根據變更后的橋ID更新本設備的橋優(yōu)先級向量和各端口的端口優(yōu)先級向量,進行生成樹計算,并根據計算結果從本設備的指定端口發(fā)送生成樹協議消息,其中攜帶的優(yōu)先級向量中本設備的橋ID為本設備變更后的橋ID ; 當設備接收到上游設備發(fā)送的橋ID變化消息后,從本設備的指定端口向下游設備發(fā)送所述橋ID變化消息,根據所述橋ID變化消息中攜帶的變更后的橋ID更新本設備各端口的端口優(yōu)先級向量,進行生成樹計算,并根據計算結果從本設備的指定端口發(fā)送生成樹協議消息。
2.如權利要求1所述的方法,其特征在于,橋ID變更的設備從本設備的指定端口向下游設備發(fā)送橋ID變化消息之后,還執(zhí)行以下步驟: 根據設定次數,當生成樹協議消息發(fā)送周期到達時,在發(fā)送生成樹協議消息之前,從本設備的指定端口發(fā)送所述橋ID變化消息。
3.如權利要求1所述的方法,其特征在于,該方法還包括: 橋ID變更的設備從本設備的指定端口向下游設備發(fā)送橋ID變化消息之后,若接收到生成樹協議消息,并解析出該生成樹協議消息攜帶的優(yōu)先級向量中的橋ID與本設備變更前的橋ID相同,則丟棄所述生成樹協議消息,并從該生成樹協議消息的接收端口發(fā)送所述橋ID變化消息。
4.如權利要求1所述的方法,其特征在于,該方法還包括: 當設備接收到上游設備發(fā)送的橋ID變化消息后,記錄所述橋ID變化消息中攜帶的變更前和變更后的橋ID以及所述橋ID變化消息的接收端口,并對應該條記錄啟動老化定時器; 若所述設備在所述老化定時器計時時間內,接收到生成樹協議消息,并解析出該生成樹協議消息攜帶的優(yōu)先級向量中的橋ID與對應記錄中的變更前的橋ID相同,則丟棄該生成樹協議消息,并從所述生成樹協議消息的接收端口發(fā)送橋ID變化消息,其中包含對應記錄中的變更前的橋ID和變更后的橋ID。
5.如權利要求4所述的方法,其特征在于,所述老化定時器的計時時長為:大于或等于I個生成樹協議消息的發(fā)送間隔,并且小于或等于2個生成樹協議消息的發(fā)送間隔。
6.如權利要求1-5任意項所述的方法,其特征在于,橋ID變更的設備根據本設備變更后的橋ID更新本設備的橋優(yōu)先級向量和各端口的端口優(yōu)先級向量,具體為: 橋ID變更的設備用本設備變更后的橋ID替換本設備的橋優(yōu)先級向量中本設備變更前的橋ID,用本設備變更后的橋ID替換本設備各端口的端口優(yōu)先級向量中本設備變更前的橋ID ; 接收到上游設備發(fā)送的橋ID變化消息的設備,根據所述橋ID變化消息中攜帶的變更后的橋ID更新本設備各端口的端口優(yōu)先級向量,具體為: 接收到上游設備發(fā)送的橋ID變化消息的設備,解析出所述橋ID變化消息中攜帶的變更前和變更后的橋ID,將本設備各端口的端口優(yōu)先級向量中與解析出的變更前的橋ID相同的橋ID,替換為解析出的變成后的橋ID。
7.—種網絡設備,運行有生成樹協議,其特征在于,包括: 橋ID變化通知模塊,用于在本設備的橋ID因本設備的橋MAC地址變大而變更時,從本設備的指定端口向下游設備發(fā)送橋ID變化消息,其中攜帶有本設備變更前和變更后的橋ID ;以及,接收上游設備發(fā)送的橋ID變化消息,并從本設備的指定端口發(fā)送所述橋ID變化消息; 優(yōu)先級向量更新模塊,用于在本設備的橋ID因本設備的橋MAC地址變大而變更時,根據變更后的橋ID更新本設備的橋優(yōu)先級向量和各端口的端口優(yōu)先級向量;以及,在接收到上游設備發(fā)送的橋ID變化消息后,根據所述橋ID變化消息中攜帶的變更后的橋ID更新本設備各端口的端口優(yōu)先級向量; 生成樹協議模塊,用于在所述優(yōu)先級向量更新模塊更新優(yōu)先級向量后,進行生成樹計算,并根據計算結果從本設備的指定端口發(fā)送生成樹協議消息;其中,若本設備的橋ID發(fā)生變更,則所述生成樹協議消息中攜帶的優(yōu)先級向量中本設備的橋ID為本設備變更后的橋ID。
8.如權利要求7所述的設備,其特征在于,所述生成樹協議模塊還用于,根據設定次數,當生成樹協議消息發(fā)送周期到達時,先指示所述橋ID變化通知模塊發(fā)送所述橋ID變化消息,再從指定端口發(fā)送生成樹協議消息; 所述橋ID變化通知模塊還用于,根據所述生成樹協議模塊的指示發(fā)送所述橋ID變化消息。
9.如權利要求7所述的設備,其特征在于,所述生成樹協議模塊還用于,在所述橋ID變更通知模塊從本設備的 指定端口向下游設備發(fā)送橋ID變化消息之后,若接收到生成樹協議消息,并解析出該生成樹協議消息攜帶的優(yōu)先級向量中的橋ID與本設備變更前的橋ID相同,則丟棄所述生成樹協議消息,并指示所述橋ID變化通知模塊從該生成樹協議消息的接收端口發(fā)送所述橋ID變化消息; 所述橋ID變化通知模塊還用于,根據所述生成樹協議模塊的指示發(fā)送橋ID變化消息。
10.如權利要求7所述的設備,其特征在于,所述橋ID變化通知模塊還用于,在接收到上游設備發(fā)送的橋ID變化消息后,記錄所述橋ID變化消息中攜帶的變更前和變更后的橋ID以及所述橋ID變化消息的接收端口,并對應該條記錄啟動老化定時器; 所述生成樹協議模塊還用于,若在所述老化定時器計時時間內,接收到生成樹協議消息,并解析出該生成樹協議消息攜帶的優(yōu)先級向量中的橋ID與對應記錄中的變更前的橋ID相同,則丟棄該生成樹協議消息,并指示所述橋ID通知模塊從所述生成樹協議消息的接收端口發(fā)送橋ID變化消息,其中包含對應記錄中的變更前的橋ID和變更后的橋ID ; 所述橋ID變化通知模塊還用于,根據所述生成樹協議模塊的指示發(fā)送橋ID變化消息。
11.如權利要求10所述的方法,其特征在于,所述老化定時器的計時時長為:大于或等于I個生成樹協議消息的發(fā)送間隔,并且小于或等于2個生成樹協議消息的發(fā)送間隔。
12.如權利要求7-11任意項所述的設備,其特征在于,所述優(yōu)先級向量更新模塊具體用于,當本設備的橋ID變更時,用本設備變更后的橋ID替換本設備的橋優(yōu)先級向量中本設備變更前的橋ID,用本設備變更后的橋ID替換本設備各端口的端口優(yōu)先級向量中本設備變更前的橋ID ;當接收到上游設備發(fā)送的橋ID變化消息后,解析出所述橋ID變化消息中攜帶的變更前和變更后的橋ID,將本設備各端口的端口優(yōu)先級向量中與解析出的變更前的橋ID相同的橋ID, 替換為解析出的變成后的橋ID。
全文摘要
本發(fā)明公開了一種網絡拓撲計算方法和設備。該方法包括當運行生成樹協議的設備的橋MAC地址變大時,從指定端口發(fā)送橋ID變化消息,其中攜帶有本設備變更前后的橋ID,該設備根據變更后的橋ID更新本設備的橋優(yōu)先級向量和各端口的端口優(yōu)先級向量,進行生成樹計算,從本設備的指定端口發(fā)送生成樹協議消息,其中攜帶的優(yōu)先級向量中本設備的橋ID為本設備變更后的橋ID;當設備接收到上游設備發(fā)送的橋ID變化消息后,從指定端口發(fā)送所述橋ID變化消息,根據橋ID變化消息中攜帶的變更后的橋ID更新本設備各端口的端口優(yōu)先級向量,進行生成樹計算,從本設備的指定端口發(fā)送生成樹協議消息。本發(fā)明可減少因橋ID變化所引起的網絡拓撲震蕩。
文檔編號H04L12/757GK103139080SQ20131007089
公開日2013年6月5日 申請日期2013年3月6日 優(yōu)先權日2013年3月6日
發(fā)明者王明軍, 周萬 申請人:杭州華三通信技術有限公司