馮健飛 寧玉文 靳豪杰 張軍超
摘要:空軍軍醫(yī)大學(xué)在實行校園網(wǎng)扁平化改造后形成了核心網(wǎng)絡(luò)簡化、接入網(wǎng)絡(luò)規(guī)模擴大的結(jié)構(gòu)特征,傳統(tǒng)的運維工具暴露出功能針對性弱和自動化程度低的缺陷。針對接入層局域網(wǎng)內(nèi)設(shè)備數(shù)量多、品牌型號混雜的問題,設(shè)計實現(xiàn)了扁平化結(jié)構(gòu)下的網(wǎng)絡(luò)管理系統(tǒng)。在解決異構(gòu)設(shè)備兼容問題的同時,實現(xiàn)了設(shè)備的自動發(fā)現(xiàn)、信息采集、拓撲分析、狀態(tài)監(jiān)控、異常告警等功能,有效提高了接入網(wǎng)絡(luò)運維管理效率。
關(guān)鍵詞:網(wǎng)絡(luò)管理;運維;監(jiān)控;局域網(wǎng);拓撲分析
中圖分類號:TP393? ? ? 文獻標志碼:A
文章編號:1009-3044(2019)22-0033-04
開放科學(xué)(資源服務(wù))標識碼(OSID):
Design and Implementation of Network Management System under Flat Network Structure
FENG Jian-fei, NING Yu-wen, JIN Hao-jie, ZHANG Jun-chao
(Air Force Medical University of PLA, Xi'an 710032, China)
Abstract: After the implementation of the flat transformation, the campus network in the Air Force Military University formed a structural feature of simplified core network and expanded access network scale. The traditional operation and maintenance tools exposed their defects of weak function and low automation. Aiming at the large number of devices in the access network and the various brands and types, the network management system under the flat structure is designed and implemented. While the compatibility of the various devices is solved, automatic discovery, information collection, topology analysis, status monitoring, and abnormal alarms of devices are implemented, which effectively improves the efficiency of access network operation and maintenance management.
Key words: network management; operation and maintenance; Monitor; LAN; topological analysis
1 背景
為了實現(xiàn)用戶流量隔離、網(wǎng)絡(luò)集中管理、策略精細化控制等目標,各高校都陸續(xù)開展了校園網(wǎng)絡(luò)扁平化改造[1-2]。我校于2016年實施了改造,改造后核心網(wǎng)絡(luò)結(jié)構(gòu)簡化,但接入網(wǎng)絡(luò)規(guī)模擴大,且每個子網(wǎng)內(nèi)都存在多品牌、型號設(shè)備并存的情況。面對新的網(wǎng)絡(luò)結(jié)構(gòu)和運維需求,現(xiàn)有的網(wǎng)絡(luò)管理系統(tǒng)暴露出操作復(fù)雜、功能針對性差、設(shè)備兼容性差等問題[3],針對這一現(xiàn)狀筆者結(jié)合空軍軍醫(yī)大學(xué)校園網(wǎng)實際,設(shè)計并開發(fā)了扁平化結(jié)構(gòu)下的網(wǎng)絡(luò)管理系統(tǒng),有效解決多品牌設(shè)備兼容問題,同時簡化了操作難度,實現(xiàn)了網(wǎng)絡(luò)設(shè)備在發(fā)現(xiàn)、信息采集、狀態(tài)監(jiān)控、拓撲生成多維度的自動化管理。
2 技術(shù)原理
2.1 簡單網(wǎng)絡(luò)管理協(xié)議SNMP
SNMP為不同廠家、不同種類的設(shè)備定義了統(tǒng)一的標準,使得管理系統(tǒng)可以使用統(tǒng)一的方法監(jiān)測和管理連接到網(wǎng)絡(luò)上的不同設(shè)備?;赟NMP的網(wǎng)絡(luò)管理模型由管理信息庫(MIB)、管理代理、管理協(xié)議、管理系統(tǒng)四部分組成。MIB定義了被管理設(shè)備的一系列屬性,格式為(屬性名,屬性值)二元鍵值對,屬性名以樹狀結(jié)構(gòu)的對象標識符(OID)表示,主要包括單獨節(jié)點和表節(jié)點,分別用以表示一個獨立的值和一組連續(xù)的值。除了RFC標準規(guī)定的通用MIB外,各廠商還會設(shè)置許多私有MIB作為擴充。每臺被管理設(shè)備上運行著管理代理進程,負責(zé)維護本機的MIB,同時接收管理系統(tǒng)的請求并返回相關(guān)信息,或者主動向管理系統(tǒng)上報信息。管理協(xié)議定義了管理系統(tǒng)與被管理設(shè)備間的通信格式和方法,SNMP協(xié)議即為目前廣泛使用的管理協(xié)議,SNMP協(xié)議使用團體名稱作為簡單的身份驗證手段,即提供了正確團體名的管理系統(tǒng)才能訪問設(shè)備信息。管理系統(tǒng)是人機交互的接口,幫助網(wǎng)絡(luò)管理員進行運維管理工作。[3-5]
2.2 Django框架
B/S架構(gòu)即瀏覽器/服務(wù)器架構(gòu),是指通過瀏覽器實現(xiàn)用戶界面,將主要業(yè)務(wù)邏輯實現(xiàn)在服務(wù)器端的一種系統(tǒng)結(jié)構(gòu),因其具有客戶端免安裝、開發(fā)周期短、維護性強等優(yōu)點,成了主流應(yīng)用開發(fā)模式。Django是Python的一個優(yōu)秀的開源Web開發(fā)框架,符合MVC的軟件設(shè)計模式,在Web開發(fā)方面具有簡潔、清晰、高效、安全的優(yōu)點,是目前主流B/S應(yīng)用開發(fā)框架之一。[6]
3 系統(tǒng)設(shè)計與實現(xiàn)
3.1 校園網(wǎng)運維需求
我校網(wǎng)絡(luò)進行扁平化改造后將所有用戶網(wǎng)關(guān)上移至BRAS設(shè)備,接入網(wǎng)絡(luò)根據(jù)用戶屬性及所屬地理區(qū)域共劃分為七個子網(wǎng),各個子網(wǎng)設(shè)置獨立管理VLAN進行設(shè)備管理,管理VLAN的網(wǎng)關(guān)設(shè)置在各區(qū)域的最上層匯聚設(shè)備。每個子網(wǎng)的設(shè)備數(shù)量均在70臺以上,最多的本科生區(qū)達230臺,接入和匯聚設(shè)備共計620余臺,涵蓋華為、銳捷、思科等主流品牌,且各個子網(wǎng)均存在多種品牌型號設(shè)備混合使用的情況。
由于接入網(wǎng)絡(luò)相對核心網(wǎng)絡(luò)具有設(shè)備數(shù)量多、拓撲復(fù)雜、分布面廣、故障率高的特點,因此日常運維工作量主要集中在接入網(wǎng)絡(luò)。針對接入網(wǎng)絡(luò)的管理系統(tǒng)重點要關(guān)注四個方面內(nèi)容:一是兼容各品牌、型號設(shè)備,要能對所有設(shè)備提供無差異的信息采集和在線監(jiān)管功能。二是簡化操作提高效率,由于接入網(wǎng)絡(luò)設(shè)備數(shù)量較多,應(yīng)避免人工錄入,實現(xiàn)自動化的設(shè)備信息采集、狀態(tài)監(jiān)控、異常告警。三是拓撲分析,應(yīng)當(dāng)自動分析繪制子網(wǎng)拓撲并精確到互聯(lián)端口,幫助運維人員快速定位設(shè)備。四是提高靈活性,對于主要的使用參數(shù)提供自定義設(shè)置功能,有效應(yīng)對不同場景需求。
3.2 網(wǎng)絡(luò)管理系統(tǒng)設(shè)計
立足上述需求,系統(tǒng)進行了多個方面的針對性設(shè)計,首先是增加了現(xiàn)網(wǎng)設(shè)備中使用的大量MIB庫,特別是私有MIB庫,從而可以準確全面地獲取設(shè)備信息,同時還提供根據(jù)MIB對象標識符手動獲取設(shè)備信息的功能,進一步彌補可能的內(nèi)置MIB庫不全的問題。其次是可以通過自動網(wǎng)絡(luò)掃描方式獲取設(shè)備信息并分析拓撲結(jié)構(gòu),對于每一臺設(shè)備都記錄(本機IP,上聯(lián)接口,目的IP,目的接口)的互聯(lián)關(guān)系。最后還針對用戶交互和使用體驗進行了優(yōu)化,提供了豐富的信息檢索和系統(tǒng)自定義功能,并針對不同操作提供了列表、圖形等多種信息展示方式。
系統(tǒng)功能主要包括:1)登入登出功能。2)網(wǎng)絡(luò)掃描功能:根據(jù)網(wǎng)絡(luò)地址、子網(wǎng)掩碼、網(wǎng)關(guān)地址、SNMPv2協(xié)議團體號等信息,對網(wǎng)絡(luò)進行自動掃描,發(fā)現(xiàn)在網(wǎng)設(shè)備并采集信息。3)信息查看查詢:用戶可以通過列表頁查看設(shè)備基礎(chǔ)信息,通過詳情頁查看設(shè)備具體信息,通過監(jiān)控頁查看設(shè)備運行狀態(tài),通過拓撲圖查看設(shè)備互聯(lián)關(guān)系;同時支持通過IP地址、MAC地址等信息查詢設(shè)備。4)SNMP掃描工具:支持用戶根據(jù)指定的MIB對象標識符獲取對應(yīng)信息。5)系統(tǒng)設(shè)置:系統(tǒng)支持自定義連通性測試報文數(shù)量和超時時間、連通性刷新周期、設(shè)備信息更新時間等,以應(yīng)對不同的應(yīng)用場景,同時提供設(shè)備信息的導(dǎo)出功能。
系統(tǒng)采用B/S架構(gòu),基于Python3.6.4和Django2.0 Web框架進行開發(fā),數(shù)據(jù)庫為MySQL,前端綜合運用了jQuery、BootStrap、AJAX等技術(shù)。系統(tǒng)共包含設(shè)備發(fā)現(xiàn)、數(shù)據(jù)處理、對外展示、數(shù)據(jù)更新、用戶管理、系統(tǒng)設(shè)置和系統(tǒng)工具六部分,系統(tǒng)結(jié)構(gòu)如圖1所示。
3.3 功能模塊
3.3.1 獲取網(wǎng)絡(luò)設(shè)備基本信息
系統(tǒng)采用Python開源庫PySNMP,根據(jù)設(shè)備IP地址、端口號、團體名和MIB對象標識符獲取對應(yīng)設(shè)備信息。PySNMP功能函數(shù)返回一個可迭代對象,對于獨立節(jié)點只調(diào)用一次next()方法即可獲取返回結(jié)果,對于表節(jié)點則需對迭代器進行遍歷。系統(tǒng)共采集三類信息:設(shè)備的基本信息,包括系統(tǒng)名稱、設(shè)備描述、軟硬件版本、序列號、設(shè)備位置、聯(lián)系人等;網(wǎng)絡(luò)信息,包括IP地址、MAC地址、上聯(lián)端口、目的IP、目的端口;運行狀態(tài)信息,包括:運行時間、CPU使用率、內(nèi)存使用率、內(nèi)存容量、CPU溫度,以及相關(guān)參數(shù)的報警閾值。這些信息同時也可以作為固定資產(chǎn)管理的重要支撐。為了加快掃描速度,在子網(wǎng)IP地址數(shù)量大于64個時會采四線程加速掃描,同時允許用戶自定義連通性測試報文數(shù)量和超時等待時間,進一步加快掃描速度。掃描流程如圖2。
3.3.2 拓撲分析
獲取局域網(wǎng)內(nèi)設(shè)備拓撲關(guān)系的方法主要有兩種:第一種是通過生成樹協(xié)議配合轉(zhuǎn)發(fā)表分析設(shè)備互聯(lián)關(guān)系[7],比較適合自動分析;第二種是根據(jù)設(shè)備ARP表和轉(zhuǎn)發(fā)表等信息進行綜合分析,轉(zhuǎn)發(fā)表中記錄了每個接口所連接的設(shè)備MAC地址,通過將MAC地址和設(shè)備進行對應(yīng)即可逐步分析出互聯(lián)關(guān)系,這種方式適合人工運維中小范圍分析網(wǎng)絡(luò)結(jié)構(gòu)。根據(jù)實際運維經(jīng)驗,由于不同廠商設(shè)備在生成樹協(xié)議實現(xiàn)方式上略有差別,導(dǎo)致在同一子網(wǎng)中不同品牌設(shè)備互聯(lián)時協(xié)議有時無法正常工作,甚至?xí)霈F(xiàn)因設(shè)備頻繁獲取鄰居信息而導(dǎo)致網(wǎng)絡(luò)擁塞,因此我校關(guān)閉了大多數(shù)設(shè)備的生成樹協(xié)議。針對這一現(xiàn)狀,筆者將傳統(tǒng)的人工運維分析方式進行了自動化實現(xiàn)。
具體方法是,根據(jù)輸入的網(wǎng)絡(luò)地址和網(wǎng)關(guān)地址對整網(wǎng)段進行掃描,記錄每臺設(shè)備的ARP表和轉(zhuǎn)發(fā)表,ARP表中記錄了IP地址和MAC地址的對應(yīng)關(guān)系,轉(zhuǎn)發(fā)表中記錄了每個接口連接的設(shè)備MAC地址。首先根據(jù)ARP表確定子網(wǎng)內(nèi)IP地址和MAC地址的映射關(guān)系。然后依次分析每臺設(shè)備的轉(zhuǎn)發(fā)表,將表中的MAC地址替換為對應(yīng)的IP地址,沒有對應(yīng)IP地址的記錄項為用戶而地址非互聯(lián)設(shè)備地址,從表中刪除。至此確定了每個接口上所連接的設(shè)備IP地址,其中連接了網(wǎng)關(guān)的接口為設(shè)備上聯(lián)接口,其余接口所連接的設(shè)備包括直連和非直連兩類。遍歷每個接口的下聯(lián)IP,如果該IP也是當(dāng)前接口其他下聯(lián)設(shè)備的下聯(lián)IP,表示該設(shè)備為非直連關(guān)系,從表中刪除,最后剩余的即為直連設(shè)備IP。獲取互聯(lián)關(guān)系后在數(shù)據(jù)庫中記錄每臺設(shè)備的上聯(lián)接口、目的IP和目的接口信息。
由于局域網(wǎng)拓撲是以網(wǎng)關(guān)為根的樹狀拓撲,因此在拓撲顯示時采用了樹狀目錄顯示結(jié)構(gòu),可進行“展開”和“折疊”操作。進行顯示前,首先在后端將鄰接表方式存儲的樹形結(jié)構(gòu)轉(zhuǎn)換成列表結(jié)構(gòu)并傳遞至前端。具體方法是將每對鄰接關(guān)系記錄為(IP,DestIP,F(xiàn)lag)三元組形式,分別表示當(dāng)前IP、上聯(lián)設(shè)備IP(網(wǎng)關(guān)地址上聯(lián)IP為空)、是否已經(jīng)遍歷標志符,初始狀態(tài)只有網(wǎng)關(guān)的標志為True。將所有的三元組記錄封裝為列表EdgeList,然后從網(wǎng)關(guān)節(jié)點開始進行深度優(yōu)先遍歷,方法如下所示。返回結(jié)果列表后傳遞至前端,前端對列表進行順序遍歷轉(zhuǎn)換為樹形目錄顯示代碼即可。
[def DFS(Edgeslist, resultList): #resultList為返回列表
for edge in Edgeslist:
if (edge[2] == True or edge[1] != resultList [0][0]):
continue#如果已遍歷或者不是當(dāng)前設(shè)備下聯(lián)設(shè)備則繼續(xù)
else:
edge[2] = True#標記為已遍歷
son = [edge[0]]
resultList.append(son) #記錄當(dāng)前設(shè)備的下聯(lián)設(shè)備
DFS(Edgeslist, son)#深度優(yōu)先遍歷 ]
3.3.3 設(shè)備監(jiān)控
設(shè)備監(jiān)控主要是對設(shè)備的連通性和運行狀態(tài)進行監(jiān)測。系統(tǒng)周期性不斷測試設(shè)備在線情況,對于異常下線設(shè)備給出告警;對于在線設(shè)備記錄網(wǎng)絡(luò)往返延時,作為衡量網(wǎng)絡(luò)質(zhì)量的指標。系統(tǒng)同時監(jiān)測設(shè)備的溫度、CPU使用率、內(nèi)存使用率等主要參數(shù),超出閾值時立即進行告警。對于監(jiān)測周期可進行自定義設(shè)置以應(yīng)對不同的運維需求,默認情況下每30秒輪詢一次。除了設(shè)置監(jiān)測周期外,還可設(shè)置設(shè)備信息更新時間,這一功能是為了應(yīng)對網(wǎng)絡(luò)結(jié)構(gòu)調(diào)整造成信息大規(guī)模變化的情況,默認情況下每天1:00會將網(wǎng)絡(luò)重新進行掃描收集設(shè)備信息并繪制拓撲圖,管理員也可以通過手動重新掃描網(wǎng)絡(luò)或設(shè)置新的更新時間進行系統(tǒng)信息更新。
3.3.4 系統(tǒng)管理功能
系統(tǒng)管理部分提供了四大功能,一是提供了根據(jù)MIB庫手動獲取設(shè)備信息的功能,通過輸入設(shè)備IP地址、團體名、和對象標識符并選擇獨立節(jié)點或表節(jié)點即可獲取對應(yīng)信息。二是展示系統(tǒng)當(dāng)前存儲的所有子網(wǎng)信息,并可對子網(wǎng)進行刪除操作,刪除子網(wǎng)將同步刪除網(wǎng)內(nèi)所有設(shè)備和網(wǎng)絡(luò)拓撲信息,通過刪除某一子網(wǎng)并重新掃描可以實現(xiàn)子網(wǎng)信息的手動全量更新。三是提供了常用參數(shù)設(shè)置,包括檢測刷新周期、系統(tǒng)信息更新時間、連通性測試報文數(shù)量和超時時間等,另外還提供了SNMP協(xié)議端口設(shè)置功能,對于使用非默認SNMP協(xié)議端口的網(wǎng)絡(luò)可進行端口調(diào)整。四是提供了信息導(dǎo)出功能,可將當(dāng)前系統(tǒng)中存儲的設(shè)備信息以Excel文件格式導(dǎo)出。
4 系統(tǒng)使用
4.1 部署方法
4.1.1 交換機配置
交換機端只需進行SNMP協(xié)議的常用配置,包括SNMP協(xié)議版本號、設(shè)備地址、聯(lián)系人等,協(xié)議端口可采用默認的161端口,需要注意的是由于本系統(tǒng)以子網(wǎng)為單位進行設(shè)備信息獲取,因此同一網(wǎng)段內(nèi)的設(shè)備SNMP團體名需配置一致。
4.1.2 服務(wù)器部署
本系統(tǒng)適用于Django項目常用的各種部署方式,本文以Nginx+uWSGI部署方式為例進行說明,其中Nginx是Web服務(wù)器,uWSGI是Web服務(wù)器和Web框架的調(diào)用接口,服務(wù)器使用Centos7作為操作系統(tǒng)。
首先下載Python3進行編譯和安裝,然后使用pip3工具安裝Django和uWSGI。將工程文件夾復(fù)制到服務(wù)器“/home/admin/www”目錄下(自行確定即可),在工程目錄中新建系統(tǒng)配置文件,并在其中配置服務(wù)的IP地址、端口號、工程路徑等。系統(tǒng)采用MySQL數(shù)據(jù)庫,根據(jù)數(shù)據(jù)庫實際配置情況修改工程文件目錄下的settings.py配置文件,包括數(shù)據(jù)庫地址、用戶名、口令等。最后下載并編譯安裝Nginx,進入安裝目錄/usr/local/nginx,打開/conf目錄下的nginx.conf文件,在http標簽中加入以下內(nèi)容:
[server {
listen 8080; #外部訪問的端口
server_name www.netmngsys.com;
charset utf-8;
location / {
include uwsgi_params;? ? ? ? uwsgi_pass 127.0.0.1:8081; #將外部對8080的訪問轉(zhuǎn)發(fā)到內(nèi)部8081
}
location /static/ {
alias /home/admin/www/NegMngSys/static/; #項目靜態(tài)路徑設(shè)置
}
} ]
保存配置后使用命令“./nginx”啟動Ngix服務(wù),并進入工程目錄使用命令“uwsgi –x NetMngSys.xml”即可啟動系統(tǒng)。
4.2 使用方法及效果
系統(tǒng)登錄后的主界面分為菜單欄和操作界面,菜單欄集成了網(wǎng)絡(luò)掃描、設(shè)備列表、設(shè)備監(jiān)控、網(wǎng)絡(luò)拓撲、SNMP工具等功能,操作界面是每個功能的輸入以及結(jié)果輸出部分。“設(shè)備列表”展示了設(shè)備基本信息和運行狀態(tài)并提供查詢功能,點擊設(shè)備IP地址即可進入設(shè)備詳情頁,查看更加詳細的設(shè)備信息,包括設(shè)備基礎(chǔ)信息、網(wǎng)絡(luò)信息、運行狀態(tài)、更新時間等,如圖3。
“設(shè)備監(jiān)控”顯示了設(shè)備的IP地址,設(shè)備名和網(wǎng)絡(luò)時延,如圖4。對異常設(shè)備會通過紅色顯示進行告警。
“網(wǎng)絡(luò)拓撲”以樹形目錄方式展示了每個網(wǎng)段內(nèi)的設(shè)備互聯(lián)關(guān)系,如圖5(部分截圖)。
5 總結(jié)
本系統(tǒng)針對我校進行大二層網(wǎng)絡(luò)改造后新的運維需求進行開發(fā)設(shè)計,測試后使用效果良好,實現(xiàn)了異構(gòu)品牌型號的網(wǎng)絡(luò)設(shè)備自動發(fā)現(xiàn)、實時監(jiān)測、拓撲分析等功能,有效提高了大規(guī)模接入局域網(wǎng)的日常運維效率。系統(tǒng)目前只支持SNMPv2版本協(xié)議,后續(xù)可進行v3版本協(xié)議擴充,并進一步增加系統(tǒng)審計等功能。
參考文獻:
[1] 尹憶民, 郝宇紅, 孫浩志, 等. 建設(shè)扁平化新型校園網(wǎng)絡(luò)[J]. 華東師范大學(xué)學(xué)報: 自然科學(xué)版, 2015(B03): 146-151.
[2] 吳乃忠. 基于扁平化架構(gòu)的下一代高校校園網(wǎng)的建設(shè)研究[J]. 電子世界, 2012(18): 28-29.
[3] 侯天雄, 馬迅飛, 張進鐸, 等. 網(wǎng)絡(luò)監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)[J]. 計算機時代, 2016(1): 25-28.
[4] 樂寧莉. 基于SNMP網(wǎng)絡(luò)監(jiān)控的應(yīng)用研究[J]. 福建商學(xué)院學(xué)報, 2011(5): 99-108.
[5] 趙婕. 基于SNMP協(xié)議的分布式計算機網(wǎng)絡(luò)監(jiān)控系統(tǒng)設(shè)計[J]. 自動化與儀器儀表, 2016(6): 124-125.
[6] 陽祝. 基于Django框架的設(shè)備管理系統(tǒng)的設(shè)計與實現(xiàn)[J]. 電腦知識與技術(shù), 2013(12X): 7960-7961.
[7] 崔婧昱, 董小國. 交換式局域網(wǎng)物理拓撲發(fā)現(xiàn)系統(tǒng)的研究與設(shè)計[J]. 現(xiàn)代電子技術(shù), 2008, 31(18): 97-99.
【通聯(lián)編輯:謝媛媛】