Network Working Group
Request for Comments: 3287
Category: Standards Track
A. Bierman
Cisco Systems, Inc.
July 2002
Page 1

Remote Monitoring MIB Extensions for

Differentiated Services

Status of this Memo

This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited.

Copyright Notice

Copyright © The Internet Society (2002). All Rights Reserved.

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 managed objects used for monitoring Differentiated Services (DS) Codepoint usage in packets which contain a DS field, utilizing the monitoring framework defined in the RMON-2 (Remote Network Monitoring Management Version 2) MIB.

Table of Contents

1 The SNMP Network Management Framework
2 Overview
2.1 Terms
2.2 Relationship to Differentiated Services
2.3 Relationship to the Remote Monitoring MIBs
3 MIB Structure
3.1 DSCP Counter Aggregation
3.1.1 Counter Aggregation Configuration
3.2 MIB Group Overview
3.2.1 DSCP Counter Aggregation Control Group
3.2.2 DS Statistics Group
3.2.3 DS Protocol Distribution Group
3.2.4 DS Host Distribution Group
3.2.5 DSMON Capabilities Group
3.2.6 DS Matrix Distribution Group
3.3 RMON vs. DSMON Indexing Structure
4 Definitions


Page 2

5 Counter Aggregation Configuration Usage Examples
5.1 Step 1: Unlock the Counter Aggregation Configuration
5.2 Step 2: Check the Maximum number of Counter Aggregation Groups
5.3 Step 3: Check if the counter aggregation profiles already exist
5.4 Step 4: Create the Counter Aggregation Control Entries
5.5 Step 5: Create the Counter Aggregation Group Descriptions
5.6 Step 6: Create the Counter Aggregation Profile Mappings
5.7 Step 7: Lock the Counter Aggregation Configuration
6 Intellectual Property
7 Acknowledgements
8 References
9 Security Considerations
10 Author's Address
11 Full Copyright Statement

1 The SNMP Network Management Framework

The SNMP Management Framework presently consists of five major components:


Page 3

A more detailed introduction to the current SNMP Management Framework can be found in RFC 2570 [RFC2570].

Managed objects are accessed via a virtual information store, termed the Management Information Base or MIB. Objects in the MIB are defined using the mechanisms defined in the SMI.

This memo specifies a MIB module that is compliant to the SMIv2. A MIB conforming to the SMIv1 can be produced through the appropriate translations. The resulting translated MIB must be semantically equivalent, except where objects or events are omitted because no translation is possible (use of Counter64). Some machine readable information in SMIv2 will be converted into textual descriptions in SMIv1 during the translation process. However, this loss of machine readable information is not considered to change the semantics of the MIB.

2 Overview

There is a need for a standardized way of monitoring the network traffic usage of Differentiated Services (DS) [RFC2474] codepoint values. Each DS codepoint (DSCP) value may be given a different treatment by a forwarding device, and this affects which packets get dropped or delayed during periods of network congestion.

The IETF DIFFSERV working group has redefined the semantics of the Type of Service (TOS) octet in the IP header, which is now called the 'DS field'. The 6-bit Codepoint (DSCP) portion is contained in the DS field, which provides for 64 different packet treatments for the implementation of differentiated network services.

By polling DSCP usage counters, an NMS can determine the network throughput for traffic associated with different DSCPs. This data can then be analyzed in order to 'tune' DSCP 'allocations' within a network, based on the Quality of Service (QoS) policies for that network.

Remote monitoring agents are typically implemented as independent software (and sometimes hardware) components, called 'RMON probes'. Note that DSMON-capable RMON probes simply collect and aggregate statistics, based on criteria (which includes the DSCP value) that can be determined by inspecting the contents of monitored packets and do not in any way monitor any aspect of a DS forwarding device's internal statistics.


Page 4

2.1 Terms

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 BCP 14, RFC 2119. [RFC2119]

This document uses some terms that need introduction:

DataSource
A source of data for monitoring purposes. This term is used exactly as defined in the RMON-2 MIB [RFC2021].

protocol
A specific protocol encapsulation, as identified for monitoring purposes. This term is used exactly as defined in the RMON Protocol Identifiers document [RFC2074].

Counter Aggregation Group
A group of statistical counters that are being combined in the agent to produce one aggregated counter. Refer to sections 3.1 and 3.2.1 for details on counter aggregation groups.

Counter Aggregation Profile
Also called 'profile'; A complete set of counter aggregation group mappings for DSCP values (i.e., 64 mappings, for each DSCP values 0 to 63), which are applied to all monitored packets on a particular data source and/or DSMON collection. Refer to sections 3.1 and 3.2.1 for details on counter aggregation profiles.

High Capacity Monitoring
The generic capability to collect and store statistics with an internal range of 64 bits (e.g., Counter64). This term does not refer to implementation of the High Capacity RMON MIB [RFC3273].

2.2 Relationship to Differentiated Services

The DSMON MIB is a product of the RMONMIB WG, not the DIFFSERV WG, and it focuses on extending several existing RMON mechanisms to support additional packet classification, based on DSCP values observed in monitored packets. This document assumes the reader is familiar with the DS Architecture [RFC2475].

It is expected that complex management applications will use the counters in this MIB to help analyze DS-related throughput. It is expected that other metrics, such as delay and jitter, will also be analyzed, but support for other metrics is outside the scope of this document.


Page 5

2.3 Relationship to the Remote Monitoring MIBs

This MIB is intended to be implemented in Remote Monitoring (RMON) probes, which support the RMON-2 MIB [RFC2021]. Such probes may be stand-alone devices, or may be co-located with other networking devices (e.g., ethernet switches and repeaters).

The DSMON functions are intended to be implemented in conjunction with the associated RMON functions, but the MIB is independent of all other RMON data tables.

Several concepts and even MIB objects from the RMON MIBs are used in the DSMON MIB:

Protocol Directory
The RMON-2 MIB [RFC2021] defines the protocolDirTable, which is a directory of all the protocols that the RMON-2 agent is capable of decoding and counting. The DSMON MIB utilizes this directory to identify the protocols detected in monitored packets. The protocolDirLocalIndex MIB object is used to identify protocol encapsulations in all DSMON data tables which classify and aggregate by protocol type in some manner. Note that the protocolDirTable is used for protocol identification only, independent of DSCP classification.

TimeFilter
The RMON-2 TimeFilter textual convention provides a mechanism to retrieve only rows which have been created or modified since the last polling interval (for a particular NMS). The DSMON MIB uses this textual convention in the large data tables, in order to minimize polling impact.

Zero-Based Counters
Since counters are instantiated by management action, as in the RMON MIBs, the DSMON MIB uses zero-based counters in all data collection tables. Specifically, the ZeroBasedCounter32 textual convention from the RMON-2 MIB [RFC2021] and the
ZeroBasedCounter64 textual convention (defined in the HCNUM-TC MIB [RFC2856]) are used to define counter objects in this MIB.

High Capacity Counters
The DSMON MIB uses the 'SNMPv1 coexistence' strategy adopted by the RMONMIB WG. That is, where a 64-bit counter is provided, a 32-bit version of the counter, and a 32-bit overflow counter are also provided.


Page 6

TopN Reports
The DSMON MIB uses the same TopN reporting MIB structure as the RMON-2 MIB [RFC2021]. TopN reporting can greatly reduce the polling overhead required to analyze DSCP usage patterns.

Some DESCRIPTION clauses for DSMON objects are very similar to those for existing RMON-2 or HC-RMON objects. This is intentional, since the semantics of the DSMON features are designed to be as close to existing RMON feature as possible, to allow developers and users some level of 'MIB re-use'.

3 MIB Structure

Figure 1: DSMON MIB Functional Structure

       +--------------+     +---------------+
       |              |     |    Counter    |
       |    DSMON     |     |  Aggregation  |
       | Capabilities |     |    Control    |
       |              |     |               |
       +--------------+     +---------------+
                                   |
                                   |
    +------------------------------+----------------------------+
    |                              V                            |
    |                                                           |
    | +-----------+ +-----------+ +-----------+ +------------+  |
    | |           | |           | |           | |            |  |
    | | Data Src  | | Protocol  | | Net. Host | | App Matrix |  |
    | |   Stats   | |  Stats    | |   Stats   | |    Stats   |  |
    | |           | |           | |           | |            |  |
    | +-----------+ +-----------+ +-----------+ +------------+  |
    |                     |             |             |         |
    |                     V             V             V         |
    |               +-----------+ +-----------+ +------------+  |
    |               |           | |           | |            |  |
    |               | Protocol  | | Net. Host | | App Matrix |  |
    |               |   TopN    | |   TopN    | |    TopN    |  |
    |               |           | |           | |            |  |
    |               +-----------+ +-----------+ +------------+  |
    |                                                           |
    |                     Data Collection                       |
    |                                                           |
    +-----------------------------------------------------------+


Page 7

The DSMON MIB can divided into three functional components:

   -  DSMON Capabilities
      Describes which DSMON object groups are supported by the agent on
      at least one data source.

   -  Counter Aggregation Control
      Controls how individual DIFFSERV codepoint counters are aggregated
      in DSMON data collections.

   -  Data Collection
      Controls how individual statistical collections are maintained by
      the agent and reported to management applications.  The individual
      boxes within the Data Collection box represent the DSMON data
      collections (described in section 3.2):

         -  Data Source Statistics
         -  Protocol Statistics
         -  Protocol Statistics TopN Reporting
         -  Network Protocol Host Statistics
         -  Network Protocol Host Statistics TopN Reporting
         -  Application Protocol Matrix Statistics
         -  Application Protocol Matrix Statistics TopN Reporting

3.1 DSCP Counter Aggregation

A mechanism to configure the agent to internally aggregate counters is provided, based on DSCP values. This is desirable for several reasons:

   -  agent data reduction
      An agent implementation can potentially reduce the number of
      counters maintained for a given DSMON collection.

   -  agent data collection limitations
      Some implementation strategies might provide for a limited number
      of high-speed (e.g., hardware-based) counters for either single or
      aggregated codepoints.

   -  application data retrieval reduction
      Applications that would otherwise aggregate counters for
      individual codepoints can move that function to the agent in order
      to reduce the polling overhead on the application, the network,
      and the agent device.

   -  some unused codepoints at this time
      Various DSCP values may be expected to remain unused on a given
      network, and may be aggregated for counting purposes.


Page 8

   -  some DSCP values are mapped to the same packet treatment
      A network administrator may align the counter aggregation
      configuration of the monitoring device with the DS configuration,
      and aggregate statistics for DSCP values which are expected to
      receive the same treatment by the forwarding devices.

3.1.1 Counter Aggregation Configuration

The configuration of DSCP counter to counter aggregation group mappings is managed in a global manner, so that these settings can be shared across several DSMON collections and/or data sources. One complete set of DSCP counter mappings is called a counter aggregation profile. The DSMON control tables are very similar to existing RMON-2 control tables, except they contain an extra parameter to identify the counter aggregation profile the agent should use for the collection.

