【问题标题】:Application not sending all SNMP Traps应用程序未发送所有 SNMP 陷阱
【发布时间】:2017-08-02 09:58:41
【问题描述】:

我在 Visual Studio 中有一个 C++ 应用程序,它在特定条件下将 SNMP 陷阱发送到远程机器。两台机器都禁用了防火墙。

我已使用 Windows API SnmpSendMsg 发送陷阱。

远程机器没有收到所有的陷阱。例如,如果我的应用程序发送 6 个陷阱,有时远程机器会收到 4 个陷阱,有时会收到 5 个。

我正在使用“iReasoning MIB Browser”陷阱接收器来接收陷阱。在使用wireshark进行调试并在我的应用程序中添加日志时,我发现我的应用程序使用SnmpSendMsg发送了6个陷阱,并且每次返回的状态都是1(SNMPAPI_SUCCESS)。但是,wireshark 每次只能捕获 4-5 个陷阱。

我的假设是,windows 没有发送陷阱。

我不确定如何进一步调试此问题。

谢谢

【问题讨论】:

    标签: c++ winapi snmp snmp-trap


    【解决方案1】:

    SNMP 使用 UDP 作为传输协议。 UDP 在以下意义上是不可靠的:

    • UDP 数据包可能会丢失
    • UDP 协议没有提供机制来判断数据包是否丢失或重新发送。

    我建议使用 SNMP INFORM(SNMPv2C 或 SNMPv3)而不是 SNMP TRAP。他们得到承认。

    【讨论】:

      【解决方案2】:

      这是协议调试101:在发送系统和接收系统上运行wireshark来诊断数据包丢失的位置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-11
        相关资源
        最近更新 更多