專利名稱:一種提升snmp設(shè)備數(shù)據(jù)處理速度的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及設(shè)備數(shù)據(jù)采集技術(shù)領(lǐng)域,尤其是一種提升SNMP設(shè)備數(shù)據(jù)處理速度的方法及系統(tǒng)。
背景技術(shù):
SNMP,即簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議,是專門用來(lái)管理網(wǎng)絡(luò)節(jié)點(diǎn)的一種標(biāo)準(zhǔn)協(xié)議,是一個(gè)管理者和代理之間通信的標(biāo)準(zhǔn)。SNMP主要由以下三部分組成被管對(duì)象、代理(Agent)和管理系統(tǒng)。被管對(duì)象也叫被管理的設(shè)備,是一個(gè)具體的網(wǎng)絡(luò)節(jié)點(diǎn)(如路由器、交換機(jī)等)。被管對(duì)象就像是一個(gè)管理信息服務(wù)器,代理從中取數(shù)據(jù)并保存到信息庫(kù)中。代理(Agent)安裝在被管設(shè)備上,專門用于收集和向管理系統(tǒng)發(fā)送管理信息,響應(yīng)管理站的Get、Set等操作,并能主動(dòng)向管理站發(fā)送Trap信息。為了能在系統(tǒng)中找到所需對(duì)象,代理為每一個(gè)對(duì)象分配一個(gè)唯一的表示號(hào)一對(duì)象標(biāo)識(shí)符(0ID - Object Identifiers).而管理站需要有管理系統(tǒng)來(lái)處理代理上的管理信息,進(jìn)行報(bào)警和事故的判斷等操作,從而更好地定位和處理故障。 Net-SNMP是一個(gè)免費(fèi)的、開(kāi)放源碼的SNMP實(shí)現(xiàn),它包括Agent和多個(gè)管理工具的源代碼,支持多種擴(kuò)展方式。一個(gè)采用了多線程技術(shù)的應(yīng)用程序可以更好地利用系統(tǒng)資源。其主要優(yōu)勢(shì)在于充分利用了 CPU的空閑時(shí)間片,可以用盡可能少的時(shí)間來(lái)對(duì)用戶的要求做出響應(yīng),使得進(jìn)程的整體運(yùn)行效率得到較大提高,同時(shí)增強(qiáng)了應(yīng)用程序的靈活性。然而,一些敏感數(shù)據(jù)不允許被多個(gè)線程同時(shí)訪問(wèn),因此需要使用同步訪問(wèn)技術(shù),確保這些數(shù)據(jù)在任何時(shí)刻,最多有一個(gè)線程訪問(wèn),以保證數(shù)據(jù)的完整性。另外,當(dāng)兩個(gè)或多個(gè)線程之間同時(shí)等待對(duì)方釋放資源的時(shí)候就會(huì)形成線程之間的死鎖。為了防止死鎖的發(fā)生,也需要通過(guò)同步來(lái)實(shí)現(xiàn)線程安全。所謂線程同步,就是在發(fā)出一個(gè)功能調(diào)用時(shí),在沒(méi)有得到結(jié)果之前,該調(diào)用就不返回,同時(shí)其它線程也不能調(diào)用這個(gè)方法。對(duì)數(shù)據(jù)采集器來(lái)說(shuō),支持盡可能多的設(shè)備是開(kāi)發(fā)的目標(biāo)。但支持SNMP協(xié)議的設(shè)備(簡(jiǎn)稱SNMP設(shè)備)有很多,而且不同廠家生產(chǎn)的SNMP設(shè)備也差異較大,因此對(duì)SNMP設(shè)備進(jìn)行統(tǒng)一的數(shù)據(jù)采集很難實(shí)現(xiàn)。同時(shí),一臺(tái)數(shù)據(jù)采集器中需要采集的SNMP設(shè)備的數(shù)目也不是固定的,這就增加了數(shù)據(jù)采集器進(jìn)行數(shù)據(jù)采集的復(fù)雜度。數(shù)據(jù)采集器中需要采集多個(gè)SNMP設(shè)備時(shí),會(huì)大量使用Set、Get和Table這3種操作,并可能會(huì)頻繁地交替使用這3種操作。當(dāng)Set、Get和Table 3個(gè)線程調(diào)用Net-SNMP庫(kù)中的應(yīng)用程序編程接口(API)時(shí),由于Net-SNMP開(kāi)發(fā)包中使用了全局的變量,故3個(gè)線程如果不使用多線程的同步機(jī)制,就會(huì)產(chǎn)生段錯(cuò)誤從而導(dǎo)致程序崩潰。但是,若3個(gè)線程使用多線程同步機(jī)制(例如加了鎖),則會(huì)使3個(gè)線程的數(shù)據(jù)不再是獨(dú)立的,從而減慢了數(shù)據(jù)采集器的數(shù)據(jù)更新速度。由此可見(jiàn),現(xiàn)有的數(shù)據(jù)采集器的缺點(diǎn)是采用多線程同步機(jī)制,使得各個(gè)線程間的數(shù)據(jù)不再是獨(dú)立的,從而減慢了數(shù)據(jù)采集的速度。
發(fā)明內(nèi)容
為了解決上述的技術(shù)問(wèn)題,本發(fā)明的一個(gè)目的是提供一種提升SNMP設(shè)備數(shù)據(jù)處理速度的方法。本發(fā)明的另一個(gè)目的是提供一種提升SNMP設(shè)備數(shù)據(jù)處理速度的系統(tǒng)。本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案是一種提升SNMP設(shè)備數(shù)據(jù)處理速度的方法,該方法包括
A、各線程分別通過(guò)鏈接與自身一一對(duì)應(yīng)鏈接的Net-SNMP庫(kù),進(jìn)而鏈接其它庫(kù)生成初始化應(yīng)用程序,并根據(jù)生成的初始化應(yīng)用程序?qū)NMP設(shè)備進(jìn)行初始化;
B、各線程分別通過(guò)鏈接與自身一一對(duì)應(yīng)鏈接的Net-SNMP庫(kù),進(jìn)而鏈接其它庫(kù)生成數(shù)
據(jù)處理應(yīng)用程序,并根據(jù)生成的數(shù)據(jù)處理應(yīng)用程序?qū)NMP設(shè)備進(jìn)行數(shù)據(jù)處理。進(jìn)一步,所述步驟A中對(duì)SNMP設(shè)備進(jìn)行初始化,其包括
Al、從Net-SNMP數(shù)據(jù)庫(kù)中獲取每個(gè)SNMP設(shè)備的ID、設(shè)備類型和IP地址;
A2、從Net-SNMP數(shù)據(jù)庫(kù)中查找每個(gè)SNMP設(shè)備的所有OID和SNMP版本;
A3、對(duì)每個(gè)SNMP設(shè)備的地址鏈表進(jìn)行初始化。進(jìn)一步,所述步驟B中對(duì)SNMP設(shè)備進(jìn)行數(shù)據(jù)處理,其包括
B10、檢查Net-SNMP數(shù)據(jù)庫(kù)中SNMP設(shè)備的Set標(biāo)志是否為1,若為I,則執(zhí)行步驟Bll ; BI I、根據(jù)SNMP設(shè)備的OID和SNMP版本循環(huán)發(fā)送數(shù)據(jù)包;
B12、將Net-SNMP數(shù)據(jù)庫(kù)中SNMP設(shè)備的Set標(biāo)志更新為0 ;
進(jìn)一步,所述步驟B中對(duì)SNMP設(shè)備進(jìn)行數(shù)據(jù)處理,其包括
B20、根據(jù)SNMP設(shè)備的OID和SNMP版本發(fā)送數(shù)據(jù)包;
B21、檢查SNMP設(shè)備是否有響應(yīng),若有,則執(zhí)行步驟B22 ;
B22、解析數(shù)據(jù)包并分析數(shù)據(jù),進(jìn)而依據(jù)設(shè)備類型和ID將分析后的數(shù)據(jù)保存到Net-SNMP數(shù)據(jù)庫(kù)中。進(jìn)一步,所述步驟B中對(duì)SNMP設(shè)備進(jìn)行數(shù)據(jù)處理,其包括
B30、構(gòu)建命令緩沖區(qū)并發(fā)送數(shù)據(jù)包;
B31、檢查SNMP設(shè)備是否有響應(yīng),若有,則執(zhí)行步驟B32 ;
B32、找到Table的入口地址并解析數(shù)據(jù)包;
B33、分析數(shù)據(jù)并依據(jù)設(shè)備類型和ID將分析后的數(shù)據(jù)保存到Net-SNMP數(shù)據(jù)庫(kù)中。本發(fā)明所采用的另一方案是一種提升SNMP設(shè)備數(shù)據(jù)處理速度的系統(tǒng),該系統(tǒng)包括
多個(gè)線程,用于通過(guò)對(duì)應(yīng)鏈接的Net-SNMP庫(kù)進(jìn)而與其它庫(kù)鏈接分別生成初始化應(yīng)用程序以及數(shù)據(jù)處理應(yīng)用程序,并根據(jù)初始化應(yīng)用程序以及數(shù)據(jù)處理應(yīng)用程序進(jìn)而進(jìn)行相應(yīng)處理;
多個(gè)Net-SNMP庫(kù),用于與線程對(duì)應(yīng)鏈接;
其它庫(kù),用于生成初始化應(yīng)用程序以及數(shù)據(jù)處理應(yīng)用程序。進(jìn)一步,所述線程包括用于根據(jù)初始化應(yīng)用程序進(jìn)行相應(yīng)處理的初始化模塊,所述初始化模塊包括
獲取單元,用于從Net-SNMP數(shù)據(jù)庫(kù)中獲取每個(gè)SNMP設(shè)備的ID、設(shè)備類型和IP地址; 查找單元,用于從Net-SNMP數(shù)據(jù)庫(kù)中查找每個(gè)SNMP設(shè)備的所有OID和SNMP版本;地址鏈表初始化單元,用于對(duì)每個(gè)SNMP設(shè)備的地址鏈表進(jìn)行初始化。進(jìn)一步,所述線程包括用于根據(jù)數(shù)據(jù)處理應(yīng)用程序進(jìn)行相應(yīng)處理的數(shù)據(jù)處理模塊,所述數(shù)據(jù)處理模塊包括
檢查單元,用于檢查Net-SNMP數(shù)據(jù)庫(kù)中SNMP設(shè)備的Set標(biāo)志是否為1,若為1,則轉(zhuǎn)到發(fā)送單元;
發(fā)送單元,用于根據(jù)SNMP設(shè)備的OID和SNMP版本循環(huán)發(fā)送數(shù)據(jù)包;
更新單元,用于將Net-SNMP數(shù)據(jù)庫(kù)中SNMP設(shè)備的Set標(biāo)志更新為O。進(jìn)一步,所述線程包括用于根據(jù)數(shù)據(jù)處理應(yīng)用程序進(jìn)行相應(yīng)處理的數(shù)據(jù)處理模塊,所述數(shù)據(jù)處理模塊包括 發(fā)送單元,用于根據(jù)SNMP設(shè)備的OID和SNMP版本發(fā)送數(shù)據(jù)包;
檢查單元,用于檢查SNMP設(shè)備是否有響應(yīng),若有,則轉(zhuǎn)到數(shù)據(jù)分析和存儲(chǔ)單元;
數(shù)據(jù)分析和存儲(chǔ)單元,用于解析數(shù)據(jù)包并分析數(shù)據(jù),進(jìn)而依據(jù)設(shè)備類型和ID將分析后的數(shù)據(jù)保存到Net-SNMP數(shù)據(jù)庫(kù)中。進(jìn)一步,所述線程包括用于根據(jù)數(shù)據(jù)處理應(yīng)用程序進(jìn)行相應(yīng)處理的數(shù)據(jù)處理模塊,所述數(shù)據(jù)處理模塊包括
發(fā)送單元,用于構(gòu)建命令緩沖區(qū)并發(fā)送數(shù)據(jù)包;
檢查單元,用于檢查SNMP設(shè)備是否有響應(yīng),若有,則轉(zhuǎn)到解析單元;
解析單元,用于找到Table的入口地址并解析數(shù)據(jù)包;
數(shù)據(jù)分析和存儲(chǔ)單元,用于分析數(shù)據(jù)并依據(jù)設(shè)備類型和ID將分析后的數(shù)據(jù)保存到Net-SNMP數(shù)據(jù)庫(kù)中。本發(fā)明的有益效果是本發(fā)明的方法中各線程分別通過(guò)鏈接與自身一一對(duì)應(yīng)鏈接的Net-SNMP庫(kù)進(jìn)而鏈接其它庫(kù)來(lái)進(jìn)行初始化以及數(shù)據(jù)處理操作,使得各線程之間的數(shù)據(jù)相互獨(dú)立,從而提高了數(shù)據(jù)處理的速度。本發(fā)明的另一個(gè)有益效果是本發(fā)明的系統(tǒng)包括多個(gè)線程、多個(gè)Net-SNMP庫(kù)和其它庫(kù),多個(gè)線程和多個(gè)Net-SNMP庫(kù)是——對(duì)應(yīng)鏈接的,即每個(gè)線程調(diào)用Net-SNMP庫(kù)時(shí)均鏈接唯一一個(gè)與之對(duì)應(yīng)的Net-SNMP庫(kù)進(jìn)而鏈接其它庫(kù)來(lái)進(jìn)行初始化以及數(shù)據(jù)處理操作,保證了各線程之間的數(shù)據(jù)獨(dú)立性,從而提高了數(shù)據(jù)采集器處理數(shù)據(jù)的速度。而且,該系統(tǒng)只要求SNMP設(shè)備的數(shù)據(jù)采集器支持SNMP協(xié)議和具有SNMP庫(kù),可應(yīng)用在絕大多數(shù)SNMP設(shè)備上,具有良好的可擴(kuò)展性和兼容性。
圖I為本發(fā)明一種提升SNMP設(shè)備數(shù)據(jù)處理速度的方法的步驟流程 圖2為本發(fā)明步驟A中對(duì)SNMP設(shè)備進(jìn)行初始化的具體步驟流程 圖3本發(fā)明步驟B中對(duì)SNMP設(shè)備進(jìn)行數(shù)據(jù)處理的一種步驟流程 圖4為本發(fā)明步驟B中對(duì)SNMP設(shè)備進(jìn)行數(shù)據(jù)處理的一種步驟流程 圖5為本發(fā)明步驟B中對(duì)SNMP設(shè)備進(jìn)行數(shù)據(jù)處理一種步驟流程 圖6為本發(fā)明一種提升多線程調(diào)用Net-SNMP庫(kù)速度的系統(tǒng)的系統(tǒng)方框 圖7為本發(fā)明的系統(tǒng)的初始化模塊方框 圖8為本發(fā)明的系統(tǒng)的一種數(shù)據(jù)處理模塊方框圖;圖9為本發(fā)明的系統(tǒng)的一種數(shù)據(jù)處理模塊方框 圖10為本發(fā)明的系統(tǒng)的一種數(shù)據(jù)處理模塊方框圖。
具體實(shí)施例方式下面結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施方式
作進(jìn)一步說(shuō)明。參照?qǐng)D1,一種提升SNMP設(shè)備數(shù)據(jù)處理速度的方法,該方法包括
A、各線程分別通過(guò)鏈接與自身一一對(duì)應(yīng)鏈接的Net-SNMP庫(kù),進(jìn)而鏈接其它庫(kù)生成初始化應(yīng)用程序,并根據(jù)生成的初始化應(yīng)用程序?qū)NMP設(shè)備進(jìn)行初始化; B、各線程分別通過(guò)鏈接與自身一一對(duì)應(yīng)鏈接的Net-SNMP庫(kù),進(jìn)而鏈接其它庫(kù)生成數(shù)據(jù)處理應(yīng)用程序,并根據(jù)生成的數(shù)據(jù)處理應(yīng)用程序?qū)NMP設(shè)備進(jìn)行數(shù)據(jù)處理。其中,與各線程自身一一對(duì)應(yīng)鏈接的Net-SNMP庫(kù)是各線程分別對(duì)公共Net-SNMP開(kāi)發(fā)包進(jìn)行編譯而得到的。雖然在使用公共Net-SNMP開(kāi)發(fā)包時(shí),不同線程都會(huì)調(diào)用Net-SNMP庫(kù)的應(yīng)用程序編程接口(API),但各線程在進(jìn)行鏈接之前會(huì)預(yù)先通過(guò)編譯將公共Net-SNMP開(kāi)發(fā)包變成各自獨(dú)立的Net-SNMP庫(kù),故并不會(huì)影響各線程之間數(shù)據(jù)的獨(dú)立性。而其它庫(kù)是指實(shí)現(xiàn)該線程所必須的非Net-SNMP庫(kù)。如上所述,Net-SNMP庫(kù)包含有應(yīng)用程序編程接口(API ),故各線程鏈接Net-SNMP庫(kù)獲得API后,要鏈接其它庫(kù)執(zhí)行API對(duì)應(yīng)的程序,才能生成的最終應(yīng)用程序。另外,其它庫(kù)還包括非Net-SNMP庫(kù)(如串口庫(kù))。例如,串口通信需要RS232、RS485等不包含在Net-SNMP庫(kù)的串口,這時(shí)就需要鏈接至其它非Net-SNMP庫(kù)。而鏈接其它庫(kù)最終生成的應(yīng)用程序包括初始化應(yīng)用程序以及數(shù)據(jù)處理應(yīng)用程序。初始化應(yīng)用程序主要用來(lái)完成對(duì)SNMP設(shè)備的信息進(jìn)行獲取和初始化,而數(shù)據(jù)處理應(yīng)用程序則用來(lái)在初始化應(yīng)用程序完成后進(jìn)行發(fā)送數(shù)據(jù)包、檢查標(biāo)志位或SNMP設(shè)備的響應(yīng)、解析數(shù)據(jù)包和分析并存儲(chǔ)數(shù)據(jù)等數(shù)據(jù)處理的操作。參照?qǐng)D2,進(jìn)一步作為優(yōu)選的實(shí)施方式,所述步驟A中對(duì)SNMP設(shè)備進(jìn)行初始化,其包括
Al、從Net-SNMP數(shù)據(jù)庫(kù)中獲取每個(gè)SNMP設(shè)備的ID、設(shè)備類型和IP地址;
A2、從Net-SNMP數(shù)據(jù)庫(kù)中查找每個(gè)SNMP設(shè)備的所有OID和SNMP版本;
A3、對(duì)每個(gè)SNMP設(shè)備的地址鏈表進(jìn)行初始化。其中,Net-SNMP數(shù)據(jù)庫(kù)是Net-SNMP庫(kù)的一部分,存儲(chǔ)著與各線程讀取、設(shè)置和更新等操作相關(guān)的數(shù)據(jù)。而初始化主要包括對(duì)Net-SNMP數(shù)據(jù)庫(kù)中所有SNMP設(shè)備的地址鏈表、緩沖區(qū)以及SNMP會(huì)話(SNMP Session)進(jìn)行初始化。在初始化完成后,Net-SNMP數(shù)據(jù)庫(kù)中存儲(chǔ)有所有SNMP設(shè)備(一臺(tái)數(shù)據(jù)采集器一般包括多個(gè)SNMP設(shè)備)的數(shù)據(jù)。參照?qǐng)D3,進(jìn)一步作為優(yōu)選的實(shí)施方式,所述步驟B中對(duì)SNMP設(shè)備進(jìn)行數(shù)據(jù)處理,其包括
B10、檢查Net-SNMP數(shù)據(jù)庫(kù)中SNMP設(shè)備的Set標(biāo)志是否為1,若為I,則執(zhí)行步驟Bll ; BI I、根據(jù)SNMP設(shè)備的OID和SNMP版本循環(huán)發(fā)送數(shù)據(jù)包;
B12、將Net-SNMP數(shù)據(jù)庫(kù)中SNMP設(shè)備的Set標(biāo)志更新為O。該實(shí)施方式介紹了 Set線程根據(jù)生成的數(shù)據(jù)處理應(yīng)用程序進(jìn)行數(shù)據(jù)處理的具體過(guò)程。其中,所述步驟B10,其具體為,檢查Net-SNMP數(shù)據(jù)庫(kù)中某一個(gè)SNMP設(shè)備的Set標(biāo)志是否為1,若為I,則執(zhí)行步驟Bll ;而當(dāng)檢查Net-SNMP數(shù)據(jù)庫(kù)中某一個(gè)SNMP設(shè)備的Set標(biāo)志不是為I時(shí),則順次檢查Net-SNMP數(shù)據(jù)庫(kù)中下一個(gè)SNMP設(shè)備的Set標(biāo)志是否為I,若為I則執(zhí)行步驟Bll和步驟B12。例如當(dāng)檢查Net-SNMP數(shù)據(jù)庫(kù)中第一 SNMP設(shè)備的Set標(biāo)志不是為I時(shí),則順次檢查Net-SNMP數(shù)據(jù)庫(kù)中第二 SNMP設(shè)備的Set標(biāo)志是否為1,若為I則執(zhí)行步驟BI I和步驟B12。而循環(huán)發(fā)送數(shù)據(jù)包是指,為了獲得SNMP設(shè)備代理的響應(yīng),會(huì)多次向SNMP設(shè)備代理發(fā)送數(shù)據(jù)包。參照?qǐng)D4,進(jìn)一步作為優(yōu)選的實(shí)施方式,所述步驟B中對(duì)SNMP設(shè)備進(jìn)行數(shù)據(jù)處理, 其包括
B20、根據(jù)SNMP設(shè)備的OID和SNMP版本發(fā)送數(shù)據(jù)包;
B21、檢查SNMP設(shè)備是否有響應(yīng),若有,則執(zhí)行步驟B22 ;
B22、解析數(shù)據(jù)包并分析數(shù)據(jù),進(jìn)而依據(jù)設(shè)備類型和ID將分析后的數(shù)據(jù)保存到Net-SNMP數(shù)據(jù)庫(kù)中;
該實(shí)施方式介紹了 Get線程根據(jù)生成的數(shù)據(jù)處理應(yīng)用程序進(jìn)行數(shù)據(jù)處理的具體過(guò)程。與Set線程不同之處在于,Get線程采用了異步發(fā)送的方式,直接發(fā)送數(shù)據(jù)包而不需要像Set線程那樣要先對(duì)標(biāo)志位進(jìn)行檢查。其中,所述步驟B21,其具體為,檢查Net-SNMP數(shù)據(jù)庫(kù)中某一個(gè)設(shè)備是否有響應(yīng),若有響應(yīng),則執(zhí)行步驟B22 ;而當(dāng)檢查Net-SNMP數(shù)據(jù)庫(kù)中某一個(gè)SNMP設(shè)備無(wú)響應(yīng)時(shí),則順次檢查Net-SNMP數(shù)據(jù)庫(kù)中下一個(gè)SNMP設(shè)備是否有響應(yīng),若有響應(yīng),則執(zhí)行步驟B22。例如當(dāng)檢查Net-SNMP數(shù)據(jù)庫(kù)中第一 SNMP設(shè)備無(wú)響應(yīng)時(shí),則順次檢查Net-SNMP數(shù)據(jù)庫(kù)中第二 SNMP設(shè)備的Set標(biāo)志是否有響應(yīng),若有響應(yīng)時(shí),則執(zhí)行步驟B22。參照?qǐng)D5,進(jìn)一步作為優(yōu)選的實(shí)施方式,所述步驟B中對(duì)SNMP設(shè)備進(jìn)行數(shù)據(jù)處理,其包括
B30、構(gòu)建命令緩沖區(qū)并發(fā)送數(shù)據(jù)包;
B31、檢查SNMP設(shè)備是否有響應(yīng),若有,則執(zhí)行步驟B32 ;
B32、找到Table的入口地址并解析數(shù)據(jù)包;
B33、分析數(shù)據(jù)并依據(jù)設(shè)備類型和ID將分析后的數(shù)據(jù)保存到Net-SNMP數(shù)據(jù)庫(kù)中。該實(shí)施方式介紹了 Table線程根據(jù)生成的數(shù)據(jù)處理應(yīng)用程序進(jìn)行數(shù)據(jù)處理的具體過(guò)程。其中,Table的入口地址(Entries)在這里指的是鏈表的行入口地址。Table操作通常從每一行的Entries (—般是指行的首個(gè)數(shù)據(jù))開(kāi)始的讀取信息。而所述步驟B31,其具體為,檢查Net-SNMP數(shù)據(jù)庫(kù)中某一個(gè)設(shè)備是否有響應(yīng),若有響應(yīng),則執(zhí)行步驟B32 ;而當(dāng)檢查Net-SNMP數(shù)據(jù)庫(kù)中某一個(gè)SNMP設(shè)備無(wú)響應(yīng)時(shí),則順次檢查Net-SNMP數(shù)據(jù)庫(kù)中下一個(gè)SNMP設(shè)備是否有響應(yīng),若有響應(yīng),則執(zhí)行步驟B32和步驟B33。例如當(dāng)檢查Net-SNMP數(shù)據(jù)庫(kù)中第一 SNMP設(shè)備無(wú)響應(yīng)時(shí),則順次檢查Net-SNMP數(shù)據(jù)庫(kù)中第二 SNMP設(shè)備的Set標(biāo)志是否有響應(yīng),若有響應(yīng)時(shí),則執(zhí)行步驟B32和步驟B33。參照?qǐng)D6,一種提升SNMP設(shè)備數(shù)據(jù)處理速度的系統(tǒng),該系統(tǒng)包括
多個(gè)線程,用于通過(guò)對(duì)應(yīng)鏈接的Net-SNMP庫(kù)進(jìn)而與其它庫(kù)鏈接分別生成初始化應(yīng)用程序以及數(shù)據(jù)處理應(yīng)用程序,并根據(jù)初始化應(yīng)用程序以及數(shù)據(jù)處理應(yīng)用程序進(jìn)而進(jìn)行相應(yīng)處理;
多個(gè)Net-SNMP庫(kù),用于與線程對(duì)應(yīng)鏈接;
其它庫(kù),用于生成初始化應(yīng)用程序以及數(shù)據(jù)處理應(yīng)用程序。在圖6中,假設(shè)共有n個(gè)線程(線程I、線程2、線程3、…、線程n),各個(gè)線程在調(diào)用Net-SNMP庫(kù)時(shí)會(huì)分別鏈接與自身——對(duì)應(yīng)的Net-SNMP庫(kù)(即線程I鏈接Net-SNMP庫(kù)I,線程2鏈接Net-SNMP庫(kù)2,…,線程n鏈接Net-SNMP庫(kù)n),并最終鏈接其它庫(kù)生成初始化應(yīng)用程序和數(shù)據(jù)處理應(yīng)用程序。可以看到,每個(gè)線程在調(diào)用Net-SNMP庫(kù)都鏈接至唯一一個(gè)與之對(duì)應(yīng)的Net-SNMP庫(kù)進(jìn)而鏈接其它庫(kù)來(lái)進(jìn)行初始化以及數(shù)據(jù)處理操作,保證了各線程之間的數(shù)據(jù)獨(dú)立性,從而提高了數(shù)據(jù)采集器處理數(shù)據(jù)的速度。此外,該系統(tǒng)只要求包含SNMP設(shè)備的數(shù)據(jù)采集器支持SNMP協(xié)議和具有SNMP庫(kù),可應(yīng)用在絕大多數(shù)SNMP設(shè)備上,具有良好的可擴(kuò)展性和兼容性。參照?qǐng)D7,進(jìn)一步作為優(yōu)選的實(shí)施方式,所述線程包括用于根據(jù)初始化應(yīng)用程序進(jìn)行相應(yīng)處理的初始化模塊,所述初始化模塊包括
獲取單元,用于從Net-SNMP數(shù)據(jù)庫(kù)中獲取每個(gè)SNMP設(shè)備的ID、設(shè)備類型和IP地址; 查找單元,用于從Net-SNMP數(shù)據(jù)庫(kù)中查找每個(gè)SNMP設(shè)備的所有OID和SNMP版本;
地址鏈表初始化單元,用于對(duì)每個(gè)SNMP設(shè)備的地址鏈表進(jìn)行初始化。參照?qǐng)D8,進(jìn)一步作為優(yōu)選的實(shí)施方式,所述線程包括用于根據(jù)數(shù)據(jù)處理應(yīng)用程序進(jìn)行相應(yīng)處理的數(shù)據(jù)處理模塊,所述數(shù)據(jù)處理模塊包括
檢查單元,用于檢查Net-SNMP數(shù)據(jù)庫(kù)中SNMP設(shè)備的Set標(biāo)志是否為1,若為1,則轉(zhuǎn)到發(fā)送單元;
發(fā)送單元,用于根據(jù)SNMP設(shè)備的OID和SNMP版本循環(huán)發(fā)送數(shù)據(jù)包;
更新單元,用于將Net-SNMP數(shù)據(jù)庫(kù)中SNMP設(shè)備的Set標(biāo)志更新為O。參照?qǐng)D9,進(jìn)一步作為優(yōu)選的實(shí)施方式,所述線程包括用于根據(jù)數(shù)據(jù)處理應(yīng)用程序進(jìn)行相應(yīng)處理的數(shù)據(jù)處理模塊,所述數(shù)據(jù)處理模塊包括
發(fā)送單元,用于根據(jù)SNMP設(shè)備的OID和SNMP版本發(fā)送數(shù)據(jù)包;
檢查單元,用于檢查SNMP設(shè)備是否有響應(yīng),若有,則轉(zhuǎn)到數(shù)據(jù)分析和存儲(chǔ)單元;
數(shù)據(jù)分析和存儲(chǔ)單元,用于解析數(shù)據(jù)包并分析數(shù)據(jù),進(jìn)而依據(jù)設(shè)備類型和ID將分析后的數(shù)據(jù)保存到Net-SNMP數(shù)據(jù)庫(kù)中。參照?qǐng)D10,進(jìn)一步作為優(yōu)選的實(shí)施方式,所述線程包括用于根據(jù)數(shù)據(jù)處理應(yīng)用程序進(jìn)行相應(yīng)處理的數(shù)據(jù)處理模塊,所述數(shù)據(jù)處理模塊包括
發(fā)送單元,用于構(gòu)建命令緩沖區(qū)并發(fā)送數(shù)據(jù)包;
檢查單元,用于檢查SNMP設(shè)備是否有響應(yīng),若有,則轉(zhuǎn)到解析單元;
解析單元,用于找到Table的入口地址并解析數(shù)據(jù)包;
數(shù)據(jù)分析和存儲(chǔ)單元,用于分析數(shù)據(jù)并依據(jù)設(shè)備類型和ID將分析后的數(shù)據(jù)保存到Net-SNMP數(shù)據(jù)庫(kù)中。以上是對(duì)本發(fā)明的較佳實(shí)施進(jìn)行了具體說(shuō)明,但本發(fā)明創(chuàng)造并不限于所述實(shí)施例,熟悉本領(lǐng)域的技術(shù)人員在不違背本發(fā)明精神的前提下還可做作出種種的等同變形或替換,這些等同的變形或替換均包含在本申請(qǐng)權(quán)利要求所限定的范圍內(nèi)。
權(quán)利要求
1.一種提升SNMP設(shè)備數(shù)據(jù)處理速度的方法,其特征在于該方法包括 A、各線程分別通過(guò)鏈接與自身一一對(duì)應(yīng)鏈接的Net-SNMP庫(kù),進(jìn)而鏈接其它庫(kù)生成初始化應(yīng)用程序,并根據(jù)生成的初始化應(yīng)用程序?qū)NMP設(shè)備進(jìn)行初始化; B、各線程分別通過(guò)鏈接與自身一一對(duì)應(yīng)鏈接的Net-SNMP庫(kù),進(jìn)而鏈接其它庫(kù)生成數(shù)據(jù)處理應(yīng)用程序,并根據(jù)生成的數(shù)據(jù)處理應(yīng)用程序?qū)NMP設(shè)備進(jìn)行數(shù)據(jù)處理。
2.根據(jù)權(quán)利要求I所述的ー種提升SNMP設(shè)備數(shù)據(jù)處理速度的方法,其特征在于所述步驟A中對(duì)SNMP設(shè)備進(jìn)行初始化,其包括 Al、從Net-SNMP數(shù)據(jù)庫(kù)中獲取每個(gè)SNMP設(shè)備的ID、設(shè)備類型和IP地址; A2、從Net-SNMP數(shù)據(jù)庫(kù)中查找每個(gè)SNMP設(shè)備的所有OID和SNMP版本; A3、對(duì)每個(gè)SNMP設(shè)備的地址鏈表進(jìn)行初始化。
3.根據(jù)權(quán)利要求2所述的ー種提升SNMP設(shè)備數(shù)據(jù)處理速度的方法,其特征在于所述步驟B中對(duì)SNMP設(shè)備進(jìn)行數(shù)據(jù)處理,其包括 B10、檢查Net-SNMP數(shù)據(jù)庫(kù)中SNMP設(shè)備的Set標(biāo)志是否為1,若為I,則執(zhí)行步驟Bll ; BI I、根據(jù)SNMP設(shè)備的OID和SNMP版本循環(huán)發(fā)送數(shù)據(jù)包; B12、將Net-SNMP數(shù)據(jù)庫(kù)中SNMP設(shè)備的Set標(biāo)志更新為O。
4.根據(jù)權(quán)利要求2所述的ー種提升SNMP設(shè)備數(shù)據(jù)處理速度的方法,其特征在于所述步驟B中對(duì)SNMP設(shè)備進(jìn)行數(shù)據(jù)處理,其包括 B20、根據(jù)SNMP設(shè)備的OID和SNMP版本發(fā)送數(shù)據(jù)包; B21、檢查SNMP設(shè)備是否有響應(yīng),若有,則執(zhí)行步驟B22 ; B22、解析數(shù)據(jù)包并分析數(shù)據(jù),進(jìn)而依據(jù)設(shè)備類型和ID將分析后的數(shù)據(jù)保存到Net-SNMP數(shù)據(jù)庫(kù)中。
5.根據(jù)權(quán)利要求2所述的ー種提升SNMP設(shè)備數(shù)據(jù)處理速度的方法,其特征在于所述步驟B中對(duì)SNMP設(shè)備進(jìn)行數(shù)據(jù)處理,其包括 B30、構(gòu)建命令緩沖區(qū)并發(fā)送數(shù)據(jù)包; B31、檢查SNMP設(shè)備是否有響應(yīng),若有,則執(zhí)行步驟B32 ; B32、找到Table的入口地址并解析數(shù)據(jù)包; B33、分析數(shù)據(jù)并依據(jù)設(shè)備類型和ID將分析后的數(shù)據(jù)保存到Net-SNMP數(shù)據(jù)庫(kù)中。
6.一種提升SNMP設(shè)備數(shù)據(jù)處理速度的系統(tǒng),其特征在干,該系統(tǒng)包括 多個(gè)線程,用于通過(guò)對(duì)應(yīng)鏈接的Net-SNMP庫(kù)進(jìn)而與其它庫(kù)鏈接分別生成初始化應(yīng)用程序以及數(shù)據(jù)處理應(yīng)用程序,并根據(jù)初始化應(yīng)用程序以及數(shù)據(jù)處理應(yīng)用程序進(jìn)而進(jìn)行相應(yīng)處理; 多個(gè)Net-SNMP庫(kù),用于與線程對(duì)應(yīng)鏈接; 其它庫(kù),用于生成初始化應(yīng)用程序以及數(shù)據(jù)處理應(yīng)用程序。
7.根據(jù)權(quán)利要求6所述的ー種提升SNMP設(shè)備數(shù)據(jù)處理速度的系統(tǒng),其特征在于,所述線程包括用于根據(jù)初始化應(yīng)用程序進(jìn)行相應(yīng)處理的初始化模塊,所述初始化模塊包括 獲取單元,用于從Net-SNMP數(shù)據(jù)庫(kù)中獲取每個(gè)SNMP設(shè)備的ID、設(shè)備類型和IP地址; 查找單元,用于從Net-SNMP數(shù)據(jù)庫(kù)中查找每個(gè)SNMP設(shè)備的所有OID和SNMP版本; 地址鏈表初始化單元,用于對(duì)每個(gè)SNMP設(shè)備的地址鏈表進(jìn)行初始化。
8.根據(jù)權(quán)利要求6所述的ー種提升SNMP設(shè)備數(shù)據(jù)處理速度的系統(tǒng),其特征在于,所述線程包括用于根據(jù)數(shù)據(jù)處理應(yīng)用程序進(jìn)行相應(yīng)處理的數(shù)據(jù)處理模塊,所述數(shù)據(jù)處理模塊包括 檢查單元,用于檢查Net-SNMP數(shù)據(jù)庫(kù)中SNMP設(shè)備的Set標(biāo)志是否為1,若為1,則轉(zhuǎn)到發(fā)送單元; 發(fā)送單元,用于根據(jù)SNMP設(shè)備的OID和SNMP版本循環(huán)發(fā)送數(shù)據(jù)包; 更新単元,用于將Net-SNMP數(shù)據(jù)庫(kù)中SNMP設(shè)備的Set標(biāo)志更新為O。
9.根據(jù)權(quán)利要求6所述的ー種提升SNMP設(shè)備數(shù)據(jù)處理速度的系統(tǒng),其特征在于,所述線程包括用于根據(jù)數(shù)據(jù)處理應(yīng)用程序進(jìn)行相應(yīng)處理的數(shù)據(jù)處理模塊,所述數(shù)據(jù)處理模塊包括 發(fā)送單元,用于根據(jù)SNMP設(shè)備的OID和SNMP版本發(fā)送數(shù)據(jù)包; 檢查單元,用于檢查SNMP設(shè)備是否有響應(yīng),若有,則轉(zhuǎn)到數(shù)據(jù)分析和存儲(chǔ)單元; 數(shù)據(jù)分析和存儲(chǔ)單元,用于解析數(shù)據(jù)包并分析數(shù)據(jù),進(jìn)而依據(jù)設(shè)備類型和ID將分析后的數(shù)據(jù)保存到Net-SNMP數(shù)據(jù)庫(kù)中。
10.根據(jù)權(quán)利要求6所述的ー種提升SNMP設(shè)備數(shù)據(jù)處理速度的系統(tǒng),其特征在于,所述線程包括用于根據(jù)數(shù)據(jù)處理應(yīng)用程序進(jìn)行相應(yīng)處理的數(shù)據(jù)處理模塊,所述數(shù)據(jù)處理模塊包括 發(fā)送單元,用于構(gòu)建命令緩沖區(qū)并發(fā)送數(shù)據(jù)包; 檢查單元,用于檢查SNMP設(shè)備是否有響應(yīng),若有,則轉(zhuǎn)到解析單元; 解析単元,用于找到Table的入口地址并解析數(shù)據(jù)包; 數(shù)據(jù)分析和存儲(chǔ)單元,用于分析數(shù)據(jù)并依據(jù)設(shè)備類型和ID將分析后的數(shù)據(jù)保存到Net-SNMP數(shù)據(jù)庫(kù)中。
全文摘要
本發(fā)明公開(kāi)了一種提升SNMP設(shè)備數(shù)據(jù)處理速度的方法,包括各線程分別通過(guò)鏈接與自身一一對(duì)應(yīng)鏈接的Net-SNMP庫(kù),進(jìn)而鏈接其它庫(kù)生成初始化應(yīng)用程序,并根據(jù)生成的初始化應(yīng)用程序?qū)NMP設(shè)備進(jìn)行初始化;各線程分別通過(guò)鏈接與自身一一對(duì)應(yīng)鏈接的Net-SNMP庫(kù),進(jìn)而鏈接其它庫(kù)生成數(shù)據(jù)處理應(yīng)用程序,并根據(jù)生成的數(shù)據(jù)處理應(yīng)用程序?qū)NMP設(shè)備進(jìn)行數(shù)據(jù)處理。本發(fā)明還揭示了一種提升SNMP設(shè)備數(shù)據(jù)處理速度的系統(tǒng),包括多個(gè)線程、多個(gè)Net-SNMP庫(kù)和其它庫(kù)。本發(fā)明的系統(tǒng)中多個(gè)線程與多個(gè)Net-SNMP庫(kù)是一一對(duì)應(yīng)鏈接的,保證了各線程之間的數(shù)據(jù)獨(dú)立性,從而提高了數(shù)據(jù)采集器處理數(shù)據(jù)的速度;該系統(tǒng)也可應(yīng)用在絕大多數(shù)SNMP設(shè)備上,具有良好的可擴(kuò)展性和兼容性。本發(fā)明廣泛應(yīng)用于設(shè)備數(shù)據(jù)采集領(lǐng)域。
文檔編號(hào)H04L12/24GK102983993SQ20121046085
公開(kāi)日2013年3月20日 申請(qǐng)日期2012年11月15日 優(yōu)先權(quán)日2012年11月15日
發(fā)明者宋志東, 楊建坡, 胡正 申請(qǐng)人:奧維通信股份有限公司