SNMP v3 Troubleshooting

We has a problem adding a new device (APC UPS Model: Smart-UPS X 3000 with Web/SNMP Management Card) to MNIS using SNMP v3.

Testing our connection details using "snmpwalk " was successful, here we can see the output:

snmpwalk
$ snmpwalk -v3 -u 'userName' -a SHA -A 'myAuthPassword' -x DES -X 'myPrivPassword' -l AuthPriv APC_UPS_SMART_X_3000
SNMPv2-MIB::sysDescr.0 = STRING: APC Web/SNMP Management Card (MB:v4.0.1 PF:v5.1.7 PN:apc_hw05_aos_517.bin AF1:v5.1.7 AN1:apc_hw05_sumx_517.bin MN:AP9631 HR:05 SN: ZAXXXXXX MD:11/12/2012) (Embedded PowerNet SNMP Agent SW v2.2 compatible)
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.318.1.3.27
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (76275840) 8 days, 19:52:38.40
SNMPv2-MIB::sysContact.0 = STRING: Unknown
SNMPv2-MIB::sysName.0 = STRING: Unknown
SNMPv2-MIB::sysLocation.0 = STRING: Unknown
SNMPv2-MIB::sysServices.0 = INTEGER: 72
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORID.1 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.2 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
SNMPv2-MIB::sysORID.3 = OID: SNMP-MPD-MIB::snmpMPDCompliance

------8<-----------8<-----------


However, it was not possible to connect to the device from NMIS. NMIS log file (nmis.log) showed the following error during the collect process: 


nmis.log
------8<-----------8<-----------

 10-Jun-2019 11:05:26,nmis.pl::doCollect#1344Sys::open#453snmp::open#315[14378]<br>ERROR APC_UPS_SMART_X_3000 No response from remote host "APC_UPS_SMART_X_3000" during synchronization
 10-Jun-2019 11:05:26,nmis.pl::doCollect#1355[14378]<br>ERROR SNMP session open to APC_UPS_SMART_X_3000 failed: No response from remote host "APC_UPS_SMART_X_3000" during synchronization
 10-Jun-2019 11:05:26,nmis.pl::doCollect#1435[14378]<br>ERROR updateNodeInfo for APC_UPS_SMART_X_3000 failed: error=loadInfo failed for APC_UPS_SMART_X_3000: , snmp_error=, wmi_error=

------8<-----------8<-----------

As part of the debug process, we are using the following script to test the interaction between Net::SNMP and the device.

We also made sure that  "Crypt::DES" and "Digest::HMAC" packages were installed on our server.

SNMP Test script:

snmpTest.pl
#!/usr/bin/perl

use strict;
use warnings;
use Net::SNMP;
use Data::Dumper;

my $hostname = 'APC_UPS_SMART_X_3000'; # IP or hostname
my $username =  'myUserName';
my $authpasswd = 'myAuthPassword';
my $authproto = 'SHA';   # SHA | MD5
my $privpasswd ='myPrivPassword';
my $privproto = 'DES';   # DES | AES

my $port = '161';
my $maxmsgsize = '1472'; #range (484..65535)

(my $session, my $error) = Net::SNMP->session(
	                        -hostname      => $hostname,
	                        -port          => $port,
	                        -version       => 3,
	                        #-community	   => $community,   # v1/v2c
	                        -username      => $username,    # v3
	                        -authpassword  => $authpasswd,  # v3
	                        -authprotocol  => $authproto,   # v3
	                        -privpassword  => $privpasswd,  # v3
	                        -privprotocol  => $privproto,   # v3
	                        -debug		   => '0x10',
	                        -maxmsgsize    => $maxmsgsize,
);

if (!defined $session) {
printf "ERROR %s.\n", $error;
exit 1;
}

for (my $i=1; $i<10; $i++){
	print Dumper($session->get_next_request(-varbindlist => ["1.3.6.1.2.1.1.$i"]));
}


Script output:


