王慶喜 黃均樂 左楓
摘要:隨著網(wǎng)絡(luò)系統(tǒng)結(jié)構(gòu)的日益復(fù)雜,實時管理交換機網(wǎng)絡(luò)設(shè)備臺賬并對其進行業(yè)務(wù)操作是一件很繁瑣的工作。該文簡要分析當(dāng)前傳統(tǒng)的交換機運維管理方式,找到其不足之處,提出了運用JAVA SNMP4J開發(fā)包開發(fā)出一套IT網(wǎng)絡(luò)運維管理系統(tǒng)。該系統(tǒng)借助SNMP協(xié)議實時讀取交換機設(shè)備信息,并通過SSH協(xié)議操作交換機,極大地方便了網(wǎng)絡(luò)管理員和臺賬管理員的工作效率。
關(guān)鍵詞:SNMP;SNMP4;SSH;交換機
中圖分類號:TP311 文獻標(biāo)識碼:A 文章編號:1009-3044(2016)18-0235-03
Account Checking and Maintenance Management for Switch Based On SNMP4J
WANG Qing-xi, HUANG Jun-le, ZUO Feng
(Wuhan Institute of Marine Electric Propulsion Device, Wuhan 430064, China)
Abstract: With the increasing complexity of network architecture, real-time management of switch network equipment account and its business operations is a very tedious work. The paper analyzes the current conventional switch operation and maintenance management to find its shortcomings, we proposed the use of JAVA SNMP4J development kit to develop an IT network operation and maintenance management system. The system by means of SNMP protocol to read switch device information and operate the switch through the SSH protocol in real time, greatly facilitates the network administrator and the accounting administrator's working efficiency.
Key words: snmp; snmp4j; ssh; switch
在公司局域網(wǎng)內(nèi),IT信息化管理部門其中很重要的一項管理工作就是局域網(wǎng)內(nèi)設(shè)備臺賬的實時管理及日常運維操作,其中尤其以交換機設(shè)備管理最難。目前傳統(tǒng)的交換機管理方式有兩種:第一種方式通過SecureCRT這種免費的第三方工具通過ssh協(xié)議連接各個交換機,通過命令行控制臺操作;第二種方式通過購買專業(yè)的商業(yè)交換機管理軟件如北塔公司的網(wǎng)管軟件進行交換機的日常監(jiān)控?,F(xiàn)有的兩種方式都不能夠有效的與我們設(shè)備臺賬有效的關(guān)聯(lián)起來進行設(shè)備臺賬的及時更新、維護。第一種以命令行的方式可以對交換機進行全部操作;第二種方式目前絕大部分只限于交換機的監(jiān)控管理、簡單的開啟、關(guān)閉功能,不具備對交換機業(yè)務(wù)操作功能。
對于臺賬管理員與交換機管理員來說,如果將交換機臺賬管理與交換機的運維管理有效緊密結(jié)合起來將會極大的提升工作效率,確保臺賬的準(zhǔn)確性及運維管理的便利性。本文基于我們單位現(xiàn)實的交換機管理現(xiàn)狀,運用JAVA 平臺封裝了SNMP協(xié)議1[1]的SNMP4J 2[2]JAR包開發(fā)一套IT網(wǎng)絡(luò)運維管理系統(tǒng),對我單位的交換機設(shè)備臺賬與運維管理有效結(jié)合起來,提升臺賬管理員與交換機管理員的工作效率。
1 SNMP管理模型
SNMP4J是封裝了SNMP協(xié)議的JAVA實現(xiàn)JAR包,核心思想是SNMP協(xié)議。SNMP的全稱為簡單網(wǎng)絡(luò)管理協(xié)議(Simple Network Management Protocol),SNMP基于TCP/IP協(xié)議工作,對網(wǎng)絡(luò)中支持SNMP協(xié)議的設(shè)備進行管理,SNMP 有SNMPV1,SNMPV2,SNMPV3三種協(xié)議版本3[3],SNMP工作原理如圖1所示。
SNMP管理模型主要由三個部分組成:管理站NMS、被管理站Agent和管理信息庫MIB4[4]。管理進程和代理進程通過SNMP的協(xié)議數(shù)據(jù)單元PDU(ProtOOOl Data Unit)進行通信,管理進程通過代理進程對MIB的操作來管理被管理設(shè)備5[5]。
NMS,即SNMP管理站(又稱為SNMP管理者),是一個利用SNMP協(xié)議對網(wǎng)絡(luò)設(shè)備進行管理和監(jiān)控的系統(tǒng)。NMS既可以指某個網(wǎng)絡(luò)設(shè)備中執(zhí)行管理功能的一個應(yīng)用程序,也可以指一臺專門用來進行網(wǎng)絡(luò)管理的服務(wù)器。
Agent,即SNMP代理,是一個運行在被管設(shè)備上的軟件模塊,用于維護被管理設(shè)備的信息數(shù)據(jù)(即MIB),還負(fù)責(zé)接收、處理、響應(yīng)來自NMS的請求報文,也可以主動發(fā)送一些通知報文給NMS。
MIB,即管理信息庫,每個Agent都擁有自己的MIB。MIB是一種對象數(shù)據(jù)庫,由設(shè)備所維護的被管理對象組成,并定義了管理對象的一系列屬性:名稱、訪問權(quán)限和數(shù)據(jù)類型等。在MIB中,被管理對象按照層次式樹形結(jié)構(gòu)組織。
SNMP協(xié)議,是用來規(guī)定NMS和Agent之間是如何交換管理信息的應(yīng)用層協(xié)議,它定義了SNMP數(shù)據(jù)包的格式、封裝及傳輸細(xì)節(jié)。
SNMP協(xié)議以Get-Set方式替代了復(fù)雜的命令集,利用基本操作演繹出全部網(wǎng)管操作,實現(xiàn)網(wǎng)絡(luò)管理員的網(wǎng)管需求。
Get (讀)操作:由NMS向Agent發(fā)出請求,讀取被管設(shè)備的配置和狀態(tài)信息。
Set (寫)操作:由NMS向Agent發(fā)出請求,遠(yuǎn)程修改被管設(shè)備的配置參數(shù)。
Trap操作:由Agent主動向NMS發(fā)送Trap報文。當(dāng)被管設(shè)備發(fā)生比較重要的事件時(如接口狀態(tài)改變、呼叫成功等),Agent就會主動通知NMS。
2 交換機數(shù)據(jù)收集環(huán)境配置
1)交換機必須開啟SNMP協(xié)議
SNMP4J是依托于SNMP協(xié)議的,需要所有的管理設(shè)備必須開啟SNMP協(xié)議。不同的交換機開啟協(xié)議命令不一致,如H3C S3600-28P-SI開啟SNMP協(xié)議如下代碼,
#
snmp-agent
snmp-agent local-engineid 800063A200238913C9346877
snmp-agent community write canwrite
snmp-agent community read readonly
snmp-agent sys-info version all
snmp-agent target-host trap address udp-domain 192.12.150.11 params securityname readonly
snmp-agent target-host trap address udp-domain 192.12.150.12 params securityname readonly
snmp-agent trap source NULL0
#
該交換機設(shè)置了寫權(quán)限community canwrite,讀權(quán)限community readonly;開啟了兼容所有的snmpv1,snmpv2,snmpv3 version。主動trap報送數(shù)據(jù)包的地址為192.12.150.11,192.12.150.12。
2)必須允許部署的服務(wù)器IP可以訪問交換機
要取得交換機的實時臺賬以及對交換機進行日常維護操作需要,需要服務(wù)器的IP地址能夠訪問交換機,服務(wù)器的IP地址為192.12.150.11,則需要在交換機上配置規(guī)則如下。
#
acl number 2000
rule 10 permit source 192.12.150.11 0
rule 20 permit source 192.12.150.12 0
#
3 基于SNMP4J交換機運維設(shè)計實現(xiàn)
SNMP4J獲取交換機信息并進行操作的核心是獲取MIB信息庫的OID信息,不同的品牌型號交換機對應(yīng)的OID會有不同。因此,需要需要將交換機對應(yīng)的OID信息建立基礎(chǔ)數(shù)據(jù)字典,以便后續(xù)對其操作。MIB對象的樹型結(jié)構(gòu)組織見圖2所示。Mib-2節(jié)點對應(yīng)的OID為 1.3.6.1.2.1,子節(jié)點system OID為: 1.3.6.1.2.1.1,interfaces OID為:1.3.6.1.2.1.2。
1)Java程序獲取交換機設(shè)備信息部分代碼如下:
PDU pduRead = new PDU ();
pduRead.add(new VariableBinding(new OID(“1.3.6.1.2.1.1.1”));//查詢交換機型號信息。
pduRead.add (new VariableBinding(new OID(“1.3.6.1.2.1.1.2”));//查詢交換機OID信息。
pduRead.setType (PDU.GET);
ResponseEvent respEvntIndex = snmp.send(pduRead, target); Vector
VariableBinding ifAdminStatus = recVBs.elementAt(0);//取得交換機型號信息
VariableBinding ifOperStatus = recVBs.elementAt(1);//取得交換機OID信息
2)開啟關(guān)閉交換機端口
交換機的開啟關(guān)閉需要獲取交換機的ifAdminStatus,OID為 1.3.6.1.2.1.2.2.1.7,該OID值有3個:up(1), down(2), testing(3),只需要設(shè)置對應(yīng)的值。對應(yīng)的交換機端口開啟關(guān)閉部分代碼如下:
PDU pduIf = new PDU ();
Variable varb= (Variable) new Integer32 (Integer.parseInt (operation)).clone ();
pduIf.add (new VariableBinding (new OID (oidStr), varb));
pduIf.setType (PDU.SET);
ResponseEvent respEvntIndex2 = snmp.send (pduIf, target);
3)操作交換機
運用snmp4j結(jié)合Ganymed-ssh2-build210使用SSH協(xié)議對交換機進行用戶界面操作。需要網(wǎng)絡(luò)管理員輸入登錄交換機的用戶名及密碼,或者通過數(shù)據(jù)字典的方式存入數(shù)據(jù)庫中。
4)交換機臺賬實施核對
在線獲取交換機本身的信息,通過IP地址與臺賬中的交換機信息匹配,將每個端口開啟關(guān)閉狀態(tài),連接的計算機設(shè)備信息動態(tài)顯示,極大地方便了網(wǎng)絡(luò)管理員、臺賬管理員的工作。
4 結(jié)束語
基于SNMP協(xié)議及SSH協(xié)議,本文實現(xiàn)了交換機的全面運維管理,基本上解決了臺賬管理員實時核對交換機臺賬的困擾;根據(jù)實時臺賬的端口連接設(shè)備信息, 網(wǎng)絡(luò)管理員可以比較快速準(zhǔn)確的實現(xiàn)計算機設(shè)備MAC地址、IP地址綁定等日常對交換機的業(yè)務(wù)操作。
參考文獻:
[1] 陳建國. 基于SNMP的計算機性能監(jiān)控系統(tǒng)設(shè)計與實現(xiàn)[J]. 福建工程學(xué)院學(xué)報, 2014, 3(12): 225-231.
[2] 吳二勇, 栗海玉. 面向構(gòu)建的SNMP4J網(wǎng)絡(luò)管理模塊開發(fā)[J]. 河南科學(xué), 2012, 4(30): 477-480.
[3] 高飛. 基于SNMP的網(wǎng)絡(luò)管理應(yīng)用研究[J]. 軟件導(dǎo)刊, 2014, 3(13): 130-133.
[4] 劉潤苗,鮑建波, 等. SNMP在配電自動化領(lǐng)域的應(yīng)用和意義[J]. 電力系統(tǒng)及其自動化, 2014, 3(36): 90-93.
[5] 丁云正. Windows平臺上訪問SNMP變量的方法[J]. 現(xiàn)代計算機, 2010(5).