背景
我正在尝试创建SNMP网站的项目以获取有关网络设备的信息。我使用了LeXtudio创建的SNMP库 - sharpsnmp。
问题
我创建了两个使用Getbulk的方法和一个使用Get的方法。两者都列入了OID列表。两个人都在工作,没有出问题。我唯一的问题是网络设备很远。它们每个都需要完全相同的时间。在2分钟。我觉得这是一个很长的等待时间。虽然在接近的设备上它非常快且不到5秒。
问题
我想知道Getbulk不会立即询问所有信息,然后返回所有信息。或者它是否一次要求列表中的每个OID。与Get?
相同有没有办法拨打一个电话,只需拨打一次设备即可获得我需要的所有信息,或者只是我可以重复拨打设备?
我还有其他选择吗?
答案 0 :(得分:4)
通常,如果处理标量OID或确切的表对象实例,则应使用GET请求。
否则,如果代理支持SNMPv2C,您应该使用GETNEXT甚至是GETBULK。
通常,您应该使用GETNEXT来获取表或整个表的选定列。在这种情况下,您需要递归执行GET-NEXT请求,直到结果超出树分支范围。
如果代理启用了SNMPv2C,则应使用GETBULK。它是GETNEXT请求的优化。因此,基本上您不必执行多个GET-NEXT请求来获取大量实例。相反,您只需发送单个GETBULK请求并将 Max-Repetitions 参数设置为10,您就可以从请求中指定的OID开始获得接下来的10个后续变量。