摘 要:傳統(tǒng)的網(wǎng)絡(luò)故障都是通過用戶反饋給網(wǎng)絡(luò)管理員或者使用電子郵件進(jìn)行自動反饋,因此對故障的處理有一定的延遲和滯后性。本文將故障檢測和SMS短信息相結(jié)合設(shè)計并實現(xiàn)了一種基于移動平臺的網(wǎng)絡(luò)故障檢測與短信息報警系統(tǒng),通過GSM短信Modem將網(wǎng)絡(luò)故障信息準(zhǔn)確、及時地發(fā)送給網(wǎng)絡(luò)管理人員,使管理人員在第一時間發(fā)現(xiàn)故障,迅速做出相應(yīng)的處理,提高校園網(wǎng)絡(luò)管理水平和服務(wù)質(zhì)量。
關(guān)鍵詞:SMS;網(wǎng)絡(luò)故障;服務(wù)監(jiān)控;短信息
中圖分類號:G434文獻(xiàn)標(biāo)識碼:A文章編號:1673-8454(2010)21-0053-03
一、引言
隨著校園網(wǎng)絡(luò)規(guī)模的不斷擴(kuò)大,服務(wù)器和網(wǎng)絡(luò)設(shè)備數(shù)量的不斷增多,隨之而來的是網(wǎng)絡(luò)管理復(fù)雜性的提高以及越來越多網(wǎng)絡(luò)故障,因此如何及時發(fā)現(xiàn)故障并進(jìn)行處理對網(wǎng)絡(luò)管理員提出了更高的要求。SMS( Short Message Service) 短信息服務(wù)是GSM系統(tǒng)提供的一種GSM終端之間通過服務(wù)中心來收發(fā)文本等信息的應(yīng)用服務(wù)。短消息的收發(fā)都是通過GSM 短信Modem 發(fā)送AT 命令來實現(xiàn)的。本文旨在開發(fā)一種網(wǎng)絡(luò)故障檢測系統(tǒng),并通過GSM短信Modem將故障信息發(fā)送給網(wǎng)絡(luò)管理人員,使管理人員在第一時間發(fā)現(xiàn)故障,迅速做出相應(yīng)的處理,提高校園網(wǎng)絡(luò)管理水平和服務(wù)質(zhì)量。
二、系統(tǒng)設(shè)計
通過對校園網(wǎng)絡(luò)管理的實際需求進(jìn)行分析得知 ,校園網(wǎng)絡(luò)故障檢測報警系統(tǒng)應(yīng)該能夠?qū)崟r、直觀地反映網(wǎng)絡(luò)各個節(jié)點當(dāng)前運行的狀態(tài);能夠?qū)崟r檢測網(wǎng)絡(luò)故障并及時報警提示,以便管理人員可以及時地采取措施預(yù)防或處理故障;對網(wǎng)絡(luò)運行狀態(tài)信息進(jìn)行記錄 ,便于統(tǒng)計分析和歷史查詢。本系統(tǒng)基于網(wǎng)絡(luò)層ICMP協(xié)議,利用Win32平臺多線程設(shè)計,使用Visual C++技術(shù),結(jié)合短信息警報系統(tǒng)來實現(xiàn)對校園網(wǎng)絡(luò)進(jìn)行實時監(jiān)控。為了保證系統(tǒng)的實用和今后的可擴(kuò)展性,在設(shè)計時盡可能使其模塊化、可擴(kuò)展并能兼容新技術(shù)。監(jiān)控系統(tǒng)主要由以下三大部分組成 :鏈路故障檢測模塊,自動短信警報系統(tǒng),查詢數(shù)據(jù)庫系統(tǒng)。系統(tǒng)結(jié)構(gòu)如圖1所示。
1.鏈路故障檢測模塊
基于鏈路的故障檢測模塊主要完成IP層面上故障檢測,該模塊主要完成對網(wǎng)絡(luò)路由器、交換機(jī)、關(guān)鍵服務(wù)器等設(shè)備是否在線以及可用性檢測,采用發(fā)送ICMP請求回現(xiàn)報文來實現(xiàn)。為了格式化輸出文本以便短信發(fā)送模塊進(jìn)行分析和識別,對于故障信息在內(nèi)容層面按照一定的規(guī)則進(jìn)行設(shè)計,對輸出文本信息的設(shè)計格式如下:
(1)信息類別號:信息發(fā)生源,發(fā)生時間,事件內(nèi)容;
(2)信息類別號:表明信息類別, 如狀態(tài)反饋信息、報警信息等;
(3)信息發(fā)生源:發(fā)生故障的節(jié)點IP地址,名稱,地點;
(4)發(fā)生時間:標(biāo)識故障發(fā)生時間;
(5)事件內(nèi)容:發(fā)生的具體事件。
最后將故障信息寫入消息池供短信息發(fā)送系統(tǒng)進(jìn)行讀取和處理。
2.短信息收發(fā)模塊設(shè)計
短信息收發(fā)模塊主要由GSM短信息收發(fā)軟件和短信Modem硬件組成。短信息收發(fā)軟件通過定時讀取消息池中的信息,對故障信息進(jìn)行解析、拆分、編碼,然后使用AT指令由GSM Modem硬件部分通過GSM 網(wǎng)絡(luò)發(fā)送給相應(yīng)管理員手機(jī)或終端。同時要將發(fā)送信息和故障信息寫入數(shù)據(jù)庫保存。其中對短消息編碼有3 種形式,即72bits、82bits 和Unicode(UCS2)編碼。72bits 編碼最多可以傳160個ACSII 碼小于128 的數(shù)據(jù);82bits 編碼最多可傳140 Byte 的數(shù)據(jù),主要用來傳送二進(jìn)制數(shù)據(jù)信息;Unicode(UCS2)編碼是通過國際通用的Unicode 碼傳送字符的,不區(qū)分中英文及數(shù)字,每一字符都有兩個字節(jié)表示,所以只能傳送70個字符,目前使用的中文短信的手機(jī)采用的都是Unicode (UCS2) 編碼。
此模塊的硬件部分是一種基于無線GSM技術(shù)的 Modem,其嵌入了GSM無線通信模塊,插入移動運營商的手機(jī)SIM卡,可以與移動運營商的短信中心建立無線連接,短信Modem與服務(wù)器通過串口相連,服務(wù)器通過串口發(fā)送AT指令來控制短信貓,實現(xiàn)短信的自由收發(fā)。
3.存儲數(shù)據(jù)庫的設(shè)計
數(shù)據(jù)庫部分主要用來存儲相關(guān)的故障信息以方便查詢,同時完成故障檢測模塊和短信息發(fā)送模塊之間的通訊。主要記錄以下信息:故障設(shè)備名稱信息,故障設(shè)備節(jié)點的地點信息,故障發(fā)生時間,故障路由器/交換機(jī)IP地址,管理員姓名,手機(jī)號碼等信息。
4.系統(tǒng)外部構(gòu)件
系統(tǒng)外部構(gòu)件主要包括:GSM 網(wǎng)絡(luò)、被監(jiān)控對象及用戶手機(jī)。GSM 網(wǎng)絡(luò)是目前國內(nèi)覆蓋范圍最廣,應(yīng)用最普遍的無線通信網(wǎng)絡(luò)。監(jiān)控對象主要是核心路由器和交換機(jī),關(guān)鍵服務(wù)器以及其他的IP網(wǎng)絡(luò)設(shè)備。
本系統(tǒng)部署可以是分布式的,即故障檢測、短信息收發(fā)模塊、數(shù)據(jù)庫運行在不同的計算機(jī)上,也可以部署在同一臺服務(wù)器上。出于可靠性和安全性的考慮,我們將所有的模塊都部署在同一臺計算機(jī)上運行。
三、系統(tǒng)的實現(xiàn)
本系統(tǒng)選用了VC++. NET 集成開發(fā)環(huán)境作為開發(fā)平臺,其軟件模塊主要包括基于ICMP協(xié)議的網(wǎng)絡(luò)通信和GSM短信息收發(fā)兩部分。故障檢測程序設(shè)計和短信發(fā)送報警文本信息是整個軟件設(shè)計的核心。故障檢測使用Raw Socket完成基于ICMP協(xié)議的網(wǎng)絡(luò)檢測。報警文本發(fā)送部分包括初始化計算機(jī)串口、讀取信息池中信息、對信息進(jìn)行編碼、組包、執(zhí)行AT命令來完成文本信息的發(fā)送。
1.故障檢測模塊的軟件設(shè)計
在 Visual C++平臺下,使用Raw Socket發(fā)送ICMP報文前,我們要組裝報文初始化ICMP的報頭, 給Data部分填充數(shù)據(jù), 計算校驗和。主要代碼如下:
(1)初始化RAW Socket創(chuàng)建原始套接字
Raw Socket=socket(AF_INET,SOCK_RAW,IPPROTO_ ICMP);
if (setsockopt(s, IPPROTO_IP, IP_TTL, (const char*) ttl,size of (ttl)) ==SOCKET_ERROR)
(2)構(gòu)造目標(biāo)套接字地址信息
saDest.sin_addr.s_addr = *((u_long FAR *)(lpHost->h_addr));
saDest.sin_family = AF_INET;
saDest.sin_port = 70;
(3)發(fā)送ICMP回顯請求
SendEchoRequest (SOCKET s, LPSOCKADDR_IN lpstToAddr)
{
nRet = sendto(s,(LPSTR)echo,sizeof(ECHOREQUEST),0, (LPSOCKADDR)lpstToAddr,sizeof(SOCKADDR_IN));
};
(4)等待回應(yīng)信息,如果超時則寫入數(shù)據(jù)庫相應(yīng)表單中
nRet = WaitForEchoReply(rawSocket);
(5)接收ICMP回應(yīng)請求
RecvEchoReply(SOCKET s,LPSOCKADDR_IN lpsaFrom,u_char *pTTL)
{
ECHOREPLY echoReply;
int nRet;
int nAddrLen = sizeof(struct sockaddr_in);
nRet = recvfrom(s,(LPSTR)echoReply,sizeof(ECHOREPLY),0,(LPSOCKADDR)lpsaFrom,nAddrLen);
}
2.短信息發(fā)送模塊
該模塊軟件部分在Visual C++平臺下完成短信息收發(fā)功能,其程序流程如圖2所示。
(1)初始化計算機(jī)串口
初始化計算機(jī)串口,主要是選擇COM 口、設(shè)置端口速率等工作。本文選用COM1 口,設(shè)置波特率為9600 bps,無奇偶效驗位,數(shù)據(jù)位為8 位。使用 OpenComm 函數(shù)初始化計算機(jī)串口;
OpenComm(strCom,CBR_9600,NOPARITY,8, ONESTOPBIT)
(2)選擇接收或發(fā)送短消息的格式 TEXT格式/PDU格式;
GSM模塊通過異步通信接口實現(xiàn)對SMS的控制,共有 3 種接入?yún)f(xié)議:Block Mode、基于 AT 命令的文本TEXT 模式和基于AT命令的協(xié)議數(shù)據(jù)單元 PDU(Protocol Data Unit)模式。本系統(tǒng)的實現(xiàn)中主要使用PDU模式。
(3)設(shè)置SIM卡的短信息中心號碼
strCenterNumber=\"1380*******\";
SetCenterNumber(strCenterNumber);
(4)讀取故障報警信息和管理員手機(jī)信息
alertfile.Open(\"alertfile.txt\",CFile::modeReadWrite);
phonelistfile.Open(\"phonelist.txt\",CFile::modeRead);
(5)將字符串轉(zhuǎn)換為Unicode代碼,對文本信息進(jìn)行拆分后進(jìn)行發(fā)送
EncodeUniCode( String Strcontent);
SendShortMessage(m_strNumber,m_strContent,sm_param_temp);
(6)發(fā)送完畢后利用CloseComm ()函數(shù)關(guān)閉計算機(jī)串口。
本模塊的硬件部分 GSM Modem 采用WAVECOM M1206GMS/ GPRS MODEM ,接口為RS232 ,可直接與PC 機(jī)的串口連接。模塊支持文本和PDU 模式的短消息,支持完全的AT+擴(kuò)展指令控制收發(fā)短信息,其性價比很高,并且已經(jīng)在國內(nèi)普遍使用。
3.數(shù)據(jù)庫系統(tǒng)
數(shù)據(jù)庫系統(tǒng)保存了系統(tǒng)的所有信息,包括注冊用戶信息,故障相關(guān)信息,故障節(jié)點信息,對短信息收發(fā)的統(tǒng)計、記錄等。本系統(tǒng)主要使用MySQL數(shù)據(jù)庫存儲相關(guān)數(shù)據(jù),主要由以下幾張表組成:1.T_user表,主要存儲管理員信息包括姓名,手機(jī)號碼。2 .T_alert故障信息表,存儲故障信息,故障節(jié)點IP地址信息,故障發(fā)生時間。3.T_node被監(jiān)控節(jié)點信息 ,包括節(jié)點IP地址,所在地點,所屬管理員。4.T_sendlog發(fā)送信息log記錄表。5.T_log故障信息日志表。
在應(yīng)用程序中使用ODBC驅(qū)動與MySQL數(shù)據(jù)庫進(jìn)行連接。
(1)安裝數(shù)據(jù)庫連接驅(qū)動程序 M ysqlmysql-connector-odbc-3.51.12-win32
(2)建立數(shù)據(jù)源,使用連接字符串為
Driver={MySQL ODBC 3.51 Driver};Server=localhost(ip);Database=my Database; User=myUsername;Password=myPassword;Option=3;
(3)連接數(shù)據(jù)源
CDatabase db;
db.Open(NULL,F(xiàn)ALSE,F(xiàn)ALSE,\"ODBC;DSN=odbmysql;UID=root;PWD=\");
(4)取數(shù)據(jù)集合
CRecordset rs( db );
rs.Open( CRecordset::forwardOnly, _T(\"SELECT * FROM table order by id Asc\"));
四、結(jié)束語
新設(shè)計網(wǎng)絡(luò)故障檢測與短信報警系統(tǒng)在Win2003環(huán)境下通過Visual Studio 2005平臺開發(fā)實現(xiàn),已在校園網(wǎng)絡(luò)中推廣使用。在實際應(yīng)用中,能正確定位,檢測網(wǎng)絡(luò)中斷故障,及時對網(wǎng)絡(luò)故障進(jìn)行報警,并提供數(shù)據(jù)檢索功能。本監(jiān)控系統(tǒng)的使用,大大提高了校園網(wǎng)絡(luò)的響應(yīng)速度和管理水平,減少了網(wǎng)絡(luò)故障的持續(xù)時間。
參考文獻(xiàn):
[1]秦龍.基于GSM網(wǎng)絡(luò)的環(huán)境監(jiān)控系統(tǒng)的實現(xiàn)[J].計算機(jī)工程與設(shè)計,2006,27(6):1033~1035.
[2]郎銳,羅發(fā)根.Visual C++網(wǎng)絡(luò)通信程序開發(fā)指南[M].北京:機(jī)械工業(yè)出版社,2004.
[3]趙建,劉俊,楊明欣等.基于GSM 手機(jī)短信的無人值守自動抽水控制儀[J].微計算機(jī)信息,2006,22(10-1):112-114.
[4]郁進(jìn)明,謝穎華,白恩健等. 基于 SMS 的網(wǎng)絡(luò)站告警監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機(jī)應(yīng)用與軟件,2006,5.
[5]金笛短信資源中心.wavecom 芯片資料[EB/OL].http ://www.sendsms.com.cn/article/articleview/691/ ,2005-09-10.
(編輯:楊馥紅)