The appropriate granularity for counter aggregation profile assignment may be the data source, but in order to reduce MIB complexity (by avoiding an extra layer of tables), an instance of the counter aggregation profile parameter exists for each collection. An agent MAY choose to restrict configurations such that all DSMON data collections for the same data source must use the same counter aggregation profile.

The DSMON MIB supports the configuration of an arbitrary number of counter aggregation profiles. There is a top-level counter aggregation control table, which contains one entry for each counter aggregation profile. A subordinate counter aggregation profile table provides information about each DSCP counter to counter aggregation group mapping in each profile. An auxiliary counter aggregation group table also provides descriptive information about each counter aggregation group in each profile. Refer to section 3.2.1 for details on these MIB objects.

3.2 MIB Group Overview

The DSMON MIB contains six groups of MIB objects:

   -  dsmonAggregateControl group
      Controls the configuration of counter aggregation groups for the
      purpose of reducing the total number of counters maintained by the
      agent.

   -  dsmonStatsObjects group
      Report per counter aggregation group distribution statistics for a
      particular RMON dataSource.


Page 9

   -  dsmonPdistObjects group
      Report per counter aggregation group distribution statistics for
      each application protocol detected on a particular RMON
      dataSource.

   -  dsmonHostObjects group
      Report host address distribution statistics for each counter
      aggregation group, detected on a particular RMON dataSource.

   -  dsmonCapsObjects group
      Report the static DSMON MIB functional capabilities of the agent
      implementation.

   -  dsmonMatrixObjects group
      Report host address pair distribution statistics for each counter
      aggregation group, detected on a particular RMON dataSource.

3.2.1 DSCP Counter Aggregation Control Group

This group contains 4 scalar objects and three tables, and is used by a management station to configure counter aggregation profiles.

The dsmonMaxAggGroups scalar is a read-only integer which indicates the maximum number of counter aggregation groups that the agent will allow to be configured into a single aggregation profile. This value SHOULD be equal to 64 (the number of codepoints), but an agent MAY limit the number of counter aggregation groups because of resource limitations (e.g., small number of hardware-based counters). At least one counter aggregation profile containing at least two counter aggregation groups SHOULD be supported by the agent. (Note that classifying all DSCP counters into the same statistical 'bucket' may yield a redundant data collection, which can be achieved more easily with an HC-RMON or RMON-2 collection instead.)

The dsmonAggControlLocked scalar is used as a top level switch, controlling most write access to the dsmonAggControlTable, dsmonAggProfileTable, and dsmonAggGroupTable. (The
dsmonAggControlOwner object is the only exception.) All active DSMON collection data is deleted, and collection suspended, while this object is equal to 'false', since the meaning of one or more counter aggregation control tables may change when it is set back to 'true'.

The dsmonAggControlChanges counter and dsmonAggControlLastChangeTime timestamp can be used by a management station to detect that the codepoint to counter aggregation group mappings may have changed between polls.


Page 10

The dsmonAggControlTable is a read-create table which contains one entry for each counter aggregation profile configured on the agent. Each entry is identified by a dsmonAggControlIndex value, which is also used as the major index into the dsmonAggProfileTable and dsmonAggGroupTable. The DSMON control tables with DataSource objects select a counter aggregation profile by referencing this index value.

The dsmonAggProfileTable is a read-write table which contains 64 rows for each associated entry in the dsmonAggControlTable, which MUST be indexed from 0 to 63. The agent creates this set of 64 instances when the associated dsmonAggControlEntry is activated, and deletes them when that dsmonAggControlEntry is deactivated. Each of the 64 rows represents a conceptual DSCP counter, identified by the same dsmonAggProfileDSCP value, and contains the DSCP counter to counter aggregation group mapping for that DSCP counter, in the indicated profile. The agent SHOULD use the value zero as the initial counter aggregation group assignment for each entry in this table.

The dsmonAggGroupTable contains an administratively assigned descriptive label for each configured counter aggregation group. This table is not required to be fully configured in order for data collection to occur, since collections are identified by the agent with integer indices. It is provided to allow the agent to store a descriptive string for each configured counter aggregation group. There is no attempt made to convey any real semantics for each counter aggregation group. A management station MAY choose not to configure entries in this table.

3.2.2 DS Statistics Group

This group contains two tables, the dsmonStatsControlTable and the dsmonStatsTable, and supports counter aggregation group distribution statistics for half and full-duplex, low and high speed interfaces. Packet and octets distributions are maintained in the dsmonStatsTable for each active control row in the dsmonStatsControlTable.

This group provides the lowest statistics granularity in the DSMON MIB. It is expected that a management application will analyze certain DS deployment or performance problems by first examining the counter aggregation group distribution for an entire data source with this group.

3.2.3 DS Protocol Distribution Group

This group contains two tables for statistics collection, (dsmonPdistCtlTable and dsmonPdistStatsTable), and two tables for a 'Top N' reporting function for the collected statistics
(dsmonPdistTopNCtlTable and dsmonPdistTopNTable).


Page 11

The dsmonPdistCtlTable and dsmonPdistStatsTable tables provide counter aggregation group distribution statistics for each selected protocol encapsulation in packets monitored on a particular dataSource. Packet and octets distributions (per counter aggregation group per protocol) are maintained in the dsmonPdistStatsTable for each active control row in the dsmonPdistCtlTable.

Due to the potentially large number of entries, the DS Protocol Distribution is different from the RMON-2 protocol distribution group in several ways:

   -  maximum desired entries parameter added to the control table

   -  inserts and deletes counters added to the control table

   -  support for LRU garbage collection in the dsmonPdistStatsTable

   -  TimeFilter index added to the dsmonPdistStatsTable

   -  the selection of protocols is not configurable.  Rather than
      select individual protocols to monitor, (e.g., via a
      'supportedOn/Off' extension to the protocolDirTable [RFC 2021]), a
      simplified configuration mechanism is provided.  Since DSCP usage
      statistics are most interesting at the application layer, the
      dsmonPdistStatsTable is 'hardwired' to select only application
      layer (i.e., 'terminal') protocols for statistical analysis.

The TopN feature requires two additional tables: the
dsmonPdistTopNCtlTable and the dsmonPdistTopNTable, and supports periodic usage reporting for the statistics maintained in the dsmonPdistStatsTable. This feature allows for simple periodic retrieval of the most used application/counter aggregation group combinations.

3.2.4 DS Host Distribution Group

This group contains two tables for statistics collection, (dsmonHostCtlTable and dsmonHostTable), and two tables for a 'Top N' reporting function for the collected statistics
(dsmonHostTopNCtlTable and dsmonHostTopNTable).

The dsmonHostCtlTable and dsmonHostTables provide host distribution statistics for each counter aggregation group detected in packets monitored on a particular dataSource. The DSMON Host collection is similar to the RMON-2 network layer host collection (nlHostTable). There is no DSMON application host table defined at this time.


Page 12

It is expected that a management application will analyze certain DS deployment or performance problems by first determining the high priority DSCP values to examine (beyond the scope of this document) and then examining the dsmonHostTable or dsmonHostTopNTable statistics to determine which hosts are using the selected counter aggregation groups.

Packet and octets distributions (in and out, per counter aggregation group per host) are maintained in the dsmonHostTable for each active control row in the dsmonHostCtlTable.

The DS Host Distribution is different from the RMON-2 network layer host group in two ways:

   -  the protocolDirLocalIndex in the INDEX clause MUST identify a
      network protocol encapsulation which contains a DS field (e.g.,
      IPv4 or IPv6).  If a protocol encapsulation with multiple network
      layers is specified, then associated entries in this table refer
      to the innermost network protocol layer.

   -  the dsmonHostCtlTable supports limited IPv4 and IPv6 prefix
      aggregation by allowing the number of 'monitored address bits' in
      each address to be configured for each collection.  The agent will
      zero out the selected number of rightmost address bits for
      counting purposes.  This configuration parameter can dramatically
      reduce the number of entries which must be maintained by the
      agent, which should reduce CPU and memory resource requirements on
      the agent, and reduce polling overhead on the network and the
      management station.  However, only one mask can be configured for
      each address type, rather than multiple different length masks for
      each address type, based on prefix value.

The TopN feature requires two additional tables: the
dsmonHostTopNCtlTable and the dsmonHostTopNTable, and supports periodic usage reporting for the statistics maintained in the dsmonHostTable. This feature allows for simple periodic retrieval of the most used IP-host/DSCP combinations.

3.2.5 DSMON Capabilities Group

This group contains a single read-only scalar object,
dsmonCapabilities, which provides an indication of the MIB groups within this MIB that the agent supports.


Page 13

3.2.6 DS Matrix Distribution Group

This group contains three tables for statistics collection, (dsmonMatrixCtlTable, dsmonMatrixSDTable, and dsmonMatrixDSTable), and two tables for a 'Top N' reporting function for the collected statistics (dsmonMatrixTopNCtlTable and dsmonMatrixTopNTable).

The dsmonMatrixCtlTable, dsmonMatrixSDTable, and dsmonMatrixDSTable provide host-pair distribution statistics for each counter aggregation group detected in packets monitored on a particular dataSource. The DSMON Matrix collection is similar to the RMON-2 application layer matrix collection (alMatrixSDTable and
alMatrixDSTable). There is no DSMON network layer matrix table defined at this time.

It is expected that a management application will analyze certain DS deployment or performance problems by first determining the high priority DSCP values to examine (beyond the scope of this document) and then examining the dsmonMatrixSDTable, dsmonMatrixDSTable, and/or dsmonMatrixTopNTable statistics to determine which host-pairs are using the selected counter aggregation groups.

Packet and octets distributions (source to destination, per counter aggregation group per host-pair) are maintained in the
dsmonMatrixSDTable and dsmonMatrixDSTable for each active control row in the dsmonMatrixCtlTable.

The TopN feature requires two additional tables: the
dsmonMatrixTopNCtlTable and the dsmonMatrixTopNTable, and supports periodic usage reporting for the statistics maintained in the dsmonMatrixSDTable. This feature allows for simple periodic retrieval of the most used IP-host-pair/DSCP combinations.

3.3 RMON vs. DSMON Indexing Structure

The DSMON-MIB control and data tables are very similar in structure and look-and-feel to existing RMON-2 and HC-RMON control tables for the comparable feature, in order to maintain consistent agent behavior and functionality across RMON MIBs. The DSMON data tables are indexed as closely as possible to the comparable RMON-2 or HC- RMON tables, with the addition of an index component for DSCP-based classification (i.e. dsmonAggGroup). Refer to Table 1 for a comparison of DSMON indexing structure with similar existing RMON features.


Page 14

