專利名稱:防止網(wǎng)絡(luò)環(huán)路的方法、網(wǎng)絡(luò)設(shè)備和生成樹協(xié)議網(wǎng)絡(luò)系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明實施例涉及網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,尤其涉及一種防止網(wǎng)絡(luò)環(huán)路的方法、網(wǎng)絡(luò)
設(shè)備和生成樹協(xié)議網(wǎng)絡(luò)系統(tǒng)。
背景技術(shù):
通常情況下,為了提高網(wǎng)絡(luò)的可靠性,在部署網(wǎng)絡(luò)時通常會部署冗余鏈路。圖1為 現(xiàn)有技術(shù)一種網(wǎng)絡(luò)拓?fù)涞氖疽鈭D,如圖1所示,個人電腦1 (Personal Computer 1 ;以下簡 稱PC1)要與PC2通信時,可以通過兩條鏈路, 一條鏈路是依次通過設(shè)備1和設(shè)備2 :A- > B,另一條鏈路是依次通過設(shè)備1、設(shè)備3和設(shè)備2 :E- > F- > D- > C。這樣,在一條鏈路出 問題的時候,例如圖1中的A-〉B鏈路發(fā)生故障時,PCl和PC2可以通過另一條鏈路E-〉 F- > D- > C進(jìn)行通信。 然而網(wǎng)絡(luò)中冗余鏈路的存在會導(dǎo)致網(wǎng)絡(luò)拓?fù)渲行纬森h(huán)路,從而形成報文廣播風(fēng) 暴,阻礙正常通信?,F(xiàn)有技術(shù)通常采用生成樹協(xié)議(Spa皿ing TreeProtocol ;以下簡稱 STP)解決網(wǎng)絡(luò)拓?fù)渲行纬森h(huán)路,導(dǎo)致報文廣播風(fēng)暴的問題,在網(wǎng)絡(luò)設(shè)備運行STP后,STP會 進(jìn)行生成樹的選舉,網(wǎng)絡(luò)中某些端口在選舉后會進(jìn)入阻塞(blocking)狀態(tài),進(jìn)入阻塞狀態(tài) 的端口不允許轉(zhuǎn)發(fā)報文,從而避免了網(wǎng)絡(luò)拓?fù)渲谐霈F(xiàn)環(huán)路。 例如可以通過運行STP,選舉使得圖1中設(shè)備1的E 口處于阻塞狀態(tài),處于阻塞 狀態(tài)的端口不允許轉(zhuǎn)發(fā)報文,即圖1中的E 口不再轉(zhuǎn)發(fā)報文,從而阻斷環(huán)路。但是在實際的 應(yīng)用中,經(jīng)常會出現(xiàn)處于阻塞狀態(tài)的端口轉(zhuǎn)發(fā)報文的情況,這主要是由于網(wǎng)絡(luò)設(shè)備的工作 環(huán)境比較惡劣,有時網(wǎng)絡(luò)設(shè)備的CPU使用率會長時間處于很高的狀態(tài),內(nèi)存資源也會不足, 這有可能導(dǎo)致一些該送CPU處理的網(wǎng)橋協(xié)議數(shù)據(jù)單元(Bridge Protocol DataUnit;以下 簡稱BPDU)報文被錯誤的丟棄,沒有得到及時的處理,于是導(dǎo)致網(wǎng)絡(luò)設(shè)備對處于阻塞狀態(tài) 的端口的處理出現(xiàn)錯誤;或者由于STP功能的不穩(wěn)定,而導(dǎo)致端口的阻塞狀態(tài)沒有設(shè)置成 功;另外網(wǎng)絡(luò)設(shè)備接收到的協(xié)議類的報文,都需要送往CPU處理,但是協(xié)議類的報文有可能 被進(jìn)程誤從處于阻塞狀態(tài)的端口轉(zhuǎn)發(fā)出去,并且由于協(xié)議類報文的數(shù)目非常多,因此很難 進(jìn)行窮舉性的測試;還有當(dāng)網(wǎng)絡(luò)拓?fù)渲械哪撑_網(wǎng)絡(luò)設(shè)備出現(xiàn)故障時,也會導(dǎo)致處于阻塞狀 態(tài)的端口轉(zhuǎn)發(fā)報文,影響整個網(wǎng)絡(luò)的正常使用。以上這些原因都會導(dǎo)致處于阻塞狀態(tài)的端 口轉(zhuǎn)發(fā)報文,而STP本身無法預(yù)防這種情況下的環(huán)路。 一旦網(wǎng)絡(luò)中出現(xiàn)環(huán)路,會給網(wǎng)絡(luò)帶來 極為嚴(yán)重的后果,甚至?xí)?dǎo)致大面積的網(wǎng)絡(luò)癱瘓。
發(fā)明內(nèi)容
本發(fā)明實施例提供一種防止網(wǎng)絡(luò)環(huán)路的方法、網(wǎng)絡(luò)設(shè)備和生成樹協(xié)議網(wǎng)絡(luò)系統(tǒng), 以在局部STP組網(wǎng)故障導(dǎo)致處于阻塞狀態(tài)的端口轉(zhuǎn)發(fā)報文的情況下,確保網(wǎng)絡(luò)無環(huán)路。
本發(fā)明實施例提供一種防止網(wǎng)絡(luò)環(huán)路的方法,包括 通過處于轉(zhuǎn)發(fā)狀態(tài)的指定端口發(fā)送攜帶第一標(biāo)識的網(wǎng)橋協(xié)議數(shù)據(jù)單元BPDU請求 報文至與所述指定端口連接的端口 ,所述第一標(biāo)識用于請求所述與所述指定端口連接的端口是否為阻塞端口; 在接收到攜帶第二標(biāo)識的BPDU響應(yīng)報文之后,或者,在第一預(yù)定時間內(nèi)未接收到 BPDU響應(yīng)報文之后,如果接收到非BPDU報文的報文,則將所述指定端口置為阻塞狀態(tài),所 述第二標(biāo)識用于標(biāo)識所述與所述指定端口連接的端口是阻塞端口 。
本發(fā)明實施例還提供一種網(wǎng)絡(luò)設(shè)備,包括 發(fā)送模塊,用于通過處于轉(zhuǎn)發(fā)狀態(tài)的指定端口發(fā)送攜帶第一標(biāo)識的網(wǎng)橋協(xié)議數(shù)據(jù) 單元BPDU請求報文至與所述指定端口連接的端口 ,所述第一標(biāo)識用于請求所述與所述指 定端口連接的端口是否為阻塞端口;
接收模塊,用于接收報文; 設(shè)置模塊,用于在所述接收模塊接收到攜帶第二標(biāo)識的BPDU響應(yīng)報文之后,或 者,在第一預(yù)定時間內(nèi)所述接收模塊未接收到BPDU響應(yīng)報文之后,如果所述接收模塊接收 到非BPDU報文的報文,將所述指定端口置為阻塞狀態(tài),所述第二標(biāo)識用于標(biāo)識所述與所述 指定端口連接的端口是阻塞端口 。 本發(fā)明實施例還提供一種生成樹協(xié)議網(wǎng)絡(luò)系統(tǒng),包括至少三個網(wǎng)絡(luò)設(shè)備。
通過本發(fā)明實施例,網(wǎng)絡(luò)設(shè)備發(fā)送攜帶第一標(biāo)識的BPDU請求報文至與指定端口 連接的端口 ,在接收到攜帶第二標(biāo)識的BPDU響應(yīng)報文之后,或者,在第一預(yù)定時間內(nèi)未接 收到BPDU響應(yīng)報文之后,如果接收到非BPDU報文的報文,則將指定端口置為阻塞狀態(tài);從 而實現(xiàn)了在局部STP組網(wǎng)故障導(dǎo)致處于阻塞狀態(tài)的端口轉(zhuǎn)發(fā)報文的情況下,防止網(wǎng)絡(luò)環(huán)路 的產(chǎn)生。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā) 明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根 據(jù)這些附圖獲得其他的附圖。
圖1為現(xiàn)有技術(shù)一種網(wǎng)絡(luò)拓?fù)涞氖疽鈭D; 圖2為本發(fā)明STP網(wǎng)絡(luò)一個實施例的結(jié)構(gòu)示意圖; 圖3為本發(fā)明防止網(wǎng)絡(luò)環(huán)路的方法一個實施例的流程圖; 圖4為本發(fā)明防止網(wǎng)絡(luò)環(huán)路的方法另一個實施例的流程圖; 圖5為本發(fā)明BPDU報文一個實施例的結(jié)構(gòu)示意圖; 圖6為本發(fā)明恢復(fù)指定端口的狀態(tài)一個實施例的流程圖; 圖7為本發(fā)明網(wǎng)絡(luò)設(shè)備一個實施例的結(jié)構(gòu)示意圖。
具體實施例方式
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例 中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是 本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員 在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
正常情況下,運行STP的網(wǎng)絡(luò)設(shè)備,例如網(wǎng)橋或交換機(jī)在規(guī)定的時間間隔(默認(rèn)2秒)內(nèi)通過BPDU的組播幀與其他網(wǎng)絡(luò)設(shè)備交換配置信息,進(jìn)行生成樹選舉。BPDU組播幀 攜帶了生成樹選舉中用到的重要參數(shù)根標(biāo)識(Identifier ;以下簡稱ID)、根路徑開銷、 網(wǎng)橋ID和端口 ID ;其中,根ID是根網(wǎng)橋的網(wǎng)橋ID,根路徑開銷是到達(dá)根網(wǎng)橋的STP開銷, 網(wǎng)橋ID是BPDU發(fā)送網(wǎng)橋ID,端口 ID是BPDU發(fā)送網(wǎng)橋端口 ID。
具體選舉的過程包括 1、根橋選舉通過比較網(wǎng)橋ID選取ID最小的網(wǎng)橋為根網(wǎng)橋,一般網(wǎng)絡(luò)中只會有一 個根網(wǎng)橋。 網(wǎng)橋ID由網(wǎng)橋優(yōu)先級和網(wǎng)橋的媒體接入控制(Media Access Control ;以下簡 稱MAC)地址組成,網(wǎng)橋ID越小的,BPDU越優(yōu)。在初始狀態(tài),進(jìn)行STP選舉的網(wǎng)絡(luò)設(shè)備分別 以自己為根網(wǎng)橋,發(fā)送BPDU,然后各網(wǎng)絡(luò)設(shè)備將接收到的BPDU中的網(wǎng)橋ID與該網(wǎng)絡(luò)設(shè)備發(fā) 送的BPDU中的網(wǎng)橋ID進(jìn)行比較,如果接收到的BPDU中的網(wǎng)橋ID的優(yōu)先級高,則保存接收 到的BPDU中攜帶的參數(shù),更新根路徑開銷后,以更新后的BPDU信息繼續(xù)向外擴(kuò)散;如果接 收到的BPDU中的網(wǎng)橋ID的優(yōu)先級比自己的低,則丟棄接收到的BPDU,并發(fā)送該網(wǎng)絡(luò)設(shè)備的 更高優(yōu)先級的BPDU進(jìn)行回應(yīng);如果接收到的BPDU中的網(wǎng)橋ID與該網(wǎng)絡(luò)設(shè)備發(fā)送的BPDU 中的網(wǎng)橋ID的優(yōu)先級相同,則比較MAC地址的大小。 圖2為本發(fā)明STP網(wǎng)絡(luò)一個實施例的結(jié)構(gòu)示意圖,如圖2所示,設(shè)備1、設(shè)備2和設(shè) 備3最開始都會以自己為根網(wǎng)橋發(fā)送BPDU給鏈路上的網(wǎng)絡(luò)設(shè)備。設(shè)備2接收到設(shè)備1和設(shè) 備3發(fā)送的BPDU之后,會將設(shè)備1和設(shè)備3發(fā)送的BPDU與設(shè)備2發(fā)送的BPDU進(jìn)行對比,如 果三臺設(shè)備都使用相同的優(yōu)先級(假設(shè)優(yōu)先級均為8000),但設(shè)備2具有最低MAC地址(假 設(shè)設(shè)備2的MAC地址為OO:OO:Oc:aa:aa:aa ;設(shè)備3的MAC地址為OO:OO:Oc:bb:bb:bb ; 設(shè)備1的MAC地址為00:00: Oc: cc: cc: cc,其中設(shè)備2的MAC地址00:00: Oc: aa: aa: aa是最 小的),這時設(shè)備2將發(fā)送自己的BPDU進(jìn)行回應(yīng)。而設(shè)備1和設(shè)備3接收到設(shè)備2的BPDU 后,同樣比較BPDU中網(wǎng)橋ID的優(yōu)先級和MAC地址,發(fā)現(xiàn)優(yōu)先級一樣,設(shè)備2的MAC地址更 低,故選舉設(shè)備2為根網(wǎng)橋,設(shè)備1和設(shè)備3為非根橋。 2、根端口 (Root Port)選舉根端口為非根橋到根橋的路徑最短的端口 。
如圖2所示,設(shè)備2為根橋,設(shè)備1和設(shè)備3為非根橋,設(shè)備1和設(shè)備3到設(shè)備2 路徑最短的端口分別是A 口和D 口,所以設(shè)備l的A 口被選舉為根端口,設(shè)備3的D 口也被 選舉為Root Port。 3、指定端口 (Designated Port)選舉 首先,根橋所有的端口均為指定端口,所以圖2中設(shè)備2的端口 B和端口 C被選舉 為指定端口。 設(shè)備1和設(shè)備3通過對比各自收到的BPDU和自身發(fā)出的BPDU,端口 E和端口 F中 將有一個端口被選舉為指定,過程如下 (1)比較根網(wǎng)橋ID ;根網(wǎng)橋ID相同,設(shè)備1和設(shè)備3都是以設(shè)備2為根網(wǎng)橋;
(2)比較到根網(wǎng)橋的根路徑開銷;到根網(wǎng)橋的根路徑開銷是以路徑中所有鏈路的 帶寬為基礎(chǔ)而累加的總路徑開銷假設(shè)圖2中局域網(wǎng)l(LocalArea Network l;以下簡稱 LAN1) 、 LAN2和LAN3每個鏈路的開銷均是100,因此設(shè)備1和設(shè)備3到根網(wǎng)橋的開銷都為 IOO,進(jìn)行下一步比較; (3)比較發(fā)送方的網(wǎng)橋ID;設(shè)備1和設(shè)備3的網(wǎng)橋ID具有相同的優(yōu)先級(均為8000),因此具有更低MAC地址的網(wǎng)橋就具有最低的網(wǎng)橋ID。圖2中設(shè)備3具有更低的MAC 地址,因此設(shè)備1和設(shè)備3發(fā)送的BPDU中,設(shè)備3發(fā)送的BPDU更優(yōu)。 綜上所述,設(shè)備3的端口 F被選舉為指定端口 ,設(shè)備1的端口 E被選舉為根端口的 替換端口 (Alternate Port)。 下面對STP網(wǎng)絡(luò)中各端口的角色和端口狀態(tài)進(jìn)行說明。
1、端口角色 根端口 非根網(wǎng)橋到根網(wǎng)橋的最低開銷路徑的端口,例如圖2中的端口 A和端口 D ; 指定端口 每個LAN通過該端口連接到根橋,例如圖2中的端口 B、端口 C和端口 F ; 根端口的替換端口 一旦根端口失效,根端口的替換端口立刻變?yōu)楦丝?。
2、端口狀態(tài) 阻塞狀態(tài)不對幀進(jìn)行轉(zhuǎn)發(fā),也不進(jìn)行源MAC地址學(xué)習(xí),但卻監(jiān)聽流入的BPDU ;
學(xué)習(xí)(learning)狀態(tài)不對接收到的幀進(jìn)行轉(zhuǎn)發(fā),但進(jìn)行源MAC地址學(xué)習(xí),是轉(zhuǎn)發(fā) (forwarding)狀態(tài)的過渡; 轉(zhuǎn)發(fā)狀態(tài)既對接收到的幀進(jìn)行轉(zhuǎn)發(fā),也進(jìn)行源MAC地址的學(xué)習(xí)。
正常情況下,根端口和指定端口處于轉(zhuǎn)發(fā),根端口的替換端口處于阻塞狀態(tài),處于 阻塞狀態(tài)的端口是不轉(zhuǎn)發(fā)報文的。因此圖2所示STP網(wǎng)絡(luò)經(jīng)過生成樹選舉之后,設(shè)備1的 端口 E進(jìn)入阻塞,打斷了環(huán)路。 圖2中,A (R, F)表示設(shè)備1的端口 A被選舉為根端口 ,并且處于轉(zhuǎn)發(fā)狀態(tài);
E(A, Block)表示設(shè)備1的端口 E被選舉為根端口的替換端口 ,并且處于阻塞狀 態(tài); B (D, F)表示設(shè)備2的端口 B被選舉為指定端口 ,并且處于轉(zhuǎn)發(fā)狀態(tài); C(D,F(xiàn))表示設(shè)備2的端口C被選舉為指定端口,并且處于轉(zhuǎn)發(fā)狀態(tài); D (R, F)表示設(shè)備3的端口 D被選舉為根端口 ,并且處于轉(zhuǎn)發(fā)狀態(tài); F(D,F(xiàn))表示設(shè)備3的端口 F被選舉為指定端口,并且處于轉(zhuǎn)發(fā)狀態(tài)。 總的來說,通過生成樹選舉,使得設(shè)備1的端口 E處于阻塞狀態(tài),處于阻塞狀態(tài)的
端口不允許轉(zhuǎn)發(fā)報文,從而可以阻斷網(wǎng)絡(luò)環(huán)路。但是在實際的應(yīng)用中,經(jīng)常會出現(xiàn)處于阻塞
狀態(tài)的端口轉(zhuǎn)發(fā)報文的情況,這說明處于阻塞狀態(tài)的端口對應(yīng)的網(wǎng)絡(luò)設(shè)備的軟件或硬件發(fā)
生了故障,這將導(dǎo)致網(wǎng)絡(luò)出現(xiàn)環(huán)路。本發(fā)明實施例提供一種防止網(wǎng)絡(luò)環(huán)路的方法,能夠在局
部STP組網(wǎng)故障導(dǎo)致處于阻塞狀態(tài)的端口轉(zhuǎn)發(fā)報文的情況下,確保網(wǎng)絡(luò)無環(huán)路。 圖3為本發(fā)明防止網(wǎng)絡(luò)環(huán)路的方法一個實施例的流程圖,如圖3所示,本實施例可
以包括 步驟301,通過處于轉(zhuǎn)發(fā)狀態(tài)的指定端口發(fā)送攜帶第一標(biāo)識的BPDU請求報文至與 指定端口連接的端口 ,該第一標(biāo)識用于請求與指定端口連接的端口是否為阻塞端口 。
本實施例中,網(wǎng)絡(luò)設(shè)備可以通過處于轉(zhuǎn)發(fā)狀態(tài)的指定端口周期性發(fā)送攜帶第一標(biāo) 識的BPDU請求報文至與該指定端口連接的端口 ;其中,可以將該周期設(shè)為2秒。
步驟302,在接收到攜帶第二標(biāo)識的BPDU響應(yīng)報文之后,或者,在第一預(yù)定時間內(nèi) 未接收到BPDU響應(yīng)報文之后,如果接收到非BPDU報文的報文,則將上述指定端口置為阻塞狀態(tài);其中,第二標(biāo)識用于標(biāo)識與指定端口連接的端口是阻塞端口 。 本實施例中,第一預(yù)定時間為預(yù)計網(wǎng)絡(luò)設(shè)備能收到BPDU響應(yīng)報文的時間,從該網(wǎng) 絡(luò)設(shè)備發(fā)出攜帶第一標(biāo)識的BPDU請求報文的時刻開始計時,可以將第一預(yù)定時間設(shè)置為4 秒。 上述實施例中,網(wǎng)絡(luò)設(shè)備發(fā)送攜帶第一標(biāo)識的BPDU請求報文至與指定端口連接 的端口 ,在接收到攜帶第二標(biāo)識的BPDU響應(yīng)報文之后,或者,在第一預(yù)定時間內(nèi)未接收到 BPDU響應(yīng)報文之后,如果接收到非BPDU報文的報文,則將指定端口置為阻塞狀態(tài);從而實 現(xiàn)了在局部STP組網(wǎng)故障導(dǎo)致處于阻塞狀態(tài)的端口轉(zhuǎn)發(fā)報文的情況下,防止網(wǎng)絡(luò)環(huán)路的產(chǎn) 生。 圖4為本發(fā)明防止網(wǎng)絡(luò)環(huán)路的方法另一個實施例的流程圖,本實施例通過在現(xiàn)有 的BPDU報文中添加標(biāo)志(flag)字段,建立請求、響應(yīng)的機(jī)制,網(wǎng)絡(luò)設(shè)備請求與該網(wǎng)絡(luò)設(shè)備 的指定端口連接的端口是否為阻塞端口 ,如果接收到的響應(yīng)為與指定端口連接的端口是阻 塞端口 ,則判斷是否收到了非BPDU報文的報文,如果接收到了非BPDU報文的報文,則將該 網(wǎng)絡(luò)設(shè)備的指定端口置為阻塞狀態(tài),以防止網(wǎng)絡(luò)環(huán)路的產(chǎn)生。 圖5為本發(fā)明BPDU報文一個實施例的結(jié)構(gòu)示意圖。按照802. Id規(guī)定,BPDU報文 的第五字節(jié),即flag字段的第二位到第五位保留,取值為O。本實施例通過將該保留字段 的前兩位,即將flag字段的第二位和第三位設(shè)置為不同的值,建立請求和響應(yīng)機(jī)制,并使 BPDU報文攜帶不同的標(biāo)識,具體設(shè)置如下
"00":正常生成樹選舉過程中保持為0 ; " 10 " :BPDU請求報文,用于請求與指定端口連接的端口是否為阻塞端口 ,即第一標(biāo) 識; "21" :BPDU響應(yīng)報文,用于標(biāo)識與指定端口連接的端口是阻塞端口,即第二標(biāo)識;
"20":BPDU響應(yīng)報文,用于標(biāo)識與指定端口連接的端口不是阻塞端口 ,即第三標(biāo) 識。
如圖4所示,本實施例可以包括 步驟401,網(wǎng)絡(luò)設(shè)備通過處于轉(zhuǎn)發(fā)狀態(tài)的指定端口發(fā)送攜帶第一標(biāo)識的BPDU請求 報文至與該指定端口連接的端口 ,請求與指定端口連接的端口是否為阻塞端口 。
本實施例中,第一標(biāo)識為"IO";網(wǎng)絡(luò)設(shè)備可以周期性發(fā)送攜帶第一標(biāo)識的BPDU請 求報文至與該指定端口連接的端口 ;其中,可以將該周期設(shè)為2秒。 在網(wǎng)絡(luò)設(shè)備發(fā)出BPDU請求報文的同時,網(wǎng)絡(luò)設(shè)備啟動定時器,該定時器的時間為 第一預(yù)定時間,該第一預(yù)定時間可以進(jìn)行配置,可以為預(yù)計該網(wǎng)絡(luò)設(shè)備能接收到BPDU響應(yīng) 報文的時間,從該網(wǎng)絡(luò)設(shè)備發(fā)出攜帶第一標(biāo)識的BPDU請求報文的時刻開始計時,可以將第 一預(yù)定時間,即定時器的時間設(shè)置為4秒。 步驟402,對接收到的BPDU響應(yīng)報文的flag字段進(jìn)行分析,判斷接收到的BPDU響 應(yīng)報文攜帶的是第二標(biāo)識,還是第三標(biāo)識。 本實施例中,與指定端口連接的端口接收到攜帶第一標(biāo)識的BPDU請求報文之后, 會發(fā)送攜帶第二標(biāo)識或第三標(biāo)識的BPDU響應(yīng)報文,其中,第二標(biāo)識用于標(biāo)識與指定端口連 接的端口是阻塞端口 ,為"21";第三標(biāo)識用于標(biāo)識與指定端口連接的端口不是阻塞端口 ,為 "20"。
具體地,如果網(wǎng)絡(luò)設(shè)備接收到攜帶第二標(biāo)識的BPDU響應(yīng)報文,或者,在定時器超
時后,如果網(wǎng)絡(luò)設(shè)備仍未收到BPDU響應(yīng)報文,則執(zhí)行步驟403 步驟404 ; 如果網(wǎng)絡(luò)設(shè)備接收到攜帶第三標(biāo)識的BPDU響應(yīng)報文,執(zhí)行步驟405。 本實施例中,在接收到攜帶第二標(biāo)識的BPDU響應(yīng)報文之后,網(wǎng)絡(luò)設(shè)備開始判斷該
網(wǎng)絡(luò)設(shè)備是否接收到非BPDU報文的報文,如果該網(wǎng)絡(luò)設(shè)備未收到非BPDU報文的報文,并且
接下來接收到了攜帶第三標(biāo)識的BPDU響應(yīng)報文,則該網(wǎng)絡(luò)設(shè)備不再判斷是否接收到了非
BPDU報文的報文。 步驟403,判斷是否接收到非BPDU報文的報文。如果是,則執(zhí)行步驟404 ;如果網(wǎng) 絡(luò)設(shè)備未接收到非BPDU報文的報文,則執(zhí)行步驟405。
步驟404,將上述指定端口置為阻塞狀態(tài)。
步驟405,保持上述指定端口處于轉(zhuǎn)發(fā)狀態(tài)。 上述實施例中,通過設(shè)置BPDU報文的flag字段,建立請求和響應(yīng)的機(jī)制,網(wǎng)絡(luò)設(shè) 備可以及時獲取對端網(wǎng)絡(luò)設(shè)備的端口的狀態(tài),可以主動預(yù)防網(wǎng)絡(luò)環(huán)路的發(fā)生,包括網(wǎng)絡(luò)拓 撲中某臺網(wǎng)絡(luò)設(shè)備發(fā)生故障,即局部STP組網(wǎng)故障而導(dǎo)致的環(huán)路。 本發(fā)明實施例中,在故障解除之后,還需要將網(wǎng)絡(luò)設(shè)備的指定端口的狀態(tài)恢復(fù)為 轉(zhuǎn)發(fā)狀態(tài),圖6為本發(fā)明恢復(fù)指定端口的狀態(tài)一個實施例的流程圖,如圖6所示,該實施例 包括 步驟601,網(wǎng)絡(luò)設(shè)備繼續(xù)通過處于阻塞狀態(tài)的指定端口發(fā)送攜帶第一標(biāo)識的BPDU 請求報文至與該指定端口連接的端口 。 本實施例中,在網(wǎng)絡(luò)設(shè)備的指定端口被置為阻塞狀態(tài)之后,網(wǎng)絡(luò)設(shè)備仍然繼續(xù)通
過該處于阻塞狀態(tài)的指定端口發(fā)送攜帶第一標(biāo)識的BPDU請求報文至與該指定端口連接的
端口 ,該第一標(biāo)識用于請求與該指定端口連接的端口是否為阻塞端口 。具體地,網(wǎng)絡(luò)設(shè)備可
以周期性地發(fā)送攜帶第一標(biāo)識的BPDU請求報文,可以將該周期設(shè)為2秒。 步驟602,判斷是否接收到攜帶第三標(biāo)識的BPDU響應(yīng)報文;該第三標(biāo)識用于標(biāo)識
與上述指定端口連接的端口不是阻塞端口。如果接收到,則執(zhí)行步驟604 ;如果沒有接收到
攜帶第三標(biāo)識的BPDU響應(yīng)報文,則執(zhí)行步驟603。 步驟603,判斷網(wǎng)絡(luò)設(shè)備在第二預(yù)定時間內(nèi)是否接收到非BPDU報文的報文。如果 該網(wǎng)絡(luò)設(shè)備在第二預(yù)定時間內(nèi)接收到非BPDU報文的報文,則返回執(zhí)行步驟602 ;如果該網(wǎng) 絡(luò)設(shè)備在第二預(yù)定時間內(nèi)未接收到非BPDU報文的報文,則執(zhí)行步驟604。
本實施例中,第二預(yù)定時間從上述指定端口被置為阻塞狀態(tài)的時刻開始計時,可 以將第二預(yù)定時間設(shè)為60秒。 步驟604,將該網(wǎng)絡(luò)設(shè)備的指定端口的狀態(tài)恢復(fù)為轉(zhuǎn)發(fā)狀態(tài)。 上述實施例實現(xiàn)了在故障解除之后,恢復(fù)網(wǎng)絡(luò)設(shè)備的指定端口的狀態(tài),從而實現(xiàn) 了及時恢復(fù)網(wǎng)絡(luò)拓?fù)洹?本發(fā)明實施例提供了一種防止網(wǎng)絡(luò)環(huán)路的方法,在圖2所示網(wǎng)絡(luò)中,本發(fā)明實施 例提供的防止網(wǎng)絡(luò)環(huán)路的方法的實施過程為 圖2中,端口 B、端口 C和端口 F為指定端口 ,周期性的發(fā)出攜帶第一標(biāo)識,即"10" 字段的BPDU請求報文; 端口 A、端口 D和端口 E接收到BPDU請求報文之后,將發(fā)出BPDU響應(yīng)報文進(jìn)行應(yīng)答。不同的是,端口 A和端口 D為根端口 ,所以發(fā)出的BPDU響應(yīng)報文攜帶第三標(biāo)識,即攜帶 字段"20";而端口E為阻塞端口,故發(fā)出的BPDU響應(yīng)報文攜帶第二標(biāo)識,即攜帶字段"21";
端口 B和端口 C收到攜帶第三標(biāo)識的BPDU響應(yīng)報文之后,保持端口 B和端口 C處 于轉(zhuǎn)發(fā)狀態(tài)。而端口 F收到攜帶第二標(biāo)識的BPDU響應(yīng)報文,開始判斷自己是否接收到了非 BPDU報文的報文,一旦收到,立即將端口 F置為阻塞狀態(tài); 如果在定時器有效時間,即第一預(yù)定時間內(nèi),端口 B、端口 C和端口 F中的任何一 個端口沒有收到BPDU響應(yīng)報文,則相應(yīng)的端口將開始判斷是否收到了非BPDU報文的報文, 其中,第一預(yù)定時間為預(yù)計能收到BPDU響應(yīng)報文的時間,從該網(wǎng)絡(luò)設(shè)備發(fā)出攜帶第一標(biāo)識 的BPDU請求報文的時刻開始計時,可以將第一預(yù)定時間設(shè)置為4秒。若沒收到,則可以保 持端口 B、端口 C和端口 F處于轉(zhuǎn)發(fā)狀態(tài);若收到非BPDU報文的報文,則將收到非BPDU報 文的報文的端口置為阻塞狀態(tài)。 假設(shè)端口 F被置為阻塞狀態(tài),那么端口 F將判斷是否收到攜帶第三標(biāo)識的BPDU響 應(yīng)報文,如果沒有接收到攜帶第三標(biāo)識的BPDU響應(yīng)報文,并且在第二預(yù)定時間,例如60秒 內(nèi)收到了非BPDU報文的報文,則繼續(xù)保持端口 F的阻塞狀態(tài),其中,第二預(yù)定時間從端口 F 被置為阻塞狀態(tài)的時刻開始計時;如果沒有接收到攜帶第三標(biāo)識的BPDU響應(yīng)報文,并且在 第二預(yù)定時間,例如60秒內(nèi)也沒有收到非BPDU報文的報文,或者,端口 F接收到了攜帶第 三標(biāo)識的BPDU響應(yīng)報文,則解除端口 F的阻塞狀態(tài),將端口 F的狀態(tài)恢復(fù)為轉(zhuǎn)發(fā)狀態(tài)。
端口 F處于阻塞狀態(tài)時仍舊會周期性的向端口 E發(fā)送攜帶第一標(biāo)識的BPDU請求 報文。如果后面生成樹重新進(jìn)行了選舉,端口 E不是阻塞端口 了 ,則端口 E會用攜帶第三標(biāo) 識的BPDU響應(yīng)報文進(jìn)行應(yīng)答,端口 F接收到攜帶第三標(biāo)識的BPDU響應(yīng)報文之后,確定與端 口 F相連的端口不是阻塞端口 ,則解除端口 F的阻塞狀態(tài),恢復(fù)端口 F為轉(zhuǎn)發(fā)狀態(tài)。
本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述方法實施例的全部或部分步驟可以通過 程序指令相關(guān)的硬件來完成,前述的程序可以存儲于一計算機(jī)可讀取存儲介質(zhì)中,該程序 在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質(zhì)包括ROM、 RAM、磁碟或者 光盤等各種可以存儲程序代碼的介質(zhì)。 圖7為本發(fā)明網(wǎng)絡(luò)設(shè)備一個實施例的結(jié)構(gòu)示意圖,本實施例的網(wǎng)絡(luò)設(shè)備7可以實 現(xiàn)本發(fā)明圖3、圖4或圖6所示實施例的流程,如圖7所示,該網(wǎng)絡(luò)設(shè)備7可以包括發(fā)送模 塊71、接收模塊72、設(shè)置模塊73和狀態(tài)保持模塊74。 其中,發(fā)送模塊71,用于通過處于轉(zhuǎn)發(fā)狀態(tài)的指定端口發(fā)送攜帶第一標(biāo)識的BPDU 請求報文至與所述指定端口連接的端口 ,該第一標(biāo)識用于請求與上述指定端口連接的端口 是否為阻塞端口; 接收模塊72,用于接收報文; 設(shè)置模塊73,用于在接收模塊72接收到攜帶第二標(biāo)識的BPDU響應(yīng)報文之后,或 者,在第一預(yù)定時間內(nèi)接收模塊72未接收到BPDU響應(yīng)報文之后,如果接收模塊72接收到 非BPDU報文的報文,將指定端口置為阻塞狀態(tài),該第二標(biāo)識用于標(biāo)識與上述指定端口連接 的端口是阻塞端口。其中,第一預(yù)定時間為預(yù)計網(wǎng)絡(luò)設(shè)備能收到BPDU響應(yīng)報文的時間,從 發(fā)送模塊71發(fā)出攜帶第一標(biāo)識的BPDU請求報文的時刻開始計時,可以將第一預(yù)定時間設(shè) 置為4秒。 上述網(wǎng)絡(luò)設(shè)備7還可以進(jìn)一步包括狀態(tài)保持模塊74,用于在接收模塊72接收到攜帶第二標(biāo)識的BPDU響應(yīng)報文之后,或者,在第一預(yù)定時間內(nèi)接收模塊72未接收到BPDU 響應(yīng)報文之后,如果接收模塊72沒有接收到非BPDU報文的報文,保持上述指定端口處于轉(zhuǎn) 發(fā)狀態(tài);或者,在接收模塊72接收到攜帶第三標(biāo)識的BPDU響應(yīng)報文之后,保持上述指定端 口處于轉(zhuǎn)發(fā)狀態(tài),該第三標(biāo)識用于標(biāo)識與指定端口連接的端口不是阻塞端口 。
本實施例中,發(fā)送模塊71還用于繼續(xù)通過處于阻塞狀態(tài)的指定端口發(fā)送攜帶第 一標(biāo)識的BPDU請求報文至與指定端口連接的端口 ; 設(shè)置模塊73還用于在接收模塊72接收到攜帶第三標(biāo)識的BPDU響應(yīng)報文之后,或 者,在接收模塊72沒有接收到攜帶第三標(biāo)識的BPDU響應(yīng)報文,并且在第二預(yù)定時間內(nèi)接收 模塊72未接收到非BPDU報文的報文之后,將指定端口的狀態(tài)恢復(fù)為轉(zhuǎn)發(fā)狀態(tài);該第三標(biāo)識 用于標(biāo)識與指定端口連接的端口不是阻塞端口。其中,第二預(yù)定時間從上述指定端口被置 為阻塞狀態(tài)的時刻開始計時,可以將第二預(yù)定時間設(shè)為60秒。 具體地,本實施例中,發(fā)送模塊71可以周期性發(fā)送攜帶第一標(biāo)識的BPDU請求報文 至與指定端口連接的端口 ,可以將該周期設(shè)為2秒。 另外,第一標(biāo)識、第二標(biāo)識和第三標(biāo)識的設(shè)置方法可以采用本發(fā)明圖5所示實施 例提供的方法,在此不再贅述。 上述實施例中,發(fā)送模塊71發(fā)送攜帶第一標(biāo)識的BPDU請求報文至與指定端口連 接的端口 ,在接收模塊72接收到攜帶第二標(biāo)識的BPDU響應(yīng)報文之后,或者,在第一預(yù)定時 間內(nèi)接收模塊72未接收到BPDU響應(yīng)報文之后,如果接收模塊72接收到非BPDU報文的報 文,則將指定端口置為阻塞狀態(tài);從而實現(xiàn)了在局部STP組網(wǎng)故障導(dǎo)致處于阻塞狀態(tài)的端 口轉(zhuǎn)發(fā)報文的情況下,防止網(wǎng)絡(luò)環(huán)路的產(chǎn)生。 本發(fā)明實施例還提供一種生成樹協(xié)議網(wǎng)絡(luò)系統(tǒng),包括至少三個網(wǎng)絡(luò)設(shè)備,該網(wǎng)絡(luò) 設(shè)備可以通過本發(fā)明圖7所示實施例的網(wǎng)絡(luò)設(shè)備實現(xiàn),該生成樹協(xié)議網(wǎng)絡(luò)系統(tǒng)的一個實例 可以如圖2所示。 本發(fā)明實施例提供一種防止網(wǎng)絡(luò)環(huán)路的方法、網(wǎng)絡(luò)設(shè)備和生成樹協(xié)議網(wǎng)絡(luò)系統(tǒng), 采取主動請求和應(yīng)答的機(jī)制,網(wǎng)絡(luò)設(shè)備可以及時獲取與該網(wǎng)絡(luò)設(shè)備連接的端口的狀態(tài),可 以主動預(yù)防網(wǎng)絡(luò)環(huán)路的發(fā)生,在出現(xiàn)阻塞端口轉(zhuǎn)發(fā)報文的情況時,能夠確保網(wǎng)絡(luò)無環(huán)路;并 且在故障解決之后,網(wǎng)絡(luò)拓?fù)湟材芗皶r恢復(fù)。本發(fā)明實施例很好地解決了現(xiàn)有的STP網(wǎng)絡(luò) 中由于種種原因而導(dǎo)致網(wǎng)絡(luò)設(shè)備端口處理出錯而發(fā)生網(wǎng)絡(luò)環(huán)路的問題,而且,本發(fā)明實施 例是在發(fā)生故障的網(wǎng)絡(luò)設(shè)備的對端設(shè)備上進(jìn)行處理,可靠性較高。 本領(lǐng)域技術(shù)人員可以理解附圖只是一個優(yōu)選實施例的示意圖,附圖中的模塊或流 程并不一定是實施本發(fā)明所必須的。 本領(lǐng)域技術(shù)人員可以理解實施例中的裝置中的模塊可以按照實施例描述進(jìn)行分 布于實施例的裝置中,也可以進(jìn)行相應(yīng)變化位于不同于本實施例的一個或多個裝置中。上 述實施例的模塊可以合并為一個模塊,也可以進(jìn)一步拆分成多個子模塊。 最后應(yīng)說明的是以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡 管參照前述實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然 可以對前述各實施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替 換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精 神和范圍。
權(quán)利要求
一種防止網(wǎng)絡(luò)環(huán)路的方法,其特征在于,包括通過處于轉(zhuǎn)發(fā)狀態(tài)的指定端口發(fā)送攜帶第一標(biāo)識的網(wǎng)橋協(xié)議數(shù)據(jù)單元BPDU請求報文至與所述指定端口連接的端口,所述第一標(biāo)識用于請求所述與所述指定端口連接的端口是否為阻塞端口;在接收到攜帶第二標(biāo)識的BPDU響應(yīng)報文之后,或者,在第一預(yù)定時間內(nèi)未接收到BPDU響應(yīng)報文之后,如果接收到非BPDU報文的報文,則將所述指定端口置為阻塞狀態(tài),所述第二標(biāo)識用于標(biāo)識所述與所述指定端口連接的端口是阻塞端口。
2. 根據(jù)權(quán)利要求l所述的方法,其特征在于,還包括繼續(xù)通過處于阻塞狀態(tài)的指定端口發(fā)送攜帶第一標(biāo)識的BPDU請求報文至與所述指定端口連接的端口;在接收到攜帶第三標(biāo)識的BPDU響應(yīng)報文之后,或者,在沒有接收到攜帶第三標(biāo)識的BPDU響應(yīng)報文,并且在第二預(yù)定時間內(nèi)未接收到非BPDU報文的報文之后,將所述指定端口的狀態(tài)恢復(fù)為轉(zhuǎn)發(fā)狀態(tài);所述第三標(biāo)識用于標(biāo)識所述與所述指定端口連接的端口不是阻塞端口。
3. 根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述發(fā)送攜帶第一標(biāo)識的BPDU請求報文至與所述指定端口連接的端口包括周期性發(fā)送攜帶第一標(biāo)識的BPDU請求報文至與所述指定端口連接的端口 。
4. 根據(jù)權(quán)利要求l所述的方法,其特征在于,還包括在接收到攜帶第二標(biāo)識的BPDU響應(yīng)報文之后,或者,在所述第一預(yù)定時間內(nèi)未接收到BPDU響應(yīng)報文之后,如果沒有接收到非BPDU報文的報文,則保持所述指定端口處于轉(zhuǎn)發(fā)狀態(tài);或者,在接收到攜帶第三標(biāo)識的BPDU響應(yīng)報文之后,保持所述指定端口處于轉(zhuǎn)發(fā)狀態(tài),所述第三標(biāo)識用于標(biāo)識所述與所述指定端口連接的端口不是阻塞端口 。
5. —種網(wǎng)絡(luò)設(shè)備,其特征在于,包括發(fā)送模塊,用于通過處于轉(zhuǎn)發(fā)狀態(tài)的指定端口發(fā)送攜帶第一標(biāo)識的網(wǎng)橋協(xié)議數(shù)據(jù)單元BPDU請求報文至與所述指定端口連接的端口 ,所述第一標(biāo)識用于請求所述與所述指定端口連接的端口是否為阻塞端口;接收模塊,用于接收報文;設(shè)置模塊,用于在所述接收模塊接收到攜帶第二標(biāo)識的BPDU響應(yīng)報文之后,或者,在第一預(yù)定時間內(nèi)所述接收模塊未接收到BPDU響應(yīng)報文之后,如果所述接收模塊接收到非BPDU報文的報文,將所述指定端口置為阻塞狀態(tài),所述第二標(biāo)識用于標(biāo)識所述與所述指定端口連接的端口是阻塞端口。
6. 根據(jù)權(quán)利要求5所述的網(wǎng)絡(luò)設(shè)備,其特征在于,所述發(fā)送模塊還用于繼續(xù)通過處于阻塞狀態(tài)的指定端口發(fā)送攜帶第一標(biāo)識的BPDU請求報文至與所述指定端口連接的端口;所述設(shè)置模塊還用于在所述接收模塊接收到攜帶第三標(biāo)識的BPDU響應(yīng)報文之后,或者,在所述接收模塊沒有接收到攜帶第三標(biāo)識的BPDU響應(yīng)報文,并且在第二預(yù)定時間內(nèi)所述接收模塊未接收到非BPDU報文的報文之后,將所述指定端口的狀態(tài)恢復(fù)為轉(zhuǎn)發(fā)狀態(tài);所述第三標(biāo)識用于標(biāo)識所述與所述指定端口連接的端口不是阻塞端口 。
7. 根據(jù)權(quán)利要求5或6所述的網(wǎng)絡(luò)設(shè)備,其特征在于,所述發(fā)送模塊具體用于周期性發(fā)送攜帶第一標(biāo)識的BPDU請求報文至與所述指定端口連接的端口 。
8. 根據(jù)權(quán)利要求5所述的網(wǎng)絡(luò)設(shè)備,其特征在于,還包括狀態(tài)保持模塊,用于在所述接收模塊接收到攜帶第二標(biāo)識的BPDU響應(yīng)報文之后,或者,在所述第一預(yù)定時間內(nèi)所述接收模塊未接收到BPDU響應(yīng)報文之后,如果所述接收模塊沒有接收到非BPDU報文的報文,保持所述指定端口處于轉(zhuǎn)發(fā)狀態(tài);或者,在所述接收模塊接收到攜帶第三標(biāo)識的BPDU響應(yīng)報文之后,保持所述指定端口處于轉(zhuǎn)發(fā)狀態(tài),所述第三標(biāo)識用于標(biāo)識所述與所述指定端口連接的端口不是阻塞端口 。
9. 一種生成樹協(xié)議網(wǎng)絡(luò)系統(tǒng),其特征在于,包括至少三個根據(jù)權(quán)利要求5-8任意一項所述的網(wǎng)絡(luò)設(shè)備。
全文摘要
本發(fā)明實施例提供一種防止網(wǎng)絡(luò)環(huán)路的方法、網(wǎng)絡(luò)設(shè)備和生成樹協(xié)議網(wǎng)絡(luò)系統(tǒng),所述防止網(wǎng)絡(luò)環(huán)路的方法包括通過處于轉(zhuǎn)發(fā)狀態(tài)的指定端口發(fā)送攜帶第一標(biāo)識的網(wǎng)橋協(xié)議數(shù)據(jù)單元BPDU請求報文至與所述指定端口連接的端口,所述第一標(biāo)識用于請求所述與所述指定端口連接的端口是否為阻塞端口;在接收到攜帶第二標(biāo)識的BPDU響應(yīng)報文之后,或者,在第一預(yù)定時間內(nèi)未接收到BPDU響應(yīng)報文之后,如果接收到非BPDU報文的報文,則將所述指定端口置為阻塞狀態(tài),所述第二標(biāo)識用于標(biāo)識所述與所述指定端口連接的端口是阻塞端口。本發(fā)明實施例實現(xiàn)了在局部STP組網(wǎng)故障導(dǎo)致處于阻塞狀態(tài)的端口轉(zhuǎn)發(fā)報文的情況下,防止網(wǎng)絡(luò)環(huán)路的產(chǎn)生。
文檔編號H04L29/06GK101699799SQ20091020646
公開日2010年4月28日 申請日期2009年11月13日 優(yōu)先權(quán)日2009年11月13日
發(fā)明者張小興, 王津 申請人:福建星網(wǎng)銳捷網(wǎng)絡(luò)有限公司