




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議
SNMP是專門用來管理網(wǎng)絡(luò)設(shè)備的一種標(biāo)準(zhǔn)應(yīng)用層協(xié)議,有SNMPv1、SNMPv2、SNMPv3三個(gè)不同的版本和一系列RFC文件。SNMP使網(wǎng)絡(luò)管理員能夠維護(hù)網(wǎng)絡(luò)運(yùn)行,發(fā)現(xiàn)并解決網(wǎng)絡(luò)問題以及規(guī)劃網(wǎng)絡(luò)發(fā)展。
3.1
SNMP的演變11987年11月提出簡(jiǎn)單網(wǎng)關(guān)監(jiān)控協(xié)議(SGMP)2簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議第一版(SNMPv1)公布在1990年和1991年的幾個(gè)RFC文件中,即RFC1155(SMI)RFC1157(SNMP)RFC1212(MIB)RFC1213(MIB-2)3雙軌制策略:SNMP滿足當(dāng)前的網(wǎng)絡(luò)管理需要,并可平穩(wěn)過渡到新的網(wǎng)絡(luò)管理標(biāo)準(zhǔn)。OSI網(wǎng)絡(luò)管理(CMOT)作為長(zhǎng)期解決辦法,可提供更全面的管理功能,但需較長(zhǎng)開發(fā)及接受過程。但OSIMIB采用面向?qū)ο竽P?,開發(fā)緩慢,SNMP無法順利過渡。3.1.1
SNMPv1
1為彌補(bǔ)SNMP的安全缺陷(無數(shù)據(jù)源認(rèn)證功能,不能防止被偷聽),1992年發(fā)布S-SNMP,該協(xié)議增強(qiáng)了以下安全方面的功能:用報(bào)文摘要算法MD5保證數(shù)據(jù)完整性和進(jìn)行數(shù)據(jù)源認(rèn)證;用時(shí)間戳對(duì)報(bào)文排序;用DES算法提供數(shù)據(jù)加密功能。S-SNMP沒有改進(jìn)SNMP功能和效率方面的缺點(diǎn)。于是又提出SMP協(xié)議,該協(xié)議在使用范圍、復(fù)雜程度、速度和效率、安全措施、兼容性等方面對(duì)SNMP進(jìn)行了擴(kuò)充。1996年1月發(fā)布SNMPv2C,它以SMP為基礎(chǔ),放棄了S-SNMP。SNMPv2和SNMPv2C的RFC如表5-1。
3.1.2
SNMPv2表3-1
有關(guān)SNMPv2和SNMPv2C的RFC文件
SNMPv2(1993.5)名稱SNMPv2(1996.1)1441SNMPv2簡(jiǎn)介19011442SNMPv2管理信息結(jié)構(gòu)19021443SNMPv2文本結(jié)構(gòu)約定19031444SNMPv2一致性聲明19041445SNMPv2高層安全模型1446SNMPv2安全協(xié)議1447SNMPv2參加者M(jìn)IB1448SNMPv2協(xié)議操作19051449SNMPv2傳輸層映射19061450SNMPv2管理信息庫19071451管理進(jìn)程間的管理信息庫1452SNMPv2第1版和第2版網(wǎng)絡(luò)管理框架共存1908
SNMPv2不能提供數(shù)據(jù)源標(biāo)識(shí)、報(bào)文完整性認(rèn)證、防止重放、報(bào)文機(jī)密性、授權(quán)和訪問控制、遠(yuǎn)程配置和高層管理能力等。因此后來在此基礎(chǔ)上又進(jìn)行了修訂,1999年4月公布了SNMPv3的新標(biāo)準(zhǔn)草案。增加了安全和高層管理功能,且能和以前的標(biāo)準(zhǔn)(SNMPv1和SNMPv2)兼容,以便于以后擴(kuò)充新的模塊,從而形成了統(tǒng)一的SNMP新標(biāo)準(zhǔn)。3.1.3
SNMPv33.2
SNMPv1SNMPv1:
是一種簡(jiǎn)單的請(qǐng)求/響應(yīng)協(xié)議,使用管理者-代理模型,僅支持對(duì)管理對(duì)象值的檢索和修改等簡(jiǎn)單操作。網(wǎng)絡(luò)管理系統(tǒng)發(fā)出一個(gè)請(qǐng)求,管理器則返回一個(gè)響應(yīng)。該過程通過SNMP操作實(shí)現(xiàn)。不足:不支持管理站改變管理信息庫的結(jié)構(gòu),即不能增加和刪除管理信息庫中的管理對(duì)象實(shí)例;管理站不能向管理對(duì)象發(fā)出執(zhí)行一個(gè)動(dòng)作的命令。管理站只能逐個(gè)訪問管理信息庫中的葉節(jié)點(diǎn),不能一次性訪問一個(gè)子樹,這些限制簡(jiǎn)化了SNMP的實(shí)現(xiàn)。3.2.1
SNMPv1協(xié)議數(shù)據(jù)單元
RFC1157使用ASN.1定義SNMPv1。在SNMPv1管理中,管理站和代理之間交換的管理信息構(gòu)成了SNMPv1報(bào)文。報(bào)文由版本號(hào)、團(tuán)體名和協(xié)議數(shù)據(jù)單元三部分組成。版本號(hào)是SNMP版本,RFC1157為第1版。團(tuán)體名用于身份認(rèn)證。SNMPv1共有5種管理操作,只有3種PDU格式。(1)管理站發(fā)出的3種請(qǐng)求報(bào)文,其采用的格式是一樣的,GetRequest
GetNextRequest
SetRequest(2)代理的應(yīng)答報(bào)文格式只有GetResponsePDU(3)TrapPDU◆除TrapPDU之外的四種PDU格式是相同的,共有五個(gè)字段:
PDU類型:有5種
GetRequestPDU
GetNextRequestPDU
SetRequestPDU
GetResponsePDU
TrapPDU請(qǐng)求標(biāo)識(shí)(request-id):賦予每個(gè)請(qǐng)求報(bào)文唯一的整數(shù),用于區(qū)分不同的請(qǐng)求。由于在具體實(shí)現(xiàn)中請(qǐng)求多是在后臺(tái)執(zhí)行的,因而當(dāng)應(yīng)答報(bào)文返回時(shí)要根據(jù)其中的請(qǐng)求標(biāo)識(shí)與請(qǐng)求報(bào)文配對(duì)。請(qǐng)求標(biāo)識(shí)的另一個(gè)作用是檢測(cè)由不可靠的傳輸服務(wù)產(chǎn)生的重復(fù)報(bào)文。錯(cuò)誤狀態(tài)(error-status):表示代理在處理管理站的請(qǐng)求時(shí)可能出現(xiàn)的各種錯(cuò)誤,共有6種錯(cuò)誤狀態(tài),包括noError(0)tooBig(l)noSuchName(2)badValue(3)readOuly(4)genError(5)。錯(cuò)誤索引(error-index):當(dāng)錯(cuò)誤狀態(tài)非0時(shí)指向出錯(cuò)的變量。變量綁定表(variable-binding):變量名和對(duì)應(yīng)值的表,說明要檢索或設(shè)置的所有變量及其值。在檢索請(qǐng)求報(bào)文中,變量的值應(yīng)為0。
◆TrapPDU報(bào)文,有下列字段:PDU類型:
TrapPDU制造商ID(enterprise):表示設(shè)備制造商標(biāo)識(shí),與MIB-2對(duì)象sysObjectID的值相同。代理地址(agent-addr):產(chǎn)生陷入的代理的IP地址。一般陷入(genenric-trap):SNMP定義的陷入類型,共分7類:coldStart(0)wannStart(1)linkDown(2)linkUp(3)authenticationFailure(4)egpNeighborLoss(5)enterpriseSpecific(6)。特殊陷入(specific-trap):與設(shè)備有關(guān)的特殊陷入代碼。時(shí)間戳(time-stamp):代理發(fā)出陷入的時(shí)間,與MIB-2中的對(duì)象sysUpTime的值相同。3.2.2報(bào)文發(fā)送與接收
SNMP報(bào)文在管理站和代理之間傳送,包含GetRequest
GetNextRequest
SetRequest的報(bào)文由管理站發(fā)出,代理以GetResponse響應(yīng)。
Trap報(bào)文由代理發(fā)給管理站,不需應(yīng)答。管理站可連續(xù)發(fā)出多個(gè)請(qǐng)求報(bào)文,然后等待代理返回應(yīng)答報(bào)文。如果在規(guī)定的時(shí)間內(nèi)收到應(yīng)答,則按照請(qǐng)求標(biāo)識(shí)進(jìn)行配對(duì),亦即應(yīng)答報(bào)文必須與請(qǐng)求報(bào)文有相同的請(qǐng)求標(biāo)識(shí)。圖3-2SNMP報(bào)文發(fā)送與應(yīng)答序列發(fā)送報(bào)文的過程:首先按照ASN.1的格式構(gòu)造PDU,交給認(rèn)證進(jìn)程;認(rèn)證進(jìn)程檢查源和目標(biāo)之間是否可以通信,如果通過這個(gè)檢查則把有關(guān)信息(版本號(hào)、團(tuán)體名和PDU)組裝成報(bào)文;最后經(jīng)過BER編碼,將報(bào)文交傳輸實(shí)體發(fā)送出去,如圖3-3所示。圖3-3
生成和發(fā)送SNMP報(bào)文
圖3-4接收和處理SNMP報(bào)文
接收?qǐng)?bào)文時(shí)執(zhí)行下面的過程:首先按照BER編碼恢復(fù)ASN.1報(bào)文。然后對(duì)報(bào)文進(jìn)行語法分析,驗(yàn)證版本號(hào)和認(rèn)證信息等。如果通過分析和驗(yàn)證,則分離出協(xié)議數(shù)據(jù)單元并進(jìn)行語法分析,必要時(shí)經(jīng)過適當(dāng)處理后返回應(yīng)答報(bào)文。在認(rèn)證檢驗(yàn)失敗時(shí)可以生成一個(gè)陷入報(bào)文,向發(fā)送站報(bào)告通信異常情況。無論何種檢驗(yàn)失敗,都丟棄報(bào)文。接收處理過程如圖3-4。變量綁定表
SNMP操作訪問對(duì)象實(shí)例,只能訪問對(duì)象標(biāo)識(shí)樹的葉節(jié)點(diǎn)。為了減少通信負(fù)載,用戶希望一次檢索多個(gè)管理對(duì)象,則可以把多個(gè)變量的值裝入一個(gè)PDU,這時(shí)要用到變量綁定表。
RFC1157建議:在Get和GetNext協(xié)議數(shù)據(jù)單元中發(fā)送實(shí)體把變量置為ASN.1的NULL值,接收實(shí)體處理時(shí)忽略它,在返回的應(yīng)答協(xié)議數(shù)據(jù)單元中設(shè)置為變量的實(shí)際值。3.2.3
SNMPv1操作SNMP實(shí)體可以對(duì)MIB-2中的對(duì)象執(zhí)行以下操作。Get:管理站檢索管理信息庫中標(biāo)量對(duì)象的值。Set:管理站設(shè)置管理信息庫中標(biāo)量對(duì)象的值。Trap:代理向管理站報(bào)告管理對(duì)象的狀態(tài)變化。通過綜合使用這些操作,可以實(shí)現(xiàn)以下管理功能。1.檢索簡(jiǎn)單對(duì)象檢索簡(jiǎn)單標(biāo)量對(duì)象值可用Get操作。如果變量綁定表中包含多個(gè)變量,則一次還可以檢索多個(gè)標(biāo)量對(duì)象的值。接收GetRequest的SNMP實(shí)體以請(qǐng)求標(biāo)識(shí)相同的Get-Response響應(yīng)。3.2.3
SNMPv1操作
GetResponse
操作具有原子性,如果所有請(qǐng)求的對(duì)象值可以得到,則給予應(yīng)答;只要有一個(gè)對(duì)象的值得不到,則可能返回下列錯(cuò)誤條件:
noSuchName:變量綁定表中的一個(gè)對(duì)象無法與MIB中的任何對(duì)象標(biāo)識(shí)符匹配,或者要檢索的對(duì)象是一個(gè)數(shù)據(jù)塊(子樹或表),沒有對(duì)象實(shí)例生成。在此情況下,響應(yīng)實(shí)體返回GetResponsePDU中錯(cuò)誤狀態(tài)為noSuchName,錯(cuò)誤索引設(shè)置為一個(gè)數(shù),指明有問題的變量。變量綁定表中不返回任何值。
tooBig:響應(yīng)實(shí)體可以提供所有要檢索的值,但是變量太多,一個(gè)響應(yīng)PDU裝不下,這往往是由下層協(xié)議數(shù)據(jù)單元大小限制的。這時(shí)響應(yīng)實(shí)體返回一個(gè)應(yīng)答PDU,錯(cuò)誤狀態(tài)字段置為響應(yīng)實(shí)體可以提供所有要檢索的值,但是變量太多,一個(gè)響應(yīng)PDU裝不下,這往往是由下層協(xié)議數(shù)據(jù)單元大小限制的。這時(shí)響應(yīng)實(shí)體返回一個(gè)應(yīng)答PDU,錯(cuò)誤狀態(tài)字段置為tooBig。
genError:
響應(yīng)實(shí)體如不能提供至少一個(gè)對(duì)象的值,則返回的PDU中錯(cuò)誤狀態(tài)字段置為genError,錯(cuò)誤索引置一個(gè)數(shù),指明有問題的變量。變量綁定表中不返回任何值。
圖3.5SNMPPDU響應(yīng)處理邏輯
GetNextRequest
作用與GetRequest基本相同,PDU格式也相同,唯一的差別是GetRequest檢索變量名是對(duì)象實(shí)例,而GetNextRequest是“下一個(gè)”對(duì)象實(shí)例。根據(jù)對(duì)象標(biāo)識(shí)樹的詞典順序,對(duì)于標(biāo)量對(duì)象,對(duì)象標(biāo)識(shí)符所指的下一實(shí)例就是對(duì)象的值。
例3.1
為了說明簡(jiǎn)單對(duì)象的檢索過程,考慮圖3.6所示的例子,這是UDP組的一部分??梢栽跈z索命令中直接指明對(duì)象實(shí)例的標(biāo)識(shí)符:
GetRequest(udpInDatagrams.0,udpNoPorts.0,
udpInErrors.0,udpOutDatagrams.0)可以預(yù)期得到下面的響應(yīng):GetResponse(udpInDatagrams.0=100,udpNoPorts.0=1,
udpInErrors.0=2,udpOutDatagrams.0=200)圖3.6
檢索簡(jiǎn)單對(duì)象例
例3.2
用GetNext命令檢索圖3.6中的4個(gè)值,直接指明對(duì)象標(biāo)識(shí)符:
GetNextRequest(udpInDatagrams,udpNoPorts,
udpInErrors,udpOutDatagrams)得到的響應(yīng)與上例是相同的:
GetResponse(udpInDatagrams.0=100,udpNoPorts.0=1,udpInErrors.0=2,udpOutDatagrams.0=200)可見標(biāo)量對(duì)象實(shí)例標(biāo)識(shí)符(例如udpInDatagrams.0)總是緊跟在對(duì)象標(biāo)識(shí)符(例如udpInDatagrams)后面的。
例3.3
如果代理不支持管理站對(duì)udpNoPorts的訪問,則響應(yīng)會(huì)不同。發(fā)出同樣的命令:
GetNextRequest(udpInDatagrams,udpNoPorts,
udpInErrors,udpOutDatagrams)而得到的響應(yīng)是:
GetResponse(udpInDatagrams.0=100,udpInErrors.0=2,udpInErrors.0=2,udpOutDatagrams.0=200)
可見:當(dāng)代理收到一個(gè)Get請(qǐng)求時(shí),如果能檢索到所有的對(duì)象實(shí)例,則返回請(qǐng)求的每個(gè)值;另一方面,如果有一個(gè)值不可或不能提供,則返回該實(shí)例的下一個(gè)值。
2檢索未知對(duì)象
GetNext命令檢索變量名指示的下一個(gè)對(duì)象實(shí)例,但是并不要求變量名是對(duì)象標(biāo)識(shí)符或者是實(shí)例標(biāo)識(shí)符。例如udpInDatagrams是簡(jiǎn)單對(duì)象,它的實(shí)例標(biāo)識(shí)符是udpInDatagrams.0,而標(biāo)識(shí)符udpInDatagrams.2并不表示任何對(duì)象。如果我們發(fā)出一個(gè)命令:
GetNextRequest(udpInDatagrams.2)則得到的響應(yīng)是:
GetResponse(udpNoPorts.0=1)這說明代理沒有檢查標(biāo)識(shí)符udpInDatagrams.2的有效性,而是直接查找下一個(gè)有效的標(biāo)識(shí)符,得到udpInDatagrams.0后返回了它的下一個(gè)對(duì)象實(shí)例。
例3.4
利用GetNext的檢索未知對(duì)象的特性可以發(fā)現(xiàn)MIB的結(jié)構(gòu)。例如管理站不知道udp組有哪些變量,先試著發(fā)出命令:
GetNextRequest(udp)得到的響應(yīng)是:
GetResponse(udpInDatagrams.0=100)這樣管理站知道了udp組的第一個(gè)對(duì)象,還可以繼續(xù)這樣找到其他管理對(duì)象。
3檢索表對(duì)象
GetNext可用于有效地搜索表對(duì)象。
例3.5
考慮圖3.7所示的例子,如果我們發(fā)出下面的命令,檢索ifNumber的值:
GetRequest(1.3.6.1.2.1.2.1.0)
GetResponse(2)結(jié)果:有兩個(gè)接口。圖3.7
檢索表對(duì)象例
如果想知道每個(gè)接口的數(shù)據(jù)速率,則可以用下面的命令檢索if表的5個(gè)元素:
GetRequest(1.3.6.1.2.1.2.2.1.5.1)最后的1是索引項(xiàng)ifIndex的值。得到的響應(yīng)是:
GetResponse(100000000)說明第一個(gè)接口的數(shù)據(jù)速率是10Mb/s。如果我們發(fā)出的命令是:
GetNextRequest(1.3.6.1.2.1.2.2.1.5.1)則得到的是第二個(gè)接口的數(shù)據(jù)速率:
GetResponse(56000)說明第二個(gè)接口的數(shù)據(jù)速率是56kb/s。
圖3.7
檢索表對(duì)象例
ifEntry例3.6
考慮圖3.8所示的表。假定管理站不知道該表的行數(shù)而想檢索整個(gè)表,則可以連續(xù)使用GetNext命令:
GetNextRequest(ipRouteDest,ipRouteMetric1,ipRouteNextHop)
GetResponse(ipRouteDest.9.1.2.3=9.1.2.3,
ipRouteMetric1.9.1.2.3=3,
ipRouteNextHop.9.1.2.3=99.0.0.3)圖3.8
檢索表對(duì)象例
以上是第1行的值,據(jù)此可以檢索下一行:GetNextRequest(ipRouteDest.9.1.2.3,ipRouteMetric1.9.1.2.3,ipRouteNextHop.9.1.2.3)GetResponse(ipRouteDest.10.0.0.51=10.0.0.51,ipRouteMetric1.10.0.0.51=5,ipRouteNextHop.10.0.0.51=89.1.1.42)繼續(xù)檢索第3行和第4行:GetNextRequest(ipRouteDest.10.0.0.51,ipRouteMetric1.10.0.0.51,ipRouteNextHop.10.0.0.51)GetResponse(ipRouteDest.10.0.0.99=10.0.0.99,ipRouteMetric1.10.0.0.99=5,ipRouteNextHop.10.0.0.99=89.1.1.42)GetNextRequest(ipRouteDest.10.0.0.99,ipRouteMetric1.10.0.0.99,ipRouteNextHop.10.0.0.99)GetResponse(ipRouteDest.9.1.2.3=3,ipRouteMetric1.9.1.2.3=99.0.0.3,
ipNetToMediaIfIndex.1.3=1)該對(duì)象為表外對(duì)象4表的更新和刪除
Set命令用于設(shè)置或更新變量的值。它的PDU格式與Get是相同的,但是在變量綁定表中必須包含要設(shè)置的變量名和變量值。(1)對(duì)于Set命令的應(yīng)答也是GetResponse,同樣是原子性的。(2)如果所有的變量都可以設(shè)置,則更新所有變量的值,并在應(yīng)答的GetResponse中確認(rèn)變量的新值;如果至少有一個(gè)變量的值不能設(shè)置,則所有變量的值都保持不變,并在錯(cuò)誤狀態(tài)中指明出錯(cuò)的原因。(3)Set出錯(cuò)的原因與Get是類似的(tooBig、noSuchName
和genError),然而若有一個(gè)變量的名字和要設(shè)置的值在類型、長(zhǎng)度或?qū)嶋H值方面不匹配,則返回錯(cuò)誤條件badValue。
例3.7
再一次考慮圖3.8所示的表。如果我們想改變列對(duì)象ipRouteMetric1的第一個(gè)值,則可以發(fā)出命令:
SetRequest(ipRouteMetric1.9.1.2.3=9)得到的應(yīng)答是:
GetResponse(ipRouteMetric1.9.1.2.3=9)其效果是該對(duì)象的值由3變成了9。
例3.8
假定想增加一行,則可以發(fā)出下面的命令:SetRequest(ipRouteDest.11.3.3.12=11.3.3.12,
ipRouteMetric.11.3.3.12=9,
ipRouteNextHop.11.3.3.12=91.0.0.5)對(duì)這個(gè)命令如何執(zhí)行,RFC1212有3種解釋:
(1)代理可以拒絕這個(gè)命令,因?yàn)閷?duì)象標(biāo)識(shí)符ipRouteDest.11.3.3.12不存在,所以返回錯(cuò)誤狀態(tài)noSuchName。
(2)代理可以接受這個(gè)命令,并企圖生成一個(gè)新的對(duì)象實(shí)例,但是發(fā)現(xiàn)被賦予的值不適當(dāng),因而返回錯(cuò)誤狀態(tài)badValue。
(3)代理可以接受這個(gè)命令,生成一個(gè)新的行,使表增加到4行,并返回下面的應(yīng)答:GetResponse(ipRouteDest.11.3.3.12=11.3.3.12,
ipRouteMetric.11.3.3.12=9,
ipRouteNextHop.11.3.3.12=91.0.0.5)在具體實(shí)現(xiàn)中,以上3種情況都是可能的。
例3.9
假定原來是3行的表,現(xiàn)在發(fā)出下面的命令:
SetRequest(ipRouteDest.11.3.3.12=11.3.3.12)對(duì)于這個(gè)命令也有兩種處理方法:
(1)由于變量ipRouteDest是索引項(xiàng),因而代理可以增加一個(gè)表行,對(duì)于沒有指定值的變量賦予默認(rèn)值。
(2)代理拒絕這個(gè)操作。如果要生成新行,必須提供一行中所有變量的值。采用哪種方法也是由具體實(shí)現(xiàn)決定的。
例3.10
如果要?jiǎng)h除表中的行,則可以把一個(gè)對(duì)象的值置為invalid:
SetRequest(ipRouteType.7.3.5.3=invalid)得到的響應(yīng)說明表行確已刪除:
GetResponse(ipRouteType.7.3.5.3=invalid)這種刪除是物理的還是邏輯的,又是由具體實(shí)現(xiàn)決定的。在MIB-2中,只有兩種表是可刪除的:ipRouteTable包含ipRouteType,可取值invalid;ipNetToMediaTable包含ipNetToMediaType,可取值invalid。
SNMP沒有提供向管理對(duì)象發(fā)出動(dòng)作命令的機(jī)制,但是可以利用Set命令對(duì)一個(gè)專用對(duì)象設(shè)置值,讓這個(gè)專用對(duì)象的不同值代表不同的命令。例如建立一個(gè)reBoot對(duì)象,可取值0或1,分別使代理系統(tǒng)啟動(dòng)和復(fù)位。
錯(cuò)誤狀態(tài)readOnly沒有在任何應(yīng)答報(bào)文中出現(xiàn)。實(shí)際上,這個(gè)錯(cuò)誤條件在SNMPv1中是沒有用的,在以后的SNMP版本中用另外一個(gè)錯(cuò)誤條件notWritable代替了它。
5陷入操作陷入是由代理向管理站發(fā)出的異步事件報(bào)告,不需要應(yīng)答報(bào)文。SNMPv1規(guī)定了6種陷入條件,另外還有由設(shè)備制造商定義的陷入。
coldStart:發(fā)送實(shí)體重新初始化,代理的配置已改變,通常是由系統(tǒng)失效引起的。
warmStart:發(fā)送實(shí)體重新初始化,但代理的配置沒有改變,這是正常的重啟動(dòng)過程。
linkDown:鏈路失效通知,變量綁定表的第一項(xiàng)指明對(duì)應(yīng)接口表的索引變量及其值。
linkUp:鏈路啟動(dòng)通知,變量綁定表的第一項(xiàng)指明對(duì)應(yīng)接口表的索引變量及其值。
authenticationFailure:發(fā)送實(shí)體收到一個(gè)沒有通過認(rèn)證的報(bào)文。
egpNeighborLoss:相鄰的外部路由器失效或關(guān)機(jī)。
enterpriseSpecific:由設(shè)備制造商定義的陷入條件,在特殊陷入(specific-trap)字段指明具體的陷入類型。
3.2.4
SNMP功能組SNMP組共有30個(gè)對(duì)象。在只支持SNMP站管理功能或只支持SNMP代理功能的實(shí)現(xiàn)中,有些對(duì)象沒有值。除最后一個(gè)對(duì)象,這一組其他對(duì)象都是只讀計(jì)數(shù)器。對(duì)象snmpEnableAuthenTrap可以由管理站設(shè)置,它指示是否允許代理產(chǎn)生“認(rèn)證失效”陷入,這種設(shè)置優(yōu)先于代理自己的配置,這樣就提供了一種可以排除所有認(rèn)證失效陷入的手段。圖3.9MIB-2SNMP功能組
3.2.5
實(shí)現(xiàn)問題
3.2.5實(shí)現(xiàn)問題
3.2.5.1管理站應(yīng)實(shí)現(xiàn)的功能支持?jǐn)U展的MIB:強(qiáng)有力的SNMP對(duì)管理信息庫的支持必須是開放的。特別對(duì)于管理站來說,應(yīng)該能夠裝入其他制造商定義的擴(kuò)展MIB。圖形用戶接口:能夠顯示網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)、顯示設(shè)備的地理位置和狀態(tài)信息,可以計(jì)算并顯示通信統(tǒng)計(jì)數(shù)據(jù)圖表,具有各種輔助計(jì)算工具等。自動(dòng)發(fā)現(xiàn)機(jī)制:要求管理站能夠自動(dòng)發(fā)現(xiàn)代理系統(tǒng),能夠自動(dòng)建立圖標(biāo)并繪制出連接圖形??删幊痰氖录褐С钟脩舳x事件,以及出現(xiàn)這些事件時(shí)執(zhí)行的動(dòng)作。例如路由器失效時(shí)應(yīng)閃動(dòng)圖標(biāo)或改變圖標(biāo)的顏色,顯示錯(cuò)誤狀態(tài)信息,向管理員發(fā)送電子郵件,并啟動(dòng)故障檢測(cè)程序等。高級(jí)網(wǎng)絡(luò)控制功能:例如配置管理站使其可以自動(dòng)地關(guān)閉有問題的集線器、自動(dòng)地分離出活動(dòng)過度頻繁的網(wǎng)段等。面向?qū)ο蟮墓芾砟P停篠NMP其實(shí)不是面向?qū)ο蟮南到y(tǒng)。但很多產(chǎn)品是面向?qū)ο蟮南到y(tǒng),也能支持SNMP。用戶定義的圖標(biāo):方便用戶為自己的網(wǎng)絡(luò)設(shè)備定義有表現(xiàn)力的圖標(biāo)。
3.2.5.2輪詢頻率
SNMP定義的陷入類型是很少的,所以管理站主要靠輪詢收集信息。通常輪詢頻率與網(wǎng)絡(luò)的規(guī)模和代理的多少有關(guān)。而網(wǎng)絡(luò)管理性能還取決于管理站的處理速度、子網(wǎng)數(shù)據(jù)速率、網(wǎng)絡(luò)擁擠程度等眾多的其他因素,所以很難給出準(zhǔn)確的判斷規(guī)則。為了使問題簡(jiǎn)化,我們假定管理站一次只能與一個(gè)代理作用,輪詢只是采用get請(qǐng)求/響應(yīng)這種簡(jiǎn)單形式,而且管理站全部時(shí)間都用來輪詢。輪詢頻率我們有下面的不等式:
N≦T/Δ,其中N=被輪詢的代理數(shù)
T=輪詢間隔
Δ=單個(gè)輪詢需要的時(shí)間。
Δ與下列因素有關(guān):管理站生成一個(gè)請(qǐng)求報(bào)文的時(shí)間從管理站到代理的網(wǎng)絡(luò)延遲代理處理一個(gè)請(qǐng)求報(bào)文的時(shí)間代理產(chǎn)生一個(gè)響應(yīng)報(bào)文的時(shí)間從代理到管理站的網(wǎng)絡(luò)延遲管理站處理一個(gè)響應(yīng)報(bào)文的時(shí)間為了得到需要的管理信息,交換請(qǐng)求/響應(yīng)報(bào)文的數(shù)量例1假設(shè)有一個(gè)LAN,每15分鐘輪詢所有被管理設(shè)備一次(這在當(dāng)前的TCP/IP網(wǎng)絡(luò)中是典型的),管理報(bào)文的處理時(shí)間是50ms,網(wǎng)絡(luò)延遲為1ms(每個(gè)分組1000字節(jié)),沒有產(chǎn)生明顯的網(wǎng)絡(luò)擁擠,則:
Δ=50*4+1*2=202ms=0.202s,
N≦T/Δ=15×60/0.202=4500即管理站最多可支持4500個(gè)設(shè)備。
例2在由多個(gè)子網(wǎng)組成的廣域網(wǎng)中,網(wǎng)絡(luò)延遲更大,數(shù)據(jù)速率更小,通信距離更遠(yuǎn),而且還有路由器和網(wǎng)橋引入的延遲,總的網(wǎng)絡(luò)延遲可能達(dá)到半秒鐘,Δ大約是1.2s,于是有
N≦T/Δ=15×60/1.2=750
管理站可支持的設(shè)備最多為750個(gè)。(1)由于輪詢性能限制,不適合管理大網(wǎng)絡(luò)。(2)不適合檢索大量數(shù)據(jù)。(3)陷入報(bào)文是沒有應(yīng)答的,管理站是否收到陷入報(bào)文,代理不得而知。這樣可能丟掉重要的管理信息。(4)只提供簡(jiǎn)單團(tuán)體名認(rèn)證,安全措施不夠。(5)不能直接向被管理設(shè)備發(fā)送命令。(6)管理信息庫MIB-2支持的管理對(duì)象有限,不足以完成復(fù)雜的管理功能。(7)不支持管理站之間的通信。3.2.6SNMPv1的局限性3.3
SNMPv2
SNMPv2SMI對(duì)SNMPv1SMI進(jìn)行了擴(kuò)充,提供了更嚴(yán)格的規(guī)范,規(guī)定了新管理對(duì)象和MIB文件,是SNMPvlSMI的超集。
SNMPv2SMI引入了4個(gè)關(guān)鍵的概念:對(duì)象的定義概念表通知的定義信息模塊
3.3.1
SNMPv2管理信息結(jié)構(gòu)1.對(duì)象的定義與SNMPvl一樣,SNMPv2也是用ASN.l宏定義OBJECT-TYPE表示管理對(duì)象的語法和語義,但是SNMPv2的OBJECT-TYPE增加了新的內(nèi)容。
OBJECT-TYPEMACRO::=BEGINTYPENOTATION::="SYNTAX"Syntax
UnitsPart
"MAX-ACCESS"Access"STATUS"Status"DESCRIPTION"Text
ReferPart
IndexPart
DefValPartVALUENOTATION::=value(VALUE
ObjectName)END圖3-10SNMPv2對(duì)象宏定義圖3-10所示列出了SNMPv2宏定義的主要部分,與SNMPvl
的宏定義有以下差別:(1)數(shù)據(jù)類型。
◆
SNMPv2增加了兩種新的數(shù)據(jù)類型Unsigned32和Counter64。
◆
Unsigned32與Gauge32在ASN.l中是無區(qū)別的,都是32位的整數(shù),但在SNMPv2中語義不一樣。
◆
Counter64與Counter32一樣,都表示計(jì)數(shù)器,只能增加,不能減少,當(dāng)增加到264?1或232?1時(shí)回零,從頭再增加。
◆
SNMPv2規(guī)定,計(jì)數(shù)器沒有定義的初始值,因此計(jì)數(shù)器的單個(gè)值是沒有意義的,只有連續(xù)兩次讀取計(jì)數(shù)器得到的增加值才是有意義的。圖3-11SNMPv1計(jì)量器和SNMPv2計(jì)量器的比較
關(guān)于Gauge32,SNMPv2規(guī)范澄清了原來標(biāo)準(zhǔn)中一些含糊不清的地方。
◆
在SNMPv2中規(guī)定Gauge32的最大值可以設(shè)置為小于232的任意正數(shù)MAX,而在SNMPv1中Gauge32的最大值總是232-1。
◆
SNMPv2明確了當(dāng)計(jì)量器達(dá)到最大值時(shí)可自動(dòng)減少,而在RFC1155中只是說計(jì)量器的值“鎖定”(Latch)在最大值,但是“鎖定”的含義并沒有定義。(2)UNITS子句。在SNMPv2的OBJECT-TYPE宏定義中增加了UNITS子句。這個(gè)子句用文字說明與對(duì)象有關(guān)的度量單位。當(dāng)管理對(duì)象表示一種度量手段(如時(shí)間)時(shí)這個(gè)子句是有用的。
(3)MAX-ACCESS子句。類似于SNMPvl的ACCESS子句,說明最大的訪問級(jí)別,與授權(quán)策略無關(guān)。
SNMPv2定義的訪問類型中去掉了write-only類,
增加了一個(gè)與概念行有關(guān)的訪問類型read-create,表示可讀、可寫和可生成。還增加了aceessible-for-notify訪問類,這種訪問方式與陷入有關(guān)。例如,下面是SNMPv2MIB中關(guān)于陷入的定義,其中用到了accessible-for-notify。snmpTrapOIDOBJECT-TYPESYNTAXOBJECTIDENTIFIERMAX-ACCESSaccessible-for-notifySTATUScurrentDESCRIPTION"TheauthoritativeidentificationofthetrapcurrentlyBeingsent.ThisvariableoccursasthesecondvarbindinEverySNMPv2-Trap-PDUandInformRequest-PDU.":={snmpTrap1}SNMPv2的5種訪問級(jí)別由小到大排列如下:
not-accessible;accessible-for-notify;
read-only;read-write;read-create。(4)STATUS子句。這個(gè)子句指明對(duì)象狀態(tài)。SNMPv2標(biāo)準(zhǔn)去掉了SNMPvl中的optional和mandatory,只有3種可選狀態(tài)。Current:表示在當(dāng)前的標(biāo)準(zhǔn)中是有效的。Obsolete:表示不必實(shí)現(xiàn)這種對(duì)象。deprecated:表示對(duì)象已經(jīng)過時(shí)了,但是為了兼容舊版本實(shí)現(xiàn)互操作,實(shí)現(xiàn)時(shí)還要支持這種對(duì)象。2.表的定義
與SNMPv1一樣,SNMPv2的管理操作只能作用于標(biāo)量對(duì)象,復(fù)雜的信息要用表來表示。按照SNMPv2規(guī)范,表是行的序列,而行是列對(duì)象的序列。
SNMPv2把表分為以下兩類。
(1)禁止刪除和生成行的表。這種表的最高的訪問級(jí)別是read-write。在很多情況下這種表由代理控制,表中只包含read-only型的對(duì)象。(2)允許刪除和生成行的表。這種表開始時(shí)可能沒有行,由管理站生成和刪除行。行數(shù)可由管理站或代理改變。
在這種表中,必須有一個(gè)列對(duì)象,其SYNTAX子句的值為Rowstatus表的格式:在SNMPv2表的定義中必含有INDEX或AUGMENTS子句,但是只能有兩者其中之一。INDEX子句定義了一個(gè)基本概念行,而INDEX子句中的索引對(duì)象確定了一個(gè)概念行實(shí)例。圖3.12
不允許生成和刪除行的表
圖3.12
不允許生成和刪除行的表
圖3.12
不允許生成和刪除行的表
圖3.12
不允許生成和刪除行的表
AUGMENTS子句的作用是代替INDEX子句,表示概念行的擴(kuò)展。圖3.14是這種表的一個(gè)例子,這個(gè)表是由petTable擴(kuò)充的表。在擴(kuò)充表中,AUGMENTS子句中的變量(petEntry)叫做基本概念行,包含AUGMENTS子句的對(duì)象(moreEntry)叫做概念行擴(kuò)展。實(shí)質(zhì):在已定義的表對(duì)象的基礎(chǔ)上通過增加列對(duì)象定義新表,而不必從頭做起重寫所有的定義。圖3.14
擴(kuò)充表實(shí)例
作為索引的列對(duì)象叫做輔助對(duì)象,是不可訪問的。這個(gè)限制意味了以下情況:(1)讀:SNMPv2規(guī)定,讀任何列對(duì)象的實(shí)例,都必須知道該對(duì)象實(shí)例所在行的索引對(duì)象的值,然而在己經(jīng)知道輔助對(duì)象變量值的情況下讀輔助變量的內(nèi)容就是多余的了。(2)寫:如果管理程序改變了輔助對(duì)象實(shí)例的值,則行的標(biāo)識(shí)也改變了,然而這是不允許的。(3)生成:行實(shí)例生成時(shí)必須同時(shí)給一個(gè)列對(duì)象實(shí)例賦值,在SNMPv2中這個(gè)操作是由代理而不是由管理站完成的。與RMON一樣,SNMPv2允許使用不屬于概念行的外部對(duì)象作為概念行的索引,在這種情況下不能把索引對(duì)象限制為不可訪問的。
3.表的操作允許生成和刪除行的表必須有一個(gè)列對(duì)象,其SYNTAX子句的值為Rowstatus,MAX-ACCESS子句的值為read-write,這種列叫做概念行的狀態(tài)列。狀態(tài)列可取以下6種值。Active(可讀寫):被管理設(shè)備可以使用概念行。NotInService(可讀寫):概念行存在,但由于其他原因而不能使用。3.3.1
SNMPv2管理信息結(jié)構(gòu)NotReady(只讀):概念行存在,但因沒有信息而不能使用。CreateAndGo(只寫不讀):管理站生成一個(gè)概念行實(shí)例時(shí)先設(shè)置成這種狀態(tài),生成過程結(jié)束時(shí)自動(dòng)變?yōu)閍ctive,被管理設(shè)備就可以使用了。CreateAndWait(只寫不讀):管理站生成一個(gè)概念行實(shí)例時(shí)先設(shè)置成這種狀態(tài),但不會(huì)自動(dòng)變成active。Destroy(只寫不讀):管理站需刪除所有的概念行實(shí)例時(shí)設(shè)置成這種狀態(tài)。
說明:這6種狀態(tài)中的5種狀態(tài)(除notReady)是管理站可以用Set操作設(shè)置的狀態(tài),前3種可以是響應(yīng)管理站的查詢而返回的狀態(tài)。圖3-15為一個(gè)允許管理站生成和刪除行的表。講述內(nèi)容包括:概念行的生成概念行的掛起概念行的刪除圖3.15
允許管理站生成和刪除行的表
(1)概念行的生成。生成概念行可以使用兩種不同的方法,分為4個(gè)步驟。①選擇實(shí)例標(biāo)識(shí)符②產(chǎn)生概念行③初始化非默認(rèn)值對(duì)象④激活概念行①選擇實(shí)例標(biāo)識(shí)符。針對(duì)不同的索引對(duì)象可考慮用不同的方法選擇實(shí)例標(biāo)識(shí)符。如果標(biāo)識(shí)符語義明確,則管理站根據(jù)語義選擇標(biāo)識(shí)符,如選擇目標(biāo)路由器地址。如果標(biāo)識(shí)符僅用于區(qū)分概念行,則管理站掃描整個(gè)表,選擇一個(gè)沒有使用的標(biāo)識(shí)符。由MIB模塊提供一個(gè)或一組對(duì)象,輔助管理站確定一個(gè)未用的標(biāo)識(shí)符。管理站選擇一個(gè)隨機(jī)數(shù)作為標(biāo)識(shí)符。
MIB設(shè)計(jì)者可在后兩種方法中選擇。列對(duì)象多的大表,可考慮第3種,小表則可考慮第4種方法。②產(chǎn)生概念行。主要有兩種方法。第一種,管理站通過事務(wù)處理一次性產(chǎn)生和激活概念行。又叫createAndGo方法首先,管理站必須知道表中的哪些列需要提供值,哪些列不能或不必要提供值。如果管理站對(duì)表的列對(duì)象知之甚少,則可以用Get操作檢查要生成的概念行的所有列,其返回值可能是如下幾種情況。返回一個(gè)值,則說明其他管理站己經(jīng)產(chǎn)生該行。返回nosuchInstanee,則說明代理實(shí)現(xiàn)了該列的對(duì)象類型,而且該列在管理站的MIB視圖中是可訪問的,但代理不提供默認(rèn)值。如果該列的訪問特性是“read-write”,則管理站必須用Set操作提供這個(gè)列對(duì)象的值。返回“nosuchobject”,說明代理未實(shí)現(xiàn)該列的對(duì)象類型,或該列在管理站MIB視圖中不可訪問,則管理站不能用Set操作生成該列對(duì)象的實(shí)例。其次,確定列要求后,管理站發(fā)出相應(yīng)的Set操作,并且置狀態(tài)列為“createAndGo”。代理根據(jù)Set提供的信息以及實(shí)現(xiàn)專用的信息設(shè)置列對(duì)象的值,正常時(shí)返回noError響應(yīng),并且置狀態(tài)列為“active”。如果代理不能完成必要的操作,則返回“inconsistentValue”,管理站根據(jù)返回信息確定是否重發(fā)Set操作。第二種方法,管理站與代理協(xié)商生成概念行,但不馬上激活行。又叫createAndWait方法
管理站用Set操作置狀態(tài)列為“createAndWait”,如果代理不接受這種操作,則返回wrongValue,管理站必須以單個(gè)Set操作(事務(wù)處理)為所有列對(duì)象提供值;如果代理執(zhí)行這種操作,則生成概念行,返回noError,狀態(tài)列被置為notReady(代理沒有足夠的信息使得概念行可用)或notInService(代理有足夠的信息使得概念行可用),然后進(jìn)行下一步。③初始化非默認(rèn)值對(duì)象。
管理站用Get操作查詢所有列,以確定是否能夠或需要設(shè)置列對(duì)象的值,返回值情況如下。
◆
代理返回一個(gè)值,則表示代理實(shí)現(xiàn)了該列的對(duì)象類型,而且能夠提供默認(rèn)值。如果該列的訪問特性是read-write,則管理站可用Set操作改變?cè)摿械闹怠?/p>
◆
代理返回noSuchInstanee,說明代理實(shí)現(xiàn)了該列的對(duì)象類型,該列也是管理站可訪問的,但代理不提供默認(rèn)值。如果列訪問特性是“read-write”,則管理站必須以Set操作設(shè)置這個(gè)列對(duì)象的值。
◆代理返回noSuchObject,說明代理沒有實(shí)現(xiàn)該列的對(duì)象類型,或者該列是管理站不可訪問的,則管理站不能設(shè)置該對(duì)象的值。
◆如果狀態(tài)列的值是notReady,則管理站應(yīng)該首先處理其值為noSuchInstanee的列,這一步完成后,狀態(tài)列變成notInService,再進(jìn)行下一步。④激活概念行。
管理站對(duì)所有列對(duì)象實(shí)例滿意后,用Set操作置狀態(tài)列對(duì)象為active。如果代理有足夠的信息使得概念行可用,則返回noError;如果代理沒有足夠的信息使得概念行可用,則返回noInService。至此,行的生成過程完成了。
兩種方法的比較:
①
createAndWait方法把主要的負(fù)擔(dān)放在代理上,要求代理必須維持概念行在notInService狀態(tài)。但是比起createAndGo方法,它能處理任意行的生成,因此功能更強(qiáng)大。
②
CereateAndGo方法在行生成過程中只涉及一兩次PDU交換,因此能更有效地節(jié)約通信資源和管理站時(shí)間,能減少代理系統(tǒng)的復(fù)雜性,但是它不能處理任意行的生成。
(2)概念行的掛起。當(dāng)概念行處于active狀態(tài)時(shí),如果管理站希望概念行脫離服務(wù),以便進(jìn)行修改,則可以發(fā)出Set命令,把狀態(tài)列由active置為notInService。這時(shí)有兩種可能的情況。若代理不執(zhí)行該操作,則返回wrongValue。若代理可執(zhí)行該操作,則返回noError。表定義中的
DESCRIPTION子句需指明在何種情況下可以把狀態(tài)列置為noInService。(3)概念行的刪除。
管理站發(fā)出Set命令,把狀態(tài)列置為destroy,如果這個(gè)操作成功,則概念行立即被刪除。4.通知和信息模塊
通知模塊:
SNMPv2提供了通知類型的宏定義NOTIFICATION-TYPE,如右圖。包含在通知實(shí)例中的MIB對(duì)象序列。當(dāng)SNMPv2實(shí)體發(fā)送通知時(shí)這些對(duì)象的值被傳送給管理站。
DESCRIPTION子句說明了通知的語義。任選的REFERENCE子句包含對(duì)其他MIB模塊的引用。
linkUpNOTIFICATION-TYPEOBJECT{ifIndex,ifAdminStatus,ifOperStatus}
STATUScurrentDESCREPTION"AlinkUptrapsignifiesthattheSNMPv2entity,actinginanagentrole,hasdetectedthattheifOperStatusobjectforoneofitscommunicationlinkshastransitionedoutofthedownstate."
::={snmpTraps4}
SNMPv2還引入了信息模塊的概念,用于說明一組有關(guān)的定義。共有以下3種信息模塊。
MIB模塊:包含一組有關(guān)的管理對(duì)象的定義。
MIB的依從性聲明模塊:使用MODULE-COMPLIANCE和OBJECT-GROUP宏說明有關(guān)管理對(duì)象實(shí)現(xiàn)方面的最小要求。代理能力說明模塊:用AGENT-CAPABILITIES宏說明代理實(shí)體應(yīng)該實(shí)現(xiàn)的能力。
SNMPv2MIB擴(kuò)展和細(xì)化了MIB-2中定義的管理對(duì)象,又增加了新的管理對(duì)象。下面介紹SNMPv2定義的各個(gè)功能組。3.3.2
SNMPv2管理信息庫1.系統(tǒng)組SNMPv2的系統(tǒng)組是MIB-2系統(tǒng)組的擴(kuò)展,圖5-17所示這個(gè)組的管理對(duì)象。增加了與對(duì)象該資源(ObjectResource)有關(guān)的一個(gè)標(biāo)量對(duì)象和一個(gè)表對(duì)象。2.Snmp組
Snmp組是由MIB-2的對(duì)應(yīng)組改造而成的,有些對(duì)象被刪除,同時(shí)又增加了一些新對(duì)象,如圖3-18所示??梢钥闯觯碌腟nmp組對(duì)象少了(只有8個(gè)),去掉了許多對(duì)排錯(cuò)作用不大的變量。3.Mib對(duì)象組 這個(gè)新組包含的對(duì)象與管理對(duì)象的控制有關(guān),分為兩個(gè)子組,如圖3-19所示。第一個(gè)子組snmpTrap由下面兩個(gè)對(duì)象組成:
snmpTrapOID:這是正在發(fā)送的陷入或通知的對(duì)象標(biāo)識(shí)符,這個(gè)變量出現(xiàn)在陷入PDU或通知請(qǐng)求PDU的變量綁定表中的第二項(xiàng)。
snmpTrapEnterprise:這是與正在發(fā)送的陷入有關(guān)的制造商的對(duì)象標(biāo)識(shí)符,當(dāng)SNMPv2的委托代理把一個(gè)RFC1157陷入PDU映像到SNMPv2陷入PDU時(shí),這個(gè)變量出現(xiàn)在變量綁定表的最后。第二個(gè)子組snmpSet僅有一個(gè)對(duì)象snmpSerialNo,這個(gè)對(duì)象用于解決Set操作中可能出現(xiàn)的兩個(gè)問題:
●一個(gè)管理站可能向同一MIB對(duì)象發(fā)送多個(gè)Set操作,保證這些操作按照發(fā)送的順序在MIB中執(zhí)行是必要的,即使在傳送過程中次序發(fā)生了錯(cuò)亂。●
多個(gè)管理站對(duì)MIB的并發(fā)操作可能破壞了數(shù)據(jù)庫的一致性和精確性。
解決這些問題的方法如下:snmpSerialNo的語法是TestAndIncr(文本約定為0..2147483647之間的一個(gè)整數(shù)),假設(shè)它的當(dāng)前值是K,如果代理收到的Set操作置snmpSerialNo的值為K,則這個(gè)操作成功,響應(yīng)PDU中返回K值,這個(gè)對(duì)象的新值增加為K+1(mod231);如果代理收到一個(gè)Set操作,置這個(gè)對(duì)象的值不等于K,則這個(gè)操作失敗,返回錯(cuò)誤值inconsistentValue。4.接口組
MIB-2定義的接口組經(jīng)過一段時(shí)間的使用,發(fā)現(xiàn)有很多缺陷。RFC1573分析了原來的接口組沒有提供的功能和其他不足之處。
(1)接口編號(hào):MIB-2接口組定義變量ifNumber作為接口編號(hào),而且是常數(shù),這對(duì)于允許動(dòng)態(tài)增加/刪除網(wǎng)絡(luò)接口的協(xié)議(例如SLIP/PPP)是不合適的。
(2)接口子層:有時(shí)需要區(qū)分網(wǎng)絡(luò)層下面的各個(gè)子層,而MIB-2沒有提供這個(gè)功能。
(3)虛電路問題:對(duì)應(yīng)一個(gè)網(wǎng)絡(luò)接口可能有多個(gè)虛電路。
(4)不同傳輸特性的接口:MIB-2接口表記錄的內(nèi)容只適合基于分組傳輸?shù)膮f(xié)議,不適合面向字符的協(xié)議(例如PPP、EIARS-232),也不適合面向比特的協(xié)議(例如DS1)和固定信息長(zhǎng)度傳輸?shù)膮f(xié)議(例如ATM)。
(5)計(jì)數(shù)長(zhǎng)度:當(dāng)網(wǎng)絡(luò)速度增加時(shí),32位的計(jì)數(shù)器經(jīng)常溢出回零。
(6)接口速度:ifSpeed最大為(232-1)b/s,但是現(xiàn)在有的網(wǎng)絡(luò)速度已遠(yuǎn)遠(yuǎn)超過這個(gè)限制,例如SONETOC-48為2.488Gb/s。
(7)組播/廣播分組計(jì)數(shù):MIB-2接口組不區(qū)分組播分組和廣播分組,但分別計(jì)數(shù)有時(shí)是有用的。
(8)接口類型:ifType表示接口類型,MIB-2定義的接口類型不能動(dòng)態(tài)增加,只能在推出新的MIB版本時(shí)再增加,而這個(gè)過程一般需要幾年時(shí)間。
(9)ifSpecific問題:MIB-2對(duì)這個(gè)變量的定義很含糊。有的實(shí)現(xiàn)給這個(gè)變量賦予介質(zhì)專用的MIB的對(duì)象標(biāo)識(shí)符,而有的實(shí)現(xiàn)賦予介質(zhì)專用表的對(duì)象標(biāo)識(shí)符,或者是這種表的入口對(duì)象標(biāo)識(shí)符,甚至是表的索引對(duì)象標(biāo)識(shí)符。
解決辦法:改造老的,增加新的。RFC1573對(duì)MIB-2接口組做了一些小的修改:(1)例如重新規(guī)定ifIndex不再代表一個(gè)接口,而是用于區(qū)分接口子層,而且不再限制ifIndex的取值必須在1到ifNumber之間。這樣對(duì)應(yīng)一個(gè)物理接口可以有多個(gè)代表不同邏輯子層的表行,還允許動(dòng)態(tài)地增加/刪除網(wǎng)絡(luò)接口。(2)RFC1573廢除了有些用處不大的變量,例如:
ifInNUcastPkts、ifOutNUPkts、ifOutQLen、ifSpecific。ifSpecific的作用已被ifType代替。把ifType的語法改變?yōu)镮ANAifType,而這種類型可以由Internet編碼機(jī)構(gòu)(InternetAssignedNumberAuthorty)隨時(shí)更新,從而不受MIB版本的限制。(3)RFC1573還對(duì)接口組增加了4個(gè)新表(見圖3.20)接口擴(kuò)展表:
變量ifName表示接口名,表中可能有代表不同子層的多個(gè)行屬于同一接口,它們具有同一接口名。下面的4個(gè)變量(ifInMulticastPkts、ifInBroadcastPkts、ifOutMulticastPkts和ifOutBroadcastPkts)代替了原表中的ifInNUcastPkts和ifOutNUPkts,分別計(jì)數(shù)輸入/輸出的組播/廣播分組數(shù)。
緊接著的8個(gè)變量(6~13)是64位的高容量(High-Capacity)計(jì)數(shù)器,用于高速網(wǎng)絡(luò)中的字節(jié)/分組計(jì)數(shù)。變量ifLinkUpDownTrapEnable分別用枚舉整數(shù)值enabled(1)和disabled(2)表示使能/不使能linkUp和linkDown陷入。
下一個(gè)變量ifHighSpeed是計(jì)量器,記錄接口的瞬時(shí)數(shù)據(jù)速率(Mb/s),如果它的值是n,則表示接口當(dāng)時(shí)的速率在[n-0.5,n+0.5]Mb/s區(qū)間。
對(duì)象ifPromiscuousMode具有枚舉整數(shù)值true(1)或false(2),用于說明接口是否接收廣播和組播分組。最后一個(gè)變量ifConnectorPresent的類型與ifPromis-cuousMode相同,它說明接口子層是否具有物理連接器。
接口堆棧表
接口堆棧表說明接口表中屬于同一物理接口的各個(gè)行之間的關(guān)系,指明哪些子層運(yùn)行于哪些子層之上。該表中的一行定義了ifTable中兩行之間的上下層關(guān)系:ifStackHigherLayer表示上層行的索引值;ifStackLowerLayer表示下層行的索引值;ifStackStatus表示行狀態(tài),用于行的生成和刪除。
接口測(cè)試表:
作用是由管理站指示代理系統(tǒng)測(cè)試接口的故障。該表的一行代表一個(gè)接口測(cè)試。變量ifTestId表示每個(gè)測(cè)試的惟一標(biāo)識(shí)符;變量ifTestStatus說明這個(gè)測(cè)試是否正在進(jìn)行,可以取值notInUse(1)或inUse(2);測(cè)試類型變量ifTestType可以由管理站設(shè)置,以便啟動(dòng)測(cè)試工作。測(cè)試結(jié)果由變量ifTestResult和ifTestCode給出。代理返回管理站的ifTestResult變量可能取下列值之一:
●none(1)——沒有請(qǐng)求測(cè)試;●success(2)——測(cè)試成功;●inProgress(3)——測(cè)試正在進(jìn)行;●notSupported(4)——不支持請(qǐng)求的測(cè)試;●unAbleRun(5)——由于系統(tǒng)狀態(tài)不能測(cè)試;●aborted(6)——測(cè)試夭折;●failed(7)——測(cè)試失敗。測(cè)試過程:
首先檢索變量ifTestId和ifTestStatus的值。如果測(cè)試狀態(tài)是notInUse,則管理站發(fā)出setPDU,置ifTestId的值為先前檢索的值。由于ifTestId的類型是TestAndIncr,因而這一步驟實(shí)際是對(duì)多個(gè)管理站之間并發(fā)操作的控制。如果這一步成功,則由代理系統(tǒng)置ifTestStatus為inUse,置ifTestOwner為管理站的標(biāo)識(shí)字節(jié)串,于是該管理站得到了進(jìn)行測(cè)試的權(quán)利。然后管理站發(fā)出Set命令,置ifTestType為test_to_run,指示代理系統(tǒng)開始測(cè)試。代理啟動(dòng)測(cè)試后立即返回ifTestResult的值inProgress。測(cè)試完成后,代理給出測(cè)試結(jié)果ifTestResult
和ifTestCode。
接收地址表
接收地址表包含每個(gè)接口對(duì)應(yīng)的各種地址(廣播地址、組播地址和單地址)。變量ifRcvAddressAddress表示接口接收分組的地址,變量ifRcvAddressType表示地址的類型,可以取值other(1)、volatile(2)或nonVolatile(3)。易失的(volatile)地址在系統(tǒng)斷電后就丟失了,非易失的地址永遠(yuǎn)存在。變量ifRcvAddressStatus用于行的增加和刪除。
3.3.3
SNMPv2協(xié)議數(shù)據(jù)單元SNMPv2提供了3種訪問管理信息的方法:(1)管理站和代理之間的請(qǐng)求/響應(yīng)通信,這與SNMPv1一致。(2)管理站和管理站之間的請(qǐng)求/響應(yīng)通信,這是SNMPv2特有的,可以由一個(gè)管理站把有關(guān)管理信息告訴給另外一個(gè)管理站。(3)代理系統(tǒng)到管理站的非確認(rèn)通信,即由代理向管理站發(fā)送陷入報(bào)文,報(bào)告出現(xiàn)的異常情況,SNMPv1中也有對(duì)應(yīng)的通信方式。1.SNMPv2報(bào)文
SNMPv2PDU封裝在報(bào)文中傳送,報(bào)文頭提供了簡(jiǎn)單的認(rèn)證功能,而PDU可以完成上面提到的各種操作。SNMPv2報(bào)文的結(jié)構(gòu)分為3部分:◆版本號(hào):0---SNMPv1,1---SNMPv2?!魣F(tuán)體名提供簡(jiǎn)單的認(rèn)證功能,與SNMPvl的用法一樣?!糇鳛閿?shù)據(jù)傳送的PDUSNMPv2實(shí)體發(fā)送報(bào)文一般要經(jīng)過下面4個(gè)步驟。(1)根據(jù)要實(shí)現(xiàn)的協(xié)議操作構(gòu)造PDU。(2)把PDU、源和目標(biāo)端口地址以及團(tuán)體名傳送給認(rèn)證服務(wù),認(rèn)證服務(wù)產(chǎn)生認(rèn)證碼或?qū)?shù)據(jù)進(jìn)行加密,返回結(jié)果。(3)加入版本號(hào)和團(tuán)體名,構(gòu)造報(bào)文。(4)進(jìn)行BER編碼,產(chǎn)生0/1比特串,發(fā)送出去。SNMPv2實(shí)體接收到一個(gè)報(bào)文后要完成下列動(dòng)作。(1)對(duì)報(bào)文進(jìn)行語法檢查,丟棄出錯(cuò)的報(bào)文。(2)把PDU部分、源和目標(biāo)端口號(hào)交給認(rèn)證服務(wù)。如果認(rèn)證失敗,發(fā)送一個(gè)陷入,丟棄報(bào)文。(3)如果認(rèn)證通過,則PDU轉(zhuǎn)換成ASN.1形式。(4)協(xié)議實(shí)體對(duì)PDU做句法檢查,如果通過,根據(jù)團(tuán)體名和適當(dāng)?shù)脑L問策略作相應(yīng)的處理。2.SNMPV2PDUSNMPv2共有6種協(xié)議數(shù)據(jù)單元,分為3種PDU格式。(1)GetRequest、GetNextRequest、SetRequest、InformRequest和Trap等5種PDU(2)
ResponsePDU。注意:(1)、(2)有相同的格式,只是它們的錯(cuò)誤狀態(tài)和錯(cuò)誤索引字段被置為0。(3)GetBulkRequestPDU。圖3.25SNMPv2PDU格式
這些協(xié)議數(shù)據(jù)單元在管理站和代理系統(tǒng)之間或者是兩個(gè)管理站之間交換,以完成需要的協(xié)議操作。管理站和代理系統(tǒng)對(duì)這些PDU的處理和應(yīng)答過程:(1)GetRequestPDU:
SNMPv2對(duì)該操作的響應(yīng)方式與SNMPvl不同:
SNMPvl的響應(yīng)是原子性的,即只要有一個(gè)變量的值檢索不到,就不返回任何值;而SNMPv2的響應(yīng)不是原子性的,允許部分響應(yīng),按照以下規(guī)則對(duì)變量綁定表中的各個(gè)變量進(jìn)行處理。
①如果該變量的對(duì)象標(biāo)識(shí)符前綴不能與這一請(qǐng)求可訪問的任何變量的對(duì)象標(biāo)識(shí)符前綴匹配,則返回一個(gè)錯(cuò)誤值noSuchoObject。②如果變量名不能與這一請(qǐng)求可訪問的任何變量名完全匹配,則返回一個(gè)錯(cuò)誤值noSuchInstanee。這種情況可能出現(xiàn)在表訪問中,即訪問了不存在的行或正在生成中的表行等。③如果不屬于以上情況,則在變量綁定表中返回被訪問的值。④如果由于任何其他原因而處理失敗,則返回一個(gè)錯(cuò)誤狀態(tài)genErr,對(duì)應(yīng)的錯(cuò)誤索引指向有問題的變量。 ⑤如果生成的響應(yīng)PDU太大,超過了本地或請(qǐng)求方的最大報(bào)文限制,則放棄這個(gè)PDU,構(gòu)造一個(gè)新的響應(yīng)PDU,其錯(cuò)誤狀態(tài)為tooBig,錯(cuò)誤索引為0,變量綁定表為空。(2)GetNextRequestPDU:在SNMPv2中,這種檢索請(qǐng)求的格式和語義與SNMPvl基本相同,唯一的差別就是改變了響應(yīng)的原子性。SNMPv2實(shí)體按照下面的規(guī)則處理GetNextPDU變量綁定表中的每一個(gè)變量,構(gòu)造響應(yīng)PDU。①對(duì)變量綁定表中指定的變量在MIB中查找按照詞典順序排列的后繼變量,如果找到則返回該變量(對(duì)象實(shí)例)的名字和值。②如果找不到按照詞典順序排列的后繼變量,則返回請(qǐng)求PDU中的變量名和錯(cuò)誤值endOfMibView。③如果出現(xiàn)其他情況使得構(gòu)造響應(yīng)PDU失敗,則以與GetRequest類似的方式返回錯(cuò)誤值。(3)GetBulkRequestPDU:這是SNMPv2對(duì)原標(biāo)準(zhǔn)的主要增強(qiáng),目的是以最少的交換次數(shù)檢索大量的管理信息,或者說管理站要求盡可能大的響應(yīng)報(bào)文。對(duì)這個(gè)操作的響應(yīng),在選擇MIB變量值時(shí)采用與GetNextRequest同樣的原理,即按照詞典順序選擇后繼對(duì)象實(shí)例,但是這個(gè)操作可以說明多種不同的后繼。
這種塊檢索操作的工作過程:假設(shè)GetBulkRequestPDU變量綁定表中有L個(gè)變量,該P(yáng)DU的“非重復(fù)數(shù)”字段的值為N,則對(duì)前N個(gè)變量應(yīng)各返回一個(gè)詞典后繼。再設(shè)請(qǐng)求PDU的“最大后繼數(shù)”字段的值為M,則對(duì)其余的R=L-N個(gè)變量應(yīng)該各返回最多M個(gè)詞典后繼。如果可能,總共返回N+R×M個(gè)值,這些值的分布如圖3.28所示。如果在任何一步查找過程中遇到不存在后繼的情況,則返回錯(cuò)誤值endOfMibView。圖3.28
GetBulkRequest檢索得到的值
為了說明塊檢索的方法,讓我們考慮一個(gè)例子。假設(shè)有下面的表:這個(gè)表的索引由前兩個(gè)變量組成。如果管理站希望檢索這個(gè)表的值和一個(gè)標(biāo)量對(duì)象sysUpTime的值,則可以發(fā)出這樣的請(qǐng)求:
GetBulkRequest[非重復(fù)數(shù)=1,最大后繼數(shù)=2]
{sysUpTime,ipNetToMediaPhysAddress,ipNetToMediaType}這個(gè)表的索引由前兩個(gè)變量組成。如果管理站希望檢索這個(gè)表的值和一個(gè)標(biāo)量對(duì)象sysUpTime的值,則可以發(fā)出這樣的請(qǐng)求:
GetBulkRequest[非重復(fù)數(shù)=1,最大后繼數(shù)=2]
{sysUpTime,ipNetToMediaPhysAddress,ipNetToMediaType}代理的響應(yīng)是Response((sysUpTime.0="123456"),(ipNetToMediaPhysAddress.1.9.2.3.4="000010543210"),(ipNetToMediaType.1.9.2.3.4="dynamic"),(ipNetToMediaPhysAddress.1.10.0.0.51="000010012345"),(ipNetToMediaType.1.10.0.0.51="static"))管理站又發(fā)出下一個(gè)請(qǐng)求:GetBulkRequest[非重復(fù)數(shù)=1,最大后繼數(shù)=2]{sysUpTime,ipNetToMediaPhysAddress.1.10.0.0.51,
ipNetToMediaType.1.10.0.0.51}代理的響應(yīng)是Response((sysUpTime.0="123466"),(ipNetToMediaPhysAddress.2.10.0.0.15="000010987654"),(ipNetToMediaType.2.10.0.0.15="dynamic"),(ipNetToMediaType.1.9.2.3.4="dynamic"),(ipRoutingDiscards.0="2"))(4)SetRequestPDU:
這個(gè)請(qǐng)求的格式和語義與SNMPvl的相同,差別是處理響應(yīng)的方式小同。
SNMPv2實(shí)體分兩個(gè)階段處理這個(gè)請(qǐng)求的變量綁定表,首先是檢驗(yàn)操作的合法性,然后再更新變量,如果至少有一個(gè)變量綁定對(duì)的合法性檢驗(yàn)沒有通過,則不進(jìn)行下一階段的更新操作。因此這個(gè)操作與SNMPvl一樣,是原子性的。合法性檢驗(yàn)包括以下內(nèi)容:①如果有一個(gè)變量不可訪問,則返回錯(cuò)誤狀態(tài)noAccess。②如果與綁定表中變量共享對(duì)象標(biāo)識(shí)符的任何MIB變量都不能生成、不能修改,也不接受指定的值,則返回錯(cuò)誤狀態(tài)notWritable。③如果要設(shè)置的值的類型不適合被訪問的變量,則返回錯(cuò)誤狀態(tài)wrongType。④如果要設(shè)置的值的長(zhǎng)度與變量的長(zhǎng)度限制不同,則返回錯(cuò)誤狀態(tài)wrongLength。⑤如果要設(shè)置的值的ASN.1編碼不適合變量的ASN.1標(biāo)簽,則返回錯(cuò)誤狀態(tài)wrongEncoding。⑥如果指定的值在任何情況下都不能賦予變量,則返回錯(cuò)誤狀態(tài)wrongValue。⑦如果變量不存在,也不能生成,則返回
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- JG/T 125-2007建筑門窗五金件合頁(鉸鏈)
- DZ/T 0189-1997同位素地質(zhì)年齡數(shù)據(jù)文件格式
- DZ/T 0010-1991砂礦勘探鉆機(jī)技術(shù)條件
- 實(shí)戰(zhàn)多媒體應(yīng)用設(shè)計(jì)師考試試題及答案
- 為你解讀軟考軟件評(píng)測(cè)師試題及答案
- 多媒體應(yīng)用設(shè)計(jì)師考試的前景展望及試題及答案
- 清晰認(rèn)識(shí)初級(jí)社會(huì)工作者考試及試題及答案
- 持續(xù)學(xué)習(xí)對(duì)2025年網(wǎng)絡(luò)規(guī)劃設(shè)計(jì)師考試成功的重要性試題及答案
- 煤廠安全設(shè)備管理制度
- 藥房霧化區(qū)域管理制度
- 精裝分包勞務(wù)合同協(xié)議書
- 高填方路基施工危險(xiǎn)源辨識(shí)及風(fēng)險(xiǎn)評(píng)價(jià)
- 口服葡萄糖耐量試驗(yàn)ppt課件 (2)
- 小學(xué)語文教學(xué)研究(有答案)-國(guó)家開放大學(xué)2022年1月(2020秋)期末考試復(fù)習(xí)資料、試題及答案
- 描述性分析與不平等的度量方法(1)
- 微積分基本公式
- 參考食品加工操作流程圖
- 國(guó)科大葉齊祥機(jī)器學(xué)習(xí)期末考試
- 高新區(qū)孵化器亮化工程投標(biāo)文件商務(wù)標(biāo)格式
- DB45∕T 2418-2021 水運(yùn)工程交工檢測(cè)與竣工檢測(cè)規(guī)范
- 英雄壇說人物位置
評(píng)論
0/150
提交評(píng)論