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