Network Working Group                                            J. Case
Request for Comments: 3412                           SNMP Research, Inc.
STD: 62                                                    D. Harrington
Obsoletes: 2572                                       Enterasys Networks
Category: Standards Track                                     R. Presuhn
                                                      BMC Software, Inc.
                                                               B. Wijnen
                                                     Lucent Technologies
                                                           December 2002
        
Network Working Group                                            J. Case
Request for Comments: 3412                           SNMP Research, Inc.
STD: 62                                                    D. Harrington
Obsoletes: 2572                                       Enterasys Networks
Category: Standards Track                                     R. Presuhn
                                                      BMC Software, Inc.
                                                               B. Wijnen
                                                     Lucent Technologies
                                                           December 2002
        

Message Processing and Dispatching for the Simple Network Management Protocol (SNMP)

简单网络管理协议(SNMP)的消息处理和调度

Status of this Memo

本备忘录的状况

This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited.

本文件规定了互联网社区的互联网标准跟踪协议,并要求进行讨论和提出改进建议。有关本协议的标准化状态和状态,请参考当前版本的“互联网官方协议标准”(STD 1)。本备忘录的分发不受限制。

Copyright Notice

版权公告

Copyright (C) The Internet Society (2002). All Rights Reserved.

版权所有(C)互联网协会(2002年)。版权所有。

Abstract

摘要

This document describes the Message Processing and Dispatching for Simple Network Management Protocol (SNMP) messages within the SNMP architecture. It defines the procedures for dispatching potentially multiple versions of SNMP messages to the proper SNMP Message Processing Models, and for dispatching PDUs to SNMP applications. This document also describes one Message Processing Model - the SNMPv3 Message Processing Model. This document obsoletes RFC 2572.

本文档描述了SNMP体系结构中简单网络管理协议(SNMP)消息的消息处理和调度。它定义了将可能多个版本的SNMP消息分派到适当的SNMP消息处理模型以及将PDU分派到SNMP应用程序的过程。本文档还描述了一种消息处理模型——SNMPv3消息处理模型。本文件淘汰了RFC 2572。

Table of Contents

目录

   1. Introduction ................................................    3
   2. Overview ....................................................    4
   2.1. The Dispatcher ............................................    5
   2.2. Message Processing Subsystem ..............................    5
   3. Elements of Message Processing and Dispatching ..............    6
   3.1. messageProcessingModel ....................................    6
   3.2. pduVersion ................................................    6
   3.3. pduType ...................................................    7
   3.4. sendPduHandle .............................................    7
   4. Dispatcher Elements of Procedure ............................    7
   4.1. Sending an SNMP Message to the Network ....................    7
   4.1.1. Sending a Request or Notification .......................    8
   4.1.2. Sending a Response to the Network .......................    9
   4.2. Receiving an SNMP Message from the Network ................   11
   4.2.1. Message Dispatching of received SNMP Messages ...........   11
   4.2.2. PDU Dispatching for Incoming Messages ...................   12
   4.2.2.1. Incoming Requests and Notifications ...................   13
   4.2.2.2. Incoming Responses ....................................   14
   4.3. Application Registration for Handling PDU types ...........   15
   4.4. Application Unregistration for Handling PDU Types .........   16
   5. Definitions .................................................   16
   5.1. Definitions for SNMP Message Processing and Dispatching ...   16
   6. The SNMPv3 Message Format ...................................   19
   6.1. msgVersion ................................................   20
   6.2. msgID .....................................................   20
   6.3. msgMaxSize ................................................   21
   6.4. msgFlags ..................................................   21
   6.5. msgSecurityModel ..........................................   24
   6.6. msgSecurityParameters .....................................   24
   6.7. scopedPduData .............................................   24
   6.8. scopedPDU .................................................   24
   6.8.1. contextEngineID .........................................   24
   6.8.2. contextName .............................................   25
   6.8.3. data ....................................................   25
   7. Elements of Procedure for v3MP ..............................   25
   7.1. Prepare an Outgoing SNMP Message ..........................   26
   7.2. Prepare Data Elements from an Incoming SNMP Message .......   32
   8. Intellectual Property .......................................   37
   9. Acknowledgements ............................................   38
   10. Security Considerations ....................................   39
   11. References .................................................   40
   11.1. Normative References .....................................   40
   11.2. Informative References ...................................   41
   12. Editors' Addresses .........................................   42
   13. Full Copyright Statement ...................................   43
        
   1. Introduction ................................................    3
   2. Overview ....................................................    4
   2.1. The Dispatcher ............................................    5
   2.2. Message Processing Subsystem ..............................    5
   3. Elements of Message Processing and Dispatching ..............    6
   3.1. messageProcessingModel ....................................    6
   3.2. pduVersion ................................................    6
   3.3. pduType ...................................................    7
   3.4. sendPduHandle .............................................    7
   4. Dispatcher Elements of Procedure ............................    7
   4.1. Sending an SNMP Message to the Network ....................    7
   4.1.1. Sending a Request or Notification .......................    8
   4.1.2. Sending a Response to the Network .......................    9
   4.2. Receiving an SNMP Message from the Network ................   11
   4.2.1. Message Dispatching of received SNMP Messages ...........   11
   4.2.2. PDU Dispatching for Incoming Messages ...................   12
   4.2.2.1. Incoming Requests and Notifications ...................   13
   4.2.2.2. Incoming Responses ....................................   14
   4.3. Application Registration for Handling PDU types ...........   15
   4.4. Application Unregistration for Handling PDU Types .........   16
   5. Definitions .................................................   16
   5.1. Definitions for SNMP Message Processing and Dispatching ...   16
   6. The SNMPv3 Message Format ...................................   19
   6.1. msgVersion ................................................   20
   6.2. msgID .....................................................   20
   6.3. msgMaxSize ................................................   21
   6.4. msgFlags ..................................................   21
   6.5. msgSecurityModel ..........................................   24
   6.6. msgSecurityParameters .....................................   24
   6.7. scopedPduData .............................................   24
   6.8. scopedPDU .................................................   24
   6.8.1. contextEngineID .........................................   24
   6.8.2. contextName .............................................   25
   6.8.3. data ....................................................   25
   7. Elements of Procedure for v3MP ..............................   25
   7.1. Prepare an Outgoing SNMP Message ..........................   26
   7.2. Prepare Data Elements from an Incoming SNMP Message .......   32
   8. Intellectual Property .......................................   37
   9. Acknowledgements ............................................   38
   10. Security Considerations ....................................   39
   11. References .................................................   40
   11.1. Normative References .....................................   40
   11.2. Informative References ...................................   41
   12. Editors' Addresses .........................................   42
   13. Full Copyright Statement ...................................   43
        
1. Introduction
1. 介绍

The Architecture for describing Internet Management Frameworks [RFC3411] describes that an SNMP engine is composed of:

描述Internet管理框架的体系结构[RFC3411]描述了SNMP引擎由以下部分组成:

1) a Dispatcher 2) a Message Processing Subsystem, 3) a Security Subsystem, and 4) an Access Control Subsystem.

1) 调度器2)消息处理子系统、3)安全子系统和4)访问控制子系统。

Applications make use of the services of these subsystems.

应用程序利用这些子系统的服务。

It is important to understand the SNMP architecture and its terminology to understand where the Message Processing Subsystem and Dispatcher described in this document fit into the architecture and interact with other subsystems within the architecture. The reader is expected to have read and understood the description of the SNMP architecture, defined in [RFC3411].

理解SNMP体系结构及其术语对于理解本文档中描述的消息处理子系统和调度程序在体系结构中的位置以及与体系结构中其他子系统的交互非常重要。读者应已阅读并理解[RFC3411]中定义的SNMP体系结构描述。

The Dispatcher in the SNMP engine sends and receives SNMP messages. It also dispatches SNMP PDUs to SNMP applications. When an SNMP message needs to be prepared or when data needs to be extracted from an SNMP message, the Dispatcher delegates these tasks to a message version-specific Message Processing Model within the Message Processing Subsystem.

SNMP引擎中的调度程序发送和接收SNMP消息。它还向SNMP应用程序发送SNMP PDU。当需要准备SNMP消息或需要从SNMP消息中提取数据时,Dispatcher会将这些任务委托给消息处理子系统中特定于消息版本的消息处理模型。

A Message Processing Model is responsible for processing an SNMP version-specific message and for coordinating the interaction with the Security Subsystem to ensure proper security is applied to the SNMP message being handled.

消息处理模型负责处理特定于SNMP版本的消息,并协调与安全子系统的交互,以确保对正在处理的SNMP消息应用适当的安全性。

Interactions between the Dispatcher, the Message Processing Subsystem, and applications are modeled using abstract data elements and abstract service interface primitives defined by the SNMP architecture.

调度器、消息处理子系统和应用程序之间的交互使用SNMP体系结构定义的抽象数据元素和抽象服务接口原语进行建模。

Similarly, interactions between the Message Processing Subsystem and the Security Subsystem are modeled using abstract data elements and abstract service interface primitives as defined by the SNMP architecture.

类似地,消息处理子系统和安全子系统之间的交互使用SNMP体系结构定义的抽象数据元素和抽象服务接口原语进行建模。

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 BCP 14, RFC 2119.

本文件中的关键词“必须”、“不得”、“要求”、“应”、“不应”、“应”、“不应”、“建议”、“可”和“可选”应按照BCP 14、RFC 2119中的说明进行解释。

2. Overview
2. 概述

The following illustration depicts the Message Processing in relation to SNMP applications, the Security Subsystem and Transport Mappings.

下图描述了与SNMP应用程序、安全子系统和传输映射相关的消息处理。

   +-------------------------------------------------------------------+
   | SNMP Entity                                                       |
   |                                                                   |
   | +---------------------------------------------------------------+ |
   | | Applications                                                  | |
   | | +-----------+  +--------------+                               | |
   | | | Command   |  | Notification |                               | |
   | | | Generator |  | Originator   | +-----------+ +--------------+| |
   | | +-----------+  +--------------+ | Proxy     | | Other        || |
   | | +-----------+  +--------------+ | Forwarder | |Application(s)|| |
   | | | Command   |  | Notification | +-----------+ +--------------+| |
   | | | Responder |  | Receiver     |                               | |
   | | +-----------+  +--------------+                               | |
   | +---------------------------------------------------------------+ |
   |        ^                ^               ^           ^             |
   |        |                |               |           |             |
   |        v                v               v           v             |
   |        +--------+-------+---------------+-----------+             |
   |                 ^                                                 |
   |                 |    +---------------------+  +-----------------+ |
   |                 |    | Message Processing  |  | Security        | |
   | Dispatcher      v    | Subsystem           |  | Subsystem       | |
   | +------------------+ |     +------------+  |  |                 | |
   | | PDU Dispatcher   | |  +->| v1MP     * |<--->| +-------------+ | |
   | |                  | |  |  +------------+  |  | | Other       | | |
   | |                  | |  |  +------------+  |  | | Security    | | |
   | |                  | |  +->| v2cMP    * |<--->| | Model       | | |
   | | Message          | |  |  +------------+  |  | +-------------+ | |
   | | Dispatcher  <-------->+                  |  |                 | |
   | |                  | |  |  +------------+  |  | +-------------+ | |
   | |                  | |  +->| v3MP     * |<--->| | User-based  | | |
   | | Transport        | |  |  +------------+  |  | | Security    | | |
   | | Mapping          | |  |  +------------+  |  | | Model       | | |
   | | (e.g., RFC 3417) | |  +->| otherMP  * |<--->| +-------------+ | |
   | +------------------+ |     +------------+  |  |                 | |
   |          ^           +---------------------+  +-----------------+ |
   |          |                                                        |
   +----------|--------------------------------------------------------+
              v
     +------------------+
     |   Network        |           * One or more models may be present.
     +------------------+
        
   +-------------------------------------------------------------------+
   | SNMP Entity                                                       |
   |                                                                   |
   | +---------------------------------------------------------------+ |
   | | Applications                                                  | |
   | | +-----------+  +--------------+                               | |
   | | | Command   |  | Notification |                               | |
   | | | Generator |  | Originator   | +-----------+ +--------------+| |
   | | +-----------+  +--------------+ | Proxy     | | Other        || |
   | | +-----------+  +--------------+ | Forwarder | |Application(s)|| |
   | | | Command   |  | Notification | +-----------+ +--------------+| |
   | | | Responder |  | Receiver     |                               | |
   | | +-----------+  +--------------+                               | |
   | +---------------------------------------------------------------+ |
   |        ^                ^               ^           ^             |
   |        |                |               |           |             |
   |        v                v               v           v             |
   |        +--------+-------+---------------+-----------+             |
   |                 ^                                                 |
   |                 |    +---------------------+  +-----------------+ |
   |                 |    | Message Processing  |  | Security        | |
   | Dispatcher      v    | Subsystem           |  | Subsystem       | |
   | +------------------+ |     +------------+  |  |                 | |
   | | PDU Dispatcher   | |  +->| v1MP     * |<--->| +-------------+ | |
   | |                  | |  |  +------------+  |  | | Other       | | |
   | |                  | |  |  +------------+  |  | | Security    | | |
   | |                  | |  +->| v2cMP    * |<--->| | Model       | | |
   | | Message          | |  |  +------------+  |  | +-------------+ | |
   | | Dispatcher  <-------->+                  |  |                 | |
   | |                  | |  |  +------------+  |  | +-------------+ | |
   | |                  | |  +->| v3MP     * |<--->| | User-based  | | |
   | | Transport        | |  |  +------------+  |  | | Security    | | |
   | | Mapping          | |  |  +------------+  |  | | Model       | | |
   | | (e.g., RFC 3417) | |  +->| otherMP  * |<--->| +-------------+ | |
   | +------------------+ |     +------------+  |  |                 | |
   |          ^           +---------------------+  +-----------------+ |
   |          |                                                        |
   +----------|--------------------------------------------------------+
              v
     +------------------+
     |   Network        |           * One or more models may be present.
     +------------------+
        
2.1. The Dispatcher
2.1. 调度员

The Dispatcher is a key piece of an SNMP engine. There is only one in an SNMP engine, and its job is to dispatch tasks to the multiple version-specific Message Processing Models, and to dispatch PDUs to various applications.

调度程序是SNMP引擎的关键部分。SNMP引擎中只有一个,其任务是将任务分派到多个版本特定的消息处理模型,并将PDU分派到各种应用程序。

For outgoing messages, an application provides a PDU to be sent, plus the data needed to prepare and send the message, and the application specifies which version-specific Message Processing Model will be used to prepare the message with the desired security processing. Once the message is prepared, the Dispatcher sends the message.

对于传出消息,应用程序提供要发送的PDU,以及准备和发送消息所需的数据,并且应用程序指定将使用哪个版本特定的消息处理模型来准备具有所需安全处理的消息。消息准备好后,调度器将发送消息。

For incoming messages, the Dispatcher determines the SNMP version of the incoming message and passes the message to the version-specific Message Processing Model to extract the components of the message and to coordinate the processing of security services for the message. After version-specific processing, the PDU Dispatcher determines which application, if any, should receive the PDU for processing and forwards it accordingly.

对于传入消息,Dispatcher确定传入消息的SNMP版本,并将消息传递给特定版本的消息处理模型,以提取消息的组件并协调消息的安全服务处理。在版本特定的处理之后,PDU调度程序确定哪个应用程序(如果有)应该接收PDU进行处理,并相应地转发它。

The Dispatcher, while sending and receiving SNMP messages, collects statistics about SNMP messages and the behavior of the SNMP engine in managed objects to make them accessible to remote SNMP entities. This document defines these managed objects, the MIB module which contains them, and how these managed objects might be used to provide useful management.

Dispatcher在发送和接收SNMP消息时,会收集有关SNMP消息和受管对象中SNMP引擎行为的统计信息,以使远程SNMP实体能够访问这些消息。本文档定义了这些托管对象、包含它们的MIB模块,以及如何使用这些托管对象提供有用的管理。

2.2. Message Processing Subsystem
2.2. 电报处理分系统

The SNMP Message Processing Subsystem is the part of an SNMP engine which interacts with the Dispatcher to handle the version-specific SNMP messages. It contains one or more Message Processing Models.

SNMP消息处理子系统是SNMP引擎的一部分,它与调度器交互以处理特定版本的SNMP消息。它包含一个或多个消息处理模型。

This document describes one Message Processing Model, the SNMPv3 Message Processing Model, in Section 6. The SNMPv3 Message Processing Model is defined in a separate section to show that multiple (independent) Message Processing Models can exist at the same time and that such Models can be described in different documents. The SNMPv3 Message Processing Model can be replaced or supplemented with other Message Processing Models in the future. Two Message Processing Models which are expected to be developed in the future are the SNMPv1 message format [RFC1157] and the SNMPv2c message format [RFC1901]. Others may be developed as needed.

本文档在第6节中描述了一种消息处理模型,即SNMPv3消息处理模型。SNMPv3消息处理模型在单独的一节中定义,以说明可以同时存在多个(独立的)消息处理模型,并且可以在不同的文档中描述这些模型。SNMPv3消息处理模型将来可以被其他消息处理模型替代或补充。预计未来将开发的两种消息处理模型是SNMPv1消息格式[RFC1157]和SNMPv2c消息格式[RFC1901]。其他可根据需要开发。

3. Elements of Message Processing and Dispatching
3. 信息处理和调度的要素

See [RFC3411] for the definitions of:

有关以下各项的定义,请参见[RFC3411]:

contextEngineID contextName scopedPDU maxSizeResponseScopedPDU securityModel securityName securityLevel messageProcessingModel

contextEngineID contextName ScopedDu MaxSizeResponseScopedDu securityModel securityName securityLevel messageProcessingModel

For incoming messages, a version-specific message processing module provides these values to the Dispatcher. For outgoing messages, an application provides these values to the Dispatcher.

对于传入的消息,特定于版本的消息处理模块向调度器提供这些值。对于传出消息,应用程序向调度器提供这些值。

For some version-specific processing, the values may be extracted from received messages; for other versions, the values may be determined by algorithm, or by an implementation-defined mechanism. The mechanism by which the value is determined is irrelevant to the Dispatcher.

对于某些版本特定的处理,可以从接收到的消息中提取值;对于其他版本,值可以由算法或由实现定义的机制确定。确定值的机制与调度器无关。

The following additional or expanded definitions are for use within the Dispatcher.

以下附加或扩展定义供Dispatcher内使用。

3.1. messageProcessingModel
3.1. 消息处理模型

The value of messageProcessingModel identifies a Message Processing Model. A Message Processing Model describes the version-specific procedures for extracting data from messages, generating messages, calling upon a securityModel to apply its security services to messages, for converting data from a version-specific message format into a generic format usable by the Dispatcher, and for converting data from Dispatcher format into a version-specific message format.

messageProcessingModel的值标识消息处理模型。消息处理模型描述了从消息中提取数据、生成消息、调用securityModel将其安全服务应用于消息、将数据从特定于版本的消息格式转换为调度器可用的通用格式的特定于版本的过程,以及将数据从Dispatcher格式转换为特定于版本的消息格式。

3.2. pduVersion
3.2. 扩散

The value of pduVersion represents a specific version of protocol operation and its associated PDU formats, such as SNMPv1 or SNMPv2 [RFC3416]. The values of pduVersion are specific to the version of the PDU contained in a message, and the PDUs processed by applications. The Dispatcher does not use the value of pduVersion directly.

pduVersion的值表示协议操作的特定版本及其相关PDU格式,例如SNMPv1或SNMPv2[RFC3416]。pduVersion的值特定于消息中包含的PDU版本以及应用程序处理的PDU。调度程序不直接使用pduVersion的值。

An application specifies the pduVersion when it requests the PDU Dispatcher to send a PDU to another SNMP engine. The Dispatcher passes the pduVersion to a Message Processing Model, so it knows how to handle the PDU properly.

应用程序在请求PDU调度程序向另一个SNMP引擎发送PDU时指定PDU版本。Dispatcher将PDU版本传递给消息处理模型,以便知道如何正确处理PDU。

For incoming messages, the pduVersion is provided to the Dispatcher by a version-specific Message Processing module. The PDU Dispatcher passes the pduVersion to the application so it knows how to handle the PDU properly. For example, a command responder application needs to know whether to use [RFC3416] elements of procedure and syntax instead of those specified for SNMPv1.

对于传入消息,pduVersion由特定于版本的消息处理模块提供给调度器。PDU调度程序将PDU版本传递给应用程序,以便它知道如何正确处理PDU。例如,命令响应程序应用程序需要知道是否使用过程和语法的[RFC3416]元素,而不是为SNMPv1指定的元素。

3.3. pduType
3.3. pduType

A value of the pduType represents a specific type of protocol operation. The values of the pduType are specific to the version of the PDU contained in a message.

pduType的值表示特定类型的协议操作。pduType的值特定于消息中包含的PDU版本。

Applications register to support particular pduTypes for particular contextEngineIDs.

应用程序注册以支持特定ContextEngineID的特定PDUType。

For incoming messages, pduType is provided to the Dispatcher by a version-specific Message Processing module. It is subsequently used to dispatch the PDU to the application which registered for the pduType for the contextEngineID of the associated scopedPDU.

对于传入消息,pduType由特定于版本的消息处理模块提供给调度器。它随后用于将PDU分派到为关联scopedPDU的contextEngineID的pduType注册的应用程序。

3.4. sendPduHandle
3.4. sendPduHandle

This handle is generated for coordinating the processing of requests and responses between the SNMP engine and an application. The handle must be unique across all version-specific Message Processing Models, and is of local significance only.

此句柄用于协调SNMP引擎和应用程序之间的请求和响应处理。句柄在所有版本特定的消息处理模型中必须是唯一的,并且仅具有本地意义。

4. Dispatcher Elements of Procedure
4. 程序要素

This section describes the procedures followed by the Dispatcher when generating and processing SNMP messages.

本节介绍调度器在生成和处理SNMP消息时遵循的过程。

4.1. Sending an SNMP Message to the Network
4.1. 向网络发送SNMP消息

This section describes the procedure followed by an SNMP engine whenever it sends an SNMP message.

本节介绍SNMP引擎在发送SNMP消息时遵循的过程。

4.1.1. Sending a Request or Notification
4.1.1. 发送请求或通知

The following procedures are followed by the Dispatcher when an application wants to send an SNMP PDU to another (remote) application, i.e., to initiate a communication by originating a message, such as one containing a request or a notification.

当应用程序希望向另一个(远程)应用程序发送SNMP PDU时,调度器将遵循以下过程,即通过发起消息(例如包含请求或通知的消息)来启动通信。

1) The application requests this using the abstract service primitive:

1) 应用程序使用抽象服务原语请求:

      statusInformation =              -- sendPduHandle if success
                                       -- errorIndication if failure
        sendPdu(
        IN   transportDomain           -- transport domain to be used
        IN   transportAddress          -- destination network address
        IN   messageProcessingModel    -- typically, SNMP version
        IN   securityModel             -- Security Model to use
        IN   securityName              -- on behalf of this principal
        IN   securityLevel             -- Level of Security requested
        IN   contextEngineID           -- data from/at this entity
        IN   contextName               -- data from/in this context
        IN   pduVersion                -- the version of the PDU
        IN   PDU                       -- SNMP Protocol Data Unit
        IN   expectResponse            -- TRUE or FALSE
             )
        
      statusInformation =              -- sendPduHandle if success
                                       -- errorIndication if failure
        sendPdu(
        IN   transportDomain           -- transport domain to be used
        IN   transportAddress          -- destination network address
        IN   messageProcessingModel    -- typically, SNMP version
        IN   securityModel             -- Security Model to use
        IN   securityName              -- on behalf of this principal
        IN   securityLevel             -- Level of Security requested
        IN   contextEngineID           -- data from/at this entity
        IN   contextName               -- data from/in this context
        IN   pduVersion                -- the version of the PDU
        IN   PDU                       -- SNMP Protocol Data Unit
        IN   expectResponse            -- TRUE or FALSE
             )
        

2) If the messageProcessingModel value does not represent a Message Processing Model known to the Dispatcher, then an errorIndication (implementation-dependent) is returned to the calling application. No further processing is performed.

2) 如果messageProcessingModel值不表示调度程序已知的消息处理模型,则会向调用应用程序返回错误指示(取决于实现)。不执行进一步的处理。

3) The Dispatcher generates a sendPduHandle to coordinate subsequent processing.

3) 调度器生成sendPduHandle以协调后续处理。

4) The Message Dispatcher sends the request to the version-specific Message Processing module identified by messageProcessingModel using the abstract service primitive:

4) 消息调度器使用抽象服务原语将请求发送到messageProcessingModel标识的特定于版本的消息处理模块:

      statusInformation =              -- success or error indication
        prepareOutgoingMessage(
        IN   transportDomain           -- as specified by application
        IN   transportAddress          -- as specified by application
        IN   messageProcessingModel    -- as specified by application
        IN   securityModel             -- as specified by application
        IN   securityName              -- as specified by application
        IN   securityLevel             -- as specified by application
        IN   contextEngineID           -- as specified by application
        IN   contextName               -- as specified by application
        IN   pduVersion                -- as specified by application
        IN   PDU                       -- as specified by application
        IN   expectResponse            -- as specified by application
        IN   sendPduHandle             -- as determined in step 3.
        OUT  destTransportDomain       -- destination transport domain
        OUT  destTransportAddress      -- destination transport address
        OUT  outgoingMessage           -- the message to send
        OUT  outgoingMessageLength     -- the message length
             )
        
      statusInformation =              -- success or error indication
        prepareOutgoingMessage(
        IN   transportDomain           -- as specified by application
        IN   transportAddress          -- as specified by application
        IN   messageProcessingModel    -- as specified by application
        IN   securityModel             -- as specified by application
        IN   securityName              -- as specified by application
        IN   securityLevel             -- as specified by application
        IN   contextEngineID           -- as specified by application
        IN   contextName               -- as specified by application
        IN   pduVersion                -- as specified by application
        IN   PDU                       -- as specified by application
        IN   expectResponse            -- as specified by application
        IN   sendPduHandle             -- as determined in step 3.
        OUT  destTransportDomain       -- destination transport domain
        OUT  destTransportAddress      -- destination transport address
        OUT  outgoingMessage           -- the message to send
        OUT  outgoingMessageLength     -- the message length
             )
        

5) If the statusInformation indicates an error, the errorIndication is returned to the calling application. No further processing is performed.

5) 如果statusInformation指示错误,则会将错误指示返回给调用应用程序。不执行进一步的处理。

6) If the statusInformation indicates success, the sendPduHandle is returned to the application, and the outgoingMessage is sent. The transport used to send the outgoingMessage is returned via destTransportDomain, and the address to which it was sent is returned via destTransportAddress.

6) 如果statusInformation指示成功,则sendPduHandle将返回到应用程序,并发送Outgoing消息。用于发送outgoingMessage的传输通过destTransportDomain返回,发送到的地址通过destTransportAddress返回。

Outgoing Message Processing is complete.

传出消息处理已完成。

4.1.2. Sending a Response to the Network
4.1.2. 向网络发送响应

The following procedure is followed when an application wants to return a response back to the originator of an SNMP Request.

当应用程序希望将响应返回给SNMP请求的发起人时,请遵循以下过程。

1) An application can request this using the abstract service primitive:

1) 应用程序可以使用抽象服务原语请求此操作:

      result =
      returnResponsePdu(
       IN   messageProcessingModel   -- typically, SNMP version
       IN   securityModel            -- Security Model in use
       IN   securityName             -- on behalf of this principal
       IN   securityLevel            -- same as on incoming request
       IN   contextEngineID          -- data from/at this SNMP entity
       IN   contextName              -- data from/in this context
       IN   pduVersion               -- the version of the PDU
       IN   PDU                      -- SNMP Protocol Data Unit
       IN   maxSizeResponseScopedPDU -- maximum size of Response PDU
       IN   stateReference           -- reference to state information
                                     -- as presented with the request
       IN   statusInformation        -- success or errorIndication
       )                             -- (error counter OID and value
                                     -- when errorIndication)
        
      result =
      returnResponsePdu(
       IN   messageProcessingModel   -- typically, SNMP version
       IN   securityModel            -- Security Model in use
       IN   securityName             -- on behalf of this principal
       IN   securityLevel            -- same as on incoming request
       IN   contextEngineID          -- data from/at this SNMP entity
       IN   contextName              -- data from/in this context
       IN   pduVersion               -- the version of the PDU
       IN   PDU                      -- SNMP Protocol Data Unit
       IN   maxSizeResponseScopedPDU -- maximum size of Response PDU
       IN   stateReference           -- reference to state information
                                     -- as presented with the request
       IN   statusInformation        -- success or errorIndication
       )                             -- (error counter OID and value
                                     -- when errorIndication)
        

2) The Message Dispatcher sends the request to the appropriate Message Processing Model indicated by the received value of messageProcessingModel using the abstract service primitive:

2) 消息分派器使用抽象服务原语将请求发送到由messageProcessingModel的接收值指示的适当消息处理模型:

      result =                       -- SUCCESS or errorIndication
       prepareResponseMessage(
       IN   messageProcessingModel   -- specified by application
       IN   securityModel            -- specified by application
       IN   securityName             -- specified by application
       IN   securityLevel            -- specified by application
       IN   contextEngineID          -- specified by application
       IN   contextName              -- specified by application
       IN   pduVersion               -- specified by application
       IN   PDU                      -- specified by application
       IN   maxSizeResponseScopedPDU -- specified by application
       IN   stateReference           -- specified by application
       IN   statusInformation        -- specified by application
       OUT  destTransportDomain      -- destination transport domain
       OUT  destTransportAddress     -- destination transport address
       OUT  outgoingMessage          -- the message to send
       OUT  outgoingMessageLength    -- the message length
            )
        
      result =                       -- SUCCESS or errorIndication
       prepareResponseMessage(
       IN   messageProcessingModel   -- specified by application
       IN   securityModel            -- specified by application
       IN   securityName             -- specified by application
       IN   securityLevel            -- specified by application
       IN   contextEngineID          -- specified by application
       IN   contextName              -- specified by application
       IN   pduVersion               -- specified by application
       IN   PDU                      -- specified by application
       IN   maxSizeResponseScopedPDU -- specified by application
       IN   stateReference           -- specified by application
       IN   statusInformation        -- specified by application
       OUT  destTransportDomain      -- destination transport domain
       OUT  destTransportAddress     -- destination transport address
       OUT  outgoingMessage          -- the message to send
       OUT  outgoingMessageLength    -- the message length
            )
        

3) If the result is an errorIndication, the errorIndication is returned to the calling application. No further processing is performed.

3) 如果结果是errorIndication,则errorIndication将返回给调用应用程序。不执行进一步的处理。

4) If the result is success, the outgoingMessage is sent. The transport used to send the outgoingMessage is returned via destTransportDomain, and the address to which it was sent is returned via destTransportAddress.

4) 如果结果为成功,则发送Outgoing消息。用于发送outgoingMessage的传输通过destTransportDomain返回,发送到的地址通过destTransportAddress返回。

Message Processing is complete.

消息处理完成。

4.2. Receiving an SNMP Message from the Network
4.2. 从网络接收SNMP消息

This section describes the procedure followed by an SNMP engine whenever it receives an SNMP message.

本节介绍SNMP引擎在收到SNMP消息时遵循的过程。

Please note, that for the sake of clarity and to prevent the text from being even longer and more complicated, some details were omitted from the steps below. In particular, the elements of procedure do not always explicitly indicate when state information needs to be released. The general rule is that if state information is available when a message is to be "discarded without further processing", then the state information must also be released at that same time.

请注意,为清晰起见,并防止文本变得更长、更复杂,以下步骤省略了一些细节。特别是,程序的元素并不总是明确指出何时需要发布状态信息。一般规则是,如果在消息“未经进一步处理即被丢弃”时,状态信息可用,则必须同时释放状态信息。

4.2.1. Message Dispatching of received SNMP Messages
4.2.1. 接收到的SNMP消息的消息调度

1) The snmpInPkts counter [RFC3418] is incremented.

1) snmpInPkts计数器[RFC3418]递增。

2) The version of the SNMP message is determined in an implementation-dependent manner. If the packet cannot be sufficiently parsed to determine the version of the SNMP message, then the snmpInASNParseErrs [RFC3418] counter is incremented, and the message is discarded without further processing. If the version is not supported, then the snmpInBadVersions [RFC3418] counter is incremented, and the message is discarded without further processing.

2) SNMP消息的版本取决于实现方式。如果无法充分解析数据包以确定SNMP消息的版本,则snmpinasnparserrs[RFC3418]计数器将递增,消息将被丢弃,无需进一步处理。如果不支持该版本,则snmpinbFacitions[RFC3418]计数器将递增,消息将被丢弃,无需进一步处理。

3) The origin transportDomain and origin transportAddress are determined.

3) 已确定源传输域和源传输地址。

4) The message is passed to the version-specific Message Processing Model which returns the abstract data elements required by the Dispatcher. This is performed using the abstract service primitive:

4) 消息被传递到特定于版本的消息处理模型,该模型返回调度器所需的抽象数据元素。这是使用抽象服务原语执行的:

      result =                        -- SUCCESS or errorIndication
        prepareDataElements(
        IN   transportDomain          -- origin as determined in step 3.
        IN   transportAddress         -- origin as determined in step 3.
        IN   wholeMsg                 -- as received from the network
        IN   wholeMsgLength           -- as received from the network
        OUT  messageProcessingModel   -- typically, SNMP version
        OUT  securityModel            -- Security Model specified
        OUT  securityName             -- on behalf of this principal
        OUT  securityLevel            -- Level of Security specified
        OUT  contextEngineID          -- data from/at this entity
        OUT  contextName              -- data from/in this context
        OUT  pduVersion               -- the version of the PDU
        OUT  PDU                      -- SNMP Protocol Data Unit
        OUT  pduType                  -- SNMP PDU type
        OUT  sendPduHandle            -- handle for a matched request
        OUT  maxSizeResponseScopedPDU -- maximum size of Response PDU
        OUT  statusInformation        -- success or errorIndication
                                      -- (error counter OID and value
                                      -- when errorIndication)
        OUT  stateReference           -- reference to state information
                                      -- to be used for a possible
             )                        -- Response
        
      result =                        -- SUCCESS or errorIndication
        prepareDataElements(
        IN   transportDomain          -- origin as determined in step 3.
        IN   transportAddress         -- origin as determined in step 3.
        IN   wholeMsg                 -- as received from the network
        IN   wholeMsgLength           -- as received from the network
        OUT  messageProcessingModel   -- typically, SNMP version
        OUT  securityModel            -- Security Model specified
        OUT  securityName             -- on behalf of this principal
        OUT  securityLevel            -- Level of Security specified
        OUT  contextEngineID          -- data from/at this entity
        OUT  contextName              -- data from/in this context
        OUT  pduVersion               -- the version of the PDU
        OUT  PDU                      -- SNMP Protocol Data Unit
        OUT  pduType                  -- SNMP PDU type
        OUT  sendPduHandle            -- handle for a matched request
        OUT  maxSizeResponseScopedPDU -- maximum size of Response PDU
        OUT  statusInformation        -- success or errorIndication
                                      -- (error counter OID and value
                                      -- when errorIndication)
        OUT  stateReference           -- reference to state information
                                      -- to be used for a possible
             )                        -- Response
        

5) If the result is a FAILURE errorIndication, the message is discarded without further processing.

5) 如果结果是故障错误指示,则消息将被丢弃,无需进一步处理。

6) At this point, the abstract data elements have been prepared and processing continues as described in Section 4.2.2, PDU Dispatching for Incoming Messages.

6) 此时,已准备好抽象数据元素,并按照第4.2.2节“传入消息的PDU调度”中的说明继续处理。

4.2.2. PDU Dispatching for Incoming Messages
4.2.2. 发送传入消息的PDU

The elements of procedure for the dispatching of PDUs depends on the value of sendPduHandle. If the value of sendPduHandle is <none>, then this is a request or notification and the procedures specified in Section 4.2.2.1 apply. If the value of snmpPduHandle is not <none>, then this is a response and the procedures specified in Section 4.2.2.2 apply.

PDU调度的程序要素取决于sendPduHandle的值。如果sendPduHandle的值为<none>,则这是一个请求或通知,第4.2.2.1节中规定的程序适用。如果snmpPduHandle的值不是<none>,则这是一个响应,第4.2.2.2节中规定的程序适用。

4.2.2.1. Incoming Requests and Notifications
4.2.2.1. 传入的请求和通知

The following procedures are followed for the dispatching of PDUs when the value of sendPduHandle is <none>, indicating this is a request or notification.

当sendPduHandle的值<none>表示这是一个请求或通知时,PDU的调度遵循以下过程。

1) The combination of contextEngineID and pduType is used to determine which application has registered for this request or notification.

1) contextEngineID和pduType的组合用于确定哪个应用程序已为此请求或通知注册。

2) If no application has registered for the combination, then:

2) 如果没有为组合注册申请,则:

a) The snmpUnknownPDUHandlers counter is incremented.

a) snmpUnknownPDUHandlers计数器递增。

b) A Response message is generated using the abstract service primitive:

b) 使用抽象服务原语生成响应消息:

         result =                       -- SUCCESS or FAILURE
         prepareResponseMessage(
         IN   messageProcessingModel    -- as provided by MP module
         IN   securityModel             -- as provided by MP module
         IN   securityName              -- as provided by MP module
         IN   securityLevel             -- as provided by MP module
         IN   contextEngineID           -- as provided by MP module
         IN   contextName               -- as provided by MP module
         IN   pduVersion                -- as provided by MP module
         IN   PDU                       -- as provided by MP module
         IN   maxSizeResponseScopedPDU  -- as provided by MP module
         IN   stateReference            -- as provided by MP module
         IN   statusInformation         -- errorIndication plus
                                        -- snmpUnknownPDUHandlers OID
                                        -- value pair.
         OUT  destTransportDomain       -- destination transportDomain
         OUT  destTransportAddress      -- destination transportAddress
         OUT  outgoingMessage           -- the message to send
         OUT  outgoingMessageLength     -- its length
         )
        
         result =                       -- SUCCESS or FAILURE
         prepareResponseMessage(
         IN   messageProcessingModel    -- as provided by MP module
         IN   securityModel             -- as provided by MP module
         IN   securityName              -- as provided by MP module
         IN   securityLevel             -- as provided by MP module
         IN   contextEngineID           -- as provided by MP module
         IN   contextName               -- as provided by MP module
         IN   pduVersion                -- as provided by MP module
         IN   PDU                       -- as provided by MP module
         IN   maxSizeResponseScopedPDU  -- as provided by MP module
         IN   stateReference            -- as provided by MP module
         IN   statusInformation         -- errorIndication plus
                                        -- snmpUnknownPDUHandlers OID
                                        -- value pair.
         OUT  destTransportDomain       -- destination transportDomain
         OUT  destTransportAddress      -- destination transportAddress
         OUT  outgoingMessage           -- the message to send
         OUT  outgoingMessageLength     -- its length
         )
        

c) If the result is SUCCESS, then the prepared message is sent to the originator of the request as identified by the transportDomain and transportAddress. The transport used to send the outgoingMessage is returned via destTransportDomain, and the address to which it was sent is returned via destTransportAddress.

c) 如果结果是成功的,则准备好的消息将发送给由transportDomain和transportAddress标识的请求发起人。用于发送outgoingMessage的传输通过destTransportDomain返回,发送到的地址通过destTransportAddress返回。

d) The incoming message is discarded without further processing. Message Processing for this message is complete.

d) 传入消息将被丢弃,无需进一步处理。此邮件的邮件处理已完成。

3) The PDU is dispatched to the application, using the abstract service primitive:

3) 使用抽象服务原语将PDU调度到应用程序:

      processPdu(                     -- process Request/Notification
        IN   messageProcessingModel   -- as provided by MP module
        IN   securityModel            -- as provided by MP module
        IN   securityName             -- as provided by MP module
        IN   securityLevel            -- as provided by MP module
        IN   contextEngineID          -- as provided by MP module
        IN   contextName              -- as provided by MP module
        IN   pduVersion               -- as provided by MP module
        IN   PDU                      -- as provided by MP module
        IN   maxSizeResponseScopedPDU -- as provided by MP module
        IN   stateReference           -- as provided by MP module
                                      -- needed when sending response
             )
        
      processPdu(                     -- process Request/Notification
        IN   messageProcessingModel   -- as provided by MP module
        IN   securityModel            -- as provided by MP module
        IN   securityName             -- as provided by MP module
        IN   securityLevel            -- as provided by MP module
        IN   contextEngineID          -- as provided by MP module
        IN   contextName              -- as provided by MP module
        IN   pduVersion               -- as provided by MP module
        IN   PDU                      -- as provided by MP module
        IN   maxSizeResponseScopedPDU -- as provided by MP module
        IN   stateReference           -- as provided by MP module
                                      -- needed when sending response
             )
        

Message processing for this message is complete.

此邮件的邮件处理已完成。

4.2.2.2. Incoming Responses
4.2.2.2. 收到的答复

The following procedures are followed for the dispatching of PDUs when the value of sendPduHandle is not <none>, indicating this is a response.

当sendPduHandle的值不是<none>时,PDU的调度遵循以下步骤,表示这是一个响应。

1) The value of sendPduHandle is used to determine, in an implementation-defined manner, which application is waiting for a response associated with this sendPduHandle.

1) sendPduHandle的值用于以实现定义的方式确定哪个应用程序正在等待与此sendPduHandle关联的响应。

2) If no waiting application is found, the message is discarded without further processing, and the stateReference is released. The snmpUnknownPDUHandlers counter is incremented. Message Processing is complete for this message.

2) 如果没有找到正在等待的应用程序,消息将被丢弃而不进行进一步处理,staterence将被释放。snmpUnknownPDUHandlers计数器递增。此邮件的邮件处理已完成。

3) Any cached information, including stateReference, about the message is discarded.

3) 关于消息的任何缓存信息(包括stateReference)都将被丢弃。

4) The response is dispatched to the application using the abstract service primitive:

4) 使用抽象服务原语将响应发送到应用程序:

      processResponsePdu(              -- process Response PDU
        IN   messageProcessingModel    -- provided by the MP module
        IN   securityModel             -- provided by the MP module
        IN   securityName              -- provided by the MP module
        IN   securityLevel             -- provided by the MP module
        IN   contextEngineID           -- provided by the MP module
        IN   contextName               -- provided by the MP module
        IN   pduVersion                -- provided by the MP module
        IN   PDU                       -- provided by the MP module
        IN   statusInformation         -- provided by the MP module
        IN   sendPduHandle             -- provided by the MP module
             )
        
      processResponsePdu(              -- process Response PDU
        IN   messageProcessingModel    -- provided by the MP module
        IN   securityModel             -- provided by the MP module
        IN   securityName              -- provided by the MP module
        IN   securityLevel             -- provided by the MP module
        IN   contextEngineID           -- provided by the MP module
        IN   contextName               -- provided by the MP module
        IN   pduVersion                -- provided by the MP module
        IN   PDU                       -- provided by the MP module
        IN   statusInformation         -- provided by the MP module
        IN   sendPduHandle             -- provided by the MP module
             )
        

Message Processing is complete for this message.

此邮件的邮件处理已完成。

4.3. Application Registration for Handling PDU types
4.3. 处理PDU类型的申请注册

Applications that want to process certain PDUs must register with the PDU Dispatcher. Applications specify the combination of contextEngineID and pduType(s) for which they want to take responsibility.

要处理某些PDU的应用程序必须向PDU调度程序注册。应用程序指定要负责的contextEngineID和pduType的组合。

1) An application registers according to the abstract interface primitive:

1) 应用程序根据抽象接口原语进行注册:

      statusInformation =           -- success or errorIndication
        registerContextEngineID(
        IN   contextEngineID        -- take responsibility for this one
        IN   pduType                -- the pduType(s) to be registered
             )
        
      statusInformation =           -- success or errorIndication
        registerContextEngineID(
        IN   contextEngineID        -- take responsibility for this one
        IN   pduType                -- the pduType(s) to be registered
             )
        

Note: Implementations may provide a means of requesting registration for simultaneous multiple contextEngineID values, e.g., all contextEngineID values, and may also provide a means for requesting simultaneous registration for multiple values of the pduType.

注意:实现可以提供请求同时注册多个contextEngineID值(例如,所有contextEngineID值)的方法,并且还可以提供请求同时注册pduType的多个值的方法。

2) The parameters may be checked for validity; if they are not, then an errorIndication (invalidParameter) is returned to the application.

2) 可检查参数的有效性;如果不是,则向应用程序返回错误指示(invalidParameter)。

3) Each combination of contextEngineID and pduType can be registered only once. If another application has already registered for the specified combination, then an errorIndication (alreadyRegistered) is returned to the application.

3) contextEngineID和pduType的每个组合只能注册一次。如果另一个应用程序已为指定的组合注册,则会向该应用程序返回错误指示(alreadyRegistered)。

4) Otherwise, the registration is saved so that SNMP PDUs can be dispatched to this application.

4) 否则,将保存注册,以便将SNMP PDU分派到此应用程序。

4.4. Application Unregistration for Handling PDU Types
4.4. 处理PDU类型的应用程序注销

Applications that no longer want to process certain PDUs must unregister with the PDU Dispatcher.

不再需要处理某些PDU的应用程序必须向PDU调度程序注销。

1) An application unregisters using the abstract service primitive:

1) 应用程序使用抽象服务原语注销:

      unregisterContextEngineID(
       IN   contextEngineID        -- give up responsibility for this
       IN   pduType                -- the pduType(s) to be unregistered
            )
        
      unregisterContextEngineID(
       IN   contextEngineID        -- give up responsibility for this
       IN   pduType                -- the pduType(s) to be unregistered
            )
        

Note: Implementations may provide a means for requesting the unregistration for simultaneous multiple contextEngineID values, e.g., all contextEngineID values, and may also provide a means for requesting simultaneous unregistration for multiple values of pduType.

注意:实现可以提供一种方法,用于请求同时多个contextEngineID值(例如,所有contextEngineID值)的注销,还可以提供一种方法,用于请求同时注销pduType的多个值。

2) If the contextEngineID and pduType combination has been registered, then the registration is deleted.

2) 如果contextEngineID和pduType组合已注册,则该注册将被删除。

If no such registration exists, then the request is ignored.

如果不存在此类注册,则忽略该请求。

5. Definitions
5. 定义
5.1. Definitions for SNMP Message Processing and Dispatching
5.1. SNMP消息处理和调度的定义
   SNMP-MPD-MIB DEFINITIONS ::= BEGIN
        
   SNMP-MPD-MIB DEFINITIONS ::= BEGIN
        

IMPORTS MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF MODULE-IDENTITY, OBJECT-TYPE, snmpModules, Counter32 FROM SNMPv2-SMI;

从SNMPv2 SMI导入MODULE-COMPLIANCE、OBJECT-GROUP、SNMPv2 CONF MODULE-IDENTITY、OBJECT-TYPE、snmpModules、Counter32;

snmpMPDMIB MODULE-IDENTITY LAST-UPDATED "200210140000Z" ORGANIZATION "SNMPv3 Working Group" CONTACT-INFO "WG-EMail: snmpv3@lists.tislabs.com Subscribe: snmpv3-request@lists.tislabs.com

SNMPDMIB模块标识最后更新的“200210140000Z”组织“SNMPv3工作组”联系方式工作组电子邮件:snmpv3@lists.tislabs.com订阅:snmpv3-request@lists.tislabs.com

Co-Chair: Russ Mundy Network Associates Laboratories postal: 15204 Omega Drive, Suite 300 Rockville, MD 20850-4601 USA

联席主席:Russ Mundy Network Associates Laboratories邮政编码:美国马里兰州罗克维尔市欧米茄大道15204号300室20850-4601

                     EMail:      mundy@tislabs.com
                     phone:      +1 301-947-7107
        
                     EMail:      mundy@tislabs.com
                     phone:      +1 301-947-7107
        

Co-Chair & Co-editor: David Harrington Enterasys Networks postal: 35 Industrial Way P. O. Box 5005 Rochester NH 03866-5005 USA EMail: dbh@enterasys.com phone: +1 603-337-2614

联合主席和联合编辑:David Harrington Enterasys Networks邮政:35工业路邮政信箱5005罗切斯特NH 03866-5005美国电子邮件:dbh@enterasys.com电话:+1603-337-2614

Co-editor: Jeffrey Case SNMP Research, Inc. postal: 3001 Kimberlin Heights Road Knoxville, TN 37920-9716 USA EMail: case@snmp.com phone: +1 423-573-1434

联合编辑:Jeffrey Case SNMP Research,Inc.邮政编码:美国田纳西州诺克斯维尔金伯利高地路3001号邮编:37920-9716电子邮件:case@snmp.com电话:+1423-573-1434

Co-editor: Randy Presuhn BMC Software, Inc. postal: 2141 North First Street San Jose, CA 95131 USA EMail: randy_presuhn@bmc.com phone: +1 408-546-1006

共同编辑:Randy Presohn BMC Software,Inc.邮政编码:2141 North First Street San Jose,CA 95131美国电子邮件:Randy_presuhn@bmc.com电话:+1408-546-1006

Co-editor: Bert Wijnen Lucent Technologies postal: Schagen 33 3461 GL Linschoten Netherlands EMail: bwijnen@lucent.com phone: +31 348-680-485 " DESCRIPTION "The MIB for Message Processing and Dispatching

合编:Bert Wijnen-Lucent Technologies邮政:Schagen 33 3461 GL Linschoten荷兰电子邮件:bwijnen@lucent.com电话:+31348-680-485“说明”用于消息处理和调度的MIB

Copyright (C) The Internet Society (2002). This version of this MIB module is part of RFC 3412; see the RFC itself for full legal notices. " REVISION "200210140000Z" -- 14 October 2002 DESCRIPTION "Updated addresses, published as RFC 3412." REVISION "199905041636Z" -- 4 May 1999 DESCRIPTION "Updated addresses, published as RFC 2572."

版权所有(C)互联网协会(2002年)。此版本的MIB模块是RFC 3412的一部分;有关完整的法律通知,请参见RFC本身。“修订版”200210140000Z--2002年10月14日描述“更新地址,发布为RFC 3412。“修订版”199905041636Z--1999年5月4日描述“更新地址,发布为RFC 2572。”

       REVISION     "199709300000Z"            -- 30 September 1997
       DESCRIPTION  "Original version, published as RFC 2272."
       ::= { snmpModules 11 }
        
       REVISION     "199709300000Z"            -- 30 September 1997
       DESCRIPTION  "Original version, published as RFC 2272."
       ::= { snmpModules 11 }
        
   -- Administrative assignments ***************************************
        
   -- Administrative assignments ***************************************
        
   snmpMPDAdmin           OBJECT IDENTIFIER ::= { snmpMPDMIB 1 }
   snmpMPDMIBObjects      OBJECT IDENTIFIER ::= { snmpMPDMIB 2 }
   snmpMPDMIBConformance  OBJECT IDENTIFIER ::= { snmpMPDMIB 3 }
        
   snmpMPDAdmin           OBJECT IDENTIFIER ::= { snmpMPDMIB 1 }
   snmpMPDMIBObjects      OBJECT IDENTIFIER ::= { snmpMPDMIB 2 }
   snmpMPDMIBConformance  OBJECT IDENTIFIER ::= { snmpMPDMIB 3 }
        
   -- Statistics for SNMP Messages *************************************
        
   -- Statistics for SNMP Messages *************************************
        
   snmpMPDStats           OBJECT IDENTIFIER ::= { snmpMPDMIBObjects 1 }
        
   snmpMPDStats           OBJECT IDENTIFIER ::= { snmpMPDMIBObjects 1 }
        
   snmpUnknownSecurityModels OBJECT-TYPE
       SYNTAX       Counter32
       MAX-ACCESS   read-only
       STATUS       current
       DESCRIPTION "The total number of packets received by the SNMP
                    engine which were dropped because they referenced a
                    securityModel that was not known to or supported by
                    the SNMP engine.
                   "
       ::= { snmpMPDStats 1 }
        
   snmpUnknownSecurityModels OBJECT-TYPE
       SYNTAX       Counter32
       MAX-ACCESS   read-only
       STATUS       current
       DESCRIPTION "The total number of packets received by the SNMP
                    engine which were dropped because they referenced a
                    securityModel that was not known to or supported by
                    the SNMP engine.
                   "
       ::= { snmpMPDStats 1 }
        
   snmpInvalidMsgs OBJECT-TYPE
       SYNTAX       Counter32
       MAX-ACCESS   read-only
       STATUS       current
       DESCRIPTION "The total number of packets received by the SNMP
                    engine which were dropped because there were invalid
                    or inconsistent components in the SNMP message.
                   "
       ::= { snmpMPDStats 2 }
        
   snmpInvalidMsgs OBJECT-TYPE
       SYNTAX       Counter32
       MAX-ACCESS   read-only
       STATUS       current
       DESCRIPTION "The total number of packets received by the SNMP
                    engine which were dropped because there were invalid
                    or inconsistent components in the SNMP message.
                   "
       ::= { snmpMPDStats 2 }
        
   snmpUnknownPDUHandlers OBJECT-TYPE
       SYNTAX       Counter32
       MAX-ACCESS   read-only
       STATUS       current
       DESCRIPTION "The total number of packets received by the SNMP
                    engine which were dropped because the PDU contained
                    in the packet could not be passed to an application
                    responsible for handling the pduType, e.g. no SNMP
                    application had registered for the proper
                    combination of the contextEngineID and the pduType.
                   "
       ::= { snmpMPDStats 3 }
        
   snmpUnknownPDUHandlers OBJECT-TYPE
       SYNTAX       Counter32
       MAX-ACCESS   read-only
       STATUS       current
       DESCRIPTION "The total number of packets received by the SNMP
                    engine which were dropped because the PDU contained
                    in the packet could not be passed to an application
                    responsible for handling the pduType, e.g. no SNMP
                    application had registered for the proper
                    combination of the contextEngineID and the pduType.
                   "
       ::= { snmpMPDStats 3 }
        
   -- Conformance information ******************************************
        
   -- Conformance information ******************************************
        
   snmpMPDMIBCompliances OBJECT IDENTIFIER ::= {snmpMPDMIBConformance 1}
   snmpMPDMIBGroups      OBJECT IDENTIFIER ::= {snmpMPDMIBConformance 2}
        
   snmpMPDMIBCompliances OBJECT IDENTIFIER ::= {snmpMPDMIBConformance 1}
   snmpMPDMIBGroups      OBJECT IDENTIFIER ::= {snmpMPDMIBConformance 2}
        

-- Compliance statements

--合规声明

   snmpMPDCompliance MODULE-COMPLIANCE
       STATUS       current
       DESCRIPTION "The compliance statement for SNMP entities which
                    implement the SNMP-MPD-MIB.
                   "
       MODULE    -- this module
           MANDATORY-GROUPS { snmpMPDGroup }
       ::= { snmpMPDMIBCompliances 1 }
        
   snmpMPDCompliance MODULE-COMPLIANCE
       STATUS       current
       DESCRIPTION "The compliance statement for SNMP entities which
                    implement the SNMP-MPD-MIB.
                   "
       MODULE    -- this module
           MANDATORY-GROUPS { snmpMPDGroup }
       ::= { snmpMPDMIBCompliances 1 }
        
   snmpMPDGroup OBJECT-GROUP
       OBJECTS {
                 snmpUnknownSecurityModels,
                 snmpInvalidMsgs,
                 snmpUnknownPDUHandlers
               }
       STATUS       current
       DESCRIPTION "A collection of objects providing for remote
                    monitoring of the SNMP Message Processing and
                    Dispatching process.
                   "
       ::= { snmpMPDMIBGroups 1 }
        
   snmpMPDGroup OBJECT-GROUP
       OBJECTS {
                 snmpUnknownSecurityModels,
                 snmpInvalidMsgs,
                 snmpUnknownPDUHandlers
               }
       STATUS       current
       DESCRIPTION "A collection of objects providing for remote
                    monitoring of the SNMP Message Processing and
                    Dispatching process.
                   "
       ::= { snmpMPDMIBGroups 1 }
        

END

终止

6. The SNMPv3 Message Format
6. SNMPv3消息格式

This section defines the SNMPv3 message format and the corresponding SNMP version 3 Message Processing Model (v3MP).

本节定义SNMPv3消息格式和相应的SNMP版本3消息处理模型(v3MP)。

   SNMPv3MessageSyntax DEFINITIONS IMPLICIT TAGS ::= BEGIN
        
   SNMPv3MessageSyntax DEFINITIONS IMPLICIT TAGS ::= BEGIN
        
       SNMPv3Message ::= SEQUENCE {
           -- identify the layout of the SNMPv3Message
           -- this element is in same position as in SNMPv1
           -- and SNMPv2c, allowing recognition
           -- the value 3 is used for snmpv3
           msgVersion INTEGER ( 0 .. 2147483647 ),
           -- administrative parameters
           msgGlobalData HeaderData,
           -- security model-specific parameters
           -- format defined by Security Model
        
       SNMPv3Message ::= SEQUENCE {
           -- identify the layout of the SNMPv3Message
           -- this element is in same position as in SNMPv1
           -- and SNMPv2c, allowing recognition
           -- the value 3 is used for snmpv3
           msgVersion INTEGER ( 0 .. 2147483647 ),
           -- administrative parameters
           msgGlobalData HeaderData,
           -- security model-specific parameters
           -- format defined by Security Model
        

msgSecurityParameters OCTET STRING, msgData ScopedPduData }

msgSecurityParameters八位字节字符串,msgData ScopedPduData}

       HeaderData ::= SEQUENCE {
           msgID      INTEGER (0..2147483647),
           msgMaxSize INTEGER (484..2147483647),
        
       HeaderData ::= SEQUENCE {
           msgID      INTEGER (0..2147483647),
           msgMaxSize INTEGER (484..2147483647),
        
           msgFlags   OCTET STRING (SIZE(1)),
                      --  .... ...1   authFlag
                      --  .... ..1.   privFlag
                      --  .... .1..   reportableFlag
                      --              Please observe:
                      --  .... ..00   is OK, means noAuthNoPriv
                      --  .... ..01   is OK, means authNoPriv
                      --  .... ..10   reserved, MUST NOT be used.
                      --  .... ..11   is OK, means authPriv
        
           msgFlags   OCTET STRING (SIZE(1)),
                      --  .... ...1   authFlag
                      --  .... ..1.   privFlag
                      --  .... .1..   reportableFlag
                      --              Please observe:
                      --  .... ..00   is OK, means noAuthNoPriv
                      --  .... ..01   is OK, means authNoPriv
                      --  .... ..10   reserved, MUST NOT be used.
                      --  .... ..11   is OK, means authPriv
        

msgSecurityModel INTEGER (1..2147483647) }

msgSecurityModel整数(1..2147483647)}

       ScopedPduData ::= CHOICE {
           plaintext    ScopedPDU,
           encryptedPDU OCTET STRING  -- encrypted scopedPDU value
       }
        
       ScopedPduData ::= CHOICE {
           plaintext    ScopedPDU,
           encryptedPDU OCTET STRING  -- encrypted scopedPDU value
       }
        
       ScopedPDU ::= SEQUENCE {
           contextEngineID  OCTET STRING,
           contextName      OCTET STRING,
           data             ANY -- e.g., PDUs as defined in [RFC3416]
       }
   END
        
       ScopedPDU ::= SEQUENCE {
           contextEngineID  OCTET STRING,
           contextName      OCTET STRING,
           data             ANY -- e.g., PDUs as defined in [RFC3416]
       }
   END
        
6.1. msgVersion
6.1. MSG版本

The msgVersion field is set to snmpv3(3) and identifies the message as an SNMP version 3 Message.

msgVersion字段设置为snmpv3(3),并将消息标识为SNMP版本3消息。

6.2. msgID
6.2. msgID

The msgID is used between two SNMP entities to coordinate request messages and responses, and by the v3MP to coordinate the processing of the message by different subsystem models within the architecture.

msgID用于两个SNMP实体之间协调请求消息和响应,v3MP用于协调体系结构内不同子系统模型对消息的处理。

Values for msgID SHOULD be generated in a manner that avoids re-use of any outstanding values. Doing so provides protection against some replay attacks. One possible implementation strategy would be to use the low-order bits of snmpEngineBoots [RFC3411] as the high-order

msgID的值应以避免重复使用任何未完成值的方式生成。这样做可以防止某些重播攻击。一种可能的实现策略是使用snmpEngineBoots[RFC3411]的低阶位作为高阶位

portion of the msgID value and a monotonically increasing integer for the low-order portion of msgID.

msgID值的一部分和msgID低阶部分的单调递增整数。

Note that the request-id in a PDU may be used by SNMP applications to identify the PDU; the msgID is used by the engine to identify the message which carries a PDU. The engine needs to identify the message even if decryption of the PDU (and request-id) fails. No assumption should be made that the value of the msgID and the value of the request-id are equivalent.

注意,SNMP应用程序可以使用PDU中的请求id来识别PDU;发动机使用msgID识别携带PDU的消息。即使PDU(和请求id)解密失败,引擎也需要识别消息。不应假设msgID的值和请求id的值相等。

The value of the msgID field for a response takes the value of the msgID field from the message to which it is a response. By use of the msgID value, an engine can distinguish the (potentially multiple) outstanding requests, and thereby correlate incoming responses with outstanding requests. In cases where an unreliable datagram service is used, the msgID also provides a simple means of identifying messages duplicated by the network. If a request is retransmitted, a new msgID value SHOULD be used for each retransmission.

响应的msgID字段的值从作为响应的消息中获取msgID字段的值。通过使用msgID值,引擎可以区分(可能有多个)未完成的请求,从而将传入响应与未完成的请求关联起来。在使用不可靠数据报服务的情况下,msgID还提供了一种识别网络复制的消息的简单方法。如果请求被重新传输,则每次重新传输都应使用新的msgID值。

6.3. msgMaxSize
6.3. msgMaxSize

The msgMaxSize field of the message conveys the maximum message size supported by the sender of the message, i.e., the maximum message size that the sender can accept when another SNMP engine sends an SNMP message (be it a response or any other message) to the sender of this message on the transport in use for this message.

消息的msgMaxSize字段传递消息发送方支持的最大消息大小,即当另一个SNMP引擎在用于此消息的传输上向此消息的发送方发送SNMP消息(无论是响应还是任何其他消息)时,发送方可以接受的最大消息大小。

When an SNMP message is being generated, the msgMaxSize is provided by the SNMP engine which generates the message. At the receiving SNMP engine, the msgMaxSize is used to determine the maximum message size the sender can accommodate.

生成SNMP消息时,生成消息的SNMP引擎将提供msgMaxSize。在接收SNMP引擎上,msgMaxSize用于确定发送方可以容纳的最大消息大小。

6.4. msgFlags
6.4. msgFlags

The msgFlags field of the message contains several bit fields which control processing of the message.

消息的msgFlags字段包含几个位字段,用于控制消息的处理。

The reportableFlag is a secondary aid in determining whether a Report PDU MUST be sent. It is only used in cases where the PDU portion of a message cannot be decoded, due to, for example, an incorrect encryption key. If the PDU can be decoded, the PDU type forms the basis for decisions on sending Report PDUs.

reportableFlag是确定是否必须发送报告PDU的辅助工具。它仅在由于(例如)不正确的加密密钥而无法解码消息的PDU部分的情况下使用。如果PDU可以解码,则PDU类型构成发送报告PDU的决策基础。

When the reportableFlag is used, if its value is one, a Report PDU MUST be returned to the sender under those conditions which can cause the generation of Report PDUs. Similarly, when the reportableFlag is used and its value is zero, then a Report PDU MUST NOT be sent. The reportableFlag MUST always be zero when the message contains a PDU

使用reportableFlag时,如果其值为1,则必须在可能导致生成报告PDU的条件下将报告PDU返回给发送方。类似地,当使用reportableFlag且其值为零时,则不得发送报告PDU。当消息包含PDU时,reportableFlag必须始终为零

from the Unconfirmed Class, such as a Report PDU, a response-type PDU (such as a Response PDU), or an unacknowledged notification-type PDU (such as an SNMPv2-trap PDU). The reportableFlag MUST always be one for a PDU from the Confirmed Class, including request-type PDUs (such as a Get PDU) and acknowledged notification-type PDUs (such as an Inform PDU).

来自未确认类,例如报告PDU、响应类型PDU(例如响应PDU)或未确认的通知类型PDU(例如SNMPv2陷阱PDU)。对于来自确认类的PDU,reportableFlag必须始终为一个,包括请求类型PDU(例如Get PDU)和确认通知类型PDU(例如Inform PDU)。

If the reportableFlag is set to one for a message containing a PDU from the Unconfirmed Class, such as a Report PDU, a response-type PDU (such as a Response PDU), or an unacknowledged notification-type PDU (such as an SNMPv2-trap PDU), then the receiver of that message MUST process it as though the reportableFlag had been set to zero.

如果对于包含来自未确认类的PDU(如报告PDU、响应类型PDU(如响应PDU)或未确认通知类型PDU(如SNMPv2陷阱PDU))的消息,reportableFlag设置为1,则该消息的接收方必须将其处理为reportableFlag设置为零。

If the reportableFlag is set to zero for a message containing a request-type PDU (such as a Get PDU) or an acknowledged notification-type PDU (such as an Inform PDU), then the receiver of that message MUST process it as though the reportableFlag had been set to one.

如果对于包含请求类型PDU(如Get PDU)或确认的通知类型PDU(如Inform PDU)的消息,reportableFlag设置为零,则该消息的接收者必须将其处理为reportableFlag设置为一。

Report PDUs are generated directly by the SNMPv3 Message Processing Model, and support engine-to-engine communications, but may be passed to applications for processing.

报告PDU直接由SNMPv3消息处理模型生成,支持引擎到引擎的通信,但也可以传递给应用程序进行处理。

An SNMP engine that receives a reportPDU may use it to determine what kind of problem was detected by the remote SNMP engine. It can do so based on the error counter included as the first (and only) varBind of the reportPDU. Based on the detected error, the SNMP engine may try to send a corrected SNMP message. If that is not possible, it may pass an indication of the error to the application on whose behalf the failed SNMP request was issued.

接收reportPDU的SNMP引擎可以使用它来确定远程SNMP引擎检测到的问题类型。它可以基于作为reportPDU的第一个(也是唯一一个)varBind包含的错误计数器来执行此操作。基于检测到的错误,SNMP引擎可能会尝试发送更正的SNMP消息。如果不可能,它可能会将错误指示传递给代表其发出失败SNMP请求的应用程序。

The authFlag and privFlag portions of the msgFlags field are set by the sender to indicate the securityLevel that was applied to the message before it was sent on the wire. The receiver of the message MUST apply the same securityLevel when the message is received and the contents are being processed.

msgFlags字段的authFlag和privFlag部分由发送方设置,以指示在消息通过线路发送之前应用于消息的securityLevel。在接收消息和处理内容时,消息的接收者必须应用相同的securityLevel。

There are three securityLevels, namely noAuthNoPriv, which is less than authNoPriv, which is in turn less than authPriv. See the SNMP architecture document [RFC3411] for details about the securityLevel.

有三个安全级别,即noAuthNoPriv,它小于authNoPriv,而authNoPriv又小于authPriv。有关securityLevel的详细信息,请参阅SNMP体系结构文档[RFC3411]。

a) authFlag

a) authFlag

If the authFlag is set to one, then the securityModel used by the SNMP engine which sent the message MUST identify the securityName on whose behalf the SNMP message was generated and MUST provide, in a securityModel-specific manner, sufficient data for the receiver of the message to be able to authenticate that

如果authFlag设置为1,则发送消息的SNMP引擎所使用的securityModel必须标识生成SNMP消息的代表securityName,并且必须以特定于securityModel的方式提供足够的数据,以便消息接收方能够对其进行身份验证

identification. In general, this authentication will allow the receiver to determine with reasonable certainty that the message was:

识别一般而言,此认证将允许接收方合理确定消息是:

- sent on behalf of the principal associated with the securityName,

- 代表与securityName关联的委托人发送,

- was not redirected,

- 没有被重定向,

- was not modified in transit, and

- 在运输过程中未进行修改,以及

- was not replayed.

- 没有重播。

If the authFlag is zero, then the securityModel used by the SNMP engine which sent the message MUST identify the securityName on whose behalf the SNMP message was generated but it does not need to provide sufficient data for the receiver of the message to authenticate the identification, as there is no need to authenticate the message in this case.

如果authFlag为零,则发送消息的SNMP引擎所使用的securityModel必须标识代表其生成SNMP消息的securityName,但它不需要为消息接收方提供足够的数据来验证标识,因为在这种情况下不需要对消息进行身份验证。

b) privFlag

b) 私旗

If the privFlag is set, then the securityModel used by the SNMP engine which sent the message MUST also protect the scopedPDU in an SNMP message from disclosure, i.e., it MUST encrypt/decrypt the scopedPDU. If the privFlag is zero, then the securityModel in use does not need to protect the data from disclosure.

如果设置了privFlag,则发送消息的SNMP引擎使用的securityModel还必须保护SNMP消息中的scopedPDU不被泄露,即它必须加密/解密scopedPDU。如果privFlag为零,则使用中的securityModel不需要保护数据不被泄露。

It is an explicit requirement of the SNMP architecture that if privacy is selected, then authentication is also required. That means that if the privFlag is set, then the authFlag MUST also be set to one.

SNMP体系结构的明确要求是,如果选择了隐私,则还需要身份验证。这意味着如果设置了privFlag,那么authFlag也必须设置为1。

The combination of the authFlag and the privFlag comprises a Level of Security as follows:

authFlag和privFlag的组合包括以下安全级别:

         authFlag zero, privFlag zero -> securityLevel is noAuthNoPriv
         authFlag zero, privFlag one  -> invalid combination, see below
         authFlag one,  privFlag zero -> securityLevel is authNoPriv
         authFlag one,  privFlag one  -> securityLevel is authPriv
        
         authFlag zero, privFlag zero -> securityLevel is noAuthNoPriv
         authFlag zero, privFlag one  -> invalid combination, see below
         authFlag one,  privFlag zero -> securityLevel is authNoPriv
         authFlag one,  privFlag one  -> securityLevel is authPriv
        

The elements of procedure (see below) describe the action to be taken when the invalid combination of authFlag equal to zero and privFlag equal to one is encountered.

过程元素(见下文)描述了遇到authFlag等于零和privFlag等于一的无效组合时要采取的操作。

The remaining bits in msgFlags are reserved, and MUST be set to zero when sending a message and SHOULD be ignored when receiving a message.

msgFlags中的剩余位是保留的,在发送消息时必须设置为零,在接收消息时应忽略。

6.5. msgSecurityModel
6.5. msgSecurityModel

The v3MP supports the concurrent existence of multiple Security Models to provide security services for SNMPv3 messages. The msgSecurityModel field in an SNMPv3 Message identifies which Security Model was used by the sender to generate the message and therefore which securityModel MUST be used by the receiver to perform security processing for the message. The mapping to the appropriate securityModel implementation within an SNMP engine is accomplished in an implementation-dependent manner.

v3MP支持同时存在多个安全模型,为SNMPv3消息提供安全服务。SNMPv3消息中的msgSecurityModel字段标识发送方用于生成消息的安全模型,因此接收方必须使用哪个安全模型来执行消息的安全处理。到SNMP引擎中适当的securityModel实现的映射是以依赖于实现的方式完成的。

6.6. msgSecurityParameters
6.6. MSG安全参数

The msgSecurityParameters field of the SNMPv3 Message is used for communication between the Security Model modules in the sending and receiving SNMP engines. The data in the msgSecurityParameters field is used exclusively by the Security Model, and the contents and format of the data is defined by the Security Model. This OCTET STRING is not interpreted by the v3MP, but is passed to the local implementation of the Security Model indicated by the msgSecurityModel field in the message.

SNMPv3消息的msgSecurityParameters字段用于发送和接收SNMP引擎中的安全模型模块之间的通信。msgSecurityParameters字段中的数据仅由安全模型使用,数据的内容和格式由安全模型定义。v3MP不会解释此八位字节字符串,而是将其传递给消息中msgSecurityModel字段所指示的安全模型的本地实现。

6.7. scopedPduData
6.7. scopedPduData

The scopedPduData field represents either the plain text scopedPDU if the privFlag in the msgFlags is zero, or it represents an encryptedPDU (encoded as an OCTET STRING) which MUST be decrypted by the securityModel in use to produce a plaintext scopedPDU.

scopedPDU数据字段表示纯文本scopedPDU(如果msgFlags中的privFlag为零),或者表示加密PDU(编码为八位字节字符串),必须由使用中的securityModel解密以生成纯文本scopedPDU。

6.8. scopedPDU
6.8. scopedPDU

The scopedPDU contains information to identify an administratively unique context and a PDU. The object identifiers in the PDU refer to managed objects which are (expected to be) accessible within the specified context.

scopedPDU包含用于标识管理上唯一的上下文和PDU的信息。PDU中的对象标识符是指在指定上下文中(预期)可访问的托管对象。

6.8.1. contextEngineID
6.8.1. contextEngineID

The contextEngineID in the SNMPv3 message uniquely identifies, within an administrative domain, an SNMP entity that may realize an instance of a context with a particular contextName.

SNMPv3消息中的contextEngineID在管理域内唯一地标识SNMP实体,该SNMP实体可以实现具有特定contextName的上下文实例。

For incoming messages, the contextEngineID is used in conjunction with the pduType to determine to which application the scopedPDU will be sent for processing.

对于传入消息,contextEngineID与pduType一起使用,以确定scopedPDU将发送到哪个应用程序进行处理。

For outgoing messages, the v3MP sets the contextEngineID to the value provided by the application in the request for a message to be sent.

对于传出消息,v3MP将contextEngineID设置为应用程序在发送消息的请求中提供的值。

6.8.2. contextName
6.8.2. 上下文名称

The contextName field in an SNMPv3 message, in conjunction with the contextEngineID field, identifies the particular context associated with the management information contained in the PDU portion of the message. The contextName is unique within the SNMP entity specified by the contextEngineID, which may realize the managed objects referenced within the PDU. An application which originates a message provides the value for the contextName field and this value may be used during processing by an application at the receiving SNMP Engine.

SNMPv3消息中的contextName字段与contextEngineID字段一起标识与消息的PDU部分中包含的管理信息相关联的特定上下文。contextName在contextEngineID指定的SNMP实体中是唯一的,它可以实现PDU中引用的托管对象。发起消息的应用程序为contextName字段提供值,该值可由接收SNMP引擎的应用程序在处理过程中使用。

6.8.3. data
6.8.3. 数据

The data field of the SNMPv3 Message contains the PDU. Among other things, the PDU contains the PDU type that is used by the v3MP to determine the type of the incoming SNMP message. The v3MP specifies that the PDU MUST be one of those specified in [RFC3416].

SNMPv3消息的数据字段包含PDU。其中,PDU包含v3MP用于确定传入SNMP消息类型的PDU类型。v3MP规定PDU必须是[RFC3416]中规定的PDU之一。

7. Elements of Procedure for v3MP
7. v3MP的程序要素

This section describes the procedures followed by an SNMP engine when generating and processing SNMP messages according to the SNMPv3 Message Processing Model.

本节介绍SNMP引擎根据SNMPv3消息处理模型生成和处理SNMP消息时遵循的过程。

Please note, that for the sake of clarity and to prevent the text from being even longer and more complicated, some details were omitted from the steps below.

请注意,为清晰起见,并防止文本变得更长、更复杂,以下步骤省略了一些细节。

a) Some steps specify that when some error conditions are encountered when processing a received message, a message containing a Report PDU is generated and the received message is discarded without further processing. However, a Report-PDU MUST NOT be generated unless the PDU causing generation of the Report PDU can be determined to be a member of the Confirmed Class, or the reportableFlag is set to one and the PDU class cannot be determined.

a) 某些步骤指定,当处理接收到的消息时遇到某些错误条件时,将生成包含报告PDU的消息,并且在不进行进一步处理的情况下丢弃接收到的消息。但是,除非可以确定导致生成报告PDU的PDU是已确认类的成员,或者将reportableFlag设置为1且无法确定PDU类,否则不得生成报告PDU。

b) The elements of procedure do not always explicitly indicate when state information needs to be released. The general rule is that if state information is available when a message is to be "discarded without further processing", then the state information should also be released at that same time.

b) 程序元素并不总是明确指出何时需要发布状态信息。一般规则是,如果在“未经进一步处理而丢弃”消息时,状态信息可用,则状态信息也应同时释放。

7.1. Prepare an Outgoing SNMP Message
7.1. 准备传出的SNMP消息

This section describes the procedure followed to prepare an SNMPv3 message from the data elements passed by the Message Dispatcher.

本节描述从消息调度器传递的数据元素准备SNMPv3消息所遵循的过程。

1) The Message Dispatcher may request that an SNMPv3 message containing a Read Class, Write Class, or Notification Class PDU be prepared for sending.

1) 消息调度器可以请求准备发送包含读类、写类或通知类PDU的SNMPv3消息。

a) It makes such a request according to the abstract service primitive:

a) 它根据抽象服务原语发出这样的请求:

         statusInformation =           -- success or errorIndication
           prepareOutgoingMessage(
           IN   transportDomain        -- requested transport domain
           IN   transportAddress       -- requested destination address
           IN   messageProcessingModel -- typically, SNMP version
           IN   securityModel          -- Security Model to use
           IN   securityName           -- on behalf of this principal
           IN   securityLevel          -- Level of Security requested
           IN   contextEngineID        -- data from/at this entity
           IN   contextName            -- data from/in this context
           IN   pduVersion             -- version of the PDU *
           IN   PDU                    -- SNMP Protocol Data Unit
           IN   expectResponse         -- TRUE or FALSE *
           IN   sendPduHandle          -- the handle for matching
                                       -- incoming responses
           OUT  destTransportDomain    -- destination transport domain
           OUT  destTransportAddress   -- destination transport address
           OUT  outgoingMessage        -- the message to send
           OUT  outgoingMessageLength  -- the length of the message
           )
        
         statusInformation =           -- success or errorIndication
           prepareOutgoingMessage(
           IN   transportDomain        -- requested transport domain
           IN   transportAddress       -- requested destination address
           IN   messageProcessingModel -- typically, SNMP version
           IN   securityModel          -- Security Model to use
           IN   securityName           -- on behalf of this principal
           IN   securityLevel          -- Level of Security requested
           IN   contextEngineID        -- data from/at this entity
           IN   contextName            -- data from/in this context
           IN   pduVersion             -- version of the PDU *
           IN   PDU                    -- SNMP Protocol Data Unit
           IN   expectResponse         -- TRUE or FALSE *
           IN   sendPduHandle          -- the handle for matching
                                       -- incoming responses
           OUT  destTransportDomain    -- destination transport domain
           OUT  destTransportAddress   -- destination transport address
           OUT  outgoingMessage        -- the message to send
           OUT  outgoingMessageLength  -- the length of the message
           )
        

* The SNMPv3 Message Processing Model does not use the values of expectResponse or pduVersion.

* SNMPv3消息处理模型不使用expectResponse或pduVersion的值。

b) A unique msgID is generated. The number used for msgID should not have been used recently, and MUST NOT be the same as was used for any outstanding request.

b) 将生成唯一的msgID。用于msgID的编号最近不应使用,并且不得与用于任何未完成请求的编号相同。

2) The Message Dispatcher may request that an SNMPv3 message containing a Response Class or Internal Class PDU be prepared for sending.

2) 消息调度器可以请求准备发送包含响应类或内部类PDU的SNMPv3消息。

a) It makes such a request according to the abstract service primitive:

a) 它根据抽象服务原语发出这样的请求:

         result =                       -- SUCCESS or FAILURE
         prepareResponseMessage(
          IN   messageProcessingModel   -- typically, SNMP version
          IN   securityModel            -- same as on incoming request
          IN   securityName             -- same as on incoming request
          IN   securityLevel            -- same as on incoming request
          IN   contextEngineID          -- data from/at this SNMP entity
          IN   contextName              -- data from/in this context
          IN   pduVersion               -- version of the PDU
          IN   PDU                      -- SNMP Protocol Data Unit
          IN   maxSizeResponseScopedPDU -- maximum size sender can
                                        -- accept
          IN   stateReference           -- reference to state
                                        -- information presented with
                                        -- the request
          IN   statusInformation        -- success or errorIndication
                                        -- error counter OID and value
                                        -- when errorIndication
          OUT  destTransportDomain      -- destination transport domain
          OUT  destTransportAddress     -- destination transport address
          OUT  outgoingMessage          -- the message to send
          OUT  outgoingMessageLength    -- the length of the message
          )
        
         result =                       -- SUCCESS or FAILURE
         prepareResponseMessage(
          IN   messageProcessingModel   -- typically, SNMP version
          IN   securityModel            -- same as on incoming request
          IN   securityName             -- same as on incoming request
          IN   securityLevel            -- same as on incoming request
          IN   contextEngineID          -- data from/at this SNMP entity
          IN   contextName              -- data from/in this context
          IN   pduVersion               -- version of the PDU
          IN   PDU                      -- SNMP Protocol Data Unit
          IN   maxSizeResponseScopedPDU -- maximum size sender can
                                        -- accept
          IN   stateReference           -- reference to state
                                        -- information presented with
                                        -- the request
          IN   statusInformation        -- success or errorIndication
                                        -- error counter OID and value
                                        -- when errorIndication
          OUT  destTransportDomain      -- destination transport domain
          OUT  destTransportAddress     -- destination transport address
          OUT  outgoingMessage          -- the message to send
          OUT  outgoingMessageLength    -- the length of the message
          )
        

b) The cached information for the original request is retrieved via the stateReference, including:

b) 原始请求的缓存信息通过stateReference检索,包括:

- msgID, - contextEngineID, - contextName, - securityModel, - securityName, - securityLevel, - securityStateReference, - reportableFlag, - transportDomain, and - transportAddress.

- msgID、-contextEngineID、-contextName、-securityModel、-securityName、-securityvel、-securitystateference、-reportableFlag、-transportDomain和-transportAddress。

The SNMPv3 Message Processing Model does not allow cached data to be overridden, except by error indications as detailed in (3) below.

SNMPv3消息处理模型不允许重写缓存的数据,除非下面(3)中详细说明了错误指示。

3) If statusInformation contains values for an OID/value combination (potentially also containing a securityLevel value, contextEngineID value, or contextName value), then:

3) 如果statusInformation包含OID/值组合的值(可能还包含securityLevel值、contextEngineID值或contextName值),则:

a) If a PDU is provided, it is the PDU from the original request. If possible, extract the request-id and pduType.

a) 如果提供了PDU,则是原始请求中的PDU。如果可能,提取请求id和pduType。

b) If the pduType is determined to not be a member of the Confirmed Class, or if the reportableFlag is zero and the pduType cannot be determined, then the original message is discarded, and no further processing is done. A result of FAILURE is returned. SNMPv3 Message Processing is complete.

b) 如果确定pduType不是已确认类的成员,或者如果reportableFlag为零且无法确定pduType,则原始消息将被丢弃,并且不会进行进一步的处理。返回失败的结果。SNMPv3消息处理完成。

c) A Report PDU is prepared:

c) 编制PDU报告:

1) the varBindList is set to contain the OID and value from the statusInformation.

1) varBindList设置为包含状态信息中的OID和值。

2) error-status is set to 0.

2) 错误状态设置为0。

3) error-index is set to 0.

3) 错误索引设置为0。

4) request-id is set to the value extracted in step b). Otherwise, request-id is set to 0.

4) 请求id设置为步骤b)中提取的值。否则,请求id设置为0。

d) The errorIndication in statusInformation may be accompanied by a securityLevel value, a contextEngineID value, or a contextName value.

d) 状态信息中的错误指示可能伴随securityLevel值、contextEngineID值或contextName值。

1) If statusInformation contains a value for securityLevel, then securityLevel is set to that value, otherwise it is set to noAuthNoPriv.

1) 如果statusInformation包含securityLevel的值,则securityLevel将设置为该值,否则将设置为noAuthNoPriv。

2) If statusInformation contains a value for contextEngineID, then contextEngineID is set to that value, otherwise it is set to the value of this entity's snmpEngineID.

2) 如果statusInformation包含contextEngineID的值,则contextEngineID将设置为该值,否则将设置为该实体的snmpEngineID的值。

3) If statusInformation contains a value for contextName, then contextName is set to that value, otherwise it is set to the default context of "" (zero-length string).

3) 如果statusInformation包含contextName的值,则contextName将设置为该值,否则将设置为默认上下文“”(零长度字符串)。

e) PDU is set to refer to the new Report-PDU. The old PDU is discarded.

e) PDU设置为引用新报告PDU。旧的PDU被丢弃。

f) Processing continues with step 6) below.

f) 处理继续执行下面的步骤6)。

4) If the contextEngineID is not yet determined, then the contextEngineID is determined, in an implementation-dependent manner, possibly using the transportDomain and transportAddress.

4) 如果尚未确定contextEngineID,则可能使用transportDomain和transportAddress以依赖于实现的方式确定contextEngineID。

5) If the contextName is not yet determined, the contextName is set to the default context.

5) 如果尚未确定contextName,则将contextName设置为默认上下文。

6) A scopedPDU is prepared from the contextEngineID, contextName, and PDU.

6) scopedPDU由contextEngineID、contextName和PDU准备。

7) msgGlobalData is constructed as follows:

7) msgGlobalData的构造如下:

a) The msgVersion field is set to snmpv3(3).

a) msgVersion字段设置为snmpv3(3)。

b) msgID is set as determined in step 1 or 2 above.

b) msgID设置为上述步骤1或2中确定的值。

c) msgMaxSize is set to an implementation-dependent value.

c) msgMaxSize设置为依赖于实现的值。

d) msgFlags are set as follows:

d) msgFlags设置如下:

- If securityLevel specifies noAuthNoPriv, then authFlag and privFlag are both set to zero.

- 如果securityLevel指定noAuthNoPriv,则authFlag和privFlag都设置为零。

- If securityLevel specifies authNoPriv, then authFlag is set to one and privFlag is set to zero.

- 如果securityLevel指定authNoPriv,则authFlag设置为1,privFlag设置为0。

- If securityLevel specifies authPriv, then authFlag is set to one and privFlag is set to one.

- 如果securityLevel指定authPriv,则authFlag设置为1,privFlag设置为1。

- If the PDU is from the Unconfirmed Class, then the reportableFlag is set to zero.

- 如果PDU来自未确认类,则reportableFlag设置为零。

- If the PDU is from the Confirmed Class then the reportableFlag is set to one.

- 如果PDU来自确认类,则reportableFlag设置为1。

- All other msgFlags bits are set to zero.

- 所有其他msgFlags位都设置为零。

e) msgSecurityModel is set to the value of securityModel.

e) msgSecurityModel设置为securityModel的值。

8) If the PDU is from the Response Class or the Internal Class, then:

8) 如果PDU来自响应类或内部类,则:

a) The specified Security Model is called to generate the message according to the primitive:

a) 调用指定的安全模型以根据原语生成消息:

         statusInformation =
           generateResponseMsg(
           IN   messageProcessingModel -- SNMPv3 Message Processing
                                       -- Model
           IN   globalData             -- msgGlobalData from step 7
           IN   maxMessageSize         -- from msgMaxSize (step 7c)
           IN   securityModel          -- as determined in step 7e
           IN   securityEngineID       -- the value of snmpEngineID
           IN   securityName           -- on behalf of this principal
           IN   securityLevel          -- for the outgoing message
           IN   scopedPDU              -- as prepared in step 6)
           IN   securityStateReference -- as determined in step 2
           OUT  securityParameters     -- filled in by Security Module
           OUT  wholeMsg               -- complete generated message
           OUT  wholeMsgLength         -- length of generated message
           )
        
         statusInformation =
           generateResponseMsg(
           IN   messageProcessingModel -- SNMPv3 Message Processing
                                       -- Model
           IN   globalData             -- msgGlobalData from step 7
           IN   maxMessageSize         -- from msgMaxSize (step 7c)
           IN   securityModel          -- as determined in step 7e
           IN   securityEngineID       -- the value of snmpEngineID
           IN   securityName           -- on behalf of this principal
           IN   securityLevel          -- for the outgoing message
           IN   scopedPDU              -- as prepared in step 6)
           IN   securityStateReference -- as determined in step 2
           OUT  securityParameters     -- filled in by Security Module
           OUT  wholeMsg               -- complete generated message
           OUT  wholeMsgLength         -- length of generated message
           )
        

If, upon return from the Security Model, the statusInformation includes an errorIndication, then any cached information about the outstanding request message is discarded, and an errorIndication is returned, so it can be returned to the calling application. SNMPv3 Message Processing is complete.

如果在从安全模型返回时,statusInformation包含errorIndication,则丢弃有关未完成请求消息的任何缓存信息,并返回errorIndication,以便将其返回给调用应用程序。SNMPv3消息处理完成。

b) A SUCCESS result is returned. SNMPv3 Message Processing is complete.

b) 返回一个成功结果。SNMPv3消息处理完成。

9) If the PDU is from the Confirmed Class or the Notification Class, then:

9) 如果PDU来自确认类或通知类,则:

a) If the PDU is from the Unconfirmed Class, then securityEngineID is set to the value of this entity's snmpEngineID.

a) 如果PDU来自未确认类,则securityEngineID设置为此实体的snmpEngineID的值。

Otherwise, the snmpEngineID of the target entity is determined, in an implementation-dependent manner, possibly using transportDomain and transportAddress. The value of the securityEngineID is set to the value of the target entity's snmpEngineID.

否则,可能使用transportDomain和transportAddress以依赖于实现的方式确定目标实体的snmpEngineID。securityEngineID的值设置为目标实体的snmpEngineID的值。

b) The specified Security Model is called to generate the message according to the primitive:

b) 调用指定的安全模型以根据原语生成消息:

statusInformation = generateRequestMsg( IN messageProcessingModel -- SNMPv3 Message Processing Model IN globalData -- msgGlobalData, from step 7 IN maxMessageSize -- from msgMaxSize in step 7 c) IN securityModel -- as provided by caller IN securityEngineID -- authoritative SNMP entity -- from step 9 a) IN securityName -- as provided by caller IN securityLevel -- as provided by caller IN scopedPDU -- as prepared in step 6 OUT securityParameters -- filled in by Security Module OUT wholeMsg -- complete generated message OUT wholeMsgLength -- length of the generated message )

statusInformation=GenerateRequestsMsg(在messageProcessingModel中——globalData中的SNMPv3消息处理模型中——msgGlobalData,来自maxMessageSize中的步骤7——来自步骤7c中的msgMaxSize)在securityModel中——由securityEngineID中的调用者提供——由securityName中的步骤9a)中的权威SNMP实体——由securityLevel中的调用者提供——由scopedPDU中的调用者提供——由步骤6 OUT securityParameters中准备——由Security Module OUT wholeMsg填写——完成生成的消息OUT wholeMsgLength--生成的消息的长度)

If, upon return from the Security Model, the statusInformation includes an errorIndication, then the message is discarded, and the errorIndication is returned, so it can be returned to the calling application, and no further processing is done. SNMPv3 Message Processing is complete.

如果从安全模型返回时,statusInformation包含errorIndication,则丢弃消息,并返回errorIndication,这样就可以将其返回给调用应用程序,而不进行进一步的处理。SNMPv3消息处理完成。

c) If the PDU is from the Confirmed Class, information about the outgoing message is cached, and an implementation-specific stateReference is created. Information to be cached includes the values of:

c) 如果PDU来自确认类,则缓存有关传出消息的信息,并创建特定于实现的stateReference。要缓存的信息包括以下值:

- sendPduHandle - msgID - snmpEngineID - securityModel - securityName - securityLevel - contextEngineID - contextName

- sendPduHandle-msgID-snmpEngineID-securityModel-securityName-securityvel-contextEngineID-contextName

d) A SUCCESS result is returned. SNMPv3 Message Processing is complete.

d) 返回一个成功结果。SNMPv3消息处理完成。

7.2. Prepare Data Elements from an Incoming SNMP Message
7.2. 从传入的SNMP消息准备数据元素

This section describes the procedure followed to extract data from an SNMPv3 message, and to prepare the data elements required for further processing of the message by the Message Dispatcher.

本节描述从SNMPv3消息中提取数据以及准备消息调度器进一步处理消息所需的数据元素所遵循的过程。

1) The message is passed in from the Message Dispatcher according to the abstract service primitive:

1) 消息是根据抽象服务原语从消息调度器传入的:

       result =                       -- SUCCESS or errorIndication
         prepareDataElements(
         IN  transportDomain          -- origin transport domain
         IN  transportAddress         -- origin transport address
         IN  wholeMsg                 -- as received from the network
         IN  wholeMsgLength           -- as received from the network
         OUT messageProcessingModel   -- typically, SNMP version
         OUT securityModel            -- Security Model to use
         OUT securityName             -- on behalf of this principal
         OUT securityLevel            -- Level of Security requested
         OUT contextEngineID          -- data from/at this entity
         OUT contextName              -- data from/in this context
         OUT pduVersion               -- version of the PDU
         OUT PDU                      -- SNMP Protocol Data Unit
         OUT pduType                  -- SNMP PDU type
         OUT sendPduHandle            -- handle for matched request
         OUT maxSizeResponseScopedPDU -- maximum size sender can accept
         OUT statusInformation        -- success or errorIndication
                                      -- error counter OID and value
                                      -- when errorIndication
         OUT stateReference           -- reference to state information
                                      -- to be used for a possible
         )                            -- Response
        
       result =                       -- SUCCESS or errorIndication
         prepareDataElements(
         IN  transportDomain          -- origin transport domain
         IN  transportAddress         -- origin transport address
         IN  wholeMsg                 -- as received from the network
         IN  wholeMsgLength           -- as received from the network
         OUT messageProcessingModel   -- typically, SNMP version
         OUT securityModel            -- Security Model to use
         OUT securityName             -- on behalf of this principal
         OUT securityLevel            -- Level of Security requested
         OUT contextEngineID          -- data from/at this entity
         OUT contextName              -- data from/in this context
         OUT pduVersion               -- version of the PDU
         OUT PDU                      -- SNMP Protocol Data Unit
         OUT pduType                  -- SNMP PDU type
         OUT sendPduHandle            -- handle for matched request
         OUT maxSizeResponseScopedPDU -- maximum size sender can accept
         OUT statusInformation        -- success or errorIndication
                                      -- error counter OID and value
                                      -- when errorIndication
         OUT stateReference           -- reference to state information
                                      -- to be used for a possible
         )                            -- Response
        

2) If the received message is not the serialization (according to the conventions of [RFC3417]) of an SNMPv3Message value, then the snmpInASNParseErrs counter [RFC3418] is incremented, the message is discarded without further processing, and a FAILURE result is returned. SNMPv3 Message Processing is complete.

2) 如果接收到的消息不是SNMPv3Message值的序列化(根据[RFC3417]的约定),则SNMPinasnParsers计数器[RFC3418]将递增,消息将被丢弃,无需进一步处理,并返回失败结果。SNMPv3消息处理完成。

3) The values for msgVersion, msgID, msgMaxSize, msgFlags, msgSecurityModel, msgSecurityParameters, and msgData are extracted from the message.

3) msgVersion、msgID、msgMaxSize、msgFlags、msgSecurityModel、msgSecurityParameters和msgData的值从消息中提取。

4) If the value of the msgSecurityModel component does not match a supported securityModel, then the snmpUnknownSecurityModels counter is incremented, the message is discarded without further processing, and a FAILURE result is returned. SNMPv3 Message Processing is complete.

4) 如果msgSecurityModel组件的值与支持的securityModel不匹配,则snmpUnknownSecurityModels计数器将递增,消息将在不进行进一步处理的情况下丢弃,并返回失败结果。SNMPv3消息处理完成。

5) The securityLevel is determined from the authFlag and the privFlag bits of the msgFlags component as follows:

5) securityLevel由msgFlags组件的authFlag和privFlag位确定,如下所示:

a) If the authFlag is not set and the privFlag is not set, then securityLevel is set to noAuthNoPriv.

a) 如果未设置authFlag且未设置privFlag,则securityLevel将设置为noAuthNoPriv。

b) If the authFlag is set and the privFlag is not set, then securityLevel is set to authNoPriv.

b) 如果设置了authFlag而未设置privFlag,则securityLevel将设置为authNoPriv。

c) If the authFlag is set and the privFlag is set, then securityLevel is set to authPriv.

c) 如果设置了authFlag,并且设置了privFlag,则securityLevel设置为authPriv。

d) If the authFlag is not set and privFlag is set, then the snmpInvalidMsgs counter is incremented, the message is discarded without further processing, and a FAILURE result is returned. SNMPv3 Message Processing is complete.

d) 如果未设置authFlag且已设置privFlag,则SNMPInValidMgs计数器将递增,消息将被丢弃,而无需进一步处理,并返回失败结果。SNMPv3消息处理完成。

e) Any other bits in the msgFlags are ignored.

e) msgFlags中的任何其他位都将被忽略。

6) The security module implementing the Security Model as specified by the securityModel component is called for authentication and privacy services. This is done according to the abstract service primitive:

6) 实现securityModel组件指定的安全模型的安全模块用于身份验证和隐私服务。这是根据抽象服务原语完成的:

       statusInformation =            -- errorIndication or success
                                      -- error counter OID and
                                      -- value if error
         processIncomingMsg(
         IN  messageProcessingModel   -- SNMPv3 Message Processing Model
         IN  maxMessageSize           -- of the sending SNMP entity
         IN  securityParameters       -- for the received message
         IN  securityModel            -- for the received message
         IN  securityLevel            -- Level of Security
         IN  wholeMsg                 -- as received on the wire
         IN  wholeMsgLength           -- length as received on the wire
         OUT securityEngineID         -- authoritative SNMP entity
         OUT securityName             -- identification of the principal
         OUT scopedPDU,               -- message (plaintext) payload
         OUT maxSizeResponseScopedPDU -- maximum size sender can accept
         OUT securityStateReference   -- reference to security state
         )                            -- information, needed for
                                      -- response
        
       statusInformation =            -- errorIndication or success
                                      -- error counter OID and
                                      -- value if error
         processIncomingMsg(
         IN  messageProcessingModel   -- SNMPv3 Message Processing Model
         IN  maxMessageSize           -- of the sending SNMP entity
         IN  securityParameters       -- for the received message
         IN  securityModel            -- for the received message
         IN  securityLevel            -- Level of Security
         IN  wholeMsg                 -- as received on the wire
         IN  wholeMsgLength           -- length as received on the wire
         OUT securityEngineID         -- authoritative SNMP entity
         OUT securityName             -- identification of the principal
         OUT scopedPDU,               -- message (plaintext) payload
         OUT maxSizeResponseScopedPDU -- maximum size sender can accept
         OUT securityStateReference   -- reference to security state
         )                            -- information, needed for
                                      -- response
        

If an errorIndication is returned by the security module, then:

如果安全模块返回错误指示,则:

a) If statusInformation contains values for an OID/value pair, then generation of a Report PDU is attempted (see step 3 in section 7.1).

a) 如果statusInformation包含OID/值对的值,则尝试生成报告PDU(请参阅第7.1节中的步骤3)。

1) If the scopedPDU has been returned from processIncomingMsg, then determine contextEngineID, contextName, and PDU.

1) 如果已从processIncomingMsg返回scopedPDU,则确定contextEngineID、contextName和PDU。

2) Information about the message is cached and a stateReference is created (implementation-specific). Information to be cached includes the values of:

2) 将缓存有关消息的信息并创建状态引用(特定于实现)。要缓存的信息包括以下值:

msgVersion, msgID, securityLevel, msgFlags, msgMaxSize, securityModel, maxSizeResponseScopedPDU, securityStateReference

msgVersion、msgID、securityLevel、msgFlags、msgMaxSize、securityModel、maxSizeResponseScopedPDU、securityStateReference

3) Request that a Report-PDU be prepared and sent, according to the abstract service primitive:

3) 根据抽象服务原语,请求准备并发送报告PDU:

result = -- SUCCESS or FAILURE returnResponsePdu( IN messageProcessingModel -- SNMPv3(3) IN securityModel -- same as on incoming request IN securityName -- from processIncomingMsg IN securityLevel -- same as on incoming request IN contextEngineID -- from step 6 a) 1) IN contextName -- from step 6 a) 1) IN pduVersion -- SNMPv2-PDU IN PDU -- from step 6 a) 1) IN maxSizeResponseScopedPDU -- from processIncomingMsg IN stateReference -- from step 6 a) 2) IN statusInformation -- from processIncomingMsg )

结果=--成功或失败returnResponsePdu(在messageProcessingModel中--在securityModel中的SNMPv3(3)中--与securityName中的传入请求相同--来自securityLevel中的processIncomingMsg--与contextEngineID中的传入请求相同--来自步骤6 a)1)在contextName中--在PDU版本中的步骤6 a)1)中--在PDU中的SNMPv2 PDU--在maxSizeResponseScopedPDU中的步骤6 a)1)中--在stateReference中的processIncomingMsg中--在statusInformation中的步骤6 a)2)中--在processIncomingMsg中)

b) The incoming message is discarded without further processing, and a FAILURE result is returned. SNMPv3 Message Processing is complete.

b) 传入消息将被丢弃,无需进一步处理,并返回失败结果。SNMPv3消息处理完成。

7) The scopedPDU is parsed to extract the contextEngineID, the contextName and the PDU. If any parse error occurs, then the snmpInASNParseErrs counter [RFC3418] is incremented, the security state information is discarded, the message is discarded without further processing, and a FAILURE result is returned. SNMPv3 Message Processing is complete. Treating an unknown PDU type is treated as a parse error is an implementation option.

7) 分析scopedPDU以提取contextEngineID、contextName和PDU。如果发生任何解析错误,则snmpinasnparserrs计数器[RFC3418]将递增,安全状态信息将被丢弃,消息将被丢弃而不进行进一步处理,并返回失败结果。SNMPv3消息处理完成。将未知PDU类型视为解析错误是一种实现选项。

8) The pduVersion is determined in an implementation-dependent manner. For SNMPv3, the pduVersion would be an SNMPv2-PDU.

8) pduVersion以依赖于实现的方式确定。对于SNMPv3,PDU版本将是SNMPv2 PDU。

9) The pduType is determined, in an implementation-dependent manner. For [RFC3416], the pduTypes include:

9) pduType是以依赖于实现的方式确定的。对于[RFC3416],PDU类型包括:

- GetRequest-PDU, - GetNextRequest-PDU, - GetBulkRequest-PDU, - SetRequest-PDU, - InformRequest-PDU, - SNMPv2-Trap-PDU, - Response-PDU, - Report-PDU.

- GetRequest PDU、-GetNextRequest PDU、-GetBulkRequest PDU、-SetRequest PDU、-InformRequest PDU、-SNMPv2陷阱PDU、-Response PDU、-Report PDU。

10) If the pduType is from the Response Class or the Internal Class, then:

10) 如果pduType来自响应类或内部类,则:

a) The value of the msgID component is used to find the cached information for a corresponding outstanding Request message. If no such outstanding Request message is found, then the security state information is discarded, the message is discarded without further processing, and a FAILURE result is returned. SNMPv3 Message Processing is complete.

a) msgID组件的值用于查找相应未完成请求消息的缓存信息。如果未找到此类未完成的请求消息,则丢弃安全状态信息,丢弃消息而不进行进一步处理,并返回失败结果。SNMPv3消息处理完成。

b) sendPduHandle is retrieved from the cached information.

b) sendPduHandle从缓存的信息中检索。

Otherwise, sendPduHandle is set to <none>, an implementation defined value.

否则,sendPduHandle设置为<none>,这是一个实现定义的值。

11) If the pduType is from the Internal Class, then:

11) 如果pduType来自内部类,则:

a) statusInformation is created using the contents of the Report-PDU, in an implementation-dependent manner. This statusInformation will be forwarded to the application associated with the sendPduHandle.

a) 状态信息是使用报告PDU的内容以依赖于实现的方式创建的。此状态信息将转发到与sendPduHandle关联的应用程序。

b) The cached data for the outstanding message, referred to by stateReference, is retrieved. If the securityModel or securityLevel values differ from the cached ones, it is important to recognize that Internal Class PDUs delivered at the security level of noAuthNoPriv open a window of opportunity for spoofing or replay attacks. If the receiver of such messages is aware of these risks, the use of such unauthenticated messages is acceptable and may provide a useful function for discovering engine IDs or for detecting misconfiguration at remote nodes.

b) 检索stateReference引用的未完成消息的缓存数据。如果securityModel或securityLevel值与缓存的值不同,则必须认识到以noAuthNoPriv的安全级别交付的内部类PDU为欺骗或重播攻击打开了机会窗口。如果此类消息的接收者意识到这些风险,则使用此类未经验证的消息是可以接受的,并且可以提供用于发现引擎id或用于检测远程节点上的错误配置的有用功能。

When the securityModel or securityLevel values differ from the cached ones, an implementation may retain the cached information about the outstanding Request message, in anticipation of the possibility that the Internal Class PDU received might be illegitimate. Otherwise, any cached information about the outstanding Request message is discarded.

当securityModel或securityLevel值与缓存的值不同时,实现可以保留关于未完成请求消息的缓存信息,以防接收到的内部类PDU可能是非法的。否则,将丢弃有关未完成请求消息的任何缓存信息。

c) The security state information for this incoming message is discarded.

c) 此传入消息的安全状态信息将被丢弃。

d) stateReference is set to <none>.

d) stateReference设置为<none>。

e) A SUCCESS result is returned. SNMPv3 Message Processing is complete.

e) 返回一个成功结果。SNMPv3消息处理完成。

12) If the pduType is from the Response Class, then:

12) 如果pduType来自响应类,则:

a) The cached data for the outstanding request, referred to by stateReference, is retrieved, including:

a) 检索由stateReference引用的未完成请求的缓存数据,包括:

- snmpEngineID - securityModel - securityName - securityLevel - contextEngineID - contextName

- snmpEngineID-securityModel-securityName-securityLevel-contextEngineID-contextName

b) If the values extracted from the incoming message differ from the cached data, then any cached information about the outstanding Request message is discarded, the incoming message is discarded without further processing, and a FAILURE result is returned. SNMPv3 Message Processing is complete.

b) 如果从传入消息提取的值与缓存的数据不同,则丢弃有关未完成请求消息的任何缓存信息,丢弃传入消息而不进行进一步处理,并返回失败结果。SNMPv3消息处理完成。

When the securityModel or securityLevel values differ from the cached ones, an implementation may retain the cached information about the outstanding Request message, in anticipation of the possibility that the Response Class PDU received might be illegitimate.

当securityModel或securityLevel值与缓存的值不同时,实现可以保留关于未完成请求消息的缓存信息,以防收到的响应类PDU可能是非法的。

c) Otherwise, any cached information about the outstanding Request message is discarded, and the stateReference is set to <none>.

c) 否则,将丢弃有关未完成请求消息的任何缓存信息,并将stateReference设置为<none>。

d) A SUCCESS result is returned. SNMPv3 Message Processing is complete.

d) 返回一个成功结果。SNMPv3消息处理完成。

13) If the pduType is from the Confirmed Class, then:

13) 如果pduType来自确认类,则:

a) If the value of securityEngineID is not equal to the value of snmpEngineID, then the security state information is discarded, any cached information about this message is discarded, the incoming message is discarded without further processing, and a FAILURE result is returned. SNMPv3 Message Processing is complete.

a) 如果securityEngineID的值不等于snmpEngineID的值,则会丢弃安全状态信息,丢弃有关此消息的任何缓存信息,丢弃传入消息而不进行进一步处理,并返回失败结果。SNMPv3消息处理完成。

b) Information about the message is cached and a stateReference is created (implementation-specific). Information to be cached includes the values of:

b) 将缓存有关消息的信息并创建状态引用(特定于实现)。要缓存的信息包括以下值:

msgVersion, msgID, securityLevel, msgFlags, msgMaxSize, securityModel, maxSizeResponseScopedPDU, securityStateReference

msgVersion、msgID、securityLevel、msgFlags、msgMaxSize、securityModel、maxSizeResponseScopedPDU、securityStateReference

c) A SUCCESS result is returned. SNMPv3 Message Processing is complete.

c) 返回一个成功结果。SNMPv3消息处理完成。

14) If the pduType is from the Unconfirmed Class, then a SUCCESS result is returned. SNMPv3 Message Processing is complete.

14) 如果pduType来自未确认的类,则返回成功结果。SNMPv3消息处理完成。

8. Intellectual Property
8. 知识产权

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.

IETF对可能声称与本文件所述技术的实施或使用有关的任何知识产权或其他权利的有效性或范围,或此类权利下的任何许可可能或可能不可用的程度,不采取任何立场;它也不表示它已作出任何努力来确定任何此类权利。有关IETF在标准跟踪和标准相关文件中权利的程序信息,请参见BCP-11。可从IETF秘书处获得可供发布的权利声明副本和任何许可证保证,或本规范实施者或用户试图获得使用此类专有权利的一般许可证或许可的结果。

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.

IETF邀请任何相关方提请其注意任何版权、专利或专利申请,或其他可能涉及实施本标准所需技术的专有权利。请将信息发送给IETF执行董事。

9. Acknowledgements
9. 致谢

