0顶
0踩

snmp4j与objectsnmp对比分析之我见

2017-04-26 09:05 by 见习记者 评论(1) 有9019人浏览

  snmp4j是一个用java来实现snmp(简单网络管理协议)协议的开源项目.它支持以命令行的形式进行管理与响应。object snmp是一个面向对象的snmp开发组件,与关系数据库流行的o-r mapping技术类似,实现了object到snmp mib的操作映射(简称o-m mapping)。使用snmp4j与objectsnmp开发类似于使用原生jdbc开发与hibernate框架。

snmp4j与objectsnmp对比分析之我见 -买球官网平台

  snmp4j是一个用java来实现snmp(简单网络管理协议)协议的开源项目.它支持以命令行的形式进行管理与响应。snmp4j是纯面向对象设计与snmp (用c 实现snmpv1/v2c/v3)相类似。

  1. 支持md5和sha验证,des,3des,aes128、aes192和aes256加密的snmpv3。
  2. 支持mpv1,mpv2c和mpv3,带执行的可阻塞的信息处理模块。
  3. 全部pdu格式。
  4. 可阻塞的传输拓扑。支持upd、tcp、tls 。
  5. 可阻塞的超时模块。
  6. 同步和异步请求。
  7. 命令发生器以及命令应答器的支持。
  8. 基于apache license的开源免费。
  9. java 1.4.1或更高版本(2.0或更高版本需要jdk1.6及以上的支持)。
  10. 基于log4j记录日志。
  11. 使用getbulk实现row-based的有效的异步表格获取。
  12. 支持多线程。

 

  object snmp(object simple network management protocol)是一个面向对象的snmp开发组件,与关系数据库流行的o-r mapping技术类似,实现了object到snmp mib的操作映射(简称o-m mapping),提供了java/snmp网关、rmi/snmp网关 、web service/snmp网关服务。开发者无需理解snmp协议和mib细节,只需要定义普通数据对象,然后将数据对象按添加、删除、修改、查询等模式提交给网关即可。object snmp网关会自动将数据对象按开发者的期望发送到snmp设备,并返回用户需要的对象。object snmp提供诸如分布式snmp网关、 网络拓扑发现、物理拓扑发现、网络自动搜索发现 、设备连接关系发现、设备类型发现、网络漫游搜索、以及定义好的可管理各种设备的mib数据等高级功能。

  objectsnmp提供四种网关api模型,满足绝大多数开发者的需求。所有网关的api保持一致,都提供了基于数据对象添加、删除、修改、查询等服务;并可以随意切换各种网关模式,保持api对用户不变。

1.o-m mapping映射框架

  参考数据库领域流行的o-rmapping技术,实现snmp领域的object-mib映射框架,自动翻译mib和oid语法、snmp命令和网络操作,彻底告别socket、pdu、udp、snmpget等方式的编程模式,开发人员仅需定义一个与mib数据相对应的普通数据对象。然后通过各种网关提交数据对象,即可完成对snmp的复杂访问。

2.java/snmp网关

  使用者的程序和objectsnmp在同一个java进程内,使用者定义普通java数据对象,然后通过java api访问objectsnmp网关。

3.java rmi/snmp网关

  使用者的程序和objectsnmp在不同的java进程内,或在不同的机器上。使用者定义普通java数据对象,然后通过rmi java api访问objectsnmp网关。

4.web service/snmp网关

  使用者可以为php、c 、.net、java、flex、javascrip等支持web service技术的其他程序,通过在web环境中,访问objectsnmp网关。web servcie/snmp网关支持任意兼容servlet的web容器。

5.proxy/snmp透明网关

  为私网穿透、分布式部署snmp网关、snmp网关负载均衡、主/从两级snmp管理 等场景提供了透明的snmp网关服务。proxy网关可以采用java、rmi、web service任意模式,并且完全对用户透明,就如同只有一个网关一样。

