summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc3584.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc3584.txt')
-rw-r--r--doc/rfc/rfc3584.txt2859
1 files changed, 2859 insertions, 0 deletions
diff --git a/doc/rfc/rfc3584.txt b/doc/rfc/rfc3584.txt
new file mode 100644
index 0000000..402c12f
--- /dev/null
+++ b/doc/rfc/rfc3584.txt
@@ -0,0 +1,2859 @@
+
+
+
+
+
+
+Network Working Group R. Frye
+Request for Comments: 3584 Vibrant Solutions
+BCP: 74 D. Levi
+Obsoletes: 2576 Nortel Networks
+Category: Best Current Practice S. Routhier
+ Wind River Systems, Inc.
+ B. Wijnen
+ Lucent Technologies
+ August 2003
+
+
+ Coexistence between Version 1, Version 2, and Version 3
+ of the Internet-standard Network Management Framework
+
+Status of this Memo
+
+ This document specifies an Internet Best Current Practices for the
+ Internet Community, and requests discussion and suggestions for
+ improvements. Distribution of this memo is unlimited.
+
+Copyright Notice
+
+ Copyright (C) The Internet Society (2003). All Rights Reserved.
+
+Abstract
+
+ The purpose of this document is to describe coexistence between
+ version 3 of the Internet-standard Network Management Framework,
+ (SNMPv3), version 2 of the Internet-standard Network Management
+ Framework (SNMPv2), and the original Internet-standard Network
+ Management Framework (SNMPv1). This document also describes how to
+ convert MIB modules from SMIv1 format to SMIv2 format. This document
+ obsoletes RFC 2576.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Frye, et al. Best Current Practice [Page 1]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+Table Of Contents
+
+ 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 3
+ 1.1. SNMPv1 . . . . . . . . . . . . . . . . . . . . . . . . 4
+ 1.2. SNMPv2 . . . . . . . . . . . . . . . . . . . . . . . . 4
+ 1.3. SNMPv3 . . . . . . . . . . . . . . . . . . . . . . . . 5
+ 2. SMI and Management Information Mappings. . . . . . . . . . . 5
+ 2.1. MIB Modules. . . . . . . . . . . . . . . . . . . . . . 6
+ 2.1.1. Object Definitions . . . . . . . . . . . . . . 6
+ 2.1.2. Trap and Notification Definitions . . . . . . 8
+ 2.2. Compliance Statements. . . . . . . . . . . . . . . . . 9
+ 2.3. Capabilities Statements. . . . . . . . . . . . . . . . 9
+ 3. Translating Notification Parameters. . . . . . . . . . . . . 10
+ 3.1. Translating SNMPv1 Notification Parameters to
+ SNMPv2 Notification Parameters . . . . . . . . . . . . 11
+ 3.2. Translating SNMPv2 Notification Parameters to
+ SNMPv1 Notification Parameters . . . . . . . . . . . . 12
+ 4. Approaches to Coexistence in a Multi-lingual Network . . . . 14
+ 4.1. SNMPv1 and SNMPv2 Access to MIB Data . . . . . . . . . 14
+ 4.2. Multi-lingual implementations. . . . . . . . . . . . . 15
+ 4.2.1. Command Generator. . . . . . . . . . . . . . . 15
+ 4.2.2. Command Responder. . . . . . . . . . . . . . . 16
+ 4.2.2.1. Handling Counter64 . . . . . . . . . 16
+ 4.2.2.2. Mapping SNMPv2 Exceptions. . . . . . 17
+ 4.2.2.2.1. Mapping noSuchObject
+ and noSuchInstance. . . . 18
+ 4.2.2.2.2. Mapping endOfMibView. . . 18
+ 4.2.2.3. Processing An SNMPv1 GetReques . . . 18
+ 4.2.2.4. Processing An SNMPv1 GetNextRequest. 19
+ 4.2.2.5. Processing An SNMPv1 SetRequest. . . 20
+ 4.2.3. Notification Originator. . . . . . . . . . . . 21
+ 4.2.4. Notification Receiver. . . . . . . . . . . . . 21
+ 4.3. Proxy Implementations. . . . . . . . . . . . . . . . . 22
+ 4.3.1. Upstream Version Greater Than Downstream
+ Version. . . . . . . . . . . . . . . . . . . . 22
+ 4.3.2. Upstream Version Less Than Downstream Version. 23
+ 4.4. Error Status Mappings. . . . . . . . . . . . . . . . . 25
+ 5. Message Processing Models and Security Models. . . . . . . . 26
+ 5.1. Mappings . . . . . . . . . . . . . . . . . . . . . . . 26
+ 5.2. The SNMPv1 MP Model and SNMPv1 Community-based
+ Security Model . . . . . . . . . . . . . . . . . . . . 26
+ 5.2.1. Processing An Incoming Request . . . . . . . . 27
+ 5.2.2. Generating An Outgoing Response. . . . . . . . 29
+ 5.2.3. Generating An Outgoing Notification. . . . . . 29
+ 5.2.4. Proxy Forwarding Of Requests . . . . . . . . . 30
+ 5.3. The SNMP Community MIB Module. . . . . . . . . . . . . 30
+ 6. Intellectual Property Statement. . . . . . . . . . . . . . . 42
+ 7. Acknowledgments. . . . . . . . . . . . . . . . . . . . . . . 43
+
+
+
+Frye, et al. Best Current Practice [Page 2]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ 8. Security Considerations. . . . . . . . . . . . . . . . . . . 43
+ 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 44
+ 9.1. Normative References . . . . . . . . . . . . . . . . . 44
+ 9.2. Informative References . . . . . . . . . . . . . . . . 46
+ Appendix A. Change Log. . . . . . . . . . . . . . . . . . . . . 47
+ A.1. Changes From RFC 2576 . . . . . . . . . . . . . . . . . 47
+ A.2. Changes Between RFC 1908 and RFC 2576 . . . . . . . . . 49
+ Editors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 50
+ Full Copyright Statement . . . . . . . . . . . . . . . . . . . . 51
+
+1. Overview
+
+ The purpose of this document is to describe coexistence between
+ version 3 of the Internet-standard Network Management Framework,
+ termed the SNMP version 3 framework (SNMPv3), version 2 of the
+ Internet-standard Network Management Framework, termed the SNMP
+ version 2 framework (SNMPv2), and the original Internet-standard
+ Network Management Framework (SNMPv1).
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+ document are to be interpreted as described in RFC 2119 [RFC2119].
+
+ There are four general aspects of coexistence described in this
+ document. Each of these is described in a separate section:
+
+ - Conversion of MIB documents between SMIv1 and SMIv2 formats is
+ documented in section 2.
+
+ - Mapping of notification parameters is documented in section 3.
+
+ - Approaches to coexistence between entities which support the
+ various versions of SNMP in a multi-lingual network is documented
+ in section 4. This section addresses the processing of protocol
+ operations in multi-lingual implementations, as well as behaviour
+ of proxy implementations.
+
+ - The SNMPv1 Message Processing Model and Community-Based Security
+ Model, which provides mechanisms for adapting SNMPv1 into the
+ View-Based Access Control Model (VACM) [20], is documented in
+ section 5 (this section also addresses the SNMPv2c Message
+ Processing Model and Community-Based Security Model).
+
+
+
+
+
+
+
+
+
+Frye, et al. Best Current Practice [Page 3]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+1.1. SNMPv1
+
+ SNMPv1 is defined by these documents:
+
+ - STD 15, RFC 1157 [RFC1157] which defines the Simple Network
+ Management Protocol (SNMPv1), the protocol used for network access
+ to managed objects.
+
+ - STD 16, RFC 1155 [RFC1155] which defines the Structure of
+ Management Information (SMIv1), the mechanisms used for describing
+ and naming objects for the purpose of management.
+
+ - STD 16, RFC 1212 [RFC1212] which defines a more concise
+ description mechanism, which is wholly consistent with the SMIv1.
+
+ - RFC 1215 [RFC1215] which defines a convention for defining Traps
+ for use with the SMIv1.
+
+ Note that throughout this document, the term 'SMIv1' is used. This
+ term generally refers to the information presented in RFC 1155, RFC
+ 1212, and RFC 1215.
+
+1.2. SNMPv2
+
+ SNMPv2 is defined by these documents:
+
+ - STD 58, RFC 2578 which defines Version 2 of the Structure of
+ Management Information (SMIv2) [RFC2578].
+
+ - STD 58, RFC 2579 which defines common MIB "Textual Conventions"
+ [RFC2579].
+
+ - STD 58, RFC 2580 which defines Conformance Statements and
+ requirements for defining agent and manager capabilities
+ [RFC2580].
+
+ - STD 62, RFC 3416 which defines the Protocol Operations used in
+ processing [RFC3416].
+
+ - STD 62, RFC 3417 which defines the Transport Mappings used "on the
+ wire" [RFC3417].
+
+ - STD 62, RFC 3418 which defines the basic Management Information
+ Base for monitoring and controlling some basic common functions of
+ SNMP entities [RFC3418].
+
+ Note that SMIv2 as used throughout this document refers to the first
+ three documents listed above (RFCs 2578, 2579, and 2580).
+
+
+
+Frye, et al. Best Current Practice [Page 4]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ The following document augments the definition of SNMPv2:
+
+ - RFC 1901 [RFC1901] is an Experimental definition for using SNMPv2
+ PDUs within a community-based message wrapper. This is referred
+ to throughout this document as SNMPv2c.
+
+1.3. SNMPv3
+
+ SNMPv3 is defined by these documents:
+
+ - STD 62, RFC 3411 which defines an Architecture for Describing SNMP
+ Management Frameworks [RFC3411].
+
+ - STD 62, RFC 3412 which defines Message Processing and Dispatching
+ [RFC3412].
+
+ - STD 62, RFC 3413 which defines various SNMP Applications
+ [RFC3413].
+
+ - STD 62, RFC 3414 which defines the User-based Security Model
+ (USM), providing for both Authenticated and Private (encrypted)
+ SNMP messages [RFC3414].
+
+ - STD 62, RFC 3415 which defines the View-based Access Control Model
+ (VACM), providing the ability to limit access to different MIB
+ objects on a per-user basis [RFC3415].
+
+ SNMPv3 also uses the SNMPv2 definitions of RFCs 3416 through 3418 and
+ the SMIv2 definitions of 2578 through 2580 described above. Note
+ that text throughout this document that refers to SNMPv2 PDU types
+ and protocol operations applies to both SNMPv2c and SNMPv3.
+
+2. SMI and Management Information Mappings
+
+ The SMIv2 approach towards describing collections of managed objects
+ is nearly a proper superset of the approach defined in the SMIv1.
+ For example, both approaches use an adapted subset of ASN.1 [ASN1] as
+ the basis for a formal descriptive notation. Indeed, one might note
+ that the SMIv2 approach largely codifies the existing practice for
+ defining MIB modules, based on extensive experience with the SMIv1.
+
+ The following sections consider the three areas: MIB modules,
+ compliance statements, and capabilities statements.
+
+
+
+
+
+
+
+
+Frye, et al. Best Current Practice [Page 5]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+2.1. MIB Modules
+
+ MIB modules defined using the SMIv1 may continue to be used with
+ protocol versions which use SNMPv2 PDUs. However, for SMIv1 MIB
+ modules to conform to the SMIv2, the following changes SHALL be made:
+
+2.1.1. Object Definitions
+
+ In general, conversion of a MIB module does not require the
+ deprecation of the objects contained therein. If the definition of
+ an object is truly inadequate for its intended purpose, the object
+ SHALL be deprecated or obsoleted, otherwise deprecation is not
+ required.
+
+ (1) The IMPORTS statement MUST reference SNMPv2-SMI, instead of
+ RFC1155-SMI and RFC-1212.
+
+ (2) The MODULE-IDENTITY macro MUST be invoked immediately after any
+ IMPORTs statement.
+
+ (3) For any object with a SYNTAX clause value of Counter, the object
+ MUST have the value of its SYNTAX clause changed to Counter32.
+
+ (4) For any object with a SYNTAX clause value of Gauge, the object
+ MUST have the value of its SYNTAX clause changed to Gauge32, or
+ Unsigned32 where appropriate.
+
+ (5) For all objects, the ACCESS clause MUST be replaced by a MAX-
+ ACCESS clause. The value of the MAX-ACCESS clause SHALL be the
+ same as that of the ACCESS clause unless some other value makes
+ "protocol sense" as the maximal level of access for the object.
+ In particular, object types for which instances can be
+ explicitly created by a protocol set operation, SHALL have a
+ MAX-ACCESS clause of "read-create". If the value of the ACCESS
+ clause is "write-only", then the value of the MAX-ACCESS clause
+ MUST be "read-write", and the DESCRIPTION clause SHALL note that
+ reading this object will result in implementation-specific
+ results. Note that in SMIv1, the ACCESS clause specifies the
+ minimal required access, while in SMIv2, the MAX-ACCESS clause
+ specifies the maximum allowed access. This should be considered
+ when converting an ACCESS clause to a MAX-ACCESS clause.
+
+ (6) For all objects, if the value of the STATUS clause is
+ "mandatory" or "optional", the value MUST be replaced with
+ "current", "deprecated", or "obsolete" depending on the current
+ usage of such objects.
+
+
+
+
+
+Frye, et al. Best Current Practice [Page 6]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ (7) For any object not containing a DESCRIPTION clause, the object
+ MUST have a DESCRIPTION clause defined.
+
+ (8) For any object corresponding to a conceptual row which does not
+ have an INDEX clause, the object MUST have either an INDEX
+ clause or an AUGMENTS clause defined.
+
+ (9) If any INDEX clause contains a reference to an object with a
+ syntax of NetworkAddress, then a new object MUST be created and
+ placed in this INDEX clause immediately preceding the object
+ whose syntax is NetworkAddress. This new object MUST have a
+ syntax of INTEGER, it MUST be not-accessible, and its value MUST
+ always be 1. The effect of this, and the preceding bullet, is
+ to allow one to convert a MIB module in SMIv1 format to one in
+ SMIv2 format, and then use it with the SNMPv1 protocol with no
+ impact to existing SNMPv1 agents and managers.
+
+ (10) For any object with a SYNTAX of NetworkAddress, the SYNTAX MUST
+ be changed to IpAddress. Note that the use of NetworkAddress in
+ new MIB documents is strongly discouraged (in fact, new MIB
+ documents should be written using SMIv2, which does not define
+ NetworkAddress).
+
+ (11) For any object containing a DEFVAL clause with an OBJECT
+ IDENTIFIER value which is expressed as a collection of sub-
+ identifiers, the value MUST be changed to reference a single
+ ASN.1 identifier. This may require defining a series of new
+ administrative assignments (OBJECT IDENTIFIERS) in order to
+ define the single ASN.1 identifier.
+
+ (12) One or more OBJECT-GROUPS MUST be defined, and related objects
+ MUST be collected into appropriate groups. Note that SMIv2
+ requires all OBJECT-TYPEs to be a member of at least one
+ OBJECT-GROUP.
+
+ (13) For any non-columnar object that is instanced as if it were
+ immediately subordinate to a conceptual row, the value of the
+ STATUS clause of that object MUST be changed to "obsolete".
+
+ (14) For any conceptual row object that is not immediately
+ subordinate to a conceptual table, the value of the STATUS
+ clause of that object (and all subordinate objects) MUST be
+ changed to "obsolete".
+
+
+
+
+
+
+
+
+Frye, et al. Best Current Practice [Page 7]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ Other changes are desirable, but not necessary:
+
+ (1) Creation and deletion of conceptual rows is inconsistent using
+ the SMIv1. The SMIv2 corrects this. As such, if the MIB module
+ undergoes review early in its lifetime, and it contains
+ conceptual tables which allow creation and deletion of
+ conceptual rows, then the objects relating to those tables MAY
+ be deprecated and replaced with objects defined using the new
+ approach. The approach based on SMIv2 can be found in section 7
+ of RFC 2578 [RFC2578], and the RowStatus and StorageType
+ TEXTUAL-CONVENTIONs are described in section 2 of RFC 2579
+ [RFC2579].
+
+ (2) For any object with an integer-valued SYNTAX clause, in which
+ the corresponding INTEGER does not have a range restriction
+ (i.e., the INTEGER has neither a defined set of named-number
+ enumerations nor an assignment of lower- and upper-bounds on its
+ value), the object SHOULD have the value of its SYNTAX clause
+ changed to Integer32, or have an appropriate range specified.
+
+ (3) For any object with a string-valued SYNTAX clause, in which the
+ corresponding OCTET STRING does not have a size restriction
+ (i.e., the OCTET STRING has no assignment of lower- and upper-
+ bounds on its length), the bounds for the size of the object
+ SHOULD be defined.
+
+ (4) All textual conventions informally defined in the MIB module
+ SHOULD be redefined using the TEXTUAL-CONVENTION macro. Such a
+ change would not necessitate deprecating objects previously
+ defined using an informal textual convention.
+
+ (5) For any object which represents a measurement in some kind of
+ units, a UNITS clause SHOULD be added to the definition of that
+ object.
+
+ (6) For any conceptual row which is an extension of another
+ conceptual row, i.e., for which subordinate columnar objects
+ both exist and are identified via the same semantics as the
+ other conceptual row, an AUGMENTS clause SHOULD be used in place
+ of the INDEX clause for the object corresponding to the
+ conceptual row which is an extension.
+
+2.1.2. Trap and Notification Definitions
+
+ If a MIB module is changed to conform to the SMIv2, then each
+ occurrence of the TRAP-TYPE macro MUST be changed to a corresponding
+ invocation of the NOTIFICATION-TYPE macro:
+
+
+
+
+Frye, et al. Best Current Practice [Page 8]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ (1) The IMPORTS statement MUST NOT reference RFC-1215 [RFC1215], and
+ MUST reference SNMPv2-SMI instead.
+
+ (2) The ENTERPRISE clause MUST be removed.
+
+ (3) The VARIABLES clause MUST be renamed to the OBJECTS clause.
+
+ (4) A STATUS clause MUST be added, with an appropriate value.
+ Normally the value should be 'current', although 'deprecated' or
+ 'obsolete' may be used as needed.
+
+ (5) The value of an invocation of the NOTIFICATION-TYPE macro is an
+ OBJECT IDENTIFIER, not an INTEGER, and MUST be changed
+ accordingly. Specifically, if the value of the ENTERPRISE
+ clause is not 'snmp' then the value of the invocation SHALL be
+ the value of the ENTERPRISE clause extended with two sub-
+ identifiers, the first of which has the value 0, and the second
+ has the value of the invocation of the TRAP-TYPE. If the value
+ of the ENTERPRISE clause is 'snmp', then the value of the
+ invocation of the NOTIFICATION-TYPE macro SHALL be mapped in the
+ same manner as described in section 3.1 in this document.
+
+ (6) A DESCRIPTION clause MUST be added, if not already present.
+
+ (7) One or more NOTIFICATION-GROUPs MUST be defined, and related
+ notifications MUST be collected into those groups. Note that
+ SMIv2 requires that all NOTIFICATION-TYPEs be a member of at
+ least one NOTIFICATION-GROUP.
+
+2.2. Compliance Statements
+
+ For those information modules which are "standards track", a
+ corresponding invocation of the MODULE-COMPLIANCE macro and related
+ OBJECT-GROUP and/or NOTIFICATION-GROUP macros MUST be included within
+ the information module (or in a companion information module), and
+ any commentary text in the information module which relates to
+ compliance SHOULD be removed. Typically this editing can occur when
+ the information module undergoes review.
+
+ Note that a MODULE-COMPLIANCE statement is not required for a MIB
+ document that is not on the standards track (for example, an
+ enterprise MIB), though it may be useful in some circumstances to
+ define a MODULE-COMPLIANCE statement for such a MIB document.
+
+2.3. Capabilities Statements
+
+ RFC 1303 [RFC1303] uses the MODULE-CONFORMANCE macro to describe an
+ agent's capabilities with respect to one or more MIB modules.
+
+
+
+Frye, et al. Best Current Practice [Page 9]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ Converting such a description for use with the SMIv2 requires these
+ changes:
+
+ (1) The macro name AGENT-CAPABILITIES MUST be used instead of
+ MODULE-CONFORMANCE.
+
+ (2) The STATUS clause MUST be added, with a value of 'current'.
+
+ (3) All occurrences of the CREATION-REQUIRES clause MUST either be
+ omitted if appropriate, or be changed such that the semantics
+ are consistent with RFC 2580 [RFC2580].
+
+ In order to ease coexistence, object groups defined in an SMIv1
+ compliant MIB module may be referenced by the INCLUDES clause of an
+ invocation of the AGENT-CAPABILITIES macro: upon encountering a
+ reference to an OBJECT IDENTIFIER subtree defined in an SMIv1 MIB
+ module, all leaf objects which are subordinate to the subtree and
+ have a STATUS clause value of mandatory are deemed to be INCLUDEd.
+ (Note that this method is ambiguous when different revisions of an
+ SMIv1 MIB have different sets of mandatory objects under the same
+ subtree; in such cases, the only solution is to rewrite the MIB using
+ the SMIv2 in order to define the object groups unambiguously.)
+
+3. Translating Notification Parameters
+
+ This section describes how parameters used for generating
+ notifications are translated between the format used for SNMPv1
+ notification protocol operations and the format used for SNMPv2
+ notification protocol operations. The parameters used to generate a
+ notification are called 'notification parameters'. The format of
+ parameters used for SNMPv1 notification protocol operations is
+ referred to in this document as 'SNMPv1 notification parameters'.
+ The format of parameters used for SNMPv2 notification protocol
+ operations is referred to in this document as 'SNMPv2 notification
+ parameters'.
+
+ The situations where notification parameters MUST be translated are:
+
+ - When an entity generates a set of notification parameters in a
+ particular format, and the configuration of the entity indicates
+ that the notification must be sent using an SNMP message version
+ that requires the other format for notification parameters.
+
+ - When a proxy receives a notification that was sent using an SNMP
+ message version that requires one format of notification
+ parameters, and must forward the notification using an SNMP
+ message version that requires the other format of notification
+ parameters.
+
+
+
+Frye, et al. Best Current Practice [Page 10]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ In addition, it MAY be desirable to translate notification parameters
+ in a notification receiver application in order to present
+ notifications to the end user in a consistent format.
+
+ Note that for the purposes of this section, the set of notification
+ parameters is independent of whether the notification is to be sent
+ as a trap or an inform.
+
+ SNMPv1 notification parameters consist of:
+
+ - An enterprise parameter (OBJECT IDENTIFIER).
+
+ - An agent-addr parameter (NetworkAddress).
+
+ - A generic-trap parameter (INTEGER).
+
+ - A specific-trap parameter (INTEGER).
+
+ - A time-stamp parameter (TimeTicks).
+
+ - A list of variable-bindings (VarBindList).
+
+ SNMPv2 notification parameters consist of:
+
+ - A sysUpTime parameter (TimeTicks). This appears in the first
+ variable-binding in an SNMPv2-Trap-PDU or InformRequest-PDU.
+
+ - An snmpTrapOID parameter (OBJECT IDENTIFIER). This appears in the
+ second variable-binding in an SNMPv2-Trap-PDU or InformRequest-
+ PDU, and is equal to the value portion of that variable-binding
+ (not the name portion, as both the name and value are OBJECT
+ IDENTIFIERs).
+
+ - A list of variable-bindings (VarBindList). This refers to all but
+ the first two variable-bindings in an SNMPv2-Trap-PDU or
+ InformRequest-PDU.
+
+3.1. Translating SNMPv1 Notification Parameters to SNMPv2 Notification
+ Parameters
+
+ The following procedure describes how to translate SNMPv1
+ notification parameters into SNMPv2 notification parameters:
+
+ (1) The SNMPv2 sysUpTime parameter SHALL be taken directly from the
+ SNMPv1 time-stamp parameter.
+
+
+
+
+
+
+Frye, et al. Best Current Practice [Page 11]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ (2) If the SNMPv1 generic-trap parameter is 'enterpriseSpecific(6)',
+ the SNMPv2 snmpTrapOID parameter SHALL be the concatenation of
+ the SNMPv1 enterprise parameter and two additional sub-
+ identifiers, '0', and the SNMPv1 specific-trap parameter.
+
+ (3) If the SNMPv1 generic-trap parameter is not
+ 'enterpriseSpecific(6)', the SNMPv2 snmpTrapOID parameter SHALL
+ be the corresponding trap as defined in section 2 of RFC 3418
+ [RFC3418]:
+
+ generic-trap
+ parameter snmpTrapOID.0
+ ============ =============
+ 0 1.3.6.1.6.3.1.1.5.1 (coldStart)
+ 1 1.3.6.1.6.3.1.1.5.2 (warmStart)
+ 2 1.3.6.1.6.3.1.1.5.3 (linkDown)
+ 3 1.3.6.1.6.3.1.1.5.4 (linkUp)
+ 4 1.3.6.1.6.3.1.1.5.5 (authenticationFailure)
+ 5 1.3.6.1.6.3.1.1.5.6 (egpNeighborLoss)
+
+ (4) The SNMPv2 variable-bindings SHALL be the SNMPv1 variable-
+ bindings. In addition, if the translation is being performed by
+ a proxy in order to forward a received trap, three additional
+ variable-bindings will be appended, if these three additional
+ variable-bindings do not already exist in the SNMPv1 variable-
+ bindings. The name portion of the first additional variable
+ binding SHALL contain snmpTrapAddress.0, and the value SHALL
+ contain the SNMPv1 agent-addr parameter. The name portion of
+ the second additional variable binding SHALL contain
+ snmpTrapCommunity.0, and the value SHALL contain the value of
+ the community-string field from the received SNMPv1 message
+ which contained the SNMPv1 Trap-PDU. The name portion of the
+ third additional variable binding SHALL contain
+ snmpTrapEnterprise.0 [RFC3418], and the value SHALL be the
+ SNMPv1 enterprise parameter.
+
+3.2. Translating SNMPv2 Notification Parameters to SNMPv1 Notification
+ Parameters
+
+ The following procedure describes how to translate SNMPv2
+ notification parameters into SNMPv1 notification parameters:
+
+ (1) The SNMPv1 enterprise parameter SHALL be determined as follows:
+
+ - If the SNMPv2 snmpTrapOID parameter is one of the standard
+ traps as defined in RFC 3418 [RFC3418], then the SNMPv1
+ enterprise parameter SHALL be set to the value of the
+ variable-binding in the SNMPv2 variable-bindings whose name is
+
+
+
+Frye, et al. Best Current Practice [Page 12]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ snmpTrapEnterprise.0 if that variable-binding exists. If it
+ does not exist, the SNMPv1 enterprise parameter SHALL be set
+ to the value 'snmpTraps' as defined in RFC 3418 [RFC3418].
+
+ - If the SNMPv2 snmpTrapOID parameter is not one of the standard
+ traps as defined in RFC 3418 [RFC3418], then the SNMPv1
+ enterprise parameter SHALL be determined from the SNMPv2
+ snmpTrapOID parameter as follows:
+
+ - If the next-to-last sub-identifier of the snmpTrapOID value
+ is zero, then the SNMPv1 enterprise SHALL be the SNMPv2
+ snmpTrapOID value with the last 2 sub-identifiers removed,
+ otherwise
+
+ - If the next-to-last sub-identifier of the snmpTrapOID value
+ is non-zero, then the SNMPv1 enterprise SHALL be the SNMPv2
+ snmpTrapOID value with the last sub-identifier removed.
+
+ (2) The SNMPv1 agent-addr parameter SHALL be determined based on the
+ situation in which the translation occurs.
+
+ - If the translation occurs within a notification originator
+ application, and the notification is to be sent over IP, the
+ SNMPv1 agent-addr parameter SHALL be set to the IP address of
+ the SNMP entity in which the notification originator resides.
+ If the notification is to be sent over some other transport,
+ the SNMPv1 agent-addr parameter SHALL be set to 0.0.0.0.
+
+ - If the translation occurs within a proxy application, the
+ proxy must attempt to extract the original source of the
+ notification from the variable-bindings. If the SNMPv2
+ variable-bindings contains a variable binding whose name is
+ snmpTrapAddress.0, the agent-addr parameter SHALL be set to
+ the value of that variable binding. Otherwise, the SNMPv1
+ agent-addr parameter SHALL be set to 0.0.0.0.
+
+ (3) If the SNMPv2 snmpTrapOID parameter is one of the standard traps
+ as defined in RFC 3418 [RFC3418], the SNMPv1 generic-trap
+ parameter SHALL be set as follows:
+
+ snmpTrapOID.0 parameter generic-trap
+ =============================== ============
+ 1.3.6.1.6.3.1.1.5.1 (coldStart) 0
+ 1.3.6.1.6.3.1.1.5.2 (warmStart) 1
+ 1.3.6.1.6.3.1.1.5.3 (linkDown) 2
+ 1.3.6.1.6.3.1.1.5.4 (linkUp) 3
+ 1.3.6.1.6.3.1.1.5.5 (authenticationFailure) 4
+ 1.3.6.1.6.3.1.1.5.6 (egpNeighborLoss) 5
+
+
+
+Frye, et al. Best Current Practice [Page 13]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ Otherwise, the SNMPv1 generic-trap parameter SHALL be set to 6.
+
+ (4) If the SNMPv2 snmpTrapOID parameter is one of the standard traps
+ as defined in RFC 3418 [RFC3418], the SNMPv1 specific-trap
+ parameter SHALL be set to zero. Otherwise, the SNMPv1
+ specific-trap parameter SHALL be set to the last sub-identifier
+ of the SNMPv2 snmpTrapOID parameter.
+
+ (5) The SNMPv1 time-stamp parameter SHALL be taken directly from the
+ SNMPv2 sysUpTime parameter.
+
+ (6) The SNMPv1 variable-bindings SHALL be the SNMPv2 variable-
+ bindings (and note that the SNMPv2 variable-bindings do not
+ include the variable-bindings containing sysUpTime.0,
+ snmpTrapOID.0). Note, however, that if the SNMPv2 variable-
+ bindings contain any objects whose type is Counter64, the
+ translation to SNMPv1 notification parameters cannot be
+ performed. In this case, the notification cannot be encoded in
+ an SNMPv1 packet (and so the notification cannot be sent using
+ SNMPv1, see section 4.2.3 and section 4.3).
+
+4. Approaches to Coexistence in a Multi-lingual Network
+
+ There are two basic approaches to coexistence in a multi-lingual
+ network, multi-lingual implementations and proxy implementations.
+ Multi-lingual implementations allow elements in a network to
+ communicate with each other using an SNMP version which both elements
+ support. This allows a multi-lingual implementation to communicate
+ with any mono-lingual implementation, regardless of the SNMP version
+ supported by the mono-lingual implementation.
+
+ Proxy implementations provide a mechanism for translating between
+ SNMP versions using a third party network element. This allows
+ network elements which support only a single, but different, SNMP
+ version to communicate with each other. Proxy implementations are
+ also useful for securing communications over an insecure link between
+ two locally secure networks.
+
+4.1. SNMPv1 and SNMPv2 Access to MIB Data
+
+ Throughout section 4., this document refers to 'SNMPv1 Access to MIB
+ Data' and 'SNMPv2 Access to MIB Data'. These terms refer to the part
+ of an SNMP agent which actually accesses instances of MIB objects,
+ and which actually initiates generation of notifications.
+ Differences between the two types of access to MIB data are:
+
+ - Error-status values generated.
+
+
+
+
+Frye, et al. Best Current Practice [Page 14]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ - Generation of exception codes.
+
+ - Use of the Counter64 data type.
+
+ - The format of parameters provided when a notification is
+ generated.
+
+ SNMPv1 access to MIB data may generate SNMPv1 error-status values,
+ will never generate exception codes nor use the Counter64 data type,
+ and will provide SNMPv1 format parameters for generating
+ notifications. Note also that SNMPv1 access to MIB data will
+ actually never generate a readOnly error (a noSuchName error would
+ always occur in the situation where one would expect a readOnly
+ error).
+
+ SNMPv2 access to MIB data may generate SNMPv2 error-status values,
+ may generate exception codes, may use the Counter64 data type, and
+ will provide SNMPv2 format parameters for generating notifications.
+ Note that SNMPv2 access to MIB data will never generate readOnly,
+ noSuchName, or badValue errors.
+
+ Note that a particular multi-lingual implementation may choose to
+ implement all access to MIB data as SNMPv2 access to MIB data, and
+ perform the translations described herein for SNMPv1-based
+ transactions.
+
+ Further, note that there is no mention of 'SNMPv3 access to MIB data'
+ in this document, as SNMPv3 uses SNMPv2 PDU types and protocol
+ operations.
+
+4.2. Multi-lingual implementations
+
+ This approach requires an entity to support multiple SNMP message
+ versions. Typically this means supporting SNMPv1, SNMPv2c, and
+ SNMPv3 message versions. The behaviour of various types of SNMP
+ applications which support multiple message versions is described in
+ the following sections. This approach allows entities which support
+ multiple SNMP message versions to coexist with and communicate with
+ entities which support only a single SNMP message version.
+
+4.2.1. Command Generator
+
+ A command generator must select an appropriate message version when
+ sending requests to another entity. One way to achieve this is to
+ consult a local database to select the appropriate message version.
+
+ In addition, a command generator MUST 'downgrade' GetBulk requests to
+ GetNext requests when selecting SNMPv1 as the message version for an
+
+
+
+Frye, et al. Best Current Practice [Page 15]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ outgoing request. This is done by simply changing the operation type
+ to GetNext, ignoring any non-repeaters and max-repetitions values,
+ and setting error-status and error-index to zero.
+
+4.2.2. Command Responder
+
+ A command responder must be able to deal with both SNMPv1 and SNMPv2
+ access to MIB data. There are three aspects to dealing with this. A
+ command responder must:
+
+ - Deal correctly with SNMPv2 access to MIB data that returns a
+ Counter64 value while processing an SNMPv1 message,
+
+ - Deal correctly with SNMPv2 access to MIB data that returns one of
+ the three exception values while processing an SNMPv1 message, and
+
+ - Map SNMPv2 error codes returned from SNMPv2 access to MIB data
+ into SNMPv1 error codes when processing an SNMPv1 message.
+
+ Note that SNMPv1 error codes SHOULD NOT be used without any change
+ when processing SNMPv2c or SNMPv3 messages, except in the case of
+ proxy forwarding. Also, SNMPv1 access to MIB data SHOULD NOT be used
+ when processing SNMPv2c or SNMPv3 messages. In the case of proxy
+ forwarding, for backwards compatibility, SNMPv1 error codes may be
+ used without any change in a forwarded SNMPv2c or SNMPv3 message.
+
+ The following sections describe the behaviour of a command responder
+ application which supports multiple SNMP message versions, and which
+ uses SNMPv2 access to MIB data when processing an SNMPv1 message.
+
+4.2.2.1. Handling Counter64
+
+ The SMIv2 [RFC2578] defines one new syntax that is incompatible with
+ SMIv1. This syntax is Counter64. All other syntaxes defined by
+ SMIv2 are compatible with SMIv1.
+
+ The impact on multi-lingual command responders is that they MUST NOT
+ ever return a variable binding containing a Counter64 value in a
+ response to a request that was received using the SNMPv1 message
+ version.
+
+ Multi-lingual command responders SHALL take the approach that object
+ instances whose type is Counter64 are implicitly excluded from view
+ when processing an SNMPv1 message. So:
+
+ - On receipt of an SNMPv1 GetRequest-PDU containing a variable
+ binding whose name field points to an object instance of type
+ Counter64, a GetResponsePDU SHALL be returned, with an error-
+
+
+
+Frye, et al. Best Current Practice [Page 16]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ status of noSuchName and the error-index set to the variable
+ binding that caused this error.
+
+ - On an SNMPv1 GetNextRequest-PDU, any object instance which
+ contains a syntax of Counter64 SHALL be skipped, and the next
+ accessible object instance that does not have the syntax of
+ Counter64 SHALL be retrieved. If no such object instance exists,
+ then an error-status of noSuchName SHALL be returned, and the
+ error-index SHALL be set to the variable binding that caused this
+ error.
+
+ - Any SNMPv1 request which contains a variable binding with a
+ Counter64 value is ill-formed, so the foregoing rules do not
+ apply. If that error is detected, a response SHALL NOT be
+ returned, since it would contain a copy of the ill-formed variable
+ binding. Instead, the offending PDU SHALL be discarded and the
+ counter snmpInASNParseErrs SHALL be incremented.
+
+4.2.2.2. Mapping SNMPv2 Exceptions
+
+ SNMPv2 provides a feature called exceptions, which allow an SNMPv2
+ Response PDU to return as much management information as possible,
+ even when an error occurs. However, SNMPv1 does not support
+ exceptions, and so an SNMPv1 Response PDU cannot return any
+ management information, and can only return an error-status and an
+ error-index value.
+
+ When an SNMPv1 request is received, a command responder MUST check
+ any variable bindings returned using SNMPv2 access to MIB data for
+ exception values, and convert these exception values into SNMPv1
+ error codes.
+
+ The type of exception that can be returned when accessing MIB data
+ and the action taken depends on the type of SNMP request.
+
+ - For a GetRequest, a noSuchObject or noSuchInstance exception may
+ be returned.
+
+ - For a GetNextRequest, an endOfMibView exception may be returned.
+
+ - No exceptions will be returned for a SetRequest, and a
+ GetBulkRequest should only be received in an SNMPv2c or SNMPv3
+ message, so these request types may be ignored when mapping
+ exceptions.
+
+ Note that when a response contains multiple exceptions, it is an
+ implementation choice as to which variable binding the error-index
+ should reference.
+
+
+
+Frye, et al. Best Current Practice [Page 17]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+4.2.2.2.1. Mapping noSuchObject and noSuchInstance
+
+ A noSuchObject or noSuchInstance exception generated by an SNMPv2
+ access to MIB data indicates that the requested object instance can
+ not be returned. The SNMPv1 error code for this condition is
+ noSuchName, and so the error-status field of the response PDU SHALL
+ be set to noSuchName. Also, the error-index field SHALL be set to
+ the index of the variable binding for which an exception occurred (if
+ there is more than one then it is an implementation decision as to
+ which is used), and the variable binding list from the original
+ request SHALL be returned with the response PDU.
+
+4.2.2.2.2. Mapping endOfMibView
+
+ When an SNMPv2 access to MIB data returns a variable binding
+ containing an endOfMibView exception, it indicates that there are no
+ object instances available which lexicographically follow the object
+ in the request. In an SNMPv1 agent, this condition normally results
+ in a noSuchName error, and so the error-status field of the response
+ PDU SHALL be set to noSuchName. Also, the error-index field SHALL be
+ set to the index of the variable binding for which an exception
+ occurred (if there is more than one then it is an implementation
+ decision as to which is used), and the variable binding list from the
+ original request SHALL be returned with the response PDU.
+
+4.2.2.3. Processing An SNMPv1 GetRequest
+
+ When processing an SNMPv1 GetRequest, the following procedures MUST
+ be followed when using an SNMPv2 access to MIB data.
+
+ When such an access to MIB data returns response data using SNMPv2
+ syntax and error-status values, then:
+
+ (1) If the error-status is anything other than noError,
+
+ - The error status SHALL be translated to an SNMPv1 error-
+ status using the table in section 4.4, "Error Status
+ Mappings".
+
+ - The error-index SHALL be set to the position (in the
+ original request) of the variable binding that caused the
+ error-status.
+
+ - The variable binding list of the response PDU SHALL be made
+ exactly the same as the variable binding list that was
+ received in the original request.
+
+
+
+
+
+Frye, et al. Best Current Practice [Page 18]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ (2) If the error-status is noError, the variable bindings SHALL be
+ checked for any SNMPv2 exception (noSuchObject or
+ noSuchInstance) or an SNMPv2 syntax that is unknown to SNMPv1
+ (Counter64). If there are any such variable bindings, one of
+ those variable bindings SHALL be selected (it is an
+ implementation choice as to which is selected), and:
+
+ - The error-status SHALL be set to noSuchName,
+
+ - The error-index SHALL be set to the position (in the
+ variable binding list of the original request) of the
+ selected variable binding, and
+
+ - The variable binding list of the response PDU SHALL be
+ exactly the same as the variable binding list that was
+ received in the original request.
+
+ (3) If there are no such variable bindings, then:
+
+ - The error-status SHALL be set to noError,
+
+ - The error-index SHALL be set to zero, and
+
+ - The variable binding list of the response SHALL be composed
+ from the data as it is returned by the access to MIB data.
+
+4.2.2.4. Processing An SNMPv1 GetNextRequest
+
+ When processing an SNMPv1 GetNextRequest, the following procedures
+ MUST be followed when SNMPv2 access to MIB data is used as part of
+ processing the request. There may be repetitive accesses to MIB data
+ to try to find the first object which lexicographically follows each
+ of the objects in the request. This is implementation specific.
+ These procedures are followed only for data returned when using
+ SNMPv2 access to MIB data. Data returned using SNMPv1 access to MIB
+ data may be treated in the normal manner for an SNMPv1 request.
+
+ First, if the access to MIB data returns an error-status of anything
+ other than noError:
+
+ (1) The error status SHALL be translated to an SNMPv1 error-status
+ using the table in section 4.4, "Error Status Mappings".
+
+ (2) The error-index SHALL be set to the position (in the original
+ request) of the variable binding that caused the error-status.
+
+
+
+
+
+
+Frye, et al. Best Current Practice [Page 19]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ (3) The variable binding list of the response PDU SHALL be exactly
+ the same as the variable binding list that was received in the
+ original request.
+
+ Otherwise, if the access to MIB data returns an error-status of
+ noError:
+
+ (1) Any variable bindings containing an SNMPv2 syntax of Counter64
+ SHALL be considered to be not in view, and MIB data SHALL be
+ accessed as many times as is required until either a value other
+ than Counter64 is returned, or an error or endOfMibView
+ exception occurs.
+
+ (2) If there is any variable binding that contains an SNMPv2
+ exception endOfMibView (if there is more than one then it is an
+ implementation decision as to which is chosen):
+
+ - The error-status SHALL be set to noSuchName,
+
+ - The error-index SHALL be set to the position (in the
+ variable binding list of the original request) of the
+ variable binding that returned such an SNMPv2 exception, and
+
+ - The variable binding list of the response PDU SHALL be
+ exactly the same as the variable binding list that was
+ received in the original request.
+
+ (3) If there are no such variable bindings, then:
+
+ - The error-status SHALL be set to noError,
+
+ - The error-index SHALL be set to zero, and
+
+ - The variable binding list of the response SHALL be composed
+ from the data as it is returned by the access to MIB data.
+
+4.2.2.5. Processing An SNMPv1 SetRequest
+
+ When processing an SNMPv1 SetRequest, the following procedures MUST
+ be followed when using SNMPv2 access to MIB data.
+
+ When such MIB access returns response data using SNMPv2 syntax and
+ error-status values, and the error-status is anything other than
+ noError, then:
+
+ - The error status SHALL be translated to an SNMPv1 error-status
+ using the table in section 4.4, "Error Status Mappings".
+
+
+
+
+Frye, et al. Best Current Practice [Page 20]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ - The error-index SHALL be set to the position (in the original
+ request) of the variable binding that caused the error-status.
+
+ - The variable binding list of the response PDU SHALL be made
+ exactly the same as the variable binding list that was received in
+ the original request.
+
+4.2.3. Notification Originator
+
+ A notification originator must be able to translate between SNMPv1
+ notification parameters and SNMPv2 notification parameters in order
+ to send a notification using a particular SNMP message version. If a
+ notification is generated using SNMPv1 notification parameters, and
+ configuration information specifies that notifications be sent using
+ SNMPv2c or SNMPv3, the notification parameters must be translated to
+ SNMPv2 notification parameters. Likewise, if a notification is
+ generated using SNMPv2 notification parameters, and configuration
+ information specifies that notifications be sent using SNMPv1, the
+ notification parameters must be translated to SNMPv1 notification
+ parameters. In this case, if the notification cannot be translated
+ (due to the presence of a Counter64 type), it will not be sent using
+ SNMPv1.
+
+ When a notification originator generates a notification, using
+ parameters obtained from the SNMP-TARGET-MIB and SNMP-NOTIFICATION-
+ MIB, if the SNMP version used to generate the notification is SNMPv1,
+ the PDU type used will always be a TrapPDU, regardless of whether the
+ value of snmpNotifyType is trap(1) or inform(2).
+
+ Note also that access control and notification filtering are
+ performed in the usual manner for notifications, regardless of the
+ SNMP message version to be used when sending a notification. The
+ parameters for performing access control are found in the usual
+ manner (i.e., from inspecting the SNMP-TARGET-MIB and SNMP-
+ NOTIFICATION-MIB). In particular, when generating an SNMPv1 Trap, in
+ order to perform the access check specified in [RFC3413], section
+ 3.3, bullet (3), the notification originator may need to generate a
+ value for snmpTrapOID.0 as described in section 3.1, bullets (2) and
+ (3) of this document. If the SNMPv1 notification parameters being
+ used were previously translated from a set of SNMPv2 notification
+ parameters, this value may already be known, in which case it need
+ not be generated.
+
+4.2.4. Notification Receiver
+
+ There are no special requirements of a notification receiver.
+ However, an implementation may find it useful to allow a higher level
+ application to request whether notifications should be delivered to a
+
+
+
+Frye, et al. Best Current Practice [Page 21]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ higher level application using SNMPv1 notification parameter or
+ SNMPv2 notification parameters. The notification receiver would then
+ translate notification parameters when required in order to present a
+ notification using the desired set of parameters.
+
+4.3. Proxy Implementations
+
+ A proxy implementation may be used to enable communication between
+ entities which support different SNMP message versions. This is
+ accomplished in a proxy forwarder application by performing
+ translations on PDUs. These translations depend on the PDU type, the
+ SNMP version of the packet containing a received PDU, and the SNMP
+ version to be used to forward a received PDU. The following sections
+ describe these translations. In all cases other than those described
+ below, the proxy SHALL forward a received PDU without change, subject
+ to size constraints as defined in section 5.3 (Community MIB) of this
+ document. Note that in the following sections, the 'Upstream
+ Version' refers to the version used between the command generator or
+ notification receiver and the proxy, and the 'Downstream Version'
+ refers to the version used between the proxy and the command
+ responder or notification originator, regardless of the PDU type or
+ direction.
+
+4.3.1. Upstream Version Greater Than Downstream Version
+
+ - If a GetBulkRequest-PDU is received and must be forwarded using
+ the SNMPv1 message version, the proxy forwarder SHALL act as if
+ the non-repeaters and max-repetitions fields were both set to 0,
+ and SHALL set the tag of the PDU to GetNextRequest-PDU.
+
+ - If a GetResponse-PDU is received whose error-status field has a
+ value of 'tooBig', and the message will be forwarded using the
+ SNMPv2c or SNMPv3 message version, and the original request
+ received by the proxy was not a GetBulkRequest-PDU, the proxy
+ forwarder SHALL remove the contents of the variable-bindings field
+ and ensure that the error-index field is set to 0 before
+ forwarding the response.
+
+ - If a GetResponse-PDU is received whose error-status field has a
+ value of 'tooBig', and the message will be forwarded using the
+ SNMPv2c or SNMPv3 message version, and the original request
+ received by the proxy was a GetBulkRequest-PDU, the proxy
+ forwarder SHALL re-send the forwarded request (which would have
+ been altered to be a GetNextRequest-PDU) with all but the first
+ variable-binding removed. The proxy forwarder SHALL only re-send
+ such a request a single time. If the resulting GetResponse-PDU
+ also contains an error-status field with a value of 'tooBig', then
+ the proxy forwarder SHALL remove the contents of the variable-
+
+
+
+Frye, et al. Best Current Practice [Page 22]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ bindings field, and change the error-status field to 'noError',
+ and ensure that the error-index field is set to 0 before
+ forwarding the response. Note that if the original request only
+ contained a single variable-binding, the proxy may skip re-sending
+ the request and simply remove the variable-bindings and change the
+ error-status to 'noError'. Further note that, while it might have
+ been possible to fit more variable bindings if the proxy only re-
+ sent the request multiple times, and stripped only a single
+ variable binding from the request at a time, this is deemed too
+ expensive. The approach described here preserves the behaviour of
+ a GetBulkRequest as closely as possible, without incurring the
+ cost of re-sending the request multiple times.
+
+ - If a Trap-PDU is received, and will be forwarded using the SNMPv2c
+ or SNMPv3 message version, the proxy SHALL apply the translation
+ rules described in section 3, and SHALL forward the notification
+ as an SNMPv2-Trap-PDU.
+
+ Note that when an SNMPv1 agent generates a message containing a
+ Trap-PDU which is subsequently forwarded by one or more proxy
+ forwarders using SNMP versions other than SNMPv1, the community
+ string and agent-addr fields from the original message generated
+ by the SNMPv1 agent will be preserved through the use of the
+ snmpTrapAddress and snmpTrapCommunity objects.
+
+4.3.2. Upstream Version Less Than Downstream Version
+
+ - If a GetResponse-PDU is received in response to a GetRequest-PDU
+ (previously generated by the proxy) which contains variable-
+ bindings of type Counter64 or which contain an SNMPv2 exception
+ code, and the message would be forwarded using the SNMPv1 message
+ version, the proxy MUST generate an alternate response PDU
+ consisting of the request-id and variable bindings from the
+ original SNMPv1 request, containing a noSuchName error-status
+ value, and containing an error-index value indicating the position
+ of the variable-binding containing the Counter64 type or exception
+ code.
+
+ - If a GetResponse-PDU is received in response to a GetNextRequest-
+ PDU (previously generated by the proxy) which contains variable-
+ bindings that contain an SNMPv2 exception code, and the message
+ would be forwarded using the SNMPv1 message version, the proxy
+ MUST generate an alternate response PDU consisting of the
+ request-id and variable bindings from the original SNMPv1 request,
+ containing a noSuchName error-status value, and containing an
+ error-index value indicating the position of the variable-binding
+ containing the exception code.
+
+
+
+
+Frye, et al. Best Current Practice [Page 23]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ - If a GetResponse-PDU is received in response to a GetNextRequest-
+ PDU (previously generated by the proxy) which contains variable-
+ bindings of type Counter64, the proxy MUST re-send the entire
+ GetNextRequest-PDU, with the following modifications. For any
+ variable bindings in the received GetResponse which contained
+ Counter64 types, the proxy substitutes the object names of these
+ variable bindings for the corresponding object names in the
+ previously-sent GetNextRequest. The proxy MUST repeat this
+ process until no Counter64 objects are returned. Note that an
+ implementation may attempt to optimize this process of skipping
+ Counter64 objects. One approach to such an optimization would be
+ to replace the last sub-identifier of the object names of varbinds
+ containing a Counter64 type with 65535 if that sub-identifier is
+ less than 65535, or with 4294967295 if that sub-identifier is
+ greater than 65535. This approach should skip multiple instances
+ of the same Counter64 object, while maintaining compatibility with
+ some broken agent implementations (which only use 16-bit integers
+ for sub-identifiers).
+
+ Deployment Hint: The process of repeated GetNext requests used by
+ a proxy when Counter64 types are returned can be expensive. When
+ deploying a proxy, this can be avoided by configuring the target
+ agents to which the proxy forwards requests in a manner such that
+ any objects of type Counter64 are in fact not-in-view for the
+ principal that the proxy is using when communicating with these
+ agents. However, when using such a configuration, one should be
+ careful to use a different principal for communicating with the
+ target agent when an incoming SNMPv2c or SNMPv3 request is
+ received, to ensure that objects of type Counter64 are properly
+ returned.
+
+ - If a GetResponse-PDU is received which contains an SNMPv2 error-
+ status value of wrongValue, wrongEncoding, wrongType, wrongLength,
+ inconsistentValue, noAccess, notWritable, noCreation,
+ inconsistentName, resourceUnavailable, commitFailed, undoFailed,
+ or authorizationError, and the message would be forwarded using
+ the SNMPv1 message version, the error-status value is modified
+ using the mappings in section 4.4.
+
+ - If an SNMPv2-Trap-PDU is received, and will be forwarded using the
+ SNMPv1 message version, the proxy SHALL apply the translation
+ rules described in section 3, and SHALL forward the notification
+ as a Trap-PDU. Note that if the translation fails due to the
+ existence of a Counter64 data-type in the received SNMPv2-Trap-
+ PDU, the trap cannot be forwarded using SNMPv1.
+
+
+
+
+
+
+Frye, et al. Best Current Practice [Page 24]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ - If an InformRequest-PDU is received, any configuration information
+ indicating that it would be forwarded using the SNMPv1 message
+ version SHALL be ignored. An InformRequest-PDU can only be
+ forwarded using the SNMPv2c or SNMPv3 message version. The
+ InformRequest-PDU may still be forwarded if there is other
+ configuration information indicating that it should be forwarded
+ using SNMPv2c or SNMPv3.
+
+4.4. Error Status Mappings
+
+ The following tables shows the mappings of SNMPv1 error-status values
+ into SNMPv2 error-status values, and the mappings of SNMPv2 error-
+ status values into SNMPv1 error-status values.
+
+ SNMPv1 error-status SNMPv2 error-status
+ =================== ===================
+ noError noError
+ tooBig tooBig
+ noSuchName noSuchName
+ badValue badValue
+ genErr genErr
+
+
+ SNMPv2 error-status SNMPv1 error-status
+ =================== ===================
+ noError noError
+ tooBig tooBig
+ genErr genErr
+ wrongValue badValue
+ wrongEncoding badValue
+ wrongType badValue
+ wrongLength badValue
+ inconsistentValue badValue
+ noAccess noSuchName
+ notWritable noSuchName
+ noCreation noSuchName
+ inconsistentName noSuchName
+ resourceUnavailable genErr
+ commitFailed genErr
+ undoFailed genErr
+ authorizationError noSuchName
+
+ Whenever the SNMPv2 error-status value of authorizationError is
+ translated to an SNMPv1 error-status value of noSuchName, the value
+ of snmpInBadCommunityUses MUST be incremented.
+
+
+
+
+
+
+Frye, et al. Best Current Practice [Page 25]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+5. Message Processing Models and Security Models
+
+ In order to adapt SNMPv1 (and SNMPv2c) into the SNMP architecture,
+ the following Message Processing (MP) models are defined in this
+ document:
+
+ - The SNMPv1 Message Processing Model
+
+ - The SNMPv1 Community-Based Security Model
+
+ - The SNMPv2c Message Processing Model
+
+ - The SNMPv2c Community-Based Security Model
+
+ In most respects, the SNMPv1 Message Processing Model and the SNMPv2c
+ Message Processing Model are identical, and so these are not
+ discussed independently in this document. Differences between the
+ two models are described as required.
+
+ Similarly, the SNMPv1 Community-Based Security Model and the SNMPv2c
+ Community-Based Security Model are nearly identical, and so are not
+ discussed independently. Differences between these two models are
+ also described as required.
+
+5.1. Mappings
+
+ The SNMPv1 (and SNMPv2c) Message Processing Model and Security Model
+ require mappings between parameters used in SNMPv1 (and SNMPv2c)
+ messages, and the version independent parameters used in the SNMP
+ architecture [RFC3411]. The parameters which MUST be mapped consist
+ of the SNMPv1 (and SNMPv2c) community name, and the SNMP securityName
+ and contextEngineID/contextName pair. A MIB module (the SNMP-
+ COMMUNITY-MIB) is provided in this document in order to perform these
+ mappings. This MIB provides mappings in both directions, that is, a
+ community name may be mapped to a securityName, contextEngineID, and
+ contextName, or the combination of securityName, contextEngineID, and
+ contextName may be mapped to a community name.
+
+5.2. The SNMPv1 MP Model and SNMPv1 Community-based Security Model
+
+ The SNMPv1 Message Processing Model handles processing of SNMPv1
+ messages. The processing of messages is handled generally in the
+ same manner as described in RFC 1157 [RFC1157], with differences and
+ clarifications as described in the following sections. The
+ SnmpMessageProcessingModel value for SNMPv1 is 0 (the value for
+ SNMPv2c is 1).
+
+
+
+
+
+Frye, et al. Best Current Practice [Page 26]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+5.2.1. Processing An Incoming Request
+
+ In RFC 1157 [RFC1157], section 4.1, item (3) for an entity which
+ receives a message, states that various parameters are passed to the
+ "desired authentication scheme". The desired authentication scheme
+ in this case is the SNMPv1 Community-Based Security Model, which will
+ be called using the processIncomingMsg ASI. The parameters passed to
+ this ASI are:
+
+ - The messageProcessingModel, which will be 0 (or 1 for SNMPv2c).
+
+ - The maxMessageSize, which should be the maximum size of a message
+ that the receiving entity can generate (since there is no such
+ value in the received message).
+
+ - The securityParameters, which consist of the community string and
+ the message's source and destination transport domains and
+ addresses.
+
+ - The securityModel, which will be 1 (or 2 for SNMPv2c).
+
+ - The securityLevel, which will be noAuthNoPriv.
+
+ - The wholeMsg and wholeMsgLength.
+
+ The Community-Based Security Model will attempt to select a row in
+ the snmpCommunityTable. This is done by performing a search through
+ the snmpCommunityTable in lexicographic order. The first entry for
+ which the following matching criteria are satisfied will be selected:
+
+ - The community string is equal to the snmpCommunityName value.
+
+ - If the snmpCommunityTransportTag is an empty string, it is ignored
+ for the purpose of matching. If the snmpCommunityTransportTag is
+ not an empty string, the transportDomain and transportAddress from
+ which the message was received must match one of the entries in
+ the snmpTargetAddrTable selected by the snmpCommunityTransportTag
+ value. The snmpTargetAddrTMask object is used as described in
+ section 5.3 when checking whether the transportDomain and
+ transportAddress matches a entry in the snmpTargetAddrTable.
+
+ If no such entry can be found, an authentication failure occurs as
+ described in RFC 1157 [RFC1157], and the snmpInBadCommunityNames
+ counter is incremented.
+
+
+
+
+
+
+
+Frye, et al. Best Current Practice [Page 27]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ The parameters returned from the Community-Based Security Model are:
+
+ - The securityEngineID, which will always be the local value of
+ snmpEngineID.0.
+
+ - The securityName, which will be the value of
+ snmpCommunitySecurityName from the selected row in the
+ snmpCommunityTable.
+
+ - The scopedPDU. Note that this parameter will actually consist of
+ three values, the contextSnmpEngineID (which will be the value of
+ snmpCommunityContextEngineID from the selected entry in the
+ snmpCommunityTable), the contextName (which will be the value of
+ snmpCommunityContextName from the selected entry in the
+ snmpCommunityTable), and the PDU. These must be separate values,
+ since the first two do not actually appear in the message.
+
+ - The maxSizeResponseScopedPDU, which will be derived using the
+ minimum of the maxMessageSize above, and the value of
+ snmpTargetAddrMMS of the selected row in the snmpTargetAddrTable.
+ If no such entry was selected, then this value will be derived
+ from the maxMessageSize only.
+
+ - The securityStateReference, which MUST contain the community
+ string from the original request.
+
+ The appropriate SNMP application will then be called (depending on
+ the value of the contextEngineID and the request type in the PDU)
+ using the processPdu ASI. The parameters passed to this ASI are:
+
+ - The messageProcessingModel, which will be 0 (or 1 for SNMPv2c).
+
+ - The securityModel, which will be 1 (or 2 for SNMPv2c).
+
+ - The securityName, which was returned from the call to
+ processIncomingMsg.
+
+ - The securityLevel, which is noAuthNoPriv.
+
+ - The contextEngineID, which was returned as part of the ScopedPDU
+ from the call to processIncomingMsg.
+
+ - The contextName, which was returned as part of the ScopedPDU from
+ the call to processIncomingMsg.
+
+ - The pduVersion, which should indicate an SNMPv1 version PDU (if
+ the message version was SNMPv2c, this would be an SNMPv2 version
+ PDU).
+
+
+
+Frye, et al. Best Current Practice [Page 28]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ - The PDU, which was returned as part of the ScopedPDU from the call
+ to processIncomingMsg.
+
+ - The maxSizeResponseScopedPDU which was returned from the call to
+ processIncomingMsg.
+
+ - The stateReference which was returned from the call to
+ processIncomingMsg.
+
+ The SNMP application should process the request as described
+ previously in this document. Note that access control is applied by
+ an SNMPv3 command responder application as usual. The parameters as
+ passed to the processPdu ASI will be used in calls to the
+ isAccessAllowed ASI.
+
+5.2.2. Generating An Outgoing Response
+
+ There is no special processing required for generating an outgoing
+ response. However, the community string used in an outgoing response
+ must be the same as the community string from the original request.
+ The original community string MUST be present in the
+ securityStateReference information of the original request.
+
+5.2.3. Generating An Outgoing Notification
+
+ In a multi-lingual SNMP entity, the parameters used for generating
+ notifications will be obtained by examining the SNMP-TARGET-MIB and
+ SNMP-NOTIFICATION-MIB. These parameters will be passed to the SNMPv1
+ Message Processing Model using the sendPdu ASI. The SNMPv1 Message
+ Processing Model will attempt to locate an appropriate community
+ string in the snmpCommunityTable based on the parameters passed to
+ the sendPdu ASI. This is done by performing a search through the
+ snmpCommunityTable in lexicographic order. The first entry for which
+ the following matching criteria are satisfied will be selected:
+
+ - The securityName must be equal to the snmpCommunitySecurityName
+ value.
+
+ - The contextEngineID must be equal to the
+ snmpCommunityContextEngineID value.
+
+ - The contextName must be equal to the snmpCommunityContextName
+ value.
+
+
+
+
+
+
+
+
+Frye, et al. Best Current Practice [Page 29]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ - If the snmpCommunityTransportTag is an empty string, it is ignored
+ for the purpose of matching. If the snmpCommunityTransportTag is
+ not an empty string, the transportDomain and transportAddress must
+ match one of the entries in the snmpTargetAddrTable selected by
+ the snmpCommunityTransportTag value.
+
+ If no such entry can be found, the notification is not sent.
+ Otherwise, the community string used in the outgoing notification
+ will be the value of the snmpCommunityName column of the selected
+ row.
+
+5.2.4. Proxy Forwarding Of Requests
+
+ In a proxy forwarding application, when a received request is to be
+ forwarded using the SNMPv1 Message Processing Model, the parameters
+ used for forwarding will be obtained by examining the SNMP-PROXY-MIB
+ and the SNMP-TARGET-MIB. These parameters will be passed to the
+ SNMPv1 Message Processing Model using the sendPdu ASI. The SNMPv1
+ Message Processing Model will attempt to locate an appropriate
+ community string in the snmpCommunityTable based on the parameters
+ passed to the sendPdu ASI. This is done by performing a search
+ through the snmpCommunityTable in lexicographic order. The first
+ entry for which the following matching criteria are satisfied will be
+ selected:
+
+ - The securityName must be equal to the snmpCommunitySecurityName
+ value.
+
+ - The contextEngineID must be equal to the
+ snmpCommunityContextEngineID value.
+
+ - The contextName must be equal to the snmpCommunityContextName
+ value.
+
+ If no such entry can be found, the proxy forwarding application
+ should follow the procedure described in RFC 3413 [RFC3413], section
+ 3.5.1.1, item (2). This procedure states that the snmpProxyDrops
+ counter [RFC3418] is incremented, and that a Response-PDU is
+ generated by calling the Dispatcher using the returnResponsePdu
+ abstract service interface.
+
+5.3. The SNMP Community MIB Module
+
+ The SNMP-COMMUNITY-MIB contains objects for mapping between community
+ strings and version-independent SNMP message parameters. In
+ addition, this MIB provides a mechanism for performing source address
+ validation on incoming requests, and for selecting community strings
+ based on target addresses for outgoing notifications. These two
+
+
+
+Frye, et al. Best Current Practice [Page 30]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ features are accomplished by providing a tag in the
+ snmpCommunityTable which selects sets of entries in the
+ snmpTargetAddrTable [RFC3413]. In addition, the SNMP-COMMUNITY-MIB
+ augments the snmpTargetAddrTable with a transport address mask value
+ and a maximum message size value. These values are used only where
+ explicitly stated. In cases where the snmpTargetAddrTable is used
+ without mention of these augmenting values, the augmenting values
+ should be ignored.
+
+ The mask value, snmpTargetAddrTMask, allows selected entries in the
+ snmpTargetAddrTable to specify multiple addresses (rather than just a
+ single address per entry). This would typically be used to specify a
+ subnet in an snmpTargetAddrTable rather than just a single address.
+ The mask value is used to select which bits of a transport address
+ must match bits of the corresponding instance of
+ snmpTargetAddrTAddress, in order for the transport address to match a
+ particular entry in the snmpTargetAddrTable. The value of an
+ instance of snmpTargetAddrTMask must always be an OCTET STRING whose
+ length is either zero or the same as that of the corresponding
+ instance of snmpTargetAddrTAddress.
+
+ Note that the snmpTargetAddrTMask object is only used where
+ explicitly stated. In particular, it is not used when generating
+ notifications (i.e., when generating notifications, entries in the
+ snmpTargetAddrTable only specify individual addresses). If use of
+ the snmpTargetAddrTMask object is not mentioned in text describing
+ matching addresses in the snmpTargetAddrTable, then its value MUST be
+ ignored.
+
+ When checking whether a transport address matches an entry in the
+ snmpTargetAddrTable, if the value of snmpTargetAddrTMask is a zero-
+ length OCTET STRING, the mask value is ignored, and the value of
+ snmpTargetAddrTAddress must exactly match a transport address.
+ Otherwise, each bit of each octet in the snmpTargetAddrTMask value
+ corresponds to the same bit of the same octet in the
+ snmpTargetAddrTAddress value. For bits that are set in the
+ snmpTargetAddrTMask value (i.e., bits equal to 1), the corresponding
+ bits in the snmpTargetAddrTAddress value must match the bits in a
+ transport address. If all such bits match, the transport address is
+ matched by that snmpTargetAddrTable entry. Otherwise, the transport
+ address is not matched.
+
+ The maximum message size value, snmpTargetAddrMMS, is used to
+ determine the maximum message size acceptable to another SNMP entity
+ when the value cannot be determined from the protocol.
+
+
+
+
+
+
+Frye, et al. Best Current Practice [Page 31]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ SNMP-COMMUNITY-MIB DEFINITIONS ::= BEGIN
+
+ IMPORTS
+ IpAddress,
+ MODULE-IDENTITY,
+ OBJECT-TYPE,
+ Integer32,
+ snmpModules
+ FROM SNMPv2-SMI
+ RowStatus,
+ StorageType
+ FROM SNMPv2-TC
+ SnmpAdminString,
+ SnmpEngineID
+ FROM SNMP-FRAMEWORK-MIB
+ SnmpTagValue,
+ snmpTargetAddrEntry
+ FROM SNMP-TARGET-MIB
+ MODULE-COMPLIANCE,
+ OBJECT-GROUP
+ FROM SNMPv2-CONF;
+
+ snmpCommunityMIB MODULE-IDENTITY
+ LAST-UPDATED "200308060000Z" -- 06 Aug 2003, midnight
+ ORGANIZATION "SNMPv3 Working Group"
+ CONTACT-INFO "WG-email: snmpv3@lists.tislabs.com
+ Subscribe: majordomo@lists.tislabs.com
+ In msg body: subscribe snmpv3
+
+ Co-Chair: Russ Mundy
+ SPARTA, Inc
+ Postal: 7075 Samuel Morse Drive
+ Columbia, MD 21045
+ USA
+ EMail: mundy@tislabs.com
+ Phone: +1 410-872-1515
+
+ Co-Chair: David Harrington
+ Enterasys Networks
+ Postal: 35 Industrial Way
+ P. O. Box 5005
+ Rochester, New Hampshire 03866-5005
+ USA
+ EMail: dbh@enterasys.com
+ Phone: +1 603-337-2614
+
+ Co-editor: Rob Frye
+ Vibrant Solutions
+
+
+
+Frye, et al. Best Current Practice [Page 32]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ Postal: 2711 Prosperity Ave
+ Fairfax, Virginia 22031
+ USA
+ E-mail: rfrye@vibrant-1.com
+ Phone: +1-703-270-2000
+
+ Co-editor: David B. Levi
+ Nortel Networks
+ Postal: 3505 Kesterwood Drive
+ Knoxville, Tennessee 37918
+ E-mail: dlevi@nortelnetworks.com
+ Phone: +1 865 686 0432
+
+ Co-editor: Shawn A. Routhier
+ Wind River Systems, Inc.
+ Postal: 500 Wind River Way
+ Alameda, CA 94501
+ E-mail: sar@epilogue.com
+ Phone: +1 510 749 2095
+
+ Co-editor: Bert Wijnen
+ Lucent Technologies
+ Postal: Schagen 33
+ 3461 GL Linschoten
+ Netherlands
+ Email: bwijnen@lucent.com
+ Phone: +31-348-407-775
+ "
+
+ DESCRIPTION
+ "This MIB module defines objects to help support
+ coexistence between SNMPv1, SNMPv2c, and SNMPv3.
+
+ Copyright (C) The Internet Society (2003) This
+ version of this MIB module is part of RFC 3584;
+ see the RFC itself for full legal notices."
+
+ REVISION "200308060000Z" -- 06 Aug 2003
+ DESCRIPTION
+ "Updated the LAST-UPDATED, CONTACT-INFO, and REVISION
+ clauses and added a copyright notice to the
+ DESCRIPTION clause of the MIB module's
+ MODULE-IDENTITY invocation.
+
+ Updated the description of snmpCommunityTransportTag
+ to make it consistent with the rest of the document.
+
+ Updated the description of `snmpTargetAddrMMS' to
+
+
+
+Frye, et al. Best Current Practice [Page 33]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ clarify that a value of 0 means that the maximum
+ message size is unknown.
+
+ Changed the name of 'snmpCommunityGroup' to
+ snmpCommunityTableGroup to avoid a name conflict
+ with the SNMPv2-MIB.
+
+ Updated DESCRIPTION of snmpCommunityName.
+
+ Updated DESCRIPTION of snmpTrapCommunity.
+
+ Added snmpCommunityMIBFullCompliance.
+
+ This version published as RFC 3584."
+
+ REVISION "200003060000Z" -- 6 Mar 2000
+ DESCRIPTION "This version published as RFC 2576."
+
+ ::= { snmpModules 18 }
+
+-- Administrative assignments ************************************
+
+snmpCommunityMIBObjects
+ OBJECT IDENTIFIER ::= { snmpCommunityMIB 1 }
+
+snmpCommunityMIBConformance
+ OBJECT IDENTIFIER ::= { snmpCommunityMIB 2 }
+
+--
+-- The snmpCommunityTable contains a database of community
+-- strings. This table provides mappings between community
+-- strings, and the parameters required for View-based Access
+-- Control.
+--
+
+snmpCommunityTable OBJECT-TYPE
+ SYNTAX SEQUENCE OF SnmpCommunityEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "The table of community strings configured in the SNMP
+ engine's Local Configuration Datastore (LCD)."
+ ::= { snmpCommunityMIBObjects 1 }
+
+snmpCommunityEntry OBJECT-TYPE
+ SYNTAX SnmpCommunityEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+
+
+
+Frye, et al. Best Current Practice [Page 34]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ DESCRIPTION
+ "Information about a particular community string."
+ INDEX { IMPLIED snmpCommunityIndex }
+ ::= { snmpCommunityTable 1 }
+
+SnmpCommunityEntry ::= SEQUENCE {
+ snmpCommunityIndex SnmpAdminString,
+ snmpCommunityName OCTET STRING,
+ snmpCommunitySecurityName SnmpAdminString,
+ snmpCommunityContextEngineID SnmpEngineID,
+ snmpCommunityContextName SnmpAdminString,
+ snmpCommunityTransportTag SnmpTagValue,
+ snmpCommunityStorageType StorageType,
+ snmpCommunityStatus RowStatus
+}
+
+snmpCommunityIndex OBJECT-TYPE
+ SYNTAX SnmpAdminString (SIZE(1..32))
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "The unique index value of a row in this table."
+ ::= { snmpCommunityEntry 1 }
+
+snmpCommunityName OBJECT-TYPE
+ SYNTAX OCTET STRING
+ MAX-ACCESS read-create
+ STATUS current
+ DESCRIPTION
+ "The community string for which a row in this table
+ represents a configuration. There is no SIZE constraint
+ specified for this object because RFC 1157 does not
+ impose any explicit limitation on the length of community
+ strings (their size is constrained indirectly by the
+ SNMP message size)."
+ ::= { snmpCommunityEntry 2 }
+
+snmpCommunitySecurityName OBJECT-TYPE
+ SYNTAX SnmpAdminString (SIZE(1..32))
+ MAX-ACCESS read-create
+ STATUS current
+ DESCRIPTION
+ "A human readable string representing the corresponding
+ value of snmpCommunityName in a Security Model
+ independent format."
+ ::= { snmpCommunityEntry 3 }
+
+snmpCommunityContextEngineID OBJECT-TYPE
+
+
+
+Frye, et al. Best Current Practice [Page 35]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ SYNTAX SnmpEngineID
+ MAX-ACCESS read-create
+ STATUS current
+ DESCRIPTION
+ "The contextEngineID indicating the location of the
+ context in which management information is accessed
+ when using the community string specified by the
+ corresponding instance of snmpCommunityName.
+
+ The default value is the snmpEngineID of the entity in
+ which this object is instantiated."
+ ::= { snmpCommunityEntry 4 }
+
+snmpCommunityContextName OBJECT-TYPE
+ SYNTAX SnmpAdminString (SIZE(0..32))
+ MAX-ACCESS read-create
+ STATUS current
+ DESCRIPTION
+ "The context in which management information is accessed
+ when using the community string specified by the
+ corresponding instance of snmpCommunityName."
+ DEFVAL { ''H } -- the empty string
+ ::= { snmpCommunityEntry 5 }
+
+snmpCommunityTransportTag OBJECT-TYPE
+ SYNTAX SnmpTagValue
+ MAX-ACCESS read-create
+ STATUS current
+ DESCRIPTION
+ "This object specifies a set of transport endpoints
+ which are used in two ways:
+ - to specify the transport endpoints from which an
+ SNMP entity will accept management requests, and
+ - to specify the transport endpoints to which a
+ notification may be sent using the community
+ string matching the corresponding instance of
+ snmpCommunityName.
+ In either case, if the value of this object has
+ zero-length, transport endpoints are not checked when
+ either authenticating messages containing this community
+ string, nor when generating notifications.
+
+ The transports identified by this object are specified
+ in the snmpTargetAddrTable. Entries in that table
+ whose snmpTargetAddrTagList contains this tag value
+ are identified.
+
+ If a management request containing a community string
+
+
+
+Frye, et al. Best Current Practice [Page 36]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ that matches the corresponding instance of
+ snmpCommunityName is received on a transport endpoint
+ other than the transport endpoints identified by this
+ object the request is deemed unauthentic.
+
+ When a notification is to be sent using an entry in
+ this table, if the destination transport endpoint of
+ the notification does not match one of the transport
+ endpoints selected by this object, the notification
+ is not sent."
+ DEFVAL { ''H } -- the empty string
+ ::= { snmpCommunityEntry 6 }
+
+snmpCommunityStorageType OBJECT-TYPE
+ SYNTAX StorageType
+ MAX-ACCESS read-create
+ STATUS current
+ DESCRIPTION
+ "The storage type for this conceptual row in the
+ snmpCommunityTable. Conceptual rows having the value
+ 'permanent' need not allow write-access to any
+ columnar object in the row."
+ ::= { snmpCommunityEntry 7 }
+
+snmpCommunityStatus OBJECT-TYPE
+ SYNTAX RowStatus
+ MAX-ACCESS read-create
+ STATUS current
+ DESCRIPTION
+ "The status of this conceptual row in the
+ snmpCommunityTable.
+
+ An entry in this table is not qualified for activation
+ until instances of all corresponding columns have been
+ initialized, either through default values, or through
+ Set operations. The snmpCommunityName and
+ snmpCommunitySecurityName objects must be explicitly set.
+
+ There is no restriction on setting columns in this table
+ when the value of snmpCommunityStatus is active(1)."
+ ::= { snmpCommunityEntry 8 }
+
+--
+-- The snmpTargetAddrExtTable
+--
+
+snmpTargetAddrExtTable OBJECT-TYPE
+ SYNTAX SEQUENCE OF SnmpTargetAddrExtEntry
+
+
+
+Frye, et al. Best Current Practice [Page 37]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "The table of mask and maximum message size (mms) values
+ associated with the snmpTargetAddrTable.
+
+ The snmpTargetAddrExtTable augments the
+ snmpTargetAddrTable with a transport address mask value
+ and a maximum message size value. The transport address
+ mask allows entries in the snmpTargetAddrTable to define
+ a set of addresses instead of just a single address.
+ The maximum message size value allows the maximum
+ message size of another SNMP entity to be configured for
+ use in SNMPv1 (and SNMPv2c) transactions, where the
+ message format does not specify a maximum message size."
+ ::= { snmpCommunityMIBObjects 2 }
+
+snmpTargetAddrExtEntry OBJECT-TYPE
+ SYNTAX SnmpTargetAddrExtEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "Information about a particular mask and mms value."
+ AUGMENTS { snmpTargetAddrEntry }
+ ::= { snmpTargetAddrExtTable 1 }
+
+SnmpTargetAddrExtEntry ::= SEQUENCE {
+ snmpTargetAddrTMask OCTET STRING,
+ snmpTargetAddrMMS Integer32
+}
+
+snmpTargetAddrTMask OBJECT-TYPE
+ SYNTAX OCTET STRING (SIZE (0..255))
+ MAX-ACCESS read-create
+ STATUS current
+ DESCRIPTION
+ "The mask value associated with an entry in the
+ snmpTargetAddrTable. The value of this object must
+ have the same length as the corresponding instance of
+ snmpTargetAddrTAddress, or must have length 0. An
+ attempt to set it to any other value will result in
+ an inconsistentValue error.
+
+ The value of this object allows an entry in the
+ snmpTargetAddrTable to specify multiple addresses.
+ The mask value is used to select which bits of
+ a transport address must match bits of the corresponding
+ instance of snmpTargetAddrTAddress, in order for the
+
+
+
+Frye, et al. Best Current Practice [Page 38]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ transport address to match a particular entry in the
+ snmpTargetAddrTable. Bits which are 1 in the mask
+ value indicate bits in the transport address which
+ must match bits in the snmpTargetAddrTAddress value.
+ Bits which are 0 in the mask indicate bits in the
+ transport address which need not match. If the
+ length of the mask is 0, the mask should be treated
+ as if all its bits were 1 and its length were equal
+ to the length of the corresponding value of
+ snmpTargetAddrTable.
+
+ This object may not be modified while the value of the
+ corresponding instance of snmpTargetAddrRowStatus is
+ active(1). An attempt to set this object in this case
+ will result in an inconsistentValue error."
+ DEFVAL { ''H }
+ ::= { snmpTargetAddrExtEntry 1 }
+
+snmpTargetAddrMMS OBJECT-TYPE
+ SYNTAX Integer32 (0|484..2147483647)
+ MAX-ACCESS read-create
+ STATUS current
+ DESCRIPTION
+ "The maximum message size value associated with an entry
+ in the snmpTargetAddrTable. Note that a value of 0 means
+ that the maximum message size is unknown."
+ DEFVAL { 484 }
+ ::= { snmpTargetAddrExtEntry 2 }
+
+--
+-- The snmpTrapAddress and snmpTrapCommunity objects are included
+-- in notifications that are forwarded by a proxy, which were
+-- originally received as SNMPv1 Trap messages.
+--
+
+snmpTrapAddress OBJECT-TYPE
+ SYNTAX IpAddress
+ MAX-ACCESS accessible-for-notify
+ STATUS current
+ DESCRIPTION
+ "The value of the agent-addr field of a Trap PDU which
+ is forwarded by a proxy forwarder application using
+ an SNMP version other than SNMPv1. The value of this
+ object SHOULD contain the value of the agent-addr field
+ from the original Trap PDU as generated by an SNMPv1
+ agent."
+ ::= { snmpCommunityMIBObjects 3 }
+
+
+
+
+Frye, et al. Best Current Practice [Page 39]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+snmpTrapCommunity OBJECT-TYPE
+ SYNTAX OCTET STRING
+ MAX-ACCESS accessible-for-notify
+ STATUS current
+ DESCRIPTION
+ "The value of the community string field of an SNMPv1
+ message containing a Trap PDU which is forwarded by a
+ a proxy forwarder application using an SNMP version
+ other than SNMPv1. The value of this object SHOULD
+ contain the value of the community string field from
+ the original SNMPv1 message containing a Trap PDU as
+ generated by an SNMPv1 agent. There is no SIZE
+ constraint specified for this object because RFC 1157
+ does not impose any explicit limitation on the length
+ of community strings (their size is constrained
+ indirectly by the SNMP message size)."
+ ::= { snmpCommunityMIBObjects 4 }
+
+-- Conformance Information **************************************
+
+snmpCommunityMIBCompliances OBJECT IDENTIFIER
+ ::= { snmpCommunityMIBConformance 1 }
+snmpCommunityMIBGroups OBJECT IDENTIFIER
+ ::= { snmpCommunityMIBConformance 2 }
+
+-- Compliance statements
+
+snmpCommunityMIBCompliance MODULE-COMPLIANCE
+ STATUS current
+ DESCRIPTION
+ "The compliance statement for SNMP engines which
+ implement the SNMP-COMMUNITY-MIB."
+
+ MODULE -- this module
+ MANDATORY-GROUPS { snmpCommunityTableGroup }
+
+ OBJECT snmpCommunityName
+ MIN-ACCESS read-only
+ DESCRIPTION "Write access is not required."
+
+ OBJECT snmpCommunitySecurityName
+ MIN-ACCESS read-only
+ DESCRIPTION "Write access is not required."
+
+ OBJECT snmpCommunityContextEngineID
+ MIN-ACCESS read-only
+ DESCRIPTION "Write access is not required."
+
+
+
+
+Frye, et al. Best Current Practice [Page 40]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ OBJECT snmpCommunityContextName
+ MIN-ACCESS read-only
+ DESCRIPTION "Write access is not required."
+
+ OBJECT snmpCommunityTransportTag
+ MIN-ACCESS read-only
+ DESCRIPTION "Write access is not required."
+
+ OBJECT snmpCommunityStorageType
+ MIN-ACCESS read-only
+ DESCRIPTION "Write access is not required."
+
+ OBJECT snmpCommunityStatus
+ MIN-ACCESS read-only
+ DESCRIPTION "Write access is not required."
+
+ ::= { snmpCommunityMIBCompliances 1 }
+
+snmpProxyTrapForwardCompliance MODULE-COMPLIANCE
+ STATUS current
+ DESCRIPTION
+ "The compliance statement for SNMP engines which
+ contain a proxy forwarding application which is
+ capable of forwarding SNMPv1 traps using SNMPv2c
+ or SNMPv3."
+ MODULE -- this module
+ MANDATORY-GROUPS { snmpProxyTrapForwardGroup }
+ ::= { snmpCommunityMIBCompliances 2 }
+
+snmpCommunityMIBFullCompliance MODULE-COMPLIANCE
+ STATUS current
+ DESCRIPTION
+ "The compliance statement for SNMP engines which
+ implement the SNMP-COMMUNITY-MIB with full read-create
+ access."
+
+ MODULE -- this module
+ MANDATORY-GROUPS { snmpCommunityTableGroup }
+ ::= { snmpCommunityMIBCompliances 3 }
+
+snmpCommunityTableGroup OBJECT-GROUP
+ OBJECTS {
+ snmpCommunityName,
+ snmpCommunitySecurityName,
+ snmpCommunityContextEngineID,
+ snmpCommunityContextName,
+ snmpCommunityTransportTag,
+ snmpCommunityStorageType,
+
+
+
+Frye, et al. Best Current Practice [Page 41]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ snmpCommunityStatus,
+ snmpTargetAddrTMask,
+ snmpTargetAddrMMS
+ }
+ STATUS current
+ DESCRIPTION
+ "A collection of objects providing for configuration
+ of community strings for SNMPv1 (and SNMPv2c) usage."
+ ::= { snmpCommunityMIBGroups 1 }
+
+snmpProxyTrapForwardGroup OBJECT-GROUP
+ OBJECTS {
+ snmpTrapAddress,
+ snmpTrapCommunity
+ }
+ STATUS current
+ DESCRIPTION
+ "Objects which are used by proxy forwarding applications
+ when translating traps between SNMP versions. These are
+ used to preserve SNMPv1-specific information when
+ translating to SNMPv2c or SNMPv3."
+ ::= { snmpCommunityMIBGroups 3 }
+
+END
+
+6. Intellectual Property Statement
+
+ The IETF takes no position regarding the validity or scope of any
+ intellectual property or other rights that might be claimed to
+ pertain to the implementation or use of the technology described in
+ this document or the extent to which any license under such rights
+ might or might not be available; neither does it represent that it
+ has made any effort to identify any such rights. Information on the
+ IETF's procedures with respect to rights in standards-track and
+ standards-related documentation can be found in BCP-11. Copies of
+ claims of rights made available for publication and any assurances of
+ licenses to be made available, or the result of an attempt made to
+ obtain a general license or permission for the use of such
+ proprietary rights by implementors or users of this specification can
+ be obtained from the IETF Secretariat.
+
+ The IETF invites any interested party to bring to its attention any
+ copyrights, patents or patent applications, or other proprietary
+ rights which may cover technology that may be required to practice
+ this standard. Please address the information to the IETF Executive
+ Director.
+
+
+
+
+
+Frye, et al. Best Current Practice [Page 42]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+7. Acknowledgments
+
+ This document is the result of the efforts of the SNMPv3 Working
+ Group. The design of the SNMP-COMMUNITY-MIB incorporates work done
+ by the authors of SNMPv2*:
+
+ Jeff Case (SNMP Research, Inc.)
+ David Harrington (Enterasys Networks)
+ David Levi (Nortel Networks)
+ Brian O'Keefe (Hewlett Packard)
+ Jon Saperia (IronBridge Networks, Inc.)
+ Steve Waldbusser (International Network Services)
+
+8. Security Considerations
+
+ Although SNMPv1 and SNMPv2 do not provide any security, allowing
+ community names to be mapped into securityName/contextName provides
+ the ability to use view-based access control to limit the access of
+ unsecured SNMPv1 and SNMPv2 operations. In fact, it is important for
+ network administrators to make use of this capability in order to
+ avoid unauthorized access to MIB data that would otherwise be secure.
+
+ When a proxy implementation translates messages between SNMPv1 (or
+ SNMPv2c) and SNMPv3, there may be a loss of security. For example,
+ an SNMPv3 message received using authentication and privacy which is
+ subsequently forwarded using SNMPv1 will lose the security benefits
+ of using authentication and privacy (also known as confidentiality).
+ Careful configuration of proxies is required to address such
+ situations. One approach to deal with such situations might be to
+ use an encrypted tunnel.
+
+ There are a number of management objects defined in this MIB module
+ with a MAX-ACCESS clause of read-write and/or read-create. Such
+ objects may be considered sensitive or vulnerable in some network
+ environments. The support for SET operations in a non-secure
+ environment without proper protection can have a negative effect on
+ network operations. These are the tables and objects and their
+ sensitivity/vulnerability:
+
+ - The snmpCommunityTable allows creation and deletion of community
+ strings, which is potentially a serious security hole. Access to
+ this table should be greatly restricted, preferably by only
+ allowing write access using SNMPv3 VACM and USM, with
+ authentication and privacy.
+
+ - The snmpTargetAddrExtTable contains write-able objects which may
+ also be considered sensitive, and so access to it should be
+ restricted as well.
+
+
+
+Frye, et al. Best Current Practice [Page 43]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ Some of the readable objects in this MIB module (i.e., objects with a
+ MAX-ACCESS other than not-accessible) may be considered sensitive or
+ vulnerable in some network environments. It is thus important to
+ control even GET and/or NOTIFY access to these objects and possibly
+ to even encrypt the values of these objects when sending them over
+ the network via SNMP. These are the tables and objects and their
+ sensitivity/vulnerability:
+
+ - The snmpCommunityTable has the potential to expose community
+ strings which provide access to more information than that which
+ is available using the usual 'public' community string. For this
+ reason, a security administrator may wish to limit accessibility
+ to objects in the snmpCommunityTable, and in particular, to make
+ it inaccessible when using the 'public' community string.
+
+ SNMP versions prior to SNMPv3 did not include adequate security.
+ Even if the network itself is secure (for example by using IPSec),
+ even then, there is no control as to who on the secure network is
+ allowed to access and GET/SET (read/change/create/delete) the objects
+ in this MIB module.
+
+ It is RECOMMENDED that implementers consider the security features as
+ provided by the SNMPv3 framework (see [RFC3410], section 8),
+ including full support for the SNMPv3 cryptographic mechanisms (for
+ authentication and privacy).
+
+ Further, deployment of SNMP versions prior to SNMPv3 is NOT
+ RECOMMENDED. Instead, it is RECOMMENDED to deploy SNMPv3 and to
+ enable cryptographic security. It is then a customer/operator
+ responsibility to ensure that the SNMP entity giving access to an
+ instance of this MIB module is properly configured to give access to
+ the objects only to those principals (users) that have legitimate
+ rights to indeed GET or SET (change/create/delete) them.
+
+9. References
+
+9.1. Normative References
+
+ [RFC1155] Rose, M. and K. McCloghrie, "Structure and Identification
+ of Management Information for TCP/IP-based internets",
+ STD 16, RFC 1155, May 1990.
+
+ [RFC1157] Case, J., Fedor, M., Schoffstall, M. and C. Davin,
+ "Simple Network Management Protocol (SNMP)", STD 15, RFC
+ 1157, May 1990.
+
+ [RFC1212] Rose, M. and K. McCloghrie, Eds., "Concise MIB
+ Definitions", STD 16, RFC 1212, March 1991.
+
+
+
+Frye, et al. Best Current Practice [Page 44]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ [RFC1215] Rose, M., "A Convention for Defining Traps for use with
+ the SNMP", RFC 1215, March 1991.
+
+ [RFC1303] McCloghrie, K. and M. Rose, "A Convention for Describing
+ SNMP-based Agents", RFC 1303, February 1992.
+
+ [RFC1901] Case, J., McCloghrie, K., Rose, M. and S. Waldbusser,
+ "Introduction to Community-based SNMPv2", RFC 1901,
+ January 1996.
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+ [RFC2578] McCloghrie, K., Perkins, D. and J. Schoenwaelder,
+ "Structure of Management Information Version 2 (SMIv2)",
+ RFC 2578, STD 58, April 1999.
+
+ [RFC2579] McCloghrie, K., Perkins, D. and J. Schoenwaelder,
+ "Textual Conventions for SMIv2", STD 58, RFC 2579, April
+ 1999.
+
+ [RFC2580] McCloghrie, K., Perkins, D. and J. Schoenwaelder,
+ "Conformance Statements for SMIv2", STD 58, RFC 2580,
+ April 1999.
+
+ [RFC3411] Harrington, D., Presuhn, R. and B. Wijnen, "An
+ Architecture for Describing Simple Network Management
+ Protocol (SNMP) Management Frameworks", STD 62, RFC 3411,
+ December 2002.
+
+ [RFC3412] Case, J., Harrington, D., Presuhn, R. and B. Wijnen,
+ "Message Processing and Dispatching for the Simple
+ Network Management Protocol (SNMP)", STD 62, RFC 3412,
+ December 2002.
+
+ [RFC3413] Levi, D., Meyer, P. and B. Stewart, "Simple Network
+ Management Protocol (SNMP) Applications", STD 62, RFC
+ 3413, December 2002.
+
+ [RFC3414] Blumenthal, U. and B. Wijnen, "The User-Based Security
+ Model (USM) for Version 3 of the Simple Network
+ Management Protocol (SNMP)", STD 62, RFC 3414, December
+ 2002.
+
+ [RFC3415] Wijnen, B., Presuhn, R. and K. McCloghrie, "View-based
+ Access Control Model (VACM) for the Simple Network
+ Management Protocol (SNMP)", STD 62, RFC 3415, December
+ 2002.
+
+
+
+Frye, et al. Best Current Practice [Page 45]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ [RFC3416] Presuhn, R., Ed., "Version 2 of the Protocol Operations
+ for the Simple Network Management Protocol (SNMPv2)", STD
+ 62, RFC 3416, December 2002.
+
+ [RFC3417] Presuhn, R., Ed., "Transport Mappings for Version 2 of
+ the Simple Network Management Protocol (SNMPv2)", STD 62,
+ RFC 3417, December 2002.
+
+ [RFC3418] Presuhn, R., Ed., "Management Information Base (MIB) for
+ Version 2 of the Simple Network Management Protocol
+ (SNMP)", STD 62, RFC 3418, December 2002.
+
+ [ASN1] Information processing systems - Open Systems
+ Interconnection - Specification of Abstract Syntax
+ Notation One (ASN.1), International Organization for
+ Standardization. International Standard 8824, (December,
+ 1987).
+
+9.2. Informative References
+
+ [RFC1908] Case, J., McCloghrie, K., Rose, M. and S. Waldbusser,
+ "Coexistence between Version 1 and Version 2 of the
+ Internet-standard Network Management Framework", RFC
+ 1908, January 1996.
+
+ [RFC2089] Levi, D. and B. Wijnen, "Mapping SNMPv2 onto SNMPv1
+ within a bilingual SNMP agent", RFC 2089, January 1997.
+
+ [RFC2576] Frye, R., Levi, D., Routhier, S. and B. Wijnen,
+ "Coexistence between Version 1, Version 2, and Version 3
+ of the Internet-standard Network Management Framework",
+ RFC 2576, March 2000.
+
+ [RFC3410] Case, J., Mundy, R., Partain, D. and B. Stewart,
+ "Introduction and Applicability Statements for Internet-
+ Standard Management Framework", RFC 3410, December 2002.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Frye, et al. Best Current Practice [Page 46]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+Appendix A. Change Log
+
+A.1. Changes From RFC 2576
+
+ Section numbers below refer to the old section numbers from RFC 2576.
+ Some section numbers have changed since RFC 2576.
+
+ - Added text to abstract about conversion of MIBs from SMIv1 to
+ SMIv2.
+
+ - Added note at end of section 1.3 that all discussion of SNMPv2 PDU
+ types and protocol operations applies to both SNMPv2c and SNMPv3.
+
+ - Added text at end of section 1.4 to clarify that there is no such
+ thing as 'SNMPv3 access to MIB data', as SNMPv3 just uses SNMPv2
+ PDU types and protocol operations.
+
+ - Moved section 1.4 to the beginning of section 4.
+
+ - Changed "MUST" to "SHOULD" in item (3) of the first list in
+ Section 2.1.1 to since unconstrained INTEGER is not actually
+ illegal in SMIv2.
+
+ - Changed "SHOULD" to "MUST" in item (13) of the first list in
+ Section 2.1.1 to clarify that collecting related objects into
+ groups is required when translating a MIB module from SMIv1 to
+ SMIv2.
+
+ - Re-organized bullets in section 2.1.1 to improve clarity.
+
+ - Changed "SHOULD" to "MUST" in items (1) and (2) of Section 2.3
+ since those updates are indeed required when translating a
+ capabilities statement from the language defined by RFC 1303 into
+ SMIv2.
+
+ - In the second bullet of the last part of Section 3 listing the
+ SNMPv2 notification parameters, clarified that the snmpTrapOID
+ parameter refers to the value portion (not the name portion) of
+ the second variable-binding, and changed the wording in the text
+ under bullet (1) of Section 3.2 from "the snmpTrapOID" to "the
+ snmpTrapOID value" to emphasize this point.
+
+ - In bullet (6) of Section 3.2 emphasized that the SNMPv2 variable-
+ bindings do not include sysUpTime.0 an snmpTrapOID.0.
+
+ - In Section 4.2 clarified that the 'Upstream Version' refers to the
+ version used between the command generator or notification
+ receiver and the proxy, and the 'Downstream Version' refers to the
+
+
+
+Frye, et al. Best Current Practice [Page 47]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ version used between the proxy and the command responder or
+ notification originator. RFC 2576 neglected to mention the
+ notification receiver and notification originator.
+
+ - In Section 4.1.2 added text noting that SNMPv1 access to MIB data
+ SHOULD NOT be used when processing SNMPv2c or SNMPv3 messages and
+ re-worded final paragraph to note that the sub-sections that
+ follow are concerned solely with command responders that use
+ SNMPv2 access to MIB data while processing an SNMPv1 request.
+
+ - Re-worded first bullet, section 4.2.1, to make it more readable.
+
+ - In Section 4.2.1 clarified that the error-index field must be set
+ to zero in a translated GetResponse-PDU with an error-status of
+ 'tooBig' and made explicit the rationale for retrying a
+ GetBulkRequest-PDU only once.
+
+ - Added text to the Deployment Hint in Section 4.2.2 to clarify that
+ different principals should be used for SNMPv1 requests and
+ SNMPv2/v3c requests if for SNMPv1 requests a principal for which
+ Counter64 objects are not-in-view is used.
+
+ - In Section 5.2.1 clarified that the securityName value and the
+ scopedPDU's contextSnmpEngineID and contextName values come from
+ the selected entry in the snmpCommunityTable. Also clarified how
+ maxSizeResponseScopedPDU is determined and that
+ securityStateReference must contain the community string of the
+ original request.
+
+ - Added Section 5.2.4 on Proxy Forwarding Of Requests.
+
+ - In Section 5.3 clarified that snmpTargetAddrTMask is to be ignored
+ whenever its use is not explicitly called for.
+
+ - Updated the LAST-UPDATED, CONTACT-INFO, and REVISION clauses and
+ added a copyright notice to the DESCRIPTION clause of the MIB
+ module's MODULE-IDENTITY invocation.
+
+ - Added text to DESCRIPTION of snmpCommunityName and
+ snmpTrapCommunity to clarify why the object has no size
+ restriction.
+
+ - Updated the description of snmpCommunityTransportTag to make it
+ consistent with the rest of the document.
+
+ - Updated the description of 'snmpTargetAddrMMS' to clarify that a
+ value of 0 means that the maximum message size is unknown.
+
+
+
+
+Frye, et al. Best Current Practice [Page 48]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ - Changed the name of 'snmpCommunityGroup' to
+ 'snmpCommunityTableGroup' in order to resolve a name conflict with
+ the SNMPv2-MIB.
+
+ - Added compliance statement to SNMP-COMMUNITY-MIB for full read-
+ create compliance.
+
+ - Divided references into Normative References and Informative
+ Reference and updated them to point to current documents.
+
+ - Inserted current year into all copyright notices.
+
+ - Corrected various typographical and grammatical errors.
+
+A.2. Changes Between RFC 1908 and RFC 2576
+
+ - Editorial changes to comply with current RFC requirements.
+
+ - Added/updated copyright statements.
+
+ - Added Intellectual Property section.
+
+ - Replaced old introduction with complete new introduction/overview.
+
+ - Added content for the Security Considerations Section.
+
+ - Updated References to current documents.
+
+ - Updated text to use current SNMP terminology.
+
+ - Added coexistence for/with SNMPv3.
+
+ - Added description for SNMPv1 and SNMPv2c Message Processing Models
+ and SNMPv1 and SNMPv2c Community-based Security Models.
+
+ - Added snmpCommunityMIB so that SNMPv1 and SNMPv2 community strings
+ can be mapped into the SNMP Version Independent parameters which
+ can then be used for access control using the standard SNMPv3
+ View-based Access Control Model and the snmpVacmMIB.
+
+ - Added two MIB objects such that when an SNMPv1 notification (trap)
+ must be converted into an SNMPv2 notification we add those two
+ objects in order to preserve information about the address and
+ community of the originating SNMPv1 agent.
+
+ - Included (and extended) from RFC 2089 the SNMPv2 to SNMPv1 mapping
+ within a multi-lingual SNMP Engine.
+
+
+
+
+Frye, et al. Best Current Practice [Page 49]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+ - Use keywords from RFC 2119 to describe requirements for
+ compliance.
+
+ - Changed/added some rules for converting a MIB module from SMIv1 to
+ SMIv2.
+
+ - Extended and improved the description of Proxy Forwarder behaviour
+ when multiple SNMP versions are involved.
+
+Editors' Addresses
+
+ Rob Frye
+ Vibrant Solutions
+ 2711 Prosperity Ave
+ Fairfax, Virginia 22031
+ U.S.A.
+
+ Phone: +1 703 270 2000
+ EMail: rfrye@vibrant-1.com
+
+ David B. Levi
+ Nortel Networks
+ 3505 Kesterwood Drive
+ Knoxville, TN 37918
+ U.S.A.
+
+ Phone: +1 865 686 0432
+ EMail: dlevi@nortelnetworks.com
+
+ Shawn A. Routhier
+ Wind River Systems, Inc.
+ 500 Wind River Way
+ Alameda, CA 94501
+ U.S.A.
+
+ Phone: + 1 510 749 2095
+ EMail: sar@epilogue.com
+
+ Bert Wijnen
+ Lucent Technologies
+ Schagen 33
+ 3461 GL Linschoten
+ Netherlands
+
+ Phone: +31 348 407 775
+ EMail: bwijnen@lucent.com
+
+
+
+
+
+Frye, et al. Best Current Practice [Page 50]
+
+RFC 3584 Coexistence between SNMP versions August 2003
+
+
+Full Copyright Statement
+
+ Copyright (C) The Internet Society (2003). All Rights Reserved.
+
+ This document and translations of it may be copied and furnished to
+ others, and derivative works that comment on or otherwise explain it
+ or assist in its implementation may be prepared, copied, published
+ and distributed, in whole or in part, without restriction of any
+ kind, provided that the above copyright notice and this paragraph are
+ included on all such copies and derivative works. However, this
+ document itself may not be modified in any way, such as by removing
+ the copyright notice or references to the Internet Society or other
+ Internet organizations, except as needed for the purpose of
+ developing Internet standards in which case the procedures for
+ copyrights defined in the Internet Standards process must be
+ followed, or as required to translate it into languages other than
+ English.
+
+ The limited permissions granted above are perpetual and will not be
+ revoked by the Internet Society or its successors or assignees.
+
+ This document and the information contained herein is provided on an
+ "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+ TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+ HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Acknowledgement
+
+ Funding for the RFC Editor function is currently provided by the
+ Internet Society.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Frye, et al. Best Current Practice [Page 51]
+