Internet Engineering Task Force R. Cole
Internet-Draft US Army CERDEC
Intended status: Experimental J. Macker
Expires: June 11, 2015 Naval Research Laboratory
A. Bierman
YumaWorks, Inc.
December 8, 2014

Definition of Managed Objects for Performance Reporting
draft-ietf-manet-report-mib-04

Abstract

This memo defines a portion of the Management Information Base (MIB) for use with network management protocols in the Internet community. In particular, it describes objects for configuring autonomous report generation on any device that supports MIBs containing objects that resolve to type Integer32 (i.e., Integer32, Counter, Gauge, or TimeTicks). to be used for performance monitoring. This allows a management station to instruct a device to build off-line reports to be collected either through notifications to the management station or queried asynchronously by the management station. Hence, this capability allows network operators to reduce the SNMP polling traffic burden on Mobile Ad-Hoc and Disruption Tolerant Networks which is problematic of SNMP performance management applications.

Status of This Memo

This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.

Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at http://datatracker.ietf.org/drafts/current/.

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

This Internet-Draft will expire on June 11, 2015.

Copyright Notice

Copyright (c) 2014 IETF Trust and the persons identified as the document authors. All rights reserved.

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.


Table of Contents

1. Introduction

This memo defines a portion of the Management Information Base (MIB) for use with network management protocols in the Internet community. In particular, it describes objects for configuring autonomous, off-line report generation for performance monitoring on any device supporting MIBs containing variables that resolve to type Integer32 (i.e., Integer32, Counter, Gauge, or TimeTicks). This reportSampledMIB module allows for the report generation to occur on the same device as containing the referenced counter object. This should be useful to devices or networks where efficient use of bandwidth is of concern or where intermittent connectivity is common. Hence, the reportSampledMIB module is useful for devices managed over some Mobile Ad-Hoc Networks (MANETs) or Disruption Tolerant Networks (DTNs).

This version of the reportSampledMIB module offers one type of off-line reporting. The MIB offers a means to collect sampled measurements related to defined MIB objects. This type of reporting is contained in the reportSampledMibObjects. Other types of report data are possible, including statistical data. However, it was felt wise to focus on a more limited scope off-line reporting capability and gain experimental use and application prior to expending energy developing a more extensive off line reporting capability.

The reportSampledMIB module relies upon the dismanEventMIB module RFC 2981 [RFC2981] to monitor the progress of reports being developed within the reportSampledMIB module and to trigger an events, i.e., notifications containing reports, at the appropriate times. This is discussed below in more detail in the section entitled 'Relationship to the DISMAN-EVENT-MIB'. Further, more sophisticated performance objects for monitoring from the reportSampledMIB module can be defined through the dismanExpressionMIB module RFC 2982 [RFC2982]

2. The Internet-Standard Management Framework

For a detailed overview of the documents that describe the current Internet-Standard Management Framework, please refer to section 7 of RFC 3410 [RFC3410].

Managed objects are accessed via a virtual information store, termed the Management Information Base or MIB. MIB objects are generally accessed through the Simple Network Management Protocol (SNMP). Objects in the MIB are defined using the mechanisms defined in the Structure of Management Information (SMI). This memo specifies a MIB module that is compliant to the SMIv2, which is described in STD 58, RFC 2578 [RFC2578], STD 58, RFC 2579 [RFC2579] and STD 58, RFC 2580 [RFC2580].

3. Conventions

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119].

4. Overview

The reportSampledMIB module references performance objects in other MIBs and generates off-line performance reports related to those referenced objects. The reportSampledMIB module can be coincident with the other MIB modules on the same device containing the referenced performance related object.

4.1. reportSampledMIB Module Management Model

This section describes the management model for the reportSampledMIB module process.

The reportSampledMIB module objects are primarily contained within four tables. These are:

The below figure illustrates the four main tables within the reportSampledMIB module. Further, if the dismanEventMIB module is so configured to generate triggered notifications, the below figure highlights the 'boolean trigger' and the notification generation. The figure further illustrates the movement of completed Reports from the reportSampledCurrentReportsTable to the reportSampledHistoricalReportsTable upon Report Completion.

+---------------------------------------------------+
| reportSampledControlEntry                         |
|    { reportSampledStudyStudyIndex }               |
|                                                   |
|                                                   |
|       reportSampledStudyNumberReportMeasurements------>----+
+---------------------------------------------------+        |
                                                        (boolean
   +---------------------------------------------------+ trigger)->--+
   | reportSampledCurrentReportsStatusEntry            |     |       |
   |    { reportSampledStudyStudyIndex }               |     |       |
   |                                                   |     |       |
   |                                                   |     |       |
   | reportSampledNumberOfMeasurementsForCurrentReport--->---+       |
   +---------------------------------------------------+             |
                                                                     V
   +---------------------------------------------------+             |
   | reportSampledCurrentReportsEntry                  |             |
   |    { reportSampledStudyStudyIndex,                |---->--------+
   |      reportSampledCurrentMeasurementIndex }       |             |
   |                                                   |-->---+      |
   +---------------------------------------------------+      |      |
                                                            (move)   |
      +---------------------------------------------------+   |      |
      | reportSampledHistoricalReportsEntry               |   |      |
      |    { reportSampledStudyStudyIndex,                |   |      |
      |      reportSampledHistoricalReportIndex,          |<--+      |
      |      reportSampledHistoricalMeasurementIndex }    |          |
      |                                                   |          |
      +---------------------------------------------------+          |
                                                                     V
                                                        (notifications)
               

