Internet DRAFT - draft-ernst-msgmib

draft-ernst-msgmib



MADMAN Working Group                    Bruce Ernst [bruce_ernst@lotus.com]
INTERNET-DRAFT                          Lotus Development Corporation
draft-ernst-msgmib-00.txt                   Gordon Jones [gbjones@mitre.org]
                                                MITRE Corporation
                                                Jonathan Weintraub
                                                Electronic Data Systems, Inc.
 

                        March 1998

                     Message Tracking MIB


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.  Internet  Drafts  may  be updated, replaced, or obsoleted by
   other documents at any time.  It is not appropriate to  use  Internet
   Drafts as reference material or to cite them other than as a "working
   draft" or "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, nic.nordu.net,  ftp.nisc.sri.com,  or
   munnari.oz.au.


Abstract

This document defines a message tracking Management Information Base
(MIB) for electronic messaging management. Message tracking is the
ability to find out, after the fact, the path that a particular message 
took through the messaging system and the current status of that message.













Expires: September 1, 1998                                     [Page 1]


Internet Draft                                             March 1998


1.  The SNMP Network Management Framework.

   The major components of the SNMP Network Management framework  are
   described in the documents listed below.


        o RFC 1902 [1] defines the Structure of Management Information
           (SMI), the mechanisms used for describing and naming objects
           for the purpose of management.

        o STD 17, RFC 1213 [2] defines MIB-II, the core set of managed
           objects (MO) for the Internet suite of protocols.

        o RFC 1905 [3] defines the protocol used for network access to
           managed objects.


The framework is adaptable/extensible by defining new MIBs to  suit  the
requirements of specific applications/protocols/situations.

Managed objects are accessed via a virtual information store,  the  MIB.
Objects  in  the  MIB  are  defined  using the subset of Abstract Syntax
Notation One (ASN.1) defined in the SMI. In particular, each object type
is  named by an OBJECT IDENTIFIER, which is an administratively assigned
name. The object  type  together  with  an  object  instance  serves  to
uniquely  identify  a  specific  instantiation  of the object. For human
convenience, often a textual string, termed the descriptor, is  used  to
refer to the object type.



2. Message Tracking

Message tracking refers, in its simplest form, to determining the path
a message
has taken and it's current location.  This capability is analogous to
the service 
provided by carriers of conventional paper mail - the ability to
quickly locate 
where a package is, and to determine whether or not the package has
been 
delivered to its destination. This document discusses a specific
SNMP-based 
per-message mechanism to query the messaging system to perform message 
tracking. For a detailed definition of message tracking, and the need
for message
tracking, refer to [MODEL].










Expires: September 1, 1998                                     [Page 2]


Internet Draft                                             March 1998


3. MIB Data to Support Message Tracking

This MIB contains the syntax for message tracking via SNMP.  The
attributes 
defined are identical to those defined for message tracking via e-mail,
except 
for those attributes that are required purely to enable SNMP-specific
semantics.

When making use of SNMP, it is expected that the following mode of
operation 
will be used.  The entity acting in the manager role issues one or more
"SET" 
operations filling in a row in a request table.  The variables set in
the request 
table together comprise a message tracking query. The entity acting in
the agent 
role reads the values set in the request table, queries the local
message store 
(or usage logs), and returns information regarding messages that satify
the query 
criteria in a response table.  The entity acting as the manager then
reads the 
response table and notifies an administrator or performs additional
queries as 
required.

In the message tracking MIB that follows, there are three tables:

1. the mtaInformationTable
2. the msgTrackRequestTable
3. the msgTrackResponseTable

The mtaInformationTable contains one entry for each MTA that is
monitored 
by this agent.  The table contains information about the MTA as a
whole, such 
as: the name of the MTA and the length of time that the MTA has been
recording 
information.  This last item is important to know, since if the MTA
indicates that 
it only has information about messages that have passed through it in
the last two 
days, and the administrator wishes to track a message that was sent
four days ago, 
then there will be no need to attempt to track the message through this
MTA.

The msgTrackRequestTable is used by a manager to specify a query to be
made 
of the agent.  It is not required that the manager have any knowledge
of a unique 
message identifier, but knowledge of some information pertaining to the
message 
in question is recommended.  Since the query information may be matched
by a 
number of potential matches, it is possible to find out information
about several 
different messages.

The msgTrackResponseTable is a parallel to the msgTrackRequestTable in
that it 
holds the response(s) to the queries posed in the msgTrackRequestTable.
The 
manager reads this table to retrieve information about the messages
that match 
the input query information.  The two tables share a common index to
facilitate 
navigation between them.







Expires: September 1, 1998                                     [Page 3]


Internet Draft                                             March 1998


MESSAGE-TRACKING-MIB DEFINITIONS ::= BEGIN

   IMPORTS
       OBJECT-TYPE, MODULE-IDENTITY, Counter32
   FROM SNMPv2-SMI
       DisplayString, TimeInterval, DateAndTime
   FROM SNMPv2-TC;

--   Note that in SNMPv1 the IMPORTS section should look like the
following:
--   IMPORTS
--       OBJECT-TYPE, enterprises, Counter, Gauge, TimeTicks
--              FROM RFC1155-SMI
--       DisplayString
--             FROM RFC1213-MIB;


-- OBJECT IDENTIFIERS
  MsgTracking   OBJECT IDENTIFIER ::= { experimental 73 2 }

-- MODULE IDENTIFICATION   use in V2 version only
mta-message-track MODULE-IDENTITY
       LAST-UPDATED "9704110000Z"
       ORGANIZATION "IETF"
       CONTACT-INFO
             "Gordon  Jones
               Postal: 1820 Dolly Madison Boulevard
                           Mc Lean, VA 22102-3481
               Tel:    +1 703 883 7670
               Fax:    +1 703 883 7670
               E-mail: gbjones@mitre.org"
       DESCRIPTION
         "The MIB module describing message tracking"
       ::= { MsgTracking 1 }

-- Note that the MODULE-IDENTITY macro does not exist in SNMP version 1,
-- for a V1 implementation, replace the above macro with the following
line :
--  mta-message-track OBJECT IDENTIFIER ::= {MsgTracking 1 }


-- Note that the textual conventions DateAndTime and TimeInterval
-- do not exist in SNMPv1, for a V1 implementation include the following
-- 2 lines:
--   DateAndTime ::= DisplayString
--   TimeInterval ::= INTEGER (0..2147483647)






Expires: September 1, 1998                                     [Page 4]


Internet Draft                                             March 1998


-- Define the NameForm textual convention for originator and recipient
-- names in this MIB
NameForm ::= INTEGER {
   freeForm(1),
   x400(2),
   smtp(3)
 }

-- Define the DispositionStatus textual convention which indicates the
-- disposition of a message by the MTA for a particular recipient.
Values
-- are:
-- unknown   - The disposition of the message could not be determined
-- transferred - The message was forwarded to another MTA for
-- delivery without name or content transformation.
-- delivered - The message was delivered to the intended recipient.
-- non-delivered - The message could not be delivered to the intended 
-- recipient.
-- redirected - The message was forwarded to another MTA for
-- delivery.  The recipient name and/or messageId
-- may have changed as a result of this process.
-- dlist-expanded - The intended recipient was a distribution list
-- which was expanded by the MTA.
-- in-queue - The message for this recipient is currently being
-- processed by the MTA.

DispositionStatus ::= INTEGER {
   unknown(1),
   transferred(2),
   delivered(3),
   non-delivered(4),
   redirected(5),
   dlist-expanded(6),
   in-queue(7)
   }

-- Define the MsgType textual convention. Values are:
--
-- data
-- status
-- probe

MsgType ::= INTEGER {
  any(1),
  data(2),
  status(3),
  probe(4)
  }



Expires: September 1, 1998                                     [Page 5]


Internet Draft                                             March 1998


-- How this mib works :
-- Most message tracking MIBs operate on the presupposition that the
manager
-- entering a query knows the unique message ID for the message being
tracked.
-- In practice, this is often not the case.  This MIB allows for a
2-step
-- query process - find the appropriate message, then track it.


--     +==============+
--     | Manager      | = 1 => +=====================================+
--     +==============+ = 6 => | msgTrackRequestTable                |
--           ^                 +=====================================+
--           |                           |
--           |                           2    +=========+
--           |                           + => | Agent   |
--           |                                +=========+
--           5                                      |     
+======================+
--           |                                      + 3 => | Message
Store        |
--           |                             += 4 ==========
+======================+
--           |                             |
--           |                             v
--           |                +========================================+
--           ===============> | msgTrackResponseTable                  |
--                            +========================================+
--
--  STEP 1:
-- Using the index obtained from 'msgTrackNextRequestIndex', a manager
-- creates a conceptual row in the 'msgTrackRequestTable', filling in
-- as many message attributes as are known.  The manager also specifies
-- in 'reqMaxResponses', the maximim number of possible 'hits' for an
-- underspecified query.
--  STEP 2:
-- When the agent detects a new conceptual row in
'msgTrackRequestTable',
-- it forms a query to be executed against the message store(s).
--  STEP 3:
-- The agent issues the query against the message store and receives
some
-- response(s).
--  STEP 4:
-- The agent then transfers up to 'reqMaxResponses' possible responses
-- to newly created conceptual rows in the 'msgTrackResponseTable'. The
agent
-- then sets the value of 'reqResponseStatus' in the
'msgTrackRequestTable'
-- to notify the manager of the results of the query.
--  STEP 5:
-- The manager, having detected a change in 'reqResponseStatus', knows
that
-- the query is complete.  It reads the potential responses from the
-- 'msgTrackResponseTable' and presents them to the end-user.





Expires: September 1, 1998                                     [Page 6]


Internet Draft                                             March 1998



--  STEP 6:
-- The manager then instructs the agent to destroy the conceptual row
-- created in the 'msgTrackRequestTable', which causes the agent to
-- destroy the corresponding entries in the 'msgTrackResponseTable'.
--  STEP 7:  (optional, not illustrated)
-- If the original query did not produce an adequate response, a new
entry
-- is created in the 'msgTrackRequestTable'.  Entries in this table are
-- never reused!
--
--

-- MESSAGE TRACKING REQUEST TABLE:

mtaInformationTable OBJECT-TYPE
 SYNTAX SEQUENCE OF mtaInformationEntry
 MAX-ACCESS not-accessible
 STATUS current
 DESCRIPTION
   "The table holding information about the MTA being queried.  A table
     is used because there may be multiple MTAs at a single host."
       ::= { mta-message-track 1 }


mtaInformationEntry OBJECT-TYPE
 SYNTAX  mtaInformationEntry
 MAX-ACCESS not-accessible
 STATUS current
 DESCRIPTION
   "One entry in the table holding information about the MTA being
     queried"
 INDEX { mtaIndex }
       ::= { mtaInformationTable 1 }

mtaInformationEntry ::=  SEQUENCE {
 mtaIndex
     INTEGER,
 mtaName
    DisplayString,
 mtaMessagingType
    DisplayString,
 startTimeforRecordedInformation
    DateAndTime,
 alternativeAgent
    DisplayString
}




Expires: September 1, 1998                                     [Page 7]


Internet Draft                                             March 1998



mtaIndex   OBJECT-TYPE
 SYNTAX      INTEGER (1..2147483647)
 ACCESS      read-only
 STATUS      current
 DESCRIPTION
   "The integer index into this table."
 ::= { mtaInformationEntry 1 }

mtaName  OBJECT-TYPE
 SYNTAX      DisplayString
 ACCESS      read-only
 STATUS      current
 DESCRIPTION
  "The name of the MTA described in this row of the table."
 ::= { mtaInformationEntry 2 }

mtaMessagingType  OBJECT-TYPE
 SYNTAX      DisplayString
 ACCESS      read-only
 STATUS      current
 DESCRIPTION
   " Common name of the messaging system of this MTA (e.g. X.400,
SMTP)."
 ::= { mtaInformationEntry 3 }

mtaStartTimeforRecordedInformation  OBJECT-TYPE
 SYNTAX      DateAndTime
 ACCESS      read-only
 STATUS      current
 DESCRIPTION
   " The date/time of the oldest message tracking information
      available from this MTA."
 ::= { mtaInformationEntry 4 }

mtaAlternativeAgent  OBJECT-TYPE
 SYNTAX      DisplayString
 ACCESS      read-only
 STATUS      current
 DESCRIPTION
   "The name (or address) of another agent  that may have message
                   tracking information concerning this MTA."
 ::= { mtaInformationEntry 5 }








Expires: September 1, 1998                                     [Page 8]


Internet Draft                                             March 1998


