如何在Opendaylight SNMP插件中添加自定义MIB?

时间:2016-11-01 08:50:36

标签: snmp sdn opendaylight

我正在编写一个python应用程序,它应该使用Opendaylight SNMP插件REST API(http://IPAddress:8181/restconf/operations/snmp:snmp-get)从运行snmp代理的网络设备获取一些信息。

我按如下方式模拟设置:

环境

  • SNMP代理:在VM上运行的Ubuntu。
  • SNMP Manager:在Opendaylight之上运行的python应用程序。

已完成的工作

要获取总RAM(OID:.1.3.6.1.4.1.2021.4.5.0)等信息,我需要将UCD-SNMP-MIB.mib添加到opendaylight,以便它了解对象类型和ID。

我已经检查了这个page,但我似乎无法让它发挥作用。页面中的教程似乎已过时,它解释了如何创建本机opendaylight项目,而我的目标是使用北向API。

问题: 我们如何将自定义MIB文件添加到opendaylight目录中,以便应用程序可以使用REST API通过网络管理snmp代理?

1 个答案:

答案 0 :(得分:0)

odl-snmp-plugin没有任何功能可以直接使用MIB文件。

snmp-get等通用RPC只接受OID值并返回OID /值对的JSON文档。

POST :host/restconf/operations/snmp:snmp-get
Authentication: :basic-auth
Content-Type: application/json
{
   "input": {
      "ip-address": ":addr",
      "oid" : "1.3.6.1.2.1.2.2.1",
      "get-type" : "GET-BULK",
      "community" : ":community"
   }
}

{
  "output": {
    "results": [
      {
        "oid": "1.3.6.1.2.1.2.2.1.1.1",
        "value": "1"
      },
      {
        "oid": "1.3.6.1.2.1.2.2.1.1.2",
        "value": "2"
      },
      ...
    ]
  }
}

模块特定的RPC(如get-interfaces)依赖于两个先决条件:

  1. 已从所需的MIB生成YANG文件
  2. .one文件,包含从MIB名称到OID的映射,用于yang-oid-plugin。
  3. 通过这些先决条件,您可以编写Maven POM文件,该文件将生成包含OID注释的Java代码。这旨在让您使用Java绑定感知API来获取填充了SNMP数据的Java对象。

    OpenDaylight snmp项目是如何执行此操作的完整示例。

    请参阅此处查看从IF-MIB生成的示例YANG文件:https://github.com/opendaylight/snmp/blob/master/mibs-model/src/main/yang/IF-MIB.yang

    请参阅此处查看示例.oid文件,也是从IF-MIB生成的: https://github.com/opendaylight/snmp/blob/master/mibs-model/src/main/oid/IF-MIB.oid

    需要采取进一步措施来实现通过NETCONF或RESTCONF公开此解决方案的解决方案。一种简单的方法是在odl-snmp-plugin完成时添加和硬编码RPC。更复杂的解决方案需要安装设备的概念,就像odl-netconf-connector那样,您可以在其中扩展拓扑以存储设备的SNMP凭据,然后编写一个连接器,在拓扑节点下安装支持SNMP的YANG模块。设备