簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議(SNMP)是什么
許多學(xué)網(wǎng)絡(luò)知識(shí)的朋友,當(dāng)你接觸網(wǎng)絡(luò)協(xié)議內(nèi)容時(shí),一般來(lái)說(shuō)第一個(gè)都會(huì)講簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議(SNMP),那么簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議是什么呢?大家跟著學(xué)習(xí)啦小編一起來(lái)學(xué)習(xí)吧。
一、 SNMP概述
SNMP的前身是簡(jiǎn)單網(wǎng)關(guān)監(jiān)控協(xié)議(SGMP),用來(lái)對(duì)通信線路進(jìn)行管理。隨后,人們對(duì)SGMP進(jìn)行了很大的修改,特別是加入了符合Internet定義的SMI和MIB:體系結(jié)構(gòu),改進(jìn)后的協(xié)議就是著名的SNMP。SNMP的目標(biāo)是管理互聯(lián)網(wǎng)Internet上眾多廠家生產(chǎn)的軟硬件平臺(tái),因此SNMP受Internet標(biāo)準(zhǔn)網(wǎng)絡(luò)管理框架的影響也很大。現(xiàn)在SNMP已經(jīng)出到第三個(gè)版本的協(xié)議,其功能較以前已經(jīng)大大地加強(qiáng)和改進(jìn)了。
SNMP的體系結(jié)構(gòu)是圍繞著以下四個(gè)概念和目標(biāo)進(jìn)行設(shè)計(jì)的:保持管理代理(agent)的軟件成本盡可能低;最大限度地保持遠(yuǎn)程管理的功能,以便充分利用Internet的網(wǎng)絡(luò)資源;體系結(jié)構(gòu)必須有擴(kuò)充的余地;保持SNMP的獨(dú)立性,不依賴于具體的計(jì)算機(jī)、網(wǎng)關(guān)和網(wǎng)絡(luò)傳輸協(xié)議。在最近的改進(jìn)中,又加入了保證SNMP體系本身安全性的目標(biāo)。
另外,SNMP中提供了四類管理操作:get操作用來(lái)提取特定的網(wǎng)絡(luò)管理信息;get-next操作通過(guò)遍歷活動(dòng)來(lái)提供強(qiáng)大的管理信息提取能力;set操作用來(lái)對(duì)管理信息進(jìn)行控制(修改、設(shè)置);trap操作用來(lái)報(bào)告重要的事件。
二、 SNMF管理控制框架與實(shí)現(xiàn)
1.SNMP管理控制框架
SNMP定義了管理進(jìn)程(manager)和管理代理(agent)之間的關(guān)系,這個(gè)關(guān)系稱為共同體(community)。描述共同體的語(yǔ)義是非常復(fù)雜的,但其句法卻很簡(jiǎn)單。位于網(wǎng)絡(luò)管理工作站(運(yùn)行管理進(jìn)程)上和各網(wǎng)絡(luò)元素上利用SNMP相互通信對(duì)網(wǎng)絡(luò)進(jìn)行管理的軟件統(tǒng)統(tǒng)稱為SNMP應(yīng)用實(shí)體。若干個(gè)應(yīng)用實(shí)體和SNMP組合起來(lái)形成一個(gè)共同體,不同的共同體之間用名字來(lái)區(qū)分,共同體的名字則必須符合Internet的層次結(jié)構(gòu)命名規(guī)則,由無(wú)保留意義的字符串組成。此外,一個(gè)SNMP應(yīng)用實(shí)體可以加入多個(gè)共同體。
SNMP的應(yīng)用實(shí)體對(duì)Internet管理信息庫(kù)中的管理對(duì)象進(jìn)行操作。一個(gè)SNMP應(yīng)用實(shí)體可操作的管理對(duì)象子集稱為SNMP MIB授權(quán)范圍。SNMP應(yīng)用實(shí)體對(duì)授權(quán)范圍內(nèi)管理對(duì)象的訪問(wèn)仍然還有進(jìn)一步的訪問(wèn)控制限制,比如只讀、可讀寫(xiě)等。SNMP體系結(jié)構(gòu)中要求對(duì)每個(gè)共同體都規(guī)定其授權(quán)范圍及其對(duì)每個(gè)對(duì)象的訪問(wèn)方式。記錄這些定義的文件稱為“共同體定義文件”。
SNMP的報(bào)文總是源自每個(gè)應(yīng)用實(shí)體,報(bào)文中包括該應(yīng)用實(shí)體所在的共同體的名字。這種報(bào)文在SNMP中稱為“有身份標(biāo)志的報(bào)文”,共同體名字是在管理進(jìn)程和管理代理之間交換管理信息報(bào)文時(shí)使用的。管理信息報(bào)文中包括以下兩部分內(nèi)容:
(1)共同體名,加上發(fā)送方的一些標(biāo)識(shí)信息(附加信息),用以驗(yàn)證發(fā)送方確實(shí)是共同體中的成員,共同體實(shí)際上就是用來(lái)實(shí)現(xiàn)管理應(yīng)用實(shí)體之間身份鑒別的;
(2)數(shù)據(jù),這是兩個(gè)管理應(yīng)用實(shí)體之間真正需要交換的信息。
在第三版本前的SNMP中只是實(shí)現(xiàn)了簡(jiǎn)單的身份鑒別,接收方僅憑共同體名來(lái)判定收發(fā)雙方是否在同一個(gè)共同體中,而前面提到的附加倍息尚未應(yīng)用。接收方在驗(yàn)明發(fā)送報(bào)文的管理代理或管理進(jìn)程的身份后要對(duì)其訪問(wèn)權(quán)限進(jìn)行檢查。訪問(wèn)權(quán)限檢查涉及到以下因素:
(1)一個(gè)共同體內(nèi)各成員可以對(duì)哪些對(duì)象進(jìn)行讀寫(xiě)等管理操作,這些可讀寫(xiě)對(duì)象稱為該共同體的“授權(quán)對(duì)象”(在授權(quán)范圍內(nèi));
(2)共同體成員對(duì)授權(quán)范圍內(nèi)每個(gè)對(duì)象定義了訪問(wèn)模式:只讀或可讀寫(xiě);
(3)規(guī)定授權(quán)范圍內(nèi)每個(gè)管理對(duì)象(類)可進(jìn)行的操作(包括get,get-next,set和trap);
(4)管理信息庫(kù)(MIB)對(duì)每個(gè)對(duì)象的訪問(wèn)方式限制(如MIB中可以規(guī)定哪些對(duì)象只能讀而不能寫(xiě)等)。
管理代理通過(guò)上述預(yù)先定義的訪問(wèn)模式和權(quán)限來(lái)決定共同體中其他成員要求的管理對(duì)象訪問(wèn)(操作)是否允許。共同體概念同樣適用于轉(zhuǎn)換代理(Proxy agent),只不過(guò)轉(zhuǎn)換代理中包含的對(duì)象主要是其他設(shè)備的內(nèi)容。
2.SNMP實(shí)現(xiàn)方式為了提供遍歷管理信息庫(kù)的手段,SNMP在其MIB中采用了樹(shù)狀命名方法對(duì)每個(gè)管理對(duì)象實(shí)例命名。每個(gè)對(duì)象實(shí)例的名字都由對(duì)象類名字加上一個(gè)后綴構(gòu)成。對(duì)象類的名字是不會(huì)相互重復(fù)的,因而不同對(duì)象類的對(duì)象實(shí)例之間也少有重名的危險(xiǎn)。
在共同體的定義中一般要規(guī)定該共同體授權(quán)的管理對(duì)象范圍,相應(yīng)地也就規(guī)定了哪些對(duì)象實(shí)例是該共同體的“管轄范圍”,據(jù)此,共同體的定義可以想象為一個(gè)多叉樹(shù),以詞典序提供了遍歷所有管理對(duì)象實(shí)例的手段。有了這個(gè)手段,SNMP就可以使用get-next操作符,順序地從一個(gè)對(duì)象找到下一個(gè)對(duì)象。get-next(object-instance)操作返回的結(jié)果是一個(gè)對(duì)象實(shí)例標(biāo)識(shí)符及其相關(guān)信息,該對(duì)象實(shí)例在上面的多叉樹(shù)中緊排在指定標(biāo)識(shí)符;bject-instance對(duì)象的后面。這種手段的優(yōu)點(diǎn)在于,即使不知道管理對(duì)象實(shí)例的具體名字,管理系統(tǒng)也能逐個(gè)地找到它,并提取到它的有關(guān)信息。遍歷所有管理對(duì)象的過(guò)程可以從第一個(gè)對(duì)象實(shí)例開(kāi)始(這個(gè)實(shí)例一定要給出),然后逐次使用get-next,直到返回一個(gè)差錯(cuò)(表示不存在的管理對(duì)象實(shí)例)結(jié)束(完成遍歷)。
由于信息是以表格形式(一種數(shù)據(jù)結(jié)構(gòu))存放的,在SNMP的管理概念中,把所有表格都視為子樹(shù),其中一張表格(及其名字)是相應(yīng)子樹(shù)的根節(jié)點(diǎn),每個(gè)列是根下面的子節(jié)點(diǎn),一列中的每個(gè)行則是該列節(jié)點(diǎn)下面的子節(jié)點(diǎn),并且是子樹(shù)的葉節(jié)點(diǎn),如下圖所示。因此,按照前面的子樹(shù)遍歷思路,對(duì)表格的遍歷是先訪問(wèn)第一列的所有元素,再訪問(wèn)第二列的所有元素……,直到最后一個(gè)元素。若試圖得到最后一個(gè)元素的“下一個(gè)”元素,則返回差錯(cuò)標(biāo)記。
SNMP樹(shù)形表格結(jié)構(gòu)示意圖
SNMP中各種管理信息大多以表格形式存在,一個(gè)表格對(duì)應(yīng)一個(gè)對(duì)象類,每個(gè)元素對(duì)應(yīng)于該類的一個(gè)對(duì)象實(shí)例。那么,管理信息表對(duì)象中單個(gè)元素(對(duì)象實(shí)例)的操作可以用前面提到的get-next方法,也可以用后面將介紹的get/set等操作。下面主要介紹表格內(nèi)一行信息的整體操作。
(1)增加一行:通過(guò)SNMP只用一次set操作就可在一個(gè)表格中增加一行。操作中的每個(gè)變量都對(duì)應(yīng)于待增加行中的一個(gè)列元素,包括對(duì)象實(shí)例標(biāo)識(shí)符。如果一個(gè)表格中有8列,則set操作中必須給出8個(gè)操作數(shù),分別對(duì)應(yīng)8個(gè)列中的相應(yīng)元素。
(2)刪除一行:刪除一行也可以通過(guò)SNMP調(diào)用一次set操作完成,并且比增加一行還簡(jiǎn)單。刪除一行只需要用set操作將該行中的任意一個(gè)元素(對(duì)象實(shí)例)設(shè)置成“非法”即可。但該操作有一個(gè)例外:地址翻譯組對(duì)象中有一個(gè)特殊的表(地址變換表),該表中未定義一個(gè)元素的“非法”條件。因此,SNMP中采用的辦法是將該表中的地址設(shè)置成空串,而空字符串將被視為非法元素。
至于刪除一行時(shí),表中的一行元素是否真的在表中消失,則與每個(gè)設(shè)備(管理代理)的具體實(shí)現(xiàn)有關(guān)。因此,網(wǎng)絡(luò)管理操作中,運(yùn)行管理進(jìn)程可能從管理代理中得到“非法”數(shù)據(jù),即已經(jīng)刪除的不再使用的元素的內(nèi)容,因此管理進(jìn)程必須能通過(guò)各數(shù)據(jù)字段的內(nèi)容來(lái)判斷數(shù)據(jù)的合法性。