debug: [978] Net::SNMP::Security::USM::_security_params(): securityLevel = 1
debug: [651] Net::SNMP::Transport::_new(): opened UDP/IPv4 socket [3]
debug: [440] Net::SNMP::Dispatcher::_event_insert(): created new head and tail [ARRAY(0x20741e8)]
debug: [687] Net::SNMP::Message::send(): transport address 10.150.0.21:161
debug: [2058] Net::SNMP::Message::_buffer_dump(): 63 bytes
[0000]  30 3D 02 01  03 30 10 02  04 46 3B DB  AE 02 02 05   0=...0...F;.....
[0016]  C0 04 01 04  02 01 03 04  10 30 0E 04  00 02 01 00   .........0......
[0032]  02 01 00 04  00 04 00 04  00 30 14 04  00 04 00 A0   .........0......
[0048]  0E 02 04 6C  CE 6E 54 02  01 00 02 01  00 30 00      ...l.nT......0.
debug: [200] Net::SNMP::Dispatcher::register(): added handler for descriptor [3]
debug: [462] Net::SNMP::Dispatcher::_event_insert(): modified tail [ARRAY(0x207b030)]
debug: [535] Net::SNMP::Dispatcher::_event_delete(): deleted [ARRAY(0x20741e8)], defined new head [ARRAY(0x207b030)]
debug: [596] Net::SNMP::Dispatcher::_event_handle(): event [ARRAY(0x207b030)], timeout = 4.9999
debug: [621] Net::SNMP::Dispatcher::_event_handle(): descriptor [3] ready for read
debug: [711] Net::SNMP::Message::recv(): transport address 10.150.0.21:161
debug: [2058] Net::SNMP::Message::_buffer_dump(): 119 bytes
[0000]  30 82 00 73  02 01 03 30  82 00 10 02  04 46 3B DB   0..s...0.....F;.
[0016]  AE 02 02 05  C0 04 01 00  02 01 03 04  1F 30 82 00   .............0..
[0032]  1B 04 0B 80  00 00 00 03  00 C0 B7 99  4E 34 02 01   ............N4..
[0048]  14 02 03 1A  30 5C 04 00  04 00 04 00  30 82 00 37   ....0\......0..7
[0064]  04 0B 80 00  00 00 03 00  C0 B7 99 4E  34 04 00 A8   ...........N4...
[0080]  82 00 24 02  04 6C CE 6E  54 02 01 00  02 01 00 30   ..$..l.nT......0
[0096]  82 00 14 30  82 00 10 06  0A 2B 06 01  06 03 0F 01   ...0.....+......
[0112]  01 04 00 41  02 2D F9                                ...A.-.
debug: [989] Net::SNMP::Security::USM::_engine_id_discovery(): engineID = 0x800000000300c0b7994e34
debug: [978] Net::SNMP::Security::USM::_security_params(): securityLevel = 3
debug: [965] Net::SNMP::PDU::_process_var_bind_list(): { 1.3.6.1.6.3.15.1.1.4.0 => Counter: 11769 }
error: [1064] Net::SNMP::PDU::_report_pdu_error(): Received usmStatsUnknownEngineIDs.0 Report-PDU with value 11769 <!--This errors can be safely ignored. But could be related to the syncronisation problem. Visit Ref. #4 in this wiki for more information ".-->
error: [299] Net::SNMP::MessageProcessing::prepare_data_elements(): Received usmStatsUnknownEngineIDs.0 Report-PDU with value 11769 
error: [398] Net::SNMP::Dispatcher::_transport_response_received(): Received usmStatsUnknownEngineIDs.0 Report-PDU with value 11769
debug: [517] Net::SNMP::Dispatcher::_event_delete(): deleted [ARRAY(0x207b030)], list is now empty
debug: [239] Net::SNMP::Dispatcher::deregister(): removed handler for descriptor [3]
error: [2520] Net::SNMP::__ANON__(): Received usmStatsUnknownEngineIDs.0 Report-PDU with value 11769 during discovery
debug: [440] Net::SNMP::Dispatcher::_event_insert(): created new head and tail [ARRAY(0x2073e88)]
debug: [687] Net::SNMP::Message::send(): transport address 10.150.0.21:161
debug: [2058] Net::SNMP::Message::_buffer_dump(): 124 bytes
[0000]  30 7A 02 01  03 30 10 02  04 47 82 FA  16 02 02 05   0z...0...G......
[0016]  C0 04 01 07  02 01 03 04  39 30 37 04  0B 80 00 00   ........907.....
[0032]  00 03 00 C0  B7 99 4E 34  02 01 00 02  01 00 04 0A   ......N4........
[0048]  55 50 73 5F  41 72 34 52  63 61 04 0C  35 20 78 B6   UPs_Ar4Rca..5 x.
[0064]  7C 8A BD D4  87 FB FA 75  04 08 00 00  00 00 2A 23   |......u......*#
[0080]  00 01 04 28  75 90 9C B4  56 33 B4 55  1B A1 7F 6F   ...(u...V3.U...o
[0096]  2B 79 9E 5C  BD 2F B5 0E  D9 82 E7 DE  D1 14 A4 BC   +y.\./..........
[0112]  AA EA 0E 42  37 6F 6B 87  80 6F 74 A1                ...B7ok..ot.
debug: [200] Net::SNMP::Dispatcher::register(): added handler for descriptor [3]
debug: [462] Net::SNMP::Dispatcher::_event_insert(): modified tail [ARRAY(0x2074038)]
debug: [535] Net::SNMP::Dispatcher::_event_delete(): deleted [ARRAY(0x2073e88)], defined new head [ARRAY(0x2074038)]
debug: [596] Net::SNMP::Dispatcher::_event_handle(): event [ARRAY(0x2074038)], timeout = 4.9998
debug: [621] Net::SNMP::Dispatcher::_event_handle(): descriptor [3] ready for read
debug: [711] Net::SNMP::Message::recv(): transport address 10.150.0.21:161
debug: [2058] Net::SNMP::Message::_buffer_dump(): 132 bytes
[0000]  30 82 00 80  02 01 03 30  82 00 10 02  04 47 82 FA   0......0.....G..
[0016]  16 02 02 05  C0 04 01 03  02 01 03 04  3D 30 82 00   ............=0..
[0032]  39 04 0B 80  00 00 00 03  00 C0 B7 99  4E 34 02 01   9...........N4..
[0048]  14 02 03 1A  30 5C 04 0A  55 50 73 5F  41 72 34 52   ....0\..UPs_Ar4R
[0064]  63 61 04 0C  76 72 A0 12  71 6E C5 84  9B E1 BA F6   ca..vr..qn......
[0080]  04 08 00 00  00 14 AC E2  CF 75 04 28  BB 63 79 EA   .........u.(.cy.
[0096]  E3 6B 8C 94  D6 11 8F EF  CA D0 0C C5  A3 14 65 12   .k............e.
[0112]  64 4B 9B BD  89 B3 60 1A  E8 C6 1C 5C  19 44 77 8D   dK....`....\.Dw.
[0128]  F3 42 3D AC                                          .B=.
debug: [1116] Net::SNMP::Security::USM::_authenticate_incoming_msg(): authentication passed <!--Indicates that authentication was successful.-->
debug: [1020] Net::SNMP::Security::USM::_synchronize(): update: engineBoots = 20, engineTime = 1716316
debug: [978] Net::SNMP::Security::USM::_security_params(): securityLevel = 3
debug: [1241] Net::SNMP::Security::USM::_decrypt_data(): privacy passed  <!-- Indicates that the crypto password was correct. -->
debug: [517] Net::SNMP::Dispatcher::_event_delete(): deleted [ARRAY(0x2074038)], list is now empty
debug: [239] Net::SNMP::Dispatcher::deregister(): removed handler for descriptor [3]
error: [2633] Net::SNMP::_discovery_synchronization_cb(): Time synchronization failed during discovery <!--Time synchronisation issue, explained next...-->
debug: [2636] Net::SNMP::_discovery_synchronization_cb(): synchronization failed
$VAR1 = undef;
ERROR Time synchronization failed during discovery.


Based on the RFC 3414 - User-based Security Model (USM) for version 3 of the Simple Network Management Protocol (SNMPv3), the Net::SNMP module uses the discovery process described in Section 4 of RFC 3414 when first communicating with a SNMPv3 agent. In this section, it is recommended that two distinct and intentionally invalid messages be sent for discovery, if authentication is being used. 

From RFC 3414 Section 4:

The User-based Security Model requires that a discovery process obtains sufficient information about other SNMP engines in order to communicate with them. Discovery requires an non-authoritative SNMP engine to learn the authoritative SNMP engine's snmpEngineID value before communication may proceed. This may be accomplished by generating a Request message with a securityLevel of noAuthNoPriv, a msgUserName of zero-length, a msgAuthoritativeEngineID value of zero length, and the varBindList left empty. The response to this message will be a Report message containing the snmpEngineID of the authoritative SNMP engine as the value of the msgAuthoritativeEngineID field within the msgSecurityParameters field. It contains a Report PDU with the usmStatsUnknownEngineIDs counter in the varBindList.

If authenticated communication is required, then the discovery process should also establish time synchronization with the authoritative SNMP engine. This may be accomplished by sending an authenticated Request message with the value of  msgAuthoritativeEngineID set to the newly learned snmpEngineID and with the values of msgAuthoritativeEngineBoots and msgAuthoritativeEngineTime set to zero. For an authenticated Request message, a valid userName must be used in the msgUserName field. The response to this authenticated message will be a Report message containing the up to date values of the authoritative SNMP engine's snmpEngineBoots and snmpEngineTime as the value of the msgAuthoritativeEngineBoots and msgAuthoritativeEngineTime fields respectively. It also contains the usmStatsNotInTimeWindows counter in the varBindList of the Report PDU...


The Net::SNMP module uses the procedure outline before to perform the discovery. 
In this case it looks like the APC UPS  does not enforce timeliness checking and is not responding with a usmStatsNotInTimeWindows Report-PDU during the discovery process. Causing the discovery process to return the error message and terminate the communication.

The work around is to edit the Net::SNMP Perl library as it has been detailed in this document: Perl Net::SNMP Error: Time synchronization failed during discovery

On Net::SNMP version 6.0.1 , we have to comment out the line: 2621 and from line 2631 to 2634. Replace line: 2620 with:


                            if ( $this->{_security}->discovered() )



The following output has been obtained by running the snmpTest.pl script again:


debug: [978] Net::SNMP::Security::USM::_security_params(): securityLevel = 1
debug: [651] Net::SNMP::Transport::_new(): opened UDP/IPv4 socket [3]
debug: [440] Net::SNMP::Dispatcher::_event_insert(): created new head and tail [ARRAY(0x129fcf0)]
debug: [687] Net::SNMP::Message::send(): transport address 10.150.0.21:161
debug: [2058] Net::SNMP::Message::_buffer_dump(): 63 bytes
[0000]  30 3D 02 01  03 30 10 02  04 2F 77 B4  22 02 02 05   0=...0.../w."...
[0016]  C0 04 01 04  02 01 03 04  10 30 0E 04  00 02 01 00   .........0......
[0032]  02 01 00 04  00 04 00 04  00 30 14 04  00 04 00 A0   .........0......
[0048]  0E 02 04 42  77 70 18 02  01 00 02 01  00 30 00      ...Bwp.......0.
debug: [200] Net::SNMP::Dispatcher::register(): added handler for descriptor [3]
debug: [462] Net::SNMP::Dispatcher::_event_insert(): modified tail [ARRAY(0x1215450)]
debug: [535] Net::SNMP::Dispatcher::_event_delete(): deleted [ARRAY(0x129fcf0)], defined new head [ARRAY(0x1215450)]
debug: [596] Net::SNMP::Dispatcher::_event_handle(): event [ARRAY(0x1215450)], timeout = 4.9999
debug: [621] Net::SNMP::Dispatcher::_event_handle(): descriptor [3] ready for read
debug: [711] Net::SNMP::Message::recv(): transport address 10.150.0.21:161
debug: [2058] Net::SNMP::Message::_buffer_dump(): 119 bytes
[0000]  30 82 00 73  02 01 03 30  82 00 10 02  04 2F 77 B4   0..s...0...../w.
[0016]  22 02 02 05  C0 04 01 00  02 01 03 04  1F 30 82 00   "............0..
[0032]  1B 04 0B 80  00 00 00 03  00 C0 B7 99  4E 34 02 01   ............N4..
[0048]  14 02 03 1B  F1 A6 04 00  04 00 04 00  30 82 00 37   ............0..7
[0064]  04 0B 80 00  00 00 03 00  C0 B7 99 4E  34 04 00 A8   ...........N4...
[0080]  82 00 24 02  04 42 77 70  18 02 01 00  02 01 00 30   ..$..Bwp.......0
[0096]  82 00 14 30  82 00 10 06  0A 2B 06 01  06 03 0F 01   ...0.....+......
[0112]  01 04 00 41  02 30 B1                                ...A.0.
debug: [989] Net::SNMP::Security::USM::_engine_id_discovery(): engineID = 0x800000000300c0b7994e34
debug: [978] Net::SNMP::Security::USM::_security_params(): securityLevel = 3
debug: [965] Net::SNMP::PDU::_process_var_bind_list(): { 1.3.6.1.6.3.15.1.1.4.0 => Counter: 12465 }
error: [1064] Net::SNMP::PDU::_report_pdu_error(): Received usmStatsUnknownEngineIDs.0 Report-PDU with value 12465
error: [299] Net::SNMP::MessageProcessing::prepare_data_elements(): Received usmStatsUnknownEngineIDs.0 Report-PDU with value 12465
error: [398] Net::SNMP::Dispatcher::_transport_response_received(): Received usmStatsUnknownEngineIDs.0 Report-PDU with value 12465
debug: [517] Net::SNMP::Dispatcher::_event_delete(): deleted [ARRAY(0x1215450)], list is now empty
debug: [239] Net::SNMP::Dispatcher::deregister(): removed handler for descriptor [3]
error: [2520] Net::SNMP::__ANON__(): Received usmStatsUnknownEngineIDs.0 Report-PDU with value 12465 during discovery
debug: [440] Net::SNMP::Dispatcher::_event_insert(): created new head and tail [ARRAY(0x129f990)]
debug: [687] Net::SNMP::Message::send(): transport address 10.150.0.21:161
debug: [2058] Net::SNMP::Message::_buffer_dump(): 124 bytes
[0000]  30 7A 02 01  03 30 10 02  04 19 13 D4  1A 02 02 05   0z...0..........
[0016]  C0 04 01 07  02 01 03 04  39 30 37 04  0B 80 00 00   ........907.....
[0032]  00 03 00 C0  B7 99 4E 34  02 01 00 02  01 00 04 0A   ......N4........
[0048]  55 50 73 5F  41 72 34 52  63 61 04 0C  B1 92 C6 96   UPs_Ar4Rca......
[0064]  D3 9A 99 01  8F 9F 53 B0  04 08 00 00  00 00 2A 23   ......S.......*#
[0080]  00 01 04 28  75 90 9C B4  56 33 B4 55  1B A1 7F 6F   ...(u...V3.U...o
[0096]  2B 79 9E 5C  01 5D D4 2D  91 66 90 02  23 4F 79 C5   +y.\.].-.f..#Oy.
[0112]  F8 7C 87 A3  3C C7 FD 6D  C6 50 F5 CD                .|..<..m.P..
debug: [200] Net::SNMP::Dispatcher::register(): added handler for descriptor [3]
debug: [462] Net::SNMP::Dispatcher::_event_insert(): modified tail [ARRAY(0x129fb40)]
debug: [535] Net::SNMP::Dispatcher::_event_delete(): deleted [ARRAY(0x129f990)], defined new head [ARRAY(0x129fb40)]
debug: [596] Net::SNMP::Dispatcher::_event_handle(): event [ARRAY(0x129fb40)], timeout = 4.9999
debug: [621] Net::SNMP::Dispatcher::_event_handle(): descriptor [3] ready for read
debug: [711] Net::SNMP::Message::recv(): transport address 10.150.0.21:161
debug: [2058] Net::SNMP::Message::_buffer_dump(): 132 bytes
[0000]  30 82 00 80  02 01 03 30  82 00 10 02  04 19 13 D4   0......0........
[0016]  1A 02 02 05  C0 04 01 03  02 01 03 04  3D 30 82 00   ............=0..
[0032]  39 04 0B 80  00 00 00 03  00 C0 B7 99  4E 34 02 01   9...........N4..
[0048]  14 02 03 1B  F1 A6 04 0A  55 50 73 5F  41 72 34 52   ........UPs_Ar4R
[0064]  63 61 04 0C  A0 27 5E FC  14 EB 07 2D  D6 90 E0 B8   ca...'^....-....
[0080]  04 08 00 00  00 14 AC E2  D3 82 04 28  3C 7F A3 EE   ...........(<...
[0096]  EF 2E 94 29  B5 9E 03 D2  F7 93 AA AA  80 8F AD F6   ...)............
[0112]  79 53 34 D4  18 F1 90 DB  98 21 DD DE  4F C3 4D 9A   yS4......!..O.M.
[0128]  36 E7 49 1F                                          6.I.
debug: [1116] Net::SNMP::Security::USM::_authenticate_incoming_msg(): authentication passed
debug: [1020] Net::SNMP::Security::USM::_synchronize(): update: engineBoots = 20, engineTime = 1831334
debug: [978] Net::SNMP::Security::USM::_security_params(): securityLevel = 3
debug: [1241] Net::SNMP::Security::USM::_decrypt_data(): privacy passed
debug: [517] Net::SNMP::Dispatcher::_event_delete(): deleted [ARRAY(0x129fb40)], list is now empty
debug: [239] Net::SNMP::Dispatcher::deregister(): removed handler for descriptor [3]
debug: [2624] Net::SNMP::_discovery_synchronization_cb(): discovery and synchronization complete
debug: [440] Net::SNMP::Dispatcher::_event_insert(): created new head and tail [ARRAY(0x129fcd8)]
debug: [687] Net::SNMP::Message::send(): transport address 10.150.0.21:161
debug: [2058] Net::SNMP::Message::_buffer_dump(): 135 bytes
[0000]  30 81 84 02  01 03 30 10  02 04 69 FF  2A C3 02 02   0.....0...i.*...
[0016]  05 C0 04 01  07 02 01 03  04 3B 30 39  04 0B 80 00   .........;09....
[0032]  00 00 03 00  C0 B7 99 4E  34 02 01 14  02 03 1B F1   .......N4.......
[0048]  A6 04 0A 55  50 73 5F 41  72 34 52 63  61 04 0C 6F   ...UPs_Ar4Rca..o
[0064]  22 17 84 AB  B1 02 50 F3  8A 04 96 04  08 00 00 00   ".....P.........
[0080]  14 2A 23 00  02 04 30 AE  1A 2A 8C 90  8D F2 33 C8   .*#...0..*....3.
[0096]  F6 DC 4B 6E  75 7F D1 82  3B 18 43 7E  08 CA 11 05   ..Knu...;.C~....
[0112]  0B 6E C5 02  1D 17 1E 1D  08 A7 99 BD  C8 93 5E 38   .n............^8
[0128]  4F 69 33 5F  4B E2 C1                                Oi3_K..
debug: [200] Net::SNMP::Dispatcher::register(): added handler for descriptor [3]
debug: [462] Net::SNMP::Dispatcher::_event_insert(): modified tail [ARRAY(0x12b1af8)]
debug: [535] Net::SNMP::Dispatcher::_event_delete(): deleted [ARRAY(0x129fcd8)], defined new head [ARRAY(0x12b1af8)]
debug: [596] Net::SNMP::Dispatcher::_event_handle(): event [ARRAY(0x12b1af8)], timeout = 4.9999
debug: [621] Net::SNMP::Dispatcher::_event_handle(): descriptor [3] ready for read
debug: [711] Net::SNMP::Message::recv(): transport address 10.150.0.21:161
debug: [2058] Net::SNMP::Message::_buffer_dump(): 366 bytes
[0000]  30 82 01 6A  02 01 03 30  82 00 10 02  04 69 FF 2A   0..j...0.....i.*
[0016]  C3 02 02 05  C0 04 01 03  02 01 03 04  3D 30 82 00   ............=0..
[0032]  39 04 0B 80  00 00 00 03  00 C0 B7 99  4E 34 02 01   9...........N4..
[0048]  14 02 03 1B  F1 A6 04 0A  55 50 73 5F  41 72 34 52   ........UPs_Ar4R
[0064]  63 61 04 0C  23 C2 A9 A9  95 AB 0E 23  66 BB 36 83   ca..#......#f.6.
[0080]  04 08 00 00  00 14 AC E2  D3 83 04 82  01 10 A9 16   ................
[0096]  CF 0D 1E 1A  CE D1 F1 E2  3E B5 69 A5  1D 0C B4 94   ........>.i.....
[0112]  82 C4 2C D7  D8 6D 7C DA  67 8D 50 16  8D D0 81 F1   ..,..m|.g.P.....
[0128]  7F C3 2C 56  A1 09 74 C6  9A 75 C7 84  27 F1 F5 A9   ..,V..t..u..'...
[0144]  D1 21 A2 41  65 4A AC 85  4C 36 DB 9C  BA 07 B2 1C   .!.AeJ..L6......
[0160]  D1 1D 41 DF  FC 5F A1 FB  50 6C FD B0  EA BC 86 2C   ..A.._..Pl.....,
[0176]  90 8B 78 80  80 33 26 D7  E9 EE DE B0  2D 35 AC 5B   ..x..3&.....-5.[
[0192]  CA 7F C5 22  5F 88 03 91  91 74 0F 43  4C 29 AF 7D   ..."_....t.CL).}
[0208]  C5 2F D0 B8  DA 68 A0 42  84 02 B0 44  75 28 E7 AD   ./...h.B...Du(..
[0224]  DB F7 1F 5D  25 2B 8F 04  BB 40 32 67  23 AE D7 4E   ...]%+...@2g#..N
[0240]  BD 0F BC ED  6A D3 88 7D  FE 1D 81 7A  81 19 11 77   ....j..}...z...w
[0256]  C8 75 80 03  85 7F 4D 0C  40 BD 8C 03  CD C3 FD A1   .u....M.@.......
[0272]  D6 FF 33 A3  94 34 53 B2  67 37 08 4D  23 0D F9 23   ..3..4S.g7.M#..#
[0288]  47 6C 31 EA  59 BC DF 4E  1E 8D E2 62  17 60 70 43   Gl1.Y..N...b.`pC
[0304]  4B 69 84 28  A7 EB 86 57  7E 8A 50 35  53 2C A8 9B   Ki.(...W~.P5S,..
[0320]  8D C5 1A 59  D3 FF B9 75  6B 4C 22 10  0A 3C 09 33   ...Y...ukL"..<.3
[0336]  46 27 8F FF  40 C9 A9 49  D2 34 F5 00  86 24 23 AC   F'..@..I.4...$#.
[0352]  CD CD 01 87  0F 6F 58 A7  62 61 B4 FF  41 71         .....oX.ba..Aq
debug: [1116] Net::SNMP::Security::USM::_authenticate_incoming_msg(): authentication passed
debug: [1039] Net::SNMP::Security::USM::_synchronize(): no update: engineBoots = 20, msgBoots = 20; latestTime = 1831334, msgTime = 1831334
debug: [1241] Net::SNMP::Security::USM::_decrypt_data(): privacy passed
debug: [1506] Net::SNMP::Message::_process_octet_string(): not translating OCTET STRING, all octets are allowed in a DisplayString
debug: [965] Net::SNMP::PDU::_process_var_bind_list(): { 1.3.6.1.2.1.1.1.0 => OCTET STRING: APC Web/SNMP Management Card (MB:v4.0.1 PF:v5.1.7 PN:apc_hw05_aos_517.bin AF1:v5.1.7 AN1:apc_hw05_sumx_517.bin MN:AP9999 HR:05 SN: ZAXXXXXXXXXX MD:01/01/2012) (Embedded PowerNet SNMP Agent SW v2.2 compatible) }
debug: [517] Net::SNMP::Dispatcher::_event_delete(): deleted [ARRAY(0x12b1af8)], list is now empty
debug: [239] Net::SNMP::Dispatcher::deregister(): removed handler for descriptor [3]
$VAR1 = {
          '1.3.6.1.2.1.1.1.0' => 'APC Web/SNMP Management Card (MB:v4.0.1 PF:v5.1.7 PN:apc_hw05_aos_517.bin AF1:v5.1.7 AN1:apc_hw05_sumx_517.bin MN:AP9999 HR:05 SN: ZAXXXXXXXXXX MD:01/01/2012) (Embedded PowerNet SNMP Agent SW v2.2 compatible)'
        };
------8<-----------8<-----------


As result we obtain the "sysDescr" (1.3.6.1.2.1.1.1.0):  APC Web/SNMP Management Card (MB:v4.0.1 PF:v5.1.7 PN:apc_hw05_aos_517.bin AF1:v5.1.7 AN1:apc_hw05_sumx_517.bin MN:AP9999 HR:05 SN: ZAXXXXXXXXXX MD:01/01/2012) (Embedded PowerNet SNMP Agent SW v2.2 compatible), confirming the successful communication using SNMP v3.

References:

  1. User-based Security Model (USM) for version 3 of the Simple Network Management Protocol (SNMPv3) - https://tools.ietf.org/html/rfc3414
  2. Bug #75191 for Net-SNMP: Synchronize in SNMPv3 - https://rt.cpan.org/Public/Bug/Display.html?id=75191 
  3. Bug #55088 for Net-SNMP: SNMPv3 Synchronization hangs with some agents and has one unnecessary packet exchange with net-snmp agent - https://rt.cpan.org/Public/Bug/Display.html?id=55088
  4. Reference record for OID 1.3.6.1.6.3.15.1.1.4 - http://oidref.com/1.3.6.1.6.3.15.1.1.4

Related Information: