rfc-8660

Segment Routing with the MPLS Data Plane

A. Bashandy (Editor), C. Filsfils (Editor), S. Previdi, B. Decraene, S. Litkowski, R. Shakir
date2019-12 streamIETF areartg wgspring statusPROPOSED STANDARD pages29 canonicalhttps://www.rfc-editor.org/rfc/rfc8660 doi10.17487/RFC8660
Segment Routing (SR) leverages the source-routing paradigm. A node steers a packet through a controlled set of instructions, called segments, by prepending the packet with an SR header. In the MPLS data plane, the SR header is instantiated through a label stack. This document specifies the forwarding behavior to allow instantiating SR over the MPLS data plane (SR-MPLS).

Extracted elements (25)

design-rationale §2.7.3.1

Mirror SID is designed as a generalization of RFC 5331's context label: a Mirror SID does not presuppose any specific encapsulation for the packet beneath the top label, making it applicable to any payload type, not just MPLS.

mpls, routing

design-rationale §2

SR-MPLS requires no change to the MPLS forwarding plane because Segment IDs (SIDs) are instantiated as MPLS labels and the SR header is instantiated as a stack of MPLS labels. The existing MPLS architecture (RFC 3031) accommodates SR without modification.

mpls, routing

design-rationale §2.1

The SR architecture permits multiple SIDs for the same prefix, enabling different forwarding behaviors (distinct paths, ECMP, UCMP) per destination. An operator assigns multiple MPLS labels or indices to the same prefix, each with a distinct forwarding behavior installed in the FIB.

mpls, routing

interoperability-note §1

Coexistence of SR over the MPLS forwarding plane with LDP (RFC 5036) is specified in RFC 8661. When a neighbor does not support SR, a router may fall back to using a downstream label determined by another MCC such as LDP to forward the packet.

mpls, routing

normative-requirement §2.6 MUST NOT

A FEC that loses its incoming label to the tiebreaking rules MUST NOT be installed in the FIB with an outgoing Segment Routing label based on the SID corresponding to the lost incoming label. The ingress node must apply the same collision-resolution procedure using the receiving node's data when determining the outgoing label.

mpls, routing

normative-requirement §2 SHOULD

A network operator SHOULD configure at least one node segment per routing instance, topology, or algorithm so that the node is reachable within its routing domain and can be used by an SR Policy and TI-LFA.

mpls, routing

normative-requirement §2.5 MUST NOT

An implementation MUST NOT allow MCCs belonging to the same router to assign the same incoming label to more than one SR FEC. When a collision occurs across MCCs, tiebreaking rules MUST deterministically select one FEC regardless of the order in which the colliding FEC-to-label mappings are received.

mpls, routing

normative-requirement §2.2 MUST NOT

The label value corresponding to any SID MUST NOT come from the range of special-purpose MPLS labels defined in RFC 7274.

mpls, routing

normative-requirement §2.3 MUST NOT

The list of ranges comprising the SRGB MUST NOT overlap, and every range MUST NOT cover or overlap with a reserved label value or range (RFC 7274). If the SRGB does not conform to these rules, it MUST be completely ignored by all routers in the routing domain.

mpls, routing

normative-requirement §2.2 MUST

The MCC MUST ensure every label value corresponding to any SID it installs is unique within the router—it MUST only represent that one SID and MUST NOT be used for any other forwarding purpose on the same router.

mpls, routing

normative-requirement §2.5.2 MUST

When redistributing SIDs with prefixes between routing protocol instances with different SRGBs, the index MUST NOT be redistributed. If the receiving instance chooses to advertise an index, it MUST allocate a fresh index relative to its own SRGB and compute the local label accordingly.

mpls, routing

protocol-element §2.3

A local segment MAY be allocated from the SRLB (Segment Routing Local Block) or from any unused label not in the special-purpose range. The SRLB consists of local labels reserved by the node for certain local segments, with the same structural rules as the SRGB.

mpls, routing

protocol-element §2.7.3.1

