rfc-8669

Segment Routing Prefix Segment Identifier Extensions for BGP

S. Previdi, C. Filsfils, A. Lindem (Editor), A. Sreekantiah, H. Gredler
date2019-12 streamIETF areartg wgidr statusPROPOSED STANDARD pages15 canonicalhttps://www.rfc-editor.org/rfc/rfc8669 doi10.17487/RFC8669 errataview
Segment Routing (SR) leverages the source-routing paradigm. A node steers a packet through an ordered list of instructions called "segments". A segment can represent any instruction, topological or service based. The ingress node prepends an SR header to a packet containing a set of segment identifiers (SIDs). Each SID represents a topological or service-based instruction. Per-flow state is maintained only on the ingress node of the SR domain. An "SR domain" is defined as a single administrative domain for global SID assignment. This document defines an optional, transitive BGP attribute for announcing information about BGP Prefix Segment Identifiers (BGP Prefix-SIDs) and the specification for SR-MPLS SIDs.

Extracted elements (27)

design-rationale §1

A BGP Prefix-SID MAY be attached to a BGP prefix, meaning each prefix is advertised individually. This reduces the ability to pack BGP advertisements when sharing common attributes, a deliberate trade-off for per-prefix SID assignment.

bgp, routing

design-rationale §2

The Originator SRGB TLV is provided as an optional alternative to BGP-LS for advertising the local SRGB, but without topology or peer SID information, making it inapplicable for traffic engineering. BGP-LS remains the preferred method for SRGB advertisement.

bgp, mpls, routing

design-rationale §7

TLV type value 2 (previously IPv6 SID TLV) was deprecated and removed; support for Segment Routing over the IPv6 data plane (SRv6) via the BGP Prefix-SID attribute was deferred to future specifications. This explains the gap in the TLV type number sequence.

bgp, routing

interoperability-note §3.2

If a BGP speaker receives a node's SRGB via BGP-LS Node NLRI and also via a BGP Prefix-SID attribute, the values should be the same. If they differ, the BGP-LS NLRI values SHOULD be preferred and an error logged.

bgp, routing

normative-requirement §4 MUST

A BGP speaker receiving a BGP Prefix-SID attribute from an EBGP neighbor outside the SR domain MUST discard the attribute unless explicitly configured to accept it. An error SHOULD be logged when discarding.

bgp, routing, security

normative-requirement §4.1 MUST

A BGP speaker receiving a prefix with a BGP Prefix-SID attribute and a label NLRI field of Implicit NULL from a neighbor MUST adhere to standard behavior and program its MPLS data plane to pop the top label when forwarding traffic to the prefix.

bgp, mpls, routing

normative-requirement §5 SHOULD

Attribute filtering SHOULD be deployed to remove the BGP Prefix-SID attribute at the administrative boundary of the SR domain, preventing distribution beyond its intended scope.

bgp, routing, security

normative-requirement §8 SHOULD NOT

By default, a BGP Prefix-SID attribute SHOULD NOT be attached to a prefix and advertised; BGP Prefix-SID advertisement SHOULD require explicit operator enablement. Propagation to other ASes MUST be explicitly configured.

bgp, routing

normative-requirement §4.1 MUST

If multiple different prefixes are received with the same label index, all of those prefixes MUST have their BGP Prefix-SID attribute considered 'conflicting'.

bgp, mpls, routing

normative-requirement §6 MUST

If the BGP Prefix-SID attribute appears more than once in an UPDATE message, all occurrences other than the first SHALL be discarded per RFC 7606. Similarly, duplicate recognized TLVs within one attribute SHALL have all but the first discarded.

bgp, routing

normative-requirement §4.1 SHOULD NOT

In the case of a 'conflicting' BGP Prefix-SID attribute, a BGP speaker SHOULD NOT treat it as an error and SHOULD propagate the attribute unchanged. A warning SHOULD be logged for further analysis.

bgp, routing

normative-requirement §5.1 SHOULD NOT

Since the label-index value must be unique within an SR domain, by default an implementation SHOULD NOT advertise the BGP Prefix-SID attribute outside an AS unless explicitly configured to do so.

bgp, mpls, routing

normative-requirement §5.1 MUST

