Internet DRAFT - draft-vaughn-cnmp-pdu
draft-vaughn-cnmp-pdu
INTERNET-DRAFT K. Vaughn
Intended Status: Standards Track Trevilon LLC
Expires: May 24, 2014 A. Triglia
OSS Nokalva, Inc.
R. Rausch
Transcore, LP
November 20, 2013
Protocol Operations for Condensed Network Management Protocol (CNMP)
draft-vaughn-cnmp-pdu-00
Abstract
This document specifies the protocol operations for Condensed Network
Management Protocol (CNMP) messages. It defines the syntax and
element of procedures for sending, receiving, and processing CNMP
PDUs.
Status of this Memo
This Internet-Draft is submitted to IETF in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as
Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/1id-abstracts.html
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html
Copyright and License Notice
Copyright (c) 2013 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
K. Vaughn Expires May 24, 2014 [Page 1]
INTERNET DRAFT Protocol Operations for CNMP November 20, 2013
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
4. Management Information Base Definitions . . . . . . . . . . . 4
5. CNMP PDU Format . . . . . . . . . . . . . . . . . . . . . . . 11
5.1. Definition . . . . . . . . . . . . . . . . . . . . . . . . 11
5.2. Type Definitions . . . . . . . . . . . . . . . . . . . . 16
5.2.1. ObjectName . . . . . . . . . . . . . . . . . . . . . . 17
5.2.2. ObjectSyntax . . . . . . . . . . . . . . . . . . . . . 17
5.2.3. PDU Structure . . . . . . . . . . . . . . . . . . . . 18
5.2.4. DynamicObject-PDU . . . . . . . . . . . . . . . . . . 18
6. Elements of Procedure . . . . . . . . . . . . . . . . . . . . 19
6.1.1. GetRequest-PDU . . . . . . . . . . . . . . . . . . . . 19
6.1.2. SetRequest-PDU and SetNoReply-PDU . . . . . . . . . . 20
6.1.3. GetNextRequest-PDU . . . . . . . . . . . . . . . . . . 21
6.1.1. GetResponse-PDU, SetResponse-PDU,
InformResponse-PDU, and ErrorResponse-PDU . . . . . . 22
6.1.1. GetBulkRequest-PDU . . . . . . . . . . . . . . . . . . 22
6.1.1. Trap-PDU . . . . . . . . . . . . . . . . . . . . . . . 23
6.1.1. InformRequest-PDU . . . . . . . . . . . . . . . . . . 23
6.1.1. GetDynObjX . . . . . . . . . . . . . . . . . . . . . . 23
6.1.2. SetDynObjX and SetNoReplyDynObjX . . . . . . . . . . . 24
6.1.3. GetNextDynObjX . . . . . . . . . . . . . . . . . . . . 26
6.1.4. GetRespDynObjX, SetRespDynObjX, and ErrorRespDynObjX . 27
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 27
8. Security Considerations . . . . . . . . . . . . . . . . . . . 28
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 28
10.1 Normative References . . . . . . . . . . . . . . . . . . . 29
10.2 Informative References . . . . . . . . . . . . . . . . . . 30
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 30
K. Vaughn Expires May 24, 2014 [Page 2]
INTERNET DRAFT Protocol Operations for CNMP November 20, 2013
1. Introduction
The management framework used by CNMP consists of:
1) An architecture that conforms to that described in in STD 62
[RFC3411], [RFC5343], and [RFC5590],
2) Mechanisms for describing and naming objects and events for the
purposes of management, as defined in STD 58
[RFC2578][RFC2579][RFC2580],
3) Message protocols for transferring management information, as
defined in [Msg],
4) Protocol operations for accessing management information, as
defined in this document, and
5) A set of fundamental applications and the view-based access
control mechanism described in STD 62 [RFC3413][RFC3415].
A more complete introduction to CNMP can be found in [Intro].
This document, Protocol Operations for the Condensed Network
Management Protocol, defines the operations of the protocol with
respect to the sending and receiving of PDUs to be carried by the
message protocol. Applications make use of the services of these
subsystems.
2. Conventions
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].
Within this INTERNET-DRAFT and all referenced documents, CNMP is to
be considered another version of SNMP. It is only given a different
name because the protocol encoding does not follow the same message
format as SNMP messages and the protocol will use a different binding
with the transport layer. When referencing other RFCs, the any
reference to SNMP in those RFCs shall be interpreted to reference
CNMP, unless specifically stated otherwise within this document.
3. Overview
CNMP Protocol Operations are nearly identical to those supported by
SNMPv3, as defined in [RFC3416]. Readers of this document should
become familiar with the content of that document.
K. Vaughn Expires May 24, 2014 [Page 3]
INTERNET DRAFT Protocol Operations for CNMP November 20, 2013
An overview of the exceptions to SNMPv3 Protocol Operations include:
* CNMP defines a SetNoReply-PDU. This request type does not result
in a response message. This request type can be useful for
broadcasting commands that should be implemented by numerous
devices near simultaneously. A manager can later verify the
proper receipt of the command by issuing individual GetRequest-
PDUs to each agent.
* CNMP uses a separate ErrorResponse-PDU to report errors,
eliminating the need to report no error in most messages.
* CNMP defines a number of dynamic object PDUs that are placed
directly over the transport without the normal
CNMPVersionedMessage message wrapper. These PDUs offer the most
condensed form of communication, but do not offer any real
security features.
* CNMP allows the use of RELATIVE-OIDs. In addition to providing
more efficient encodings, this allows the GetNextRequest-PDU and
GetBulkRequest-PDU to walk a defined range of the ISO naming tree.
* CNMP makes a number of other refinements to decrease the size of a
message without compromising key functionality of the protocol.
* The Transport mappings for CNMP are defined in [Trans].
* CNMP uses SMIv2 as defined in [RFC2578].
4. Management Information Base Definitions
CNMP-PO-MIB DEFINITIONS ::= BEGIN
IMPORTS
MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF
mgmt, MODULE-IDENTITY, OBJECT-TYPE FROM SNMPv2-SMI;
cnmp OBJECT IDENTIFIER ::= { TBD1 }
cnmpModules OBJECT IDENTIFIER ::= { cnmp 1 }
cnmpPOMIB MODULE-IDENTITY
LAST-UPDATED "201310170000Z"
ORGANIZATION "Trevilon LLC"
CONTACT-INFO "name: Kenneth Vaughn
phone: +1-571-331-5670
email: kvaughn@trevilon.com
postal: 6606 FM 1488 RD
STE 148-503
K. Vaughn Expires May 24, 2014 [Page 4]
INTERNET DRAFT Protocol Operations for CNMP November 20, 2013
Magnolia, TX 77354
USA
"
DESCRIPTION "The MIB for CNMP Protocol Operations."
::= { cnmpModules 2 }
-- Administrative assignments ***************************************
cnmpPOAdmin OBJECT IDENTIFIER ::= { cnmpPOMIB 1 }
cnmpPOMIBObjects OBJECT IDENTIFIER ::= { cnmpPOMIB 2 }
cnmpPOMIBConformance OBJECT IDENTIFIER ::= { cnmpPOMIB 3 }
-- Statistics for CNMP Messages *************************************
dynObjectConfig OBJECT IDENTIFIER ::= { cnmpPOMIBObjects 1 }
dynObjectMaxRows OBJECT-TYPE
SYNTAX INTEGER (0..127)
MAX-ACCESS read-only
STATUS current
DESCRIPTION "The maximum number of dynamic objects supported by
the entity. The first 13 dynamic objects can be
retrieved with the most compact encodings of CNMP."
::= { dynObjectConfig 1 }
dynObjectMaxVariables OBJECT-TYPE
SYNTAX INTEGER (1..255)
MAX-ACCESS read-only
STATUS current
DESCRIPTION "The maximum number of variables that can be
referenced by a single dynamic object. This SHALL
be equal to the number of conceptual rows that exist
in the dynObjectVarTable for each dynObjectNumber
and provides the maximum allowed value for
dynObjectVarIndex. All dynamic objects within an
implementation SHALL support the same maximum number
of variable references. The actual number of
variables contained within a dynamic object are
defined by the rules in Clause X.X.X."
::= { dynObjectConfig 2 }
dynObjectTable OBJECT-TYPE
SYNTAX SEQUENCE OF DynObjectEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION "The table that defines the owner and status for each
dynamic object and allows its retrieval.
K. Vaughn Expires May 24, 2014 [Page 5]
INTERNET DRAFT Protocol Operations for CNMP November 20, 2013
Agents that implement the Simple Transportation
Management Protocol (STMP), as defined in NTCIP
1103, SHALL always synchronize the values of the
objects in this table with the objects contained
in the dynObjConfigTable."
::= { dynObjectConfig 3 }
dynObjectEntry OBJECT-TYPE
SYNTAX DynObjectEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION "An entry in the dynObjTable. The table is indexed
by the dynamic object number."
INDEX { dynObjectNumber }
::= { dynObjectTable 1 }
DynObjectEntry ::= SEQUENCE {
dynObjectNumber INTEGER,
dynObjectOwner DisplayString,
dynObjectReset INTEGER,
dynObjectValue OCTET STRING,
dynObjectStatus RowStatus
}
dynObjectNumber OBJECT-TYPE
SYNTAX INTEGER (1..dynObjectMaxRows)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION "The dynamic object number used as the index to the
dynObjectTable and the primary index to the
dynObjectVarTable."
::= { dynObjectEntry 1 }
dynObjectOwner OBJECT-TYPE
SYNTAX DisplayString
MAX-ACCESS read-write
STATUS current
DESCRIPTION "The name of the owner of this dynamic object. This
object cannot be set when the value of dynObjStatus
is 'active'."
::= { dynObjectEntry 2 }
dynObjectReset OBJECT-TYPE
SYNTAX INTEGER { normal (1),
clear (2) } (1..2)
MAX-ACCESS read-write
STATUS current
DESCRIPTION "A control that allows a manager to easily reset all
K. Vaughn Expires May 24, 2014 [Page 6]
INTERNET DRAFT Protocol Operations for CNMP November 20, 2013
of the variable references for this dynamic object
to null. A set to 'normal' SHALL have no effect. A
set to 'clear' shall automatically set all
dynObjVariable objects associated with this
dynObjNumber to the value 'null' (i.e., 0.0). Once
all of the dynObjVariable objects have been updated,
the value of this object shall automatically
transition to 'normal'. This object cannot be set
when the value of dynObjStatus is 'active'."
::= { dynObjectEntry 3 }
dynObjectValue OBJECT-TYPE
SYNTAX OCTET STRING
MAX-ACCESS read-only
STATUS current
DESCRIPTION "The current value of the dynamic object. This is
the Octet Encoding Rules [OER] encoding of the ASN.1
SEQUENCE of the referenced dynObjectVariable objects
for this dynObjectNumber. This object shall only
be accessible when dynObjectStatus for this dynamic
object has a value of 'active'; at all other times,
this object SHALL act as if its STATUS is
'not-accessible'."
::= { dynObjectEntry 4 }
dynObjectStatus OBJECT-TYPE
SYNTAX RowStatus (1..3)
MAX-ACCESS read-write
STATUS current
DESCRIPTION "The status column used for modifying and validating
instances of dynamic objects. The range of this
object SAHLL be limited to 'active', 'notInService',
and 'notReady'. Under no circumstances SHALL the
values 'createAndGo', 'createAndWait', or 'destroy'
be assigned to this object (i.e., 'wrongValue'
error). An attempt to set this object to 'active'
SHALL initiate consistency checks, which may cause
an 'inconsistentValue' error.
The value of this object SHALL NOT be 'active' when
attempting to set any other column of this table
(i.e., 'inconsistentValue' error)."
::= { dynObjectEntry 6 }
dynObjectVarTable OBJECT-TYPE
SYNTAX SEQUENCE OF DynObjectVarEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION "The table that indicates the ordered list of
K. Vaughn Expires May 24, 2014 [Page 7]
INTERNET DRAFT Protocol Operations for CNMP November 20, 2013
variables contained in the dynamic object.
Agents that implement the Simple Transportation
Management Protocol (STMP), as defined in NTCIP
1103, SHALL always synchronize the values of the
objects in this table with the objects contained
in the dynObjDef table."
::= { dynObjectConfig 4 }
dynObjectVarEntry OBJECT-TYPE
SYNTAX DynObjectVarEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION "An entry in the dynObjVarTable. The table is
indexed by the dynamic object number (from the
dynObjTable) and the dynObjVarIndex."
INDEX { dynObjectNumber, dynObjectVarIndex }
::= { dynObjectVarTable 1 }
DynObjectVarEntry ::= SEQUENCE {
dynObjectVarIndex INTEGER,
dynObjectVariable OBJECT IDENTIFIER
}
dynObjectVarIndex OBJECT-TYPE
SYNTAX INTEGER (1..dynObjectMaxVariables)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION "The index position of the referenced variable within
the dynamic object. This is the secondary index to
the dynObjectVarTable."
::= { dynObjectVarEntry 1 }
dynObjectVariable OBJECT-TYPE
SYNTAX OBJECT IDENTIFIER
MAX-ACCESS read-write
STATUS current
DESCRIPTION "The instance of an object type to be included within
the dynamic object. If this value is 'null' (0.0),
the value of all dynObjectVariable objects for this
dynObjectNumber with larger dynObjectVarIndexes
shall be ignored. See Clause X.X.X. for a complete
definition."
::= { dynObjectVarEntry 2 }
defaultNodeConfig OBJECT IDENTIFIER ::= { cnmpPOMIBObjects 2 }
K. Vaughn Expires May 24, 2014 [Page 8]
INTERNET DRAFT Protocol Operations for CNMP November 20, 2013
defaultNodeMaxRows OBJECT-TYPE
SYNTAX INTEGER (0..15)
MAX-ACCESS read-only
STATUS current
DESCRIPTION "The maximum number of defaultNode options supported
by the entity within the ObjectName construct of
CNMP."
::= { defaultNodeConfig 1 }
defaultNodeTable OBJECT-TYPE
SYNTAX SEQUENCE OF DefaultNodeEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION "The table that defines the base nodes on the naming
tree from which to identify objects when using one
of the defaultNode (RELATIVE OID) options of the
ObjectName format. See Clause X.X.X. for a
complete definition."
::= { defaultNodeConfig 2 }
defaultNodeEntry OBJECT-TYPE
SYNTAX DefaultNodeEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION "An entry in the DefaultNodeTable. The table is
indexed by the defaultNodeIndex."
INDEX { defaultNodeIndex }
::= { defaultNodeTable 1 }
defaultNodeEntry ::= SEQUENCE {
defaultNodeIndex INTEGER,
defaultNodeOid OBJECT IDENTIFIER
}
defaultNodeIndex OBJECT-TYPE
SYNTAX INTEGER (1..defaultNodeMaxRows)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION "The default node number. Row 1 corresponds with the
defaultNode1 option of the ObjectName construct."
::= { defaultNodeEntry 1 }
defaultNodeOid OBJECT-TYPE
SYNTAX OBJECT IDENTIFIER
MAX-ACCESS read-write
STATUS current
K. Vaughn Expires May 24, 2014 [Page 9]
INTERNET DRAFT Protocol Operations for CNMP November 20, 2013
DESCRIPTION "The node on the naming tree from which the
ObjectName is encoded. For example, if the value of
the referenced defaultNodeOid is 'mib-2'
(1.3.6.1.2.1), the ObjectName field would only need
to encode '1.5' in order to reference the object
'sysName'."
::= { defaultNodeEntry 2 }
-- Conformance information ******************************************
cnmpPOMIBCompliances OBJECT IDENTIFIER ::= {cnmpPOMIBConformance 1}
cnmpPOMIBGroups OBJECT IDENTIFIER ::= {cnmpPOMIBConformance 2}
-- Compliance statements
cnmpPOCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION "The compliance statement for CNMP entities which
implement the CNMP-PO-MIB."
MODULE -- this module
MANDATORY-GROUPS { cnmpCapabilitiesGroup }
GROUP dynObjectGroup
DESCRIPTION "The dynObjectGroup is mandatory if the value of
dynObjectMaxRows is greater than zero (0)."
GROUP defaultNode
DESCRIPTION "The defaultNodeGroup is mandatory if the value of
defaultNodeMaxRows is greater than zero (0)."
::= { cnmpPOMIBCompliances 1 }
cnmpCapabilitiesGroup OBJECT-GROUP
OBJECTS {
dynObjectMaxRows,
defaultNodeMaxRows
}
STATUS current
DESCRIPTION "A collection of objects that indicate basic
capabilities supported (or not supported) by the
CNMP entity."
::= { cnmpPOMIBGroups 1 }
dynObjectGroup OBJECT-GROUP
OBJECTS {
K. Vaughn Expires May 24, 2014 [Page 10]
INTERNET DRAFT Protocol Operations for CNMP November 20, 2013
dynObjectMaxVariables,
dynObjectOwner,
dynObjectReset,
dynObjectValue,
dynObjectStatus,
dynObjectVariable
}
STATUS current
DESCRIPTION "A collection of objects providing for configuration
and retrieval of dynamic objects."
::= { cnmpPOMIBGroups 1 }
defaultNodeGroup OBJECT-GROUP
OBJECTS {
defaultNodeOid
}
STATUS current
DESCRIPTION "A collection of objects providing for configuration
and retrieval of dynamic objects."
::= { cnmpPOMIBGroups 1 }
END
5. CNMP PDU Format
5.1. Definition
CNMP-PDU DEFINITIONS ::= BEGIN
IMPORTS
IpAddress, Counter32, Unsigned32, Gauge32, TimeTicks,
Opaque, Counter64
FROM SNMPv2-PDU;
ObjectName ::= CHOICE {
fullOid [0] OBJECT IDENTIFIER,
-- OID is formed by the base and extension pair
pair [1] OidPair,
-- OID is relative to most recently used base
extension [2] RELATIVE-OID,
-- dynObject is relative to dynObjectValue,
dynObject [3] RELATIVE-OID,
-- defaultNodeX is relative to defaultNodeOid.X
defaultNode1 [PRIVATE 1] RELATIVE-OID,
K. Vaughn Expires May 24, 2014 [Page 11]
INTERNET DRAFT Protocol Operations for CNMP November 20, 2013
defaultNode2 [PRIVATE 2] RELATIVE-OID,
defaultNode3 [PRIVATE 3] RELATIVE-OID,
defaultNode4 [PRIVATE 4] RELATIVE-OID,
defaultNode5 [PRIVATE 5] RELATIVE-OID,
defaultNode6 [PRIVATE 6] RELATIVE-OID,
defaultNode7 [PRIVATE 7] RELATIVE-OID,
defaultNode8 [PRIVATE 8] RELATIVE-OID,
defaultNode9 [PRIVATE 9] RELATIVE-OID,
defaultNode10 [PRIVATE 10] RELATIVE-OID,
defaultNode11 [PRIVATE 11] RELATIVE-OID,
defaultNode12 [PRIVATE 12] RELATIVE-OID,
defaultNode13 [PRIVATE 13] RELATIVE-OID,
defaultNode14 [PRIVATE 14] RELATIVE-OID,
defaultNode15 [PRIVATE 15] RELATIVE-OID
}
OidPair ::= SEQUENCE {
base OBJECT IDENTIFIER,
extension RELATIVE-OID
}
ObjectSyntax ::= CHOICE {
long Signed32,
string-value OCTET STRING (SIZE (0..65535)),
objectID-value OBJECT IDENTIFIER,
ipAddress-value IpAddress,
counter-value Counter32,
ulong Unsigned32,
timeticks-value TimeTicks,
arbitrary-value Opaque,
big-counter-value Counter64,
byte Signed8,
short Signed16,
ubyte Unsigned8,
ushort Unsigned16
}
Signed8 ::= [APPLICATION 7] INTEGER (-128..127)
Signed16 ::= [APPLICATION 8] INTEGER (-32768..32767)
Signed32 ::= INTEGER (-2147483648..2147483647)
Unsigned8 ::= [APPLICATION 9] INTEGER (0..255)
Unsigned16 ::= [APPLICATION 10] INTEGER (0..65535)
VarBind ::= SEQUENCE {
name ObjectName,
value CHOICE {
value ObjectSyntax,
noSuchObject [0] NULL,
K. Vaughn Expires May 24, 2014 [Page 12]
INTERNET DRAFT Protocol Operations for CNMP November 20, 2013
noSuchInstance [1] NULL,
endOfMibView [2] NULL,
endOfRange [3] NULL,
processTimeout [4] NULL
}
}
VarBinds ::= SEQUENCE (SIZE (0..255)) OF VarBind
VarNames ::= SEQUENCE (SIZE (0..255)) OF ObjectName
GetBulkRequest ::= SEQUENCE {
non-repeaters Unsigned8,
max-repetitions Unsigned8,
variables VarNames
}
ErrorStatus ::= INTEGER {
noError(0),
tooBig(1),
noSuchName(2), -- for proxy compatibility
badValue(3), -- for proxy compatibility
readOnly(4), -- for proxy compatibility
genErr(5),
noAccess(6),
wrongType(7),
wrongLength(8),
wrongEncoding(9),
wrongValue(10),
noCreation(11),
inconsistentValue(12),
resourceUnavailable(13),
commitFailed(14),
undoFailed(15),
authorizationError(16),
notWritable(17),
inconsistentName(18),
invalidName(19),
processTimeout(20)
} (0..255)
ErrorResponse ::= SEQUENCE {
errorStatus ErrorStatus,
errorIndex INTEGER (0..255),
errorVariable OBJECT IDENTIFIER
}
CNMP-PDUs ::= CHOICE {
getRequest GetRequest-PDU,
K. Vaughn Expires May 24, 2014 [Page 13]
INTERNET DRAFT Protocol Operations for CNMP November 20, 2013
setRequest SetRequest-PDU,
setNoReply SetNoReply-PDU,
getNextRequest GetNextRequest-PDU,
getResponse GetResponse-PDU,
setResponse SetResponse-PDU,
errorResponse ErrorResponse-PDU,
getBulkRequest GetBulkRequest-PDU,
trap Trap-PDU,
inform InformRequest-PDU,
informResponse InformResponse-PDU
}
GetRequest-PDU ::= [0] VarNames
SetRequest-PDU ::= [16] VarBinds
SetNoReply-PDU ::= [32] VarBinds
GetNextRequest-PDU ::= [48] VarNames
GetResponse-PDU ::= [PRIVATE 0] VarBinds
SetResponse-PDU ::= [PRIVATE 16] NULL
ErrorResponse-PDU ::= [PRIVATE 32] ErrorResponse
GetBulkRequest-PDU ::= [PRIVATE 48] GetBulkRequest
Trap-PDU ::= [PRIVATE 49] VarBinds
InformRequest-PDU ::= [PRIVATE 50] VarBinds
InformResponse-PDU ::= [PRIVATE 51] NULL
-- The following definitions provide for the most compact encoding
-- but do not offer built-in security. They should only be used
-- over networks that are either physically secure or secured by
-- other means (e.g., VPN).
GetDynObj1 ::= [1] NULL
GetDynObj2 ::= [2] NULL
GetDynObj3 ::= [3] NULL
GetDynObj4 ::= [4] NULL
GetDynObj5 ::= [5] NULL
GetDynObj6 ::= [6] NULL
GetDynObj7 ::= [7] NULL
GetDynObj8 ::= [8] NULL
GetDynObj9 ::= [9] NULL
GetDynObj10 ::= [10] NULL
GetDynObj11 ::= [11] NULL
GetDynObj12 ::= [12] NULL
GetDynObj13 ::= [13] NULL
SetDynObj1 ::= [17] DynamicObject-PDU
SetDynObj2 ::= [18] DynamicObject-PDU
SetDynObj3 ::= [19] DynamicObject-PDU
SetDynObj4 ::= [20] DynamicObject-PDU
SetDynObj5 ::= [21] DynamicObject-PDU
K. Vaughn Expires May 24, 2014 [Page 14]
INTERNET DRAFT Protocol Operations for CNMP November 20, 2013
SetDynObj6 ::= [22] DynamicObject-PDU
SetDynObj7 ::= [23] DynamicObject-PDU
SetDynObj8 ::= [24] DynamicObject-PDU
SetDynObj9 ::= [25] DynamicObject-PDU
SetDynObj10 ::= [26] DynamicObject-PDU
SetDynObj11 ::= [27] DynamicObject-PDU
SetDynObj12 ::= [28] DynamicObject-PDU
SetDynObj13 ::= [29] DynamicObject-PDU
SetNoReplyDynObj1 ::= [33] DynamicObject-PDU
SetNoReplyDynObj2 ::= [34] DynamicObject-PDU
SetNoReplyDynObj3 ::= [35] DynamicObject-PDU
SetNoReplyDynObj4 ::= [36] DynamicObject-PDU
SetNoReplyDynObj5 ::= [37] DynamicObject-PDU
SetNoReplyDynObj6 ::= [38] DynamicObject-PDU
SetNoReplyDynObj7 ::= [39] DynamicObject-PDU
SetNoReplyDynObj8 ::= [40] DynamicObject-PDU
SetNoReplyDynObj9 ::= [41] DynamicObject-PDU
SetNoReplyDynObj10 ::= [42] DynamicObject-PDU
SetNoReplyDynObj11 ::= [43] DynamicObject-PDU
SetNoReplyDynObj12 ::= [44] DynamicObject-PDU
SetNoReplyDynObj13 ::= [45] DynamicObject-PDU
GetNextDynObj1 ::= [49] NULL
GetNextDynObj2 ::= [50] NULL
GetNextDynObj3 ::= [51] NULL
GetNextDynObj4 ::= [52] NULL
GetNextDynObj5 ::= [53] NULL
GetNextDynObj6 ::= [54] NULL
GetNextDynObj7 ::= [55] NULL
GetNextDynObj8 ::= [56] NULL
GetNextDynObj9 ::= [57] NULL
GetNextDynObj10 ::= [58] NULL
GetNextDynObj11 ::= [59] NULL
GetNextDynObj12 ::= [60] NULL
GetNextDynObj13 ::= [61] NULL
GetRespDynObj1 ::= [PRIVATE 1] DynamicObject-PDU
GetRespDynObj2 ::= [PRIVATE 2] DynamicObject-PDU
GetRespDynObj3 ::= [PRIVATE 3] DynamicObject-PDU
GetRespDynObj4 ::= [PRIVATE 4] DynamicObject-PDU
GetRespDynObj5 ::= [PRIVATE 5] DynamicObject-PDU
GetRespDynObj6 ::= [PRIVATE 6] DynamicObject-PDU
GetRespDynObj7 ::= [PRIVATE 7] DynamicObject-PDU
GetRespDynObj8 ::= [PRIVATE 8] DynamicObject-PDU
GetRespDynObj9 ::= [PRIVATE 9] DynamicObject-PDU
GetRespDynObj10 ::= [PRIVATE 10] DynamicObject-PDU
GetRespDynObj11 ::= [PRIVATE 11] DynamicObject-PDU
K. Vaughn Expires May 24, 2014 [Page 15]
INTERNET DRAFT Protocol Operations for CNMP November 20, 2013
GetRespDynObj12 ::= [PRIVATE 12] DynamicObject-PDU
GetRespDynObj13 ::= [PRIVATE 13] DynamicObject-PDU
SetRespDynObj1 ::= [PRIVATE 17] NULL
SetRespDynObj2 ::= [PRIVATE 18] NULL
SetRespDynObj3 ::= [PRIVATE 19] NULL
SetRespDynObj4 ::= [PRIVATE 20] NULL
SetRespDynObj5 ::= [PRIVATE 21] NULL
SetRespDynObj6 ::= [PRIVATE 22] NULL
SetRespDynObj7 ::= [PRIVATE 23] NULL
SetRespDynObj8 ::= [PRIVATE 24] NULL
SetRespDynObj9 ::= [PRIVATE 25] NULL
SetRespDynObj10 ::= [PRIVATE 26] NULL
SetRespDynObj11 ::= [PRIVATE 27] NULL
SetRespDynObj12 ::= [PRIVATE 28] NULL
SetRespDynObj13 ::= [PRIVATE 29] NULL
ErrorRespDynObj1 ::= [PRIVATE 33] ErrorInformation-PDU
ErrorRespDynObj2 ::= [PRIVATE 34] ErrorInformation-PDU
ErrorRespDynObj3 ::= [PRIVATE 35] ErrorInformation-PDU
ErrorRespDynObj4 ::= [PRIVATE 36] ErrorInformation-PDU
ErrorRespDynObj5 ::= [PRIVATE 37] ErrorInformation-PDU
ErrorRespDynObj6 ::= [PRIVATE 38] ErrorInformation-PDU
ErrorRespDynObj7 ::= [PRIVATE 39] ErrorInformation-PDU
ErrorRespDynObj8 ::= [PRIVATE 40] ErrorInformation-PDU
ErrorRespDynObj9 ::= [PRIVATE 41] ErrorInformation-PDU
ErrorRespDynObj10 ::= [PRIVATE 42] ErrorInformation-PDU
ErrorRespDynObj11 ::= [PRIVATE 43] ErrorInformation-PDU
ErrorRespDynObj12 ::= [PRIVATE 44] ErrorInformation-PDU
ErrorRespDynObj13 ::= [PRIVATE 45] ErrorInformation-PDU
-- The definition for DynamicObject-PDU is a placeholder
-- See Clause 5.2.4 for a complete definition
DynamicObject-PDU ::= SEQUENCE {}
ErrorInformation-PDU ::= SEQUENCE {
errorStatus ErrorStatus,
errorIndex INTEGER (0..255)
}
END
5.2. Type Definitions
The Type definitions of CNMP are conceptually similar to those
defined in SNMPv3 [RFC3416] with the following exceptions.
K. Vaughn Expires May 24, 2014 [Page 16]
INTERNET DRAFT Protocol Operations for CNMP November 20, 2013
5.2.1. ObjectName
CNMP allows the object name to be represented in several different
forms as indicated by the CHOICE construct.
The 'fullOid' option presents the ObjectName as a complete OBJECT
IDENTIFIER, just as it would appear in SNMPv3.
The 'pair' option presents the ObjectName as a base OBJECT IDENTIFIER
coupled with an extension as a RELATIVE-OID. Combining the two
components together provides the complete OBJECT IDENTIFIER as would
be used in SNMPv3.
The 'extension' option presents only an extension. It SHALL be
coupled with the 'base' of the most recent, previously encoded 'pair'
contained within the same PDU. For example, if a PDU contains four
objects, where the first and third use the 'pair' encoding and the
second and fourth use the 'extension' encoding', the second object
extension would be combined with the base from the first object and
the fourth object extension would be combined with the base from the
third object.
The 'dynObject' option presents the ObjectName as a RELATIVE OID,
showing only the node that occurs after the node 'dynObjectValue'
(i.e., the index of this object). For example, the RELATIVE OID for
dynamic object 1 would be { 1 }, which in OER would be encoded as the
hexadecimal value 0x0101, i.e., a length field of 0x01 followed by
the node number of 0x01.
The 'defaultNodeX' options present the ObjectName as a RELATIVE OID,
showing only the node numbers that occur after the node referenced by
'defaultNodeOid.X' (See Clause 4), where the X equals the X in the
option name. A CNMP entity is not required to support the default
node option, but is required to support the defaultNodeMaxRows object
to indicate how many default nodes are supported (including zero).
Response PDUs SHALL use the same ObjectName format as used in the
corresponding request without changing any base. For example, a
GetResponse-PDU to a GetNextRequest-PDU using the 'pair' format SHALL
use the 'pair' format in the response using the same 'base' value. If
there is no such object in the current view, the CNMP entity will
return an endOfRange value.
5.2.2. ObjectSyntax
CNMP adds options for one- and two-byte, signed and unsigned integers
in order to allow for more efficient encoding. The encoding of
integral values SHALL be as follows:
K. Vaughn Expires May 24, 2014 [Page 17]
INTERNET DRAFT Protocol Operations for CNMP November 20, 2013
* If the object value to be encoded is for an object with a SYNTAX
of Counter64 or any other INTEGER with only a positive value range
that exceeds 2^32-1, the object value SHALL be encoded as a big-
counter-value.
* Otherwise, if the object value to be encoded is for an object with
a SYNTAX of Counter32 or any other INTEGER with only a positive
value range that exceeds 2^31-1, the object value SHALL be encoded
as a big-counter-value.
* Otherwise, CNMP restricts the value of the integer to a 32-bit
signed value. The actual value instance to be encoded SHALL be
encoded as follows:
+-------------------------------+-------------------+
| Value to be Encoded | ObjectSyntax |
+-------------------------------+-------------------+
| Lower Bound | Upper Bound | Option |
+---------------+---------------+-------------------+
|-2,147,483,648 | -32,769 | long |
+---------------+---------------+-------------------+
| -32,769 | -129 | short |
+---------------+---------------+-------------------+
| -128 | -1 | byte |
+---------------+---------------+-------------------+
| 0 | 255 | ubyte |
+---------------+---------------+-------------------+
| 256 | 65,535 | ushort |
+---------------+---------------+-------------------+
| 65,536 | 2,147,483,647 | long |
+---------------+---------------+-------------------+
This mapping allows efficient encoding without knowledge of the
specific object range while also allowing easy translation between
SNMP and CNMP messages for Counter32 and Counter64 values.
5.2.3. PDU Structure
The CNMPVersionedMessage uses one of 11 PDU structures in order to
provide more efficient communications by only including information
that is needed.
The request-id field is removed from these structures; the message-id
field from the parent message shall be used for this purpose.
5.2.4. DynamicObject-PDU
The definition of the DynamicObject-PDU structure SHALL be defined at
run-time based on the current configuration of the indicated dynamic
K. Vaughn Expires May 24, 2014 [Page 18]
INTERNET DRAFT Protocol Operations for CNMP November 20, 2013
object. Specifically, the definition the DynamicObject-PDU for a
specific dynamic object SHALL be an ASN.1 SEQUENCE of the objects
referenced by the dynObjectVariables for the specific dynamic object,
in the order of their index values, ending at (and excluding) the
first dynObjectVariable that is set to "null" (i.e., 0.0).
EXAMPLE:
dynObjectVariable.1.1 references sysDescr.0
dynObjectVariable.1.2 references sysUpTime.0
dynObjectVariable.1.3 references null
The DynamicObject-PDU structure for dynamic object 1 would be defined
as:
DynamicObject-PDU ::= SEQUENCE {
variable1 DisplayString (SIZE (0..255)),
variable2 TimeTicks
}
6. Elements of Procedure
On generating a management communication, the message wrapper to
encapsulate the PDU is generated according to the "Elements of
Procedure" of the administrative framework in use. A compliant
implementation must support as many bindings (i.e., size of
ReqVarBinds, RespVarBinds, and VarNames) as fit into the overall
maximum message size limit of the CNMP engine, but no more than 255
variable bindings.
On receiving a management communication, the "Elements of Procedure"
of the administrative framework in use is followed, and if those
procedures indicate that the operation contained within the message
is to be performed locally, then those procedures also indicate the
MIB view which is visible to the operation.
6.1.1. GetRequest-PDU
The processing of a GetRequest-PDU SHALL be identical to that as
defined in Clause 4.2.1 of [RFC3416], with the following exceptions:
1) If an ObjectName using the 'extension' option appears prior to an
ObjectSyntax using the 'pair' option, the response PDU SHALL be an
ErrorResponse-PDU. The errorStatus field SHALL be set to
"missingBase", the errorIndex field SHALL indicate the index of
the objectName using the invalid extension format, and the
errorVariable SHALL be set to "null" (0.0).
2) Otherwise, if the rules of [RFC3416] result in a response PDU with
K. Vaughn Expires May 24, 2014 [Page 19]
INTERNET DRAFT Protocol Operations for CNMP November 20, 2013
a non-zero error-status field, the response PDU SHALL be an
ErrorResponse-PDU, as defined in Clause 5 of this Internet-Draft.
If the errorIndex field is non-zero, the errorVariable field of
the PDU SHALL be set to the full Object identifier of the
requested ObjectName referenced by the errorIndex field;
otherwise, the errorVariable field SHALL be set to 'null' (i.e.,
0.0).
3) Otherwise, the response PDU SHALL be a GetResponse-PDU, as defined
in Clause 5 of this Internet-Draft.
4) If the PDU contains multiple ObjectNames, the implementation may
return a value of "processTimeout" for any request for any
instance of dynObjectValue. This can be useful to prevent
overloading of an agent's processor.
5) Any fields referenced in Clause 4.2.1 of [RFC3416] that do not
have a parallel construct in the response PDU in Clause 5 of this
Internet-Draft shall be ignored.
6.1.2. SetRequest-PDU and SetNoReply-PDU
The processing of a SetRequest-PDU and a SetNoReply-PDU SHALL be
identical to that as defined in Clause 4.2.5 of [RFC3416], with the
following exceptions:
1) If the request is a SetNoReply-PDU, the entity SHALL NOT produce a
response PDU, but all other rules shall be followed.
2) Otherwise, if an ObjectName using the 'extension' option appears
prior to an ObjectSyntax using the 'pair' option, the entire
request SHALL be rejected and the response PDU SHALL be an
ErrorResponse-PDU. The errorStatus field SHALL be set to
"missingBase", the errorIndex field SHALL indicate the index of
the objectName using the invalid extension format, and the
errorVariable SHALL be set to "null" (0.0).
3) Otherwise, if the rules of [RFC3416] result in a response PDU with
a non-zero error-status field, the response PDU SHALL be an
ErrorResponse-PDU, as defined in Clause 5 of this Internet-Draft.
If the errorIndex field is non-zero, the errorVariable field of
the PDU SHALL be set to the full Object identifier of the
requested ObjectName referenced by the errorIndex field;
otherwise, the errorVariable field SHALL be set to 'null' (i.e.,
0.0).
4) Otherwise, if the PDU contains multiple ObjectNames and one or
more of the ObjectNames reference instance(s) of dynObjectValue,
K. Vaughn Expires May 24, 2014 [Page 20]
INTERNET DRAFT Protocol Operations for CNMP November 20, 2013
the entire request MAY be rejected, in which case, the Response
PDU SHALL be an ErrorResponse-PDU. The errorStatus field SHALL be
set to "processTimeout", the errorIndex field SHALL indicate the
index of the offending ObjectName field, and the errorVariable
SHALL indicate the OBJECT IDENTIFIER of the dynObjectValue
instance.
5) Otherwise, the response PDU SHALL be a SetResponse-PDU, as defined
in Clause 5 of this Internet-Draft.
6) Any fields referenced in Clause 4.2.5 of [RFC3416] do not have a
parallel construct in the response PDU in Clause 5 of this
Internet-Draft shall be ignored.
6.1.3. GetNextRequest-PDU
The processing of a GetNextRequest-PDU SHALL be identical to that as
defined in Clause 4.2.2 of [RFC3416], with the following exceptions:
1) If an ObjectName using the 'extension' option appears prior to
an ObjectSyntax using the 'pair' option, the response PDU SHALL be
an ErrorResponse-PDU. The errorStatus field SHALL be set to
"missingBase", the errorIndex field SHALL indicate the index of
the objectName using the invalid extension format, and the
errorVariable SHALL be set to "null" (0.0).
2) Otherwise, while processing a variable binding that uses a
RELATIVE-OID, if the requested variable binding's name does not
lexicographically precede the name of any variable accessible by
this request which is a sub-node of the base used by the RELATIVE-
OID, i.e., there is no lexicographic successor using the same
base, then the corresponding variable binding produced in the
Response-PDU has its value field set to "endOfRange", and its name
field set to the variable binding's name in the request. If the
endOfRange also corresponds to the endOfMibView, it is
implementation dependent which value field is returned.
3) If the rules of [RFC3416] result in a response PDU with a non-zero
error-status field, the response PDU SHALL be an ErrorResponse-
PDU, as defined in Clause 5 of this Internet-Draft. If the
errorIndex field is non-zero, the errorVariable field of the PDU
SHALL be set to the full Object identifier of the requested
ObjectName referenced by the errorIndex field; otherwise, the
errorVariable field SHALL be set to 'null' (i.e., 0.0).
4) Otherwise, the response PDU SHALL be a GetResponse-PDU, as defined
in Clause 5 of this Internet-Draft.
K. Vaughn Expires May 24, 2014 [Page 21]
INTERNET DRAFT Protocol Operations for CNMP November 20, 2013
5) If the PDU contains multiple ObjectNames, the implementation may
return a value of "processTimeout" for any instance of
dynObjectValue. This can be useful to prevent overloading of an
agent's processor.
6) Any fields referenced in Clause 4.2.2 of [RFC3416] do not have a
parallel construct in the response PDU in Clause 5 of this
Internet-Draft shall be ignored.
6.1.1. GetResponse-PDU, SetResponse-PDU, InformResponse-PDU, and
ErrorResponse-PDU
The processing of a GetResponse-PDU, SetResponse-PDU, InformResponse-
PDU, and ErrorResponse-PDU SHALL be identical to that as defined in
Clause 4.2.4 of [RFC3416], with the following exceptions:
1) These PDUs are generated by a CNMP entity only according to the
rules defined elsewhere in this Internet-Draft.
6.1.1. GetBulkRequest-PDU
The processing of a GetBulkRequest-PDU SHALL be identical to that as
defined in Clause 4.2.3 of [RFC3416], with the following exceptions:
1) If an ObjectName using the 'extension' option appears prior to
an ObjectSyntax using the 'pair' option, the response PDU SHALL be
an ErrorResponse-PDU. The errorStatus field SHALL be set to
"missingBase", the errorIndex field SHALL indicate the index of
the objectName using the invalid extension format, and the
errorVariable SHALL be set to "null" (0.0).
2) Otherwise, while processing a variable binding that uses a
RELATIVE-OID, if the requested variable instance (i.e., a non-
repeater or any instance of a repeated request) does not have a
lexicographic successor accessible by this request which is a sub-
node of the base used by the RELATIVE-OID, then the corresponding
variable binding produced in the Response-PDU has its value field
set to "endOfRange", and its name field set to the variable
binding's name in the request. If the endOfRange also corresponds
to the endOfMibView, it is implementation dependent which value
field is returned.
3) The response PDU may be generated with a lesser number of variable
bindings if for some value of iteration i, such that i is greater
than zero and less than or equal to M, that all of the generated
variable bindings have the value field set to either "endOfRange"
or "endOfMibView". In this case, the variable bindings may be
truncated after the (N + (i * R))-th variable binding. See
K. Vaughn Expires May 24, 2014 [Page 22]
INTERNET DRAFT Protocol Operations for CNMP November 20, 2013
[RFC3416] for the definition of i, M, N, and R.
4) If the rules of [RFC3416] result in a response PDU with a non-zero
error-status field, the response PDU SHALL be an ErrorResponse-
PDU, as defined in Clause 5 of this Internet-Draft. If the
errorIndex field is non-zero, the errorVariable field of the PDU
SHALL be set to the full Object identifier of the requested
ObjectName referenced by the errorIndex field; otherwise, the
errorVariable field SHALL be set to 'null' (i.e., 0.0).
5) Otherwise, the response PDU SHALL be a GetResponse-PDU, as defined
in Clause 5 of this Internet-Draft.
6) If the PDU contains multiple ObjectNames, the implementation may
return a value of "processTimeout" for any instance of
dynObjectValue. This can be useful to prevent overloading of an
agent's processor.
7) Any fields referenced in Clause 4.2.3 of [RFC3416] do not have a
parallel construct in the response PDU in Clause 5 of this
Internet-Draft shall be ignored.
6.1.1. Trap-PDU
The processing of a Trap-PDU SHALL be identical to that as defined in
Clause 4.2.6 of [RFC3416].
6.1.1. InformRequest-PDU
The processing of an InformRequest-PDU SHALL be identical to that as
defined in Clause 4.2.7 of [RFC3416], with the following exceptions:
1) Otherwise, the response PDU SHALL be a InformResponse-PDU, as
defined in Clause 5 of this Internet-Draft.
2) Any fields referenced in Clause 4.2.3 of [RFC3416] do not have a
parallel construct in the response PDU in Clause 5 of this
Internet-Draft shall be ignored.
6.1.1. GetDynObjX
Each of the 13 GetDynObjX types represent a get request for the
indicated dynamic object (i.e., GetDynObj1 represents a get request
for dynamic object 1). A GetDynObjX PDU is generated and transmitted
at the request of an application.
Upon receipt of a GetDynObjX PDU, the receiving CNMP entity processes
the request as follows:
K. Vaughn Expires May 24, 2014 [Page 23]
INTERNET DRAFT Protocol Operations for CNMP November 20, 2013
1) If the PDU contains any information, the entity SHALL increment
the value of snmpInASNParseErrs. The message SHALL be discarded
and processing SHALL be complete.
2) Otherwise, if the dynObjectStatus of the indicated dynamic object
is not 'active', the entity SHALL produce an ErrorInformation-PDU.
The errorStatus field SHALL be set to 'noSuchName' and the
errorIndex field SHALL be set to zero (0).
3) Otherwise, if the dynamic object contains a reference to an object
in one of its dynObjectVariable values that is not in the current
MIB view (i.e., not currently instantiated, not visible, etc.),
the entity SHALL produce an ErrorInformation-PDU. The errorStatus
field SHALL be set to 'noSuchName' and the errorIndex field SHALL
be set to the index of the first dynObjectVariable of the dynamic
object that is invalid.
4) Otherwise, if the dynamic object cannot be retrieved for any other
reason, the entity SHALL produce an ErrorInformation-PDU. The
errorStatus field SHALL be set to 'genErr' and the errorIndex
field SHALL be set to the index of the dynObjectVariable that is
causing the problem, if known, and zero (0) otherwise.
5) Otherwise, the entity SHALL produce a DynamicObject-PDU containing
the value of dynObjectValue.X.
6) The response PDU is then encapsulated into a message. If the size
of the resultant message is less than or equal to both a local
constraint and the maximum message size of the originator, it is
transmitted to the originator of the GetNextDynObjX.
7) Otherwise, an ErrorRespDynObjX is generated for the subject
dynamic object. The value of the errorStatus field SHALL be to
"tooBig" and the value of the error-index field SHALL be zero.
This ErrorRespDynObj is then encapsulated into a message and
transmitted to the originator of the GetDynObjX.
6.1.2. SetDynObjX and SetNoReplyDynObjX
Each of the 13 SetDynObjX types and 13 SetNoReplyDynObjX types
represent a set request for the indicated dynamic object. These PDU
are generated and transmitted at the request of an application.
Upon receipt of such a PDU, the receiving CNMP entity processes the
request as follows:
1) If the dynObjectStatus of the indicated dynamic object is not
'active', the entity SHALL produce an ErrorInformation-PDU. The
K. Vaughn Expires May 24, 2014 [Page 24]
INTERNET DRAFT Protocol Operations for CNMP November 20, 2013
errorStatus field SHALL be set to 'noSuchName' and the errorIndex
field SHALL be set to zero (0).
2) Otherwise, if the dynamic object contains a reference to an object
in one of its dynObjectVariable values that is not in the current
MIB view (i.e., not currently instantiated, not visible, etc.),
the entity SHALL produce an ErrorInformation-PDU. The errorStatus
field SHALL be set to 'noSuchName' and the errorIndex field SHALL
be set to the index of the first dynObjectVariable of the dynamic
object that is invalid.
3) Otherwise, if the dynamic object contains a reference to an an
object that is not available for set operations with the current
MIB view, the entity SHALL produce an ErrorInformation-PDU. The
errorStatus field SHALL be set to 'readOnly' and the errorIndex
field SHALL be set to the index of the dynObjectVariable that
cannot be set.
4) Otherwise, if any parsing errors occur when decoding the contents
of the DynamicObject-PDU, the entity SHALL increment the value of
snmpInASNParseErrs and SHALL produce an ErrorInformation-PDU. The
errorStatus field SHALL be set to 'badValue' and the errorIndex
field SHALL indicate the index of the dynObjectVariable where
parsing failed.
5) Otherwise, if any of the objects referenced by the dynamic object
cannot be changed for any other reason, the entity SHALL produce
an ErrorInformation-PDU. The errorStatus field SHALL be set to
'genErr' and the errorIndex field SHALL indicate the index of the
dynObjectVariable causing the problem.
6) Otherwise, for each referenced object in the dynamic object
request, the entity SHALL create the object, if necessary, and
SHALL assign the requested value to it. Each of these assignments
occurs as if simultaneously with respect to all other assignments
specified in the same request.
a) If any of these assignments fail (even after all the previous
validations), then the entity SHALL undo all other assignments
and produce an ErrorInformation-PDU. The errorStatus field
SHALL be set to 'commitFailed' and the errorIndex field SHALL
be set to the index of the dynObjectVariable that cannot be
set.
b) If it is not possible to undo all the assignments, then the
entity SHALL produce an ErrorInformation-PDU; the errorStatus
field SHALL be set to 'undoFailed', and the errorIndex field
SHALL be set to zero. Note that implementations are strongly
K. Vaughn Expires May 24, 2014 [Page 25]
INTERNET DRAFT Protocol Operations for CNMP November 20, 2013
encouraged to take all possible measures to avoid use of either
"commitFailed" or "undoFailed" - these two error-status codes
are not to be taken as license to take the easy way out in an
implementation.
c) Otherwise, the entity SHALL produce a SetRespDynObjX PDU as the
response PDU.
7) If the request was a SetNoReplyDynObjX PDU, the processing SHALL
be complete and no response is sent.
8) The response PDU is then encapsulated into a message and is
transmitted to the originator of the SetDynObjX PDU.
6.1.3. GetNextDynObjX
Each of the 13 GetNextDynObjX types represent a get request for the
next 'active' dynamic object. A GetNextDynObjX PDU is generated and
transmitted at the request of an application.
Upon receipt of a GetNextDynObjX PDU, the receiving CNMP entity
processes the request as follows:
1) If the PDU contains any information, the entity SHALL increment
the value of snmpInASNParseErrs. The message SHALL be discarded
and processing SHALL be complete.
2) The dynamic object is located which is the next lexicographical
successor of the indicated dynamic object where the
dynObjectStatus has a value of 'active'.
3) If there is no lexicographical successor which is a dynamic object
with a status of 'active', the entity SHALL produce an
ErrorInformation-PDU. The response dynamic object SHALL be the
dynamic object contained in the request. The errorStatus field
SHALL be set to 'noSuchName' and the errorIndex field SHALL be set
to zero (0).
4) If there is no lexicographical successor which is a dynamic object
with a status of 'active' that has a dynObjectIndex of 13 or less,
the entity SHALL produce an ErrorInformation-PDU. The response
dynamic object SHALL be the lexicographical successor dynamic
object. The errorStatus field SHALL be set to 'inconsistentValue'
and the errorIndex field SHALL be set to zero (0).
5) Otherwise, if the lexicographical successor dynamic object
contains a reference to an object in one of its dynObjectVariable
values that is not in the current MIB view (i.e., not currently
K. Vaughn Expires May 24, 2014 [Page 26]
INTERNET DRAFT Protocol Operations for CNMP November 20, 2013
instantiated, not visible, etc.), the entity SHALL produce an
ErrorInformation-PDU. The response dynamic object SHALL be the
lexicographical successor dynamic object. The errorStatus field
SHALL be set to 'noSuchName' and the errorIndex field SHALL be set
to the index of the first dynObjectVariable of the dynamic object
that is invalid.
6) Otherwise, if the lexicographical successor dynamic object cannot
be retrieved for any other reason, the entity SHALL produce an
ErrorInformation-PDU. The response dynamic object SHALL be the
lexicographical successor dynamic object. The errorStatus field
SHALL be set to 'genErr' and the errorIndex field SHALL be set to
the index of the dynObjectVariable that is causing the problem, if
known, and zero (0) otherwise.
7) Otherwise, the entity SHALL produce a DynamicObject-PDU containing
the value of dynObjectValue for the lexicographical successor
dynamic object.
8) The response PDU is then encapsulated into a message. If the size
of the resultant message is less than or equal to both a local
constraint and the maximum message size of the originator, it is
transmitted to the originator of the GetNextDynObjX.
8) Otherwise, an ErrorRespDynObjX is generated for the subject
dynamic object. The value of the errorStatus field SHALL be to
"tooBig" and the value of the error-index field SHALL be zero.
This ErrorRespDynObj is then encapsulated into a message and
transmitted to the originator of the GetNextDynObjX.
The entity SHALL send the response PDU to the originator.
6.1.4. GetRespDynObjX, SetRespDynObjX, and ErrorRespDynObjX
Each of the 13 GetRespDynObjX types and 13 SetRespDynObjX types
represent a response for a dynamic object with the indicated dynamic
object index. These PDUs are generated by a CNMP entity according to
the rules defined elsewhere in this document.
Upon receipt of such a PDU, the receiving CNMP entity presents its
contents to the application which generated the most recent request
PDU for the indicated dynamic object.
7. Acknowledgements
This document is based largely on material contained in [RFC3416] and
K. Vaughn Expires May 24, 2014 [Page 27]
INTERNET DRAFT Protocol Operations for CNMP November 20, 2013
[STMP].
8. Security Considerations
The protocol defined in this document by itself does not provide a
secure environment. Even if the network itself is secure (for
example by using IPSec), there is no control as to who on the secure
network is allowed access to management information.
It is recommended that the implementors consider the security
features as provided by [Msg]. Specifically, the use of the User-
based Security Model STD 62, RFC 3414 [RFC3414], the Transport
Security Model [RFC5590], and the View-based Access Control Model STD
62, RFC 3415 [RFC3415] is recommended.
It is then a customer/user responsibility to ensure that the SNMP
entity is properly configured so that:
- only those principals (users) having legitimate rights can access
or modify the values of any MIB objects supported by that entity;
- the occurrence of particular events on the entity will be
communicated appropriately;
- the entity responds appropriately and with due credence to events
and information that have been communicated to it.
9. IANA Considerations
IANA needs to assign an OBJECT IDENTIFIER value (TBD1) to the
"cnmp" node defined near the top of Clause 4 of this Internet-
Draft. This node number must be registered as a part of the
"Structure and Identification of Management Information for
TCP/IP-based Internets" (SMI) naming tree
<http://www.iana.org/assignments/smi-numbers>. It is suggested
that the node be placed under the mgmt node (1.3.6.1.2), but we
leave the exact location to the discretion of the registrar and
the IETF.
In order to define the node, the parent node will need to be
imported into the module defined in Clause 4.
This node number should be the same node number assigned for the
variable TBD1 in draft-vaughn-cnmp-message-00.
10. References
K. Vaughn Expires May 24, 2014 [Page 28]
INTERNET DRAFT Protocol Operations for CNMP November 20, 2013
10.1 Normative References
[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)",
STD 58, RFC 2578, 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.
[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, "User-based Security Model
(USM) for version 3 of the Simple Network Management
Protocol (SNMPv3)", 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.
[RFC3416] Presuhn, R., Ed., "Version 2 of the Protocol Operations
for the Simple Network Management Protocol (SNMP)", STD
62, RFC 3416, December 2002.
[RFC5343] Schoenwaelder, J., "Simple Network Management Protocol
(SNMP) Context EngineID Discovery", RFC 5343, September
2008.
[RFC5590] Harrington, D. and J. Schoenwaelder, "Transport Subsystem
for the Simple Network Management Protocol (SNMP)",
RFC 5590, June 2009.
[Msg] Vaughn, K., "Message Processing for Condensed Network
K. Vaughn Expires May 24, 2014 [Page 29]
INTERNET DRAFT Protocol Operations for CNMP November 20, 2013
Management Protocol (CNMP)", Internet-Draft draft-vaughn-
cnmp-message-00, November 2013.
[Trans] Vaughn, K., "Transport Mappings for Condensed Network
Management Protocol (CNMP)", Internet-Draft draft-vaughn-
cnmp-trans-00, November 2013.
[OER] "Information Technology - ASN.1 encoding rules:
Specification of Octet Encoding Rules (OER)", published by
International Telecommunications Union. Initial Draft
X.oer, January 2014.
10.2 Informative References
[Intro] Vaughn, K., "Document Roadmap for Condensed Network
Management Protocol (CNMP)", Internet-Draft draft-vaughn-
cnmp-intro-00, November 2013.
[STMP] "Transport Management Protocols", published by American
Association of State Highway Officials (AASHTO), Institute
of Transportation Engineers (ITE), and National Electrical
Manufacturers Association (NEMA). NTCIP (National
Transportation Communications for ITS Protocol)
1103v02.17, July 2010.
Authors' Addresses
Kenneth Vaughn
Trevilon LLC
6606 FM 1488 RD
STE 148-503
Magnolia, TX 77316
USA
Phone: +1-571-331-5670
Email: kvaughn@trevilon.com
Alessandro Triglia
OSS Nokolva, Inc.
1 Executive Drive
Suite 450
Somerset, NJ 08873
Email: sandro@oss.com
Robert Rausch
K. Vaughn Expires May 24, 2014 [Page 30]
INTERNET DRAFT Protocol Operations for CNMP November 20, 2013
Transcore, LP
192 Technology Parkway
Suite 500
Norcross, GA 30092
Email: robert.rausch@transcore.com
K. Vaughn Expires May 24, 2014 [Page 31]