[SNMP4J] Empty SNMP Packets send to Agent
Daniel Frank
d.frank at dnws-payment.com
Fri Dec 4 06:28:47 CET 2015
Hi,
Im trying to create a SNMP manager which retrieves informations from a
network device via
snmp v3. Unfortunately the sent SNMP packets are empty. I would appreciate
your help to find
my mistake.
The Manager code looks like this:
public class SNMPTest {
public static void main(String[] args) throws Exception {
LogFactory.setLogFactory(new Log4jLogFactory());
Snmp snmp = null;
try {
String Username = "ProvisionTest";
PDU pdu = new ScopedPDU();
USM usm = new USM(SecurityProtocols.getInstance(), new
OctetString(MPv3.createLocalEngineID()), 0);
SecurityModels.getInstance().addSecurityModel(usm);
snmp = new Snmp(new DefaultUdpTransportMapping());
snmp.getUSM().addUser(new OctetString(Username), new UsmUser(new
OctetString(Username), AuthSHA.ID, new OctetString(Username), PrivAES128.ID,
new OctetString(Username)));
VariableBinding varBind = new VariableBinding(new
OID("1.3.6.1.4.1.14179.2.2.1.1.30"));
ScopedPDU scopedPDU = (ScopedPDU) pdu;
scopedPDU.setType(PDU.GET);
scopedPDU.add(varBind);
UserTarget target = new UserTarget();
target.setAddress(new UdpAddress("172.16.0.1/161"));
target.setVersion(SnmpConstants.version3);
target.setRetries(1);
target.setTimeout(5000);
target.setSecurityLevel(SecurityLevel.AUTH_PRIV);
target.setSecurityName(new OctetString(Username));
snmp.listen();
ResponseEvent response = snmp.send(scopedPDU, target);
if (response.getResponse() != null) {
PDU responsePDU = response.getResponse();
if (responsePDU != null) {
if (responsePDU.getErrorStatus() == PDU.noError) {
return;
}
throw new Exception("Error: Request Failed, "
+ "Error Status = " +
responsePDU.getErrorStatus()
+ ", Error Index = " +
responsePDU.getErrorIndex()
+ ", Error Status Text = " +
responsePDU.getErrorStatusText());
}
}
throw new Exception("Error: Agent Timeout... ");
} catch (IOException e) {
throw new Exception(e.getMessage(), e);
} finally {
if (snmp != null) {
try {
snmp.close();
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
}
}
}
}
The debugging information from SNMP4J is this:
06:19:24.032 [main] DEBUG org.snmp4j.security.Salt - Initialized Salt to
45c5884912795475.
06:19:24.036 [main] DEBUG org.snmp4j.security.UsmUserTable - Adding user
ProvisionTest =
UsmUser[secName=ProvisionTest,authProtocol=1.3.6.1.6.3.10.1.1.3,authPassphra
se=ProvisionTest,privProtocol=1.3.6.1.6.3.10.1.2.4,privPassphrase=ProvisionT
est,localizationEngineID=null]
06:19:24.040 [DefaultUDPTransportMapping_0.0.0.0/0] DEBUG
org.snmp4j.transport.DefaultUdpTransportMapping - UDP receive buffer size
for socket 0.0.0.0/0 is set to: 8192
06:19:24.046 [main] DEBUG org.snmp4j.security.USM - RFC3414 §3.1.4.b
Outgoing message is not encrypted
06:19:24.047 [main] DEBUG org.snmp4j.mp.MPv3 - Adding cache entry:
StateReference[msgID=425278116,pduHandle=PduHandle[758631372],securityEngine
ID=,securityModel=org.snmp4j.security.USM at 23e028a9,securityName=ProvisionTes
t,securityLevel=1,contextEngineID=,contextName=,retryMsgIDs=null]
06:19:24.047 [main] DEBUG org.snmp4j.Snmp - Running pending sync request
with handle PduHandle[758631372] and retry count left 1
06:19:24.048 [main] DEBUG org.snmp4j.transport.DefaultUdpTransportMapping -
Sending message to 172.16.0.1/161 with length 61:
30:3b:02:01:03:30:11:02:04:19:59:3a:a4:02:03:00:ff:ff:04:01:04:02:01:03:04:1
0:30:0e:04:00:02:01:00:02:01:00:04:00:04:00:04:00:30:11:04:00:04:00:a0:0b:02
:01:00:02:01:00:02:01:00:30:00
06:19:29.047 [Timer-0] DEBUG org.snmp4j.security.USM - RFC3414 §3.1.4.b
Outgoing message is not encrypted
06:19:29.048 [Timer-0] DEBUG org.snmp4j.mp.MPv3 - Adding cache entry:
StateReference[msgID=425278117,pduHandle=PduHandle[758631372],securityEngine
ID=,securityModel=org.snmp4j.security.USM at 23e028a9,securityName=ProvisionTes
t,securityLevel=1,contextEngineID=,contextName=,retryMsgIDs=null]
06:19:29.048 [Timer-0] DEBUG org.snmp4j.mp.MPv3 - Adding previous message
IDs [425278116] to new entry
StateReference[msgID=425278117,pduHandle=PduHandle[758631372],securityEngine
ID=,securityModel=org.snmp4j.security.USM at 23e028a9,securityName=ProvisionTes
t,securityLevel=1,contextEngineID=,contextName=,retryMsgIDs=null]
06:19:29.048 [Timer-0] DEBUG org.snmp4j.Snmp - Running pending sync request
with handle PduHandle[758631372] and retry count left 0
06:19:29.049 [Timer-0] DEBUG org.snmp4j.transport.DefaultUdpTransportMapping
- Sending message to 172.16.0.1/161 with length 61:
30:3b:02:01:03:30:11:02:04:19:59:3a:a5:02:03:00:ff:ff:04:01:04:02:01:03:04:1
0:30:0e:04:00:02:01:00:02:01:00:04:00:04:00:04:00:30:11:04:00:04:00:a0:0b:02
:01:00:02:01:00:02:01:00:30:00
06:19:34.049 [Timer-0] DEBUG org.snmp4j.Snmp - Request timed out: 758631372
06:19:34.050 [main] DEBUG org.snmp4j.Snmp - Removed pending request with
handle: PduHandle[758631372]
06:19:34.051 [main] DEBUG org.snmp4j.transport.DefaultUdpTransportMapping -
Terminated worker task:
org.snmp4j.transport.DefaultUdpTransportMapping$ListenThread
06:19:34.051 [main] DEBUG org.snmp4j.transport.DefaultUdpTransportMapping -
Interrupting worker task:
org.snmp4j.transport.DefaultUdpTransportMapping$ListenThread
06:19:34.052 [DefaultUDPTransportMapping_0.0.0.0/0] DEBUG
org.snmp4j.transport.DefaultUdpTransportMapping - Worker task
stopped:org.snmp4j.transport.DefaultUdpTransportMapping$ListenThread
06:19:34.053 [main] DEBUG org.snmp4j.transport.DefaultUdpTransportMapping -
Joining worker task:
org.snmp4j.transport.DefaultUdpTransportMapping$ListenThread
And the snmp part of the packet sent to the agent looks like this in
wireshark:
Simple Network Management Protocol
msgVersion: snmpv3 (3)
msgGlobalData
msgID: 425278117
msgMaxSize: 65535
msgFlags: 04
.... .1.. = Reportable: Set
.... ..0. = Encrypted: Not set
.... ...0 = Authenticated: Not set
msgSecurityModel: USM (3)
msgAuthoritativeEngineID: <MISSING>
msgAuthoritativeEngineBoots: 0
msgAuthoritativeEngineTime: 0
msgUserName:
msgAuthenticationParameters: <MISSING>
msgPrivacyParameters: <MISSING>
msgData: plaintext (0)
plaintext
contextEngineID: <MISSING>
contextName:
data: get-request (0)
get-request
request-id: 0
error-status: noError (0)
error-index: 0
variable-bindings: 0 items
Would be perfect if someone could help.
Best regards,
Daniel
More information about the SNMP4J
mailing list