摘要:首先介紹了ForCES體系結構、ForCES最新進展和SNMP協議;然后提出了ForCES支持SNMP的方案;最后給出了如何利用網絡管理軟件來開發ForCES模型中CE端SNMP代理的具體方法。
關鍵詞:SNMP;ForCES;SNMP++;Agent++
中圖法分類號:TP393.07文獻標識碼:A
文章編號:1001-3695(2006)09-0219-02
近年來,互聯網的發展異常迅猛,路由器上的網絡管理系統變得日益重要。轉發和控制分離ForCES(ForwardingandControlSeparation)[1,2]是IETF路由領域(RoutingArea)的一個工作組,它專門研究開放可編程的IP路由器的體系結構和協議問題,是當前開放可編程網絡研究最受關注的研究組織。ForCES的開放可編程路由器是一種將傳統的IP路由器分成轉發件(ForwardingElements,FE)和控制件(ControlElements,CE)的路由器。為了能夠及早發現并診斷故障,并迅速方便地根據需要改變配置,ForCES的開放可編程路由器也迫切需要有網絡管理功能的支持。
(1)ForCES。ForCES基本思想是將IP路由器分成轉發件FE和控制件CE,認為IP路由器可由多個(可達幾百個)FE、多個CE和連接它們的ForCES協議構成。當前IETFForCES工作組已經完成了ForCES需求(ForCESRequirements,RFC3654)[3]和ForCES框架(ForCESFramework,RFC3746)[5]工作,ForCES協議和ForCESFE模型也正在制定中。
(2)SNMP[4]。簡單網絡管理協議(SimpleNetworkMa ̄nagementProtocol,SNMP)首先是由Internet工程任務組織IETF的研究小組為了解決Internet上路由器管理的問題而提出的。SNMP為應用層協議,是TCP/IP協議簇的一部分。它通過用戶數據報協議(UDP)來操作。
SNMP的網絡管理模型由四部分組成:①管理站;②代理者;③管理信息庫;④網絡管理協議。管理站是網絡管理員與網絡管理系統的接口。代理者所做的工作是應答來自管理站的信息請求和動作請求,并隨機地為管理站報告一些重要的意外事件。SNMP中的對象是表示被管資源某一方面的數據變量。對象被標準化為跨系統的類,對象的集合被組織為管理信息庫(MIB)。管理站與代理者之間通過網絡管理協議通信,SNMP通信協議主要包括以下能力:①Get為管理站讀取代理者處對象的值;②Set為管理站設置代理者處對象的值;③Trap為代理者向管理站通報重要事件。
(3)ForCES支持SNMP的問題。ForCES需求協議指出:①ForCES結構不應該排斥SNMP網絡管理,并且要求大多數管理任務由CE端來完成,代理的角色也由CE來承擔;②對FE的訪問需要經過CE。
為了滿足以上需求我們提出了以下方案。
1ForCES支持SNMP的方案
滿足ForCES標準的網絡組件(NetworkElement,NE)支持SNMP模式如圖1所示。
如圖1所示,CE和FE需要支持不同的MIB信息,所以我們在CE和FE上分別選用Agent++和NETSNMP軟件包進行開發。對于管理方我們選用功能全面的GETIF軟件來進行測試。為滿足ForCES需求,該方案用不同的方法來處理不同種類的SNMP消息:
(1)讀FE的SNMP消息。從FE接收到SNMP消息后,判斷是否為讀自身FE的MIB變量,是則由NETSNMP軟件包處理所需的變量,返回響應;若不是讀、寫CE或自身FE的MIB變量則丟棄該SNMP消息。
(2)寫FE的SNMP消息。從FE接收到SNMP消息后,判斷是否為寫自身FE的MIB變量,是則由ForCES協議重定向該SNMP包到CE,由CE認證是否有寫的權限,通過認證再由FE中的NETSNMP軟件包進行處理并返回響應。若不是讀、寫CE或自身FE的MIB變量則丟棄該SNMP消息。
(3)讀、寫CE的SNMP消息。從FE接收到SNMP消息后,如果是讀、寫CE的MIB變量,則由ForCES協議重定向該SNMP包到CE,由Agent++處理并封裝SNMP響應消息,再經FE轉發給管理者。
(4)Trap消息發送。在CE和FE連接沒有故障的情況下,Trap消息則是統一由CE負責發送給管理方的。
另外,FE與CE失去聯系后必須仍然具有響應外部管理者發送的SNMP數據包的能力,因此在這種情況下,獲得認證后的FE對于管理者發送的查詢自身的MIB變量可以返回響應,同時也能獨立發送Trap消息。
2CE端SNMP代理的實現
2.1實現環境
2.1.1代理端SNMP開發工具
開發過程中使用到的工具如下:
(1)代理程序框架生成工具。HP公司的SNMP++v3.2.15和FrankFock的Agent++v3.5.22c。
(2)MIB庫設計和測試工具。AdventNetAgentToolkit_Java_JMXEdition_5_0。
SNMP++是一個允許創建網絡管理應用程序的SNMPAPI,它是一套由C++類組成的類庫。C++面向對象的特性給SNMP網絡管理帶來了許多優點:易用性、安全性、可移植性和可擴展性。SNMP++主要設計用來支持SNMP管理站的開發,而Agent++擴展了SNMP++的基本概念,同時支持SNMP管理站和SNMP代理的開發。
Agent++是支持SNMP代理開發的一套C++類,它提供了完整的協議引擎和調度表支持。Agent++為SNMP被管理對象提供了大量的C++類,當然也可以通過派生來定制這些類。另外,它還提供了對委托代理和發送通知消息的C++類支持,因此能為我們擴展代理端的開發帶來很大的方便。
2.1.2管理端工具
Getif是一個由PhilippeSimonet開發的網絡工具,具有多功能的圖形界面系統,是一種極其有用的SNMP工具,它可以滿足收集SNMP的服務信息和圖表信息。Getif在WindowsXP/2000平臺上可以作為SNMP瀏覽器,它能使用戶監測和管理網絡上的任何SNMP設備,只要它們使用標準的SNMPv1協議。因此,我們利用Getif作為管理端的工具能直觀地顯示代理端的運行情況。
2.2實現過程
CE作為控制端必須具有接收管理者發送的SNMP請求并響應自身和FE的MIB變量的能力,開發過程如下:
(1)編寫一個代理程序框架,其中包括處理代理端自身管理信息庫的存儲和讀?。ㄈ鐂ys組和snmp組);
(2)管理信息庫的設計和文件生成。運行在每個設備的代理進程實現的管理和監控功能一般都不相同,它們所管理的管理信息庫也不一樣,因此有必要為每個設備的代理進程設計一個管理信息庫。我們根據標準的MIB文本自己書寫擴展的MIB文本并用AdventNetAgentToolkit_Java_JMXEdition_5_0進行檢驗,生成MIB源文件為Myagent.txt。
有了上一步生成的MIB源文件以后,就可以使用源代碼生成程序AgentGensta,將MIB源文件轉換為可以編入到代理程序中的C++代碼,修改代碼使成為滿足條件的.CPP和.H。
(3)填充代碼框架生成代理程序。在完成了上面幾個步驟以后,就完成了對CE端代理的開發。
2.3測試結果
首先,我們關閉三臺主機中的SNMP服務,在一臺WindowsXP的主機上運行Getif管理工具;在另一臺Windows2000的主機上運行VC++6.0編譯生成的CE端代理端程序;再選用一臺Windows2000的主機運行代理程序(用來模擬FE端的代理)。圖2、圖3分別顯示了在管理端和CE代理端運行后的結果。
如圖2和圖3中所示,管理方可以訪問到CE端MIBII中的變量,也能通過FE訪問到CE端擴展定義的MIB變量的值。通過測試CE端沒有發現問題,另外代理端顯示的日志也沒有問題,確定程序正常。此外,我們也對SET,Trap操作進行了測試,發現CE端能夠響應管理者。由此可見我們初步實現了CE端對SNMP網絡管理的支持。
3結束語
本文實現了CE端作為SNMP代理的網管機制,為進一步實現CE端與FE端的SNMP通信奠定了基礎,為轉發和控制分離的開放可編程路由器實現網管提供了思路。
參考文獻:
[1]http://www. sstanamera. com/~forces/[EB/OL].
[2]http://www.ietf.org/html.charters/forcescharter.html[EB/OL].
[3]HKhosravi,TA nderson.Requirements for Separation of IP Control and Forwarding,RFC3654[EB/OL].http://www.ietf.org/rfc/rfc3654. txt? number=3654,200311.
[4]JCase,etal.ASimple Network Management Protocol(SNMP)[EB/OL].http://isc.faqs.org/rfcs/rfc1157.html,199005.
[5]LYang, R Dantu.For warding and Contro l Element Separati on (ForCES)Framework,RFC3746[EB/OL].http://www.faqs.org/rfcs/rfc3746.html,200404.
作者簡介:
吳曉春(1983),女,浙江人,碩士,主要研究方向為網絡與通信技術;金蓉(1980),女,浙江人,助教,碩士,主要研究方向為計算機網絡;王偉明(1964),男,浙江遂昌人,教授,碩士生導師,主要研究方向為信息與網絡技術、通信技術、分布式智能信息系統的科研與教學工作。