4.2. Terms

The following definitions apply throughout this document:

5. Structure of the MIB Module

This section presents the structure of the reportSampledMIB module. The objects are arranged into the following groups:

5.1. Textual Conventions

No textual conventions are defined in the reportSampledMIB module.

5.2. Tables and Indexing

The reportSampledMIB module contains four tables which control and record data related to the creation, notification and storage of Reports. Specifically:

The reportSampledMIB module's tables are indexed via the following constructs:

These tables and their indexing are:

6. Relationship to Other MIB Modules

The text of this section specifies the relationship of the MIB modules contained in this document to other standards, particularly to standards containing other MIB modules. Definitions imported from other MIB modules and other MIB modules that SHOULD be implemented in conjunction with the MIB module contained within this document are identified in this section.

6.1. Relationship to the SNMPv2-MIB

The 'system' group in the SNMPv2-MIB [RFC3418] is defined as being mandatory for all systems, and the objects apply to the entity as a whole. The 'system' group provides identification of the management entity and certain other system-wide data. The reportSampledMIB module does not duplicate those objects.

6.2. Relationship to the RMON2-MIB

The reportSampledMIB module is closely related to and was inspired by the the RMON2-MIB module [RFC2021] usrHistoryGroup. The use of control tables to establish the periodic collection of measurement data for creation of performance reports was pulled from earlier work on the RMON2-MIB module.

6.3. Relationship to the DISMAN-EVENT-MIB

The reportSampledMIB module was developed to fundamentally work with the dismanEventMIB module RFC 2981 [RFC2981] in order to offer a complete and efficient off-line reporting capability for bandwidth challenged networks such as Mobile Ad-Hoc Networks (MANETs). This is accomplished through defining trigger test and associated notification actions indexed by mteOwner, mteTriggerName, mteObjectsName and mteEventName within the dismanEventMIB module. Specifically (within the dismanEventMIB module):

In the mteTriggerTable and specifically by setting

In the mteTriggerBooleanTable and specifically by setting

In the mteObjectsTable and specifically by setting

In the mteEventTable and specifically by setting

In the mteEventNotificationTable and specifically by setting

These settings within the dismanEventMIB module will result in notifications generated by the dismanEventMIB module which will carry the recently completed reportSampledMIB module reports.

Set up properly, the dismanEventMIB module will trigger a notification each time the reportSampledCurrentTable contains a completed Report. This Report will be sent in a notification containing three columns of the reportSampledCurrentTable, i.e., the Value, the Time and the Status, due to the use of wildcarding within the dismanEventMIB module.

Simultaneously, the reportSampledMIB module will move the completed Current Report into the reportSampledHistoricalReportsTable and restart collection for the next Report within the reportSampledCurrentReportsTable.

6.4. Relationship to the DISMAN-EXPRESSION-MIB

In conjunction with the dismanExpressionMIB module RFC 2982 [RFC2982], the reportSampledMIB module can be used to develop reports on relatively sophisticated object expressions.

6.5. MIB modules required for IMPORTS

Citations are not permitted within a MIB module, but any module mentioned in an IMPORTS clause or document mentioned in a REFERENCE clause is a Normative reference, and must be cited someplace within the narrative sections. Therefore, the imported items in this MIB module, such as Textual Conventions, that are not already cited, are cited in this section. Since relationships to other MIB modules should be described in the narrative text, this section will cite modules from which Textual Conventions are imported.

The reportSampledMIB module IMPORTS objects from SNMPv2-SMI [RFC2578], SNMPv2-TC [RFC2579], SNMPv2-CONF [RFC2580], SNMP-FRAMEWORK-MIB [RFC3411], and SNMPv2-MIB [RFC3418].

7. Definitions


REPORT-SAMPLED-MIB DEFINITIONS ::= BEGIN

IMPORTS

   MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
   Gauge32, Integer32, experimental
      FROM SNMPv2-SMI                          -- [RFC2578]

   TimeStamp
      FROM SNMPv2-TC                           -- [RFC2579]

   sysUpTime
      FROM SNMPv2-MIB                          -- [RFC3418]

   SnmpAdminString
      FROM SNMP-FRAMEWORK-MIB                  -- [RFC3411]

   MODULE-COMPLIANCE, OBJECT-GROUP, 
   NOTIFICATION-GROUP
      FROM SNMPv2-CONF                         -- [RFC2580]
   ;


