專利名稱:一種實現(xiàn)仿真設(shè)備代理的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種實現(xiàn)仿真設(shè)備代理的方法,尤其涉及一種不需要編譯、裝載的管理信息庫(MIB)的實現(xiàn)仿真設(shè)備代理的方法,以及自動生成用于實現(xiàn)所述方法的文件的方法。
背景技術(shù):
如圖1所示,一個設(shè)備能被網(wǎng)管站(Network Manage SystemNMS)所管理,就需要響應(yīng)網(wǎng)管站向設(shè)備發(fā)出的各種請求,同時自身發(fā)生了故障后能夠向網(wǎng)管站發(fā)送陷阱(Trap)報文。設(shè)備代理(agent)是駐留在被管設(shè)備上的一個進(jìn)程,負(fù)責(zé)接收、處理來自網(wǎng)管站的請求報文,然后從設(shè)備上其他協(xié)議模塊中取得管理變量的數(shù)值,形成響應(yīng)報文,發(fā)送給NMS。在某些情況下,如接口狀態(tài)發(fā)生改變、呼叫成功等時候,主動通知NMS(發(fā)送陷阱TRAP報文)。
SNMP(簡單網(wǎng)絡(luò)管理協(xié)議)就是用來規(guī)定NMS中的管理進(jìn)程和Agent中的代理進(jìn)程之間傳遞管理信息的應(yīng)用層協(xié)議。
如圖2所示,MIB(Management Information Base管理信息庫)是所監(jiān)控網(wǎng)絡(luò)設(shè)備的標(biāo)準(zhǔn)變量定義的集合。SNMP用層次結(jié)構(gòu)命名方案來識別管理對象,就象一棵樹,樹的節(jié)點表示管理對象,它可以用從根開始的一條路徑來無二義地識別。管理對象B可以用一串?dāng)?shù)字{1.2.1.1}唯一確定。這串?dāng)?shù)字是管理對象的object identifier(對象標(biāo)識符)。通過object identifier可確定從根到B的一條路徑。管理對象A的object identifier是{1.2.1.1.5},或可表示為{B.5},后一種表示方法表明A是B的第5個子節(jié)點。
設(shè)備的所有信息都可以使用MIB來存儲。如設(shè)備的描述信息(sysDescr)使用OID例如為1.3.6.1.2.1.1.1的MIB節(jié)點來存儲。這樣網(wǎng)管只需要向設(shè)備代理發(fā)送SNMP的Get請求(請求的OID為1.3.6.1.2.1.1.1)就可以獲得該設(shè)備的基本描述信息了。
網(wǎng)管站能對設(shè)備進(jìn)行管理,就是通過向設(shè)備代理發(fā)送SNMP請求來查詢、修改設(shè)備相應(yīng)的MIB對象(OID)的值(即OID對應(yīng)的內(nèi)容值)的方式實現(xiàn)的。因此對于網(wǎng)管軟件的測試,設(shè)備代理實現(xiàn)的正確性就非常關(guān)鍵。如果設(shè)備代理都不能保證正確,那么網(wǎng)管軟件測試的正確性也就無法保證。由于設(shè)備代理并不能保證完全正確(如設(shè)備代理程序還未完全成熟,未進(jìn)行詳細(xì)測試等原因),或在設(shè)備不可得(如設(shè)備代理程序還未做出來)、設(shè)備代理運(yùn)行的環(huán)境不可得(如在客戶方運(yùn)行的設(shè)備出問題需要定位時)或產(chǎn)生某些異常情況,很難進(jìn)行網(wǎng)管軟件的測試,所以通過仿真設(shè)備代理來測試網(wǎng)管軟件的方式已經(jīng)被廣大網(wǎng)管測試人員所采用。仿真設(shè)備代理在沒有相應(yīng)設(shè)備的情況下,對設(shè)備進(jìn)行仿真,達(dá)到測試網(wǎng)管的目的。并可以人工控制仿真設(shè)備代理的MIB值,方便單元測試的進(jìn)行。當(dāng)網(wǎng)管在用戶現(xiàn)場運(yùn)行發(fā)現(xiàn)問題后,需要定位時,仿真設(shè)備代理可以模擬現(xiàn)場的設(shè)備,從而在研發(fā)處對問題進(jìn)行復(fù)現(xiàn),并定位,無需研發(fā)人員到現(xiàn)場定位。
使用仿真SNMP設(shè)備代理可以方便網(wǎng)管軟件的開發(fā),例如可以由網(wǎng)管測試人員控制代理的行為,如人為設(shè)置異常的被仿真設(shè)備MIB值,來模擬被仿真設(shè)備的異常情況(如設(shè)備丟包率,報文錯誤率等)。
使用SNMP仿真設(shè)備代理可以有助于網(wǎng)管軟件發(fā)行。在發(fā)行網(wǎng)管軟件的試用版本時,往往用戶使用這種網(wǎng)管軟件時,并沒有相關(guān)設(shè)備,因此通過將仿真設(shè)備代理程序一起發(fā)布的方式來解決。用戶可以通過仿真設(shè)備代理來真實地了解網(wǎng)管軟件所具有的大部分功能。
目前有兩種仿真設(shè)備代理的方法,其一是通過加載相應(yīng)設(shè)備代理所具有的MIB,然后通過給所有MIB賦值的方式來實現(xiàn)。因為MIB文件是ASN.1編碼的文件,需要通過編譯程序編譯成一種類似于數(shù)據(jù)庫的文件,然后通過裝載程序讀取這個數(shù)據(jù)庫文件來獲得MIB節(jié)點的信息。如OID,描述,訪問控制等等。這種方式需要的步驟是1.編譯并裝載所有仿真設(shè)備使用的MIB。
2.給所有這些MIB節(jié)點賦值。
3.啟動仿真設(shè)備代理,響應(yīng)網(wǎng)管站的SNMP請求。給網(wǎng)管站返回步驟2中為MIB設(shè)置的值。
這種仿真方式主要有以下不足
1.仿真人員很有可能并不知道仿真某個設(shè)備需要那些MIB,因此也就不知道需要編譯、裝載那些MIB了。
2.如果MIB文件有誤,或MIB編譯器對MIB文件要求非常嚴(yán)格,往往會導(dǎo)致編譯不成功,需要仿真人員投入大量時間來修改MIB文件使之編譯通過,效率低。
3.一般一個真實的設(shè)備代理需要的MIB節(jié)點可能有成千上萬個,如果都是手工輸入值,顯然不切實際。
4.設(shè)備所具有的MIB節(jié)點之間大都相互有關(guān)系,仿真人員不可能將所有這些關(guān)系都搞清楚。因此很可能最后仿真出來的設(shè)備和真實設(shè)備相差甚遠(yuǎn)。
5.操作繁瑣,用戶不易使用。這種方式用戶需要使用的專業(yè)知識太多。而對于某些用戶(如使用網(wǎng)管試用版的用戶),他們可能根本不知道MIB為何物。
因此這種仿真方式很少被用戶所使用,只被部分專業(yè)用戶所使用。
仿真SNMP的第二種方法是通過將現(xiàn)有真實設(shè)備的所有MIB值取下來保存,然后編譯、裝載需要的MIB。MIB值的獲取從保存的設(shè)備MIB文件讀取,從而實現(xiàn)這些MIB值的設(shè)置。這種方式需要的步驟是1.編譯并裝載所有仿真設(shè)備使用的MIB。
2.在真實設(shè)備上獲取所有MIB節(jié)點值,并保存到文件中。
3.啟動仿真設(shè)備代理,從步驟2中得到MIB節(jié)點值。響應(yīng)網(wǎng)管站的SNMP請求,給網(wǎng)管站返回步驟2中從設(shè)備取到的值。
這種方式與第一種方式的區(qū)別在于MIB節(jié)點的值是從真實設(shè)備上獲取而非由人工賦值的,從而可以免去手工設(shè)置MIB的工作,因此,比第一種方式有了很大改進(jìn)。但這種方式由于仍然需要編譯、裝載MIB,因此仍然存在以下不足1.仿真人員很有可能并不知道仿真某個設(shè)備需要哪些MIB,因此也就不知道需要編譯、裝載哪些MIB了。所以仿真出來的設(shè)備由于某些MIB沒有裝載,從而網(wǎng)管所需要的信息不全。
2.操作繁瑣,用戶不易使用。
由于以上兩點,這種方式還是不能被廣大用戶所接受。特別是由于1的原因,網(wǎng)管站從仿真設(shè)備代理獲得的信息不全會導(dǎo)致網(wǎng)管軟件某些功能的喪失,從而影響網(wǎng)管功能的測試。如設(shè)備面板可能顯示不正確等。
發(fā)明內(nèi)容
本發(fā)明是為解決現(xiàn)有技術(shù)存在的上述缺點而做出的。因而本發(fā)明的一個目的是提供一種不需要編譯、裝載MIB即可實現(xiàn)仿真設(shè)備代理的方法。
本發(fā)明的另一目的是提供一種自動生成用于實現(xiàn)上述方法的文件的方法,以方便地用真實設(shè)備代理來產(chǎn)生仿真設(shè)備代理,簡單快速地實現(xiàn)仿真設(shè)備代理。
為實現(xiàn)上述目的,本發(fā)明提供了一種實現(xiàn)仿真設(shè)備代理的方法,包括以下步驟1)設(shè)置仿真設(shè)備代理的基本屬性;2)設(shè)置用于仿真設(shè)備代理的管理信息庫節(jié)點,包括設(shè)置管理信息庫表節(jié)點和葉子節(jié)點;3)處理網(wǎng)管站SNMP請求和控制請求;其特征在于,在所述管理信息庫表節(jié)點的處理中,將表節(jié)點按葉子節(jié)點處理,從而所述管理信息庫中所有的節(jié)點都按葉子節(jié)點處理。
優(yōu)選地,所述管理信息庫節(jié)點的設(shè)置通過執(zhí)行可執(zhí)行的腳本文件來實現(xiàn)。
進(jìn)一步,所述腳本文件為TCL文件,在所述TCL文件中含有至少一個增加/修改管理信息庫節(jié)點語句,所述增加/修改管理信息庫節(jié)點語句可設(shè)置一個管理信息庫節(jié)點。
再進(jìn)一步,所述TCL文件中含有刪除管理信息庫節(jié)點語句。
另外,所述設(shè)置仿真設(shè)備代理的基本屬性包括設(shè)置IP地址和端口號、團(tuán)體字、設(shè)備名稱;所述仿真代理的IP地址為運(yùn)行仿真設(shè)備代理程序主機(jī)的IP地址。
優(yōu)選地,所述步驟3)由一個仿真程序完成,所述仿真程序包括三個線程主線程完成用戶的輸入,一個子線程完成對網(wǎng)管站的SNMP請求的處理,一個子線程完成對仿真設(shè)備代理的管理信息庫的控制請求。
為實現(xiàn)上述目的,本發(fā)明還公開了一種自動生成用于實現(xiàn)所述步驟2)的文件的方法,包括以下的步驟a)設(shè)置真實設(shè)備的相關(guān)信息;b)獲取真實設(shè)備管理信息庫初始節(jié)點到終止節(jié)點的所有節(jié)點信息;c)將所獲取的節(jié)點信息寫入用于實現(xiàn)所述步驟2)的文件中。
優(yōu)選地,所述獲取真實設(shè)備管理信息庫初始節(jié)點到終止節(jié)點的所有節(jié)點信息用獲取節(jié)點命令和獲取下一節(jié)點命令實現(xiàn)。
優(yōu)選地,所述用于實現(xiàn)所述步驟2)的文件是可執(zhí)行的腳本文件,所獲得的節(jié)點信息結(jié)合進(jìn)可執(zhí)行語句寫入所述用于實現(xiàn)所述的步驟2)的文件,在執(zhí)行時,所述可執(zhí)行語句可設(shè)置MIB節(jié)點。
進(jìn)一步,所述可執(zhí)行的腳本文件是TCL文件,所述可執(zhí)行語句是增加/修改管理信息庫節(jié)點語句和/或刪除管理信息庫節(jié)點語句。
本發(fā)明的實現(xiàn)仿真設(shè)備代理方法無需編譯、裝載管理數(shù)據(jù)庫,因而操作簡單,不需要很強(qiáng)的專業(yè)知識即可使用,并能方便地用真實設(shè)備代理來產(chǎn)生仿真設(shè)備代理,保證仿真設(shè)備和真實設(shè)備相似,可以簡單快速地實現(xiàn)仿真設(shè)備代理。
圖1是SNMP協(xié)議中,設(shè)備代理與網(wǎng)管站關(guān)系示意圖;圖2是MIB結(jié)構(gòu)示意圖;圖3是本發(fā)明的增加/修改管理信息庫節(jié)點的函數(shù)的流程圖;圖4是本發(fā)明的刪除管理信息庫節(jié)點的函數(shù)的流程圖;圖5是本發(fā)明的實現(xiàn)仿真設(shè)備代理的方法的一個實施例的流程圖;圖6是本發(fā)明的自動生成用于實現(xiàn)設(shè)備仿真代理的文件的一個實施例的示意流程圖。
具體實施例方式
下面結(jié)合附圖詳細(xì)描述本發(fā)明的具體實施例。
仿真設(shè)備代理的實現(xiàn)需要設(shè)置MIB來仿真真實的設(shè)備,并響應(yīng)網(wǎng)管站的SNMP請求。
在本發(fā)明中,實現(xiàn)仿真設(shè)備代理的關(guān)鍵思想是在用于仿真設(shè)備代理的MIB中,將所有的節(jié)點都看作葉子節(jié)點。
MIB節(jié)點包括最基本的兩類節(jié)點葉子節(jié)點和表節(jié)點。一個葉子節(jié)點對應(yīng)一個值,它只有一個子節(jié)點0。如sysDescr的OID為1.3.6.1.2.1.1.1,它只有一個子OID1.3.6.1.2.1.1.1.0,而對于表節(jié)點則可以有很多子節(jié)點,如接口描述ifDescr的OID為1.3.6.1.2.1.2.2.1.2,它可以有的子節(jié)點為1.3.6.1.2.1.2.2.1.2.1,1.3.6.1.2.1.2.2.1.2.2等等,并且可以動態(tài)地創(chuàng)建和刪除。
由于仿真不需要很多的MIB信息,有些MIB的屬性(主要是MIB節(jié)點之間的制約關(guān)系)可以沒有,如果不考慮動態(tài)創(chuàng)建和刪除,由于位置關(guān)系是明確的,比如1.3.6.1.1.2在1.3.6.1.1.3之后,所以表節(jié)點也可以用葉子節(jié)點來表示。從而可以把所有節(jié)點表示為葉子節(jié)點。這樣仿真設(shè)備代理的MIB就不需要進(jìn)行特殊的處理,只要能真實地反應(yīng)被仿真的設(shè)備代理的狀態(tài)即可,因而可以使仿真過程非常簡單,不再需要編譯、裝載MIB。
MIB的所有信息可以通過設(shè)備文件來生成。在本發(fā)明的優(yōu)選實施例中,采用TCL文件來實現(xiàn)用于仿真設(shè)備代理的MIB。這樣,對用于仿真設(shè)備代理的MIB的增、刪、改可以通過TCL接口實現(xiàn),可以通過外部的輸入來控制仿真設(shè)備代理的MIB。如可以通過從真實設(shè)備代理處獲取MIB并生成該TCL文件,還可以通過人工修改TCL文件的方式來實現(xiàn)控制仿真設(shè)備代理的目的,并做到使用TCL自動控制用于仿真設(shè)備代理的MIB狀態(tài),如循環(huán)地設(shè)置一個MIB節(jié)點的變化等。
該TCL文件的生成可通過下文所述的自動生成方法來生成,也可以手工編輯而成。設(shè)備文件包括兩種語句Agent_AddMib語句和Agent_DelMib語句。這兩個函數(shù)是TCL的擴(kuò)展函數(shù)。它對應(yīng)著仿真程序里的函數(shù)。其中,Agent_AddMib是給代理程序添加MIB節(jié)點的TCL命令。同時,如果該MIB節(jié)點已經(jīng)存在則修改該MIB節(jié)點的屬性(讀寫類型,數(shù)據(jù)類型,值);在本發(fā)明的優(yōu)選實施例中該函數(shù)的參數(shù)如下(使用C++描述)char*strOid,需要添加/修改的MIB節(jié)點OID。
CString strMode,該OID的訪問屬性(可讀,可寫,可讀寫,不可訪問)CString strType,該OID值的類型CString strValue 該OID的值。
圖3示出了該函數(shù)的流程圖。如圖3所示,該函數(shù)首先判斷參數(shù)是否合法,在參數(shù)合法時,判斷MIB節(jié)點的OID是否存在,如存在則調(diào)用協(xié)議棧(如agent++)中的增加MIB節(jié)點函數(shù)修改該節(jié)點,否則調(diào)用協(xié)議棧中的函數(shù)增加該節(jié)點。在參數(shù)不合法時,則退出該程序。
在調(diào)用時,其格式為Agent_AddMib OID AccessMode Type value,舉例如下Agent_AddMib 1.3.6.1.2.1.1.2.0 READWRITE OID″1.3.6.1.4.1.2011.2.14.2″
其中,1.3.6.1.2.1.1.2.0是需要增加、修改的MIB節(jié)點的OID(對象標(biāo)識符)。
READWRITE是讀寫類型的一種,表示該MIB節(jié)點可讀寫。節(jié)點還可以有其他的讀寫類型READONLY(只能讀,不能寫),NOACCESS(不可訪問)。
OIDMIB節(jié)點的類型,表示系統(tǒng)標(biāo)識,也就是通過這個標(biāo)識來唯一地表示這個設(shè)備。這些類型都是RFC1212中標(biāo)準(zhǔn)的類型。
1.3.6.1.4.1.2011.2.14.2該MIB節(jié)點1.3.6.1.2.1.1.2.0的值。
全句的意思就是“增加一個MIB節(jié)點1.3.6.1.2.1.1.2.0,該節(jié)點用于標(biāo)識設(shè)備,可讀寫,其值為1.3.6.1.4.1.2011.2.14.2”。
類似地,如圖4所示,Agent_DelMib用于刪除已有的MIB節(jié)點。其參數(shù)(使用C++描述)為char*strOid,需要刪除的MIB節(jié)點OID。
該函數(shù)首先判斷參數(shù)是否合法,如合法則判斷該節(jié)點是否存在,存在則調(diào)用協(xié)議棧中的刪除MIB節(jié)點函數(shù)刪除該節(jié)點。在節(jié)點不存在及參數(shù)不合法時,則退出該函數(shù)。在調(diào)用時,例如Agent_DelMib 1.3.6.1.2.1.1.2.0其中1.3.6.1.2.1.1.2.0需要刪除的MIB節(jié)點的OID。
通過實現(xiàn)以上兩個TCL命令就可以實現(xiàn)對仿真設(shè)備代理上的所有MIB節(jié)點的增、刪、改操作了。
圖5示出了本發(fā)明的實現(xiàn)仿真設(shè)備代理的方法的一個實施例。如圖5所示,在本發(fā)明的一個實施例中,實現(xiàn)仿真設(shè)備代理的方法包括如下的步驟1)設(shè)置仿真設(shè)備基本屬性;2)設(shè)置仿真設(shè)備代理的所有MIB節(jié)點;3)循環(huán)處理網(wǎng)管站SNMP請求、接收用戶對仿真代理的控制請求。
其中步驟1的設(shè)置仿真設(shè)備代理基本屬性主要是指設(shè)置仿真設(shè)備代理的各種屬性,包括設(shè)置仿真設(shè)備的綁定IP地址和端口號;綁定的IP地址是運(yùn)行仿真程序主機(jī)所具有的IP地址,端口號為NMS進(jìn)行SNMP訪問的目的端口。在本實施例中,默認(rèn)的IP地址為127.0.0.1,端口號為UDP(用戶數(shù)據(jù)包協(xié)議)端口161。
寫團(tuán)體字;SNMPv1中使用的用戶訪問控制方法。默認(rèn)為public和private。
設(shè)置仿真設(shè)備代理的設(shè)備文件即指明用于設(shè)置仿真設(shè)備代理所需的MIB庫節(jié)點的文件。設(shè)備文件可以有多種形式,有些形式的文件需要專門的結(jié)構(gòu)。由于TCL是一個很好的腳本化語言,而且便于擴(kuò)充;通過執(zhí)行里面的TCL腳本可以完成加載設(shè)備MIB節(jié)點的任務(wù)。同時,可以利用TCL接口(這里的接口包括TCL本身所具有的函數(shù)外,而且可以和C、C++語言集成來擴(kuò)充TCL的函數(shù)。)實現(xiàn)對仿真設(shè)備代理的MIB的控制(增、刪、改)。因此在本發(fā)明的優(yōu)選實施例使用該語言來實現(xiàn),也就是說,在本實施例中,所指明的設(shè)備文件是一個TCL文件。
定義仿真設(shè)備代理名稱仿真設(shè)備代理的名稱為一文本。可方便用戶查看該仿真設(shè)備代理的類型。
2.設(shè)置仿真設(shè)備代理的所有MIB節(jié)點;根據(jù)步驟1所設(shè)置的仿真設(shè)備的屬性,綁定IP和端口,設(shè)置讀寫團(tuán)體字,執(zhí)行設(shè)備文件,將設(shè)備文件中的MIB節(jié)點實現(xiàn),如前所述,因為將所有的節(jié)點都看作是葉子節(jié)點進(jìn)行設(shè)置,因而無需編譯就可實現(xiàn)所有節(jié)點的設(shè)置,在本實施例中,設(shè)備文件為TCL文件。
3.循環(huán)等待網(wǎng)管站的SNMP請求。如果有請求則處理,將所請求的OID的值打包成SNMP的相應(yīng)報文,發(fā)送給網(wǎng)管站。當(dāng)使用仿真設(shè)備代理的網(wǎng)管站需要對仿真設(shè)備代理進(jìn)行增、刪、改時,同樣通過執(zhí)行TCL設(shè)備文件來實現(xiàn)(例如,如用戶想讓某個MIB結(jié)點的值周期的變化,則可以編寫一個TCL腳本讓仿真代理執(zhí)行來循環(huán)地修改該值。)在這里可以使用多線程技術(shù)。將等待和處理網(wǎng)管站的SNMP請求作為一個單獨(dú)的線程運(yùn)行,同時主線程完成用戶對仿真設(shè)備代理的控制請求(包括停止仿真請求)。考慮到對仿真設(shè)備代理的某些控制可能耗時很長(如增、刪、改很多MIB節(jié)點時),也可采用單獨(dú)一個線程的方式來處理。這樣在本發(fā)明的優(yōu)選實施例中,一個仿真程序共包括三個線程主線程完成用戶的輸入,一個子線程完成對網(wǎng)管站的SNMP請求和處理,一個子線程完成對仿真設(shè)備代理的MIB的控制請求。其中最后一個子線程,即完成對仿真設(shè)備代理的MIB的控制請求的子線程是動態(tài)創(chuàng)建和消亡的。在主線程接收了用戶執(zhí)行某個修改MIB操作時,啟動另外該子線程來執(zhí)行,執(zhí)行后即退出。在用戶給主線程發(fā)送結(jié)束仿真的請求時,仿真設(shè)備代理首先結(jié)束兩個子線程,然后退出,仿真結(jié)束。
本發(fā)明還提供了一種自動生成實現(xiàn)所述步驟2)的設(shè)備文件的方法。由于設(shè)置MIB節(jié)點是實現(xiàn)仿真設(shè)備代理的關(guān)鍵,而MIB節(jié)點數(shù)量繁多,如果讓用戶來進(jìn)行輸入,工作量大,而且容易出錯。因此本發(fā)明提供了一種自動生成用于設(shè)置MIB節(jié)點的文件的方法,獲取真實設(shè)備代理的MIB節(jié)點。獲取真實設(shè)備MIB節(jié)點的目的就是生成仿真設(shè)備代理所需要的設(shè)備文件,從而無需人工編輯設(shè)備文件即可達(dá)到仿真設(shè)備的目的。
本發(fā)明通過向真實設(shè)備發(fā)送SNMP的Get和GetNext請求,將用戶(即網(wǎng)管站)需要的某個范圍的設(shè)備MIB節(jié)點值取下來并保存在本地的文件中。用戶通過設(shè)備開始OID(startoid)和結(jié)束OID(endoid)來控制獲取的范圍。如果startoid=NULL則表示從設(shè)備MIB節(jié)點的開始獲取,endoid=NULL則表示一直取到設(shè)備MIB節(jié)點的結(jié)束為止。獲取結(jié)束的條件有四種1、返回錯誤;2、到了設(shè)備MIB的結(jié)束節(jié)點,GetNext返回“no such name”,這兩個條件滿足一個即可;3、GetNext返回的OID為”0.0”(因為有些設(shè)備到最后一個MIB節(jié)點后再GetNext就會返回0.0,這是一種特殊情況。);4、返回的oid已經(jīng)大于endoid了。第一個條件是一種錯誤,而后三個條件是正常結(jié)束。
生成的設(shè)備文件的格式舉例如下Agent_AddMib 1.3.6.1.2.1.1.2.0 READWRITE OID″1.3.6.1.4.1.2011.2.14.2″//設(shè)備的OIDAgent_AddMib 1.3.6.1.2.1.1.3.0 READWRITE TIMETICKS″5 days,19:25:30.00″//設(shè)備啟動時間Agent_AddMib 1.3.6.1.2.1.1.4.0 READWRITE OCTETS″HuaWei BeiJing China″//設(shè)備維護(hù)人聯(lián)系方式Agent_AddMib 1.3.6.1.2.1.1.5.0 READWRITE OCTETS″NULL″//設(shè)備名稱這根據(jù)設(shè)備所實現(xiàn)的MIB節(jié)點有關(guān)。
獲取到真實設(shè)備的MIB時,只需要用到Agent_AddMib命令來實現(xiàn)添加MIB的功能。
如圖6所示,自動生成用于設(shè)置MIB節(jié)點的設(shè)備文件的過程包括1.基本信息輸入,包括與真實設(shè)備有關(guān)的信息和用來保存所獲取的MIB的文件名稱(保存的本地文件名,如果已經(jīng)存在則會將覆蓋)。其中,與真實設(shè)備有關(guān)的信息包括設(shè)備IP,根據(jù)使用仿真的用戶具體確定的開始OID(從那個MIB節(jié)點開始獲取),結(jié)束OID(結(jié)束的MIB節(jié)點)。優(yōu)選地,輸入讀寫團(tuán)體字,該團(tuán)體字在用戶發(fā)送SNMP請求時使用,以驗證相應(yīng)的MIB是否可寫,從而確定MIB節(jié)點的訪問類型。也可以不輸入團(tuán)體字,直接將所有的MIB節(jié)點的訪問類型設(shè)為可讀寫(READWRITE)。
2.獲取最開始的MIB節(jié)點。
首先使用Get請求,看能否取到startoid的值。如果沒有取到,則Get請求會返回找不到該值的信息,如“no such name”,這時再使用GetNext來獲取最開始的MIB節(jié)點。如果取到了startoid的值,則以Agent_AddMib$oid READWRITE$syntax“$value″的方式寫入設(shè)備文件。其中,Agent_AddMib是添加MIB的TCL命令;$oid是設(shè)備返回的oid;READWRITE,此處是MIB節(jié)點的讀寫類型,在本實施例中已將其固化為MIB節(jié)點可讀寫;$syntax設(shè)備返回的該節(jié)點的數(shù)據(jù)類型,$value該節(jié)點的值。
3.獲取其它MIB節(jié)點。
可以采用一個循環(huán)實現(xiàn),通過向設(shè)備發(fā)送GetNext請求,依次獲取其它MIB節(jié)點,并在未發(fā)生讀寫錯誤時,將返回的結(jié)果以與前述相同的格式寫入到設(shè)備文件,直到結(jié)束條件成立為止,所述的結(jié)束條件如前所述。
應(yīng)該理解上述方法可以有很多的等效變化,如可在所有的節(jié)點都搜索完成后一起寫入設(shè)備文件,在這種情況下設(shè)備文件的名稱也可在寫入時設(shè)置等等。
本發(fā)明技術(shù)方案帶來的有益效果有操作簡單,不需要知道設(shè)備所具有的MIB,也不需要編譯和加載MIB。不需要很強(qiáng)的專業(yè)知識即可使用。
不需要編譯,裝載MIB即可仿真設(shè)備代理。
能通過程序生成設(shè)備文件的方式方便地用真實設(shè)備代理來產(chǎn)生仿真設(shè)備代理。達(dá)到仿真設(shè)備和真實設(shè)備的相似性。
能使用TCL腳本方便地控制仿真設(shè)備代理。如增加、修改、刪除所具有的MIB節(jié)點。給網(wǎng)管開發(fā)人員進(jìn)行代碼測試、聯(lián)調(diào)提供了方便實用的工具。
能使用TCL腳本語言來自動控制仿真設(shè)備代理。通過實現(xiàn)的增、刪、改MIB節(jié)點的TCL命令和TCL本身的控制語句來實現(xiàn)豐富的控制功能。
生成的軟件很小,方便與網(wǎng)管軟件一塊發(fā)布。由于本發(fā)明所具有的簡單性,實現(xiàn)這樣一個仿真設(shè)備代理非常容易,代碼量很少,非常適于作為網(wǎng)管產(chǎn)品demo版本的捆綁發(fā)布。
以上為說明的目的對本發(fā)明的優(yōu)選實施例進(jìn)行了詳細(xì)的描述,但本領(lǐng)域的普通技術(shù)人員應(yīng)該意識到,在本發(fā)明的范圍和精神的情況下,各種改進(jìn)、添加和替換都是可能的,例如MIB節(jié)點類可以由自行設(shè)計的MIB葉子結(jié)點類或繼承其他已有的MIB結(jié)點類的實現(xiàn),或使用其他語言的實現(xiàn),包括腳本語言(如TCL)等實現(xiàn)。自動獲取真實設(shè)備的MIB節(jié)點的方法既可以使用普通的編程語言(C、C++、VB等)來實現(xiàn),也可以使用腳本語言來實現(xiàn)(如TCL)。這些都在本發(fā)明的權(quán)利要求所限定的保護(hù)范圍內(nèi)。
權(quán)利要求
1.一種實現(xiàn)仿真設(shè)備代理的方法,包括以下步驟1)設(shè)置仿真設(shè)備代理的基本屬性;2)設(shè)置用于仿真設(shè)備代理的管理信息庫節(jié)點,包括設(shè)置管理信息庫表節(jié)點和葉子節(jié)點;3)處理網(wǎng)管站SNMP請求和控制請求;其特征在于,在對所述管理信息庫節(jié)點的處理中,將表節(jié)點按葉子節(jié)點處理,從而所述管理信息庫中所有的節(jié)點都按葉子節(jié)點處理。
2.根據(jù)權(quán)利要求1所述的實現(xiàn)仿真設(shè)備代理的方法,其特征在于,所述管理信息庫節(jié)點的設(shè)置通過執(zhí)行可執(zhí)行的腳本文件來實現(xiàn)。
3.根據(jù)權(quán)利要求2所述的實現(xiàn)仿真設(shè)備代理的方法,其特征在于,所述腳本文件為TCL文件,在所述TCL文件中含有至少一個增加/修改管理信息庫節(jié)點語句,所述增加/修改管理信息庫節(jié)點語句可設(shè)置一個管理信息庫節(jié)點。
4.根據(jù)權(quán)利要求3所述的實現(xiàn)仿真設(shè)備代理的方法,其特征在于,所述TCL文件中含有刪除管理信息庫節(jié)點語句。
5.根據(jù)權(quán)利要求1到4中任一項所述的實現(xiàn)仿真設(shè)備代理的方法,其特征在于,所述設(shè)置仿真設(shè)備代理的基本屬性包括設(shè)置IP地址和端口號、團(tuán)體字、設(shè)備名稱;所設(shè)置的仿真設(shè)備代理的IP地址為運(yùn)行所述仿真設(shè)備代理的主機(jī)的IP地址。
6.根據(jù)權(quán)利要求1到4中任一項所述的實現(xiàn)仿真設(shè)備代理的方法,其特征在于所述步驟3)由一個仿真程序完成,所述仿真程序包括三個線程主線程完成用戶的輸入,一個子線程完成對網(wǎng)管站的SNMP請求的處理,一個子線程完成對仿真設(shè)備代理的管理信息庫的控制請求。
7.一種自動生成用于實現(xiàn)權(quán)利要求1所述的步驟2)的文件的方法,包括以下的步驟a)設(shè)置真實設(shè)備的相關(guān)信息;b)獲取真實設(shè)備管理信息庫初始節(jié)點到終止節(jié)點的所有節(jié)點信息;c)將所獲取的節(jié)點信息寫入用于實現(xiàn)所述權(quán)利要求1的步驟2)的文件中。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述獲取真實設(shè)備管理信息庫初始節(jié)點到終止節(jié)點的所有節(jié)點信息用獲取節(jié)點命令和獲取下一節(jié)點命令實現(xiàn)。
9.根據(jù)權(quán)利要求7或8所述的方法,其特征在于,所述用于實現(xiàn)權(quán)利要求1所述的步驟2)的文件是可執(zhí)行的腳本文件,所獲得的節(jié)點信息結(jié)合進(jìn)可執(zhí)行語句寫入所述用于實現(xiàn)權(quán)利要求1所述的步驟2)的文件,在執(zhí)行時,所述可執(zhí)行語句可設(shè)置管理信息庫節(jié)點。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述可執(zhí)行的腳本文件是TCL文件,所述可執(zhí)行語句是增加/修改管理信息庫節(jié)點語句和/或刪除管理信息庫節(jié)點語句。
全文摘要
本發(fā)明公開了一種實現(xiàn)仿真設(shè)備代理的方法,包括1)設(shè)置仿真設(shè)備代理的基本屬性(IP、讀寫團(tuán)體字等);2)設(shè)置MIB節(jié)點,包括設(shè)置表節(jié)點和葉子節(jié)點;3)處理網(wǎng)管站SNMP請求和控制請求;其特征在于,在所述管理信息庫表節(jié)點的設(shè)置中,將表節(jié)點看作葉子節(jié)點,從而所述管理信息庫中所有的節(jié)點都表示為葉子節(jié)點。本發(fā)明還公開了一種自動生成實現(xiàn)所述步驟2)的文件的方法,包括a)設(shè)置真實設(shè)備的相關(guān)信息;b)獲取真實設(shè)備管理信息庫初始節(jié)點到終止節(jié)點的所有節(jié)點信息;c)將所獲取的節(jié)點信息寫入所述文件中。本發(fā)明無需編譯、裝載MIB,操作簡單,能方便地用真實設(shè)備代理來產(chǎn)生仿真設(shè)備代理,可以簡單快速地建立仿真設(shè)備代理。
文檔編號H04L12/26GK1658579SQ20041000427
公開日2005年8月24日 申請日期2004年2月16日 優(yōu)先權(quán)日2004年2月16日
發(fā)明者黃小東 申請人:華為技術(shù)有限公司