rfc-3814

Multiprotocol Label Switching (MPLS) Forwarding Equivalence Class To Next Hop Label Forwarding Entry (FEC-To-NHLFE) Management Information Base (MIB)

T. Nadeau, C. Srinivasan, A. Viswanathan
date2004-06 streamIETF areartg wgmpls statusPROPOSED STANDARD pages42 canonicalhttps://www.rfc-editor.org/rfc/rfc3814 doi10.17487/RFC3814
This memo defines a portion of the Management Information Base (MIB) for use with network management protocols in the Internet community. In particular, it describes managed objects for defining, configuring, and monitoring Forwarding Equivalence Class (FEC) to Next Hop Label Forwarding Entry (NHLFE) mappings and corresponding actions for use with Multiprotocol Label Switching (MPLS). [STANDARDS-TRACK]

Extracted elements (28)

design-rationale §5.1.1

Address ranges were chosen over CIDR prefixes in mplsFTNTable because a single address-range row can represent what would require many CIDR prefix rows; for example, [192.0.2.0–192.0.2.62] requires 6 CIDR prefixes but one address-range row. Every CIDR prefix is expressible as an equivalent address range, and implementations may translate ranges to CIDR internally if desired.

mpls

design-rationale §5.2.1

The linked-list indexing structure for mplsFTNMapTable was chosen to enable O(1) insertion between existing entries with a single SNMP SET operation and to allow in-order traversal of per-interface rules using only as many GETNEXT operations as there are entries, satisfying both requirements without reindexing.

mpls, snmp

design-rationale §5.2.2

The mplsFTNMapTable uses a 'previous pointer' (mplsFTNMapPrevIndex) rather than a 'next pointer' to implement the linked-list. A next-pointer design cannot determine the first FTN entry on an interface with a single SNMP GETNEXT operation, while the previous-pointer design allows this via GETNEXT on mplsFTNMapRowStatus.ifIndex.0.0.

mpls, snmp

interoperability-note §9

mplsFTNActionPointer links to either mplsXCEntry in MPLS-LSR-STD-MIB (RFC 3813) for non-TE LSP actions or mplsTunnelEntry in MPLS-TE-STD-MIB (RFC 3812) for TE tunnel actions. If the pointed-to row does not currently exist, no action is taken on matching packets until that row is created.

mpls, snmp

interoperability-note §9

The full compliance statement restricts mplsFTNAddrType to ipv4(1) or ipv6(2) and address objects to SIZE (4 | 20). Implementations are only required to support the address types actually supported on the LSR, allowing IPv4-only or IPv6-only deployments.

mpls, snmp

interoperability-note §9

The MIB imports Dscp from DIFFSERV-DSCP-TC (RFC 3289), InetAddressType/InetAddress/InetPortNumber from INET-ADDRESS-MIB (RFC 3291), and mplsStdMIB from MPLS-TC-STD-MIB (RFC 3811). Full compliance also requires IF-MIB (RFC 2863) groups ifGeneralInformationGroup and ifCounterDiscontinuityGroup.

mpls, snmp

normative-requirement §9 MUST NOT

Agents MUST NOT allow the same FTN entry (identified by mplsFTNMapCurrIndex) to be applied multiple times to the same interface. Agents MUST NOT allow creation of rows in mplsFTNMapTable until the corresponding rows exist in mplsFTNTable.

mpls, snmp

normative-requirement §10 RECOMMENDED

Deployment of SNMP versions prior to SNMPv3 is NOT RECOMMENDED. It is RECOMMENDED that SNMPv3 be deployed with cryptographic security (authentication and privacy) enabled for access to this MIB module.

mpls, snmp, security

normative-requirement §9 MUST

Entries mapped to an interface by specifying its non-zero interface index in mplsFTNMapIndex are applied ahead of entries with mplsFTNMapIndex equal to zero (wildcard all-interfaces entries). This defines the priority ordering between per-interface and all-interface rules.

mpls, snmp

normative-requirement §9 MUST

If a Network Management Application destroys an mplsFTNTable row (sets mplsFTNRowStatus to destroy) and one or more mplsFTNMapTable entries reference that row via mplsFTNMapCurrIndex, the agent MUST also destroy those corresponding mplsFTNMapTable entries.

mpls, snmp

normative-requirement §9 MUST

If a row in mplsFTNTable is destroyed, the agent MUST destroy the corresponding entries in mplsFTNMapTable (those with a matching mplsFTNCurrIndex value). If an mplsFTNMapTable row points to a deleted mplsFTNTable row, that mplsFTNMapTable row MUST also be deleted.

mpls, snmp

normative-requirement §9 MUST

If the agent does not wish to allow creation of more entries in mplsFTNTable (e.g., due to resource exhaustion), mplsFTNIndexNext MUST return a value of 0. If a non-zero value is returned and a SET succeeds, the agent MUST change mplsFTNIndexNext to another currently unused non-zero value or to zero.

mpls, snmp

normative-requirement §8 MUST

mplsFTNActionPointer MUST point to the first instance of the first accessible columnar object in the appropriate conceptual row (mplsXCEntry or mplsTunnelEntry). If it contains zeroDotZero, no action will be taken on matching packets until a valid pointer is set.

mpls, snmp

normative-requirement §9 MUST NOT

