隨著網際網路及其應用的飛速發展,新技術不斷湧現,高校校園網作為多種網絡接入的先行試點,為數位化校園、信息化系統建設提供了契機,在一定程度上引領了網絡的發展,提升自身競爭力和對外形象。這對校園網的通暢運行也提出了更高的要求。一旦出現斷網情況,及時定位故障點和故障類型對於恢復網絡暢通尤其重要。
傳統的網絡運維方式多為人工處置方式,判斷網絡設備問題多是依據個人經驗,存在工作效率低,不能準確定位故障,網絡恢復時間長等現象。隨著校園網絡的不斷發展、建設,網絡應用和結構日益複雜,傳統的網絡運維方式已經無法滿足運維的要求,亟需一款通用的、可查看末端設備網絡狀態、精確定位網絡故障並可遠程快速判斷故障原因的應用系統進行支撐。而將 Python 設計語言應用於網絡運維之中可以提高運維效率,降低運維成本。本系統的設計初衷即要求系統要具有跨平臺特徵、易實現、開發效率高和簡單部署,因此選擇了目前在最流行的Python語言作為實現工具。同時為了避免頻繁登錄交換機影響設備運行,通過SNMP協議來獲取交換機的各種參數數據。
Python作為使用率上升最快的面向對象程式語言,具有簡單易用、開發效率高、兼容性好、可擴展性好等特點,並且擁有功能強大、豐富的庫資源,廣泛應用於人工智慧、大數據、物聯網等新型領域。本系統採用成熟穩定的Python 2.7版本實現伺服器端程序代碼。為了便於部署和方便用戶使用,使用開源項目web.py作為系統的開發框架。web.py 內置了web伺服器,相當的小巧、簡單,歸屬於輕量級的web框架,但功能強大,而且使用起來簡單、直接。SNMP,簡單網絡管理協議(SimpleNetwork Management Protocol),是已經投入使用的工業標準,它屬於 TCP/IP 協議中的應用層協議。SNMP 主要用於網絡設備的管理。由於 SNMP 協議簡單可靠,受到了眾多廠商的歡迎,成為了目前最為廣泛的網管協議。SNMP協議,一般基於UDP傳輸,目前版本是v3版本,提供了認證和加密安全機制。SNMP一般主要由網絡設備、Agent和管理組件構成,其中Agent組件是網絡設備和管理組件的中間件,是駐留在網絡設備中的程序進程,它收集設備的管理信息並與管理組件交互。SNMP對外提供了三種用於控制MIB對象的基本操作命令,它們是:Get、Set 和 Trap,可以查詢設備信息、修改設備的參數值、監控設備狀態、自動發現網絡故障、生成報告等。本系統在Ubuntu Server系統上使用Python的Pysnmp模塊部署了相應服務。MIB庫,全稱Management Information Base,相當於資料庫。存儲了被監控設備的各種參數和狀態信息等。每個被管理的設備都需要有MIB庫的存在,我們才能對設備進行管理。MIB庫中定義了可訪問的網絡設備及其屬性,通過OID(Object IDentifier,對象標識符,唯一標識一個MIB對象),Object Identifer來區別。MIB採用分級樹形結構,結構類似於DNS,以下是結構圖:網絡設備的各個相關配置、數據等描述,均由OID來標識。通過從MIB樹的根部進行遍歷,可以獲取整個網絡設備所管理的對象的值或描述。如圖1所示,1.3.6.1.2.1就代表iso.org.dod.internet.mgmt.mib。實際工作中,當某個樓宇的用戶提交報修請求時,一般先登錄該樓宇交換機,然後查看交換機上聯埠是否正常,再根據用戶的房間號查找該用戶對應的埠,並檢查埠的各種狀態信息,這個過程通過命令行實現,比較費時,結果展示不友好,工作效率低。因此從實際工作出發,為了提高工作效率和減少故障定位時間,當某個樓宇的用戶提出報修請求時,工作人員無論在何時何地都可以直接通過瀏覽器打開系統首頁,選擇相應的樓宇,實時獲取該樓宇交換機的所有埠的詳細狀態信息,並以不同的顏色對埠狀態進行標識,同時把整個交換機的所有埠狀態都在一個頁面中展示,使得結果一目了然,信息展示清晰直觀,埠狀態對比明顯,極大的提高了故障處理效率。系統流程如圖2所示。本系統採用B/S結構,使用web.py作為框架。前端使用html5+CSS實現頁面效果和布局控制,後端使用Python+SNMP協議通過交換機管理IP登錄相應的交換機,實時獲取交換機的啟動時間、工作狀態等數據,生成靜態頁面推送至前端發布,用戶通過任意聯網終端使用瀏覽器即可方便實時查看所選交換機設備及埠工作狀態等數據。系統架構如圖3所示。對交換機進行監控,主要是監控交換機的埠流量、狀態、交換機啟動時間、CPU使用率、內存狀態等,關鍵是找出與之相對應的OID。OID的獲取比較容易,一般設備廠商都有相應的文件提供下載。通過下載的MIB文件,查找出需要的狀態對應的OID,然後讀取設備的OID數據即可。本系統中訪問的設備都是銳捷的交換機,對應的OID表如表1所示。而另外一些參數MIB中沒有直接對應的OID數據,例如埠5分鐘內吞吐量等,為了獲取這部分數據,我們使用Python的Telnetlib模塊,通過自動化腳本遠程訪問交換機,來獲取這些數據。本系統基於Python2.7.12和Pysnmp4.2.5實現,使用web.py3.0作為web框架,硬體配置為:
CPU:Intel Corei5-6600 CPU @ 3.9GH作業系統:Ubuntu16.04 xenial或windows2008 R2內核:x86_64 Linux4.4.0-154-generic可以看出,本系統對軟硬體配置要求低,普通計算機即可承擔。系統使用簡單,不需要對系統環境進行任何配置,只需在後臺通過一條命令即可啟動伺服器端程序並綁定埠號,啟動後客戶端即可通過瀏覽器進行訪問。系統的主頁面如圖4所示。提交之後系統實時反應,以靜態網頁的形式展示當前交換機的各種狀態信息。如圖6所示。以筆者本單位的所有樓宇交換機為實驗對象對本系統進行了測試,結果表明,本系統都能在規定的時間內獲取到對應交換機的狀態信息,大大縮短了用戶故障的處理時間,提高了工作效率,同時根據各個埠的數據比對,對流量過大的埠上用戶及時發出預警信息,降低了設備的故障率。
目前用於網絡應用系統監控的軟體比較多,多以通用軟體的形式出現,而且大多配置複雜,跨平臺性和可移植性差,無法滿足用戶的個性化需求。而有的系統比較龐大,需要單獨佔用一臺硬體設備作為系統運行的平臺,造成資源浪費。
比如MRTG(Multi Router TrafficGrapher,MRTG),主要監控網絡鏈路流量負載,也就是只對交換機的上行埠流量進行監控,而對於其他下行狀態等參數卻無法展示給用戶。而Cacti系統雖然可以監控多種設備,但是系統龐大,安裝、配置複雜。
相當於其他功能類似的監控系統,本系統也是基於snmp協議實現對交換機的訪問,本系統的優點在於,系統實現架構簡單,文件結構清晰,軟體小巧,目前整個系統大約3MB,非常方便進行系統部署和遷移。系統基於由python和web.py實現,所以具有良好的跨平臺特徵,在windows和linux下測試都獲得成功。
同時因為系統小巧,對平臺的要求不高,不需要單獨佔用整臺伺服器資源,節省了資金費用。本系統監控整個交換機的所有上行埠和下行埠狀態和參數,且同頁顯示。更重要的是,本系統立足於實際,需求從日常的網絡維護工作中提出,目的是解決日常工作中的交換機故障,能夠滿足個性化需求,屬於定製開發,更能解決實際工作中遇到的問題。
本系統通過Python與SNMP的完美結合,實現了實時獲取特定樓宇交換機啟動時間、資源使用率、埠狀態、埠流量以及埠當前下聯設備的MAC地址,展示效果清晰直觀,用戶使用簡單方便。當有校園網用戶反映網絡問題時,管理人員根據以上數據可以實現對網絡故障進行精確定位和類型判斷,大大減輕了管理人員的工作量,縮短了故障定位時間,提高了定位精度和故障處理效率,提升了網絡服務形象、管理效率和服務水平,也極大改善了用戶的上網體驗。通過規範化、流程化和標準化的服務,極大地提高了故障應急處理能力。為了擴展系統功能,實現對交換機的更加高效、方便管理,下一步將增加交換機埠的遠程管理功能,同時利用python強大的數據分析和處理功能,持續獲取所管理交換機的工作狀態的實時數據,對交換機在不同時間段內的工作狀態和性能進行跟蹤,從而支持網絡管理人員校園網規劃方案和帶寬管理策略,最大限度發揮交換機的性能,提高校園網的使用效率。同時增加埠重啟功能和交換機埠流量異常增加預警功能,配置SMTP伺服器的郵件提醒和SMS簡訊平臺監測提醒服務,當交換機等末端設備掉電時,管理人員會收到郵件或簡訊通知,預判問題,爭取在終端用戶無感知的情況下儘早解決問題,更好的做好服務工作,保障校園網絡的實時暢通,為數位化校園、智慧校園、教學信息化做好支撐工作。顏 偉(1972—),男,碩士,高級實驗師,主要研究方向為計算機網絡及通信技術;
張 超(1992—),男,碩士,助理實驗師,主要研究方向為機器學習,大數據。
選自《通信技術》2020年第一期 (為便於排版,已省去原文參考文獻)