專利名稱:在二層網(wǎng)絡(luò)設(shè)備中生成樹協(xié)議的優(yōu)雅重啟實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種在二層網(wǎng)絡(luò)設(shè)備中,生成樹協(xié)議的Graceful Restart(優(yōu)雅重啟)方法。該方法使以太網(wǎng)交換機(jī)設(shè)備中運(yùn)行的生成樹協(xié)議即STP(Spanning-Tree Protocol)協(xié)議在控制層面出現(xiàn)故障時(shí),數(shù)據(jù)轉(zhuǎn)發(fā)仍然正常進(jìn)行,從而保障網(wǎng)絡(luò)上關(guān)鍵業(yè)務(wù)不受影響。
背景技術(shù):
隨著網(wǎng)絡(luò)的發(fā)展,用戶對(duì)于網(wǎng)絡(luò)的可靠性提出了越來(lái)越高的要求。不間斷轉(zhuǎn)發(fā)NSF(NoneStop Forwarding)就是一項(xiàng)重要的高可靠性技術(shù)(HA,High Availability),它可以保證在網(wǎng)絡(luò)設(shè)備的控制層面出現(xiàn)故障時(shí),數(shù)據(jù)轉(zhuǎn)發(fā)仍然正常執(zhí)行,從而保護(hù)網(wǎng)絡(luò)上關(guān)鍵業(yè)務(wù)不受影響。
不間斷轉(zhuǎn)發(fā)是指在網(wǎng)絡(luò)設(shè)備控制層面故障過(guò)程中,數(shù)據(jù)轉(zhuǎn)發(fā)不間斷地正常執(zhí)行。最初這個(gè)概念的提出主要是在路由器上,路由器設(shè)備是一種三層設(shè)備,進(jìn)行三層轉(zhuǎn)發(fā),它關(guān)心的主要是一些重要三層協(xié)議的不間斷轉(zhuǎn)發(fā),如OSPF(Open Shortest Path First,開放最短路徑優(yōu)先)、BGP(Border Gateway Protocol,邊界網(wǎng)關(guān)協(xié)議)、IS-IS(IntermediateSystem-to-Intermediate System,中間系統(tǒng)對(duì)中間系統(tǒng)協(xié)議)、LDP(Label DistributionProtocol,標(biāo)簽分發(fā)協(xié)議)、RSVP(Resource-Reservation Protocol,資源預(yù)留協(xié)議)等。通常情況下,路由器故障后,其路由協(xié)議層面的鄰居會(huì)檢測(cè)到它們之間的鄰居關(guān)系斷掉,過(guò)一段時(shí)間后再次建立,這個(gè)過(guò)程稱為鄰居關(guān)系震蕩。這種震蕩會(huì)導(dǎo)致路由震蕩的出現(xiàn),使得重啟路由器在一段時(shí)間內(nèi)出現(xiàn)黑洞或者導(dǎo)致整個(gè)網(wǎng)絡(luò)范圍內(nèi)的路由重新匯聚,由此導(dǎo)致的路由重新計(jì)算和整個(gè)網(wǎng)絡(luò)范圍內(nèi)的路由更新會(huì)消耗大量處理資源,并有可能在瞬時(shí)轉(zhuǎn)發(fā)環(huán)路中導(dǎo)致數(shù)據(jù)包丟失。不間斷轉(zhuǎn)發(fā)正是為了防止上述情況的發(fā)生,保護(hù)網(wǎng)絡(luò)上數(shù)據(jù)轉(zhuǎn)發(fā)的正常進(jìn)行。
為了實(shí)現(xiàn)不間斷轉(zhuǎn)發(fā),需要路由協(xié)議做擴(kuò)展以支持GR(Graceful Restart)功能,可以說(shuō)GR正是實(shí)現(xiàn)不間斷轉(zhuǎn)發(fā)的重要組成部分。
隨著交換機(jī)在網(wǎng)絡(luò)中越來(lái)越多的應(yīng)用,特別是二層以上交換機(jī)三層多層交換機(jī)的出現(xiàn),用戶對(duì)交換機(jī)特別是核心交換機(jī)的可靠性也提出了更高的要求。但是,交換機(jī)跟路由器是有區(qū)別的,路由器是一臺(tái)三層設(shè)備,它的功能主是要完成選路,而核心層的三層交換機(jī)除了具有路由功能外,它也會(huì)進(jìn)行高速的二層轉(zhuǎn)發(fā)。因此,STP協(xié)議是交換機(jī)設(shè)備中不可或缺的重要的二層協(xié)議。而要想在核心交換機(jī)上做到NSF這樣的高可靠性,二層轉(zhuǎn)發(fā)的保證是必不可少的。
現(xiàn)有的技術(shù)都是基于三層協(xié)議的GR實(shí)現(xiàn),尚未實(shí)現(xiàn)對(duì)于二層的GR功能。
發(fā)明內(nèi)容
針對(duì)現(xiàn)有技術(shù)存在的缺陷和不足,本發(fā)明提供一種交換機(jī)控制層面發(fā)生故障時(shí),數(shù)據(jù)包轉(zhuǎn)發(fā)仍能正常執(zhí)行的在二層網(wǎng)絡(luò)設(shè)備中生成樹協(xié)議的優(yōu)雅重啟實(shí)現(xiàn)方法。
為達(dá)到上述目的,本發(fā)明采用以下技術(shù)方案本發(fā)明在二層網(wǎng)絡(luò)設(shè)備中生成樹協(xié)議的優(yōu)雅重啟實(shí)現(xiàn)方法,包括如下步驟步驟A,線卡記錄主用控制板發(fā)送的生成樹網(wǎng)橋協(xié)議數(shù)據(jù)單元報(bào)文;步驟B,在主用控制板與備用控制板倒換時(shí),使用線卡上記錄的生成樹網(wǎng)橋協(xié)議數(shù)據(jù)單元報(bào)文向外通告;步驟C,倒換結(jié)束后,使用當(dāng)前主用控制板上生成樹協(xié)議產(chǎn)生的生成樹網(wǎng)橋協(xié)議數(shù)據(jù)單元報(bào)文向外通告。
優(yōu)選的在所述的在二層網(wǎng)絡(luò)設(shè)備中生成樹協(xié)議的優(yōu)雅重啟實(shí)現(xiàn)方法中,步驟B具體為步驟B1,在主用控制板與備用控制板倒換時(shí),主用控制板向線卡和備用控制板發(fā)送控制板倒換信息,在一定時(shí)間內(nèi)使端口的狀態(tài)不變,不對(duì)端口進(jìn)行刪除MAC操作;步驟B2,利用線卡緩存的生成樹網(wǎng)橋協(xié)議數(shù)據(jù)單元報(bào)文向外發(fā)送生成樹網(wǎng)橋協(xié)議數(shù)據(jù)單元報(bào)文。
優(yōu)選的在所述的在二層網(wǎng)絡(luò)設(shè)備中生成樹協(xié)議的優(yōu)雅重啟實(shí)現(xiàn)方法中,步驟B1具體為步驟B11,線卡接收到主用控制板發(fā)送的主用控制板與備用控制板倒換消息后,設(shè)置線卡倒換超時(shí)定時(shí)器;備用控制板接收到倒換消息后,啟動(dòng)主用控制板上的倒換超時(shí)定時(shí)器;步驟B12,線卡倒換超時(shí)定時(shí)器未超時(shí)的情況下,每個(gè)發(fā)送間隔時(shí)間向外發(fā)送線卡接口上記錄的生成樹網(wǎng)橋協(xié)議數(shù)據(jù)單元報(bào)文一次;步驟B13,線卡倒換超時(shí)定時(shí)器未超時(shí)的情況下,線卡接收到寫端口狀態(tài)消息時(shí),屏蔽該消息,不再通告給驅(qū)動(dòng)模塊;步驟B14,主用控制板的倒換超時(shí)定時(shí)器未超時(shí)的情況下,接收到FLUSH消息后,不再刪除MAC地址。
優(yōu)選的在所述的在二層網(wǎng)絡(luò)設(shè)備中生成樹協(xié)議的優(yōu)雅重啟實(shí)現(xiàn)方法中,所述超時(shí)定時(shí)器定時(shí)為30秒。
與現(xiàn)有的主用控制板主備倒換相比,本發(fā)明在主用控制板進(jìn)行主備倒換時(shí),不影響二層流量的轉(zhuǎn)發(fā),提高了交換機(jī)設(shè)備的可靠性,增強(qiáng)了網(wǎng)絡(luò)的穩(wěn)定性,具有實(shí)際應(yīng)用的意義。
圖1分布式體系結(jié)構(gòu)交換機(jī)GR實(shí)現(xiàn)原理圖;
圖2線卡事件驅(qū)動(dòng)流程圖;圖3主控事件驅(qū)動(dòng)流程圖;圖4實(shí)施例組網(wǎng)圖。
具體實(shí)施例方式
現(xiàn)有交換設(shè)備的控制板主備倒換實(shí)現(xiàn)的是一個(gè)實(shí)際意義上的冷倒換,備用控制板在主用控制板正常工作時(shí),只是運(yùn)行了同樣的軟件版本,但是各個(gè)具體的協(xié)議模塊并沒(méi)有運(yùn)行。只有當(dāng)備用控制板變成主用控制板的時(shí)候,協(xié)議模塊才開始進(jìn)行初始化。
對(duì)于生成樹協(xié)議來(lái)說(shuō),控制板發(fā)生主備倒換的時(shí)候,備用控制板上的STP才會(huì)進(jìn)行協(xié)議的初始化。初始化過(guò)程中首先會(huì)把開啟了生成樹協(xié)議的端口狀態(tài)設(shè)置為阻塞狀態(tài),然后會(huì)刪除從該端口上學(xué)習(xí)到的所有MAC地址,這樣就會(huì)在穩(wěn)定的拓?fù)浣Y(jié)構(gòu)中引起流量的瞬間不通。同時(shí)由于備用控制板啟動(dòng)時(shí),備用控制板中沒(méi)有網(wǎng)絡(luò)中鄰居交換機(jī)的向量信息,如果備用控制板變?yōu)橹靼鍐?dòng)時(shí)間很長(zhǎng),鄰居交換機(jī)就會(huì)由于接收不到BPDU報(bào)文,導(dǎo)致STP重新計(jì)算,這樣就可能會(huì)對(duì)網(wǎng)絡(luò)上數(shù)據(jù)轉(zhuǎn)發(fā)產(chǎn)生影響。
為了實(shí)現(xiàn)STP協(xié)議在主控板主備倒換時(shí),不影響數(shù)據(jù)的轉(zhuǎn)發(fā),有以下兩種實(shí)現(xiàn)方法1做STP協(xié)議的RESTART過(guò)程仿照路由協(xié)議的做法,在RESTART過(guò)程中,通告鄰居交換機(jī),使得鄰居交換機(jī)在一定時(shí)間內(nèi),保持端口向量信息和端口狀態(tài)不變,當(dāng)本端RESTART啟動(dòng)完成后,鄰居交換機(jī)還需要負(fù)責(zé)把端口信息通告給RESTART的交換機(jī)。本做法由于牽涉到協(xié)議狀態(tài)機(jī)的修改,沒(méi)有標(biāo)準(zhǔn)的支持,很難實(shí)現(xiàn),通用性也不好,故沒(méi)有采用。
方法2如圖1所示,線卡會(huì)記錄當(dāng)前發(fā)送BPDU報(bào)文信息,當(dāng)控制板主備倒換時(shí),主用控制板會(huì)向線卡和備用控制板發(fā)送控制板倒換信息,在一定時(shí)間內(nèi)使端口的狀態(tài)不變,不對(duì)端口進(jìn)行刪除MAC操作,同時(shí)利用線卡緩存的BPDU報(bào)文向外發(fā)送BPDU報(bào)文。倒換結(jié)束后,以前的備用控制板變成了當(dāng)前的主用控制板,它會(huì)用當(dāng)前STP協(xié)議進(jìn)程計(jì)算的BPDU報(bào)文信息向線卡同步,線卡同樣會(huì)記錄下當(dāng)前發(fā)送BPDU報(bào)文信息,并向外通告當(dāng)前的BPDU報(bào)文信息。
參照附圖2,分布式體系結(jié)構(gòu)的交換機(jī)具體實(shí)現(xiàn)有以下幾個(gè)方面線卡通過(guò)DISP_RCV_PACKET_MESSAGE消息接收到主控板上發(fā)送過(guò)來(lái)BPDU報(bào)文,通過(guò)np_rec_mstp_pkt函數(shù)記錄下該BPDU報(bào)文;線卡上接收到主控板主備倒換消息MSG_MSExchange后,把np_stp_masterToslave變量設(shè)置為1,設(shè)置mstp_msexchange_Tick定時(shí)器;線卡上的30秒倒換定時(shí)器未超時(shí),通過(guò)np_send_mstp_pkt函數(shù)發(fā)送線卡接口上記錄下的BPDU報(bào)文,每個(gè)HELLO時(shí)間向外發(fā)送BPDU報(bào)文一次;線卡上30秒倒換定時(shí)器未超時(shí),接收到寫端口狀態(tài)消息時(shí),屏蔽該消息,不再通告給驅(qū)動(dòng)模塊;線卡上30秒倒換定時(shí)器超時(shí),把np_stp_masterToslave變量設(shè)置為0;參照附圖3,備用控制板接收到倒換消息MSG_SlaveToMaster后,把變量mstp_slave_master設(shè)置為1,啟動(dòng)主控板上30秒的倒換定時(shí)器主控板上30秒的倒換定時(shí)器沒(méi)有超時(shí)接收到FLUSH消息時(shí),不再調(diào)用mac_on_port_stp_down函數(shù)刪除MAC地址;主控上30秒定時(shí)器超時(shí)后,通過(guò)函數(shù)sync_port_state同步端口狀態(tài)到線卡上,防止在主備倒換期間網(wǎng)絡(luò)拓?fù)浒l(fā)生變化導(dǎo)致主控和線卡上端口狀態(tài)不一致。
圖4是一個(gè)現(xiàn)網(wǎng)應(yīng)用的組網(wǎng)環(huán)境,該環(huán)境中使用了四臺(tái)分布式體系結(jié)構(gòu)核心三層交換機(jī)。在該環(huán)境中,為了實(shí)現(xiàn)鏈路冗余,開啟了MSTP(Multiple Spanning-Tree Protocol),將四臺(tái)交換機(jī)都配置在同一個(gè)區(qū)域中,其中共配置了10個(gè)實(shí)例,每個(gè)實(shí)例分別以其中某一臺(tái)交換機(jī)為根網(wǎng)橋。為了實(shí)現(xiàn)結(jié)點(diǎn)冗余,還開啟了VRRP(Virtual Router Redundancy Protocol,虛擬路由冗余協(xié)議),防止單點(diǎn)故障。為了宣告路由,還配置了OSPF協(xié)議??傊?,這是一個(gè)比較復(fù)雜的環(huán)境,既開啟了二層MSTP協(xié)議,又開啟了相應(yīng)的三層協(xié)議。
由于使用該設(shè)備的客戶是運(yùn)營(yíng)商級(jí)的客戶,所以對(duì)設(shè)備的性能和可靠性都要求比較高。因此,對(duì)于主控板主備倒換時(shí)對(duì)流量的影響要求比較高。在沒(méi)有加上STP的GR功能時(shí),從圖中switch1所接PC與switch2所接PC互ping包進(jìn)行測(cè)試,當(dāng)switch1或者switch2的主控板進(jìn)行主備倒換時(shí),可以發(fā)現(xiàn),數(shù)據(jù)包會(huì)丟大概20個(gè)左右。這正是因?yàn)閭溆每刂瓢逶诔蔀橹饔每刂瓢搴?,?huì)對(duì)STP協(xié)議重新進(jìn)行初始化,會(huì)把開啟了生成樹協(xié)議的端口狀態(tài)設(shè)置為阻塞狀態(tài),然后會(huì)刪除從該端口上學(xué)習(xí)到的所有MAC地址,這樣就會(huì)在穩(wěn)定的拓?fù)浣Y(jié)構(gòu)中引起流量的瞬間不通。當(dāng)為STP協(xié)議加上GR功能后,同樣的環(huán)境里面進(jìn)行同樣的測(cè)試,可以直觀地看出,丟包率為0%。
為了進(jìn)一步驗(yàn)證結(jié)果,將兩端的PC機(jī)換成測(cè)試儀,從測(cè)試儀兩端互發(fā)二層流量,進(jìn)行主控板主備倒換,從測(cè)試儀的控制臺(tái)可以看到,一個(gè)數(shù)據(jù)包都沒(méi)有丟失。
綜上所述,本發(fā)明有效地實(shí)現(xiàn)了當(dāng)控制層面出現(xiàn)故障時(shí),數(shù)據(jù)的不間斷轉(zhuǎn)發(fā)。本發(fā)明實(shí)現(xiàn)簡(jiǎn)單,不用對(duì)STP狀態(tài)機(jī)進(jìn)行修改,因此對(duì)軟件成本增加不大,避免了代碼的大規(guī)模修改和由此引入的潛在問(wèn)題,有效地提高交換機(jī)的可靠性,實(shí)現(xiàn)了STP的Graceful Restart功能。
權(quán)利要求
1.一種在二層網(wǎng)絡(luò)設(shè)備中生成樹協(xié)議的優(yōu)雅重啟實(shí)現(xiàn)方法,包括如下步驟步驟A,線卡記錄主用控制板發(fā)送的生成樹網(wǎng)橋協(xié)議數(shù)據(jù)單元報(bào)文;步驟B,在主用控制板與備用控制板倒換時(shí),使用線卡上記錄的生成樹網(wǎng)橋協(xié)議數(shù)據(jù)單元報(bào)文向外通告;步驟C,倒換結(jié)束后,使用當(dāng)前主用控制板上生成樹協(xié)議產(chǎn)生的生成樹網(wǎng)橋協(xié)議數(shù)據(jù)單元報(bào)文向外通告。
2.根據(jù)權(quán)利要求1所述的在二層網(wǎng)絡(luò)設(shè)備中生成樹協(xié)議的優(yōu)雅重啟實(shí)現(xiàn)方法,其特征在于步驟B具體為步驟B1,在主用控制板與備用控制板倒換時(shí),主用控制板向線卡和備用控制板發(fā)送控制板倒換信息,在一定時(shí)間內(nèi)使端口的狀態(tài)不變,不對(duì)端口進(jìn)行刪除MAC操作;步驟B2,利用線卡緩存的生成樹網(wǎng)橋協(xié)議數(shù)據(jù)單元報(bào)文向外發(fā)送生成樹網(wǎng)橋協(xié)議數(shù)據(jù)單元報(bào)文。
3.根據(jù)權(quán)利要求2所述的在二層網(wǎng)絡(luò)設(shè)備中生成樹協(xié)議的優(yōu)雅重啟實(shí)現(xiàn)方法,其特征在于步驟B1具體為步驟B11,線卡接收到主用控制板發(fā)送的主用控制板與備用控制板倒換消息后,設(shè)置線卡倒換超時(shí)定時(shí)器;備用控制板接收到倒換消息后,啟動(dòng)主用控制板上的倒換超時(shí)定時(shí)器;步驟B12,線卡倒換超時(shí)定時(shí)器未超時(shí)的情況下,每個(gè)發(fā)送間隔時(shí)間向外發(fā)送線卡接口上記錄的生成樹網(wǎng)橋協(xié)議數(shù)據(jù)單元報(bào)文一次;步驟B13,線卡倒換超時(shí)定時(shí)器未超時(shí)的情況下,線卡接收到寫端口狀態(tài)消息時(shí),屏蔽該消息,不再通告給驅(qū)動(dòng)模塊;步驟B14,主用控制板的倒換超時(shí)定時(shí)器未超時(shí)的情況下,接收到FLUSH消息后,不再刪除MAC地址。
4.根據(jù)權(quán)利要求3所述的在二層網(wǎng)絡(luò)設(shè)備中生成樹協(xié)議的優(yōu)雅重啟實(shí)現(xiàn)方法,其特征在于,所述超時(shí)定時(shí)器定時(shí)為30秒。
全文摘要
本發(fā)明公開了一種在二層網(wǎng)絡(luò)設(shè)備中生成樹協(xié)議的優(yōu)雅重啟實(shí)現(xiàn)方法,解決了現(xiàn)有優(yōu)雅重啟方法只能在三層網(wǎng)絡(luò)設(shè)備上實(shí)現(xiàn),無(wú)法在二層網(wǎng)絡(luò)設(shè)備上實(shí)現(xiàn)的問(wèn)題。包括線卡記錄主用控制板發(fā)送的網(wǎng)橋協(xié)議數(shù)據(jù)單元報(bào)文;在主用控制板與備用控制板倒換時(shí),使用線卡上記錄的網(wǎng)橋協(xié)議數(shù)據(jù)單元報(bào)文向外通告;倒換結(jié)束后,使用當(dāng)前主用控制板上生成樹協(xié)議產(chǎn)生的網(wǎng)橋協(xié)議數(shù)據(jù)單元報(bào)文向外通告。與現(xiàn)有的主用控制板主備倒換相比,本發(fā)明在主用控制板進(jìn)行主備倒換時(shí),不影響二層流量的轉(zhuǎn)發(fā),提高了交換機(jī)設(shè)備的可靠性,增強(qiáng)了網(wǎng)絡(luò)的穩(wěn)定性,具有實(shí)際應(yīng)用的意義。
文檔編號(hào)H04L12/24GK1988542SQ20061016211
公開日2007年6月27日 申請(qǐng)日期2006年12月5日 優(yōu)先權(quán)日2006年12月5日
發(fā)明者鄒宗惠, 陸小科 申請(qǐng)人:中興通訊股份有限公司