SharpSNMP max-repetitions的增加通过GPRS导致缓冲区大小异常
本文关键字:缓冲区 异常 GPRS max-repetitions 增加 SharpSNMP | 更新日期: 2023-09-27 18:02:00
我正在尝试向远程位置发送SNMP请求。
我正在使用SharpSNMP 8.5.0库和Snmp。BulkWalk的例子来自一个代码项目的帖子(在这里)。
在这个例子中,他们使用10作为最大重复次数,并使用嗅探软件,我注意到它正在创建多个数据包,以便在子树中进行行走。实际上我每次都得到120包结果。所以我决定尝试更大的最大重复次数我注意到数据包的数量在减少,实际上我可以在一个数据包中获得所有的数据。现在我有另一个问题:远程设备正在使用GPRS,当我使用GPRS从服务器对设备进行snmpwalk时,我得到一个超时或缓冲区大小错误。当我在本地PC上运行相同的解决方案并从路由器(不涉及GPRS)访问远程设备时,我没有得到任何错误并获得所有数据!
有人能解释一下这种行为吗?它是否与GPRS限制有关?GPRS不可靠?还是服务器上的网络限制?(服务器的MTU是1500)。有没有人有最佳实践和最佳数据包大小的经验,可以通过SNMP-UDP数据报数据包发送?
虽然我是该库的作者,但我不能回答GPRS部分,因为我不是移动网络专家。
我能回答的是包数部分,如果你检查"最大重复"的定义,这是相对简单的,
https://www.webnms.com/snmp/help/snmpapi/snmpv3/v2c/maxrepetition.html设置更大的值,单个数据包可以包含更多的结果,显然需要更少的数据包。
我在那篇Code Project文章中使用了10,因为它只是一个示例。从上面的链接可以看到,其他库可能使用50作为默认值。
关于SNMP数据包大小的最佳实践,我总是被告知应该避免超过网络MTU。换句话说,设置最大重复数,使以太网帧不会定期超过1500字节。(当然,这假设表格单元格的大小是可预测的。)
虽然在大多数配置良好的网络上使用较大的数据包应该可以工作,但建议避免在网络上使用碎片数据包。也许数据包重新组装可能会在网络设备中产生更大的开销。如果您打算将pdu分成几个包,那么必须进行一些来回请求的缺点并不是那么糟糕。
例如,思科设备似乎遵循了这个最佳实践,并且在微软的一篇文章中推荐了它。
(顺便说一句,下次你有两个单独的问题,考虑把它们作为两个问题发布!)