Hi Imene, Your understanding of SNMPv3 trap sending is not correct. SNMPv3 notifications (traps) are sent from a command responder entity and are therefore authoritative. That means, the sender (which is the command responder entity) uses its own security engine ID within the notification PDU.
The receiver (= command generator) then uses the security engine ID provided in the notification PDU to authentication/decrypt the notification. Therefore your setup should work already, except that you have not set the context name of the ScopedPDU object yet. Best regards Frank > On 06 Jan 2015, at 21:26, Boussour, Imene (6076618) <[email protected]> > wrote: > > Hello List, > > I am trying to send SNMP V3 Traps to a remote server (using a Trap monitor > software on windows) from my Java application, I use SNMP4j stack API. > My questions is around the engine ID, on the Trap receiver application we > need to create an SNMP V3 account with, username, auth protocol... but also a > Context Name. > On the SNMP4j side, there is multiple areas where we can define of set the > engineID: > 1 - USM usm = new USM(SecurityProtocols.getInstance().addDefaultProtocols(), > new OctetString(MPv3.createLocalEngineID()), 0); > 2- snmp.getUSM().addUser(mSecurityName, > OctetString.fromHexString("80:00:13:70:c0:a8:01:0d"), new > UsmUser(mSecurityName, mAuthProtocol, , mPrivProtocol, mPrivPassphrase)); > 3- UsmUser(mSecurityName, mAuthProtocol, , mPrivProtocol, mPrivPassphrase), > OctetString.fromHexString("80:00:13:70:c0:a8:01:0d")); > 4- > pdu.setContextEngineID(OctetString.fromHexString("80:00:13:70:c0:a8:01:0d")); > > For context Name , I only found this: > pdu.setContextName(new OctetString("contextName")); > > > The SNMP4J createlocalEngineId method creates a random number, Can this work? > My understanding of SNMP trap V3, is that the Engine ID should match on the > sender and receiver. So, when we specify a custom engine ID on SNMP4J, which > one should we use? > > And here is the Code I am using to send Traps: > > // ltargetAddress represents the host and port we plan to > communicate with > // in the format: host/port > Address ltargetAddress = GenericAddress.parse > (mTransportType + ":" + mRemoteAddress + "/" + mRemotePort); > > TransportMapping<?> transport; > if (ltargetAddress instanceof UdpAddress) { > transport = new DefaultUdpTransportMapping(); > } else { > transport = new DefaultTcpTransportMapping(); > } > > //Create SNMP Session > Snmp snmp = new Snmp(transport); > > USM usm = new USM(SecurityProtocols.getInstance() > .addDefaultProtocols(), new OctetString( > MPv3.createLocalEngineID()), 0); > > SecurityProtocols.getInstance().addPrivacyProtocol(new > PrivAES192()); > > SecurityModels.getInstance().addSecurityModel(usm); > > //transport.listen(); > > //Setting the security protocols > snmp.getUSM().addUser( > mSecurityName, > new UsmUser(mSecurityName, mAuthProtocol, > mAuthPassphrase, mPrivProtocol, > mPrivPassphrase)); > > > // Create Target > UserTarget target = new UserTarget(); > target.setAddress(ltargetAddress); > target.setRetries(1); > target.setTimeout(11500); > target.setVersion(SnmpConstants.version3); > target.setSecurityLevel(SecurityLevel.AUTH_PRIV); > target.setSecurityName(mSecurityName); > > // Create PDU for V3 > ScopedPDU pdu = new ScopedPDU(); > pdu.setType(ScopedPDU.TRAP); > > // Adding OIDs > pdu.add(new VariableBinding(SnmpConstants.sysUpTime, > new OctetString(new Date().toString()))); > > pdu.add(new VariableBinding(SnmpConstants.snmpTrapOID, > > SnmpConstants.linkDown)); > > pdu.add(new VariableBinding(new OID(mOID), new > OctetString(pMessage))); > > pdu.add(new VariableBinding(SnmpConstants.snmpTrapAddress, > > new IpAddress(mRemoteAddress))); > > //Send the PDU > snmp.listen(); > snmp.send(pdu, target); > snmp.close(); > > Thanks, > Imene > _______________________________________________ > SNMP4J mailing list > [email protected] > https://oosnmp.net/mailman/listinfo/snmp4j _______________________________________________ SNMP4J mailing list [email protected] https://oosnmp.net/mailman/listinfo/snmp4j