reportSampledMIB MODULE-IDENTITY
   LAST-UPDATED "201412011300Z"  -- December 01, 2014
   ORGANIZATION "IETF MANET Working Group"
   CONTACT-INFO
      "WG E-Mail: manet@ietf.org

       WG Chairs: sratliff@cisco.com
                  jmacker@nrl.navy.mil


       Editors:   Robert G. Cole
                  US Army CERDEC
                  6010 Frankford Road
                  Aberdeen Proving Ground, MD 21005
                  USA
                  +1 443 395-8744
                  robert.g.cole@us.army.mil

                  Joseph Macker
                  Naval Research Laboratory
                  Washington, D.C. 20375
                  USA
                  macker@itd.nrl.navy.mil

                  Andy Bierman
                  YumaWorks, Inc.
                  andy@yumaworks.com"
   DESCRIPTION
      "This MIB module contains managed object definitions for
       the autonmous reporting of performance object counters.  
       Copyright (C) The IETF Trust (2009). This version
       of this MIB module is part of RFC xxxx; see the RFC
       itself for full legal notices."

     -- Revision History
     REVISION    "201412011300Z"   -- December 01, 2014
     DESCRIPTION
        "The ninth draft of this MIB module published as
         draft-ietf-manet-report-mib-04.txt.

         Revisions to this draft include 
         a) A major restructuring of the MIB module in order
            to leverage the dismanEventMIB module for the
            automatic notification of Completed Reports.
         b) Efforts to incorporate this MIB module
            into the DISMAN management architecture.
        "
     REVISION    "201211051300Z"   -- November 05, 2012
     DESCRIPTION
        "The seventh draft of this MIB module published as
         draft-ietf-manet-report-mib-03.txt.

         Revisions to this draft include 
         a) Added a 'Tables and Indexing' section to the
            body of this document.
         b) Added an 'Applicability Statement' section
            to the body of this document."
     REVISION    "201201311300Z"   -- January 31, 2012
     DESCRIPTION
        "The sixth draft of this MIB module published as
         draft-ietf-manet-report-mib-02.txt.

         Revisions to this draft include 
         a) Pulled the statistical and historical reporting
            from the MIB module and left only the sampled
            reporting, in order to greatly simplify the
            first instance of this reporting MIB module.
         b) Renamed the module, the reportSampledMIB module.
         c) Leveraged the RMON2-MIB module more effectively
            through the use of the AUGMENTS clause.
         d) Changed the module to 'experimental'."
     REVISION    "201102171300Z"   -- February 17, 2011
     DESCRIPTION
        "The fifth draft of this MIB module published as
         draft-ietf-manet-report-mib-01.txt.  This document
         has been promoted to a MANET Working Group
         draft.  

         Revisions to this draft include 
         a) Proposed changes to the statsReport table to
            simplify communications between device and
            mgmt application,
         b) Added Notifications,
         c) Changed the reporting structure of the 
            Sampled and the History reporting
            to align with the structure of the
            Statistics reports for the purpose of
            allowing for efficient notification and 
            collection of data reports.
         d) Ran through smilint to clean up all errors
            and most warning.  A few still remain."
     REVISION    "201007051300Z"   -- July 05, 2010
     DESCRIPTION
        "The fourth draft of this MIB module published as
         draft-ietf-manet-report-mib-00.txt.  This document
         has been promoted to a MANET Working Group
         draft.  

         Significant revisions to this draft include 
         a) added support for proxy configurations through
         the addition of address objects associated with
         the referenced counter objects associated with the
         performance reports."
     REVISION    "201003021300Z"   -- March 02, 2010
     DESCRIPTION
        "The third draft of this MIB module published as
         draft-cole-manet-report-mib-02.txt.  Significant
         revisions to this draft include a) changed naming
         of usrHistoryGroup to sampledGroup and  b) added
         a historyGroup."
     REVISION    "200910251300Z"   -- October 25, 2009
     DESCRIPTION
        "The second draft of this MIB module published as
         draft-cole-manet-report-mib-01.txt.  Significant
         revisions to this draft include a) the inclusion of
         raw data collection borrow blatently from the
         usrHistory Group within RMON2, b) the deletion of
         the CurrentHistoryTable from version -00, 
         c) modifications to the overall structure of the
         MIB, and d) the definition of various Compliance
         options for implementations related to this MIB."
     REVISION    "200904281300Z"   -- April 28, 2009
     DESCRIPTION
        "Initial draft of this MIB module published as
         draft-cole-manet-report-mib-00.txt."
     -- RFC-Editor assigns XXXX
     ::= { experimental 998 }   -- to be assigned by IANA



-- TEXTUAL CONVENTIONs
-- None

--
-- Top-Level Object Identifier Assignments
--
reportSampledMibNotifications OBJECT IDENTIFIER 
                              ::= { reportSampledMIB 0 }
reportSampledMibObjects       OBJECT IDENTIFIER 
                              ::= { reportSampledMIB 1 }
reportSampledMibConformance   OBJECT IDENTIFIER 
                              ::= { reportSampledMIB 2 }

-- The reportSampledMibObjects assignments are :
--        reportSampledControlTable               - 1
--        reportSampledCurrentReportsStatusTable  - 2
--        reportSampledCurrentReportsTable        - 3   
--        reportSampledHistoricalReportsTable     - 4


--
-- The Control Table 
--
reportSampledControlTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF reportSampledControlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table to configure measurement Studies which
         are comprised of multiple Reports."
    REFERENCE
        "tbd."
    ::= { reportSampledMibObjects 1 }

