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