[SNMP4J] SNMP4J V3 perfromance

Frank Fock fock at agentpp.com
Wed Oct 26 09:19:24 CEST 2005


Hi Deon,

As of v1.6 you can also use Snmp.addNotificationListener to add a 
notification
listener (no need to add a TransportMapping to Snmp directly if you want to
receive traps/informs only then). Snmp will then automatically respond 
to INFORMs
just before handling the CommandResponderEvent to the notification listener.

Best regards,
Frank

Deon van der Merwe wrote:

> Hi Scott,
>
> Not sure if it works the same with V2c and V3, but here is how I 
> handle INFORM's using V2c.  I simply set the type of message to 
> RESPONSE and send it straight back.
>
>   public synchronized void processPdu(
>       org.snmp4j.CommandResponderEvent aEvent) {
>     org.snmp4j.PDU vPDU = aEvent.getPDU();
>     switch(vPDU.getType()) {
>       case org.snmp4j.PDU.TRAP:
>       case org.snmp4j.PDU.V1TRAP:
>         newTrap(vPDU);
>         break;
>       case org.snmp4j.PDU.INFORM:
>         newTrap(vPDU);
>         try {
>           vPDU.setType(org.snmp4j.PDU.RESPONSE);
>           sendResponse(vPDU);
>         } catch (java.lang.Exception vException) {
>           mLogger.error(vException.getMessage(), vException);
>         }
>         break;
>     }
>   }
>
>
> At 12:55 AM 10/26/2005, Scott VanWart wrote:
>
>> Frank,
>>
>> This is what I am trying to do. If I reply with getBulk, the trap seems
>> to process properly, but it's slow. If I respond with
>> MessageDispatcher.returnResponsePdu it is very fast but the response
>> does not seem correct since I receive the trap 6 times.
>>
>> How should I properly be responding the INFORM?
>>
>> Thanks,
>> Scott
>>
>> private class SNMPResponder implements CommandResponder
>> {
>>         public synchronized void processPdu(CommandResponderEvent e)
>>         {
>>                 PDU command = null;
>>                 String payload = "";
>>                 String src = "";
>>
>>
>>                 try
>>                 {
>>                         command = e.getPDU();
>>                         //command.setType(PDU.INFORM);
>>                         Address source = e.getPeerAddress();
>>                         e.setProcessed(true);
>>
>>                         if (e.getMessageProcessingModel() ==
>> MessageProcessingModel.MPv3)
>>                         {
>>                                 //MultiThreadedMessageDispatcher md =
>> (MultiThreadedMessageDispatcher) e.getMessageDispatcher();
>>
>>
>>                                 // send response.
>>                                 UserTarget target = new UserTarget();
>>                                 target.setAddress(source);
>>
>> target.setVersion(SnmpConstants.version3);
>>                                 target.setSecurityName(new
>> OctetString(user));
>>
>> target.setSecurityLevel(SecurityLevel.AUTH_PRIV);
>>
>>                                 snmp.getBulk(command, target);
>>
>> -----Original Message-----
>> From: Frank Fock [mailto:fock at agentpp.com]
>> Sent: Tuesday, October 25, 2005 7:50 PM
>> To: Scott VanWart
>> Cc: snmp4j at agentpp.org
>> Subject: Re: [SNMP4J] SNMP4J V3 perfromance
>>
>> Hi Scott,
>>
>> Sorry, I do not see how the code snippet is related to that?
>>
>> Best regards,
>> Frank
>>
>> Scott VanWart wrote:
>>
>> >Hi Frank,
>> >
>> >I am not actually trying to send traps. I am trying to simply respond
>> to
>> >the Request that I receive. I am listening for Informs and not sending,
>> >but the Inform requires a respsonse. Is this not the correct way to do
>> >it? Should I be sending a GetBulk? The getBulk is Veerrrrry slow.
>> >
>> >Thanks,
>> >Scott
>> >
>> >-----Original Message-----
>> >From: Frank Fock [mailto:fock at agentpp.com]
>> >Sent: Wednesday, October 19, 2005 4:04 PM
>> >To: Scott VanWart
>> >Cc: snmp4j at agentpp.org
>> >Subject: Re: [SNMP4J] SNMP4J V3 perfromance
>> >
>> >Scott,
>> >
>> >You are sending SNMP requests while you are handling a trap event.
>> >While your are waiting for the response of your request, you are not
>> >able
>> >to handle any traps. I recommend therefore either sending an async
>> >request
>> >or using the MultiThreadedMessageDispatcherImpl as message disptacher.
>> >
>> >Best regards,
>> >Frank
>> >
>> >Scott VanWart wrote:
>> >
>> >
>> >
>> >>Frank,
>> >>
>> >>Is this the correct way to set the UDP Buffer size? And what number is
>> >>reasonable to handle roughly 600-1000 events per second? Should it be
>> >>400 X 1000 ?
>> >>
>> >>When you say decouple trap handling, I am not certain what you mean?
>> >>
>> >>Something like this?
>> >>
>> >>MessageDispatcher md = e.getMessageDispatcher();
>> >>
>> >>md.returnResponsePdu(e.getMessageProcessingModel(),e.getSecurityModel(
>> )
>> >>
>> >>
>> >,
>> >
>> >
>> >>e.getSecurityName(),  e.getSecurityLevel(), command,
>> >>e.getMaxSizeResponsePDU(), e.getStateReference(), null);
>> >>
>> >>
>> >>Thanks!
>> >>Scott
>> >>
>> >>-----Original Message-----
>> >>From: Frank Fock [mailto:fock at agentpp.com]
>> >>Sent: Wednesday, October 19, 2005 3:38 PM
>> >>To: Scott VanWart
>> >>Cc: snmp4j at agentpp.org
>> >>Subject: Re: [SNMP4J] SNMP4J V3 perfromance
>> >>
>> >>Hi Scott,
>> >>
>> >>You may check your UDP buffer size and you should probably decouple
>> >>trap handling with sending out a synchronous request.
>> >>
>> >>Best regards,
>> >>Frank
>> >>
>> >>Scott VanWart wrote:
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>>Hey Guys,
>> >>>
>> >>>
>> >>>
>> >>>I am having problems with performance using SNMP4J. I have verified
>> >>>
>> >>>
>> >>>
>> >>>
>> >>that
>> >>
>> >>
>> >>
>> >>
>> >>>the device I am working with it sending more than 1 trap (inform) per
>> >>>second, but all I seem to be able to receive is one event per second.
>> >>>Here is my code, does anything jump out? Is there something I need to
>> >>>set? Thanks!
>> >>>
>> >>>
>> >>>
>> >>>Thanks!
>> >>>
>> >>>Scott
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>try
>> >>>
>> >>>{
>> >>>
>> >>>command = e.getPDU();
>> >>>
>> >>>          Address source = e.getPeerAddress();
>> >>>
>> >>>          e.setProcessed(true);
>> >>>
>> >>>
>> >>>
>> >>>          if (e.getMessageProcessingModel() ==
>> >>>MessageProcessingModel.MPv3)
>> >>>
>> >>>          {
>> >>>
>> >>>                      // send response.
>> >>>
>> >>>                      UserTarget target = new UserTarget();
>> >>>
>> >>>                      target.setAddress(source);
>> >>>
>> >>>                      target.setVersion(SnmpConstants.version3);
>> >>>
>> >>>                      target.setSecurityName(new OctetString(user));
>> >>>
>> >>>
>> >>>target.setSecurityLevel(SecurityLevel.AUTH_PRIV);
>> >>>
>> >>>
>> >>>
>> >>>                      snmp.getBulk(command, target);
>> >>>
>> >>>          }
>> >>>
>> >>>
>> >>>
>> >>>          VariableBinding varBinding;
>> >>>
>> >>>          Variable var;
>> >>>
>> >>>
>> >>>
>> >>>          // discover how many variables exist
>> >>>
>> >>>          int length = command.size();
>> >>>
>> >>>
>> >>>
>> >>>          // loop through variables and put them ALL into payload.
>> >>>
>> >>>          for(int i = 0; i < length; i++)
>> >>>
>> >>>          {
>> >>>
>> >>>                      varBinding = command.get(i);
>> >>>
>> >>>                      var = varBinding.getVariable();
>> >>>
>> >>>                      payload += var.toString() + "\t";
>> >>>
>> >>>          }
>> >>>
>> >>>
>> >>>
>> >>>          // Get source address of Trap.
>> >>>
>> >>>          String test = source.toString();
>> >>>
>> >>>          int colon = test.indexOf('/');
>> >>>
>> >>>          src = test.substring(0, colon);
>> >>>
>> >>>
>> >>>
>> >>>          }
>> >>>
>> >>>catch (Exception pe)
>> >>>
>> >>>          {
>> >>>
>> >>>                      logger.error("Could not decrypt SNMP data:",
>> >>>pe);
>> >>>
>> >>>          }
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>_______________________________________________
>> >>>SNMP4J mailing list
>> >>>SNMP4J at agentpp.org
>> >>>http://lists.agentpp.org/mailman/listinfo/snmp4j
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>
>> >>
>> >>
>> >>
>> >
>> >
>> >
>> >
>>
>>
>> -- 
>> AGENT++
>> http://www.agentpp.com
>> http://www.mibexplorer.com
>> http://www.mibdesigner.com
>>
>>
>> _______________________________________________
>> SNMP4J mailing list
>> SNMP4J at agentpp.org
>> http://lists.agentpp.org/mailman/listinfo/snmp4j
>
>
>
> -Deon
> _____________________________________________________
> TruTeq Wireless (Pty) Ltd.  | Tel: +27 (0)12 667 1530
> http://www.truteq.co.za     | Fax: +27 (0)12 667 1531
> Wireless communications for remote machine management
>
> _______________________________________________
> SNMP4J mailing list
> SNMP4J at agentpp.org
> http://lists.agentpp.org/mailman/listinfo/snmp4j
>
>


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





More information about the SNMP4J mailing list