reportSampledControlEntry OBJECT-TYPE
    SYNTAX      ReportSampledControlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A list of parameters that control the creation of
         off-line performance Studies.

         The objects in this table are persistent and when
         written the device SHOULD save the change to
         non-volatile storage.  For further information
         on the storage behavior for these objects, refer
         to the description for the reportSampledStudyEntryStatus
         object."
    INDEX       { reportSampledStudyIndex }
    ::= { reportSampledControlTable 1 }

ReportSampledControlEntry ::= SEQUENCE {
    reportSampledStudyIndex                             Integer32,
    reportSampledStudyOwner                             SnmpAdminString,
    reportSampledStudyName                              SnmpAdminString,
    reportSampledStudyOid                               Integer32,
    reportSampledStudySamplingInterval                  Integer32,
    reportSampledStudyNumberReportMeasurements          Integer32,
    reportSampledStudyMaximumNumberOfHistoricalReports  Integer32,
    reportSampledStudyEntryStatus                       RowStatus
}

reportSampledStudyIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..127)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A unique index that identifies a specific performace
         Study.  Each Study is comprised of multiple
         Reports.  Each Report is comprised of multiple
         atomic Measurements on a specified object."
    ::= { reportSampledControlEntry 1 }

reportSampledStudyOwner OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The owner of the Study."
    DEFVAL      { ''H }
    ::= { reportSampledControlEntry 2 }

reportSampledStudyName OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The name of the Study."
    DEFVAL      { ''H }
    ::= { reportSampledControlEntry 3 }

reportSampledStudyOid OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The target OID of the Study.  Each Study makes
         periodic Measurements on a specified object
         which is local to this device.  Currently, the
         objects of study are limited to objects that 
         resolve to Integer32 (i.e., Integer32, Counter, 
         Gauge, or TimeTicks)."
    ::= { reportSampledControlEntry 4 }

reportSampledStudySamplingInterval OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    UNITS       "seconds"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The time (in seconds) between sampled Measurement 
        instances."
    DEFVAL      { 10 } 
    ::= { reportSampledControlEntry 5 }

reportSampledStudyNumberReportMeasurements OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    UNITS       "count"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The number of Meaurements per Report for this Study."
    DEFVAL      { 10 }
    ::= { reportSampledControlEntry 6 }

reportSampledStudyMaximumNumberOfHistoricalReports OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    UNITS       "count"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The number of Historical Reports to archive locally
         for this specific Study.  The Historical Reports are
         archived locally in the 
         reportSampledHistoricalReportsTable (below)."
    DEFVAL      { 10 }
    ::= { reportSampledControlEntry 7 }

reportSampledStudyEntryStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS current
    DESCRIPTION
        "This object permits management of this table
         by facilitating actions such as row creation,
         construction, and destruction. The value of
         this object has no effect on whether other
         objects in this conceptual row can be
         modified.

         An entry may not exist in the 'active' state unless all
         objects in the entry have a defined appropriate value.  For
         objects with DEFVAL clauses, the management station
         does not need to specify the value of these objects in order
         for the row to transit to the 'active' state; the default
         value for these objects is used.  For objects that do not
         have DEFVAL clauses, then the network manager MUST
         specify the value of these objects prior to this row
         transitioning to the 'active' state.

         When this object transitions to 'active', all objects
         in this row SHOULD be written to non-volatile (stable)
         storage.  Read-create objects in this row MAY be modified.
         When an object in a row with smfCfgIfRowStatus of 'active'
         is changed, then the updated value MUST be reflected in SMF
         and this new object value MUST be written to non-volatile
         storage.

         If this object is not equal to 'active', all associated
         entries in the reportSampledCurrentReportsStatusTable,
         the reportSampledCurrentReportsTable, and the
         reportSampledHistoricalReportsTable MUST be deleted."
    ::= { reportSampledControlEntry 8 }


--
-- the Current Reports Status Table
--
reportSampledCurrentReportsStatusTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF reportSampledCurrentReportsStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table to tracking the progress of measurements of current
         reports in development.  Of particular note is the object
         reportSampledNumberOfMeasurementsForCurrentReport which
         can be compared to the value of the object
         reportSampledStudyNumberReportMeasurements by the
         dismanEventMIB module and generate triggered
         notifications to the Study owner containing the
         recently Completed Reports."
    REFERENCE
        "tbd."
    ::= { reportSampledMibObjects 2 }

reportSampledCurrentReportsStatusEntry OBJECT-TYPE
    SYNTAX      ReportSampledCurrentReportsStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A list of parameters that track the status of
         current Reports in development."
    INDEX       { reportSampledStudyIndex }
    ::= { reportSampledCurrentReportsStatusTable 1 }

ReportSampledCurrentReportsStatusEntry ::= SEQUENCE {
    reportSampledNumberOfCurrentReport                 Integer32,
    reportSampledNumberOfMeasurementsForCurrentReport  Integer32
}

