• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

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

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

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

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

      中圖分類號(hào):TP311.1

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

      DOI:10.3969/j.issn.1003-6970.2015.11.014

      0 引言

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

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

      本文基于廣泛使用的CLI方式,將復(fù)雜繁瑣的配置命令模板化,借助于Python良好的操作數(shù)據(jù)庫(kù)和模板表的能力,設(shè)計(jì)并實(shí)現(xiàn)了一套具有良好擴(kuò)展性的網(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è)備不能通過簡(jiǎn)單的系統(tǒng)升級(jí)來(lái)支持新技術(shù)和新功能,而且網(wǎng)絡(luò)設(shè)備的生命周期長(zhǎng),在可預(yù)見的未來(lái)更新?lián)Q代的頻率低。要改善目前的困境,需要探索一種通用的網(wǎng)絡(luò)配置技術(shù),必須對(duì)現(xiàn)有的方式進(jìn)行深度挖掘和創(chuàng)新來(lái)解決以下的問題:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      3.3 模板實(shí)現(xiàn)

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

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

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

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

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

      4 系統(tǒng)測(cè)試

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

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

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

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

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

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

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

      4.2 系統(tǒng)測(cè)試

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

      其中,為了完成網(wǎng)絡(luò)環(huán)境的構(gòu)建,需要在C7200上完成端口地址配置,DHCP協(xié)議啟用和配置,啟用OSPF協(xié)議實(shí)現(xiàn)路由器間的通信。OVS為純二層交換機(jī),下面的虛擬機(jī)通過路由器的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ù),分配對(duì)應(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)有實(shí)際運(yùn)行的能力,并且能夠?qū)崿F(xiàn)復(fù)雜的繁瑣的配置任務(wù),通過對(duì)不同設(shè)備手工配置命令的深挖,能夠不斷擴(kuò)展系統(tǒng)的使用范圍,完成復(fù)雜的網(wǎng)絡(luò)環(huán)境的構(gòu)建。

      5 結(jié)束語(yǔ)

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

      猜你喜歡
      設(shè)計(jì)與實(shí)現(xiàn)軟件工程模板
      鋁模板在高層建筑施工中的應(yīng)用
      鋁模板在高層建筑施工中的應(yīng)用
      校園電商平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)
      高校文化建設(shè)中視覺識(shí)別系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)
      軟件開發(fā)信息管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
      依托工作室的軟件工程實(shí)踐教學(xué)研究
      科研院所科研信息化管理系統(tǒng)的設(shè)計(jì)與應(yīng)用
      基于工程教育認(rèn)證的《軟件工程》課程教學(xué)質(zhì)量建設(shè)研究 
      關(guān)于提高軟件工程實(shí)踐教學(xué)質(zhì)量的幾點(diǎn)思考
      關(guān)于如何創(chuàng)新和完善計(jì)算機(jī)軟件工程管理的探討
      内乡县| 布拖县| 阜城县| 同仁县| 蛟河市| 略阳县| 朝阳县| 资源县| 定襄县| 焦作市| 阳原县| 泗水县| 开江县| 宁都县| 桂平市| 仁怀市| 桐柏县| 新绛县| 芜湖市| 加查县| 滨海县| 大新县| 平遥县| 伽师县| 南靖县| 江西省| 巧家县| 龙里县| 连山| 凤阳县| 泰州市| 定陶县| 宜宾县| 汉沽区| 亚东县| 西贡区| 兴和县| 镇坪县| 南通市| 安义县| 都兰县|