SNMP GETBULK 和 GET 操作有什么区别

Mdu*_*s00 3 c# cisco snmp sharp-snmp

背景

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

问题

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

问题

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

有没有一种方法可以通过一次呼叫设备获得我需要的所有信息,还是只能重复呼叫设备?

我还有其他选择吗?

And*_*gin 5

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

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

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

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