Table 1: DSMON Indexing Comparison

           Existing RMON                 DSMON
    --------------------------------------------------------------------
                      Full Duplex Interface Statistics

    mediaIndependentEntry            | dsmonStatsControlEntry
       mediaIndependentIndex         |    dsmonStatsControlIndex
                                     | dsmonStatsEntry
                                     |    dsmonStatsControlIndex,
                                     |    dsmonAggGroupIndex
    ---------------------------------+------------------------------
                              Protocol Statistics

    protocolDistControlEntry         | dsmonPdistCtlEntry
       protocolDistControlIndex      |    dsmonPdistCtlIndex
    protocolDistStatsEntry           | dsmonPdistStatsEntry
       protocolDistControlIndex,     |    dsmonPdistCtlIndex,
       protocolDirLocalIndex         |    dsmonPdistTimeMark,
                                     |    dsmonAggGroupIndex,
                                     |    protocolDirLocalIndex
    ---------------------------------+--------------------------------
                         Protocol TopN Distribution

                                     | dsmonPdistTopNCtlEntry
                                     |    dsmonPdistTopNCtlIndex
                  none               | dsmonPdistTopNEntry
                                     |    dsmonPdistTopNCtlIndex,
                                     |    dsmonPdistTopNIndex
    ---------------------------------+--------------------------------
                            Network Host Statistics

     hlHostControlEntry              | dsmonHostCtlEntry
        hlHostControlIndex           |    dsmonHostCtlIndex
     nlHostEntry                     | dsmonHostEntry
        hlHostControlIndex,          |    dsmonHostCtlIndex,
        nlHostTimeMark,              |    dsmonHostTimeMark,
        protocolDirLocalIndex,       |    dsmonAggGroupIndex,
        nlHostAddress                |    protocolDirLocalIndex,
                                     |    dsmonHostAddress
    ---------------------------------+--------------------------------


Page 15

Table 1 (Continued): DSMON Indexing Comparison

           Existing RMON                 DSMON

    ---------------------------------+--------------------------------
                         Network Host TopN Distribution

                                     | dsmonHostTopNCtlEntry
                                     |    dsmonHostTopNCtlIndex
                  none               | dsmonHostTopNEntry
                                     |    dsmonHostTopNCtlIndex,
                                     |    dsmonHostTopNIndex
    ---------------------------------+--------------------------------
                       Application Matrix Statistics

     hlMatrixControlEntry            | dsmonMatrixCtlEntry
        hlMatrixControlIndex         |    dsmonMatrixCtlIndex
     alMatrixSDEntry                 | dsmonMatrixSDEntry
        hlMatrixControlIndex,        |    dsmonMatrixCtlIndex,
        alMatrixSDTimeMark,          |    dsmonMatrixTimeMark,
        protocolDirLocalIndex,       |    dsmonAggGroupIndex,
        nlMatrixSDSourceAddress,     |    dsmonMatrixNLIndex,
        nlMatrixSDDestAddress        |    dsmonMatrixSourceAddress
        protocolDirLocalIndex        |    dsmonMatrixDestAddress
                                     |    dsmonMatrixALIndex
     alMatrixDSEntry                 | dsmonMatrixDSEntry
        hlMatrixControlIndex,        |    dsmonMatrixCtlIndex,
        alMatrixDSTimeMark,          |    dsmonMatrixTimeMark,
        protocolDirLocalIndex,       |    dsmonAggGroupIndex,
        nlMatrixDSDestAddress,       |    dsmonMatrixNLIndex,
        nlMatrixDSSourceAddress      |    dsmonMatrixDestAddress
        protocolDirLocalIndex        |    dsmonMatrixSourceAddress
                                     |    dsmonMatrixALIndex
    ---------------------------------+--------------------------------
                      Application Matrix TopN Distribution

                                     | dsmonMatrixTopNCtlEntry
                  none               |    dsmonMatrixTopNCtlIndex
                                     | dsmonMatrixTopNEntry
       (similar to nlMatrixTopN)     |    dsmonMatrixTopNCtlIndex,
                                     |    dsmonMatrixTopNIndex
    ---------------------------------+--------------------------------


Page 16

4 Definitions

DSMON-MIB DEFINITIONS ::= BEGIN

IMPORTS
MODULE-IDENTITY, OBJECT-TYPE, Integer32,
Counter32, Gauge32
FROM SNMPv2-SMI
MODULE-COMPLIANCE, OBJECT-GROUP
FROM SNMPv2-CONF
RowStatus, TimeStamp, TEXTUAL-CONVENTION, TruthValue FROM SNMPv2-TC
OwnerString, rmon
FROM RMON-MIB
protocolDirLocalIndex, LastCreateTime,
DataSource, ZeroBasedCounter32, TimeFilter
FROM RMON2-MIB
CounterBasedGauge64, ZeroBasedCounter64
FROM HCNUM-TC
SnmpAdminString
FROM SNMP-FRAMEWORK-MIB
Dscp
FROM DIFFSERV-DSCP-TC;

dsmonMIB MODULE-IDENTITY
    LAST-UPDATED    "200205310000Z"
    ORGANIZATION    "IETF RMONMIB Working Group"
    CONTACT-INFO
            "        Andy Bierman
                     Cisco Systems, Inc.
                     RMONMIB WG Chair and DSMON MIB Editor

Postal: 170 West Tasman Drive
San Jose, CA USA 95134
Tel: +1 408 527-3711
E-mail: abierman@cisco.com

Send comments to <rmonmib@ietf.org>
Mailing list subscription info:
http://www.ietf.org/mailman/listinfo/rmonmib " DESCRIPTION
"This module defines Remote Monitoring MIB extensions for Differentiated Services enabled networks.

RMON DIFFSERV DSCP statistics

              * Per Counter Aggregation Group
              * Per Protocol Per Counter Aggregation Group
              * Per Counter Aggregation Group Per Host


Page 17

              * Per Counter Aggregation Group Per Host-Pair

In order to maintain the RMON 'look-and-feel' and semantic consistency, some of the text from the RMON-2 and HC-RMON MIBs by Steve Waldbusser has been adapted for use in this MIB."

    REVISION        "200205310000Z"
    DESCRIPTION
            "Initial version of the DSMON MIB module.  This version
            published as RFC 3287."
    ::= { rmon 26 }

dsmonObjects       OBJECT IDENTIFIER ::= { dsmonMIB 1 }
dsmonNotifications OBJECT IDENTIFIER ::= { dsmonMIB 2 }
dsmonConformance   OBJECT IDENTIFIER ::= { dsmonMIB 3 }

dsmonAggObjects    OBJECT IDENTIFIER ::= { dsmonObjects 1 }
dsmonStatsObjects  OBJECT IDENTIFIER ::= { dsmonObjects 2 }
dsmonPdistObjects  OBJECT IDENTIFIER ::= { dsmonObjects 3 }
dsmonHostObjects   OBJECT IDENTIFIER ::= { dsmonObjects 4 }
dsmonCapsObjects   OBJECT IDENTIFIER ::= { dsmonObjects 5 }
dsmonMatrixObjects OBJECT IDENTIFIER ::= { dsmonObjects 6 }

--
-- Textual Convention to define a
-- DSMON Counter Aggregation Group Index
--

DsmonCounterAggGroupIndex ::= TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION
            "This TC describes a data type which identifies a DSMON
            counter aggregation group, which is an arbitrary grouping of
            conceptual counters, for monitoring purposes only.  The
            range for this data type begins with zero (instead of
            one), to allow for a direct mapping between counter
            indexing schemes that start at zero (e.g. DSCP values in
            packets) and counter aggregation group values."
    SYNTAX Integer32 (0..2147483647)

--
-- Textual Convention to define a
-- DSMON Counter Aggregation Profile Index
--

DsmonCounterAggProfileIndex ::= TEXTUAL-CONVENTION
    STATUS current


Page 18

DESCRIPTION
"This TC describes a data type which identifies a DSMON counter aggregation profile, which is a set of counter aggregation group assignments for each of the 64 DSCP values, for a particular statistical collection." SYNTAX Integer32 (1..2147483647)

-- ***********************************************************
-- *                                                         *
-- *           D S M O N    C A P A B I L I T I E S          *
-- *                                                         *
-- ***********************************************************

dsmonCapabilities OBJECT-TYPE
    SYNTAX      BITS  {
                       dsmonCounterAggControl(0),
                       dsmonStats(1),
                       dsmonStatsOvfl(2),
                       dsmonStatsHC(3),
                       dsmonPdist(4),
                       dsmonPdistOvfl(5),
                       dsmonPdistHC(6),
                       dsmonHost(7),
                       dsmonHostOvfl(8),
                       dsmonHostHC(9),
                       dsmonCaps(10),
                       dsmonMatrix(11),
                       dsmonMatrixOvfl(12),
                       dsmonMatrixHC(13)
                      }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "This object provides an indication of the DSMON groups
            supported by the agent.  If a bit is set, then the agent
            implements all of the objects in the DSMON object group,
            where bit 'n' represents the MIB group identified by the
            OBJECT IDENTIFIER value { dsmonGroups n+1 }."
    ::= { dsmonCapsObjects 1 }

-- ***********************************************************
-- *                                                         *
-- *   A G G R E G A T I O N   C O N T R O L   G R O U P S   *
-- *                                                         *
-- ***********************************************************


Page 19

dsmonMaxAggGroups OBJECT-TYPE
    SYNTAX      Integer32 (2..64)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The maximum number of counter aggregation groups that this
            agent can support.  The agent will allow this number of
            distinct groups to be configured in the
            dsmonAggProfileTable, numbered from '0' to
            'dsmonMaxAggGroups - 1', for each counter aggregation
            profile entry supported by the agent.

The agent MUST NOT lower this value during system operation, and SHOULD set this object to an appropriate value during system initialization."

    ::= { dsmonAggObjects 1 }

dsmonAggControlLocked OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "Controls the setup of counter aggregation groups for this
            agent.

If this object contains the value 'true', then write access to the objects in the dsmonAggControlTable (except the dsmonAggControlOwner object), dsmonAggProfileTable, and dsmonAggGroupTable is not permitted, and data collection is possible. This object only controls write access to these MIB objects. The DSMON data collection control tables (e.g., dsmonHostCtlTable) can be configured at any time, regardless of the value of this object.

If this object contains the value 'false', write access to the objects in the dsmonAggControlTable,
dsmonAggProfileTable, and dsmonAggGroupTable is permitted, and data collection is not possible. In addition, all objects in all DSMON data tables (e.g., dsmonStatsTable) shall be deleted.

An agent is not required to process SNMP Set Requests for this object in conjunction with other objects from this MIB. This is intended to simplify the processing of Set Requests for tables such as the dsmonAggProfileTable, by eliminating the possibility that a single Set PDU will contain multiple varbinds which are in conflict, such as a PDU which both modifies the dsmonAggProfileTable and locks the


Page 20

dsmonAggProfileTable at the same time.

Note that the agent is not required to validate the entire counter aggregation configuration when an attempt is made to transition an instance of this object from 'true' to 'false'. That validation is done if and when a DSMON data collection is activated.

An agent is required to reactivate any suspended data collections when this object transitions to 'true', Each active data control entry (e.g., dsmonStatsControlEntry), will be validated with respect to the new counter aggregation configuration. If the counter aggregation profile referenced in the data collection is valid, then that collection will be restarted. Otherwise, the RowStatus object (e.g., dsmonStatsControlStatus) will be set to 'notReady' for that collection control entry."

    ::= { dsmonAggObjects 2 }

