
The TCP/IP Guide - Version 3.0 (Contents) ` 1223 _ © 2001-2005 Charles M. Kozierok. All Rights Reserved.
Understanding SNMP's Information-Oriented Design
A network administrator needs to perform two basic types of actions: gather data about 
devices to learn how they are functioning, and give commands to devices to change how 
they are functioning. In the simplest terms, the first category can be considered like a “read” 
operation, and the second is comparable to a “write” operation.
A classical way of implementing this functionality is to define a communication protocol. 
Most such protocols are command-oriented—they consist of a specific set of commands to 
perform the “read” and “write” operations we mentioned above. For example, a network 
management protocol might have a read command such as “report on number of hours 
device has been in use”, and a write command such as “put this device into test mode”. The 
network manager would control the device by giving the appropriate commands.
A command-oriented management protocol has the advantage of simplicity: it's clear what 
the commands are for and how they are to be used. It can be reasonably well-suited for use 
in certain environments, but it doesn't work well on a large, heterogeneous TCP/IP inter-
network. The main reason for this is that command-orientation inextricably ties the protocol 
to the devices being managed. Consider:
☯ Every type of device might require a distinct set of commands. For example, the 
commands given to a router might need to be different than those given to a host. This 
would lead either to a proliferation of commands in the protocol, or to inflexibility in 
allowing proper management of different device types.
☯ Every time a company created a new type of device, or made a unique version of a 
type of device, the network management protocol would have to be changed.
☯ Whenever the operation of a kind of device changed, due perhaps to a change in 
another protocol, the management protocol would need to be updated.
☯ The protocol itself could not be easily changed without affecting a lot of hardware.
The solution to the problems of command-oriented management protocols was to use an 
information-oriented model. Instead of defining specific commands that interrogate or 
control devices, the devices are defined in terms of units of information that are to be 
exchanged between the devices and a management station. 
Instead of “read” commands and “write” commands, we have variables that can be “read” or 
“written”. Take the two examples mentioned earlier. Instead of a command like “report on a 
number of hours device has been in use”, the device keeps a variable called “number of 
hours in use” and the network management station can “read” this as one of many 
variables, with no need for a specific protocol command. Instead of a “write” command 
called “put this device into test mode”, the device has a variable called “current mode”. The 
network manager can change the mode of the device to “test” by changing the value of the 
variable.
This difference may seem subtle, but it in fact underlies every aspect of how SNMP works. I 
believe part of why the SNMP Framework is hard to understand is because insufficient 
emphasis is placed on looking at things in the “SNMP way”, which means thinking about 
information objects and not commands.