Internet Engineering Task Force                                  R. Cole
Internet-Draft                                            US Army CERDEC
Intended status: Standards Track Experimental                                  J. Macker
Expires: August 21, 2011 3, 2012                        Naval Research Laboratory
                                                              A. Morton
                                                       AT&T Laboratories
                                                       February 17, 2011 Bierman
                                                                 Brocade
                                                        January 31, 2012

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

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 counter and
   gauge objects for performance monitoring.  This allows a management
   station to instruct a device to build off-line reports to be
   collected asynchronously by the management station.  Further, this
   REPORT-MIB
   REPORT-SAMPLED-MIB can be configured in a proxy configuration where
   the report generation is performed on a device in close network
   proximity to the device containing the referenced counter objects.
   Hence, this capability allows network operators to reduce the SNMP
   polling traffic burden on Mobile Ad-Hoc and Disruption Tolerant
   Networks which is typical of SNMP performance management
   applications.  This
   capability also improves the accuracy of the performance reports by
   minimizing the delay variation between the reporting agent (this MIB)
   and the data monitor (the MIB containing the monitored counter
   objects).

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 August 21, 2011. 3, 2012.

Copyright Notice
   Copyright (c) 2011 2012 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 . . . . . . . . . . . . . . . . . . . . . . . . .  3
   2.  The Internet-Standard Management Framework . . . . . . . . . .  4  3
   3.  Conventions  . . . . . . . . . . . . . . . . . . . . . . . . .  4
   4.  Overview . . . . . . . . . . . . . . . . . . . . . . . . . . .  4
     4.1.  REPORT-MIB  REPORT-SAMPLED-MIB Management Model  . . . . . . . . . . . . . . .  4
     4.2.  Terms  . . . . . . . . . . . . . . . . . . . . . . . . . .  8  6
   5.  Structure of the MIB Module  . . . . . . . . . . . . . . . . .  9  6
     5.1.  Textual Conventions  . . . . . . . . . . . . . . . . . . .  9  6
     5.2.  The Statistics Group . . . . . . . . . . . . . . . . . . .  9
     5.3.  The Sampled Group  . . . . . . . . . . . . . . . . . . . . 10
     5.4.  The History Group  . . . . . . . . . . . . . . . . . . . . 11
     5.5.  7
     5.3.  The Notifications Group  . . . . . . . . . . . . . . . . . 11  7
   6.  Relationship to Other MIB Modules  . . . . . . . . . . . . . . 11  7
     6.1.  Relationship to the SNMPv2-MIB . . . . . . . . . . . . . . 11  7
     6.2.  Relationship to the RMON2-MIB  . . . . . . . . . . . . . . 11  8
     6.3.  Relationship to the TPM-MIB  . . . . . . . . . . . . . . . 12
     6.4.  MIB modules required for IMPORTS . . . . . . . . . . . . . 12  8
   7.  Definitions  . . . . . . . . . . . . . . . . . . . . . . . . . 12  8
   8.  Security Considerations  . . . . . . . . . . . . . . . . . . . 67 19
   9.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 69 22
   10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 70 22
   11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 70 22
   12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 70 22
     12.1. Normative References . . . . . . . . . . . . . . . . . . . 70 22
     12.2. Informative References . . . . . . . . . . . . . . . . . . 71 23
   Appendix A.  Change Log  . . . . . . . . . . . . . . . . . . . . . 71 23
   Appendix B.  Open Issues . . . . . . . . . . . . . . . . . . . . . 73 25
   Appendix C.    . . . . . . . . . . . . . . . . . . . . . . . . . . 74 26

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 REPORT-MIB REPORT-
   SAMPLED-MIB allows for the report generation to occur on the same
   device as containing the referenced counter object or on a device in
   close network proximity to the device with 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 REPORT-MIB REPORT-SAMPLED-MIB is useful for devices managed
   over some Mobile Ad-Hoc Networks (MANETs) or Disruption Tolerant
   Networks (DTNs).

   The REPORT-MIB

   This version of the REPORT-SAMPLED-MIB offers three types one type of off-line
   reporting.  One type
   offering reports which present statistical analysis of the objects
   being tracked; found within the reportStatsGroup.  The second type
   offering MIB offers a means to collect sampled data related to
   defined MIB objects.  This second type of reporting is contained in the
   reportSampledGroup.  The third offering reports which present
   (collect) raw data values and their time  Other types of change from the objects
   being tracked; found within the reportHistoryGroup.

   For report data are possible,
   including statistical reporting, the REPORT-MIB borrows from the RMON
   [RFC1757] ReportsControl and Reports Tables.  Here the
   reportStatsCapabilitiesGroup defines the capabilities of the device
   with respect performance monitoring data and statistical analysis.  Some
   analysis is hard-coded into the definition of the
   reportStatsDataGroup while the device can also advertise extended
   statistical reporting via the reportMetricExtDefTable.  The
   reportsControlTable specifies the report metrics, the Object ID historical data.  However, it was felt
   wise to
   monitor focus on a more limited scope off-line reporting capability
   and other aspects of the statistical report development gain experimental use and
   storage. application prior to expending energy
   developing a more extensive capability.

   For the collection of sampled data, the REPORT-MIB REPORT-SAMPLED-MIB draws
   directly from the usrHistoryGroup from RMON 2 [RFC2021]. [RFC2021] through
   application of the 'AUGMENTS' clause. .  Here the
   reportSampledControlTable allows the user to define aspects of the
   report for sampled data, including the number of MIB objects to be
   sampled and the nature of the sampling frequency and overall report
   duration.  This group uses the notion of buckets, which contained contain
   sampled data from a set of identified MIB objects sampled at the same
   time point.  The report consists of the buckets, each containing sets
   of sampled data from the selected MIB objects but at the specific
   sampling times.  The reportSampledObjectTable allows the user to
   identify the multiple MIB objects to be sampled.  The
   reportSampledDataTable contains the storage of the reported sampled
   data contained within buckets, one bucket for each time sampling
   instance.

   For the collection of raw data, the REPORT-MIB contains a
   reportHistoryGroup comprised of the reportHistoryControlTable for
   control of historical data reports and the reportHistoryDataTable for
   the storage of the historical reports.

   Various compliance groups are defined which allow for development of
   raw data collection reports, collection of sampled data reports or
   only statistical data reports, or all combinations.

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 REPORT-MIB REPORT-SAMPLED-MIB references performance objects in other MIBs
   (and in other devices) and generates offline off-line performance reports on
   related to those referenced objects.  The REPORT-MIB REPORT-SAMPLED-MIB can be
   coincident with the other MIB or can reside on another device in
   close network proximity to the device containing the referenced
   performance related object.

4.1.  REPORT-MIB  REPORT-SAMPLED-MIB Management Model

   This section describes the management model for the REPORT-MIB REPORT-SAMPLED-
   MIB process.  First, the model for the reportStatsGroup is presented.
   Then the models for the reportSampledGroup and the reportHistoryGroup
   are presented.

   Figure 1 illustrates a potential use of the REPORT-MIB REPORT-SAMPLED-MIB for
   the generation of off-line, remotely generated reports.  The
   management station on the left hand side of the illustration
   instructs the remote device to create reports through manipulation of
   the ReportCntrl Objects in the REPORT-MIB REPORT-SAMPLED-MIB resident on the
   remote device.  The reports instruct the device to monitor the status
   of specified counters (on other MIBs and potentially on other devices
   in close network proximity) periodically and to generate a set of metrics
   describing the temporal behavior of those counter values. periodically.  The reports are stored
   locally until the management station decides to pull them off the
   device.  The figure shows a case where the REPORT-
   MIB REPORT-SAMPLED-MIB
   generates a notification that Report_2 has completed, prompting the
   management station to pull Report_2 from the device.

   Mgmt       Device
   Station
                          REPORT-MIB
                          REPORT-SAMPLED-MIB         MIB_1
                          +---------+        +-----+
                          |         |        |     |
    Build_Rep_1           |+-------+|        +--+  |
       +----------------->||cntrl_1||<------>|PC|  |
                          |+-------+|<-+     +--+--+
                          |         |  |
                          |         |  |     MIB_2
                          |         |  |     +-----+
                          |            |     |     |
                          |         |  |     +--+  |
                          |         |  +---->|PC|  |
    Build_Rep_2           |+-------+|    +-->+--+--+
       +----------------->||cntrl_2||<---+
                          |+-------+|
                          |         |
                          |         |
    Build_Rep_3           |+-------+|
       +----------------->||cntrl_3||<---+   MIB_n
                          |+-------+|    |   +-----+
                          |         |    |   |     |
                          |+-----+  |    |   +--+  |
                          ||Rep_1|  |    +-->|PC|  |
                          |+-----+  |        +--+--+
                          |         |
                          |+-----+  |
       <------------------||Rep_2|  |
    Notf_Rep_2            |+-----+  |
                          |         |
                          |+-----+  |
                          ||Rep_3|  |
                          |+-----+  |
    Get_Rep_2             |         |
       +----------------->|         |
                          |         |
       <-----------------+|         |
    Send_Rep_2            +---------+

   Figure 1: REPORT-MIB REPORT-SAMPLED-MIB front-end report generation process.

   The REPORT-MIB's reportStatsGroup defines specifically a set

   This version of
   metrics which are computed within all reports.  It also allows the REPORT-SAMPLED-MIB provides for the specification collection of metric extensions
   sampled data instead of statistical data.  It does this by augmenting
   the usrHistory group from RMON2 [RFC2021] which are local to allows for the
   specific implementation
   generation of reports collecting the sampled object values binned for
   the REPORT-MIB. purpose of aggregation and efficiency of collection.  These are identified in
   defined within the reportStatsCapabilitiesGroup metricExtension Table.

   Each metric has an associated Object ID of type counter associated
   with it. reportSampledGroup.  The control table specifies a model used for this type
   of report interval and a bin
   interval. generation is based upon three tables.  The
   reportSampledControlTable defines aspects of the report interval is an integral multiple generation
   related to duration of the bin
   interval.  For each bin reporting interval, the device identifies the change in
   the counter value over the bin interval (called x_i) (or bucket)
   sizes for the report, and then
   computes the associated metric, e.g., sum, sum number of object values collected for
   each bucket.  The reportUsrHistoryObjectTable identifies the square, etc,
   over the set {x_i}.  It maintains the sum of these computations specific
   MIB objects whose values are binned within the metric objects in report.  And the 'reportStatsDataTable'.  Once
   reportSampledDataTable contains the
   report interval is complete, binned data values collected for
   the management station has enough
   information to compute a set of interesting and useful statistics.

   The computational model of the reportStatsGroup of the REPORT-MIB is
   illustrated in the figure below. report.

4.2.  Terms

   The important controls are a) following definitions apply throughout this document:

   o  Control - Objects defined within this document which set the
   contrlInterval, b)
      parameters for specific reports to be generated offline on the cntrlBinInterval, c) the specific
   counterObjectId, and d)
      remote managed device.

   o  Data - Objects which hold the metric.  In sampled report data.

5.  Structure of the figure x_i represents MIB Module

   This section presents the
   ith value structure of the counter change, i.e., x_i = counterValue(t_i+1) -
   counterValue(t_i). REPORT-SAMPLED-MIB module.
   The metrics reported are then computed from the
   set (x_i).  Three examples objects are identified in arranged into the figure, e.g.,
   StatSumX, StatSumSq and StatMaxX.  Other existing and potential
   metrics are discussed below.

  |
  |<--------------------- cntrlInterval ---------------------------->|
  |                                                                  |

  |     |     |     |     |                              |     |     |
  | x_0 | x_1 | x_2 | x_3 |            ...               |x_n-2|x_n-1|
  +-----+-----+-----+-----+---                        ---+-----+-----+

  ^     ^     ^     ^     ^                              ^     ^     ^
  t_0   t_1   t_2   t_3   t_4                            t_n-2 t_n-1 t_n

  where t_i following groups:

   o  reportSampledMIBNotifications - t_i-1 = cntrlBinInterval
        n = cntrlInterval / cntrlBinInterval

        StatSumX = Sum(x_i)  from i=0, ..., n-1
        StatSumSq = Sum((x_i)^2) from i=0, ..., n-1
        StatMaxX = Max(x_i) for i=0, ..., n-1

  Figure 2: REPORT-MIB statistical analysis computation process.

   This capability then allows for the computation of various
   significant statistics related to defines the behavior of notifications
      associated with the referenced
   object. REPORT-SAMPLED-MIB.

   o  Maximum and Minimum  reportSampledMIBObjects - defines the maximum and objects forming the minimum change in basis
      for the
      referenced object during a single cntrlBinInterval during REPORT-SAMPLED-MIB.  These objects are divided up by
      function into the
      cntrlInterval. following groups (currently only one group is
      defined):

   o  Arithmetic Mean

      *  Sampled Group - the mean change in the referenced object over
      all control bin intervals during the cntrlInterval. This is
      derived from group contains the objects which support
         the StatSumX quantity. generation (collection) of reports exposing sampled data
         values.

   o  Variance  reportSampledMIBConformance - the variance Defines a variety of conformance of
      implementations of this REPORT-SAMPLED-MIB.

5.1.  Textual Conventions

   No textual conventions are used in the change REPORT-SAMPLED-MIB.

5.2.  The Sampled Group

   The Sampled Group contains tables which allows for the development of
   reports based upon sampling the referenced object
      over all control bin intervals counter objects at
   specified intervals.  The development of this group within the cntrlInterval.  This is
      derived from the StatSumSq and
   REPORT-SAMPLED-MIB which augments the StatSumX quantities.

   These are accessible User History group from the statistical datum provided by this
   RMON 2 MIB
   module.  Other statistics are derivable including, e.g., [RFC2021].  The Sampled Group is composed of:

   o  reportSampledControlTable - allows for the slope setting of
   a least-squares fit to the rate of change
      parameters of the referenced object.
   These are described below.

   The REPORT-MIB also provides for report.

   o  reportSampledObjectTable - sets the collection of referenced objects to be
      sampled data
   instead of statistical data.  It does this by importing (copying) during the
   usrHistory group from RMON2 [RFC2021] which allows for test.  With this capability, the generation management
      application can reference multiple objects, all of reports collecting the which are
      sampled object values binned for during the
   purpose of aggregation test and efficiency reported out through the
      reportSampledData Table.

   o  reportSampledDataTable - contains the reports.

5.3.  The Notifications Group

   The Notifications Sub-tree contains the list of collection.  These are
   defined notifications
   supported within the reportSampledGroup. REPORT-SAMPLED-MIB and their intended purpose or
   utility.  The model used for single notification defined within this type
   of report generation MIB module is based
   the 'reportSampledNewDataReport'.  This notification is sent by the
   agent upon three tables.  The
   reportSampledControlTable defines aspects completion of the a given report generation
   related to duration of on the reporting interval, device.  The
   notification contains the bin (or bucket)
   sizes for following objects:
   'usrHistoryControlOwner', the report, entity that configured this report
   entry, and the number of object values collected for
   each bucket.  The reportUsrHistoryObjectTable identifies 'reportSampledReportIndex', the specific
   MIB objects whose values are binned within index of the data
   table for this report.  And  Collectively, these objects allow the
   reportSampledDataTable contains
   management application to pull the binned data values collected for completed report from the report. agent.

