[SNMP4J] Fwd: processPdu does not receive all the traps

Frank Fock fock at agentpp.com
Tue Mar 16 01:07:47 CET 2010


Hi,

There are many possible causes:

* UDP buffer overflow
* main task finishes too early
* errors in your queuing stuff
...

Regards,
Frank

On 16.03.2010 00:29, jctaboada wrote:
>
>
> -------- Original Message --------
> Subject: processPdu does not receive all the traps
> Date: Mon, 15 Mar 2010 20:22:52 +0800
> From: jctaboada<jctaboada at ntsp.nec.co.jp>
> To: "snmp4j at agentpp.org"<snmp4j at agentpp.org>
>
> Good day.
>
> Could someone help me why I cannot receive all the traps from my snmp
> agent?
> My snmp agent sends 27,000 traps to my manager but not all is received in
> the manager there are losses.
> I've been using wireshark to check if my manager receives the 27,000 traps
> and tcmdump to check if my agent sends the 27,000 trap.
> For both wireshark and tcpdump, trap count is 27,000. Only in processPdu
> where all traps are not received.
>
> Please see my code below:
>
> public void initListen() throws UnknownHostException, IOException
>      {
>          logger_.debug("initListen start");
>
>          System.out.println("listen start");
>          TransportMapping transport;
>          int version = 3;
>          USM usm = null;
>          MultiThreadedMessageDispatcher dispatcher;
>          ThreadPool threadPool;
>
>          threadPool = ThreadPool.create("Trap", 1);
>          dispatcher = new MultiThreadedMessageDispatcher(threadPool, new
> MessageDispatcherImpl());
>
>          // initialize trap listen port
>          transport = new DefaultUdpTransportMapping(
>                  new UdpAddress("0.0.0.0/"+trapPort));
>
> //        session = new Snmp(transport);
> //        session.getMessageDispatcher().addMessageProcessingModel(new
> MPv3());
>
>          if(localEngineID == null)
>          {
>              localEngineID = new OctetString(MPv3.createLocalEngineID());
>          }
>
>          // add usm to session for snmp version 3
>          if (version == SnmpConstants.version3)
>          {
>              usm = new USM(SecurityProtocols.getInstance(), localEngineID,
> 0);
>
>              SecurityModels.getInstance().addSecurityModel(usm);
>
>              // adds all users to the USM
>              UsmUser usmUser = null;
>
>              // check security level for usm user
>              if (securityLevel == 0)
>              {
>                  usmUser = new UsmUser( new OctetString(user), null, null,
> null, null);
>              }
>              else if (securityLevel == 1 )
>              {
>                  usmUser = new UsmUser( new OctetString(user), AuthSHA.ID,
> new OctetString(password), null, null);
>              }
>              else if ( securityLevel == 2 )
>              {
>                  usmUser = new UsmUser( new OctetString(user), AuthSHA.ID,
> new OctetString(password), PrivAES128.ID, new OctetString(password));
>              }
>              usm.addUser(usmUser.getSecurityName(), usmUser);
>          }
>
> System.out.println(usm.getUserTable().getUserEntries().toString());
>
>          dispatcher.addMessageProcessingModel(new MPv3(usm));
>          SecurityProtocols.getInstance().addDefaultProtocols();
>
>          session = new Snmp(dispatcher, transport);
>
> //        ((MPv3) session.getMessageProcessingModel(MPv3.ID))
> //        .setLocalEngineID(localEngineID.getValue());
>
>          session.addCommandResponder(this);
>
>          // initilize queue
>          logQueue = new LinkedBlockingQueue<CommandResponderEvent>();
>
>          try {
>              logger_.debug("listen start");
>              // open port for trap
>              session.listen();
>              System.out.println("Ready to accept notifications.");
>          } catch (UnknownHostException e1) {
>              e1.printStackTrace();
>              logger_.error(e1);
>              logger_.debug("trap port fails");
>              try
>              {
>                  logger_.debug("closing session");
>                  session.close();
>              }
>              catch (IOException e3)
>              {
>                  e3.printStackTrace();
>                  logger_.debug("close session fails");
>                  logger_.error(e3);
>              }
>          } catch (IOException e1) {
>              e1.printStackTrace();
>              logger_.error(e1);
>              logger_.debug("trap port fails");
>              try
>              {
>                  logger_.debug("closing session");
>                  session.close();
>              }
>              catch (IOException e4)
>              {
>                  e4.printStackTrace();
>                  logger_.debug("close session fails");
>                  logger_.error(e4);
>              }
>          }
>          logger_.debug("initListen end");
>      }
>
>      public synchronized void processPdu(CommandResponderEvent comEvent)
>      {
>          logger_.debug("processPdu start");
>
>          boolean flag = false;
>
>          try
>          {
>              flag = logQueue.offer(comEvent);
>              successflag++;
>              System.out.println(successflag);
>              if(flag)
>              {
>                  logger_.debug("offer success");
>              }
>              else
>              {
>                  logger_.error("offer fail");
>              }
>          }
>          catch (NullPointerException e)
>          {
>              logger_.error(e);
>              logger_.debug("offer fail");
>          }
>
>          logger_.debug("processPdu end");
>      }
>
>      public void getFromQueue()
>      {
>          logger_.debug("getFromQueue start");
>
>          CommandResponderEvent event = null;
>
>          PDU pdu = null;
>
>          while(!logQueue.isEmpty())
>          {
>              try
>              {
>                  event = logQueue.take();
>                  logger_.debug("take end");
>              }
>              catch (InterruptedException e)
>              {
>                  logger_.debug("take fails");
>                  logger_.error(e);
>              }
>
>              pdu = event.getPDU();
>
>              if(pdu != null)
>              {
>                  if(logger_.isDebugEnabled())
>                  {
>                      logger_.debug("pdu is not null");
>                      System.out.println("Trap received = " +
> pdu.getVariableBindings());
>                  }
>                  logger_.info(pdu.getVariableBindings());
> //                logger_.info(event);
>              }
>              else
>              {
>                  logger_.info("pdu is null");
>              }
>          }
>
>          logger_.debug("getFromQueue end");
>      }
>
> Please give me some advice on how to fix this.
>
> Best regards,
>
> JC
> _______________________________________________
> SNMP4J mailing list
> SNMP4J at agentpp.org
> http://lists.agentpp.org/mailman/listinfo/snmp4j

-- 
AGENT++
http://www.agentpp.com
http://www.snmp4j.com
http://www.mibexplorer.com
http://www.mibdesigner.com




More information about the SNMP4J mailing list