reportSampledNumberOfCurrentReport OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    UNITS       "count"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number within the Study series of this 
         current Report.  For each new Report within
         the Study, this value MIUST increment by
         one.  For the first Report in this Study,
         the initial value of this object MUST be
         set to one.  The value MUST wrap back to one
         when the value has reached the maximum."
    ::= { reportSampledCurrentReportsStatusEntry 1 }

reportSampledNumberOfMeasurementsForCurrentReport OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    UNITS       "count"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of Measurements collected so far for
         for this specific Report.  The initial value
         of this object MUST be one.  The value MUST
         increment be one for each attempted Measurement.
         The maximum value for this object is
         reportSampledStudyNumberReportMeasurements.
         Once this value is reached and the next
         Measurement is attempted, the Current Report is
         considered Completed, the agent MUST copy
         the Completed Report's data from the
         reportSampledCurrentReportsTable into the
         reportSampledHistoricalReportsTable, and the
         next Measurement (strating the next Report in the
         Study series) MUST be numbered with the value of
         this object as one."
    ::= { reportSampledCurrentReportsStatusEntry 2 }


--
-- the Current Reports Table 
--
reportSampledCurrentReportsTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF ReportSampledCurrentReportsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A list of measurements being collected for active
         Reports."
    REFERENCE
        " TBD."
    ::= { reportSampledMibObjects 3 }

reportSampledCurrentReportsEntry OBJECT-TYPE
    SYNTAX      ReportSampledCurrentReportsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A list of entries storing the measurements from
         active Reports.  Once an active, current Report
         completes (when the value of the associated
         reportSampledNumberOfMeasurementsForCurrentReport
         equals the value of the associated
         reportSampledStudyNumberReportMeasurements), the
         agent MUST move the Report's data from the
         reportSampledCurrentReportsTable to the
         reportSampledHistoricalReportTable."
    INDEX       { reportSampledStudyIndex, 
                  reportSampledCurrentMeasurementIndex }
    ::= { reportSampledCurrentReportsTable 1 }

ReportSampledCurrentReportsEntry ::= SEQUENCE {
    reportSampledCurrentMeasurementIndex  Integer32,
    reportSampledCurrentMeasurementValue  Integer32,
    reportSampledCurrentMeasurementTime   sysUpTime,
    reportSampledCurrentMeasurementStatus INTEGER
}

reportSampledCurrentMeasurementIndex  OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An index for this table which represents 
         the number of Measurements collected so far for
         for this current Report.  The initial value
         of this object MUST be one.  The value MUST
         increment be one for each attempted Measurement.
         The maximum value for this object is
         reportSampledStudyNumberReportMeasurements.
         Once this value is reached and the next
         Measurement is attempted, the Current Report is
         considered Completed, the agent MUST copy
         the Completed Report's data from the
         reportSampledCurrentReportsTable into the
         reportSampledHistoricalReportsTable, and the
         next Measurement (strating the next Report in the
         Study series) MUST be numbered with the value of
         this object as one."
    ::= { reportSampledCurrentReportsEntry 1 }   

reportSampledCurrentMeasurementValue  OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A single measurement for this Study for
         this Current Report.  The objects identifying
         the measurement MUST resolve to type Integer32 
         (i.e., Integer32, Counter, Gauge, or TimeTicks).
         to be used for performance monitoring on this device."
    ::= { reportSampledCurrentReportsEntry 2 }   

reportSampledCurrentMeasurementTime  OBJECT-TYPE
    SYNTAX      sysUpTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The systemUpTime of the device on which the
         measurement was made for this Measurement."
    ::= { reportSampledCurrentReportsEntry 3 }   

reportSampledCurrentMeasurementStatus OBJECT-TYPE
    SYNTAX INTEGER {
        valueNotAvailable(1),
        valuePositive(2),
        valueNegative(3)
    }
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "This object indicates the validity and sign of the
         data in the associated value recorded by the
         reportSampledCurrentMeasurementValue object."
    ::= { reportSampledCurrentReportsEntry 4 }


--
-- Historical Reports Table
--
reportSampledHistoricalReportsTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF ReportSampledHistoricalReportsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table archiving non-active Reports for each
         defined Study up to a maximum number of Reports
         per Study."
    ::= { reportSampledMibObjects 4 }

reportSampledHistoricalReportsEntry OBJECT-TYPE
    SYNTAX      ReportSampledHistoricalReportsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A list of entries storing the measurements from
         Completed Reports.  Once an active, current Report
         completes (when the value of the associated
         reportSampledNumberOfMeasurementsForCurrentReport
         equals the value of the associated
         reportSampledStudyNumberReportMeasurements), the
         agent MUST move the Report's data from the
         reportSampledCurrentReportsTable to this
         reportSampledHistoricalReportTable."
    REFERENCE
        " TBD. "
    INDEX       { reportSampledStudyIndex, 
                  reportSampledHistoricalReportIndex,
                  reportSampledHistoricalMeasurementIndex }
    ::= { reportSampledHistoricalReportsTable 1 }

ReportSampledHistoricalReportsEntry ::= SEQUENCE {
    reportSampledHistoricalReportIndex        Integer32,
    reportSampledHistoricalMeasurementIndex   Integer32,
    reportSampledHistoricalMeasurementValue   Integer32,
    reportSampledHistoricalMeasurementTime    sysUpTime,
    reportSampledHistoricalMeasurementStatus  INTEGER
}

