本發(fā)明涉及通訊領(lǐng)域,尤其涉及一種基于EOC設(shè)備的簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議代理實(shí)現(xiàn)方法。
背景技術(shù):
SNMP(Simple Network Management Protocol,簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議)是一種基于TCP/IP(Transmission Control Protocol/Internet Protocol,傳輸控制協(xié)議/因特網(wǎng)互聯(lián)協(xié)議)協(xié)議族的網(wǎng)絡(luò)管理標(biāo)準(zhǔn),用于在IP網(wǎng)絡(luò)中管理網(wǎng)絡(luò)節(jié)點(diǎn),有助于網(wǎng)絡(luò)管理員提高網(wǎng)絡(luò)管理效能,及時(shí)發(fā)現(xiàn)并解決網(wǎng)絡(luò)問題以及規(guī)劃網(wǎng)絡(luò)的增長(zhǎng)。SNMP管理的網(wǎng)絡(luò)主要由三部分組成:被管理的設(shè)備、SNMP代理以及NMS(Network Management System,網(wǎng)絡(luò)管理系統(tǒng))。其中,被管理的設(shè)備,又稱為網(wǎng)絡(luò)單元或網(wǎng)絡(luò)節(jié)點(diǎn),可以是支持SNMP協(xié)議的服務(wù)器、工作站、路由器以及交換機(jī)等設(shè)備,每一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)上均設(shè)有相應(yīng)的MIB(Management Information Base,管理信息庫),MIB用于收集并儲(chǔ)存管理信息,即NMS可訪問的目標(biāo)節(jié)點(diǎn)的控制和狀態(tài)信息,另外,MIB的總體框架以及數(shù)據(jù)類型的表示和命名方法均由SMI(Structure of Management Information,管理信息結(jié)構(gòu))統(tǒng)一說明和定義;SNMP代理通常是設(shè)置于網(wǎng)絡(luò)節(jié)點(diǎn)上的一個(gè)網(wǎng)絡(luò)管理模塊,SNMP代理擁有本地設(shè)備的相關(guān)管理信息,NMS可以通過SNMP代理與被管理的設(shè)備進(jìn)行信息交互,從而實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)節(jié)點(diǎn)的監(jiān)控。
目前,實(shí)現(xiàn)SNMP功能比較常用的SNMP代理為NET-SNMP(網(wǎng)絡(luò)-簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議)。NET-SNMP采用主代理—子代理的結(jié)構(gòu)形式實(shí)現(xiàn)SNMP功能,主代理和子代理之間需采用Agent X(X代理)協(xié)議進(jìn)行數(shù)據(jù)傳輸。其中,主代理負(fù)責(zé)與NMS通訊,子代理負(fù)責(zé)目標(biāo)節(jié)點(diǎn)的訪問。具體的,主代理接收并解析NMS發(fā)送的SNMP報(bào)文,從而獲取SNMP報(bào)文中的操作指令信息;再將以上操作指令信息,以及根據(jù)以上操作指令信息獲取的操作節(jié)點(diǎn)信息按照Agent X協(xié)議重新打包,將協(xié)議包發(fā)送至子代理。子代理根據(jù)協(xié)議包中操作節(jié)點(diǎn)信息的節(jié)點(diǎn)類型(標(biāo)量節(jié)點(diǎn)或表節(jié)點(diǎn))分別調(diào)用相應(yīng)的接口函數(shù),接口函數(shù)再根據(jù)不同的操作類型進(jìn)行相應(yīng)處理,從而按照操作節(jié)點(diǎn)信息中的節(jié)點(diǎn)順序依次獲取目標(biāo)信息,并將獲取的目標(biāo)信息按照Agent X協(xié)議打包后發(fā)送至主代理,以便主代理將相關(guān)信息反饋給NMS。
現(xiàn)有技術(shù)中的NET-SNMP對(duì)于SNMP報(bào)文的處理通常是NET-SNMP中的子代理根據(jù)操作節(jié)點(diǎn)信息中的節(jié)點(diǎn)類型調(diào)用相應(yīng)的接口函數(shù),再根據(jù)不同的操作類型進(jìn)行相應(yīng)處理,從而按照操作節(jié)點(diǎn)信息中的節(jié)點(diǎn)順序依次獲取目標(biāo)信息。也就是說,NET-SNMP在處理操作節(jié)點(diǎn)時(shí),無論目標(biāo)節(jié)點(diǎn)是標(biāo)量節(jié)點(diǎn)還是表節(jié)點(diǎn),必須在當(dāng)前節(jié)點(diǎn)處理完成后,即獲取到當(dāng)前目標(biāo)節(jié)點(diǎn)的目標(biāo)信息后,才能繼續(xù)對(duì)操作節(jié)點(diǎn)信息中的下一節(jié)點(diǎn)的進(jìn)行處理。當(dāng)操作節(jié)點(diǎn)信息中包含有多個(gè)位于同一數(shù)據(jù)表中的表節(jié)點(diǎn)時(shí),則NET-SNMP的處理方式需要對(duì)數(shù)據(jù)表進(jìn)行多次讀取,從而獲取相應(yīng)的目標(biāo)信息。
由于NET-SNMP代理的開源性,使得NET-SNMP已經(jīng)廣泛應(yīng)用于各類網(wǎng)絡(luò)節(jié)點(diǎn)。但是,對(duì)于EOC(Ethernet Over Cable,基于有線電視同軸電纜網(wǎng)使用以太網(wǎng)協(xié)議的接入技術(shù))設(shè)備而言,由于EOC設(shè)備局端(EOC設(shè)備局端可以是提供EOC設(shè)備接入的一方)可以統(tǒng)一管理下掛的EOC設(shè)備,因而,無需通過主代理和子代理的信息傳輸即可獲取或設(shè)置EOC設(shè)備的目標(biāo)信息。由此可見,NET-SNMP應(yīng)用于EOC設(shè)備時(shí),其主代理—子代理結(jié)構(gòu)將額外占用EOC設(shè)備的系統(tǒng)資源,導(dǎo)致EOC設(shè)備資源的浪費(fèi)以及SNMP響應(yīng)速度的降低。
技術(shù)實(shí)現(xiàn)要素:
由于EOC設(shè)備局端可以統(tǒng)一管理下掛的終端設(shè)備,因而本發(fā)明只需通過一個(gè)簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議代理即可實(shí)現(xiàn)SNMP報(bào)文的接收、解析以及目標(biāo)信息的獲取和發(fā)送。本方法提供的簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議代理不存在主代理和子代理兩個(gè)子模塊之間的數(shù)據(jù)傳輸,同時(shí),本方案提供的簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議代理在網(wǎng)絡(luò)節(jié)點(diǎn)內(nèi)部傳輸數(shù)據(jù)時(shí)也無需進(jìn)行格式轉(zhuǎn)化,從而降低EOC設(shè)備的系統(tǒng)負(fù)擔(dān),另外,由于不存在主代理和子代理之間的數(shù)據(jù)傳輸和數(shù)據(jù)格式轉(zhuǎn)化,從而減少生成的可執(zhí)行文件的存儲(chǔ)空間,進(jìn)一步降低EOC設(shè)備的系統(tǒng)負(fù)擔(dān),進(jìn)而提高SNMP的響應(yīng)速度。另外,本方法通過SMI配置文件中的節(jié)點(diǎn)信息預(yù)設(shè)與SNMP報(bào)文中操作指令對(duì)應(yīng)的操作函數(shù),以便完成相關(guān)操作指令時(shí)直接調(diào)用,從而提高NMS與網(wǎng)絡(luò)節(jié)點(diǎn)的信息交互效率,進(jìn)一步提高SNMP的響應(yīng)速度。另外,本發(fā)明相比NET-SNMP而言,由于沒有主代理和子代理的數(shù)據(jù)通信,減少獲取(或設(shè)置)時(shí)的函數(shù)封裝層次,因而減少了生成的可執(zhí)行文件的大小,進(jìn)一步提高系統(tǒng)資源的利用率。
本發(fā)明提供的簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議代理實(shí)現(xiàn)方法,將操作節(jié)點(diǎn)信息中表節(jié)點(diǎn)先進(jìn)行預(yù)處理,即在獲取表節(jié)點(diǎn)的目標(biāo)信息之前,先將所有表節(jié)點(diǎn)以及表節(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)表存儲(chǔ)至預(yù)設(shè)的表節(jié)點(diǎn)數(shù)據(jù)庫中,待所述操作節(jié)點(diǎn)均完成處理后,再對(duì)表節(jié)點(diǎn)數(shù)據(jù)庫中的所有表節(jié)點(diǎn)進(jìn)行統(tǒng)一處理。本發(fā)明對(duì)于表節(jié)點(diǎn)的處理方式,有利于一次性讀取位于同一數(shù)據(jù)表中的所有表節(jié)點(diǎn)的目標(biāo)信息,從而有效減少讀取次數(shù),有效提高SNMP的響應(yīng)速度。另外,EOC設(shè)備獲取板卡數(shù)據(jù)的操作過程耗時(shí)較長(zhǎng),而該部分?jǐn)?shù)據(jù)通常位于表節(jié)點(diǎn)中,過長(zhǎng)的操作時(shí)間容易導(dǎo)致EOC設(shè)備出現(xiàn)異常。因而,本發(fā)明將表節(jié)點(diǎn)進(jìn)行統(tǒng)一處理的方式,可以一定程度上避免EOC設(shè)備出現(xiàn)異常的情況。
本發(fā)明提供一種基于EOC設(shè)備的簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議代理實(shí)現(xiàn)方法,所述方法包括:
獲取管理信息結(jié)構(gòu)SMI配置文件中的節(jié)點(diǎn)信息,根據(jù)所述節(jié)點(diǎn)信息預(yù)設(shè)操作函數(shù),所述操作函數(shù)包括get函數(shù)、set函數(shù)和check函數(shù);
接收并解析網(wǎng)絡(luò)管理系統(tǒng)NMS發(fā)送的簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議SNMP報(bào)文,所述簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議SNMP報(bào)文包括操作指令信息,所述操作指令信息包括操作類型和操作節(jié)點(diǎn),其中,所述操作類型為SNMP GET操作、SNMP GET_NEXT操作、SNMP SET操作或SNMP GET_BULK操作中的一種;
調(diào)用與所述操作指令信息對(duì)應(yīng)的所述操作函數(shù),以獲取目標(biāo)信息;
將所述目標(biāo)信息按照簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議SNMP報(bào)文格式發(fā)送至網(wǎng)絡(luò)管理系統(tǒng)NMS。
優(yōu)選的,所述方法還包括:
接收EOC設(shè)備監(jiān)控程序發(fā)送的主動(dòng)傳輸請(qǐng)求,所述主動(dòng)傳輸請(qǐng)求包括陷阱TRAP請(qǐng)求或確認(rèn)INFORM請(qǐng)求;
根據(jù)所述主動(dòng)傳輸請(qǐng)求獲取主動(dòng)傳輸數(shù)據(jù),所述主動(dòng)傳輸數(shù)據(jù)包括TRAP數(shù)據(jù)或INFORM數(shù)據(jù);
將所述TRAP數(shù)據(jù)或INFORM數(shù)據(jù)按照SNMP報(bào)文格式發(fā)送至NMS。
優(yōu)選的,所述調(diào)用與所述操作指令信息對(duì)應(yīng)的操作函數(shù),以獲取目標(biāo)信息包括:
判斷所述操作指令信息的操作類型;
若所述操作類型為SNMP GET操作或SNMP SET操作,則在預(yù)設(shè)MIB數(shù)據(jù)庫中查找與所述操作節(jié)點(diǎn)相匹配的目標(biāo)節(jié)點(diǎn);
判斷所述目標(biāo)節(jié)點(diǎn)的節(jié)點(diǎn)類型,所述節(jié)點(diǎn)類型包括標(biāo)量節(jié)點(diǎn)和表節(jié)點(diǎn);
若所述節(jié)點(diǎn)類型為標(biāo)量節(jié)點(diǎn),則調(diào)用對(duì)應(yīng)的get函數(shù)或set函數(shù),獲取所述標(biāo)量節(jié)點(diǎn)的目標(biāo)信息;
若所述節(jié)點(diǎn)類型為表節(jié)點(diǎn),則調(diào)用對(duì)應(yīng)的get函數(shù)或set函數(shù),獲取第一表節(jié)點(diǎn)對(duì)應(yīng)的第一數(shù)據(jù)表,將所述第一表節(jié)點(diǎn)以及所述第一數(shù)據(jù)表存儲(chǔ)至預(yù)設(shè)的表節(jié)點(diǎn)數(shù)據(jù)庫,從而完成所述第一表節(jié)點(diǎn)的預(yù)處理;
判斷所述操作節(jié)點(diǎn)是否均完成處理,所述完成處理包括標(biāo)量節(jié)點(diǎn)完成目標(biāo)信息的獲取以及表節(jié)點(diǎn)完成預(yù)處理;
若所述操作節(jié)點(diǎn)均完成處理,則獲取所述數(shù)據(jù)表中與所述第一表節(jié)點(diǎn)對(duì)應(yīng)的主鍵索引;
調(diào)用所述第一表節(jié)點(diǎn)父節(jié)點(diǎn)的get函數(shù)或所述第一表節(jié)點(diǎn)父節(jié)點(diǎn)的set函數(shù),獲取與所述主鍵索引對(duì)應(yīng)的第一表節(jié)點(diǎn)的目標(biāo)信息。
優(yōu)選的,所述方法還包括:調(diào)用所述目標(biāo)節(jié)點(diǎn)的check函數(shù)驗(yàn)證所述SNMP SET操作的合法性。
優(yōu)選的,所述方法還包括:
獲取管理信息結(jié)構(gòu)配置文件中對(duì)象標(biāo)識(shí)節(jié)點(diǎn)的節(jié)點(diǎn)信息;
計(jì)算所述對(duì)象標(biāo)識(shí)節(jié)點(diǎn)的對(duì)象標(biāo)識(shí)符值;
將所述節(jié)點(diǎn)信息以及與所述節(jié)點(diǎn)信息唯一對(duì)應(yīng)的對(duì)象標(biāo)識(shí)符值存儲(chǔ)至管理信息庫MIB數(shù)據(jù)庫中。
優(yōu)選的,所述調(diào)用與所述操作指令信息對(duì)應(yīng)的操作函數(shù),以獲取目標(biāo)信息包括:
判斷所述操作指令信息的操作類型;
若所述操作類型信息為SNMP GET_NEXT操作,則在預(yù)設(shè)MIB數(shù)據(jù)庫中查找與所述操作節(jié)點(diǎn)信息相匹配的目標(biāo)節(jié)點(diǎn);
判斷所述目標(biāo)節(jié)點(diǎn)的節(jié)點(diǎn)類型,所述節(jié)點(diǎn)類型包括標(biāo)量節(jié)點(diǎn)和表節(jié)點(diǎn);
若所述節(jié)點(diǎn)類型為標(biāo)量節(jié)點(diǎn),則判斷所述目標(biāo)節(jié)點(diǎn)下一個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)類型;
若所述目標(biāo)節(jié)點(diǎn)下一個(gè)節(jié)點(diǎn)為標(biāo)量節(jié)點(diǎn),則調(diào)用相應(yīng)的get函數(shù),獲取所述標(biāo)量節(jié)點(diǎn)的目標(biāo)信息;
若所述目標(biāo)節(jié)點(diǎn)下一個(gè)節(jié)點(diǎn)為表節(jié)點(diǎn),則調(diào)用相應(yīng)的get函數(shù),獲取第二表節(jié)點(diǎn)對(duì)應(yīng)的第二數(shù)據(jù)表,將所述第二表節(jié)點(diǎn)以及所述第二數(shù)據(jù)表存儲(chǔ)至預(yù)設(shè)的表節(jié)點(diǎn)數(shù)據(jù)庫,從而完成所述第二表節(jié)點(diǎn)的預(yù)處理;
若所述節(jié)點(diǎn)類型為表節(jié)點(diǎn),則調(diào)用相應(yīng)的get函數(shù),獲取第三表節(jié)點(diǎn)對(duì)應(yīng)的第三數(shù)據(jù)表,將所述第三表節(jié)點(diǎn)以及所述第三數(shù)據(jù)表存儲(chǔ)至預(yù)設(shè)的表節(jié)點(diǎn)數(shù)據(jù)庫,從而完成所述第三表節(jié)點(diǎn)的預(yù)處理;
判斷所述操作節(jié)點(diǎn)是否均完成處理,所述完成處理包括標(biāo)量節(jié)點(diǎn)完成目標(biāo)信息的獲取以及第二表節(jié)點(diǎn)和第三表節(jié)點(diǎn)完成預(yù)處理;
若所述操作節(jié)點(diǎn)均完成處理,則調(diào)用相應(yīng)的get函數(shù),獲取所述表節(jié)點(diǎn)數(shù)據(jù)庫中表節(jié)點(diǎn)的目標(biāo)信息。
優(yōu)選的,所述調(diào)用相應(yīng)的get函數(shù),獲取所述表節(jié)點(diǎn)數(shù)據(jù)庫中表節(jié)點(diǎn)的目標(biāo)信息包括:
獲取所述表節(jié)點(diǎn)數(shù)據(jù)庫中表節(jié)點(diǎn)的主鍵索引;
判斷所述表節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)是否為所述主鍵索引下一個(gè)索引對(duì)應(yīng)的節(jié)點(diǎn);
若所述表節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)是所述主鍵索引下一個(gè)索引對(duì)應(yīng)的節(jié)點(diǎn),則調(diào)用所述表節(jié)點(diǎn)父節(jié)點(diǎn)的get函數(shù),獲取與所述主鍵索引下一個(gè)索引對(duì)應(yīng)的目標(biāo)信息;
若所述表節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)不是所述主鍵索引下一個(gè)索引對(duì)應(yīng)的節(jié)點(diǎn),則計(jì)算所述表節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn),獲取所述表節(jié)點(diǎn)下一個(gè)節(jié)點(diǎn)的目標(biāo)信息。
優(yōu)選的,所述調(diào)用與所述操作指令信息對(duì)應(yīng)的操作函數(shù),以獲取目標(biāo)信息包括:
判斷所述操作指令信息的操作類型;
若所述操作類型信息為SNMP GET_BULK操作,則獲取所述操作指令信息中的錯(cuò)誤狀態(tài)數(shù)量和誤差指標(biāo);
依次對(duì)所述操作節(jié)點(diǎn)中的m個(gè)節(jié)點(diǎn)執(zhí)行SNMP GET_NEXT操作,其中,m為所述錯(cuò)誤狀態(tài)數(shù)量;
對(duì)所述操作節(jié)點(diǎn)中所述m個(gè)節(jié)點(diǎn)以外的節(jié)點(diǎn)執(zhí)行n次SNMP GET_NEXT操作,其中,n為所述誤差指標(biāo)。
本發(fā)明的實(shí)施例提供的技術(shù)方案可以包括以下有益效果:
本發(fā)明提供一種基于EOC設(shè)備的簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議代理實(shí)現(xiàn)方法,所述方法包括:獲取管理信息結(jié)構(gòu)SMI配置文件中的節(jié)點(diǎn)信息,根據(jù)所述節(jié)點(diǎn)信息預(yù)設(shè)操作函數(shù),所述操作函數(shù)包括get函數(shù)、set函數(shù)和check函數(shù);接收并解析網(wǎng)絡(luò)管理系統(tǒng)NMS發(fā)送的簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議SNMP報(bào)文,所述簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議SNMP報(bào)文包括操作指令信息,所述操作指令信息包括操作類型和操作節(jié)點(diǎn),其中,所述操作類型為SNMP GET操作、SNMP GET_NEXT操作、SNMP SET操作或SNMP GET_BULK操作中的一種;調(diào)用與所述操作指令信息對(duì)應(yīng)的所述操作函數(shù),以獲取目標(biāo)信息;將所述目標(biāo)信息按照簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議SNMP報(bào)文格式發(fā)送至網(wǎng)絡(luò)管理系統(tǒng)NMS。由于EOC設(shè)備局端可以統(tǒng)一管理下掛的終端設(shè)備,因而本發(fā)明只需通過一個(gè)簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議代理即可實(shí)現(xiàn)SNMP報(bào)文的接收、解析以及目標(biāo)信息的獲取和發(fā)送。本方法提供的簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議代理不存在主代理和子代理兩個(gè)子模塊之間的數(shù)據(jù)傳輸,同時(shí),本方案提供的簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議代理在網(wǎng)絡(luò)節(jié)點(diǎn)內(nèi)部傳輸數(shù)據(jù)時(shí)也無需進(jìn)行格式轉(zhuǎn)化,從而降低EOC設(shè)備的系統(tǒng)負(fù)擔(dān),另外,由于不存在主代理和子代理之間的數(shù)據(jù)傳輸和數(shù)據(jù)格式轉(zhuǎn)化,從而減少生成的可執(zhí)行文件的存儲(chǔ)空間,進(jìn)一步降低EOC設(shè)備的系統(tǒng)負(fù)擔(dān),進(jìn)而提高SNMP的響應(yīng)速度。另外,本方法通過SMI配置文件中的節(jié)點(diǎn)信息預(yù)設(shè)與SNMP報(bào)文中操作指令對(duì)應(yīng)的操作函數(shù),以便完成相關(guān)操作指令時(shí)直接調(diào)用,從而提高NMS與網(wǎng)絡(luò)節(jié)點(diǎn)的信息交互效率,進(jìn)一步提高SNMP的響應(yīng)速度。另外,本發(fā)明相比NET-SNMP而言,由于沒有主代理和子代理的數(shù)據(jù)通信,減少獲取(或設(shè)置)時(shí)的函數(shù)封裝層次,因而減少了生成的可執(zhí)行文件的大小,進(jìn)一步提高系統(tǒng)資源的利用率。
應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本發(fā)明。
附圖說明
圖1是本發(fā)明實(shí)施例中提供的一種基于EOC設(shè)備的簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議代理實(shí)現(xiàn)方法的流程圖;
圖2是本發(fā)明實(shí)施例中提供的另一種基于EOC設(shè)備的簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議代理實(shí)現(xiàn)方法的流程圖;
圖3是本發(fā)明實(shí)施例中提供的步驟S300的方法流程圖;
圖4是本發(fā)明實(shí)施例中提供的預(yù)設(shè)MIB數(shù)據(jù)庫的方法流程圖;
圖5是本發(fā)明實(shí)施例中提供的另一種步驟S300的方法流程圖;
圖6是本發(fā)明實(shí)施例中提供的步驟S329的方法流程圖;
圖7是本發(fā)明實(shí)施例中提供的第三種步驟S300的方法流程圖。
具體實(shí)施方式
這里將詳細(xì)地對(duì)示例性實(shí)施例進(jìn)行說明,其示例表示在附圖中。下面的描述涉及附圖時(shí),除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實(shí)施例中所描述的實(shí)施方式并不代表與本發(fā)明相一致的所有實(shí)施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本發(fā)明的一些方面相一致的裝置的例子。
本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見即可,每個(gè)實(shí)施例重點(diǎn)說明的都是與其它實(shí)施例的不同之處。
請(qǐng)參考圖1,所示為本發(fā)明實(shí)施例中提供的一種基于EOC設(shè)備的簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議代理實(shí)現(xiàn)方法的流程圖。
由圖1可見,所述方法包括:
步驟S100:獲取管理信息結(jié)構(gòu)SMI配置文件中的節(jié)點(diǎn)信息,根據(jù)所述節(jié)點(diǎn)信息預(yù)設(shè)操作函數(shù)。
SMI配置文件通常是后綴為smi的文件,SMI配置文件內(nèi)的配置信息均是按照SMI規(guī)范定義的,SMI配置文件內(nèi)包括多種節(jié)點(diǎn)信息,如SYNTAX信息(語法信息),MAX-ACCESS信息(最大訪問信息),STATUS信息(身份信息)以及DESCRIPTION信息(描述信息)等,SYNTAX信息可以描述節(jié)點(diǎn)值的類型,MAX-ACCESS信息可以描述節(jié)點(diǎn)屬性(可讀/可寫),因而,利用SYNTAX信息和MAX-ACCESS信息可以預(yù)設(shè)與SNMP報(bào)文對(duì)應(yīng)的操作函數(shù),所述操作函數(shù)包括get函數(shù)、set函數(shù)和check函數(shù),所述操作函數(shù)可以為C語言函數(shù)。
步驟S200:接收并解析網(wǎng)絡(luò)管理系統(tǒng)NMS發(fā)送的簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議SNMP報(bào)文。
所述簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議SNMP報(bào)文包括操作指令信息,所述操作指令信息包括操作類型和操作節(jié)點(diǎn),其中,所述操作類型為SNMP GET操作、SNMP GET_NEXT操作、SNMP SET操作或SNMP GET_BULK操作中的一種,因而,根據(jù)操作類型的不同,SNMP報(bào)文可分為SNMP GET報(bào)文、SNMP GET_NEXT報(bào)文、SNMP SET報(bào)文和SNMP GET_BULK報(bào)文。SNMP定義了NMS如何與管理代理通信,包括兩者之間交換的消息分組的格式、含義及名字與值的表示等,此外也定義了EOC設(shè)備間的管理關(guān)系。由于NMS無法直接與EOC設(shè)備通訊,因而需要通過簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議代理來實(shí)現(xiàn)。本方案提供的簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議代理需先將具有SNMP報(bào)文格式的數(shù)據(jù)按照RFC(Request For Comments,一系列以編號(hào)排定的文件)1901以及RFC1905定義的格式進(jìn)行解析,從而獲取操作指令信息,即待操作的操作類型和操作節(jié)點(diǎn)。
步驟S300:調(diào)用與所述操作指令信息對(duì)應(yīng)的所述操作函數(shù),以獲取目標(biāo)信息。
調(diào)用與所述操作指令信息中操作類型對(duì)應(yīng)的操作函數(shù)可以獲取目標(biāo)信息,如操作類型為SNMP GET操作,即對(duì)操作節(jié)點(diǎn)調(diào)用get函數(shù)即可獲取目標(biāo)信息。
步驟S400:將所述目標(biāo)信息按照簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議SNMP報(bào)文格式發(fā)送至網(wǎng)絡(luò)管理系統(tǒng)NMS。
同樣的,EOC設(shè)備中存儲(chǔ)的信息無法直接與NMS通信,本簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議代理需要將獲取到的目標(biāo)信息按照簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議SNMP報(bào)文格式發(fā)送至網(wǎng)絡(luò)管理系統(tǒng)NMS,即需要將目標(biāo)信息組織成SNMP RESPONSE報(bào)文發(fā)送至NMS。
請(qǐng)參考圖2,所示為本發(fā)明實(shí)施例中提供的另一種基于EOC設(shè)備的簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議代理實(shí)現(xiàn)方法的流程圖。
由圖2可見,所述方法還包括:
步驟S500:接收EOC設(shè)備監(jiān)控程序發(fā)送的主動(dòng)傳輸請(qǐng)求。
主動(dòng)傳輸請(qǐng)求通常來自socket(孔)通道,而SNMP報(bào)文通常來自端口161,因此,通過監(jiān)測(cè)socket(孔)通道和端口161,即可判斷接收到的數(shù)據(jù)請(qǐng)求是SNMP報(bào)文還是主動(dòng)傳輸請(qǐng)求。所述主動(dòng)傳輸請(qǐng)求可以是EOC設(shè)備監(jiān)控程序發(fā)現(xiàn)設(shè)備故障或變更時(shí)發(fā)出的主動(dòng)通知請(qǐng)求,請(qǐng)求簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議代理將以上故障或變更發(fā)送至NMS,以便NMS獲取故障或變更信息后及時(shí)做出調(diào)整。主動(dòng)傳輸請(qǐng)求可以是陷阱TRAP請(qǐng)求或確認(rèn)INFORM請(qǐng)求。
步驟S600:根據(jù)所述主動(dòng)傳輸請(qǐng)求獲取主動(dòng)傳輸數(shù)據(jù),所述主動(dòng)傳輸數(shù)據(jù)包括TRAP數(shù)據(jù)或INFORM數(shù)據(jù)。
其中,TRAP是發(fā)送給NMS的通知網(wǎng)絡(luò)狀況的警告消息;INFORM在發(fā)送后需要SNMP管理者確認(rèn)接收。與INFORM相比較,TRAP通知方式為不可靠傳輸。NMS在接收到一條TRAP通知后無需回復(fù)任何確認(rèn)信息,因而,簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議代理無法確認(rèn)發(fā)出的TRAP通知是否已經(jīng)被正確接收。與此相對(duì)應(yīng),當(dāng)NMS收到一條INFORM通知后需要使用SNMP應(yīng)答數(shù)據(jù)包向簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議代理回復(fù)一條確認(rèn)信息。如果NMS沒有接收到INFORM通知,則不會(huì)發(fā)送任何應(yīng)答。因此,當(dāng)簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議代理無法接受到期望的應(yīng)答時(shí),它將再次發(fā)送一條INFORM通知給NMS。這種方式保證了INFORM通知方式可以較有保證地把通知發(fā)送到期望的目的地。
步驟S700:將所述TRAP數(shù)據(jù)或INFORM數(shù)據(jù)按照SNMP報(bào)文格式發(fā)送至NMS。
若所述主動(dòng)傳輸數(shù)據(jù)為TRAP數(shù)據(jù),則按照SNMP TRAP報(bào)文格式發(fā)送至NMS的162端口上;若所述主動(dòng)傳輸數(shù)據(jù)為INFORM數(shù)據(jù)則按照SNMP INFORM報(bào)文格式發(fā)送至NMS的162端口上。
請(qǐng)參考圖3,所示為本發(fā)明實(shí)施例中提供的步驟S300的方法流程圖。
由圖3可見,步驟S300包括:
步驟S311:判斷所述操作指令信息的操作類型。
所述操作類型為SNMP GET操作、SNMP GET_NEXT操作、SNMP SET操作或SNMP GET_BULK操作。在判斷所述操作指令信息的操作類型之前,也可以判斷community共同體是否符合設(shè)備要求。如果不符合設(shè)備要求,說明SNMP報(bào)文的目標(biāo)設(shè)備不是本設(shè)備,因此,可以直接結(jié)束步驟S300的方法流程;若符合設(shè)備要求,再進(jìn)行以下步驟。
步驟S312:若所述操作類型為SNMP GET操作或SNMP SET操作,則在預(yù)設(shè)MIB數(shù)據(jù)庫中查找與所述操作節(jié)點(diǎn)相匹配的目標(biāo)節(jié)點(diǎn)。
其中,所述預(yù)設(shè)MIB數(shù)據(jù)庫中包含節(jié)點(diǎn)信息以及與所述節(jié)點(diǎn)信息唯一對(duì)應(yīng)的對(duì)象標(biāo)識(shí)符值。
請(qǐng)參考圖4,所示為本發(fā)明實(shí)施例中提供的預(yù)設(shè)MIB數(shù)據(jù)庫的方法流程圖。
由圖4可見,預(yù)設(shè)MIB數(shù)據(jù)庫的方法包括:
步驟S3121:獲取管理信息結(jié)構(gòu)配置文件中對(duì)象標(biāo)識(shí)節(jié)點(diǎn)的節(jié)點(diǎn)信息。
步驟S3122:計(jì)算所述對(duì)象標(biāo)識(shí)節(jié)點(diǎn)的對(duì)象標(biāo)識(shí)符值。
計(jì)算方法為現(xiàn)有方法,由MIB格式所定義,這里不再贅述。如果對(duì)象標(biāo)識(shí)節(jié)點(diǎn)不在文件內(nèi),則會(huì)出現(xiàn)對(duì)象標(biāo)識(shí)符值的計(jì)算失敗。此時(shí),讀取配置文件開始部分的依賴文件,重復(fù)計(jì)算,直到得到該節(jié)點(diǎn)的對(duì)象標(biāo)識(shí)符值。
步驟S3123:將所述節(jié)點(diǎn)信息以及與所述節(jié)點(diǎn)信息唯一對(duì)應(yīng)的對(duì)象標(biāo)識(shí)符值存儲(chǔ)至MIB數(shù)據(jù)庫,以便在接收到SNMP報(bào)文后,在預(yù)設(shè)MIB數(shù)據(jù)庫中查找與所述操作節(jié)點(diǎn)相匹配的目標(biāo)節(jié)點(diǎn)。
步驟S313:判斷所述目標(biāo)節(jié)點(diǎn)的節(jié)點(diǎn)類型。
節(jié)點(diǎn)類型包括標(biāo)量節(jié)點(diǎn)和表節(jié)點(diǎn)。其中,標(biāo)量節(jié)點(diǎn)存儲(chǔ)單一的數(shù)據(jù)項(xiàng),而表節(jié)點(diǎn)則包含多個(gè)數(shù)據(jù)項(xiàng),多個(gè)數(shù)據(jù)項(xiàng)可以是數(shù)組、哈希表,也可以是其他表。
步驟S314:若所述節(jié)點(diǎn)類型為標(biāo)量節(jié)點(diǎn),則調(diào)用對(duì)應(yīng)的get函數(shù)或set函數(shù),獲取所述標(biāo)量節(jié)點(diǎn)的目標(biāo)信息。
由于標(biāo)量節(jié)點(diǎn)僅對(duì)應(yīng)單一的數(shù)據(jù)項(xiàng),因此,通過調(diào)用與標(biāo)量節(jié)點(diǎn)對(duì)應(yīng)的get函數(shù)或set函數(shù),即可直接獲取所述標(biāo)量節(jié)點(diǎn)的目標(biāo)信息而不產(chǎn)生任何錯(cuò)誤。對(duì)應(yīng)的,若所述操作類型為SNMP GET操作,則調(diào)用對(duì)應(yīng)的get函數(shù)獲取所述標(biāo)量節(jié)點(diǎn)的目標(biāo)信息;若所述操作類型為SNMP SET操作,則調(diào)用對(duì)應(yīng)的set函數(shù)獲取所述標(biāo)量節(jié)點(diǎn)的目標(biāo)信息。
步驟S315:若所述節(jié)點(diǎn)類型為表節(jié)點(diǎn),則調(diào)用對(duì)應(yīng)的get函數(shù)或set函數(shù),獲取第一表節(jié)點(diǎn)對(duì)應(yīng)的第一數(shù)據(jù)表,將所述第一表節(jié)點(diǎn)以及所述第一數(shù)據(jù)表存儲(chǔ)至預(yù)設(shè)的表節(jié)點(diǎn)數(shù)據(jù)庫,從而完成所述第一表節(jié)點(diǎn)的預(yù)處理。
本發(fā)明提供的簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議代理實(shí)現(xiàn)方法中將表節(jié)點(diǎn)的處理分為預(yù)處理和處理兩部分,其中,預(yù)處理即通過get函數(shù)或set函數(shù)獲取數(shù)據(jù)表,再將表節(jié)點(diǎn)以及對(duì)應(yīng)的數(shù)據(jù)表存儲(chǔ)至預(yù)設(shè)的表節(jié)點(diǎn)數(shù)據(jù)庫中,待所述操作節(jié)點(diǎn)均完成處理后,再對(duì)表節(jié)點(diǎn)數(shù)據(jù)庫中的表節(jié)點(diǎn)進(jìn)行統(tǒng)一處理。
步驟S316:判斷所述操作節(jié)點(diǎn)是否均完成處理。
所述完成處理包括標(biāo)量節(jié)點(diǎn)完成目標(biāo)信息的獲取以及表節(jié)點(diǎn)完成預(yù)處理。完成目標(biāo)信息獲取的標(biāo)量節(jié)點(diǎn)以及完成預(yù)處理的表節(jié)點(diǎn)數(shù)量總和應(yīng)與操作指令信息中的操作節(jié)點(diǎn)數(shù)量相一致。當(dāng)二者數(shù)量之和小于操作指令信息中的操作節(jié)點(diǎn)數(shù)量時(shí),需繼續(xù)判斷當(dāng)前操作節(jié)點(diǎn)的下一操作節(jié)點(diǎn)的節(jié)點(diǎn)類型,并依據(jù)上述方法對(duì)下一操作節(jié)點(diǎn)獲取目標(biāo)信息或進(jìn)行預(yù)處理。
步驟S317:若所述操作節(jié)點(diǎn)均完成處理,則獲取所述數(shù)據(jù)表中與所述第一表節(jié)點(diǎn)對(duì)應(yīng)的主鍵索引。
主鍵索引通常是數(shù)據(jù)表中的一列或列組合。主鍵索引中的每個(gè)值都是唯一的,用來唯一標(biāo)識(shí)數(shù)據(jù)表中的每一行。當(dāng)在查詢操作中使用主鍵索引時(shí),可以快速訪問數(shù)據(jù)。調(diào)用第一表節(jié)點(diǎn)對(duì)應(yīng)的主鍵索引即可獲取數(shù)據(jù)表中與第一表節(jié)點(diǎn)對(duì)應(yīng)的行數(shù)據(jù)。
步驟S318:調(diào)用所述第一表節(jié)點(diǎn)父節(jié)點(diǎn)的get函數(shù)或所述第一表節(jié)點(diǎn)父節(jié)點(diǎn)的set函數(shù),獲取與所述主鍵索引對(duì)應(yīng)的第一表節(jié)點(diǎn)的目標(biāo)信息。即通過調(diào)用所述第一表節(jié)點(diǎn)父節(jié)點(diǎn)的get函數(shù)或所述第一表節(jié)點(diǎn)父節(jié)點(diǎn)的set函數(shù),獲取與所述主鍵索引對(duì)應(yīng)的行數(shù)據(jù),所述行數(shù)據(jù)即為第一表節(jié)點(diǎn)的目標(biāo)信息。
若還有操作節(jié)點(diǎn)沒有完成處理,則重復(fù)上述步驟,繼續(xù)處理沒有完成的操作節(jié)點(diǎn)。
另外,本發(fā)明其他實(shí)施例中,本簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議代理實(shí)現(xiàn)方法還包括調(diào)用所述目標(biāo)節(jié)點(diǎn)的check函數(shù)驗(yàn)證所述SNMP SET操作的合法性。調(diào)用check函數(shù)驗(yàn)證SNMP SET操作的合法性的目的在于判斷NMS需設(shè)置的數(shù)據(jù)是否符合EOC設(shè)備要求,如果不符合EOC的設(shè)備要求,則返回設(shè)置錯(cuò)誤報(bào)告,防止出現(xiàn)設(shè)置非法值而導(dǎo)致設(shè)備異常的情況。
請(qǐng)參考圖5,所示為本發(fā)明實(shí)施例中提供的另一種步驟S300的方法流程圖。
由圖5可見,步驟S300包括:
步驟S321:判斷所述操作指令信息的操作類型。
步驟S322:若所述操作類型信息為SNMP GET_NEXT操作,則在預(yù)設(shè)MIB數(shù)據(jù)庫中查找與所述操作節(jié)點(diǎn)信息相匹配的目標(biāo)節(jié)點(diǎn)。
步驟S323:判斷所述目標(biāo)節(jié)點(diǎn)的節(jié)點(diǎn)類型,所述節(jié)點(diǎn)類型包括標(biāo)量節(jié)點(diǎn)和表節(jié)點(diǎn)。
步驟S324:若所述節(jié)點(diǎn)類型為標(biāo)量節(jié)點(diǎn),則判斷所述目標(biāo)節(jié)點(diǎn)下一個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)類型。
步驟S325:若所述目標(biāo)節(jié)點(diǎn)下一個(gè)節(jié)點(diǎn)為標(biāo)量節(jié)點(diǎn),則調(diào)用相應(yīng)的get函數(shù),獲取所述標(biāo)量節(jié)點(diǎn)的目標(biāo)信息。
其中,調(diào)用相應(yīng)的get函數(shù)即調(diào)用目標(biāo)節(jié)點(diǎn)下一個(gè)節(jié)點(diǎn)的get函數(shù)。SNMP GET_NEXT操作與SNMP GET操作的區(qū)別在于SNMP GET操作的操作對(duì)象為當(dāng)前的操作節(jié)點(diǎn),而SNMP GET_NEXT操作的操作對(duì)象則為當(dāng)前的操作節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)。
步驟S326:若所述目標(biāo)節(jié)點(diǎn)下一個(gè)節(jié)點(diǎn)為表節(jié)點(diǎn),則調(diào)用相應(yīng)的get函數(shù),獲取第二表節(jié)點(diǎn)對(duì)應(yīng)的第二數(shù)據(jù)表,將所述第二表節(jié)點(diǎn)以及所述第二數(shù)據(jù)表存儲(chǔ)至預(yù)設(shè)的表節(jié)點(diǎn)數(shù)據(jù)庫,從而完成所述第二表節(jié)點(diǎn)的預(yù)處理。
步驟S327:若所述節(jié)點(diǎn)類型為表節(jié)點(diǎn),則調(diào)用相應(yīng)的get函數(shù),獲取第三表節(jié)點(diǎn)對(duì)應(yīng)的第三數(shù)據(jù)表,將所述第三表節(jié)點(diǎn)以及所述第三數(shù)據(jù)表存儲(chǔ)至預(yù)設(shè)的表節(jié)點(diǎn)數(shù)據(jù)庫,從而完成所述第二表節(jié)點(diǎn)的預(yù)處理。
以上對(duì)第二表節(jié)點(diǎn)和第三表節(jié)點(diǎn)的預(yù)處理方式與第一表節(jié)點(diǎn)類似,先將第二表節(jié)點(diǎn)或第三表節(jié)點(diǎn)以及二者對(duì)應(yīng)的數(shù)據(jù)表存儲(chǔ)至預(yù)設(shè)的表節(jié)點(diǎn)數(shù)據(jù)庫中,待所述操作節(jié)點(diǎn)均完成處理后,再對(duì)表節(jié)點(diǎn)數(shù)據(jù)庫中的所有表節(jié)點(diǎn)進(jìn)行統(tǒng)一處理。
步驟S328:判斷所述操作節(jié)點(diǎn)是否均完成處理,所述完成處理包括標(biāo)量節(jié)點(diǎn)完成目標(biāo)信息的獲取以及第二表節(jié)點(diǎn)和第三表節(jié)點(diǎn)完成預(yù)處理。
步驟S329:若所述操作節(jié)點(diǎn)均完成處理,則調(diào)用相應(yīng)的get函數(shù),獲取所述表節(jié)點(diǎn)數(shù)據(jù)庫中表節(jié)點(diǎn)的目標(biāo)信息。
請(qǐng)參考圖6,所示為本發(fā)明實(shí)施例中提供的步驟S329的方法流程圖。
由圖6可見,步驟S329包括:
步驟S3291:獲取所述表節(jié)點(diǎn)數(shù)據(jù)庫中表節(jié)點(diǎn)的主鍵索引。
步驟S3292:判斷所述表節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)是否為所述主鍵索引下一個(gè)索引對(duì)應(yīng)的節(jié)點(diǎn)。
步驟S3293:若所述表節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)是所述主鍵索引下一個(gè)索引對(duì)應(yīng)的節(jié)點(diǎn),則調(diào)用所述表節(jié)點(diǎn)父節(jié)點(diǎn)的get函數(shù),獲取與所述主鍵索引下一個(gè)索引對(duì)應(yīng)的目標(biāo)信息。
步驟S3294:若所述表節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)不是所述主鍵索引下一個(gè)索引對(duì)應(yīng)的節(jié)點(diǎn),則計(jì)算所述表節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn),獲取所述表節(jié)點(diǎn)下一個(gè)節(jié)點(diǎn)的目標(biāo)信息,獲取方式與上述實(shí)施例中的獲取方法相同,這里不再贅述。
請(qǐng)參考圖7,所示為本發(fā)明實(shí)施例中提供的第三種步驟S300的方法流程圖。
由圖7可見,步驟S300包括:
步驟S331:判斷所述操作指令信息的操作類型。
步驟S332:若所述操作類型信息為SNMP GET_BULK操作,則獲取所述操作指令信息中的錯(cuò)誤狀態(tài)數(shù)量和誤差指標(biāo)。
步驟S333:依次對(duì)所述操作節(jié)點(diǎn)中的m個(gè)節(jié)點(diǎn)執(zhí)行SNMP GET_NEXT操作,其中,m為所述錯(cuò)誤狀態(tài)數(shù)量。
本實(shí)施例中SNMP GET_NEXT操作與上述實(shí)施例中的SNMP GET_NEXT操作的方法流程相同,這里不再贅述。
步驟S334:對(duì)所述操作節(jié)點(diǎn)中所述m個(gè)節(jié)點(diǎn)以外的節(jié)點(diǎn)執(zhí)行n次SNMP GET_NEXT操作,其中,n為所述誤差指標(biāo)。
以上所述的本發(fā)明實(shí)施方式,并不構(gòu)成對(duì)本發(fā)明保護(hù)范圍的限定。任何在本發(fā)明的精神和原則之內(nèi)所作的修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
以上所述僅是本發(fā)明的具體實(shí)施方式,使本領(lǐng)域技術(shù)人員能夠理解或?qū)崿F(xiàn)本發(fā)明。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。