One document matched: draft-ietf-snmpv3-appl-01.txt
Differences from draft-ietf-snmpv3-appl-00.txt
Internet-Draft SNMPv3 Applications August 1997
SNMPv3 Applications
August 1, 1997
<draft-ietf-snmpv3-appl-01.txt>
David B. Levi
SNMP Research, Inc.
levi@snmp.com
Paul Meyer
Secure Computing Corporation
paul_meyer@securecomputing.com
Bob Stewart
Cisco Systems
bstewart@cisco.com
Status of this Memo
This document is an Internet-Draft. Internet-Drafts are working
documents of the Internet Engineering Task Force (IETF), its areas,
and its working groups. Note that other groups may also distribute
working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as ``work in progress.''
To learn the current status of any Internet-Draft, please check the
``1id-abstracts.txt'' listing contained in the Internet-Drafts Shadow
Directories on ds.internic.net (US East Coast), nic.nordu.net
(Europe), ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific
Rim).
Expires January 1998 [Page 1]
Internet-Draft SNMPv3 Applications August 1997
1. Abstract
This memo describes the various types of SNMP applications which make
use of an SNMP engine as described in [SNMP-ARCH]. There are five
types of application described herein:
- Applications which initiate SNMP Get, GetNext, GetBulk, and/or
Set requests, called 'command generators'.
- Applications which respond to SNMP Get, GetNext, GetBulk,
and/or Set requests, called 'command responders'.
- Applications which generate notifications, called
'notification originators'.
- Applications which receive notifications, called 'notification
receivers'.
- Applications which forward SNMP Get, GetNext, GetBulk, and/or
Set requests or notifications, called 'proxy forwarders'.
This memo also defines MIBs for specifying targets of management
operations, for notification filtering, and for proxy forwarding.
Expires January 1998 [Page 2]
Internet-Draft SNMPv3 Applications August 1997
2. Overview
This document describes the five types of SNMP applications:
- Applications which initiate SNMP Get, GetNext, GetBulk, and/or
Set requests, called 'command generators'.
- Applications which respond to SNMP Get, GetNext, GetBulk,
and/or Set requests, called 'command responders'.
- Applications which generate notifications, called
'notification originators'.
- Applications which receive notifications, called 'notification
receivers'.
- Applications which forward SNMP Get, GetNext, GetBulk, and/or
Set requests or notifications, called 'proxy forwarder'.
Note that there are no restrictions on which types of applications
may be associated with a particular SNMP engine. For example, a
single SNMP engine may in fact be associated with both command
generator and command responder applications.
2.1. Command Generators
A command generator application initiates SNMP Get, GetNext, GetBulk,
and/or Set requests, as well as processing the response to a request
which it generated.
2.2. Command Responders
A command responder application receives SNMP Get, GetNext, GetBulk,
and/or Set requests for which the contextEngineID is equal to that of
the local engine through which the request was received. The command
responder will perform the appropriate protocol operation, using
access control, and will generate a response message to be sent to
the request's originator.
2.3. Notification Originators
A notification originator conceptually monitors a system for
particular events or conditions, and generates Trap and/or Inform
Expires January 1998 [Page 3]
Internet-Draft SNMPv3 Applications August 1997
messages based on these events or conditions. A notification
originator must have a mechanism for determining where to send
messages, and what SNMP version and security parameters to use when
sending messages. A mechanism and MIB for this purpose is provided
in this document.
2.4. Notification Receivers
A notification receiver application listens for notification
messages, and generates response messages when a message containing
an Inform PDU is received.
2.5. Proxy Forwarder
A proxy forwarder application forwards SNMP messages. Note that
implementation of a proxy forwarder application is optional. The
sections describing proxy (4.5, 5.3, and 8) may be skipped for
implementations that do not include a proxy forwarder application.
The term "proxy" has historically been used very loosely, with
multiple different meanings. These different meanings include (among
others):
(1) the forwarding of SNMP requests to other SNMP entities without
regard for what managed object types are being accessed; for
example, in order to forward an SNMP request from one transport
domain to another, or to translate SNMP requests of one version
into SNMP requests of another version;
(2) the translation of SNMP requests into operations of some non-SNMP
management protocol; and
(3) support for aggregated managed objects where the value of one
managed object instance depends upon the values of multiple other
(remote) items of management information.
Each of these scenarios can be advantageous; for example, support for
aggregation of management information can significantly reduce the
bandwidth requirements of large-scale management activities.
However, using a single term to cover multiple different scenarios
causes confusion.
To avoid such confusion, this document uses the term "proxy" with a
much more tightly defined meaning. The term "proxy" is used in this
document to refer to a proxy forwarder application which forwards
Expires January 1998 [Page 4]
Internet-Draft SNMPv3 Applications August 1997
either SNMP requests, notifications, and responses without regard for
what managed objects are contained within requests or notifications.
This definition is most closely related to the first definition
above. Note however that in the SNMP architecture [SNMP-ARCH], a
proxy forwarder is actually an application, and need not be
associated with what is traditionally thought of as an SNMP agent.
Specifically, the distinction between a traditional SNMP agent and a
"proxy forwarder application" is simple:
- a proxy forwarder application forwards requests and/or
notifications on to other SNMP engines according to the
context, and irrespective of the specific managed object types
being accessed, and forwards the response to such previously
forwarded messages back to the SNMP engine from which the
original message was received;
- in contrast, the command responder application that is part of
what is traditionally thought of as an SNMP agent, and which
processes SNMP requests according to the (names of the)
individual managed object types and instances being accessed,
is NOT a proxy forwarder application from the perspective of
this document.
Thus, when a proxy forwarder application forwards a request or
notification for a particular context, not only is the information on
how to forward the request specifically associated with that context,
but the proxy forwarder application has no need of a detailed
definition of a MIB view (since the proxy forwarder application
forwards the request irrespective of the managed object types).
In contrast, a command responder application must have the detailed
definition of the MIB view, and even if it needs to issue requests to
other SNMP entities, that need is dependent on the individual managed
object instances being accessed (i.e., not only on the context).
3. Management Targets
Some types of applications (in particular notification generators and
proxy forwarders) require a mechanism for determining where and how
to send generated messages. This document provides a mechanism and
MIB for this purpose. The set of information that describes where
and how to send a message is called a 'Management Target', and
consists of two kinds of information:
Expires January 1998 [Page 5]
Internet-Draft SNMPv3 Applications August 1997
- Destination information, consisting of a transport domain and
a transport address. This is also termed a transport
endpoint.
- SNMP information, consisting of message processing model,
security model, level of security, and security name
information.
There can be a many-to-many relationship between these two types of
information. That is, there may be multiple transport endpoints
associated with a particular set of SNMP information, or a particular
transport endpoint may be associated with several sets of SNMP
information.
A management target is defined as the combination of a single set of
SNMP information and a single transport endpoint. Management targets
are grouped according to their SNMP information. That is, each
distinct set of SNMP information may be associated with multiple
transport endpoints. The set of management targets which are defined
by a distinct set of SNMP information are considered to be members of
the same management target group. For example, the following
contains two management target groups, each of which contains three
management targets:
(version=snmpv3, secmodel=usm, secname=joe, udp=128.1.2.3:162)
(version=snmpv3, secmodel=usm, secname=joe, udp=128.1.3.5:162)
(version=snmpv3, secmodel=usm, secname=joe, udp=128.1.4.7:162)
(version=snmpv3, secmodel=usm, secname=martha, udp=128.1.2.3:162)
(version=snmpv3, secmodel=usm, secname=martha, udp=128.1.3.5:162)
(version=snmpv3, secmodel=usm, secname=martha, udp=128.1.4.7:162)
An application will generally make use of some subset of the entire
set of management targets which are configured.
4. Elements Of Procedure
The following sections describe the procedures followed by each type
of application when generating messages for transmission or when
processing received messages. Applications communicate with the
Message Processing Subsystem using the abstract service interfaces
defined in [SNMP-ARCH].
Expires January 1998 [Page 6]
Internet-Draft SNMPv3 Applications August 1997
4.1. Command Generators
A command generator initiates an SNMP request by calling the Message
Processing Subsystem using the following abstract service interface:
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
)
Where:
- The transportDomain is that of the destination of the message.
- The transportAddress is the destination of the message.
- The messageProcessingModel indicates which Message Processing
Subsystem the application wishes to use.
- The securityModel is the security model that the application
wishes to use.
- The securityName is whatever the security model wishes to use.
- The securityLevel is the security level that the application
wishes to use.
- The contextEngineID is provided by the command generator if it
wishes to explicitly specify the location of the management
information it is requesting.
- The contextName is provided by the command generator if it
wishes to explicitly specify the local context name for the
management information it is requesting. The command
generator may omit this parameter, in which case the default
context is used.
Expires January 1998 [Page 7]
Internet-Draft SNMPv3 Applications August 1997
- The pduVersion indicates the version of the PDU to be sent.
- The PDU is a value contructed by the command generator
containing the management operation that the command generator
wishes to perform.
- The expectResponse argument indicates that a response is
expected.
The result of the sendPdu interface indicates whether the PDU was
successfully sent. If it was successfully sent, the returned value
will be a sendPduHandle. The command generator should store the
sendPduHandle so that it can correlate a response to the original
request.
The Message Processing Subsystem is responsible for delivering the
response to a particular request to the correct command generator
application. The abstract service interface used is:
processResponsePdu( -- process Response PDU
IN messageProcessingModel -- typically, SNMP version
IN securityModel -- Security Model in use
IN securityName -- on behalf of this principal
IN securityLevel -- Level of Security
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 statusInformation -- success or errorIndication
IN sendPduHandle -- handle from sendPDU
)
Where:
- The messageProcessingModel is the value from the received
response.
- The securityModel is the value from the received response.
- The securityName is the value from the received response.
- The securityLevel is the value from the received response.
- The contextEngineID is the value from the received response.
- The contextName is the value from the received response.
Expires January 1998 [Page 8]
Internet-Draft SNMPv3 Applications August 1997
- The pduVersion indicates the version of the PDU in the
received response.
- The PDU is the value from the received response.
- The statusInformation indicates success or failure in
receiving the response.
- The sendPduHandle is the value returned by the sendPdu call
which generated the original request to which this is a
response.
The procedure when a command generator receives a response is as
follows:
(1) The operation type is determined from the ASN.1 tag value
associated with the PDU parameter. The operation type should
always be a Response PDU (the Message Processing Subsystem should
never call a command generator application using the
processResponsePdu interface for any other type of message).
(2) The request-id, error-status, error-index, and variable-bindings
are extracted from the PDU and saved.
(3) At this point, it is up to the application as to how to continue
processing the PDU.
Expires January 1998 [Page 9]
Internet-Draft SNMPv3 Applications August 1997
4.2. Command Responders
Before a command responder application can process messages, it must
first associate itself with an SNMP engine. The abstract service
interface used for this purpose is:
statusInformation = -- success or errorIndication
registerContextEngineID(
IN contextEngineID -- take responsibility for this one
IN pduType -- the pduType(s) to be registered
)
Where:
- The statusInformation indications success or failure of the
registration attempt.
- The contextEngineID is equal to the snmpEngineID of the SNMP
engine with which the command responder is registering.
- The pduType indicates a Get, GetNext, GetBulk, or Set pdu.
Note that if another command responder application is already
registered with an SNMP engine, any further attempts to register with
the same contextEngineID and pduType will be ignored. This implies
that separate command responder applications could register
separately for the various pdu types. However, in practice this is
undesirable, and only a single command responder application should
be registered with an SNMP engine at any given time.
A command responder application can disassociate with an SNMP engine
using the following abstract service interface:
unregisterContextEngineID(
IN contextEngineID -- give up responsibility for this one
IN pduType -- the pduType(s) to be unregistered
)
Where:
- The contextEngineID is equal to the snmpEngineID of the SNMP
engine with which the command responder is cancelling the
registration.
- The pduType indicates a Get, GetNext, GetBulk, or Set pdu.
Once the command responder has registered with the SNMP engine, it
Expires January 1998 [Page 10]
Internet-Draft SNMPv3 Applications August 1997
waits to receive SNMP messages. The abstract service interface used
for receiving messages is:
processPdu( -- process Request/Notification PDU
IN messageProcessingModel -- typically, SNMP version
IN securityModel -- Security Model in use
IN securityName -- on behalf of this principal
IN securityLevel -- Level of Security
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 the Response PDU
IN stateReference -- reference to state information
) -- needed when sending a response
Where:
- The messageProcessingModel indicates which Message Processing
subsystem received and processed the message.
- The securityModel is the value from the received message.
- The securityName is the value from the received message.
- The securityLevel is the value from the received message.
- The contextEngineID is the value from the received message.
- The contextName is the value from the received message.
- The pduVerion indicates the version of the PDU in the received
message.
- The PDU is the value from the received message.
- The maxSizeResponseScopedPDU is the value from the received
message.
- The stateReference is a value assigned by the Message
Processing Subsystem, which caches information about each
received request message. The stateReference is a reference
to this cached information. This value must be returned to
the Message Processing Subsystem in order to generate a
response.
The procedure when a message is received is as follows.
Expires January 1998 [Page 11]
Internet-Draft SNMPv3 Applications August 1997
(1) The operation type is determined from the ASN.1 tag value
associated with the PDU parameter. The operation type should
always be a Get, GetNext, GetBulk, or Set.
(2) The request-id is extracted from the PDU and saved.
(3) If the SNMPv2 operation type is GetBulk, the non-repeaters and
max-repetitions values are extracted from the PDU and saved.
(4) The variable-bindings are extracted from the PDU and saved.
(5) The management operation represented by the SNMPv2 operation type
is performed with respect to the relevant MIB view within the
context named by the contextName, according to the procedures set
forth in [RFC1905]. The relevant MIB view is determined by the
securityLevel, securityModel, contextName, securityName, and SNMPv2
operation type. To determine whether a particular object instance
is within the relevant MIB view, the following abstract service
interface is called:
statusInformation = -- success or errorIndication
isAccessAllowed(
IN securityModel -- Security Model in use
IN securityName -- principal who wants to access
IN securityLevel -- Level of Security
IN viewType -- read, write, or notify view
IN contextName -- context containing variableName
IN variableName -- OID for the managed object
)
Where:
- The securityModel is the value from the received message.
- The securityName is the value from the received message.
- The securityLevel is the value from the received message.
- The viewType indicates whether the pdu type is a read or write
operation.
- The contextName is the value from the received message.
- The variableName is the object instance of the variable for
which access rights are to be checked.
Expires January 1998 [Page 12]
Internet-Draft SNMPv3 Applications August 1997
Normally, the result of the management operation will be a new PDU
value, and processing will continue in step (6) below. However, if
at any time during the processing of the management operation, the
context named by the contextName parameter is unavailable,
processing of the management operation is halted, no result PDU is
generated, the snmpUnavailableContexts counter is incremented, and
control is passed to step (6) below.
(6) The Message Processing Subsystem is called to generate a response
or report message. The abstract service interface is:
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 the Response PDU
IN stateReference -- reference to state information
-- as presented with the request
IN statusInformation -- success or errorIndication
) -- error counter OID/value if error
Where:
- The messageProcessingModel is the value from the processPdu
call.
- The securityModel is the value from the processPdu call.
- The securityName is the value from the processPdu call.
- The securityLevel is the value from the processPdu call.
- The contextEngineID is the value from the processPdu call.
- The contextName is the value from the processPdu call.
- The pduVersion indicates the version of the PDU to be
returned. If no result PDU was generated, the pduVersion is
an undefined value.
- The PDU is the result generated in step (5) above. If no
result PDU was generated, the PDU is an undefined value.
Expires January 1998 [Page 13]
Internet-Draft SNMPv3 Applications August 1997
- The maxSizeResponseScopedPDU is a local value indicating the
maximum size of a ScopedPDU that the application can accept.
- The stateReference is the value from the processPdu call.
- The statusInformation either contains an indication that no
error occured and that a response should be generated, or
contains an indication that an error occured along with the
OID and counter value of the snmpUnavailableContexts object.
Note that a command responder application should always call the
returnResponsePdu abstract service interface, even in the event of an
error such as a resource allocation error. In the event of such an
error, the PDU value passed to returnResponsePdu should contain
appropriate values for errorStatus and errorIndex.
Expires January 1998 [Page 14]
Internet-Draft SNMPv3 Applications August 1997
4.3. Notification Originators
A notification originator application generates SNMP notification
messages. A notification message can contain either an SNMPv2-Trap
PDU or an Inform PDU. However, a particular implementation is not
required to be capable of generating both types of messages.
Notification originator applications require a mechanism for
identifying the management targets to which notifications should be
sent. The particular mechanism used is implementation dependent,
however, if an implementation makes the configuration of management
targets SNMP manageable, it MUST use the management target MIB
described in this document.
When a notification originator wishes to generate a notification, it
must first determine in which context the information to be conveyed
in the notification exists, i.e., it must determine the
contextEngineID and contextName. It must then determine the set of
management targets to which the notification should be sent, and the
grouping of these management targets. The application must also
determine, for each group of management targets, whether the
notification message should contain an SNMPv2-Trap PDU or Inform PDU,
and if it is to contain an Inform PDU, the number of retries and
retransmission algorithm.
The mechanism by which a notification originator determines this
information is implementation dependent. Once the application has
determined this information, the following procedure is performed for
each group of management targets:
(1) Any appropriate filtering mechanisms are applied to determine
whether the notification should be sent to the management targets
in this group. If such filtering mechanisms determine that the
notification should not be sent, processing continues with the next
group of management targets. Otherwise,
(2) The appropriate set of variable-bindings is retrieved from local
MIB instrumentation within the relevant MIB view. The relevant MIB
view is determined by the securityLevel, securityModel,
contextName, and securityName of the management target. To
determine whether a particular object instance is within the
relevant MIB view, the isAccessAllowed abstract service interface
is used, in the same manner as described in the preceeding section.
If the statusInformation returned by isAccessAllowed does not
indicate accessAllowed, the notification is not sent to any of the
management targets within this group.
Expires January 1998 [Page 15]
Internet-Draft SNMPv3 Applications August 1997
(3) A PDU is constructed using a locally unique request-id value, an
operation type of Trap or Inform, an error-status and error-index
value of 0, and the variable-bindings supplied previously in step
(2).
(4) If the notification should contain an SNMPv2-Trap PDU for this
group, then for each management target in the group, the Message
Processing Subsystem is called using the following abstract service
interface:
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
)
Where:
- The transportDomain is that of the management target.
- The transportAddress is that of the management target.
- The messageProcessingModel is that of the management target.
- The securityModel is that of the management target.
- The securityName is that of the management target.
- The securityLevel is that of the management target.
- The contextEngineID is the value originally determined for the
notification.
- The contextName is the value originally determined for the
notification.
Expires January 1998 [Page 16]
Internet-Draft SNMPv3 Applications August 1997
- The pduVersion is the version of the PDU to be sent.
- The PDU is the value constructed in step (3) above.
- The expectResponse argument indicates that no response is
expected.
Otherwise,
(5) If the notification should contain an Inform PDU for this group,
then:
a) For each management target in the group, the Message
Processing Subsystem is called using the sendPdu abstract
service interface as described in step (4) above, except that
the expectResponse arguments indicates that a response is
expected.
b) The application caches information about the management
target group.
c) If a response is received within an appropriate time interval
from any one transport endpoint within the group, the
notification is considered acknowledged for this group, the
cached information is deleted, and any further responses to
this Inform are ignored. Otherwise,
d) If a response is not received within an appropriate time
period, information about the management target group is
retrieved from the cache, and steps a) through d) are
repeated. The number of times these steps are repeated is as
previously determined. If this retry count is exceeded, the
acknowledgement of the notification is considered to have
failed, and processing of the notification for this group of
management targets is halted.
Responses to Inform PDU notifications will be received via the
processResponsePDU abstract service interface.
Expires January 1998 [Page 17]
Internet-Draft SNMPv3 Applications August 1997
4.4. Notification Receivers
Notification receiver applications receive SNMP Notification messages
from the Message Processing Subsystem. Before any messages can be
received, the notification receiver must register with the Message
Processing Subsystem using the registerContextEngineID abstract
service interface. The parameters used are:
- The contextEngineID is an undefined 'wildcard' value.
Notifications are delivered to a registered notification
receiver regardless of the contextEngineID contained in the
notification message.
- The pduType indicates either SNMPv2-Trap PDUs or Inform PDUs,
or both.
Once the notification receiver has registered with the Message
Processing Subsystem, messages are received using the processPdu
abstract service interface. Parameters are:
- The messageProcessingModel indicates which Message Processing
subsystem received and processed the message.
- The securityModel is the value from the received message.
- The securityName is the value from the received message.
- The securityLevel is the value from the received message.
- The contextEngineID is the value from the received message.
- The contextName is the value from the received message.
- The pduVerion indicates the version of the PDU in the received
message.
- The PDU is the value from the received message.
- The maxSizeResponseScopedPDU is the value from the received
message.
- If the message contains an SNMPv2-Trap PDU, the stateReference
is undefined and unused. Otherwise, the stateReference is a
value assigned by the Message Processing Subsystem which
references cached information about the notification. This
value must be returned to the Message Processing Subsystem in
order to generate a response.
Expires January 1998 [Page 18]
Internet-Draft SNMPv3 Applications August 1997
When an SNMPv2-Trap PDU is delivered to a notification receiver
application, it first extracts the SNMP operation type, request-id,
error-status, error-index, and variable-bindings from the PDU. After
this, processing depends on the particular implementation.
When an Inform PDU is received, the notification receiver application
follows the following procedure:
(1) The SNMPv2 operation type, request-id, error-status, error-index,
and variable-bindings are extracted from the PDU.
(2) A Response PDU is constructed using the extracted request-id and
variable-bindings, and with error-status and error-index both set
to 0.
(3) The Message Processing Subsystem is called to generate a response
message using the returnResponsePdu abstract service interface.
Parameters are:
- The messageProcessingModel is the value from the processPdu
call.
- The securityModel is the value from the processPdu call.
- The securityName is the value from the processPdu call.
- The securityLevel is the value from the processPdu call.
- The contextEngineID is the value from the processPdu call.
- The contextName is the value from the processPdu call.
- The pduVersion indicates the version of the PDU to be
returned.
- The PDU is the result generated in step (2) above.
- The maxSizeResponseScopedPDU is a local value indicating the
maximum size of a ScopedPDU that the application can accept.
- The stateReference is the value from the processPdu call.
- The statusInformation indicates that no error occured and that
a response should be generated.
Note that there may be multiple notification receiver applications
associated with a particular SNMP engine. Despite this, only a
Expires January 1998 [Page 19]
Internet-Draft SNMPv3 Applications August 1997
single response should be generated when an Inform PDU is received.
The mechanism to ensure this is implementation specific. One
strategy to accomplish this is to simply let the Message Processing
Subsystem delete the stateReference when the first response is
generated. Subsequent attempts to send the response will fail
because the stateReference no longer exists within the Message
Processing Subsystem.
Expires January 1998 [Page 20]
Internet-Draft SNMPv3 Applications August 1997
4.5. Proxy Forwarders
A proxy forwarder application deals with forwarding messages which
contain Get, GetNext, GetBulk, Set, SNMPv2-Trap, Inform, and Response
PDUs. Of these PDU types, the first four (Get, GetNext, GetBulk,
Set) deal with requesting or modifying information located within a
particular context, and the next two (SNMPv2-Trap, Inform) deal with
notifications concerning information located within a particular
context. A proxy forwarder application treats these two situations
slightly different. Forwarding of Response PDUs always occurs as a
result of receiving a response to a previously forwarded message.
In the first situation, the proxy forwarder's role is ultimately to
deliver a request for management information to the SNMP engine which
has access to that information, and to deliver the response
containing the information back to the SNMP engine which initiated
the request. The context information in a request is used to
determine which SNMP engine has access to the requested information,
and this is used to determine where and how to forward the request.
In the second situation, the proxy forwarder's role is to determine
which SNMP engines should receive notification about management
information from a particular location. The context information in a
notification message determines the location to which the information
contained in the notification applies. This is used to determine
which SNMP engines should receive notification about this
information.
When forwarding messages, a proxy forwarder application must perform
a translation of incoming management target information into outgoing
management target information. How this translation is performed is
implementation specific. In many cases, this will be driven by a
preconfigured translation table. If a proxy forwarder application
makes the contents of this table SNMP manageable, it MUST use the MIB
defined in this document.
4.5.1. Request Forwarding
There are two phases for request forwarding. First the incoming
request needs to be passed through the proxy application. Then the
resulting resonse needs to be passed back. These phases are
described in the following two sections.
Expires January 1998 [Page 21]
Internet-Draft SNMPv3 Applications August 1997
4.5.1.1. Processing an Incoming Request
A proxy forwarder application that wishes to forward request messages
must first register with the Message Processing Subsystem using the
registerContextEngineID abstract service interface. The proxy
forwarder must register each contextEngineID for which it wishes to
forward messages, as well as for each pduType. Note that as the
configuration of a proxy forwarder is changed, the particular
contextEngineID values for which it is forwarding may change. The
proxy forwarder should call the registerContextEngineID and
unregisterContextEngineID abstract service interfaces as needed to
reflect its current configuration.
A proxy forwarder application should never attempt to register a
value of contextEngineID which is equal to the snmpEngineID of the
SNMP engine to which the proxy forwarder is associated.
Once the proxy forwarder has registered for the appropriate
contextEngineId values, it can start processing messages. The
following procedure is used:
(1) A message is received using the processPdu abstract service
interface. The incoming management target information received
from the processPdu interface is translated into outgoing
management target information. Note that this translation may vary
for different values of contextEngineID and/or contextName. The
translation should result in a single management target.
(2) If appropriate outgoing management target information cannot be
found, the proxy forwarder increments the snmpProxyDrops counter
[RFC1907], and then calls the Message Processing Subsystem using
the returnResponsePdu abstract service interface. Parameters are:
- The messageProcessingModel is the value from the processPdu
call.
- The securityModel is the value from the processPdu call.
- The securityName is the value from the processPdu call.
- The securityLevel is the value from the processPdu call.
- The contextEngineID is the value from the processPdu call.
- The contextName is the value from the processPdu call.
Expires January 1998 [Page 22]
Internet-Draft SNMPv3 Applications August 1997
- The pduVersion is an undefined value.
- The PDU is an undefined value.
- The maxSizeResponseScopedPDU is a local value indicating the
maximum size of a ScopedPDU that the application can accept.
- The stateReference is the value from the processPdu call.
- The statusInformation indicates that an error occured and that
an snmpProxyDrops Report message should be generated.
Processing of the message stops at this point. Otherwise,
(3) A new PDU is constructed. A unique value of request-id should be
used in the new PDU (this value will enable a subsequent response
message to be correlated with this request). The remainder of the
new PDU is identical to the received PDU, unless the incoming SNMP
version is SNMPv1 and the outgoing SNMP version is SNMPv2 or
SNMPv3, or vice-versa, in which case the proxy forwarder must apply
the translation rules as documented in [RFC1908].
(4) The proxy forwarder calls the Message Processing Subsystem to
generate the forwarded message, using the sendPdu abstract service
interface. The parameters are:
- The transportDomain is that of the outgoing management target.
- The transportAddress is that of the outgoing management
target.
- The messageProcessingModel is that of the outgoing management
target.
- The securityModel is that of the outgoing management target.
- The securityName is that of the outgoing management target.
- The securityLevel is that of the outgoing management target.
- The contextEngineID is the value originally received.
- The contextName is the value originally received.
- The pduVersion is the version of the PDU to be sent.
Expires January 1998 [Page 23]
Internet-Draft SNMPv3 Applications August 1997
- The PDU is the value constructed in step (3) above.
- The expectResponse argument indicates that a response is
expected. If the sendPdu call is unsuccessful, the proxy
forwarder performs the steps described in (2) above.
Otherwise:
(5) The proxy forwarder caches the contextEngineId, contextName,
stateReference, incoming management target information, outgoing
management information, and any other information needed to match
an incoming response to the forwarded request. If this information
cannot be cached (possibly due to a lack of resources), the proxy
forwarder performs the steps described in (2) above. Otherwise:
(6) Processing of the request stops until a response to the forwarded
request is received, or until an appropriate time interval has
expired. If this time interval expires before a response has been
received, the cached information about this request is removed, and
the proxy forwarder performs the steps described in (2) above using
the cached information.
4.5.1.2. Processing an Incoming Response
A proxy forwarder follows the following procedure when an incoming
response is received:
(1) The incoming response is received using the processPdu interface.
The proxy forwarder uses the received parameters to locate an entry
in its cache of pending forwarded requests. This is done by
matching the received parameters with the cached values of
contextEngineID, contextName, outgoing management target
information, and the request-id contained in the received PDU (the
proxy forwarder must extract the request-id for this purpose). If
an appropriate cache entry cannot be found, processing of the
response is halted. Otherwise:
(2) The cache information is extracted, and removed from the cache.
(3) If the incoming SNMP version is SNMPv1 and the outgoing SNMP
version is SNMPv2 or SNMPv3, or vice-versa, the proxy forwarder
must apply the translation rules documented in [RFC1908].
(4) The proxy forwarder calls the Message Processing Subsystem using
the returnResponsePdu abstract service interface. Parameters are:
Expires January 1998 [Page 24]
Internet-Draft SNMPv3 Applications August 1997
- The messageProcessingModel indicates the MessageProcessing
subsystem from which the original incoming message was
received.
- The securityModel is that of the original incoming management
target extracted from the cache.
- The securityName is that of the original incoming management
target extracted from the cache.
- The securityLevel is that of the original incoming management
target extracted from the cache.
- The contextEngineID is the value extracted from the cache.
- The contextName is the value extracted from the cache.
- The pduVersion indicates the version of the PDU to be
returned.
- The PDU is the (possibly translated) Response PDU.
- The maxSizeResponseScopedPDU is a local value indicating the
maximum size of a ScopedPDU that the application can accept.
- The stateReference is the value extracted from the cache.
- The statusInformation indicates that no error occured and that
a Response PDU message should be generated.
4.5.2. Notification Forwarding
A proxy forwarder receives notifications in the same manner as a
notification receiver application, using the processPdu abstract
service interface. The following procedure is used when a
notification is received:
(1) The incoming management target information received from the
processPdu interface is translated into outgoing management target
information. Note that this translation may vary for different
values of contextEngineId and/or contextName. The translation may
result in one or more management target groups, each of which may
contain multiple management targets.
(2) If appropriate outgoing management target information cannot be
found and the notification was a Trap, processing of the
Expires January 1998 [Page 25]
Internet-Draft SNMPv3 Applications August 1997
notification is halted. If appropriate outgoing management target
information cannot be found and the notification was an Inform, the
proxy forwarder increments the snmpProxyDrops object, and calls the
Message Processing Subsystem using the returnResponsePdu abstract
service interface. The parameters are:
- The messageProcessingModel is the received value.
- The securityModel is the received value.
- The securityName is the received value.
- The securityLevel is the received value.
- The contextEngineID is the received value.
- The contextName is the received value.
- The pduVersion is an undefined and unused value.
- The PDU is an undefined and unused value.
- The maxSizeResponseScopedPDU is a local value indicating the
maximum size of a ScopedPDU that the application can accept.
- The stateReference is the received value.
- The statusInformation indicates that an error occured and that
a Report message should be generated.
Processing of the message stops at this point. Otherwise,
(3) The proxy forwarder generates a notification using the procedures
described in the preceeding section on Notification Originators,
with the following exceptions:
- The contextEngineID and contextName values from the original
received notification are used.
- The outgoing management targets previously determined are
used.
- No filtering mechanisms are applied.
- The variable-bindings from the original received notification
are used, rather than retrieving variable-bindings from local
MIB instrumentation. In particular, no access-control is
Expires January 1998 [Page 26]
Internet-Draft SNMPv3 Applications August 1997
applied to these variable-bindings.
- If for any of the outgoing management targets, the incoming
SNMP version is SNMPv1 and the outgoing SNMP version is SNMPv2
or SNMPv3, the proxy forwarder must apply the translation
rules as documented in [RFC1908].
- If for any of the outgoing management targets, the incoming
SNMP version is SNMPv2 or SNMPv3, and the outgoing SNMP
version is SNMPv1, this outgoing management target is not used
when generating the forwarded notifications.
(4) If the original received notification contains an SNMPv2-Trap PDU,
processing of the notification is now completed. Otherwise, the
original received notification must contain an Inform PDU, and
processing continues.
(5) If the forwarded notifications included any Inform PDUs, processing
continues when the procedures described in the section for
Notification Originators determine that either:
- None of the generated notifications containing Inform PDUs
have been successfully acknowledged within the longest of the
time intervals, in which case processing of the original
notification is halted, or,
- At least one of the generated notifications containing Inform
PDUs is successfully acknowledged, in which case a response to
the original received notification containing an Inform PDU is
generated as described in the following steps.
(6) A Response PDU is constructed, using the values of request-id and
variable-bindings from the original received Inform PDU, and
error-status and error-index values of 0.
(7) The Message Processing Subsystem is called using the
returnResponsePdu abstract service interface. Parameters are:
- The messageProcessingModel is the originally received value.
- The securityModel is the originally received value.
- The securityName is the originally received value.
- The securityLevel is the originally received value.
Expires January 1998 [Page 27]
Internet-Draft SNMPv3 Applications August 1997
- The contextEngineID is the originally received value.
- The contextName is the originally received value.
- The pduVersion indicates the version of the PDU constructed in
step (6) above.
- The PDU is the value constructed in step (6) above.
- The maxSizeResponseScopedPDU is a local value indicating the
maximum size of a ScopedPDU that the application can accept.
- The stateReference is the originally received value.
- The statusInformation indicates that no error occured and that
a Response PDU message should be generated.
Expires January 1998 [Page 28]
Internet-Draft SNMPv3 Applications August 1997
5. The Structure of the MIBs
There are three separate MIBs described in this document, the
management target MIB, the notification MIB, and the proxy MIB. The
following sections describe the structure of these three MIBs.
5.1. The Management Target MIB
This MIB contains objects for defining management targets. It
consists of one scalar, two tables, and conformance/compliance
statements.
The scalar, snmpTargetAddressSpinLock, is used by managers when
creating new rows in the snmpTargetAddrTable.
The first table, the snmpTargetAddrTable, contains information about
transport domains/addresses. The table is indexed by an
SnmpAdminString type object and an integer type object. This allows
domains/addresses to be organized into groups.
The second table, the snmpTargetTable, contains information about
SNMP version and security information to be used when sending
messages to a particular group of transport domains/addresses.
5.1.1. Definitions
SNMPV3-TARGET-MIB DEFINITIONS ::= BEGIN
IMPORTS
MODULE-IDENTITY,
OBJECT-TYPE,
OBJECT-IDENTITY,
Integer32
FROM SNMPv2-SMI
TDomain,
TAddress,
TruthValue,
TimeInterval,
RowStatus,
StorageType
FROM SNMPv2-TC
SnmpSecurityModel,
SnmpMessageProcessingModel,
Expires January 1998 [Page 29]
Internet-Draft SNMPv3 Applications August 1997
SnmpSecurityLevel,
SnmpAdminString
FROM SNMP-FRAMEWORK-MIB
MODULE-COMPLIANCE,
OBJECT-GROUP
FROM SNMPv2-CONF;
snmpTargetMIB MODULE-IDENTITY
LAST-UPDATED "9707140000Z"
ORGANIZATION "IETF SNMPv3 Working Group"
CONTACT-INFO
"David B. Levi
SNMP Research, Inc.
3001 Kimberlin Heights Road
Knoxville, TN 37920-9716
Tel: +1 423 573 1434
E-mail: levi@snmp.com
Paul Meyer
Secure Computing Corporation
2675 Long Lake Road
Roseville, MN 55113
Tel: +1 612 628 1592
E-mail: paul_meyer@securecomputing.com
Bob Stewart
Cisco Systems, Inc.
170 West Tasman Drive
San Jose, CA 95134-1706
Tel: +1 603 654 6923
E-mail: bstewart@cisco.com"
DESCRIPTION
"This MIB module defines a MIB which provides mechanisms to
remotely configure the parameters used by an SNMPv3 entity
for the generation of notifications."
REVISION "9707140000Z"
DESCRIPTION
"The initial revision."
::= { snmpModules 11 } -- TBD
snmpTargetObjects OBJECT IDENTIFIER ::= { snmpTargetMIB 1 }
snmpTargetConformance OBJECT IDENTIFIER ::= { snmpTargetMIB 2 }
-- ------------------------------------------------------------------
--
-- The snmpTargetObjects group
Expires January 1998 [Page 30]
Internet-Draft SNMPv3 Applications August 1997
--
-- ------------------------------------------------------------------
snmpTargetAddressSpinLock OBJECT-TYPE
SYNTAX TestAndIncr
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"This object is used to facilitate creation of rows in the
snmpTargetAddrTable. There are two situations where an
SNMP entity may wish to create a new row, when a new group
of addresses must be created, and when an address must be
added to an existing group.
When an SNMP entity wishes to create a new group of
addresses, it should follow the following procedure:
a) Retrieve the value of this object.
b) Retrieve all existing index values of
snmpTargetAddrName (this can be accomplished
by retrieving all instances of any accessible
columnar object in the snmpTargetAddrTable).
c) Retrieve the value of this object. If the value is
not equal to the last retrieved value, go back to
step b).
d) Select a new unique index value for
snmpTargetAddrName, and an arbitrary value for
snmpTargetAddrSubIndex. Attempt a set request
containing these varbinds:
- The last retrieved value of this object.
- An instance of the snmpTargetAddrRowStatus
object whose indices are equal to the selected
index values of snmpTargetAddrName and
snmpTargetAddrSubIndex.
- Additional varbinds for initializing other
columnar objects in the row.
If this set fails, the SNMP entity may return to
step a) and try again.
When an SNMP entity wishes to create a new address within
an existing group of addresses, it should follow the
following procedure:
a) Retrieve all existing values of
snmpTargetAddrSubIndex corresponding to the desired
index value of snmpTargetAddrName. (this can be
accomplished by retrieving all instances of any
accessible columnar object in the
snmpTargetAddrTable whose index begins with the
Expires January 1998 [Page 31]
Internet-Draft SNMPv3 Applications August 1997
desired index value of snmpTargetAddrName).
b) Select a new value for snmpTargetAddrSubIndex.
Attempt a set request containing these varbinds:
- An instance of the snmpTargetAddrRowStatus
object whose indices are equal to the desired
index value of snmpTargetAddrName and the
selected index value of snmpTargetAddrSubIndex.
- Additional varbinds for initializing other
columnar objects in the row.
If this set fails, the SNMP entity may return to
step a) and try again."
::= { snmpTargetObjects 1 }
snmpTargetAddrTable OBJECT-TYPE
SYNTAX SEQUENCE OF SnmpV3TargetAddrEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A table of transport addresses to be used in the generation
of SNMP messages. Addresses are organized into groups.
Every member of a group shares a common snmpTargetAddrName."
::= { snmpTargetObjects 2 }
snmpTargetAddrEntry OBJECT-TYPE
SYNTAX SnmpV3TargetAddrEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A transport address to be used in the generation
of SNMP operations."
INDEX { snmpTargetAddrName, snmpTargetAddrSubIndex }
::= { snmpTargetAddrTable 1 }
SnmpV3TargetAddrEntry ::= SEQUENCE {
snmpTargetAddrSubIndex Integer32,
snmpTargetAddrTDomain TDomain,
snmpTargetAddrTAddress TAddress,
snmpTargetAddrTimeout TimeInterval,
snmpTargetAddrStorageType StorageType,
snmpTargetAddrRowStatus RowStatus
}
snmpTargetAddrSubIndex OBJECT-TYPE
SYNTAX Integer32 (1..2147483647)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
Expires January 1998 [Page 32]
Internet-Draft SNMPv3 Applications August 1997
"The locally arbitrary, but unique identifier associated
an snmpTargetAddrEntry within a group of entries in the
snmpTargetAddrTable."
::= { snmpTargetAddrEntry 1 }
snmpTargetAddrTDomain OBJECT-TYPE
SYNTAX TDomain
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This object indicates the transport type of the address
contained in the snmpTargetAddrTAddress object."
::= { snmpTargetAddrEntry 2 }
snmpTargetAddrTAddress OBJECT-TYPE
SYNTAX TAddress
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This object contains a transport address. The format of
this address depends on the value of the
snmpTargetAddrTDomain object."
::= { snmpTargetAddrEntry 3 }
snmpTargetAddrTimeout OBJECT-TYPE
SYNTAX TimeInterval
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This object should reflect the expected round trip time
for communicating with the transport address defined by
this row. When a message is sent to this address, and
a response (if one is expected) is not received within
this time period, an implementation may assume that the
response will not be delivered.
Note that the time interval that an application waits
for a response may actually be derived from the value
of this object. The method for deriving the actual time
interval is implementation dependent. One such method
is to derive the expected round trip time based on a
particular retransmission algorithm and on the number
of timeouts which have occured. The type of message may
also be considered when deriving expected round trip
times for retransmissions. For example, if a message is
being sent with a securityLevel that indicates both
authentication and privacy, the derived value may be
Expires January 1998 [Page 33]
Internet-Draft SNMPv3 Applications August 1997
increased to compensate for extra processing time spent
during authentication and encryption processing."
DEFVAL { 1500 }
::= { snmpTargetAddrEntry 4 }
snmpTargetAddrStorageType OBJECT-TYPE
SYNTAX StorageType
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The storage type for this conceptual row."
::= { snmpTargetAddrEntry 5 }
snmpTargetAddrRowStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The status of this conceptual row.
Until instances of all corresponding columns are
appropriately configured, the value of the
corresponding instance of the snmpTargetAddrRowStatus
column is 'notReady'.
In particular, a newly created row cannot be made
active until the corresponding snmpTargetAddrTDomain
and snmpTargetAddrTAddress have both been set."
::= { snmpTargetAddrEntry 6 }
snmpTargetTable OBJECT-TYPE
SYNTAX SEQUENCE OF SnmpV3TargetEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A table of management target information to be used
in the generation of SNMP messages."
::= { snmpTargetObjects 3 }
snmpTargetEntry OBJECT-TYPE
SYNTAX SnmpV3TargetEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A set of management target information."
INDEX { snmpTargetName }
::= { snmpTargetTable 1 }
Expires January 1998 [Page 34]
Internet-Draft SNMPv3 Applications August 1997
SnmpV3TargetEntry ::= SEQUENCE {
snmpTargetName SnmpAdminString,
snmpTargetAddrName SnmpAdminString,
snmpTargetMessageProcessingModel SnmpMessageProcessingModel,
snmpTargetSecurityModel SnmpSecurityModel,
snmpTargetSecurityName SnmpAdminString,
snmpTargetSecurityLevel SnmpSecurityLevel,
snmpTargetRetryCount Integer32,
snmpTargetStorageType StorageType,
snmpTargetRowStatus RowStatus
}
snmpTargetName OBJECT-TYPE
SYNTAX SnmpAdminString
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The locally arbitrary, but unique identifier associated
with this snmpTargetEntry."
::= { snmpTargetEntry 1 }
snmpTargetAddrName OBJECT-TYPE
SYNTAX SnmpAdminString
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The group of addresses to which management operations will
be sent when using this set of security parameters. The
value of this object refers to a group of addresses
in the snmpTargetAddrTable."
::= { snmpTargetEntry 2 }
snmpTargetMessageProcessingModel OBJECT-TYPE
SYNTAX SnmpMessageProcessingModel
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The Message Processing Model to be used when generating
SNMP messages using this entry."
::= { snmpTargetEntry 3 }
snmpTargetSecurityModel OBJECT-TYPE
SYNTAX SnmpSecurityModel
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The Security Model to be used when generating SNMP
Expires January 1998 [Page 35]
Internet-Draft SNMPv3 Applications August 1997
messages using this entry."
::= { snmpTargetEntry 4 }
snmpTargetSecurityName OBJECT-TYPE
SYNTAX SnmpAdminString
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The securityName which identifies the Principal on
whose behalf SNMP messages will be generated using
this entry."
::= { snmpTargetEntry 5 }
snmpTargetSecurityLevel OBJECT-TYPE
SYNTAX SnmpSecurityLevel
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The Level of Security to be used when generating
SNMP messages using this entry."
::= { snmpTargetEntry 6 }
snmpTargetRetryCount OBJECT-TYPE
SYNTAX Integer32 (0..2147483647)
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This object specifies a default number of retries to be
attempted when a response is not received for a generated
message. The number of retries is an indication of how
important delivery of a particular message is considered.
An application may provide its own retry count, in which
case the value of this object is ignored."
DEFVAL { 3 }
::= { snmpTargetEntry 7 }
snmpTargetStorageType OBJECT-TYPE
SYNTAX StorageType
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The storage type for this conceptual row."
::= { snmpTargetEntry 8 }
snmpTargetRowStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
Expires January 1998 [Page 36]
Internet-Draft SNMPv3 Applications August 1997
STATUS current
DESCRIPTION
"The status of this conceptual row.
Until instances of all corresponding columns are
appropriately configured, the value of the
corresponding instance of the snmpTargetRowStatus
column is 'notReady'.
In particular, a newly created row cannot be made
active until the corresponding
snmpTargetMessageProcessingModel,
snmpTargetSecurityModel, snmpTargetSecurityName,
and snmpTargetSecurityLevel have all been set."
::= { snmpTargetEntry 9 }
snmpTargetDefaultRetryAlgorithm OBJECT-TYPE
SYNTAX INTEGER {
constant(1),
linearBackOff(2),
exponentialBackOff(3),
randomBackOff(4)
}
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This object specifies a default algorithm to be used
when adjusting timeout times when retransmitting a
request whose response was not received in a timely
manner. An application may provide its own
retransmission algorithm, in which case the value of
this object is ignored.
Can we really predict all the algorithms that people might want to use?
There are alternatives to making this be an enumerated integer.
One alternative is to make it be a set of 6 parameters for a quadratic
equation which would be used to recalculate retry intervals, i.e.,:
interval(n) = ((A1 / A2) * interval(n-1) * interval(n-1)) +
((B1 / B2) * interval(n-1)) +
(C1 / C2)
The advantage to this is that a manager can define a wide range of
algorithms, and the agent does not need to support a specific set
of algorithms.
Another alternative is to identify retransmission algorithms by OID rather
Expires January 1998 [Page 37]
Internet-Draft SNMPv3 Applications August 1997
than by integer. The advantage to using OIDs is that we can define
additional algorithms later. If we do this, we can either make this object
be an OID, or we can have a table that maps the OIDs to integers, and have
the value of this object point at one of the entries in the mapping table.
The advantage to a mapping table is that it allows a manager to discover
what algorithms an agent supports.
"
::= { snmpTargetObjects 4 }
-- ------------------------------------------------------------------
--
-- Conformance information
--
-- ------------------------------------------------------------------
snmpTargetCompliances OBJECT IDENTIFIER ::=
{ snmpTargetConformance 1 }
snmpTargetGroups OBJECT IDENTIFIER ::=
{ snmpTargetConformance 2 }
-- ------------------------------------------------------------------
--
-- Compliance statements
--
-- ------------------------------------------------------------------
snmpTargetBasicGroup OBJECT-GROUP
OBJECTS {
snmpTargetAddressSpinLock,
snmpTargetAddrTDomain,
snmpTargetAddrTAddress,
snmpTargetAddrStorageType,
snmpTargetAddrRowStatus,
snmpTargetAddrName,
snmpTargetMessageProcessingModel,
snmpTargetSecurityModel,
snmpTargetSecurityName,
snmpTargetSecurityLevel,
snmpTargetStorageType,
snmpTargetRowStatus
}
STATUS current
DESCRIPTION
"A collection of objects providing basic remote
configuration of management targets."
::= { snmpTargetGroups 1 }
Expires January 1998 [Page 38]
Internet-Draft SNMPv3 Applications August 1997
snmpTargetResponseGroup OBJECT-GROUP
OBJECTS {
snmpTargetAddrTimeout,
snmpTargetRetryCount,
snmpTargetDefaultRetryAlgorithm
}
STATUS current
DESCRIPTION
"A collection of objects providing remote configuration
of management targets for applications which generate
SNMP messages for which a response message would be
expected."
::= { snmpTargetGroups 2 }
END
Expires January 1998 [Page 39]
Internet-Draft SNMPv3 Applications August 1997
5.2. The Notification MIB
This MIB contains three tables. The first table, the
snmpNotifyTargetTable, simply augments the snmpTargetTable with a
single object which is used to determine whether a particular
management target should be used for generating notifications, and
the type of notification to be generated. The second table sparsely
augments the snmpNotifyTargetTable with a single object. This object
is used to associate a set of filters with a particular management
target. The third table defines filters which are used to limit the
number of notifications which are generated using particular
management targets.
5.2.1. Definitions
SNMPV3-NOTIFICATION-MIB DEFINITIONS ::= BEGIN
IMPORTS
MODULE-IDENTITY,
OBJECT-TYPE,
OBJECT-IDENTITY,
Integer32
FROM SNMPv2-SMI
TDomain,
TAddress,
TruthValue,
TimeInterval,
RowStatus,
StorageType
FROM SNMPv2-TC
SnmpSecurityModel,
SnmpSecurityLevel,
SnmpAdminString
FROM SNMP-FRAMEWORK-MIB
snmpTargetEntry,
snmpTargetName
FROM SNMPV3-TARGET-MIB
MODULE-COMPLIANCE,
OBJECT-GROUP
FROM SNMPv2-CONF;
snmpNotificationMIB MODULE-IDENTITY
Expires January 1998 [Page 40]
Internet-Draft SNMPv3 Applications August 1997
LAST-UPDATED "9707140000Z"
ORGANIZATION "IETF SNMPv3 Working Group"
CONTACT-INFO
"David B. Levi
SNMP Research, Inc.
3001 Kimberlin Heights Road
Knoxville, TN 37920-9716
Tel: +1 423 573 1434
E-mail: levi@snmp.com
Paul Meyer
Secure Computing Corporation
2675 Long Lake Road
Roseville, MN 55113
Tel: +1 612 628 1592
E-mail: paul_meyer@securecomputing.com
Bob Stewart
Cisco Systems, Inc.
170 West Tasman Drive
San Jose, CA 95134-1706
Tel: +1 603 654 6923
E-mail: bstewart@cisco.com"
DESCRIPTION
"This MIB module defines a MIB which provides mechanisms
to remotely configure management targets used by an
SNMPv3 entity."
REVISION "9707140000Z"
DESCRIPTION
"The initial revision."
::= { snmpModules 12 } -- TBD
snmpNotifyObjects OBJECT IDENTIFIER ::=
{ snmpNotificationMIB 1 }
snmpNotifyConformance OBJECT IDENTIFIER ::=
{ snmpNotificationMIB 2 }
-- ------------------------------------------------------------------
--
-- The snmpNotifyObjects group
--
-- ------------------------------------------------------------------
snmpNotifyTargetTable OBJECT-TYPE
SYNTAX SEQUENCE OF SnmpV3NotifyTargetEntry
MAX-ACCESS not-accessible
STATUS current
Expires January 1998 [Page 41]
Internet-Draft SNMPv3 Applications August 1997
DESCRIPTION
"This table is used to select management targets which should
receive notifications, as well as the type of notification
which should be sent to each selected management target."
::= { snmpNotifyObjects 1 }
snmpNotifyTargetEntry OBJECT-TYPE
SYNTAX SnmpV3NotifyTargetEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in this table determines whether the corresponding
entry in the snmpTargetTable should be used when generating
notifications."
AUGMENTS { snmpTargetEntry }
::= { snmpNotifyTargetTable 1 }
SnmpV3NotifyTargetEntry ::= SEQUENCE {
snmpNotifyTargetType INTEGER
}
snmpNotifyTargetType OBJECT-TYPE
SYNTAX INTEGER {
trap(1),
inform(2),
nothing(3)
}
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This object determines whether a particular entry in
the snmpTargetTable should be used when generating
notifications. It also determines the type of
notifications generated using a particular entry.
If the value of this object is trap(1),
then the entry will be used to generate messages
containing SNMPv2-Trap PDUs. If the value is
inform(2), then the entry will be used to generate
messages containing Inform PDUs. If the value is
nothing(3), then the entry is not used to generate
notifications.
Note that the default value for this object is
nothing(3). This ensures that if an entry is created
for a purpose other than notification generation,
whoever creates the row need not do anything special
to prevent the use of the entry when generating
Expires January 1998 [Page 42]
Internet-Draft SNMPv3 Applications August 1997
notifications.
Also note that if an SNMP entity only supports
generation of traps (and not informs), then this
object need not be supported, and its value is
assumed to be trap(1)."
DEFVAL { nothing }
::= { snmpNotifyTargetEntry 1 }
snmpNotifyFilterProfileTable OBJECT-TYPE
SYNTAX SEQUENCE OF SnmpV3NotifyFilterProfileEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table is used to select management targets which
should receive notifications, as well as the type of
notification which should be sent to each selected
management target."
::= { snmpNotifyObjects 2 }
snmpNotifyFilterProfileEntry OBJECT-TYPE
SYNTAX SnmpV3NotifyFilterProfileEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in this table indicates the name of the filter
profile to be used when generating notifications using
the corresponding entry in the snmpTargetTable."
INDEX { snmpTargetName }
::= { snmpNotifyFilterProfileTable 1 }
SnmpV3NotifyFilterProfileEntry ::= SEQUENCE {
snmpNotifyFilterProfileName SnmpAdminString
snmpNotifyFilterProfileStorageType StorageType
snmpNotifyFilterProfileRowStatus RowStatus
}
snmpNotifyFilterProfileName OBJECT-TYPE
SYNTAX SnmpAdminString
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The name of the filter profile to be used when generating
notifications using the corresponding entry in the
snmpTargetTable."
::= { snmpNotifyFilterProfileEntry 1 }
Expires January 1998 [Page 43]
Internet-Draft SNMPv3 Applications August 1997
snmpNotifyFilterProfileStorageType OBJECT-TYPE
SYNTAX StorageType
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The storage type of this conceptual row."
::= { snmpNotifyFilterProfileEntry 2 }
snmpNotifyFilterProfileRowStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The status of this conceptual row."
::= { snmpNotifyFilterProfileEntry 3 }
snmpNotifyFilterTable OBJECT-TYPE
SYNTAX SEQUENCE OF SnmpV3NotifyFilterEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The table of filter profiles. Filter profiles are used
to determine whether particular management targets should
receive particular notifications.
When a notification is generated, it must be compared
with the filters associated with each management target
which is configured to receive notifications. If the
notification is matched by a filter, it is not sent to
the management target with which the filter is
associated."
::= { snmpNotifyObjects 3 }
snmpNotifyFilterEntry OBJECT-TYPE
SYNTAX SnmpV3NotifyFilterEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An element of a filter profile."
INDEX { snmpNotifyFilterProfileName,
IMPLIED snmpNotifyFilterSubtree }
::= { snmpNotifyFilterTable 1 }
SnmpV3NotifyFilterEntry ::= SEQUENCE {
snmpNotifyFilterSubtree OBJECT IDENTIFIER,
snmpNotifyFilterMask OCTET STRING,
snmpNotifyFilterType INTEGER,
Expires January 1998 [Page 44]
Internet-Draft SNMPv3 Applications August 1997
snmpNotifyFilterStorageType StorageType,
snmpNotifyFilterRowStatus RowStatus
}
snmpNotifyFilterSubtree OBJECT-TYPE
SYNTAX OBJECT IDENTIFIER
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The MIB subtree which, when combined with the corresponding
instance of snmpNotifyFilterMask, defines a family of
subtrees which are included in or excluded from the
filter profile."
::= { snmpNotifyFilterEntry 1 }
snmpNotifyFilterMask OBJECT-TYPE
SYNTAX OCTET STRING (SIZE(0..16))
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The bit mask which, in combination with the corresponding
instance of snmpNotifyFilterSubtree, defines a family of
subtrees which are included in or excluded from the
filter profile.
Each bit of this bit mask corresponds to a
sub-identifier of snmpNotifyFilterSubtree, with the
most significant bit of the i-th octet of this octet
string value (extended if necessary, see below)
corresponding to the (8*i - 7)-th sub-identifier, and
the least significant bit of the i-th octet of this
octet string corresponding to the (8*i)-th
sub-identifier, where i is in the range 1 through 16.
Each bit of this bit mask specifies whether or not
the corresponding sub-identifiers must match when
determining if an OBJECT IDENTIFIER matches this
family of filter subtrees; a '1' indicates that an
exact match must occur; a '0' indicates 'wild card',
i.e., any sub-identifier value matches.
Thus, the OBJECT IDENTIFIER X of an object instance
is contained in a family of filter subtrees if, for
each sub-identifier of the value of
snmpNotifyFilterSubtree, either:
the i-th bit of snmpNotifyFilterMask is 0, or
Expires January 1998 [Page 45]
Internet-Draft SNMPv3 Applications August 1997
the i-th sub-identifier of X is equal to the i-th
sub-identifier of the value of
snmpNotifyFilterSubtree.
If the value of this bit mask is M bits long and
there are more than M sub-identifiers in the
corresponding instance of snmpNotifyFilterSubtree,
then the bit mask is extended with 1's to be the
required length.
Note that when the value of this object is the
zero-length string, this extension rule results in
a mask of all-1's being used (i.e., no 'wild card'),
and the family of filter subtrees is the one
subtree uniquely identified by the corresponding
instance of snmpNotifyFilterSubtree."
DEFVAL { ''H }
::= { snmpNotifyFilterEntry 2 }
snmpNotifyFilterType OBJECT-TYPE
SYNTAX INTEGER {
included(1),
excluded(2)
}
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This object indicates whether the family of filter subtrees
defined by this entry are included in or excluded from a
filter."
DEFVAL { included }
::= { snmpNotifyFilterEntry 3 }
snmpNotifyFilterStorageType OBJECT-TYPE
SYNTAX StorageType
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The storage type of this conceptual row."
::= { snmpNotifyFilterEntry 4 }
snmpNotifyFilterRowStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The status of this conceptual row."
Expires January 1998 [Page 46]
Internet-Draft SNMPv3 Applications August 1997
::= { snmpNotifyFilterEntry 5 }
-- ------------------------------------------------------------------
--
-- Conformance information
--
-- ------------------------------------------------------------------
snmpNotifyCompliances OBJECT IDENTIFIER ::=
{ snmpNotifyConformance 1 }
snmpNotifyGroups OBJECT IDENTIFIER ::=
{ snmpNotifyConformance 2 }
-- ------------------------------------------------------------------
--
-- Compliance statements
--
-- ------------------------------------------------------------------
snmpNotifyBasicCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"The compliance statement for minimal SNMP entities which
implement only SNMP Traps and read-create operations on
only the snmpTargetAddrTable."
MODULE SNMPV3-TARGET-MIB
MANDATORY-GROUPS { snmpTargetBasicGroup }
OBJECT snmpTargetAddrName
MIN-ACCESS read-only
DESCRIPTION
"Read-write and read-create access are not required."
OBJECT snmpTargetMessageProcessingModel
MIN-ACCESS read-only
DESCRIPTION
"Read-write and read-create access are not required."
OBJECT snmpTargetSecurityModel
MIN-ACCESS read-only
DESCRIPTION
"Read-write and read-create access are not required."
OBJECT snmpTargetSecurityName
MIN-ACCESS read-only
DESCRIPTION
"Read-write and read-create access are not required."
Expires January 1998 [Page 47]
Internet-Draft SNMPv3 Applications August 1997
OBJECT snmpTargetSecurityLevel
MIN-ACCESS read-only
DESCRIPTION
"Read-write and read-create access are not required."
OBJECT snmpTargetStorageType
SYNTAX INTEGER {
readOnly(5)
}
MIN-ACCESS read-only
DESCRIPTION
"Read-write and read-create access are not required.
Support of the values other(1), volatile(2),
nonVolatile(3), and permanent(4) is not required."
OBJECT snmpTargetRowStatus
SYNTAX INTEGER {
active(1)
}
MIN-ACCESS read-only
DESCRIPTION
"Read-write and read-create access are not required.
Support of the values notInService(2), notReady(3),
createAndGo(4), createAndWait(5), and destroy(6) is
not required."
::= { snmpNotifyCompliances 1 }
snmpNotifyBasicWithFiltersCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"The compliance statement for SNMP entities which implement
SNMP Traps with filtering, and read-create operations on
all related tables."
MODULE SNMPV3-TARGET-MIB
MANDATORY-GROUPS { snmpTargetBasicGroup }
MODULE -- This Module
MANDATORY-GROUPS { snmpNotifyFilterGroup }
::= { snmpNotifyCompliances 2 }
snmpNotifyFullCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"The compliance statement for SNMP entities which either
implement only SNMP Informs, or both SNMP Traps and SNMP
Informs, plus filtering and read-create operations on
all related tables."
Expires January 1998 [Page 48]
Internet-Draft SNMPv3 Applications August 1997
MODULE SNMPV3-TARGET-MIB
MANDATORY-GROUPS { snmpTargetBasicGroup,
snmpTargetResponseGroup }
MODULE -- This Module
MANDATORY-GROUPS { snmpNotifyTypeGroup,
snmpNotifyFilterGroup }
::= { snmpNotifyCompliances 3 }
snmpNotifyTypeGroup OBJECT-GROUP
OBJECTS {
snmpNotifyTargetType
}
STATUS current
DESCRIPTION
"An object for selecting which management targets are used
for generating notifications, and the type of notification
to be generated for each selected management target."
::= { snmpNotifyGroups 1 }
snmpNotifyFilterGroup OBJECT-GROUP
OBJECTS {
snmpNotifyFilterProfileName,
snmpNotifyFilterMask,
snmpNotifyFilterType,
snmpNotifyFilterStorageType,
snmpNotifyFilterRowStatus
}
STATUS current
DESCRIPTION
"A collection of objects providing remote configuration of
management targets, including row creation in the
snmpTargetTable."
::= { snmpNotifyGroups 3 }
END
Expires January 1998 [Page 49]
Internet-Draft SNMPv3 Applications August 1997
5.3. The Proxy MIB
The MIB contains a single scalar and a single table. The scalar
object, snmpProxyNextIndex, is used by managers when creating new
entries in the table. The table, snmpProxyTable, is used to define
translations between management targets for use when forwarding
messages.
5.3.1. Definitions
SNMPV3-PROXY-MIB DEFINITIONS ::= BEGIN
IMPORTS
MODULE-IDENTITY,
OBJECT-TYPE,
OBJECT-IDENTITY,
Integer32
FROM SNMPv2-SMI
TDomain,
TAddress,
TruthValue,
TimeInterval,
RowStatus,
StorageType
FROM SNMPv2-TC
SnmpEngineID,
SnmpSecurityModel,
SnmpSecurityLevel,
SnmpAdminString
FROM SNMP-FRAMEWORK-MIB
MODULE-COMPLIANCE,
OBJECT-GROUP
FROM SNMPv2-CONF;
snmpProxyMIB MODULE-IDENTITY
LAST-UPDATED "9706140000Z"
ORGANIZATION "IETF SNMPv3 Working Group"
CONTACT-INFO
"David B. Levi
SNMP Research, Inc.
3001 Kimberlin Heights Road
Knoxville, TN 37920-9716
Tel: +1 423 573 1434
Expires January 1998 [Page 50]
Internet-Draft SNMPv3 Applications August 1997
E-mail: levi@snmp.com
Paul Meyer
Secure Computing Corporation
2675 Long Lake Road
Roseville, MN 55113
Tel: +1 612 628 1592
E-mail: paul_meyer@securecomputing.com
Bob Stewart
Cisco Systems, Inc.
170 West Tasman Drive
San Jose, CA 95134-1706
Tel: +1 603 654 6923
E-mail: bstewart@cisco.com"
DESCRIPTION
"This MIB module defines a MIB which provides mechanisms to
remotely configure the parameters used by an SNMPv3 entity
for the generation of notifications."
REVISION "9707140000Z"
DESCRIPTION
"The initial revision."
::= { snmpModules 13 } -- TBD
snmpProxyObjects OBJECT IDENTIFIER ::= { snmpProxyMIB 1 }
snmpProxyConformance OBJECT IDENTIFIER ::= { snmpProxyMIB 2 }
-- ------------------------------------------------------------------
--
-- The snmpProxyObjects group
--
-- ------------------------------------------------------------------
snmpProxyNextIndex OBJECT-TYPE
SYNTAX Integer32 (1..2147483647)
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"This object is used to facilitate creation of rows in the
snmpProxyTable. Its value when read is equal to an unused
value of snmpProxyIndex. When a manager wishes to create
a row in the snmpProxyTable, it should first retrieve the
value of this object, and then set the instance of
snmpProxyRowStatus whose snmpProxyIndex value is
equal to the retrieved value to either createAndWait or
createAndGo."
::= { snmpProxyObjects 1 }
Expires January 1998 [Page 51]
Internet-Draft SNMPv3 Applications August 1997
snmpProxyTable OBJECT-TYPE
SYNTAX SEQUENCE OF SnmpV3ProxyEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The table of translation parameters used by proxy forwarder
applications for forwarding SNMP messages."
::= { snmpProxyObjects 2 }
snmpProxyEntry OBJECT-TYPE
SYNTAX SnmpV3ProxyEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A set of translation parameters used by a proxy forwarder
application for forwarding SNMP messages."
INDEX { snmpProxyIndex }
::= { snmpProxyTable 1 }
SnmpV3ProxyEntry ::= SEQUENCE {
snmpProxyIndex Integer32,
snmpProxyType INTEGER,
snmpProxyContextEngineID SnmpEngineID,
snmpProxyContextName SnmpAdminString,
snmpProxyTargetIn SnmpAdminString,
snmpProxyTargetOut SnmpAdminString,
snmpProxyStorageType StorageType,
snmpProxyRowStatus RowStatus
}
snmpProxyIndex OBJECT-TYPE
SYNTAX Integer32 (1..2147483647)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The locally arbitrary, but unique identifier associated
with this snmpProxyEntry."
::= { snmpProxyEntry 1 }
snmpProxyType OBJECT-TYPE
SYNTAX INTEGER {
read(1),
write(2),
trap(3),
inform(4)
}
MAX-ACCESS not-accessible
Expires January 1998 [Page 52]
Internet-Draft SNMPv3 Applications August 1997
STATUS current
DESCRIPTION
"The type of message that may be forwarded using
the translation parameters defined by this entry."
::= { snmpProxyEntry 2 }
snmpProxyContextEngineID OBJECT-TYPE
SYNTAX SnmpEngineID
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The contextEngineID contained in messages that
may be forwarded using the translation parameters
defined by this entry."
::= { snmpProxyEntry 3 }
snmpProxyContextName OBJECT-TYPE
SYNTAX SnmpAdminString
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The contextName contained in messages that may be
forwarded using the translation parameters defined
by this entry."
::= { snmpProxyEntry 4 }
snmpProxyTargetIn OBJECT-TYPE
SYNTAX SnmpAdminString
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This object selects a set of management targets defined
in the snmpTargetTable (in the SNMPV3-TARGET-MIB)."
::= { snmpProxyEntry 5 }
snmpProxyTargetOut OBJECT-TYPE
SYNTAX SnmpAdminString
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"This object selects a management target defined in the
snmpTargetTable (in the SNMPV3-TARGET-MIB). Only the
first transport address/domain as selected by the
snmpTargetAddrName object is identified by
snmpProxyTargetOut (i.e. the lexicographically smallest
instance in the snmpTargetAddrTable whose
snmpTargetAddrName is equal to the snmpTargetAddrName
Expires January 1998 [Page 53]
Internet-Draft SNMPv3 Applications August 1997
object is used for proxy forwarding)."
::= { snmpProxyEntry 6 }
snmpProxyStorageType OBJECT-TYPE
SYNTAX StorageType
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The storage type of this conceptual row."
::= { snmpProxyEntry 7 }
snmpProxyRowStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The status of this conceptual row."
::= { snmpProxyEntry 8 }
-- ------------------------------------------------------------------
--
-- Conformance information
--
-- ------------------------------------------------------------------
snmpProxyCompliances OBJECT IDENTIFIER ::=
{ snmpProxyConformance 1 }
snmpProxyGroups OBJECT IDENTIFIER ::=
{ snmpProxyConformance 2 }
-- ------------------------------------------------------------------
--
-- Compliance statements
--
-- ------------------------------------------------------------------
snmpProxyCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"The compliance statement for SNMP entities which include
a proxy forwarding application."
MODULE SNMPV3-TARGET-MIB
MANDATORY-GROUPS { snmpTargetBasicGroup,
snmpTargetResponseGroup }
MODULE -- This Module
MANDATORY-GROUPS { snmpProxyGroup }
::= { snmpProxyCompliances 1 }
Expires January 1998 [Page 54]
Internet-Draft SNMPv3 Applications August 1997
snmpProxyGroup OBJECT-GROUP
OBJECTS {
snmpProxyNextIndex,
snmpProxyType,
snmpProxyContextEngineID,
snmpProxyContextName,
snmpProxyTargetIn,
snmpProxyTargetOut,
snmpProxyStorageType,
snmpProxyRowStatus
}
STATUS current
DESCRIPTION
"A collection of objects providing remote configuration of
management target translation parameters for use by
proxy forwarder applications."
::= { snmpProxyGroups 3 }
END
Expires January 1998 [Page 55]
Internet-Draft SNMPv3 Applications August 1997
6. Identification of Management Targets in Notification Originators
This section describes the mechanisms used by a notification
originator application when using the MIB described in this document
to determine the set of management targets to be used when generating
a notification.
A notification originator uses the snmpTargetTable to find the groups
of management targets to be used for generating notifications. Each
active entry in this table, for which the corresponding value of
snmpNotifyTargetType is trap(1) or inform(2), identifies a group of
management targets to be used for notification generation. Note that
if an SNMP Entity's only use of the snmpTargetTable is for generation
of messages containing SNMPv2-Trap PDUs, the snmpNotifyTargetType
object is not required to be implemented. In this case, the value of
snmpNotifyTargetType is always assumed to be trap(1).
Each such entry contains a pointer to the snmpTargetAddrTable
(snmpTargetAddrName). This pointer identifies zero or more transport
endpoints, defined in the snmpTargetAddrTable. If there are zero
transport endpoints identified, the group of management targets is
empty, and should be ignored. Otherwise, each transport endpoint,
paired with the SNMP information from the snmpTargetTable, identifies
a single management target within the group.
The decision as to whether a notification should contain an SNMPv2-
Trap or Inform PDU is determined by the value of the
snmpNotifyTargetType object. If the value of this object is trap(1),
the notification should contain an SNMPv2-Trap PDU. If the value of
this object is inform(2), then the notification should contain an
Inform PDU, and the number of retries for the Inform is the value of
snmpTargetRetryCount. Note that the exception to these rules is when
the snmpTargetMessageProcessingModel object indicates SNMPv1. In
this case, the notification is sent as a Trap if the value of
snmpNotifyTargetType is either trap(1) or inform(2).
Expires January 1998 [Page 56]
Internet-Draft SNMPv3 Applications August 1997
7. Notification Filtering
This section describes the mechanisms used by a notification
originator application when using the MIB described in this document
to filter generation of notifications.
A notification originator uses the snmpNotifyFilterTable to filter
notifications. A notification filter profile may be associated with
a group of management targets identified by a particular entry in the
snmpTargetTable. The associated filter profile is identified by an
entry in the snmpNotifyFilterProfileTable whose index is equal to the
index of the entry in the snmpTargetTable. If no such entry exists
in the snmpNotifyFilterProfileTable, no filtering is performed for
that group of management targets.
If such an entry does exist, the value of snmpNotifyFilterProfileName
of the entry is compared with the corresponding portion of the index
of all active entries in the snmpNotifyFilterTable. All such entries
for which this comparison results in an exact match are used for
filtering the notification. If no such entries exist, no filtering
is performed, and the notification may be sent to all management
targets in the group.
Otherwise, if matching entries do exist, the notification may be sent
if the NOTIFICATION-TYPE OBJECT IDENTIFIER of the notification (this
is the value of the element of the variable bindings whose name is
snmpTrapOID.0, i.e. the second variable binding), and all of the
object instances to be included in the variable-bindings of the
notification, are not specifically excluded by the matching entries.
Each set of snmpNotifyFilterTable entries is divided into two
collections of filter subtrees: the included filter subtrees, and
the excluded filter subtrees. The snmpNotifyFilterType object
defines the collection to which each matching entry belongs.
To determine whether a particular notification name or object
instance is excluded by the set of matching entries, compare the
notification name's or object instance's OBJECT IDENTIFIER with each
of the matching entries. If none match, then the notification name
or object instance is considered excluded, and the notification
should not be sent to this group of management targets. If one or
more match, then the notification name or object instance is included
or excluded, according to the value of snmpNotifyFilterType in the
entry whose value of snmpNotifyFilterSubtree has the most sub-
identifiers. If multiple entries match and have the same number of
sub-identifiers, then the lexicographically greatest instance of
snmpNotifyFilterType among those which match determines the inclusion
Expires January 1998 [Page 57]
Internet-Draft SNMPv3 Applications August 1997
or exclusion.
A notification name's or object instance's OBJECT IDENTIFIER X
matches an entry in the snmpNotifyFilterTable when the number of
sub-identifiers in X is at least as many as in the value of
snmpNotifyFilterSubtree for the entry, and each sub-identifier in the
value of snmpNotifyFilterSubtree matches its corresponding sub-
identifier in X. Two sub-identifiers match either if the
corresponding bit of snmpNotifyFilterMask is zero (the 'wild card'
value), or if the two sub-identifiers are equal.
Expires January 1998 [Page 58]
Internet-Draft SNMPv3 Applications August 1997
8. Management Target Translation in Proxy Forwarder Applications
This section describes the mechanisms used by a proxy forwarder
application when using the MIB described in this document to
translate incoming management target information into outgoing
management target information for the purpose of forwarding messages.
There are actually two mechanisms a proxy forwarder may use, one for
forwarding request messages, and one for forwarding notification
messages.
8.1. Management Target Translation for Request Forwarding
When forwarding request messages, the proxy forwarder will select a
single entry in the snmpProxyTable. To select this entry, it will
perform the following comparisons:
- The snmpProxyType must be read(1) if the request is a Get,
GetNext, or GetBulk request. The snmpProxyType must be
write(2) if the request is a Set request.
- The contextEngineId and contextName must equal the
snmpProxyContextEngineID and snmpProxyContextName objects.
- The snmpProxyTargetIn object identifies an entry in the
snmpTargetTable. The snmp version, securityLevel, security
model, and securityName must match the values of
snmpTargetMessageProcessingModel, snmpTargetSecurityModel,
snmpTargetSecurityName, and snmpTargetSecurityLevel of the
identified entry in the snmpTargetTable.
- The identified entry in the snmpTargetTable contains a pointer
to the snmpTargetAddrTable. This pointer refers to zero or
more entries in the snmpTargetAddrTable. If there are no such
entries, this comparison need not succeed. If there is at
least one such entry, the transport domain and address from
which the request was received must match the
snmpTargetAddrTDomain and snmpTargetAddrTAddress values of at
least one of these entries.
There may be multiple entries in the snmpProxyTable for which these
comparisons succeed. The entry whose snmpProxyIndex has the smallest
value and for which the comparisons succeed will be selected by the
proxy forwarder.
The outgoing management information is identified by the value of the
snmpProxyTargetOut object of the selected entry. This object
Expires January 1998 [Page 59]
Internet-Draft SNMPv3 Applications August 1997
identifies an entry in the snmpTargetTable. The
snmpTargetMessageProcessingModel, snmpTargetSecurityModel,
snmpTargetSecurityName, and snmpTargetSecurityLevel of this entry are
used as one part of the management target. The other part of the
management target is a transport endpoint, which is identified by the
value of the snmpTargetAddrName member of the snmpTargetTable entry.
This value may identify zero or more entries in the
snmpTargetAddrTable. If there are no entries identified, the
selected snmpProxyTable entry is invalid, and the proxy forwarder
should look for another snmpProxyTable entry to use. Otherwise, the
snmpTargetAddrTable entry with the smallest value of
snmpTargetAddrSubIndex is used as the transport endpoint.
8.2. Management Target Translation for Notification Forwarding
When forwarding notification messages, the proxy forwarder will
select multiple entries in the snmpProxyTable. To select these
entries, it will perform the following comparisons:
- The snmpProxyType must be trap(3) if the notification is a
Trap. The snmpProxyType must be inform(4) if the request is
an Inform.
- The contextEngineId and contextName must equal the
snmpProxyContextEngineID and snmpProxyContextName objects.
- The snmpProxyTargetIn object identifies an entry in the
snmpTargetTable. The snmp version, securityLevel, security
model, and securityName must match the values of
snmpTargetMessageProcessingModel, snmpTargetSecurityModel,
snmpTargetSecurityName, and snmpTargetSecurityLevel of the
identified entry in the snmpTargetTable.
- The identified entry in the snmpTargetTable contains a pointer
to the snmpTargetAddrTable. This pointer refers to zero or
more entries in the snmpTargetAddrTable. If there are no such
entries, this comparison need not succeed. If there is at
least one such entry, the transport domain and address from
which the request was received must match the
snmpTargetAddrTDomain and snmpTargetAddrTAddress values of at
least one of these entries.
All entries for which these comparisons succeed are selected. The
set of outgoing management targets to be used for generating
forwarded notifications is identified by the value of the
snmpProxyTargetOut object of all selected entries. These values
Expires January 1998 [Page 60]
Internet-Draft SNMPv3 Applications August 1997
identify entries in the snmpTargetTable. All such entries are used
for generating forwarded notifications. The snmpTargetNotification
object is ignored when generating forwarded notifications in a proxy
forwarder application.
Expires January 1998 [Page 61]
Internet-Draft SNMPv3 Applications August 1997
9. Security Considerations
Should have some discussion about notification generation
applications which provide variable bindings when generating a
notification, rather than omitting them and letting the engine get
them from the LPM. Applications that do this should be careful not
to disclose anything that they shouldn't.
10. Editor's Address
David B. Levi
SNMP Research, Inc.
3001 Kimberlin Heights Road
Knoxville, TN 37920-9716
U.S.A.
Phone: +1 423 573 1434
EMail: levi@snmp.com
Paul Meyer
Secure Computing Corporation
2675 Long Lake Road
Roseville, MN 55113
U.S.A.
Phone: +1 612 628 1592
EMail: paul_meyer@securecomputing.com
Bob Stewart
Cisco Systems, Inc.
170 West Tasman Drive
San Jose, CA 95134-1706
U.S.A.
Phone: +1 603 654 6923
EMail: bstewart@cisco.com
11. Acknowledgments
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:
Dave Battle (SNMP Research, Inc.)
Uri Blumenthal (IBM T.J. Watson Research Center)
Jeff Case (SNMP Research, Inc.)
Expires January 1998 [Page 62]
Internet-Draft SNMPv3 Applications August 1997
John Curran (BBN)
T. Max Devlin (Hi-TECH Connections)
John Flick (Hewlett Packard)
David Harrington (Cabletron Systems Inc.)
N.C. Hien (IBM T.J. Watson Research Center)
Dave Levi (SNMP Research, Inc.)
Louis A Mamakos (UUNET Technologies Inc.)
Paul Meyer (Secure Computing Corporation)
Keith McCloghrie (Cisco Systems)
Russ Mundy (Trusted Information Systems, Inc.)
Bob Natale (ACE*COMM Corporation)
Mike O'Dell (UUNET Technologies Inc.)
Dave Perkins (DeskTalk)
Peter Polkinghorne (Brunel University)
Randy Presuhn (BMC Software, Inc.)
David Reid (SNMP Research, Inc.)
Shawn Routhier (Epilogue)
Juergen Schoenwaelder (TU Braunschweig)
Bob Stewart (Cisco Systems)
Bert Wijnen (IBM T.J. Watson Research Center)
The document is based on recommendations of the IETF Security and
Administrative Framework Evolution for SNMP Advisory Team. Members of
that Advisory Team were:
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)
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*:
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)
Expires January 1998 [Page 63]
Internet-Draft SNMPv3 Applications August 1997
Glenn W. Waters (Bell-Northern Research Ltd.)
Expires January 1998 [Page 64]
Internet-Draft SNMPv3 Applications August 1997
12. References
[RFC1157]
Case, J., Fedor, M., Schoffstall, M., and J. Davin, "Simple Network
Management Protocol", RFC 1157, SNMP Research, Performance Systems
International, Performance Systems International, MIT Laboratory
for Computer Science, May 1990.
[RFC1213]
McCloghrie, K., and M. Rose, Editors, "Management Information Base
for Network Management of TCP/IP-based internets: MIB-II", STD 17,
RFC 1213, Hughes LAN Systems, Performance Systems International,
March 1991.
[RFC1902]
SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M., and S.
Waldbusser, "Structure of Management Information for Version 2 of
the Simple Network Management Protocol (SNMPv2)", RFC1902, SNMP
Research,Inc., Cisco Systems, Inc., Dover Beach Consulting, Inc.,
International Network Services, January 1996.
[RFC1903]
SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M., and S.
Waldbusser, "Textual Conventions for Version 2 of the Simple
Network Management Protocol (SNMPv2)", RFC1903, SNMP Research,Inc.,
Cisco Systems, Inc., Dover Beach Consulting, Inc., International
Network Services, January 1996.
[RFC1905]
SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M., and S.
Waldbusser, "Protocol Operations for Version 2 of the Simple
Network Management Protocol (SNMPv2)", RFC1905, SNMP Research,Inc.,
Cisco Systems, Inc., Dover Beach Consulting, Inc., International
Network Services, January 1996.
[RFC1907]
SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M., and S.
Waldbusser, "Management Information Base for Version 2 of the
Simple Network Management Protocol (SNMPv2)", RFC1905, SNMP
Research,Inc., Cisco Systems, Inc., Dover Beach Consulting, Inc.,
International Network Services, January 1996.
[RFC1908]
SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M., and S.
Waldbusser, "Coexistence between Version 1 and Version 2 of the
Internet-standard Network Management Framework", RFC1905, SNMP
Research,Inc., Cisco Systems, Inc., Dover Beach Consulting, Inc.,
Expires January 1998 [Page 65]
Internet-Draft SNMPv3 Applications August 1997
International Network Services, January 1996.
[SNMP-ARCH]
The SNMPv3 Working Group, Harrington, D., Wijnen, B., "An
Architecture for Describing SNMP Management Frameworks", draft-
ietf-snmpv3-next-gen-arch-04.txt, August 1997.
[SNMP-MPD]
The SNMPv3 Working Group, Case, J., Harrington, D., Wijnen, B.,
"Message Processing and Dispatching for the Simple Network
Management Protocol (SNMP)", draft-ietf-snmpv3-mpc-03.txt, August
1997.
[SNMP-ACM]
The SNMPv3 Working Group, Wijnen, B., Presuhn, R., McClogrie, K.,
"View-based Access Control Model for the Simple Network Management
Protocol (SNMP)", draft-ietf-snmpv3-acm-02.txt, August 1997.
APPENDIX A - Trap Configuration Example
This section describes an example configuration for a Notification
Generator application which implements the
snmpNotifyMinimalCompliance level. The example configuration
specifies that the Notification Generator should send notifications
to 3 separate managers, using authentication and no privacy for the
first 2 managers, and using both authentication and privacy for the
third manager.
The configuration consists of three rows in the snmpTargetAddrTable,
and two rows in the snmpTargetTable.
* snmpTargetAddrName = "AuthNoPrivTargetAddresses"
* snmpTargetAddrSubIndex = 1
snmpTargetAddrTDomain = snmpUDPDomain
snmpTargetAddrTAddress = 128.1.2.3:162
snmpTargetAddrStorageType = readOnly(5)
snmpTargetAddrRowStatus = active(1)
* snmpTargetAddrName = "AuthNoPrivTargetAddresses"
* snmpTargetAddrSubIndex = 2
snmpTargetAddrTDomain = snmpUDPDomain
snmpTargetAddrTAddress = 128.2.4.6:162
snmpTargetAddrStorageType = readOnly(5)
snmpTargetAddrRowStatus = active(1)
Expires January 1998 [Page 66]
Internet-Draft SNMPv3 Applications August 1997
* snmpTargetAddrName = "AuthPrivTargetAddresses"
* snmpTargetAddrSubIndex = 1
snmpTargetAddrTDomain = snmpUDPDomain
snmpTargetAddrTAddress = 128.1.5.9:162
snmpTargetAddrStorageType = readOnly(5)
snmpTargetAddrRowStatus = active(1)
* snmpTargetName = "AuthNoPrivTarget"
snmpTargetAddrName = "AuthNoPrivTargetAddresses"
snmpTargetMessageProcessingModel = 3
snmpTargetSecurityModel = 3 (USM)
snmpTargetSecurityName = "joe"
snmpTargetSecurityLevel = auth(2)
snmpTargetStorageType = readOnly(5)
snmpTargetRowStatus = active(1)
* snmpTargetName = "AuthPrivTarget"
snmpTargetAddrName = "AuthPrivTargetAddresses"
snmpTargetMessageProcessingModel = 3
snmpTargetSecurityModel = 3 (USM)
snmpTargetSecurityName = "bob"
snmpTargetSecurityLevel = priv(3)
snmpTargetStorageType = readOnly(5)
snmpTargetRowStatus = active(1)
These entries define two separate management target groups. The
first group contains two management targets:
first target second target
------------ -------------
snmpVersion SNMPv3 SNMPv3
securityModel 3 (USM) 3 (USM)
securityName "joe" "joe"
securityLevel auth(2) auth(2)
transportDomain snmpUDPDomain snmpUDPDomain
transportAddress 128.1.2.3:162 128.2.4.6:162
And the second group contains a single management target:
snmpVersion SNMPv3
securityLevel priv(3)
securityModel 3 (USM)
securityName "bob"
transportDomain snmpUDPDomain
transportAddress 128.1.5.9:162
Expires January 1998 [Page 67]
Internet-Draft SNMPv3 Applications August 1997
Table of Contents
1 Abstract ..................................................... 2
2 Overview ..................................................... 3
2.1 Command Generators ......................................... 3
2.2 Command Responders ......................................... 3
2.3 Notification Originators ................................... 3
2.4 Notification Receivers ..................................... 4
2.5 Proxy Forwarder ............................................ 4
3 Management Targets ........................................... 5
4 Elements Of Procedure ........................................ 6
4.1 Command Generators ......................................... 7
4.2 Command Responders ......................................... 10
4.3 Notification Originators ................................... 15
4.4 Notification Receivers ..................................... 18
4.5 Proxy Forwarders ........................................... 21
4.5.1 Request Forwarding ....................................... 21
4.5.1.1 Processing an Incoming Request ......................... 22
4.5.1.2 Processing an Incoming Response ........................ 24
4.5.2 Notification Forwarding .................................. 25
5 The Structure of the MIBs .................................... 29
5.1 The Management Target MIB .................................. 29
5.1.1 Definitions .............................................. 29
5.2 The Notification MIB ....................................... 40
5.2.1 Definitions .............................................. 40
5.3 The Proxy MIB .............................................. 50
5.3.1 Definitions .............................................. 50
6 Identification of Management Targets in Notification Origi-
nators .................................................... 56
7 Notification Filtering ....................................... 57
8 Management Target Translation in Proxy Forwarder Applica-
tions ..................................................... 59
8.1 Management Target Translation for Request Forwarding ....... 59
8.2 Management Target Translation for Notification Forwarding
........................................................... 60
9 Security Considerations ...................................... 62
10 Editor's Address ............................................ 62
11 Acknowledgments ............................................. 62
12 References .................................................. 65
Appendix A Trap Configuration Example .......................... 66
Expires January 1998 [Page 68]
| PAFTECH AB 2003-2026 | 2026-04-24 08:30:57 |