mplsFTNAddrType MUST NOT be set to unknown(0) when mplsFTNMask has bit sourceAddr(0) or destAddr(1) set. When both address bits are zero, mplsFTNAddrType SHOULD be set to unknown(0) and the address objects SHOULD be set to zero-length strings.

mpls, snmp

protocol-element §9

mplsFTNActionType enumerates two action values: redirectLsp(1) to redirect matching packets into an MPLS LSP, and redirectTunnel(2) to redirect into an MPLS TE tunnel. The companion object mplsFTNActionPointer is a RowPointer that must identify the first accessible columnar object in the target mplsXCEntry or mplsTunnelEntry row.

mpls, snmp

protocol-element §9

mplsFTNIndexNext provides the next available valid value for mplsFTNIndex. Management applications MUST retrieve this object before creating a new mplsFTNTable row. The object returns zero when no further row creation is permitted due to resource exhaustion.

mpls, snmp

protocol-element §5.2

mplsFTNMapTable uses a three-part index (mplsFTNMapIndex, mplsFTNMapPrevIndex, mplsFTNMapCurrIndex) implementing a linked-list structure where mplsFTNMapPrevIndex points to the preceding entry on the same interface. The agent self-adjusts mplsFTNMapPrevIndex after any insertion or deletion so the list ordering remains consistent without requiring explicit reindexing.

mpls, snmp

protocol-element §9

mplsFTNMask is a BITS object with six named bits: sourceAddr(0), destAddr(1), sourcePort(2), destPort(3), protocol(4), and dscp(5). A bit set to zero means the corresponding field MUST be ignored for matching purposes, allowing any combination of the six criteria to be active.

mpls, snmp

protocol-element §5.3

mplsFTNPerfTable provides per-interface, per-FTN-entry high-capacity counters: mplsFTNPerfMatchedPackets (Counter64) and mplsFTNPerfMatchedOctets (Counter64), plus mplsFTNPerfDiscontinuityTime (TimeStamp) recording the most recent counter discontinuity. Entries exist only for FTN rules that are actively mapped to at least one interface.

mpls, snmp

protocol-element §5.1

mplsFTNTable stores FEC-to-NHLFE rules supporting 6-tuple matching based on source address range, destination address range, source port range, destination port range, IPv4 Protocol/IPv6 next-header field, and DSCP. The action pointer redirects matching packets to either a non-TE LSP (mplsXCEntry in RFC 3813) or a TE tunnel (mplsTunnelEntry in RFC 3812).

mpls, snmp

protocol-element §6

mplsFTNTableLastChanged and mplsFTNMapTableLastChanged are TimeStamp scalars indicating when an entry was last added, deleted, or modified in their respective tables. Applications performing table traversals should monitor these objects to detect concurrent modifications and ensure retrieved data validity.

mpls, snmp

protocol-element §5

The MPLS-FTN-STD-MIB consists of three tables: mplsFTNTable (defines FEC-to-NHLFE matching rules and actions), mplsFTNMapTable (activates rules on specific interfaces), and mplsFTNPerfTable (provides per-interface performance counters for active rules). This MIB resides on any LSR performing FEC-to-NHLFE mapping at ingress.

mpls, snmp

protocol-element §9

Two textual conventions are defined: MplsFTNEntryIndex (Unsigned32, range 1..4294967295) indexes rows in mplsFTNTable, and MplsFTNEntryIndexOrZero (Unsigned32, range 0..4294967295) is used where zero carries special per-object semantics such as 'no entry' or 'head of list'.

mpls, snmp

registry §11.1

IANA assigned the OID mplsStdMIB 8 to the MPLS-FTN-STD-MIB module defined in this document. New assignments under mplsStdMIB can only be made by a standards action as specified in RFC 2434.

mpls, registry, snmp

security-consideration §10

Improper manipulation of mplsFTNTable and mplsFTNMapTable can redirect traffic to unintended destinations, potentially resulting in denial of service to end-users or routing MPLS-intended traffic through the IP network instead, degrading service quality. These tables have read-write/read-create objects that MUST be protected against unauthorized SET operations.

mpls, security, snmp

security-consideration §10

mplsFTNPerfTable, although read-only, exposes traffic flow information (packet and octet counts per FTN rule per interface). Unauthorized read access to these counters may be used to infer network traffic patterns, so GET and NOTIFY access should be controlled and counter values encrypted in transit.

mpls, security, snmp

state-machine §7.4

mplsFTNMapPrevIndex self-adjusts on insertion and deletion: when a new entry is inserted between entries A and B, the entry previously following A (i.e., B) has its mplsFTNMapPrevIndex automatically updated to point to the new entry. When an entry is deleted, the entry immediately after it has its mplsFTNMapPrevIndex automatically updated to skip the deleted entry.

mpls, snmp

wire-format §9

MplsFTNEntry is a SEQUENCE of 18 objects: mplsFTNIndex (MplsFTNEntryIndex), mplsFTNRowStatus (RowStatus), mplsFTNDescr (SnmpAdminString), mplsFTNMask (BITS, 6 bits), mplsFTNAddrType (InetAddressType), source/destination address min/max pairs (InetAddress), source/destination port min/max pairs (InetPortNumber), mplsFTNProtocol (Integer32 0–255), mplsFTNDscp (Dscp), mplsFTNActionType (INTEGER), mplsFTNActionPointer (RowPointer), and mplsFTNStorageType (StorageType).

mpls, snmp