国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于模板的網(wǎng)絡(luò)設(shè)備配置系統(tǒng)

2016-01-12 11:45:00牟億趙欽馬嚴(yán)
軟件 2015年11期
關(guān)鍵詞:設(shè)計與實現(xiàn)軟件工程模板

牟億++趙欽++馬嚴(yán)

摘要:隨著互聯(lián)網(wǎng)的逐步發(fā)展,網(wǎng)絡(luò)的復(fù)雜性在不斷的增加,系統(tǒng)的異構(gòu)性變得越來越普遍,從而使得網(wǎng)絡(luò)管理變的越來越困難。由于使用不同的設(shè)備,需要工作人員手動配置,這種方式不僅效率低,而且容易出現(xiàn)人為操作失誤。研究一種統(tǒng)一的網(wǎng)絡(luò)設(shè)備的配置技術(shù)對于網(wǎng)絡(luò)管理技術(shù)的發(fā)展具有重要意義?;谀0宓呐渲孟到y(tǒng)將各種設(shè)備的數(shù)據(jù)進(jìn)行抽象存放于數(shù)據(jù)庫,將各種配置命令模板化,將數(shù)據(jù)庫中的數(shù)據(jù)和對應(yīng)的模板進(jìn)行結(jié)合,通過Pexpect編程接口與設(shè)備進(jìn)行交互,就能完成相應(yīng)設(shè)備的配置,有極大的擴展性。同時探索上層接口,實現(xiàn)多種方式的數(shù)據(jù)導(dǎo)入??赏瓿删W(wǎng)絡(luò)拓?fù)浼熬W(wǎng)絡(luò)設(shè)備的快速構(gòu)建,提高工作人員及資源的使用效率。

關(guān)鍵詞:軟件工程;網(wǎng)絡(luò)設(shè)備配置;設(shè)計與實現(xiàn);模板;Pexpect

中圖分類號:TP311.1

文獻(xiàn)標(biāo)識碼:A

DOI:10.3969/j.issn.1003-6970.2015.11.014

0 引言

在目前網(wǎng)絡(luò)系統(tǒng)的異構(gòu)性變得越來越普遍的情況下,傳統(tǒng)的網(wǎng)絡(luò)控制方式已經(jīng)不能滿足對網(wǎng)絡(luò)多層次控制管理的要求。網(wǎng)管人員希望能夠通過一種統(tǒng)一的方式對設(shè)備進(jìn)行集中管理,不再關(guān)注不同廠商以及不同設(shè)備之間的差異。

在目前主流的配置技術(shù)中,SNMP基于TCP/IP協(xié)議工作,采用UDP進(jìn)行交互,需要應(yīng)用層本身進(jìn)行差錯控制來保證可靠性,安全機制簡單,無法在可靠性和擴展性上滿足現(xiàn)有的網(wǎng)絡(luò)管理需求,大多是將其用于網(wǎng)絡(luò)中設(shè)備的發(fā)現(xiàn)及其信息的采集,很少用于實際配置。CLI(命令行管理方式)是目前在網(wǎng)絡(luò)管理中最主要使用的方。但是命令行方式主要采用人工進(jìn)行操作,不同設(shè)備的命令受制于生產(chǎn)廠商,容錯性差,對人員專業(yè)技能要求較高。WEB服務(wù)方式是最近廠商廣泛采用的一種配置方式,基于圖形化界面,界面易懂,操作簡單,后端多通過將頁面收集的配置信息轉(zhuǎn)化成CLI命令對相應(yīng)設(shè)備進(jìn)行配置。但這種方式同樣存在支持設(shè)備單一,主要由設(shè)備廠商提供,沒有擴展性,無法標(biāo)準(zhǔn)化,不支持設(shè)備信息模型的構(gòu)建和白定義。

本文基于廣泛使用的CLI方式,將復(fù)雜繁瑣的配置命令模板化,借助于Python良好的操作數(shù)據(jù)庫和模板表的能力,設(shè)計并實現(xiàn)了一套具有良好擴展性的網(wǎng)絡(luò)設(shè)備配置系統(tǒng)。

1 網(wǎng)絡(luò)配置系統(tǒng)核心問題分析

