我正在使用 SNMP 从 cisco 交换机查询一堆信息。例如,我通过在 .1.3.6.1.4.1.9.9.23 上执行 snmpwalk 来获取有关使用 CDP 检测到的邻居的信息
我可以在不同的 cisco 型号中使用此 OID 吗?我应该注意哪些陷阱?对我来说,我对使用数字 OID 有点不安 - 似乎我应该使用 MIB 数据库或其他东西并使用命名 OID,以获得跨设备兼容性,但也许我只是在想象需要为了那个原因。
一旦 MIB 发布,它就不会移动到新的 OID。这样做会破坏网络管理工具并引起没人想要的支持电话。继续您的示例,CDP MIB 已在 Cisco 的SNMP Object Navigator 上发布。
对于一般的代码清洁度,最好在一个中心位置定义 OID,特别是因为您不想为需要访问的每个表复制完整的 OID。
您需要最小心的地方是思科最近收购的产品中的独特 MIB。OID 将发生变化,如果没有其他方法将其移动到他们自己的企业 OID 空间中,但 MIB 也可能会发生变化以符合 Cisco 的 SNMP 实践。
OID 可以随硬件而变化,但也可以随相同硬件的固件版本而变化,因为随着时间的推移,管理功能的架构可能会发生变化并需要新的 MIB。值得检查您打算使用的任何 OID 是否在已弃用的 MIB 中,或者在应用程序的生命周期中变得如此,因为这不仅表明 MIB 有朝一日可能不受支持,而且可能会得到改进,更丰富的数据或访问数据。在广泛部署之前,作为固件更新常规测试的一部分,针对示例升级设备测试管理应用程序也是一种很好的做法。
由于 MIB 被弃用而导致 OID 更改的示例位于
http://www.cisco.com/en/US/tech/tk648/tk362/technologies_configuration_example09186a0080094aa6.shtml
“本文档展示了如何使用 CISCO-CONFIG-COPY-MIB 将配置文件复制到思科设备或从思科设备复制。如果您从思科 IOS® 软件版本 12.0 开始,或者在某些设备上早于版本 11.2P,思科已经使用新的 CISCO-CONFIG-COPY-MIB 实现了一种新的简单网络管理协议 (SNMP) 配置管理方法。此 MIB 取代了 OLD-CISCO-SYSTEM-MIB 中已弃用的配置部分。"
如果这不可能,那么可以使用 OID,因为它们不应根据 SNMP MIB 指南进行更改。除非设备本身发生变化,但无论如何都需要一个不能重用旧 OID 的新 MIB。
杰..
在某些情况下,使用名称而不是数字表示可能会严重影响性能,因为需要读取和解析 MIB 文件以获取较低级别库所需的 OID 的数字表示。
例如,假设您使用一个程序每分钟收集一些东西,然后一遍又一遍地加载 MIB 是非常低效的。
正如其他人所说,一旦发布,数字映射的名称将永远不会改变,因此您将内容硬编码到程序中这一事实并不是真正的问题。
如果您可以访问命令行 SNMP 工具,请查看“ snmptranslate ”,以获得从文本到数字 OID 来回转换的好工具。
我认为这是一个常见的误解(关于每次解析名称时都会重新加载 MIB)。
大多数 SNMP API(例如 AdventNet、CMU)在启动时加载 MIBS,之后每次您请求从名称到 oid 的“转换”时都没有加载 MIB 的“开销”,反之亦然。更重要的是,其中一些缓存了结果,此时,名称查找和直接编码 OID 之间没有区别。
这有点类似于指定“IP 地址”与“主机名”。