应用程序未发送所有 SNMP 陷阱

Application not sending all SNMP Traps

我在 visual studio 中有一个 C++ 应用程序,它在某些 conditions.Firewall 上将 SNMP 陷阱发送到远程机器在两台机器上都被禁用。

我已经使用windows API SnmpSendMsg 发送陷阱。

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

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

我的假设是,不知何故 windows 没有发送陷阱。

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

谢谢

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

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

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

这是协议调试101:运行在发送系统和接收系统上使用wireshark来诊断丢包的地方。