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