3

背景

我正在尝试创建一个 SNMP 网站项目以获取有关网络设备的信息。我使用了 LeXtudio 创建的 SNMP 库 - sharpsnmp。

问题

我创建了两种方法,一种使用 Getbulk,另一种使用 Get。两者都包含一个 OID 列表。两者都照常工作,没有问题。我遇到的唯一问题是在很远的网络设备上。他们每个人都需要完全相同的时间。就在 2 分钟。我觉得这是一个很长的等待时间。虽然在靠近的设备上它非常快并且不到 5 秒。

问题

我想知道 Getbulk 是否不会立即要求所有信息,然后返回所有信息。或者它是否一次要求列表中的每个 OID。和Get一样吗?

有没有办法通过一次呼叫设备来获取我需要的所有信息,或者只有我可以反复呼叫设备?

我还有其他选择吗?

4

1 回答 1

5

如果您处理标量 OID 或精确的表对象实例,通常应该使用 GET 请求。

否则,如果代理支持 SNMPv2C,您应该使用 GETNEXT 甚至 GETBULK。

通常,您应该使用 GETNEXT 来获取表或整个表的选定列。在这种情况下,您需要递归执行 GET-NEXT 请求,直到结果超出树分支范围。

如果代理启用了 SNMPv2C,则应使用 GETBULK。它是对 GETNEXT 请求的优化。所以基本上你不必执行几个 GET-NEXT 请求来获取多个实例。相反,您可以只发送单个 GETBULK 请求并将Max-Repetitions参数设置为 10,您将从请求中指定的 OID 开始获得接下来的 10 个结果变量。

于 2016-12-03T10:00:31.853 回答