home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Internet Info 1997 December
/
Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso
/
drafts
/
draft_ietf_q_t
/
draft-ietf-snmpv3-appl-00.txt
< prev
next >
Wrap
Text File
|
1997-07-21
|
113KB
|
3,691 lines
Internet-Draft SNMPv3 Applications July 1997
SNMPv3 Applications
July 18, 1997
<draft-ietf-snmpv3-appl-00.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 July 1997
1. Abstract
This memo describes the various types of SNMP applications which make
use of an SNMP engine as described in [SNMPV3-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 July 1997
2. Overview
Traditionally there are two types of applications in SNMP, managers
and agents. However, it is useful to further divide these types of
applications in order to define an overall architecture for SNMP.
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 an agent, in the traditional meaning, can be thought of as
a combination of a command responder application, a notification
generator application, and the SNMP engine associated with these
applications. Likewise, a manager, in the traditional meaning, can
be thought of as a combination of a command generator application, a
notification receiver application, and the SNMP engine associated
with these applications. However, there are no restrictions on the
types of applications that 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
Expires January 1998 [Page 3]
Internet-Draft SNMPv3 Applications July 1997
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
messages based on these events or conditions. A notification
originator must have a mechanism for determining where to send
messages, and what SNMP information 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 agents 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
Expires January 1998 [Page 4]
Internet-Draft SNMPv3 Applications July 1997
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
either SNMP requests or notifications 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 SNMPv3 architecture, a proxy forwarder is
actually an application, and need not actually be an SNMP agent.
Specifically, the distinction between a regular 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
an SNMP agent 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, an SNMP agent must have the detailed definition of the
MIB view, and even if it needs to issue requests to other agents,
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
Expires January 1998 [Page 5]
Internet-Draft SNMPv3 Applications July 1997
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:
- 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 [SNMPV3-ARCH].
Expires January 1998 [Page 6]
Internet-Draft SNMPv3 Applications July 1997
4.1. Command Generators
A command generator initiates an SNMP request by calling the Message
Processing Subsystem using the following abstract service interface:
sendPdu (
transportDomain
transportAddress
messageProcessingModel
securityModel
securityName
LoS
contextEngineID
contextName
PDU
expectResponse
)
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 LoS 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 command generator may omit
this parameter, in which case the Message Processing Subsystem
should use the engineID of the SNMP engine to which the
request is to be sent.
- The contextName is provided by the command generator if it
wishes to explicitly specify the location of 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 July 1997
- The PDU is the value constructed in the previous step.
- The expectResponse argument indicates that a response is
expected.
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 (
contextEngineID
contextName
PDU
LoS
statusInformation
)
Where:
- The contextEngineID is the value from the received response.
- The contextName is the value from the received response.
- The PDU is the value from the received response.
- The LoS is the value from the received response.
- The statusInformation indicates success or failure in
receiving the response.
The procedure when a command generator receives a response is as
follows:
(1) The SNMPv2 operation type is determined from the ASN.1 tag value
associated with the PDU parameter. The operation type should
always be a Response (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 8]
Internet-Draft SNMPv3 Applications July 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 =
registerContextEngineID (
contextEngineID
pduType
)
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 (
contextEngineID
pduType
)
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 9]
Internet-Draft SNMPv3 Applications July 1997
waits to receive SNMP messages. The abstract service interface used
for receiving messages is:
processPdu (
contextEngineID
contextName
PDU
maxSizeResponseScopedPDU
securityModel
securityName
LoS
stateReference
)
Where:
- The contextEngineID is the value from the received message.
- The contextName is the value from the received message.
- The PDU is the value from the received message.
- The maxSizeResponseScopedPDU is the value from the received
message.
- The securityModel is the value from the received message.
- The securityName is the value from the received message.
- The LoS is the value from the received message.
- The stateReference is a value assigned by the Message
Processing Subsystem. This subsystem 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.
(1) The SNMPv2 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 (the Message Processing
Subsystem should never call a command responder application using
the processPdu interface for any other type of PDU).
Expires January 1998 [Page 10]
Internet-Draft SNMPv3 Applications July 1997
(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
LoS, 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 =
isAccessAllowed (
securityModel
securityName
LoS
viewType
contextName
variableName
)
Where:
- The securityModel is the value from the received message.
- The securityName is the value from the received message.
- The LoS 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.
Normally, the result of the management operation will be a new PDU
value, and processing will continue in the next step. However,
there are two conditions under which a new PDU value will not be
generated:
Expires January 1998 [Page 11]
Internet-Draft SNMPv3 Applications July 1997
- 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 the next
step.
- The isAccessAllowed abstract service interface is conceptually
called for each object in the variable-bindings (and possibly
multiple times for a single variable-bindings in the case of a
GetNext or GetBulk PDU). At any point, if the returned
statusInformation indicates an error, result indicates an
error, processing of the management operation is halted, no
result PDU is generated, the snmpUnavailableViews counter is
incremented, and control is passed to the next step.
(6) The Message Processing Subsystem is called to generate a response
or report message. The abstract service interface is:
returnResponsePdu (
contextEngineID
contextName
PDU
maxSizeResponseScopedPDU
securityModel
securityName
LoS
stateReference
statusInformation
)
Where:
- The contextEngineID is the value from the processPdu call.
- The contextName is the value from the processPdu call.
- The PDU is the result generated in the previous step. If no
result PDU was generated, 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 securityModel is the value from the processPdu call.
- The securityName is the value from the processPdu call.
Expires January 1998 [Page 12]
Internet-Draft SNMPv3 Applications July 1997
- The LoS is the value from the processPdu call.
- 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 needed to generate a Report PDU. In the
latter case, the OID and counter value are that of the counter
that was incremented in the previous step
(snmpUnavailableContexts or snmpUnavailableViews).
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 13]
Internet-Draft SNMPv3 Applications July 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 the contextEngineID and contextName of the
location where the information to be conveyed in the notification
exists. 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 LoS, 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 14]
Internet-Draft SNMPv3 Applications July 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 found in the previous step.
(4) If the notification should be 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:
sendPdu (
transportDomain
transportAddress
messageProcessingModel
securityModel
securityName
LoS
contextEngineID
contextName
PDU
expectResponse
)
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 LoS 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.
- The PDU is the value constructed in the previous step.
- The expectResponse argument indicates that no response is
expected.
Expires January 1998 [Page 15]
Internet-Draft SNMPv3 Applications July 1997
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 the previous step, 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 16]
Internet-Draft SNMPv3 Applications July 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 contains 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 contextEngineID is the value from the received message.
- The contextName is the value from the received message.
- The PDU is the value from the received message.
- The maxSizeResponseScopedPDU is the value from the received
message.
- The securityModel is the value from the received message.
- The securityName is the value from the received message.
- The LoS 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.
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.
Expires January 1998 [Page 17]
Internet-Draft SNMPv3 Applications July 1997
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 contextEngineID is the value from the processPdu call.
- The contextName is the value from the processPdu call.
- The PDU is the result generated in the previous step.
- The maxSizeResponseScopedPDU is a local value indicating the
maximum size of a ScopedPDU that the application can accept.
- The securityModel is the value from the processPdu call.
- The securityName is the value from the processPdu call.
- The LoS is the value from the processPdu call.
- 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
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 18]
Internet-Draft SNMPv3 Applications July 1997
4.5. Proxy Forwarders
A proxy forwarder application deals with forwarding messages which
contain Get, GetNext, GetBulk, Set, SNMPv2-Trap, and Inform 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 last two (Trap, Inform) deal with notifications
concerning information located within a particular context. A proxy
forwarder application treats these two situations slightly different.
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, processing an incoming
request, and processing and incoming response. These are described
in the following two sections.
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
Expires January 1998 [Page 19]
Internet-Draft SNMPv3 Applications July 1997
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 contextEngineID is the value from the processPdu call.
- The contextName is the value from the processPdu call.
- 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 securityModel is the value from the processPdu call.
- The securityName is the value from the processPdu call.
- The LoS is the value from the processPdu call.
- 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.
Expires January 1998 [Page 20]
Internet-Draft SNMPv3 Applications July 1997
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 LoS is that of the outgoing management target.
- The contextEngineID is the value originally received.
- The contextName is the value originally received.
- The PDU is the value constructed in the previous step.
- 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:
Expires January 1998 [Page 21]
Internet-Draft SNMPv3 Applications July 1997
(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:
- The contextEngineID is the value extracted from the cache.
- The contextName is the value extracted from the cache.
- 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 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.
Expires January 1998 [Page 22]
Internet-Draft SNMPv3 Applications July 1997
- The LoS is that of the original incoming management target
extracted from the cache.
- The stateReference is the value extracted from the cache.
- The statusInformation indicates that no error occured and that
a Response 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
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 contextEngineID is the received value.
- The contextName is the received 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 securityModel is the received value.
- The securityName is the received value.
- The LoS is the received value.
Expires January 1998 [Page 23]
Internet-Draft SNMPv3 Applications July 1997
- 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
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 and an snmpProxyDrops Report PDU is
Expires January 1998 [Page 24]
Internet-Draft SNMPv3 Applications July 1997
generated, 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 contextEngineID is the originally received value.
- The contextName is the originally received value.
- The PDU is the value constructed in the previous step.
- The maxSizeResponseScopedPDU is a local value indicating the
maximum size of a ScopedPDU that the application can accept.
- The securityModel is the originally received value.
- The securityName is the originally received value.
- The LoS is the originally received value.
- The stateReference is the originally received value.
- The statusInformation indicates that no error occured and that
a Response message should be generated.
Expires January 1998 [Page 25]
Internet-Draft SNMPv3 Applications July 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,
SnmpLoS,
Expires January 1998 [Page 26]
Internet-Draft SNMPv3 Applications July 1997
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
????
????
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 27]
Internet-Draft SNMPv3 Applications July 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 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
columnar object in the snmpTargetAddrTable whose
index begins with the desired index value of
snmpTargetAddrName).
Expires January 1998 [Page 28]
Internet-Draft SNMPv3 Applications July 1997
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
""
::= { snmpTargetObjects 2 }
snmpTargetAddrEntry OBJECT-TYPE
SYNTAX SnmpV3TargetAddrEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
""
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
"The locally arbitrary, but unique identifier associated
an snmpTargetAddrEntry within a group of entries in the
snmpTargetAddrTable."
::= { snmpTargetAddrEntry 1 }
Expires January 1998 [Page 29]
Internet-Draft SNMPv3 Applications July 1997
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 an LoS that indicates both
authentication and privacy, the derived value may be
increased to compensate for extra processing time spent
during authentication and encryption processing."
DEFVAL { 1500 }
::= { snmpTargetAddrEntry 4 }
Expires January 1998 [Page 30]
Internet-Draft SNMPv3 Applications July 1997
snmpTargetAddrStorageType OBJECT-TYPE
SYNTAX StorageType
MAX-ACCESS read-create
STATUS current
DESCRIPTION
""
::= { snmpTargetAddrEntry 5 }
snmpTargetAddrRowStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
""
::= { snmpTargetAddrEntry 6 }
snmpTargetTable OBJECT-TYPE
SYNTAX SEQUENCE OF SnmpV3TargetEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
""
::= { snmpTargetObjects 3 }
snmpTargetEntry OBJECT-TYPE
SYNTAX SnmpV3TargetEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
""
INDEX { snmpTargetName }
::= { snmpTargetTable 1 }
SnmpV3TargetEntry ::= SEQUENCE {
snmpTargetName SnmpAdminString,
snmpTargetAddrName SnmpAdminString,
snmpTargetMessageProcessingModel INTEGER,
snmpTargetSecurityModel SnmpSecurityModel,
snmpTargetSecurityName SnmpAdminString,
snmpTargetLoS SnmpLoS,
snmpTargetRetryCount Integer32,
snmpTargetStorageType StorageType,
snmpTargetRowStatus RowStatus
}
snmpTargetName OBJECT-TYPE
SYNTAX SnmpAdminString
Expires January 1998 [Page 31]
Internet-Draft SNMPv3 Applications July 1997
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."
::= { snmpTargetEntry 2 }
snmpTargetMessageProcessingModel OBJECT-TYPE
SYNTAX INTEGER (SIZE(0..64))
MAX-ACCESS read-create
STATUS current
DESCRIPTION
""
::= { snmpTargetEntry 3 }
snmpTargetSecurityModel OBJECT-TYPE
SYNTAX SnmpSecurityModel
MAX-ACCESS read-create
STATUS current
DESCRIPTION
""
::= { snmpTargetEntry 4 }
snmpTargetSecurityName OBJECT-TYPE
SYNTAX SnmpAdminString
MAX-ACCESS read-create
STATUS current
DESCRIPTION
""
::= { snmpTargetEntry 5 }
snmpTargetLoS OBJECT-TYPE
SYNTAX SnmpLoS
MAX-ACCESS read-create
STATUS current
DESCRIPTION
""
::= { snmpTargetEntry 6 }
Expires January 1998 [Page 32]
Internet-Draft SNMPv3 Applications July 1997
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."
::= { snmpTargetEntry 7 }
snmpTargetStorageType OBJECT-TYPE
SYNTAX StorageType
MAX-ACCESS read-create
STATUS current
DESCRIPTION
""
::= { snmpTargetEntry 8 }
snmpTargetRowStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
""
::= { 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?
Expires January 1998 [Page 33]
Internet-Draft SNMPv3 Applications July 1997
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
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
--
-- ------------------------------------------------------------------
snmpTargetBasicCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"The compliance statement for SNMP entities which require
remote configuration of management targets."
MODULE -- this module
MANDATORY-GROUPS { snmpTargetBasicGroup }
::= { snmpTargetCompliances 1 }
Expires January 1998 [Page 34]
Internet-Draft SNMPv3 Applications July 1997
snmpTargetFullCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"The compliance statement for SNMP entities which require
remote configuration of management targets."
MODULE -- this module
MANDATORY-GROUPS { snmpTargetBasicGroup }
::= { snmpTargetCompliances 2 }
snmpTargetReadCreateCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"The compliance statement for SNMP entities which require
remote configuration of management targets."
MODULE -- this module
MANDATORY-GROUPS { snmpTargetBasicGroup }
::= { snmpTargetCompliances 3 }
snmpTargetBasicGroup OBJECT-GROUP
OBJECTS {
snmpTargetAddressSpinLock,
snmpTargetAddrTDomain,
snmpTargetAddrTAddress,
snmpTargetAddrStorageType,
snmpTargetAddrRowStatus,
snmpTargetAddrName,
snmpTargetMessageProcessingModel,
snmpTargetSecurityModel,
snmpTargetSecurityName,
snmpTargetLoS,
snmpTargetStorageType,
snmpTargetRowStatus
}
STATUS current
DESCRIPTION
"A collection of objects providing basic remote
configuration of management targets."
::= { snmpTargetGroups 1 }
snmpTargetResponseGroup OBJECT-GROUP
OBJECTS {
snmpTargetAddrTimeout,
snmpTargetRetryCount,
snmpTargetDefaultRetryAlgorithm
}
STATUS current
DESCRIPTION
Expires January 1998 [Page 35]
Internet-Draft SNMPv3 Applications July 1997
"A collection of objects providing remote configuration
of management targets for applications which generate
Get, GetNext, GetBulk, Set, or Inform requests."
::= { snmpTargetGroups 2 }
END
Expires January 1998 [Page 36]
Internet-Draft SNMPv3 Applications July 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,
SnmpLoS,
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 37]
Internet-Draft SNMPv3 Applications July 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
????
????
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 38]
Internet-Draft SNMPv3 Applications July 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
""
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 for generating
notifications, and the type of notification to be
generated. 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
notifications.
Also note that if an SNMP entity only supports
Expires January 1998 [Page 39]
Internet-Draft SNMPv3 Applications July 1997
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
""
INDEX { snmpTargetName }
::= { snmpNotifyFilterProfileTable 1 }
SnmpV3NotifyFilterProfileEntry ::= SEQUENCE {
snmpNotifyFilterProfileName SnmpAdminString
}
snmpNotifyFilterProfileName OBJECT-TYPE
SYNTAX SnmpAdminString
MAX-ACCESS read-create
STATUS current
DESCRIPTION
""
::= { snmpNotifyFilterProfileEntry 1 }
snmpNotifyFilterTable OBJECT-TYPE
SYNTAX SEQUENCE OF SnmpV3NotifyFilterEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table is used to select management targets which
should receive notifications."
::= { snmpNotifyObjects 3 }
Expires January 1998 [Page 40]
Internet-Draft SNMPv3 Applications July 1997
snmpNotifyFilterEntry OBJECT-TYPE
SYNTAX SnmpV3NotifyFilterEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
""
INDEX { snmpNotifyFilterProfileName,
IMPLIED snmpNotifyFilterSubtree }
::= { snmpNotifyFilterTable 1 }
SnmpV3NotifyFilterEntry ::= SEQUENCE {
snmpNotifyFilterSubtree OBJECT IDENTIFIER,
snmpNotifyFilterMask OCTET STRING,
snmpNotifyFilterType INTEGER,
snmpNotifyFilterStorageType StorageType,
snmpNotifyFilterRowStatus RowStatus
}
snmpNotifyFilterSubtree OBJECT-TYPE
SYNTAX OBJECT IDENTIFIER
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
""
::= { snmpNotifyFilterEntry 1 }
snmpNotifyFilterMask OBJECT-TYPE
SYNTAX OCTET STRING (SIZE(0..16))
MAX-ACCESS read-create
STATUS current
DESCRIPTION
""
::= { snmpNotifyFilterEntry 2 }
snmpNotifyFilterType OBJECT-TYPE
SYNTAX INTEGER {
included(1),
excluded(2)
}
MAX-ACCESS read-create
STATUS current
DESCRIPTION
""
::= { snmpNotifyFilterEntry 3 }
snmpNotifyFilterStorageType OBJECT-TYPE
SYNTAX StorageType
Expires January 1998 [Page 41]
Internet-Draft SNMPv3 Applications July 1997
MAX-ACCESS read-create
STATUS current
DESCRIPTION
""
::= { snmpNotifyFilterEntry 4 }
snmpNotifyFilterRowStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
""
::= { snmpNotifyFilterEntry 5 }
-- ------------------------------------------------------------------
--
-- Conformance information
--
-- ------------------------------------------------------------------
snmpNotifyCompliances OBJECT IDENTIFIER ::=
{ snmpNotifyConformance 1 }
snmpNotifyGroups OBJECT IDENTIFIER ::=
{ snmpNotifyConformance 2 }
-- ------------------------------------------------------------------
--
-- Compliance statements
--
-- ------------------------------------------------------------------
snmpNotifyMinimalCompliance 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
Expires January 1998 [Page 42]
Internet-Draft SNMPv3 Applications July 1997
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."
OBJECT snmpTargetLoS
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 }
snmpNotifyBasicCompliance 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."
Expires January 1998 [Page 43]
Internet-Draft SNMPv3 Applications July 1997
MODULE SNMPV3-TARGET-MIB
MANDATORY-GROUPS { snmpTargetBasicGroup }
MODULE -- This Module
MANDATORY-GROUPS { snmpNotifyFilterGroup }
::= { snmpNotifyCompliances 2 }
snmpNotifyCompleteCompliance 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."
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 }
Expires January 1998 [Page 44]
Internet-Draft SNMPv3 Applications July 1997
END
Expires January 1998 [Page 45]
Internet-Draft SNMPv3 Applications July 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,
SnmpLoS,
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 46]
Internet-Draft SNMPv3 Applications July 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
????
????
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 47]
Internet-Draft SNMPv3 Applications July 1997
snmpProxyTable OBJECT-TYPE
SYNTAX SEQUENCE OF SnmpV3ProxyEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
""
::= { snmpProxyObjects 2 }
snmpProxyEntry OBJECT-TYPE
SYNTAX SnmpV3ProxyEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
""
INDEX { snmpProxyIndex }
::= { snmpProxyTable 1 }
SnmpV3ProxyEntry ::= SEQUENCE {
snmpProxyIndex Integer32,
snmpProxyType INTEGER,
snmpProxyContextEngineID SnmpEngineID,
snmpProxyContextName SnmpAdminString,
snmpProxyTargetIn Integer32,
snmpProxyTargetOut Integer32,
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
STATUS current
DESCRIPTION
Expires January 1998 [Page 48]
Internet-Draft SNMPv3 Applications July 1997
""
::= { snmpProxyEntry 2 }
snmpProxyContextEngineID OBJECT-TYPE
SYNTAX SnmpEngineID
MAX-ACCESS read-create
STATUS current
DESCRIPTION
""
::= { snmpProxyEntry 3 }
snmpProxyContextName OBJECT-TYPE
SYNTAX SnmpAdminString
MAX-ACCESS read-create
STATUS current
DESCRIPTION
""
::= { snmpProxyEntry 4 }
snmpProxyTargetIn OBJECT-TYPE
SYNTAX Integer32
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 Integer32
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
object is used for proxy forwarding)."
::= { snmpProxyEntry 6 }
snmpProxyStorageType OBJECT-TYPE
SYNTAX StorageType
MAX-ACCESS read-create
STATUS current
Expires January 1998 [Page 49]
Internet-Draft SNMPv3 Applications July 1997
DESCRIPTION
""
::= { snmpProxyEntry 7 }
snmpProxyRowStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
""
::= { 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 }
snmpProxyGroup OBJECT-GROUP
OBJECTS {
snmpProxyNextIndex,
snmpProxyType,
snmpProxyContextEngineID,
snmpProxyContextName,
Expires January 1998 [Page 50]
Internet-Draft SNMPv3 Applications July 1997
snmpProxyTargetIn,
snmpProxyTargetOut,
snmpProxyStorageType,
snmpProxyRowStatus
}
STATUS current
DESCRIPTION
"A collection of objects providing remote configuration of
management targets, including row creation in the
snmpTargetTable."
::= { snmpProxyGroups 3 }
END
Expires January 1998 [Page 51]
Internet-Draft SNMPv3 Applications July 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 52]
Internet-Draft SNMPv3 Applications July 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. When generating notifications for a group of
management targets, all active entries in the snmpNotifyFilterTable,
for which the value of the snmpNotifyFilterProfileName index is equal
to the value of the snmpNotifyFilterProfileName object of the
management target group, 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 object instance is excluded by the
set of matching entries, compare the object instance's OBJECT
IDENTIFIER with each of the matching entries. If none match, then
the 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 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 or exclusion.
An 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 53]
Internet-Draft SNMPv3 Applications July 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, LoS, security model, and
securityName must match the values of
snmpTargetMessageProcessingModel, snmpTargetSecurityModel,
snmpTargetSecurityName, and snmpTargetLoS 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 54]
Internet-Draft SNMPv3 Applications July 1997
identifies an entry in the snmpTargetTable. The
snmpTargetMessageProcessingModel, snmpTargetSecurityModel,
snmpTargetSecurityName, and snmpTargetLoS 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, LoS, security model, and
securityName must match the values of
snmpTargetMessageProcessingModel, snmpTargetSecurityModel,
snmpTargetSecurityName, and snmpTargetLoS 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 55]
Internet-Draft SNMPv3 Applications July 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 56]
Internet-Draft SNMPv3 Applications July 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. Acknowledgments
This document was produced by the IETF SNMPv3 working group.
Expires January 1998 [Page 57]
Internet-Draft SNMPv3 Applications July 1997
11. 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 58]
Internet-Draft SNMPv3 Applications July 1997
International Network Services, January 1996.
[SNMPV3-ARCH]
SNMPv3 Working Group, Harrington, D., Wijnen, B., "An Architecture
for Describing Internet Management Frameworks", draft-ietf-snmpv3-
next-gen-arch-02.txt, June 1997.
[SNMPV3-MPC]
SNMPv3 Working Group, Case, J., Harrington, D., Wijnen, B.,
"Message Processing and Control Model for version 3 of the Simple
Network Management Protocol (SNMPv3)", draft-ietf-snmpv3-next-gen-
arch-02.txt, June 1997.
[SNMPV3-ACM]
SNMPv3 Working Group, Wijnen, B., Presuhn, R., McClogrie, K.,
"Access Control Model for version 3 of the Simple Network
Management Protocol (SNMPv3)", draft-ietf-snmpv3-next-gen-arch-
02.txt, June 1997.
12. Author'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
????
????
U.S.A.
Phone: +1 603 654 6923
EMail: bstewart@cisco.com
Expires January 1998 [Page 59]
Internet-Draft SNMPv3 Applications July 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)
* 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"
snmpTargetLoS = auth(2)
snmpTargetStorageType = readOnly(5)
snmpTargetRowStatus = active(1)
* snmpTargetName = "AuthPrivTarget"
snmpTargetAddrName = "AuthPrivTargetAddresses"
snmpTargetMessageProcessingModel = 3
snmpTargetSecurityModel = 3 (USM)
Expires January 1998 [Page 60]
Internet-Draft SNMPv3 Applications July 1997
snmpTargetSecurityName = "bob"
snmpTargetLoS = 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"
LoS 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
LoS priv(3)
securityModel 3 (USM)
securityName "bob"
transportDomain snmpUDPDomain
transportAddress 128.1.5.9:162
Expires January 1998 [Page 61]
Internet-Draft SNMPv3 Applications July 1997
Table of Contents
1 Abstract ..................................................... 2
2 Overview ..................................................... 3
2.1 Command Generators ......................................... 3
2.2 Command Responders ......................................... 3
2.3 Notification Originators ................................... 4
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 ......................................... 9
4.3 Notification Originators ................................... 14
4.4 Notification Receivers ..................................... 17
4.5 Proxy Forwarders ........................................... 19
4.5.1 Request Forwarding ....................................... 19
4.5.1.1 Processing an Incoming Request ......................... 19
4.5.1.2 Processing an Incoming Response ........................ 22
4.5.2 Notification Forwarding .................................. 23
5 The Structure of the MIBs .................................... 26
5.1 The Management Target MIB .................................. 26
5.1.1 Definitions .............................................. 26
5.2 The Notification MIB ....................................... 37
5.2.1 Definitions .............................................. 37
5.3 The Proxy MIB .............................................. 46
5.3.1 Definitions .............................................. 46
6 Identification of Management Targets in Notification Origi-
nators .................................................... 52
7 Notification Filtering ....................................... 53
8 Management Target Translation in Proxy Forwarder Applica-
tions ..................................................... 54
8.1 Management Target Translation for Request Forwarding ....... 54
8.2 Management Target Translation for Notification Forwarding
........................................................... 55
9 Security Considerations ...................................... 57
10 Acknowledgments ............................................. 57
11 References .................................................. 58
12 Author's Address ............................................ 59
Appendix A Trap Configuration Example .......................... 60
Expires January 1998 [Page 62]