為了改善目前網(wǎng)絡(luò)管理面臨的困境,業(yè)界也在不斷發(fā)展新技術(shù)和改進(jìn)現(xiàn)有技術(shù),SDN(軟件定義網(wǎng)絡(luò))正蓬勃發(fā)展,但是受限于網(wǎng)絡(luò)環(huán)境中已經(jīng)存在的龐大的設(shè)備數(shù)量,這些設(shè)備不能通過簡單的系統(tǒng)升級來支持新技術(shù)和新功能,而且網(wǎng)絡(luò)設(shè)備的生命周期長,在可預(yù)見的未來更新?lián)Q代的頻率低。要改善目前的困境,需要探索一種通用的網(wǎng)絡(luò)配置技術(shù),必須對現(xiàn)有的方式進(jìn)行深度挖掘和創(chuàng)新來解決以下的問題:

1)承載協(xié)議的可靠性.保證配置數(shù)據(jù)傳輸?shù)母呖煽啃浴?/p>

2)互操作能力的增強.支持網(wǎng)管系統(tǒng)和被管設(shè)備之間進(jìn)行互操作。

3)配置數(shù)據(jù)模型自描述能力增強。能準(zhǔn)確地描述日益復(fù)雜的網(wǎng)管數(shù)據(jù)。

4)編程實現(xiàn)能力強,易于支持網(wǎng)管系統(tǒng)。

目前,市面上存在部分軟件能夠提供類似的對于網(wǎng)絡(luò)設(shè)備的配置功能,但其更多的是專注于同一類型或者同一系列的設(shè)備,且多由設(shè)備廠商提供,相比較傳統(tǒng)的手工操作,一般不提供培訓(xùn)等,具有一定的隱蔽性。使得現(xiàn)有的軟件或協(xié)議都無法從根本上全部滿足這些問題。針對這些問題,需要對網(wǎng)絡(luò)設(shè)備和相應(yīng)的配置命令進(jìn)行合理的抽象,使之能夠覆蓋到多種設(shè)備,降低系統(tǒng)與需求間的耦合度。設(shè)計良好的上層接口,使得數(shù)據(jù)的導(dǎo)入導(dǎo)出方便快捷。合理的配置方式和傳輸協(xié)議,能夠可靠的實現(xiàn)配置信息的下發(fā)和反饋以及故障的發(fā)現(xiàn)和處理。

2 系統(tǒng)分析與設(shè)計

2.1 系統(tǒng)架構(gòu)

系統(tǒng)分為三個功能模塊,分別為數(shù)據(jù)庫模塊,任務(wù)調(diào)度模塊和配置模塊,所有模塊均可以部署在單臺或者多臺服務(wù)器上,其結(jié)構(gòu)關(guān)系如圖1所示:

其中數(shù)據(jù)庫模塊負(fù)責(zé)配置數(shù)據(jù)和任務(wù)信息的存儲,是配置系統(tǒng)提供給用戶的接口;任務(wù)調(diào)度模塊負(fù)責(zé)對任務(wù)信息的輪詢,判斷所需調(diào)用的腳本,根據(jù)配置的需求,將任務(wù)下發(fā)給對應(yīng)配置模塊;配置模塊由腳本模塊和模板模塊組成,兩個模塊負(fù)責(zé)將配置信息組合成配置命令下發(fā)到各個網(wǎng)絡(luò)設(shè)備,完成網(wǎng)絡(luò)的組建。

2.2 系統(tǒng)工作流程

網(wǎng)絡(luò)設(shè)備配置系統(tǒng)的工作流程分為四步,其具體過程如圖2所示:

其中第一步,用戶向數(shù)據(jù)庫中存入相應(yīng)的配置數(shù)據(jù);第二步,任務(wù)調(diào)度程序定期輪詢數(shù)據(jù)庫,當(dāng)發(fā)現(xiàn)有新任務(wù)時,提取相應(yīng)任務(wù),如配置某型號路由器或者交換機等;第三步,將任務(wù)下發(fā)給相應(yīng)的任務(wù)執(zhí)行單元;第四步,任務(wù)執(zhí)行單元收到調(diào)度請求后,從數(shù)據(jù)庫獲取相應(yīng)的數(shù)據(jù),分析數(shù)據(jù),將數(shù)據(jù)和對應(yīng)模板進(jìn)行結(jié)合,通過Pexpect腳本的方式下發(fā)組合好的配置命令,同時收集配置過程中的反饋信息。當(dāng)執(zhí)行完所有任務(wù)后,對應(yīng)的任務(wù)執(zhí)行單元修改任務(wù)狀態(tài)為完成。

3 系統(tǒng)實現(xiàn)與部署