6.  Relationship to Other MIB Modules

   The REPORT-MIB also provides for text of this section specifies the collection relationship of historical data
   instead of statistical or sampled data.  It does the MIB
   modules contained in this by defining 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
   reportHistoryControlTable for MIB module contained within this document are
   identified in this section.

6.1.  Relationship to the control of SNMPv2-MIB

   The 'system' group in the historical reports SNMPv2-MIB [RFC3418] is defined as being
   mandatory for all systems, and the reportHistoryDataTable for objects apply to the storage entity as a
   whole.  The 'system' group provides identification of the historical
   reports.

4.2.  Terms management
   entity and certain other system-wide data.  The following definitions apply throughout this document:

   o  Capabilities - Objects REPORT-SAMPLED-MIB
   does not duplicate those objects.

6.2.  Relationship to the RMON2-MIB

   The REPORT-SAMPLED-MIB is closely related to the capabilities RMON2-MIB [RFC2021]
   usrHistoryGroup.  Specifically, the reportSampledGroup is a direct
   copy of the device
      and MIB implemented on RMON2 User History Group, with the device.  Some objects are explicitly
      defined names changed to
   comply with the naming conventions within the REPORT-MIB.  Other capabilities can be exposed
      through REPORT-SAMPLED-MIB.
   Further, the REPORT-MIB, but which are not explicitly defined
      within this document.  These later capabilities include objects,
      e.g., for new metrics.

   o  Control - Objects defined design and use of the control tables within this document which set the
      parameters for specific reports to be generated offline on REPORT-
   SAMPLED-MIB draw exactly from the definition of these table
   structures in the
      remote managed device.

   o  Data - Objects which hold earlier RMON MIBs through the report data, either statistical,
      sampled or raw history data.

5.  Structure use of the MIB Module

   This section presents 'AUGMENTS'
   clause within the structure of 'reportSampledControlTable' and the REPORT-MIB
   'reportSampledTable' in this MIB module.  The
   objects

6.3.  MIB modules required for IMPORTS

   Citations are arranged into the following groups:

   o  reportMIBNotifications - defines the notifications associated with
      the REPORT-MIB.

   o  reportMIBObjects - defines the objects forming the basis for the
      REPORT MIB.  These objects are divided up by function into the
      following groups:

   o

      *  Statistics Group - This group contains the objects which
         support the generation of reports of a statistical nature.

      *  Sampled Group - This group contains the objects which support
         the generation (collection) of reports exposing sampled data
         values.

      *  History Group - This group contains the objects which support
         the generation (collection) of historical reports exposing raw
         data values.

   o  reportMIBConformance - Defines a variety of conformance of
      implementations of this REPORT-MIB.

5.1.  Textual Conventions

   The textual conventions used in the REPORT-MIB are as follows.  The
   RowStatus textual convention is imported from RFC 2579 [RFC2579].

5.2.  The Statistics Group

   The REPORT-MIB Statistics Group contains objects which allows for the
   generation of statistical analysis reports.  For example, this group
   can be exercised to generate the mean and variance of the referenced
   counter object.  The Statistics Group is composed of:

   o  reportStatsCapabilitiesGroup - lists the statistics collections
      capabilities of this device.  Certain statistics are mandatory,
      i.e., hard coded into the MIB definitions.  While, the
      capabilities group allows the developer to add additional
      statistical analysis capabilities.

   o  reportStatsControlGroup - allows the management application to
      define the parameters of the reports.

   o  reportStatsDataGroup - presents the data from the specified
      reports.

   As an example of how the metrics are to be computed within the
   REPORT-MIB, consider the standard metric object
   'reportStatsDataStatSumX'.  For each bin interval defined by the
   object reportCntrlReportsBinInterval, the change in the value of the
   counter pointed to by the Object ID reportCntrlReportsPriObjID is
   calculated.  Then this (delta) value is added to the current value of
   the value contained in the object 'reportStatsDataStatSumX'.  Then,
   if interested in computing the average change in this object (sampled
   each bin interval) for the duration of the report, the management
   station simply divides reportStatsDataStatSumX by
   reportStatsDataStatN.  Although this is a trivial example because the
   value of reportAggrReportStatSumX is simple the difference in the
   counter reportCntrolReportsPriObjID at the start and the end of the
   total report interval, the other metrics defined are not as trivial.

   The objects 'reportStatsDataOverflowStatSumX' and
   'reportStatsDataHCSumX' are borrowed from RMON [RFC2021] and exist to
   handle integer overflow situations where, e.g.,
   'reportStatsDataStatSumX' overruns its maximum value numerous times.

   Computation of the least-square fit of the data collected for a
   report can be accomplished.  (NOTE: describe this capability here.)

5.3.  The Sampled Group

   The Sampled Group contains tables which allows for the development of
   reports based upon sampling the referenced counter objects at
   specified intervals.  The development of this group within the
   REPORT-MIB follows exactly the User History group from the RMON 2 MIB
   [RFC2021].  The Sampled Group is composed of:

   o  reportSampledControlTable - allows for the setting of the
      parameters of the report.

   o  reportSampledObjectTable - sets the referenced objects to be
      sampled during the test.  With this capability, the management
      application can reference multiple objects, all of which are
      sampled during the test and reported out through the
      reportSampledData Table.

   o  reportSampledDataTable - contains the reports.

5.4.  The History Group

   The History Group contains tables which capture information on change
   events for the referenced objects.  Depending upon the referenced
   objects, this could force the generation of large amounts of data.
   Care should be exercised when considering the use of this capability.

   o  reportHistoryControlTable - defines the parameters for the test.

   o  reportHistoryDataTable - presents the reports associated with the
      constructed tests.

5.5.  The Notifications Group

   The Notifications Sub-tree contains the list of notifications
   supported within the REPORT-MIB and their intended purpose or
   utility.  (Note: This group is currently empty.)

6.  Relationship to Other MIB Modules

   [TODO]: 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 REPORT-MIB does not
   duplicate those objects.

6.2.  Relationship to the RMON2-MIB

   The REPORT-MIB is closely related in many aspects to the RMON2-MIB
   [RFC2021].  Specifically, the reportSampledGroup is a direct copy of
   the RMON2 User History Group, with the names changed to comply with
   the naming conventions within the REPORT-MIB.  Further, the design
   and use of the control tables within the REPORT-MIB draw exactly from
   the definition of these table structures in the earlier RMON MIBs.

6.3.  Relationship to the TPM-MIB

   The REPORT-MIB pulled the reportStatsGroup directory from the TPM-MIB
   [RFC4150].  The table structures and the choice of statistics draws
   directly from the earlier TPM-MIB developed within the RMON Working
   Group.

6.4.  MIB modules required for IMPORTS

   [TODO]: 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.  If there are imported items
   in the MIB module, such as Textual Conventions, that are not already
   cited, they can be cited in text here.  Since relationships to other
   MIB modules should be described in the narrative text, this section
   is typically used to cite modules from which Textual Conventions are
   imported.

   The REPORT-MIB module IMPORTS objects from SNMPv2-SMI [RFC2578],
   SNMPv2-TC [RFC2579], SNMPv2-CONF [RFC2580], and IF-MIB [RFC2863]

7.  Definitions

REPORT-MIB DEFINITIONS ::= BEGIN

IMPORTS

   ZeroBasedCounter32
      FROM RMON2-MIB                           -- [RFC2021]

   MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
   Counter32, Gauge32, Unsigned32, Integer32, mib-2
      FROM SNMPv2-SMI                          -- [RFC2578]

   TEXTUAL-CONVENTION, RowStatus,
   TimeStamp, StorageType
      FROM SNMPv2-TC                           -- [RFC2579]

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

   OwnerString
      FROM RMON-MIB                            -- [RFC2819]

   ZeroBasedCounter64
      FROM HCNUM-TC                            -- [RFC2856]

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

   InetAddress, InetAddressType
      FROM INET-ADDRESS-MIB                    -- [RFC4001]

   SspmClockSource, SspmClockMaxSkew,
   SspmMicroSeconds
      FROM SSPM-MIB                           -- [RFC4149]
   ;

reportMIB MODULE-IDENTITY
   LAST-UPDATED "201102171300Z"  -- February 17, 2011
   ORGANIZATION "IETF MANET Working Group"
   CONTACT-INFO
      "WG E-Mail: manet@ietf.org

       WG Chairs: ian.chakeres@gmail.com
                  jmacker@nrl.navy.mil

       Editors:   Robert G. Cole
                  US Army CERDEC
                  328 Hopkins Road
                  Aberdeen Proving Ground, MD 21005
                  USA
                  +1 410 278-6779
                  robert.g.cole@us.army.mil

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

                  Al Morton
                  AT&T Laboratories
                  Middletown, N.J. 07724
                  USA
                  amorton@att.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    "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
     ::= { mib-2 998 }   -- to be assigned by IANA

-- TEXTUAL CONVENTIONs

   ReportMetricDefID ::= TEXTUAL-CONVENTION
       DISPLAY-HINT "d"
       STATUS       current
       DESCRIPTION
           "An index that identifies through reference to a specific
           statistical metrics.
           "
       SYNTAX       Unsigned32 (1..2147483647)

--
-- Top-Level Object Identifier Assignments
--

reportMIBNotifications OBJECT IDENTIFIER ::= { reportMIB 0 }
reportMIBObjects       OBJECT IDENTIFIER ::= { reportMIB 1 }
reportMIBConformance   OBJECT IDENTIFIER ::= { reportMIB 2 }

-- The reportMIBObjects Assignments:
--      reportStatsGroup           - 1
--      reportSampledGroup         - 2
--      reportHistoryGroup         - 3

reportStatsGroup       OBJECT IDENTIFIER ::= { reportMIBObjects 1 }
-- Then, the reportStatsGroup assignments are :
--      reportStatsCapabilitiesGroup    - 1
--      reportStatsControlGroup         - 2
--      reportStatsDataGroup            - 3

-- reportStatsCapabilitiesGroup
--    This group contains the REPORT objects that identify specific
--    capabilities within this device related to REPORT functions.

reportCapabilitiesGroup  OBJECT IDENTIFIER ::= { reportStatsGroup 1 }

reportClockResolution  OBJECT-TYPE
    SYNTAX      SspmMicroSeconds
    MAX-ACCESS  read-only
    STATUS      current
    -- UNITS       Microseconds
    DESCRIPTION
        "A read-only variable indicating the resolution
         of the measurements possible by this device."
    ::= { reportCapabilitiesGroup 1 }

reportClockMaxSkew  OBJECT-TYPE
    SYNTAX      SspmClockMaxSkew
    MAX-ACCESS  read-only
    STATUS      current
    -- UNITS       Seconds
    DESCRIPTION
        "A read-only variable indicating the maximum
         offset error due to skew of the local clock
         over the time interval 86400 seconds, in seconds."
    ::= { reportCapabilitiesGroup 2 }

reportClockSource  OBJECT-TYPE
    SYNTAX      SspmClockSource
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A read-only variable indicating the source of the clock.
         This is provided to allow a user to determine how accurate
         the timing mechanism is compared with other devices."
    ::= { reportCapabilitiesGroup 3 }

reportMetricDirLastChange  OBJECT-TYPE
    SYNTAX      TimeStamp
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value of sysUpTime at the time the
        reportTransMetricDirTable was last modified, through
        modifications of the reportTransMetricDirConfig object."
    ::= { reportCapabilitiesGroup 4 }

-- REPORT Metric Extensions Definition Table

reportMetricExtDefTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF ReportMetricExtDefEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The reportMetricExtDefTable describes the metrics
        available to the REPORT-MIB.  The reportMetricExtDefTable
        can define metrics by referencing existing IETF,
        ITU, and other standards organizations' documents,
        including enterprise-specific documents.
        Examples of appropriate references include the
        ITU-T Recommendation Y.1540 [Y.1540] on IP
        packet transfer performance metrics and the
        IETF documents from the IPPM WG; e.g., RFC2681
        on the round trip delay metric [RFC2681] or
        RFC3393 on the delay variation metric [RFC3393].
        Other examples include RFC2679 [RFC2679], RFC2680
        [RFC2680], and RFC3432 [RFC3432].  Although no
        specific metric is mandatory, implementations
        should, at a minimum, support a round-trip delay
        and a round-trip loss metric.

        This table contains one row per metric supported by this
        agent, and it should be populated during system
        initialization."
    ::= { reportCapabilitiesGroup 5 }

reportMetricExtDefEntry  OBJECT-TYPE
    SYNTAX      ReportMetricExtDefEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Information about a particular metric."
    INDEX   { reportMetricExtDefID }
    ::= { reportMetricExtDefTable 1 }

ReportMetricExtDefEntry ::= SEQUENCE {
      reportMetricExtDefID             ReportMetricDefID,
      reportMetricExtDefType           INTEGER,
      reportMetricExtDefName           SnmpAdminString,
      reportMetricExtDefOperation      SnmpAdminString,
      reportMetricExtDefReference      SnmpAdminString
    }

reportMetricExtDefID OBJECT-TYPE
    SYNTAX      ReportMetricDefID
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The index for this entry.  This object identifies
         the particular metric in this MIB module."
    ::= { reportMetricExtDefEntry 1 }

