国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

SNMP協(xié)議家族的新成員

2016-06-06 06:07:49陶晉
中國(guó)教育網(wǎng)絡(luò) 2016年4期
關(guān)鍵詞:字段報(bào)文數(shù)據(jù)包

文/陶晉

?

SNMP協(xié)議家族的新成員

文/陶晉

在當(dāng)前國(guó)內(nèi)高校的網(wǎng)絡(luò)管理中, SNMP一直是被普遍接受的通用網(wǎng)絡(luò)管理協(xié)議標(biāo)準(zhǔn)和工業(yè)標(biāo)準(zhǔn)。但是隨著各高校網(wǎng)絡(luò)設(shè)備數(shù)量越來(lái)越多和復(fù)雜,需管理監(jiān)控的數(shù)據(jù)日益增多,使SNMP網(wǎng)絡(luò)管理協(xié)議更高效地工作,成為了保障高校網(wǎng)絡(luò)安全運(yùn)維的重要條件。上海財(cái)經(jīng)大學(xué)網(wǎng)絡(luò)中心對(duì)此問(wèn)題做了專門研究,設(shè)計(jì)出兩種新的SNMP服務(wù),并利用現(xiàn)有的SNMP4J開源庫(kù),在其總體框架上進(jìn)行擴(kuò)展,有效地提高了網(wǎng)絡(luò)設(shè)備的管理效率。

校園網(wǎng)絡(luò)設(shè)備管理現(xiàn)狀

上海財(cái)經(jīng)大學(xué)現(xiàn)有網(wǎng)絡(luò)設(shè)備1000多臺(tái),需管理的設(shè)備型號(hào)復(fù)雜多樣, 尤其是核心層設(shè)備上的管理數(shù)據(jù)量非常大,使用傳統(tǒng)的SNMP管理協(xié)議來(lái)監(jiān)控和管理效率比較低。對(duì)于學(xué)校的網(wǎng)絡(luò)管理系統(tǒng)來(lái)說(shuō),如設(shè)備告警和性能等許多業(yè)務(wù)數(shù)據(jù),是通過(guò)管理信息庫(kù)MIB表來(lái)獲取的。由于SNMP標(biāo)準(zhǔn)報(bào)文GET,GETNEXT報(bào)文的限制,如要獲取相關(guān)的業(yè)務(wù)數(shù)據(jù)信息,必須將整個(gè)MIB表中告警和性能節(jié)點(diǎn)的數(shù)據(jù)全部獲取下來(lái),然后再進(jìn)行過(guò)濾篩選。當(dāng)整個(gè)MIB表非常龐大時(shí),這種做法耗時(shí)較長(zhǎng)且會(huì)消耗較多的帶寬。

圖1

SNMP新成員構(gòu)思方案

針對(duì)以上問(wèn)題,我們?cè)谏虾X?cái)經(jīng)大學(xué)網(wǎng)絡(luò)管理系統(tǒng)中設(shè)計(jì)了新的解決方案,提出兩種新的SNMP服務(wù),getAlm和getPm。

首先在新SNMP服務(wù)中需對(duì)過(guò)濾條件進(jìn)行設(shè)置,封裝在SNMP的GET報(bào)文中,有選擇的獲取MIB對(duì)象值。新服務(wù)沿襲了SNMP協(xié)議內(nèi)容簡(jiǎn)單的特點(diǎn),只需對(duì)PDU報(bào)文的get-request進(jìn)行擴(kuò)充(get-Alm-request和get-Pm-request),response報(bào)文結(jié)構(gòu)維持不變,但需要在返回的PDU數(shù)據(jù)包中,增加對(duì)新服務(wù)的異常狀態(tài)處理。

對(duì)于get-Alm-request,默認(rèn)設(shè)置的過(guò)濾選項(xiàng):cardtype板卡類型,severity嚴(yán)重級(jí)別,alarmtype告警類型,alarmtime告警產(chǎn)生時(shí)間。而對(duì)于get-Pm-request,默認(rèn)選項(xiàng)包括:pfmtime性能產(chǎn)生時(shí)間 ,pfminterval性能監(jiān)控間隔(包含15分鐘或24小時(shí)), cardtype板卡類型,pfmparameters性能監(jiān)控參數(shù)。上述這些選項(xiàng)可在SNMP管理端進(jìn)行設(shè)置,SNMP的Agent端支持按上述選項(xiàng)過(guò)濾輸出結(jié)果。

