余 璐 , 黃婷熙
(1.光纖通信技術(shù)和網(wǎng)絡(luò)國家重點實驗室,湖北 武漢 430074;2.武漢烽火網(wǎng)絡(luò)有限責(zé)任公司 湖北 武漢 430074)
高端路由器作為Internet骨干網(wǎng)的核心設(shè)備,其位置決定了它必須具備很高的穩(wěn)定性與可靠性。通過采用1+1的主控板冗余熱備份機制,是常用的提高設(shè)備可靠性與穩(wěn)定性的重要解決方案之一[1]。主控板冗余機制,是指兩塊軟硬件相同的主控板同時工作,一塊為主用主控板,一塊為備用主控板。通常情況下,主用主控板處于正常工作狀態(tài),備用主控板處于備用狀態(tài),在一定的觸發(fā)條件下,備用板接替主用板所有工作,完成主備倒換功能,從而保證設(shè)備的可靠運行。
而使倒換前后整個系統(tǒng)的業(yè)務(wù)狀態(tài)不發(fā)生變化的前提是由主備間的數(shù)據(jù)同步和鏈路切換來保證的[2]。本文關(guān)注的重點為軟件層面,基于主備倒換熱備份的數(shù)據(jù)同步解決方案。通過結(jié)合高端路由器主備控制板卡之間需要同步數(shù)據(jù)的不同特點,采用合適的方法對這些數(shù)據(jù)進行同步;同時采用私有的以太網(wǎng)二層通信協(xié)議,建立一條獨立的主備數(shù)據(jù)同步通道。該方案提高了主備數(shù)據(jù)同步速率,保證數(shù)據(jù)同步的穩(wěn)定可靠,采用模塊化設(shè)計,實現(xiàn)簡單,實用性高。
高端路由器一般采用分布式架構(gòu),控制平面和轉(zhuǎn)發(fā)平面嚴(yán)格分開,功能完全獨立[3]。主控板負(fù)責(zé)控制平面,即整個設(shè)備的控制與管理,包括用戶的各種配置信息以及運行各種協(xié)議,轉(zhuǎn)發(fā)板負(fù)責(zé)轉(zhuǎn)發(fā)平面,即單純的數(shù)據(jù)轉(zhuǎn)發(fā)業(yè)務(wù),它根據(jù)主控板通知消息維護自己的轉(zhuǎn)發(fā)表項,同時根據(jù)轉(zhuǎn)發(fā)表項轉(zhuǎn)發(fā)數(shù)據(jù)。主備同步完成后,主備控制板卡上的控制信息相同,此時進行主備倒換,轉(zhuǎn)發(fā)表項并不會刪除后重新學(xué)習(xí),從而能保證業(yè)務(wù)的無間斷轉(zhuǎn)發(fā),實現(xiàn)主備控制板卡的無縫倒換。
因此,主備同步在主備倒換功能中具有非常重要的地位,其實現(xiàn)有兩種方式:分散式同步方式和集中式同步方式[4]。分散式同步是由上層應(yīng)用根據(jù)自身的情況,采用不同的數(shù)據(jù)同步機制,在各自的本模塊內(nèi)部完成主備同步。相對于分散式同步,適用于簡單應(yīng)用系統(tǒng),不便于統(tǒng)一管理調(diào)度,資源浪費的缺點,本文采用集中式同步方式。集中式同步方式,如圖1,是由操作系統(tǒng)為上層應(yīng)用提供統(tǒng)一標(biāo)準(zhǔn)的同步接口,上層應(yīng)用進程需要同步時,只需調(diào)用主備同步模塊提供的API函數(shù),通過專有的主備數(shù)據(jù)同步通道傳輸數(shù)據(jù),而不必關(guān)心數(shù)據(jù)同步的具體實現(xiàn)。這樣把主備倒換過程中的主備數(shù)據(jù)同步作為一個主備同步模塊,從主備倒換功能中獨立出來,便于對應(yīng)用進程的同步對象進行統(tǒng)一管理與調(diào)度,模塊化的設(shè)計也更具有通用性、可移植性、自適應(yīng)性。
圖1 主備同步軟件總體結(jié)構(gòu)Fig.1 Structure diagram of the main/standby synchronization
以往舊方案中的主備數(shù)據(jù)同步都是在倒換過程中并發(fā)進行的,數(shù)據(jù)的傳輸使用UDP一次處理,這種方法數(shù)據(jù)易丟失且會增加主備倒換時間[5]。為解決以上問題,提高傳輸?shù)目煽啃院屯剿俾剩鱾渫侥K提供一條采用消息確認(rèn)方式的可靠鏈路層同步通道,并針對同步數(shù)據(jù)的不同特點,在鏈路層通道中采用不同的同步方式。
上層應(yīng)用需要同步數(shù)據(jù)時,調(diào)用主備同步模塊提供的接口后,數(shù)據(jù)通過私有協(xié)議進行封裝,根據(jù)目的板卡和發(fā)送板卡設(shè)置相應(yīng)的目的MAC地址和源MAC地址,采用消息確認(rèn)方式,可靠的傳輸?shù)侥康陌蹇?。主用板給備用板發(fā)送同步數(shù)據(jù)后,啟用定時器等待備用板數(shù)據(jù)接收的確認(rèn)消息,特定時間沒有收到確認(rèn)消息后,主用板向備用板重傳數(shù)據(jù)。備用板收到主用板傳輸?shù)臄?shù)據(jù)后,調(diào)用上層應(yīng)用接受同步數(shù)據(jù)的接口,然后執(zhí)行相關(guān)命令,執(zhí)行成功后給主用板發(fā)送一個確認(rèn)消息。當(dāng)主用板收到備用板的確認(rèn)消息后,對相關(guān)資源進行調(diào)整和釋放,然后開始發(fā)下一個同步數(shù)據(jù)包。
主備同步模塊工作的實質(zhì)是在合適的時機,針對具體的配置信息的特點,采用合適的同步方法對這些配置數(shù)據(jù)進行同步。因此主備同步模塊主要需要完成三部分的工作,即同步時機的獲取、同步對象的劃分、同步方法的實現(xiàn)。如圖2所示,為主備同步模塊結(jié)構(gòu)。
圖2 主備同步模塊Fig.2 Main/standby synchronization module
為了在合適的時機進行主備數(shù)據(jù)同步,即獲取同步時機,需要對主備板卡的狀態(tài)進行管理,主備板卡的狀態(tài)由私有控制協(xié)議HA的狀態(tài)機維護,如圖3所示。
圖3 HA狀態(tài)機Fig.3 HA state machine
HA協(xié)議主要實現(xiàn)了以下3個方面的功能:1)主、備控制板卡的彼此發(fā)現(xiàn)和會話連接的建立;2)主、備控制板卡的網(wǎng)管配置同步時機的獲取;3)提供硬件和軟件結(jié)合的故障檢測機制。
HA協(xié)議通過心跳機制提供主備板卡的軟件故障檢測,同時接受硬件中斷信息的上報,從而實現(xiàn)硬件和軟件結(jié)合的故障檢測機制。心跳信息也用于主控板和備用板之間的握手,維護它們的狀態(tài)變遷。系統(tǒng)初始化的時候,HA協(xié)議創(chuàng)建并啟動心跳和故障檢測定時器,為上層應(yīng)用模塊提供注冊用的函數(shù)鉤子,當(dāng)主備板卡的狀態(tài)發(fā)生變遷時,通知相關(guān)模塊進行角色變化,數(shù)據(jù)同步等相應(yīng)的操作。
因此,主備板卡之間除了需要傳輸需要同步的數(shù)據(jù)外,還需要傳輸HA協(xié)議的心跳信息。主備板卡之間通常需要留有另外的連接通道用于心跳機制的通信,把控制傳輸和數(shù)據(jù)同步傳輸分離開來,防止因數(shù)據(jù)傳輸通道的故障導(dǎo)致主備板卡狀態(tài)的異常,從而導(dǎo)致整個設(shè)備的故障[6]。
高端路由器主備倒換功能中主控板需要同步的信息有系統(tǒng)全局配置信息、系統(tǒng)的狀態(tài)信息、軟件各模塊的配置信息、CPU狀態(tài)信息、軟件路由表項等。每種配置信息都有自己的特點,比如對實時性要求的高低、信息量的大小、信息更新的頻率、對系統(tǒng)的重要程度等[7]。對不同的配置信息采取與其相適應(yīng)的備份機制同步方法,可以提高主備數(shù)據(jù)同步效率。
根據(jù)信息來源的不同,可以把需要同步的配置信息分為靜態(tài)配置信息和動態(tài)配置信息。
靜態(tài)配置信息根據(jù)其信息量的大小和實時性的要求又可以分為兩種:主用板和備用板都處在穩(wěn)定態(tài)的時候,用戶手動配置的命令行信息,即需要實時同步的信息;以及主用板處在穩(wěn)定態(tài)的時候,備用板上電,此時需要同步到備用板上的配置信息,即主控板的所有配置信息,網(wǎng)管把主用板上的所有配置信息保存到主用板的CFCard或Flash,然后HA協(xié)議通知網(wǎng)管同步該配置信息。
動態(tài)配置信息是指系統(tǒng)運行協(xié)議而產(chǎn)生的動態(tài)信息,協(xié)議運行產(chǎn)生的鄰居狀態(tài),相關(guān)協(xié)議表項等都是動態(tài)配置信息。動態(tài)配置信息根據(jù)是否需要被周期性同步可以分為周期性同步配置信息和非周期同步配置信息,有些協(xié)議表項需要定時周期性的刷新,即周期性同步配置信息,有的協(xié)議表項不需要周期性刷新或者周期很大,即為非周期性同步配置信息。
靜態(tài)配置信息一般相對穩(wěn)定,用戶易控制,動態(tài)配置信息一般具有相對不穩(wěn)定,量較大,用戶無法控制等特點。
針對靜態(tài)配置信息和動態(tài)配置信息的不同特點,通過相同的數(shù)據(jù)同步通道,采用不同的同步方式來提高同步的效率。
2.3.1 靜態(tài)配置信息同步
靜態(tài)配置信息中,主用板與備用板都處在穩(wěn)定工作態(tài)時,用戶手動配置的命令行信息實時性要求高,信息量小,以增量的方式實時同步到備用板,通過命令行解析,執(zhí)行與主用板上相同的操作。主備用板卡執(zhí)行相同的命令行解析,備用板收到主用板同步過來的命令行配置,調(diào)用和主用板相同的上層應(yīng)用接口,但應(yīng)用進程可以通過攜帶不同的標(biāo)志位,同步數(shù)據(jù)通道根據(jù)標(biāo)志位來判斷是否需要給對端同步數(shù)據(jù),防止備用板收到主用板同步的命令行配置后,又給主用板同步配置。
而主用板處于穩(wěn)定工作態(tài)后,備用板再上電,這時主用板的所有配置信息都要同步到備用板,這種初始化同步配置信息的信息量一般較大。通常軟件模塊把配置信息以字符串格式寫入后綴名為“.cfg”配置文件,然后把配置文件通過FTP同步到備用板,備用板收到后按照配置文件里的配置逐一執(zhí)行配置,從而保證主備板數(shù)據(jù)一致。這種傳統(tǒng)的方法配置恢復(fù)采用單任務(wù),各個模塊按一定的順序,依次經(jīng)過命令解析、命令匹配和命令下發(fā)等流程,配置恢復(fù)效率低下,同時在配置恢復(fù)時各模塊存在較強的耦合性,各模塊必須按一定的順序進行恢復(fù)工作,否則可能出現(xiàn)配置執(zhí)行失敗。把配置文件采用二進制格式保存,并按模塊和特性進行組織保存,并且配置恢復(fù)采用直接賦值的形式,簡化了配置信息的解析和下發(fā),去除了各模塊間的耦合,并使用多進程技術(shù)可以實現(xiàn)多模塊并行的數(shù)據(jù)恢復(fù),極大的提高了同步效率[7]。
2.3.2 動態(tài)配置信息同步
動態(tài)配置信息,是由系統(tǒng)運行協(xié)議而產(chǎn)生的與協(xié)議有關(guān)的信息,這些數(shù)據(jù)信息關(guān)系到倒換后協(xié)議狀態(tài)是否正確,關(guān)系到主備板卡能否實現(xiàn)無縫倒換,根據(jù)其是否需要周期性同步而分類。ARP,ND,TCP等這些協(xié)議表項數(shù)據(jù),會定時周期性刷新軟件表項,需要周期性同步到備用板卡;而運行路由協(xié)議而產(chǎn)生的軟件路由表項,鄰居信息等,當(dāng)路由協(xié)議的狀態(tài)發(fā)生變化會導(dǎo)致這些表項變化,很長周期后協(xié)議自己刷新表項也會導(dǎo)致表項變換,因此是非周期的動態(tài)同步配置信息,采用嚴(yán)格消息確認(rèn)方式同步數(shù)據(jù)。
對于那些短時間內(nèi)變化頻繁,需要定時刷新表項的協(xié)議,為了保證主備板卡的協(xié)議狀態(tài)一致,一般是把協(xié)議進程的消息定時或者實時的同步轉(zhuǎn)發(fā)給備用板進程。對于這種周期性同步消息沒有必要進行嚴(yán)格確認(rèn),因為動態(tài)數(shù)據(jù)在短時間內(nèi)會再改變,當(dāng)同步周期很短的時候,會給主用板的處理器和主備板之間的通信造成很大壓力。協(xié)議模塊可以通過攜帶標(biāo)志位,在數(shù)據(jù)同步通道根據(jù)其標(biāo)志位來進行不同的處理。
在相同的硬件環(huán)境下,采用新舊兩個不同的方案制作的軟件版本進行實驗對比。方案一,使用UDP傳輸主備同步數(shù)據(jù)的傳統(tǒng)方案;方案二,改進后實現(xiàn)主備數(shù)據(jù)同步的新方案。
1)實驗環(huán)境
高端路由器設(shè)備,設(shè)備上有一塊主用控制卡、一塊備用控制卡、一塊業(yè)務(wù)線卡,思博倫TestCenter儀表。按圖4拓?fù)鋱D搭建環(huán)境。
圖4 拓?fù)鋱DFig.4 The network topology
2)實驗方法
TestCenter儀表的兩個端口分別與業(yè)務(wù)線卡上的兩個端口相連,儀表與設(shè)備相連的端口運行路由協(xié)議(RIP、OSPF、ISIS、BGP等),儀表與設(shè)備建立鄰居,儀表口通告路由(IPV4路由50 W,IPV6路由25 W),兩個儀表口對打流。記錄同步不同類型不同容量路由的時間,得出其平均值;短周期不停同步大量數(shù)據(jù)到備用板,統(tǒng)計失敗次數(shù),計算丟包率,得出可靠性。
3)實驗結(jié)論
多次主備倒換后,可以看到主備控制卡角色變換,沒有數(shù)據(jù)包丟失,主備控制卡實現(xiàn)了無縫倒換。圖5所示,為用命令行rsp switch進行主備倒換的結(jié)果圖,可以看到9號槽和10號槽主控角色的變換。統(tǒng)計多次數(shù)據(jù),得出方案一和方案二各個階段數(shù)據(jù)同步的平均時間,并計算出兩個方案主備同步的可靠性,如表1所示。
表1 實驗結(jié)果圖Tab.1 The experimental results
由此可以得出,改進后的主備同步方案,可以應(yīng)用在高端路由器設(shè)備中,實現(xiàn)了主備控制卡的無縫倒換,并且相對傳統(tǒng)舊的同步方案,提高了數(shù)據(jù)同步的可靠性與速率。
圖5 主備倒換結(jié)果圖Fig.5 The experimental results of main/standby switch
主備數(shù)據(jù)同步技術(shù)是實現(xiàn)通信設(shè)備主備倒換的關(guān)鍵技術(shù)之一,本文主要對這一技術(shù)進行了研究與改進。通過改進主備數(shù)據(jù)傳輸通道,劃分同步對象,采用合適的同步方法,從而實現(xiàn)高效可靠的主備同步。該技術(shù)方案已經(jīng)通過測試,在高端路由器設(shè)備上能夠有效可靠的運行,并且實現(xiàn)簡單,實用性高。
[1]張玉峰,孫知信.基于熱備份的主備倒換在高端路由器中的應(yīng)用[J].計算機技術(shù)與發(fā)展,2010,20(3):20-22.ZHANG Yu-feng,SUN Zhi-xin.Swap based on hot standby and its application in high-end router[J].Computer Technology and Development,2010,20(3):20-22.
[2]王繼剛,顧國昌,蘆東昕.高可靠性通信設(shè)備主備倒換軟件的設(shè)計[J].電信科學(xué),2003(11):20-22.WANGJi-gang,GU Guo-chang,LU Dong-xin.Software design of main/standby switch for dependability communication equipment[J].Telecommunications Science,2003(11):20-22.
[3]姜艷紅.高性能路由器內(nèi)部通信協(xié)議的研究與實現(xiàn)[D].鄭州:解放軍信息工程大學(xué),2006.
[4]何先波,李志蜀,唐寧九,等.面向通信領(lǐng)域的主備倒換與數(shù)據(jù)同步技術(shù)[J].計算機應(yīng)用,2005,25(10):23-26.HE Xian-bo,LI Zhi-shu,TANG Ning-jiu.Man/standby switch and data synchronization technology oriented to communiction field[J].Computer Applications,2005,25(10):23-26.
[5]姜艷紅,魏進武,周麗.UDP協(xié)議用于高性能路由器內(nèi)部通信的設(shè)計與實現(xiàn)[J].微計算機信息,2005(17):85-86.JIANG Yan-hong,WEI Jin-wu,ZHOU Li.Design and implementation of UDPused in inner communication of high-performance router[J].Control&Automation,2005(17):85-86.
[6]余偉,郭斌,謝永春,等.嵌入式多板卡協(xié)同工作及熱備份系統(tǒng)研究[J].信息安全與通信保密,2013(5):102-104.YU Wei,GUO Bin, IE yongchun.Embedded multi-board system and hot backup system[J].Information Security and Communications Privacy,2013(5):102-104.
[7]同磊.分布式三層交換機的熱插拔[D].杭州:杭州電子科技大學(xué),2009.