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