Hi,
I've been using SNMP4J 2.1.0 (with JDK 1.7.0_05 on a VM with RHEL
2.6.32-279.2.1.el6.x86_64) for a month or so now and have noticed an unusual
performance variation when running my trap-sender test program. One time it
will run in less than a second, the next time 10-30 seconds.
I reproduced the delay with org.snmp4j.tools.console.SnmpRequest using the
following command-line:
java -classpath \
$COMMON/lib/log4j.jar:\
$SNMP4J/snmp4j-2.1.0/dist/lib/SNMP4J.jar:\
org.snmp4j.tools.console.SnmpRequest \
-p TRAP \
-a MD5 \
-A myotherpassword \
-u myuser \
-v 3 \
-x DES \
-X mypassword \
localhost/162 \
"1.3.6.1.2.1.1.3.0={t}0" \
"1.3.6.1.6.3.1.1.4.1.0={o}1.3.6.1.6.3.1.1.5.1" \
"1.3.6.1.2.1.1.1.0={s}System XYZ, Version N.M"
I loaded the SNMP4J 2.1.0 source into Eclipse and started adding debug trace
statements. The delay, when it happens, was occurring in the Salt constructor
within the method call to sr.nextBytes(rnd).
protected Salt() {
byte[] rnd = new byte[8];
try {
SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
sr.nextBytes(rnd);
}...
I'm hacking here... but after reading the JDK Javadocs for SecureRandom, I
added the method call "sr.setSeed(rnd);" before the call to sr.nextBytes(rnd).
It seems to have fixed the delay; however, I don't know why and I'm not sure if
it causes other problems.
Is this a known problem? Is there a workaround or something I'm doing wrong?
Thanks
P.S. Here's the stdout. It shows a 14.5 second delay which happened before the
first line of debug trace:
0 [main] DEBUG org.snmp4j.security.Salt - Entering Salt()
9 [main] DEBUG org.snmp4j.security.Salt - calling sr.nextBytes(rnd)
14544 [main] DEBUG org.snmp4j.security.Salt - Initialized Salt to
3aba6a14e42fcf0f.
14551 [main] DEBUG org.snmp4j.security.UsmUserTable - Adding user myuser =
UsmUser[secName=myuser,authProtocol=1.3.6.1.6.3.10.1.1.2,authPassphrase=myotherpassword,privProtocol=1.3.6.1.6.3.10.1.2.2,privPassphrase=mypassword,localizationEngineID=null]
14554 [DefaultUDPTransportMapping_10.248.169.158/0] DEBUG
org.snmp4j.transport.DefaultUdpTransportMapping - UDP receive buffer size for
socket 10.248.169.158/0 is set to: 131072
14557 [main] DEBUG org.snmp4j.mp.MPv3 - Context engine ID of unconfirmed
scoped PDU is empty! Setting it to local engine ID
14559 [main] DEBUG org.snmp4j.security.USM -
getUser(engineID=80:00:13:70:01:0a:f8:a9:9e, securityName=myuser)
14634 [main] DEBUG org.snmp4j.security.AuthGeneric - MD5First digest:
c4:8f:bc:c9:59:c4:73:23:9a:03:81:00:19:5d:c2:ad
14634 [main] DEBUG org.snmp4j.security.AuthGeneric - MD5localized key:
fe:5e:bc:fe:09:13:ba:f4:02:ac:52:2d:3c:f8:bf:37
14687 [main] DEBUG org.snmp4j.security.AuthGeneric - MD5First digest:
eb:3a:d6:ba:92:94:41:a0:ff:64:08:3d:02:1c:07:f1
14688 [main] DEBUG org.snmp4j.security.AuthGeneric - MD5localized key:
8c:94:41:7b:6d:40:cb:d5:97:07:1a:31:76:eb:7d:96
14689 [main] DEBUG org.snmp4j.security.UsmUserTable - Adding user myuser =
UsmUser[secName=myuser,authProtocol=1.3.6.1.6.3.10.1.1.2,authPassphrase=fe:5e:bc:fe:09:13:ba:f4:02:ac:52:2d:3c:f8:bf:37,privProtocol=1.3.6.1.6.3.10.1.2.2,privPassphrase=8c:94:41:7b:6d:40:cb:d5:97:07:1a:31:76:eb:7d:96,localizationEngineID=80:00:13:70:01:0a:f8:a9:9e]
14690 [main] DEBUG org.snmp4j.security.USM - RFC3414 ยง3.1.4.a Outgoing message
needs to be encrypted
14690 [main] DEBUG org.snmp4j.security.PrivDES - Preparing decrypt_params.
14690 [main] DEBUG org.snmp4j.security.PrivDES - Preparing iv for encryption.
14871 [main] DEBUG org.snmp4j.security.PrivDES - Using padding.
14871 [main] DEBUG org.snmp4j.security.PrivDES - Encryption finished.
14872 [main] DEBUG org.snmp4j.mp.MPv3 - Adding cache entry:
StateReference[msgID=803982166,pduHandle=PduHandle[2091434141],securityEngineID=80:00:13:70:01:0a:f8:a9:9e,securityModel=org.snmp4j.security.USM@1b54a291,securityName=myuser,securityLevel=3,contextEngineID=80:00:13:70:01:0a:f8:a9:9e,contextName=,retryMsgIDs=null]
14873 [main] DEBUG org.snmp4j.transport.DefaultUdpTransportMapping - Sending
message to 127.0.0.1/162 with length 192:
30:81:bd:02:01:03:30:11:02:04:2f:eb:cb:56:02:03:00:ff:ff:04:01:03:02:01:03:04:33:30:31:04:09:80:00:13:70:01:0a:f8:a9:9e:02:01:00:02:01:00:04:06:6d:79:75:73:65:72:04:0c:05:50:9b:45:30:e5:99:85:fd:e8:91:24:04:08:00:00:00:00:e4:2f:cf:0f:04:70:6f:9e:d5:92:ae:bc:38:4f:d9:be:7e:7b:0e:0e:12:29:c6:44:8b:ed:90:cf:ec:82:8b:08:49:d5:9f:22:dc:eb:e7:31:17:86:5e:e8:16:d9:ff:ba:9d:48:1d:28:58:e7:eb:65:72:6f:a7:3e:13:a4:54:db:a4:30:6b:9b:46:8e:25:b6:3d:f4:6e:9f:95:a7:ac:31:62:6b:14:c4:ed:1c:42:e6:a2:43:70:12:87:88:7b:20:02:1a:af:ab:8e:2e:a5:7c:e7:5f:8d:3a:73:c7:30:71:40:f3:ce:35:8a:23
14873 [main] DEBUG org.snmp4j.transport.DefaultUdpTransportMapping -
Terminated worker task:
org.snmp4j.transport.DefaultUdpTransportMapping$ListenThread
14873 [main] DEBUG org.snmp4j.transport.DefaultUdpTransportMapping -
Interrupting worker task:
org.snmp4j.transport.DefaultUdpTransportMapping$ListenThread
14873 [DefaultUDPTransportMapping_10.248.169.158/0] DEBUG
org.snmp4j.transport.DefaultUdpTransportMapping - Worker task
stopped:org.snmp4j.transport.DefaultUdpTransportMapping$ListenThread
TRAP sent successfully
_______________________________________________
SNMP4J mailing list
[email protected]
http://lists.agentpp.org/mailman/listinfo/snmp4j