msgTrackNextRequestIndex  OBJECT-TYPE
 SYNTAX      Counter32      -- Note that in SNMPv1, the syntax is simply
'Counter'
 ACCESS     read-only
 STATUS      current
 DESCRIPTION
   "The index that may be used by a manager (requestor) on a
'set-request' PDU
    to create a new conceptual row in the msgTrackRequestTable table
(and
    thereby issue a message tracking query)."
 ::= { mta-message-track 2 }

msgTrackRequestTable OBJECT-TYPE
 SYNTAX     SEQUENCE OF MsgTrackRequestEntry
 ACCESS    not-accessible
 STATUS     current
 DESCRIPTION
   "The table holding all active message tracking requests."
 ::= { mta-message-track 3 }

msgTrackRequestEntry OBJECT-TYPE
 SYNTAX      MsgTrackRequestEntry
 ACCESS     not-accessible
 STATUS      current
 DESCRIPTION
   "The entry associated with each request for message information."
 INDEX { reqEntryIndex }
 ::= { msgTrackRequestTable 1 }

MsgTrackRequestEntry ::= SEQUENCE {
 reqEntryIndex
     INTEGER,
 reqRowStatus
     INTEGER,
 reqResponseStatus
     INTEGER,
 reqMaxResponses
     INTEGER,
 reqUniqueMsgId
     DisplayString,
 reqInboundMsgId
     DisplayString,
 reqOutboundMsgId
     DisplayString,
 reqInboundOriginator
     DisplayString,
 




Expires: September 1, 1998                                     [Page 9]


Internet Draft                                             March 1998



reqOutboundOriginator
     DisplayString,
 reqOriginatorNameForm
     NameForm,
 reqInboundRecipient
     DisplayString,
 reqOutboundRecipient
     DisplayString,
 reqRecipientNameForm
     NameForm,
 reqSubject
     DisplayString, 
reqMinMsgSize
     INTEGER,
 reqMaxMsgSize
     INTEGER,
 reqEarliestArrivalTime
     DateAndTime,
 reqLatestArrivalTime
     DateAndTime,
 reqDispositionStatus
     DispositionStatus,
 reqFailureReason
     DisplayString,
 reqMsgType
     MsgType,
 reqCollapseRecipients
     INTEGER
}

reqEntryIndex  OBJECT-TYPE
 SYNTAX     INTEGER (1..2147483647)
 ACCESS    read-only
 STATUS     current
 DESCRIPTION
   "The integer index into the msgTrackRequestTable table."
 ::= { msgTrackRequestEntry 1 }

reqRowStatus  OBJECT-TYPE
 SYNTAX     INTEGER {
   active(1),
   notInService(2),
   notReady(3),
   





Expires: September 1, 1998                                     [Page 10]


Internet Draft                                             March 1998


   createAndGo(4),
   createAndWait(5),
   destroy(6)
        }
 ACCESS    read-write
 STATUS     current
 DESCRIPTION
   "The status of the conceptual row. These are mapped to the same
values as 
     the RowStatus textual conversion in SNMPv2 and carry the same
semantics 
     with one exception: the exception is that when a manager
(requestor) sets the 
     value to destroy(6), this also has the added semantics of deleting
all 
     conceptual rows in the msgTrackResponseTable table whose
respEntryIndex 
     matches the reqEntryIndex of this conceptual row."
 ::= { msgTrackRequestEntry 2 }

reqResponseStatus  OBJECT-TYPE
 SYNTAX       INTEGER {
   unknown(1),
   inProgress(2),
   failedNoMatches(3),
   failedInvalidQuery(4),
   failedError(5),
   successUnderqualified(6),
   success(7)
         }
 ACCESS     read-only
 STATUS      current
 DESCRIPTION
   "Indicates the status of this query and its responses in the
    msgTrackResponseTable. Values are:
    unknown  -  The status of this query is not known.
    inProgress  -  The agent(responder) is still processing the request.
    failedNoMatches    -  The query has been processed and has produced
no 
    matches.
    failedInvalidQuery  -  The query could not be processed  due to
invalid or
    missing data in the original query.
    FailedError  -  The query could not be processed due to an error in
the
    agent(responder).
    successUnderqualified  -  The query was successfully processed, but
the query
    was found to be underqualified.  That is, more reponses were found
than were 
    specified in reqMaxResponses. reqMaxResponses entries were returned
in the
    msgTrackResponseTable.
    success  -  The query succeeded, returning from 1 to reqMaxResponse
    entries in the msgTrackResponseTable."
 ::= { msgTrackRequestEntry 3 }





Expires: September 1, 1998                                     [Page 11]


Internet Draft                                             March 1998



reqMaxResponses  OBJECT-TYPE
 SYNTAX       INTEGER (1..100)
 ACCESS     read-write
 STATUS      current
 DESCRIPTION
   "Specifies the largest number of responses to be returned in the
    msgTrackResponseTable on an underspecified query (i.e. the 
    maximum value of respMsgIndex in the msgTrackResponseTable
    conceptual row whose  respEntryIndex matches the reqEntryIndex of
this
    conceptual row)."
 ::= { msgTrackRequestEntry 4 }

reqUniqueMsgId  OBJECT-TYPE
 SYNTAX      DisplayString
 ACCESS     read-write
 STATUS      current
 DESCRIPTION
   "Specifies a unique message id used internally by the MTA for
identification
    of a message.  This form of the message id may or may not be
identical to the
    inbound and/or outbound forms of the message id.  If specified,
this may be 
    the only search criteria required. If the entire unique message id
is not 
    specified, prefix matching is assumed. Set to an empty (zero
length) string if 
    unknown or irrelevant to query."
 ::= { msgTrackRequestEntry 5 }

reqInboundMsgId  OBJECT-TYPE
 SYNTAX      DisplayString
 ACCESS     read-write
 STATUS      current
 DESCRIPTION
   "Specifies a unique message id as received by the MTA for
identification of
    a message.  This form of the message id may or may not be identical
to the
    internal and/or outbound forms of the message id.  If specified,
this may be the
    only search criteria required.  If the entire inbound message id is
not specified, 
    prefix matching is assumed.  Set to an empty (zero length) string
if unknown or 
    irrelevant to query."
 ::= { msgTrackRequestEntry 6 }

reqOutboundMsgId  OBJECT-TYPE
 SYNTAX      DisplayString
 ACCESS     read-write
 STATUS      current
 DESCRIPTION






Expires: September 1, 1998                                     [Page 12]