dsmonAggControlChanges OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "This object counts the number of times the value of the
            dsmonAggControlLocked object has changed.  A management
            station can use this object to detect if counters in the
            DSMON data tables (e.g., dsmonStatsEntry) have been deleted
            and recreated between polls.

This object shall be incremented by one each time the dsmonAggControlLocked object changes from 'false' to 'true', or from 'true' to 'false'."

    ::= { dsmonAggObjects 3 }

dsmonAggControlLastChangeTime OBJECT-TYPE
    SYNTAX      TimeStamp
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "This object identifies the value of sysUpTime at the moment
            the dsmonAggControlLocked object was last modified.  A
            management station can use this object to detect if counters
            in the DSMON data tables (e.g., dsmonStatsEntry) have been
            deleted and recreated between polls.

This object shall be updated with the current value of sysUpTime, if the dsmonAggControlLocked object changes from


Page 21

'false' to 'true', or from 'true' to 'false'.

Upon system initialization, this object shall contain the value zero."

    ::= { dsmonAggObjects 4 }

--
-- Counter Aggregation Control Table
--

dsmonAggControlTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DsmonAggControlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "This table provides an overall description and control
            point for all dsmonAggProfileEntries with the same
            dsmonAggControlIndex value.

A management application SHOULD create a counter aggregation profile by first creating and activating an entry in this table. This will cause the agent to create a set of 64 dsmonAggProfileEntries on behalf of this control entry. An application can then set the individual counter aggregation group assignments for each of the 64 DSCP values,

This table MUST NOT be modified if the dsmonAggControlLocked object is equal to 'true'.

Note that an agent MAY choose to limit the actual number of entries which may be created in this table, and
(independently) the number of counter aggregation profiles which may be applied to a particular data source. In this case, the agent SHOULD return an error-status of 'resourceUnavailable(13)', as per section 4.2.5 of the 'Protocol Operations for SNMPv2' specification [RFC1905].

The agent SHOULD support non-volatile configuration of this table, and upon system initialization, the table SHOULD be initialized with the saved values. Otherwise, each potential counter aggregation group description string SHOULD contain the empty string."

    ::= { dsmonAggObjects 5 }

dsmonAggControlEntry OBJECT-TYPE
    SYNTAX      DsmonAggControlEntry
    MAX-ACCESS  not-accessible


Page 22

    STATUS      current
    DESCRIPTION
            "A conceptual row in the dsmonAggControlTable."
    INDEX { dsmonAggControlIndex }
    ::= { dsmonAggControlTable 1 }

DsmonAggControlEntry ::= SEQUENCE {
    dsmonAggControlIndex         DsmonCounterAggProfileIndex,
    dsmonAggControlDescr         SnmpAdminString,
    dsmonAggControlOwner         OwnerString,
    dsmonAggControlStatus        RowStatus
}

dsmonAggControlIndex OBJECT-TYPE
    SYNTAX      DsmonCounterAggProfileIndex
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "An arbitrary integer index value used to identify the
            counter aggregation profile specified by this control
            entry."
    ::= { dsmonAggControlEntry 1 }

dsmonAggControlDescr OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..64))
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "An administratively assigned description of the counter
            aggregation profile identified by this entry.

Upon first creation of an instance of this object, the agent SHOULD set this object to the empty string. If the agent supports non-volatile storage, then this object SHOULD be re-initialized with its stored value after a system reboot.

This object MUST NOT be modified if the associated dsmonAggControlStatus object is equal to 'active', or the dsmonAggControlLocked object is equal to 'true'."

    ::= { dsmonAggControlEntry 2 }

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


Page 23

    ::= { dsmonAggControlEntry 3 }

dsmonAggControlStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The status of this row.

An entry MUST NOT exist in the active state unless all objects in the entry have an appropriate value.

Upon setting this object to active(1), the agent will create a complete set of 64 associated entries in the
dsmonAggProfileTable.

If this object is not equal to active(1), all associated entries in the dsmonAggProfileTable shall be deleted.

This object MUST NOT be modified if the
dsmonAggControlLocked object is equal to 'true'."

    ::= { dsmonAggControlEntry 4 }

--
-- Counter Aggregation Profile Table
--

dsmonAggProfileTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DsmonAggProfileEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "Controls the setup of counter aggregation profiles for this
            agent.  For each such profile, every DSCP value MUST be
            configured into exactly one counter aggregation group.

This table MUST NOT be modified if the dsmonAggControlLocked object is equal to 'true'.

The agent will create a set of 64 entries in this table (with the same dsmonAggControlIndex value) when the associated dsmonAggControlEntry is activated.

If the agent supports non-volatile configuration of this table, then upon system initialization, this table SHOULD be initialized with the saved values."

    ::= { dsmonAggObjects 6 }


Page 24

dsmonAggProfileEntry OBJECT-TYPE
    SYNTAX      DsmonAggProfileEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A conceptual row in the dsmonAggProfileTable.  The
            dsmonAggControlIndex value in the index identifies the
            dsmonAggControlEntry associated with each entry in this
            table."
    INDEX { dsmonAggControlIndex, dsmonAggProfileDSCP }
    ::= { dsmonAggProfileTable 1 }

DsmonAggProfileEntry ::= SEQUENCE {
    dsmonAggProfileDSCP          Dscp,
    dsmonAggGroupIndex           DsmonCounterAggGroupIndex
}

dsmonAggProfileDSCP OBJECT-TYPE
    SYNTAX      Dscp
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The specific DSCP value for the DSCP counter which is
            configured in a counter aggregation group by this entry."
    ::= { dsmonAggProfileEntry 1 }

dsmonAggGroupIndex OBJECT-TYPE
    SYNTAX      DsmonCounterAggGroupIndex
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
            "The counter aggregation group which contains this DSCP
            value.  Upon creation of a new sub-tree (set of 64 entries
            with the same dsmonAggControlIndex value) in this table, the
            agent SHOULD initialize all related instances of this object
            to the value zero.

This object MUST NOT be modified if the
dsmonAggControlLocked object is equal to 'true'." DEFVAL { 0 }

    ::= { dsmonAggProfileEntry 2 }

--
-- Counter Aggregation Group Table
--


Page 25

dsmonAggGroupTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DsmonAggGroupEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "This table provides a description of each counter
            aggregation group configured on this system.  Note that the
            semantics of a particular counter aggregation group are only
            relevant within the scope of a particular counter
            aggregation profile.

This table MUST NOT be modified if the dsmonAggControlLocked object is equal to 'true'.

Note that an agent MAY choose to limit the actual number of entries which may be created in this table, and
(independently) the number of counter aggregation profiles which may be applied to a particular data source. In this case, the agent SHOULD return an error-status of 'resourceUnavailable(13)', as per section 4.2.5 of the 'Protocol Operations for SNMPv2' specification [RFC1905].

If the agent supports non-volatile configuration of this table, then upon system initialization, this table SHOULD be initialized with the saved values. Otherwise, each potential counter aggregation group description string SHOULD contain the empty string.

An agent SHOULD allow entries to be created or modified in this table, even if the specified dsmonAggControlIndex value does not identify a valid dsmonAggControlEntry or a complete set of valid dsmonAggProfileEntries, to reduce row creation order dependencies."

    ::= { dsmonAggObjects 7 }

dsmonAggGroupEntry OBJECT-TYPE
    SYNTAX      DsmonAggGroupEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A conceptual row in the dsmonAggGroupTable.  The
            dsmonAggGroupIndex value in the INDEX identifies the counter
            aggregation group associated with each entry.

The dsmonAggControlIndex in the index identifies the counter aggregation profile associated with each entry, identified by the dsmonAggControlEntry and dsmonAggProfileEntries with the same index value.


Page 26

The agent SHOULD support non-volatile configuration of this table, and upon system initialization, the table SHOULD be initialized with the saved values.

The dsmonAggGroupIndex in the index identifies the counter aggregation group associated with each entry. This object SHOULD be indexed from zero to 'N', where 'N' is less than the value of the dsmonMaxAggGroups for this agent."

INDEX { dsmonAggControlIndex, dsmonAggGroupIndex }

    ::= { dsmonAggGroupTable 1 }
DsmonAggGroupEntry ::= SEQUENCE {
    dsmonAggGroupDescr         SnmpAdminString,
    dsmonAggGroupStatus        RowStatus
}

dsmonAggGroupDescr OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..64))
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "An administratively assigned description of the counter
            aggregation group identified by this entry.

Upon first creation of an instance of this object, the agent SHOULD set this object to the empty string.

This object MUST NOT be modified if the associated dsmonAggGroupStatus object is equal to 'active', or the dsmonAggControlLocked object is equal to 'true'."

    ::= { dsmonAggGroupEntry 1 }

dsmonAggGroupStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The status of this row.

An entry MUST NOT exist in the active state unless all objects in the entry have an appropriate value.

This object MUST NOT be modified if the
dsmonAggControlLocked object is equal to 'true'."

    ::= { dsmonAggGroupEntry 2 }


Page 27

-- *************************************************************
-- *                                                           *
-- *     P E R - D A T A S O U R C E   C O L L E C T I O N S   *
-- *                                                           *
-- *************************************************************

--
-- Per-DataSource Statistics Control Table
--

dsmonStatsControlTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DsmonStatsControlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "Controls the setup of per data source per counter
            aggregation group distribution statistics.

Note that an agent MAY choose to limit the actual number of entries which may be created in this table. In this case, the agent SHOULD return an error-status of
'resourceUnavailable(13)', as per section 4.2.5 of the 'Protocol Operations for SNMPv2' specification [RFC1905]."

    ::= { dsmonStatsObjects 1 }

dsmonStatsControlEntry OBJECT-TYPE
    SYNTAX      DsmonStatsControlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A conceptual row in the dsmonStatsControlTable.

Entries are created and deleted from this table by management action only, using the dsmonStatsControlStatus RowStatus object.

The agent SHOULD support non-volatile configuration of this table, and upon system initialization, the table SHOULD be initialized with the saved values.

Activation of a control row in this table will cause an associated dsmonStatsTable to be created and maintained by the agent."
INDEX { dsmonStatsControlIndex }

    ::= { dsmonStatsControlTable 1 }

DsmonStatsControlEntry ::= SEQUENCE {
    dsmonStatsControlIndex                Integer32,


Page 28

    dsmonStatsControlDataSource           DataSource,
    dsmonStatsControlAggProfile           DsmonCounterAggProfileIndex,
    dsmonStatsControlDroppedFrames        Counter32,
    dsmonStatsControlCreateTime           LastCreateTime,
    dsmonStatsControlOwner                OwnerString,
    dsmonStatsControlStatus               RowStatus
}

dsmonStatsControlIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..65535)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "An arbitrary and unique index for this
            dsmonStatsControlEntry."
    ::= { dsmonStatsControlEntry 1 }

