SNMP4J重试策略

时间:2015-10-23 15:07:39

标签: snmp snmp4j

我使用以下CommandResponder

实现了简单的SNMP陷阱收集器
new CommandResponder() {

    @Override
    public void processPdu(CommandResponderEvent event) {
        PDU pdu = event.getPDU();
        Trap receivedTrap = snmpHelper.toTrap(pdu);
        trapStorage.offer(receivedTrap);
    }
};

当我使用发件人中的以下Target设置向收集器发送一些陷阱时:

target.setRetries(2);
target.setTimeout(500);

SNMP收集器收到陷阱3次。 为什么?我是否应该从收集器向发件人发送一些回复以防止陷阱重新发送?

1 个答案:

答案 0 :(得分:1)

有三种类型的SNMP通知(按PDU类型):

  • Trapv1
  • Trapv2(自SNMPv2起)
  • 通知(自SNMPv2起)

TRAP的一个大问题是它们未被确认,因此SNMP代理实际上并不知道SNMP管理器是否收到它。 SNMPv2 PDU通过引入INFORM的概念来解决这个问题,INFORM只不过是一个公认的TRAP。因此,我相信您处理的代理会发送三次相同的陷阱,以确保它能够交付。

要防止出现此问题,您应该考虑使用INFORM,如果代理支持它们。此外,代理/设备端可能存在某种配置选项,允许您禁用此行为。