Remote Monitoring MIB Extensions for Differentiated Services
Extracted elements (26)
Counter aggregation is provided to reduce the number of counters an agent must maintain, accommodate hardware implementations with limited high-speed counters, reduce management polling overhead, and align monitoring with DS forwarding device configurations where multiple DSCPs receive the same treatment.
Counter aggregation profiles are configured globally rather than per-data-source to allow sharing across collections. Per-collection assignment is used (instead of per-datasource) to reduce MIB complexity by avoiding an extra layer of tables, though agents MAY restrict all collections on a datasource to use the same profile.
dsmonHostCtlTable supports IPv4/IPv6 prefix aggregation (configurable rightmost-bits masking) to dramatically reduce the number of host entries the agent must maintain, lowering CPU, memory, and polling overhead, though only one mask per address type is supported per collection.
dsmonPdistStatsTable is hardwired to monitor only application-layer ('terminal') protocols rather than making protocol selection configurable, because DSCP usage statistics are most interesting at the application layer and this simplifies the configuration mechanism.
The DSMON MIB adopts the SNMPv1 coexistence strategy: wherever a 64-bit Counter64 is provided, a 32-bit ZeroBasedCounter32 and a 32-bit overflow counter are also provided, ensuring compatibility with SNMPv1 managers that cannot handle Counter64.
DSMON data tables are indexed as closely as possible to comparable RMON-2 and HC-RMON tables, with an additional dsmonAggGroupIndex component for DSCP-based classification. This preserves RMON look-and-feel and allows MIB re-use by implementers familiar with RMON-2.
The DSMON MIB requires that the RMON-2 MIB [RFC2021] be present; it reuses DataSource, protocolDirLocalIndex, TimeFilter, ZeroBasedCounter32, and LastCreateTime from RMON-2, and ZeroBasedCounter64 from the HCNUM-TC MIB [RFC2856].
An entry MUST NOT exist in the active state in dsmonAggControlTable unless all objects have appropriate values. Activating a dsmonAggControlEntry causes the agent to create exactly 64 associated dsmonAggProfileEntries; deactivating it deletes them.
Every DSCP value (0–63) MUST be configured into exactly one counter aggregation group within a given profile. The dsmonAggProfileTable MUST contain exactly 64 rows per profile, indexed 0 to 63.
In dsmonHostCtlTable, the protocolDirLocalIndex in the INDEX clause MUST identify a network protocol encapsulation that contains a DS field (e.g., IPv4 or IPv6). For multi-layer encapsulations, the innermost network protocol layer is used.
The dsmonAggControlDescr and dsmonAggGroupDescr objects MUST NOT be modified if the associated RowStatus is 'active' or dsmonAggControlLocked is 'true'. Agents SHOULD initialize these to the empty string on first creation.
The dsmonAggControlTable, dsmonAggProfileTable, and dsmonAggGroupTable MUST NOT be modified while dsmonAggControlLocked is 'true'. When locked, data collection is active; when unlocked ('false'), all DSMON data table entries are deleted and collection is suspended.
The dsmonMaxAggGroups object MUST NOT be lowered during system operation. The agent SHOULD set this object to an appropriate value during system initialization and SHOULD support at least one profile with at least two counter aggregation groups.
When dsmonAggControlLocked transitions from 'false' to 'true', the agent is required to reactivate any previously suspended data collections, validating each against the new counter aggregation configuration. If validation fails, the collection's RowStatus MUST be set to 'notReady'.
dsmonAggControlChanges (Counter32) and dsmonAggControlLastChangeTime (TimeStamp) allow management stations to detect when counter aggregation configuration has changed between polls, indicating that collected data may have been deleted and recreated.
dsmonAggControlLocked is a read-write TruthValue scalar that acts as a top-level switch: 'true' locks aggregation configuration tables and enables data collection; 'false' unlocks those tables but deletes all collected data and suspends collection.
dsmonCapabilities is a read-only BITS object (14 bits) indicating which DSMON MIB groups the agent supports. Bit n set means the agent implements all objects in DSMON group { dsmonGroups n+1 }.
DsmonCounterAggGroupIndex is a textual convention defined as Integer32 (0..2147483647), starting at zero to allow direct mapping to DSCP values (0–63). DsmonCounterAggProfileIndex starts at 1 and identifies complete sets of 64 DSCP-to-group mappings.
dsmonHostTable provides per-host per-counter-aggregation-group inbound and outbound packet/octet statistics. The dsmonHostCtlTable supports configurable IPv4/IPv6 prefix aggregation by zeroing rightmost address bits to reduce table size.
dsmonMatrixSDTable and dsmonMatrixDSTable track host-pair distribution statistics per counter aggregation group, mirroring RMON-2's alMatrixSDTable/alMatrixDSTable but with an additional dsmonAggGroupIndex in the index.
dsmonPdistStatsTable provides per-protocol per-counter-aggregation-group statistics indexed by (dsmonPdistCtlIndex, dsmonPdistTimeMark, dsmonAggGroupIndex, protocolDirLocalIndex). Only application-layer ('terminal') protocols are included.
dsmonStatsTable provides per-datasource, per-counter-aggregation-group packet and octet counters with both 32-bit (ZeroBasedCounter32) and 64-bit (ZeroBasedCounter64) variants for inbound and outbound traffic. Overflow companion objects are deprecated.
The Counter Aggregation Profile is a three-table structure: dsmonAggControlTable (one row per profile), dsmonAggProfileTable (64 rows per profile mapping each DSCP 0–63 to a group index), and dsmonAggGroupTable (optional descriptive labels per group).
The DSMON MIB module is assigned the OID { rmon 26 } under the RMON MIB arc. This allocates a new branch in the RMON object identifier tree for all DSMON objects, notifications, and conformance information.
The DSMON MIB contains read-write and read-create objects that could be used to configure monitoring and aggregation profiles. Unauthorized access to these objects could disrupt data collection or falsify traffic statistics, so SNMP access control (e.g., SNMPv3 VACM) should be applied.
Each dsmonAggProfileEntry maps one DSCP value (Dscp TC, 0–63, encoded as integer) to a DsmonCounterAggGroupIndex (Integer32, 0-based). The profile table always has exactly 64 such entries per profile, indexed by (dsmonAggControlIndex, dsmonAggProfileDSCP).