王天琪,張文波,張 鐵,周 帆
(沈陽(yáng)理工大學(xué) 信息科學(xué)技術(shù)與工程學(xué)院,沈陽(yáng) 110159)
隨著我國(guó)三網(wǎng)融合政策啟動(dòng)執(zhí)行,建設(shè)數(shù)字化和雙向化的有線電視網(wǎng)絡(luò)也成為城市化前進(jìn)的重要方向。有線電視網(wǎng)絡(luò)行業(yè)正在實(shí)現(xiàn)網(wǎng)絡(luò)資源優(yōu)化配置,提高其業(yè)務(wù)承載能力及其業(yè)務(wù)綜合信息處理能力[1];提高網(wǎng)絡(luò)服務(wù)質(zhì)量,優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu)[2],積極整合全國(guó)各地的有線電視網(wǎng)絡(luò)業(yè)務(wù);具有網(wǎng)絡(luò)運(yùn)營(yíng)維護(hù)能力的網(wǎng)絡(luò)管理系統(tǒng)和營(yíng)業(yè)支持體系也正在創(chuàng)建中。然而,如今市面上仍存在一些早期生產(chǎn)的有線電視設(shè)備,并不支持統(tǒng)一的SNMP協(xié)議,導(dǎo)致難以對(duì)所有的有線電視設(shè)備進(jìn)行統(tǒng)一管理,為了使這些設(shè)備也能進(jìn)入網(wǎng)絡(luò)管理,需設(shè)計(jì)支持SNMP協(xié)議的代理轉(zhuǎn)換器,獲取設(shè)備的運(yùn)行參數(shù),將不統(tǒng)一的通訊協(xié)議均轉(zhuǎn)為SNMP協(xié)議,然后再執(zhí)行網(wǎng)絡(luò)通信,以實(shí)現(xiàn)有線電視網(wǎng)絡(luò)的統(tǒng)一管理。
現(xiàn)在有線電視網(wǎng)絡(luò)規(guī)模處于大幅度上漲趨勢(shì),對(duì)其管理的任務(wù)也變得越發(fā)艱巨。傳統(tǒng)有線電視網(wǎng)絡(luò)管理系統(tǒng)是通過(guò)電腦客戶端的方式或者是基于萬(wàn)維網(wǎng)(WEB)的方式來(lái)管理[3],而且不能直觀并統(tǒng)一的對(duì)有線電視設(shè)備運(yùn)行情況進(jìn)行監(jiān)測(cè),這使管理人員不能對(duì)有線電視網(wǎng)絡(luò)中出現(xiàn)的故障做出及時(shí)的查看分析與有效的維護(hù)。而安卓(Android)平臺(tái)是具有強(qiáng)大的程序處理能力的平臺(tái),并具有兼容性強(qiáng)、設(shè)計(jì)簡(jiǎn)單、操作方便的特性[4]。故此,本文面向Android平臺(tái)設(shè)計(jì)并實(shí)現(xiàn)了更人性化、更智能化的有線電視網(wǎng)絡(luò)管理系統(tǒng)。此系統(tǒng)可實(shí)現(xiàn)網(wǎng)絡(luò)管理人員對(duì)所有網(wǎng)絡(luò)設(shè)備實(shí)時(shí)監(jiān)控和異常點(diǎn)定位,及時(shí)發(fā)現(xiàn)并解決有線電視網(wǎng)絡(luò)故障。
一般網(wǎng)絡(luò)管理系統(tǒng)通常采用的設(shè)計(jì)方式是層次結(jié)構(gòu)設(shè)計(jì)模式,將每個(gè)層次的功能進(jìn)行封裝,采用接口方式對(duì)外調(diào)用,所以當(dāng)層次中的任何一層發(fā)生變化時(shí),只要接口不改變,則這一層的上一層和下一層功能均不受影響。鑒于以上優(yōu)點(diǎn),本系統(tǒng)同樣采用層次結(jié)構(gòu)的設(shè)計(jì)模式,如圖1所示,有線電視網(wǎng)絡(luò)管理系統(tǒng)自上而下分別對(duì)展示層、服務(wù)層和代理層進(jìn)行功能性設(shè)計(jì)與實(shí)現(xiàn)。
圖1 系統(tǒng)架構(gòu)圖
1.1.1 展示層架構(gòu)
本系統(tǒng)的展示層主要負(fù)責(zé)對(duì)有線電視設(shè)備運(yùn)行信息、設(shè)備異常點(diǎn)定位等各項(xiàng)性能及地圖進(jìn)行具體化顯示并實(shí)現(xiàn)用戶與信息模塊交互,對(duì)于展示層的設(shè)計(jì)模式采用MVP(實(shí)體層-視圖層-表示器)模式進(jìn)行設(shè)計(jì),如圖2所示。
圖2 MVP架構(gòu)圖
在MVP模式里,V為視圖層,將活動(dòng)的界面邏輯抽象成V接口;M為實(shí)體層,是實(shí)體類(lèi),用來(lái)存儲(chǔ)數(shù)據(jù);P為表示器,主要表示程序邏輯。當(dāng)V發(fā)生變化時(shí),其先將請(qǐng)求數(shù)據(jù)傳輸?shù)絇,再?gòu)腜發(fā)送到M并監(jiān)聽(tīng)數(shù)據(jù)變化;M將結(jié)果反饋給P,P通過(guò)接口與V進(jìn)行互相通信,最終V進(jìn)行界面顯示[5]。而M與V不能直接交互,它是通過(guò)P間接與V交互的。
1.1.2 客戶端功能設(shè)計(jì)
本系統(tǒng)的客戶端即是展示層,如圖3所示,其設(shè)計(jì)根據(jù)實(shí)際需求主要分為三大功能模塊。Android客戶端結(jié)合移動(dòng)端GIS技術(shù)向用戶展示有線電視設(shè)備各項(xiàng)信息和服務(wù)層推送的設(shè)備異常告警信息,并且展示地圖及各個(gè)設(shè)備的地理位置[6]。在用戶管理方面,實(shí)現(xiàn)有線電視資源可視化管理,對(duì)網(wǎng)絡(luò)資源進(jìn)行數(shù)據(jù)查詢、信息增添、清除用戶信息和修改密碼等設(shè)置;在資源管理方面,展示并解析預(yù)測(cè)設(shè)備的各項(xiàng)性能的運(yùn)行狀況;在故障管理方面,對(duì)發(fā)生故障設(shè)備進(jìn)行故障等級(jí)分類(lèi)、異常告警、生成故障日志、定位設(shè)備及工作人員的位置。
圖3 客戶端功能結(jié)構(gòu)圖
1.2.1 服務(wù)層架構(gòu)
服務(wù)層采用分布式架構(gòu)進(jìn)行構(gòu)建,具體設(shè)計(jì)架構(gòu)如圖4所示,服務(wù)器相當(dāng)于管理者,底層信息采集進(jìn)程是由多個(gè)進(jìn)程組成且彼此相互獨(dú)立,當(dāng)其中一個(gè)進(jìn)程出現(xiàn)異常的時(shí)候,系統(tǒng)的整體運(yùn)行仍能正常進(jìn)行。
1.2.2 服務(wù)器端功能設(shè)計(jì)
系統(tǒng)服務(wù)器主要解決Android客戶端所發(fā)出的各類(lèi)請(qǐng)求,把代理層所采集到的有線電視設(shè)備實(shí)時(shí)運(yùn)行的性能參數(shù)及其發(fā)出的異常告警消息存儲(chǔ)進(jìn)系統(tǒng)數(shù)據(jù)庫(kù),最后把數(shù)據(jù)庫(kù)中的數(shù)據(jù)上傳給Android客戶端展示。
圖4 服務(wù)層架構(gòu)圖
在資源管理方面:當(dāng)客戶端對(duì)資源管理模塊發(fā)送請(qǐng)求時(shí),資源管理進(jìn)程會(huì)按相應(yīng)的請(qǐng)求調(diào)用SNMP配置報(bào)文,并將報(bào)文傳送至代理層的SNMP網(wǎng)管代理,再進(jìn)行剖析報(bào)文并協(xié)議轉(zhuǎn)換,與底層有線電視設(shè)備經(jīng)由串口通訊進(jìn)行交互并獲取相應(yīng)的數(shù)據(jù),最終返回呈現(xiàn)給用戶;在性能管理方面:由系統(tǒng)服務(wù)器定時(shí)對(duì)網(wǎng)絡(luò)管理系統(tǒng)中所管的設(shè)備進(jìn)行輪詢,將獲取每一臺(tái)有線電視設(shè)備的性能參數(shù),存儲(chǔ)至系統(tǒng)數(shù)據(jù)庫(kù)。并在解析處理有線電視設(shè)備的性能參數(shù)后,為每個(gè)參數(shù)設(shè)置臨界值,這樣可以明顯而清楚地觀測(cè)到有線電視設(shè)備各項(xiàng)參數(shù)與臨界值的差偏程度,預(yù)知設(shè)備可能的異常情況。
推送服務(wù)器負(fù)責(zé)故障檢測(cè)并向Android客戶端主動(dòng)上傳陷阱告警信息,在故障管理監(jiān)測(cè)到有線電視設(shè)備發(fā)生異常時(shí),先對(duì)故障進(jìn)行等級(jí)劃分,對(duì)于簡(jiǎn)單的故障可自動(dòng)解決,無(wú)法直接處理的故障采用推送方式將故障消息上傳給客戶端展示[7]。推送功能采用的是基于Android平臺(tái)的消息推送技術(shù)中的Android推送通知(AndroidPN)技術(shù)[8]。此技術(shù)在開(kāi)發(fā)過(guò)程中只需利用AndroidPN框架中的云服務(wù),這可以減少搭建新服務(wù)器的負(fù)擔(dān),同時(shí)可以提高移動(dòng)設(shè)備的續(xù)航力,并降低流量的損耗。
底層設(shè)備信息采集進(jìn)程通過(guò)串口通信進(jìn)程與光纖傳輸平臺(tái)之間進(jìn)行通訊,獲得設(shè)備性能數(shù)據(jù)并存入數(shù)據(jù)庫(kù)中。把管理信息庫(kù)(MIB)中讀取出設(shè)備參數(shù)封裝成SNMP請(qǐng)求報(bào)文,然后傳送到SNMP網(wǎng)管代理層。當(dāng)系統(tǒng)服務(wù)器收到反饋的響應(yīng)報(bào)文后,將對(duì)報(bào)文進(jìn)行解析,并將數(shù)據(jù)存入系統(tǒng)數(shù)據(jù)庫(kù)庫(kù)中,以便系統(tǒng)服務(wù)器向客戶端提供數(shù)據(jù)查詢服務(wù)。
本系統(tǒng)有線電視設(shè)備的運(yùn)行參數(shù)以及用戶數(shù)據(jù)都存儲(chǔ)于系統(tǒng)數(shù)據(jù)庫(kù),客戶端采用Android開(kāi)發(fā)平臺(tái)自帶的數(shù)據(jù)庫(kù)來(lái)進(jìn)行數(shù)據(jù)緩存,在系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)上采用MySQL數(shù)據(jù)庫(kù)。根據(jù)所采集底層數(shù)據(jù)的不同屬性,對(duì)數(shù)據(jù)庫(kù)中的信息進(jìn)行詳細(xì)設(shè)計(jì),包括共有屬性信息表、機(jī)房信息表、設(shè)備參數(shù)表和Trap告警信息表。
1.3.1 代理層架構(gòu)
代理層主要的功能是收集有線電視設(shè)備的運(yùn)行數(shù)據(jù)及異常告警信息,再將響應(yīng)請(qǐng)求反饋給上一層,使上層及時(shí)并準(zhǔn)確的接收有線電視設(shè)備性能數(shù)據(jù)。如圖5所示,SNMP網(wǎng)管代理接收和響應(yīng)系統(tǒng)服務(wù)器發(fā)送的SNMP報(bào)文請(qǐng)求并分析報(bào)文類(lèi)型,然后主動(dòng)向管理站傳送告警信號(hào);為擁有自定義通信協(xié)議[9]的有線電視設(shè)備配置對(duì)應(yīng)的協(xié)議轉(zhuǎn)換策略,這樣代理層便可以分析處理各種型號(hào)的有線電視設(shè)備的通訊策略,使所有的有線電視設(shè)備都通過(guò)SNMP協(xié)議與互聯(lián)網(wǎng)進(jìn)行交互,實(shí)現(xiàn)多種有線電視設(shè)備的統(tǒng)一管理。
圖5 代理層設(shè)計(jì)結(jié)構(gòu)
1.3.2 協(xié)議轉(zhuǎn)換器的設(shè)計(jì)
GI公司的OmniStar設(shè)備可以同時(shí)管理多臺(tái)不同型號(hào)的有線電視設(shè)備,但其只支持串口通信,且每臺(tái)個(gè)人計(jì)算機(jī)只能一對(duì)一的對(duì)設(shè)備進(jìn)行監(jiān)控,針對(duì)以上缺點(diǎn)設(shè)計(jì)了基于S3C2416的15路串口的協(xié)議轉(zhuǎn)換設(shè)備,如圖6所示。網(wǎng)管代理協(xié)議轉(zhuǎn)換器的內(nèi)部構(gòu)造分為四大模塊,分別為Power、CPU CoreBoard、Mother Board和Front Panel。其背面設(shè)計(jì)有15路串口,最多可串聯(lián)管理75臺(tái)OmniStar設(shè)備,不但能滿足對(duì)設(shè)備統(tǒng)一管理的要求,同時(shí)解決了串口通信的局限性問(wèn)題。
為方便有線電視網(wǎng)管系統(tǒng)的客戶端與服務(wù)器端同時(shí)開(kāi)發(fā),所以客戶端程序與服務(wù)器端程序都在Windows 7操作系統(tǒng)環(huán)境下實(shí)現(xiàn)的,客戶端程序在Eclipse開(kāi)發(fā)工具上實(shí)現(xiàn),MyEclipse開(kāi)發(fā)工具用于服務(wù)器端功能實(shí)現(xiàn)。
圖6 協(xié)議轉(zhuǎn)換器設(shè)計(jì)
有線電視網(wǎng)管系統(tǒng)的開(kāi)發(fā)也遵循Android程序安裝啟動(dòng)的流程,如圖7所示,在進(jìn)入歡迎界面、系統(tǒng)引導(dǎo)和用戶注冊(cè)登錄等流程之后,便進(jìn)入具有四個(gè)不同功能的頁(yè)面:“消息”、“資源管理”、“故障維護(hù)”和“我”共四個(gè)導(dǎo)航按鈕,系統(tǒng)主界面使用碎片(Fragement)實(shí)現(xiàn)。
圖7 系統(tǒng)啟動(dòng)流程圖
資源管理功能模塊主要實(shí)現(xiàn)兩個(gè)性能,一個(gè)是機(jī)房信息的查看;另一個(gè)是監(jiān)測(cè)有線電視設(shè)備實(shí)時(shí)運(yùn)行的狀態(tài),通過(guò)機(jī)房號(hào)、設(shè)備名字、設(shè)備端口號(hào)或者代理設(shè)備的IP地址來(lái)確定查看某一臺(tái)設(shè)備,點(diǎn)擊查看設(shè)備按鈕,便會(huì)跳轉(zhuǎn)到設(shè)備運(yùn)行狀態(tài)的界面,如圖8所示。
圖8 機(jī)房信息圖
故障管理功能模塊需要實(shí)現(xiàn)如下三個(gè)性能,一個(gè)是收集故障信息并發(fā)送提醒,通過(guò)在AndroidPN源碼里增加鬧鐘提醒功能來(lái)實(shí)現(xiàn);另一個(gè)是對(duì)于維護(hù)人員的定位實(shí)現(xiàn),在Android客戶端程序?qū)氚俣鹊貓DAndroid版開(kāi)發(fā)包,設(shè)置GPS的定位方式以實(shí)現(xiàn)定位[10],如圖9所示;最后是生成故障日志,按照每個(gè)故障的告警說(shuō)明、告警發(fā)出的時(shí)間、告警設(shè)備的識(shí)別碼、故障設(shè)備的端口號(hào)、告警的嚴(yán)重級(jí)別以及異常的所屬類(lèi)別的順序進(jìn)行記錄。
圖9 定位展示界面
系統(tǒng)服務(wù)器針對(duì)Android客戶端發(fā)送的不同類(lèi)型的請(qǐng)求實(shí)現(xiàn)不同的服務(wù),從MIB中提取與之對(duì)應(yīng)的設(shè)備參數(shù)上傳給客戶端。服務(wù)器與數(shù)據(jù)庫(kù)采用單例模式實(shí)現(xiàn)連接,對(duì)于上層的取值響應(yīng)時(shí)間,設(shè)置定時(shí)查詢機(jī)制,在定時(shí)查詢的時(shí)刻設(shè)置時(shí)間戳,這樣當(dāng)客戶端發(fā)送請(qǐng)求在一個(gè)時(shí)間戳內(nèi)時(shí)只需連接一次數(shù)據(jù)庫(kù)即可,減少了系統(tǒng)響應(yīng)時(shí)間;另外系統(tǒng)服務(wù)器以輪詢的方式[11]與SNMP代理進(jìn)行協(xié)議通信,定時(shí)訪問(wèn)底層SNMP網(wǎng)管代理獲取有線電視設(shè)備實(shí)時(shí)運(yùn)行的參數(shù),將數(shù)據(jù)存入到系統(tǒng)MIB中。
推送服務(wù)器是一個(gè)獨(dú)立的服務(wù)器,在系統(tǒng)服務(wù)器開(kāi)始運(yùn)行之后,告警監(jiān)控程序也隨之啟動(dòng),當(dāng)服務(wù)器監(jiān)聽(tīng)到Trap報(bào)文時(shí),可以通過(guò)解析告警信息中的數(shù)據(jù)來(lái)查詢有線電視機(jī)房的坐標(biāo)定位,如若查詢成功則將與其對(duì)應(yīng)的坐標(biāo)和信息顯示在地圖上,并把異常信息上傳到客戶端,若匹配失敗則記入告警日志中。
SNMP網(wǎng)管代理主要調(diào)控各端口有線電視設(shè)備的通訊和數(shù)據(jù)分析,通過(guò)串口通信獲取設(shè)備的各項(xiàng)數(shù)據(jù),并將數(shù)據(jù)打包成SNMP報(bào)文發(fā)送給上層服務(wù)器進(jìn)行統(tǒng)一監(jiān)測(cè)和管理。針對(duì)不同串口通信協(xié)議的有線電視設(shè)備,獲取其性能參數(shù),設(shè)計(jì)與之對(duì)應(yīng)的SNMP報(bào)文并在數(shù)據(jù)庫(kù)中為其配置相應(yīng)的性能屬性,從而完成協(xié)議轉(zhuǎn)換。另外,Trap告警推送通過(guò)SNMP Trap主動(dòng)向監(jiān)控端發(fā)送故障告警信息,并對(duì)輪詢查詢請(qǐng)求和轉(zhuǎn)換成SNMP報(bào)文格式的Trap告警信息等進(jìn)行處理[12],監(jiān)聽(tīng)流程如圖10所示。
圖10 Trap監(jiān)聽(tīng)流程圖
本部分測(cè)試是指從客戶端發(fā)出某種請(qǐng)求到客戶端接收到反饋信息的時(shí)間間隔和系統(tǒng)彈出消息界面所用時(shí)的總和。當(dāng)服務(wù)器端第一次接受到客戶端用戶發(fā)送的查詢指令時(shí),會(huì)經(jīng)由SNMP網(wǎng)管代理進(jìn)行信息查詢,把獲取的數(shù)據(jù)存入MySQL中,然后設(shè)置時(shí)間戳,若用戶的查詢指令在一個(gè)時(shí)間戳內(nèi),且不會(huì)多次對(duì)代理層進(jìn)行查詢?cè)L問(wèn),實(shí)際上直接從MySQL中獲取數(shù)據(jù)即可,從而提升了系統(tǒng)的運(yùn)行速率。
表1 查詢操作響應(yīng)時(shí)間
從表1中的五組數(shù)據(jù)中可以看出:第2組數(shù)據(jù)從發(fā)送請(qǐng)求時(shí)間到系統(tǒng)反饋時(shí)間結(jié)束的所用時(shí)間遠(yuǎn)超過(guò)另外4組數(shù)據(jù)。其原因是第2組發(fā)送請(qǐng)求信息時(shí)不在上一個(gè)時(shí)間戳內(nèi),需要重新向SNMP網(wǎng)管代理發(fā)送查詢請(qǐng)求,然后再把反饋的數(shù)據(jù)存入系統(tǒng)數(shù)據(jù)庫(kù)中,這個(gè)過(guò)程延長(zhǎng)了查詢操作的響應(yīng)時(shí)間,而其它4組數(shù)據(jù)則是直接從數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)。整個(gè)測(cè)試結(jié)果表明,客戶端與服務(wù)器端交互查詢系統(tǒng)數(shù)據(jù)庫(kù)信息的響應(yīng)時(shí)間基本維持在0.1s,滿足了對(duì)本系統(tǒng)的需求。
本系統(tǒng)的故障響應(yīng)時(shí)間測(cè)試是從設(shè)備發(fā)生故障到接收故障消息的響應(yīng)時(shí)間。當(dāng)有線電視設(shè)備出現(xiàn)異常時(shí),系統(tǒng)需在最快的時(shí)間里定位故障位置,并進(jìn)行異常分析與修護(hù),以保證系統(tǒng)的正常運(yùn)行。如表2所示,從制造故障到客戶端接收到故障消息的所用時(shí)間的五組數(shù)據(jù)均維持在10s范圍內(nèi),測(cè)試結(jié)果表明本文設(shè)計(jì)的故障提醒功能可以滿足本系統(tǒng)的要求。
表2 故障消息響應(yīng)時(shí)間
并發(fā)測(cè)試是模擬網(wǎng)絡(luò)管理系統(tǒng)有多個(gè)客戶端同時(shí)運(yùn)行的情形,在保證系統(tǒng)正常工作的前提下,檢測(cè)系統(tǒng)所能承受的最大登錄用戶數(shù)。此部分測(cè)試是在實(shí)驗(yàn)室的PC機(jī)上模擬,觀察系統(tǒng)的運(yùn)作情況,測(cè)試出管理系統(tǒng)能夠承受的最大用戶數(shù)。圖11是對(duì)系統(tǒng)進(jìn)行不同用戶數(shù)的壓力測(cè)試情況。
圖11 查詢操作響應(yīng)時(shí)間
圖11中四條折線分別表示五十個(gè)、一百個(gè)、二百個(gè)和二百五十個(gè)用戶在并發(fā)執(zhí)行操作網(wǎng)絡(luò)管理系統(tǒng)時(shí),網(wǎng)管系統(tǒng)反饋給客戶端發(fā)出指令事務(wù)的時(shí)間。測(cè)試結(jié)果表明,當(dāng)同時(shí)執(zhí)行操作的用戶數(shù)低于二百時(shí),系統(tǒng)可以比較穩(wěn)定地處理各個(gè)用戶的請(qǐng)求;當(dāng)有二百五十個(gè)用戶并發(fā)操作時(shí),事務(wù)平均響應(yīng)時(shí)間顯然增漲,系統(tǒng)的運(yùn)轉(zhuǎn)效率嚴(yán)重降低。
本文針對(duì)有線電視設(shè)備的網(wǎng)絡(luò)管理需求深入的剖析與討論后,結(jié)合當(dāng)前Android系統(tǒng)的優(yōu)勢(shì),應(yīng)用移動(dòng)端GIS技術(shù)以及SNMP協(xié)議,設(shè)計(jì)并實(shí)現(xiàn)了面向Android平臺(tái)的有線電視網(wǎng)管系統(tǒng)。系統(tǒng)總體分為展示層、服務(wù)層以及代理層,各層分別對(duì)應(yīng)Android客戶端、服務(wù)器和SNMP網(wǎng)管代理進(jìn)行了結(jié)構(gòu)設(shè)計(jì)與功能設(shè)計(jì)。對(duì)本系統(tǒng)進(jìn)行測(cè)試結(jié)果表明,本系統(tǒng)達(dá)到客戶對(duì)響應(yīng)時(shí)間和系統(tǒng)穩(wěn)定性的需求,可以持續(xù)平穩(wěn)地處理多個(gè)客戶端的并發(fā)操作,系統(tǒng)基于Android平臺(tái)開(kāi)發(fā),不僅方便設(shè)備的監(jiān)控,而且便于對(duì)設(shè)備進(jìn)行維護(hù)。