Remote Network Monitoring MIB Extensions for Switched Networks Version 1.0
Extracted elements (29)
portCopyTable rows have no OwnerString because multiple rows may be part of the same portCopy operation (N:1 or N:M modes); ownership granularity at the row level would not map cleanly to the multi-row operations required for these modes.
smonPrioStatsTable has no garbage-collection mechanism because there are at most eight rows per statistical set (one per user_priority value 0..7), making the memory footprint small enough that collection management overhead is not justified.
The dataSourceCapsTable is required because RMON mandates that every dataSource be associated with an ifEntry; this table allows agents to map VLANs and physical entities to propVirtual(53) ifEntries, enabling RMON functions to be applied to these non-traditional data sources.
The SMON MIB extends RMON's dataSource concept to include VLANs and physical entities because existing RMON and RMON2 standards do not account for characteristics unique to switched environments, such as non-broadcast traffic, logical VLAN segmentation, and packet prioritization.
A device with no RMON functionality other than port mirroring may implement only the portCopyCaps and portCopyConfig MIB groups, enabling standard port-copy configuration from the same NMS application used for RMON/SMON.
An external RMON probe may observe smonVlanIdStatsId=VID=0 on an Inter Switch Link, indicating a priority-tagged frame whose VLAN is determined by the ingress port's PVID; only a probe internal to the switch can correctly attribute such frames to the right VLAN.
NMS applications SHOULD check portCopyCaps (specifically the copyErrFrames capability and whether it is enabled) before interpreting statistics from a copy-port destination, because errored frames may or may not be included in the replicated traffic.
SMON VLAN statistics (smonVlanIdStatsTable) are collected after the Ingress Rules defined in IEEE 802.1Q section 3.13 are applied, ensuring consistent VLAN attribution across implementations.
smonPrioStatsTable reports the user_priority value as encoded in VLAN headers, not the priority actually granted by the switch for forwarding decisions. NMS applications must account for this distinction.
For each dataSourceCapsEntry representing a VLAN or entPhysicalEntry, the agent MUST create an associated ifEntry with ifType 'propVirtual(53)'; the assigned ifIndex is stored in dataSourceCapsIfIndex and used as the actual RMON control table dataSource value.
High-capacity counter groups (HC packets and octets) are mandatory for interfaces with ifSpeed greater than 10 MB/sec (hcVlanTo100mbGroup) and greater than 100 MB/sec (hcVlan100mbPlusGroup, hcPrio100mbPlusGroup), and MUST also be kept on smonDataSources of type VLAN or entPhysicalEntry.
If smonVlanStatsControlStatus is not equal to active(1), all associated entries in smonVlanIdStatsTable SHALL be deleted. Similarly, if smonPrioStatsControlStatus is not active(1), all associated smonPrioStatsTable entries SHALL be deleted.
It is RECOMMENDED that an entire portCopy operation be configured in a single SetRequest PDU if possible, because rows are activated one at a time based on rowStatus, which can lead to unpredictable results in N:1 and N:M modes when multiple PDUs are used.
RMON alarms and events groups SHOULD be implemented on SMON devices if a simple thresholding mechanism is desired; the RMON2 usrHistory group SHOULD be implemented if a history collection mechanism is desired for smonStats entries.
The agent SHOULD attempt to create dataSource and interface entries for all dataSources as soon as possible after restart; dataSources representing VLANs may not be instantiated immediately but rather as VLAN usage is detected.
The portCopyDest object MAY NOT reference an interface associated with a packet-based VLAN (smonVlanDataSource.<V>), though that dataSource type MAY be used as a portCopySource.
To activate a portCopyEntry, both source and destination interfaces MUST be present as ifEntries with ifAdminStatus and ifOperStatus equal to up(1). If either value changes after entry activation, portCopyStatus MUST transition to notReady(3).
dataSourceCapsTable provides one entry per supported data source, with fields dataSourceRmonCaps (BITS indicating error-frame visibility, good-frame visibility, RMON table usability, and baby-giant handling), dataSourceCopyCaps (BITS indicating port copy source/destination capabilities), and dataSourceCapsIfIndex (the associated ifIndex value).
dataSourceCopyCaps BITS field encodes eight port-copy-specific capabilities: copySourcePort(0), copyDestPort(1), copySrcTxTraffic(2), copySrcRxTraffic(3), countDestDropEvents(4), copyErrFrames(5), copyUnalteredFrames(6), and copyAllGoodFrames(7). Bits conditional on copySourcePort or copyDestPort SHOULD be cleared when the corresponding base capability is absent.
dataSourceRmonCaps BITS field encodes four static capabilities per data source: countErrFrames(0), countAllGoodFrames(1), countAnyRmonTables(2), and babyGiantsCountAsGood(3). The babyGiantsCountAsGood bit indicates whether the agent distinguishes VLAN-tagged frames up to 1522 octets from true giants.
portCopyDirection is an INTEGER with values copyRxOnly(1), copyTxOnly(2), and copyBoth(3), defaulting to copyBoth. It controls whether received traffic, transmitted traffic, or both are mirrored from source to destination port.
portCopyTable is indexed by (portCopySource, portCopyDest) and defines port mirroring relationships. Key fields are portCopyDestDropEvents (Counter32 of drop events at the destination), portCopyDirection (copyRxOnly/copyTxOnly/copyBoth, default copyBoth), and portCopyStatus (RowStatus controlling activation).
smonCapabilities is a read-only BITS object advertising which SMON MIB groups an agent supports: smonVlanStats(0), smonPrioStats(1), dataSource(2), and portCopy(4). Bit position 3 (smonUnusedBit) is reserved.
SmonDataSource is a textual convention extending the RMON2 DataSource type to three forms: ifIndex.<I> (port-based, where ifType is not propVirtual), smonVlanDataSource.<V> (VLAN-based, where V is an 802.1Q VLAN-ID between 1 and 4094), and entPhysicalEntry.<N> (entity-based, referencing a physical entity such as a switch backplane).
smonPrioStatsTable provides per-priority statistics based on the 3-bit user_priority field in the IEEE 802.1Q Tag Control Information field. The table has at most eight rows per statistical set (smonPrioStatsId 0..7) and carries Counter32/Counter64 pairs for packets and octets.
smonVlanIdStatsTable contains per-VLAN statistics keyed by smonVlanStatsControlIndex and smonVlanIdStatsId (1..4094). Each row carries Counter32/Counter64 pairs for total packets and octets, and non-unicast packets and octets, along with a LastCreateTime for detecting deletion/recreation cycles.
Read-write and read-create objects in this MIB can negatively affect network operations if SET operations are permitted in a non-secure environment without proper protection. Access control must ensure that only authorized principals can GET or SET managed objects.
The objects smonCapabilities, dataSourceCapsTable, and portCopyTable are considered sensitive; even GET access should be controlled and values encrypted in transit. SNMPv1 alone is insufficient — use of SNMPv3 with the User-based Security Model (RFC 2574) and View-based Access Control Model (RFC 2575) is RECOMMENDED.
portCopyStatus (RowStatus) transitions: entry moves to active when both portCopySource and portCopyDest ifEntries are up; if ifAdminStatus or ifOperStatus of either interface changes after activation, portCopyStatus transitions to notReady(3). Deleting the entry removes the copy relationship.