reportSampledHistoricalReportIndex OBJECT-TYPE
    SYNTAX     Integer32 (1..2147483647)
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "An index that uniquely identifies the particular Report
         archived in this table for the specific Study 
         (identified by the reportSampledStudyIndex)."
    ::= { reportSampledHistoricalReportsEntry 1 }

reportSampledHistoricalMeasurementIndex OBJECT-TYPE
    SYNTAX     Integer32 (1..2147483647)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "An index that uniquely identifies a Measurement for
         a specific Report achived in this table for a 
         Specific Study."
    ::= { reportSampledHistoriclReportsEntry 2 }

reportSampledHistoricalReportsValue OBJECT-TYPE
    SYNTAX      Integer32(1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A single measurement for this Study for
         this Completed Report.  The objects identifying
         the measurement MUST resolve to type Integer32 
         (i.e., Integer32, Counter, Gauge, or TimeTicks).
         to be used for performance monitoring on this device."
    ::= { reportSampledHistoriclReportsEntry 3 }

reportSampledHistoricalMeasurementTime OBJECT-TYPE
    SYNTAX      sysUpTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The systemUpTime of the device on which the
         measurement was made for this Measurement."
    ::= { reportSampledHistoriclReportsEntry 5 }

reportSampledHistoricalMeasurementStatus OBJECT-TYPE
    SYNTAX      INTEGER {
        valueNotAvailable(1),
        valuePositive(2),
        valueNegative(3)
    }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object indicates the validity and sign of the
         data in the associated value recorded by the
         reportSampledHistoricalMeasurementValue object."
    ::= { reportSampledHistoriclReportsEntry 5 }


--
-- Notifications
--

-- The following notification objects to define issues with making 
-- and storing measurements.

-- Actions which report data, i.e., Reports, are to be handled by 
-- the dismanEventMIB module.

reportSampledNotificationObjects OBJECT IDENTIFIER 
                            ::= {reportSampledMibNotifications 0}
reportSampledNotificationControl OBJECT IDENTIFIER 
                            ::= {reportSampledMibNotifications 1}

--
-- reportSampledNotificationObjects
--
reportSampledDataCollectionFailure NOTIFICATION-TYPE
    OBJECTS     { reportSampledStudyOwner, -- The entity that
                                           -- configured this Study
                  reportSampledStudyName,  -- The name of the Study
                                           -- that is failing to
                                           -- collect measurement data
                  reportSampledStudyOid    -- The Object ID being
                                           -- monitored in this Study
                }
    STATUS      current
    DESCRIPTION
        "The reportSampledDataCollectionFailure is a notification
         sent when the number of consecutive measurement failures 
         within a Current Report, as indicated by consecutive values
         of the reportSampledCurrentMeasurementStatus being set 
         to 'valueNotAvailable(1)', exceeds the value of the 
         threshold value defined in the
         reportSampledDataCollectionFailureThreshold object."
    ::= { reportSampledNotificationObjects 1 }


--
-- nhdpNotificationsControl
--
reportSampledDataCollectionFailureThreshold OBJECT-TYPE
    SYNTAX      Integer32 (1..255)
    UNITS       "count"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "A threshold value for the number of
         consecutive measurement failures within a
         Current Report as indicated by consecutive values
         of the reportSampledCurrentMeasurementStatus being 
         being set to 'valueNotAvailable(1)' which
         exceed the value of this threshold.  A value of
         '255' for this threshold indicates that the
         reportSampledDataCollectionFailure notification
         is never to be sent. "
    DEFVAL      { 10 }
    ::= { nhdpNotificationsControl 1 }


--
-- Compliance Statements
--

-- Mandatory compliance for the reportSampledMIB module will 
-- include all objects defined within the module.
reportSampledCompliances  OBJECT IDENTIFIER 
                          ::= { reportSampledMIBConformance 1 }
reportSampledMIBGroups    OBJECT IDENTIFIER
                          ::= { reportSampledMIBConformance 2 }

reportSampledCompliance  MODULE-COMPLIANCE
   STATUS current
   DESCRIPTION "The reportSampled basic implementation requirements 
                for managed network entities that implement
                the REPORT Sampled process." 
   MODULE  -- this module
   MANDATORY-GROUPS { reportSampledLocalGroup }
::= { reportSampledCompliances 1 }


--
-- Units of Conformance
--
reportSampledLocalGroup  OBJECT-GROUP
   OBJECTS {
            reportSampledStudyOwner,
            reportSampledStudyName, 
            reportSampledStudyOid,
            reportSampledStudySamplingInterval,
            reportSampledStudyNumberReportMeasurements,
            reportSampledStudyMaximumNumberOfHistoricalReports,
            reportSampledStudyEntryStatus,

            reportSampledNumberOfCurrentReport,
            reportSampledNumberOfMeasurementsForCurrentReport,

            reportSampledCurrentMeasurementValue,
            reportSampledCurrentMeasurementTime,
            reportSampledCurrentMeasurementStatus,

            reportSampledHistoricalMeasurementValue,
            reportSampledHistoricalMeasurementTime,
            reportSampledHistoricalMeasurementStatus,

            reportSampledDataCollectionFailure,
            reportSampledDataCollectionFailureThreshold
   }
   STATUS  current
   DESCRIPTION
      "The basic set of objects in thie reportSampledMIB module
       to be implemented in order to meet the minimal compliance
       conditions."
::= { reportSampledMIBGroups 1 }

END
	

8. Security Considerations

This reportSampledMIB module defines a capability where the local device may poll other MIB modules on the device to collect performance data. These capabilities defined within the reportSampledMIB module are control-able by a network management application through SNMP. As such, a network management application could potentially use the reportSampledMIB module as a mechanism to implement a limited Distributed Denial-of-Service (DDoS) attack against remote devices by overloading their SNMP processing. Care should be taken to secure access to the reportSampledMIB module agent. Specifically, access control mechanisms and authentication mechanisms (via SNMPv3) should always be used for SNMP SET operations. Further, some objects may contain data deemed sensitive and authentication and encryption mechanisms (via SNMPv3) should be used for SNMP GET operations.

There are a number of management objects defined in this MIB module with a MAX-ACCESS clause of read-write and/or read-create. Such objects may be considered sensitive or vulnerable in some network environments. The support for SET operations in a non-secure environment without proper protection can have a negative effect on network operations.

These are the tables and objects and their sensitivity/vulnerability:

SNMP versions prior to SNMPv3 did not include adequate security. Even if the network itself is secure (for example by using IPSec), even then, there is no control as to who on the secure network is allowed to access and GET/SET (read/change/create/delete) the objects in this MIB module.

It is RECOMMENDED that implementers consider the security features as provided by the SNMPv3 framework (see [RFC3410], section 8), including full support for the SNMPv3 cryptographic mechanisms (for authentication and privacy).

Further, deployment of SNMP versions prior to SNMPv3 is NOT RECOMMENDED. Instead, it is RECOMMENDED to deploy SNMPv3 and to enable cryptographic security. It is then a customer/operator responsibility to ensure that the SNMP entity giving access to an instance of this MIB module is properly configured to give access to the objects only to those principals (users) that have legitimate rights to indeed GET or SET (change/create/delete) them.

9. Applicability Statement

This document describes objects for configuring parameters of the remote report generation process on a router or other device. This MIB module, denoted reportSampledMIB module, also reports performance information and notifications. The reportSampledMIB module provides for the remote control, collection and notification of performance reports on devices. As such, it eliminates the need for periodic polling for counters from remote management stations as a means for generating performance reports. This is hoped to greatly reduce management overhead on the MANET. This sections provides some examples of how this MIB module can be used in MANET network deployments. A fuller discussion of MANET network management use cases and challenges will be provided elsewhere.

In the following, two scenarios are identified where this MIB module is useful. This list is not complete and other scenarios are possible.

10. IANA Considerations

     The MIB module in this document uses the following IANA-assigned
     OBJECT IDENTIFIER values recorded in the SMI Numbers registry: 
      
     Descriptor        OBJECT IDENTIFIER value
     ----------        -----------------------

     reportSampledMIB  { experimental XXX }
      	

11. Contributors

This MIB document uses the template authored by D. Harrington which is based on contributions from the MIB Doctors, especially Juergen Schoenwaelder, Dave Perkins, C.M.Heard and Randy Presuhn.

12. Acknowledgements

We would like to thank Bert Wijnen for pointing out the existence of the usrHistory group within RMON2 and in answering our numerous questions on the usrHistory group. Further, we wish to thank U. Herberg for promoting additions to this MIB through his thoughtful consideration of performance monitoring requirements for other MIBs within the MANET WG, e.g., NHDP and OLSR MIBs.

13. References

13.1. Normative References

[RFC2021] Waldbusser, S., "Remote Network Monitoring Management Information Base Version 2 using SMIv2", RFC 2021, January 1997.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2578] McCloghrie, K., Perkins, D. and J. Schoenwaelder, "Structure of Management Information Version 2 (SMIv2)", STD 58, RFC 2578, April 1999.
[RFC2579] McCloghrie, K., Perkins, D. and J. Schoenwaelder, "Textual Conventions for SMIv2", STD 58, RFC 2579, April 1999.
[RFC2580] McCloghrie, K., Perkins, D. and J. Schoenwaelder, "Conformance Statements for SMIv2", STD 58, RFC 2580, April 1999.
[RFC2981] Kavasseri, R., "Event MIB", RFC 2981, October 2000.
[RFC2982] Kavasseri, R., "Distributed Management Expression MIB", RFC 2982, October 2000.
[RFC3411] Harrington, D., Presuhn, R. and B. Wijnen, "An Architecture for Describing Simple Network Management Protocol (SNMP) Management Frameworks", STD 62, RFC 3411, December 2002.
[RFC3418] Presuhn, R., "Management Information Base (MIB) for the Simple Network Management Protocol (SNMP)", STD 62, RFC 3418, December 2002.

