我使用以下CommandResponder
:
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次。 为什么?我是否应该从收集器向发件人发送一些回复以防止陷阱重新发送?
答案 0 :(得分:1)
有三种类型的SNMP通知(按PDU类型):
TRAP的一个大问题是它们未被确认,因此SNMP代理实际上并不知道SNMP管理器是否收到它。 SNMPv2 PDU通过引入INFORM的概念来解决这个问题,INFORM只不过是一个公认的TRAP。因此,我相信您处理的代理会发送三次相同的陷阱,以确保它能够交付。
要防止出现此问题,您应该考虑使用INFORM,如果代理支持它们。此外,代理/设备端可能存在某种配置选项,允许您禁用此行为。