一种提升snmp设备数据处理速度的方法及系统的制作方法

文档序号:7865648阅读:367来源:国知局
专利名称:一种提升snmp设备数据处理速度的方法及系统的制作方法
技术领域
本发明涉及设备数据采集技术领域,尤其是一种提升SNMP设备数据处理速度的方法及系统。
背景技术
SNMP,即简单网络管理协议,是专门用来管理网络节点的一种标准协议,是一个管理者和代理之间通信的标准。SNMP主要由以下三部分组成被管对象、代理(Agent)和管理系统。被管对象也叫被管理的设备,是一个具体的网络节点(如路由器、交换机等)。被管对象就像是一个管理信息服务器,代理从中取数据并保存到信息库中。代理(Agent)安装在被管设备上,专门用于收集和向管理系统发送管理信息,响应管理站的Get、Set等操作,并能主动向管理站发送Trap信息。为了能在系统中找到所需对象,代理为每一个对象分配一个唯一的表示号一对象标识符(0ID - Object Identifiers).而管理站需要有管理系统来处理代理上的管理信息,进行报警和事故的判断等操作,从而更好地定位和处理故障。 Net-SNMP是一个免费的、开放源码的SNMP实现,它包括Agent和多个管理工具的源代码,支持多种扩展方式。一个采用了多线程技术的应用程序可以更好地利用系统资源。其主要优势在于充分利用了 CPU的空闲时间片,可以用尽可能少的时间来对用户的要求做出响应,使得进程的整体运行效率得到较大提高,同时增强了应用程序的灵活性。然而,一些敏感数据不允许被多个线程同时访问,因此需要使用同步访问技术,确保这些数据在任何时刻,最多有一个线程访问,以保证数据的完整性。另外,当两个或多个线程之间同时等待对方释放资源的时候就会形成线程之间的死锁。为了防止死锁的发生,也需要通过同步来实现线程安全。所谓线程同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回,同时其它线程也不能调用这个方法。对数据采集器来说,支持尽可能多的设备是开发的目标。但支持SNMP协议的设备(简称SNMP设备)有很多,而且不同厂家生产的SNMP设备也差异较大,因此对SNMP设备进行统一的数据采集很难实现。同时,一台数据采集器中需要采集的SNMP设备的数目也不是固定的,这就增加了数据采集器进行数据采集的复杂度。数据采集器中需要采集多个SNMP设备时,会大量使用Set、Get和Table这3种操作,并可能会频繁地交替使用这3种操作。当Set、Get和Table 3个线程调用Net-SNMP库中的应用程序编程接口(API)时,由于Net-SNMP开发包中使用了全局的变量,故3个线程如果不使用多线程的同步机制,就会产生段错误从而导致程序崩溃。但是,若3个线程使用多线程同步机制(例如加了锁),则会使3个线程的数据不再是独立的,从而减慢了数据采集器的数据更新速度。由此可见,现有的数据采集器的缺点是采用多线程同步机制,使得各个线程间的数据不再是独立的,从而减慢了数据采集的速度。

