中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SNMP4J與ObjectSNMP對比分析之我見

發布時間:2020-07-25 06:02:53 來源:網絡 閱讀:2033 作者:SugarNMS 欄目:開發技術

  SNMP4J是一個用Java來實現SNMP(簡單網絡管理協議)協議的開源項目.它支持以命令行的形式進行管理與響應。Object SNMP是一個面向對象的SNMP開發組件,與關系數據庫流行的O-R Mapping技術類似,實現了Object到SNMP MIB的操作映射(簡稱O-M Mapping)。使用SNMP4J與ObjectSNMP開發類似于使用原生JDBC開發與Hibernate框架。

SNMP4J介紹

  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. 支持多線程。

 

ObjectSNMP介紹

  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%

SNMP4J與ObjectSNMP實例對比

(一)獲取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<VariableBinding> 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組,有查詢、修改操作,

 SNMP4J與ObjectSNMP對比分析之我見     SNMP4J與ObjectSNMP對比分析之我見 

與之相映射的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 &hellip;&hellip;..
    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、磁盤、內存等

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

拉萨市| 汉中市| 英德市| 平果县| 新田县| 拜泉县| 双峰县| 深州市| 尉犁县| 镇平县| 界首市| 龙山县| 鄂州市| 潮州市| 淳化县| 柏乡县| 奈曼旗| 井冈山市| 新安县| 铅山县| 辉县市| 安吉县| 太湖县| 怀来县| 彭山县| 建湖县| 沿河| 襄樊市| 陇西县| 东海县| 阿勒泰市| 洛隆县| 鄢陵县| 泰兴市| 麦盖提县| 广水市| 合作市| 闽清县| 固原市| 定边县| 横山县|