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