Internet Draft                                             March 1998



   "Specifies a unique message id as transmitted by the MTA for
identification
    of a message.  This form of the message id may or may not be
identical to the
    internal and/or inbound forms of the message id.  If specified,
this may be the 
    only search criteria required.  If the entire outbound message id
is not 
    specified, prefix matching is assumed.  Set to an empty (zero
length) string if 
    unknown or irrelevant to query."
 ::= { msgTrackRequestEntry 7 }

reqInboundOriginator  OBJECT-TYPE
 SYNTAX      DisplayString
 ACCESS     read-write
 STATUS      current
 DESCRIPTION
"Identifies the originator of the message in its received form,
expressed in
    string format.  The style and format of this identifier varies
according to a
    specific messaging technology. As a result of potentially disparate
messaging
    technologies, this identifier is only guaranteed to be the name
known to the 
    end-user on the first  MTA in the delivery sequence.  If 
    reqOriginatorNameForm is set to 'x.400(2)' or 'smtp(3)', the
supplied 
    attributes will be considered in the match.  Any attributes not
supplied will be 
    wildcarded.  If reqOriginatorNameForm is set to 'freeForm(1)', this
value is 
    assumed to be a substring of the originator name. Set to an empty
(zero 
    length) string if unknown or irrelevant to query."
 ::= { msgTrackRequestEntry 8 }

reqOutboundOriginator  OBJECT-TYPE
 SYNTAX      DisplayString
 ACCESS     read-write
 STATUS      current
 DESCRIPTION
   "Identifies the originator of the message in its transmitted form,
expressed
    in string format.  The style and format of this identifier varies
according to a
    specific messaging technology. As a result of potentially disparate
messaging
    technologies this identifier is only guaranteed to be the name
known to the 
    end-user on the last  MTA in the delivery sequence.   If 
    reqOriginatorNameForm is set to 'x.400(2)' or 'smtp(3)', the
supplied attributes
    will be considered in the match.  Any attributes not supplied will
be 
    wildcarded. If reqOriginatorNameForm is set to 'freeForm(1)', this
value is 
    assumed to be a substring of the originator name.  Set to an empty
(zero 
    length) string if unknown or irrelevant to query."
 ::= { msgTrackRequestEntry 9 }

reqOriginatorNameForm  OBJECT-TYPE
 SYNTAX      NameForm
 




Expires: September 1, 1998                                     [Page 13]


Internet Draft                                             March 1998



ACCESS     read-write
 STATUS      current
 DESCRIPTION
   "Identifies the name form of originator strings supplied in the
    reqInboundOriginator and/or reqOutboundOriginator values.  This
value is 
    used by the agent to perform name form dependant parsing of these
values.  
    If neither of these strings are supplied, this name form value is
irrelevant to 
    the query.  A value of 'any(1)' implies that  no special parsing
should be 
    performed on the originator names supplied."
 ::= { msgTrackRequestEntry 10 }

reqInboundRecipient  OBJECT-TYPE
 SYNTAX      DisplayString
 ACCESS     read-write
 STATUS      current
 DESCRIPTION
   "Identifies one of the recipients (the one to be tracked) of the
message in
    its received form, expressed in string format.  The style and
format of this 
    identifier varies according to a specific messaging technology.  As
a result 
    of potentially disparate messaging technologies, this identifier is
only 
    guaranteed to be the name an end-user  knows the recipient by on
the first 
    MTA in the delivery sequence. If reqRecipientNameForm is set to
'x.400(2)' 
    or 'smtp(3)', the supplied attributes will be considered in the
match.  Any 
    attributes not supplied will be wildcarded. If reqRecipientNameForm
is set to 
    'freeForm(1)', this value is assumed to be a substring of the
recipient name.
    Set to an empty (zero length) string if unknown or irrelevant to
query."
 ::= { msgTrackRequestEntry 11 }

reqOutboundRecipient  OBJECT-TYPE
 SYNTAX      DisplayString
 ACCESS     read-write
 STATUS      current
 DESCRIPTION
   "Identifies one of the recipients (the one to be tracked) of the
message in
    its transmitted form, expressed in string format.  The style and
format of this 
    identifier varies according to a specific messaging technology.  As
a result of 
    potentially disparate messaging technologies, this identifier is
only guaranteed 
    to be the name an end-user knows the recipient by on the last MTA
in the 
    delivery sequence. If reqRecipientNameForm is set to 'x.400(2)' or
'smtp(3)', 
    the supplied attributes will be considered in the match.  Any
attributes not 
    supplied will be wildcarded. If reqRecipientNameForm is set to
'freeForm(1)',
    this value is assumed to be a substring of the recipient name.  Set
to an empty
    (zero length) string if unknown or irrelevant to query."
 ::= { msgTrackRequestEntry 12 }





Expires: September 1, 1998                                     [Page 14]


Internet Draft                                             March 1998



reqRecipientNameForm  OBJECT-TYPE
 SYNTAX      NameForm
 ACCESS     read-write
 STATUS      current
 DESCRIPTION
   "Identifies the name form of recipient strings supplied in the 
    reqInboundRecipient and/or reqOutboundRecipient values.  This value
is 
    used by the agent to perform  name form dependant parsing of these
values.
    If neither of these strings are supplied, this name form value is
irrelevant to 
    the query.  A value of 'any(1)' implies that no special parsing
should be 
    performed on the recipient names supplied."
 ::= { msgTrackRequestEntry 13 }

reqSubject  OBJECT-TYPE
 SYNTAX      DisplayString
 ACCESS     read-write
 STATUS      current
 DESCRIPTION
   "Identifies a substring of the text of the 'Subject' attribute of
the message.  
    Since some messaging technologies make it difficult for an MTA to
preserve 
    this data, it may not be supported by all agents. Set to an empty
(zero length) 
    string if unknown or irrelevant to query."
 ::= { msgTrackRequestEntry 14 }

reqMinMsgSize  OBJECT-TYPE
 SYNTAX      INTEGER (1..2147483647)
 ACCESS     read-write
 STATUS      current
 DESCRIPTION
   "Specifies the minimum size of a message to be tracked (content,
excluding
    envelope), expressed in kilo-octets. Set both reqMinMsgSize and 
    reqMaxMsgSize to zero if message size is irrelevant to the query."
 ::= { msgTrackRequestEntry 15 }

