SharpSNMP最大重复次数增加会导致通过GPRS的缓冲区大小异常

时间:2015-07-10 14:39:58

标签: c# snmp sharp-snmp

我正在尝试将SNMP请求发送到远程位置。

我正在使用代码项目帖子(here)中的SharpSNMP 8.5.0库和Snmp.BulkWalk示例。

在这个例子中,他们使用10作为最大重复并使用嗅探软件,我注意到正在创建多个数据报包以在子树中进行遍历。实际上我每次都会收到120个数据包的结果。所以我决定尝试更高的最大重复次数,我注意到数据包数量正在下降,实际上我可以在一个数据包中获得所有数据。现在我还有另一个问题:当我使用GPRS从服务器上窃取设备时,远程设备正在使用GPRS,我收到超时或缓冲区大小错误。当我在本地PC上运行相同的解决方案并从路由器访问远程设备时(不涉及GPRS)我没有收到任何错误并获得所有数据!

有人可以解释这种行为吗?是否与GPRS限制有关? GPRS不可靠?或者它是服务器上的网络限制?

(服务器中的MTU为1500)。有没有人有可以通过SNMP-UDP数据报包发送的最佳实践和最佳数据包大小的经验?

2 个答案:

答案 0 :(得分:1)

虽然我是该图书馆的作者,但我无法回答GPRS部分,因为我不是移动网络专家。

我能回答的是数据包编号部分,如果您查看“max-repititions”的定义,则相对简单,

https://www.webnms.com/snmp/help/snmpapi/snmpv3/v2c/maxrepetition.html

通过为此参数设置较大的值,单个数据包可以包含更多结果,显然需要更少的数据包。

我在Code Project文章中使用了10,因为它只是一个例子。您可能会从上面的链接中看到其他库可能会使用50作为默认值。

答案 1 :(得分:1)

关于SNMP数据包大小的最佳做法,我总是被告知你应该避免超过网络MTU。换句话说,设置最大重复次数,使以太网帧不会超过1500字节。 (当然,这假设您的表格单元格的大小是可预测的。)

虽然使用较大的数据包应该可以在大多数配置良好的网络上运行,但建议避免在网络上使用分段数据包。也许数据包重组可能会在网络设备中产生更大的开销。如果你打算在几个数据包上分割PDU,那么必须做一些来回请求的缺点并不是那么糟糕。

例如,思科设备seems to follow this best practice,以及a Microsoft article中推荐的设备。

(顺便说一下,下次你有两个不同的问题,考虑将它们发布为两个问题!)