A Mirror SID causes the NEXT operation (pop topmost label) followed by a lookup in the mirrored forwarding table using the packet contents exposed after the pop. The Mirror SID is a generalization of the context label in RFC 5331 because it makes no assumptions about the packet type underneath the top label.

mpls, routing

protocol-element §2.5.1

FEC fields are encoded in big-endian order for numerical comparison. Routing Instance ID is 16 bits; address family is 8 bits (IPv4=100, IPv6=110, IPv4 must be numerically less); all addresses are 128 bits (IPv4 in most-significant bits); prefixes are (8+128) bits with length preceding the prefix; Algorithm is 16 bits; Color ID is 32 bits.

mpls, routing

protocol-element §2.5.1

FEC type codepoints for numerical ordering are: 120 for (Prefix, Routing Instance, Topology, Algorithm); 130 for (next hop, outgoing interface); 140 for parallel adjacency; 150 for SR Policy; 160 for Mirror SID. Alternative values may be used if the same relative ordering is maintained.

mpls, routing

protocol-element §2.10.1

For PUSH and CONTINUE of a global SID Si toward neighbor N: if N lacks SR capability or has an invalid/too-small SRGB, the router falls back to standard MPLS forwarding, an alternative next hop, or drops the packet in that order. Otherwise, the outgoing label is calculated from N's SRGB and the SID index per Section 2.4.

mpls, routing

protocol-element §2.9

In the MPLS domain, the active segment on a packet is always the topmost label. Its value is matched against the FIB entry calculated per Section 2.4. For global SIDs this label value is derived from the SID index and the neighbor's SRGB; for local SIDs the MCC directly specifies the label value.

mpls, routing

protocol-element §2.5.1

Incoming label collision tiebreaking proceeds in order: (1) lowest FEC administrative distance wins; (2) if tied, smallest numerical FEC value wins using defined FEC encodings. First-come-first-served tiebreaking is explicitly prohibited. The network operator MUST deploy the same tiebreaking rules within an IGP flooding area.

mpls, routing

protocol-element §2.5

SR FEC types for incoming label collision resolution are: (Prefix, Routing Instance, Topology, Algorithm); (next hop, outgoing interface); (number of adjacencies, list of next hops, list of outgoing interface IDs) for parallel adjacencies; (Endpoint, Color) for SR Policy; and (Mirror SID). Zero MUST be used for Topology and Algorithm fields when not defined by an MCC.

mpls, routing

protocol-element §2.7.2

The CONTINUE operation swaps the incoming top label with an outgoing label whose value is calculated using the SRGB of the next-hop neighbor (Section 2.4). It is equivalent to the standard MPLS label-swap operation.

mpls, routing

protocol-element §2.7.3

The NEXT operation pops the topmost MPLS label; the action before and/or after popping depends on the instruction associated with the active SID. For an Adj-SID, after popping, the packet is sent out the physical or virtual interface toward the next hop corresponding to the Adj-SID.

mpls, routing

protocol-element §2.7.1

The PUSH operation prepends one or more MPLS labels to an incoming packet before sending it out a physical or virtual interface (e.g., UDP tunnel, L2TPv3) toward a next hop. TTL and Traffic Class fields of each label stack entry must be set per local policy; this document does not specify those rules.

mpls, routing

protocol-element §2.3

The Segment Routing Global Block (SRGB) is represented as a list of MPLS label ranges [Ll(1),Lh(1)], [Ll(2),Lh(2)], ..., [Ll(k),Lh(k)]; the SRGB need not be a contiguous range of labels. The SRGB is used exclusively to instantiate global SIDs into the MPLS forwarding plane.

mpls, routing

protocol-element §2.4

To map SID index I to an MPLS label within a multi-range SRGB, the total SRGB size is computed as the sum of all range sizes. The label is found by walking the ranges until the cumulative size exceeds I, then computing label = I - temp + Ll(j). The index must satisfy 0 <= I < size.

mpls, routing

security-consideration §5

RFC 8660 does not introduce additional security requirements or mechanisms beyond those described in the Segment Routing Architecture (RFC 8402). Implementors are directed to RFC 8402 for all relevant security considerations.

security, mpls, routing