Hi,

We have a problem with the SNMP4J time-out management when the SNMP server is 
not reachable.

Our environment is composed by:

-       A distant SNMP server.

-       A laptop that hosts the SNMP client.

On this laptop:

·         the OS is Windows XP,

·         the network interfaces are configured to be still available even when 
the laptop is no connected to the server (DHCP MediaSense disabled),

·         no SNMP server has been installed.

The timeout is set to 1 second (refer to the code above).

We performed the following tests, in order to check the client behavior when no 
SNMP server is reachable:

1.     When using a local IP address (127.0.0.1) for the server

ð  the client took approximately 10 seconds to perform 4 successive SNMP 
requests.

2.     When using the real IP address of the distant server

ð  the request took approximately 50 seconds to perform 4 successive SNMP 
requests.

Can anybody explain us this difference of time ?

Here is the extract of the code:

    // Create TransportMapping and Listen
    TransportMapping transport = null;
    Snmp snmp = null;
    Hashtable<String, Variable> result = new Hashtable<String, Variable>();
    try
    {
      transport = new DefaultUdpTransportMapping();
      transport.listen();
      // Create Target Address object
      CommunityTarget comtarget = new CommunityTarget();
      comtarget.setCommunity(new OctetString(aCommunity));
      comtarget.setVersion(snmpVersion);
      // aHostname = 127.0.0.1 on test1
      // aHostname = 172.20.131.1 on test2
      // port = 2161
      comtarget.setAddress(new UdpAddress(aHostname + "/" + aPort));
      comtarget.setRetries(0);
      // timeout = 1000 ms
      comtarget.setTimeout(timeout);
      String oidString = "";
      // Create the PDU object
      PDU pdu = new PDU();
      for (int i = 0; i < aOids.length; i++)
      {
        pdu.add(new VariableBinding(new OID(aOids[i])));
        if (i > 0)
        {
          oidString = oidString + ", ";
        }
        oidString = oidString + aOids[i];
      }
      pdu.setType(PDU.GET);
      pdu.setRequestID(new Integer32(1));
      // Create Snmp object for sending data to Agent
      snmp = new Snmp(transport);
      ResponseEvent aresponse = snmp.get(pdu, comtarget);
      if (aresponse != null)
      {
        System.out.println("Got Response from Agent : " + aresponse.toString());
      }
      else
      {
        System.out.println("No Response from Agent");
      }
    }
    catch (IOException e)
    {
      e.printStackTrace();
    }
    finally
    {
      if (snmp != null)
      {
        try
        {
          snmp.close();
        }
        catch (IOException e)
        {
          e.printStackTrace();
        }
      }
    }

Thank you in advance for your help.

Regards,

Jerome
_______________________________________________
SNMP4J mailing list
SNMP4J@agentpp.org
http://lists.agentpp.org/mailman/listinfo/snmp4j

Reply via email to