對(duì)SNMP協(xié)議數(shù)據(jù)單元做如下新的定義:

從上表可以看出,在使用ASN.1描述SNMP的Protocol Data Unit(協(xié)議數(shù)據(jù)單元簡(jiǎn)稱PDU)定義中,在choice可供選擇的類型中新增了“20”和“21”兩種新類型。

對(duì)于這兩種新PDU的定義,在下面的ASN.1中給出了具體描述。

上述PDU設(shè)計(jì)了最多八個(gè)邏輯表達(dá)式的條件,現(xiàn)在假設(shè)這個(gè)過(guò)濾條件數(shù)為n,這n個(gè)條件將出現(xiàn)在VarBindList變量表中。對(duì)于varbindlist的變量名和值,這里的變量名指的是上述cardtype, severity等過(guò)濾選項(xiàng)所對(duì)應(yīng)的目標(biāo)Object Identifiers(簡(jiǎn)稱OID)值。而變量值羅列出了這些目標(biāo)對(duì)象可能的取值范圍。在邏輯條件表達(dá)式中,需要邏輯運(yùn)算符來(lái)把變量名和值聯(lián)系起來(lái)。因此設(shè)計(jì)了在目標(biāo)對(duì)象名中用固定的整數(shù)值來(lái)表示相應(yīng)的邏輯運(yùn)算符:0表示“=”,1表示“<”, 2表示“>”, 3表示“<=”,4表示“>=”, 5表示“!=”。

這樣varbindlist變量表中的名和值鍵值就可以聯(lián)系起來(lái)了。下面給出varbindlist的定義。

(出現(xiàn)在response報(bào)文中可能返回的異常結(jié)果。)

這里設(shè)置的endOfAlmTable和endOfPmTable標(biāo)簽,是因?yàn)榭紤]到設(shè)置的返回記錄數(shù)大于實(shí)際數(shù)目時(shí)可以提前跳出。varbindlist變量表中的字段包括了兩個(gè)條目:過(guò)濾條件和請(qǐng)求字段。其中的前x個(gè)varbind表示過(guò)濾條件,x的值就是number-of-logic字段值,其中每個(gè)varbind由變量名和值組成;而其余的varbind表示請(qǐng)求字段,其中的varbind只包含了所取的變量名。

另外兩個(gè)PDU中的max-returnrecords字段表示了根據(jù)條件,AGENT端所返回的最大記錄行數(shù)。如果該值設(shè)置成了n,則只會(huì)返回所有結(jié)果集中的前n條記錄數(shù)據(jù)。如果max-return-records設(shè)置成了-1,那么AGENT就會(huì)返回所有的記錄結(jié)果。

當(dāng)AGENT在處理get-Alm-request 和get-Pm-request請(qǐng)求報(bào)文的過(guò)程中,可能會(huì)出現(xiàn)各種異常情況,因此也需要對(duì)response報(bào)文作相應(yīng)的修改。

下面給出它的定義。

上述定義中,20-23是針對(duì)getAlm和getPm請(qǐng)求報(bào)文的響應(yīng)。numberOfLogicError指的是邏輯條件數(shù)錯(cuò)誤,由于目前設(shè)計(jì)的最大條件數(shù)為8,因此取值范圍為1到8。maxReturnRecords應(yīng)為最大返回的記錄數(shù),如取值異常,maxReturnRecordsError就會(huì)顯示錯(cuò)誤。myObjectNameWrong指的是由于myObjectName后的數(shù)值取值異常而引起的錯(cuò)誤。正常情況下,myObjectName后的數(shù)值只能在0到5之間取整數(shù)值。最后的conditionWrong指的是在getAlm和getPm請(qǐng)求中使用了錯(cuò)誤的過(guò)濾條件,所取數(shù)值超過(guò)了取值范圍,將會(huì)返回conditionWrong狀態(tài)的錯(cuò)誤。

