RFC 3287
Remote Monitoring MIB Extensions for Differentiated Services
RFC 3287 ๐ Remote Monitoring MIB Extensions for Differentiated Services
okay bestie, here are the deets ๐
- Number: RFC 3287
- Author: A. Bierman, Cisco Systems, Inc.
- Category: Standards Track
- Date: July 2002
- Obsoletes / Updates: this header doesn't list anything it obsoletes or updates ๐ฆ
Status of this Memo โจ
so this doc is an Internet standards track protocol spec for the Internet community, and it's literally asking for discussion and suggestions for improvements ๐ฃ๏ธ if you want the current standardization state and status of this protocol, check the latest edition of the "Internet Official Protocol Standards" (STD 1) ๐ and yes, distribution of this memo is unlimited ๐
Copyright Notice ๐ธ
the legal bit: Copyright (C) The Internet Society (2002). All Rights Reserved. ๐
Abstract ๐ง
this memo defines a piece of the Management Information Base (MIB) for network management protocols in the Internet community ๐ specifically, it's all about managed objects that monitor Differentiated Services (DS) Codepoint usage in packets that carry a DS field ๐ฆ and it does this by using the monitoring framework from the RMON-2 (Remote Network Monitoring Management Version 2) MIB ๐ฅ
Table of Contents ๐
1 The SNMP Network Management Framework ........................... 2
2 Overview ........................................................ 3
2.1 Terms ......................................................... 4
2.2 Relationship to Differentiated Services ....................... 4
2.3 Relationship to the Remote Monitoring MIBs .................... 5
3 MIB Structure ................................................... 6
3.1 DSCP Counter Aggregation ...................................... 7
3.1.1 Counter Aggregation Configuration .......................... 8
3.2 MIB Group Overview ........................................... 8
3.2.1 DSCP Counter Aggregation Control Group ..................... 9
3.2.2 DS Statistics Group ........................................ 10
3.2.3 DS Protocol Distribution Group ............................. 10
3.2.4 DS Host Distribution Group ................................. 11
3.2.5 DSMON Capabilities Group ................................... 12
3.2.6 DS Matrix Distribution Group ............................... 13
3.3 RMON vs. DSMON Indexing Structure ............................ 13
4 Definitions .................................................... 16
5 Counter Aggregation Configuration Usage Examples .............. 108
5.1 Step 1: Unlock the Counter Aggregation Configuration ........ 109
5.2 Step 2: Check the Maximum number of Counter Aggregation
Groups ..................................................... 109
5.3 Step 3: Check if the counter aggregation profiles already
exist ...................................................... 109
5.4 Step 4: Create the Counter Aggregation Control Entries ...... 109
5.5 Step 5: Create the Counter Aggregation Group Descriptions
............................................................ 110
5.6 Step 6: Create the Counter Aggregation Profile Mappings ..... 112
5.7 Step 7: Lock the Counter Aggregation Configuration .......... 115
6 Intellectual Property ......................................... 115
7 Acknowledgements .............................................. 116
8 References .................................................... 116
9 Security Considerations ....................................... 118
10 Author's Address ............................................. 119
11 Full Copyright Statement ..................................... 120
1. The SNMP Network Management Framework โจ
okay so the SNMP Management Framework is currently made up of five major pieces ๐งฉ
- An overall architecture, described in RFC 2571 [RFC2571] ๐๏ธ
- Mechanisms for describing and naming objects and events for management purposes. The first version of this Structure of Management Information (SMI) is called SMIv1, and it's described in STD 16, RFC 1155 [RFC1155], STD 16, RFC 1212 [RFC1212] and RFC 1215 [RFC1215]. The second version, SMIv2, is described in STD 58, RFC 2578 [RFC2578], RFC 2579 [RFC2579] and RFC 2580 [RFC2580] ๐
- Message protocols for transferring management information. The first version of the SNMP message protocol is SNMPv1, described in STD 15, RFC 1157 [RFC1157]. A second version, SNMPv2c, is not an Internet standards track protocol, and it's described in RFC 1901 [RFC1901] and RFC 1906 [RFC1906]. The third version is SNMPv3, described in RFC 1906 [RFC1906], RFC 2572 [RFC2572] and RFC 2574 [RFC2574] ๐
- Protocol operations for accessing management information. The first set of operations and their PDU formats is in STD 15, RFC 1157 [RFC1157]. A second set is in RFC 1905 [RFC1905] ๐
- A set of fundamental applications, described in RFC 2573 [RFC2573], plus the view-based access control mechanism in RFC 2575 [RFC2575] ๐ก๏ธ
if you want a deeper intro to the current SNMP Management Framework, go read RFC 2570 [RFC2570] ๐ค
managed objects get accessed through a virtual information store called the Management Information Base, or MIB ๐๏ธ and objects in the MIB are defined using the mechanisms in the SMI ๐
this memo specifies a MIB module that is compliant with SMIv2 ๐ฏ a SMIv1 MIB can be produced through the appropriate translations ๐ the translated MIB must be semantically equivalent, except where objects or events get left out because no translation is possible (use of Counter64) ๐ some machine readable info in SMIv2 gets turned into textual descriptions in SMIv1 during translation, but losing that machine readable info isn't considered to change the semantics of the MIB ๐ซถ
2. Overview ๐
so there's a real need for a standardized way to monitor network traffic usage of Differentiated Services (DS) [RFC2474] codepoint values ๐ each DS codepoint (DSCP) value can get a different treatment from a forwarding device, and that affects which packets get dropped or delayed when the network is congested ๐ญ
the IETF DIFFSERV working group redefined the semantics of the Type of Service (TOS) octet in the IP header, and it's now called the 'DS field' ๐ the 6-bit Codepoint (DSCP) portion lives in the DS field, which gives you 64 different packet treatments for implementing differentiated network services ๐ฅ
by polling DSCP usage counters, an NMS can figure out the network throughput for traffic tied to each DSCP ๐ and that data can then be analyzed to 'tune' DSCP 'allocations' within a network, based on the Quality of Service (QoS) policies for that network ๐
remote monitoring agents are usually built as independent software (and sometimes hardware) components, called 'RMON probes' ๐ง quick but important detail: DSMON-capable RMON probes just collect and aggregate statistics. They base that on criteria (which include the DSCP value) that can be determined by inspecting the contents of monitored packets. They do not, in any way, monitor any aspect of a DS forwarding device's internal statistics ๐ โโ๏ธ๐
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] ๐
a few terms need intros first ๐ง
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, 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 get 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'. It's a complete set of counter aggregation group mappings for DSCP values (i.e., 64 mappings, one for each DSCP value 0 to 63), 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 implementing 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 you already know the DS Architecture [RFC2475] ๐
complex management apps are expected to use the counters in this MIB to help analyze DS-related throughput ๐ other metrics, like delay and jitter, are also expected to get analyzed, but supporting those is outside the scope of this document โญ
2.3. Relationship to the Remote Monitoring MIBs ๐
okay so this MIB is meant to live inside Remote Monitoring (RMON) probes ๐ก, which support the RMON-2 MIB [RFC2021]. These probes can be stand-alone devices, or they can be co-located with other networking devices (e.g., ethernet switches and repeaters) ๐ฆ
The DSMON functions are supposed to be implemented alongside the associated RMON functions, but the MIB is independent of all other RMON data tables ๐ they're separate besties, not roommates ๐ซถ
Several concepts and even MIB objects from the RMON MIBs get reused 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 uses 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 gives you a way 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.
- 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 ๐ literally a glow-up for your NMS ๐
Some DESCRIPTION clauses for DSMON objects are very similar to those for existing RMON-2 or HC-RMON objects. This is intentional ๐ง the DSMON features are designed to be as close to existing RMON features as possible, so developers and users get some level of 'MIB re-use' โป๏ธ no reinventing the wheel, bestie ๐โจ
3. MIB Structure ๐งฉ
Here's the big picture, bestie ๐บ๏ธ
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 |
| |
+-----------------------------------------------------------+
The DSMON MIB can be 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 ๐ซฅ
- 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 ๐ฏ your call, babe ๐ฆ
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: Reports per counter aggregation group distribution statistics for a particular RMON dataSource ๐
- dsmonPdistObjects group: Reports per counter aggregation group distribution statistics for each application protocol detected on a particular RMON dataSource ๐ง
- dsmonHostObjects group: Reports host address distribution statistics for each counter aggregation group, detected on a particular RMON dataSource ๐
- dsmonCapsObjects group: Reports the static DSMON MIB functional capabilities of the agent implementation ๐งพ
- dsmonMatrixObjects group: Reports host address pair distribution statistics for each counter aggregation group, detected on a particular RMON dataSource ๐
3.2.1. DSCP Counter Aggregation Control Group ๐
okay so this group has 4 scalar objects and 3 tables, and it's the one a management station uses to set up counter aggregation profiles ๐
The dsmonMaxAggGroups scalar is a read-only integer that tells you the max number of counter aggregation groups the agent will let you cram into a single aggregation profile. This value SHOULD be equal to 64 (that's the number of codepoints) ๐, but an agent MAY limit the number of counter aggregation groups because of resource limitations, like if it only has a 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. (ngl, putting all the DSCP counters into the same statistical 'bucket' could give you redundant data collection, and an HC-RMON or RMON-2 collection can get that done more easily ๐)
The dsmonAggControlLocked scalar is the top level switch ๐. It controls most write access to the dsmonAggControlTable, dsmonAggProfileTable, and dsmonAggGroupTable. (The dsmonAggControlOwner object is the only exception ๐.) While this object is 'false', all active DSMON collection data gets deleted and collection gets suspended, because the meaning of one or more counter aggregation control tables might change when it's flipped back to 'true'. Not a vibe to skip ๐
The dsmonAggControlChanges counter and the dsmonAggControlLastChangeTime timestamp help a management station notice that the codepoint to counter aggregation group mappings might have changed between polls ๐
The dsmonAggControlTable is a read-create table with one entry for each counter aggregation profile configured on the agent ๐. Each entry is identified by a dsmonAggControlIndex value, which is also the major index into the dsmonAggProfileTable and dsmonAggGroupTable. The DSMON control tables that have DataSource objects pick a counter aggregation profile by referencing this index value โจ.
The dsmonAggProfileTable is a read-write table with 64 rows for each associated entry in the dsmonAggControlTable, and they are indexed from 0 to 63 (this part is a MUST ๐ซถ). The agent creates this set of 64 instances when the associated dsmonAggControlEntry gets activated, and deletes them when that entry gets deactivated. Each of the 64 rows represents a conceptual DSCP counter, identified by the same dsmonAggProfileDSCP value. Each row holds the DSCP counter to counter aggregation group mapping for that 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 holds an administratively assigned descriptive label for each configured counter aggregation group ๐ท๏ธ. You don't need to fully configure this table for data collection to happen, since the agent identifies collections with integer indices. It's just there so the agent can store a descriptive string for each group. There's no attempt to convey any real semantics for each counter aggregation group, so it's basically a nametag ๐ง. A management station MAY choose not to configure entries in this table.
3.2.2. DS Statistics Group ๐
This group has two tables, the dsmonStatsControlTable and the dsmonStatsTable. It supports counter aggregation group distribution statistics for half and full-duplex interfaces, and for both low and high speed interfaces ๐. Packet and octets distributions are kept in the dsmonStatsTable for each active control row in the dsmonStatsControlTable.
This group gives you the lowest statistics granularity in the DSMON MIB ๐. The idea is that a management application will first look at the counter aggregation group distribution for an entire data source with this group, and that's how it starts digging into certain DS deployment or performance problems.
3.2.3. DS Protocol Distribution Group ๐ธ
This group has two tables for statistics collection, dsmonPdistCtlTable and dsmonPdistStatsTable. It also has two tables for a 'Top N' reporting function on the collected statistics, dsmonPdistTopNCtlTable and dsmonPdistTopNTable ๐.
The dsmonPdistCtlTable and dsmonPdistStatsTable give you 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 kept in the dsmonPdistStatsTable for each active control row in the dsmonPdistCtlTable.
This one is different from the RMON-2 protocol distribution group, because there can be a potentially huge number of entries. Here's how it's different:
- there's a maximum desired entries parameter added to the control table
- there are inserts and deletes counters added to the control table
- there's support for LRU garbage collection in the
dsmonPdistStatsTable - there's a TimeFilter index added to the
dsmonPdistStatsTable - the protocols aren't configurable. Instead of picking individual protocols to monitor (like with a
'supportedOn/Off'extension to theprotocolDirTable[RFC 2021]), there's a simpler setup. DSCP usage stats are most interesting at the application layer, so thedsmonPdistStatsTableis 'hardwired' to only select application layer (aka'terminal') protocols for analysis ๐ง
The TopN feature adds two more tables, the dsmonPdistTopNCtlTable and the dsmonPdistTopNTable. It supports periodic usage reporting for the stats in the dsmonPdistStatsTable, so you can grab the most used application/counter aggregation group combinations without a hassle ๐.
3.2.4. DS Host Distribution Group ๐
This group has two tables for statistics collection, dsmonHostCtlTable and dsmonHostTable. It also has two tables for a 'Top N' reporting function, dsmonHostTopNCtlTable and dsmonHostTopNTable ๐
.
The dsmonHostCtlTable and dsmonHostTable give you host distribution stats for each counter aggregation group detected in packets monitored on a particular dataSource. The DSMON Host collection is kind of like the RMON-2 network layer host collection (nlHostTable). There isn't a DSMON application host table defined yet ๐.
A management application will probably dig into DS deployment or performance problems by first figuring out which high priority DSCP values to look at (that part is out of scope for this document), and then checking the dsmonHostTable or dsmonHostTopNTable stats to see which hosts are using the selected counter aggregation groups ๐ต๏ธโโ๏ธ.
Packet and octets distributions (in and out, per counter aggregation group, per host) are kept 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 that contains a DS field (like IPv4 or IPv6). If a protocol encapsulation with multiple network layers gets specified, the entries in this table refer to the innermost network protocol layer.
- the
dsmonHostCtlTablesupports limited IPv4 and IPv6 prefix aggregation. You can configure the number of 'monitored address bits' in each address for each collection. The agent zeroes out the selected number of rightmost address bits for counting purposes. This parameter can seriously cut down how many entries the agent has to keep track of, which should reduce CPU and memory needs on the agent and reduce polling overhead on the network and the management station ๐. The catch is that you can only configure one mask for each address type, not multiple different length masks for each address type based on prefix value ๐.
The TopN feature adds two more tables, the dsmonHostTopNCtlTable and the dsmonHostTopNTable. It supports periodic usage reporting for the stats in the dsmonHostTable, so you can quickly grab the most used IP-host/DSCP combinations ๐.
3.2.5. DSMON Capabilities Group ๐งฉ
This group has one read-only scalar object, dsmonCapabilities. It tells you which MIB groups within this MIB the agent supports ๐.
3.2.6. DS Matrix Distribution Group ๐ฆ
This group has three tables for statistics collection, dsmonMatrixCtlTable, dsmonMatrixSDTable, and dsmonMatrixDSTable. It also has two tables for a 'Top N' reporting function, dsmonMatrixTopNCtlTable and dsmonMatrixTopNTable ๐.
The dsmonMatrixCtlTable, dsmonMatrixSDTable, and dsmonMatrixDSTable give you host-pair distribution stats 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 isn't a DSMON network layer matrix table defined yet ๐.
A management application will probably dig into DS deployment or performance problems by first figuring out which high priority DSCP values to look at (out of scope here), and then checking dsmonMatrixSDTable, dsmonMatrixDSTable, and/or dsmonMatrixTopNTable to see 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 kept in the dsmonMatrixSDTable and dsmonMatrixDSTable for each active control row in the dsmonMatrixCtlTable.
The TopN feature adds two more tables, the dsmonMatrixTopNCtlTable and the dsmonMatrixTopNTable. It supports periodic usage reporting for the stats in the dsmonMatrixSDTable, so you can quickly pull out the most used IP-host-pair/DSCP combinations. main character energy, literally ๐โจ
3.3. RMON vs. DSMON Indexing Structure ๐ฆ
Okay so the DSMON-MIB control and data tables are basically twins of the existing RMON-2 and HC-RMON control tables for the same features ๐ฏโโ๏ธ That's on purpose! It keeps agent behavior and functionality consistent across all the RMON MIBs, so if you already know RMON, DSMON will feel like home. The DSMON data tables are indexed as closely as possible to their RMON-2 or HC-RMON cousins, with one extra index component for DSCP-based classification, which is dsmonAggGroup ๐ If you want the full side-by-side, check out Table 1 below. It's giving organized ๐
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
---------------------------------+--------------------------------
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
---------------------------------+--------------------------------
4. Definitions โจ
Time for the big one, bestie ๐ง Here's the actual DSMON-MIB module, which is written in SMIv2 (the ASN.1 flavor of MIB modules). It imports everything it needs from the standard RMON, SNMP, and DiffServ modules, then defines the MIB identity, the textual conventions, the capabilities object, and the first aggregation control object. Read it like a little map of the whole thing ๐บ๏ธ
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
* 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
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 *
-- * *
-- ***********************************************************
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 }
Heads up, this is where the agent rules get serious ๐ dsmonMaxAggGroups has to stay at its value once the system is running (the agent MUST NOT lower it), and the agent SHOULD set it properly when the system starts up. Those words are copied straight from the MIB, so they keep their exact force.
okay so the lock is literally the gatekeeper ๐โจ dsmonAggControlLocked decides who gets to touch the counter aggregation tables, and it's giving main character energy ๐
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
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
'false' to 'true', or from 'true' to 'false'.
Upon system initialization, this object shall contain the
value zero."
::= { dsmonAggObjects 4 }
next up is the Counter Aggregation Control Table ๐ this is where the profiles get their start, and each one comes with its own little family of 64 entries ๐ง
--
-- 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
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."
::= { 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 }
and last but not least, the Counter Aggregation Profile Table ๐ every DSCP value gets assigned to exactly one group here, which is so organized it's honestly iconic ๐
--
-- 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 }
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
--
okay bestie, the group table is where the counter aggregation groups actually live ๐ง every group gets its own row, and its meaning only makes sense inside its profile ๐
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.
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 }
next up is the per-data-source section, and it's giving big banner energy ๐
-- *************************************************************
-- * *
-- * 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,
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,
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
"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
dsmonStatsControlEntry."
::= { dsmonStatsObjects 2 }
that's the end of this bit, and the stats table is where the per-group numbers finally show up ๐ธโจ
dsmonStatsEntry OBJECT-TYPE ๐
okay so this is the big row for DSCP usage stats ๐ each row is one counter aggregation group, and it has inbound and outbound packet and octet counters in it. the index is dsmonStatsControlIndex plus dsmonAggGroupIndex, and the example is dsmonStatsOutPkts.1.16 ๐ the bit I'm obsessed with is that only packets carrying a DS field [RFC2474] get counted here. that's giving main character energy ๐
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 }
The DsmonStatsEntry Sequence โจ
here's the sequence listing all twelve columns, so you can see exactly which counters live in each row ๐ธ
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
}
Inbound Counters ๐ฆ
the inbound packet and octet counters are for traffic received on a half-duplex link or on the inbound side of a full-duplex link. the 32-bit ones have overflow companions, and the 64-bit "HC" ones only show up when the RMON agent supports High Capacity monitoring ๐ง
dsmonStatsInPkts 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 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
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 }
Outbound Counters ๐
the outbound side counts traffic received on a full-duplex link in the direction of the network. same vibe as inbound, just facing the other way ๐ซถ
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
"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 }
Per-Protocol Collections ๐
okay this next bit is a whole new era โจ it's the per-protocol collections, and the banner literally spells out P E R - P R O T O C O L C O L L E C T I O N S ๐
-- ***********************************************************
-- * *
-- * P E R - P R O T O C O L C O L L E C T I O N S *
-- * *
-- ***********************************************************
--
-- DSCP Per-Protocol Statistics Control Table
--
DSCP Per-Protocol Statistics Control Table ๐ฆ
this is the control table that sets up the per application, per counter aggregation group distribution stats. if the agent limits how many entries it lets you make, it's supposed to return the error-status resourceUnavailable(13) (that's the bit pointing at section 4.2.5 of [RFC1905]) ๐
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,
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.
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
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."
::= { 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 }
Next up is the per-protocol stats table, which is where the real fun begins ๐ง
--
-- 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
"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
"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
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 }
Last bit for this part is the TopN control table ๐
--
-- 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 โจ
okay so this is the blueprint for every column in a TopN control row ๐ it lists all eleven fields in order, and each one gets its own OBJECT-TYPE below ๐
DsmonPdistTopNCtlEntry ::= SEQUENCE {
dsmonPdistTopNCtlIndex Integer32,
dsmonPdistTopNCtlPdistIndex Integer32,
dsmonPdistTopNCtlRateBase INTEGER,
dsmonPdistTopNCtlTimeRemaining Integer32,
dsmonPdistTopNCtlGeneratedReprts Counter32,
dsmonPdistTopNCtlDuration Integer32,
dsmonPdistTopNCtlRequestedSize Integer32,
dsmonPdistTopNCtlGrantedSize Integer32,
dsmonPdistTopNCtlStartTime TimeStamp,
dsmonPdistTopNCtlOwner OwnerString,
dsmonPdistTopNCtlStatus RowStatus
}
dsmonPdistTopNCtlIndex OBJECT-TYPE ๐ฆ
this is the index that picks out one row, and it's not-accessible, so you can't read or write it directly ๐
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 ๐ธ
this one points at which dsmonPdist table the report is built from ๐ and it's locked while the row is active
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 ๐
this is the counter the ranking is based on, and there are four choices ๐ฅ the two HC ones only show up if the agent does High Capacity monitoring
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,
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 โณ
this is the countdown timer for the report, and it resets itself over and over so you never miss one ๐
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.
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 ๐
a read-only tally of how many reports this entry has made so far ๐ง
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 โฑ๏ธ
this shows how long the current report has been collecting, and the probe keeps it in sync with the timer ๐ซถ
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 ๐ฌ
this is how many entries you're asking for, and the probe will try its best to match it ๐
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 }
::= { dsmonPdistTopNCtlEntry 7 }
dsmonPdistTopNCtlGrantedSize OBJECT-TYPE ๐
this is what you actually get back, and the probe can't shrink it on its own ๐ฅบ
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 ๐ฐ๏ธ
this is the sysUpTime stamp for when the report last kicked off, so you can spot a missed one ๐
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 ๐งโ๐ป
this records who set up the row and who's using its resources ๐
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."
::= { dsmonPdistTopNCtlEntry 10 }
dsmonPdistTopNCtlStatus OBJECT-TYPE ๐ฆ
the row status controls whether the whole entry is alive, and it's a hard rule that an active row has to be complete โจ
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 ๐ท
--
-- dsmonPdist TopN Table
--
dsmonPdistTopNTable OBJECT-TYPE ๐
this is where the ranked results actually live, and it gets wiped if the control says so ๐งน
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 ๐ฆ
one row of the TopN table, indexed by the control index and its rank ๐
dsmonPdistTopNEntry OBJECT-TYPE
SYNTAX DsmonPdistTopNEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"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 ๐
this is the column list for the TopN row, with the rate and high capacity values ๐ซง
DsmonPdistTopNEntry ::= SEQUENCE {
dsmonPdistTopNIndex Integer32,
dsmonPdistTopNPDLocalIndex Integer32,
dsmonPdistTopNAggGroup DsmonCounterAggGroupIndex,
dsmonPdistTopNRate Gauge32,
dsmonPdistTopNRateOvfl Gauge32,
dsmonPdistTopNHCRate CounterBasedGauge64
}
dsmonPdistTopNIndex OBJECT-TYPE ๐ข
this is the rank number inside a report, and it can change over time ๐
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 ๐
this links the row to its protocol, and if that protocol goes away the TopN row has to go too ๐ฅน
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 }
okay bestie, we're finishing up the Top-N stuff, and the per-DSCP rate objects are giving main character energy ๐ฆโจ
dsmonPdistTopNAggGroup OBJECT-TYPE
SYNTAX DsmonCounterAggGroupIndex
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 }
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 }
Now we're moving into the per-host collections, which is the next big chapter ๐ธ Everything in this bit is read-only or read-create, and the vibe is "don't touch it while it's active" ๐
-- ***********************************************************
-- * *
-- * 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
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
"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.
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 -
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 }
okay bestie, we're picking right back up with the counters ๐
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.
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
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
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 configured for that value.
An example of the indexing of this entry is
dsmonHostOutPkts.1.27273.3.200.4.171.69.120.0"
INDEX { dsmonHostCtlIndex,
dsmonHostTimeMark,
dsmonAggGroupIndex,
protocolDirLocalIndex,
dsmonHostAddress }
::= { dsmonHostTable 1 }
DsmonHostEntry ::= SEQUENCE {
dsmonHostTimeMark TimeFilter,
dsmonHostAddress OCTET STRING,
dsmonHostInPkts ZeroBasedCounter32,
dsmonHostInOctets ZeroBasedCounter32,
dsmonHostInOvflPkts ZeroBasedCounter32,
dsmonHostInOvflOctets ZeroBasedCounter32,
dsmonHostInHCPkts ZeroBasedCounter64,
dsmonHostInHCOctets ZeroBasedCounter64,
dsmonHostOutPkts ZeroBasedCounter32,
dsmonHostOutOctets ZeroBasedCounter32,
dsmonHostOutOvflPkts ZeroBasedCounter32,
dsmonHostOutOvflOctets ZeroBasedCounter32,
dsmonHostOutHCPkts ZeroBasedCounter64,
dsmonHostOutHCOctets ZeroBasedCounter64,
dsmonHostCreateTime LastCreateTime
}
dsmonHostTimeMark OBJECT-TYPE
SYNTAX TimeFilter
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"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."
::= { dsmonHostEntry 1 }
dsmonHostAddress OBJECT-TYPE
SYNTAX OCTET STRING (SIZE (0..110))
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The network address for this dsmonHostEntry.
This object is encoded according to the protocol type
indicated by the protocolDirLocalIndex value in the index.
In addition, this object may have some 'rightmost' bits
cleared to zero for counting purposes, as indicated by the
associated dsmonHostCtlIPv4PrefixLen or
dsmonHostCtlIPv6PrefixLen objects."
::= { dsmonHostEntry 2 }
dsmonHostInPkts OBJECT-TYPE
SYNTAX ZeroBasedCounter32
UNITS "packets"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of packets without errors, using one of the DSCP
values in the indicated counter aggregation group, and
transmitted to this address, since this entry was added to
the dsmonHostTable. Note that this is the number of link-
layer packets, so if a single network-layer packet is
fragmented into several link-layer frames, this counter is
incremented several times."
::= { dsmonHostEntry 3 }
dsmonHostInOctets OBJECT-TYPE
SYNTAX ZeroBasedCounter32
UNITS "octets"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of octets in all packets, transmitted to this
address and using one of the DSCP values in the indicated
counter aggregation group, since this entry was added to the
dsmonHostTable (excluding framing bits but including FCS
octets), excluding those octets in packets that contained
errors.
Note this doesn't count just those octets in the particular
protocol frames, but includes the entire packet that
contained the protocol."
::= { dsmonHostEntry 4 }
dsmonHostInOvflPkts OBJECT-TYPE
SYNTAX ZeroBasedCounter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of times the associated dsmonHostInPkts counter
has overflowed. Note that this object will only be
instantiated if the associated dsmonHostInHCPkts object is
also instantiated for a particular dataSource."
::= { dsmonHostEntry 5 }
dsmonHostInOvflOctets OBJECT-TYPE
SYNTAX ZeroBasedCounter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of times the associated dsmonHostInOctets
counter has overflowed. Note that this object will only be
instantiated if the associated dsmonHostInHCOctets object is
also instantiated for a particular dataSource."
::= { dsmonHostEntry 6 }
dsmonHostInHCPkts OBJECT-TYPE
SYNTAX ZeroBasedCounter64
UNITS "packets"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The 64-bit version of the dsmonHostInPkts object.
Note that this object will only be instantiated if the RMON
agent supports High Capacity monitoring for a particular
dataSource."
::= { dsmonHostEntry 7 }
dsmonHostInHCOctets OBJECT-TYPE
SYNTAX ZeroBasedCounter64
UNITS "octets"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The 64-bit version of the dsmonHostInOctets object.
Note that this object will only be instantiated if the RMON
agent supports High Capacity monitoring for a particular
dataSource."
::= { dsmonHostEntry 8 }
dsmonHostOutPkts OBJECT-TYPE
SYNTAX ZeroBasedCounter32
UNITS "packets"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of packets without errors, using one of the DSCP
values in the indicated counter aggregation group, and
transmitted by this address, since this entry was added to
the dsmonHostTable. Note that this is the number of link-
layer packets, so if a single network-layer packet is
fragmented into several link-layer frames, this counter is
incremented several times."
::= { dsmonHostEntry 9 }
Okay bestie, picking up right where we left off with the octet counter ๐
dsmonHostOutOctets OBJECT-TYPE
SYNTAX ZeroBasedCounter32
UNITS "octets"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of octets, transmitted by this address and using
one of the DSCP values in the identified counter aggregation
group, since this entry was added to the dsmonHostTable
(excluding framing bits but including FCS octets), excluding
those octets in packets that contained errors.
Note this doesn't count just those octets in the particular
protocol frames, but includes the entire packet that
contained the protocol."
::= { dsmonHostEntry 10 }
dsmonHostOutOvflPkts OBJECT-TYPE
SYNTAX ZeroBasedCounter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of times the associated dsmonHostOutPkts counter
has overflowed. Note that this object will only be
instantiated if the associated dsmonHostOutHCPkts object is
also instantiated for a particular dataSource."
::= { dsmonHostEntry 11 }
dsmonHostOutOvflOctets OBJECT-TYPE
SYNTAX ZeroBasedCounter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of times the associated dsmonHostOutOctets
counter has overflowed. Note that this object will only be
instantiated if the associated dsmonHostOutHCOctets object
is also instantiated for a particular dataSource."
::= { dsmonHostEntry 12 }
dsmonHostOutHCPkts OBJECT-TYPE
SYNTAX ZeroBasedCounter64
UNITS "packets"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The 64-bit version of the dsmonHostOutPkts object.
Note that this object will only be instantiated if the RMON
agent supports High Capacity monitoring for a particular
dataSource."
::= { dsmonHostEntry 13 }
dsmonHostOutHCOctets OBJECT-TYPE
SYNTAX ZeroBasedCounter64
UNITS "octets"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The 64-bit version of the dsmonHostOutOctets object.
Note that this object will only be instantiated if the RMON
agent supports High Capacity monitoring for a particular
dataSource."
::= { dsmonHostEntry 14 }
dsmonHostCreateTime OBJECT-TYPE
SYNTAX LastCreateTime
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of sysUpTime when this dsmonHost entry was last
instantiated by the agent. This can be used by the
management station to ensure that the entry has not been
deleted and recreated between polls."
::= { dsmonHostEntry 15 }
Ngl, the out-octets counter is giving "mirror of the in-octets" energy ๐ฆ It's the same vibe, just the outbound side, and it only counts the DSCP group the entry is watching. The two Ovfl counters are deprecated ๐ so they're kinda retired, but they only show up when the matching 64-bit counter is there. The HC ones are the 64-bit glow-ups, and they only exist if the agent does High Capacity monitoring ๐ Last one, dsmonHostCreateTime, is how a management station checks that an entry wasn't deleted and recreated between polls โฐ
Per-Protocol Per-Host NL Statistics TopN Control Table โจ
--
-- Per-Protocol Per-Host NL Statistics TopN Control Table
--
dsmonHostTopNCtlTable OBJECT-TYPE
SYNTAX SEQUENCE OF DsmonHostTopNCtlEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A set of parameters that control the creation of a report
of the top N dsmonHost entries according to a selected
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]."
::= { dsmonHostObjects 3 }
dsmonHostTopNCtlEntry OBJECT-TYPE
SYNTAX DsmonHostTopNCtlEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A conceptual row in the dsmonHostTopNCtlTable.
Entries are created and deleted from this table by
management action only, using the dsmonHostTopNCtlStatus
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 dsmonHostTopNTable to be created and maintained
by the agent."
INDEX { dsmonHostTopNCtlIndex }
::= { dsmonHostTopNCtlTable 1 }
DsmonHostTopNCtlEntry ::= SEQUENCE {
dsmonHostTopNCtlIndex Integer32,
dsmonHostTopNCtlHostIndex Integer32,
dsmonHostTopNCtlRateBase INTEGER,
dsmonHostTopNCtlTimeRemaining Integer32,
dsmonHostTopNCtlGeneratedReports Counter32,
dsmonHostTopNCtlDuration Integer32,
dsmonHostTopNCtlRequestedSize Integer32,
dsmonHostTopNCtlGrantedSize Integer32,
dsmonHostTopNCtlStartTime TimeStamp,
dsmonHostTopNCtlOwner OwnerString,
dsmonHostTopNCtlStatus RowStatus
}
dsmonHostTopNCtlIndex OBJECT-TYPE
SYNTAX Integer32 (1..65535)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An index that uniquely identifies an entry in the
dsmonHostTopNCtlTable. Each such entry defines one Top N
report prepared for one RMON dataSource."
::= { dsmonHostTopNCtlEntry 1 }
dsmonHostTopNCtlHostIndex OBJECT-TYPE
SYNTAX Integer32 (1..65535)
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The dsmonHostTable for which a top N report will be
prepared on behalf of this entry. The dsmonHostTable is
identified by the value of the dsmonHostCtlIndex for that
table - that value is used here to identify the particular
table.
This object MUST NOT be modified if the associated
dsmonHostTopNCtlStatus object is equal to active(1)."
::= { dsmonHostTopNCtlEntry 2 }
dsmonHostTopNCtlRateBase OBJECT-TYPE
SYNTAX INTEGER {
dsmonHostTopNInPkts(1),
dsmonHostTopNInOctets(2),
dsmonHostTopNOutPkts(3),
dsmonHostTopNOutOctets(4),
dsmonHostTopNTotalPkts(5),
dsmonHostTopNTotalOctets(6),
dsmonHostTopNInHCPkts(7),
dsmonHostTopNInHCOctets(8),
dsmonHostTopNOutHCPkts(9),
dsmonHostTopNOutHCOctets(10),
dsmonHostTopNTotalHCPkts(11),
dsmonHostTopNTotalHCOctets(12)
}
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The variable(s) for each dsmonHost that the
dsmonHostTopNRate and dsmonHostTopNHCRate variables are
based upon. Each dsmonHostTopN report generated on behalf
of this control entry will be ranked in descending order,
based on the associated dsmonHostTable counter(s),
identified by this object.
The following table identifies the dsmonHostTable counters
associated with each enumeration:
Enumeration RateBase MIB Objects
----------- --------------------
dsmonHostTopNInPkts dsmonHostInPkts
dsmonHostTopNInOctets dsmonHostInOctets
dsmonHostTopNOutPkts dsmonHostOutPkts
dsmonHostTopNOutOctets dsmonHostOutOctets
dsmonHostTopNTotalPkts dsmonHostInPkts +
dsmonHostOutPkts
dsmonHostTopNTotalOctets dsmonHostInOctets +
dsmonHostOutOctets
dsmonHostTopNInHCPkts dsmonHostInHCPkts
dsmonHostTopNInHCOctets dsmonHostInHCOctets
dsmonHostTopNOutHCPkts dsmonHostOutHCPkts
dsmonHostTopNOutHCOctets dsmonHostOutHCPkts
dsmonHostTopNTotalHCPkts dsmonHostInHCPkts +
dsmonHostOutHCPkts
dsmonHostTopNTotalHCOctets dsmonHostInHCOctets +
dsmonHostOutHCOctets
The following enumerations are only available if the agent
supports High Capacity monitoring:
dsmonHostTopNInHCPkts
dsmonHostTopNInHCOctets
dsmonHostTopNOutHCPkts
dsmonHostTopNOutHCOctets
dsmonHostTopNTotalHCPkts
dsmonHostTopNTotalHCOctets
It is an implementation-specific matter whether an agent can
detect an overflow condition resulting from the addition of
two counter delta values for the following enumerations:
dsmonHostTopNTotalPkts
dsmonHostTopNTotalOctets
dsmonHostTopNTotalHCPkts
dsmonHostTopNTotalHCOctets
In the event such an overflow condition can be detected by
the agent, the associated dsmonHostTopNRate,
dsmonHostTopNRateOvfl, and/or dsmonHostTopNHCRate objects
should be set to their maximum value.
This object MUST NOT be modified if the associated
dsmonHostTopNCtlStatus object is equal to active(1)."
::= { dsmonHostTopNCtlEntry 3 }
dsmonHostTopNCtlTimeRemaining 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 dsmonHostTopNCtlDuration object.
When the report finishes, the probe will automatically start
another collection with the same initial value of
dsmonHostTopNCtlTimeRemaining. 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 dsmonHostTopNTable, overwriting any report that may be
there.
When this object is modified by the management station, any
associated entries in the dsmonHostTopNTable shall be
deleted."
DEFVAL { 1800 }
::= { dsmonHostTopNCtlEntry 4 }
dsmonHostTopNCtlGeneratedReports OBJECT-TYPE
SYNTAX Counter32
UNITS "reports"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of reports that have been generated by this
entry."
::= { dsmonHostTopNCtlEntry 5 }
dsmonHostTopNCtlDuration 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 dsmonHostTopNCtlTimeRemaining 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
dsmonHostTopNCtlTimeRemaining is set.
This value shall be zero if no reports have been requested
for this dsmonHostTopNCtlEntry."
::= { dsmonHostTopNCtlEntry 6 }
Okay, this is the Top N control table and it's giving control panel ๐๏ธ Each row is one report setup, and you create or delete rows by management action only ๐
โโ๏ธ The MUST NOT on the host index and rate base means you can't change either one while the row is active(1) ๐ Also, if the agent limits how many rows it'll hold, it SHOULD answer with resourceUnavailable(13) ๐ The dsmonHostTopNCtlTimeRemaining countdown is my favourite bit ๐ It ticks down every second, and when it hits zero the report gets posted to the dsmonHostTopNTable, and then the probe starts the next one on its own ๐ DEFVAL is 1800 seconds, so about half an hour by default โณ
dsmonHostTopNCtlRequestedSize OBJECT-TYPE
SYNTAX Integer32 (0..2147483647)
UNITS "table entries"
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The maximum number of dsmonHost entries requested for this
report.
When this object is created or modified, the probe SHOULD
set dsmonHostTopNCtlGrantedSize as closely to this object as
is possible for the particular probe implementation and
available resources."
DEFVAL { 150 }
::= { dsmonHostTopNCtlEntry 7 }
dsmonHostTopNCtlGrantedSize OBJECT-TYPE
SYNTAX Integer32 (0..2147483647)
UNITS "table entries"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The maximum number of dsmonHost entries in this report.
When the associated dsmonHostTopNCtlRequestedSize 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 dsmonHostTopNCtlRequestedSize
object.
Protocol entries with the highest value of dsmonHostTopNRate
or dsmonHostTopNHCRate (depending on the value of the
associated dsmonHostTopNCtlRateBase 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 dsmonHost
entries."
::= { dsmonHostTopNCtlEntry 8 }
dsmonHostTopNCtlStartTime 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 dsmonHostTopNCtlTimeRemaining 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."
::= { dsmonHostTopNCtlEntry 9 }
dsmonHostTopNCtlOwner 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."
::= { dsmonHostTopNCtlEntry 10 }
dsmonHostTopNCtlStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The status of this dsmonHostTopNCtlEntry.
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 dsmonHostTopNTable shall be deleted by the
agent."
::= { dsmonHostTopNCtlEntry 11 }
Okay bestie, so the RequestedSize object is basically your wishlist ๐ You tell the probe how many dsmonHost entries you'd love to see, and the probe tries its absolute best to match it. Then GrantedSize is the reality check ๐ It's read-only, so the probe sets it, and it's the ceiling for the report. The probe can't lower it unless you change the RequestedSize, which is very fair, honestly ๐
StartTime is giving timestamp energy โฐ It tells your manager when the report last kicked off, so they can tell if a report got missed. And Owner is the entity that set the whole thing up and is using its resources ๐ซถ Finally, Status is the on/off switch for the entry. An entry can't be active unless everything in it is set properly, and if it gets turned off, the agent wipes out the related rows in the table ๐
--
-- dsmonHost TopN Table
--
dsmonHostTopNTable OBJECT-TYPE
SYNTAX SEQUENCE OF DsmonHostTopNEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A set of statistics for those dsmonHost 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
dsmonHostTopNCtlEntry.
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 dsmonHostTopNCtlTable.
Note that dsmonHost entries which did not increment at all
during the report interval SHOULD NOT be included in
dsmonHostTopN reports."
::= { dsmonHostObjects 4 }
dsmonHostTopNEntry OBJECT-TYPE
SYNTAX DsmonHostTopNEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A conceptual row in the dsmonHostTopNTable.
The dsmonHostTopNCtlIndex value in the index identifies the
dsmonHostTopNCtlEntry 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 { dsmonHostTopNCtlIndex, dsmonHostTopNIndex }
::= { dsmonHostTopNTable 1 }
DsmonHostTopNEntry ::= SEQUENCE {
dsmonHostTopNIndex Integer32,
dsmonHostTopNPDLocalIndex Integer32,
dsmonHostTopNAddress OCTET STRING,
dsmonHostTopNAggGroup DsmonCounterAggGroupIndex,
dsmonHostTopNRate Gauge32,
dsmonHostTopNRateOvfl Gauge32,
dsmonHostTopNHCRate CounterBasedGauge64
}
dsmonHostTopNIndex OBJECT-TYPE
SYNTAX Integer32 (1..2147483647)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An index that uniquely identifies an entry in the
dsmonHostTopNTable among those in the same report. This
index is between 1 and N, where N is the number of entries
in this report."
::= { dsmonHostTopNEntry 1 }
dsmonHostTopNPDLocalIndex OBJECT-TYPE
SYNTAX Integer32 (1..2147483647)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The protocolDirLocalIndex value which identifies the
protocol associated with the dsmonHostTopNAddress object in
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
dsmonHostTopN entry."
::= { dsmonHostTopNEntry 2 }
dsmonHostTopNAddress OBJECT-TYPE
SYNTAX OCTET STRING
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The dsmonHostAddress value for the network host identified
in this entry. The associated dsmonHostTopNPDLocalIndex
object identifies the network protocol type and the encoding
rules for this object."
::= { dsmonHostTopNEntry 3 }
dsmonHostTopNAggGroup OBJECT-TYPE
SYNTAX DsmonCounterAggGroupIndex
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The counter aggregation group index value associated with
host identified in this entry. This object identifies the
dsmonAggGroupEntry with the same dsmonAggControlIndex value
as the associated dsmonHostCtlAggProfile object and the same
dsmonAggGroupIndex value as this object."
::= { dsmonHostTopNEntry 4 }
dsmonHostTopNRate 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 host's
instance of the object selected by dsmonHostTopNCtlRateBase.
If the associated dsmonHostTopNCtlRateBase indicates a High
Capacity monitoring enumeration, (e.g.
'dsmonHostTopNInHCPkts'), then this object will contain the
the least significant 32 bits of the associated
dsmonHostTopNHCRate object."
::= { dsmonHostTopNEntry 5 }
dsmonHostTopNRateOvfl OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The most significant 32 bits of the associated
dsmonHostTopNHCRate object.
If the associated dsmonHostTopNCtlRateBase is equal to any
of the High Capacity monitoring enumerations (e.g.
'dsmonHostTopNInHCPkts'), then this object will contain the
upper 32 bits of the associated dsmonHostTopNHCRate object.
If the associated dsmonHostTopNCtlRateBase is not equal to
any of High Capacity monitoring enumerations, then this
object will contain the value zero.
The agent MAY choose not to instantiate this object if High
Capacity monitoring is not supported."
::= { dsmonHostTopNEntry 6 }
dsmonHostTopNHCRate 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 host's
instance of the object selected by dsmonHostTopNCtlRateBase.
If the associated dsmonHostTopNCtlRateBase is not equal to
any of the High Capacity monitoring enumerations (e.g.,
'dsmonHostTopNInPkts'), then this object will contain the
value zero, and the associated dsmonHostTopNRate 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."
::= { dsmonHostTopNEntry 7 }
The TopN table is the main event ๐ It's the leaderboard of the hosts that counted the most octets or packets ๐ฅ The Rate and HCRate columns are the actual numbers, with RateOvfl holding the upper bits for the high-capacity counters, and it's marked deprecated so it's giving retired-but-still-iconic ๐ Each row is ranked, with 1 at the top, and the PDLocalIndex and Address tell you exactly which protocol and which host you're looking at ๐ฆ
-- **************************************************************
-- * *
-- * P E R - C O N V E R S I O N C O L L E C T I O N S *
-- * *
-- **************************************************************
--
-- AL Matrix Statistics Control Table
--
dsmonMatrixCtlTable OBJECT-TYPE
SYNTAX SEQUENCE OF DsmonMatrixCtlEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Controls setup of per counter aggregation group, per host-
pair, application protocol 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]."
::= { dsmonMatrixObjects 1 }
dsmonMatrixCtlEntry OBJECT-TYPE
SYNTAX DsmonMatrixCtlEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A conceptual row in the dsmonMatrixCtlTable.
Entries are created and deleted from this table by
management action only, using the dsmonMatrixCtlStatus
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 dsmonMatrixSDTable and dsmonMatrixDSTable to be
created and maintained by the agent."
INDEX { dsmonMatrixCtlIndex }
::= { dsmonMatrixCtlTable 1 }
DsmonMatrixCtlEntry ::= SEQUENCE {
dsmonMatrixCtlIndex Integer32,
dsmonMatrixCtlDataSource DataSource,
dsmonMatrixCtlAggProfile DsmonCounterAggProfileIndex,
dsmonMatrixCtlMaxDesiredEntries Integer32,
dsmonMatrixCtlDroppedFrames Counter32,
dsmonMatrixCtlInserts Counter32,
dsmonMatrixCtlDeletes Counter32,
dsmonMatrixCtlCreateTime LastCreateTime,
dsmonMatrixCtlOwner OwnerString,
dsmonMatrixCtlStatus RowStatus
}
Next up we're hopping into the matrix control stuff, and it's a whole vibe ๐โจ
okay bestie, the control entry columns are giving main character energy ๐ โจ here's the next chunk of the MIB ๐ฆ
dsmonMatrixCtlIndex OBJECT-TYPE
SYNTAX Integer32 (1..65535)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An arbitrary and unique index for this
dsmonMatrixCtlEntry."
::= { dsmonMatrixCtlEntry 1 }
dsmonMatrixCtlDataSource OBJECT-TYPE
SYNTAX DataSource
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The source of data for the associated dsmonMatrixSDTable
and dsmonMatrixDSTable.
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
dsmonMatrixCtlStatus object is equal to active(1)."
::= { dsmonMatrixCtlEntry 2 }
dsmonMatrixCtlAggProfile 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
dsmonMatrixCtlEntry.
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 dsmonMatrix collection. In this
case, the associated dsmonMatrixCtlStatus 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
dsmonMatrixCtlStatus object is equal to active(1)."
::= { dsmonMatrixCtlEntry 3 }
dsmonMatrixCtlMaxDesiredEntries 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
dsmonMatrix tables on behalf of this control entry. The
probe will not create more than this number of associated
entries in these tables, 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
dsmonMatrixCtlStatus object is equal to active(1)."
::= { dsmonMatrixCtlEntry 4 }
dsmonMatrixCtlDroppedFrames 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
dsmonMatrixSD and dsmonMatrixDS 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 dsmonMatrix tables are 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."
::= { dsmonMatrixCtlEntry 5 }
dsmonMatrixCtlInserts OBJECT-TYPE
SYNTAX Counter32
UNITS "table entries"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of times a dsmonMatrix entry has been inserted
into the dsmonMatrix tables. If an entry is inserted, then
deleted, and then inserted, this counter will be incremented
by 2. The addition of a conversation into both the
dsmonMatrixSDTable and dsmonMatrixDSTable shall be counted
as two insertions (even though every addition into one table
must be accompanied by an insertion into the other).
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
sum of the dsmonMatrixSDTable and dsmonMatrixDSTable sizes
can be determined by subtracting dsmonMatrixCtlDeletes from
dsmonMatrixCtlInserts."
::= { dsmonMatrixCtlEntry 6 }
dsmonMatrixCtlDeletes OBJECT-TYPE
SYNTAX Counter32
UNITS "table entries"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of times a dsmonMatrix entry has been deleted
from the dsmonMatrix tables (for any reason). If an entry
is deleted, then inserted, and then deleted, this counter
will be incremented by 2. The deletion of a conversation
from both the dsmonMatrixSDTable and dsmonMatrixDSTable
shall be counted as two deletions (even though every
deletion from one table must be accompanied by a deletion
from the other).
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 sum of the dsmonMatrixSDTable and
dsmonMatrixDSTable sizes can be determined by subtracting
dsmonMatrixCtlDeletes from dsmonMatrixCtlInserts."
::= { dsmonMatrixCtlEntry 7 }
dsmonMatrixCtlCreateTime 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."
::= { dsmonMatrixCtlEntry 8 }
dsmonMatrixCtlOwner 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."
::= { dsmonMatrixCtlEntry 9 }
dsmonMatrixCtlStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The status of this dsmonMatrixCtlEntry.
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 dsmonMatrixSDTable and dsmonMatrixDSTable
shall be deleted."
::= { dsmonMatrixCtlEntry 10 }
--
-- AL Matrix SD Statistics Table
--
dsmonMatrixSDTable OBJECT-TYPE
SYNTAX SEQUENCE OF DsmonMatrixSDEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A list of application traffic matrix entries which collect
statistics for conversations of a particular application
protocol between two network-level addresses. This table is
indexed first by the source address and then by the
destination address to make it convenient to collect all
statistics from a particular address.
The probe will add to this table all pairs of addresses for
all protocols seen in all packets with no MAC errors, and
will increment octet and packet counts in the table for all
packets with no MAC errors."
::= { dsmonMatrixObjects 2 }
dsmonMatrixSDEntry OBJECT-TYPE
SYNTAX DsmonMatrixSDEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A conceptual row in the dsmonMatrixSDTable.
The dsmonMatrixCtlIndex value in the index identifies the
dsmonMatrixCtlEntry 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 configured for that value."
INDEX { dsmonMatrixCtlIndex,
dsmonMatrixTimeMark,
dsmonAggGroupIndex,
dsmonMatrixNLIndex,
dsmonMatrixSourceAddress,
dsmonMatrixDestAddress,
dsmonMatrixALIndex
}
::= { dsmonMatrixSDTable 1 }
DsmonMatrixSDEntry ::= SEQUENCE {
dsmonMatrixTimeMark TimeFilter,
dsmonMatrixNLIndex Integer32,
dsmonMatrixSourceAddress OCTET STRING,
dsmonMatrixDestAddress OCTET STRING,
dsmonMatrixALIndex Integer32,
dsmonMatrixSDPkts ZeroBasedCounter32,
dsmonMatrixSDOvflPkts ZeroBasedCounter32,
dsmonMatrixSDHCPkts ZeroBasedCounter64,
dsmonMatrixSDOctets ZeroBasedCounter32,
dsmonMatrixSDOvflOctets ZeroBasedCounter32,
dsmonMatrixSDHCOctets ZeroBasedCounter64,
dsmonMatrixSDCreateTime LastCreateTime
}
dsmonMatrixTimeMark OBJECT-TYPE
SYNTAX TimeFilter
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"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."
::= { dsmonMatrixSDEntry 1 }
dsmonMatrixNLIndex OBJECT-TYPE
SYNTAX Integer32 (1..2147483647)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The protocolDirLocalIndex value of a protocolDirEntry
representing the specific network layer protocol
encapsulation associated with each entry, and the network
protocol type of the dsmonMatrixSourceAddress and
dsmonMatrixDestAddress objects."
::= { dsmonMatrixSDEntry 2 }
dsmonMatrixSourceAddress OBJECT-TYPE
SYNTAX OCTET STRING (SIZE (0..54))
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The network source address for this dsmonMatrix entry.
This is represented as an octet string with specific
semantics and length as identified by the dsmonMatrixNLIndex
component of the index.
For example, if the dsmonMatrixNLIndex indicates an
encapsulation of IPv4, this object is encoded as a length
octet of 4, followed by the 4 octets of the IPv4 address, in
network byte order."
::= { dsmonMatrixSDEntry 3 }
Picking up with the destination address, bestie ๐ ๐ฆ
dsmonMatrixDestAddress OBJECT-TYPE
SYNTAX OCTET STRING (SIZE (0..54))
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The network destination address for this dsmonMatrix entry.
This is represented as an octet string with specific
semantics and length as identified by the dsmonMatrixNLIndex
component of the index.
For example, if the dsmonMatrixNLIndex indicates an
encapsulation of IPv4, this object is encoded as a length
octet of 4, followed by the 4 octets of the IPv4 address, in
network byte order."
::= { dsmonMatrixSDEntry 4 }
dsmonMatrixALIndex OBJECT-TYPE
SYNTAX Integer32 (1..2147483647)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The protocolDirLocalIndex value of the protocolDirEntry
representing the specific application layer protocol
associated with each entry.
It MUST identify an protocolDirEntry which is a direct or
indirect descendant of the protocolDirEntry identified by
the associated dsmonMatrixNLIndex object."
::= { dsmonMatrixSDEntry 5 }
dsmonMatrixSDPkts OBJECT-TYPE
SYNTAX ZeroBasedCounter32
UNITS "packets"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of packets of this protocol type (indicated by
the associated dsmonMatrixALIndex object) without errors
transmitted from the source address to the destination
address since this entry was added to the
dsmonMatrixSDTable. Note that this is the number of link-
layer packets, so if a single network-layer packet is
fragmented into several link-layer frames, this counter is
incremented several times."
::= { dsmonMatrixSDEntry 6 }
dsmonMatrixSDOvflPkts OBJECT-TYPE
SYNTAX ZeroBasedCounter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of times the associated dsmonMatrixSDPkts
counter has overflowed, since this entry was added to the
dsmonMatrixSDTable."
::= { dsmonMatrixSDEntry 7 }
dsmonMatrixSDHCPkts OBJECT-TYPE
SYNTAX ZeroBasedCounter64
UNITS "packets"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The 64-bit version of the dsmonMatrixSDPkts object.
Note that this object will only be instantiated if the RMON
agent supports High Capacity monitoring for a particular
dataSource."
::= { dsmonMatrixSDEntry 8 }
dsmonMatrixSDOctets OBJECT-TYPE
SYNTAX ZeroBasedCounter32
UNITS "octets"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of octets in packets of this protocol type
transmitted from the source address to the destination
address since this entry was added to the dsmonMatrixSDTable
(excluding framing bits but including FCS octets), excluding
those octets in packets that contained errors.
Note this doesn't count just those octets in the particular
protocol frames, but includes the entire packet that
contained the protocol."
::= { dsmonMatrixSDEntry 9 }
dsmonMatrixSDOvflOctets OBJECT-TYPE
SYNTAX ZeroBasedCounter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of times the associated dsmonMatrixSDOctets
counter has overflowed, since this entry was added to the
dsmonMatrixSDTable."
::= { dsmonMatrixSDEntry 10 }
dsmonMatrixSDHCOctets OBJECT-TYPE
SYNTAX ZeroBasedCounter64
UNITS "octets"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The 64-bit version of the dsmonMatrixSDPkts object.
Note that this object will only be instantiated if the RMON
agent supports High Capacity monitoring for a particular
dataSource."
::= { dsmonMatrixSDEntry 11 }
dsmonMatrixSDCreateTime OBJECT-TYPE
SYNTAX LastCreateTime
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of sysUpTime when this entry was last activated.
This can be used by the management station to ensure that
the entry has not been deleted and recreated between polls."
::= { dsmonMatrixSDEntry 12 }
--
-- AL Matrix DS Statistics Table
--
Okay, the AL Matrix DS table is up next, and it's giving reordered version of the SD table energy โจ๐ Same index values, just flipped around so you can grab everything for one address super easily ๐ซถ
dsmonMatrixDSTable OBJECT-TYPE
SYNTAX SEQUENCE OF DsmonMatrixDSEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A list of application traffic matrix entries which collect
statistics for conversations of a particular application
protocol between two network-level addresses. This table is
indexed first by the destination address and then by the
source address to make it convenient to collect all
statistics from a particular address.
The probe will add to this table all pairs of addresses for
all protocols seen in all packets with no MAC errors, and
will increment octet and packet counts in the table for all
packets with no MAC errors."
::= { dsmonMatrixObjects 3 }
dsmonMatrixDSEntry OBJECT-TYPE
SYNTAX DsmonMatrixDSEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A conceptual row in the dsmonMatrixDSTable. Note that this
table is conceptually a re-ordered version of the
dsmonMatrixSDTable. Therefore, all of the index values from
that table are used by reference, and their semantics are
exactly as described in the dsmonMatrixSDTable.
The dsmonMatrixCtlIndex value in the index identifies the
dsmonMatrixCtlEntry on whose behalf this entry was created.
The dsmonMatrixTimeMark value in the index identifies the
Time Filter index for this table.
The dsmonAggGroupIndex value in the index is determined by
examining the DSCP value in each monitored packet, and the
dsmonAggProfileTable entry configured for that value.
The dsmonMatrixNLIndex value in the index identifies the
protocolDirLocalIndex value of a protocolDirEntry
representing the specific network layer protocol
encapsulation associated with each entry, and the network
protocol type of the dsmonMatrixSourceAddress and
dsmonMatrixDestAddress objects.
The dsmonMatrixDestAddress value in the index identifies the
network destination address for this dsmonMatrix entry.
The dsmonMatrixSourceAddress value in the index identifies
the network source address for this dsmonMatrix entry.
The dsmonMatrixALIndex value in the index identifies the
protocolDirLocalIndex value of the protocolDirEntry
representing the specific application layer protocol
associated with each entry."
INDEX { dsmonMatrixCtlIndex,
dsmonMatrixTimeMark,
dsmonAggGroupIndex,
dsmonMatrixNLIndex,
dsmonMatrixDestAddress,
dsmonMatrixSourceAddress,
dsmonMatrixALIndex
}
::= { dsmonMatrixDSTable 1 }
DsmonMatrixDSEntry ::= SEQUENCE {
dsmonMatrixDSPkts ZeroBasedCounter32,
dsmonMatrixDSOvflPkts ZeroBasedCounter32,
dsmonMatrixDSHCPkts ZeroBasedCounter64,
dsmonMatrixDSOctets ZeroBasedCounter32,
dsmonMatrixDSOvflOctets ZeroBasedCounter32,
dsmonMatrixDSHCOctets ZeroBasedCounter64,
dsmonMatrixDSCreateTime LastCreateTime
}
dsmonMatrixDSPkts OBJECT-TYPE
SYNTAX ZeroBasedCounter32
UNITS "packets"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of packets of this protocol type (indicated by
the associated dsmonMatrixALIndex object) without errors
transmitted from the source address to the destination
address since this entry was added to the
dsmonMatrixDSTable. Note that this is the number of link-
layer packets, so if a single network-layer packet is
fragmented into several link-layer frames, this counter is
incremented several times."
::= { dsmonMatrixDSEntry 1 }
dsmonMatrixDSOvflPkts OBJECT-TYPE
SYNTAX ZeroBasedCounter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of times the associated dsmonMatrixDSPkts
counter has overflowed, since this entry was added to the
dsmonMatrixDSTable."
::= { dsmonMatrixDSEntry 2 }
dsmonMatrixDSHCPkts OBJECT-TYPE
SYNTAX ZeroBasedCounter64
UNITS "packets"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The 64-bit version of the dsmonMatrixDSPkts object.
Note that this object will only be instantiated if the RMON
agent supports High Capacity monitoring for a particular
dataSource."
::= { dsmonMatrixDSEntry 3 }
dsmonMatrixDSOctets OBJECT-TYPE
SYNTAX ZeroBasedCounter32
UNITS "octets"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of octets in packets of this protocol type
transmitted from the source address to the destination
address since this entry was added to the dsmonMatrixDSTable
(excluding framing bits but including FCS octets), excluding
those octets in packets that contained errors.
Note this doesn't count just those octets in the particular
protocol frames, but includes the entire packet that
contained the protocol."
::= { dsmonMatrixDSEntry 4 }
dsmonMatrixDSOvflOctets OBJECT-TYPE
SYNTAX ZeroBasedCounter32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The number of times the associated dsmonMatrixDSOctets
counter has overflowed, since this entry was added to the
dsmonMatrixDSTable."
::= { dsmonMatrixDSEntry 5 }
dsmonMatrixDSHCOctets OBJECT-TYPE
SYNTAX ZeroBasedCounter64
UNITS "octets"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The 64-bit version of the dsmonMatrixDSPkts object.
Note that this object will only be instantiated if the RMON
agent supports High Capacity monitoring for a particular
dataSource."
::= { dsmonMatrixDSEntry 6 }
dsmonMatrixDSCreateTime OBJECT-TYPE
SYNTAX LastCreateTime
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of sysUpTime when this entry was last activated.
This can be used by the management station to ensure that
the entry has not been deleted and recreated between polls."
::= { dsmonMatrixDSEntry 7 }
--
-- Per-Protocol Per-Matrix Statistics TopN Control Table
--
That's the whole AL Matrix DS stats section, and the next up is the TopN control table ๐๐
Okay bestie, this part is all about the TopN control table ๐ It's the boss that decides which top N report gets made, how big it is, and how long it runs ๐
dsmonMatrixTopNCtlTable OBJECT-TYPE
SYNTAX SEQUENCE OF DsmonMatrixTopNCtlEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A set of parameters that control the creation of a report
of the top N dsmonMatrix entries according to a selected
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]."
::= { dsmonMatrixObjects 4 }
dsmonMatrixTopNCtlEntry OBJECT-TYPE
SYNTAX DsmonMatrixTopNCtlEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A conceptual row in the dsmonMatrixTopNCtlTable.
Entries are created and deleted from this table by
management action only, using the dsmonMatrixTopNCtlStatus
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 dsmonMatrixTopNTable to be created and maintained
by the agent."
INDEX { dsmonMatrixTopNCtlIndex }
::= { dsmonMatrixTopNCtlTable 1 }
DsmonMatrixTopNCtlEntry ::= SEQUENCE {
dsmonMatrixTopNCtlIndex Integer32,
dsmonMatrixTopNCtlMatrixIndex Integer32,
dsmonMatrixTopNCtlRateBase INTEGER,
dsmonMatrixTopNCtlTimeRemaining Integer32,
dsmonMatrixTopNCtlGeneratedRpts Counter32,
dsmonMatrixTopNCtlDuration Integer32,
dsmonMatrixTopNCtlRequestedSize Integer32,
dsmonMatrixTopNCtlGrantedSize Integer32,
dsmonMatrixTopNCtlStartTime TimeStamp,
dsmonMatrixTopNCtlOwner OwnerString,
dsmonMatrixTopNCtlStatus RowStatus
}
dsmonMatrixTopNCtlIndex OBJECT-TYPE
SYNTAX Integer32 (1..65535)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An index that uniquely identifies an entry in the
dsmonMatrixTopNCtlTable. Each such entry defines one Top N
report prepared for one RMON dataSource."
::= { dsmonMatrixTopNCtlEntry 1 }
dsmonMatrixTopNCtlMatrixIndex OBJECT-TYPE
SYNTAX Integer32 (1..65535)
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The dsmonMatrixSDTable for which a top N report will be
prepared on behalf of this entry. The dsmonMatrixSDTable is
identified by the same value of the dsmonMatrixCtlIndex
object.
This object MUST NOT be modified if the associated
dsmonMatrixTopNCtlStatus object is equal to active(1)."
::= { dsmonMatrixTopNCtlEntry 2 }
Ooh, the MUST NOT on the matrix index is a hard no-touch rule while the row is active ๐
โโ๏ธ Next up is the rate base, which decides what the report ranks by ๐
dsmonMatrixTopNCtlRateBase OBJECT-TYPE
SYNTAX INTEGER {
dsmonMatrixTopNPkts(1),
dsmonMatrixTopNOctets(2),
dsmonMatrixTopNHCPkts(3),
dsmonMatrixTopNHCOctets(4)
}
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The variable for each dsmonMatrixSD entry that the
dsmonMatrixTopNRate and dsmonMatrixTopNHCRate variables are
based upon. Each dsmonMatrixTopN report generated on behalf
of this control entry will be ranked in descending order,
based on the associated dsmonMatrixSDTable counter,
identified by this object.
The following table identifies the dsmonMatrixSDTable
counters associated with each enumeration:
Enumeration RateBase MIB Objects
----------- --------------------
dsmonMatrixTopNPkts dsmonMatrixSDPkts
dsmonMatrixTopNOctets dsmonMatrixSDOctets
dsmonMatrixTopNHCPkts dsmonMatrixSDHCPkts
dsmonMatrixTopNHCOctets dsmonMatrixSDHCOctets
The following enumerations are only available if the agent
supports High Capacity monitoring:
dsmonMatrixTopNHCPkts
dsmonMatrixTopNHCOctets
This object MUST NOT be modified if the associated
dsmonMatrixTopNCtlStatus object is equal to active(1)."
::= { dsmonMatrixTopNCtlEntry 3 }
dsmonMatrixTopNCtlTimeRemaining 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 dsmonMatrixTopNCtlDuration object.
When the report finishes, the probe will automatically start
another collection with the same initial value of
dsmonMatrixTopNCtlTimeRemaining. 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 dsmonMatrixTopNTable, overwriting any report that may be
there.
When this object is modified by the management station, any
associated entries in the dsmonMatrixTopNTable shall be
deleted."
DEFVAL { 1800 }
::= { dsmonMatrixTopNCtlEntry 4 }
dsmonMatrixTopNCtlGeneratedRpts OBJECT-TYPE
SYNTAX Counter32
UNITS "reports"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of reports that have been generated by this
entry."
::= { dsmonMatrixTopNCtlEntry 5 }
dsmonMatrixTopNCtlDuration 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 dsmonMatrixTopNCtlTimeRemaining 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
dsmonMatrixTopNCtlTimeRemaining is set.
This value shall be zero if no reports have been requested
for this dsmonMatrixTopNCtlEntry."
::= { dsmonMatrixTopNCtlEntry 6 }
dsmonMatrixTopNCtlRequestedSize OBJECT-TYPE
SYNTAX Integer32 (0..2147483647)
UNITS "table entries"
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The maximum number of dsmonMatrix entries requested for
this report.
When this object is created or modified, the probe SHOULD
set dsmonMatrixTopNCtlGrantedSize as closely to this object
as is possible for the particular probe implementation and
available resources."
DEFVAL { 150 }
::= { dsmonMatrixTopNCtlEntry 7 }
dsmonMatrixTopNCtlGrantedSize OBJECT-TYPE
SYNTAX Integer32 (0..2147483647)
UNITS "table entries"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The maximum number of dsmonMatrix entries in this report.
When the associated dsmonMatrixTopNCtlRequestedSize 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 dsmonMatrixTopNCtlRequestedSize
object.
Protocol entries with the highest value of
dsmonMatrixTopNRate or dsmonMatrixTopNHCRate (depending on
the value of the associated dsmonMatrixTopNCtlRateBase
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 dsmonMatrix entries."
::= { dsmonMatrixTopNCtlEntry 8 }
dsmonMatrixTopNCtlStartTime 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 dsmonMatrixTopNCtlTimeRemaining 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."
::= { dsmonMatrixTopNCtlEntry 9 }
dsmonMatrixTopNCtlOwner 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."
::= { dsmonMatrixTopNCtlEntry 10 }
dsmonMatrixTopNCtlStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The status of this dsmonMatrixTopNCtlEntry.
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 dsmonMatrixTopNTable shall be deleted by the
agent."
::= { dsmonMatrixTopNCtlEntry 11 }
Now we hop over to the dsmonMatrix TopN Table, the place where the actual ranked results live โจ
--
-- dsmonMatrix TopN Table
--
dsmonMatrixTopNTable OBJECT-TYPE
SYNTAX SEQUENCE OF DsmonMatrixTopNEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A set of statistics for those dsmonMatrix 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
dsmonMatrixTopNCtlEntry.
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 dsmonMatrixTopNCtlTable.
Note that dsmonMatrix entries which did not increment at all
during the report interval SHOULD NOT be included in
dsmonMatrixTopN reports."
::= { dsmonMatrixObjects 5 }
dsmonMatrixTopNEntry OBJECT-TYPE
SYNTAX DsmonMatrixTopNEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A conceptual row in the dsmonMatrixTopNTable.
The dsmonMatrixTopNCtlIndex value in the index identifies
the dsmonMatrixTopNCtlEntry 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 { dsmonMatrixTopNCtlIndex, dsmonMatrixTopNIndex }
::= { dsmonMatrixTopNTable 1 }
okay bestie, the whole entry's SEQUENCE is lowkey a whole fashion lineup ๐ โจ Here's the table row layout first:
DsmonMatrixTopNEntry ::= SEQUENCE {
dsmonMatrixTopNIndex Integer32,
dsmonMatrixTopNAggGroup DsmonCounterAggGroupIndex,
dsmonMatrixTopNNLIndex Integer32,
dsmonMatrixTopNSourceAddress OCTET STRING,
dsmonMatrixTopNDestAddress OCTET STRING,
dsmonMatrixTopNALIndex Integer32,
dsmonMatrixTopNPktRate Gauge32,
dsmonMatrixTopNPktRateOvfl Gauge32,
dsmonMatrixTopNHCPktRate CounterBasedGauge64,
dsmonMatrixTopNRevPktRate Gauge32,
dsmonMatrixTopNRevPktRateOvfl Gauge32,
dsmonMatrixTopNHCRevPktRate CounterBasedGauge64,
dsmonMatrixTopNOctetRate Gauge32,
dsmonMatrixTopNOctetRateOvfl Gauge32,
dsmonMatrixTopNHCOctetRate CounterBasedGauge64,
dsmonMatrixTopNRevOctetRate Gauge32,
dsmonMatrixTopNRevOctetRateOvfl Gauge32,
dsmonMatrixTopNHCRevOctetRate CounterBasedGauge64
}
Now the index, the first real object. It's the main character of the row, no cap ๐ฆ
dsmonMatrixTopNIndex OBJECT-TYPE
SYNTAX Integer32 (1..2147483647)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An index that uniquely identifies an entry in the
dsmonMatrixTopNTable among those in the same report. This
index is between 1 and N, where N is the number of entries
in this report."
::= { dsmonMatrixTopNEntry 1 }
dsmonMatrixTopNAggGroup OBJECT-TYPE
SYNTAX DsmonCounterAggGroupIndex
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The counter aggregation group index value associated with
host identified in this entry. This object identifies the
dsmonAggGroupEntry with the same dsmonAggControlIndex value
as the associated dsmonMatrixCtlAggProfile object and the
same dsmonAggGroupIndex value as this object."
::= { dsmonMatrixTopNEntry 2 }
dsmonMatrixTopNNLIndex OBJECT-TYPE
SYNTAX Integer32 (1..2147483647)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The protocolDirLocalIndex value which identifies the
protocol associated with the dsmonMatrixTopNSourceAddress
and dsmonMatrixTopNDestAddress objects in 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
dsmonMatrixTopN entry."
::= { dsmonMatrixTopNEntry 3 }
dsmonMatrixTopNSourceAddress OBJECT-TYPE
SYNTAX OCTET STRING
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The dsmonMatrixSDSourceAddress value for the source network
host identified in this entry. The associated
dsmonMatrixTopNNLIndex object identifies the network
protocol type and the encoding rules for this object."
::= { dsmonMatrixTopNEntry 4 }
dsmonMatrixTopNDestAddress OBJECT-TYPE
SYNTAX OCTET STRING
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The dsmonMatrixSDDestAddress value for the destination
network host identified in this entry. The associated
dsmonMatrixTopNNLIndex object identifies the network
protocol type and the encoding rules for this object."
::= { dsmonMatrixTopNEntry 5 }
dsmonMatrixTopNALIndex OBJECT-TYPE
SYNTAX Integer32 (1..2147483647)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The protocolDirLocalIndex value which identifies the
application 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
dsmonMatrixTopN entry."
::= { dsmonMatrixTopNEntry 6 }
Now the packet rate objects. Pay attention to the fine print, it's where the drama lives ๐๐ซถ
dsmonMatrixTopNPktRate OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of packets seen of this protocol from the source
host to the destination host during this sampling interval,
counted using the rules for counting the dsmonMatrixSDPkts
object.
If the value of dsmonMatrixTopNCtlRateBase is
dsmonMatrixTopNPkts, this variable will be used to sort this
report.
If the value of the dsmonMatrixTopNCtlRateBase is
dsmonMatrixTopNHCPkts or dsmonMatrixTopNHCOctets, then this
object will contain the the least significant 32 bits of the
associated dsmonMatrixTopNHCPktRate object."
::= { dsmonMatrixTopNEntry 7 }
dsmonMatrixTopNPktRateOvfl OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The most significant 32 bits of the associated
dsmonMatrixTopNHCPktRate object.
If the associated dsmonMatrixTopNCtlRateBase is equal to
dsmonMatrixTopNHCPkts or dsmonMatrixTopNHCOctets, then this
object will contain the most significant 32 bits of the
associated dsmonMatrixTopNHCPktRate object, otherwise this
object will contain the value zero.
The agent MAY choose not to instantiate this object if High
Capacity monitoring is not supported."
::= { dsmonMatrixTopNEntry 8 }
dsmonMatrixTopNHCPktRate OBJECT-TYPE
SYNTAX CounterBasedGauge64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of packets seen of this protocol from the source
host to the destination host during this sampling interval,
counted using the rules for counting the dsmonMatrixSDHCPkts
object.
If the value of dsmonMatrixTopNCtlRateBase is
dsmonMatrixTopNHCPkts, this variable will be used to sort
this report.
The agent MAY choose not to instantiate this object if High
Capacity monitoring is not supported."
::= { dsmonMatrixTopNEntry 9 }
dsmonMatrixTopNRevPktRate OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of packets seen of this protocol from the
destination host to the source host during this sampling
interval, counted using the rules for counting the
dsmonMatrixDSPkts object (note that the corresponding
dsmonMatrixSDPkts object selected is the one whose source
address is equal to dsmonMatrixTopNDestAddress and whose
destination address is equal to
dsmonMatrixTopNSourceAddress.)"
::= { dsmonMatrixTopNEntry 10 }
dsmonMatrixTopNRevPktRateOvfl OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The most significant 32 bits of the associated
dsmonMatrixTopNHCRevPktRate object.
If the associated dsmonMatrixTopNCtlRateBase is equal to
dsmonMatrixTopNHCPkts or dsmonMatrixTopNHCOCtets, then this
object will contain the most significant 32 bits of the
associated dsmonMatrixTopNHCRevPktRate object, otherwise
this object will contain the value zero.
The agent MAY choose not to instantiate this object if High
Capacity monitoring is not supported."
::= { dsmonMatrixTopNEntry 11 }
dsmonMatrixTopNHCRevPktRate OBJECT-TYPE
SYNTAX CounterBasedGauge64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of packets seen of this protocol from the
destination host to the source host during this sampling
interval, counted using the rules for counting the
dsmonMatrixDSHCPkts object (note that the corresponding
dsmonMatrixSDHCPkts object selected is the one whose source
address is equal to dsmonMatrixTopNDestAddress and whose
destination address is equal to
dsmonMatrixTopNSourceAddress.)
The agent MAY choose not to instantiate this object if High
Capacity monitoring is not supported."
::= { dsmonMatrixTopNEntry 12 }
And now the octet rate objects, which are basically the same energy but with bytes ๐๐
dsmonMatrixTopNOctetRate OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of octets seen of this protocol from the source
host to the destination host during this sampling interval,
counted using the rules for counting the dsmonMatrixSDOctets
object.
If the value of dsmonMatrixTopNCtlRateBase is
dsmonMatrixTopNOctets, this variable will be used to sort
this report.
If the value of the dsmonMatrixTopNCtlRateBase is
dsmonMatrixTopNHCPkts or dsmonMatrixTopNHCOctets, then this
object will contain the the least significant 32 bits of the
associated dsmonMatrixTopNHCPktRate object."
::= { dsmonMatrixTopNEntry 13 }
dsmonMatrixTopNOctetRateOvfl OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The most significant 32 bits of the associated
dsmonMatrixTopNHCOctetRate object.
If the associated dsmonMatrixTopNCtlRateBase is equal to
dsmonMatrixTopNHCPkts or dsmonMatrixTopNHCOctets, then this
object will contain the most significant 32 bits of the
associated dsmonMatrixTopNHCOctetRate object, otherwise this
object will contain the value zero.
The agent MAY choose not to instantiate this object if High
Capacity monitoring is not supported."
::= { dsmonMatrixTopNEntry 14 }
dsmonMatrixTopNHCOctetRate OBJECT-TYPE
SYNTAX CounterBasedGauge64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of octets seen of this protocol from the source
host to the destination host during this sampling interval,
counted using the rules for counting the
dsmonMatrixSDHCOctets object.
If the value of dsmonMatrixTopNCtlRateBase is
dsmonMatrixTopNHCOctets, this variable will be used to sort
this report.
The agent MAY choose not to instantiate this object if High
Capacity monitoring is not supported."
::= { dsmonMatrixTopNEntry 15 }
dsmonMatrixTopNRevOctetRate OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of octets seen of this protocol from the
destination host to the source host during this sampling
interval, counted using the rules for counting the
dsmonMatrixDSOctets object (note that the corresponding
dsmonMatrixSDOctets object selected is the one whose source
address is equal to dsmonMatrixTopNDestAddress and whose
destination address is equal to
dsmonMatrixTopNSourceAddress.)"
::= { dsmonMatrixTopNEntry 16 }
dsmonMatrixTopNRevOctetRateOvfl OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The most significant 32 bits of the associated
dsmonMatrixTopNHCRevOctetRate object.
If the associated dsmonMatrixTopNCtlRateBase is equal to
dsmonMatrixTopNHCPkts or dsmonMatrixTopNHCOCtets, then this
object will contain the most significant 32 bits of the
associated dsmonMatrixTopNHCRevPktRate object, otherwise
this object will contain the value zero.
The agent MAY choose not to instantiate this object if High
Capacity monitoring is not supported."
::= { dsmonMatrixTopNEntry 17 }
okay so the last TopN object is dsmonMatrixTopNHCRevOctetRate ๐
It counts octets flowing back from destination to source, and the MAY in the description is what lets an agent skip it when High Capacity monitoring isn't supported ๐ฆ
dsmonMatrixTopNHCRevOctetRate OBJECT-TYPE
SYNTAX CounterBasedGauge64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of octets seen of this protocol from the
destination host to the source host during this sampling
interval, counted using the rules for counting the
dsmonMatrixDSHCOctets object (note that the corresponding
dsmonMatrixSDHCOctets object selected is the one whose
source address is equal to dsmonMatrixTopNDestAddress and
whose destination address is equal to
dsmonMatrixTopNSourceAddress.)
The agent MAY choose not to instantiate this object if High
Capacity monitoring is not supported."
::= { dsmonMatrixTopNEntry 18 }
--
-- Conformance Section
--
dsmonCompliances OBJECT IDENTIFIER ::= { dsmonConformance 1 }
dsmonGroups OBJECT IDENTIFIER ::= { dsmonConformance 2 }
--
-- Compliance for agents that do not support HC or Counter64
--
dsmonCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"Describes the requirements for conformance to the
Differentiated Services Monitoring MIB."
MODULE -- this module
MANDATORY-GROUPS {
dsmonCounterAggControlGroup,
dsmonStatsGroup,
dsmonCapsGroup
}
GROUP dsmonStatsHCGroup
DESCRIPTION
"The dsmonStatsHCGroup is mandatory for systems which
implement High Capacity monitoring."
GROUP dsmonPdistGroup
DESCRIPTION
"The dsmonPdistGroup is mandatory for systems which
implement RMON-2 protocolDirTable based protocol
distribution monitoring."
GROUP dsmonPdistHCGroup
DESCRIPTION
"The dsmonPdistHCGroup is mandatory for systems which
implement RMON-2 protocolDirTable based protocol
distribution monitoring on high capacity interfaces."
GROUP dsmonHostGroup
DESCRIPTION
"The dsmonHostGroup is mandatory for systems which implement
RMON-2 nlHostTable based network protocol monitoring."
GROUP dsmonHostHCGroup
DESCRIPTION
"The dsmonHostHCGroup is mandatory for systems which
implement RMON-2 nlHostTable based network protocol
monitoring, on high capacity interfaces."
GROUP dsmonMatrixGroup
DESCRIPTION
"The dsmonMatrixGroup is mandatory for systems which
implement RMON-2 alMatrix based application protocol
monitoring."
GROUP dsmonMatrixHCGroup
DESCRIPTION
"The dsmonMatrixHCGroup is mandatory for systems which
implement RMON-2 alMatrix based application protocol
monitoring, on high capacity interfaces."
::= { dsmonCompliances 1 }
--
-- Compliance for agents that support HC and Counter64
--
dsmonHCCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"Describes the requirements for conformance to the
Differentiated Services Monitoring MIB for agents which also
support High Capacity monitoring and the Counter64 data
type."
MODULE -- this module
MANDATORY-GROUPS {
dsmonCounterAggControlGroup,
dsmonStatsGroup,
dsmonStatsHCGroup,
dsmonCapsGroup
}
GROUP dsmonPdistGroup
DESCRIPTION
"The dsmonPdistGroup is mandatory for systems which
implement RMON-2 protocolDirTable based protocol
distribution monitoring."
GROUP dsmonPdistHCGroup
DESCRIPTION
"The dsmonPdistHCGroup is mandatory for systems which
implement RMON-2 protocolDirTable based protocol
distribution monitoring."
GROUP dsmonHostGroup
DESCRIPTION
"The dsmonHostGroup is mandatory for systems which implement
RMON-2 nlHostTable based network protocol monitoring."
GROUP dsmonHostHCGroup
DESCRIPTION
"The dsmonHostHCGroup is mandatory for systems which
implement RMON-2 nlHostTable based network protocol
monitoring."
GROUP dsmonMatrixGroup
DESCRIPTION
"The dsmonMatrixGroup is mandatory for systems which
implement RMON-2 alMatrix based application protocol
monitoring."
GROUP dsmonMatrixHCGroup
DESCRIPTION
"The dsmonMatrixHCGroup is mandatory for systems which
implement RMON-2 alMatrix based application protocol
monitoring."
::= { dsmonCompliances 2 }
--
-- Compliance for agents that support HC, but not Counter64
--
dsmonHCNoC64Compliance MODULE-COMPLIANCE
STATUS deprecated
DESCRIPTION
"Describes the requirements for conformance to the
Differentiated Services Monitoring MIB for an agent which
supports high capacity monitoring, but does not support the
Counter64 data type (e.g., only supports the SNMPv1
protocol)."
MODULE -- this module
MANDATORY-GROUPS {
dsmonCounterAggControlGroup,
dsmonStatsGroup,
dsmonStatsOvflGroup,
dsmonCapsGroup
}
GROUP dsmonStatsHCGroup
DESCRIPTION
"Implementation of the dsmonStatsHCGroup is not required.
High Capacity monitoring."
GROUP dsmonPdistGroup
DESCRIPTION
"The dsmonPdistGroup is mandatory for systems which
implement RMON-2 protocolDirTable based protocol
distribution monitoring."
GROUP dsmonPdistOvflGroup
DESCRIPTION
"The dsmonPdistGroup is mandatory for systems which
implement RMON-2 protocolDirTable based protocol
distribution monitoring."
GROUP dsmonPdistHCGroup
DESCRIPTION
"Implementation of the dsmonPdistHCGroup is not required."
GROUP dsmonHostGroup
DESCRIPTION
"The dsmonHostGroup is mandatory for systems which implement
RMON-2 nlHostTable based network protocol monitoring."
GROUP dsmonHostOvflGroup
DESCRIPTION
"The dsmonHostGroup is mandatory for systems which implement
RMON-2 nlHostTable based network protocol monitoring."
GROUP dsmonHostHCGroup
DESCRIPTION
"Implementation of the dsmonHostHCGroup is not required."
GROUP dsmonMatrixGroup
DESCRIPTION
"The dsmonMatrixGroup is mandatory for systems which
implement RMON-2 alMatrix based application protocol
monitoring."
GROUP dsmonMatrixOvflGroup
DESCRIPTION
"The dsmonMatrixGroup is mandatory for systems which
implement RMON-2 alMatrix based application protocol
monitoring."
GROUP dsmonMatrixHCGroup
DESCRIPTION
"Implementation of the dsmonMatrixHCGroup is not required."
::= { dsmonCompliances 3 }
-- Object Groups
dsmonCounterAggControlGroup OBJECT-GROUP
OBJECTS {
dsmonMaxAggGroups,
dsmonAggControlLocked,
dsmonAggControlChanges,
dsmonAggControlLastChangeTime,
dsmonAggControlDescr,
dsmonAggControlOwner,
dsmonAggControlStatus,
dsmonAggGroupIndex,
dsmonAggGroupDescr,
dsmonAggGroupStatus
}
STATUS current
DESCRIPTION
"A collection of objects used to configure and manage
counter aggregation groups for DSMON collection purposes."
::= { dsmonGroups 1 }
dsmonStatsGroup OBJECT-GROUP
OBJECTS {
dsmonStatsControlDataSource,
dsmonStatsControlAggProfile,
dsmonStatsControlDroppedFrames,
dsmonStatsControlCreateTime,
dsmonStatsControlOwner,
dsmonStatsControlStatus,
dsmonStatsInPkts,
dsmonStatsInOctets,
dsmonStatsOutPkts,
dsmonStatsOutOctets
}
STATUS current
DESCRIPTION
"A collection of objects providing per DSCP statistics."
::= { dsmonGroups 2 }
dsmonStatsOvflGroup OBJECT-GROUP
OBJECTS {
dsmonStatsInOvflPkts,
dsmonStatsInOvflOctets,
dsmonStatsOutOvflPkts,
dsmonStatsOutOvflOctets
}
STATUS deprecated
DESCRIPTION
"A collection of objects providing per-DSCP overflow
counters for systems with high capacity data sources, but
without support for the Counter64 data type."
::= { dsmonGroups 3 }
dsmonStatsHCGroup OBJECT-GROUP
OBJECTS {
dsmonStatsInHCPkts,
dsmonStatsInHCOctets,
dsmonStatsOutHCPkts,
dsmonStatsOutHCOctets
}
STATUS current
DESCRIPTION
"A collection of objects providing per DSCP statistics for
high capacity data sources."
::= { dsmonGroups 4 }
dsmonPdistGroup OBJECT-GROUP
OBJECTS {
dsmonPdistCtlDataSource,
dsmonPdistCtlAggProfile,
dsmonPdistCtlMaxDesiredEntries,
dsmonPdistCtlDroppedFrames,
dsmonPdistCtlInserts,
dsmonPdistCtlDeletes,
dsmonPdistCtlCreateTime,
dsmonPdistCtlOwner,
dsmonPdistCtlStatus,
dsmonPdistStatsPkts,
dsmonPdistStatsOctets,
dsmonPdistStatsCreateTime,
dsmonPdistTopNCtlPdistIndex,
dsmonPdistTopNCtlRateBase,
dsmonPdistTopNCtlTimeRemaining,
dsmonPdistTopNCtlGeneratedReprts,
dsmonPdistTopNCtlDuration,
dsmonPdistTopNCtlRequestedSize,
dsmonPdistTopNCtlGrantedSize,
dsmonPdistTopNCtlStartTime,
dsmonPdistTopNCtlOwner,
dsmonPdistTopNCtlStatus,
dsmonPdistTopNPDLocalIndex,
dsmonPdistTopNAggGroup,
dsmonPdistTopNRate
}
STATUS current
DESCRIPTION
"A collection of objects providing per protocol DSCP
monitoring extensions to the RMON-2 MIB."
::= { dsmonGroups 5 }
dsmonPdistOvflGroup OBJECT-GROUP
OBJECTS {
dsmonPdistStatsOvflPkts,
dsmonPdistStatsOvflOctets,
dsmonPdistTopNRateOvfl
}
STATUS deprecated
DESCRIPTION
"A collection of objects providing per-protocol DSCP
overflow counters for systems with high capacity data
sources, but without support for the Counter64 data type."
::= { dsmonGroups 6 }
dsmonPdistHCGroup OBJECT-GROUP
OBJECTS {
dsmonPdistStatsHCPkts,
dsmonPdistStatsHCOctets,
dsmonPdistTopNHCRate
}
STATUS current
DESCRIPTION
"A collection of objects providing per protocol DSCP
monitoring extensions to the RMON-2 MIB for High Capacity
networks."
::= { dsmonGroups 7 }
dsmonHostGroup OBJECT-GROUP
OBJECTS {
dsmonHostCtlDataSource,
dsmonHostCtlAggProfile,
dsmonHostCtlMaxDesiredEntries,
dsmonHostCtlIPv4PrefixLen,
dsmonHostCtlIPv6PrefixLen,
dsmonHostCtlDroppedFrames,
dsmonHostCtlInserts,
dsmonHostCtlDeletes,
dsmonHostCtlCreateTime,
dsmonHostCtlOwner,
dsmonHostCtlStatus,
dsmonHostInPkts,
dsmonHostInOctets,
dsmonHostOutPkts,
dsmonHostOutOctets,
dsmonHostCreateTime,
dsmonHostTopNCtlHostIndex,
dsmonHostTopNCtlRateBase,
dsmonHostTopNCtlTimeRemaining,
dsmonHostTopNCtlGeneratedReports,
dsmonHostTopNCtlDuration,
dsmonHostTopNCtlRequestedSize,
dsmonHostTopNCtlGrantedSize,
dsmonHostTopNCtlStartTime,
dsmonHostTopNCtlOwner,
dsmonHostTopNCtlStatus,
dsmonHostTopNPDLocalIndex,
dsmonHostTopNAddress,
dsmonHostTopNAggGroup,
dsmonHostTopNRate
}
STATUS current
DESCRIPTION
"A collection of objects providing per Host monitoring
functions."
::= { dsmonGroups 8 }
dsmonHostOvflGroup OBJECT-GROUP
OBJECTS {
dsmonHostInOvflPkts,
dsmonHostInOvflOctets,
dsmonHostOutOvflPkts,
dsmonHostOutOvflOctets,
dsmonHostTopNRateOvfl
}
STATUS deprecated
DESCRIPTION
"A collection of objects providing per host DSCP overflow
counters for systems with high capacity data sources, but
without support for the Counter64 data type."
::= { dsmonGroups 9 }
dsmonHostHCGroup OBJECT-GROUP
OBJECTS {
dsmonHostInHCPkts,
dsmonHostInHCOctets,
dsmonHostOutHCPkts,
dsmonHostOutHCOctets,
dsmonHostTopNHCRate
}
STATUS current
DESCRIPTION
"A collection of objects providing per Host monitoring
functions for High Capacity networks."
::= { dsmonGroups 10 }
dsmonCapsGroup OBJECT-GROUP
OBJECTS {
dsmonCapabilities
}
STATUS current
DESCRIPTION
"A collection of objects providing an indication of the
DSMON monitoring functions supported by the agent."
::= { dsmonGroups 11 }
dsmonMatrixGroup OBJECT-GROUP
OBJECTS {
dsmonMatrixCtlDataSource,
dsmonMatrixCtlAggProfile,
dsmonMatrixCtlMaxDesiredEntries,
dsmonMatrixCtlDroppedFrames,
dsmonMatrixCtlInserts,
dsmonMatrixCtlDeletes,
dsmonMatrixCtlCreateTime,
dsmonMatrixCtlOwner,
dsmonMatrixCtlStatus,
dsmonMatrixSDPkts,
dsmonMatrixSDOctets,
dsmonMatrixSDCreateTime,
dsmonMatrixDSPkts,
dsmonMatrixDSOctets,
dsmonMatrixDSCreateTime,
dsmonMatrixTopNCtlMatrixIndex,
dsmonMatrixTopNCtlRateBase,
dsmonMatrixTopNCtlTimeRemaining,
dsmonMatrixTopNCtlGeneratedRpts,
dsmonMatrixTopNCtlDuration,
dsmonMatrixTopNCtlRequestedSize,
dsmonMatrixTopNCtlGrantedSize,
dsmonMatrixTopNCtlStartTime,
dsmonMatrixTopNCtlOwner,
dsmonMatrixTopNCtlStatus,
dsmonMatrixTopNAggGroup,
dsmonMatrixTopNNLIndex,
dsmonMatrixTopNSourceAddress,
dsmonMatrixTopNDestAddress,
dsmonMatrixTopNALIndex,
dsmonMatrixTopNPktRate,
dsmonMatrixTopNRevPktRate,
dsmonMatrixTopNOctetRate,
dsmonMatrixTopNRevOctetRate
}
STATUS current
DESCRIPTION
"A collection of objects providing per conversation
monitoring functions."
::= { dsmonGroups 12 }
dsmonMatrixOvflGroup OBJECT-GROUP
OBJECTS {
dsmonMatrixSDOvflPkts,
dsmonMatrixSDOvflOctets,
dsmonMatrixDSOvflPkts,
dsmonMatrixDSOvflOctets,
dsmonMatrixTopNPktRateOvfl,
dsmonMatrixTopNRevPktRateOvfl,
dsmonMatrixTopNOctetRateOvfl,
dsmonMatrixTopNRevOctetRateOvfl
}
STATUS deprecated
DESCRIPTION
"A collection of objects providing per conversation
monitoring functions for systems with high capacity data
sources, but without support for the Counter64 data type."
::= { dsmonGroups 13 }
dsmonMatrixHCGroup OBJECT-GROUP
OBJECTS {
dsmonMatrixSDHCPkts,
dsmonMatrixSDHCOctets,
dsmonMatrixDSHCPkts,
dsmonMatrixDSHCOctets,
dsmonMatrixTopNHCPktRate,
dsmonMatrixTopNHCRevPktRate,
dsmonMatrixTopNHCOctetRate,
dsmonMatrixTopNHCRevOctetRate
}
STATUS current
DESCRIPTION
"A collection of objects providing per conversation
monitoring functions for High Capacity networks."
::= { dsmonGroups 14 }
END
5. Counter Aggregation Configuration Usage Examples โจ
okay bestie, this section is a little walkthrough of the steps a management station might take to set up the objects in the dsmonCounterAggControlGroup ๐ซถ it's giving "how to build your dream config, step by step" ๐
quick vibe check before we start, these examples are NOT a standard, so don't treat them like one ๐ ๐ฆ
- they do not define a standard
- an agent is not obligated to support them
- a management application is not constrained by them
- the SET(object = value [, ...]) notation is only conceptual, and is not meant to represent an actual SNMP Set PDU.
5.1. Step 1: Unlock the Counter Aggregation Configuration ๐
first things first, bestie: before you can do any writes to the tabular objects in this group, you gotta unlock the counter aggregation configuration by setting the dsmonAggControlLocked scalar to false ๐๏ธ
SET(dsmonAggControlLocked.0 = false(2));
5.2. Step 2: Check the Maximum number of Counter Aggregation Groups ๐
make sure your desired counter aggregation groups actually have a shot at getting configured on the agent ๐
maxGroups = GET(dsmonAggMaxAggGroups.0);
for this example, maxGroups is greater or equal to 64 โจ
5.3. Step 3: Check if the counter aggregation profiles already exist ๐
double check that your desired counter aggregation profiles haven't already been configured, or maybe got recreated after an agent restart ๐ this example is kinda oversimplified (ngl), because the entire counter aggregation configuration should really be verified ๐
profile1Descr = GET(dsmonAggControlDescr.1);
profile1Owner = GET(dsmonAggControlOwner.1);
profile1Status = GET(dsmonAggControlStatus.1);
for this example, none of the counter aggregation profiles already exist ๐ง
5.4. Step 4: Create the Counter Aggregation Control Entries ๐ธ
the management station should create one entry in the dsmonAggControlTable for each counter aggregation profile you want configured on the agent ๐
steps 4, 5, and 6 get repeated for each counter aggregation profile to be configured on the agent, so it's a whole loop situation ๐ there are 3 example counter aggregation profiles shown in each of these steps, and they're all giving main character energy ๐
Example 1: Each DSCP in its own counter aggregation group.
SET(dsmonAggControlStatus.1 = createAndGo(4),
dsmonAggControlOwner.1 = "Example App 1",
dsmonAggControlDescr.1 = "1 DSCP Per Group");
Example 2: a collection of DIFFSERV PHBs.
SET(dsmonAggControlStatus.2 = createAndGo(4),
dsmonAggControlOwner.2 = "Example App 2",
dsmonAggControlDescr.2 = "June 2000 DIFFSERV PHBs");
Example 3: an aggregated collection of DIFFSERV PHBs.
SET(dsmonAggControlStatus.3 = createAndGo(4),
dsmonAggControlOwner.3 = "Example App 3",
dsmonAggControlDescr.3 = "Limited June 2000 PHBs");
5.5. Step 5: Create the Counter Aggregation Group Descriptions ๐
okay this is where it gets SO satisfying ๐ฅน
Example 1: Each DSCP in its own counter aggregation group. one group gets created for each codepoint, so that's a total of 64 rows. literally 64 ๐คฏ
SET(dsmonAggGroupStatus.1.0 = createAndGo(4),
dsmonAggGroupDescr.1.0 = "DSCP 0");
SET(dsmonAggGroupStatus.1.1 = createAndGo(4),
dsmonAggGroupDescr.1.1 = "DSCP 1");
SET(dsmonAggGroupStatus.1.2 = createAndGo(4),
dsmonAggGroupDescr.1.2 = "DSCP 2");
SET(dsmonAggGroupStatus.1.3 = createAndGo(4),
dsmonAggGroupDescr.1.3 = "DSCP 3");
...
SET(dsmonAggGroupStatus.1.63 = createAndGo(4),
dsmonAggGroupDescr.1.63 = "DSCP 63");
Example 2: a collection of current DIFFSERV PHBs. one group gets created for each PHB you want to monitor ๐
SET(dsmonAggGroupStatus.2.0 = createAndGo(4),
dsmonAggGroupDescr.2.0 = "CS0");
SET(dsmonAggGroupStatus.2.1 = createAndGo(4),
dsmonAggGroupDescr.2.1 = "CS1");
SET(dsmonAggGroupStatus.2.2 = createAndGo(4),
dsmonAggGroupDescr.2.2 = "CS2");
SET(dsmonAggGroupStatus.2.3 = createAndGo(4),
dsmonAggGroupDescr.2.3 = "CS3");
SET(dsmonAggGroupStatus.2.4 = createAndGo(4),
dsmonAggGroupDescr.2.4 = "CS4");
SET(dsmonAggGroupStatus.2.5 = createAndGo(4),
dsmonAggGroupDescr.2.5 = "CS5");
SET(dsmonAggGroupStatus.2.6 = createAndGo(4),
dsmonAggGroupDescr.2.6 = "CS6");
SET(dsmonAggGroupStatus.2.7 = createAndGo(4),
dsmonAggGroupDescr.2.7 = "CS7");
SET(dsmonAggGroupStatus.2.8 = createAndGo(4),
dsmonAggGroupDescr.2.8 = "EF");
SET(dsmonAggGroupStatus.2.9 = createAndGo(4),
dsmonAggGroupDescr.2.9 = "AF11");
SET(dsmonAggGroupStatus.2.10 = createAndGo(4),
dsmonAggGroupDescr.2.10 = "AF12");
SET(dsmonAggGroupStatus.2.11 = createAndGo(4),
dsmonAggGroupDescr.2.11 = "AF13");
SET(dsmonAggGroupStatus.2.12 = createAndGo(4),
dsmonAggGroupDescr.2.12 = "AF21");
SET(dsmonAggGroupStatus.2.13 = createAndGo(4),
dsmonAggGroupDescr.2.13 = "AF22");
SET(dsmonAggGroupStatus.2.14 = createAndGo(4),
dsmonAggGroupDescr.2.14 = "AF23");
SET(dsmonAggGroupStatus.2.15 = createAndGo(4),
dsmonAggGroupDescr.2.15 = "AF31");
SET(dsmonAggGroupStatus.2.16 = createAndGo(4),
dsmonAggGroupDescr.2.16 = "AF32");
SET(dsmonAggGroupStatus.2.17 = createAndGo(4),
dsmonAggGroupDescr.2.17 = "AF33");
SET(dsmonAggGroupStatus.2.18 = createAndGo(4),
dsmonAggGroupDescr.2.18 = "AF41");
SET(dsmonAggGroupStatus.2.19 = createAndGo(4),
dsmonAggGroupDescr.2.19 = "AF42");
SET(dsmonAggGroupStatus.2.20 = createAndGo(4),
dsmonAggGroupDescr.2.20 = "AF43");
SET(dsmonAggGroupStatus.2.21 = createAndGo(4),
dsmonAggGroupDescr.2.21 = "Nonzero Default");
Example 3: an aggregated representation of current DIFFSERV PHBs. one group gets created for each counter aggregation you want to monitor, and in this example that's 8 rows total โจ
SET(dsmonAggGroupStatus.3.0 = createAndGo(4),
dsmonAggGroupDescr.3.0 = "Zero CS");
SET(dsmonAggGroupStatus.3.1 = createAndGo(4),
dsmonAggGroupDescr.3.1 = "Nonzero CS");
SET(dsmonAggGroupStatus.3.2 = createAndGo(4),
dsmonAggGroupDescr.3.2 = "EF");
SET(dsmonAggGroupStatus.3.3 = createAndGo(4),
dsmonAggGroupDescr.3.3 = "AF1");
SET(dsmonAggGroupStatus.3.4 = createAndGo(4),
dsmonAggGroupDescr.3.4 = "AF2");
SET(dsmonAggGroupStatus.3.5 = createAndGo(4),
dsmonAggGroupDescr.3.5 = "AF3");
SET(dsmonAggGroupStatus.3.6 = createAndGo(4),
dsmonAggGroupDescr.3.6 = "AF4");
SET(dsmonAggGroupStatus.3.7 = createAndGo(4),
dsmonAggGroupDescr.3.7 = "Nonzero Default");
5.6. Step 6: Create the Counter Aggregation Profile Mappings โจ
okay so once the dsmonAggControlEntries are activated, the read-write dsmonAggProfileEntries get created ๐ธ the management station must create 64 entries in the dsmonAggProfileTable for each counter aggregation profile configured in the dsmonAggControlTable ๐
Example 1: Each DSCP in its own counter aggregation group ๐
SET(dsmonAggGroupIndex.1.0 = 0,
dsmonAggGroupIndex.1.1 = 1,
dsmonAggGroupIndex.1.2 = 2,
dsmonAggGroupIndex.1.3 = 3,
...
dsmonAggGroupIndex.1.63 = 63);
Example 2: a collection of current DIFFSERV PHBs. ๐ฆ
SET(dsmonAggGroupIndex.2.0 = 0, -- CS0
dsmonAggGroupIndex.2.1 = 21, -- Nonzero Default
dsmonAggGroupIndex.2.2 = 21,
dsmonAggGroupIndex.2.3 = 21,
dsmonAggGroupIndex.2.4 = 21,
dsmonAggGroupIndex.2.5 = 21,
dsmonAggGroupIndex.2.6 = 21,
dsmonAggGroupIndex.2.7 = 21,
dsmonAggGroupIndex.2.8 = 1, -- CS1
dsmonAggGroupIndex.2.9 = 21,
dsmonAggGroupIndex.2.10 = 9, -- AF11
dsmonAggGroupIndex.2.11 = 21,
dsmonAggGroupIndex.2.12 = 10, -- AF12
dsmonAggGroupIndex.2.13 = 21,
dsmonAggGroupIndex.2.14 = 11, -- AF13
dsmonAggGroupIndex.2.15 = 21,
dsmonAggGroupIndex.2.16 = 2, -- CS2
dsmonAggGroupIndex.2.17 = 21,
dsmonAggGroupIndex.2.18 = 12, -- AF21
dsmonAggGroupIndex.2.19 = 21,
dsmonAggGroupIndex.2.20 = 13, -- AF22
dsmonAggGroupIndex.2.21 = 21,
dsmonAggGroupIndex.2.22 = 14, -- AF23
dsmonAggGroupIndex.2.23 = 21,
dsmonAggGroupIndex.2.24 = 3, -- CS3
dsmonAggGroupIndex.2.25 = 21,
dsmonAggGroupIndex.2.26 = 15, -- AF31
dsmonAggGroupIndex.2.27 = 21,
dsmonAggGroupIndex.2.28 = 16, -- AF32
dsmonAggGroupIndex.2.29 = 8, -- EF
dsmonAggGroupIndex.2.30 = 17, -- AF33
dsmonAggGroupIndex.2.31 = 21,
dsmonAggGroupIndex.2.32 = 4, -- CS4
dsmonAggGroupIndex.2.33 = 21,
dsmonAggGroupIndex.2.34 = 18, -- AF41
dsmonAggGroupIndex.2.35 = 21,
dsmonAggGroupIndex.2.36 = 19, -- AF42
dsmonAggGroupIndex.2.37 = 21,
dsmonAggGroupIndex.2.38 = 20, -- AF43
dsmonAggGroupIndex.2.39 = 21,
dsmonAggGroupIndex.2.40 = 5, -- CS5
dsmonAggGroupIndex.2.41 = 21,
dsmonAggGroupIndex.2.42 = 21,
dsmonAggGroupIndex.2.43 = 21,
dsmonAggGroupIndex.2.44 = 21,
dsmonAggGroupIndex.2.45 = 21,
dsmonAggGroupIndex.2.46 = 21,
dsmonAggGroupIndex.2.47 = 21,
dsmonAggGroupIndex.2.48 = 6, -- CS6
dsmonAggGroupIndex.2.49 = 21,
dsmonAggGroupIndex.2.50 = 21,
dsmonAggGroupIndex.2.51 = 21,
dsmonAggGroupIndex.2.52 = 21,
dsmonAggGroupIndex.2.53 = 21,
dsmonAggGroupIndex.2.54 = 21,
dsmonAggGroupIndex.2.55 = 21,
dsmonAggGroupIndex.2.56 = 7, -- CS7
dsmonAggGroupIndex.2.57 = 21,
dsmonAggGroupIndex.2.58 = 21,
dsmonAggGroupIndex.2.59 = 21,
dsmonAggGroupIndex.2.60 = 21,
dsmonAggGroupIndex.2.61 = 21,
dsmonAggGroupIndex.2.62 = 21,
dsmonAggGroupIndex.2.63 = 21);
Example 3: an aggregated collection of current DIFFSERV PHBs. ๐ง
SET(dsmonAggGroupIndex.3.0 = 0, -- Zero CS
dsmonAggGroupIndex.3.1 = 7, -- Nonzero Default
dsmonAggGroupIndex.3.2 = 7,
dsmonAggGroupIndex.3.3 = 7,
dsmonAggGroupIndex.3.4 = 7,
dsmonAggGroupIndex.3.5 = 7,
dsmonAggGroupIndex.3.6 = 7,
dsmonAggGroupIndex.3.7 = 7,
dsmonAggGroupIndex.3.8 = 1, -- Nonzero CS
dsmonAggGroupIndex.3.9 = 7,
dsmonAggGroupIndex.3.10 = 3, -- AF1
dsmonAggGroupIndex.3.11 = 7,
dsmonAggGroupIndex.3.12 = 3,
dsmonAggGroupIndex.3.13 = 7,
dsmonAggGroupIndex.3.14 = 3,
dsmonAggGroupIndex.3.15 = 7,
dsmonAggGroupIndex.3.16 = 1,
dsmonAggGroupIndex.3.17 = 7,
dsmonAggGroupIndex.3.18 = 4, -- AF2
dsmonAggGroupIndex.3.19 = 7,
dsmonAggGroupIndex.3.20 = 4,
dsmonAggGroupIndex.3.21 = 7,
dsmonAggGroupIndex.3.22 = 4,
dsmonAggGroupIndex.3.23 = 7,
dsmonAggGroupIndex.3.24 = 1,
dsmonAggGroupIndex.3.25 = 7,
dsmonAggGroupIndex.3.26 = 5, -- AF3
dsmonAggGroupIndex.3.27 = 7,
dsmonAggGroupIndex.3.28 = 5,
dsmonAggGroupIndex.3.29 = 2, -- EF
dsmonAggGroupIndex.3.30 = 5,
dsmonAggGroupIndex.3.31 = 7,
dsmonAggGroupIndex.3.32 = 1,
dsmonAggGroupIndex.3.33 = 7,
dsmonAggGroupIndex.3.34 = 6, -- AF4
dsmonAggGroupIndex.3.35 = 7,
dsmonAggGroupIndex.3.36 = 6,
dsmonAggGroupIndex.3.37 = 7,
dsmonAggGroupIndex.3.38 = 6,
dsmonAggGroupIndex.3.39 = 7,
dsmonAggGroupIndex.3.40 = 1,
dsmonAggGroupIndex.3.41 = 7,
dsmonAggGroupIndex.3.42 = 7,
dsmonAggGroupIndex.3.43 = 7,
dsmonAggGroupIndex.3.44 = 7,
dsmonAggGroupIndex.3.45 = 7,
dsmonAggGroupIndex.3.46 = 7,
dsmonAggGroupIndex.3.47 = 7,
dsmonAggGroupIndex.3.48 = 1,
dsmonAggGroupIndex.3.49 = 7,
dsmonAggGroupIndex.3.50 = 7,
dsmonAggGroupIndex.3.51 = 7,
dsmonAggGroupIndex.3.52 = 7,
dsmonAggGroupIndex.3.53 = 7,
dsmonAggGroupIndex.3.54 = 7,
dsmonAggGroupIndex.3.55 = 7,
dsmonAggGroupIndex.3.56 = 1,
dsmonAggGroupIndex.3.57 = 7,
dsmonAggGroupIndex.3.58 = 7,
dsmonAggGroupIndex.3.59 = 7,
dsmonAggGroupIndex.3.60 = 7,
dsmonAggGroupIndex.3.61 = 7,
dsmonAggGroupIndex.3.62 = 7,
dsmonAggGroupIndex.3.63 = 7);
5.7. Step 7: Lock the Counter Aggregation Configuration ๐
bestie, before the agent can activate any existing collections, the counter aggregation configuration must be locked ๐ซถ you do that by setting the dsmonAggControlLocked scalar to 'true' ๐
SET(dsmonAggControlLocked.0 = true(1));
6. Intellectual Property ๐
the IETF doesn't take a position on whether any intellectual property or other rights that someone might claim over the tech in this document are valid or how far they reach, and it doesn't say whether any license under those rights is or isn't available ๐ it also doesn't claim it has tried to find any of those rights. if you want the IETF's procedures for rights in standards-track and standards-related documents, check BCP 11, RFC 2028. copies of rights claims that were submitted for publication, assurances of licenses, or the results of any attempt to get a general license or permission for implementers or users to use those proprietary rights can be requested from the IETF Secretariat ๐ฌ
the IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that might cover technology that may be required to practice this standard ๐ send that info to the IETF Executive Director ๐
7. Acknowledgements ๐ซถ
this memo is a product of the RMONMIB WG ๐ it's based on an Internet Draft that got a ton of help from Keith McCloghrie and Bijendra Jain, so shoutout to them ๐ธ
8. References ๐
[RFC1155] Rose, M. and K. McCloghrie, "Structure and Identification of Management Information for TCP/IP-based Internets", STD 16, RFC 1155, May 1990.
[RFC1157] Case, J., Fedor, M., Schoffstall, M. and C. Davin, "Simple Network Management Protocol", STD 15, RFC 1157, May 1990.
[RFC1212] Rose, M. and K. McCloghrie, "Concise MIB Definitions", STD 16, RFC 1212, March 1991.
[RFC1215] Rose, M., "A Convention for Defining Traps for use with the SNMP", RFC 1215, March 1991.
[RFC1901] Case, J., McCloghrie, K., Rose, M. and S. Waldbusser, "Introduction to Community-based SNMPv2", RFC 1901, January 1996.
[RFC1905] Case, J., McCloghrie, K., Rose, M. and S. Waldbusser, "Protocol Operations for Version 2 of the Simple Network Management Protocol (SNMPv2)", RFC 1905, January 1996.
[RFC1906] Case, J., McCloghrie, K., Rose, M. and S. Waldbusser, "Transport Mappings for Version 2 of the Simple Network Management Protocol (SNMPv2)", RFC 1906, January 1996.
[RFC2021] Waldbusser, S., "Remote Network Monitoring Management Information Base Version 2 using SMIv2", RFC 2021, January 1997.
[RFC2026] Bradner, S., "The Internet Standards Process -- Revision 3", BCP 9, RFC 2026, October 1996.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2474] Nichols, K., Blake, S., Baker, F. and D. Black, "Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers", RFC 2474, December 1998.
[RFC2475] Blake, S., Black, D., Carlson, M., Davies, E., Wang, Z. and W. Weiss, "An Architecture for Differentiated Services", RFC 2475, December 1998.
[RFC2570] Case, J., Mundy, R., Partain, D. and B. Stewart, "Introduction to Version 3 of the Internet-standard Network Management Framework", RFC 2570, April 1999.
[RFC2571] Wijnen, B., Harrington, D. and R. Presuhn, "An Architecture for Describing SNMP Management Frameworks", RFC 2571, April 1999.
[RFC2572] Case, J., Harrington D., Presuhn R. and B. Wijnen, "Message Processing and Dispatching for the Simple Network Management Protocol (SNMP)", RFC 2572, April 1999.
[RFC2573] Levi, D., Meyer, P. and B. Stewart, "SNMPv3 Applications", RFC 2573, April 1999.
[RFC2574] Blumenthal, U. and B. Wijnen, "User-based Security Model (USM) for version 3 of the Simple Network Management Protocol (SNMPv3)", RFC 2574, April 1999.
[RFC2575] Wijnen, B., Presuhn, R. and K. McCloghrie, "View-based Access Control Model (VACM) for the Simple Network Management Protocol (SNMP)", RFC 2575, April 1999.
[RFC2578] McCloghrie, K., Perkins, D. and J. Schoenwaelder, "Structure of Management Information Version 2 (SMIv2)", STD 58, RFC 2578, April 1999.
[RFC2579] McCloghrie, K., Perkins, D.and J. Schoenwaelder, "Textual Conventions for SMIv2", STD 58, RFC 2579, April 1999.
[RFC2580] McCloghrie, K., Perkins, D. and J. Schoenwaelder, "Conformance Statements for SMIv2", STD 58, RFC 2580, April 1999.
[RFC2856] Bierman, A., McCloghrie, K., and R. Presuhn, "Textual Conventions for Additional High Capacity Data Types", RFC 2856, June 2000.
[RFC2895] Bierman, A., Bucci, C. and R. Iddon, "Remote Network Monitoring MIB Protocol Identifier Reference", RFC 2895, August 2000.
[RFC3273] Waldbusser, S., "Remote Monitoring Management Information Base for High Capacity Networks", RFC 3273, May 2002.
9. Security Considerations ๐โจ
Okay bestie, this section is serious, so let's get into it ๐ญ To implement this MIB, a probe has to capture all packets on the locally-attached network, including packets between third parties. Those packets get analyzed to collect network addresses, protocol usage information, and conversation statistics. That kind of data can be considered sensitive in some environments, so in those places the administrator may want to restrict SNMP access to the probe ๐ซถ
There are a bunch of management objects in this MIB with a MAX-ACCESS clause of read-write and/or read-create. These objects may be considered sensitive or vulnerable in some network environments ๐ Supporting SET operations in a non-secure environment without proper protection can seriously mess with network operations, so this is not the time to be casual ๐
SNMPv1 by itself is not a secure environment ๐ค Even if the network itself is secure (for example, by using IPSec), there's still no control over who on that secure network is allowed to access and GET/SET (read/change/create/delete) the objects in this MIB. Main character energy for the attackers, not so much for us ๐
It is recommended that implementors consider the security features provided by the SNMPv3 framework. Specifically, the use of the User-based Security Model [RFC2574] and the View-based Access Control Model [RFC2575] is recommended. Honestly, this is the glow-up you want ๐ฆโจ
Last but not least, it's the customer or user's responsibility to make sure the SNMP entity giving access to an instance of this MIB is properly configured. Access should be given to the objects only to those principals (users) who have legitimate rights to GET or SET (change/create/delete) them. Lock it down, babe ๐๐
10. Author's Address ๐
The author is Andy Bierman at Cisco Systems, Inc. Here are the details, exactly as they're listed:
Andy Bierman
Cisco Systems, Inc.
170 West Tasman Drive
San Jose, CA USA 95134
Phone: +1 408-527-3711
EMail: abierman@cisco.com
11. Full Copyright Statement ยฉ๏ธ
Copyright (C) The Internet Society (2002). All Rights Reserved. ๐
This document and translations of it may be copied and furnished to others. Derivative works that comment on or otherwise explain it, or assist in its implementation, may be prepared, copied, published, and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations. The one exceptions are when it's needed for developing Internet standards, in which case the procedures for copyrights defined in the Internet Standards process must be followed, or when it's required to translate it into languages other than English ๐ธ
The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. Forever and ever, no cap โพ๏ธ
This document and the information contained herein is provided on an "AS IS" basis, and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Not gonna lie, that's a lot of disclaimers, but they're important ๐
Acknowledgement ๐
Funding for the RFC Editor function is currently provided by the Internet Society. Shoutout to them for keeping the lights on, iykyk ๐
๐ฆ where this page comes from
- ietf: rfc3287 2002-07
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms