rfc-2271

An Architecture for Describing SNMP Management Frameworks

D. Harrington, R. Presuhn, B. Wijnen
date1998-01 streamLegacy statusPROPOSED STANDARD pages56 canonicalhttps://www.rfc-editor.org/rfc/rfc2271 doi10.17487/RFC2271
This document describes an architecture for describing SNMP Management Frameworks. The architecture is designed to be modular to allow the evolution of the SNMP protocol standards over time. [STANDARDS-TRACK]

obsoleted by

obsoletes

Extracted elements (28)

design-rationale §1.5

Abstract service interfaces defined by primitive signatures establish the conceptual boundaries between subsystems and between documents. This allows each piece to be implemented and standardized independently — the boundaries are defined by the abstract interface contract, not by shared internal data structures.

snmp, process

design-rationale §1.5

Each portion of the SNMP framework is defined in a self-contained document together with the MIB objects needed for its processing, without cross-document normative references to that content. This allows Security Models, authentication/privacy mechanisms, and message formats to be upgraded independently and progress on different standards-track timelines.

snmp, process

design-rationale §1.5

Remote configuration of security and access control parameters is explicitly required because the Security Subsystem demands frequent rotation of secrets across potentially many SNMP entities; purely local configuration would be operationally undeployable at scale.

snmp, security

interoperability-note §2.14

The architecture supports concurrent operation of SNMPv1, SNMPv2c, SNMPv3, and future SNMP versions by allowing the Message Processing Subsystem and Security Subsystem to each host multiple models simultaneously. The Dispatcher determines the version of an incoming message and routes it to the appropriate Message Processing Model.

snmp

interoperability-note §5

The high bit of the first SnmpEngineID octet distinguishes legacy AgentIDs (as defined in RFC 1910, bit=0, 12-octet fixed format) from new-architecture engine IDs (bit=1, variable-length format). This allows SNMPv3 entities to coexist with pre-SNMPv3 implementations without collisions in the engineID space.

snmp

normative-requirement §3.4.3 REQUIRED

All subsystems (Message Processing, Security, Access Control) and applications are required to either supply a securityLevel value or abide by the supplied securityLevel when processing a message and its contents.

snmp, security

normative-requirement §3.3.3 MUST

Each contextName MUST be unique within an SNMP entity.

snmp

normative-requirement §1.5 SHOULD

Security Models in the Security Subsystem SHOULD protect against the four principal threats (modification of information, masquerade, message stream modification, and disclosure) and need not protect against denial of service or traffic analysis.

snmp, security

normative-requirement §5 MUST NOT

The value of an SnmpEngineID may not be all zeros, all 'ff'H, or the empty (zero-length) string.

snmp

protocol-element §3.3.4

A scopedPDU is a composite data block containing a contextEngineID, a contextName, and an SNMP PDU. Together, contextEngineID and contextName unambiguously identify the management context within an administrative domain.

snmp

protocol-element §3.2.2

A securityName is a human-readable, model-independent string representing a principal. The transformation between model-dependent security IDs (community names, user names, etc.) and securityNames is the responsibility of the relevant Security Model.

snmp, security

protocol-element §3.3.1

An SNMP context is a collection of management information accessible by an SNMP entity. To identify a specific managed object instance within a management domain, four pieces of information are required: contextEngineID, contextName, object type, and instance. The same item of management information may exist in multiple contexts.

snmp

protocol-element §3.1.1

An SNMP entity consists of an SNMP engine (comprising a Dispatcher, Message Processing Subsystem, Security Subsystem, and Access Control Subsystem) plus one or more associated applications. There is a one-to-one association between an SNMP engine and the SNMP entity containing it.

snmp

protocol-element §3.1.3

Five application types are defined: command generators (monitor and manipulate management data), command responders (provide access to management data), notification originators (initiate asynchronous messages), notification receivers (process asynchronous messages), and proxy forwarders (forward messages between SNMP entities).

snmp

protocol-element §4.3

The Access Control Subsystem exposes a single isAccessAllowed primitive that accepts securityModel, securityName, securityLevel, viewType (read/write/notify), contextName, and variableName (OID) and returns a statusInformation indicating whether access is permitted.

snmp, security