dsmonStatsControlDataSource OBJECT-TYPE
    SYNTAX      DataSource
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The data source of this per protocol per counter
            aggregation group distribution.

Note that only packets that contain a network protocol encapsulation which contains a DS field [RFC2474] will be counted in this table.

This object MUST NOT be modified if the associated dsmonStatsControlStatus object is equal to active(1)."

    ::= { dsmonStatsControlEntry 2 }

dsmonStatsControlAggProfile OBJECT-TYPE
    SYNTAX      DsmonCounterAggProfileIndex
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The dsmonAggControlIndex value identifying the counter
            aggregation profile which should be used on behalf of this
            dsmonStatsControlEntry.

The associated dsmonAggControlEntry and
dsmonAggProfileEntries, identified by the same
dsmonAggControlIndex index value, MUST be active in order for this entry to remain active. It is possible for the counter aggregation configuration to change from a valid to invalid state for this dsmonStats collection. In this case,


Page 29

the associated dsmonStatsControlStatus object will be changed to the 'notReady' state, and data collection will not occur on behalf of this control entry.

Note that an agent MAY choose to limit the actual number of counter aggregation profiles which may be applied to a particular data source.

This object MUST NOT be modified if the associated dsmonStatsControlStatus object is equal to active(1)."

    ::= { dsmonStatsControlEntry 3 }

dsmonStatsControlDroppedFrames OBJECT-TYPE
    SYNTAX     Counter32
    UNITS      "frames"
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The total number of frames which were received by the probe
            and therefore not accounted for in the *StatsDropEvents, but
            for which the probe chose not to count for this entry for
            whatever reason.  Most often, this event occurs when the
            probe is out of some resources and decides to shed load from
            this collection.

This count does not include packets that were not counted because they had MAC-layer errors.

Note that, unlike the dropEvents counter, this number is the exact number of frames dropped."

    ::= { dsmonStatsControlEntry 4 }

dsmonStatsControlCreateTime OBJECT-TYPE
    SYNTAX     LastCreateTime
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The value of sysUpTime when this control entry was last
            activated.  This can be used by the management station to
            detect if the table has been deleted and recreated between
            polls."
    ::= { dsmonStatsControlEntry 5 }

dsmonStatsControlOwner OBJECT-TYPE
    SYNTAX      OwnerString
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION


Page 30

"The entity that configured this entry and is therefore using the resources assigned to it."

    ::= { dsmonStatsControlEntry 6 }

dsmonStatsControlStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The status of this row.

An entry MUST 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 dsmonStatsTable shall be deleted."

    ::= { dsmonStatsControlEntry 7 }

--
-- Per-DataSource Statistics Table
--

dsmonStatsTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DsmonStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A list of information on counter aggregation group usage
            for each monitored data source.

The following table defines per counter aggregation group statistics for full and/or half-duplex links as well as high capacity links.

For half-duplex links, or full-duplex-capable links operating in half-duplex mode, the dsmonStatsIn* objects shall be used and the dsmonStatsOut* objects will not increment.

For full-duplex links, the dsmonStatsOut* objects will be present. Whenever possible, the probe SHOULD count packets moving away from the closest terminating equipment as output packets. Failing that, the probe SHOULD count packets moving away from the DTE as output packets.

If the dsmonAggControlLocked object is equal to 'false', then all entries in this table will be deleted and the agent will not process packets on behalf of any


Page 31

dsmonStatsControlEntry."

    ::= { dsmonStatsObjects 2 }

dsmonStatsEntry OBJECT-TYPE
    SYNTAX      DsmonStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A list of information on Differentiated Services DSCP
            usage, containing inbound and outbound packet and octet
            counters for each counter aggregation group configured for
            collection.

The dsmonStatsControlIndex value in the index identifies the dsmonStatsControlEntry on whose behalf this entry was created.

The dsmonAggGroupIndex value in the index is determined by examining the DSCP value in each monitored packet, and the dsmonAggProfileTable entry for that DSCP value.

Note that only packets that contain a network protocol encapsulation which contains a DS field [RFC2474] will be counted in this table.

An example of the indexing of this entry is
dsmonStatsOutPkts.1.16"
INDEX { dsmonStatsControlIndex, dsmonAggGroupIndex }

    ::= { dsmonStatsTable 1 }

DsmonStatsEntry ::= SEQUENCE {
    dsmonStatsInPkts            ZeroBasedCounter32,
    dsmonStatsInOctets          ZeroBasedCounter32,
    dsmonStatsInOvflPkts        ZeroBasedCounter32,
    dsmonStatsInOvflOctets      ZeroBasedCounter32,
    dsmonStatsInHCPkts          ZeroBasedCounter64,
    dsmonStatsInHCOctets        ZeroBasedCounter64,
    dsmonStatsOutPkts           ZeroBasedCounter32,
    dsmonStatsOutOctets         ZeroBasedCounter32,
    dsmonStatsOutOvflPkts       ZeroBasedCounter32,
    dsmonStatsOutOvflOctets     ZeroBasedCounter32,
    dsmonStatsOutHCPkts         ZeroBasedCounter64,
    dsmonStatsOutHCOctets       ZeroBasedCounter64
}

dsmonStatsInPkts OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    UNITS       "packets"


Page 32

MAX-ACCESS read-only

    STATUS      current
    DESCRIPTION
            "The number of packets using one of the DSCP values in the
            indicated counter aggregation group, received on a half-
            duplex link or on the inbound connection of a full-duplex
            link."
    ::= { dsmonStatsEntry 1 }

dsmonStatsInOctets OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    UNITS       "octets"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of octets in packets, using one of the DSCP
            values in the indicated counter aggregation group, received
            on a half-duplex link or on the inbound connection of a
            full-duplex link."
    ::= { dsmonStatsEntry 2 }

dsmonStatsInOvflPkts OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      deprecated
    DESCRIPTION
            "The number of times the associated dsmonStatsInPkts counter
            has overflowed.  Note that this object will only be
            instantiated if the associated dsmonStatsInHCPkts object is
            also instantiated for a particular dataSource."
    ::= { dsmonStatsEntry 3 }

dsmonStatsInOvflOctets OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      deprecated
    DESCRIPTION
            "The number of times the associated dsmonStatsInOctets
            counter has overflowed.  Note that this object will only be
            instantiated if the associated dsmonStatsInHCOctets object
            is also instantiated for a particular dataSource."
    ::= { dsmonStatsEntry 4 }

dsmonStatsInHCPkts OBJECT-TYPE
    SYNTAX      ZeroBasedCounter64
    UNITS       "packets"
    MAX-ACCESS  read-only
    STATUS      current


Page 33

DESCRIPTION
"The 64-bit version of the dsmonStatsInPkts object.

Note that this object will only be instantiated if the RMON agent supports High Capacity monitoring for a particular dataSource."

    ::= { dsmonStatsEntry 5 }

dsmonStatsInHCOctets OBJECT-TYPE
    SYNTAX      ZeroBasedCounter64
    UNITS       "octets"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The 64-bit version of the dsmonStatsInOctets object.

Note that this object will only be instantiated if the RMON agent supports High Capacity monitoring for a particular dataSource."

    ::= { dsmonStatsEntry 6 }

dsmonStatsOutPkts OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    UNITS       "packets"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of packets using one of the DSCP values in the
            indicated counter aggregation group, received on a full-
            duplex link in the direction of the network."
    ::= { dsmonStatsEntry 7 }

dsmonStatsOutOctets OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    UNITS       "octets"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of octets in packets, using one of the DSCP
            values in the indicated counter aggregation group, received
            on a full-duplex link in the direction of the network."
    ::= { dsmonStatsEntry 8 }

dsmonStatsOutOvflPkts OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      deprecated
    DESCRIPTION


Page 34

"The number of times the associated dsmonStatsOutPkts counter has overflowed. Note that this object will only be instantiated if the associated dsmonStatsOutHCPkts object is also instantiated for a particular dataSource."

    ::= { dsmonStatsEntry 9 }

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

dsmonStatsOutHCPkts OBJECT-TYPE
    SYNTAX      ZeroBasedCounter64
    UNITS       "packets"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The 64-bit version of the dsmonStatsOutPkts object.

Note that this object will only be instantiated if the RMON agent supports High Capacity monitoring for a particular dataSource."

    ::= { dsmonStatsEntry 11 }

dsmonStatsOutHCOctets OBJECT-TYPE
    SYNTAX      ZeroBasedCounter64
    UNITS       "octets"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The 64-bit version of the dsmonStatsOutOctets object.
            Note that this object will only be instantiated if the RMON
            agent supports High Capacity monitoring for a particular
            dataSource."
    ::= { dsmonStatsEntry 12 }

-- ***********************************************************
-- *                                                         *
-- *     P E R - P R O T O C O L    C O L L E C T I O N S    *
-- *                                                         *
-- ***********************************************************


Page 35

--
-- DSCP Per-Protocol Statistics Control Table
--

dsmonPdistCtlTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DsmonPdistCtlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "Controls the setup of per application per counter
            aggregation group distribution statistics.

Note that an agent MAY choose to limit the actual number of entries which may be created in this table. In this case, the agent SHOULD return an error-status of
'resourceUnavailable(13)', as per section 4.2.5 of the 'Protocol Operations for SNMPv2' specification [RFC1905]."

    ::= { dsmonPdistObjects 1 }

dsmonPdistCtlEntry OBJECT-TYPE
    SYNTAX      DsmonPdistCtlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A conceptual row in the dsmonPdistCtlTable.

Entries are created and deleted from this table by management action only, using the dsmonPdistCtlStatus RowStatus object.

The agent SHOULD support non-volatile configuration of this table, and upon system initialization, the table SHOULD be initialized with the saved values.

Activation of a control row in this table will cause an associated dsmonPdistStatsTable to be created and maintained by the agent."
INDEX { dsmonPdistCtlIndex }

    ::= { dsmonPdistCtlTable 1 }

DsmonPdistCtlEntry ::= SEQUENCE {
    dsmonPdistCtlIndex                Integer32,
    dsmonPdistCtlDataSource           DataSource,
    dsmonPdistCtlAggProfile           DsmonCounterAggProfileIndex,
    dsmonPdistCtlMaxDesiredEntries    Integer32,
    dsmonPdistCtlDroppedFrames        Counter32,
    dsmonPdistCtlInserts              Counter32,
    dsmonPdistCtlDeletes              Counter32,


Page 36

    dsmonPdistCtlCreateTime           LastCreateTime,
    dsmonPdistCtlOwner                OwnerString,
    dsmonPdistCtlStatus               RowStatus
}

dsmonPdistCtlIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..65535)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "An arbitrary and unique index for this dsmonPdistCtlEntry."
    ::= { dsmonPdistCtlEntry 1 }

dsmonPdistCtlDataSource OBJECT-TYPE
    SYNTAX      DataSource
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The source of data for the this per protocol counter
            aggregation group distribution.

This object MUST NOT be modified if the associated dsmonPdistCtlStatus object is equal to active(1)."

    ::= { dsmonPdistCtlEntry 2 }