reportMetricExtDefType  OBJECT-TYPE
    SYNTAX      INTEGER  {
                          other(1),
                          singleObjMetric(2),
                          multipleObjMetric(3)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The basic type of metric indicated by this entry.

        The value 'other(1)' indicates that this metric cannot be
        characterized by any of the remaining enumerations specified
        for this object.

        The value 'connectMetric(2)' indicates that this metric
        measures connectivity characteristics.

        The value 'delayMetric(3)' indicates that this metric
        measures delay characteristics.
        "
    ::= { reportMetricExtDefEntry 2 }

reportMetricExtDefName  OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
       "The textual name of this metric.  For example, if
        this reportMetricDefEntry identified the IPPM metric for
        round trip delay, then this object should contain
        the value, e.g., 'Type-P-Round-Trip-Delay'."
    ::= { reportMetricExtDefEntry 3 }

reportMetricExtDefOperation  OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The textual description of the operations necessary
        to compute this metric.  For example, if
        this reportMetricDefEntry identified the IPPM metric for
        round trip delay, then this object should contain
        the value, e.g., 'Type-P-Round-Trip-Delay'."
    ::= { reportMetricExtDefEntry 4 }

reportMetricExtDefReference  OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object contains a reference to the document that
        defines this metric.  If this document is available online
        via electronic download, then a de-referencable URL
        should be specified in this object.  The implementation
        must support an HTTP URL type and may support additional
        types of de-referencable URLs such as an FTP type.

        For example, if this reportMetricDefName identified the IPPM
        metric 'Type-P-Round-Trip-Delay', then this object should
        contain the value, e.g.,
        'http://www.ietf.org/rfc/rfc2681.txt'."
    ::= { reportMetricExtDefEntry 5 }

-- Stats Control Group
--     This and the following tables are modeled
--     after the report control and collection
--     capabilities found in RMON 2, RFC 2021

reportStatsControlGroup OBJECT IDENTIFIER ::= {reportStatsGroup 2}

reportStatsControlTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF ReportStatsControlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The reportStatsControlTable is the controlling entry
        that manages the population of studies in the
        Report for selected time intervals.

        Note that this is not like the typical RMON
        controlTable and dataTable in which each entry creates
        its own data table.  Each entry in this table enables the
        creation of multiple data tables on a study basis.  For each
        interval, the study is updated in place, and the current
        data content of the table becomes invalid.

        The control table entries are persistent across
        system reboots."
    ::= { reportStatsControlGroup 1 }

reportStatsControlEntry  OBJECT-TYPE
    SYNTAX      ReportStatsControlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A conceptual row in the reportStatsControlTable.

        An example of the indexing of this entry is
        reportGenReportCntrInterval.1"
    INDEX { reportStatsControlIndex }
    ::= { reportStatsControlTable 1 }

ReportStatsControlEntry ::= SEQUENCE {
    reportStatsControlIndex             Unsigned32,
    reportStatsControlInterval          Unsigned32,
    reportStatsControlBinInterval       Unsigned32,
    reportStatsControlPriObjID          OBJECT IDENTIFIER,
    reportStatsControlPriObjIpAddrType  InetAddressType,
    reportStatsControlPriObjIPAddr      InetAddress,
    reportStatsControlSecObj1ID         OBJECT IDENTIFIER,
    reportStatsControlSecObj1IpAddrType InetAddressType,
    reportStatsControlSecObj1IPAddr     InetAddress,
    reportStatsControlSecObj2ID         OBJECT IDENTIFIER,
    reportStatsControlSecObj2IpAddrType InetAddressType,
    reportStatsControlSecObj2IPAddr     InetAddress,
    reportStatsControlSecObj3ID         OBJECT IDENTIFIER,
    reportStatsControlSecObj3IpAddrType InetAddressType,
    reportStatsControlSecObj3IPAddr     InetAddress,
    reportStatsControlSecObj4ID         OBJECT IDENTIFIER,
    reportStatsControlSecObj4IpAddrType InetAddressType,
    reportStatsControlSecObj4IPAddr     InetAddress,
    reportStatsControlSecObj5ID         OBJECT IDENTIFIER,
    reportStatsControlSecObj5IpAddrType InetAddressType,
    reportStatsControlSecObj5IPAddr     InetAddress,
    reportStatsControlMetricExt1        ReportMetricDefID,
    reportStatsControlMetricExt2        ReportMetricDefID,
    reportStatsControlMetricExt3        ReportMetricDefID,
    reportStatsControlMetricExt4        ReportMetricDefID,
    reportStatsControlMetricExt5        ReportMetricDefID,
    reportStatsControlReqReports        Unsigned32,
    reportStatsControlGrantedReports    Unsigned32,
    reportStatsControlStartTime         TimeStamp,
    reportStatsControlReportNumber      Unsigned32,
    reportStatsControlInsertsDenied     Counter32,
    reportStatsControlOwner             OwnerString,
    reportStatsControlStorageType       StorageType,
    reportStatsControlStatus            RowStatus
}

reportStatsControlIndex  OBJECT-TYPE
    SYNTAX      Unsigned32 (1..65535)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "An index that uniquely identifies an entry in the
        reportStatsControlTable.  Each such entry defines a unique
        report whose results are placed in the reportGenReportTable
        on behalf of this reportStatsControlEntry."
    ::= { reportStatsControlEntry 1 }

reportStatsControlInterval  OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "Seconds"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "The interval in seconds over which data is accumulated before
        being aggregated into a report in the reportGenReportTable.
        All reports with the same reportStatsControlIndex will be
        based on the same interval.

        The value of the reportStatsControlInterval should be
        an integral multiple of the value of the
        reportStatsControlBinInterval.

        This object may not be modified if the associated
        reportStatsControlStatus object is equal to active(1)."
    DEFVAL { 3600 }
    ::= { reportStatsControlEntry 2 }

reportStatsControlBinInterval  OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "Seconds"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "The interval in seconds between which the value of the
        reportStatsControlPriObjID and SecObjIDs are polled
        for the purpose of generating the metric values associated
        with this report.  All reports with the same
        reportStatsControlIndex will be based on the
        same bin interval.

        This object may not be modified if the associated
        reportStatsControlStatus object is equal to active(1)."
    DEFVAL { 3600 }
    ::= { reportStatsControlEntry 3 }

reportStatsControlPriObjID  OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This identifies the primary counter object to be
        monitored within this report.

        This object may not be modified if the associated
        reportStatsControlStatus object is equal to active(1)."
    ::= { reportStatsControlEntry 4 }

reportStatsControlPriObjIpAddrType  OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This identifies the IP address type
        of the IP address associated with the
        primary counter object to be
        monitored within this report.

        This object may not be modified if the associated
        reportStatsControlStatus object is equal to active(1)."
    ::= { reportStatsControlEntry 5 }

reportStatsControlPriObjIPAddr  OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This identifies the IP addree of the
        primary counter object to be
        monitored within this report.

        This object may not be modified if the associated
        reportStatsControlStatus object is equal to active(1)."
    ::= { reportStatsControlEntry 6 }

reportStatsControlSecObj1ID  OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This identifies the secondary counter object to be
        monitored within this report associated with the
        specified reportStatsControlMetricExt1.  If the
        reportStatsControlMetricExt1 is a simple metric, then
        the value of this reportStatsControlSecObj1ID is
        set to '0'.

        This object may not be modified if the associated
        reportStatsControlStatus object is equal to active(1)."
    ::= { reportStatsControlEntry 7 }

reportStatsControlSecObj1IpAddrType  OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This identifies the IP address type
        of the IP address associated with the
        secondary counter object to be
        monitored within this report.

        This object may not be modified if the associated
        reportStatsControlStatus object is equal to active(1)."
    ::= { reportStatsControlEntry 8 }

reportStatsControlSecObj1IPAddr  OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This identifies the IP addree of the
        secondary counter object to be
        monitored within this report.

        This object may not be modified if the associated
        reportStatsControlStatus object is equal to active(1)."
    ::= { reportStatsControlEntry 9 }

reportStatsControlSecObj2ID  OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This identifies the secondary counter object to be
        monitored within this report associated with the
        specified reportStatsControlMetricExt2.  If the
        reportStatsControlMetricExt2 is a simple metric, then
        the value of this reportStatsControlSecObj2ID is
        set to '0'.

        This object may not be modified if the associated
        reportStatsControlStatus object is equal to active(1)."
    ::= { reportStatsControlEntry 10 }

reportStatsControlSecObj2IpAddrType  OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This identifies the IP address type
        of the IP address associated with the
        secondary counter object to be
        monitored within this report.

        This object may not be modified if the associated
        reportStatsControlStatus object is equal to active(1)."
    ::= { reportStatsControlEntry 11 }

reportStatsControlSecObj2IPAddr  OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This identifies the IP addree of the
        secondary counter object to be
        monitored within this report.

        This object may not be modified if the associated
        reportStatsControlStatus object is equal to active(1)."
    ::= { reportStatsControlEntry 12 }

reportStatsControlSecObj3ID  OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This identifies the secondary counter object to be
        monitored within this report associated with the
        specified reportStatsControlMetricExt3.  If the
        reportStatsControlMetricExt3 is a simple metric, then
        the value of this reportStatsControlSecObj3ID is
        set to '0'.

        This object may not be modified if the associated
        reportStatsControlStatus object is equal to active(1)."
    ::= { reportStatsControlEntry 13 }

reportStatsControlSecObj3IpAddrType  OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This identifies the IP address type
        of the IP address associated with the
        secondary counter object to be
        monitored within this report.

        This object may not be modified if the associated
        reportStatsControlStatus object is equal to active(1)."
    ::= { reportStatsControlEntry 14 }

reportStatsControlSecObj3IPAddr  OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This identifies the IP addree of the
        secondary counter object to be
        monitored within this report.

        This object may not be modified if the associated
        reportStatsControlStatus object is equal to active(1)."
    ::= { reportStatsControlEntry 15 }

reportStatsControlSecObj4ID  OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This identifies the secondary counter object to be
        monitored within this report associated with the
        specified reportStatsControlMetricExt4.  If the
        reportStatsControlMetricExt4 is a simple metric, then
        the value of this reportStatsControlSecObj4ID is
        set to '0'.

        This object may not be modified if the associated
        reportStatsControlStatus object is equal to active(1)."
    ::= { reportStatsControlEntry 16 }

reportStatsControlSecObj4IpAddrType  OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This identifies the IP address type
        of the IP address associated with the
        secondary counter object to be
        monitored within this report.

        This object may not be modified if the associated
        reportStatsControlStatus object is equal to active(1)."
    ::= { reportStatsControlEntry 17 }

reportStatsControlSecObj4IPAddr  OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This identifies the IP addree of the
        secondary counter object to be
        monitored within this report.

        This object may not be modified if the associated
        reportStatsControlStatus object is equal to active(1)."
    ::= { reportStatsControlEntry 18 }

reportStatsControlSecObj5ID  OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This identifies the secondary counter object to be
        monitored within this report associated with the
        specified reportStatsControlMetricExt5.  If the
        reportStatsControlMetricExt5 is a simple metric, then
        the value of this reportStatsControlSecObj5ID is
        set to '0'.

        This object may not be modified if the associated
        reportStatsControlStatus object is equal to active(1)."
    ::= { reportStatsControlEntry 19 }

reportStatsControlSecObj5IpAddrType  OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This identifies the IP address type
        of the IP address associated with the
        secondary counter object to be
        monitored within this report.

        This object may not be modified if the associated
        reportStatsControlStatus object is equal to active(1)."
    ::= { reportStatsControlEntry 20 }

reportStatsControlSecObj5IPAddr  OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This identifies the IP addree of the
        secondary counter object to be
        monitored within this report.

        This object may not be modified if the associated
        reportStatsControlStatus object is equal to active(1)."
    ::= { reportStatsControlEntry 21 }

reportStatsControlMetricExt1  OBJECT-TYPE
    SYNTAX      ReportMetricDefID
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This identifies the first metric extension placed
        in the reportGenReportTable.  If no metric extension
        is requested, then this object value is set to '0'.

        If this metric is defined on a single counter object,
        then only the reportStatsControlPriObjID is set, while
        the value of the reportStatsControlSecObjID is
        set to '0'.  Else, the reportStatsControlSecObjID
        is set in accoradance with the instruction in the
        definition of the metric extension found in the
        reportCapabilitiesMetwircExtTable above.

        This object may not be modified if the associated
        reportStatsControlStatus object is equal to active(1)."
    ::= { reportStatsControlEntry 22 }

reportStatsControlMetricExt2  OBJECT-TYPE
    SYNTAX      ReportMetricDefID
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This identifies the second metric extension placed
        in the reportGenReportTable.  If no metric extension
        is requested, then this object value is set to '0'.

        If this metric is defined on a single counter object,
        then only the reportStatsControlPriObjID is set, while
        the value of the reportStatsControlSecObjID is
        set to '0'.  Else, the reportStatsControlSecObjID
        is set in accoradance with the instruction in the
        definition of the metric extension found in the
        reportCapabilitiesMetwircExtTable above.

        This object may not be modified if the associated
        reportStatsControlStatus object is equal to active(1)."
    ::= { reportStatsControlEntry 23 }

reportStatsControlMetricExt3  OBJECT-TYPE
    SYNTAX      ReportMetricDefID
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This identifies the third metric extension placed
        in the reportGenReportTable.  If no metric extension
        is requested, then this object value is set to '0'.

        If this metric is defined on a single counter object,
        then only the reportStatsControlPriObjID is set, while
        the value of the reportStatsControlSecObjID is
        set to '0'.  Else, the reportStatsControlSecObjID
        is set in accoradance with the instruction in the
        definition of the metric extension found in the
        reportCapabilitiesMetwircExtTable above.

        This object may not be modified if the associated
        reportStatsControlStatus object is equal to active(1)."
    ::= { reportStatsControlEntry 24 }

reportStatsControlMetricExt4  OBJECT-TYPE
    SYNTAX      ReportMetricDefID
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This identifies the fourth metric extension placed
        in the reportGenReportTable.  If no metric extension
        is requested, then this object value is set to '0'.

        If this metric is defined on a single counter object,
        then only the reportStatsControlPriObjID is set, while
        the value of the reportStatsControlSecObjID is
        set to '0'.  Else, the reportStatsControlSecObjID
        is set in accoradance with the instruction in the
        definition of the metric extension found in the
        reportCapabilitiesMetwircExtTable above.

        This object may not be modified if the associated
        reportStatsControlStatus object is equal to active(1)."
    ::= { reportStatsControlEntry 25 }

reportStatsControlMetricExt5  OBJECT-TYPE
    SYNTAX      ReportMetricDefID
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This identifies the fifth metric extension placed
        in the reportGenReportTable.  If no metric extension
        is requested, then this object value is set to '0'.

        If this metric is defined on a single counter object,
        then only the reportStatsControlPriObjID is set, while
        the value of the reportStatsControlSecObjID is
        set to '0'.  Else, the reportStatsControlSecObjID
        is set in accoradance with the instruction in the
        definition of the metric extension found in the
        reportCapabilitiesMetwircExtTable above.

        This object may not be modified if the associated
        reportStatsControlStatus object is equal to active(1)."
    ::= { reportStatsControlEntry 26 }

reportStatsControlReqReports  OBJECT-TYPE
    SYNTAX      Unsigned32 (1..65535)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The number of saved reports requested to be allocated on
        behalf of this entry.

        This object may not be modified if the associated
        reportStatsControlStatus object is equal to active(1)."
    ::= { reportStatsControlEntry 27 }

reportStatsControlGrantedReports  OBJECT-TYPE
    SYNTAX      Unsigned32 (0..65535)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of saved reports the agent has allocated based
        on the requested amount in reportStatsControlReqReports.
        Because each report can have many entries, the total number
        of entries allocated will be this number multiplied by the
        value of reportStatsControlGrantedSize, or by 1 if that
        object doesn't exist.

        When the associated reportStatsControlReqReports object is
        created or modified, the agent should set this object as
        closely to the requested value as is possible for the
        particular implementation and available resources.  When
        considering available resources, the agent must consider its
        ability to allocate this many reports, each with the number
        of entries represented by reportStatsControlGrantedSize, or
        by 1 if that object doesn't exist.

        Note that although the storage required for each report may
        fluctuate due to changing conditions, the agent must continue
        to have storage available to satisfy the full report size for
        all reports, when necessary.  Further, the agent must not
        lower this value except as a result of a set to the
        associated reportStatsControlReqSize object."
    ::= { reportStatsControlEntry 28 }

reportStatsControlStartTime  OBJECT-TYPE
    SYNTAX      TimeStamp
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value of sysUpTime when the system began processing the
        report in progress.  Note that the report in progress is not
        available.

        This object may be used by the management station to figure
        out the start time for all previous reports saved for this
        reportStatsControlEntry, as reports are started at fixed
        intervals."
    ::= { reportStatsControlEntry 29 }

reportStatsControlReportNumber  OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of the report in progress.  When an
        reportStatsControlEntry is activated, the first report will
        be numbered zero."
    ::= { reportStatsControlEntry 30 }

reportStatsControlInsertsDenied  OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of attempts to add an entry to reports for
        this ReportStatsControlEntry that failed because the
        number of entries would have exceeded
        reportStatsControlGrantedSize.

        This number is valuable in determining if enough
        entries have been allocated for reports
        in light of fluctuating network
        usage.  Note that an entry that is denied will
        often be attempted again, so this number will
        not predict the exact number of additional entries
        needed, but it can be used to
        understand the relative magnitude of the problem.

        Also note that there is no ordering specified for
        the entries in the report;
        thus, there are no rules for which entries
        will be omitted when not enough entries are available.
        As a consequence, the agent is not required
        to delete 'least valuable' entries first."
    ::= { reportStatsControlEntry 31 }

reportStatsControlOwner  OBJECT-TYPE
    SYNTAX      OwnerString
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The entity that configured this entry and is
        therefore using the resources assigned to it.

        This object may not be modified if the associated
        reportStatsControlStatus object is equal to active(1)."
    ::= { reportStatsControlEntry 32 }

reportStatsControlStorageType  OBJECT-TYPE
    SYNTAX      StorageType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The storage type of this reportStatsControlEntry.  If the
        value of this object is 'permanent', no objects in this row
        need to be writable."
    ::= { reportStatsControlEntry 33 }

reportStatsControlStatus  OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The status of this performance control entry.

        An entry may not exist in the active state unless each
        object in the entry has an appropriate value.

        Once this object is set to active(1), no objects in the
        reportStatsControlTable can be changed.

        If this object is not equal to active(1), all associated
        entries in the reportGenReportTable shall be deleted."
    ::= { reportStatsControlEntry 34 }

-- Stats Data Group

reportStatsDataGroup  OBJECT IDENTIFIER ::= { reportStatsGroup 3 }

-- Report Stats Data Table

reportStatsDataTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF ReportStatsDataEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains completed
        studies for each of the control table entries in
        reportAggrReportCntrlTable.  These studies are
        provided based on the selections and parameters
        found for the entry in the
        reportAggregateReportsCntrlTable.

        The performance statistics are specified in the
        reportTransMetricDirTable associated with the
        application in question and indexed by
        appLocalIndex and reportTransMetricIndex."
    ::= { reportStatsDataGroup 1 }

reportStatsDataEntry  OBJECT-TYPE
    SYNTAX      ReportStatsDataEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A conceptual row in the reportStatsDataTable.

        The reportStatsControlIndex value in the
        index identifies the reportStatsControlEntry
        on whose behalf this entry was created.

        The reportStatsDataIndex value in the index
        identifies which report
        (in the series of reports) this entry is a part of.

        The reportStatsDataServerAddress value in the
        index identifies the network layer address of the
        device generatung this report.

        An example of the indexing of this entry is
        reportStatsDataStatN.3.15.34.262.18.4.128.2.6.7.3256521"
    INDEX { reportStatsControlIndex,
            reportStatsDataIndex
          }
    ::= { reportStatsDataTable 1 }

-- Note: Thinking about restructuring this
--    table somewhat, in order
--    to allow for a more complete report information to
--    simplify report collection from the remote
--    mgmt application.  Indicating below potential
--    additional objects.
ReportStatsDataEntry ::= SEQUENCE {
    reportStatsDataIndex                Unsigned32,
    -- reportStatsDataServerAddrType    inetAddressType,
    -- reportStatsDataServerAddress     inetAddress,
    reportStatsDataServerAddress        OCTET STRING,
    -- reportStatsDataReportStartTime   TimeStamp,
    -- reportStatsDataReportInterval    Unsigned32,
    reportStatsDataStatN                ZeroBasedCounter32,
    reportStatsDataStatSumX             ZeroBasedCounter32,
    reportStatsDataOverflowStatSumX     ZeroBasedCounter32,
    reportStatsDataHCStatSumX           ZeroBasedCounter64,
    reportStatsDataStatMaximum          ZeroBasedCounter32,
    reportStatsDataStatMinimum          ZeroBasedCounter32,
    reportStatsDataStatSumSq            ZeroBasedCounter32,
    reportStatsDataOverflowStatSumSq    ZeroBasedCounter32,
    reportStatsDataHCStatSumSq          ZeroBasedCounter64,
    reportStatsDataStatSumIX            ZeroBasedCounter32,
    reportStatsDataOverflowStatSumIX    ZeroBasedCounter32,
    reportStatsDataHCStatSumIX          ZeroBasedCounter64,
    reportStatsDataStatSumIXSq          ZeroBasedCounter32,
    reportStatsDataOverflowStatSumIXSq  ZeroBasedCounter32,
    reportStatsDataHCStatSumIXSq        ZeroBasedCounter64,
    reportStatsDataStatMetricExt1       ZeroBasedCounter32,
    reportStatsDataStatMetricExt2       ZeroBasedCounter32,
    reportStatsDataStatMetricExt3       ZeroBasedCounter32,
    reportStatsDataStatMetricExt4       ZeroBasedCounter32,
    reportStatsDataStatMetricExt5       ZeroBasedCounter32
}

reportStatsDataIndex  OBJECT-TYPE
    SYNTAX      Unsigned32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value of reportStatsControlReportNumber for the report to
        which this entry belongs."
    ::= { reportStatsDataEntry 1 }

-- [Note: Need to revisit the syntax for this object of type 'address'.]
reportStatsDataServerAddress  OBJECT-TYPE
    SYNTAX      OCTET STRING (SIZE (0..108))
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The network layer address of the server host in this
        conversation.

        This is represented as an octet string with specific
        semantics and length as identified by the
        protocolDirLocalIndex component of the index.

        Because this object is an index variable, it is encoded in
        the index according to the index encoding rules.  For
        example, if the protocolDirLocalIndex indicates an
        encapsulation of IPv4, this object is encoded as a length
        octet of 4, followed by the 4 octets of the IPv4 address,
        in network byte order.

        If the associated reportAggrReportCntrlAggrType is equal to
        application(4) or client(2), then this object will be a null
        string and will be encoded simply as a length octet of 0."
    ::= { reportStatsDataEntry 2 }

reportStatsDataStatN  OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The count of the total number of data points for the
        specified metric.  This number is simply the value of
        reportCntrlReportsInterval divided by the value of
        reportCntrlReportsBinInterval, which should be integer
        valued.
        "
    ::= { reportStatsDataEntry 3 }

reportStatsDataStatSumX  OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The sum of all the data point values for the specified
        metric.  This number always represents the total values
        of the statistical datum analyzed.  Each metric
        specifies the exact meaning of this object.
        This value represents the results of one metric and is
        related directly to the specific parameters of the metric
        and the Server and Client addresses involved."
    ::= { reportStatsDataEntry 4 }

reportStatsDataOverflowStatSumX  OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of times the associated
        reportAggrReportStatSumX counter has overflowed.
        Note that this object will only be instantiated if the
        associated reportAggrReportHCStatSumX object is also
        instantiated for a particular dataSource."
    ::= { reportStatsDataEntry 5 }

reportStatsDataHCStatSumX  OBJECT-TYPE
    SYNTAX      ZeroBasedCounter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The high-capacity version of reportAggrReportStatSumX.

        Note that this object will only be instantiated if the
        agent supports High Capacity monitoring for a particular
        dataSource."
    ::= { reportStatsDataEntry 6 }

reportStatsDataStatMaximum  OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The single maximum data point value observed during the
        study period for the specified metric.  This number always
        represents the maximum value of any single statistical
        datum analyzed.  Each metric specifies the exact meaning
        of this object.

        This value represents the results of one metric and is
        related directly to the specific parameters of the metric
        and the Server and Client addresses involved."
    ::= { reportStatsDataEntry 7 }

reportStatsDataStatMinimum  OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The single minimum data point value observed during the
        study period for the specified metric.  This number always
        represents the minimum value of any single statistical
        datum analyzed.  Each metric specifies the exact meaning
        of this object.

        This value represents the results of one metric and is
        related directly to the specific parameters of the metric
        and the Server and Client addresses involved."
    ::= { reportStatsDataEntry 8 }

reportStatsDataStatSumSq  OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The sum of all the squared data point values for the
        specified metric.  This number always represents the
        total of the squared values of the statistical datum
        analyzed.  Each metric specifies the exact meaning of
        this object.

        This value represents the results of one metric and is
        related directly to the specific parameters of the metric
        and the Server and Client addresses involved."
    ::= { reportStatsDataEntry 9 }

reportStatsDataOverflowStatSumSq  OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of times the associated
        reportAggrReportStatSumSq counter has overflowed.
        Note that this object will only  be instantiated if
        the associated reportAggrReportHCStatSumSq object
        is also instantiated for a particular dataSource."
    ::= { reportStatsDataEntry 10 }

reportStatsDataHCStatSumSq  OBJECT-TYPE
    SYNTAX      ZeroBasedCounter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The high-capacity version of reportAggrReportStatSumSq.
        Note that this object will only be instantiated if the
        agent supports High Capacity monitoring for a particular
        dataSource."
    ::= { reportStatsDataEntry 11 }

reportStatsDataStatSumIX  OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "For each interval, each data point is associated with a
        value I, I = 1..N where N is the number of data points;
        reportAggrReportStatSumIX is the multiplication of the
        data point value with the current I.  This value
        along with the other statistics values allow the
        calculation of the slope of the least-squares line
        through the data points."
    ::= { reportStatsDataEntry 12 }

reportStatsDataOverflowStatSumIX  OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of times the associated
        reportAggrReportStatSumIX counter has overflowed.
        Note that this object will only be instantiated if the
        associated reportAggrReportHCStatSumIX object is also
        instantiated for a particular dataSource."
    ::= { reportStatsDataEntry 13 }

reportStatsDataHCStatSumIX  OBJECT-TYPE
    SYNTAX      ZeroBasedCounter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The high-capacity version of reportAggrReportStatSumIX.
        Note that this object will only be instantiated if the
        agent supports High Capacity monitoring for a particular
        dataSource."
    ::= { reportStatsDataEntry 14 }

reportStatsDataStatSumIXSq  OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "For each interval, each data point is associated with a
        value I, I = 1..N where N is the number of data points;
        reportAggrReportStatSumIXSq is the multiplication
        of the data point value squared with the current I.
        This value along with the other statistics
        values allow the calculation of the slope of
        the least-squares line through the data points."
    ::= { reportStatsDataEntry 15 }

reportStatsDataOverflowStatSumIXSq  OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of times the associated
        reportAggrReportStatSumIXSq counter has overflowed.
        Note that this object will only be instantiated if the
        associated reportAggrReportHCStatSumIXSq object is also
        instantiated for a particular dataSource."
    ::= { reportStatsDataEntry 16 }

reportStatsDataHCStatSumIXSq  OBJECT-TYPE
    SYNTAX      ZeroBasedCounter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The high-capacity version of reportAggrReportStatSumIXSq.
        Note that this object will only be instantiated if the
        agent supports High Capacity monitoring for a particular
        dataSource."
    ::= { reportStatsDataEntry 17 }

reportStatsDataStatMetricExt1  OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The .... for the MetricExt1.
        "
    ::= { reportStatsDataEntry 18 }

reportStatsDataStatMetricExt2  OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The .... for the MetricExt2.
        "
    ::= { reportStatsDataEntry 19 }

reportStatsDataStatMetricExt3  OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The .... for the MetricExt3.
        "
    ::= { reportStatsDataEntry 20 }

reportStatsDataStatMetricExt4  OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The .... for the MetricExt4.
        "
    ::= { reportStatsDataEntry 21 }

reportStatsDataStatMetricExt5  OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The .... for the MetricExt5.

        "
    ::= { reportStatsDataEntry 22 }

reportSampledGroup       OBJECT IDENTIFIER ::= { reportMIBObjects 2 }

--      Then, the reportSampledGroup assignments are :
--             reportSampledControlTable    - 1
--             reportSampledObjectTable     - 2
--             reportSampledDataTable       - 3

-- REPORT-MIB Editors' Note:
-- The reportSampledGroup is copied from the usrHistory
-- group documented in RMON2 [RFC2021].  We have perserved all of
-- the annotations and object descriptions, as any changes would
-- only diminish the quality of the development.  The only changes
-- made were to the naming of the objects themselves.  Here we have
-- merely prefixed the original names with 'report' and changed the
-- 'usrHistory' to 'Sampled' as we felt this better reflected the
-- the nature of the capability being offered by this group.
-- The remainder of this group development is essentially
-- copied from [RFC2021]:

--
-- Sampled Collection Group (reportSampledGroup)
--
-- The reportSampled group combines mechanisms seen in the alarm and
-- history groups to provide user-specified samplying collection,
-- utilizing two additional control tables and one additional data
-- table. This function has traditionally been done by NMS
-- applications, via periodic polling.  The reportSampled group allows
-- this task to be offloaded to a remote managed device.
--
-- Data (an ASN.1 INTEGER based object) is collected in the same
-- manner as any data table (e.g. etherHistoryTable) except
-- that the user specifies the MIB instances to be collected and their
-- sampling frequency. Objects are collected in
-- bucket-groups, with the intent that all MIB
-- instances in the same bucket-group are collected as atomically as
-- possible by the remote managed device.
--
-- The reportSampledControlTable is a one-dimensional read-create table.
-- Each row configures a collection of sampling buckets; the creation
-- of a row in this table will cause one or more associated instances in
-- the reportSampledObjectTable to be created. The user specifies the
-- number of bucket elements (rows in the reportSampledObjectTable)
-- requested, as well as the number of buckets requested.
--
-- The reportSampledObjectTable is a 2-d read-write table.
-- Each row configures a single MIB instance to be collected.
-- All rows with the same major index constitute a bucket-group.
--
-- The reportSampledTable is a 3-d read-only table containing
-- the data of associated reportSampledControlEntries. Each
-- entry represents the value of a single MIB instance
-- during a specific sampling interval (or the rate of
-- change during the interval).
--
-- A sample value is stored in two objects - an absolute value and
-- a status object. This allows numbers from -(2G-1) to +4G to be
-- stored.  The status object also indicates whether a sample is
-- valid. This allows data collection to continue if periodic
-- retrieval of a particular instance fails for any reason.
--
-- Row Creation Order Relationships
--
-- The static nature of the reportSampledObjectTable creates
-- some row creation/modification issues. The rows in this
-- table need to be set before the associated
-- reportSampledControlEntry can be activated.
--
-- Note that the reportSampledObject entries associated with a
-- particular reportSampledControlEntry are not required to
-- be active before the control entry is activated. However,
-- the reportSampled data entries associated with an inactive
-- reportSampledObject entry will be inactive (i.e.
-- reportSampledValStatus == valueNotAvailable).
--

reportSampledControlTable OBJECT-TYPE
    SYNTAX SEQUENCE OF SampledControlEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "A list of data-collection configuration entries."
    ::= { reportSampledGroup 1 }

reportSampledControlEntry OBJECT-TYPE
    SYNTAX SampledControlEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "A list of parameters that set up a group of user-defined
        MIB objects to be sampled periodically (called a
        bucket-group).

        For example, an instance of reportSampledControlInterval
        might be named reportSampledControlInterval.1"
    INDEX { reportSampledControlIndex }
    ::= { reportSampledControlTable 1 }

SampledControlEntry ::= SEQUENCE {
    reportSampledControlIndex             Integer32,
    reportSampledControlObjects           Integer32,
    reportSampledControlBucketsRequested  Integer32,
    reportSampledControlBucketsGranted    Integer32,
    reportSampledControlInterval          Integer32,
    reportSampledControlRequestedNumber   Integer32,
    reportSampledControlReportNumber      Integer32,
    reportSampledControlOwner             OwnerString,
    reportSampledControlStatus            RowStatus
}

reportSampledControlIndex OBJECT-TYPE
    SYNTAX Integer32 (1..65535)
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "An index that uniquely identifies an entry in the
        reportSampledControlTable.  Each such entry defines a
        set of samples at a particular interval for a specified
        set of MIB instances available from the managed system."
    ::= { reportSampledControlEntry 1 }

reportSampledControlObjects OBJECT-TYPE
    SYNTAX Integer32 (1..65535)
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "The number of MIB objects to be collected
        in the portion of reportSampledTable associated with this
        reportSampledControlEntry.

        This object may not be modified if the associated instance
        of reportSampledControlStatus is equal to active(1)."
    ::= { reportSampledControlEntry 2 }

reportSampledControlBucketsRequested OBJECT-TYPE
    SYNTAX Integer32 (1..65535)
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "The requested number of discrete time intervals
        over which data is to be saved in the part of the
        reportSampledTable associated with this
        reportSampledControlEntry.

        When this object is created or modified, the probe
        should set reportSampledControlBucketsGranted as closely to
        this object as is possible for the particular probe
        implementation and available resources."
    DEFVAL { 50 }
    ::= { reportSampledControlEntry 3 }

reportSampledControlBucketsGranted OBJECT-TYPE
    SYNTAX Integer32 (1..65535)
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The number of discrete sampling intervals
        over which data shall be saved in the part of
        the reportSampledTable associated with this
        reportSampledControlEntry.

        When the associated reportSampledControlBucketsRequested
        object is created or modified, the probe should set
        this object as closely to the requested value as is
        possible for the particular probe implementation and
        available resources.  The probe must not lower this
        value except as a result of a modification to the associated
        reportSampledControlBucketsRequested object.

        The associated reportSampledControlBucketsRequested object
        should be set before or at the same time as this object
        to allow the probe to accurately estimate the resources
        required for this reportSampledControlEntry.

        There will be times when the actual number of buckets
        associated with this entry is less than the value of
        this object.  In this case, at the end of each sampling
        interval, a new bucket will be added to the
        reportSampledTable.

        When the number of buckets reaches the value of this object,
        this report is complete and a new report is begun."
    ::= { reportSampledControlEntry 4 }

reportSampledControlInterval OBJECT-TYPE
    SYNTAX Integer32 (1..2147483647)
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "The interval in seconds over which the data is
        sampled for each bucket in the part of the reportSampled
        table associated with this reportSampledControlEntry.

        Because the counters in a bucket may overflow at their
        maximum value with no indication, a prudent manager will
        take into account the possibility of overflow in any of
        the associated counters. It is important to consider the
        minimum time in which any counter could overflow on a
        particular media type and set the
        reportSampledControlInterval object to a value less
        than this interval.

        This object may not be modified if the associated
        reportSampledControlStatus object is equal to active(1)."
    DEFVAL { 1800 }
    ::= { reportSampledControlEntry 5 }

reportSampledControlRequestedNumber OBJECT-TYPE
    SYNTAX Integer32 (1..127)
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "The number of reports to be generated and stored by this
         agent for this report request.

        This object may not be modified if the associated
        reportSampledControlStatus object is equal to active(1)."
    DEFVAL { 1 }
    ::= { reportSampledControlEntry 6 }

reportSampledControlReportNumber OBJECT-TYPE
    SYNTAX Integer32 (1..127)
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "The number of the current report in progress.  The first
         report is assigned a number equal to '1'.  Each successive
         report number is incremented by unity.  When the last report
         is completed, this value is set to
         reportSampledControlRequestedNumber + 1."
    ::= { reportSampledControlEntry 7 }

reportSampledControlOwner OBJECT-TYPE
    SYNTAX OwnerString
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "The entity that configured this entry and is
        therefore using the resources assigned to it."
    ::= { reportSampledControlEntry 8 }

reportSampledControlStatus OBJECT-TYPE
    SYNTAX RowStatus
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "The status of this variable history control entry.

        An entry may not exist in the active state unless all
        objects in the entry have an appropriate value.

        If this object is not equal to active(1), all associated
        entries in the reportSampledTable shall be deleted."
    ::= { reportSampledControlEntry 9 }

-- Object table

reportSampledObjectTable OBJECT-TYPE
    SYNTAX SEQUENCE OF SampledObjectEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "A list of data-collection configuration entries."
    ::= { reportSampledGroup 2 }

reportSampledObjectEntry OBJECT-TYPE
    SYNTAX SampledObjectEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "A list of MIB instances to be sampled periodically.

        Entries in this table are created when an associated
        reportSampledControlObjects object is created.

        The reportSampledControlIndex value in the index is
        that of the associated reportSampledControlEntry.

        For example, an instance of reportSampledObjectVariable
        might be reportSampledObjectVariable.1.3"
    INDEX { reportSampledControlIndex, reportSampledObjectIndex }
    ::= { reportSampledObjectTable 1 }

SampledObjectEntry ::= SEQUENCE {
    reportSampledObjectIndex             Integer32,
    reportSampledObjectVariable          OBJECT IDENTIFIER,
    reportSampledObjectIpAddrType        InetAddressType,
    reportSampledObjectIPAddress         InetAddress,
    reportSampledObjectSampleType        INTEGER
}

reportSampledObjectIndex OBJECT-TYPE
    SYNTAX Integer32 (1..65535)
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "An index used to uniquely identify an entry in the
        reportSampledObject table.  Each such entry defines a
        MIB instance to be collected periodically."
    ::= { reportSampledObjectEntry 1 }

reportSampledObjectVariable OBJECT-TYPE
    SYNTAX OBJECT IDENTIFIER
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "The object identifier of the particular variable to be
        sampled.

        Only variables that resolve to an ASN.1 primitive type of
        Integer32 (Integer32, Counter, Gauge, or TimeTicks) may be
        sampled.

        Because SNMP access control is articulated entirely in terms
        of the contents of MIB views, no access control mechanism
        exists that can restrict the value of this object to identify
        only those objects that exist in a particular MIB view.
        Because there is thus no acceptable means of restricting the
        read access that could be obtained through the user history
        mechanism, the probe must only grant write access to this
        object in those views that have read access to all objects on
        the probe.

        During a set operation, if the supplied variable name is not
        available in the selected MIB view, a badValue error must be
        returned.

        This object may not be modified if the associated
        reportSampledControlStatus object is equal to active(1)."
    ::= { reportSampledObjectEntry 2 }

reportSampledObjectIpAddrType  OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This identifies the IP address type
        of the IP address associated with the
        secondary counter object to be
        monitored within this report.

        This object may not be modified if the associated
        reportStatsControlStatus object is equal to active(1)."
    ::= { reportSampledObjectEntry 3 }

reportSampledObjectIPAddress  OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This identifies the IP addree of the
        secondary counter object to be
        monitored within this report.

        This object may not be modified if the associated
        reportStatsControlStatus object is equal to active(1)."
    ::= { reportSampledObjectEntry 4 }

reportSampledObjectSampleType OBJECT-TYPE
    SYNTAX INTEGER {
               absoluteValue(1),
               deltaValue(2)
           }
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "The method of sampling the selected variable for storage in
        the reportSampledTable.

        If the value of this object is absoluteValue(1), the value of
        the selected variable will be copied directly into the history
        bucket.

        If the value of this object is deltaValue(2), the value of the
        selected variable at the last sample will be subtracted from
        the current value, and the difference will be stored in the
        history bucket. If the associated reportSampledObjectVariable
        instance could not be obtained at the previous sample
        interval, then a delta sample is not possible, and the value
        of the associated reportSampledValStatus object for this
        interval will be valueNotAvailable(1).

        This object may not be modified if the associated
        reportSampledControlStatus object is equal to active(1)."
    ::= { reportSampledObjectEntry 5 }

-- data table

-- Note: Need to think about how to collect this report data.  It
--   is stored in individual buckets containing individual object
--   samples.  Want to avoid having to table walk to collect this
--   information.
reportSampledTable OBJECT-TYPE
    SYNTAX SEQUENCE OF SampledEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "A list of user defined history entries."
    ::= { reportSampledGroup 3 }

reportSampledEntry OBJECT-TYPE
    SYNTAX SampledEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "A historical sample of user-defined variables.  This sample
        is associated with the reportSampledControlEntry which set
        up the parameters for a regular collection of these samples.

        The reportSampledControlIndex value in the index identifies
        the reportSampledControlEntry on whose behalf this entry
        was created.

        The reportSampledObjectIndex value in the index identifies
        the reportSampledObjectEntry on whose behalf this entry
        was created.

        For example, an instance of reportSampledAbsValue, which
        represents the 14th sample of a variable collected as
        specified by reportSampledControlEntry.1 and
        reportSampledObjectEntry.1.5, would be named
        reportSampledAbsValue.1.14.5"

    INDEX { reportSampledControlIndex, reportSampledReportIndex,
            reportSampledSampleIndex, reportSampledObjectIndex }
    ::= { reportSampledTable 1 }

SampledEntry ::= SEQUENCE {
    reportSampledReportIndex   Integer32,
    reportSampledSampleIndex   Integer32,
    reportSampledIntervalStart TimeStamp,
    reportSampledIntervalEnd   TimeStamp,
    reportSampledAbsValue      Gauge32,
    reportSampledValStatus     INTEGER
}

reportSampledReportIndex OBJECT-TYPE
    SYNTAX     Integer32 (1..127)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "An index that uniquely identifies the particular report
        this entry is associated with among the set of reports
        requested through the reportSampledControlNumber in the
        reportSampledControlEntry. This index starts at 1 and
        increases by one as each new report is generated."
    ::= { reportSampledEntry 1 }

reportSampledSampleIndex OBJECT-TYPE
    SYNTAX     Integer32 (1..2147483647)
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "An index that uniquely identifies the particular sample this
        entry represents among all samples associated with the same
        reportSampledControlEntry. This index starts at 1 and
        increases by one as each new sample is taken."
    ::= { reportSampledEntry 2 }

reportSampledIntervalStart OBJECT-TYPE
    SYNTAX TimeStamp
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The value of sysUpTime at the start of the interval over
        which this sample was measured.  If the probe keeps track of
        the time of day, it should start the first sample of the
        history at a time such that when the next hour of the day
        begins, a sample is started at that instant.

        Note that following this rule may require the probe to delay
        collecting the first sample of the history, as each sample
        must be of the same interval. Also note that the sample which
        is currently being collected is not accessible in this table
        until the end of its interval."
    ::= { reportSampledEntry 3 }

reportSampledIntervalEnd OBJECT-TYPE
    SYNTAX TimeStamp
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The value of sysUpTime at the end of the interval over which
        this sample was measured."
    ::= { reportSampledEntry 4 }

reportSampledAbsValue OBJECT-TYPE
    SYNTAX Gauge32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The absolute value (i.e. unsigned value) of the
        user-specified statistic during the last sampling period. The
        value during the current sampling period is not made available
        until the period is completed.

        To obtain the true value for this sampling interval, the
        associated instance of reportSampledValStatus must
        be checked, and reportSampledAbsValue adjusted as necessary.

        If the MIB instance could not be accessed during the sampling
        interval, then this object will have a value of zero and the
        associated instance of reportSampledValStatus will be set to
        'valueNotAvailable(1)'."
    ::= { reportSampledEntry 5 }

reportSampledValStatus 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 instance of reportSampledAbsValue.

        If the MIB instance could not be accessed during the sampling
        interval, then 'valueNotAvailable(1)' will be returned.

        If the sample is valid and actual value of the sample is
        greater than or equal to zero then 'valuePositive(2)' is
        returned.

        If the sample is valid and the actual value of the sample is
        less than zero, 'valueNegative(3)' will be returned. The
        associated instance of reportSampledAbsValue should be
        multiplied by -1 to obtain the true sample value."
    ::= { reportSampledEntry 6 }

-- REPORT-MIB Editors' Note:  This ends the copy of definitions from
-- the usrHistory group from RMON2 [RFC 2021].

reportHistoryGroup       OBJECT IDENTIFIER ::= { reportMIBObjects 3 }

--      Then, the reportHistoryGroup assignments are :
--             reportHistoryControlTable    - 1
--             reportHistoryDataTable       - 2

-- Notes: The history group is intended to track changes in
--   identified objects ot type counter, gauge, other.  Each,
--   time the object is updated in the associated MIB, the
--   history group stores a table entry in the associated
--   historyDataTable capturing the time the change was
--   made to the identified object.

--   The historyControl Table ...
--
--   The historyData Table ....

reportHistoryControlTable OBJECT-TYPE
    SYNTAX SEQUENCE OF HistoryControlEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "A list of data-collection configuration entries."
    ::= { reportHistoryGroup 1 }

reportHistoryControlEntry OBJECT-TYPE
    SYNTAX HistoryControlEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "A list of parameters that set up the collection
        of a history of changes
        in the user-defined MIB objects.

        For example, an instance of reportHistoryControlObject
        might be named reportHistoryControlObject.1"
    INDEX { reportHistoryControlIndex }
    ::= { reportHistoryControlTable 1 }

HistoryControlEntry ::= SEQUENCE {
    reportHistoryControlIndex             Integer32,
    reportHistoryControlObject            OBJECT IDENTIFIER,
    reportHistoryControlObjectIpAddrType  InetAddressType,
    reportHistoryControlObjectIPAddress   InetAddress,
    reportHistoryControlSizeRequested     Integer32,
    reportHistoryControlSizeGranted       Integer32,
    reportHistoryControlRequestedNumber   Integer32,
    reportHistoryControlReportNumber      Integer32,
    reportHistoryControlOwner             OwnerString,
    reportHistoryControlStatus            RowStatus
}

reportHistoryControlIndex OBJECT-TYPE
    SYNTAX Integer32 (1..65535)
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "An index that uniquely identifies an entry in the
        reportHistoryControlTable.  Each such entry defines a
        set of histories at a particular interval for a specified
        MIB object instance available from the managed system."
    ::= { reportHistoryControlEntry 1 }

reportHistoryControlObject OBJECT-TYPE
    SYNTAX OBJECT IDENTIFIER
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "The MIB object to be monitored for the collection
        histories in the reportHistoryDataTable associated with this
        reportHistoryControlEntry.

        This object may not be modified if the associated instance
        of reportHistoryControlStatus is equal to active(1)."
    ::= { reportHistoryControlEntry 2 }

reportHistoryControlObjectIpAddrType  OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This identifies the IP address type
        of the IP address associated with the
        secondary counter object to be
        monitored within this report.

        This object may not be modified if the associated
        reportStatsControlStatus object is equal to active(1)."
    ::= { reportHistoryControlEntry 3 }

reportHistoryControlObjectIPAddress  OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This identifies the IP addree of the
        secondary counter object to be
        monitored within this report.

        This object may not be modified if the associated
        reportStatsControlStatus object is equal to active(1)."
    ::= { reportHistoryControlEntry 4 }

reportHistoryControlSizeRequested OBJECT-TYPE
    SYNTAX Integer32 (1..65535)
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "The requested maximum number of history entries
        to be saved in the
        reportHistoryDataTable associated with this
        reportHistoryControlEntry.

        When this object is created or modified, the device
        should set reportHistoryControlSizeGranted as closely to
        this object as is possible for the particular device
        implementation and available resources."
    DEFVAL { 50 }
    ::= { reportHistoryControlEntry 5 }

reportHistoryControlSizeGranted OBJECT-TYPE
    SYNTAX Integer32 (1..65535)
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The maximum allowed number of discrete history entries
        in the reportHistoryTable associated with this
        reportHistoryControlEntry.

        When the associated reportHistoryControlSizeRequested
        object is created or modified, the device should set
        this object as closely to the requested value as is
        possible for the particular device implementation and
        available resources.  The device must not lower this
        value except as a result of permitted within a modification to the associated
        reportHistoryControlSizeRequested object.

        The associated reportHistoryControlSizeRequested object
        should be set before MIB module, but any module
   mentioned in an IMPORTS clause or at the same time as this object
        to allow the device to accurately estimate the resources
        required for this reportHistoryControlEntry.

        When the number of histories reaches the value of this object
        and a new history is to be added to the reportHistoryTable,
        the oldest history associated with this
        reportHistoryControlEntry shall be deleted by the agent
        so that the new history can be added."
    ::= { reportHistoryControlEntry 6 }

reportHistoryControlRequestedNumber OBJECT-TYPE
    SYNTAX Integer32 (1..127)
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "The number of reports to be generated and stored by this
         agent for this report request.

        This object may not be modified if the associated
        reportHistoryControlStatus object is equal to active(1)."
    DEFVAL { 1 }
    ::= { reportHistoryControlEntry 7 }

reportHistoryControlReportNumber OBJECT-TYPE
    SYNTAX Integer32 (1..127)
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "The number of the current report document mentioned in progress.  The first
         report is assigned a number equal to '1'.  Each successive
         report number is incremented by unity.  When the last report
         is completed, this value is set to
         reportSampledControlRequestedNumber + 1."

    ::= { reportHistoryControlEntry 8 }

reportHistoryControlOwner OBJECT-TYPE
    SYNTAX OwnerString
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "The entity that configured this entry and REFERENCE
   clause is
        therefore using the resources assigned to it."
    ::= { reportHistoryControlEntry 9 }

reportHistoryControlStatus OBJECT-TYPE
    SYNTAX RowStatus
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "The status of this variable history control entry.

        An entry may not exist in a Normative reference, and must be cited someplace within
   the active state unless all
        objects in narrative sections.  Therefore, the entry have an appropriate value.

        If imported items in this object is MIB
   module, such as Textual Conventions, that are not equal already cited, are
   cited in this section.  Since relationships to active(1), all associated
        entries other MIB modules
   should be described in the reportHistoryTable shall be deleted." narrative text, this section will cite
   modules from which Textual Conventions are imported.

   The REPORT-SAMPLED-MIB module IMPORTS objects from SNMPv2-SMI
   [RFC2578], SNMPv2-TC [RFC2579], SNMPv2-CONF [RFC2580], IF-MIB
   [RFC2863], and INET-ADDRESS-MIB [RFC4001].  Significantly, the
   REPORT-SAMPLED-MIB module also IMPORTS objects from the RMON2-MIB
   module [RFC2021].

7.  Definitions

  REPORT-SAMPLED-MIB DEFINITIONS ::= { reportHistoryControlEntry 10 } BEGIN

  IMPORTS

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

     TimeStamp
        FROM SNMPv2-TC                           -- Note: Similar to the note on the sampled report [RFC2579]

     MODULE-COMPLIANCE, OBJECT-GROUP,
     NOTIFICATION-GROUP
        FROM SNMPv2-CONF                         --   collection above.  We need to consider what [RFC2580]

     usrHistoryControlEntry, usrHistoryObjectEntry,
     usrHistoryControlIndex, usrHistoryControlOwner,
     usrHistoryObjectIndex
  --   usrHistoryControlObjects, usrHistoryControlBucketsRequested,
  --   model to use to transmit the report data to   usrHistoryControlBucketsGranted, usrHistoryControlInterval,
  --   the remote management application.  Currently   usrHistoryControlStatus,
  --   the data is stored in individuals events per   usrHistoryObjectVariable, usrHistoryObjectSampleType
        FROM RMON2-MIB                           --   table row.  This will impact the design of the [RFC2021]

     InetAddress, InetAddressType
        FROM INET-ADDRESS-MIB                    --   table as well as the design of the [RFC4001]
     ;

  reportSampledMIB MODULE-IDENTITY
     LAST-UPDATED "201201311300Z"  --   Notifications.
reportHistoryTable OBJECT-TYPE
    SYNTAX SEQUENCE OF HistoryEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "A list of user defined history entries."
    ::= { reportHistoryGroup 3 }

reportHistoryEntry OBJECT-TYPE
    SYNTAX HistoryEntry
    MAX-ACCESS not-accessible
    STATUS current January 31, 2012
     ORGANIZATION "IETF MANET Working Group"
     CONTACT-INFO
        "WG E-Mail: manet@ietf.org

         WG Chairs: ian.chakeres@gmail.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
                    Brocade
                    andy.bierman@brocade.com"
     DESCRIPTION
        "A historical trail of user-defined variables.  This list
        is associated with the reportHistoryControlEntry which set
        up the parameters
        "This MIB module contains managed object definitions for a regular collection
         the autonmous reporting of these samples. performance object counters.
         Copyright (C) The reportHistoryControlIndex value in the index identifies
        the reportHistoryControlEntry on whose behalf this entry
        was created. IETF Trust (2009). This also identifies the MIB object
        being tracked by this reportHistoryEntry.

        For example, an instance version
         of reportHistory...
        "
    INDEX { reportHistoryControlIndex,
            reportHistoryDataIndex }
    ::= { reportHistoryTable 1 }

HistoryEntry ::= SEQUENCE {
    reportHistoryDataIndex        Integer32,
    reportHistoryDataChangeTime   TimeStamp,
    reportHistoryDataValueType    INTEGER,
    reportHistoryDataValue        OCTET STRING,
    reportHistoryDataValStatus    INTEGER
}

reportHistoryDataIndex OBJECT-TYPE
    SYNTAX     Integer32 (1..2147483647)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "An index that uniquely identifies the particular sample this
        entry represents among all historical entries
        associated with the same
        reportHistoryControlEntry. This index starts at 1 and
        increases by one as each new sample MIB module is taken."
    ::= { reportHistoryEntry 1 }

reportHistoryDataChangeTime   OBJECT-TYPE
    SYNTAX TimeStamp
    MAX-ACCESS read-only
    STATUS current part of RFC xxxx; see the RFC
         itself for full legal notices."

       -- Revision History
       REVISION    "201201311300Z"   -- January 31, 2012
       DESCRIPTION
          "The value sixth draft of sysUpTime at the time that the this MIB object was
        updated."
    ::= { reportHistoryEntry 2 }

-- Note: May want module published as
           draft-ietf-manet-report-mib-02.txt.

           Revisions to move this to draft include
           a) Pulled the reportHistoryControlTable,