This document is the result of the efforts of the SNMPv3 Working Group. Some special thanks are in order to the following SNMPv3 WG members:

本文件是SNMPv3工作组努力的结果。特别感谢以下SNMPv3工作组成员:

Harald Tveit Alvestrand (Maxware) Dave Battle (SNMP Research, Inc.) Alan Beard (Disney Worldwide Services) Paul Berrevoets (SWI Systemware/Halcyon Inc.) Martin Bjorklund (Ericsson) Uri Blumenthal (IBM T. J. Watson Research Center) Jeff Case (SNMP Research, Inc.) John Curran (BBN) Mike Daniele (Compaq Computer Corporation) T. Max Devlin (Eltrax Systems) John Flick (Hewlett Packard) Rob Frye (MCI) Wes Hardaker (U.C.Davis, Information Technology - D.C.A.S.) David Harrington (Cabletron Systems Inc.) Lauren Heintz (BMC Software, Inc.) N.C. Hien (IBM T. J. Watson Research Center) Michael Kirkham (InterWorking Labs, Inc.) Dave Levi (SNMP Research, Inc.) Louis A Mamakos (UUNET Technologies Inc.) Joe Marzot (Nortel Networks) Paul Meyer (Secure Computing Corporation) Keith McCloghrie (Cisco Systems) Bob Moore (IBM) Russ Mundy (TIS Labs at Network Associates) Bob Natale (ACE*COMM Corporation) Mike O'Dell (UUNET Technologies Inc.) Dave Perkins (DeskTalk) Peter Polkinghorne (Brunel University) Randy Presuhn (BMC Software, Inc.) David Reeder (TIS Labs at Network Associates) David Reid (SNMP Research, Inc.) Aleksey Romanov (Quality Quorum) Shawn Routhier (Epilogue) Juergen Schoenwaelder (TU Braunschweig) Bob Stewart (Cisco Systems) Mike Thatcher (Independent Consultant) Bert Wijnen (IBM T. J. Watson Research Center)

Harald Tveit Alvestrand(Maxware)Dave Battle(SNMP Research,Inc.)Alan Beard(迪士尼全球服务)Paul Berrevoets(SWI Systemware/Halcyon Inc.)Martin Bjorklund(爱立信)Uri Blumenthal(IBM T.J.Watson研究中心)Jeff Case(SNMP Research,Inc.)John Curran(BBN)Mike Daniele(康柏电脑公司)T.Max Devlin(Eltrax Systems)John Flick(惠普)Rob Frye(MCI)Wes Hardaker(加州大学戴维斯分校,信息技术-华盛顿特区)David Harrington(Cabletron Systems Inc.)Lauren Heintz(BMC Software,Inc.)N.C.Hien(IBM T.J.Watson研究中心)Michael Kirkham(InterWorking Labs,Inc.)Dave Levi(SNMP Research,Inc.)Louis A MamakosJoe Marzot(北电网络)Paul Meyer(安全计算公司)Keith McCloghrie(思科系统)Bob Moore(IBM)Russ Mundy(网络协会实验室)Bob Natale(ACE*通信公司)Mike O'Dell(北电网络技术公司)Dave Perkins(桌面对话)Peter Polkinghorne(布鲁内尔大学)Randy Presuhn(BMC软件公司)大卫·里德(网络协会的实验室)大卫·里德(SNMP研究公司)阿列克西·罗曼诺夫(质量法定人数)肖恩·劳希尔(尾声)尤尔根·肖恩瓦埃尔德(TU Braunschweig)鲍勃·斯图尔特(思科系统)迈克·撒切尔(独立顾问)伯特·维恩(IBM T.J.沃森研究中心)

The document is based on recommendations of the IETF Security and Administrative Framework Evolution for SNMP Advisory Team. Members of that Advisory Team were:

本文件基于IETF安全和管理框架演进SNMP咨询团队的建议。该咨询小组的成员是:

David Harrington (Cabletron Systems Inc.) Jeff Johnson (Cisco Systems) David Levi (SNMP Research Inc.) John Linn (Openvision) Russ Mundy (Trusted Information Systems) chair Shawn Routhier (Epilogue) Glenn Waters (Nortel) Bert Wijnen (IBM T. J. Watson Research Center)

David Harrington(Cabletron Systems Inc.)Jeff Johnson(Cisco Systems)David Levi(SNMP Research Inc.)John Linn(Openvision)Russ Mundy(Trusted Information Systems)Shawn Routhier(尾声)Glenn Waters(Nortel)Bert Wijnen(IBM T.J.Watson研究中心)

As recommended by the Advisory Team and the SNMPv3 Working Group Charter, the design incorporates as much as practical from previous RFCs and drafts. As a result, special thanks are due to the authors of previous designs known as SNMPv2u and SNMPv2*:

根据咨询小组和SNMPv3工作组章程的建议,该设计尽可能多地结合了先前RFC和草案中的实际内容。因此,我们特别感谢以前设计的SNMPv2u和SNMPv2*的作者:

Jeff Case (SNMP Research, Inc.) David Harrington (Cabletron Systems Inc.) David Levi (SNMP Research, Inc.) Keith McCloghrie (Cisco Systems) Brian O'Keefe (Hewlett Packard) Marshall T. Rose (Dover Beach Consulting) Jon Saperia (BGS Systems Inc.) Steve Waldbusser (International Network Services) Glenn W. Waters (Bell-Northern Research Ltd.)

Jeff Case(SNMP Research,Inc.)David Harrington(Cabletron Systems Inc.)David Levi(SNMP Research,Inc.)Keith McCloghrie(Cisco Systems)Brian O'Keefe(惠普)Marshall T.Rose(多佛海滩咨询)Jon Saperia(BGS Systems Inc.)Steve Waldbusser(国际网络服务)Glenn W.Waters(贝尔北方研究有限公司)

10. Security Considerations
10. 安全考虑

The Dispatcher coordinates the processing of messages to provide a level of security for management messages and to direct the SNMP PDUs to the proper SNMP application(s).

调度器协调消息处理,为管理消息提供一定级别的安全性,并将SNMP PDU定向到适当的SNMP应用程序。

A Message Processing Model, and in particular the v3MP defined in this document, interacts as part of the Message Processing with Security Models in the Security Subsystem via the abstract service interface primitives defined in [RFC3411] and elaborated above.

消息处理模型,特别是本文档中定义的v3MP,作为消息处理的一部分,通过[RFC3411]中定义的抽象服务接口原语与安全子系统中的安全模型进行交互,并在上文中详细阐述。

The level of security actually provided is primarily determined by the specific Security Model implementation(s) and the specific SNMP application implementation(s) incorporated into this framework. Applications have access to data which is not secured. Applications should take reasonable steps to protect the data from disclosure, and when they send data across the network, they should obey the securityLevel and call upon the services of an Access Control Model as they apply access control.

实际提供的安全级别主要取决于此框架中包含的特定安全模型实现和特定SNMP应用程序实现。应用程序可以访问不安全的数据。应用程序应采取合理措施保护数据不被泄露,当它们通过网络发送数据时,应遵守安全级别,并在应用访问控制时调用访问控制模型的服务。

The values for the msgID element used in communication between SNMP entities MUST be chosen to avoid replay attacks. The values do not need to be unpredictable; it is sufficient that they not repeat.

必须选择SNMP实体之间通信中使用的msgID元素的值,以避免重播攻击。这些值不需要是不可预测的;它们不重复就足够了。

When exchanges are carried out over an insecure network, there is an open opportunity for a third party to spoof or replay messages when any message of an exchange is given at the security level of noAuthNoPriv. For most exchanges, all messages exist at the same security level. In the case where the final message is an Internal Class PDU, this message may be delivered at a level of noAuthNoPriv or authNoPriv, independent of the security level of the preceding messages. Internal Class PDUs delivered at the level of authNoPriv are not considered to pose a security hazard. Internal Class PDUs delivered at the security level of noAuthNoPriv open a window of opportunity for spoofing or replay attacks. If the receiver of such messages is aware of these risks, the use of such unauthenticated messages is acceptable and may provide a useful function for discovering engine IDs or for detecting misconfiguration at remote nodes.

当交换在不安全的网络上进行时,当交换的任何消息以noAuthNoPriv的安全级别给出时,第三方就有机会欺骗或重播消息。对于大多数交换,所有消息都存在于相同的安全级别。在最终消息是内部类PDU的情况下,该消息可以在noAuthNoPriv或authNoPriv级别上交付,与前面消息的安全级别无关。以authNoPriv级别交付的内部类PDU不被视为构成安全隐患。以noAuthNoPriv安全级别提供的内部类PDU为欺骗或重放攻击打开了机会之窗。如果此类消息的接收者意识到这些风险,则使用此类未经验证的消息是可以接受的,并且可以提供用于发现引擎id或用于检测远程节点上的错误配置的有用功能。

This document also contains a MIB definition module. None of the objects defined is writable, and the information they represent is not deemed to be particularly sensitive. However, if they are deemed sensitive in a particular environment, access to them should be restricted through the use of appropriately configured Security and Access Control models.

本文档还包含一个MIB定义模块。定义的对象都不可写,它们所代表的信息也不被认为是特别敏感的。但是,如果它们在特定环境中被视为敏感,则应通过使用适当配置的安全和访问控制模型来限制对它们的访问。

11. References
11. 工具书类
11.1. Normative References
11.1. 规范性引用文件

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC2119]Bradner,S.,“RFC中用于表示需求水平的关键词”,BCP 14,RFC 2119,1997年3月。

[RFC2578] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M. and S. Waldbusser, "Structure of Management Information Version 2 (SMIv2)", STD 58, RFC 2578, April 1999.

[RFC2578]McCloghrie,K.,Perkins,D.,Schoenwaeld,J.,Case,J.,Rose,M.和S.Waldbusser,“管理信息的结构版本2(SMIv2)”,STD 58,RFC 2578,1999年4月。

[RFC2580] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M. and S. Waldbusser, "Conformance Statements for SMIv2", STD 58, RFC 2580, April 1999.

[RFC2580]McCloghrie,K.,Perkins,D.,Schoenwaeld,J.,Case,J.,Rose,M.和S.Waldbusser,“SMIv2的一致性声明”,STD 58,RFC 25801999年4月。

[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.

[RFC3411]Harrington,D.,Presohn,R.和B.Wijnen,“描述简单网络管理协议(SNMP)管理框架的体系结构”,STD 62,RFC 3411,2002年12月。

[RFC3413] Levi, D., Meyer, P. and B. Stewart, "Simple Network Management Protocol (SNMP) Applications", STD 62, RFC 3413, December 2002.

[RFC3413]Levi,D.,Meyer,P.和B.Stewart,“简单网络管理协议(SNMP)应用”,STD 62,RFC 3413,2002年12月。

[RFC3414] Blumenthal, U. and B. Wijnen, "The User-Based Security Model (USM) for Version 3 of the Simple Network Management Protocol (SNMPv3)", STD 62, RFC 3414, December 2002.

[RFC3414]Blumenthal,U.和B.Wijnen,“简单网络管理协议(SNMPv3)第3版基于用户的安全模型(USM)”,STD 62,RFC 3414,2002年12月。

[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.

[RFC3415]Wijnen,B.,Presohn,R.和K.McCloghrie,“用于简单网络管理协议(SNMP)的基于视图的访问控制模型(VACM)”,STD 62,RFC 3415,2002年12月。

[RFC3416] Presuhn, R., Case, J., McCloghrie, K., Rose, M. and S. Waldbusser, "Version 2 of the Protocol Operations for the Simple Network Management Protocol (SNMP)", STD 62, RFC 3416, December 2002.

[RFC3416]Presohn,R.,Case,J.,McCloghrie,K.,Rose,M.和S.Waldbusser,“简单网络管理协议(SNMP)的协议操作版本2”,STD 62,RFC 3416,2002年12月。

[RFC3417] Presuhn, R., Case, J., McCloghrie, K., Rose, M. and S. Waldbusser, "Transport Mappings for the Simple Network Management Protocol (SNMP)", STD 62, RFC 3417, December 2002.

[RFC3417]Presohn,R.,Case,J.,McCloghrie,K.,Rose,M.和S.Waldbusser,“简单网络管理协议(SNMP)的传输映射”,STD 62,RFC 34172002年12月。

[RFC3418] Presuhn, R., Case, J., McCloghrie, K., Rose, M. and S. Waldbusser, "Management Information Base (MIB) for the Simple Network Management Protocol (SNMP)", STD 62, RFC 3418, December 2002.

[RFC3418]Presohn,R.,Case,J.,McCloghrie,K.,Rose,M.和S.Waldbusser,“简单网络管理协议(SNMP)的管理信息库(MIB)”,STD 62,RFC 3418,2002年12月。

11.2. Informative References
11.2. 资料性引用

[RFC1901] Case, J., McCloghrie, K., Rose, M. and S. Waldbusser, "Introduction to Community-based SNMPv2", RFC 1901, January 1996.

[RFC1901]Case,J.,McCloghrie,K.,Rose,M.和S.Waldbusser,“基于社区的SNMPv2简介”,RFC 19011996年1月。

[RFC2028] Hovey, R. and S. Bradner, "The Organizations Involved in the IETF Standards Process", BCP 11, RFC 2028, October 1996.

[RFC2028]Hovey,R.和S.Bradner,“参与IETF标准过程的组织”,BCP 11,RFC 2028,1996年10月。

[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.

[RFC2576]Frye,R.,Levi,D.,Routhier,S.和B.Wijnen,“互联网标准网络管理框架第1版、第2版和第3版之间的共存”,RFC 25762000年3月。

[RFC3410] Case, J., Mundy, R., Partain, D. and B. Stewart, "Introduction and Applicability Statements for Internet-Standard Management Framework", RFC 3410, December 2002.

[RFC3410]Case,J.,Mundy,R.,Partain,D.和B.Stewart,“互联网标准管理框架的介绍和适用性声明”,RFC 34102002年12月。

12. Editors' Addresses
12. 编辑地址

Jeffrey Case SNMP Research, Inc. 3001 Kimberlin Heights Road Knoxville, TN 37920-9716 USA

Jeffrey Case SNMP Research,Inc.美国田纳西州诺克斯维尔金伯利高地路3001号,邮编37920-9716

   Phone: +1 423-573-1434
   EMail: case@snmp.com
        
   Phone: +1 423-573-1434
   EMail: case@snmp.com
        

David Harrington Enterasys Networks 35 Industrial Way Post Office Box 5005 Rochester, NH 03866-5005 USA

David Harrington Enterasys Networks美国新罕布什尔州罗切斯特市35号工业路邮政信箱5005 03866-5005

   Phone: +1 603-337-2614
   EMail: dbh@enterasys.com
        
   Phone: +1 603-337-2614
   EMail: dbh@enterasys.com
        

Randy Presuhn BMC Software, Inc. 2141 North First Street San Jose, CA 95131 USA

美国加利福尼亚州圣何塞北第一街2141号Randy Presohn BMC软件公司,邮编95131

   Phone: +1 408-546-1006
   EMail: randy_presuhn@bmc.com
        
   Phone: +1 408-546-1006
   EMail: randy_presuhn@bmc.com
        

Bert Wijnen Lucent Technologies Schagen 33 3461 GL Linschoten Netherlands

Bert Wijnen-Lucent Technologies Schagen 33 3461德国劳埃德船级社荷兰

   Phone: +31 348-680-485
   EMail: bwijnen@lucent.com
        
   Phone: +31 348-680-485
   EMail: bwijnen@lucent.com
        
13. Full Copyright Statement
13. 完整版权声明

Copyright (C) The Internet Society (2002). All Rights Reserved.

版权所有(C)互联网协会(2002年)。版权所有。

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 assigns.

上述授予的有限许可是永久性的,互联网协会或其继承人或受让人不会撤销。

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.

RFC编辑功能的资金目前由互联网协会提供。