reqMaxMsgSize  OBJECT-TYPE
 SYNTAX      INTEGER (1..2147483647)
 ACCESS     read-write
 STATUS      current
 DESCRIPTION
   "Specifies the maximum size of a message to be tracked (content,
excluding
   envelope), expressed in kilo-octets. Set both reqMinMsgSize and 
   reqMaxMsgSize to zero if message size is irrelevant to the query."
 ::= { msgTrackRequestEntry 16 }






Expires: September 1, 1998                                     [Page 15]


Internet Draft                                             March 1998



reqEarliestArrivalTime  OBJECT-TYPE
 SYNTAX      DateAndTime
 ACCESS      read-write
 STATUS      current
 DESCRIPTION
   "Specifies the earliest arrival time, at this MTA, for a message to
be
    tracked. Set to an empty (zero length) string if unknown or
irrelevant to 
    query."
 ::= { msgTrackRequestEntry 17 }

reqLatestArrivalTime  OBJECT-TYPE
 SYNTAX      DateAndTime
 ACCESS      read-write
 STATUS      current
 DESCRIPTION
   "Specifies the latest arrival time, at this MTA, for a message to be
    tracked. Set to an empty (zero length) string if unknown or
irrelevant to 
    query."
 ::= { msgTrackRequestEntry 18 }

reqDispositionStatus  OBJECT-TYPE
 SYNTAX     DispositionStatus
 ACCESS     read-write
 STATUS     current
 DESCRIPTION
   "Specifies the disposition status of the message for a particular
    recipient. Set to 'unknown(1)' if unknown or irrelevant to the
query."
 ::= {msgTrackRequestEntry 19 }

reqMsgType OBJECT-TYPE
 SYNTAX    MsgType
 ACCESS     read-write
 STATUS      current
 DESCRIPTION
   "The type of message to be tracked.
    Set to 'any(1)' if message type is unknown or irrelevant to the
query."
 ::= {msgTrackRequestEntry 20 }

reqCollapseRecipients  OBJECT-TYPE
 SYNTAX       INTEGER {
                        false(1),
                        true(2)
                        }
 ACCESS     read-write
 STATUS      current




Expires: September 1, 1998                                     [Page 16]


Internet Draft                                             March 1998



 DESCRIPTION
   "If a value of 'true(2)' is specified, a single msgTrackResponseEntry
    will be created for each matching message regardless of the
    number of recipients.  If not specified or set to 'false(1)',
    a msgTrackResponseEntry will be created for each matching message
    and/or recipient.  This variable may be used in the case of a
    distribution list or a message with a large number of
    recipients."
 ::= { msgTrackRequestEntry 21 }

reqFailureReason OBJECT-TYPE
 SYNTAX      DisplayString
 ACCESS     read-only
 STATUS      current
 DESCRIPTION
   "A textual description of why a message tracking request failed.
    This variable may be set by an agent when the reqResponseStatus
    is set to either 'failedInvalidQuery(4)', or 'failedError(5)'."
 ::= {msgTrackRequestEntry 22 }

-- MESSAGE RESPONSE TABLE ( QUERY RESULTS )

msgTrackResponseTable OBJECT-TYPE
 SYNTAX     SEQUENCE OF MsgTrackResponseEntry
 ACCESS    not-accessible
 STATUS     current
 DESCRIPTION
   "The table holding the response to all active message tracking
requests."
 ::= { mta-message-track 4 }

msgTrackResponseEntry OBJECT-TYPE
 SYNTAX      MsgTrackResponseEntry
 ACCESS     not-accessible
 STATUS      current
 DESCRIPTION
   "The entry associated with each response to a request for message
     information."
 INDEX { respEntryIndex, respMsgIndex }
 ::= { msgTrackResponseTable 1 }

MsgTrackResponseEntry ::= SEQUENCE {
 respEntryIndex
     INTEGER,
 respMsgIndex
     INTEGER,
 



Expires: September 1, 1998                                     [Page 17]


Internet Draft                                             March 1998



respDispositionStatus
     DispositionStatus,
 respDispositionTime
     INTEGER,
 respNextHopMta
     DisplayString,
 respPrevHopMta
     DisplayString,
 respNonDeliveryReason
     DisplayString,
 respMsgArrivalTime
    DateAndTime,
 respMsgSize
     INTEGER,
 respMsgPriority
     DisplayString,
 respUniqueMsgId
     DisplayString,
 respInboundMsgId
     DisplayString,
respOutboundMsgId
     DisplayString,
 respInboundOriginator
     DisplayString,
 respOutboundOriginator
     DisplayString,
 respInboundRecipient
     DisplayString,
 respOutboundRecipient
     DisplayString,
 respSupplementalInformation
     DisplayString,
 respSubject
     DisplayString,
 respMsgType
     MsgType
}

respEntryIndex  OBJECT-TYPE
 SYNTAX     INTEGER (1..2147483647)
 ACCESS    read-only
 STATUS     current
 DESCRIPTION
   "The primary integer index into the msgTrackResponseTable table. It
matches
     the value of reqEntryIndex for the original request. "
 ::= { msgTrackResponseEntry 1 }



Expires: September 1, 1998                                     [Page 18]


Internet Draft                                             March 1998



respMsgIndex OBJECT-TYPE
 SYNTAX      INTEGER (1..2147483647)
 ACCESS     read-only
 STATUS      current
 DESCRIPTION
   "The secondary integer index into the msgTrackResponseTable table.
For each
    value of respEntryIndex in the table, there may be multiple
conceptual rows 
    indexed by respMsgIndex, each denoting a possible response to the
tracking 
    query.  The maximum number of entries should have an upper bound of
the 
    value of reqMaxResponses in the conceptual row of
msgTrackRequestTable 
    that represents the original query request. "
 ::= { msgTrackResponseEntry 2 }

respDispositionStatus OBJECT-TYPE
 SYNTAX      DispositionStatus
 ACCESS      read-only
 STATUS      current
 DESCRIPTION
   "Indicates the disposition of this message by this MTA for this
recipient."
 ::= { msgTrackResponseEntry 3 }

rspDispositionTime OBJECT-TYPE
 SYNTAX      DateAndTime
 ACCESS     read-only
 STATUS      current
 DESCRIPTION
   "Time at which this MTA disposed of this message for this recipient."
 ::= { msgTrackResponseEntry 4 }