6.一致的api服务

  所有的网关的api保持一致,都提供了基于数据对象添加、删除、修改、查询等服务;并可以随意切换各种网关模式,保持api对用户不变。

7.snmp trap接收服务

  内置snmp trap接收服务器,可以接收公共和私有snmp trap消息。并自动将原始trap pdu包解析成java trap消息对象。为了简化trap通知模式的编程开发,objectsnmp将被动接收的trap消息机制映射成为主动获取java trap消息对象的普通编程模式。

8.网管集成

  objectsnmp依托底层o-m框架和网关技术,针对诸如故障管理、性能监控管理、故障监控、配置管理、业务管理、网络安全管理等snmp网管功能,提供了最为便捷的支持。

9.支持私有mib文件

  产品可以加载各种厂商的私有mib文件,加载私有mib文件后,自动解析mib文件的语法。

10.网络自动发现功能

  采用全新的技术:即支持单一cisco、华为网络,也支持各种厂商设备混合网络。支持模糊连接定位,在数据不全或设备缺失的情况下,尽可能发现连接关系。可在任意的网络环境中工作,不需要用户对网络做任何假设。

11.snmp数据采集服务

  objectsnmp提供如下常用数据采集服务,使用者可直接使用:系统类mib描述、ip网络类mib描述、交换机mib描述、硬件设施类mib描述、软件类mib描述、java类mib描述。

12.自动java代码生成技术

  提供了java数据对象代码的自动生成技术,进一步简化snmp开发工作。

13.snmp mib数据浏览器

  可单独使用,也可集成在程序中使用snmp数据浏览器,便于开发和调试。

14.优秀的性能表现

  • 单线程1万个snmp对象(7万个snmp oid数据)获取总时间<=5秒
  • 多线程并发1万个snmp对象获取总时间<=2秒
  • 连续30天多线程并发获取snmp数据,内存波动正负0.3m
  • 1千万次snmp对象获取操作,在多线程并发环境下,正确率100%

(一)获取snmp简单基本数据

1.snmp4j步骤:

1)创建target(target代表远程设备或者远程实体),包括设备地址,snmp端口,snmp团体字,snmp版本,超时时间,重试次数等信息。

2)创建pdu(代表管理端同target通信的数据),在pdu中增加要获取的oid值,设置访问的方式。

3)创建snmp(代表着管理者,作用是通信的具体实行者)

4)向agent发送pdu,并接收response响应

 

5)解析resoponse响应。

// 设置 target
   communitytarget target = new communitytarget();
   target.setcommunity(new octetstring("public"));
   address targetaddress = genericaddress.parse("udp:127.0.0.1/161");
   target.setaddress(targetaddress);//设置目标设备地址、端口
   target.setretries(2); // 通信不成功时的重试次数
   target.settimeout(1500);// 超时时间
   target.setversion(snmpconstants.version1);//设置版本
   // 创建 pdu
   pdu pdu = new pdu();
   pdu.add(new variablebinding(new oid(new int[] { 1, 3, 6, 1, 2, 1, 1, 5, 0 })));
   pdu.settype(pdu.get);// mib的访问方式
   
   transportmapping transport = new defaultudptransportmapping();
   snmp snmp = new snmp(transport);
   responseevent respevnt = snmp.send(pdu, target);// mib的访问方式
   // 解析response
   if (respevnt != null && respevnt.getresponse() != null) {
		vector recvbs = respevnt.getresponse().getvariablebindings();
          for (int i = 0; i < recvbs.size(); i  ) {
                 variablebinding recvb = recvbs.elementat(i);
                 system.out.println(recvb.getoid()   " : "   recvb.getvariable());
          }
   }

2.使用objectsnmp获取数据:

1)创建snmptarget,包括设备地址,snmp端口,snmp团体字,snmp版本,超时时间,重试次数等信息。

