摘要:該文提出了一種新的SNMP Agent框架用來生成本地局域網的SNMP管理對象副本以實現網絡管理系統的容錯能力。此框架中的Agent使用可靠的組播方式來和其他成員進行交流,基于此點Agent群組可以實現系統的容錯。系統提供的SNMP服務允許通過無故障的Agent來復制同組中出現故障的Agent的MIB對象。此框架允許對副本中的Agent群組和管理對象進行動態定義。
關鍵詞:SNMP;Agent;差錯控制;組播;容錯
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2008)34-1758-02
Research of the Improvement of Fault Management Algorithm of SNMP Agent Groups
WANG Wei1, HUANG Min2
(1.Institute of Computer, Southwest University of Science and Technology, Mianyang 621010, China; 2.Network Information Center, Southwest University of Science and Technology,Mianyang 621010, China)
Abstract: This paper presents a new framework that to get replicating of SNMP object of local network and communicate with each other members by reliable multicast to provide fault-tolerant object functionality. A SNMP service allows the agent who is available to access and copy replicas of dumped agent. Dynamic define of Agent groups and management objects is functionally allowed.
Key words: SNMP; agent; fault management; multicast; fault-tolerant
1 引言
差錯控制是綜合網絡管理系統的關鍵功能。差錯控制的目的是對網絡故障進行定位、查找起因以及在可能的情況下修正網絡上的錯誤。目前出現了許多技術以求達到這個目的。包括使用系統級別的診斷程序對容錯網絡進行監視或者報警以及主動錯誤檢測等等。
這里提出了一種基于SNMP(Simple Network Management Protocol)的MIB(Management Information Base)對象來實現差錯控制,這基于兩點已有技術。首先,類似的分布式網絡和一些大型的數據庫系統通過復制副本的手段可以實現其容錯的需求。其次,由于MIB對象反應了被管理對象實體的狀態情況那么就可以通過測試失效Agent的MIB中某些項來確認Agent的故障原因,診斷程序就是由此而來。但是,目前并沒有一種標準的方式來通過SNMP協議來測試那些出現故障的MIB對象。這里介紹一種新的SNMP服務來允許正常工作中的Agent來訪問那些出現故障的Agent的MIB對象。
此新SNMP服務基于多個協同工作的SNMP Agent群組,并且所有群組使用一種其抽象模型在分布式網絡程序中廣泛采用的群組通信方案。每一個組實際上都是一系列使用可靠的組播方式進行相互通信的進程。如圖1所示,SNMP和UDP之間放置了一個群組通信的標識。即SNMP的內容通過群組通信方法發送到其他的Agent組,而數據包最終還是以UDP協議來實施封裝。每個組以被動或者半主動的方式來復制被選擇的對象,于是組中的任何一個Agent都可以去查詢和更新那些復制出來的副本。并且由一個主控Agent來決定對象的更新順序。至此就確立了一個保存和訪問復制副本的SNMP群組框架。
該文使用UCD-SNMP來構造Agent的解決方案,各個Agent使用組通信工具包Ensemble進行通信。本文將通過示例介紹系統如何幫助訪問在失效Agent上的TCP相關對象。屆時系統允許測試在遭遇TCP SYN Flooding攻擊而崩潰的Agent上的相關對象并引導其找到故障原因。并且文中也列出了系統在復制副本時產生的資源消耗情況。
該文使用和改進了一些較早時期的研究成果,比如把J.Schonwalder介紹的一種使用SNMP協議來封裝組成員的方式改進為成員關系作為SNMP使用的服務[1]。另外利用了K.H.Lee所提出的在分布式網絡管理系統中提供按次序發送消息的方案[6]。
2 管理對象副本復制框架
此部分旨在介紹支持SNMP Agnet群組的MIB對象的框架。框架的MIB部分由三個動態表組成,其中核心表定義如何保存副本以及允許管理者從指定的組訪問副本。而核心表本身又是其他兩個表動態創建的,一個表包含對多Agnet群組的定義,另外一個包含對各個組的各個副本的屬性說明。
2.1 指定組成員
這里的Agent組是指可以對某一組指定對象進行復制的Agent。RepMemberTable表用來定義和保存組成員的信息。其中每一個項包含下述的核心對象:
RepMemberEntry ::= SEQUENCE {
groupId INTEGER,
memberAddress IpAddress
}
設某個系統中包含了N個Agent,其中M個Agent組成了一個Agent組,其中M≤N。由于要允許對給定系統中多個Agent群組進行動態定義,所以就要為所有的組都指定一個唯一的整型標識,即groupId。memberAddress項中紀錄了各個組成員的IP地址。其中IP地址可以帶有非標準的端口號而專門作為副本成員的偵聽端口。
2.2 指定副本成員
指定哪些對象需要復制出副本也同樣重要。這里定義了RepObjectTable表來指定那些需要復制副本的對象。表中的每一項包含以下的對象:
RepObjectEntry ::= SEQUENCE {
groupId INTEGER,
objectId OBJECT IDENTIFIER
}
每一個使用groupId來標識的組都被保存了一組其對象的副本。RepObjectTable中的每一項都包含了組的標識groupId和ASN.1描述的對象的標識,即objectId。
2.3 記錄和訪問副本對象
為了保存SNMP Agent的對象副本并讓管理者可以通過組中的任意成員實行訪問,定義了RepGroupTable表:
RepGroupEntry ::= SEQUENCE {
groupId INTEGER,
membAD IpAddress,
objectId OBJECT IDENTIFIER,
repObjectValue type varies according to the
replicated object
}
系統在初始化的時候會自動通過組構造和復制此表的副本。此表中記錄了所有組的所有成員的副本。Agent只是記錄其所在組的副本對象。表中的每一項都記錄了相應Agent副本對象的值其中包括:組標識groupId、Agent的地址membAD、副本對象的OID即 objectId以及副本對象的值repObjectValue。
3 應用環境中的測試
在某高校的校園網中采用此方案構建了差錯控制系統的測試工具集,項目基于可以免費獲得的UCD-SNMP網管代理以及組通信工具包Ensemble。工具允許構造支持對被選對象進行半主動方式的復制行為。由于Agent組是動態的,那么就可以對其進行創建、銷毀、以及更新操作,也就是說對于組的選擇也不是固定的。此工具在檢測故障Agent中的MIB對象時很有用,因為它使用一條命令就可以在整個組的成員中查到組中某個成員中的對象。
3.1 檢測TCP SYN Flooding攻擊
為了檢測效果我們構造了一個主機受到TCP SYN Flooding攻擊的實驗。短短數秒的時間里機器就出現了故障。通過對副本的調用查看了故障機器上的TCP MIB對象。副本對象包括指示TCP連接直接從LISTEN到SYN_RCVD狀態切換次數的tcpPassiveOpens變量,以及指示機器上當前TCP狀態為ESTABLISHED或CLOSE_WAIT的總數的變量tcpCurrEstab。我們發現,主機上較早時間的日志顯示在大多數情況下tcpCurrEstab都是等于0的,當故障發生時卻等于85,而tcpCurrEstab保持正常值12,MIB對象的值清晰的將主機所受到的攻擊的特征展現在我們面前。如果沒有這個工具系統絕不可能檢測到故障機器上的MIB對象的值。
4 結束語
網絡管理中很需要對那些區域性的緊急情況進行處理,差錯管理程序應當勝任當前所知的網絡故障的處理。換句話說:系統應當具有容錯能力。在本文中介紹了一種新的SNMP服務以允許通過組中正常的Agent來訪問故障Agent的MIB對象。服務基于組關系下的半主動和主動方式對指定SNMP MIB對象進行復制。實現容錯能力的同時,在項目應用過程中發現此服務也可以用來提高系統的性能,因為管理者可以使用一個Agent來取得其他Agent的對象。
參考文獻:
[1] Leinw A,Conroy K F.Network Management:A Practical Perspective[M].Addison-Wesley,1996.
[2] Harrington D,Presuhn R,Wijnem B.An Architecture for Describing SNMP Management Frameworks[S].RFC 2571,IETF,1999.
[3] Schonwalder J.Using Multicast-SNMP to Coordinate Distributed Management Agents[J].IEEE Work-shop on Systems Management,1996(6).
[4] 張新,常義林,沈中,等.分層多管理者網絡故障監控策略[J].西安電子科技大學學報,2005,32(6).873-876.
[5] 安曉嶸,李孝安.分布式網絡管理系統中SNMP Agent的研究[J].科學技術與工程,2006,11(6):1565-1568.
[6] Lee K H.A Group Communication Protocol for Distributed Network Management Systems[C].Proc ICCC 95,1995:363-368.
[7] Farrow R.TCP SYN Flooding Attacks and Remedies[EB/OL].Network Computing Unix World,http://www.networkcomputing.com/unixworld/security/004/004.txt.html.