respNextHopMta OBJECT-TYPE
 SYNTAX      DisplayString
 ACCESS     read-only
 STATUS      current
 DESCRIPTION
   "Name of the MTA to which this message was sent. MADMAN-compliant 
    MTA's should be addressed in the form '(<host-id>::<mtaName>)'."
 ::= { msgTrackResponseEntry 5 }

respPrevHopMta OBJECT-TYPE
 SYNTAX      DisplayString
 ACCESS     read-only
 STATUS      current
 DESCRIPTION






Expires: September 1, 1998                                     [Page 19]


Internet Draft                                             March 1998



   "Name of the MTA from which this message was received. MADMAN-
    compliant MTA's should be addressed in the form 
    '(<host-id>::<mtaName>)'."
 ::= { msgTrackResponseEntry 6 }

respNonDeliveryReason OBJECT-TYPE
 SYNTAX      DisplayString
 ACCESS     read-only
 STATUS      current
 DESCRIPTION
   "A textual representation representing the reason for non-delivery to
    this recipient.  No attempt is made to normalize these non-delivered
    reasons across systems, since this indicates a terminal condition."
 ::= { msgTrackResponseEntry 7 }

respMsgArrivalTime OBJECT-TYPE
 SYNTAX      DateAndTime
 ACCESS     read-only
 STATUS      current
 DESCRIPTION
   "Represents the time at which this message for this recipient
arrived at
    this MTA."
 ::= { msgTrackResponseEntry 8 }

respMsgSize OBJECT-TYPE
 SYNTAX      INTEGER(1..2147483647)
 ACCESS     read-only
 STATUS      current
 DESCRIPTION
   "Size of the message in kilo-octets."
 ::= { msgTrackResponseEntry 9 }

respMsgPriority OBJECT-TYPE
 SYNTAX      DisplayString
 ACCESS     read-only
 STATUS      current
 DESCRIPTION
   "Textual representation of the priority of the message.  No attempt
is
    made to normalize these values across disparate messaging
technologies."
 ::= { msgTrackResponseEntry 10 }

respUniqueMsgId OBJECT-TYPE
 SYNTAX      DisplayString
 ACCESS     read-only
 STATUS      current
 



Expires: September 1, 1998                                     [Page 20]


Internet Draft                                             March 1998



DESCRIPTION
   "The unique message identifier that the MTA assigned internally
    to the message."
 ::= { msgTrackResponseEntry 11 }

respInboundMsgId OBJECT-TYPE
 SYNTAX      DisplayString
 ACCESS     read-only
 STATUS      current
 DESCRIPTION
   "The unique message identifier that the 'previous hop' MTA assigned
    to the message.  If the 'previous' MTA uses a different messaging
technology
    or identifier scheme, this identifier serves to correlate the
message from
    MTA to MTA. If the 'previous' MTA uses the same technology, this
value
    is generally superfluous.  If this is the first MTA in the delivery
    sequence, or if the previous message id is unknown, this variable
is null-
    valued."
 ::= { msgTrackResponseEntry 12 }

respOutboundMsgId OBJECT-TYPE
 SYNTAX      DisplayString
 ACCESS     read-only
 STATUS      current
 DESCRIPTION
   "The unique message identifier that the 'next hop' MTA assigned
    to the message.  If the 'next' MTA uses a different messaging
technology
    or identifier scheme, this identifier serves to correlate the
message from
    MTA to MTA. If the 'next' MTA uses the same technology, this value
    is generally superfluous.  If this is the last MTA in the delivery
sequence,
    or if the next hop message id is unknown, this variable is
null-valued."
 ::= { msgTrackResponseEntry 13 }

respInboundOriginator OBJECT-TYPE
 SYNTAX      DisplayString
 ACCESS     read-only
 STATUS      current
 DESCRIPTION
   "Textual representation identifying the originator of the message as
it was
    received from the 'previous hop' MTA. The style of this variable
varies
    according to a specific messaging technology."
 ::= { msgTrackResponseEntry 14 }

respOutboundOriginator OBJECT-TYPE
 SYNTAX      DisplayString
 ACCESS     read-only
 STATUS      current
 


Expires: September 1, 1998                                     [Page 21]


Internet Draft                                             March 1998




DESCRIPTION
   "Textual representation identifying the originator of the message as
it
    was (or will be) presented to the 'next hop' MTA. The style of this
    variable varies according to a specific messaging technology."
 ::= { msgTrackResponseEntry 15 }

respInboundRecipient OBJECT-TYPE
 SYNTAX      DisplayString
 ACCESS     read-only
 STATUS      current
 DESCRIPTION
   "Textual representation identifying the recipient of the message as
it was
    received from the 'previous hop' MTA. The style of this variable
varies
    according to a specific messaging technology.."
 ::= { msgTrackResponseEntry 16 }

respOutboundRecipient OBJECT-TYPE
 SYNTAX      DisplayString
 ACCESS     read-only
 STATUS      current
 DESCRIPTION
   "Textual representation identifying the recipient of the message as
it
    was (or will be) presented to the 'next hop' MTA. The style of this
    variable varies according to a specific messaging technology."
 ::= { msgTrackResponseEntry 17 }

respSupplementalInformation OBJECT-TYPE
 SYNTAX      DisplayString
 ACCESS     read-only
 STATUS      current
 DESCRIPTION
   "Contains information provided by the agent to the manager that may
be
    of use in identifying or tracking this message. No formal structure
for
    this information is specified.  Knowledge of the contents of this
field
    is by bilateral agreement."
 ::= { msgTrackResponseEntry 18 }

respSubject OBJECT-TYPE
 SYNTAX      DisplayString
 ACCESS     read-only
 STATUS      current
 DESCRIPTION
   "The full text of the subject of the tracked message"
 ::= { msgTrackResponseEntry 19 }




Expires: September 1, 1998                                     [Page 22]


Internet Draft                                             March 1998



respMsgType OBJECT-TYPE
 SYNTAX      MsgType
 ACCESS     read-only
 STATUS      current
 DESCRIPTION
   "The type of the tracked message"
 ::= { msgTrackResponseEntry 20 }

-- CONFORMANCE INFORMATION
-- Used ONLY in V2 MIBs
messageTrackingConformance OBJECT IDENTIFIER ::= { 
   mta-message-track 5 }
messageTrackingGroups          OBJECT IDENTIFIER ::= { 
   messageTrackingConformance 1 }
messageTrackingCompliances OBJECT IDENTIFIER ::= {
   messageTrackingConformance 2 }