dsmonPdistCtlAggProfile OBJECT-TYPE
    SYNTAX      DsmonCounterAggProfileIndex
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The dsmonAggControlIndex value identifying the counter
            aggregation profile which should be used on behalf of this
            dsmonPdistCtlEntry.

The associated dsmonAggControlEntry and
dsmonAggProfileEntries, identified by the same
dsmonAggControlIndex index value, MUST be active in order for this entry to remain active. It is possible for the counter aggregation configuration to change from a valid to invalid state for this dsmonPdist collection. In this case, the associated dsmonPdistCtlStatus object will be changed to the 'notReady' state, and data collection will not occur on behalf of this control entry.

Note that an agent MAY choose to limit the actual number of counter aggregation profiles which may be applied to a particular data source.


Page 37

This object MUST NOT be modified if the associated dsmonPdistCtlStatus object is equal to active(1)."

    ::= { dsmonPdistCtlEntry 3 }

dsmonPdistCtlMaxDesiredEntries OBJECT-TYPE
    SYNTAX      Integer32 (-1 | 1..2147483647)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The maximum number of entries that are desired in the
            dsmonPdistStatsTable on behalf of this control entry.  The
            probe will not create more than this number of associated
            entries in the table, but MAY choose to create fewer entries
            in this table for any reason including the lack of
            resources.

If this value is set to -1, the probe MAY create any number of entries in this table.

This object MUST NOT be modified if the associated dsmonPdistCtlStatus object is equal to active(1)."

    ::= { dsmonPdistCtlEntry 4 }

dsmonPdistCtlDroppedFrames OBJECT-TYPE
    SYNTAX     Counter32
    UNITS      "frames"
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The total number of frames which were received by the probe
            and therefore not accounted for in the *StatsDropEvents, but
            for which the probe chose not to count for this entry for
            whatever reason.  Most often, this event occurs when the
            probe is out of some resources and decides to shed load from
            this collection.

This count does not include packets that were not counted because they had MAC-layer errors.

Note that, unlike the dropEvents counter, this number is the exact number of frames dropped."

    ::= { dsmonPdistCtlEntry 5 }

dsmonPdistCtlInserts OBJECT-TYPE
    SYNTAX     Counter32
    UNITS      "table entries"
    MAX-ACCESS read-only
    STATUS     current


Page 38

DESCRIPTION
"The number of times a dsmonPdist entry has been inserted into the dsmonPdistTable. If an entry is inserted, then deleted, and then inserted, this counter will be incremented by 2.

To allow for efficient implementation strategies, agents MAY delay updating this object for short periods of time. For example, an implementation strategy may allow internal data structures to differ from those visible via SNMP for short periods of time. This counter may reflect the internal data structures for those short periods of time.

Note that the table size can be determined by subtracting dsmonPdistCtlDeletes from dsmonPdistCtlInserts."

    ::= { dsmonPdistCtlEntry 6 }

dsmonPdistCtlDeletes OBJECT-TYPE
    SYNTAX     Counter32
    UNITS      "table entries"
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of times a dsmonPdist entry has been deleted
            from the dsmonPdist table (for any reason).  If an entry is
            deleted, then inserted, and then deleted, this counter will
            be incremented by 2.

To allow for efficient implementation strategies, agents MAY delay updating this object for short periods of time. For example, an implementation strategy may allow internal data structures to differ from those visible via SNMP for short periods of time. This counter may reflect the internal data structures for those short periods of time.

Note that the table size can be determined by subtracting dsmonPdistCtlDeletes from dsmonPdistCtlInserts."

    ::= { dsmonPdistCtlEntry 7 }

dsmonPdistCtlCreateTime OBJECT-TYPE
    SYNTAX     LastCreateTime
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The value of sysUpTime when this control entry was last
            activated.  This can be used by the management station to
            detect if the table has been deleted and recreated between
            polls."


Page 39

    ::= { dsmonPdistCtlEntry 8 }

dsmonPdistCtlOwner 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."
    ::= { dsmonPdistCtlEntry 9 }

dsmonPdistCtlStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The status of this row.

An entry MUST 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 dsmonPdistStatsTable shall be deleted."

    ::= { dsmonPdistCtlEntry 10 }

--
-- Per-Protocol Statistics Table
--

dsmonPdistStatsTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DsmonPdistStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A list of information on a per protocol per counter
            aggregation group usage.

If the dsmonAggControlLocked object is equal to 'false', then all entries in this table will be deleted and the agent will not process packets on behalf of any
dsmonPdistCtlEntry."

    ::= { dsmonPdistObjects 2 }

dsmonPdistStatsEntry OBJECT-TYPE
    SYNTAX      DsmonPdistStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION


Page 40

"A list of information on Differentiated Services DSCP usage, containing packet and octet counters for each counter aggregation group configured for collection, and each protocol (as identified by the protocolDirLocalIndex for the protocol) identified in each monitored packet.

The dsmonPdistCtlIndex value in the index identifies the dsmonPdistCtlEntry on whose behalf this entry was created.

Note that only packets that contain a network protocol encapsulation which contains a DS field [RFC2474] will be counted in this table.

The dsmonAggGroupIndex value in the index is determined by examining the DSCP value in each monitored packet, and the dsmonAggProfileTable entry for that value.

The protocolDirLocalIndex in the index identifies the protocolDirEntry for the protocol encapsulation of each monitored packet. The agent will include only application layer protocols in the associated dsmonPdistStatsTable. Any 'terminal' protocol is considered to be an application protocol.

An example of the indexing of this entry is
dsmonPdistStatsPkts.9.29943.0.42."
INDEX { dsmonPdistCtlIndex,
dsmonPdistTimeMark,
dsmonAggGroupIndex,
protocolDirLocalIndex }

    ::= { dsmonPdistStatsTable 1 }

DsmonPdistStatsEntry ::= SEQUENCE {
    dsmonPdistTimeMark             TimeFilter,
    dsmonPdistStatsPkts            ZeroBasedCounter32,
    dsmonPdistStatsOctets          ZeroBasedCounter32,
    dsmonPdistStatsOvflPkts        ZeroBasedCounter32,
    dsmonPdistStatsOvflOctets      ZeroBasedCounter32,
    dsmonPdistStatsHCPkts          ZeroBasedCounter64,
    dsmonPdistStatsHCOctets        ZeroBasedCounter64,
    dsmonPdistStatsCreateTime      LastCreateTime
}

dsmonPdistTimeMark OBJECT-TYPE
    SYNTAX      TimeFilter
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION


Page 41

"The Time Filter index for this table. This object may be used by a management station to retrieve only rows which have been created or modified since a particular time. Note that the current value for a row are always returned and the TimeFilter is not a historical data archiving mechanism. Refer to RFC 2021 [RFC2021] for a detailed description of TimeFilter operation."

    ::= { dsmonPdistStatsEntry 1 }

dsmonPdistStatsPkts OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    UNITS       "packets"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of packets, using one of the DSCP values in the
            indicated counter aggregation group, for the protocol
            identified by the associated protocolDirLocalIndex value."
    ::= { dsmonPdistStatsEntry 2 }

dsmonPdistStatsOctets OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    UNITS       "octets"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of octets in packets, using one of the DSCP
            values in the indicated counter aggregation group, for the
            protocol identified by the associated protocolDirLocalIndex
            value.

Note that this object doesn't count just those octets in the particular protocol frames, but includes the entire packet that contained the protocol."

    ::= { dsmonPdistStatsEntry 3 }

dsmonPdistStatsOvflPkts OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      deprecated
    DESCRIPTION
            "The number of times the associated dsmonPdistStatsPkts
            counter has overflowed.  Note that this object will only be
            instantiated if the associated dsmonPdistStatsHCPkts object
            is also instantiated for a particular dataSource."
    ::= { dsmonPdistStatsEntry 4 }

dsmonPdistStatsOvflOctets OBJECT-TYPE


Page 42

    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      deprecated
    DESCRIPTION
            "The number of times the associated dsmonPdistStatsOctets
            counter has overflowed.  Note that this object will only be
            instantiated if the associated dsmonPdistStatsHCOctets
            object is also instantiated for a particular dataSource."
    ::= { dsmonPdistStatsEntry 5 }

dsmonPdistStatsHCPkts OBJECT-TYPE
    SYNTAX      ZeroBasedCounter64
    UNITS       "packets"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The 64-bit version of the dsmonPdistStatsPkts object.

Note that this object will only be instantiated if the RMON agent supports High Capacity monitoring for a particular dataSource."

    ::= { dsmonPdistStatsEntry 6 }

dsmonPdistStatsHCOctets OBJECT-TYPE
    SYNTAX      ZeroBasedCounter64
    UNITS       "octets"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The 64-bit version of the dsmonPdistStatsOctets object.

Note that this object will only be instantiated if the RMON agent supports High Capacity monitoring for a particular dataSource."

    ::= { dsmonPdistStatsEntry 7 }

dsmonPdistStatsCreateTime OBJECT-TYPE
    SYNTAX     LastCreateTime
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The value of sysUpTime when this dsmonPdistStats entry was
            last instantiated by the agent.  This can be used by the
            management station to detect if the entry has been deleted
            and recreated between polls."
    ::= { dsmonPdistStatsEntry 8 }


Page 43

--
-- Per-Protocol Statistics TopN Control Table
--

dsmonPdistTopNCtlTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DsmonPdistTopNCtlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A set of parameters that control the creation of a report
            of the top N dsmonPdist entries according to a particular
            metric.

Note that an agent MAY choose to limit the actual number of entries which may be created in this table. In this case, the agent SHOULD return an error-status of
'resourceUnavailable(13)', as per section 4.2.5 of the 'Protocol Operations for SNMPv2' specification [RFC1905]."

    ::= { dsmonPdistObjects 3 }

dsmonPdistTopNCtlEntry OBJECT-TYPE
    SYNTAX      DsmonPdistTopNCtlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A conceptual row in the dsmonPdistTopNCtlTable.

Entries are created and deleted from this table by management action only, using the dsmonPdistTopNCtlStatus RowStatus object.

The agent SHOULD support non-volatile configuration of this table, and upon system initialization, the table SHOULD be initialized with the saved values.

Activation of a control row in this table will cause an associated dsmonPdistTopNTable to be created and maintained by the agent."
INDEX { dsmonPdistTopNCtlIndex }

    ::= { dsmonPdistTopNCtlTable 1 }

DsmonPdistTopNCtlEntry ::= SEQUENCE {
    dsmonPdistTopNCtlIndex            Integer32,
    dsmonPdistTopNCtlPdistIndex       Integer32,
    dsmonPdistTopNCtlRateBase         INTEGER,
    dsmonPdistTopNCtlTimeRemaining    Integer32,
    dsmonPdistTopNCtlGeneratedReprts  Counter32,
    dsmonPdistTopNCtlDuration         Integer32,


Page 44

    dsmonPdistTopNCtlRequestedSize    Integer32,
    dsmonPdistTopNCtlGrantedSize      Integer32,
    dsmonPdistTopNCtlStartTime        TimeStamp,
    dsmonPdistTopNCtlOwner            OwnerString,
    dsmonPdistTopNCtlStatus           RowStatus
}

