The Simple Network Management Protocol (SNMP) is a common site in most networks. It not only provides a method that can be used for event notification but also can be used to maintain device statistics, set configuration parameters, and many other functions. This article takes a look at some of the basic SNMP concepts, how SNMP works, and how it can be configured to perform basic functions.
SNMP Concepts
SNMP is a protocol that operates at the application layer; it defines a method of communication between various networking devices and a central manager for use with the monitoring and management of these devices.
SNMP Components
There are three different components that are defined by SNMP:
- SNMP managerThe SNMP manager is a central system that is used to monitor traffic seen by the various SNMP agents as well as provide a mechanism for the control of these agents.
- SNMP agentThe SNMP agent is a software component that exists within a network element; this component is used to maintain real-time information about the elements operations. The agent is also used to communicate this information back to the central SNMP manager as well as perform control actions dictated by the SNMP manager.
- Management Information Base (MIB)The MIB is a virtual information storage location where network management information is held. Within the MIB are a number of different collections of objects that are related together (think database). Each of these collections contains a number of variables that can be altered by the SNMP agent and/or SNMP manager.
SNMP Versions
There are three different versions of SNMP that can be configured:
- SNMPv1This was the original version of SNMP; SNMPv1 utilizes a community based security mechanism.
- SNMPv2cThis was created to update a number of little things within SNMPv1; SNMPv2c utilizes a community based security mechanism.
- SNMPv3This
was developed to provide a much
higher level of security then
was provided by either previous
version. A couple different
security features are implemented
within the SNMPv3 standard;
these include:
- Message integrity
- Authentication
- Encryption
SNMP Security Models
When implementing SNMP, there are five different security models that can be implemented depending on the version of SNMP being used and the amount of security required. Table 1 below shows the different features of each available model and what authentication and encryption they support.
Table 1SNMP Security Models
Model |
Level |
Authentication |
Encryption |
v1 |
noAuthNoPriv |
Community String |
None |
v2c |
NoAuthNoPriv |
Community String |
None |
v3 |
NoAuthNoPriv |
Username |
None |
v3 |
AuthNoPriv |
MD5 or SHA |
None |
v3 |
AuthPriv |
MD5 or SHA |
DES, 3DES, AES |
SNMP Operations
Once the different elements within the network have been configured, they are able to provide a number of different operations that are used to provide the majority of the work done by SNMP. The available operations depend on what version of SNMP is being run on the network.
The following operations are available when using all of the available versions:
- GetThe Get operation is used by the SNMP manager to retrieve one or more object instances from the SNMP agent.
- GetNextThe GetNext operation is used by the SNMP manager to retrieve the next object instance from the SNMP agent.
- SetThe Set operation is used by the SNMP manager to set the value of an object instance on the SNMP agent.
The following operation was added in SNMPv2c:
- GetBulkThe GetBulk operation is used by the SNMP manager to efficiently retrieve large amounts (multiple rows) of data from the SNMP agent.
SNMP also defines different notification operations that can be used by the SNMP to notify the SNMP manager of a significant event. The following notification operation was defined in SNMPv1:
- TrapThe Trap notification operation is used to send an unacknowledged message from the SNMP agent to the SNMP manager.
The following notification operation was added in SNMPv2c:
- InformThe Inform notification operation is used to send an acknowledged message from the SNMP agent to the SNMP manager.
Note that while the Trap notification operation was defined in SNMPv1, the format of the Trap message was altered in SNMPv2c.
SNMP Configuration
Regardless of the version of SNMP implemented, there are a number of different parameters that are shared. The configuration of these parameters is shown in Table 2.
Table 2General SNMP Parameter Configuration
Step 1 |
Enter privileged mode |
router>enable |
Step 2 |
Enter global configuration mode |
router#configure terminal |
Step 3 |
Configure the SNMP contact information |
router(config)#snmp-server contact text |
Step 4 |
Configure the SNMP location information |
router(config)#snmp-server location text |
Step 5 |
Configure the SNMP chassis-id |
router(config)#snmp-server chassis-id number |
Step 6 |
Configure an SNMP view; a view can be used to limit the type of information that is accessible. |
router(config)#snmp-server view view-name oid-tree {included | excluded} |
Step 7 |
Exit configuration mode |
router(config)#end |
The configuration of how an SNMP agent communicated to the SNMP manager depends on the version of SNMP being implemented. SNMPv1 and SNMPv2c utilize community strings to authenticate with the SNMP agent and manager. The configuration required to setup this relationship between the SNMP agent and SNMP manager when implementing these versions is shown in Table 3.
Table 3SNMP v1/v2c Configuration
Step 1 |
Enter privileged mode |
router>enable |
Step 2 |
Enter global configuration mode |
router#configure terminal |
Step 3 |
Configure the SNMP community. The view-name is used to limit the variable that is accessible to those accessing the SNMP agent using a specific community string. The access-list-number refers to an access list that can contain a list of ip addresses of SNMP manager that are allowed to access the SNMP agent. |
router(config)#snmp-server community string [view view-name] [ro | rw] [access-list-number] |
Step 4 |
Exit configuration mode |
router(config)#end |
The configuration of a SNMPv3 agent is a bit more involved, as it requires the setup of users and groups that are used to authenticate with the SNMP manager. Another piece of information that is required when configuring this connection is the SNMPV3 EngineID of the remote host; this EngineID exists on each SNMPv3 element and is typically automatically created. The configuration required to setup when SNMPv3 is being implemented is shown in Table 4.
Table 4SNMP v3 Configuration
Step 1 |
Enter privileged mode |
router>enable |
Step 2 |
Enter global configuration mode |
router#configure terminal |
Step 3 |
Configure the remote EngineID of the SNMP manager |
router(config)#snmp-server engineID remote remote-ip-address remote-engineID |
|
Configure the SNMPv3 group |
router(config)#snmp-server group group-name v3 {auth | noauth | priv} [read read-view] [write write-view] [notify notify-view] |
Step 4 |
Configure the SNMPv3 user associated with the SNMP manager and its associated parameters |
router(config)#snmp-server user username groupname remote remote-ip-address [udp-port udp-port] v3 [encrypted] [auth {md5 | sha} auth-password] [priv {des | 3des | aes {128 | 192 |256}} priv-password] |
Step 5 |
Exit configuration mode |
router(config)#end |
The configuration that is required to set up the use of SNMP traps or informs is the same regardless of the version of SNMP being used. The configuration required to setup these on the SNMP agent are shown in Table 5.
Table SNMP Trap or Inform Configuration
Step 1 |
Enter privileged mode |
router>enable |
Step 2 |
Enter global configuration mode |
router#configure terminal |
Step 3 |
Configure the location where SNMP traps or informs will be sent. Traps are sent by default |
router(config)#snmp-server host host [traps | informs] [version {1 | 2c | 3 [auth | noauth | priv]}] {community-name | username} |
Step 4 |
Configuring the sending of traps or informs. Whether the SNMP agent sends traps or informs is configured with the snmp-server host command. |
router(config)#snmp enable traps [notification-type] |
Step 5 |
Exit configuration mode |
router(config)#end |
Summary
The deployment of SNMP has been a long time staple within the network of many organizations. What has not been as commonly deployed is the use of SNMPv3, as it does require a different type of configuration that is a bit more time consuming. If possible, a deployment or update to the use of SNMPv3 is recommended as it does provide a much more secure management solution. Hopefully, the information in this article has clearly shown the possibilities that are available when deploying SNMP and how the different versions differ from each other.