網(wǎng)絡(luò)設(shè)備配置系統(tǒng)整體基于Python實現(xiàn),數(shù)據(jù)庫采用MYSQL,模板存儲方式使用EXCEL,所有模塊運行在Ubuntu14.04版本系統(tǒng)。

3.1 數(shù)據(jù)庫實現(xiàn)

數(shù)據(jù)庫是配置系統(tǒng)的核心部分之一,不僅是配置任務(wù)處理的起點也是與上層程序交互的樞紐。數(shù)據(jù)庫表主要存放的是抽象后的網(wǎng)絡(luò)設(shè)備信息,是對網(wǎng)絡(luò)設(shè)備的建模。根據(jù)不同的網(wǎng)絡(luò)復(fù)雜程度,可以不斷的擴充表項,使其能夠支持更多的設(shè)備,具有良好的擴展性。對于路由器來說,端口信息會抽象出如表1所示的數(shù)據(jù)庫表:

其中Port_speed代表接口的速率。Port_ip_mask代表接口地址和掩碼等。通過抽象,不同設(shè)備商生產(chǎn)的路由器的接口信息都可以存放進(jìn)這一張表里,通過Router_id來確定該端口歸屬于哪一臺路由器。數(shù)據(jù)庫表項對應(yīng)相應(yīng)的端口屬性。對于上層程序而言,只需要對數(shù)據(jù)庫進(jìn)行支持即可完成對配置系統(tǒng)的適配。

3.2 任務(wù)調(diào)度模塊實現(xiàn)

任務(wù)調(diào)度模塊基于Gearman實現(xiàn),Gearman是一個應(yīng)用于分布式環(huán)境下的任務(wù)分派程序。在Gearman框架下,提供了多語言的接口,不用擔(dān)心Client或者Worker是否是同一種語言,并且可以將任務(wù)分發(fā)到不同的機器當(dāng)中,可以實現(xiàn)系統(tǒng)的負(fù)載均衡。Client可以通過同步或異步的方式向Job Server提交工作任務(wù),實現(xiàn)任務(wù)的定時執(zhí)行,能夠在網(wǎng)絡(luò)設(shè)備使用率較低的時候完成配置任務(wù)。Job Server負(fù)責(zé)將該任務(wù)分派給注冊了該任務(wù)的后臺Worker執(zhí)行后,將執(zhí)行結(jié)果返回給Client,Client腳本修改數(shù)據(jù)庫中對應(yīng)任務(wù)的完成狀態(tài)。其具體流程如圖3所示:

其中第一步,向數(shù)據(jù)庫存入相應(yīng)的配置信息以后,會通過一個Client腳本文件向Job Server發(fā)起任務(wù);第二步,Job Server向調(diào)度服務(wù)器發(fā)送調(diào)度請求;第三步,調(diào)度服務(wù)器分析數(shù)據(jù),根據(jù)數(shù)據(jù)內(nèi)容或者配置服務(wù)器負(fù)載情況反饋給Server需要調(diào)用哪些Worker進(jìn)程;接下來Job Server調(diào)用相應(yīng)的配置腳本完成配置任務(wù)。

3.3 模板實現(xiàn)

模板基于EXCEL表的形式存在,存放的是抽象過后的配置命令,每張表對應(yīng)的是具有相同功能命令集的設(shè)備。根據(jù)廠商的不同分系列存儲,方便查詢和修改。每個EXCEL文件存放具有同一類操作系統(tǒng)的網(wǎng)絡(luò)設(shè)備的配置模板,由表名進(jìn)行區(qū)分。當(dāng)任務(wù)調(diào)度程序通過輪詢發(fā)現(xiàn)有新任務(wù)進(jìn)入隊列,分析任務(wù)信息,判斷設(shè)備所屬廠商和類型,然后調(diào)用對應(yīng)的腳本,腳本讀取數(shù)據(jù)庫和模板信息,將數(shù)據(jù)庫中的對應(yīng)項數(shù)據(jù)替換模板命令集中的通配符即可完成配置命令的組合。CISCO路由器配置端口地址抽象出的命令如表2所示:

其中$name、$ip、$mask對應(yīng)數(shù)據(jù)庫表項的name、ip、mask項。以此類推,所有CLI方式能夠進(jìn)行的功能配置都可以通過模板來定義,需要擴展時只需要對數(shù)據(jù)庫表項和模板命令集做相應(yīng)的擴展或者修改,同時在腳本文件中將命令集中的通配符與數(shù)據(jù)庫表項對應(yīng)。

3.4 配置模塊實現(xiàn)