SNMP新成員具體實(shí)現(xiàn)方案

getAlm和getPm報(bào)文是用來(lái)提升現(xiàn)有SNMP管理性能的,在目前現(xiàn)有的SNMP管理端解決方案中,我們選用了SNMP4J, 在保持原有大框架不變的前提下,做簡(jiǎn)要的擴(kuò)充,以支持這兩種新報(bào)文,滿足功能需求。

圖2給出了相關(guān)類圖的簡(jiǎn)要設(shè)計(jì)。主要思想是對(duì)SNMP4J中的PDU和VariableBinding類做了擴(kuò)展,新增了WDMPDU類和WDMVariableBinding類,分別繼承了SNMP4J框架中原有的PDU類和VariableBinding類。

圖2

在原有的PDU類中,包含了各種PDU數(shù)據(jù)包類型和各種異常情況狀態(tài)等屬性,根據(jù)新增的兩種getPDU類型,在WDMPDU類中需增加相應(yīng)的屬性,即GetWDMAlm 和GetWDMPm,同時(shí)也新增了4種異常情況狀態(tài)屬性。在PDU類中包含了一些方法,分別是addOID(),getVariable(),getBERPayloadLength(),decodeBER(),encodeBER(),getTypeString()等。其中addOID()給PDU報(bào)文增加mib號(hào),getVariable()獲取對(duì)應(yīng)的mib節(jié)點(diǎn)數(shù)值。getBERPayloadLength()獲取PDU報(bào)文的內(nèi)容長(zhǎng)度,是由requestID,errorstatus,errorIndex,還有variableBinding各字段長(zhǎng)度值累加組成。其中errorstatus字段在response報(bào)文中表示報(bào)文錯(cuò)誤狀態(tài)碼,在getAlm和getPm報(bào)文中表示的是邏輯操作符數(shù)目numberOfLogic;errorIndex字段在返回報(bào)文中表示錯(cuò)誤索引值,在getAlm和getPm中表示的是返回記錄數(shù)maxReturnRecords。另外requestID報(bào)文標(biāo)識(shí)值長(zhǎng)度計(jì)算方法也相同,variableBinding長(zhǎng)度值是由VariableBinding類來(lái)計(jì)算。因此WDMPDU類中g(shù)etBERPayloadLength()和原來(lái)的計(jì)算方式相同,再加上addOID()和getVariable(),不需要在子類中重寫相關(guān)方法。PDU類中的encodeBER()和decodeBER()分別對(duì)即將進(jìn)入網(wǎng)絡(luò)傳輸?shù)腜DU數(shù)據(jù)包的輸出流,和進(jìn)入主機(jī)的PDU數(shù)據(jù)包的輸入流進(jìn)行編碼和解碼,也需要分別對(duì)上述requestID,errorStatus,errorIndex和variableBinding字段進(jìn)行編碼解碼,還需要對(duì)報(bào)文的類型是否正確進(jìn)行判斷,這就需要在WDMPDU子類中對(duì)這兩個(gè)方法進(jìn)行重寫,以支持新增加的GetAlm和GetPm報(bào)文。PDU類中的getTypeString()也需要重寫,它根據(jù)PDU報(bào)文類型返回對(duì)應(yīng)的報(bào)文描述,需要增加新增兩種報(bào)文的支持。

在原有的VariableBinding類中,包含了oid和variable屬性,分別表示mib節(jié)點(diǎn)標(biāo)識(shí)和對(duì)應(yīng)的值。WDMVariableBind類由于新增了比較運(yùn)算符,因此新增了operator屬性。VariableBinding類含有oid和variable 的get和set方法,用來(lái)獲取和設(shè)置對(duì)應(yīng)的屬性值。它們?cè)谧宇怶DMVariableBind類中同樣存在,因此這里不需要被重寫,直接繼承父類中的方法即可。VariableBinding類中的decodeBER()和encodeBER()對(duì)進(jìn)出網(wǎng)絡(luò)的PDU數(shù)據(jù)包中的variable變量綁定域的輸入輸出流進(jìn)行編碼和解碼,原先的方法中只是對(duì)oid和variable屬性分別進(jìn)行編碼和解碼,現(xiàn)在WDMVariableBind類新增了oparator屬性,在編碼和解碼過(guò)程中需要增加對(duì)operator屬性的編碼解碼操作,因此在WDMVariableBind類中重寫了這兩個(gè)方法。最后VariableBind類中的getBERPayloadLength()方法用于返回PDU報(bào)文中variable變量綁定域的內(nèi)容長(zhǎng)度,是由oid和variable這兩個(gè)屬性內(nèi)容的長(zhǎng)度值累加而成。現(xiàn)在新增了operator屬性,同樣需要在WDMVariableBind類中重寫這一方法,需要將這三個(gè)屬性內(nèi)容的長(zhǎng)度做累加。

