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

C# SharpSNMP最大重复次数增加导致通过GPRS的缓冲区大小异常,c#,snmp,sharp-snmp,C#,Snmp,Sharp Snmp,我正在尝试将SNMP请求发送到远程位置 我使用的是SharpSNMP 8.5.0库和来自代码项目post()的Snmp.BulkWalk示例 在这个例子中,他们使用10作为最大重复次数,并使用嗅探软件,我注意到它正在创建多个数据包,以便在子树中行走。事实上,我每次都会收到120个数据包的结果。所以我决定尝试一个更高的最大重复次数,我注意到数据包的数量正在下降,实际上我可以在一个数据包中获得所有数据。现在我又遇到了另一个问题:远程设备正在使用GPRS。当我使用GPRS从服务器在设备上漫游时,出现超

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

我使用的是SharpSNMP 8.5.0库和来自代码项目post()的Snmp.BulkWalk示例

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

有人能解释这种行为吗?这与GPRS限制有关吗?GPRS不可靠?还是服务器上的网络限制


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

尽管我是该库的作者,但我无法回答GPRS部分,因为我不是移动网络专家

我可以回答的是数据包编号部分,如果您查看“最大重复次数”的定义,这一部分相对简单

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


我在那篇代码项目文章中使用了10,因为它只是一个示例。您可能会从上面的链接中看到,其他库可能会使用50作为默认值。

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

虽然在大多数配置良好的网络上使用较大的数据包应该有效,但建议避免在网络上使用碎片数据包。也许数据包重新组装可能会在网络设备中产生更大的开销。而且,如果您要在几个数据包上对PDU进行分段,那么必须执行更多来回请求的缺点也不是那么糟糕

例如,Cisco设备,建议在中使用

(BTW,下次你有两个单独的问题时,把它们当作两个问题来考虑!)