13.2. Informative References

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

Appendix A. Change Log

Changes from draft-ietf-manet-report-mib-03 to draft-ietf-manet-report-mib-04 draft.

  1. This version 04 of the reportSampledMIB module represents a fairly significant restructuring of the MIB module. This restructuring was necessary in order to align the remote distributed reporting capabilities of this MIB module with the prior DISMAN Working Group (WG) efforts at the IETF.
  2. The reportSampledCurrentReportsStatusTable was added to allow a network manager to automate notifications of completed reports from this MIB module using the dismanEventMIB module.
  3. The notifications in this reportSampledMIB module were reduced to only notifications related to the operation of the data collections and no longer addressing the reporting of the performance data itself. This later data is now carried in notifications under the control of the dismanEventMIB module.

Changes from draft-ietf-manet-report-mib-01 to draft-ietf-manet-report-mib-02 draft.

  1. Stripped the Statistical and the Historical Reports from this draft in order to greatly simplify the initial development and experiments of this MIB module.
  2. Changed the RFC category to Experimental.
  3. Completed the Security section.
  4. Relied upon the AUGMENTS statement to simplify further this MIB definition.

Changes from draft-ietf-manet-report-mib-00 to draft-ietf-manet-report-mib-01 draft.

  1. Proposed additions to the statsReports in order to potentially simplify data transmission to management applications.
  2. Added some Notification definitions and their relationship to the three reports' structure, i.e., statsReports, sampledReports, and historyReports.
  3. In the process of adding notifications for the Sampled and the History reports, decided to restructure the reports from their previously rolling storage model to the fixed interval reporting used all along in the Statistics reporting. This allows the agent to notify the management application that a report has completed and that it is ready to be pulled from the agent storage.
  4. Ran MIB through smilint checker and cleaned up all errors and most warnings. A few warnings remain to be addressed.
  5. Cleaned up textual material.