--    as it is too redundant statistical and historical reporting
              from the MIB module and left only the sampled
              reporting, in this table.  Also, need order to reconsider
-- greatly simplify the best way to indicate type and
              first instance of this reporting MIB module.
           b) Renamed the module, the REPORT-SAMPLED-MIB
              module.
           c) Leveraged the RMON2-MIB module more effectively
              through the use of the AUGMENTS clause.
           d) Changed the module to represent values.
reportHistoryDataValueType OBJECT-TYPE
    SYNTAX Integer32
    MAX-ACCESS read-only
    STATUS current 'experimental'.
           "
       REVISION    "201102171300Z"   -- February 17, 2011
       DESCRIPTION
          "The type 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 data value stored in statsReport table to
              simplify communications between device and
              mgmt application,
           b) Added Notifications,
           c) Changed the
        reportHistoryDataValue string.  The user identifies reporting structure of the MIB object
              Sampled and the History reporting
              to be tracked by this table.
        Various types align with the structure of objects can be track, so the
        application needs to know
              Statistics reports for the purpose of
              allowing for efficient notification and
              collection of data type being
        stored.  Types supported include counter, gauge,
        integer, float. reports.
           d) Ran through smilint to clean up all errors
              and most warning.  A few still remain.
           "
    ::= { reportHistoryEntry 3 }