WDMSNMPRequest類提供了常用的GET,GETNEXT,SET等標(biāo)準(zhǔn)SNMP相關(guān)操作,還增加了GETWDMAlm和GETWDMPm方法。該類繼承了標(biāo)準(zhǔn)SNMP4J框架中的SnmpRequest類,SnmpRequest類提供了mib表示符oid號(hào),SNMP版本號(hào),PDU數(shù)據(jù)包類型,允許的超時(shí)時(shí)間,地址,團(tuán)體字符串等屬性信息,還包括了獲取和設(shè)置oid相關(guān)數(shù)值的方法,創(chuàng)建snmp會(huì)話的方法等。例如getPDU()方法利用父類的createSnmpSession()方法創(chuàng)建snmp會(huì)話,然后進(jìn)行監(jiān)聽。隨后創(chuàng)建target對(duì)象,設(shè)置該對(duì)象的address,timeout,版本信息等屬性。接著根據(jù)需要,創(chuàng)建PDU數(shù)據(jù)包對(duì)象或是新增的WDMPDU數(shù)據(jù)包對(duì)象,并設(shè)置PDU類型,增加VariableBinding對(duì)象或新增的WDMVariableBind對(duì)象到PDU數(shù)據(jù)包對(duì)象中,如果是GETWDMAlm和GETWDMPm操作,還需調(diào)用WDMPDU類中的setNumberOfLogic()和setMaxReturnRecords()對(duì)過(guò)濾條件數(shù)和最大返回記錄數(shù)進(jìn)行設(shè)置。最后等待AGENT端返回標(biāo)準(zhǔn)的SNMP的Response數(shù)據(jù)包,關(guān)閉snmp會(huì)話。WDMSNMPRequest在此基礎(chǔ)上進(jìn)行了擴(kuò)展。

下面結(jié)合SNMP4J的框架,給出具體的實(shí)現(xiàn)的流程。

實(shí)現(xiàn)流程:

如圖3所示,首先實(shí)例化一個(gè)SNMP對(duì)象,調(diào)用該對(duì)象的listen()方法監(jiān)聽消息。構(gòu)造UserTarget對(duì)象設(shè)置對(duì)應(yīng)屬性。接著構(gòu)造一個(gè)PDU或是WDMPDU對(duì)象,生成一個(gè)包含了MIB庫(kù)中ID的OID對(duì)象,將此對(duì)象添加到PDU或是WDMPDU對(duì)象中去,且需設(shè)置該報(bào)文獲取類型。上述過(guò)程完成后,就可以調(diào)用Snmp類中的send()函數(shù)來(lái)發(fā)送消息了。

圖3

消息被發(fā)送之后,便等待響應(yīng)的到達(dá),到達(dá)后返回一個(gè)ResponseEvent對(duì)象,該類提供了getResponse()方法,可以取到返回的PDU或WDMPDU對(duì)象。

示例代碼:

接著創(chuàng)建wdmpdu對(duì)象:

如整型則對(duì)應(yīng)初始化相應(yīng)的類型 new Integer32(value)。

再將wdmpdu對(duì)象賦予對(duì)應(yīng)mib的oid值:wdmpdu.add(new WDMVariableBinding(new OID(oids), var));

設(shè)置w d m p d u屬性,如w d m p d u . setType(WDMPDU.GetWDMAlm)。