Changes from draft-cole-manet-report-mib-02 to draft-ietf-manet-report-mib-00 draft.

  1. Major change was the incorporation of the IP address objects associated with all objects of type 'OBJECT IDENTIFIER'. This allows the reportSampledMIB module to exist as a proxy report generation capability on a device separate but in close proximity to the device monitoring the referenced object.
  2. Cleaned up the up front text, reducing the repetition with the object descriptions in the MIB.
  3. Worked on and added sections discussing the relationship to other MIBs.

Changes from draft-cole-manet-report-mib-01 to draft-cole-manet-report-mib-02 draft.

  1. Restructured the MIB somewhat to now offer the three reporting capabilities in increasing order of detail: a) statistical reports, b) sampled reports, and c) historical reports.
  2. Renamed the usrHistoryGroup and elements to samplingGroup. This is in line with its actual capabilities.
  3. Added a new historyGroup which provides a history of change events.
  4. Updated the4 Conformance section to reflect the above changes and additions. But did not yet run smilint to check MIB syntax.

Changes from draft-cole-manet-report-mib-00 to draft-cole-manet-report-mib-01 draft.

  1. Added (copied) the usrHistory group from RMON2 into the reportSampledMIB module.
  2. Restructured the MIB to account for the inclusion of the reportSampledMibObjects.
  3. Dropped the reportCurReportsTable as this did not make sense within the context of the reportSampledMIB module.
  4. Added the Compliance and Conformance material. Defined several Compliance Groups to all for base implementations of the reportSampledMIB module for only statistical reports, for only historical reports or for both. Allow for enhanced implementations to address higher capacity issues and extension to metric reporting for statistical reporting.
  5. Ran the MIB through the smilint checker and in the process corrected numerous typos, omissions, TEXTUAL CONVENTIONS, IMPORTS, etc.
  6. Updated main text to reflect changes.

Appendix B. Open Issues

This section contains the set of open issues related to the development and design of the reportSampledMIB module. This section will not be present in the final version of the MIB and will be removed once all the open issues have been resolved.

  1. Provide references within the REFERENCE clauses in the MIB module.
  2. Identify all objects requiring non-volatile storage in their DESCRIPTION clauses.
  3. Request an initial review of this MIB module by a MIB Doctor familiar with the work of the DISMAN WG, preferably an author of the dismanEventMIB module.

Appendix C.

***************************************************************
* Note to the RFC Editor (to be removed prior to publication) *
*                                                             *
* 1) The reference to RFCXXXX within the DESCRIPTION clauses  *
* of the MIB module point to this draft and are to be         *
* assigned by the RFC Editor.                                 *
*                                                             *
* 2) The reference to RFCXXX2 throughout this document point  *
* to the current draft-ietf-manet-report-xx.txt.  This        *
* need to be replaced with the XXX RFC number.                *
*                                                             *
***************************************************************
              

Authors' Addresses

Robert G. Cole US Army CERDEC 6010 Frankford Road Aberdeen Proving Ground, Maryland 21005 USA Phone: +1 443 395 8744 EMail: robert.g.cole@us.army.mil
Joseph Macker Naval Research Laboratory Washington, D.C. 20375 USA EMail: macker@itd.nrl.navy.mil
Andy Bierman YumaWorks, Inc. Redwood City, CA 94065 EMail: andy@yumaworks.com