SNMP GETBULK和GET操作之间有什么区别

时间:2016-12-01 09:41:00

标签: c# snmp cisco sharp-snmp

背景

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

问题

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

问题

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

相同

有没有办法拨打一个电话,只需拨打一次设备即可获得我需要的所有信息,或者只是我可以重复拨打设备?

我还有其他选择吗?

1 个答案:

答案 0 :(得分:4)

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

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

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

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