摘 要:本文對簡單網絡管理模型做了介紹,并在此基礎上重點分析了嵌入式SNMP Agent軟件結構。文中討論的三層以太網交換機SNMP Agent開發(fā)流程對于開發(fā)路由器等其它網絡產品SNMP Agent同樣具有參考價值。
關鍵詞:網絡管理 SNMP MIB 嵌入式Agent
Abstract: This Paper introduces the model of Simple Network Management Protocol (SNMP), based on which analyzes the structure of embedded SNMP Agent. The development procedure of SNMP Agent that discussed in this paper is also valuable to which will develop the SNMP Agent on other Network product such as router.
Keywords: Network Management, SNMP, MIB,embedded Agent
1 基于SNMP的網絡管理
網絡設備的復雜化、異構化使得網絡管理不可或缺。目前存在:公共管理信息服務/公共管理信息協(xié)議(CMIS/CMIP)、局域網個人管理協(xié)議(LMMP)、簡單網絡管理協(xié)議(SNMP)等幾種標準的網絡管理協(xié)議。簡單網絡管理協(xié)議(SNMP,Simple Network Management Protocol)以下簡稱SNMP,由于其簡單與實用性,已經成為TCP/IP網絡事實上的管理標準。現在所提的SNMP已經不僅僅是指一種管理協(xié)議,而是一種網絡管理體系結構。
SNMP遵循標準的Client/Server結構,它的管理模型包括四個主要元素,即管理者(Manager),代理(Agent),管理信息庫(MIB,Management Information Base)以及管理協(xié)議SNMP。SNMP網絡管理模型如圖1所示。
[align=center]
圖1 SNMP網絡管理模型[/align]
Manager是實施網絡管理的處理實體,它定期查詢Agent收集到的相關信息,實現對網絡中各種資源的監(jiān)測;并負責發(fā)出網絡管理操作的各種指令,完成各種網絡管理功能。在模型中起到Client的作用。
Agent定期收集和維護本地管理信息,響應Manager的命令或操作請求。另外,Agent也可以將自身系統(tǒng)中的發(fā)生的事件主動通知給Manager??梢姡珹gent在模型中擔任Server的角色。
MIB是被管對象的抽象集合,它規(guī)定了被管理設備須保存的數據項目和數據類型,以及每個數據項目所允許的操作等。Manager可通過SNMP協(xié)議對MIB進行操作,實現對被管理設備的監(jiān)視和控制。
SNMP協(xié)議提供了Manager和Agent之間交換管理信息的方法,信息按照SNMP消息的形式進行信息交換。SNMP每一個消息包括一個代表SNMP版本的版本號,一個用于消息認證的共同體名,以及5種中的一種協(xié)議數據單元(PDU), 5種PDU對應如下5種SNMP協(xié)議報文的操作。
GetRequest:Manager用來從Agent取得相關變量的值;
GetNextRequest:Manager用來從Agent取得相關變量的下一個變量的值;
SetRequest:Manager用來設置Agent上的相關變量的值;
GetResponse:Agent對Manager發(fā)送的應答信息;
Trap:Agent在滿足一定的觸發(fā)條件時,向Manager報告異常事件。
Manager通常在工作站或高性能PC實現,提供人機接口。Agent一般嵌入在被管理設備內部提供標準SNMP接口。隨著微處理器技術、存儲器技術,以及嵌入式操作系統(tǒng)的飛速發(fā)展,使得在交換機上嵌入Agent方便可行。
在筆者為總參通信部(十五項目)開發(fā)的三層加固以太網交換機(以下簡稱以太網交換機)網管系統(tǒng)中,實現了嵌入式 Agent。下面結合該系統(tǒng),說明嵌入式Agent的設計與實現。
2 嵌入式 Agent系統(tǒng)結構模型
加固以太網交換機對外提供80個10/100M以太網接口、10個千兆光纖接口、2個SDSL RJ11接口。該交換機系統(tǒng)的交換結構采用交叉開關型,這樣交換機硬件主要由交叉開關、交換芯片、CPU模塊及SDSL模塊四個部分組成,如圖2所示。交叉開關采用Marvell公司的GT48304、三層10/100M以太網交換芯片和三層千兆交換芯片分別采用Marvell公司的GT48510和GT48520、 CPU采用Motorola公司的MPC8260,配置512M RAM、SDSL模塊芯片組采用GlobeSpan公司的OrionTM芯片組。
加固以太網交換機采用了美國WindRiver公司的VxWorks實時操作系統(tǒng),SNMP Agent的開發(fā)采用了該公司與VxWorks高度集成的WindNet開發(fā)工具。SNMP Agent 位于系統(tǒng)的CPU模塊上,實現交換模塊和SDSL模塊的統(tǒng)一管理,并通過系統(tǒng)以太網接口連接外部網管工作站Manager。
[align=center]
圖2 交換機硬件系統(tǒng)結構及Agent系統(tǒng)結構模型[/align]
3 定義和擴充MIB
IETF 在RFC1155 規(guī)定了SNMP MIB 能夠使用的數據類型及如何描述和命名MIB中的管理對象類。SNMP MIB是圍繞管理對象進行組織的,每個對象從本質上講是代表被管設備某一特性的變量,RFC1155 規(guī)定SNMP MIB用ASN.1來命名所有的管理對象。ASN.1定義了一個樹狀的名字空間,每一對象的名字都反映了該對象在這一樹中的位置,對應于樹中的一個葉子對象。
IETF在RFC 1213 定義了標準MIB-II。利用MIB-II,網絡管理設備可以方便地獲知被管理設備的進出、口流量,但不容易得到整個局域網的流量,也無法對日常通信量進行歷史分析。RMON MIB的出現解決了該問題,IETF在RFC 1271 定義了RMON MIB 。RMON MIB由一組統(tǒng)計數據、分析數據和診斷數據構成。在不改變SNMP協(xié)議的條件下,擴充了管理信息庫MIB-II,增強了網絡管理的功能。根據加固交換機的實際監(jiān)視情況,我們有選擇地實現了RMON MIB中如下幾個組:
?。?) 統(tǒng)計組(statistics): 維護Agent監(jiān)視的每一子網的基本使用和錯誤統(tǒng)計。
?。?) 歷史組(history): 記錄從統(tǒng)計組可得到的信息的周期性統(tǒng)計樣本。
(3) 警報組(alarm): 允許網管工作站人員為RMON Agent記錄的任何計數或整數設置采樣間隔和報警閾值。
(4) 主機組(host): 包含關于連接到子網上的主機的各種流量的計數。
?。?) 事件組(event): 一個關于由RMON Agent產生的所有事件的表。
對于加固以太網交換機MIB的構建除了盡量支持標準的MIB-II、RMON MIB外,根據交換機軟硬件所能提供的網絡管理能力,還創(chuàng)建了私有的MIB庫。私有MIB庫由以下幾個組構成:
?。?) 系統(tǒng)信息組(SysInfo): 系統(tǒng)信息組主要描述交換機全局的只讀寄存器信息。
?。?) 系統(tǒng)配置組(Config): 系統(tǒng)配置組主要描述交換機全局可讀寫的寄存器信息。
?。?) 模塊組(Module): 描述每個交換模塊的相關寄存器信息。
?。?) 端口組(Port): 描述每個交換端口的相關寄存器信息。
?。?) 虛擬局域網組(VLAN): 虛擬局域網組描述有關虛擬局域網的設置信息。
以下以系統(tǒng)信息組(SysInfo),來說明MIB庫的構建情況。系統(tǒng)信息組(SysInfo),主要包含以下對象:
1) InfoBoardRevision:交換機主背板修訂版本。
2) InfoPeakBufferUsed:交換機中緩存的大小。
3) InfoAddrCapacity:最多支持的MAC地址。
4) InfoSelfTestFailed:系統(tǒng)自檢信息。
5) InfoLedNumber:交換機LED 指示燈數量。
6) InfoVisualIndicatorMode:LED指示燈顯示模式。
將確定的管理對象用ASN.1進行描述與組織,形成MIB。由于MIB文件是用ASN.1編寫的ASCII文本文件,需要“翻譯”成C/C++的數據結構才能用程序實現。本文采用了WindNet SNMP提供的MIB Complier工具,將用ASN.1描述的MIB文件編譯為C語言格式源代碼。
4 嵌入式 Agent軟件的設計與實現
4.1嵌入式 Agent的軟件結構
嵌入式Agent軟件一般包括以下5個模塊,如圖3所示。
[align=center]
圖3 嵌入式Agent軟件結構[/align]
?。?) 初始化模塊
初始化模塊主要負責傳輸接口初始化、配置數據存取、以及MIB的初始化。VxWorks操作系統(tǒng)啟動成功后,Agent軟件開始運行,并啟動初始化模塊,初始化模塊首先初始化MIB虛擬樹,以供處理時查詢;其次初始化UDP接口,打開應用層與傳輸層的接口;最后讀取配置文件的數據,并根據這些數據設置代理進程和MIB的初始化變量。
(2) Socket通信模塊
通信功能是Agent的重要功能之一.它實現SNMP Agent與SNMP Manager之間的兩個方向的通信。SNMP Manager和SNMP Agent之間通過SNMP簡單網絡管理協(xié)議來實現通信,即SNMP over TCP/IP。為了確保SNMP協(xié)議的簡單性,一般選用UDP作為其傳輸層協(xié)議,每個SNMP報文必須能夠在單個UDP數據報中傳送。網絡管理站通過協(xié)議交換SNMP報文來實現通信。除Trap-PDU使用端口162外,其它SNMP報文使用端口161進行通信。
?。?) Trap處理模塊
當Agent檢測到某個特定的事件,便調用Trap處理模塊構造一個Trap報文。Trap處理模塊對內部格式的Trap報文信息進行ASN.1格式編碼。通過套接字接口將SNMP Trap報文交給Socket通信處理模塊然后發(fā)送給網絡管理站。一般來說,交換機啟動后,會向管理站發(fā)送一個系統(tǒng)啟動的Trap報文,通知網絡管理站代理已經啟動。
?。?) PDU處理模塊
初始化模塊初始化MIB庫后,啟動PDU處理模塊,以備接收SNMP報文和構造SNMP響應報文。PDU處理模塊按以下順序處理SNMP報文。
1) 語法分析并轉換成內部格式
因為ASN.1格式允許使用變長字段,因此SNMP報文的字段不可能直接映射到代理進程代碼的固定內部數據結構中。對SNMP報文進行語法分析,并將其轉換成一個可用的內部數據結構,代理進程代碼可以對該數據結構進行處理。
2) 鑒別和授權
根據SNMP報文的共同體字段對其進行身份認證,若認證失敗則將報文丟棄,認證通過交給MIB管理例程模塊進行處理。
3) 構建響應報文
在命令執(zhí)行完以后,根據命令的執(zhí)行情況構建響應報文,并將其轉化為ASN.1格式,交給Socket通信模塊傳輸到網絡管理站。
?。?) MIB管理例程模塊
該模塊利用某些查找算法查找各MIB對象并實現對各組MIB對象的Get和Set操作。在以太網交換機Agent軟件設計過程中我們根據各個MIB變量的實際情況,將MIB庫中的對象分為兩種,實時性對象與非實時性對象。對于實時性對象,每次當查詢到該對象,便通過調用字符設備驅動程序讀取或設置交換機硬件上的相關信息;對于非實時性對象,在內存中保持一個靜態(tài)變量值,該靜態(tài)值在代理進程初始化時進行賦初值。若只讀取該對象值則不需要讀取硬件信息,只返回此靜態(tài)變量值就夠了。若設置該對象,即對它進行寫操作,必須通過調用字符設備驅動程序設置硬件上的相關信息,同時相應的改變該靜態(tài)變量值,以備以后讀取時所用。
4.2 SNMP Agent軟件開發(fā)及測試流程
在VxWorks實時系統(tǒng)下利用Tornado 綜合開發(fā)工具和WindNet網管開發(fā)工具進行交換機SNMP Agent的開發(fā)和測試,可以分以下幾個步驟進行。
(1) 為預先定義好的MIB對象編寫管理操作例程;
?。?) 編譯生成Agent目標代碼,啟動目標機;
?。?) 根據目標機具體芯片(MPC8260)配置宿主機環(huán)境;
?。?) 配置目標服務器,利用CrossWind圖形化調試工具進行應用程序調試;
?。?) 調試通過后,利用HP公司的SNMP++ Browser網絡管理軟件對交換機SNMP Agent進行測試,通過它對MIB變量進行查詢、遍歷、設置等操作。
5 結束語
由于SNMP的簡單性與實用性,已經成為TCP/IP網絡事實上的管理標準。目前越來越多的網絡產品直接提供了SNMP接口。筆者結合三層加固以太網交換機網絡管理系統(tǒng),在VxWorks 嵌入式操作系統(tǒng)平臺上,利用WindNet SNMP軟件包實現了完整的SNMP Agent。它支持MIB-II、私有MIB、RMON MIB,為網絡管理站提供了交換機內部豐富的原始管理數據,該交換機現己提交總參通信部進行軍隊試用。本加固以太網交換機嵌入式Agent的開發(fā)和測試方法對于開發(fā)路由器、DSL Modem等其它網絡產品SNMP Agent同樣具有參考價值。
參考文獻
1. IETF RFC 1157, Simple Network Management Protocol (SNMP),1990.1
2. IETF RFC 1905, Protocol Operations for Version 2 of the Simple Network Management Protocol,1996.1
3. Vxworks_net_programmers_guide, WindRiver System,1999.5
4. GT-48310 Datasheet. Galileo Technology, 1998
5. 芩賢道,安常青. 網絡管理協(xié)議及應用開發(fā). 清華大學出版社,1998.7
6. 路曉村,徐宏,王泰東 等譯.嵌入式系統(tǒng)TCP/IP應用層協(xié)議,2003.4