鄭州市電子信息工程學校 周曉冬
基于XML的SNMP管理者和轉換代理的研究與實現
鄭州市電子信息工程學校 周曉冬
自從20世紀80年代SNMP(Simple Network Management Protocol)簡單網絡管理協(xié)議出現以來,網絡管理在技術層面上的發(fā)展非常迅猛。隨著部分管理功能的增強和管理對象的范圍的擴大,網絡管理技術的重要性也在逐步增強,并成為網絡構建和維護的重要組成部分。
當XML(擴展標記語言)于1998年2月被引入軟件工業(yè)界時,它給整個行業(yè)帶來了一場革命風暴。自此,這個世界擁有了一種用來結構化文檔和數據的通用且適應性強的格式,它不僅可以應用于Web,而且可以被用于任何網絡中其他需要結構化的地方。
XML是可擴展置標語言(Extensible Markup Language,簡稱XML),又稱可擴展標記,它是一種置標語言。置標是指計算機所能理解的信息符號,通過此種標記,計算機之間可以處理包含各種信息的文章等。XML的設計理念是用來傳輸和存儲數據,而不是顯示數據,XML僅僅是純文本而已。如何把這些標記重新定義,既可以選擇國際通用的標記語言,例如HTML,也可以使用由相關人士商量而定的標記語言(例如XML),這就是語言的可擴展性。XML是從標準通用置標語言(SGML)中簡化并修改出來的,主要用到的有可擴展置標語言、可擴展樣式語言(XSL)、XBRL和XPath等。
1. XML的實現模型。由于網絡管理軟件的管理方式有很多種(應用程序或Web方式等),而且不支持SNMP的被管對象也種類繁多,因此在系統(tǒng)實現的具體過程中,XML的通用性和可擴展性就顯得十分重要。為了達到這一目的,人們將XML技術應用于系統(tǒng)的設計與實現中,于是就提出了一種基于XML的實現模型,并在用戶接口、MIB文件解析、報文編碼、設備模板的構造等方面引入XML,使系統(tǒng)具有良好的通用性和可擴展性。
2. SNMP的轉換代理。一方面,目前面向IP網絡的管理軟件絕大多數都以SNMP協(xié)議作為與被管對象通信的接口,但是網絡管理軟件的研究重點往往放在如何實現網絡管理功能上,而對底層SNMP協(xié)議管理操作的實現,則依賴于國外第三方的協(xié)議開發(fā)工具,致使產品的穩(wěn)定性和可擴展性都受到了第三方軟件的影響。因此,自行研制SNMP管理者協(xié)議,對于網絡管理系統(tǒng)的開發(fā)具有十分重要的意義。
另一方面,SNMP協(xié)議并不是所有的網絡設備都能支持的。比如很早開發(fā)的產品以及一些非網絡核心設備(UPS、附網存儲器等),還有一些重要軟件服務(網絡防火墻、數據庫)等也逐步被納入網絡管理范圍之內。要使基于SNMP的網絡管理軟件對這些不支持SNMP協(xié)議的被管對象可以通過相同的SNMP接口進行管理,最好的解決方法就是在SNMP管理者和被管設備之間增設轉換代理(Proxy Agent),這個環(huán)節(jié)是目前網絡管理軟件的薄弱點。
由于XML具有一些自己的特殊性是其他網絡管理技術所不能提供的,因此將XML應用于網絡管理是網絡管理領域的必然發(fā)展趨勢。本文,筆者在基于XML的SNMP管理者的實現方面進行了嘗試,主要在以下方面運用了XML技術:利用XML描述管理對象的MIB文件。 從GUI/API中接收的輸入數據一律采用統(tǒng)一的XML接口,使系統(tǒng)可以十分方便地采用不同模式來實現用戶數據與系統(tǒng)的交換。數據在系統(tǒng)內部的處理以XML數據流為主:一方面通過成熟的XML解析器,可以降低數據處理的復雜性;另一方面,因為只在最后向傳統(tǒng)SNMP Agent 發(fā)送BER編碼時才進行格式轉換,所以如果Agent支持XML格式報文管理,去掉轉換層就可以達到管理XML的目標。通過XML配置文件對系統(tǒng)進行初始化配置。
1. ASN.1與XML的映射與轉換。ASN.1是一種用于描述結構化客體結構和內容的語言。主要包括2部分:一部分描述信息內數據、數據類型及序列格式,另一部分描述如何將各部分組成消息。ASN.1廣泛應用于通信協(xié)議(如SNMP、LDAP)、安全協(xié)議(如X509)以及數據格式(如PKCS#7)等領域。本文,筆者研究的SNMP管理者在實現過程中,SNMP報文和PDU采用的是ASN.1語法。例如,要向某一代理發(fā)送一個SNMPv1版本的Get-Request請求,請求獲得sysDescr對象實例(OID∶.1.3.6.1.2.1.1.1.0)值。我們將XML引入SNMP PDU 編解碼過程中,通過ASN.1和XML的互相轉換,可以簡化SNMP PDU的編解碼難度,提高其正確率,并使得通過Web方式進行SNMP報文的傳遞和接收成為可能。
2. MIB文件的XML格式描述。SNMP管理者的實施過程中需要從管理端獲取對被管設備管理信息的描述,才能完整地構造、解析出請求報文的請求管理對象,這需要通過對MIB文件采用ASN.1格式描述,可借助已有的LL(1)文法解析器進行基礎分析。但是這種方法需要花費不少時間來構造大量的規(guī)則庫,而且隨著SNMP的發(fā)展,某些MIB文法很可能已不再符合LL(1)的標準,將無法采用上述方法進行MIB文件的解析。如果采用XML文檔來描述MIB變量的定義,不但具有良好的可讀性,而且只要編寫一個SMI的DTD或XML Schema,就可以借助帶有驗證功能的XML解析器對XML格式的MIB文件進行語法解析,而且無論MIB文法是否符合LL(1)文法,都可以采用這一方法來實現。對于SNMP Agent,采用XML描述的MIB既可以進行動態(tài)修改,又可以使用不同的形式進行發(fā)布,便于管理者調用。因此,通過XML格式來描述MIB文件,必將成為網絡管理的新發(fā)展和新趨勢。
3. 系統(tǒng)原型的實現?;赟NMP協(xié)議的NMS管理工作站,通過本系統(tǒng)提供CUI/API發(fā)出SNMP管理請求,以XML數據格式傳遞給報文構造。在構造過程中,與MIB對象相關的所有信息都從MIB樹的MIB Node中獲得。如果是v3版本的報文,則需通過安全子系統(tǒng)進行安全變量初始化和安全信息的加載。
一旦XML報文構造成功,將其發(fā)往XML/ASN.1轉換器(如果SNMP Agent 支持XML格式管理,則無需此步驟)轉換為BER編碼,并放入報文發(fā)送隊列中準備發(fā)送。在系統(tǒng)啟動時,會同時啟動另一個守護線程來實現報文發(fā)送,接收器就會立即將其發(fā)送至目的地址和端口,并同時在發(fā)送端口等待響應報文的到來。只要檢測到有響應報文的到來,就將其放入報文接收隊列。接收到的報文按照上述發(fā)送的逆過程,經過XML/ASN.1轉換器、報文構造解析器,最后通過CUI/API接口反饋給NMS管理工作站。