-- COMPLIANCE STATEMENTS
-- Used ONLY in V2 MIBs
limitedCompliance       MODULE-COMPLIANCE
 STATUS current
 DESCRIPTION
    "The basic levels of compliance for SNMPv2 entities that implement
this MIB
      for message tracking requiring the knowledge of a message Id."
 MODULE      -- this module
 MANDATORY-GROUPS { msgIdGroup }
 ::= { messageTrackingCompliances 1 }

basicCompliance       MODULE-COMPLIANCE
 STATUS current
 DESCRIPTION
    "The basic levels of compliance for SNMPv2 entities that implement
this MIB
      for message tracking without requiring the knowledge of a message
Id."
 MODULE      -- this module
 MANDATORY-GROUPS { msgIdGroup, basicGroup }
 ::= { messageTrackingCompliances 2 }

enhancedCompliance       MODULE-COMPLIANCE
 STATUS current
 DESCRIPTION
    "The basic levels of compliance for SNMPv2 entities that implement
this MIB
      for message tracking without requiring the knowledge of a message
Id and
      allowing an enhanced level of query capabilities."
 MODULE      -- this module
 



Expires: September 1, 1998                                     [Page 23]


Internet Draft                                             March 1998



MANDATORY-GROUPS { msgIdGroup, basicGroup, enhancedGroup }
 ::= { messageTrackingCompliances 3 }

gatewayCompliance       MODULE-COMPLIANCE
 STATUS current
 DESCRIPTION
    "The basic levels of compliance for SNMPv2 entities that implement
this MIB
      for message tracking across mta's that perform a gateway
function."
 MODULE      -- this module
 MANDATORY-GROUPS { msgIdGroup, basicGroup, enhancedGroup, 
                                                gatewayGroup }
 ::= { messageTrackingCompliances 4 }

-- UNITS OF CONFORMANCE
-- Used ONLY in V2 MIBs
msgIdGroup OBJECT-GROUP
 OBJECTS {
      msgTrackNextRequestIndex,  reqRowStatus,
      reqResponseStatus, reqMaxResponses,  reqUniqueMsgId,
      reqFailureReason,  respDispositionStatus,  respDispositionTime,
      respNonDeliveryReason, respMsgArrivalTime, respUniqueMsgId,       
      respInboundOriginator, respInboundRecipient
 }
 STATUS current
 DESCRIPTION
    "  A collection of objects for tracking messages where the
messageId is
       known with responses containing basic message information."
    ::= { messageTrackingGroups 1 }

basicGroup OBJECT-GROUP
 OBJECTS {
      reqInboundOriginator, reqInboundRecipient, reqOriginatorNameForm,
      reqRecipientNameForm, reqEarliestArrivalTime, 
reqLatestArrivalTime
 }
 STATUS current
 DESCRIPTION
    "  A collection of objects for tracking messages where the
messageId is not
known
                      with responses containing basic message
information."
    ::= { messageTrackingGroups 2}









Expires: September 1, 1998                                     [Page 24]


Internet Draft                                             March 1998



enhancedGroup OBJECT-GROUP
 OBJECTS {
      reqSubject,           reqMinMsgSize,    reqMaxMsgSize,
      reqDispositionStatus,  reqMsgType,         reqCollapseRecipients,
      respMsgSize,               respMsgPriority,  
respSupplementalInformation,
      respSubject,                 respMsgType
 }
 STATUS current
 DESCRIPTION
    " A collection of objects for tracking messages where the messageId
is not
      known with responses containing enhanced message information as
      well as enhanced query capabilities."
    ::= { messageTrackingGroups 3}

gatewayGroup OBJECT-GROUP
 OBJECTS {
      reqInboundMsgId,           reqOutboundMsgId,   
reqOutboundOriginator,
      reqOutboundRecipient,   respNextHopMta,        respPrevHopMta,
      respInboundMsgId,         respOutboundMsgId, 
respOutboundOriginator,
      respOutboundRecipient
 }
 STATUS current
 DESCRIPTION
    "  A collection of object for tracking messages that have passed
through a
       gateway mta."
    ::= { messageTrackingGroups 4}


END



4 Usages

A general model of message flow between MTAs has to be presented before 
a MIB can be described.  Generally speaking, message flow occurs in
three 
steps. We use the term "MTA" loosely to refer to any processing entity
that is 
responsible for message delivery:

(1) Messages are received by the MTA from user agents, message stores,
other 
MTAs, and gateways.
(2) The "next hop" for the each message is determined.  This is simply
the 
destination the message is to be transmitted to; it may or may not be
the final 
destination of the message.  Next hop is established on a per-recipient
basis.  
Next hop may be a User Agent, a Message Store, another MTA, or a
gateway.




Expires: September 1, 1998                                     [Page 25]


Internet Draft                                             March 1998



(3) Information about the message and the next hop are written out to a
log in 
some format. Messages are transmitted to the appropriate destination,
which 
may be a user agent, message store, another MTA, or another gateway.

In terms of message tracking, the key step is step number 3, the
logging of 
information.  Once information about a message is written to a log, it
can be 
subsequently queried by any number of means. It is the intent of this 
specification to support the following general message tracking usages.

Tracking an Individual Message

It is often necessary for messaging operations to track down the
whereabouts 
and/or history of an individual message managed object.  This is
typically in 
response to a particular user tracking request regarding a previously
sent 
message.  It might also be used by messaging operations to verify that
one or 
more message paths are operating properly.

Entire Path or Current Status

For some inquiries, it is desired that the entire path taken by the
message to 
date be discovered, including the current disposition of the message
(for one 
or more recipients). For others, it is necessary only to discover the
current 
disposition of the message.  Note however that it may be necessary to
uncover 
its entire path to date in order to determine its current disposition.
To discover a message's entire path, it will be necessary to query the 
Management Agent (MA) of each MTA and/or gateway encountered by the 
message, beginning with the originating MTA, to discover the status of
the 
message from that MTA or gateway's perspective.
Dispositions include: Transferred-to another MTA or gateway, In-queue 
within an MTA or gateway, Delivered, Non-delivered, Redirected, or
Dlist-
expanded. If a message was relayed to another MTA or gateway, then the
MA 
of that MTA or gateway must be queried in turn.  This must be repeated
until 
the MTA or gateway which currently has responsibility for the message
is 
reached.

