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



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

我正在模拟如下设置:

  • SNMP agent: Ubuntu running on a VM.
  • SNMP Manager:一个运行在Opendaylight之上的python应用程序。

已经做了什么

要获取Total RAM (OID: .1.3.6.1.4.1.2021.4.5.0)等信息,我需要添加UCD-SNMP-MIB。

将对象的类型和ID设置为opendaylight。

我已经检查了这个页面,但我似乎不能使它工作。页面中的教程似乎过时了,它解释了如何创建一个本地opendaylight项目,而我的目标是使用北向api。

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

odl-snmp-plugin没有任何直接处理MIB文件的功能。

一般的rpc,如snmp-get,只接受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-interface依赖于两个先决条件:

  1. 已从所需的MIB生成YANG文件
  2. 一个. OID文件,包含从MIB名到OID的映射,用于yang-oid-plugin。
有了这些先决条件,您就可以编写一个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模块。

最新更新