高端路由器主備同步技術(shù)的研究
摘要:高端路由器設(shè)備通常采用主備倒換來延長系統(tǒng)的可靠運(yùn)行時(shí)間,而主備數(shù)據(jù)同步是實(shí)現(xiàn)主備倒換的關(guān)鍵技術(shù)。針對傳統(tǒng)主備同步技術(shù)可靠性低,同步速率低的問題,提出了一種新的主備數(shù)據(jù)同步解決方案。新的主備同步方案使用了可靠的主備數(shù)據(jù)同步通道;提出給同步數(shù)據(jù)分類,并采用合適的方法同步。經(jīng)實(shí)驗(yàn)驗(yàn)證,該技術(shù)方案應(yīng)用在高端路由器上,提高了主備同步速率與可靠性,從而提高了系統(tǒng)性能,同時(shí)模塊化的設(shè)計(jì),具有很好的通用性,實(shí)現(xiàn)簡單,實(shí)用性高。
高端路由器作為Internet骨干網(wǎng)的核心設(shè)備,其位置決定了它必須具備很高的穩(wěn)定性與可靠性。通過采用1+1的主控板冗余熱備份機(jī)制,是常用的提高設(shè)備可靠性與穩(wěn)定性的重要解決方案之一。主控板冗余機(jī)制,是指兩塊軟硬件相同的主控板同時(shí)工作,一塊為主用主控板,一塊為備用主控板。通常情況下,主用主控板處于正常工作狀態(tài),備用主控板處于備用狀態(tài),在一定的觸發(fā)條件下,備用板接替主用板所有工作,完成主備倒換功能,從而保證設(shè)備的可靠運(yùn)行。
而使倒換前后整個(gè)系統(tǒng)的業(yè)務(wù)狀態(tài)不發(fā)生變化的前提是由主備問的數(shù)據(jù)同步和鏈路切換來保證的。本文關(guān)注的重點(diǎn)為軟件層面,基于主備倒換熱備份的數(shù)據(jù)同步解決方案。通過結(jié)合高端路由器主備控制板卡之間需要同步數(shù)據(jù)的不同特點(diǎn),采用合適的方法對這些數(shù)據(jù)進(jìn)行同步;同時(shí)采用私有的以太網(wǎng)二層通信協(xié)議,建立一條獨(dú)立的主備數(shù)據(jù)同步通道。該方案提高了主備數(shù)據(jù)同步速率,保證數(shù)據(jù)同步的穩(wěn)定可靠,采用模塊化設(shè)計(jì),實(shí)現(xiàn)簡單,實(shí)用性高。
1 高端路由器主備同步的總體軟件模型
1.1 主備同步方式的軟件實(shí)現(xiàn)方案
高端路由器一般采用分布式架構(gòu),控制平面和轉(zhuǎn)發(fā)平面嚴(yán)格分開,功能完全獨(dú)立。主控板負(fù)責(zé)控制平面,即整個(gè)設(shè)備的控制與管理,包括用戶的各種配置信息以及運(yùn)行各種協(xié)議,轉(zhuǎn)發(fā)板負(fù)責(zé)轉(zhuǎn)發(fā)平面,即單純的數(shù)據(jù)轉(zhuǎn)發(fā)業(yè)務(wù),它根據(jù)主控板通知消息維護(hù)自己的轉(zhuǎn)發(fā)表項(xiàng),同時(shí)根據(jù)轉(zhuǎn)發(fā)表項(xiàng)轉(zhuǎn)發(fā)數(shù)據(jù)。主備同步完成后,主備控制板卡上的控制信息相同,此時(shí)進(jìn)行主備倒換,轉(zhuǎn)發(fā)表項(xiàng)并不會(huì)刪除后重新學(xué)習(xí),從而能保證業(yè)務(wù)的無間斷轉(zhuǎn)發(fā),實(shí)現(xiàn)主備控制板卡的無縫倒換。
因此,主備同步在主備倒換功能中具有非常重要的地位,其實(shí)現(xiàn)有兩種方式:分散式同步方式和集中式同步方式。分散式同步是由上層應(yīng)用根據(jù)自身的情況,采用不同的數(shù)據(jù)同步機(jī)制,在各自的本模塊內(nèi)部完成主備同步。相對于分散式同步,適用于簡單應(yīng)用系統(tǒng),不便于統(tǒng)一管理調(diào)度,資源浪費(fèi)的缺點(diǎn),本文采用集中式同步方式。集中式同步方式,如圖1,是由操作系統(tǒng)為上層應(yīng)用提供統(tǒng)一標(biāo)準(zhǔn)的同步接口,上層應(yīng)用進(jìn)程需要同步時(shí),只需調(diào)用主備同步模塊提供的API函數(shù),通過專有的主備數(shù)據(jù)同步通道傳輸數(shù)據(jù),而不必關(guān)心數(shù)據(jù)同步的具體實(shí)現(xiàn)。這樣把主備倒換過程中的主備數(shù)據(jù)同步作為一個(gè)主備同步模塊,從主備倒換功能中獨(dú)立出來,便于對應(yīng)用進(jìn)程的同步對象進(jìn)行統(tǒng)一管理與調(diào)度,模塊化的設(shè)計(jì)也更具有通用性、可移植性、自適應(yīng)性。
1. 2 主備數(shù)據(jù)同步通道
以往舊方案中的主備數(shù)據(jù)同步都是在倒換過程中并發(fā)進(jìn)行的,數(shù)據(jù)的傳輸使用UDP一次處理,這種方法數(shù)據(jù)易丟失且會(huì)增加主備倒換時(shí)間。為解決以上問題,提高傳輸?shù)目煽啃院屯剿俾剩鱾渫侥K提供一條采用消息確認(rèn)方式的可靠鏈路層同步通道,并針對同步數(shù)據(jù)的不同特點(diǎn),在鏈路層通道中采用不同的同步方式。
上層應(yīng)用需要同步數(shù)據(jù)時(shí),調(diào)用主備同步模塊提供的接口后,數(shù)據(jù)通過私有協(xié)議進(jìn)行封裝,根據(jù)目的板卡和發(fā)送板卡設(shè)置相應(yīng)的目的MAC地址和源MAC地址,采用消息確認(rèn)方式,可靠的傳輸?shù)侥康陌蹇?。主用板給備用板發(fā)送同步數(shù)據(jù)后,啟用定時(shí)器等待備用板數(shù)據(jù)接收的確認(rèn)消息,特定時(shí)間沒有收到確認(rèn)消息后,主用板向備用板重傳數(shù)據(jù)。備用板收到主用板傳輸?shù)臄?shù)據(jù)后,調(diào)用上層應(yīng)用接受同步數(shù)據(jù)的接口,然后執(zhí)行相關(guān)命令,執(zhí)行成功后給主用板發(fā)送一個(gè)確認(rèn)消息。當(dāng)主用板收到備用板的確認(rèn)消息后,對相關(guān)資源進(jìn)行調(diào)整和釋放,然后開始發(fā)下一個(gè)同步數(shù)據(jù)包。
2 主備數(shù)據(jù)同步
主備同步模塊工作的實(shí)質(zhì)是在合適的時(shí)機(jī),針對具體的配置信息的特點(diǎn),采用合適的同步方法對這些配置數(shù)據(jù)進(jìn)行同步。因此主備同步模塊主要需要完成三部分的工作,即同步時(shí)機(jī)的獲取、同步對象的劃分、同步方法的實(shí)現(xiàn)。如圖2所示,為主備同步模塊結(jié)構(gòu)。
2. 1 同步時(shí)機(jī)的獲取
為了在合適的時(shí)機(jī)進(jìn)行主備數(shù)據(jù)同步,即獲取同步時(shí)機(jī),需要對主備板卡的狀態(tài)進(jìn)行管理,主備板卡的狀態(tài)由私有控制協(xié)議HA的狀態(tài)機(jī)維護(hù),如圖3所示。
HA協(xié)議主要實(shí)現(xiàn)了以下3個(gè)方面的功能:1)主、備控制板卡的彼此發(fā)現(xiàn)和會(huì)話連接的建立;2)主、備控制板卡的網(wǎng)管配置同步時(shí)機(jī)的獲取;3)提供硬件和軟件結(jié)合的故障檢測
機(jī)制。
HA協(xié)議通過心跳機(jī)制提供主備板卡的軟件故障檢測,同時(shí)接受硬件中斷信息的上報(bào),從而實(shí)現(xiàn)硬件和軟件結(jié)合的故障檢測機(jī)制。心跳信息也用于主控板和備用板之間的握手,維護(hù)它們的狀態(tài)變遷。系統(tǒng)初始化的時(shí)候,HA協(xié)議創(chuàng)建并啟動(dòng)心跳和故障檢測定時(shí)器,為上層應(yīng)用模塊提供注冊用的函數(shù)鉤子,當(dāng)主備板卡的狀態(tài)發(fā)生變遷時(shí),通知相關(guān)模塊進(jìn)行角色變化,數(shù)據(jù)同步等相應(yīng)的操作。
因此,主備板卡之間除了需要傳輸需要同步的數(shù)據(jù)外,還需要傳輸HA協(xié)議的心跳信息。主備板卡之間通常需要留有另外的連接通道用于心跳機(jī)制的通信,把控制傳輸和數(shù)據(jù)同步傳輸分離開來,防止因數(shù)據(jù)傳輸通道的故障導(dǎo)致主備板卡狀態(tài)的異常,從而導(dǎo)致整個(gè)設(shè)備的故障。
2.2 高端路由器主備同步數(shù)據(jù)分類
高端路由器主備倒換功能中主控板需要同步的信息有系統(tǒng)全局配置信息、系統(tǒng)的狀態(tài)信息、軟件各模塊的配置信息、CPU狀態(tài)信息、軟件路由表項(xiàng)等。每種配置信息都有自己的特點(diǎn),比如對實(shí)時(shí)性要求的高低、信息量的大小、信息更新的頻率、對系統(tǒng)的重要程度等。對不同的配置信息采取與其相適應(yīng)的備份機(jī)制同步方法,可以提高主備數(shù)據(jù)同步效率。
根據(jù)信息來源的不同,可以把需要同步的配置信息分為靜態(tài)配置信息和動(dòng)態(tài)配置信息。
靜態(tài)配置信息根據(jù)其信息量的大小和實(shí)時(shí)性的要求又可以分為兩種:主用板和備用板都處在穩(wěn)定態(tài)的時(shí)候,用戶手動(dòng)配置的命令行信息,即需要實(shí)時(shí)同步的信息;以及主用板處在穩(wěn)定態(tài)的時(shí)候,備用板上電,此時(shí)需要同步到備用板上的配置信息,即主控板的所有配置信息,網(wǎng)管把主用板上的所有配置信息保存到主用板的 CFCard或Flash,然后HA協(xié)議通知網(wǎng)管同步該配置信息。
動(dòng)態(tài)配置信息是指系統(tǒng)運(yùn)行協(xié)議而產(chǎn)生的動(dòng)態(tài)信息,協(xié)議運(yùn)行產(chǎn)生的鄰居狀態(tài),相關(guān)協(xié)議表項(xiàng)等都是動(dòng)態(tài)配置信息。動(dòng)態(tài)配置信息根據(jù)是否需要被周期性同步可以分為周期性同步配置信息和非周期同步配置信息,有些協(xié)議表項(xiàng)需要定時(shí)周期性的刷新,即周期性同步配置信息,有的協(xié)議表項(xiàng)不需要周期性刷新或者周期很大,即為非周期性同步配置信息。
靜態(tài)配置信息一般相對穩(wěn)定,用戶易控制,動(dòng)態(tài)配置信息一般具有相對不穩(wěn)定,量較大,用戶無法控制等特點(diǎn)。
2.3 同步方法的實(shí)現(xiàn)
針對靜態(tài)配置信息和動(dòng)態(tài)配置信息的不同特點(diǎn),通過相同的數(shù)據(jù)同步通道,采用不同的同步方式來提高同步的效率。
2.3.1 靜態(tài)配置信息同步
靜態(tài)配置信息中,主用板與備用板都處在穩(wěn)定工作態(tài)時(shí),用戶手動(dòng)配置的命令行信息實(shí)時(shí)性要求高,信息量小,以增量的方式實(shí)時(shí)同步到備用板,通過命令行解析,執(zhí)行與主用板上相同的操作。主備用板卡執(zhí)行相同的命令行解析,備用板收到主用板同步過來的命令行配置,調(diào)用和主用板相同的上層應(yīng)用接口,但應(yīng)用進(jìn)程可以通過攜帶不同的標(biāo)志位,同步數(shù)據(jù)通道根據(jù)標(biāo)志位來判斷是否需要給對端同步數(shù)據(jù),防止備用板收到主用板同步的命令行配置后,又給主用板同步配置。
而主用板處于穩(wěn)定工作態(tài)后,備用板再上電,這時(shí)主用板的所有配置信息都要同步到備用板,這種初始化同步配置信息的信息量一般較大。通常軟件模塊把配置信息以字符串格式寫入后綴名為“.cfg”配置文件,然后把配置文件通過FTP同步到備用板,備用板收到后按照配置文件里的配置逐一執(zhí)行配置,從而保證主備板數(shù)據(jù)一致。這種傳統(tǒng)的方法配置恢復(fù)采用單任務(wù),各個(gè)模塊按一定的順序,依次經(jīng)過命令解析、命令匹配和命令下發(fā)等流程,配置恢復(fù)效率低下,同時(shí)在配置恢復(fù)時(shí)各模塊存在較強(qiáng)的耦合性,各模塊必須按一定的順序進(jìn)行恢復(fù)工作,否則可能出現(xiàn)配置執(zhí)行失敗。把配置文件采用二進(jìn)制格式保存,并按模塊和特性進(jìn)行組織保存,并且配置恢復(fù)采用直接賦值的形式,簡化了配置信息的解析和下發(fā),去除了各模塊間的耦合,并使用多進(jìn)程技術(shù)可以實(shí)現(xiàn)多模塊并行的數(shù)據(jù)恢復(fù),極大的提高了同步效率。
2.3.2 動(dòng)態(tài)配置信息同步
動(dòng)態(tài)配置信息,是由系統(tǒng)運(yùn)行協(xié)議而產(chǎn)生的與協(xié)議有關(guān)的信息,這些數(shù)據(jù)信息關(guān)系到倒換后協(xié)議狀態(tài)是否正確,關(guān)系到主備板卡能否實(shí)現(xiàn)無縫倒換,根據(jù)其是否需要周期性同步而分類。ARP,ND,TCP等這些協(xié)議表項(xiàng)數(shù)據(jù),會(huì)定時(shí)周期性刷新軟件表項(xiàng),需要周期性同步到備用板卡;而運(yùn)行路由協(xié)議而產(chǎn)生的軟件路由表項(xiàng),鄰居信息等,當(dāng)路由協(xié)議的狀態(tài)發(fā)生變化會(huì)導(dǎo)致這些表項(xiàng)變化,很長周期后協(xié)議自己刷新表項(xiàng)也會(huì)導(dǎo)致表項(xiàng)變換,因此是非周期的動(dòng)態(tài)同步配置信息,采用嚴(yán)格消息確認(rèn)方式同步數(shù)據(jù)。
對于那些短時(shí)間內(nèi)變化頻繁,需要定時(shí)刷新表項(xiàng)的協(xié)議,為了保證主備板卡的協(xié)議狀態(tài)一致,一般是把協(xié)議進(jìn)程的消息定時(shí)或者實(shí)時(shí)的同步轉(zhuǎn)發(fā)給備用板進(jìn)程。對于這種周期性同步消息沒有必要進(jìn)行嚴(yán)格確認(rèn),因?yàn)閯?dòng)態(tài)數(shù)據(jù)在短時(shí)間內(nèi)會(huì)再改變,當(dāng)同步周期很短的時(shí)候,會(huì)給主用板的處理器和主備板之間的通信造成很大壓力。協(xié)議模塊可以通過攜帶標(biāo)志位,在數(shù)據(jù)同步通道根據(jù)其標(biāo)志位來進(jìn)行不同的處理。
3 實(shí)驗(yàn)與驗(yàn)證
在相同的硬件環(huán)境下,采用新舊兩個(gè)不同的方案制作的軟件版本進(jìn)行實(shí)驗(yàn)對比。方案一,使用UDP傳輸主備同步數(shù)據(jù)的傳統(tǒng)方案;方案二,改進(jìn)后實(shí)現(xiàn)主備數(shù)據(jù)同步的新方案。
1)實(shí)驗(yàn)環(huán)境
高端路由器設(shè)備,設(shè)備上有一塊主用控制卡、一塊備用控制卡、一塊業(yè)務(wù)線卡,思博倫TestCenter儀表。按圖4拓?fù)鋱D搭建環(huán)境。
2)實(shí)驗(yàn)方法
TestCenter儀表的兩個(gè)端口分別與業(yè)務(wù)線卡上的兩個(gè)端口相連,儀表與設(shè)備相連的端口運(yùn)行路由協(xié)議(RIP、OSPF、ISIS、BGP等),儀表與設(shè)備建立鄰居,儀表口通告路由(IPV4路由50 W,IPV6路由25 W),兩個(gè)儀表口對打流。記錄同步不同類型不同容量路由的時(shí)間,得出其平均值;短周期不停同步大量數(shù)據(jù)到備用板,統(tǒng)計(jì)失敗次數(shù),計(jì)算丟包率,得出可靠性。
3)實(shí)驗(yàn)結(jié)論
多次主備倒換后,可以看到主備控制卡角色變換,沒有數(shù)據(jù)包丟失,主備控制卡實(shí)現(xiàn)了無縫倒換。圖5所示,為用命令行rsp switch進(jìn)行主備倒換的結(jié)果圖,可以看到9號槽和10號槽主控角色的變換。統(tǒng)計(jì)多次數(shù)據(jù),得出方案一和方案二各個(gè)階段數(shù)據(jù)同步的平均時(shí)間,并計(jì)算出兩個(gè)方案主備同步的可靠性,如表1所示。
由此可以得出,改進(jìn)后的主各同步方案,可以應(yīng)用在高端路由器設(shè)備中,實(shí)現(xiàn)了主備控制卡的無縫倒換,并且相對傳統(tǒng)舊的同步方案,提高了數(shù)據(jù)同步的可靠性與速率。
4 結(jié)束語
主備數(shù)據(jù)同步技術(shù)是實(shí)現(xiàn)通信設(shè)備主備倒換的關(guān)鍵技術(shù)之一,本文主要對這一技術(shù)進(jìn)行了研究與改進(jìn)。通過改進(jìn)主備數(shù)據(jù)傳輸通道,劃分同步對象,采用合適的同步方法,從而實(shí)現(xiàn)高效可靠的主備同步。該技術(shù)方案已經(jīng)通過測試,在高端路由器設(shè)備上能夠有效可靠的運(yùn)行,并且實(shí)現(xiàn)簡單,實(shí)用性高。