reportHistoryDataValue  OBJECT-TYPE
    SYNTAX OCTET STRING
    MAX-ACCESS read-only
    STATUS current
       REVISION    "201007051300Z"   -- July 05, 2010
       DESCRIPTION
          "The absolute value fourth draft of the
        user-specified MIB object tracked by this
        table entry.  This holds the new object
        value following this change in value.

        If the MIB instance could not be accessed ....
        "
    ::= { reportHistoryEntry 4 }

-- Note: Need module published as
           draft-ietf-manet-report-mib-00.txt.  This document
           has been promoted to consider in detail a MANET Working Group
           draft.

           Significant revisions to this draft include
           a) added support for proxy configurations through
           the ability addition of address objects associated with
           the referenced counter objects associated with the
           performance reports."
       REVISION    "201003021300Z"   --   device March 02, 2010
       DESCRIPTION
          "The third draft of this MIB module published as
           draft-cole-manet-report-mib-02.txt.  Significant
           revisions to track the times this draft include a) changed naming
           of object change in
--   enough detial usrHistoryGroup to be useful.  What happens if the
--   device gets too busy sampledGroup and delays updating MIB object  b) added
           a historyGroup."
       REVISION    "200910251300Z"   --   values tracked by this table entry.  Needs more work.
reportHistoryDataValStatus OBJECT-TYPE
    SYNTAX INTEGER {
        valueAvailable(1),
        valueDelayed(2)
    }
    MAX-ACCESS read-only
    STATUS current October 25, 2009
       DESCRIPTION
        "This object indicates the validity
          "The second draft of this MIB module published as
           draft-cole-manet-report-mib-01.txt.  Significant
           revisions to this draft include a) the data in
        the associated instance inclusion of reportHistoryAbsValue.

        If
           raw data collection borrow blatently from the MIB instance could not be accessed promptely,
        then 'valueDelayed(2)' will be returned.

        If
           usrHistory Group within RMON2, b) the sample is valid and actual value deletion of
           the sample
        was promptly recorded, then 'valueAvailable(1)' is
        returned.
        "
    ::= { reportHistoryEntry 5 }