The Label field of the advertised NLRI MUST be set to the local/incoming label programmed in the MPLS data plane for the given advertised prefix, consistent with RFC 8277 and RFC 4364.

bgp, mpls, routing

normative-requirement §3.1 MUST

The Label-Index TLV MUST be present in the BGP Prefix-SID attribute when attached to IPv4/IPv6 Labeled Unicast prefixes. A BGP Prefix-SID attribute received without a Label-Index TLV MUST be considered invalid by the receiving speaker.

bgp, mpls, routing

normative-requirement §3.2 MUST NOT

The Originator SRGB TLV MUST NOT be changed during the propagation of the BGP update. It is used to build SR policies when different SRGBs are used across the fabric.

bgp, mpls, routing

normative-requirement §3 MUST

Unknown TLVs in the BGP Prefix-SID attribute MUST be ignored and propagated unmodified, ensuring forward compatibility with future TLV definitions.

bgp, routing

normative-requirement §6 MUST

When a BGP speaker receives a BGP UPDATE containing a malformed BGP Prefix-SID attribute on an IPv4/IPv6 Labeled Unicast prefix, it MUST ignore the attribute and not advertise it to peers. This is equivalent to RFC 7606's 'Attribute discard' action.

bgp, routing

normative-requirement §4.1 MUST

When a BGP speaker receives a path with an 'invalid' or 'conflicting' BGP Prefix-SID attribute, or cannot process it, it MUST ignore the attribute and MUST assign a local (dynamic, non-SRGB) label as per classic RFC 8277 operation.

bgp, mpls, routing

normative-requirement §4.1 SHOULD

When multiple valid paths for the same prefix carry different label indices, the label index from the best-path BGP Prefix-SID attribute SHOULD be chosen, with a notable exception when RFC 5004 route-change dampening is in use.

bgp, mpls, routing

protocol-element §3

The BGP Prefix-SID attribute is an optional, transitive BGP path attribute assigned type code 40. It is encoded as a set of TLVs, each starting with a 1-octet type and 2-octet length, and may be attached to Multiprotocol BGP IPv4/IPv6 Labeled Unicast prefixes.

bgp, mpls, routing

registry §7

IANA assigned attribute code type 40 to the BGP Prefix-SID attribute in the 'BGP Path Attributes' registry. A new 'BGP Prefix-SID TLV Types' registry was created under 'Border Gateway Protocol (BGP) Parameters', with values 1 (Label-Index), 2 (Deprecated), and 3 (Originator SRGB) defined; values 1-254 use Expert Review.

bgp, registry, routing

registry §7

IANA created the 'BGP Prefix-SID Label-Index TLV Flags' registry (16-bit, initially empty) and the 'BGP Prefix-SID Originator SRGB TLV Flags' registry (16-bit, initially empty) under 'BGP Parameters', both using Expert Review.

bgp, registry, routing

security-consideration §9

Information leakage of internal prefixes and topology (including BGP Prefix-SID) outside the SR administrative domain must be prevented using BGP attribute filtering at domain boundaries. These filtering policies are not standardized and are left to operator configuration.

bgp, security, routing

security-consideration §9

The BGP Prefix-SID attribute is not protected by BGPsec signatures even when advertised using BGPsec as described in RFC 8205. Implementations must be aware that this attribute can be forged or modified by intermediate BGP speakers.

bgp, security

security-consideration §9 SHOULD

To prevent DoS/DDoS attacks from excessive BGP updates with invalid or conflicting BGP Prefix-SID attributes, error log message rate limiting and suppression of duplicate error log messages SHOULD be deployed.

bgp, security

wire-format §3.1

The Label-Index TLV (Type=1, Length=7) encodes an 8-bit RESERVED field, a 16-bit Flags field, and a 32-bit Label Index representing the index value in the SRGB space. RESERVED and Flags MUST be clear on transmission and ignored on reception.

bgp, mpls, routing

wire-format §3.2

The Originator SRGB TLV (Type=3, Length=2+N*6) contains a 16-bit Flags field followed by one or more 6-octet SRGB entries, each encoding a 3-octet first label and 3-octet range count. Multiple SRGB ranges are concatenated to form the full SRGB.

bgp, mpls, routing