发明内容
为了解决上述的技术问题,本发明的一个目的是提供一种提升SNMP设备数据处理速度的方法。本发明的另一个目的是提供一种提升SNMP设备数据处理速度的系统。本发明解决其技术问题所采用的技术方案是一种提升SNMP设备数据处理速度的方法,该方法包括
A、各线程分别通过链接与自身一一对应链接的Net-SNMP库,进而链接其它库生成初始化应用程序,并根据生成的初始化应用程序对SNMP设备进行初始化;
B、各线程分别通过链接与自身一一对应链接的Net-SNMP库,进而链接其它库生成数
据处理应用程序,并根据生成的数据处理应用程序对SNMP设备进行数据处理。进一步,所述步骤A中对SNMP设备进行初始化,其包括
Al、从Net-SNMP数据库中获取每个SNMP设备的ID、设备类型和IP地址;
A2、从Net-SNMP数据库中查找每个SNMP设备的所有OID和SNMP版本;
A3、对每个SNMP设备的地址链表进行初始化。进一步,所述步骤B中对SNMP设备进行数据处理,其包括
B10、检查Net-SNMP数据库中SNMP设备的Set标志是否为1,若为I,则执行步骤Bll ; BI I、根据SNMP设备的OID和SNMP版本循环发送数据包;
B12、将Net-SNMP数据库中SNMP设备的Set标志更新为0 ;
进一步,所述步骤B中对SNMP设备进行数据处理,其包括
B20、根据SNMP设备的OID和SNMP版本发送数据包;
B21、检查SNMP设备是否有响应,若有,则执行步骤B22 ;
B22、解析数据包并分析数据,进而依据设备类型和ID将分析后的数据保存到Net-SNMP数据库中。进一步,所述步骤B中对SNMP设备进行数据处理,其包括
B30、构建命令缓冲区并发送数据包;
B31、检查SNMP设备是否有响应,若有,则执行步骤B32 ;
B32、找到Table的入口地址并解析数据包;
B33、分析数据并依据设备类型和ID将分析后的数据保存到Net-SNMP数据库中。本发明所采用的另一方案是一种提升SNMP设备数据处理速度的系统,该系统包括
多个线程,用于通过对应链接的Net-SNMP库进而与其它库链接分别生成初始化应用程序以及数据处理应用程序,并根据初始化应用程序以及数据处理应用程序进而进行相应处理;
多个Net-SNMP库,用于与线程对应链接;
其它库,用于生成初始化应用程序以及数据处理应用程序。进一步,所述线程包括用于根据初始化应用程序进行相应处理的初始化模块,所述初始化模块包括
获取单元,用于从Net-SNMP数据库中获取每个SNMP设备的ID、设备类型和IP地址; 查找单元,用于从Net-SNMP数据库中查找每个SNMP设备的所有OID和SNMP版本;地址链表初始化单元,用于对每个SNMP设备的地址链表进行初始化。进一步,所述线程包括用于根据数据处理应用程序进行相应处理的数据处理模块,所述数据处理模块包括
检查单元,用于检查Net-SNMP数据库中SNMP设备的Set标志是否为1,若为1,则转到发送单元;
发送单元,用于根据SNMP设备的OID和SNMP版本循环发送数据包;
更新单元,用于将Net-SNMP数据库中SNMP设备的Set标志更新为O。进一步,所述线程包括用于根据数据处理应用程序进行相应处理的数据处理模块,所述数据处理模块包括 发送单元,用于根据SNMP设备的OID和SNMP版本发送数据包;
检查单元,用于检查SNMP设备是否有响应,若有,则转到数据分析和存储单元;
数据分析和存储单元,用于解析数据包并分析数据,进而依据设备类型和ID将分析后的数据保存到Net-SNMP数据库中。进一步,所述线程包括用于根据数据处理应用程序进行相应处理的数据处理模块,所述数据处理模块包括
发送单元,用于构建命令缓冲区并发送数据包;
检查单元,用于检查SNMP设备是否有响应,若有,则转到解析单元;
解析单元,用于找到Table的入口地址并解析数据包;
数据分析和存储单元,用于分析数据并依据设备类型和ID将分析后的数据保存到Net-SNMP数据库中。本发明的有益效果是本发明的方法中各线程分别通过链接与自身一一对应链接的Net-SNMP库进而链接其它库来进行初始化以及数据处理操作,使得各线程之间的数据相互独立,从而提高了数据处理的速度。本发明的另一个有益效果是本发明的系统包括多个线程、多个Net-SNMP库和其它库,多个线程和多个Net-SNMP库是——对应链接的,即每个线程调用Net-SNMP库时均链接唯一一个与之对应的Net-SNMP库进而链接其它库来进行初始化以及数据处理操作,保证了各线程之间的数据独立性,从而提高了数据采集器处理数据的速度。而且,该系统只要求SNMP设备的数据采集器支持SNMP协议和具有SNMP库,可应用在绝大多数SNMP设备上,具有良好的可扩展性和兼容性。