To discover a message's current disposition, it might in fact be
necessary to track
the message's entire path, since typically the current status can only
be 
discovered by a forward traversal through the message path.
Alternatively, to 
minimize expense, the MA of any MTA/gateway which is estimated to be in
the 
message path can be queried; if the message is shown to have reached
this 
estimated point, then previous points in the path are irrelevant.  Best
estimate 
may therefore be the MA of the destination MTA, if known.  Other
estimates 
are made based on arbitrary intelligence which may be available.






Expires: September 1, 1998                                     [Page 26]


Internet Draft                                             March 1998



For a message with multiple recipients, a different path/ disposition
may be 
relevant for each recipient.  Thus, message tracking queries must be
made to 
discover the path/disposition of each recipient of the message, or for
each 
recipient explicitly identified in the tracking request. For cases in
which multiple 
recipient message copies are transferred-to the same MTA or gateway,
these 
queries may be combined into a single query, for convenience.

Identifying Messages to Track

In some cases, the user may have retained some sort of a unique
identifier for 
the message of interest.  This will be true, for example, because an
explicit 
trackability service was requested for the message,  or because the
user logs all 
outgoing messages.  In such cases, a message query can be made simply
on the 
basis of providing this unique identifier to the message tracking
system.

Optionally, this query can be bounded by:

o specific recipient(s) of interest;
o time range of interest;
o or other bounding information.

In other cases, the user may only know some general descriptive
information 
about the message.  For example, the user may know who originated it,
to 
whom it was sent, and roughly what time of day it was submitted.  In
such 
cases, it will be necessary to provide descriptive information to the
message 
tracking system and allow it to respond with a list of matching
messages which 
it knows about, along with their unique identifiers.

In either case, the query can specify or imply a list of information
which it 
wishes the query response to return to the requester.

Query Responses

The query response must then return the requested information, or
return an 
indication as to why it cannot return the requested information. If the
returned 
information includes an indication that the message has been further
relayed, 
then a subsequent query must made to the transferred-to MTA or gateway.
Specific response information must be provided/implied in order to
allow for 
the creation of subsequent queries.  For example:

o the name of the transferred-to MTA or gateway
o the name of the MA of the transferred-to MTA or gateway
o the names/addresses of the recipient(s) of interest which have taken
this relay 
path. Note that this may be a "redirected" recipient.
o If this response comes from a gateway, the translated versions of key 
identification fields.



Expires: September 1, 1998                                     [Page 27]


Internet Draft                                             March 1998



This subsequent query can optionally be formulated automatically.
See next section on "Automating Follow-up Queries" for details on
follow-up 
query creation.

Automating Follow-up Queries

In order to support a fully automated path search, it is convenient and
powerful
for a management agent to be able to automatically make all of the
queries 
required to discover the full path of an individual message. The MC can 
accomplish this by creating an initial query, and then creating a
follow-on query
utilizing information returned by the initial query, and repeating this
process 
until the current disposition of the message is discovered.

Follow-on queries will need to be generated on a per-recipient basis. 
For cases
in which multiple recipient message copies were transferred-to the same
MTA
or gateway, these queries may be combined into a single query, for
efficiency.

In general, a follow-on query will need to:

o Be directed at the MA which corresponds to the MTA or gateway to
which 
the message (copy) was relayed.
o Include the names/addresses of the recipient(s) which have taken this
relay
path. Note that this may be a "redirected" recipient.
o Include the same bounding criteria as did the initial query, with the 
addition of the unique message identification if that information was
not 
previously available.
o If the just-completed query was to a gateway, then the new translated 
formats for the following will need to be used, if applicable:
  - Message ID
  - Recipient address
  - Originator address
  - Priority value
  - Size.

Tracking Aggregates of Messages

It is sometimes desirable for messaging operations to be able to
determine 
information about the history/status of all messages which match a
given set 
of characteristics that have passed through their systems.

Identifying Messages to Track

In some cases, messaging operations may have retained some sort of a
unique 
identifier for the messages of interest. More probably, messaging
operations is 
simply interested in the set of messages which:




Expires: September 1, 1998                                     [Page 28]


Internet Draft                                             March 1998



o went through its systems within a given time range, or
o were sent through its systems by a given originator, or
o were sent through its systems to a given recipient, or
o were sent through its systems with a given size or priority

In such cases, it will be necessary to provide descriptive information
to the 
message tracking system and allow it to respond with information on all
of the 
matching messages which it knows about. The query can specify or imply
a list 
of information which it wishes the query response to return to the
requester.

Query Responses

The query response must then return the requested information, or
return an 
indication as to why it cannot return the requested information.

4.1 Security

[TBD]


5. Future Considerations

A version of this information is also available in the Management
Information 
Format (MIF) defined by the Desktop Management Task Force (DMTF).

As SNMP continues to evolve (e.g. SNMPv3), 
the mechanisms in this document will leverage those new technologies.


6.  Acknowledgements

This draft also incorporates the intellectual contributions of

            Bruce Greenblatt
            Niraj Jain
            Sue Lebeck
            Roger Mizumori
            Edward Owens









Expires: September 1, 1998                                     [Page 31]


Internet Draft                                             March 1998



7.  References


   [1] Case, J., McCloghrie, K., Rose, M., and S. Waldbusser, "Structure
       of Management Information for version 2 of the Simple Network
       Management Protocol (SNMPv2)", RFC 1902, SNMP Research,Inc.,
       Hughes LAN Systems, Dover Beach Consulting, Inc., Carnegie Mellon
       University, September 1996.

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

   [3] Case, J., McCloghrie, K., Rose, M., and S, Waldbusser, "Protocol
       Operations for version 2 of the Simple Network Management
       Protocol (SNMPv2)", RFC 1905, SNMP Research,Inc., Hughes LAN
       Systems, Dover Beach Consulting, Inc., Carnegie Mellon
       University, September 1996.

   [MODEL] Case, J., McCloghrie, K., Rose, M., and S, Waldbusser,
"Protocol
       Operations for version 2 of the Simple Network Management



Authors' Addresses

  Bruce Ernst
  Lotus Development Corporation

  Phone: +1 610 251 3404
  E-Mail: bruce_ernst@lotus.com


  Gordon  Jones
  MITRE  Corporation
  1820 Dolley Madison Blvd.
  McLean, VA 22102-3481

  Phone: +1 703 883 7670
  E-Mail: gbjones@mitre.org


  Jonathan Weintraub
  Electronic Data Systems, Inc.

  +1 301 619 3101
  





Expires: September 1, 1998                                     [Page 32]