draft-ietf-snmpv2-proto-ds-03.txt   draft-ietf-snmpv2-proto-ds-04.txt 
Protocol Operations Protocol Operations
for Version 2 of the for Version 2 of the
Simple Network Management Protocol (SNMPv2) Simple Network Management Protocol (SNMPv2)
20 September 1995 | 11 October 1995 |
draft-ietf-snmpv2-proto-ds-03.txt | draft-ietf-snmpv2-proto-ds-04.txt |
Keith McCloghrie Keith McCloghrie
Editor + Editor +
Cisco Systems, Inc. Cisco Systems, Inc.
kzm@cisco.com kzm@cisco.com
Status of this Memo - Status of this Memo -
This document is an Internet-Draft. Internet-Drafts are working This document is an Internet-Draft. Internet-Drafts are working
documents of the Internet Engineering Task Force (IETF), its areas, and documents of the Internet Engineering Task Force (IETF), its areas, and
skipping to change at page 2, line 43 skipping to change at page 2, line 43
authorization policies. authorization policies.
It is the purpose of this document, Protocol Operations for SNMPv2, to It is the purpose of this document, Protocol Operations for SNMPv2, to
define the operations of the protocol with respect to the sending and define the operations of the protocol with respect to the sending and
receiving of the PDUs. receiving of the PDUs.
1.1. A Note on Terminology 1.1. A Note on Terminology
For the purpose of exposition, the original Internet-standard Network For the purpose of exposition, the original Internet-standard Network
Management Framework, as described in RFCs 1155, 1157, and 1212, is Management Framework, as described in RFCs 1155, 1157, and 1212, is
termed the SNMP version 1 framework (SNMPv1). The current framework is termed the SNMP version 1 framework (SNMPv1). The current framework is |
termed the SNMP version 2 framework (SNMPv2). termed the SNMP version 2 framework (SNMPv2), as described in [3]. |
2. Overview 2. Overview
2.1. Roles of Protocol Entities 2.1. Roles of Protocol Entities
A SNMPv2 entity may operate in a manager role or an agent role. A SNMPv2 entity may operate in a manager role or an agent role.
A SNMPv2 entity acts in an agent role when it performs SNMPv2 management A SNMPv2 entity acts in an agent role when it performs SNMPv2 management
operations in response to received SNMPv2 protocol messages (other than operations in response to received SNMPv2 protocol messages (other than
an inform notification) or when it sends trap notifications. an inform notification) or when it sends trap notifications.
A SNMPv2 entity acts in a manager role when it initiates SNMPv2 A SNMPv2 entity acts in a manager role when it initiates SNMPv2
management operations by the generation of SNMPv2 protocol messages or management operations by the generation of SNMPv2 protocol messages or
when it performs SNMPv2 management operations in response to received when it performs SNMPv2 management operations in response to received
trap or inform notifications. trap or inform notifications.
A SNMPv2 entity may support either or both roles, as dictated by its A SNMPv2 entity may support either or both roles, as dictated by its
implementation and configuration. Further, a SNMPv2 entity can also act implementation and configuration. Further, a SNMPv2 entity can also act
in the role of a proxy agent, in which it appears to be acting in an in the role of a proxy agent, in which it appears to be acting in an
agent role, but satisfies management requests by acting in a manager agent role, but satisfies management requests by acting in a manager
role with a remote entity. - role with a remote entity.
2.2. Management Information 2.2. Management Information
The term, variable, refers to an instance of a non-aggregate object type The term, variable, refers to an instance of a non-aggregate object type
defined according to the conventions set forth in the SMI [2] or the defined according to the conventions set forth in the SMI [2] or the
textual conventions based on the SMI [4]. The term, variable binding, textual conventions based on the SMI [4]. The term, variable binding,
normally refers to the pairing of the name of a variable and its normally refers to the pairing of the name of a variable and its
associated value. However, if certain kinds of exceptional conditions associated value. However, if certain kinds of exceptional conditions
occur during processing of a retrieval request, a variable binding will occur during processing of a retrieval request, a variable binding will
pair a name and an indication of that exception. pair a name and an indication of that exception.
skipping to change at page 4, line 38 skipping to change at page 4, line 38
under normal circumstances, to generate and transmit a response to the under normal circumstances, to generate and transmit a response to the
originator of the request. Whether or not a request should be originator of the request. Whether or not a request should be
retransmitted if no corresponding response is received in an appropriate retransmitted if no corresponding response is received in an appropriate
time interval, is at the discretion of the application originating the time interval, is at the discretion of the application originating the
request. This will normally depend on the urgency of the request. request. This will normally depend on the urgency of the request.
However, such an application needs to act responsibly in respect to the However, such an application needs to act responsibly in respect to the
frequency and duration of re-transmissions. frequency and duration of re-transmissions.
2.5. Message Sizes 2.5. Message Sizes
The maximum size of a SNMPv2 message is limited to the minimum of: | The maximum size of a SNMPv2 message is limited to the minimum of:
(1) the maximum message size which the destination SNMPv2 entity can (1) the maximum message size which the destination SNMPv2 entity can
accept; and, accept; and,
(2) the maximum message size which the source SNMPv2 entity can (2) the maximum message size which the source SNMPv2 entity can
generate. generate.
The former may be known on a per-recipient basis; and in the absence of | The former may be known on a per-recipient basis; and in the absence of |
such knowledge, is indicated by transport domain used when sending the | such knowledge, |
message. | is indicated by transport domain used when sending the message. The
The latter is imposed by implementation-specific local constraints. latter is imposed by implementation-specific local constraints.
Each transport mapping for the SNMPv2 indicates the minimum message size Each transport mapping for the SNMPv2 indicates the minimum message size
which a SNMPv2 implementation must be able to produce or consume. which a SNMPv2 implementation must be able to produce or consume.
Although implementations are encouraged to support larger values Although implementations are encouraged to support larger values
whenever possible, a conformant implementation must never generate whenever possible, a conformant implementation must never generate
messages larger than allowed by the receiving SNMPv2 entity. messages larger than allowed by the receiving SNMPv2 entity.
One of the aims of the GetBulkRequest-PDU, specified in this protocol, One of the aims of the GetBulkRequest-PDU, specified in this protocol,
is to minimize the number of protocol exchanges required to retrieve a is to minimize the number of protocol exchanges required to retrieve a
large amount of management information. As such, this PDU type allows a large amount of management information. As such, this PDU type allows a
SNMPv2 entity acting in a manager role to request that the response be SNMPv2 entity acting in a manager role to request that the response be
as large as possible given the constraints on message sizes. These as large as possible given the constraints on message sizes. These
constraints include the limits on the size of messages which the SNMPv2 constraints include the limits on the size of messages which the SNMPv2
entity acting in an agent role can generate, and the SNMPv2 entity entity acting in an agent role can generate, and the SNMPv2 entity
acting in a manager role can receive. acting in a manager role can receive.
However, it is possible that such maximum sized messages may be larger However, it is possible that such maximum sized messages may be larger
than the Path MTU of the path across the network traversed by the than the Path MTU of the path across the network traversed by the
messages. In this situation, such messages are subject to messages. In this situation, such messages are subject to
fragmentation. Fragmentation is generally considered to be harmful [5], | fragmentation. Fragmentation is generally considered to be harmful [5],
since among other problems, it leads to | since among other problems, it leads to a decrease in the reliability of
a decrease in the reliability of the transfer of the messages. Thus, a the transfer of the messages. Thus, a SNMPv2 entity which sends a
SNMPv2 entity which sends a GetBulkRequest-PDU must take care to set its GetBulkRequest-PDU must take care to set its parameters accordingly, so
parameters accordingly, so as to reduce the risk of fragmentation. In as to reduce the risk of fragmentation. In particular, under conditions
particular, under conditions of network stress, only small values should of network stress, only small values should be used for max-repetitions.
be used for max-repetitions.
2.6. Transport Mappings 2.6. Transport Mappings
It is important to note that the exchange of SNMPv2 messages requires It is important to note that the exchange of SNMPv2 messages requires
only an unreliable datagram service, with every message being entirely only an unreliable datagram service, with every message being entirely
and independently contained in a single transport datagram. Specific | and independently contained in a single transport datagram. Specific
transport mappings and encoding rules are specified elsewhere [6]. | transport mappings and encoding rules are specified elsewhere [6].
However, the preferred mapping is the use of the User Datagram Protocol | However, the preferred mapping is the use of the User Datagram Protocol
[7]. | [7].
3. Definitions 3. Definitions
SNMPv2-PDU DEFINITIONS ::= BEGIN SNMPv2-PDU DEFINITIONS ::= BEGIN
IMPORTS IMPORTS
ObjectName, ObjectSyntax, Integer32 ObjectName, ObjectSyntax, Integer32
FROM SNMPv2-SMI; FROM SNMPv2-SMI;
-- protocol data units -- protocol data units
skipping to change at page 6, line 36 skipping to change at page 6, line 36
response response
Response-PDU, Response-PDU,
set-request set-request
SetRequest-PDU, SetRequest-PDU,
inform-request inform-request
InformRequest-PDU, InformRequest-PDU,
snmpV2-trap snmpV2-trap
SNMPv2-Trap-PDU, | SNMPv2-Trap-PDU,
report | report
Report-PDU, | Report-PDU,
} }
-- PDUs -- PDUs
GetRequest-PDU ::= GetRequest-PDU ::=
[0] [0]
IMPLICIT PDU IMPLICIT PDU
GetNextRequest-PDU ::= GetNextRequest-PDU ::=
[1] [1]
IMPLICIT PDU IMPLICIT PDU
skipping to change at page 7, line 36 skipping to change at page 7, line 36
IMPLICIT BulkPDU IMPLICIT BulkPDU
InformRequest-PDU ::= InformRequest-PDU ::=
[6] [6]
IMPLICIT PDU IMPLICIT PDU
SNMPv2-Trap-PDU ::= SNMPv2-Trap-PDU ::=
[7] [7]
IMPLICIT PDU IMPLICIT PDU
-- Usage and precise semantics are defined elsewhere | -- Usage and precise semantics of Report-PDU are not presently |
Report-PDU ::= | -- defined. Any SNMP administrative framework making use of |
[8] | -- this PDU must define its usage and semantics. |
IMPLICIT PDU | Report-PDU ::=
[8]
IMPLICIT PDU
max-bindings max-bindings
INTEGER ::= 2147483647 INTEGER ::= 2147483647
PDU ::= PDU ::=
SEQUENCE { SEQUENCE {
request-id request-id
Integer32, Integer32,
error-status -- sometimes ignored error-status -- sometimes ignored
INTEGER { INTEGER {
skipping to change at page 12, line 17 skipping to change at page 12, line 17
In the elements of procedure below, any field of a PDU which is not In the elements of procedure below, any field of a PDU which is not
referenced by the relevant procedure is ignored by the receiving SNMPv2 referenced by the relevant procedure is ignored by the receiving SNMPv2
entity. However, all components of a PDU, including those whose values entity. However, all components of a PDU, including those whose values
are ignored by the receiving SNMPv2 entity, must have valid ASN.1 syntax are ignored by the receiving SNMPv2 entity, must have valid ASN.1 syntax
and encoding. For example, some PDUs (e.g., the GetRequest-PDU) are and encoding. For example, some PDUs (e.g., the GetRequest-PDU) are
concerned only with the name of a variable and not its value. In this concerned only with the name of a variable and not its value. In this
case, the value portion of the variable binding is ignored by the case, the value portion of the variable binding is ignored by the
receiving SNMPv2 entity. The unSpecified value is defined for use as receiving SNMPv2 entity. The unSpecified value is defined for use as
the value portion of such bindings. the value portion of such bindings.
On generating a management communication, | On generating a management communication, the message "wrapper" to
the message "wrapper" to encapsulate the PDU is generated according to | encapsulate the PDU is generated according to the "Elements of
the "Elements of Procedure" (see [3]). | Procedure" of the administrative framework in use is followed (for |
example, see [3]). |
While the definition of "max-bindings" does impose an upper-bound on the While the definition of "max-bindings" does impose an upper-bound on the
number of variable bindings, in practice, the size of a message is number of variable bindings, in practice, the size of a message is
limited only by constraints on the maximum message size -- it is not | limited only by constraints on the maximum message size -- it is not
limited by the number of variable bindings. | limited by the number of variable bindings.
On receiving a management communication, the "Elements of Procedure" | On receiving a management communication, the "Elements of Procedure" of |
(see [3]) is followed, and if those procedures indicate that the | the administrative framework in use is followed (for example, see [3]), |
operation contained within the message is to be performed locally, then | and if those procedures indicate that the operation contained within the
those procedures also indicate the MIB view which is visible to the | message is to be performed locally, then those procedures also indicate
operation. | the MIB view which is visible to the operation.
4.2.1. The GetRequest-PDU 4.2.1. The GetRequest-PDU
A GetRequest-PDU is generated and transmitted at the request of a SNMPv2 A GetRequest-PDU is generated and transmitted at the request of a SNMPv2
application. application.
Upon receipt of a GetRequest-PDU, the receiving SNMPv2 entity processes Upon receipt of a GetRequest-PDU, the receiving SNMPv2 entity processes
each variable binding in the variable-binding list to produce a each variable binding in the variable-binding list to produce a
Response-PDU. All fields of the Response-PDU have the same values as Response-PDU. All fields of the Response-PDU have the same values as
the corresponding fields of the received request except as indicated the corresponding fields of the received request except as indicated
skipping to change at page 13, line 20 skipping to change at page 13, line 21
listed above, then the Response-PDU is re-formatted with the same values listed above, then the Response-PDU is re-formatted with the same values
in its request-id and variable-bindings fields as the received in its request-id and variable-bindings fields as the received
GetRequest-PDU, with the value of its error-status field set to GetRequest-PDU, with the value of its error-status field set to
`genErr', and the value of its error-index field is set to the index of `genErr', and the value of its error-index field is set to the index of
the failed variable binding. the failed variable binding.
Otherwise, the value of the Response-PDU's error-status field is set to Otherwise, the value of the Response-PDU's error-status field is set to
`noError', and the value of its error-index field is zero. `noError', and the value of its error-index field is zero.
The generated Response-PDU is then encapsulated into a message. If the The generated Response-PDU is then encapsulated into a message. If the
size of the resultant message is less than or equal to both a local | size of the resultant message is less than or equal to both a local
constraint and the maximum message size of the originator, | constraint and the maximum message size of the originator, it is
it is transmitted to the originator of the GetRequest-PDU. transmitted to the originator of the GetRequest-PDU.
Otherwise, an alternate Response-PDU is generated. This alternate Otherwise, an alternate Response-PDU is generated. This alternate
Response-PDU is formatted with the same value in its request-id field as Response-PDU is formatted with the same value in its request-id field as
the received GetRequest-PDU, with the value of its error-status field the received GetRequest-PDU, with the value of its error-status field
set to `tooBig', the value of its error-index field set to zero, and an set to `tooBig', the value of its error-index field set to zero, and an
empty variable-bindings field. This alternate Response-PDU is then empty variable-bindings field. This alternate Response-PDU is then
encapsulated into a message. If the size of the resultant message is encapsulated into a message. If the size of the resultant message is
less than or equal to both a local constraint and the maximum message | less than or equal to both a local constraint and the maximum message
size of the originator, | size of the originator, it is transmitted to the originator of the
it is transmitted to the originator of the GetRequest-PDU. Otherwise, GetRequest-PDU. Otherwise, the snmpSilentDrops |
the snmpStatsSilentDrops [10] counter is incremented and the resultant | [10] counter is incremented and the resultant message is discarded.
message is discarded. |
4.2.2. The GetNextRequest-PDU 4.2.2. The GetNextRequest-PDU
A GetNextRequest-PDU is generated and transmitted at the request of a A GetNextRequest-PDU is generated and transmitted at the request of a
SNMPv2 application. SNMPv2 application.
Upon receipt of a GetNextRequest-PDU, the receiving SNMPv2 entity Upon receipt of a GetNextRequest-PDU, the receiving SNMPv2 entity
processes each variable binding in the variable-binding list to produce processes each variable binding in the variable-binding list to produce
a Response-PDU. All fields of the Response-PDU have the same values as a Response-PDU. All fields of the Response-PDU have the same values as
the corresponding fields of the received request except as indicated the corresponding fields of the received request except as indicated
skipping to change at page 14, line 30 skipping to change at page 14, line 30
listed above, then the Response-PDU is re-formatted with the same values listed above, then the Response-PDU is re-formatted with the same values
in its request-id and variable-bindings fields as the received in its request-id and variable-bindings fields as the received
GetNextRequest-PDU, with the value of its error-status field set to GetNextRequest-PDU, with the value of its error-status field set to
`genErr', and the value of its error-index field is set to the index of `genErr', and the value of its error-index field is set to the index of
the failed variable binding. the failed variable binding.
Otherwise, the value of the Response-PDU's error-status field is set to Otherwise, the value of the Response-PDU's error-status field is set to
`noError', and the value of its error-index field is zero. `noError', and the value of its error-index field is zero.
The generated Response-PDU is then encapsulated into a message. If the The generated Response-PDU is then encapsulated into a message. If the
size of the resultant message is less than or equal to both a local | size of the resultant message is less than or equal to both a local
constraint and the maximum message size of the originator, | constraint and the maximum message size of the originator, it is
it is transmitted to the originator of the GetNextRequest-PDU. transmitted to the originator of the GetNextRequest-PDU.
Otherwise, an alternate Response-PDU is generated. This alternate Otherwise, an alternate Response-PDU is generated. This alternate
Response-PDU is formatted with the same values in its request-id field Response-PDU is formatted with the same values in its request-id field
as the received GetNextRequest-PDU, with the value of its error-status as the received GetNextRequest-PDU, with the value of its error-status
field set to `tooBig', the value of its error-index field set to zero, field set to `tooBig', the value of its error-index field set to zero,
and an empty variable-bindings field. This alternate Response-PDU is and an empty variable-bindings field. This alternate Response-PDU is
then encapsulated into a message. If the size of the resultant message then encapsulated into a message. If the size of the resultant message
is less than or equal to both a local constraint and the maximum message | is less than or equal to both a local constraint and the maximum message
size of the originator, | size of the originator, it is transmitted to the originator of the
it is transmitted to the originator of the GetNextRequest-PDU. GetNextRequest-PDU. Otherwise, the snmpSilentDrops |
Otherwise, the snmpStatsSilentDrops [10] counter is incremented and the | [10] counter is incremented and the resultant message is discarded.
resultant message is discarded. |
4.2.2.1. Example of Table Traversal 4.2.2.1. Example of Table Traversal
An important use of the GetNextRequest-PDU is the traversal of An important use of the GetNextRequest-PDU is the traversal of
conceptual tables of information within a MIB. The semantics of this conceptual tables of information within a MIB. The semantics of this
type of request, together with the method of identifying individual type of request, together with the method of identifying individual
instances of objects in the MIB, provides access to related objects in instances of objects in the MIB, provides access to related objects in
the MIB as if they enjoyed a tabular organization. the MIB as if they enjoyed a tabular organization.
In the protocol exchange sketched below, a SNMPv2 application retrieves In the protocol exchange sketched below, a SNMPv2 application retrieves
the media-dependent physical address and the address-mapping type for | the media-dependent physical address and the address-mapping type for
each entry in the IP net-to-media Address Translation Table [8] | each entry in the IP net-to-media Address Translation Table [8] of a
of a particular network element. It also retrieves the value of | particular network element. It also retrieves the value of sysUpTime
sysUpTime [10], at which the mappings existed. | [10], at which the mappings existed. Suppose that the agent's IP net-
Suppose that the agent's IP net-to-media table has three entries: to-media table has three entries:
Interface-Number Network-Address Physical-Address Type Interface-Number Network-Address Physical-Address Type
1 10.0.0.51 00:00:10:01:23:45 static 1 10.0.0.51 00:00:10:01:23:45 static
1 9.2.3.4 00:00:10:54:32:10 dynamic 1 9.2.3.4 00:00:10:54:32:10 dynamic
2 10.0.0.15 00:00:10:98:76:54 dynamic 2 10.0.0.15 00:00:10:98:76:54 dynamic
The SNMPv2 entity acting in a manager role begins by sending a The SNMPv2 entity acting in a manager role begins by sending a
GetNextRequest-PDU containing the indicated OBJECT IDENTIFIER values as GetNextRequest-PDU containing the indicated OBJECT IDENTIFIER values as
the requested variable names: the requested variable names:
skipping to change at page 18, line 36 skipping to change at page 18, line 32
the last lexicographic successor, or if there are no lexicographic the last lexicographic successor, or if there are no lexicographic
successors, to the (N + r)-th variable binding's name in the successors, to the (N + r)-th variable binding's name in the
request. request.
While the maximum number of variable bindings in the Response-PDU is While the maximum number of variable bindings in the Response-PDU is
bounded by N + (M * R), the response may be generated with a lesser bounded by N + (M * R), the response may be generated with a lesser
number of variable bindings (possibly zero) for either of three reasons. number of variable bindings (possibly zero) for either of three reasons.
(1) If the size of the message encapsulating the Response-PDU (1) If the size of the message encapsulating the Response-PDU
containing the requested number of variable bindings would be containing the requested number of variable bindings would be
greater than either a local constraint or the maximum message size | greater than either a local constraint or the maximum message size
of the originator, then the response is generated with a lesser | of the originator, then the response is generated with a lesser
number of variable bindings. | number of variable bindings. This lesser number is the ordered set
This lesser number is the ordered set of variable bindings with of variable bindings with some of the variable bindings at the end
some of the variable bindings at the end of the set removed, such of the set removed, such that the size of the message encapsulating
that the size of the message encapsulating the Response-PDU is | the Response-PDU is approximately equal to but no greater than
approximately equal to but no greater than either a local | either a local constraint or the maximum message size of the
constraint or the maximum message size of the originator. | originator. Note that the number of variable bindings removed has
Note that the number of variable bindings removed has no no relationship to the values of N, M, or R.
relationship to the values of N, M, or R.
(2) The response may also be generated with a lesser number of variable (2) The response may also be generated with a lesser number of variable
bindings if for some value of iteration i, such that i is greater bindings if for some value of iteration i, such that i is greater
than zero and less than or equal to M, that all of the generated than zero and less than or equal to M, that all of the generated
variable bindings have the value field set to the `endOfMibView'. variable bindings have the value field set to the `endOfMibView'.
In this case, the variable bindings may be truncated after the (N + In this case, the variable bindings may be truncated after the (N +
(i * R))-th variable binding. (i * R))-th variable binding.
(3) In the event that the processing of a request with many repetitions (3) In the event that the processing of a request with many repetitions
requires a significantly greater amount of processing time than a requires a significantly greater amount of processing time than a
skipping to change at page 19, line 28 skipping to change at page 19, line 24
GetBulkRequest-PDU, with the value of its error-status field set to GetBulkRequest-PDU, with the value of its error-status field set to
`genErr', and the value of its error-index field is set to the index of `genErr', and the value of its error-index field is set to the index of
the variable binding in the original request which corresponds to the the variable binding in the original request which corresponds to the
failed variable binding. failed variable binding.
Otherwise, the value of the Response-PDU's error-status field is set to Otherwise, the value of the Response-PDU's error-status field is set to
`noError', and the value of its error-index field to zero. `noError', and the value of its error-index field to zero.
The generated Response-PDU (possibly with an empty variable-bindings The generated Response-PDU (possibly with an empty variable-bindings
field) is then encapsulated into a message. If the size of the field) is then encapsulated into a message. If the size of the
resultant message is less than or equal to both a local constraint and | resultant message is less than or equal to both a local constraint and
the maximum message size of the originator, | the maximum message size of the originator, it is transmitted to the
it is transmitted to the originator of the GetBulkRequest-PDU. originator of the GetBulkRequest-PDU. Otherwise, the snmpSilentDrops |
Otherwise, the snmpStatsSilentDrops [10] counter is incremented and the | [10] counter is incremented and the resultant message is discarded.
resultant message is discarded. |
4.2.3.1. Another Example of Table Traversal 4.2.3.1. Another Example of Table Traversal
This example demonstrates how the GetBulkRequest-PDU can be used as an This example demonstrates how the GetBulkRequest-PDU can be used as an
alternative to the GetNextRequest-PDU. The same traversal of the IP alternative to the GetNextRequest-PDU. The same traversal of the IP
net-to-media table as shown in Section 4.2.2.1 is achieved with fewer net-to-media table as shown in Section 4.2.2.1 is achieved with fewer
exchanges. exchanges.
The SNMPv2 entity acting in a manager role begins by sending a The SNMPv2 entity acting in a manager role begins by sending a
GetBulkRequest-PDU with the modest max-repetitions value of 2, and GetBulkRequest-PDU with the modest max-repetitions value of 2, and
skipping to change at page 21, line 8 skipping to change at page 21, line 4
GetRequest-PDU, GetNextRequest-PDU, GetBulkRequest-PDU, SetRequest-PDU, GetRequest-PDU, GetNextRequest-PDU, GetBulkRequest-PDU, SetRequest-PDU,
or InformRequest-PDU, as described elsewhere in this document. or InformRequest-PDU, as described elsewhere in this document.
If the error-status field of the Response-PDU is non-zero, the value If the error-status field of the Response-PDU is non-zero, the value
fields of the variable bindings in the variable binding list are fields of the variable bindings in the variable binding list are
ignored. ignored.
If both the error-status field and the error-index field of the If both the error-status field and the error-index field of the
Response-PDU are non-zero, then the value of the error-index field is Response-PDU are non-zero, then the value of the error-index field is
the index of the variable binding (in the variable-binding list of the the index of the variable binding (in the variable-binding list of the
corresponding request) for which the request failed. The first variable corresponding request) for which the request failed. The first variable
binding in a request's variable-binding list is index one, the second is binding in a request's variable-binding list is index one, the second is
index two, etc. index two, etc.
A compliant SNMPv2 entity acting in a manager role must be able to A compliant SNMPv2 entity acting in a manager role must be able to
properly receive and handle a Response-PDU with an error-status field properly receive and handle a Response-PDU with an error-status field
equal to `noSuchName', `badValue', or `readOnly'. (See Section 3.1.2 of | equal to `noSuchName', `badValue', or `readOnly'. (See Section 3.1.2 of
[9].) | [9].)
Upon receipt of a Response-PDU, the receiving SNMPv2 entity presents its Upon receipt of a Response-PDU, the receiving SNMPv2 entity presents its
contents to the SNMPv2 application which generated the request with the contents to the SNMPv2 application which generated the request with the
same request-id value. same request-id value.
4.2.5. The SetRequest-PDU 4.2.5. The SetRequest-PDU
A SetRequest-PDU is generated and transmitted at the request of a SNMPv2 A SetRequest-PDU is generated and transmitted at the request of a SNMPv2
application. application.
Upon receipt of a SetRequest-PDU, the receiving SNMPv2 entity determines Upon receipt of a SetRequest-PDU, the receiving SNMPv2 entity determines
the size of a message encapsulating a Response-PDU having the same the size of a message encapsulating a Response-PDU having the same
values in its request-id and variable-bindings fields as the received values in its request-id and variable-bindings fields as the received
SetRequest-PDU, and the largest possible sizes of the error-status and SetRequest-PDU, and the largest possible sizes of the error-status and
error-index fields. If the determined message size is greater than | error-index fields. If the determined message size is greater than
either a local constraint or the maximum message size of the originator, | either a local constraint or the maximum message size of the originator,
then an alternate Response-PDU is generated, transmitted to the then an alternate Response-PDU is generated, transmitted to the
originator of the SetRequest-PDU, and processing of the SetRequest-PDU originator of the SetRequest-PDU, and processing of the SetRequest-PDU
terminates immediately thereafter. This alternate Response-PDU is terminates immediately thereafter. This alternate Response-PDU is
formatted with the same values in its request-id field as the received formatted with the same values in its request-id field as the received
SetRequest-PDU, with the value of its error-status field set to SetRequest-PDU, with the value of its error-status field set to
`tooBig', the value of its error-index field set to zero, and an empty `tooBig', the value of its error-index field set to zero, and an empty
variable-bindings field. This alternate Response-PDU is then variable-bindings field. This alternate Response-PDU is then
encapsulated into a message. If the size of the resultant message is encapsulated into a message. If the size of the resultant message is
less than or equal to both a local constraint and the maximum message | less than or equal to both a local constraint and the maximum message
size of the originator, | size of the originator, it is transmitted to the originator of the
it is transmitted to the originator of the SetRequest-PDU. Otherwise, SetRequest-PDU. Otherwise, the snmpSilentDrops |
the snmpStatsSilentDrops [10] counter is incremented and the resultant | [10] counter is incremented and the resultant message is discarded.
message is discarded. |
Regardless, processing of the SetRequest-PDU terminates. Regardless, processing of the SetRequest-PDU terminates.
Otherwise, the receiving SNMPv2 entity processes each variable binding Otherwise, the receiving SNMPv2 entity processes each variable binding
in the variable-binding list to produce a Response-PDU. All fields of in the variable-binding list to produce a Response-PDU. All fields of
the Response-PDU have the same values as the corresponding fields of the the Response-PDU have the same values as the corresponding fields of the
received request except as indicated below. received request except as indicated below.
The variable bindings are conceptually processed as a two phase The variable bindings are conceptually processed as a two phase
operation. In the first phase, each variable binding is validated; if operation. In the first phase, each variable binding is validated; if
all validations are successful, then each variable is altered in the all validations are successful, then each variable is altered in the
second phase. Of course, implementors are at liberty to implement second phase. Of course, implementors are at liberty to implement
either the first, or second, or both, of these conceptual phases as | either the first, or second, or both, of these conceptual phases as
multiple implementation phases. | multiple implementation phases. Indeed, such multiple implementation
Indeed, such multiple implementation phases may be necessary in some phases may be necessary in some cases to ensure consistency.
cases to ensure consistency.
The following validations are performed in the first phase on each The following validations are performed in the first phase on each
variable binding until they are all successful, or until one fails: variable binding until they are all successful, or until one fails:
(1) If the variable binding's name specifies an existing or non- (1) If the variable binding's name specifies an existing or non-
existent variable to which this request is/would be denied access existent variable to which this request is/would be denied access
because it is/would not be in the appropriate MIB view, then the because it is/would not be in the appropriate MIB view, then the
value of the Response-PDU's error-status field is set to value of the Response-PDU's error-status field is set to
`noAccess', and the value of its error-index field is set to the `noAccess', and the value of its error-index field is set to the
index of the failed variable binding. index of the failed variable binding.
skipping to change at page 25, line 5 skipping to change at page 24, line 47
way out in an implementation. way out in an implementation.
Finally, the generated Response-PDU is encapsulated into a message, and Finally, the generated Response-PDU is encapsulated into a message, and
transmitted to the originator of the SetRequest-PDU. transmitted to the originator of the SetRequest-PDU.
4.2.6. The SNMPv2-Trap-PDU 4.2.6. The SNMPv2-Trap-PDU
A SNMPv2-Trap-PDU is generated and transmitted by a SNMPv2 entity acting A SNMPv2-Trap-PDU is generated and transmitted by a SNMPv2 entity acting
in an agent role when an exceptional situation occurs. in an agent role when an exceptional situation occurs.
The destination(s) to which a SNMPv2-Trap-PDU is sent is determined in | The destination(s) to which a SNMPv2-Trap-PDU is sent is determined in
an implementation-dependent fashion by the SNMPv2 entity. The first two | an implementation-dependent fashion by the SNMPv2 entity. The first two
variable bindings in the variable binding list of an SNMPv2-Trap-PDU are |
sysUpTime.0 [10] and snmpTrapOID.0 [10] respectively. | variable bindings in the variable binding list of an SNMPv2-Trap-PDU are
If the OBJECTS clause is present in the invocation of the corresponding sysUpTime.0 [10] and snmpTrapOID.0 [10] respectively. If the OBJECTS
NOTIFICATION-TYPE macro, then each corresponding variable, as | clause is present in the invocation of the corresponding NOTIFICATION-
instantiated by this notification, is copied, | TYPE macro, then each corresponding variable, as instantiated by this
in order, to the variable-bindings field. If any additional variables | notification, is copied, in order, to the variable-bindings field. If
are being included (at the option of the generating SNMPv2 entity), | any additional variables are being included (at the option of the
then each is copied to the variable-bindings field. generating SNMPv2 entity), then each is copied to the variable-bindings
field.
4.2.7. The InformRequest-PDU 4.2.7. The InformRequest-PDU
An InformRequest-PDU is generated and transmitted at the request of an | An InformRequest-PDU is generated and transmitted at the request of an
application in a SNMPv2 entity acting in a manager role, | application in a SNMPv2 entity acting in a manager role, that wishes to
that wishes to notify another application (in a SNMPv2 entity also notify another application (in a SNMPv2 entity also acting in a manager
acting in a manager role) of information in a MIB view which is remote | role) of information in a MIB view which is remote to the receiving
to the receiving |
application. application.
The destination(s) to which an InformRequest-PDU is sent is specified by The destination(s) to which an InformRequest-PDU is sent is specified by
the requesting application. The first two variable bindings in the the requesting application. The first two variable bindings in the
variable binding list of an InformRequest-PDU are sysUpTime.0 [10] and | variable binding list of an InformRequest-PDU are sysUpTime.0 [10] and
snmpTrapOID.0 [10] respectively. | snmpTrapOID.0 [10] respectively. If the OBJECTS clause is present in
If the OBJECTS clause is present in the invocation of the corresponding the invocation of the corresponding NOTIFICATION-TYPE macro, then each
NOTIFICATION-TYPE macro, then each corresponding variable, as corresponding variable, as instantiated by this notification, is copied,
instantiated by this notification, is copied, in order, to the in order, to the variable-bindings field.
variable-bindings field.
Upon receipt of an InformRequest-PDU, the receiving SNMPv2 entity Upon receipt of an InformRequest-PDU, the receiving SNMPv2 entity
determines the size of a message encapsulating a Response-PDU with the determines the size of a message encapsulating a Response-PDU with the
same values in its request-id, error-status, error-index and variable- same values in its request-id, error-status, error-index and variable-
bindings fields as the received InformRequest-PDU. If the determined | bindings fields as the received InformRequest-PDU. If the determined
message size is greater than either a local constraint or the maximum | message size is greater than either a local constraint or the maximum
message size of the originator, | message size of the originator, then an alternate Response-PDU is
then an alternate Response-PDU is generated, transmitted to the generated, transmitted to the originator of the InformRequest-PDU, and
originator of the InformRequest-PDU, and processing of the processing of the InformRequest-PDU terminates immediately thereafter.
InformRequest-PDU terminates immediately thereafter. This alternate This alternate Response-PDU is formatted with the same values in its
Response-PDU is formatted with the same values in its request-id field request-id field as the received InformRequest-PDU, with the value of
as the received InformRequest-PDU, with the value of its error-status its error-status field set to `tooBig', the value of its error-index
field set to `tooBig', the value of its error-index field set to zero, field set to zero, and an empty variable-bindings field. This alternate
and an empty variable-bindings field. This alternate Response-PDU is Response-PDU is then encapsulated into a message. If the size of the
then encapsulated into a message. If the size of the resultant message resultant message is less than or equal to both a local constraint and
is less than or equal to both a local constraint and the maximum message | the maximum message size of the originator, it is transmitted to the
originator of the InformRequest-PDU. Otherwise, the snmpSilentDrops |
size of the originator, | [10] counter is incremented and the resultant message is discarded.
it is transmitted to the originator of the InformRequest-PDU.
Otherwise, the snmpStatsSilentDrops [10] counter is incremented and the |
resultant message is discarded. |
Regardless, processing of the InformRequest-PDU terminates. Regardless, processing of the InformRequest-PDU terminates.
Otherwise, the receiving SNMPv2 entity: Otherwise, the receiving SNMPv2 entity:
(1) presents its contents to the appropriate SNMPv2 application; (1) presents its contents to the appropriate SNMPv2 application;
(2) generates a Response-PDU with the same values in its request-id and (2) generates a Response-PDU with the same values in its request-id and
variable-bindings fields as the received InformRequest-PDU, with variable-bindings fields as the received InformRequest-PDU, with
the value of its error-status field is set to `noError' and the the value of its error-status field is set to `noError' and the
value of its error-index field is zero; and value of its error-index field is zero; and
skipping to change at page 28, line 17 skipping to change at page 28, line 17
[1] Information processing systems - Open Systems Interconnection - [1] Information processing systems - Open Systems Interconnection -
Specification of Abstract Syntax Notation One (ASN.1), Specification of Abstract Syntax Notation One (ASN.1),
International Organization for Standardization. International International Organization for Standardization. International
Standard 8824, (December, 1987). Standard 8824, (December, 1987).
[2] McCloghrie, K., Editor, | [2] McCloghrie, K., Editor, |
"Structure of Management Information for Version 2 of the Simple "Structure of Management Information for Version 2 of the Simple
Network Management Protocol (SNMPv2)", Internet Draft, Cisco | Network Management Protocol (SNMPv2)", Internet Draft, Cisco |
Systems, September 1995. | Systems, September 1995. |
[3] McCloghrie, K., Editor, "Introduction to Version 2 of the | [3] McCloghrie, K., Editor, |
Internet-standard Network Management Framework", | "Introduction to Version 2 of the Internet-standard Network
Internet Draft, Cisco Systems, September 1995. | Management Framework", Internet Draft, Cisco Systems, September |
1995. |
[4] McCloghrie, K., Editor, "Textual Conventions for Version 2 of the | [4] McCloghrie, K., Editor, |
Simple Network Management Protocol (SNMPv2)", | "Textual Conventions for Version 2 of the Simple Network Management
Internet Draft, Cisco Systems, September 1995. | Protocol (SNMPv2)", Internet Draft, Cisco Systems, September 1995. |
[5] - [5] C. Kent, J. Mogul, Fragmentation Considered Harmful, Proceedings,
C. Kent, J. Mogul, Fragmentation Considered Harmful, Proceedings,
ACM SIGCOMM '87, Stowe, VT, (August 1987). ACM SIGCOMM '87, Stowe, VT, (August 1987).
[6] McCloghrie, K., Editor, | [6] McCloghrie, K., Editor, |
"Transport Mappings for Version 2 of the Simple Network Management "Transport Mappings for Version 2 of the Simple Network Management
Protocol (SNMPv2)", Internet Draft, Cisco Systems, September 1995. | Protocol (SNMPv2)", Internet Draft, Cisco Systems, September 1995. |
[7] | [7] Postel, J., "User Datagram Protocol", STD 6, RFC 768,
Postel, J., "User Datagram Protocol", STD 6, RFC 768,
USC/Information Sciences Institute, August 1980. USC/Information Sciences Institute, August 1980.
[8] McCloghrie, K., Editor, | [8] McCloghrie, K., Editor, |
"SNMPv2 Management Information Base for the Internet Protocol", "SNMPv2 Management Information Base for the Internet Protocol",
Internet Draft, Cisco Systems, September 1995. | Internet Draft, Cisco Systems, September 1995. |
[9] McCloghrie, K., Editor, | [9] McCloghrie, K., Editor, |
"Coexistence between Version 1 and Version 2 of the Internet- "Coexistence between Version 1 and Version 2 of the Internet-
standard Network Management Framework", Internet Draft, Cisco | standard Network Management Framework", Internet Draft, Cisco |
Systems, September 1995. | Systems, September 1995. |
skipping to change at page 29, line 13 skipping to change at page 29, line 13
September 1995. | September 1995. |
7. Security Considerations 7. Security Considerations
Security issues are not discussed in this memo. Security issues are not discussed in this memo.
8. Editor's Address 8. Editor's Address
Keith McCloghrie - Keith McCloghrie -
Cisco Systems, Inc. Cisco Systems, Inc.
170 West Tasman Drive | 170 West Tasman Drive
San Jose, CA 95134-1706 | San Jose, CA 95134-1706
US | US
Phone: +1 408 526 5260 Phone: +1 408 526 5260
Email: kzm@cisco.com Email: kzm@cisco.com
Table of Contents - Table of Contents -
1 Introduction .................................................... 2 1 Introduction .................................................... 2
1.1 A Note on Terminology ......................................... 2 1.1 A Note on Terminology ......................................... 2
2 Overview ........................................................ 3 2 Overview ........................................................ 3
2.1 Roles of Protocol Entities .................................... 3 2.1 Roles of Protocol Entities .................................... 3
skipping to change at page 30, line 22 skipping to change at page 30, line 22
2.3 Access to Management Information .............................. 3 2.3 Access to Management Information .............................. 3
2.4 Retransmission of Requests .................................... 4 2.4 Retransmission of Requests .................................... 4
2.5 Message Sizes ................................................. 4 2.5 Message Sizes ................................................. 4
2.6 Transport Mappings ............................................ 5 2.6 Transport Mappings ............................................ 5
3 Definitions ..................................................... 6 3 Definitions ..................................................... 6
4 Protocol Specification .......................................... 11 4 Protocol Specification .......................................... 11
4.1 Common Constructs ............................................. 11 4.1 Common Constructs ............................................. 11
4.2 PDU Processing ................................................ 11 4.2 PDU Processing ................................................ 11
4.2.1 The GetRequest-PDU .......................................... 12 4.2.1 The GetRequest-PDU .......................................... 12
4.2.2 The GetNextRequest-PDU ...................................... 13 4.2.2 The GetNextRequest-PDU ...................................... 13
4.2.2.1 Example of Table Traversal ................................ 15 4.2.2.1 Example of Table Traversal ................................ 14
4.2.3 The GetBulkRequest-PDU ...................................... 16 4.2.3 The GetBulkRequest-PDU ...................................... 16
4.2.3.1 Another Example of Table Traversal ........................ 19 4.2.3.1 Another Example of Table Traversal ........................ 19
4.2.4 The Response-PDU ............................................ 20 4.2.4 The Response-PDU ............................................ 20
4.2.5 The SetRequest-PDU .......................................... 21 4.2.5 The SetRequest-PDU .......................................... 21
4.2.6 The SNMPv2-Trap-PDU ......................................... 24 4.2.6 The SNMPv2-Trap-PDU ......................................... 24
4.2.7 The InformRequest-PDU ....................................... 25 4.2.7 The InformRequest-PDU ....................................... 25
5 Acknowledgements ................................................ 27 5 Acknowledgements ................................................ 27
6 References ...................................................... 28 6 References ...................................................... 28
7 Security Considerations ......................................... 29 7 Security Considerations ......................................... 29
8 Editor's Address ................................................ 29 8 Editor's Address ................................................ 29
 End of changes. 39 change blocks. 
139 lines changed or deleted 131 lines changed or added

This html diff was produced by rfcdiff 1.34. The latest version is available from http://tools.ietf.org/tools/rfcdiff/