龐新法
(陜西省委黨??萍冀萄胁?陜西 西安 710061)
SNMP(Simple Network Management Protocol,簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議)是 IETF(Internet Engineering Task Force,互聯(lián)網(wǎng)工程小組)定義的Internet協(xié)議簇的一部分,用于網(wǎng)絡(luò)設(shè)備的管理。網(wǎng)絡(luò)設(shè)備的管理主要是網(wǎng)絡(luò)設(shè)備信息的管理,大量的網(wǎng)絡(luò)設(shè)備信息構(gòu)成信息庫(kù),稱(chēng)為管理信息庫(kù),如何組織信息,簡(jiǎn)化復(fù)雜的網(wǎng)絡(luò)管理,以提高網(wǎng)絡(luò)設(shè)備管理效率,文中經(jīng)過(guò)論證提出了“雙親表示法”。
SNMP是基于TCP/IP協(xié)議族上的互聯(lián)網(wǎng)應(yīng)用層協(xié)議,用于網(wǎng)絡(luò)管理。被管理的儀器設(shè)備可以是交換機(jī)、路由器、服務(wù)器、工作站、網(wǎng)關(guān)、網(wǎng)絡(luò)打印機(jī)等等。因?yàn)樵O(shè)備都支持SNMP協(xié)議,所以使用協(xié)議對(duì)儀器設(shè)備進(jìn)行管理時(shí)外觀是相同的,從而就可以消除設(shè)備型號(hào)、各類(lèi)提供商等差異。圖1是一個(gè)SNMP系統(tǒng)的典型應(yīng)用示意圖。
圖1 SNMP的典型應(yīng)用Fig.1 The typical application of SNMP
從圖1可以看出,SNMP協(xié)議為網(wǎng)絡(luò)管理員提供了一個(gè)平臺(tái),稱(chēng)之為網(wǎng)絡(luò)管理工作站,主要負(fù)責(zé)發(fā)出網(wǎng)管命令、數(shù)據(jù)分析與存儲(chǔ)等功能。被管理的儀器設(shè)備上同要運(yùn)行一個(gè)SNMP代理,用來(lái)實(shí)現(xiàn)被管設(shè)備與管理站之間的通信。圖2描述了簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議的邏輯結(jié)構(gòu)。管理站運(yùn)行網(wǎng)絡(luò)管理程序,發(fā)送管理操作命令,接收來(lái)自代理的信息以確定設(shè)備的狀態(tài)。代理(Agent)是駐留在被管設(shè)備中以完成SNMP功能的模塊。負(fù)責(zé)處理和響應(yīng)管理站發(fā)送來(lái)的服務(wù)請(qǐng)求,并且還可以將被管網(wǎng)絡(luò)發(fā)生的特定事件報(bào)告給管理站,完成被管網(wǎng)絡(luò)設(shè)備與管理站之間的通信功能。管理站與代理則使用管理信息庫(kù)(MIB)來(lái)統(tǒng)一接口。MIB中定義了設(shè)備中的被管理對(duì)象,代理與管理站都應(yīng)該實(shí)現(xiàn)相應(yīng)的MIB對(duì)象,這樣雙方就可以識(shí)別對(duì)方的數(shù)據(jù),從而實(shí)現(xiàn)彼此的通信。
管理站向代理發(fā)送MIB中定義的數(shù)據(jù),代理識(shí)別后,將被管儀器設(shè)備所提供的相應(yīng)參數(shù)或狀態(tài)轉(zhuǎn)換成MIB定義的格式,之后向管理站作出應(yīng)答,從而完成一次管理的操作。
圖2 管理站與代理的通信Fig.2 Communication between management station and agent
SNMP的體系結(jié)構(gòu)與通信過(guò)程使得網(wǎng)絡(luò)儀器設(shè)備對(duì)協(xié)議的支持非常方便。對(duì)于已有的設(shè)備,如果不支持SNMP協(xié)議,只需要新增一個(gè)SNMP模塊就可以增加網(wǎng)絡(luò)管理的功能,從而實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)設(shè)備的統(tǒng)一監(jiān)控管理。使得復(fù)雜繁瑣的網(wǎng)絡(luò)管理工作變得標(biāo)準(zhǔn)化、簡(jiǎn)單化。
簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議操作的對(duì)象是管理信息,管理信息庫(kù)[1]就是管理信息的集合。任何一個(gè)管理的信息點(diǎn)都會(huì)被定義為一個(gè)管理信息。支持SNMP的設(shè)備通常都要有自己的管理信息,用來(lái)實(shí)現(xiàn)對(duì)該設(shè)備的網(wǎng)絡(luò)管理。
TCP/IP網(wǎng)管系統(tǒng)的基礎(chǔ)是包含有被管理資源信息的數(shù)據(jù)庫(kù),每一個(gè)被管理元素用一個(gè)對(duì)象來(lái)表示,MIB就是這些對(duì)象的結(jié)構(gòu)化的集合。通過(guò)讀取MIB中對(duì)象的值,NMS可以監(jiān)控系統(tǒng)中的管理資源,并且可以通過(guò)修改某些值來(lái)管理系統(tǒng)中的資源。信息庫(kù)中對(duì)象的意義、類(lèi)型等由MIB來(lái)定義,NMS和代理都使用同一個(gè)MIB作為接口進(jìn)行通信,從而實(shí)現(xiàn)管理。所以管理信息庫(kù)也被稱(chēng)為管理站和被管設(shè)備之間的橋梁。
SNMP環(huán)境中所有的管理對(duì)象組織成分層的樹(shù)型結(jié)構(gòu),這種層次結(jié)構(gòu)有三個(gè)作用:
1)表示管理與控制關(guān)系:上層中的中間結(jié)點(diǎn)是某些組織機(jī)構(gòu)的名字,說(shuō)明這些機(jī)構(gòu)負(fù)責(zé)其下面的子樹(shù)信息的管理和審批,有些中間結(jié)點(diǎn)雖然不是組織機(jī)構(gòu)名,其實(shí)已經(jīng)委托給某個(gè)組織機(jī)構(gòu)代管。
2)提供了結(jié)構(gòu)化的信息組織技術(shù)。某層的中間結(jié)點(diǎn)代表的子樹(shù)可能是與每個(gè)網(wǎng)絡(luò)資源或網(wǎng)絡(luò)協(xié)議相關(guān)的信息集合。這種組織方式使得沿著結(jié)構(gòu)層次來(lái)訪(fǎng)問(wèn)相關(guān)的結(jié)點(diǎn)就會(huì)十分方便。
3)提供對(duì)象的命名機(jī)制。樹(shù)型結(jié)構(gòu)中每個(gè)結(jié)點(diǎn)都有一個(gè)分層的編號(hào)。葉子結(jié)點(diǎn)代表實(shí)際的管理對(duì)象,把從根到葉子的編號(hào)連接起來(lái),并用圓點(diǎn)隔開(kāi),就形成了管理對(duì)象的唯一全局標(biāo)識(shí)。
很多SNMP代理實(shí)現(xiàn)方案都通過(guò)Hash函數(shù)[2]將請(qǐng)求包含的OID(Object identifier,OID對(duì)象標(biāo)識(shí))映射到 Hash表中一個(gè)MIB對(duì)象的數(shù)據(jù)結(jié)構(gòu)上。這種方法通過(guò)單純的數(shù)學(xué)計(jì)算和一定的沖突監(jiān)測(cè)可以在短時(shí)間內(nèi)找到目標(biāo)結(jié)點(diǎn),但有其特定的缺點(diǎn):
1)Hash函數(shù)沖突較多[3],因此該方法需要保存MIB對(duì)象的完整OID以便在沖突發(fā)生時(shí)判斷當(dāng)前對(duì)象是否是目標(biāo)對(duì)象。而保存完整的OID將會(huì)造成公共祖先結(jié)點(diǎn)ID的重復(fù)。
2)Hash函數(shù)對(duì)實(shí)現(xiàn)有序遍歷有難度[4]。Hash表方法對(duì)個(gè)數(shù)相對(duì)固定的簡(jiǎn)單結(jié)點(diǎn)還有可能按照錄入順序來(lái)進(jìn)行排序,對(duì)動(dòng)態(tài)變化的表格數(shù)據(jù)則無(wú)法進(jìn)行操作。
雙親表示法[5],可以使用雙向鏈表,如圖3所示:
圖3 MIB結(jié)構(gòu)的雙親表示法Fig.3 Parents representation structure of MIB
孩子鏈表表示法[6],如圖4所示。
圖4 MIB結(jié)構(gòu)的孩子鏈表表示法Fig.4 The child list representation structure of MIB
二叉鏈表表示法[7],如圖5所示。
圖5 MIB結(jié)構(gòu)的二叉鏈表表示法Fig.5 Two fork chain representation structure of MIB
綜合復(fù)雜性與可行性,使用“雙親表示法[8]”來(lái)實(shí)現(xiàn)本系統(tǒng)的MIB結(jié)構(gòu),用一組連續(xù)的存儲(chǔ)空間來(lái)存儲(chǔ)樹(shù)中的各個(gè)結(jié)點(diǎn),數(shù)組中的每一個(gè)元素都對(duì)應(yīng)于樹(shù)中的一個(gè)結(jié)點(diǎn),每個(gè)結(jié)點(diǎn)具有兩域:數(shù)據(jù)域和雙親域,數(shù)據(jù)域存放結(jié)點(diǎn)本身的信息,雙親域存放該結(jié)點(diǎn)的雙親結(jié)點(diǎn)在數(shù)組中的位置。實(shí)現(xiàn)的MIB結(jié)構(gòu)只需要考慮到節(jié)點(diǎn)的查詢(xún)和修改操作,因?yàn)槊總€(gè)代理結(jié)點(diǎn)都有相應(yīng)的Get、Set操作,因此用戶(hù)無(wú)法對(duì)代理結(jié)點(diǎn)執(zhí)行增加、刪除等操作。結(jié)點(diǎn)結(jié)構(gòu)如下:
MIB庫(kù)結(jié)構(gòu)如圖6所示,表1給出該MIB樹(shù)結(jié)構(gòu)在程序設(shè)計(jì)中的數(shù)組表示。
圖6 MIB樹(shù)結(jié)構(gòu)Fig.6 The structure of MIB tree
文中分析了用于網(wǎng)絡(luò)管理的MIB(管理信息庫(kù))模型,邏輯結(jié)構(gòu),存貯結(jié)構(gòu),給出了幾種存貯結(jié)構(gòu)的優(yōu)缺點(diǎn),綜合復(fù)雜性與可行性,論證了使用“雙親表示法實(shí)現(xiàn)本系統(tǒng)的MIB結(jié)構(gòu)可以提高網(wǎng)管效率,并以示波器為例對(duì)系統(tǒng)進(jìn)行了測(cè)試,取得了滿(mǎn)意的效果。
表1 MIV樹(shù)的內(nèi)部表示Tab.1 The internal representation of MIB tree
[1]王長(zhǎng)杰.基于SNMP網(wǎng)絡(luò)管理系統(tǒng)的研究與實(shí)現(xiàn)[D].鄭州:鄭州大學(xué),2010.
[2]劉萍.嵌入式網(wǎng)管代理中管理信息庫(kù)的研究與實(shí)現(xiàn)[D].武漢:華中師范大學(xué),2005.
[3]張群哲.數(shù)據(jù)結(jié)構(gòu)—C語(yǔ)言版[M].西安:西安電子科大學(xué)出版社,2011.
[4]嚴(yán)蔚敏.數(shù)據(jù)結(jié)構(gòu)[M].北京:清華大學(xué)出版社.1999年8月
[5]方賢進(jìn).數(shù)據(jù)結(jié)構(gòu)—C語(yǔ)言描述[M].長(zhǎng)沙:國(guó)防科技大學(xué)出版社,2013.
[6]王國(guó)鈞.數(shù)據(jù)結(jié)構(gòu)—C語(yǔ)言描述 [M].北京:科學(xué)出版社,2005.
[7]趙文靜.數(shù)據(jù)結(jié)構(gòu)與算法[M].北京:科學(xué)出版社,2005.
[8]耿國(guó)華.數(shù)據(jù)結(jié)構(gòu)—C語(yǔ)言描述[M].北京:高等教育出版社,2005.