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

Application not sending all SNMP Traps

本文关键字:SNMP 陷阱 应用程序      更新时间:2023-10-16

我在Visual Studio中有一个C++应用程序,它在某些条件下将SNMP陷阱发送到远程机器。两台计算机中的防火墙均已禁用。

我使用Windows API SnmpSendMsg发送陷阱。

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

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

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

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

谢谢

SNMP 使用 UDP 作为传输协议。 UDP 是不可靠的,因为:

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

我建议使用SNMP INFORMs(SNMPv2C或SNMPv3(而不是SNMP TRAPs。他们得到了承认。

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