dsmonPdistTopNCtlIndex OBJECT-TYPE
    SYNTAX     Integer32 (1..65535)
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An index that uniquely identifies an entry in the
            dsmonPdistTopNCtlTable, with the same dsmonPdistTopNCtlIndex
            value as this object.  Each entry in this table defines one
            Top N report prepared on behalf of the dsmonPdistStatsEntry
            collection with the same dsmonPdistCtlIndex as this object."
    ::= { dsmonPdistTopNCtlEntry 1 }

dsmonPdistTopNCtlPdistIndex OBJECT-TYPE
    SYNTAX     Integer32 (1..65535)
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The dsmonPdistTable for which a top N report will be
            prepared on behalf of this entry.  The dsmonPdistTable is
            identified by the value of the dsmonPdistCtlIndex for that
            table - that value is used here to identify the particular
            table.

This object MUST NOT be modified if the associated dsmonPdistTopNCtlStatus object is equal to active(1)."

    ::= { dsmonPdistTopNCtlEntry 2 }

dsmonPdistTopNCtlRateBase OBJECT-TYPE
    SYNTAX     INTEGER {
                  dsmonPdistTopNPkts(1),
                  dsmonPdistTopNOctets(2),
                  dsmonPdistTopNHCPkts(3),
                  dsmonPdistTopNHCOctets(4)
               }
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The variable for each dsmonPdist that the
            dsmonPdistTopNRate and dsmonPdistTopNHCRate variables are
            based upon.  Each dsmonPdistTopN report generated on behalf
            of this control entry will be ranked in descending order,


Page 45

based on the associated dsmonPdistStatsTable counter, identified by this object.

The following table identifies the dsmonPdistTable counter associated with each enumeration:

            Enumeration              RateBase MIB Object
            -----------              -------------------
            dsmonPdistTopNPkts          dsmonPdistStatsPkts
            dsmonPdistTopNOctets        dsmonPdistStatsOctets
            dsmonPdistTopNHCPkts        dsmonPdistStatsHCPkts
            dsmonPdistTopNHCOctets      dsmonPdistStatsHCOctets

Note that the dsmonPdistTopNHCPkts and
dsmonPdistTopNHCOctets enumerations are only available if the agent supports High Capacity monitoring.

This object MUST NOT be modified if the associated dsmonPdistTopNCtlStatus object is equal to active(1)."

    ::= { dsmonPdistTopNCtlEntry 3 }

dsmonPdistTopNCtlTimeRemaining OBJECT-TYPE
    SYNTAX     Integer32 (0..2147483647)
    UNITS      "seconds"
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The number of seconds left in the report currently being
            collected.  When this object is modified by the management
            station, a new collection is started, possibly aborting a
            currently running report.  The new value is used as the
            requested duration of this report, and is immediately loaded
            into the associated dsmonPdistTopNCtlDuration object.

When the report finishes, the probe will automatically start another collection with the same initial value of dsmonPdistTopNCtlTimeRemaining. Thus the management station may simply read the resulting reports repeatedly, checking the startTime and duration each time to ensure that a report was not missed or that the report parameters were not changed.

While the value of this object is non-zero, it decrements by one per second until it reaches zero. At the time that this object decrements to zero, the report is made accessible in the dsmonPdistTopNTable, overwriting any report that may be there.


Page 46

When this object is modified by the management station, any associated entries in the dsmonPdistTopNTable shall be deleted."
DEFVAL { 1800 }

    ::= { dsmonPdistTopNCtlEntry 4 }

dsmonPdistTopNCtlGeneratedReprts OBJECT-TYPE
    SYNTAX     Counter32
    UNITS      "reports"
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of reports that have been generated by this
            entry."
    ::= { dsmonPdistTopNCtlEntry 5 }

dsmonPdistTopNCtlDuration OBJECT-TYPE
    SYNTAX     Integer32 (0..2147483647)
    UNITS      "seconds"
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of seconds that this report has collected during
            the last sampling interval.

When the associated dsmonPdistTopNCtlTimeRemaining object is set, this object shall be set by the probe to the same value and shall not be modified until the next time the dsmonPdistTopNCtlTimeRemaining is set.

This value shall be zero if no reports have been requested for this dsmonPdistTopNCtlEntry."

    ::= { dsmonPdistTopNCtlEntry 6 }

dsmonPdistTopNCtlRequestedSize OBJECT-TYPE
    SYNTAX     Integer32 (0..2147483647)
    UNITS      "table entries"
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The maximum number of dsmonPdist entries requested for this
            report.

When this object is created or modified, the probe SHOULD set dsmonPdistTopNCtlGrantedSize as closely to this object as is possible for the particular probe implementation and available resources."
DEFVAL { 150 }


Page 47

    ::= { dsmonPdistTopNCtlEntry 7 }

dsmonPdistTopNCtlGrantedSize OBJECT-TYPE
    SYNTAX     Integer32 (0..2147483647)
    UNITS      "table entries"
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The maximum number of dsmonPdist entries in this report.

When the associated dsmonPdistTopNCtlRequestedSize object is created or modified, the probe SHOULD set this object as closely to the requested value as is possible for the particular implementation and available resources. The probe MUST NOT lower this value except as a result of a set to the associated dsmonPdistTopNCtlRequestedSize object.

Protocol entries with the highest value of
dsmonPdistTopNRate or dsmonPdistTopNHCRate (depending on the value of the associated dsmonPdistTopNCtlRateBase object) shall be placed in this table in decreasing order of this rate until there is no more room or until there are no more dsmonPdist entries."

    ::= { dsmonPdistTopNCtlEntry 8 }

dsmonPdistTopNCtlStartTime OBJECT-TYPE
    SYNTAX     TimeStamp
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The value of sysUpTime when this top N report was last
            started.  In other words, this is the time that the
            associated dsmonPdistTopNCtlTimeRemaining object was
            modified to start the requested report or the time the
            report was last automatically (re)started.

This object may be used by the management station to determine if a report was missed or not."

    ::= { dsmonPdistTopNCtlEntry 9 }

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


Page 48

    ::= { dsmonPdistTopNCtlEntry 10 }

dsmonPdistTopNCtlStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The status of this dsmonPdistTopNCtlEntry.

An entry MUST 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 dsmonPdistTopNTable shall be deleted by the agent."

    ::= { dsmonPdistTopNCtlEntry 11 }

--
-- dsmonPdist TopN Table
--

dsmonPdistTopNTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF DsmonPdistTopNEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "A set of statistics for those protocol distribution entries
            that have counted the highest number of octets or packets.

If the dsmonAggControlLocked object is equal to 'false', then all entries in this table SHALL be deleted, and the agent will not process TopN reports on behalf of any dsmonPdistTopNCtlEntry.

When the dsmonAggControlLocked object is set to 'true', then particular reports SHOULD be restarted from the beginning, on behalf of all active rows in the dsmonPdistTopNCtlTable.

Note that dsmonPdist entries which did not increment at all during the report interval SHOULD NOT be included in dsmonPdistTopN reports."

    ::= { dsmonPdistObjects 4 }

dsmonPdistTopNEntry OBJECT-TYPE
    SYNTAX     DsmonPdistTopNEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION


Page 49

"A conceptual row in the dsmonPdistTopNTable.

The dsmonPdistTopNCtlIndex value in the index identifies the dsmonPdistTopNCtlEntry on whose behalf this entry was created. Entries in this table are ordered from 1 to 'N', where lower numbers represent higher values of the rate base object, over the report interval."
INDEX { dsmonPdistTopNCtlIndex, dsmonPdistTopNIndex }

    ::= { dsmonPdistTopNTable 1 }

DsmonPdistTopNEntry ::= SEQUENCE {
    dsmonPdistTopNIndex                      Integer32,
    dsmonPdistTopNPDLocalIndex               Integer32,
    dsmonPdistTopNAggGroup                   DsmonCounterAggGroupIndex,
    dsmonPdistTopNRate                       Gauge32,
    dsmonPdistTopNRateOvfl                   Gauge32,
    dsmonPdistTopNHCRate                     CounterBasedGauge64
}

dsmonPdistTopNIndex OBJECT-TYPE
    SYNTAX     Integer32 (1..2147483647)
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An index that uniquely identifies an entry in the
            dsmonPdistTopNTable among those in the same report.  This
            index is between 1 and N, where N is the number of entries
            in this report.  Note that 'N' may change over time, and may
            also be less than the dsmonPdistTopNCtlGrantedSize value
            associated with this entry."
    ::= { dsmonPdistTopNEntry 1 }

dsmonPdistTopNPDLocalIndex OBJECT-TYPE
    SYNTAX     Integer32 (1..2147483647)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The protocolDirLocalIndex value which identifies the
            protocol associated with this entry.

If the protocolDirEntry associated with the
protocolDirLocalIndex with the same value as this object is de-activated or deleted, then the agent MUST delete this dsmonPdistTopN entry."

    ::= { dsmonPdistTopNEntry 2 }

dsmonPdistTopNAggGroup OBJECT-TYPE
    SYNTAX      DsmonCounterAggGroupIndex


Page 50

MAX-ACCESS read-only

    STATUS      current
    DESCRIPTION
            "The DSCP counter aggregation group index value associated
            with protocol identified in this entry.  This object
            identifies the dsmonAggGroupEntry with the same
            dsmonAggControlIndex value as the associated
            dsmonPdistCtlAggProfile object and the same
            dsmonAggGroupIndex value as this object."
    ::= { dsmonPdistTopNEntry 3 }

dsmonPdistTopNRate OBJECT-TYPE
    SYNTAX     Gauge32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The amount of change in the selected variable during this
            sampling interval.  The selected variable is this protocol's
            instance of the object selected by
            dsmonPdistTopNCtlRateBase.

If the associated dsmonPdistTopNCtlRateBase is equal to 'dsmonPdistTopNHCPkts' or 'dsmonPdistTopNHCOctets', then this object will contain the the least significant 32 bits of the associated dsmonPdistTopNHCRate object."

    ::= { dsmonPdistTopNEntry 4 }

dsmonPdistTopNRateOvfl OBJECT-TYPE
    SYNTAX     Gauge32
    MAX-ACCESS read-only
    STATUS     deprecated
    DESCRIPTION
            "The most significant 32 bits of the associated
            dsmonPdistTopNHCRate object.

If the associated dsmonPdistTopNCtlRateBase is equal to 'dsmonPdistTopNHCPkts' or 'dsmonPdistTopNHCOctets', then this object will contain the upper 32 bits of the associated dsmonPdistTopNHCRate object.

If the associated dsmonPdistTopNCtlRateBase is equal to 'dsmonPdistTopNPkts' or 'dsmonPdistTopNOctets', then this object will contain the value zero.

