BGP-LS extensions
for Segment Routing BGP Egress Peer EngineeringCisco Systems, Inc.stefano@previdi.netCisco Systems, Inc.BrusselsBEcfilsfil@cisco.comArrcus, Inc.Keyur@arrcus.comIndividual Contributorraysaikat@gmail.comHuawei TechnologiesHuawei Campus, No. 156 Beiqing Rd.Beijing100095Chinajie.dong@huawei.comNetwork Working GroupSegment Routing (SR) leverages source routing. A node steers a packet
through a controlled set of instructions, called segments, by prepending
the packet with an SR header. A segment can represent any instruction,
topological or service-based. SR allows to enforce a flow through any
topological path and service chain while maintaining per-flow state only
at the ingress node of the SR domain.The Segment Routing architecture can be directly applied to the MPLS
dataplane with no change on the forwarding plane. It requires minor
extension to the existing link-state routing protocols.This document outline a BGP-LS extension for exporting BGP peering
node topology information (including its peers, interfaces and peering
ASs) in a way that is exploitable in order to compute efficient BGP
Peering Engineering policies and strategies.The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119.Segment Routing (SR) leverages source routing. A node steers a packet
through a controlled set of instructions, called segments, by prepending
the packet with an SR header with segment identifiers (SID). A SID can
represent any instruction, topological or service-based. SR allows to
enforce a flow through any topological path and service chain while
maintaining per-flow state only at the ingress node of the SR
domain.The Segment Routing architecture can be directly applied to the MPLS
dataplane with no change on the forwarding plane. It requires minor
extension to the existing link-state routing protocols.This document outline a BGP-LS extension for exporting BGP peering
node topology information (including its peers, interfaces and peering
ASs) in a way that is exploitable in order to compute efficient BGP
Egress Peer Engineering (BGP-EPE) policies and strategies.This document defines the BGP-LS extensions required to support the
Peer Node SID describing the BGP session between two nodes, the Peer
Adjacency SID describing the link (one or more) that is used by the BGP
session and the Peer Set SID describing an arbitrary set of sessions or
links between the local BGP node and its peers. These SIDs represent the
segments defined in .While an egress point topology usually refers to eBGP sessions
between external peers, there's nothing in the extensions defined in
this document that would prevent the use of these extensions in the
context of iBGP sessions.The main reference for this document is the SR architecture defined
in .The Segment Routing BGP Egress Peer Engineering (BGP-EPE)
architecture is described in .As defined in , a BGP-EPE
enabled Egress PE node MAY advertise SIDs corresponding to its attached
peers. These SIDs are called BGP peering segments or BGP Peering SIDs.
In case of eBGP, they enable the expression of source-routed
inter-domain paths.An ingress border router of an AS may compose a list of SIDs to steer
a flow along a selected path within the AS, towards a selected egress
border router C of the AS and through a specific peer. At minimum, a
BGP-EPE policy applied at an ingress PE involves two SIDs: the Node SID
of the chosen egress PE and then the BGP Peering SID for the chosen
egress PE peer or peering interface.This document defines the BGP-LS extensions for the BGP-EPE Peering
SIDs: Peer Node Segment (Peer-Node-SID)Peer Adjacency Segment (Peer-Adj-SID)Peer Set Segment (Peer-Set-SID)that have been defined in .Each BGP session MUST be described by a Peer Node SID. The
description of the BGP session MAY be augmented by additional Adjacency
SIDs. Finally, each Peer Node SID and Peer Adjacency SID MAY be part of
the same group/set so to be able to group EPE resources under a common
Peer-Set SID.Therefore, when the extensions defined in this document are applied
to the use case defined in :One Peer-Node-SID MUST be present.One or more Peer-Adj-SID MAY be present.Each of the Peer-Node-SID Peer-Adj-SID MAY use the same
Peer-Set-SID.While an egress point topology usually refers to eBGP sessions
between external peers, there's nothing in the extensions defined in
this document that would prevent the use of these extensions in the
context of iBGP sessions.This section describes the NLRI used for describing the connectivity
of the BGP Egress router. The connectivity is based on links and remote
peers/ASs and therefore the existing Link NLRI Type (defined in ) is used. A new Protocol-ID is used: BGP (codepoint 7
assigned by IANA () from the registry "BGP-LS
Protocol-IDs").The use of a new Protocol-ID allows separation and differentiation
between the NLRIs carrying BGP-EPE descriptors from the NLRIs carrying
IGP link-state information as defined in . The
Link NLRI Type uses descriptors and attributes already defined in in addition to new TLVs defined in the following
sections of this document.The extensions defined in this document apply to both internal and
external BGP-LS EPE advertisements. defines Link NLRI Type is as follows:Node Descriptors and Link Descriptors are defined in .Two new Node Descriptors Sub-TLVs are defined in this
document:BGP Router Identifier (BGP Router-ID): Type: 516 (assigned by IANA () from
the registry "BGP-LS Node Descriptor, Link Descriptor, Prefix
Descriptor, and Attribute TLVs").Length: 4 octetsValue: 4 octet unsigned integer representing the BGP
Identifier as defined in and .Confederation Member ASN (Member-ASN)Type: 517 (assigned by IANA () from
the registry "BGP-LS Node Descriptor, Link Descriptor, Prefix
Descriptor, and Attribute TLVs").Length: 4 octetsValue: 4 octet unsigned integer representing the Member ASN
inside the Confederation..The following Node Descriptors Sub-TLVs MUST appear in the Link
NLRI as Local Node Descriptors:BGP Router-ID, which contains the BGP Identifier of the local
BGP-EPE capable node.Autonomous System Number, which contains the local ASN or local
confederation identifier (ASN) if confederations are used.BGP-LS Identifier.It has to be noted that (section 2.1)
requires the BGP identifier (router-id) to be unique within an
Autonomous System. Therefore, the <ASN, BGP identifier> tuple is
globally unique.The following Node Descriptors Sub-TLVs MUST appear in the Link
NLRI as Remote Node Descriptors:BGP Router-ID, which contains the BGP Identifier of the peer
node.Autonomous System Number, which contains the peer ASN or the
peer confederation identifier (ASN), if confederations are
used.The following Node Descriptors Sub-TLVs MAY appear in the Link NLRI
as Local Node Descriptors:Member-ASN, which contains the ASN of the confederation member
(when BGP confederations are used).Node Descriptors as defined in .The following Node Descriptors Sub-TLVs MAY appear in the Link NLRI
as Remote Node Descriptors:Member-ASN, which contains the ASN of the confederation member
(when BGP confederations are used).Node Descriptors as defined in defined in .The following BGP-LS Link attributes TLVs are used with the Link
NLRI:Peer-Node-SID, Peer-Adj-SID and Peer-Set-SID have all the same
format defined here below:Type: 1101 or 1102 or 1103 (assigned by IANA () from the registry "BGP-LS Node Descriptor, Link
Descriptor, Prefix Descriptor, and Attribute TLVs").Length: variable.Flags: one octet of flags used when advertising a Peer-Adj-SID
(Peer-Node and Peer-Set SIDs don't have flags defined). The
following Peer-Adj-SID flags have been defined:V-Flag: Value flag. If set, then the Adj-SID carries a
value. By default the flag is SET.L-Flag: Local Flag. If set, then the value/index carried by
the Adj-SID has local significance. By default the flag is
SET.Other bits: MUST be zero when originated and ignored when
received.Weight: 1 octet. The value represents the weight of the SID for
the purpose of load balancing. An example use of the weight is
described in .SID/Index/Label. According to the TLV length and to the V and L
flags settings, it contains either: A 3 octet local label where the 20 rightmost bits are used
for encoding the label value. In this case the V and L flags
MUST be set.A 4 octet index defining the offset in the SRGB (Segment
Routing Global Block as defined in advertised by this
router. In this case, the SRGB MUST be advertised using the
extensions defined in .A 16 octet IPv6 address. In this case the V flag MUST be
set. The L flag MUST be unset if the IPv6 address is globally
unique.The values of the Peer-Node-SID, Peer-Adj-SID and Peer-Set-SID
Sub-TLVs SHOULD be persistent across router restart.The Peer-Node-SID MUST be present when BGP-LS is used for the use
case described in and MAY be
omitted for other use cases.The Peer-Adj-SID and Peer-Set-SID SubTLVs MAY be present when
BGP-LS is used for the use case described in and MAY be
omitted for other use cases.In addition, BGP-LS Nodes and Link Attributes, as defined in MAY be inserted in order to advertise the
characteristics of the link.In this section the following SIDs are defined:Peer Node Segment Identifier (Peer-Node-SID)Peer Adjacency Segment Identifier (Peer-Adj-SID)Peer Set Segment Identifier (Peer-Set-SID)The Peer-Node, Peer-Adj and Peer-Set SIDs can be either a local or a
global (depending on the setting of the V and L flags defined in . For example, when BGP-EPE is used in the context of
a SR network over the IPv6 dataplane, it is likely the case that the
IPv6 addresses used as SIDs will be global.The Peer-Node-SID describes the BGP session peer (neighbor). It
MUST be present when describing a BGP-EPE topology as defined in . The
Peer-Node-SID is encoded within the BGP-LS Link NLRI specified in
.The Peer-Node-SID, at the BGP node advertising it, has the
following semantic:SR header operation: NEXT (as defined in ).Next-Hop: the connected peering node to which the segment is
related.The Peer-Node-SID is advertised with a Link NLRI, where: Local Node Descriptors contains Remote Node Descriptors contains Link Descriptors Sub-TLVs, as defined in , contain the addresses used by the BGP session:
IPv4 Interface Address (Sub-TLV 259) contains the BGP
session IPv4 local address.IPv4 Neighbor Address (Sub-TLV 260) contains the BGP
session IPv4 peer address.IPv6 Interface Address (Sub-TLV 261) contains the BGP
session IPv6 local address.IPv6 Neighbor Address (Sub-TLV 262) contains the BGP
session IPv6 peer address.Link Attribute contains the Peer-Node-SID TLV as defined in
.In addition, BGP-LS Link Attributes, as defined in , MAY be inserted in order to advertise the
characteristics of the link.The Peer-Adj-SID, at the BGP node advertising it, has the following
semantic:SR header operation: NEXT (as defined in ).Next-Hop: the interface peer address.The Peer-Adj-SID is advertised with a Link NLRI, where:Local Node Descriptors contains Remote Node Descriptors contains Link Descriptors Sub-TLVs, as defined in , MUST contain the following TLVs: Link Local/Remote Identifiers (Sub-TLV 258) contains the
4-octet Link Local Identifier followed by the 4-octet value 0
indicating the Link Remote Identifier in unknown .In addition, Link Descriptors Sub-TLVs, as defined in , MAY contain the following TLVs: IPv4 Interface Address (Sub-TLV 259) contains the address
of the local interface through which the BGP session is
established.IPv6 Interface Address (Sub-TLV 261) contains the address
of the local interface through which the BGP session is
established.IPv4 Neighbor Address (Sub-TLV 260) contains the IPv4
address of the peer interface used by the BGP session.IPv6 Neighbor Address (Sub-TLV 262) contains the IPv6
address of the peer interface used by the BGP session.Link attribute used with the Peer-Adj-SID contains the TLV as
defined in .In addition, BGP-LS Link Attributes, as defined in , MAY be inserted in order to advertise the
characteristics of the link.The Peer-Set-SID, at the BGP node advertising it, has the following
semantic:SR header operation: NEXT (as defined in ).Next-Hop: load balance across any connected interface to any
peer in the related set.The Peer-Set-SID is advertised within a Link NLRI (describing a
Peer Node Segment or a Peer Adjacency segment) as a BGP-LS
attribute.The Peer Set Attribute contains the Peer-Set-SID TLV, defined in
identifying the set of which the
Peer-Node-SID or Peer-Adj-SID is a member.The following reference diagram is used throughout this document.
The solution is illustrated for IPv6 with MPLS-based SIDs and the
BGP-EPE topology is based on eBGP sessions between external peers.As stated in , the solution
illustrated hereafter is equally applicable to an iBGP session
topology. In other words, the solution also applies to the case where
C, D, F, and E are in the same AS and run iBGP sessions between each
other.IP addressing:C’s IP address of interface to D: 2001:db8:cd::c/64,
D’s interface: 2001:db8:cd::d/64C’s IP address of interface to F: 2001:db8:cf::c/64,
F’s interface: 2001:db8:cf::f/64C’s IP address of upper interface to E:
2001:db8:ce1::c/64, E’s interface: 2001:db8:ce1::eC’s local identifier of upper interface to E:
0.0.0.1.0.0.0.0C’s IP address of lower interface to E: 2001:db8:ce2::c,
E’s interface: 2001:db8:ce2::eC’s local identifier of lower interface to E:
0.0.0.2.0.0.0.0Loopback of E used for eBGP multi-hop peering to C:
2001:db8:e::e/128C’s loopback is 2001:db8:c::c/128 with SID 64BGP Router-IDs are C, D, F and E.C's BGP Router-ID: 192.0.2.3D's BGP Router-ID: 192.0.2.4E's BGP Router-ID: 192.0.2.5F's BGP Router-ID: 192.0.2.6C’s BGP peering:Single-hop eBGP peering with neighbor 2001:db8:cd::d (D)Single-hop eBGP peering with neighbor 2001:db8:cf::f (F)Multi-hop eBGP peering with E on ip address 2001:db8:e::e
(E)C’s resolution of the multi-hop eBGP session to E:Static route 2001:db8:e::e/128 via 2001:db8:ce1::eStatic route 2001:db8:e::e/128 via 2001:db8:ce2::eNode C configuration is such that: A Peer-Node-SID is allocated to each peer (D, F and E).An Peer-Adj-SID is defined for each recursing interface to a
multi-hop peer (CE upper and lower interfaces).A Peer-Set-SID is defined to include all peers in AS3 (peers F
and E).Local BGP-LS Identifier in router C is set to 10000.The Link NLRI Type is used in order to encode C's connectivity. The
Link NLRI uses the Protocol-ID value (to be assigned by IANA)Once the BGP-LS update is originated by C, it may be advertised to
internal (iBGP) as well as external (eBGP) neighbors supporting the
BGP-LS EPE extensions defined in this document.Descriptors: Local Node Descriptors (BGP Router-ID, local ASN, BGP-LS
Identifier): 192.0.2.3, AS1, 10000Remote Node Descriptors (BGP Router-ID, peer ASN): 192.0.2.4,
AS2Link Descriptors (BGP session IPv6 local address, BGP session
IPv6 neighbor address): 2001:db8:cd::c, 2001:db8:cd::dAttributes: Peer-Node-SID: 1012Link Attributes: see section 3.3.2 of Descriptors: Local Node Descriptors (BGP Router-ID, ASN, BGPLS Identifier):
192.0.2.3, AS1, 10000Remote Node Descriptors (BGP Router-ID ASN): 192.0.2.6, AS3Link Descriptors (BGP session IPv6 local address, BGP session
IPv6 peer address): 2001:db8:cf::c, 2001:db8:cf::fAttributes: Peer-Node-SID: 1022Peer-Set-SID: 1060Link Attributes: see section 3.3.2 of Descriptors: Local Node Descriptors (BGP Router-ID, ASN, BGP-LS Identifier):
192.0.2.3, AS1, 10000Remote Node Descriptors (BGP Router-ID, ASN): 192.0.2.5,
AS3Link Descriptors (BGP session IPv6 local address, BGP session
IPv6 peer address): 2001:db8:c::c, 2001:db8:e::eAttributes: Peer-Node-SID: 1052Peer-Set-SID: 1060Descriptors: Local Node Descriptors (BGP Router-ID, ASN, BGP-LS Identifier):
192.0.2.3, AS1, 10000Remote Node Descriptors (BGP Router-ID, ASN): 192.0.2.5,
AS3Link Descriptors (local interface identifier, IPv6 peer
interface address): 0.0.0.1.0.0.0.0 , 2001:db8:ce1::eAttributes: Peer-Adj-SID: 1032LinkAttributes: see section 3.3.2 of Descriptors: Local Node Descriptors (BGP Router-ID, ASN, BGP-LS Identifier):
192.0.2.3, AS1, 10000Remote Node Descriptors (BGP Router-ID, ASN): 192.0.2.5,
AS3Link Descriptors (local interface identifier, IPv6 peer
interface address): 0.0.0.2.0.0.0.0 , 2001:db8:ce2::eAttributes: Peer-Adj-SID: 1042LinkAttributes: see section 3.3.2 of Note to RFC Editor: Please remove this section prior to publication,
as well as the reference to RFC 7942.This section records the status of known implementations of the
protocol defined by this specification at the time of posting of this
Internet-Draft, and is based on a proposal described in . The description of implementations in this section
is intended to assist the IETF in its decision processes in progressing
drafts to RFCs. Please note that the listing of any individual
implementation here does not imply endorsement by the IETF. Furthermore,
no effort has been spent to verify the information presented here that
was supplied by IETF contributors. This is not intended as, and must not
be construed to be, a catalog of available implementations or their
features. Readers are advised to note that other implementations may
exist.According to , "this will allow reviewers and
working groups to assign due consideration to documents that have the
benefit of running code, which may serve as evidence of valuable
experimentation and feedback that have made the implemented protocols
more mature. It is up to the individual working groups to use this
information as they see fit".Several early implementations exist and will be reported in detail in
a forthcoming version of this document. For purposes of early
interoperability testing, when no FCFS code point was available,
implementations have made use of the following values: IANA has now confirmed the assignment of the above coidepoints.
See.This document defines:A new Protocol-ID: BGP. The codepoint is from the "BGP-LS
Protocol-IDs" registry.Two new TLVs: BGP-Router-ID and BGP Confederation Member. The
codepoints are in the "BGP-LS Node Descriptor, Link Descriptor,
Prefix Descriptor, and Attribute TLVs" registry.Three new BGP-LS Attribute TLVs: Peer-Node-SID, Peer-Adj-SID and
Peer-Set-SID. The codepoints are in the "BGP-LS Node Descriptor,
Link Descriptor, Prefix Descriptor, and Attribute TLVs"
registry.This document defines a new value in the registry "BGP-LS
Protocol-IDs":This document defines 5 new TLVs in the registry "BGP-LS Node
Descriptor, Link Descriptor, Prefix Descriptor, and Attribute
TLVs":Two new node descriptor TLVsThree new link attribute TLVsAll the new 5 codepoints are in the same registry: "BGP-LS Node
Descriptor, Link Descriptor, Prefix Descriptor, and Attribute TLVs".
However, the registry is organized in ranges (node descriptors, link
descriptors, node attributes, link attributes).The following new Node Descriptors TLVs are defined: The following new Link Attribute TLVs are defined: The BGP-LS () extensions that are described
in this document consist of additional BGP-LS descriptors and TLVs that
will follow the same manageability functions of BGP-LS, described in
.The operator MUST be capable of configuring, enabling, disabling the
advertisement of each of the Peer-Node-SID, Peer-Adj-SID and
Peer-Set-SID as well as to control which information is advertised to
which internal or external peer. This is not different from what is
required by a BGP speaker in terms of information origination and
advertisement. In addition, the advertisement of EPE information MUST
conform to standard BGP advertisement and propagation rules (iBGP, eBGP,
Route-Reflectors, Confederations). defines BGP-LS NLRIs to which the extensions
defined in this document apply.The Security Section of also applies to:
New Node Descriptors Sub-TLVs: BGP-Router-ID and
BGP-Confederation-Member;New BGP-LS Attributes TLVs: Peer-Node-SID, Peer-Adj-SID and
Peer-Set-SID.The extensions defined in this document do not introduce any
additional security aspects of BGP-LS.The authors would like to thank Jakob Heitz, Howard Yang, Hannes
Gredler, Peter Psenak, Arjun Sreekantiah and Bruno Decraene for their
feedback and comments.