蔣玉玲 譚佳慧



摘要:網絡配置數據的存儲與恢復廣泛應用于各網絡設備。本文旨在研究一種可實時安全存儲網絡配置數據的方法。CSS (Configuration Safe Store)通過截獲MIB (Management Information Base)消息,將MIB請求的備份按照下發的順序存儲進文件中,在設備發生故障或者正常重啟之后從文件中回讀配置數據并將系統恢復至文件所存儲的配置。CSS的配置備份和配置回滾等功能保證了配置信息及時地存儲以及精準的恢復。css的使用可以極大的減少設備故障,突然斷電等突發狀況導致大量配置數據丟失的情況,安全性好,執行效率高,改善了設備的使用性能。
關鍵字:網絡設備;網絡配置數據;配置安全存儲;配置恢復
中圖分類號:TN919.2
文獻標識碼:A
1 引言
如今,網絡規模日益擴大,網絡配置數據的數量成倍增長,如何實現這些配置數據的秒存和精準恢復變得尤為重要。本文主要研究現有的存儲和配置恢復的方式以及提出新的可行性方案。
在本次重點研究的數據通信[1]主控系統軟件平臺開發中,開發人員通過以XML (eXtensibleMarkup Language)[2]寫命令行的方式對網絡設備進行配置下發,由XML腳本中定義的GET,SET和TRAP等消息來調用協議軟件模塊的相關回調函數,實現對MIB表的訪問和讀寫操作[3]。下發SAVE命令后配置被寫入文件中進行存儲[4]。在系統重啟時,歷史配置數據從配置文件中回讀,重新下發給網絡設備,從而將系統恢復至重啟前的狀態。配置數據的寫文件操作通常是在每次下發配置數據之后,手動敲入存儲命令進行保存,或等待一定間隔,由定時器溢出觸發配置自動保存。若在這段間隔時間內出現系統故障導致重啟而未來得及將系統的實時配置數據及時存儲,則會導致配置數據丟失,給運維人員和用戶帶來極大不便[5]。
2 基于MIB的網絡數據存儲與恢復的實現
實現針對現有配置數據存儲方式存在的上述問題,本文提出一種新的可實時安全存儲網絡配置數據的方法CSS (Configuration Safe Store),當以XML寫命令行的方式下發配置信息時,依照平臺的內部規則,依舊基于XML中定義的命令行消息對協議軟件模塊的MIB表進行讀寫操作,與此同時,通過CSS實現的軟件hook同步截獲MIB消息到存儲接口,將系統中的配置數據存儲進文件中。即下發一條配置同步存儲一條配置[6],從而實現配置秒存。CSS能保證在設備故障或者突然斷電等情況下,原有配置無丟失,并可在設備上電后按原有配置順序依次進行恢復,從而使設備還原至重啟前的狀態。
與原有配置數據存儲和恢復方式相比較,CSS的可用性,可靠性更高。首先,CSS可以實時存儲配置數據,保證設備在重啟前后的狀態一致。其次,只要消息格式滿足CSS定義的存儲接口規范,CSS可以移植到任意平臺和任意設備。此外,CSS還支持配置回滾,配置版本轉換,錯誤處理,問題診斷[7]等功能,可以使用任意時間點的歷史配置數據,將系統還原至歷史狀態,也可以檢測錯誤并記錄生成錯誤日志信息。
(1)基于MIB的網絡數據存儲的實現
CSS與系統中其他組件進行交互的流程如圖l所示。
圖1中管理組件(Administration Component)一般由客戶提供,用于配置和管理整個網絡。MIBStub主要將外部的MIB操作轉換為系統內部消息,經由MIB接口傳遞給系統管理器SM (System Man-ager)。SM負責消息收發、模塊進程調度,SM內部的MIB管理器負責將MIB請求路由至正確的目的地。
在部署了CSS的網絡管理系統中,進行配置數據快速存儲的流程如圖2所示。
1.配置消息由管理組件發出,經由MIB stub和MIB Handler發送到系統管理器SM;
2.SM將配置消息路由到正確的協議模塊實體;
3.協議模塊實體接收到配置消息后返回響應消息,該響應通過SM發送到MIB Handler,MIBHandler轉而發送至MIB STUB[8],同時將配置命令的響應復制一份發送給CSS,CSS將該響應消息攜帶的,己在設備上生效的配置數據存儲進文件中;這就是CSS的消息截獲功能;
4.CSS向MIB Handler發送確認消息。
(2)基于MIB的網絡數據恢復的實現
在設備啟動時,CSS檢索保存在指定目錄下的配置文件,為每個文件分配唯一的文件索引值,該索引值作為CSS_FILE表的key值。通過對CSS_FILE表發起一系列GET MIB操作來知曉已經被使用的文件索引值并確定新增配置文件可用的索引值,將所有配置文件列表保存。配置文件的擴展名均為.dat,可通過修改定義文件擴展名的宏進行更改。CSS默認加載存儲在css_snapshot.dat中的配置,也可以指定其他的配置文件進行恢復。恢復一條配置的流程如圖3所示:
在配置恢復的過程中,由管理組件發過來的配置命令被阻塞,SM只處理由CSS觸發的配置恢復命令。為了保證所有CSS中保存的配置正常恢復,在標識配置恢復完成進度的宏被置位之前,MIBStub會阻塞所有來自管理組件的配置請求。
1.CSS收到CSS_START_REPLAY消息,將配置文件中需要恢復的配置創建為MIB行列表。CSS生成帶有配置數據的配置恢復請求發送給MIBHandler。
2.MIB Handler生成SET消息作為恢復請求的回應,將配置數據經過SM下發給模塊。
3.配置恢復完成,模塊啟動完畢,模塊發送配置命令的響應由SM發給MIB Handler,再發給CSS,通知CSS該條配置己恢復完畢。
如果在配置恢復的過程中,產品或者SM檢測到出錯,則向CSS發送一個包含該錯誤信息的消息,CSS會跳過出錯的地方繼續進行后續的配置恢復。
(3)配置數據前后依賴的關系處理
CSS通過截獲SM轉發的MIB消息來獲取配置數據,若針對A表的操作觸發同一協議模塊內部B表字段值的修改,無需下發通告消息告知SM,則CSS無法感知。對存在上述情形需要做依賴關系處理pJ。在CSS的回調函數中添加修改B表字段的代碼。在CSS恢復A表時,通過OID (ObjectIdentifier Desendant)號與family ID查找到A表,檢測到A表的改動會導致B表的修改,則調用CSS的回調函數查找到B表后進行數據修改的操作,避免了CSS恢復的MIB數據與原數據不一致的情況。
例如刪除BVM_VRF表時,需要找到I3_EI_L3表中所有vpn_name字段與要刪除的BVM_VRF表的vpn_name字段相同的表,將vpn_name和vrf_id置為0。首先,在配置恢復結構體中加入BVM_VRF表結構以及回調函數。系統初始化進行配置恢復時,調用該結構體并執行相應回調。回調函數具體實現偽代碼如下:
1.獲取BVM_VRF表row_oid和表數據地址
2.vpn_name非I3_EI_L3表關鍵字,需遍歷查找。
3.初始化13_oid,由13_oid作為關鍵字對CSS本地存儲的表廣度遍歷查找I3_EI_L3表記錄
4.遍歷I3_EI_L3表記錄,找到與要刪除的BVM_VRF表的vpn_name相同的I3_EI_L3表
5.修改I3_EI_L3表的vpn_name和vrf_id字段
CSS配置恢復時,在頭文件中定義一個數組,其中每一個結構體成員對應一個產品模塊,結構體中分別為每個協議模塊的所有MIB[10]表的familyID與OID,用于恢復時查找MIB。調整結構體成員的順序可改變模塊配置恢復的順序,CSS根據結構體成員的順序將所有MIB表按序恢復。這樣可避免類似A表的業務需要使用B表創建的接口,而B表配置恢復在A表之后而導致A表業務恢復失敗的情況。
3 實驗過程及結果分析
在本次研究的數據通信主控系統軟件平臺中,以TPM配置數據為例進行配置恢復實驗。分別配置數條LSP業務和PW業務并保存。通過執行命令set next startup from css FILENAME設定下次設備啟動時以CSS方式進行配置恢復,其中FILE-NAME指定從css配置恢復的dat文件名,執行命令set next startup from zb設定從原始方式保存的配置文件Zebos.CFG進行配置恢復。兩種方式的規格性能測試結果對比如表1所示。
由表中數據可見,CSS方式恢復配置平均耗時約為原始方式平均耗時的三分之一,但是由于CSS配置存儲時會存儲與下發命令相關聯的完整MIB表數據,導致生成的dat文件遠大于Zebos文件,會占用更多的磁盤空間。此外,兩種方式配置恢復時,CPU利用率均為110%左右,配置恢復完成后,CPU恢復正常,內存利用率均為20%左右。由上述數據可見,CSS在精準恢復配置數據的同時,大大縮短了恢復數據所用的時間。
4 總結與展望
介紹了一種可實時存儲網絡配置數據的方法CSS,設計了該方法的實現方式,并對其重要功能做了較為詳細的描述。目前,網絡配置數據[11]的數量激增,各大通信設備制造商都在尋求快速有效實時的保存與恢復網絡配置數據的方法。CSS的實時存儲和精準恢復的特點可以滿足各大通信制造商的需求。達到理論研究和實際設計的結合,也是未來的發展方向。
參考文獻
[1] 黨燕.計算機網絡中數據通訊及交換技術淺析[J].長江大學學報:自然科學版,2010,7(1):248-249.
[2]楊丹,李桃迎,陳燕.XML與關系數據庫之間的轉換[J].教育教學論壇,2017,(18):200-201.
[3]張怡天.XML在信息系統中的應用[J].電腦編程技巧與維護,2017,(04):66+85.
[4]辛學超.網絡資源管理系統的設計與開發[D].濟南:山東大學,2016.
[5]謝希仁.計算機網絡[M].北京:電子工業出版社,2008.
[6]王睿.論計算機網絡管理系統應用現狀及發展前景[J].通訊世界,2015,(06):36.
[7]高迎輝,萬延芝.計算機網絡故障的識別及解決方法[J].電子技術與軟件工程,2014,(21):189.
[8]藍波,楊琴,潘淵穎.基于SNMP的MIB庫訪問分析及接口的實現[J].北京石油化工學院學報,2003,11 (3):18-22.
[9] 蔡國森.基于SNMP的MIB庫訪問實現的研究[J].計算機與信息技術,2010,(2):25-29.
[10]田飛.簡單網絡管理協議技術研究[J].電腦迷,2017,(O1):123.
[11]張立新.網絡配置數據的文檔化在網絡管理中的應用[J].現代計算機,2017,(23):63-67.