The agent MAY choose not to instantiate this object if High Capacity monitoring is not supported."

    ::= { dsmonPdistTopNEntry 5 }


Page 51

dsmonPdistTopNHCRate OBJECT-TYPE
    SYNTAX     CounterBasedGauge64
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The amount of change in the selected variable during this
            sampling interval.  The selected variable is this protocol's
            instance of the object selected by
            dsmonPdistTopNCtlRateBase.

If the associated dsmonPdistTopNCtlRateBase is equal to 'dsmonPdistTopNPkts' or 'dsmonPdistTopNOctets', then this object will contain the value zero, and the associated dsmonPdistTopNRate object will contain the change in the selected variable during the sampling interval.

The agent MAY choose not to instantiate this object if High Capacity monitoring is not supported."

    ::= { dsmonPdistTopNEntry 6 }

-- ***********************************************************
-- *                                                         *
-- *      P E R  -  H O S T       C O L L E C T I O N S      *
-- *                                                         *
-- ***********************************************************

--
-- NL Host Statistics Control Table
--

dsmonHostCtlTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DsmonHostCtlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "Controls setup of per counter aggregation group, per
            network layer host distribution statistics.

Note that an agent MAY choose to limit the actual number of entries which may be created in this table. In this case, the agent SHOULD return an error-status of
'resourceUnavailable(13)', as per section 4.2.5 of the 'Protocol Operations for SNMPv2' specification [RFC1905]."

    ::= { dsmonHostObjects 1 }

dsmonHostCtlEntry OBJECT-TYPE


Page 52

    SYNTAX      DsmonHostCtlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A conceptual row in the dsmonHostCtlTable.

Entries are created and deleted from this table by management action only, using the dsmonHostCtlStatus RowStatus object.

The agent SHOULD support non-volatile configuration of this table, and upon system initialization, the table SHOULD be initialized with the saved values.

Activation of a control row in this table will cause an associated dsmonHostTable to be created and maintained by the agent."
INDEX { dsmonHostCtlIndex }

    ::= { dsmonHostCtlTable 1 }

DsmonHostCtlEntry ::= SEQUENCE {
    dsmonHostCtlIndex                Integer32,
    dsmonHostCtlDataSource           DataSource,
    dsmonHostCtlAggProfile           DsmonCounterAggProfileIndex,
    dsmonHostCtlMaxDesiredEntries    Integer32,
    dsmonHostCtlIPv4PrefixLen        Integer32,
    dsmonHostCtlIPv6PrefixLen        Integer32,
    dsmonHostCtlDroppedFrames        Counter32,
    dsmonHostCtlInserts              Counter32,
    dsmonHostCtlDeletes              Counter32,
    dsmonHostCtlCreateTime           LastCreateTime,
    dsmonHostCtlOwner                OwnerString,
    dsmonHostCtlStatus               RowStatus
}

dsmonHostCtlIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..65535)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "An arbitrary and unique index for this dsmonHostCtlEntry."
    ::= { dsmonHostCtlEntry 1 }

dsmonHostCtlDataSource OBJECT-TYPE
    SYNTAX      DataSource
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION


Page 53

"The source of data for the associated dsmonHostTable.

Note that only packets that contain a network protocol encapsulation which contains a DS field [RFC2474] will be counted in this table.

This object MUST NOT be modified if the associated dsmonHostCtlStatus object is equal to active(1)."

    ::= { dsmonHostCtlEntry 2 }

dsmonHostCtlAggProfile OBJECT-TYPE
    SYNTAX      DsmonCounterAggProfileIndex
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The dsmonAggControlIndex value identifying the counter
            aggregation profile which should be used on behalf of this
            dsmonHostCtlEntry.

The associated dsmonAggControlEntry and
dsmonAggProfileEntries, identified by the same
dsmonAggControlIndex index value, MUST be active in order for this entry to remain active. It is possible for the counter aggregation configuration to change from a valid to invalid state for this dsmonHost collection. In this case, the associated dsmonHostCtlStatus object will be changed to the 'notReady' state, and data collection will not occur on behalf of this control entry.

Note that an agent MAY choose to limit the actual number of counter aggregation profiles which may be applied to a particular data source.

This object MUST NOT be modified if the associated dsmonHostCtlStatus object is equal to active(1)."

    ::= { dsmonHostCtlEntry 3 }

dsmonHostCtlMaxDesiredEntries OBJECT-TYPE
    SYNTAX      Integer32 (-1 | 1..2147483647)
    UNITS       "table entries"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The maximum number of entries that are desired in the
            dsmonHostTable on behalf of this control entry.  The probe
            will not create more than this number of associated entries
            in the table, but MAY choose to create fewer entries in this
            table for any reason including the lack of resources.


Page 54

If this value is set to -1, the probe MAY create any number of entries in this table.

This object MUST NOT be modified if the associated dsmonHostCtlStatus object is equal to active(1)."

    ::= { dsmonHostCtlEntry 4 }

dsmonHostCtlIPv4PrefixLen OBJECT-TYPE
    SYNTAX      Integer32 (8..32)
    UNITS       "bits"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The number of 'leftmost' contiguous bits in the host
            address field for encapsulations of IPv4, that should be
            maintained in this collection.  This object controls how the
            dsmonHostAddress object is derived for packets which contain
            an encapsulation of IPv4.

If this object has a value less than 32, then 'm' rightmost bits, where 'm' is equal to '32 -
dsmonHostCtlIPv4PrefixLen', will be cleared to zero for counting purposes only. The 'leftmost' bit is the most significant bit of the first network-byte-order octet of the address.

If this object is equal to 32, then no bits are cleared in each dsmonHostAddress field.

This object MUST NOT be modified if the associated dsmonHostCtlStatus object is equal to active(1)." DEFVAL { 32 }

    ::= { dsmonHostCtlEntry 5 }

dsmonHostCtlIPv6PrefixLen OBJECT-TYPE
    SYNTAX      Integer32 (8..128)
    UNITS       "bits"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The number of 'leftmost' contiguous bits in the host
            address field for encapsulations of IPv6, that should be
            maintained in this collection.  This object controls how the
            dsmonHostAddress object is derived for packets which contain
            an encapsulation of IPv6.

If this object has a value less than 128, then 'm' rightmost bits, where 'm' is equal to '128 -


Page 55

dsmonHostCtlIPv6PrefixLen', will be cleared to zero for counting purposes only. The 'leftmost' bit is the most significant bit of the first network-byte-order octet of the address.

If this object is equal to 128, then no bits are cleared in each dsmonHostAddress field.

This object MUST NOT be modified if the associated dsmonHostCtlStatus object is equal to active(1)." DEFVAL { 128 }

    ::= { dsmonHostCtlEntry 6 }

dsmonHostCtlDroppedFrames OBJECT-TYPE
    SYNTAX     Counter32
    UNITS      "frames"
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The total number of frames which were received by the probe
            and therefore not accounted for in the *StatsDropEvents, but
            for which the probe chose not to count for the associated
            dsmonHost entries for whatever reason.  Most often, this
            event occurs when the probe is out of some resources and
            decides to shed load from this collection.

This count does not include packets that were not counted because they had MAC-layer errors.

Note that if the dsmonHostTable is inactive because no appropriate protocols are enabled in the protocol directory, this value SHOULD be 0.

Note that, unlike the dropEvents counter, this number is the exact number of frames dropped."

    ::= { dsmonHostCtlEntry 7 }

dsmonHostCtlInserts OBJECT-TYPE
    SYNTAX     Counter32
    UNITS      "table entries"
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of times a dsmonHost entry has been inserted
            into the dsmonHost table.  If an entry is inserted, then
            deleted, and then inserted, this counter will be incremented
            by 2.


Page 56

To allow for efficient implementation strategies, agents MAY delay updating this object for short periods of time. For example, an implementation strategy may allow internal data structures to differ from those visible via SNMP for short periods of time. This counter may reflect the internal data structures for those short periods of time.

Note that the table size can be determined by subtracting dsmonHostCtlDeletes from dsmonHostCtlInserts."

    ::= { dsmonHostCtlEntry 8 }

dsmonHostCtlDeletes OBJECT-TYPE
    SYNTAX     Counter32
    UNITS      "table entries"
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of times a dsmonHost entry has been deleted from
            the dsmonHost table (for any reason).  If an entry is
            deleted, then inserted, and then deleted, this counter will
            be incremented by 2.

To allow for efficient implementation strategies, agents MAY delay updating this object for short periods of time. For example, an implementation strategy may allow internal data structures to differ from those visible via SNMP for short periods of time. This counter may reflect the internal data structures for those short periods of time.

Note that the table size can be determined by subtracting dsmonHostCtlDeletes from dsmonHostCtlInserts."

    ::= { dsmonHostCtlEntry 9 }

dsmonHostCtlCreateTime OBJECT-TYPE
    SYNTAX     LastCreateTime
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The value of sysUpTime when this control entry was last
            activated.  This can be used by the management station to
            detect if the table has been deleted and recreated between
            polls."
    ::= { dsmonHostCtlEntry 10 }

dsmonHostCtlOwner OBJECT-TYPE
    SYNTAX      OwnerString
    MAX-ACCESS  read-create
    STATUS      current


Page 57

DESCRIPTION
"The entity that configured this entry and is therefore using the resources assigned to it."

    ::= { dsmonHostCtlEntry 11 }

dsmonHostCtlStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The status of this dsmonHostCtlEntry.

An entry MUST 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 dsmonHostTable shall be deleted."

    ::= { dsmonHostCtlEntry 12 }

--
-- NL Host Statistics Table
--

dsmonHostTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DsmonHostEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A collection of statistics for particular network protocols
            which contain a DS field, and that has been discovered on a
            particular dataSource.

The probe will add to this table all appropriate network protocols, for each network address seen as the source or destination address in all packets with no MAC errors, and will increment octet and packet counts in the table for all packets with no MAC errors.

If the dsmonAggControlLocked object is equal to 'false', then all entries in this table will be deleted, and the agent will not process packets on behalf of any
dsmonHostCtlEntry."

    ::= { dsmonHostObjects 2 }

dsmonHostEntry OBJECT-TYPE
    SYNTAX      DsmonHostEntry
    MAX-ACCESS  not-accessible
    STATUS      current


Page 58

DESCRIPTION
"A list of information on Differentiated Services DSCP usage, containing packet and octet counters for each counter aggregation group index configured for collection per host address, as identified in the dsmonAggProfileTable.

The dsmonHostCtlIndex value in the index identifies the dsmonHostCtlEntry on whose behalf this entry was created.

The protocolDirLocalIndex value in the index identifies the specific network layer protocol encapsulation associated with each entry, and the network protocol type of the dsmonHostAddress object. It MUST identify a
protocolDirEntry which contains a DS field (e.g., IPv4 or IPv6). Note that if a protocol encapsulation with multiple network layers is specified, then associated entries in this table refer to the innermost network protocol layer host address.

The dsmonAggGroupIndex value in the index is determined by examining the DSCP value in each monitored packet, and the dsmonAggProfileTable entry configur