--
-- Notifications
--

-- NOTE: What is the report transmission model we want to
--       support for this MIB?  Want CurrentHistoryTable from version -00,
           c) modifications to minimize chatter
--       on the network.  Potentially want to see if
--       can pack reports into Notifications(?).
--       The statsReports are  formatted in a way to
--       support bulk transmissions.  However, as noted
--       above, overall structure of the sampledReports
           MIB, and d) the historyReports
--       are stored as individual measurements per row and definition of various Compliance
           options for implementations related to this MIB."
       REVISION    "200904281300Z"   --       storage is continually rotaed April 28, 2009
       DESCRIPTION
          "Initial draft of this MIB module published as more measurements
           draft-cole-manet-report-mib-00.txt."
       --       are made in these two report types.  This RFC-Editor assigns XXXX
       ::= { experimental 998 }   --       may complicate report transmission and to be assigned by IANA

  --       Notifications definitions. TEXTUAL CONVENTIONs
  -- NOTE:  What notifications do we want for this MIB? None

  --        Checkout what is done in the APM-MIB for Notifications?
  --        Examples may include a) report completion Top-Level Object Identifier Assignments
  --                             b) overflow counters exceeded

reportNotificationControl

  reportSampledMIBNotifications OBJECT IDENTIFIER
                                ::= {reportMIBNotifications 1}
reportNotificationObjects { reportSampledMIB 0 }
  reportSampledMIBObjects       OBJECT IDENTIFIER
                                ::= {reportMIBNotifications 2}