protocol-element §3.4.3

The architecture defines three ordered security levels: noAuthNoPriv (no authentication, no privacy), authNoPriv (authentication without privacy), and authPriv (authentication with privacy), where noAuthNoPriv < authNoPriv < authPriv. Every message carries an associated securityLevel.

snmp, security

protocol-element §4.1

The Dispatcher provides four PDU-level primitives: sendPdu (application sends outgoing request/notification), processPdu (incoming PDU delivered to application), returnResponsePdu (application returns response to dispatcher), and processResponsePdu (incoming response delivered to application). Applications may also call registerContextEngineID/unregisterContextEngineID to claim or release responsibility for specific contextEngineID and pduType combinations.

snmp

protocol-element §3.4.2

The Local Configuration Datastore (LCD) is the collection of configuration information retained by subsystems, models, and applications within an SNMP entity. Portions of this information may be accessible as managed objects, supporting remote configuration.

snmp

protocol-element §3.4.1

The maxSizeResponseScopedPDU conveys the maximum size of a scopedPDU that may be included in a response message; it excludes the SNMP message header. This value is propagated through Dispatcher and Message Processing primitives to communicate the sender's buffer constraints to the responder.

snmp

protocol-element §4.2

The Message Processing Subsystem exposes three primitives: prepareOutgoingMessage, prepareResponseMessage, and prepareDataElements. prepareDataElements extracts the messageProcessingModel, securityModel, securityName, securityLevel, contextEngineID, contextName, PDU, pduType, maxSizeResponseScopedPDU, and stateReference from a received raw message.

snmp

protocol-element §3.1.1.3

The Message Processing Subsystem may contain multiple concurrent Message Processing Models (e.g., SNMPv1, SNMPv2c, SNMPv3, or others). Each model defines the format of a specific SNMP message version and coordinates preparation and extraction of that version's messages.

snmp

protocol-element §4.4

The Security Subsystem exposes three primitives: generateRequestMsg (produces a secured outgoing request or notification, outputting securityParameters and wholeMsg), processIncomingMsg (validates an incoming message and outputs securityEngineID, securityName, scopedPDU, and a securityStateReference for later response), and generateResponseMsg (produces a secured response using the cached securityStateReference).

snmp, security

protocol-element §3.1.1.4

The Security Subsystem may contain multiple concurrent Security Models. Each Security Model defines the threats it protects against, its goals, and the protocols used. The User-Based Security Model is shown as one example; other models may coexist.

snmp, security

protocol-element §3.1.1.1

The snmpEngineID is the unique and unambiguous identifier of an SNMP engine within an administrative domain. Because SNMP engines and SNMP entities have a one-to-one relationship, it also uniquely identifies the SNMP entity.

snmp

registry §5

The SNMP-FRAMEWORK-MIB module is assigned OID { snmpModules 10 }, correcting a clerical error in the obsoleted RFC 2261. The MIB defines the SnmpEngineID textual convention and associated managed objects for instrumenting SNMP entities within the architecture.

snmp, registry

security-consideration §1.4

Denial-of-service and traffic analysis attacks are explicitly out of scope for Security Models in this architecture. DoS attacks are often indistinguishable from normal network failures that a viable management protocol must tolerate; traffic patterns are predictable, so protection against traffic analysis provides little practical advantage.

snmp, security

security-consideration §1.4

The four principal threats against which Security Models SHOULD provide protection are: modification of information (unauthorized alteration of in-transit messages), masquerade (assuming another principal's identity to perform unauthorized operations), message stream modification (malicious reordering, delay, or replay beyond normal subnetwork behavior), and disclosure (eavesdropping on exchanges between SNMP engines).

snmp, security

wire-format §5

SnmpEngineID encoding: the high bit of the first octet distinguishes legacy format (0, fixed 12-octet: 4-octet IANA enterprise number + 8 enterprise-specific octets) from the new-architecture format (1, variable-length: 4-octet enterprise number with high bit set, 5th octet format indicator — 1=IPv4/4B, 2=IPv6/16B, 3=MAC/6B, 4=text/27B max, 5=octets/27B max, 128–255=enterprise-defined). Values 6–127 for the format indicator are reserved.

snmp