2)获取snmpapi,根据oid获取snmp数据。

  //封装target
   snmptarget target = new snmptarget();
   target.nodeip="127.0.0.1";
   target.port=161;
   target.readcommunity="public";
   target.snmpversion = target.version2c;
   
   //获取信息
   string result = snmpfactory.getsnmpapi().getoidvalue("1, 3, 6, 1, 2, 1, 1, 5, 0",target);

 结论:对于snmp简单数据的获取,即根据单个oid获取相应信息,objectsnmp更为简单方便。

(二)操作snmp表、组数据

 

  所有的snmp mib可以分为两大类,一类称之为组如下图的system组,有查询、修改操作,

 

 

 

与之相映射的java对象分别是:

public class mibsystem implements com.zhtelecom.common.snmp.ommappinginfo
{
    private string sysdescr;
    private string sysobjectid;
    private long sysuptime;
    private string syscontact;
    private string sysname;
    private string syslocation;
    private int sysservices;
		get/set ……..
    public string getmappingoid()  //告诉要映射system组的oid
    {
        return "1.3.6.1.2.1.1";  //system组的oid
    }
}
public class mibospfstubareaentry implements com.zhtelecom.common.snmp.ommappinginfo
{
    private string ospfstubareaid;
    private int ospfstubtos;
    private int ospfstubmetric;
    private int ospfstubstatus;
    private int ospfstubmetrictype;
    public string getmappingoid()
    {
        return "1.3.6.1.2.1.14.3.1"; // ospfstubareaentry的oid
    }
}

 

//获取mibospfstubareaentry表中所有数据
list list= snmpapi. getalltabledata(mibospfstubareaentry.class, target);
//在mibospfstubareaentry 表中添加一行数据
mibospfstubareaentry ospf = new mibospfstubareaentry();
ospf.setospfstubtos(3);
ospf.setospfstubstatus(snmpapi.rowstatusentryadd); //设置snmp rowstatus的值为添加。
ospf.setospfstubmetrictype(2);
snmpapi.addtablerow(ospf, target);
//表中删除一行数据
mibospfstubareaentry ospf = new mibospfstubareaentry();//设置snmp rowstatus的值为删除语义
ospf.setospfstubstatus(snmpapi.rowstatusentrydel);
snmpapi.deltablerow(ospf, target);
//修改mibospfstubareaentry mib表中一行数据
mibospfstubareaentry ospf = new mibospfstubareaentry();
ospf.setospfstubareaid("192.168.9.0");
ospf.setospfstubtos(3);
ospf.setospfstubstatus(snmpapi.rowstatusentryactive); //设置snmp rowstatus的值为激活语义。
ospf.setospfstubmetric(3);
ospf.setospfstubmetrictype(3);
snmpapi.update(ospf, target);

可以看出通过objectsnmp操作数据极其方便简单,相比于snmp4j从易用性和功能性来说得到了很大的提高,而且通过对象的方式对snmp进行操作,更符合用户的使用习惯,且屏蔽掉了snmp4j中的pdu、scopedpdu类、transportmapping等,学习成本降低了很多。

(三)基于objectsnmp与snmp开发对比

项目

使用objectsnmp开发

snmp4j

软件架构

底层实现对snmp协议的封装,上层提供基于对象的网关服务和各种高级服务。

实现对snmp协议的原始封装

开发技能要求

仅需了解snmp概念即可开发,并提供对象代码自动生成工具

需要对socket、snmp数据类型等有开发级的掌握。

开发效率

对象级的上层抽象操作。代码量仅有传统模式的10%

大量的snmp协议层操作代码

开发时间

在snmp模块开发和设备联调上花费的时间仅有传统模式的20%

需要专人负责snmp模块的开发和后期维护

软件性能

已通过基准性能验证,新定义的数据对象直接在网关通道上传递

需要大量的调优、测试、验证来保证

软件模式

有统一的对象模式和网关模式,与整体软件的对象风格保持一致

无,需要开发人员重新建立

网关功能

同时支持java、rmi、web service、proxy等多种网关

高级服务