图I为本发明一种提升SNMP设备数据处理速度的方法的步骤流程 图2为本发明步骤A中对SNMP设备进行初始化的具体步骤流程 图3本发明步骤B中对SNMP设备进行数据处理的一种步骤流程 图4为本发明步骤B中对SNMP设备进行数据处理的一种步骤流程 图5为本发明步骤B中对SNMP设备进行数据处理一种步骤流程 图6为本发明一种提升多线程调用Net-SNMP库速度的系统的系统方框 图7为本发明的系统的初始化模块方框 图8为本发明的系统的一种数据处理模块方框图;图9为本发明的系统的一种数据处理模块方框 图10为本发明的系统的一种数据处理模块方框图。
具体实施例方式下面结合附图对本发明的具体实施方式
作进一步说明。参照图1,一种提升SNMP设备数据处理速度的方法,该方法包括
A、各线程分别通过链接与自身一一对应链接的Net-SNMP库,进而链接其它库生成初始化应用程序,并根据生成的初始化应用程序对SNMP设备进行初始化; B、各线程分别通过链接与自身一一对应链接的Net-SNMP库,进而链接其它库生成数据处理应用程序,并根据生成的数据处理应用程序对SNMP设备进行数据处理。其中,与各线程自身一一对应链接的Net-SNMP库是各线程分别对公共Net-SNMP开发包进行编译而得到的。虽然在使用公共Net-SNMP开发包时,不同线程都会调用Net-SNMP库的应用程序编程接口(API),但各线程在进行链接之前会预先通过编译将公共Net-SNMP开发包变成各自独立的Net-SNMP库,故并不会影响各线程之间数据的独立性。而其它库是指实现该线程所必须的非Net-SNMP库。如上所述,Net-SNMP库包含有应用程序编程接口(API ),故各线程链接Net-SNMP库获得API后,要链接其它库执行API对应的程序,才能生成的最终应用程序。另外,其它库还包括非Net-SNMP库(如串口库)。例如,串口通信需要RS232、RS485等不包含在Net-SNMP库的串口,这时就需要链接至其它非Net-SNMP库。而链接其它库最终生成的应用程序包括初始化应用程序以及数据处理应用程序。初始化应用程序主要用来完成对SNMP设备的信息进行获取和初始化,而数据处理应用程序则用来在初始化应用程序完成后进行发送数据包、检查标志位或SNMP设备的响应、解析数据包和分析并存储数据等数据处理的操作。参照图2,进一步作为优选的实施方式,所述步骤A中对SNMP设备进行初始化,其包括
Al、从Net-SNMP数据库中获取每个SNMP设备的ID、设备类型和IP地址;
A2、从Net-SNMP数据库中查找每个SNMP设备的所有OID和SNMP版本;
A3、对每个SNMP设备的地址链表进行初始化。其中,Net-SNMP数据库是Net-SNMP库的一部分,存储着与各线程读取、设置和更新等操作相关的数据。而初始化主要包括对Net-SNMP数据库中所有SNMP设备的地址链表、缓冲区以及SNMP会话(SNMP Session)进行初始化。在初始化完成后,Net-SNMP数据库中存储有所有SNMP设备(一台数据采集器一般包括多个SNMP设备)的数据。参照图3,进一步作为优选的实施方式,所述步骤B中对SNMP设备进行数据处理,其包括
B10、检查Net-SNMP数据库中SNMP设备的Set标志是否为1,若为I,则执行步骤Bll ; BI I、根据SNMP设备的OID和SNMP版本循环发送数据包;
B12、将Net-SNMP数据库中SNMP设备的Set标志更新为O。该实施方式介绍了 Set线程根据生成的数据处理应用程序进行数据处理的具体过程。其中,所述步骤B10,其具体为,检查Net-SNMP数据库中某一个SNMP设备的Set标志是否为1,若为I,则执行步骤Bll ;而当检查Net-SNMP数据库中某一个SNMP设备的Set标志不是为I时,则顺次检查Net-SNMP数据库中下一个SNMP设备的Set标志是否为I,若为I则执行步骤Bll和步骤B12。例如当检查Net-SNMP数据库中第一 SNMP设备的Set标志不是为I时,则顺次检查Net-SNMP数据库中第二 SNMP设备的Set标志是否为1,若为I则执行步骤BI I和步骤B12。而循环发送数据包是指,为了获得SNMP设备代理的响应,会多次向SNMP设备代理发送数据包。参照图4,进一步作为优选的实施方式,所述步骤B中对SNMP设备进行数据处理, 其包括
B20、根据SNMP设备的OID和SNMP版本发送数据包;
B21、检查SNMP设备是否有响应,若有,则执行步骤B22 ;
B22、解析数据包并分析数据,进而依据设备类型和ID将分析后的数据保存到Net-SNMP数据库中;
该实施方式介绍了 Get线程根据生成的数据处理应用程序进行数据处理的具体过程。与Set线程不同之处在于,Get线程采用了异步发送的方式,直接发送数据包而不需要像Set线程那样要先对标志位进行检查。其中,所述步骤B21,其具体为,检查Net-SNMP数据库中某一个设备是否有响应,若有响应,则执行步骤B22 ;而当检查Net-SNMP数据库中某一个SNMP设备无响应时,则顺次检查Net-SNMP数据库中下一个SNMP设备是否有响应,若有响应,则执行步骤B22。例如当检查Net-SNMP数据库中第一 SNMP设备无响应时,则顺次检查Net-SNMP数据库中第二 SNMP设备的Set标志是否有响应,若有响应时,则执行步骤B22。参照图5,进一步作为优选的实施方式,所述步骤B中对SNMP设备进行数据处理,其包括
B30、构建命令缓冲区并发送数据包;
B31、检查SNMP设备是否有响应,若有,则执行步骤B32 ;
B32、找到Table的入口地址并解析数据包;
B33、分析数据并依据设备类型和ID将分析后的数据保存到Net-SNMP数据库中。该实施方式介绍了 Table线程根据生成的数据处理应用程序进行数据处理的具体过程。其中,Table的入口地址(Entries)在这里指的是链表的行入口地址。Table操作通常从每一行的Entries (—般是指行的首个数据)开始的读取信息。而所述步骤B31,其具体为,检查Net-SNMP数据库中某一个设备是否有响应,若有响应,则执行步骤B32 ;而当检查Net-SNMP数据库中某一个SNMP设备无响应时,则顺次检查Net-SNMP数据库中下一个SNMP设备是否有响应,若有响应,则执行步骤B32和步骤B33。例如当检查Net-SNMP数据库中第一 SNMP设备无响应时,则顺次检查Net-SNMP数据库中第二 SNMP设备的Set标志是否有响应,若有响应时,则执行步骤B32和步骤B33。参照图6,一种提升SNMP设备数据处理速度的系统,该系统包括
多个线程,用于通过对应链接的Net-SNMP库进而与其它库链接分别生成初始化应用程序以及数据处理应用程序,并根据初始化应用程序以及数据处理应用程序进而进行相应处理;
多个Net-SNMP库,用于与线程对应链接;
其它库,用于生成初始化应用程序以及数据处理应用程序。在图6中,假设共有n个线程(线程I、线程2、线程3、…、线程n),各个线程在调用Net-SNMP库时会分别链接与自身——对应的Net-SNMP库(即线程I链接Net-SNMP库I,线程2链接Net-SNMP库2,…,线程n链接Net-SNMP库n),并最终链接其它库生成初始化应用程序和数据处理应用程序。可以看到,每个线程在调用Net-SNMP库都链接至唯一一个与之对应的Net-SNMP库进而链接其它库来进行初始化以及数据处理操作,保证了各线程之间的数据独立性,从而提高了数据采集器处理数据的速度。此外,该系统只要求包含SNMP设备的数据采集器支持SNMP协议和具有SNMP库,可应用在绝大多数SNMP设备上,具有良好的可扩展性和兼容性。参照图7,进一步作为优选的实施方式,所述线程包括用于根据初始化应用程序进行相应处理的初始化模块,所述初始化模块包括
获取单元,用于从Net-SNMP数据库中获取每个SNMP设备的ID、设备类型和IP地址; 查找单元,用于从Net-SNMP数据库中查找每个SNMP设备的所有OID和SNMP版本;
地址链表初始化单元,用于对每个SNMP设备的地址链表进行初始化。参照图8,进一步作为优选的实施方式,所述线程包括用于根据数据处理应用程序进行相应处理的数据处理模块,所述数据处理模块包括
检查单元,用于检查Net-SNMP数据库中SNMP设备的Set标志是否为1,若为1,则转到发送单元;
发送单元,用于根据SNMP设备的OID和SNMP版本循环发送数据包;
更新单元,用于将Net-SNMP数据库中SNMP设备的Set标志更新为O。参照图9,进一步作为优选的实施方式,所述线程包括用于根据数据处理应用程序进行相应处理的数据处理模块,所述数据处理模块包括
发送单元,用于根据SNMP设备的OID和SNMP版本发送数据包;
检查单元,用于检查SNMP设备是否有响应,若有,则转到数据分析和存储单元;
数据分析和存储单元,用于解析数据包并分析数据,进而依据设备类型和ID将分析后的数据保存到Net-SNMP数据库中。参照图10,进一步作为优选的实施方式,所述线程包括用于根据数据处理应用程序进行相应处理的数据处理模块,所述数据处理模块包括
发送单元,用于构建命令缓冲区并发送数据包;
检查单元,用于检查SNMP设备是否有响应,若有,则转到解析单元;
解析单元,用于找到Table的入口地址并解析数据包;
数据分析和存储单元,用于分析数据并依据设备类型和ID将分析后的数据保存到Net-SNMP数据库中。以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
权利要求
1.一种提升SNMP设备数据处理速度的方法,其特征在于该方法包括 A、各线程分别通过链接与自身一一对应链接的Net-SNMP库,进而链接其它库生成初始化应用程序,并根据生成的初始化应用程序对SNMP设备进行初始化; B、各线程分别通过链接与自身一一对应链接的Net-SNMP库,进而链接其它库生成数据处理应用程序,并根据生成的数据处理应用程序对SNMP设备进行数据处理。
2.根据权利要求I所述的ー种提升SNMP设备数据处理速度的方法,其特征在于所述步骤A中对SNMP设备进行初始化,其包括 Al、从Net-SNMP数据库中获取每个SNMP设备的ID、设备类型和IP地址; A2、从Net-SNMP数据库中查找每个SNMP设备的所有OID和SNMP版本; A3、对每个SNMP设备的地址链表进行初始化。
3.根据权利要求2所述的ー种提升SNMP设备数据处理速度的方法,其特征在于所述步骤B中对SNMP设备进行数据处理,其包括 B10、检查Net-SNMP数据库中SNMP设备的Set标志是否为1,若为I,则执行步骤Bll ; BI I、根据SNMP设备的OID和SNMP版本循环发送数据包; B12、将Net-SNMP数据库中SNMP设备的Set标志更新为O。
4.根据权利要求2所述的ー种提升SNMP设备数据处理速度的方法,其特征在于所述步骤B中对SNMP设备进行数据处理,其包括 B20、根据SNMP设备的OID和SNMP版本发送数据包; B21、检查SNMP设备是否有响应,若有,则执行步骤B22 ; B22、解析数据包并分析数据,进而依据设备类型和ID将分析后的数据保存到Net-SNMP数据库中。
5.根据权利要求2所述的ー种提升SNMP设备数据处理速度的方法,其特征在于所述步骤B中对SNMP设备进行数据处理,其包括 B30、构建命令缓冲区并发送数据包; B31、检查SNMP设备是否有响应,若有,则执行步骤B32 ; B32、找到Table的入口地址并解析数据包; B33、分析数据并依据设备类型和ID将分析后的数据保存到Net-SNMP数据库中。
6.一种提升SNMP设备数据处理速度的系统,其特征在干,该系统包括 多个线程,用于通过对应链接的Net-SNMP库进而与其它库链接分别生成初始化应用程序以及数据处理应用程序,并根据初始化应用程序以及数据处理应用程序进而进行相应处理; 多个Net-SNMP库,用于与线程对应链接; 其它库,用于生成初始化应用程序以及数据处理应用程序。
7.根据权利要求6所述的ー种提升SNMP设备数据处理速度的系统,其特征在于,所述线程包括用于根据初始化应用程序进行相应处理的初始化模块,所述初始化模块包括 获取单元,用于从Net-SNMP数据库中获取每个SNMP设备的ID、设备类型和IP地址; 查找单元,用于从Net-SNMP数据库中查找每个SNMP设备的所有OID和SNMP版本; 地址链表初始化单元,用于对每个SNMP设备的地址链表进行初始化。
8.根据权利要求6所述的ー种提升SNMP设备数据处理速度的系统,其特征在于,所述线程包括用于根据数据处理应用程序进行相应处理的数据处理模块,所述数据处理模块包括 检查单元,用于检查Net-SNMP数据库中SNMP设备的Set标志是否为1,若为1,则转到发送单元; 发送单元,用于根据SNMP设备的OID和SNMP版本循环发送数据包; 更新単元,用于将Net-SNMP数据库中SNMP设备的Set标志更新为O。
9.根据权利要求6所述的ー种提升SNMP设备数据处理速度的系统,其特征在于,所述线程包括用于根据数据处理应用程序进行相应处理的数据处理模块,所述数据处理模块包括 发送单元,用于根据SNMP设备的OID和SNMP版本发送数据包; 检查单元,用于检查SNMP设备是否有响应,若有,则转到数据分析和存储单元; 数据分析和存储单元,用于解析数据包并分析数据,进而依据设备类型和ID将分析后的数据保存到Net-SNMP数据库中。
10.根据权利要求6所述的ー种提升SNMP设备数据处理速度的系统,其特征在于,所述线程包括用于根据数据处理应用程序进行相应处理的数据处理模块,所述数据处理模块包括 发送单元,用于构建命令缓冲区并发送数据包; 检查单元,用于检查SNMP设备是否有响应,若有,则转到解析单元; 解析単元,用于找到Table的入口地址并解析数据包; 数据分析和存储单元,用于分析数据并依据设备类型和ID将分析后的数据保存到Net-SNMP数据库中。
全文摘要
本发明公开了一种提升SNMP设备数据处理速度的方法,包括各线程分别通过链接与自身一一对应链接的Net-SNMP库,进而链接其它库生成初始化应用程序,并根据生成的初始化应用程序对SNMP设备进行初始化;各线程分别通过链接与自身一一对应链接的Net-SNMP库,进而链接其它库生成数据处理应用程序,并根据生成的数据处理应用程序对SNMP设备进行数据处理。本发明还揭示了一种提升SNMP设备数据处理速度的系统,包括多个线程、多个Net-SNMP库和其它库。本发明的系统中多个线程与多个Net-SNMP库是一一对应链接的,保证了各线程之间的数据独立性,从而提高了数据采集器处理数据的速度;该系统也可应用在绝大多数SNMP设备上,具有良好的可扩展性和兼容性。本发明广泛应用于设备数据采集领域。
文档编号H04L12/24GK102983993SQ20121046085
公开日2013年3月20日 申请日期2012年11月15日 优先权日2012年11月15日
发明者宋志东, 杨建坡, 胡正 申请人:奥维通信股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1