Protocol Independent Multicast MIB
Extracted elements (25)
Notification period objects (pimNeighborLossNotificationPeriod, pimRPMappingNotificationPeriod, pimInterfaceElectionNotificationPeriod) default to 65535, representing an infinite interval so that no notifications are sent by default. Operators must explicitly configure a finite period to enable notifications, preventing accidental management-plane flooding on deployment.
The MIB is designed to be IP-version independent, using InetAddressType/InetAddress pairs throughout instead of IPv4-only types. This is a major departure from RFC 2934, which only supported IPv4, enabling the same MIB module to manage both IPv4 and IPv6 PIM instances on dual-stack routers.
This document is part of work in progress to obsolete RFC 2934 but does not yet do so. Where the two documents overlap, this MIB module (RFC 5060) is to be preferred. RFC 2934 defined an experimental MIB; this document's module does not support PIM-SM v1 and does not depend on the IPv4 Multicast Routing MIB (RFC 2932).
Implementations SHOULD enforce a lower bound on pimInterfacePropagationDelay to account for scheduling and processing delays within the local router. The object represents the expected propagation delay inserted into the LAN Prune Delay Hello option.
Global scalar objects pimKeepalivePeriod (default 210s) and pimRegisterSuppressionTime (default 60s) configure device-wide PIM-SM timer values corresponding to Keepalive_Period and Register_Suppression_Time from RFC 4601 section 4.11. Their storage type is governed by pimDeviceConfigStorageType (default nonVolatile).
pimInterfaceElectionWinCount counts how many times this device has been elected DR or DF on any interface. Notably, the counter is not incremented for elections until after the first periodic Hello is sent on the interface, to avoid inflating counts during initial neighbor discovery.
The pimBidirDFElectionTable contains one row per RP per interface for BIDIR-PIM Designated Forwarder election state. The robustness parameter pimInterfaceDFElectionRobustness (default 3) specifies how many lost DF-Election messages are needed to declare an election failure.
The PimGroupMappingOriginType textual convention identifies the mechanism by which a PIM group-to-RP mapping was learned: fixed(1), configRp(2), configSsm(3), bsr(4), autoRP(5), embedded(6), other(7). It references RFC 3569, RFC 3956, and RFC 5059.
The pimGroupMappingTable contains one row per multicast group prefix mapping, recording the PIM mode, RP address, origin mechanism, and precedence value for each mapping. Only the entry with the lowest pimGroupMappingPrecedence value is the active mapping for a given group.
The pimInterfaceTable is indexed by both ifIndex and InetVersion, providing one row per IP version per PIM-enabled interface. This dual-index design allows a single physical interface to run PIM for IPv4 and IPv6 simultaneously as logically separate instances.
The PimMode textual convention enumerates the PIM operating modes: none(1), ssm(2), asm(3), bidir(4), dm(5), other(6). It is used throughout the MIB to indicate how a multicast group or interface is operating.
The pimNbrSecAddressTable lists secondary IP addresses advertised by each PIM neighbor, indexed by interface, address type, primary address, and secondary address. It corresponds to the secondary address option in PIM Hello messages (RFC 4601 section 4.3.4).
The pimNeighborTable lists discovered PIM neighbors, including their Generation ID, DR Priority, LAN Prune Delay parameters (Propagation_Delay, Override_Interval, T-bit), BIDIR-PIM capability, and State Refresh capability. It is indexed by interface, address type, and neighbor address.
The pimSGRptTable and pimSGRptITable expose (S,G,rpt) override state used in PIM-SM when a receiver has joined the RP tree but wants to suppress data from a specific source. These tables track upstream prune state and per-interface join/prune state for the (S,G,rpt) entries.
The pimSGTable and pimSGITable expose per-source (S,G) state including SPT bit, Keepalive Timer, DR Register state machine, upstream join state, and PIM-DM-specific originator and prune-limit state. The table is indexed by address type, group address, and source address.
The pimStarGTable and pimStarGITable expose per-group (*,G) PIM-SM/BIDIR state: upstream join state, upstream join timer, RPF interface, RPF next hop, and the route (address, prefix length, metric preference, metric) used to reach the RP. The interface-specific table additionally tracks assert state and join expiry.
The pimStaticRPTable allows configuration of static RP-to-group-prefix mappings, and the pimAnycastRPSetTable allows configuration of anycast-RP sets (RFC 4610), listing each RP peer address within the set. Both tables feed into pimGroupMappingTable with configRp origin.
The PIM-STD-MIB module is assigned OID mib-2 157 under the IANA-managed mib-2 subtree. This is the authoritative SNMP management module for PIM-SM, BIDIR-PIM, and PIM-DM routers.
Setting pimInterfaceStubInterface to TRUE causes all PIM packets to be silently dropped on that interface, protecting the router from forged PIM messages on untrusted host-facing segments while still allowing IGMP/MLD operation. Changing this value while the interface is operational causes PIM to be disabled and re-enabled.
Several MIB objects have read-write or read-create access and can alter PIM router behavior (timer values, RP configuration, interface mode). Unauthorized write access could disrupt multicast forwarding across the network. The Security Considerations section recommends using SNMPv3 with authentication and privacy to protect these objects.
The minimum notification period for pimInvalidRegisterNotificationPeriod and pimInvalidJoinPruneNotificationPeriod is set to 10 seconds (not zero) to provide resilience against propagation of denial-of-service attacks from the data and control planes to the network management plane. Default is 65535 (infinite, no notifications sent).
The downstream (*,G,I) join/prune state machine has three states: noInfo(1), join(2), prunePending(3). The prunePending state is entered when a Prune is received and the router waits to see if a downstream router will override it before acting.
The DR Register state machine (pimSGDRRegisterState) has states noInfo(1), join(2), joinPending(3), prune(4). In prune state, pimSGDRRegisterStopTimer counts down to Null-Register transmission; in joinPending, it counts down to resuming data encapsulation. This state machine is only relevant when pimSGPimMode is asm.
The per-interface (*,G) assert state machine has states noInfo(1), iAmAssertWinner(2), iAmAssertLoser(3). When iAmAssertLoser, the MIB records the winner's address and route metric/preference. For BIDIR-PIM groups, this object must always be noInfo.
The PIM-DM upstream prune state machine (pimSGUpstreamPruneState) has states forwarding(1), ackpending(2), pruned(3). The PIM-DM originator state machine (pimSGOriginatorState) has states notOriginator(1) and originator(2), with pimSGSourceActiveTimer tracking remaining time in originator state.