全新技术的网络拓扑自动发现和网络资源发现

预定义mib对象

提供多种内置mib采集服务,如网络接口、流量、数据包、ip、cpu、磁盘、内存等

0
0
评论 共 1 条 请登录后发表评论
1 楼 2018-03-04 22:12
。。。。。。。。

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • msdn 资源大全,你要的全都有。win7 win8 win10 windows server

  • win7msdn官方下载

  • msdn 技术资源库参考文档: visual studio 2005 visual basic  visual c#  visual c .net framework 类库参考 sql server visual web developer visual studio tools fo

  • 用wpf制作的msdnsearch

  • 无意中在csdn的买球官网平台主页上发现一个链接:http://www.microsoft.com/china/msdn/news/searchintro.mspx,msdn是一个巨大的技术资料库,如果把查找入口放到自己的blog上,方便自己也方便他人。所以写了下面一段代码,共享出来: &lt;div align="left"&gt; &lt;form method="get"&gt; &lt;t...

  • msdn enhanced search ,带有智能的搜索。。 http://search.msdn.microsoft.com/search/default.aspx 操作 语法 示例 全部搜索项 ...

  • 本说明是基于网页版的 1.首先进入 msdn,如下界面 链接:https://docs.microsoft.com/zh-cn/ 2. 在上图红线标出的地方输入需要寻找的东西 即可搜索 msdn是一个比较方便的库

  • 简介: msdn官方网站html源码,msdn 技术资源库 做一个安静的工具站,系统之家,电脑系统下载站!包含纯净win7/8/10/xp/win10/win11系统资源 适合做买球官网平台官网买球买球官网平台官网平台首页,喜欢的可以自己动手改下! 网盘: http://pan.zijiepan1.xyz/aaabfpmr1us0 图片: ...

  • 您是否想让您的网站也拥有msdn网站强大的资源库搜索功能呢?请按照以下三种方式中的任意一种,在您的网站上添加msdn搜索链接。您还可以根据您的网站的风格进行定制和设计,如宽度、文字和背景颜色等等。如果默认的msdn徽标不符合您的使用需要,我们还提供了另外两个尺寸的徽标供您选用。您可以将其中徽标的url替换默认搜索代码中的相应徽标链接。 我的收藏地址: http://blog.csdn.net/sm

  • 微软原版msdn镜像,全系列微软操作系统rom下载,windows历史系统包合集索引。本站搜集的操作系统皆为原版镜像,最初为方便自己使用,现在分享给大家,下载链接主要为磁力,使用迅雷下载即可。有部分资源为解决下载没速度的问题,提供了网盘下载链接,当然,大家下载热门的资源也提供了msdn微软原版网盘链接。如果,你在下载过程中遇到无法下载的资源,可联系我帮你下载好然后网盘分享给你。参考:https://www.glgxt.cn/post/msdn_original_collectio.htmlmsdn原版镜像资

  • msdnlibrary资源库 涵盖了微软全套可开发产品线的技术开发文档和科技文献(部分包括源代码)

  • visual basic 2.0 professional - full install (english) released: 7/30/2003 sha1: edb7f2c4ac779a37c005318d317bdf804d332fed file name: en_vb2.0.exe

  • 涉及到的内容有cppreference.chm、c与c 标准类库及函数.chm、mfc类库详解.chm、teechart for .net中文版.chm、mfc类库详解.chm、win32api大全 (中文版)、winapi_vb.chm,平常开发过程中可进行查阅。

  • http://msdn.microsoft.com(谷歌搜索,后加site:msdn.microsoft.com) http://www.gfsoso.com/ 创建各种类型的控件类msdn查找wc_button或者wc_ #include 控件类的头文件 initcommoncontrols();#pragma comment(lib,"comctl32.lib") 各种控件的类型 b

  • 参见 http://msdn.microsoft.com/zh-cn/library 转载于:https://blog.51cto.com/zorro/855249

global site tag (gtag.js) - google analytics