通過(guò)snmp.set(wdmpdu,target). getResponse; 就可得到對(duì)應(yīng)的返回結(jié)果。最后關(guān)閉連接snmp.close()。

應(yīng)用效果

經(jīng)實(shí)際環(huán)境下的測(cè)試,發(fā)現(xiàn)通過(guò)增加過(guò)濾條件設(shè)置,擴(kuò)充協(xié)議新成員的方案,能夠提高性能表現(xiàn)。與標(biāo)準(zhǔn)的GET報(bào)文相比,在獲取大量告警或性能信息的時(shí)候,采用getAlm或getPm,從request請(qǐng)求數(shù),response響應(yīng)數(shù),發(fā)送和接收字節(jié)數(shù)以及延時(shí)各方面比較了GET 與getAlm或是getPm的差異。

比較獲取告警信息時(shí)的差異發(fā)現(xiàn),需要獲取告警級(jí)別是critical,且告警類型是設(shè)備告警的所有信息。在本實(shí)驗(yàn)中需要得到的是severity和alarmtype節(jié)點(diǎn)。構(gòu)造過(guò)濾條件:(severity=“critical”)AND(alarmtype=“device”),而請(qǐng)求獲取的字段則是告警時(shí)間和板卡類型。

比較獲取性能參數(shù)信息時(shí)的差異,現(xiàn)在需要獲取性能間隔參數(shù)是15分鐘,且板卡類型是LWX2雙通道任意速率通道轉(zhuǎn)換板的所有信息。在本實(shí)驗(yàn)中需要得到的是pfminterval和cardtype節(jié)點(diǎn)。構(gòu)造的過(guò)濾條件:(pfminterval=“15”)AND(cardtype=“LWX2”)。

通過(guò)以上實(shí)驗(yàn)發(fā)現(xiàn),使用getAlm或getPm來(lái)獲取告警和性能信息, 特別是在有大量數(shù)據(jù)需要獲取的時(shí)候, 能夠減少網(wǎng)絡(luò)中傳輸?shù)膶?duì)象字節(jié)數(shù),減少延時(shí)。

目前,上海財(cái)經(jīng)大學(xué)網(wǎng)絡(luò)中心通過(guò)與設(shè)備廠商合作,通過(guò)對(duì)設(shè)備進(jìn)行固件的升級(jí),大多數(shù)設(shè)備已經(jīng)支持以上這種新的獲取告警與性能數(shù)據(jù)的方式。網(wǎng)絡(luò)管理系統(tǒng)獲取管理數(shù)據(jù)非常高效。

(作者單位為上海財(cái)經(jīng)大學(xué)教育技術(shù)中心)

猜你喜歡
字段報(bào)文數(shù)據(jù)包
基于J1939 協(xié)議多包報(bào)文的時(shí)序研究及應(yīng)用
汽車電器(2022年9期)2022-11-07 02:16:24
圖書館中文圖書編目外包數(shù)據(jù)質(zhì)量控制分析
CTCS-2級(jí)報(bào)文數(shù)據(jù)管理需求分析和實(shí)現(xiàn)
淺析反駁類報(bào)文要點(diǎn)
SmartSniff
ATS與列車通信報(bào)文分析
CNMARC304字段和314字段責(zé)任附注方式解析
無(wú)正題名文獻(xiàn)著錄方法評(píng)述
基于Libpcap的網(wǎng)絡(luò)數(shù)據(jù)包捕獲器的設(shè)計(jì)與實(shí)現(xiàn)
關(guān)于CNMARC的3--字段改革的必要性與可行性研究
宁河县| 宁城县| 洪江市| 天峨县| 南昌市| 漾濞| 津市市| 堆龙德庆县| 南丹县| 合水县| 霸州市| 恩平市| 长白| 克什克腾旗| 枝江市| 竹山县| 宜昌市| 株洲县| 汕头市| 东明县| 宝山区| 乐清市| 依安县| 保定市| 元谋县| 信丰县| 疏勒县| 阳谷县| 安国市| 荣成市| 福贡县| 乌拉特中旗| 纳雍县| 大厂| 常山县| 巴马| 宝清县| 丹阳市| 新巴尔虎右旗| 明溪县| 平阴县|