【问题标题】:SharpSNMP max-repetitions increase causes buffer size exception through GPRSSharpSNMP 最大重复次数增加导致通过 GPRS 的缓冲区大小异常
【发布时间】:2015-07-10 14:39:57
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: c# snmp sharp-snmp


    【解决方案1】:

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

    我可以回答的是包号部分,如果你查看“max-repititions”的定义就比较简单了,

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      比如思科设备seems to follow this best practice,推荐在a Microsoft article

      (顺便说一句,下次您有两个单独的问题时,请考虑将它们作为两个问题发布!)

      【讨论】:

        猜你喜欢
        • 2014-07-23
        • 2019-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多