This document provides a brief overview of Simple Network Management Protocol (SNMP) and demonstrates how to test SNMP functionality on a Cisco Unified Computing System (UCS) C-Series Rack Server. You can also use it as a reference for basic SNMP troubleshooting.
SNMP is an Internet Engineering Task Force (IETF) industry standard defined by multiple requests for comments (RFCs). SNMP is used in Network Management Systems (NMSs) to monitor network devices. SNMP works at the application layer. The primary purpose of SNMP is to enable NMSs in order to obtain information from managed devices.
This document assumes that the NMS and all network devices have been configured correctly and have worked properly in the past.
The information in this document is based on these software and hardware versions:
SNMP
Cisco UCS C-Series Rack Servers
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, make sure that you understand the potential impact of any command.
Refer to Cisco Technical Tips Conventions for more information on document conventions.
The manager is the NMS, and the agent is the software that runs on the managed device. SNMP is used to carry the messages between managers and agents.
A management information base (MIB) is a collection of objects. There are two types of objects: scalar (single object) and tabular (multiple objects). An object is one or more characteristics or variables of a managed device. These characteristics are identified by an object identifier (OID). An OID is a numerical representation, separated by periods, of the object name and the instance ID. Scalar objects, such as sysDesc, always have an instance of 0. If the object is a column in a table, the instance ID is typically the index of the column. MIBs are structured in a tree format, and object IDs are derived from that tree.
Note: The sample output in this document was captured from a Cisco UCS C-Series Rack Server.
This example looks at the CISCO-UNIFIED-COMPUTING-PROCESSOR-MIB definition for the cucsProcessorUnitEntry.
cucsProcessorUnitEntry OBJECT-TYPE SYNTAX CucsProcessorUnitEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Entry for the cucsProcessorUnitTable table." INDEX { cucsProcessorUnitInstanceId } ::= { cucsProcessorUnitTable 1 } CucsProcessorUnitEntry ::= SEQUENCE { cucsProcessorUnitInstanceId CucsManagedObjectId, cucsProcessorUnitDn CucsManagedObjectDn, cucsProcessorUnitRn SnmpAdminString, cucsProcessorUnitArch CucsProcessorUnitArch, cucsProcessorUnitCores Gauge32, cucsProcessorUnitCoresEnabled Gauge32, cucsProcessorUnitId Gauge32, cucsProcessorUnitModel SnmpAdminString, cucsProcessorUnitOperState CucsEquipmentOperability, cucsProcessorUnitOperability CucsEquipmentOperability, cucsProcessorUnitPerf CucsEquipmentSensorThresholdStatus, cucsProcessorUnitPower CucsEquipmentPowerState, cucsProcessorUnitPresence CucsEquipmentPresence, cucsProcessorUnitRevision SnmpAdminString, cucsProcessorUnitSerial SnmpAdminString, cucsProcessorUnitSocketDesignation SnmpAdminString, cucsProcessorUnitSpeed INTEGER, cucsProcessorUnitStepping Gauge32, cucsProcessorUnitThermal CucsEquipmentSensorThresholdStatus, cucsProcessorUnitThreads Gauge32, cucsProcessorUnitVendor SnmpAdminString, cucsProcessorUnitVoltage CucsEquipmentSensorThresholdStatus, cucsProcessorUnitVisibility CucsMemoryVisibility, cucsProcessorUnitOperQualifierReason SnmpAdminString
cucsProcessorUnitEntry is not accessible, because it is a sequence or parent and is not tied to a specific instance. The objects are listed under the sequence or parent; it may be helpful to think of them as rows in a table. The objects correspond to specific OIDs (numeric object name + instance), which can be solicited individually for information. If you use the snmpwalk command on the sequence or parent, you receive replies for all the underlying objects. However, you need to use a translation tool in order to map the object name to the OIDs.
Note:
Syntax clause defines the format of the integer. For example, counter 32, counter 64, gauge 32, IP address, and so forth.
Max-access defines read-write, read-create, or no-access.
Description is self explanatory.
Index identifies the table ID.
For example, if you use the snmpwalk command on the cucsProcessorUnitOperStateObject, you see these results:
[root@localhost snmp]# snmpwalk -v2c -c public 14.17.2.121 .1.3.6.1.4.1.9.9.719.1.41.9.1.9 SNMPv2-SMI::enterprises.9.9.719.1.41.9.1.9.1 = INTEGER: 1 SNMPv2-SMI::enterprises.9.9.719.1.41.9.1.9.2 = INTEGER: 1
There are two replies to this request, because there are two processors in the server. The replies also reflect the two instances for cucsProcessorUnitOperState, one for each processor. The OID information is pulled for all objects of this type. In this example, the snmpwalk command used the path through the MIB tree. In order to translate this, you can load the MIBs locally or search for a tool that translates SNMP MIB objects and OIDs.
This example uses a translation tool in order to translate the OID:
.1.3.6.1.4.1.9.9.719.1.41.9.1.9 (path through the tree) cucsProcessorUnitOperState OBJECT-TYPE -- FROM CISCO-UNIFIED-COMPUTING-PROCESSOR-MIB -- TEXTUAL CONVENTION CucsEquipmentOperability SYNTAX Integer { unknown(0), operable(1), inoperable(2), degraded(3),poweredOff(4), powerProblem(5), removed(6), voltageProblem(7), thermalProblem(8), performanceProblem(9), accessibilityProblem(10), identityUnestablishable(11), biosPostTimeout(12), disabled(13), fabricConnProblem(51), fabricUnsupportedConn(52), config(81), equipmentProblem(82), decomissioning(83), chassisLimitExceeded(84), notSupported(100), discovery(101), discoveryFailed(102), identify(103), postFailure(104), upgradeProblem(105), peerCommProblem(106), autoUpgrade(107) } MAX-ACCESS read-only STATUS Current DESCRIPTION "Cisco UCS processor:Unit:operState managed object property" ::= { iso(1) org(3) dod(6) internet(1) private(4) enterprises(1) cisco(9) ciscoMgmt(9) ciscoUnifiedComputingMIB(719) ciscoUnifiedComputingMIBObjects(1) cucsProcessorObjects(41) cucsProcessorUnitTable(9) cucsProcessorUnitEntry(1) 9 }
Above the object type, you can see the path through the MIB tree that was used by the snmpwalk command. The response of 1 indicates that the processors are in an operable state.
In order to use the snmpwalk command on a PC, you may need to search for and install an application. You can also search for Windows GUI SNMP applications.
A Mac works natively.
There are packages available for Linux. For Centos or Redhat, Net-SNMP is a command-line application that tests SNMP functionality. In order to install Net-SNMP on Centos or Redhat, use this command:
yum install net-snmp-utils
Note: If you plan to load the MIBs in order to perform translations locally, create an snmp.conf file and include the desired MIBs.
Ensure the particular MIB is supported in the applicable version of code.
Verify the IP address of the managed device is reachable.
Ensure ports are open on firewalls.
Use Wireshark or TCPDump traces for response and malformed packet issues; filter on IP address and port (UDP port 161 for SNMP, UDP port 162 for recall traps).
There are many RFCs associated with SNMP; this is a partial list:
1155 – Structure and identification of management information for TCP/IP-based internets
1156 – Management information base for network management of TCP/IP-based internets (MIB I)
1157 – Simple network management protocol
1213 – Management information base for network management of TCP/IP-based internets (MIB II)
1441 – Introduction to version 2 of internet-standard network management framework
1452 – Coexistence between version 1 and version 2 of the internet-standard network management framework
2578 – Structure of Management Information Version 2
3414 – User-based Security Model for version 3 of the Simple Network Management Protocol
3584 – Coexistence between Version 1, Version 2, and Version 3 of the internet-standard network management protocol
Revision | Publish Date | Comments |
---|---|---|
1.0 |
12-Mar-2013 |
Initial Release |