reportNotificationStates  OBJECT IDENTIFIER { reportSampledMIB 1 }
  reportSampledMIBConformance   OBJECT IDENTIFIER
                                ::= { reportSampledMIB 2 }

  reportSampledGroup            OBJECT IDENTIFIER
                                ::= { reportSampledMIBObjects 1 }

  --      Then, the reportSampledGroup assignments are :

  --             reportSampledControlTable    - 1
  --             reportSampledObjectTable     - 2
  --             reportSampledDataTable       - 3

  reportSampledControlTable OBJECT-TYPE
      SYNTAX SEQUENCE OF SampledControlEntry
      MAX-ACCESS not-accessible
      STATUS current
      DESCRIPTION
          "A list of data-collection configuration entries."
      ::= { reportSampledGroup 1 }

  reportSampledControlEntry OBJECT-TYPE
      SYNTAX SampledControlEntry
      MAX-ACCESS not-accessible
      STATUS current
      DESCRIPTION
          "A list of parameters that set up a group of user-defined
          MIB objects to be sampled periodically (called a
          bucket-group).

          For example, an instance of reportSampledControlInterval
          might be named reportSampledControlInterval.1"
      AUGMENTS { usrHistoryControlEntry }
      ::= { reportSampledControlTable 1 }

  SampledControlEntry ::= {reportMIBNotifications 3}

   -- reportNotificationControl

   reportSetNotification SEQUENCE {
      reportSampledControlRequestedNumber   Integer32,
      reportSampledControlReportNumber      Integer32
  }

  reportSampledControlRequestedNumber OBJECT-TYPE
      SYNTAX       OCTET STRING (SIZE(4)) Integer32 (1..127)
      MAX-ACCESS   read-write read-create
      STATUS current
      DESCRIPTION
             "A 4-octet string serving as a bit map for
             the notification events defined
          "The number of reports to be generated and stored by the REPORT
             notifications. this
           agent for this report request.

          This object is used to enable
             and disable specific REPORT notifications where
             a 1 in may not be modified if the bit field represents enabled. The
             right-most bit (least significant) represents
             notification 0.

             This associated
          reportSampledControlStatus object is persistent and when written
             the entity SHOULD save the change equal to
             non-volatile storage.
             "
           ::= active(1)."
      DEFVAL { reportNotificationControl 1 }

   -- reportNotificationObjects

   reportNewStatsDataReport NOTIFICATION-TYPE
          OBJECTS
      ::= { reportStatsControlIndex, -- The index reportSampledControlEntry 1 }

  reportSampledControlReportNumber OBJECT-TYPE
      SYNTAX Integer32 (1..127)
      MAX-ACCESS read-only
      STATUS current
      DESCRIPTION
          "The number of the
                             --   control table for this current report
                    reportStatsDataIndex     -- in progress.  The index of first
           report is assigned a number equal to '1'.  Each successive
           report number is incremented by unity.  When the last report
           is completed, this value is set to
           reportSampledControlRequestedNumber + 1."
      ::= { reportSampledControlEntry 2 }

  --   data Object table for this report

  reportSampledObjectTable OBJECT-TYPE
      SYNTAX SEQUENCE OF SampledObjectEntry
      MAX-ACCESS not-accessible
      STATUS current
      DESCRIPTION
          "A list of data-collection configuration entries."
      ::= { reportSampledGroup 2 }

  reportSampledObjectEntry OBJECT-TYPE
      SYNTAX SampledObjectEntry
      MAX-ACCESS not-accessible
      STATUS current
      DESCRIPTION
             "reportNewStatsDataReport is a notification sent
          "A list of MIB instances to be sampled periodically.

          Entries in this table are created when a new report an associated
          reportSampledControlObjects object is completed from the
              reportStatsControlTable. created.

          The notification carries usrHistoryControlIndex value in the index from the control table is
          that established
              this report and the index from of the data table that
              holds this report." associated reportSampledControlEntry.

          For example, an instance of reportSampledObjectVariable
          might be reportSampledObjectVariable.1.3"
      AUGMENTS { usrHistoryObjectEntry }
      ::= { reportNotificationObjects reportSampledObjectTable 1 }

   reportNewSampledDataReport NOTIFICATION-TYPE
          OBJECTS

  SampledObjectEntry ::= SEQUENCE { reportSampledControlIndex, -- The index of the
                             --   control table for this report
                    reportSampledReportIndex   -- The index of the
                             --   data table for this report
      reportSampledObjectIpAddrType        InetAddressType,
      reportSampledObjectIPAddress         InetAddress
  }

  reportSampledObjectIpAddrType  OBJECT-TYPE
      SYNTAX      InetAddressType
      MAX-ACCESS  read-create
      STATUS      current
      DESCRIPTION
             "reportNewSampledDataReport is a notification sent
              when a new report is completed from the
              reportSampledControlTable.  The notification carries
              the index from
          "This identifies the control table that established
              this report and IP address type
          of the index from IP address associated with the data table that
              holds
          secondary counter object to be
          monitored within this report.  Indication of the new report
              is when

          This object may not be modified if the reportSampledControlReportNumber associated
          reportStatsControlStatus object is incremented." equal to active(1)."
      ::= { reportNotificationObjects 2 reportSampledObjectEntry 1 }

   reportNewHistoryDataReport NOTIFICATION-TYPE
          OBJECTS { reportHistoryControlIndex, -- The index

  reportSampledObjectIPAddress  OBJECT-TYPE
      SYNTAX      InetAddress
      MAX-ACCESS  read-create
      STATUS      current
      DESCRIPTION
          "This identifies the IP addree of the
                             --   control table for
          secondary counter object to be
          monitored within this report
                    reportHistoryDataIndex   -- The index of report.

          This object may not be modified if the associated
          reportStatsControlStatus object is equal to active(1)."
      ::= { reportSampledObjectEntry 2 }

  -- data table for this report
  reportSampledTable OBJECT-TYPE
      SYNTAX SEQUENCE OF SampledEntry
      MAX-ACCESS not-accessible
      STATUS current
      DESCRIPTION
          "A list of user defined history entries."
      ::= { reportSampledGroup 3 }

  reportSampledEntry OBJECT-TYPE
      SYNTAX SampledEntry
      MAX-ACCESS not-accessible
      STATUS current
      DESCRIPTION
             "reportNewHistoryDataReport is a notification sent
              when a new report
          "A historical sample of user-defined variables.  This sample
          is completed from the
              reportHistoryControlTable.  The notification carries associated with the index from reportSampledControlEntry which set
          up the control table that established
              this report and parameters for a regular collection of these samples.

          The usrHistoryControlIndex value in the index from identifies
          the data table that
              holds reportSampledControlEntry on whose behalf this report.  Indication of entry
          was created.

          The usrHistoryObjectIndex value in the new report
              is when index identifies
          the reportHistoryControlReportNumber
              is incremented."
          ::= { reportNotificationObjects 3 }

    -- reportNotificationStates
    --   none to define

--
-- Compliance Statements
--

-- [NOTE: Current thoughts reportSampledObjectEntry on Conformance follow:
--    Mandatory for Stats will include no extensions,
--    or high capacity objects.
--    Hence, the reports will have only whose behalf this entry
          was created.

          For example, an instance of reportSampledAbsValue, which
          represents the hard-coded statistics.
--    Optional for Stats will be extensions definition table 14th sample of a variable collected as
          specified by reportSampledControlEntry.1 and high
--    capacity objects.
--
--    Mandatory for Sampled will include all.
--
--    Mandatory for History will include all.]

reportCompliances  OBJECT IDENTIFIER
          reportSampledObjectEntry.1.5, would be named
          reportSampledAbsValue.1.14.5"
      INDEX { usrHistoryControlIndex, reportSampledReportIndex,
              reportSampledSampleIndex, usrHistoryObjectIndex }
      ::= { reportMIBConformance reportSampledTable 1 }
reportMIBGroups    OBJECT IDENTIFIER

  SampledEntry ::= SEQUENCE { reportMIBConformance 2
      reportSampledReportIndex   Integer32,
      reportSampledSampleIndex   Integer32,
      reportSampledIntervalStart TimeStamp,
      reportSampledIntervalEnd   TimeStamp,
      reportSampledAbsValue      Gauge32,
      reportSampledValStatus     INTEGER
  }

reportStatsBasicCompliance  MODULE-COMPLIANCE

  reportSampledReportIndex OBJECT-TYPE
      SYNTAX     Integer32 (1..127)
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION "The Stats basic implementation requirements for
                managed network entities
          "An index that implement uniquely identifies the REPORT process."

   MODULE  -- particular report
          this module
   MANDATORY-GROUPS {reportStatsCapabilitiesBaseObjectsGroup,
                     reportStatsControlBaseObjectsGroup,
                     reportStatsDataBaseObjectsGroup,
                     reportNotificationGroup,
                     reportStatsNotificationGroup } entry is associated with among the set of reports
          requested through the reportSampledControlNumber in the
          reportSampledControlEntry. This index starts at 1 and
          increases by one as each new report is generated."
      ::= { reportCompliances reportSampledEntry 1 }

reportStatsHCCompliance MODULE-COMPLIANCE

  reportSampledSampleIndex OBJECT-TYPE
      SYNTAX     Integer32 (1..2147483647)
      MAX-ACCESS not-accessible
      STATUS     current
      DESCRIPTION "The HC implementation requirements for
                managed network entities
          "An index that implement uniquely identifies the REPORT process."
   MODULE  -- particular sample this module
   MANDATORY-GROUPS {reportStatsCapabilitiesBaseObjectsGroup,
                     reportStatsControlBaseObjectsGroup,
                     reportStatsDataBaseObjectsGroup,
                     reportNotificationGroup,
                     reportStatsNotificationGroup,
                     reportStatsDataHCObjectsGroup }
          entry represents among all samples associated with the same
          reportSampledControlEntry. This index starts at 1 and
          increases by one as each new sample is taken."
      ::= { reportCompliances reportSampledEntry 2 }

reportStatsExtendedMetricsCompliance MODULE-COMPLIANCE

  reportSampledIntervalStart OBJECT-TYPE
      SYNTAX TimeStamp
      MAX-ACCESS read-only
      STATUS current
      DESCRIPTION
          "The extended metrics implementation requirements for
                managed network entities value of sysUpTime at the start of the interval over
          which this sample was measured.  If the probe keeps track of
          the time of day, it should start the first sample of the
          history at a time such that implement when the REPORT process."
   MODULE  -- next hour of the day
          begins, a sample is started at that instant.

          Note that following this module
   MANDATORY-GROUPS {reportStatsCapabilitiesBaseObjectsGroup,
                     reportStatsControlBaseObjectsGroup,
                     reportStatsDataBaseObjectsGroup,
                     reportNotificationGroup,
                     reportStatsNotificationGroup,
                     reportStatsExtendedMetricsCapabilitiesObjectsGroup,
                     reportStatsExtendedMetricsControlObjectsGroup,
                     reportStatsExtendedMetricsDataObjectsGroup } rule may require the probe to delay
          collecting the first sample of the history, as each sample
          must be of the same interval. Also note that the sample which
          is currently being collected is not accessible in this table
          until the end of its interval."
      ::= { reportCompliances reportSampledEntry 3 }

reportSampledBasicCompliance  MODULE-COMPLIANCE

  reportSampledIntervalEnd OBJECT-TYPE
      SYNTAX TimeStamp
      MAX-ACCESS read-only
      STATUS current
      DESCRIPTION
          "The Sampled basic implementation requirements for
                managed network entities that implement value of sysUpTime at the REPORT process."
   MODULE  -- end of the interval over which
          this module
   MANDATORY-GROUPS {reportSampledControlBaseObjectsGroup,
                     reportSampledObjectIDBaseObjectsGroup,
                     reportSampledDataBaseObjectsGroup,
                     reportNotificationGroup,
                     reportSampledNotificationGroup } sample was measured."
      ::= { reportCompliances reportSampledEntry 4 }

reportHistoryBasicCompliance  MODULE-COMPLIANCE

  reportSampledAbsValue OBJECT-TYPE
      SYNTAX Gauge32
      MAX-ACCESS read-only
      STATUS current
      DESCRIPTION
          "The History basic implementation requirements absolute value (i.e. unsigned value) of the
          user-specified statistic during the last sampling period. The
          value during the current sampling period is not made available
          until the period is completed.

          To obtain the true value for
                managed network entities that implement this sampling interval, the REPORT process."
   MODULE  --
          associated instance of reportSampledValStatus must
          be checked, and reportSampledAbsValue adjusted as necessary.

          If the MIB instance could not be accessed during the sampling
          interval, then this module
   MANDATORY-GROUPS {reportHistoryControlBaseObjectsGroup,
                     reportHistoryDataBaseObjectsGroup,
                     reportNotificationGroup,
                     reportHistoryNotificationGroup }
::= { reportCompliances 5 }

-- Units object will have a value of Conformance

reportStatsCapabilitiesBaseObjectsGroup OBJECT-GROUP
   OBJECTS {
            reportClockResolution,
            reportClockMaxSkew,
            reportClockSource
   }
   STATUS  current
   DESCRIPTION
      "Set zero and the
          associated instance of REPORT configuration objects implemented
       in this module." reportSampledValStatus will be set to
          'valueNotAvailable(1)'."
      ::= { reportMIBGroups 1 reportSampledEntry 5 }

reportStatsControlBaseObjectsGroup OBJECT-GROUP
   OBJECTS

  reportSampledValStatus OBJECT-TYPE
      SYNTAX INTEGER {
            reportStatsControlIndex,
            reportStatsControlInterval,
            reportStatsControlBinInterval,
            reportStatsControlPriObjID,
            reportStatsControlPriObjIpAddrType,
            reportStatsControlPriObjIPAddr,
            reportStatsControlReqReports,
            reportStatsControlGrantedReports,
            reportStatsControlStartTime,
            reportStatsControlReportNumber,
            reportStatsControlInsertsDenied,
            reportStatsControlOwner,
            reportStatsControlStorageType,
            reportStatsControlStatus
          valueNotAvailable(1),
          valuePositive(2),
          valueNegative(3)
      }
      MAX-ACCESS read-only
      STATUS current
      DESCRIPTION
      "Set
          "This object indicates the validity and sign of REPORT Stats Control base objects implemented the data in this module."
          the associated instance of reportSampledAbsValue.

          If the MIB instance could not be accessed during the sampling
          interval, then 'valueNotAvailable(1)' will be returned.

          If the sample is valid and actual value of the sample is
          greater than or equal to zero then 'valuePositive(2)' is
          returned.

          If the sample is valid and the actual value of the sample is
          less than zero, 'valueNegative(3)' will be returned. The
          associated instance of reportSampledAbsValue should be
          multiplied by -1 to obtain the true sample value."
      ::= { reportMIBGroups 2 reportSampledEntry 6 }

reportStatsDataBaseObjectsGroup  OBJECT-GROUP

  --
  -- Notifications
  --

  reportSampledNotificationObjects OBJECT IDENTIFIER
                                   ::= {reportSampledMIBNotifications 1}

     -- reportSampledNotificationObjects

     reportSampledNewDataReport NOTIFICATION-TYPE
            OBJECTS {
            reportStatsDataIndex,
            reportStatsDataStatN,
            reportStatsDataStatSumX,
            reportStatsDataOverflowStatSumX,
            reportStatsDataStatMaximum,
            reportStatsDataStatMinimum,
            reportStatsDataStatSumSq,
            reportStatsDataOverflowStatSumSq,
            reportStatsDataStatSumIX,
            reportStatsDataOverflowStatSumIX,
            reportStatsDataStatSumIXSq,
            reportStatsDataOverflowStatSumIXSq
   }
   STATUS  current
   DESCRIPTION
      "Set usrHistoryControlOwner, -- The entity that
                               --   configured this entry
                      reportSampledReportIndex   -- The index of REPORT state objects implemented
       in the
                               --   data table for this module."
::= { reportMIBGroups 3 }

reportNotificationGroup  OBJECT-GROUP
   OBJECTS {
            reportSetNotification report
                    }
            STATUS       current
            DESCRIPTION
      "Set of REPORT notifications implemented
       in
               "reportSampledNewDataReport is a notification sent
                when a new report is completed from the
                reportSampledControlTable.  The notification carries
                the index from the control table that established
                this module for report and the Statistics reports."
::= { reportMIBGroups 4 }

reportStatsNotificationGroup  NOTIFICATION-GROUP
   NOTIFICATIONS {
            reportNewStatsDataReport
   }
   STATUS  current
   DESCRIPTION
      "Set of REPORT notifications implemented
       in index from the data table that
                holds this module for report.  Indication of the Statistics reports." new report
                is when the reportSampledControlReportNumber
                is incremented."
            ::= { reportMIBGroups 5 }
reportStatsDataHCObjectsGroup  OBJECT-GROUP
   OBJECTS {
            reportStatsDataHCStatSumX,
            reportStatsDataHCStatSumSq,
            reportStatsDataHCStatSumIX,
            reportStatsDataHCStatSumIXSq reportSampledNotificationObjects 1 }
   STATUS  current
   DESCRIPTION
      "Set of REPORT state objects implemented
       in this module."

  --
  -- Compliance Statements
  --

  -- Mandatory for Sampled will include all.

  reportSampledCompliances  OBJECT IDENTIFIER
                            ::= { reportMIBGroups 6 reportSampledMIBConformance 1 }

reportStatsExtendedMetricsCapabilitiesObjectsGroup  OBJECT-GROUP
   OBJECTS
  reportSampledMIBGroups    OBJECT IDENTIFIER
                            ::= {
            reportMetricExtDefType,
            reportMetricExtDefName,
            reportMetricExtDefOperation,
            reportMetricExtDefReference,
            reportMetricDirLastChange reportSampledMIBConformance 2 }

  reportSampledCompliance  MODULE-COMPLIANCE
     STATUS current
     DESCRIPTION
      "Set of "The Sampled basic implementation requirements for
                  managed network entities that implement
                  the REPORT state objects implemented
       in Sampled process."
     MODULE  -- this module."
::= module
     MANDATORY-GROUPS { reportMIBGroups 7 reportSampledLocalGroup }

reportStatsExtendedMetricsControlObjectsGroup  OBJECT-GROUP
   OBJECTS
  ::= {
            reportStatsControlSecObj1ID,
            reportStatsControlSecObj1IpAddrType,
            reportStatsControlSecObj1IPAddr,
            reportStatsControlSecObj2ID,
            reportStatsControlSecObj2IpAddrType,
            reportStatsControlSecObj2IPAddr,
            reportStatsControlSecObj3ID,
            reportStatsControlSecObj3IpAddrType,
            reportStatsControlSecObj3IPAddr,
            reportStatsControlSecObj4ID,
            reportStatsControlSecObj4IpAddrType,
            reportStatsControlSecObj4IPAddr,
            reportStatsControlSecObj5ID,
            reportStatsControlSecObj5IpAddrType,
            reportStatsControlSecObj5IPAddr,
            reportStatsControlMetricExt1,
            reportStatsControlMetricExt2,
            reportStatsControlMetricExt3,
            reportStatsControlMetricExt4,
            reportStatsControlMetricExt5 reportSampledCompliances 1 }

  reportSampledNotificationCompliance  MODULE-COMPLIANCE
     STATUS current
     DESCRIPTION
      "Set of "The Sampled Notification implementation
                  requirements for managed network entities
                  that implement the REPORT state objects implemented
       in process."
     MODULE  -- this module." module
     MANDATORY-GROUPS { reportSampledNotificationObjectGroup }
  ::= { reportMIBGroups 8 reportSampledCompliances 2 }

reportStatsExtendedMetricsDataObjectsGroup

  -- Units of Conformance

  reportSampledLocalGroup  OBJECT-GROUP
     OBJECTS {
            reportStatsDataStatMetricExt1,
            reportStatsDataStatMetricExt2,
            reportStatsDataStatMetricExt3,
            reportStatsDataStatMetricExt4,
            reportStatsDataStatMetricExt5
              reportSampledControlRequestedNumber,
              reportSampledControlReportNumber,
              reportSampledObjectIpAddrType,
              reportSampledObjectIPAddress,
              reportSampledReportIndex,
              reportSampledIntervalStart,
              reportSampledIntervalEnd,
              reportSampledAbsValue,
              reportSampledValStatus
     }
     STATUS  current
     DESCRIPTION
        "Set of REPORT state objects implemented
         in this module."
  ::= { reportMIBGroups 9 reportSampledMIBGroups 1 }

reportSampledControlBaseObjectsGroup

  --reportSampledImportedGroup  OBJECT-GROUP
  --   OBJECTS {
            reportSampledControlIndex,
            reportSampledControlObjects,
            reportSampledControlBucketsRequested,
            reportSampledControlBucketsGranted,
            reportSampledControlInterval,
            reportSampledControlRequestedNumber,
            reportSampledControlReportNumber,
            reportSampledControlOwner,
            reportSampledControlStatus
  --            usrHistoryControlObjects,
  --            usrHistoryControlBucketsRequested,
  --            usrHistoryControlBucketsGranted,
  --            usrHistoryControlInterval,
  --            usrHistoryControlOwner,
  --            usrHistoryControlStatus,
  --            usrHistoryObjectVariable,
  --            usrHistoryObjectSampleType
  --   }
  --   STATUS  current
  --   DESCRIPTION
  --      "Set of REPORT state objects implemented
  --       in this module."
::=
  --::= { reportMIBGroups 10 reportSampledMIBGroups 2 }

reportSampledObjectIDBaseObjectsGroup  OBJECT-GROUP
   OBJECTS

  reportSampledNotificationObjectGroup  NOTIFICATION-GROUP
     NOTIFICATIONS {
            reportSampledObjectVariable,
            reportSampledObjectIpAddrType,
            reportSampledObjectIPAddress,
            reportSampledObjectSampleType
              reportSampledNewDataReport
     }
     STATUS  current
     DESCRIPTION
        "Set of REPORT state objects notifications implemented
         in this module." module for the Sampled reports."
  ::= { reportMIBGroups 11 }

reportSampledDataBaseObjectsGroup  OBJECT-GROUP
   OBJECTS {
            reportSampledReportIndex,
            reportSampledIntervalStart,
            reportSampledIntervalEnd,
            reportSampledAbsValue,
            reportSampledValStatus reportSampledMIBGroups 3 }
   STATUS  current
   DESCRIPTION
      "Set

  END

8.  Security Considerations

   This REPORT-SAMPLED-MIB defines a capability where the local device
   may poll other remote devices to collect performance data accessible
   through other MIB modules on the remote devices.  These capabilities
   defined within the REPORT-SAMPLED-MIB are control-able by a network
   management application through SNMP.  As such, a network management
   application could potentially use the REPORT-SAMPLED-MIB as a
   mechanism to implement a Distributed Denial-of-Service (DDoS) attack
   against remote devices.  Care should be taken to secure access to the
   REPORT-SAMPLED-MIB 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 REPORT state management objects implemented defined in this module."
::= { reportMIBGroups 12 }

reportSampledNotificationGroup  NOTIFICATION-GROUP
   NOTIFICATIONS {
            reportNewSampledDataReport
   }
   STATUS  current
   DESCRIPTION
      "Set MIB module
   with a MAX-ACCESS clause of REPORT notifications implemented read-write and/or read-create.  Such
   objects may be considered sensitive or vulnerable in this module 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 Sampled reports."
::= { reportMIBGroups 13 }

reportHistoryControlBaseObjectsGroup  OBJECT-GROUP
   OBJECTS {
            reportHistoryControlIndex,
            reportHistoryControlObject,
            reportHistoryControlObjectIpAddrType,
            reportHistoryControlObjectIPAddress,
            reportHistoryControlSizeRequested,
            reportHistoryControlSizeGranted,
            reportHistoryControlRequestedNumber,
            reportHistoryControlReportNumber,
            reportHistoryControlOwner,
            reportHistoryControlStatus
   }
   STATUS  current
   DESCRIPTION
      "Set of REPORT state tables and objects implemented
       in this module."
::= { reportMIBGroups 14 }
reportHistoryDataBaseObjectsGroup  OBJECT-GROUP
   OBJECTS {
            reportHistoryDataIndex,
            reportHistoryDataChangeTime,
            reportHistoryDataValueType,
            reportHistoryDataValue,
            reportHistoryDataValStatus
   }
   STATUS  current
   DESCRIPTION
      "Set of REPORT state and their sensitivity/vulnerability:

   o  The reportSampledControlTable is a writable table whose columnar
      objects implemented
       in are read-create.  The following objects with MAX ACCESS of
      read-create and their security sensitivities are:

   o

      *  usrHistoryControlBucketRequested - this module."
::= { reportMIBGroups 15 }

reportHistoryNotificationGroup  NOTIFICATION-GROUP
   NOTIFICATIONS {
            reportNewHistoryDataReport
   }
   STATUS  current
   DESCRIPTION
      "Set object identifies the
         requested number of REPORT notifications implemented
       in buckets (or intervals) requested for each
         identified object for each report instance.  As such, this module
         related to the total device memory necessary to hold the
         collected data for the History reports."
::= { reportMIBGroups 16 }

END

8.  Security Considerations

   [TODO] Each specification that defines one or more MIB modules MUST
   contain a section that discusses security considerations relevant identified reports.  The device must
         determine whether it has the necessary storage.  If not, the
         device can indicate the available storage through the
         usrHistoryControlBucketGranted object within this table.  The
         device to
   those modules.  This section MUST be patterned after protect itself against memory overruns.

      *  usrHistoryControlInterval - this object identifies the latest
   approved template (available at
   http://www.ops.ietf.org/mib-security.html).  Remember that time
         interval being sampling events.  If set too low, the
   objective is device may
         not be able to blindly copy text from sample the template, but rather object on remote devices fast enough
         to think and evaluate satisfy the risks/vulnerabilities and then state/
   document requested interval.  Further, setting this value
         too low could be used to overwhelm the result processing capabilities
         of this evaluation.

   [TODO] if you have any read-write and/or read-create objects, please
   include the following boilerplate paragraph.

   There are remote agent, resulting in a Denial-of-Service (DoS)
         attack.

      *  reportSampledControlRequestedNumber - this object identifies
         the requested number of management objects defined consecutive reports of this type to be
         generated and stored in this MIB module
   with a MAX-ACCESS clause device.  When, the value of read-write and/or read-create.  Such
   objects may this
         object should 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:

   o  [TODO] writable MIB local device's estimates of
         memory consumption related to this control table row.

      *  usrHistoryControlOwner - this objects that could be especially disruptive if
      abused MUST be explicitly listed by provides a name and the
         associated
      security risks MUST be spelled out; RFC 2669 has a very good
      example.

   o  [TODO] list with the writable tables and objects and state why they are
      sensitive.

   [TODO] else if there are no read-write objects in your MIB module,
   use presumed identity of the following boilerplate paragraph.

   There are no application
         configuring this report.  If the local device or management objects defined
         applications attribute any authority to the values contained in
         this MIB module that have
   a MAX-ACCESS clause of read-write and/or read-create.  So, if this
   MIB module is implemented correctly, object, then there it is no risk that an
   intruder can alter critical to secure access to setting or create any management objects
         modifying the value of this MIB
   module via direct SNMP SET operations.

   [TODO] if you have any sensitive readable objects, please include object.

      *  usrHistoryControlStatus - this is the RowStatus object
         controlling the
   following boilerplate paragraph.

   Some configuration of the readable objects in this MIB module (i.e., table row.

   o  The reportSampledObjectTable is a writable table whose columnar
      objects are read-create.  The following objects with MAX ACCESS of
      read-create and their security sensitivities are:

   o

      *  usrHistoryObjectVariable - this object identifies the specific
         OID on a
   MAX-ACCESS other than not-accessible) may be considered sensitive (potentially) remote agent whose counter or
   vulnerable in some network environments.  It is thus important gauge
         values are to
   control even be collected for the reports.  If, for whatever
         reason, the values of this OID collected within the report is
         deemed sensitive, then the SNMP GET and/or NOTIFY access operations issued to
         collect these objects values should use SNMPv3 authentication and possibly
         encryption mechanisms to even encrypt protect.

      *  reportSampledObjectIpAddrType - this object identifies the values
         address type associated with the address of these objects when sending them over the network via SNMP.  These are agent whose OID
         data is being collected for the tables and objects and their
   sensitivity/vulnerability:

   o  [TODO] you must explicitly list by name any readable objects that
      are sensitive or vulnerable and report.

      *  reportSampledObjectIpAddress - this object identifies the
         address associated security risks MUST
      be spelled out (for instance, if they might reveal customer
      information or violate personal privacy laws such as those with the address of the
      European Union if exposed to unauthorized parties)

   o  [TODO] list agent whose OID data
         is being collected for the tables and objects and state why they are
      sensitive.

   [TODO] discuss what security report.  If the protocol used to carry address of the
         remote devices is deemed sensitive, then the SNMP SETs which
         write or the SNMP GET which collect this information should have.  The following three boilerplate paragraphs
   should not be changed without very good reason.  Changes will almost
   certainly require justification during IESG review.
         protected using SNMPv3 authentication and encryption
         mechanisms.

      *  usrHistoryObjectSampleType - this object identifies the the way
         in which data values are to be stored within the reports.

   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.  IANA Considerations

   [TODO] In order to comply with IESG policy as set forth in
   http://www.ietf.org/ID-Checklist.html, every Internet-Draft that is
   submitted to the IESG for publication MUST contain an IANA
   Considerations section.  The requirements for this section vary
   depending what actions are required of the IANA. see RFC4181 section
   3.5 for more information on writing an IANA clause for a MIB module
   document.

   [TODO] select an option and provide the necessary details.

   Option #1:

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

        Descriptor        OBJECT IDENTIFIER value
        ----------        -----------------------

        sampleMIB

        reportSampledMIB  { mib-2 experimental XXX }

   Option #2:

   Editor's Note (to be removed prior to publication): the IANA is
   requested to assign a value for "XXX" under the 'mib-2' sub-tree and
   to record the assignment in the SMI Numbers registry.  When the
   assignment has been made, the RFC Editor is asked to replace "XXX"
   (here and in the MIB module) with the assigned value and to remove
   this note.

   Note well: prior to official assignment by the IANA, a draft document
   MUST use placeholders (such as "XXX" above) rather than actual
   numbers.  See RFC4181 Section 4.5 for an example of how this is done
   in a draft MIB module.

   Option #3:

   This memo includes no request to IANA.

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

11.  Acknowledgements

   We would like to thank Bert Wijnen and Andy Bierman 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 his forcing promoting additions to this MIB through his thoughtful
   consideration of performance monitoring requirements for other MIBs, MIBs
   within the MANET WG, e.g., NHDP and OLSR MIBs.

12.  References

12.1.  Normative References

   [RFC2863]  McCloghrie, K. and F. Kastenholz, "The Interfaces Group
              MIB", RFC 2863, June 2000.

   [RFC3418]  Presuhn, R., "Management Information Base (MIB) for the
              Simple Network Management Protocol (SNMP)", STD 62,
              RFC 3418, December 2002.

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

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

   [RFC2579]  McCloghrie, K., Ed., Perkins, D., Ed., and J.
              Schoenwaelder, Ed., "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.

   [RFC4001]  Daniele, M., Haberman, B., Routhier, S., and J.
              Schoenwaelder, "Textual Conventions for Internet Network
              Addresses", RFC 4001, February 2005.

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

   [RFC1757]  Waldbusser, S., "Remote Network Monitoring Management
              Information Base", RFC 1757, February 1995.

   [RFC2021]  Waldbusser, S., "Remote Network Monitoring Management
              Information Base Version 2 using SMIv2", RFC 2021,
              January 1997.

   [RFC4150]  Dietz, R. and R. Cole, "Transport Performance Metrics
              MIB", RFC 4150, August 2005.

Appendix A.  Change Log

   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 REPORT-MIB REPORT-SAMPLED-MIB 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 REPORT-
       MIB.
       SAMPLED-MIB.

   2.  Restructured the MIB to account for the inclusion of the
       reportSampledGroup.

   3.  Dropped the reportCurReportsTable as this did not make sense
       within the context of the REPORT-MIB. REPORT-SAMPLED-MIB.

   4.  Added the Compliance and Conformance material.  Defined several
       Compliance Groups to all for base implementations of the REPORT-
       MIB
       SAMPLED-MIB 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 REPORT-MIB. REPORT-SAMPLED-MIB.  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.  Need to add an index associated with object IDs of interest which
       are contained within a table, e.g., IfPacketsIn in an
       InterfaceTable which is indexed by IfIndex.  (Note: (RGC)I think
       adding the IP address associated with the referenced object
       addresses this issue.)

   2.  Complete notification group.  Need to develop the preferred data
       report transmission model.  This will influence the design of the
       Notifications.  The initial form for the notifications has been
       laid out in draft-ietf-manet-report-mib-02.

   3.  Update the text of the document to reflect the final state of the
       MIB.

   4.  Identify all objects requiring non-volatile storage in their
       DESCRIPTION clauses.

   5.  Complete the security analysis and section.

   6.  Cleanup all the [TODOs] from the MIB template.

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
   328 Hopkins
   6010 Frankford Road
   Aberdeen Proving Ground, Maryland  21005
   USA

   Phone: +1 410 278 6779 443 395 8744
   EMail: robert.g.cole@us.army.mil
   URI:   http://www.cs.jhu.edu/~rgcole/

   Joseph Macker
   Naval Research Laboratory
   Washington, D.C.  20375
   USA

   EMail: macker@itd.nrl.navy.mil

   Al Morton
   AT&T Laboratories
   Middletown, N.J.  07724
   USA

   Andy Bierman
   Brocade

   EMail: amorton@att.com andy.bierman@brocade.com