目前,自動化工具最流行的編程語言是Python,通過Python實現(xiàn)的網(wǎng)管腳本既可以確保可預(yù)測的結(jié)果,又可以充分的復(fù)用代碼。同時Python能夠?qū)崿F(xiàn)良好的數(shù)據(jù)庫和EXCEL模板操作。Pecpect是EXPECT腳本語言的Python實現(xiàn)包,通過類似于EXPECT這種基于TCL的程序,能夠通過SSH連接來與服務(wù)器或者網(wǎng)絡(luò)設(shè)備實現(xiàn)類似于人機交互的操作方式。模擬人工手動操作,實現(xiàn)復(fù)雜的可重復(fù)的任務(wù)。SSH協(xié)議是目前較為可靠的傳輸協(xié)議,利用SSH協(xié)議可以有效的防止配置過程中的信息泄漏,適用于多種平臺,幾乎得到所有網(wǎng)絡(luò)設(shè)備的支持,能夠保證安全的進(jìn)行數(shù)據(jù)交換。配置模塊主要由三部分組成,其流程如圖4所示:

其中1.響應(yīng)腳本作為Gearman注冊的Worker,響應(yīng)服務(wù)器調(diào)度,根據(jù)調(diào)度信息,查詢數(shù)據(jù)庫,判斷需要使用的模板,調(diào)用命令組合腳本;2.命令組合腳本根據(jù)響應(yīng)腳本傳遞的模板信息,讀取相應(yīng)的模板,遍歷模板,通過通配符的名字查詢對應(yīng)的數(shù)據(jù)表項,有值的存儲,沒有的跳過,將配置命令和期望回復(fù)分別存為兩個文件,調(diào)用配置下發(fā)腳本;3.配置下發(fā)程序調(diào)用Pexpect提供的API,與被管設(shè)備建立連接,讀取存儲的配置命令,通過Pexpect提供的send和expect命令分條下發(fā)配置命令,并且對被管設(shè)備的反饋進(jìn)行對應(yīng)的匹配,相符則繼續(xù)進(jìn)行配置下發(fā),若不符合,則調(diào)用錯誤處理機制,回滾到上次保存的系統(tǒng)配置。

4 系統(tǒng)測試

4.1 系統(tǒng)對核心問題滿足分析

在上文中,提到了網(wǎng)管系統(tǒng)需要滿足的4個核心問題,我們來對比系統(tǒng)對四大核心問題的滿足情況:

1)承載協(xié)議的可靠性。SSH協(xié)議面向連接,是目前最為可靠的傳輸方式之一。通過SSH協(xié)議,不僅可以對數(shù)據(jù)進(jìn)行加密,解決傳輸過程中的信息泄漏問題或者“中間人”攻擊問題,還能夠有效的防止DNS欺騙和IP欺騙問題,額外的,通過SSH方式傳輸數(shù)據(jù),會對數(shù)據(jù)進(jìn)行壓縮,加快傳輸數(shù)據(jù)。

