[SNMP4J] AgentX over UDP

Andy Coulbeck andrew.coulbeck at unboundid.com
Thu Apr 22 01:04:16 CEST 2010


Has anyone had any success using UDP as the transport between an SNMP4J AgentX subagent and net-snmp snmpd?  The sub-agent establishes a session and registers its managed objects successfully (under a specific context name), but the master agent does not forward any SNMP requests to the sub-agent.  I am using net-snmp 5.3.2.2 and snmp4j-agentx-1.2.2.  There are no issues when using TCP as the transport, nor are there any issues when the sub-agent connects over UDP to an SNMP4J master agent.

I have read that AgentX was not designed to be used over a connection-less transport.  Any opinions on that?

I did find a bug in AgentXSubagent where it does not close the session because the session ID is not set in the close PDU.  The presence of this bug suggests to me that UDP is not commonly used.  With TCP the termination of the connection causes the session resources to be released so it would not typically be a problem.  I just happened to notice in the snmpd trace that it was complaining about an unknown session in the close PDU.

--- snmp4j-agentx-1.3/src/org/snmp4j/agent/agentx/subagent/AgentXSubagent.java	2010-04-21 18:01:11.000000000 -0500
***************
*** 155,161 ****
      }
      session.setClosed(true);
      AgentXClosePDU closePDU =
!         new AgentXClosePDU(AgentXProtocol.REASON_SHUTDOWN);
      AgentXTarget target = session.createAgentXTarget();
      AgentXResponseEvent resp =
          agentX.send(closePDU, target, session.getPeer().getTransport());
--- 155,162 ----
      }
      session.setClosed(true);
      AgentXClosePDU closePDU =
!         new AgentXClosePDU(reason);
!     closePDU.setSessionAttributes(session);
      AgentXTarget target = session.createAgentXTarget();
      AgentXResponseEvent resp =
          agentX.send(closePDU, target, session.getPeer().getTransport());





More information about the SNMP4J mailing list