專利名稱:一種多生成樹軟件模擬的實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,具體地說,涉及一種在僅支持生成樹協(xié)議(STP)的網(wǎng)絡(luò)通信設(shè)備內(nèi)部通過軟件模擬多生成樹的實(shí)現(xiàn)方法。
背景技術(shù):
STP(生成樹協(xié)議)是二層網(wǎng)絡(luò)應(yīng)用的重要協(xié)議,其目的是用于防止網(wǎng)絡(luò)內(nèi)部由于拓?fù)渖檄h(huán)型結(jié)構(gòu)而導(dǎo)致廣播風(fēng)暴,保證網(wǎng)絡(luò)可靠可用。在STP運(yùn)行的網(wǎng)絡(luò)中,能有效阻斷網(wǎng)絡(luò)環(huán)路,保證邏輯上網(wǎng)絡(luò)的非環(huán)型結(jié)構(gòu),同時(shí)使得被阻斷鏈路可以成為備份鏈路,當(dāng)環(huán)型上出現(xiàn)故障,被阻斷鏈路可迅速恢復(fù)正常運(yùn)行。但由于STP協(xié)議中所有的VLAN(虛擬局域網(wǎng))共享一棵生成樹,因而無法實(shí)現(xiàn)VLAN的負(fù)載均衡,當(dāng)網(wǎng)絡(luò)上的流量過大時(shí),可能會造成某VLAN的報(bào)文無法轉(zhuǎn)發(fā)。
MSTP(多生成樹協(xié)議)協(xié)議允許一個(gè)交換機(jī)內(nèi)運(yùn)行有多棵生成樹,在不同的生成樹上轉(zhuǎn)發(fā)不同VLANs的報(bào)文。圖1示出了MSTP運(yùn)用的實(shí)例,其中MSTP的VLAN2、VLAN3分別在兩棵分別獨(dú)立的樹上。從該具體實(shí)施方案中,我們可以看出,由于MSTP協(xié)議運(yùn)行的多棵生成樹是相互獨(dú)立的。因而有效地實(shí)現(xiàn)了VLAN的負(fù)載均衡,保證每個(gè)VLAN的網(wǎng)絡(luò)可靠連通。
由于STP(RSTP)、MSTP的實(shí)現(xiàn)都需要硬件ASIC芯片的支持。但對于現(xiàn)有的數(shù)據(jù)通信設(shè)備尤其是以太網(wǎng)交換機(jī),其ASIC(專用集成電路)芯片雖然基本都支持STP的實(shí)現(xiàn),但對于MSTP卻只有部分芯片支持,這對于設(shè)備提供廠家來說,已經(jīng)在網(wǎng)絡(luò)上運(yùn)行的大量設(shè)備,由于其芯片并不能提供MSTP的支持,當(dāng)要對于已運(yùn)營網(wǎng)絡(luò)提供支持MSTP特性,必然要求重新開發(fā)新的可以支持MSTP的產(chǎn)品來替代,但這樣會大幅度提高設(shè)備制造商和運(yùn)營商的成本。
因而,如何使當(dāng)前僅支持STP的設(shè)備也可以運(yùn)行MSTP,是本發(fā)明所要解決的問題。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種多生成樹軟件模擬實(shí)現(xiàn)方法,通過軟件模擬的途徑解決現(xiàn)有的部分以太網(wǎng)交換機(jī)ASIC芯片不能支持MSTP的問題。
本發(fā)明的一種多生成樹協(xié)議軟件模擬實(shí)現(xiàn)方法,應(yīng)用在含有不支持多生成樹協(xié)議的ASIC芯片的網(wǎng)絡(luò)設(shè)備中,所述網(wǎng)絡(luò)設(shè)備包含一個(gè)底層軟件,其中在不同生成樹上轉(zhuǎn)發(fā)不同VLANs的報(bào)文的環(huán)境下,當(dāng)多生成樹協(xié)議算出一個(gè)交換機(jī)的一個(gè)端口對于某個(gè)VLAN為非轉(zhuǎn)發(fā)狀態(tài)時(shí),所述底層軟件將該端口從所述VLAN中刪除;同時(shí)過濾從另一個(gè)交換機(jī)對應(yīng)端口過來的所述VLAN的報(bào)文;其中,如果多生成樹協(xié)議實(shí)例鏈路發(fā)生故障,則通過MSTP協(xié)議收斂,使得該交換機(jī)在該端口成為轉(zhuǎn)發(fā)狀態(tài),此時(shí)所述底層軟件將該端口加入所述VLAN中,同時(shí)取消報(bào)文過濾。
其中,當(dāng)所述端口只在某一VLAN中時(shí),所述底層軟件可以將該端口從所述該VLAN中刪除。
其中,當(dāng)前述端口不在任何VLAN時(shí),如果通過查詢函數(shù)查看到的端口VLAN ID是缺省VLAN ID時(shí),此時(shí)需通過VLAN ID取得該VLAN包含的端口成員,并從中刪除這個(gè)端口。
其中,所述底層軟件將所述端口從所述VLAN中刪除的情況下,不過濾MSTP協(xié)議報(bào)文。
其中,所述底層軟件對報(bào)文的過濾操作放在端口收發(fā)函數(shù)最前面進(jìn)行。
其中,所述底層軟件對STP的協(xié)議報(bào)文,直接進(jìn)行傳送,以保證MSTP協(xié)議正常運(yùn)算。
其中,所述底層軟件對帶TAG的其它報(bào)文,提取報(bào)文攜帶的VLAN ID,并取得VLAN ID所包含的端口成員,如果報(bào)文的入端口或出端口不在VLAN ID的成員中,則VLAN ID表示的VLAN在該端口被阻斷,報(bào)文被丟棄。
其中,所述底層軟件對于不帶TAG的其它報(bào)文,取得報(bào)文的傳送端口的缺省VLAN ID,根據(jù)VLAN ID來得到端口成員,如果端口成員不包含報(bào)文要傳送的端口,則該VLAN在這個(gè)端口被阻斷,報(bào)文被丟棄。
與現(xiàn)有的技術(shù)相比較,由于本發(fā)明通過軟件控制VLAN在交換機(jī)端口的增加與刪除,來模擬VLAN所在實(shí)例端口的STP狀態(tài),從而實(shí)現(xiàn)在運(yùn)行STP的ASIC芯片運(yùn)行MSTP,可以在不增加網(wǎng)絡(luò)設(shè)備制造商及運(yùn)營商的成本基礎(chǔ)上實(shí)現(xiàn)現(xiàn)有產(chǎn)品功能的升級。
下面結(jié)合附圖對本發(fā)明進(jìn)行詳細(xì)說明。
圖1顯示了現(xiàn)有的MSTP運(yùn)行實(shí)例;圖2是本發(fā)明的多生成樹軟件模擬實(shí)現(xiàn)方法的組網(wǎng)示意圖;圖3是本發(fā)明應(yīng)用在實(shí)際環(huán)境下的組網(wǎng)示意圖。
具體實(shí)施例方式
本發(fā)明采用軟件模擬來實(shí)現(xiàn)在支持STP的芯片上運(yùn)行MSTP的基本思想是,如果端口不存在某個(gè)VLAN,則該端口就不允許收發(fā)該VLAN的報(bào)文,并過濾掉從另一個(gè)交換機(jī)對應(yīng)端口傳來的所述VLAN的報(bào)文。而芯片是否允許收發(fā)該VLAN報(bào)文,與報(bào)文類型、是否TAG(帶標(biāo)簽)、端口是否存在該VLAN、MAC配置等有關(guān)。上層仍按照標(biāo)準(zhǔn)協(xié)議運(yùn)行,底層模擬所要完成的任務(wù)在于滿足協(xié)議的幾個(gè)要求1、軟件模擬本質(zhì)是通過在VLAN內(nèi)增加和刪除端口來實(shí)現(xiàn)的,具體而言在不同生成樹上轉(zhuǎn)發(fā)不同VLANs的報(bào)文的環(huán)境下,當(dāng)多生成樹協(xié)議算出一個(gè)交換機(jī)的一個(gè)端口對于某個(gè)VLAN為非轉(zhuǎn)發(fā)狀態(tài)時(shí),所述底層軟件將該端口從所述VLAN中刪除,同時(shí)過濾從另一個(gè)交換機(jī)對應(yīng)端口過來的所述VLAN的報(bào)文;如果多生成樹協(xié)議實(shí)例鏈路發(fā)生故障,則通過MSTP協(xié)議收斂,使得該交換機(jī)在該端口成為轉(zhuǎn)發(fā)狀態(tài),此時(shí)所述底層軟件將該端口加入所述VLAN中,同時(shí)取消報(bào)文過濾。
具體對于某個(gè)實(shí)例來說,當(dāng)協(xié)議要求該端口在實(shí)例上的狀態(tài)為discarding(丟棄)時(shí),就將該端口從給定實(shí)例內(nèi)的所有VLAN中刪除,這樣可以保證從這個(gè)端口接收到的報(bào)文如果是屬于被阻塞的實(shí)例(VLAN),則被扔掉。其中有個(gè)特例,就是當(dāng)端口只在一個(gè)VLAN中時(shí),也要能從該VLAN中刪掉,即端口可以不屬于任何VLAN。而在非MSTP條件下,當(dāng)端口從其它的VLAN中刪除時(shí),一般都要回到缺省的VLAN中,但是本發(fā)明技術(shù)方案中,MSTP需要能阻止這種行為。
其中,對于芯片查詢操作而言,當(dāng)端口不在任何VLAN時(shí),通過查詢函數(shù)查看到的端口VLAN ID卻有可能是缺省的VLAN ID,這樣會造成錯(cuò)誤判斷,認(rèn)為端口仍存在于VLAN中。此時(shí)需要再用VLAN ID來取得該VLAN包含的端口成員,并從該成員中刪除這個(gè)端口。
2、在報(bào)文收發(fā)的軟件部分,很多接收的報(bào)文是需要上交CPU做進(jìn)一步處理的,如果MSTP啟動,底層接收和發(fā)送報(bào)文時(shí),需要進(jìn)行一系列過濾操作。需要針對端口和VLAN作出合理性判斷的過濾。這些過濾判斷放在端口收發(fā)函數(shù)最前面。其中待處理的報(bào)文根據(jù)具體的情況可以分為三類a、如果是STP的協(xié)議報(bào)文,直接進(jìn)行傳送,以保證MSTP協(xié)議正常運(yùn)算;b、如果是其它報(bào)文且是帶TAG的,提取報(bào)文攜帶的VLAN ID,然后取得該VLAN ID所包含的端口成員,報(bào)文的入端口或出端口如果不在VLAN ID的成員中,則說明該VLAN ID表示的VLAN或該VLAN所在實(shí)例在該端口阻斷,報(bào)文被丟棄。
c、如果報(bào)文是UNTAG(不帶標(biāo)簽)的,則取得報(bào)文的傳送端口的缺省VLAN ID,同樣根據(jù)該VLAN ID來得到端口成員,如果端口成員不包含報(bào)文要傳送的端口,說明該VLAN所在實(shí)例在這個(gè)端口是阻斷的,報(bào)文被丟棄。
因此,本發(fā)明的多生成樹協(xié)議軟件模擬實(shí)現(xiàn)方法可以概括為,在不同的生成樹上轉(zhuǎn)發(fā)不同VLANs的報(bào)文環(huán)境下,當(dāng)多生成樹協(xié)議計(jì)算一個(gè)交換機(jī)的一個(gè)端口對于某個(gè)VLAN為非轉(zhuǎn)發(fā)狀態(tài)時(shí),底層軟件將該端口從所述VLAN中刪除,同時(shí)過濾從另一個(gè)交換機(jī)對應(yīng)端口過來的所述VLAN的報(bào)文。
如果傳送報(bào)文的鏈路發(fā)生故障,則通過MSTP協(xié)議收斂,使得該交換機(jī)的狀態(tài)在該端口成為轉(zhuǎn)發(fā)狀態(tài),此時(shí)底層軟件將該端口加入所述VLAN中,同時(shí)取消報(bào)文過濾。
下面以圖2所示的設(shè)備組網(wǎng)詳細(xì)舉例說明實(shí)現(xiàn)方式如圖2所示,圖中所示的S1、S2、S3和S4四臺交換機(jī)設(shè)備的芯片是不支持MSTP的。由S1、S2、S3和S4組成的設(shè)備環(huán)形連接,按照MSTP協(xié)議的收斂過程定義,MSTP協(xié)議收斂時(shí),要將包括交換機(jī)的MAC地址、端口、實(shí)例等信息的多種信息進(jìn)行計(jì)算(具體計(jì)算過程由標(biāo)準(zhǔn)協(xié)議完成),其計(jì)算結(jié)果將保證所有實(shí)例在邏輯結(jié)構(gòu)上不能再形成環(huán)路。但圖2所示系統(tǒng)中的四臺交換機(jī)的傳統(tǒng)ASIC交換芯片由于不支持多實(shí)例特性,因此將不能實(shí)現(xiàn)MSTP協(xié)議收斂時(shí)每個(gè)實(shí)例分別環(huán)路阻斷。為此本發(fā)明提供了軟件模擬MSTP協(xié)議的方法,圖2所述的系統(tǒng)在運(yùn)行了本發(fā)明所述的軟件模擬方法后,在操作芯片過程中,通過對于端口在實(shí)例和VLAN中的刪除與增加進(jìn)行模擬支持多實(shí)例的功能,也即模擬了芯片支持MSTP功能。
具體來說,假設(shè)VLAN2在實(shí)例2內(nèi),VLAN3在實(shí)例3內(nèi),軟件模擬MSTP后其實(shí)例結(jié)構(gòu)收斂為兩種虛線所示,連通的網(wǎng)絡(luò)表示協(xié)議計(jì)算后端口的forwarding(轉(zhuǎn)發(fā))狀態(tài),下面以實(shí)例2為例進(jìn)行說明。
如果協(xié)議計(jì)算在S4交換機(jī)的G端口實(shí)例2非forwarding,則底層軟件將端口G在VLAN2中刪除;但G端口從S4交換機(jī)的實(shí)例2中刪除后,端口F仍然存在交換機(jī)S3中,這樣交換機(jī)S3的實(shí)例2其它端口進(jìn)入的廣播報(bào)文、目的未知的單播報(bào)文或或其他某些BPDU報(bào)文可被從S3的F端口廣播出去,從而被S4交換機(jī)的G端口接收,這種情況下有可能使得S4交換機(jī)的CPU接收到端口G進(jìn)來的實(shí)例2的報(bào)文,由于這在當(dāng)前結(jié)構(gòu)上是非法報(bào)文,因此CPU需要過濾從S3交換機(jī)端口F過來的VLAN2的報(bào)文(MSTP協(xié)議報(bào)文除外),根據(jù)報(bào)文的入端口信息和VLAN信息、實(shí)例信息進(jìn)行判斷丟棄而過濾,從而保證網(wǎng)絡(luò)VLAN2的報(bào)文廣播不能形成環(huán)路,但是不丟棄MSTP協(xié)議報(bào)文以便于MSTP協(xié)議軟件維護(hù)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。此時(shí)驅(qū)動層軟件操作交換機(jī)S4的ASIC芯片動作為在VLAN2的ASIC表項(xiàng)內(nèi)刪除端口G,同時(shí)設(shè)置報(bào)文收發(fā)模塊過濾從端口G接收到的實(shí)例2的VLAN2內(nèi)的報(bào)文。這些過濾判斷放在端口收發(fā)函數(shù)最前面。待處理的報(bào)文分為三類a、如果是STP的協(xié)議報(bào)文,直接進(jìn)行傳送,以保證MSTP協(xié)議正常運(yùn)算;
b、如果是其它報(bào)文報(bào)文且是帶TAG的,提取報(bào)文攜帶的VLANID,然后取得VLAN ID所包含的端口成員,如果報(bào)文的入端口或出端口不在VLAN ID的成員中,說明VLAN ID表示的該VLAN2或該VLAN2所在實(shí)例在該端口阻斷,報(bào)文被丟棄。
c、如果報(bào)文是UNTAG(不帶標(biāo)簽)的,取得報(bào)文的傳送端口的缺省VLAN ID,同樣根據(jù)VLAN ID來得到端口成員,如果端口成員不包含報(bào)文要傳送的端口G,說明該VLAN2所在實(shí)例在這個(gè)端口是阻斷的,報(bào)文被丟棄。
當(dāng)MSTP協(xié)議運(yùn)行中,如果S1、S2之間鏈路發(fā)生故障,實(shí)例2的交換機(jī)S1、S2之間通信被阻斷,在MSTP報(bào)文不能在S1、S2之間進(jìn)行交互達(dá)到協(xié)議超時(shí)時(shí)間,MSTP協(xié)議將認(rèn)為該鏈路已經(jīng)斷開。同時(shí)由于實(shí)例2的S4交換機(jī)端口G和S3交換機(jī)的端口F之間的物理鏈路還是正常的,并且MSTP報(bào)文在這個(gè)鏈路上定時(shí)傳送,MSTP根據(jù)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),得知存在于S4與S3之間的實(shí)例2的鏈路正常,S4交換機(jī)設(shè)置端口G在實(shí)例2內(nèi)的狀態(tài)為forwarding,仍保證網(wǎng)絡(luò)中實(shí)例2不出現(xiàn)環(huán)路,此時(shí)驅(qū)動層軟件操作交換機(jī)S4的ASIC芯片動作為在VLAN2的ASIC表項(xiàng)內(nèi)加入端口G,同時(shí)設(shè)置報(bào)文收發(fā)模塊不再過濾從端口G接收到的實(shí)例2的VLAN2內(nèi)的報(bào)文,此時(shí)底層將端口G加入VLAN2中同時(shí)取消報(bào)文過濾,恢復(fù)網(wǎng)絡(luò)運(yùn)行。
對于實(shí)例3的軟件模擬MSTP工作情況,處理方式同上。
含有本發(fā)明軟件模擬MSTP協(xié)議方法的交換機(jī)可以運(yùn)用于(但不限于)圖3所示的組網(wǎng)中。需要說明的是,其中標(biāo)注“軟件MSTP”的設(shè)備是指采用本發(fā)明實(shí)現(xiàn)MSTP的普通交換機(jī),其它則是ASIC可支持MSTP技術(shù)的設(shè)備。
綜上所述,本發(fā)明利用軟件功能,結(jié)合對于硬件芯片的操作,通過將端口從VLAN內(nèi)刪除的操作來模擬上層協(xié)議的blocking或learning狀態(tài),在VLAN內(nèi)增加端口來實(shí)現(xiàn)協(xié)議的forwarding狀態(tài),完成對于MSTP協(xié)議的支持,可以為現(xiàn)有網(wǎng)絡(luò)產(chǎn)品新增特性,可以極大節(jié)省開發(fā)成本。同時(shí)軟件實(shí)現(xiàn)比較簡單,對于普通交換芯片均易于實(shí)現(xiàn),且不會改變設(shè)備的轉(zhuǎn)發(fā)性能。
權(quán)利要求
1.一種多生成樹協(xié)議軟件模擬實(shí)現(xiàn)方法,應(yīng)用在不支持多生成樹協(xié)議的ASIC芯片的網(wǎng)絡(luò)設(shè)備中,所述網(wǎng)絡(luò)設(shè)備包含一個(gè)底層軟件,其特征在于在不同生成樹上轉(zhuǎn)發(fā)不同VLANS的報(bào)文的環(huán)境下,當(dāng)多生成樹協(xié)議算出一個(gè)交換機(jī)的一個(gè)端口對于某個(gè)VLAN為非轉(zhuǎn)發(fā)狀態(tài)時(shí),所述底層軟件將該端口從所述VLAN中刪除;同時(shí)過濾從另一個(gè)交換機(jī)對應(yīng)端口傳過來的所述VLAN的報(bào)文;
2.根據(jù)權(quán)利要求1所述的多生成樹協(xié)議軟件模擬實(shí)現(xiàn)方法,其特征在于,當(dāng)多生成樹協(xié)議實(shí)例鏈路發(fā)生故障時(shí),通過MSTP協(xié)議收斂,使得該交換機(jī)在該端口成為轉(zhuǎn)發(fā)狀態(tài),此時(shí)所述底層軟件將該端口加入所述VLAN中,同時(shí)取消報(bào)文過濾。
3.根據(jù)權(quán)利要求1所述的多生成樹協(xié)議軟件模擬實(shí)現(xiàn)方法,其特征在于,當(dāng)所述端口只在某一VLAN中時(shí),所述底層軟件亦須將該端口從該VLAN中刪除。
4.根據(jù)權(quán)利要求3所述的多生成樹協(xié)議軟件模擬實(shí)現(xiàn)方法,其特征在于,當(dāng)端口不在任何VLAN時(shí),如果通過查詢函數(shù)查看到的端口VLAN ID是缺省VLAN ID時(shí),此時(shí)需通過VLAN ID取得該VLAN包含的端口成員,并從中刪除這個(gè)端口。
5.根據(jù)權(quán)利要求1所述的多生成樹協(xié)議軟件模擬實(shí)現(xiàn)方法,其特征在于,所述底層軟件將所述端口從所述VLAN中刪除的情況下,不過濾MSTP協(xié)議報(bào)文。
6.根據(jù)權(quán)利要求1所述的多生成樹協(xié)議軟件模擬實(shí)現(xiàn)方法,其特征在于,所述底層軟件對報(bào)文的過濾操作放在端口收發(fā)函數(shù)最前面進(jìn)行。
7.根據(jù)權(quán)利要求1所述的多生成樹協(xié)議軟件模擬實(shí)現(xiàn)方法,其特征在于,所述底層軟件對STP的協(xié)議報(bào)文,直接進(jìn)行傳送,以保證MSTP協(xié)議正常運(yùn)算。
8.根據(jù)權(quán)利要求1所述的多生成樹協(xié)議軟件模擬實(shí)現(xiàn)方法,其特征在于,所述底層軟件對帶TAG的其它報(bào)文,提取報(bào)文攜帶的VLAN ID,取得VLAN ID所包含的端口成員,如果報(bào)文的入端口或出端口不在所述VLAN ID的成員中,則VLAN ID表示的VLAN在該端口被阻斷,報(bào)文被丟棄。
9.根據(jù)權(quán)利要求1所述的多生成樹協(xié)議軟件模擬實(shí)現(xiàn)方法,其特征在于,所述底層軟件對于不帶TAG的其它報(bào)文,取得報(bào)文的傳送端口的缺省VLAN ID,根據(jù)VLAN ID得到端口成員,如果端口成員不包含報(bào)文要傳送的端口,則該VLAN在這個(gè)端口被阻斷,報(bào)文被丟棄。
全文摘要
本發(fā)明公開了一種多生成樹軟件模擬實(shí)現(xiàn)方法,通過軟件模擬的途徑解決現(xiàn)有以太網(wǎng)交換機(jī)ASIC芯片不能支持MSTP問題。所述方法包括在不同的生成樹上轉(zhuǎn)發(fā)不同VLANs的報(bào)文環(huán)境下,當(dāng)多生成樹協(xié)議計(jì)算一個(gè)交換機(jī)的一個(gè)端口對于某個(gè)VLAN為非轉(zhuǎn)發(fā)狀態(tài)時(shí),底層軟件將該端口從所述VLAN中刪除,同時(shí)過濾從另一個(gè)交換機(jī)對應(yīng)端口過來的所述VLAN的報(bào)文;如果傳送報(bào)文的鏈路發(fā)生故障,則通過MSTP協(xié)議收斂,使得該交換機(jī)的狀態(tài)在該端口成為轉(zhuǎn)發(fā)狀態(tài),此時(shí)底層軟件將該端口加入所述VLAN中,同時(shí)取消報(bào)文過濾。本發(fā)明通過軟件方式為現(xiàn)有網(wǎng)絡(luò)產(chǎn)品新增特性,極大節(jié)省開發(fā)成本,對于普通交換芯片均易于實(shí)現(xiàn),且不會改變設(shè)備的轉(zhuǎn)發(fā)性能。
文檔編號H04L12/56GK1829222SQ20051005152
公開日2006年9月6日 申請日期2005年3月4日 優(yōu)先權(quán)日2005年3月4日
發(fā)明者劉新民 申請人:杭州華為三康技術(shù)有限公司