2)與網(wǎng)管設(shè)備之間的互操作問題。通過Python實現(xiàn)的類似于人機交互的功能,可以在模板中定義不同期望返回信息,當(dāng)不滿足時調(diào)用錯誤處理機制??梢造`活的實現(xiàn)與被管設(shè)備的互動。

3)配置數(shù)據(jù)的自描述能力。配置腳本主要基于模板來實現(xiàn),要描述復(fù)雜的配置任務(wù)時,都可以拆分成不同的配置命令,在數(shù)據(jù)庫中創(chuàng)建對應(yīng)的數(shù)據(jù)項,可以描述任意人工操作能完成的配置任務(wù),擴展性和適應(yīng)性強。

4)編程能力強。系統(tǒng)基于Python語言實習(xí),Python語言簡單易懂,能通過較少的代碼實現(xiàn)復(fù)雜的功能,對數(shù)據(jù)庫和模板支持良好

綜上所訴,可見系統(tǒng)能夠很好的滿足網(wǎng)管配置軟件的核心需求,并且采用的技術(shù)都是z前流行的,得到廣泛使用和支持的技術(shù),能實現(xiàn)對大多數(shù)設(shè)備的常用配置支持,另外只需要在模板方面狠下功夫,就能擴展很多高階的配置功能,滿足網(wǎng)絡(luò)管理更深層次的需求。

4.2 系統(tǒng)測試

原型系統(tǒng)由3臺路由器,2臺HTPC搭建的Openv Switch和若干虛擬機組成。受限于實驗設(shè)備,路由器選用CISCO的C7200。其邏輯拓?fù)淙鐖D5所示:

其中,為了完成網(wǎng)絡(luò)環(huán)境的構(gòu)建,需要在C7200上完成端口地址配置,DHCP協(xié)議啟用和配置,啟用OSPF協(xié)議實現(xiàn)路由器間的通信。OVS為純二層交換機,下面的虛擬機通過路由器的DHCP協(xié)議獲得分配的地址,完成網(wǎng)絡(luò)的構(gòu)建。Routerl和OVS間采用20.0.0.0/25網(wǎng)段,Routerl和Router2之間使用30.0.0.0/24網(wǎng)段,Router2和Router3之間使用40.0.0.0/24網(wǎng)段,Router3和OVS之間使用50.0.0.0/24網(wǎng)段。在Routerl和3上啟用DHCP服務(wù),分配對應(yīng)網(wǎng)段的地址。

如圖6所示,是Routerl的配置結(jié)果截圖,Routerl已經(jīng)與Router3建立了連接,并且DHCP已經(jīng)給VM1分配了20.0.1.4/24的地址,網(wǎng)絡(luò)已經(jīng)初步構(gòu)建完成。

由此,可以發(fā)現(xiàn)系統(tǒng)有實際運行的能力,并且能夠?qū)崿F(xiàn)復(fù)雜的繁瑣的配置任務(wù),通過對不同設(shè)備手工配置命令的深挖,能夠不斷擴展系統(tǒng)的使用范圍,完成復(fù)雜的網(wǎng)絡(luò)環(huán)境的構(gòu)建。

5 結(jié)束語

基于模板的網(wǎng)絡(luò)設(shè)備配置系統(tǒng)為網(wǎng)管工具的發(fā)展提供了一種思路,目前網(wǎng)絡(luò)環(huán)境越來越異構(gòu)化,但是針對同一操作系統(tǒng)的網(wǎng)絡(luò)設(shè)備來說,手工配置命令總是相同或者有極少的差別,而差別也總是體現(xiàn)在對一些功能的支持而不是命令集的改變,基于模板的方式能夠極大的減輕網(wǎng)管人員學(xué)習(xí)的負(fù)擔(dān)和成本。另外,針對目前飛速發(fā)展的支持NETCONF和OpenFlow的設(shè)備,NETCONF協(xié)議沒有定義內(nèi)容層,在標(biāo)準(zhǔn)化以后也能夠通過模板的方式進(jìn)行配置,然后通過一些開源軟件例如Libnetconf程序完成配置后XML文檔的下發(fā);對于OpenFlow交換設(shè)備,主要是流表的下發(fā),也能夠通過模板化的方式實現(xiàn),集成到配置系統(tǒng)中。隨著研究的不斷深入,不斷完善功能集和設(shè)備的擴充,系統(tǒng)具有相當(dāng)?shù)陌l(fā)展?jié)摿Α?

猜你喜歡
設(shè)計與實現(xiàn)軟件工程模板
鋁模板在高層建筑施工中的應(yīng)用
鋁模板在高層建筑施工中的應(yīng)用
校園電商平臺的設(shè)計與實現(xiàn)
中國市場(2016年41期)2016-11-28 06:09:30
高校文化建設(shè)中視覺識別系統(tǒng)的設(shè)計和實現(xiàn)
軟件開發(fā)信息管理系統(tǒng)的設(shè)計與實現(xiàn)
依托工作室的軟件工程實踐教學(xué)研究
科研院所科研信息化管理系統(tǒng)的設(shè)計與應(yīng)用
基于工程教育認(rèn)證的《軟件工程》課程教學(xué)質(zhì)量建設(shè)研究 
關(guān)于提高軟件工程實踐教學(xué)質(zhì)量的幾點思考
關(guān)于如何創(chuàng)新和完善計算機軟件工程管理的探討
织金县| 万山特区| 海安县| 额尔古纳市| 剑阁县| 南汇区| 响水县| 崇仁县| 苏尼特左旗| 普兰店市| 铜川市| 奉节县| 正定县| 来宾市| 竹溪县| 吕梁市| 大竹县| 宁陕县| 平邑县| 贡山| 宣城市| 辽宁省| 建昌县| 淮阳县| 会东县| 永州市| 长葛市| 璧山县| 福建省| 山阴县| 共和县| 高州市| 望奎县| 宝鸡市| 登封市| 牡丹江市| 中方县| 隆德县| 和平区| 孝义市| 永济市|