專利名稱:快速生成樹協(xié)議在多cpu環(huán)境下的分布式實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及分布式系統(tǒng)的快速生成樹協(xié)議,特別是一種快速生成樹協(xié)議在多CPU環(huán)境下的分布式實(shí)現(xiàn)方法。
背景技術(shù):
隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,以太網(wǎng)交換網(wǎng)絡(luò)的應(yīng)用越來(lái)越普遍。以太網(wǎng)交換網(wǎng)絡(luò)是指由多臺(tái)以太網(wǎng)交換設(shè)備通過(guò)網(wǎng)線相互連接組成。以太網(wǎng)交換設(shè)備只對(duì)數(shù)據(jù)報(bào)文做轉(zhuǎn)發(fā)處理,不對(duì)報(bào)文做任何修改和標(biāo)識(shí)。
在交換網(wǎng)絡(luò)中,網(wǎng)絡(luò)的物理連接各種各樣,因此,很多情況下,在交換網(wǎng)絡(luò)中會(huì)存在環(huán)路。由于以太網(wǎng)設(shè)備對(duì)報(bào)文的處理是透明的,即不作任何修改和標(biāo)識(shí),因此當(dāng)存在環(huán)路時(shí),交換設(shè)備無(wú)法區(qū)分待轉(zhuǎn)發(fā)的報(bào)文是否已經(jīng)被轉(zhuǎn)發(fā)過(guò),報(bào)文會(huì)在該環(huán)路中重復(fù)轉(zhuǎn)發(fā),導(dǎo)致報(bào)文在環(huán)路中不斷增生,最終造成整個(gè)網(wǎng)絡(luò)由于報(bào)文擁塞而癱瘓。圖1示出了這樣的環(huán)路情況下的報(bào)文增生情況。
生成樹算法(STP)就是為了解決上述問題出現(xiàn)的。生成樹算法的的基本原理是通過(guò)在各交換設(shè)備之間傳遞橋管理數(shù)據(jù)單元(BPDU)來(lái)確定網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),并阻塞冗余的物理鏈路。如圖1所示,在這種組網(wǎng)環(huán)境下,通過(guò)交換BPDU,交換設(shè)備會(huì)發(fā)現(xiàn)自己與其它設(shè)備之間存在環(huán)路,此時(shí)其中一臺(tái)設(shè)備會(huì)阻斷冗余的端口,使該端口只能接收和發(fā)送BPDU報(bào)文,而無(wú)法接收和發(fā)送普通的數(shù)據(jù)報(bào)文,這樣就可以解決環(huán)路時(shí)報(bào)文增生的問題,如圖2所示。
為了防止出現(xiàn)臨時(shí)回路,當(dāng)網(wǎng)絡(luò)的物理結(jié)構(gòu)發(fā)生變化,需要將阻塞的鏈路遷移到轉(zhuǎn)發(fā)狀態(tài)時(shí),需要等待30秒時(shí)間,這個(gè)時(shí)間值為經(jīng)驗(yàn)值,一般來(lái)說(shuō),在這段時(shí)間內(nèi)能夠保證網(wǎng)絡(luò)中其他交換設(shè)備已經(jīng)發(fā)現(xiàn)該物理結(jié)構(gòu)的變化,從而提前切斷可能存在的冗余鏈路,這樣當(dāng)阻塞的鏈路切換為轉(zhuǎn)發(fā)時(shí),網(wǎng)絡(luò)中不會(huì)出現(xiàn)臨時(shí)回路而導(dǎo)致報(bào)文增生使整個(gè)網(wǎng)絡(luò)癱瘓。
生成樹協(xié)議的這個(gè)缺點(diǎn)是很明顯的,即端口遷移到轉(zhuǎn)發(fā)狀態(tài)需要30秒時(shí)間延遲,這在很多應(yīng)用場(chǎng)合下都是不允許的。針對(duì)這個(gè)缺點(diǎn),出現(xiàn)了快速生成樹協(xié)議(RSTP)。快速生成樹協(xié)議無(wú)需等待30秒時(shí)間延遲,而只需要通過(guò)一次握手就可以將鏈路遷移到轉(zhuǎn)發(fā)狀態(tài)。快速生成樹協(xié)議的工作原理如下1、對(duì)于直接與PC或者其它非交換設(shè)備相連的端口(可稱之為邊緣端口Edge Port),這些端口可以直接遷移到轉(zhuǎn)發(fā)狀態(tài)而無(wú)需等待30秒。這樣就可以保證用戶在開機(jī)后可以立即連通到網(wǎng)絡(luò)中。
2、網(wǎng)絡(luò)中所有設(shè)備只允許有一條路徑連往根橋(即生成樹的樹根),也就是說(shuō),每臺(tái)設(shè)備只能有一個(gè)端口連往根橋(我們稱該端口為根端口Root Port),而其它連往根橋的端口將被作為冗余端口存在,該端口被阻塞(我們稱該端口為可選端口Alternate Port)。同一時(shí)刻,每臺(tái)非根橋設(shè)備有且僅有一個(gè)端口為轉(zhuǎn)發(fā)狀態(tài)。因此,當(dāng)快速生成樹協(xié)議確定原來(lái)的根端口變?yōu)樽枞麪顟B(tài)時(shí),其可以從Alternate Port中選擇一個(gè)端口作為新的根端口,并且立即將其遷移到轉(zhuǎn)發(fā)狀態(tài)。
3、在交換網(wǎng)絡(luò)中負(fù)責(zé)向下游轉(zhuǎn)發(fā)報(bào)文的端口,我們稱之為指定端口(Designated Port),指定端口從阻塞狀態(tài)遷移到轉(zhuǎn)發(fā)狀態(tài)時(shí),需要先向下游設(shè)備發(fā)送一個(gè)請(qǐng)求BPDU,下游設(shè)備收到該請(qǐng)求BPDU時(shí),如果接收到該BPDU的鏈路只連接上下游兩臺(tái)設(shè)備(我們稱之為點(diǎn)對(duì)點(diǎn)鏈路Point to Point),則下游設(shè)備會(huì)先向其他所有端口發(fā)送一個(gè)同步信號(hào),收到該信號(hào)的端口將根據(jù)情況阻塞自己,然后設(shè)置自己同步完畢。當(dāng)下游設(shè)備收到所有除接收到請(qǐng)求BPDU的端口外的其他所有端口的“同步完畢”信號(hào)后,該設(shè)備將通過(guò)接收端口向上游發(fā)送一個(gè)應(yīng)答B(yǎng)PDU,指定端口收到該應(yīng)答B(yǎng)PDU后,會(huì)立即遷移到轉(zhuǎn)發(fā)狀態(tài)。通過(guò)上述處理,快速生成樹協(xié)議基本上可以避免30秒的等待時(shí)間,而快速地將端口遷移到轉(zhuǎn)發(fā)狀態(tài),從而提高整個(gè)網(wǎng)絡(luò)的網(wǎng)絡(luò)收斂速度。
另一方面,隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,越來(lái)越多的用戶需要通過(guò)以太網(wǎng)設(shè)備接入到網(wǎng)絡(luò)中,從而也就出現(xiàn)了256或超過(guò)256端口數(shù)的高端口密度的以太網(wǎng)交換設(shè)備(或稱之為接入設(shè)備)。這種設(shè)備一般采用框式結(jié)構(gòu),即一塊主控板外加多塊接口板的結(jié)構(gòu),接口板作為一個(gè)插框插接在機(jī)架上。這種結(jié)構(gòu)如圖3所示,是一種典型的多CPU分布式結(jié)構(gòu),即主控板和每塊接口板都有一個(gè)CPU來(lái)負(fù)責(zé)相關(guān)計(jì)算和控制功能。在圖3中,SRPA(Switching & Routing ProcessingUnit)是交換路由板;LPU(Line Processing Unit)是業(yè)務(wù)板;PWR(Power)是電源模塊;FAN是風(fēng)扇框。
對(duì)于盒式設(shè)備,如圖4所示,將多臺(tái)相同的設(shè)備通過(guò)特殊的電纜連接共同組成一個(gè)堆疊系統(tǒng),以提供高達(dá)幾百端口數(shù)的高端口密度的接入設(shè)備。堆疊系統(tǒng)可以通過(guò)命令行以及標(biāo)準(zhǔn)網(wǎng)管進(jìn)行管理,對(duì)用戶和其他網(wǎng)絡(luò)設(shè)備而言僅相當(dāng)于一臺(tái)設(shè)備。堆疊系統(tǒng)是另外一種常見的多CPU分布式系統(tǒng)。每臺(tái)盒式設(shè)備都有至少一個(gè)CPU,各CPU根據(jù)設(shè)計(jì)不同在堆疊系統(tǒng)中起不同作用。
這種多CPU分布式系統(tǒng)下,生成樹協(xié)議和快速生成樹協(xié)議必須將其作為一臺(tái)設(shè)備進(jìn)行處理,其與普通的多臺(tái)設(shè)備通過(guò)網(wǎng)線互連的交換網(wǎng)絡(luò)不同點(diǎn)在于1、內(nèi)部連接的鏈路(包括框式設(shè)備中各接口板與主控板之間的連接鏈路以及堆疊系統(tǒng)中各堆疊成員之間的堆疊電纜連接)必須始終保持為轉(zhuǎn)發(fā)狀態(tài),這些鏈路的狀態(tài)不能受到外部網(wǎng)絡(luò)結(jié)構(gòu)變化的影響;2、框式設(shè)備和堆疊系統(tǒng)只能有一個(gè)連往根橋的端口,即只能有一個(gè)外部的根端口;3、協(xié)議所需要管理的端口數(shù)比一般情況下要多,需要更高性能的CPU來(lái)計(jì)算。
對(duì)于這種多CPU分布式系統(tǒng),尤其是框式設(shè)備,一般采用主從方式來(lái)實(shí)現(xiàn)快速生成樹協(xié)議。主控板或者堆疊系統(tǒng)中的主設(shè)備主要負(fù)責(zé)實(shí)現(xiàn)對(duì)BPDU報(bào)文的處理和算法的實(shí)現(xiàn),主設(shè)備將計(jì)算的端口STP狀態(tài)通過(guò)遠(yuǎn)程控制指令下發(fā)到各接口板。接口板或從設(shè)備一般只負(fù)責(zé)接收從本地端口收到的BPDU,然后將該BPDU傳送給主設(shè)備進(jìn)行處理,此外接口板和堆疊系統(tǒng)從設(shè)備負(fù)責(zé)解析來(lái)自主設(shè)備的控制指令,根據(jù)指令完成對(duì)本地端口STP狀態(tài)的設(shè)置。
在這種主從方案中,所有生成樹算法的實(shí)現(xiàn)由主設(shè)備來(lái)完成,從設(shè)備不負(fù)責(zé)實(shí)現(xiàn)生成樹算法。下面將根據(jù)圖5說(shuō)明主從方式的實(shí)現(xiàn)過(guò)程1、主設(shè)備上保存所有端口的協(xié)議狀態(tài)機(jī)狀態(tài)和端口狀態(tài)參數(shù);2、從設(shè)備收到BPDU后,將BPDU傳送給主設(shè)備,并且將接收端口號(hào)一并傳送給主設(shè)備;3、主設(shè)備根據(jù)收到的BPDU和對(duì)應(yīng)的端口號(hào),計(jì)算系統(tǒng)內(nèi)所有端口的生成樹角色并確定端口的STP狀態(tài)。端口角色的選擇和端口狀態(tài)的確定請(qǐng)參見IEEE Std 802.1w-2001.Amendment 2Rapid Reconfiguration。
4、主設(shè)備將端口的STP狀態(tài)通過(guò)控制指令下發(fā)給從設(shè)備;主設(shè)備還將需要通過(guò)從設(shè)備上某個(gè)端口發(fā)送的BPDU傳送給對(duì)應(yīng)從設(shè)備;5、從設(shè)備收到主設(shè)備下發(fā)的控制指令后,根據(jù)該指令設(shè)置端口STP狀態(tài);6、從設(shè)備根據(jù)來(lái)自主設(shè)備BPDU和發(fā)送端口號(hào)將該BPDU報(bào)文從對(duì)應(yīng)的端口發(fā)送出去。
該技術(shù)的缺點(diǎn)是1、主設(shè)備需要負(fù)責(zé)系統(tǒng)內(nèi)所有端口的生成樹計(jì)算,主設(shè)備的CPU需要高性能的CPU。從設(shè)備只需要完成簡(jiǎn)單功能的處理。這樣對(duì)于堆疊系統(tǒng),所有設(shè)備都需要高性能CPU,增加設(shè)備成本,并且從設(shè)備CPU資源浪費(fèi)嚴(yán)重;2、主設(shè)備計(jì)算出端口STP狀態(tài)時(shí),需要通過(guò)控制指令下發(fā)到各從設(shè)備。由于端口遷移到轉(zhuǎn)發(fā)狀態(tài)需要嚴(yán)格的時(shí)序控制,即端口進(jìn)入轉(zhuǎn)發(fā)狀態(tài)之前需要阻塞所有潛在的回路。因此這種控制指令的下發(fā)和各從設(shè)備的分步執(zhí)行很難保證這種時(shí)序要求,導(dǎo)致增加臨時(shí)回路的可能性;3、增加了BPDU報(bào)文轉(zhuǎn)發(fā)的環(huán)節(jié),導(dǎo)致BPDU丟失概率增加,嚴(yán)重時(shí)會(huì)導(dǎo)致由于BPDU丟失而引起網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)動(dòng)蕩;4、降低網(wǎng)絡(luò)收斂的速度,對(duì)大量端口的管理,CPU需要花費(fèi)更多的時(shí)間進(jìn)行角色和狀態(tài)計(jì)算,因此降低了端口狀態(tài)的遷移快速性;5、主設(shè)備需要保存所有端口的數(shù)據(jù)信息和狀態(tài)機(jī)信息,需要更多的存儲(chǔ)器來(lái)保存這些數(shù)據(jù),增加了設(shè)備的制造成本;6、主設(shè)備失效時(shí),需要重新選擇一個(gè)主設(shè)備來(lái)負(fù)責(zé)控制系統(tǒng)內(nèi)所有端口,新主設(shè)備的切換過(guò)程會(huì)引起整個(gè)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)動(dòng)蕩。
快速生成樹協(xié)議在多CPU分布式系統(tǒng)(尤其是堆疊系統(tǒng))中的另外一種實(shí)現(xiàn)方式是“集中對(duì)等式”實(shí)現(xiàn)方式。所謂“集中對(duì)等式”實(shí)現(xiàn)方式是指系統(tǒng)中所有CPU都參與生成樹算法的計(jì)算,各CPU在計(jì)算端口角色和狀態(tài)時(shí),需要計(jì)算系統(tǒng)內(nèi)的所有端口,每臺(tái)設(shè)備收到BPDU報(bào)文后,都需要將該報(bào)文廣播給系統(tǒng)內(nèi)的所有其它設(shè)備;計(jì)算完畢后,各CPU只負(fù)責(zé)控制本地端口的STP狀態(tài)。系統(tǒng)內(nèi)的每個(gè)CPU都相當(dāng)于技術(shù)一中的主設(shè)備,不同的是,技術(shù)一中的主設(shè)備負(fù)責(zé)控制系統(tǒng)內(nèi)所有端口狀態(tài),而技術(shù)二中的各CPU雖然計(jì)算系統(tǒng)內(nèi)所有端口的STP狀態(tài),但最后實(shí)際只控制本地的端口。
這種集中對(duì)等式實(shí)現(xiàn)方式需要將BPDU報(bào)文在系統(tǒng)內(nèi)廣播到所有設(shè)備,下面將結(jié)合圖6說(shuō)明這種技術(shù)的實(shí)現(xiàn)過(guò)程,其中在圖6中,1-端口接收BPDU;2-接收設(shè)備將該BPDU傳送給其他所有設(shè)備;3-端口發(fā)送BPDU1、所有設(shè)備上都需要保存系統(tǒng)內(nèi)所有端口的數(shù)據(jù)信息和狀態(tài)機(jī)信息;2、設(shè)備從本地端口收到BPDU報(bào)文后,先送交本地CPU處理,然后再將該BPDU報(bào)文廣播到其它所有設(shè)備并攜帶該BPDU的入端口號(hào);
3、每臺(tái)設(shè)備根據(jù)收到的BPDU和對(duì)應(yīng)的端口號(hào),計(jì)算系統(tǒng)內(nèi)所有端口的生成樹角色并確定端口的STP狀態(tài)。端口角色的選擇和端口狀態(tài)的確定請(qǐng)參見IEEE Std 802.1w-2001.Amendment 2Rapid Reconfiguration。
4、確定端口的STP狀態(tài)后,如果該端口在本地,則直接設(shè)置該端口的STP狀態(tài),否則只計(jì)算狀態(tài),不進(jìn)行實(shí)際控制;5、每臺(tái)設(shè)備根據(jù)當(dāng)前的計(jì)算結(jié)果確定從本地端口發(fā)送的BPDU報(bào)文,并且將報(bào)文從本地端口發(fā)送出去。
這種技術(shù)的缺點(diǎn)是1、每臺(tái)設(shè)備都需要負(fù)責(zé)系統(tǒng)內(nèi)所有端口的生成樹計(jì)算,設(shè)備需要高性能的CPU。會(huì)增加設(shè)備制造成本;2、增加了BPDU報(bào)文轉(zhuǎn)發(fā)的環(huán)節(jié),導(dǎo)致BPDU丟失概率增加,嚴(yán)重時(shí)會(huì)導(dǎo)致由于BPDU丟失而引起網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)動(dòng)蕩,而且可能會(huì)導(dǎo)致BPDU的丟失而引起各設(shè)備的計(jì)算結(jié)果不一致,導(dǎo)致整個(gè)系統(tǒng)的生成樹狀態(tài)計(jì)算錯(cuò)誤;3、降低網(wǎng)絡(luò)收斂的速度,對(duì)大量端口的管理,CPU需要花費(fèi)更多的時(shí)間進(jìn)行角色和狀態(tài)計(jì)算,因此降低了端口狀態(tài)的遷移快速性;4、每臺(tái)設(shè)備都需要保存所有端口的數(shù)據(jù)信息和狀態(tài)機(jī)信息,需要更多的存儲(chǔ)器來(lái)保存這些數(shù)據(jù),增加了設(shè)備的制造成本;5、所有端口收到的BPDU都需要在系統(tǒng)內(nèi)廣播,會(huì)占用大量的帶寬資源,造成設(shè)備間通訊帶寬的浪費(fèi),從而造成系統(tǒng)性能下降。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種快速生成樹協(xié)議在多CPU環(huán)境下的分布式實(shí)現(xiàn)方法。
根據(jù)發(fā)明的一個(gè)方面,本發(fā)明提供了一種快速生成樹協(xié)議在多CPU環(huán)境下的分布式實(shí)現(xiàn)方法,包括各設(shè)備只保存本地端口的數(shù)據(jù)和狀態(tài)機(jī)信息;每臺(tái)設(shè)備維護(hù)一個(gè)虛擬端口,所述虛擬端口所保存的信息為分布式系統(tǒng)內(nèi)當(dāng)前的根端口信息;RSTP(快速生成樹協(xié)議)根據(jù)本地端口信息和虛擬端口所保存的信息,選擇系統(tǒng)內(nèi)唯一的外部根端口。
其中,RSTP通過(guò)比較所收到的BPDU(橋協(xié)議數(shù)據(jù)單元)中含有的端口優(yōu)先級(jí)與虛擬端口保存的端口優(yōu)先級(jí)來(lái)選擇系統(tǒng)內(nèi)唯一的外部根端口。
其中,當(dāng)一個(gè)設(shè)備的虛擬端口保存的端口優(yōu)先級(jí)低于所收到的BPDU中含有的端口優(yōu)先級(jí)時(shí),RSTP選擇唯一的外部根端口位于該設(shè)備,然后將收到的BPDU以及該端口號(hào)作為同步消息發(fā)送給其他所有設(shè)備,以阻塞其它所有設(shè)備的根端口。
其中,當(dāng)一個(gè)設(shè)備的虛擬端口保存的端口優(yōu)先級(jí)高于所收到的BPDU中含有的端口優(yōu)先級(jí)時(shí),將該設(shè)備的本地根端口選擇為可選端口或指定端口。
其中,當(dāng)被阻塞根端口需要快速遷移到轉(zhuǎn)發(fā)狀態(tài)時(shí),該被塞根端口向系統(tǒng)內(nèi)所有端口下發(fā)“根端口重新選擇”信號(hào),該信號(hào)通過(guò)同步消息邏輯通道廣播到系統(tǒng)內(nèi)的其他所有端口;收到“根端口重新選擇”信號(hào)的設(shè)備檢查本地端口是否已經(jīng)與被阻塞根端口同步,如果同步,則阻塞本地端口,然后設(shè)備將向被阻塞根端口所在設(shè)備發(fā)送“本設(shè)備已經(jīng)同步根端口重新選擇”標(biāo)志;當(dāng)被阻塞根端口所在設(shè)備收到系統(tǒng)內(nèi)其他所有設(shè)備發(fā)來(lái)的“本設(shè)備已經(jīng)同步根端口重新選擇”標(biāo)志,并且本地其他端口也全部同步完畢時(shí),被阻塞根端口直接遷移到轉(zhuǎn)發(fā)狀態(tài)。
其中,當(dāng)上游指定端口需要遷移到轉(zhuǎn)發(fā)狀態(tài)時(shí),指定端口向下游發(fā)送同步請(qǐng)求消息,此時(shí)下游根端口向本地所有端口和系統(tǒng)內(nèi)其他設(shè)備發(fā)送同步信號(hào),同步信號(hào)通過(guò)同步消息邏輯通道廣播給其他所有設(shè)備;收到該同步信號(hào)的設(shè)備在本地執(zhí)行同步動(dòng)作,根據(jù)需要阻塞潛在冗余端口,在同步完畢后,向根端口所在設(shè)備發(fā)送同步完畢消息;當(dāng)根端口所在設(shè)備收到系統(tǒng)內(nèi)其他所有設(shè)備的同步完畢消息,并且本地其他端口也已經(jīng)全部同步完畢時(shí),根端口向上游指定端口發(fā)送同步應(yīng)答消息;上游指定端口收到同步應(yīng)答消息后,直接遷移到轉(zhuǎn)發(fā)狀態(tài)。
根據(jù)本發(fā)明的另一個(gè)方面,本發(fā)明提供了一種快速生成樹協(xié)議在多CPU環(huán)境下的分布式實(shí)現(xiàn)方法,其中各設(shè)備只保存本地端口的數(shù)據(jù)和狀態(tài)機(jī)信息;每臺(tái)設(shè)備維護(hù)一個(gè)虛擬端口,所述虛擬端口所保存的信息為分布式系統(tǒng)內(nèi)當(dāng)前的根端口信息;該方法包括以下步驟a)設(shè)備端口收到BPDU(橋協(xié)議數(shù)據(jù)單元)報(bào)文后,將報(bào)文送交本地RSTP(快速生成樹協(xié)議)進(jìn)行處理,RSTP根據(jù)本地端口信息和虛擬端口所保存的信息選擇系統(tǒng)內(nèi)唯一的外部根端口;b)如果選擇的外部根端口位于本設(shè)備,則RSTP將該端口收到的BPDU以及該端口號(hào)作為同步消息發(fā)送給其他所有設(shè)備,用于阻塞其它所有設(shè)備的根端口;c)設(shè)備如果收到來(lái)自其他設(shè)備發(fā)來(lái)的根端口信息時(shí),將該信息保存到本地的虛擬端口上,并且重新觸發(fā)本地的根端口角色選擇,如果自己的根端口信息沒有遠(yuǎn)端根端口信息優(yōu)時(shí),本地根端口將被選擇為可選端口或指定端口。
d)當(dāng)被阻塞根端口需要快速遷移到轉(zhuǎn)發(fā)狀態(tài)時(shí),該被塞根端口向系統(tǒng)內(nèi)所有端口下發(fā)“根端口重新選擇”信號(hào),該信號(hào)通過(guò)同步消息邏輯通道廣播到系統(tǒng)內(nèi)的其他所有端口;e)收到“根端口重新選擇”信號(hào)的設(shè)備檢查本地端口是否已經(jīng)與被阻塞根端口同步,如果同步,則阻塞本地端口,然后設(shè)備將向被阻塞根端口所在設(shè)備發(fā)送“本設(shè)備已經(jīng)同步根端口重新選擇”標(biāo)志;f)當(dāng)被阻塞根端口所在設(shè)備收到系統(tǒng)內(nèi)其他所有設(shè)備發(fā)來(lái)的“本設(shè)備已經(jīng)同步根端口重新選擇”標(biāo)志,并且本地其他端口也全部同步完畢時(shí),被阻塞根端口直接遷移到轉(zhuǎn)發(fā)狀態(tài);g)當(dāng)上游指定端口需要遷移到轉(zhuǎn)發(fā)狀態(tài)時(shí),指定端口向下游發(fā)送同步請(qǐng)求消息,此時(shí)下游根端口向本地所有端口和系統(tǒng)內(nèi)其他設(shè)備發(fā)送同步信號(hào),同步信號(hào)通過(guò)同步消息邏輯通道廣播給其他所有設(shè)備;h)收到該同步信號(hào)的設(shè)備在本地執(zhí)行同步動(dòng)作,根據(jù)需要阻塞潛在冗余端口,在同步完畢后,向根端口所在設(shè)備發(fā)送同步完畢消息;i)當(dāng)根端口所在設(shè)備收到系統(tǒng)內(nèi)其他所有設(shè)備的同步完畢消息,并且本地其他端口也已經(jīng)全部同步完畢時(shí),根端口向上游指定端口發(fā)送同步應(yīng)答消息;j)上游指定端口收到同步應(yīng)答消息后,直接遷移到轉(zhuǎn)發(fā)狀態(tài)。
其中,當(dāng)系統(tǒng)內(nèi)的某臺(tái)設(shè)備發(fā)現(xiàn)拓?fù)渥兓蛘呤盏酵負(fù)渥兓r(shí),通過(guò)同步消息邏輯通道向其他所有設(shè)備發(fā)送拓?fù)渥兓?,設(shè)備收到該消息后刷新本地的地址轉(zhuǎn)發(fā)信息。
本發(fā)明具有以下優(yōu)點(diǎn)1、降低單CPU的計(jì)算量,解決CPU性能需求問題,即在高端口密度的系統(tǒng)下,降低對(duì)CPU性能的要求,采用低性能CPU也可以完成快速生成樹協(xié)議的計(jì)算過(guò)程。
2、避免BPDU在內(nèi)部鏈路轉(zhuǎn)發(fā),解決BPDU在向主設(shè)備傳送過(guò)程中的丟失對(duì)拓?fù)浞€(wěn)定所帶來(lái)的影響。
3、每個(gè)CPU只控制本地端口的STP狀態(tài),避免由于需要向其他設(shè)備發(fā)送STP狀態(tài)設(shè)置指令而帶來(lái)的可靠性和臨時(shí)回路問題。
4、每臺(tái)設(shè)備只需要保存本地端口的數(shù)據(jù)和狀態(tài)機(jī)信息,減少對(duì)存儲(chǔ)器的需求,降低設(shè)備制造成本;5、不需要在各設(shè)備之間廣播BPDU報(bào)文,減少對(duì)設(shè)備之間通訊帶寬的需求;6、通過(guò)一種特殊的同步方式,避免了由于設(shè)備之間的信息同步而導(dǎo)致系統(tǒng)生成樹狀態(tài)計(jì)算錯(cuò)誤;7、采用對(duì)等式分布式方式設(shè)計(jì),一臺(tái)設(shè)備故障時(shí)不會(huì)導(dǎo)致整個(gè)系統(tǒng)的生成樹狀態(tài)重新計(jì)算;8、每臺(tái)設(shè)備只計(jì)算本地端口,端口數(shù)量的成倍減少提高了生成樹協(xié)議的計(jì)算速度,降低網(wǎng)絡(luò)的收斂時(shí)間。
本發(fā)明的上述目的、特點(diǎn)和效果將通過(guò)下面的結(jié)合附圖的詳細(xì)說(shuō)明而變得更加清楚。
圖1是現(xiàn)有技術(shù)的環(huán)路下報(bào)文增生的示意圖;圖2是現(xiàn)有技術(shù)的冗余的端口被阻塞的示意圖;圖3是現(xiàn)有的多CPU框式設(shè)備示意圖;圖4是現(xiàn)有的多CPU堆疊系統(tǒng)示意圖;圖5是利用主從方式實(shí)現(xiàn)快速生成樹協(xié)議的示意圖;圖6是利用集中對(duì)等式實(shí)現(xiàn)方式的示意圖;圖7是顯示分布式系統(tǒng)與普通互聯(lián)網(wǎng)的快速生成樹計(jì)算區(qū)別的示意圖;圖8是本發(fā)明的多CPU環(huán)境下的快速生成樹協(xié)議分布式實(shí)現(xiàn)原理圖;圖9是多CPU環(huán)境下分布式RSTP的根端口角色遷移狀態(tài)機(jī)的示意圖。
具體實(shí)施例方式
在框式結(jié)構(gòu)和堆疊系統(tǒng)等多CPU分布式情況下,快速生成樹協(xié)議與普通的多設(shè)備互連情況下的快速生成樹協(xié)議的計(jì)算特征是不同的,下面詳細(xì)說(shuō)明不同點(diǎn)1、對(duì)于分布式系統(tǒng),對(duì)外只能存在一個(gè)根端口,而其他設(shè)備的根端口只能是連往根端口所在設(shè)備的內(nèi)部端口。而在普通互連網(wǎng)絡(luò)中,每臺(tái)設(shè)備都可以獨(dú)立選擇自己的根端口,物理連接結(jié)構(gòu)不同,參數(shù)配置不同,都會(huì)導(dǎo)致選擇的根端口也不同;2、分布式系統(tǒng)中,內(nèi)部連接鏈路需要始終保持為轉(zhuǎn)發(fā)狀態(tài),任何時(shí)候都不能夠被生成樹協(xié)議阻塞。而在普通互連網(wǎng)絡(luò)中,互連的鏈路可以根據(jù)需要在任何時(shí)候被生成樹協(xié)議阻塞;3、端口STP狀態(tài)快速遷移到轉(zhuǎn)發(fā)狀態(tài)時(shí),需要保證所有潛在的冗余鏈路都被阻塞,在分布式系統(tǒng)中,由于內(nèi)部鏈路不能夠被阻塞,因此,端口遷移到轉(zhuǎn)發(fā)狀態(tài)時(shí),快速生成樹協(xié)議需要保證位于其他設(shè)備上的端口(遠(yuǎn)端的的端口)已經(jīng)與其同步,必要時(shí)已經(jīng)遷移到阻塞狀態(tài)。而對(duì)于普通的互連設(shè)備,每臺(tái)設(shè)備只需要確保本地的端口與需要遷移到轉(zhuǎn)發(fā)狀態(tài)的端口同步,無(wú)需關(guān)心其他設(shè)備上的端口;4、當(dāng)設(shè)備發(fā)現(xiàn)拓?fù)涓淖兓蛘呤盏酵負(fù)涓淖兺ㄖr(shí),快速生成樹協(xié)議需要刷新本地所有必要的端口所學(xué)到的地址轉(zhuǎn)發(fā)信息。對(duì)于分布式系統(tǒng),當(dāng)發(fā)現(xiàn)拓?fù)涓淖兓蛘呤盏酵負(fù)渥兓ㄖ獣r(shí),快速生成樹協(xié)議需要刷新系統(tǒng)內(nèi)所有的必要的端口所學(xué)到的地址轉(zhuǎn)發(fā)信息。而對(duì)于普通互連的設(shè)備,其只需要刷新本地端口所學(xué)到的地址轉(zhuǎn)發(fā)信息,而無(wú)需關(guān)心其他設(shè)備的端口。
本發(fā)明采用“分布對(duì)等式”設(shè)計(jì)方案,該方案的特點(diǎn)為每臺(tái)設(shè)備只負(fù)責(zé)保存本地端口的數(shù)據(jù)和狀態(tài)機(jī)信息,只處理來(lái)自本地端口的BPDU報(bào)文,并且只控制本地端口,不對(duì)系統(tǒng)內(nèi)其它設(shè)備的端口進(jìn)行直接控制。為了為整個(gè)系統(tǒng)選擇一個(gè)唯一的根端口和實(shí)現(xiàn)端口STP狀態(tài)的快速遷移,在系統(tǒng)內(nèi)各設(shè)備之間,快速生成樹協(xié)議通過(guò)發(fā)送特定的報(bào)文來(lái)進(jìn)行各設(shè)備RSTP狀態(tài)的同步。
下面結(jié)合圖8說(shuō)明本發(fā)明的實(shí)現(xiàn)過(guò)程1、各設(shè)備只保存本地端口的數(shù)據(jù)和狀態(tài)機(jī)信息。
2、每臺(tái)設(shè)備維護(hù)一個(gè)虛擬端口,該端口所保存的信息為分布式系統(tǒng)內(nèi)當(dāng)前的根端口信息,如果系統(tǒng)內(nèi)沒有根端口,則該端口所保存的信息可以認(rèn)為是無(wú)效的。
3、端口收到BPDU報(bào)文后,將報(bào)文送交本地RSTP進(jìn)行處理。RSTP根據(jù)本地端口信息和虛擬端口所保存的信息來(lái)選擇系統(tǒng)內(nèi)的根端口。具體而言,RSTP在選舉根端口的時(shí)候,會(huì)通過(guò)比較設(shè)備上所有端口所保存的信息(包括根橋ID,到根的距離,上游指定橋ID,上游指定端口ID以及自己的端口ID,如果該設(shè)備沒有上游設(shè)備,則指定橋ID為自己的橋ID,指定端口ID為自己端口的ID),來(lái)選舉一個(gè)通過(guò)最短路徑連往根橋的端口作為根端口。也就是說(shuō)分布式RSTP特點(diǎn)在于在選舉根端口時(shí),不光會(huì)比較設(shè)備本身的所有端口(即本地端口)上所保存的信息,還會(huì)比較那個(gè)虛擬端口上的信息。
4、如果選擇的根端口位于本設(shè)備,則RSTP協(xié)議將該端口收到的BPDU以及該端口號(hào)作為同步消息發(fā)送給其他所有設(shè)備。
5、設(shè)備如果收到來(lái)自其他設(shè)備發(fā)來(lái)的根端口信息時(shí),將該信息保存到本地的虛擬端口上,并且重新觸發(fā)本地的根端口角色選擇,如果自己的根端口信息沒有遠(yuǎn)端根端口信息優(yōu)時(shí),本地根端口將被選擇為可選端口或指定端口。
6、當(dāng)被阻塞的根端口需要快速遷移到轉(zhuǎn)發(fā)狀態(tài)時(shí),根端口會(huì)向系統(tǒng)內(nèi)所有端口下發(fā)“根端口重新選擇”信號(hào),該信號(hào)通過(guò)同步消息邏輯通道廣播到系統(tǒng)內(nèi)的其他所有端口。
7、如果設(shè)備收到“根端口重新選擇”信號(hào),設(shè)備會(huì)檢查本地端口是否已經(jīng)與該根端口同步,如果同步,則阻塞該端口,然后設(shè)備將向根端口所在設(shè)備發(fā)送“本設(shè)備已經(jīng)同步根端口重新選擇”標(biāo)志。
8、根端口所在設(shè)備收到系統(tǒng)內(nèi)其他所有設(shè)備發(fā)來(lái)的“本設(shè)備已經(jīng)同步根端口重新選擇”標(biāo)志,并且本地其他端口也全部同步完畢時(shí),根端口直接遷移到轉(zhuǎn)發(fā)狀態(tài)。
9、當(dāng)上游指定端口需要遷移到轉(zhuǎn)發(fā)狀態(tài)時(shí),指定端口會(huì)向下游發(fā)送同步請(qǐng)求消息,此時(shí)下游根端口需要向本地所有端口和系統(tǒng)內(nèi)其他設(shè)備發(fā)送同步信號(hào),同步信號(hào)也是通過(guò)同步消息邏輯通道廣播給其他所有設(shè)備。
10、當(dāng)設(shè)備收到該同步信號(hào)后,在本地執(zhí)行同步動(dòng)作,根據(jù)需要阻塞潛在冗余端口。同步完畢后,設(shè)備會(huì)向根端口所在設(shè)備發(fā)送同步完畢消息。
11、當(dāng)根端口所在設(shè)備收到系統(tǒng)內(nèi)其他所有設(shè)備的同步完畢消息,并且本地其他端口也已經(jīng)全部同步完畢,則根端口將向上游指定端口響應(yīng)同步應(yīng)答消息。
12、上游指定端口收到同步應(yīng)答消息后,會(huì)直接遷移到轉(zhuǎn)發(fā)狀態(tài)。
13、當(dāng)系統(tǒng)內(nèi)的某臺(tái)設(shè)備發(fā)現(xiàn)拓?fù)渥兓蛘呤盏酵負(fù)渥兓?,?huì)通過(guò)同步消息邏輯通道向其他所有設(shè)備發(fā)送拓?fù)渥兓ⅲO(shè)備收到該消息后會(huì)刷新本地的地址轉(zhuǎn)發(fā)信息。
同步消息采用可靠傳輸方式發(fā)送,傳輸系統(tǒng)本身保證同步消息不被丟失。同步消息本身具備30秒的時(shí)效性,而不是普通BPDU的6秒老化時(shí)間。只要同步消息在30秒內(nèi)到達(dá),快速生成樹協(xié)議即不會(huì)發(fā)生計(jì)算錯(cuò)誤。而現(xiàn)有技術(shù)中,這個(gè)時(shí)間一般是6秒。因此,本發(fā)明可以提高分布式系統(tǒng)下快速生成樹協(xié)議的可靠性。
下面參照?qǐng)D9說(shuō)明本發(fā)明的具體技術(shù)特點(diǎn)。
1、選擇唯一的外部根端口(1)優(yōu)先級(jí)向量的定義及優(yōu)先級(jí)比較原則RSTP的優(yōu)先級(jí)向量定義為V{R,RC,DB,DP,RP},其中R表示網(wǎng)絡(luò)中的根橋ID;RC表示本橋到根橋的距離;DB表示指定橋ID,即該消息的發(fā)送橋ID;DP表示指定端口ID,即消息的發(fā)送端口ID;RP表示收到該消息的端口ID;RSTP的優(yōu)先級(jí)向量包括橋優(yōu)先級(jí)向量bridgePriority、端口優(yōu)先級(jí)向量portPriority和消息優(yōu)先級(jí)向量msgPriority。此外在角色計(jì)算時(shí)還使用到rootPriority和designatedPriority以及rootPathPriority。各優(yōu)先級(jí)相當(dāng)?shù)亩x請(qǐng)參見IEEE 802.1w-200117.4節(jié)。
兩個(gè)向量V1、V2比較時(shí)如果((R1<R2))||((R1=R2)&&(RC1<RC2))||((R1=R2)&&(RC1=RC2)&&(DB1<DB2))||((R1=R2)&&(RC1=RC2)&&(DB1=DB2)&&(DP1<DP2))||((R1=R2)&&(RC1=RC2)&&(DB1=DB2)&&(DP1=DP2)&&(RP1<RP2))則V1比V2優(yōu)(Better)。
(2)為每個(gè)設(shè)備增加一個(gè)虛擬端口,該端口參與設(shè)備的端口角色計(jì)算如果分布式系統(tǒng)中的其它設(shè)備存在根端口,則該端口的portPriority為根端口的rootPathPriority,即{Rr,RCr,DBr,DPr,RPr},各向量成員均表示該根端口所保存的信息,RPr表示根端口ID(也就是接收該信息的端口ID)。
如果分布式系統(tǒng)中沒有根端口或者根端口在本設(shè)備上,則該端口的portPriority為{B,0,B,0,0},其中B表示該分布式系統(tǒng)的橋ID。
如果該端口收到新的BPDU,則比較收到的BPDU是否比自己優(yōu),如果優(yōu)則重新刷新本地的portPriority然后觸發(fā)本設(shè)備的端口角色計(jì)算。
如果該端口收到{Rr,RCr,DBr,DPr,RPr}不可用信息,則比較是否與當(dāng)前的portPriority一致,如果一致,則更新portPriority為bridgePriority,即{B,0,B,0,0},然后觸發(fā)本設(shè)備角色重新計(jì)算;如果不一致,則不作處理。
(3)端口角色選擇過(guò)程1)計(jì)算rootPathPrioritya)對(duì)所有portPriority為received的端口,RSTP計(jì)算該端口的rootPathPriority。rootPathPriority=portPriority,但是其中RC=portPriority的RC+該端口的PathCost值;b)對(duì)bridgePriority計(jì)算其rootPathPriority。rootPathPriority=bridgePriority;c)如果虛擬端口的portPriority不等于bridgePriority,則計(jì)算該端口的rootPathPriority。虛擬端口的rootPathPriority=端口的portPriority=該分布式系統(tǒng)的根端口的rootPathPrioriy;2)選出最優(yōu)的rootPathPriority,即本設(shè)備的rootPriority。
根據(jù)優(yōu)先級(jí)向量比較原則比較所有的rootPathPriority,選出一個(gè)最優(yōu)的作為本設(shè)備的rootPriority。
3)根據(jù)rootPriority計(jì)算所有端口的designatedPriority。designatedPriority用來(lái)確定該端口發(fā)送的BPDU內(nèi)容。
4)根據(jù)上述計(jì)算結(jié)果確定本設(shè)備各端口角色。
2、根端口重新選擇時(shí)端口狀態(tài)同步(reRoot過(guò)程同步)每個(gè)橋去往根橋的方向只能有一條路徑(也就是說(shuō)只能有一個(gè)根端口),新的根端口遷移時(shí),如果去往根方向沒有其它路徑,則該根端口可以立即遷移到轉(zhuǎn)發(fā)狀態(tài)。
新的根端口為了保證沒有其它去往根橋的路徑,其在向轉(zhuǎn)發(fā)狀態(tài)遷移之間,向所有端口發(fā)送reRoot信號(hào),即通知所有端口自己變?yōu)楦丝诹?,并且希望遷移到轉(zhuǎn)發(fā)狀態(tài)。
其它端口在收到reRoot信號(hào)后,如果自己最近是根橋(即定時(shí)器rrWhile沒有超時(shí)),則需要將自己遷移到阻塞狀態(tài),然后停止rrWhile定時(shí)器。
根端口監(jiān)控所有其它端口的rrWhile定時(shí),當(dāng)所有定時(shí)器均已經(jīng)停止時(shí)(即reRooted),表示當(dāng)前沒有通往根橋的路徑了,此時(shí),根端口可以立即遷移到轉(zhuǎn)發(fā)狀態(tài)。
對(duì)于這種同步過(guò)程,擴(kuò)展到整個(gè)分布式系統(tǒng)范圍內(nèi),可以采用如下操作過(guò)程(1)發(fā)送reRoot信息1)設(shè)置本地所有外部端口的reRoot標(biāo)志;2)通過(guò)同步消息傳輸通道,將該操作發(fā)送到系統(tǒng)內(nèi)其他所有設(shè)備,設(shè)置這些設(shè)備的端口的reRoot標(biāo)志;3)各設(shè)備根據(jù)reRoot標(biāo)志激勵(lì)對(duì)應(yīng)端口的狀態(tài)機(jī)進(jìn)行角色遷移。
(2)擴(kuò)充reRooted定義協(xié)議中定義reRooted系統(tǒng)內(nèi)除了根端口的rrwhile定時(shí)器外,其他所有端口的rrwhile定時(shí)器均已超時(shí)。
對(duì)于分布式系統(tǒng),每個(gè)設(shè)備增加unitReRooted1、unitReRooted2、…、unitReRootedM,其中M為分布式系統(tǒng)內(nèi)的最大設(shè)備數(shù),用unitReRootedX表示其中任何一個(gè)。
另外,定義meReRooted為本設(shè)備已經(jīng)同步,即本設(shè)備除了根端口外其他端口的rrwhile定時(shí)器均已超時(shí)。
這樣的話,reRooted新的定義為meReRooted && unitReRooted1 && unitReRooted2 &&…&&unitReRootedM(除本設(shè)備的unitReRooted外)(3)其它設(shè)備向根端口所在設(shè)備發(fā)送meReRooted信號(hào)每個(gè)設(shè)備的meReRooted置位后,通過(guò)同步消息傳輸通道向根端口所在設(shè)備發(fā)送meReRooted信號(hào),根端口所在設(shè)備收到該信號(hào)后,設(shè)置相應(yīng)的unitReRooted變量,然后檢查是否reRooted,如果是則激勵(lì)根端口的狀態(tài)機(jī)進(jìn)行遷移,即快速遷移到轉(zhuǎn)發(fā)狀態(tài)。
3、指定端口的快速遷移同步過(guò)程(sync同步過(guò)程)指定端口向轉(zhuǎn)發(fā)狀態(tài)遷移時(shí)需要向下游根端口發(fā)送proposal(同步請(qǐng)求)信號(hào),根端口收到該信號(hào)后設(shè)置本地的proposed標(biāo)志。如果由于最近發(fā)生拓?fù)渥兓锤丝诘膕ynced被復(fù)位,則根端口需要向系統(tǒng)內(nèi)的所有端口發(fā)送sync信號(hào),通知這些端口上游有端口需要遷移到轉(zhuǎn)發(fā)狀態(tài)。
指定端口在收到sync信號(hào)后,如果自己的synced沒有置位,則端口遷移到阻塞狀態(tài),然后將自己的synced置位。對(duì)于其它端口由于其不提供轉(zhuǎn)發(fā)路徑,不會(huì)構(gòu)成環(huán)路危險(xiǎn),可以直接將端口的synced置位。
根端口檢測(cè)到所有其它端口的synced置位后,即allsynced后,根端口設(shè)置自己的synced標(biāo)志,然后向上游指定端口發(fā)送agree信號(hào),表示自己已經(jīng)同步。
上游在收到agree信號(hào)后可以立即遷移到轉(zhuǎn)發(fā)狀態(tài)。
對(duì)于這種同步過(guò)程,擴(kuò)展到整個(gè)分布式系統(tǒng)范圍內(nèi),可以采用如下操作過(guò)程(1)發(fā)送sync信息1)設(shè)置本地所有外部端口的sync標(biāo)志;2)通過(guò)同步消息傳輸通道,將該操作發(fā)送到系統(tǒng)內(nèi)其他所有設(shè)備,設(shè)置這些設(shè)備的端口的sync標(biāo)志;3)各設(shè)備根據(jù)sync標(biāo)志激勵(lì)對(duì)應(yīng)端口的狀態(tài)機(jī)進(jìn)行角色遷移。
(2)擴(kuò)充allSynced定義協(xié)議中定義allSynced系統(tǒng)內(nèi)除根端口外的其他所有端口均為synced狀態(tài)。
對(duì)于分布式系統(tǒng),每個(gè)設(shè)備增加unitSynced1、unitSynced2、…、unitSyncedM,其中M為系統(tǒng)內(nèi)的最大設(shè)備數(shù),用unitSyncedX表示其中任何一個(gè)。
另外,定義meSynced為本設(shè)備已經(jīng)同步,即本設(shè)備內(nèi)除根端口外的其他所有端口均為synced狀態(tài)。
這樣的話,allSynced新的定義為meSynced && unitSynced1 && unitSynced2 && … &&unitSyncedM(除本設(shè)備的unitSynced外)(3)其它設(shè)備向根端口所在設(shè)備發(fā)送meSynced信號(hào)每個(gè)設(shè)備的meSynced置位后,通過(guò)同步消息傳輸通道向根端口所在設(shè)備發(fā)送meSynced信號(hào),根端口所在設(shè)備收到該信號(hào)后,設(shè)置相應(yīng)的unitSynced變量,然后檢查是否allSynced,如果是則激勵(lì)根端口向上游指定端口發(fā)送agree信號(hào)。
4、拓?fù)涓淖兿⑼竭^(guò)程端口在發(fā)現(xiàn)拓?fù)渥兓蛘呤盏酵負(fù)渥兓⒑螅負(fù)渥兓幚頎顟B(tài)機(jī)通知其它所有端口向外發(fā)送拓?fù)涓淖冃畔ⅰ?br>
對(duì)于分布式系統(tǒng),處理過(guò)程如下1)設(shè)置本地除自己之外的其它所有端口的tcProp標(biāo)志,從而激勵(lì)這些端口的狀態(tài)機(jī),觸發(fā)tcWhile定時(shí)器,清除端口所學(xué)到的地址轉(zhuǎn)發(fā)信息;2)通過(guò)同步消息傳輸通道,將該操作發(fā)送到系統(tǒng)內(nèi)其他所有設(shè)備,設(shè)置這些設(shè)備上的所有端口的tcProp標(biāo)志,從而激勵(lì)這些設(shè)備的端口狀態(tài)機(jī),觸發(fā)tcWhile定時(shí)器,清除端口的地址轉(zhuǎn)發(fā)項(xiàng)。
綜上所述,本發(fā)明具有以下有益效果1、減少快速生成樹協(xié)議對(duì)CPU和存儲(chǔ)器資源的需求,降低設(shè)備的制造成本;2、避免BPDU在內(nèi)部鏈路轉(zhuǎn)發(fā),解決BPDU在向主設(shè)備傳送過(guò)程中的丟失對(duì)拓?fù)浞€(wěn)定所帶來(lái)的影響。
3、每個(gè)CPU只控制本地端口的STP狀態(tài),避免由于需要向其他設(shè)備發(fā)送STP狀態(tài)設(shè)置指令而帶來(lái)的可靠性和臨時(shí)回路問題。
4、不需要在各設(shè)備之間廣播BPDU報(bào)文,減少對(duì)設(shè)備之間通訊帶寬的需求;5、本發(fā)明通過(guò)特殊的同步方式,避免了由于設(shè)備之間的信息同步而導(dǎo)致系統(tǒng)生成樹狀態(tài)計(jì)算錯(cuò)誤;6、本發(fā)明采用對(duì)等式分布式方式設(shè)計(jì),一臺(tái)設(shè)備故障時(shí)不會(huì)導(dǎo)致整個(gè)系統(tǒng)的生成樹狀態(tài)重新計(jì)算;7、每臺(tái)設(shè)備只計(jì)算本地端口,端口數(shù)量的成倍減少提供的生成樹協(xié)議的計(jì)算速度,提高網(wǎng)絡(luò)的收斂速度。
權(quán)利要求
1.一種快速生成樹協(xié)議在多CPU環(huán)境下的分布式實(shí)現(xiàn)方法,包括各設(shè)備只保存本地端口的數(shù)據(jù)和狀態(tài)機(jī)信息;每臺(tái)設(shè)備維護(hù)一個(gè)虛擬端口,所述虛擬端口所保存的信息為分布式系統(tǒng)內(nèi)當(dāng)前的根端口信息;RSTP(快速生成樹協(xié)議)根據(jù)本地端口信息和虛擬端口所保存的信息,選擇系統(tǒng)內(nèi)唯一的外部根端口。
2.根據(jù)權(quán)利要求1所述的方法,其中RSTP通過(guò)比較所收到的BPDU(橋協(xié)議數(shù)據(jù)單元)中含有的端口優(yōu)先級(jí)與虛擬端口保存的端口優(yōu)先級(jí)來(lái)選擇系統(tǒng)內(nèi)唯一的外部根端口。
3.根據(jù)權(quán)利要求2所述的方法,其中,當(dāng)一個(gè)設(shè)備的虛擬端口保存的端口優(yōu)先級(jí)低于所收到的BPDU中含有的端口優(yōu)先級(jí)時(shí),RSTP選擇唯一的外部根端口位于該設(shè)備,然后將收到的BPDU以及該端口號(hào)作為同步消息發(fā)送給其他所有設(shè)備,以阻塞其它所有設(shè)備的根端口。
4.根據(jù)權(quán)利要求2所述的方法,其中,當(dāng)一個(gè)設(shè)備的虛擬端口保存的端口優(yōu)先級(jí)高于所收到的BPDU中含有的端口優(yōu)先級(jí)時(shí),將該設(shè)備的本地根端口選擇為可選端口或指定端口。
5.根據(jù)權(quán)利要求3所述的方法,其中當(dāng)被阻塞根端口需要快速遷移到轉(zhuǎn)發(fā)狀態(tài)時(shí),該被塞根端口向系統(tǒng)內(nèi)所有端口下發(fā)“根端口重新選擇”信號(hào),該信號(hào)通過(guò)同步消息邏輯通道廣播到系統(tǒng)內(nèi)的其他所有端口;收到“根端口重新選擇”信號(hào)的設(shè)備檢查本地端口是否已經(jīng)與被阻塞根端口同步,如果同步,則阻塞本地端口,然后設(shè)備將向被阻塞根端口所在設(shè)備發(fā)送“本設(shè)備已經(jīng)同步根端口重新選擇”標(biāo)志;當(dāng)被阻塞根端口所在設(shè)備收到系統(tǒng)內(nèi)其他所有設(shè)備發(fā)來(lái)的“本設(shè)備已經(jīng)同步根端口重新選擇”標(biāo)志,并且本地其他端口也全部同步完畢時(shí),被阻塞根端口直接遷移到轉(zhuǎn)發(fā)狀態(tài)。
6.根據(jù)權(quán)利要求2至5任一項(xiàng)所述的方法,其中當(dāng)上游指定端口需要遷移到轉(zhuǎn)發(fā)狀態(tài)時(shí),指定端口向下游發(fā)送同步請(qǐng)求消息,此時(shí)下游根端口向本地所有端口和系統(tǒng)內(nèi)其他設(shè)備發(fā)送同步信號(hào),同步信號(hào)通過(guò)同步消息邏輯通道廣播給其他所有設(shè)備;收到該同步信號(hào)的設(shè)備在本地執(zhí)行同步動(dòng)作,根據(jù)需要阻塞潛在冗余端口,在同步完畢后,向根端口所在設(shè)備發(fā)送同步完畢消息;當(dāng)根端口所在設(shè)備收到系統(tǒng)內(nèi)其他所有設(shè)備的同步完畢消息,并且本地其他端口也已經(jīng)全部同步完畢時(shí),根端口向上游指定端口發(fā)送同步應(yīng)答消息;上游指定端口收到同步應(yīng)答消息后,直接遷移到轉(zhuǎn)發(fā)狀態(tài)。
7.一種快速生成樹協(xié)議在多CPU環(huán)境下的分布式實(shí)現(xiàn)方法,其中各設(shè)備只保存本地端口的數(shù)據(jù)和狀態(tài)機(jī)信息;每臺(tái)設(shè)備維護(hù)一個(gè)虛擬端口,所述虛擬端口所保存的信息為分布式系統(tǒng)內(nèi)當(dāng)前的根端口信息;該方法包括以下步驟a)設(shè)備端口收到BPDU(橋協(xié)議數(shù)據(jù)單元)報(bào)文后,將報(bào)文送交本地RSTP(快速生成樹協(xié)議)進(jìn)行處理,RSTP根據(jù)本地端口信息和虛擬端口所保存的信息選擇系統(tǒng)內(nèi)唯一的外部根端口;b)如果選擇的外部根端口位于本設(shè)備,則RSTP將該端口收到的BPDU以及該端口號(hào)作為同步消息發(fā)送給其他所有設(shè)備,通知其它設(shè)備重新選舉,以阻塞位于其它設(shè)備的根端口;c)設(shè)備如果收到來(lái)自其他設(shè)備發(fā)來(lái)的根端口信息時(shí),將該信息保存到本地的虛擬端口上,并且重新觸發(fā)本地的根端口角色選擇,如果自己的根端口信息沒有遠(yuǎn)端根端口信息優(yōu)時(shí),本地根端口將被選擇為可選端口或指定端口。
8.根據(jù)權(quán)利要求7所述的方法,還包括以下步驟d)當(dāng)被阻塞根端口需要快速遷移到轉(zhuǎn)發(fā)狀態(tài)時(shí),該被塞根端口向系統(tǒng)內(nèi)所有端口下發(fā)“根端口重新選擇”信號(hào),該信號(hào)通過(guò)同步消息邏輯通道廣播到系統(tǒng)內(nèi)的其他所有端口;e)收到“根端口重新選擇”信號(hào)的設(shè)備檢查本地端口是否已經(jīng)與被阻塞根端口同步,如果同步,則阻塞本地端口,然后設(shè)備將向被阻塞根端口所在設(shè)備發(fā)送“本設(shè)備已經(jīng)同步根端口重新選擇”標(biāo)志;f)當(dāng)被阻塞根端口所在設(shè)備收到系統(tǒng)內(nèi)其他所有設(shè)備發(fā)來(lái)的“本設(shè)備已經(jīng)同步根端口重新選擇”標(biāo)志,并且本地其他端口也全部同步完畢時(shí),被阻塞根端口直接遷移到轉(zhuǎn)發(fā)狀態(tài);
9.根據(jù)權(quán)利要求7或8所述的方法,還包括以下步驟g)當(dāng)上游指定端口需要遷移到轉(zhuǎn)發(fā)狀態(tài)時(shí),指定端口向下游發(fā)送同步請(qǐng)求消息,此時(shí)下游根端口向本地所有端口和系統(tǒng)內(nèi)其他設(shè)備發(fā)送同步信號(hào),同步信號(hào)通過(guò)同步消息邏輯通道廣播給其他所有設(shè)備;h)收到該同步信號(hào)的設(shè)備在本地執(zhí)行同步動(dòng)作,根據(jù)需要阻塞潛在冗余端口,在同步完畢后,向根端口所在設(shè)備發(fā)送同步完畢消息;i)當(dāng)根端口所在設(shè)備收到系統(tǒng)內(nèi)其他所有設(shè)備的同步完畢消息,并且本地其他端口也已經(jīng)全部同步完畢時(shí),根端口向上游指定端口發(fā)送同步應(yīng)答消息;j)上游指定端口收到同步應(yīng)答消息后,直接遷移到轉(zhuǎn)發(fā)狀態(tài)。
10.根據(jù)權(quán)利要求8所述的方法,其中,當(dāng)系統(tǒng)內(nèi)的某臺(tái)設(shè)備發(fā)現(xiàn)拓?fù)渥兓蛘呤盏酵負(fù)渥兓r(shí),通過(guò)同步消息邏輯通道向其他所有設(shè)備發(fā)送拓?fù)渥兓?,設(shè)備收到該消息后刷新本地的地址轉(zhuǎn)發(fā)信息。
全文摘要
本發(fā)明公開了一種快速生成樹協(xié)議在多CPU環(huán)境下的分布式實(shí)現(xiàn)方法,包括各設(shè)備只保存本地端口的數(shù)據(jù)和狀態(tài)機(jī)信息;每臺(tái)設(shè)備維護(hù)一個(gè)虛擬端口,所述虛擬端口所保存的信息為分布式系統(tǒng)內(nèi)當(dāng)前的根端口信息;RSTP(快速生成樹協(xié)議)根據(jù)本地端口信息和虛擬端口所保存的信息,選擇系統(tǒng)內(nèi)唯一的外部根端口;各設(shè)備之間通過(guò)信息同步方式來(lái)保證分布式RSTP的快速收斂特性。如果分布式系統(tǒng)內(nèi)某臺(tái)設(shè)備收到的信息比該設(shè)備上虛擬端口所保存的信息優(yōu),則該設(shè)備會(huì)重新選擇更優(yōu)的該端口作為外部根端口,并且將該根端口信息發(fā)布給系統(tǒng)內(nèi)其它所有設(shè)備,以通知其它設(shè)備重新選舉根端口;反之,該設(shè)備會(huì)將這些端口選擇為可選端口或者指定端口。
文檔編號(hào)H04L12/44GK1713608SQ20041004983
公開日2005年12月28日 申請(qǐng)日期2004年6月25日 優(yōu)先權(quán)日2004年6月25日
發(fā)明者汪勇 申請(qǐng)人:杭州華為三康技術(shù)有限公司