rfc9871v3.txt   rfc9871.txt 
Internet Engineering Task Force (IETF) D. Rao, Ed. Internet Engineering Task Force (IETF) D. Rao, Ed.
Request for Comments: 9871 S. Agrawal, Ed. Request for Comments: 9871 S. Agrawal, Ed.
Category: Experimental Cisco Systems Category: Experimental Cisco Systems
ISSN: 2070-1721 October 2025 ISSN: 2070-1721 November 2025
BGP Color-Aware Routing (CAR) BGP Color-Aware Routing (CAR)
Abstract Abstract
This document describes a BGP-based routing solution to establish This document describes a BGP-based routing solution to establish
end-to-end intent-aware paths across a multi-domain transport end-to-end intent-aware paths across a multi-domain transport
network. The transport network can span multiple service provider network. The transport network can span multiple service provider
and customer network domains. The BGP intent-aware paths can be used and customer network domains. The BGP intent-aware paths can be used
to steer traffic flows for service routes that need a specific to steer traffic flows for service routes that need a specific
skipping to change at line 367 skipping to change at line 367
LCM-EC: BGP Local Color Mapping Extended Community LCM-EC: BGP Local Color Mapping Extended Community
NLRI: Network Layer Reachability Information [RFC4271] NLRI: Network Layer Reachability Information [RFC4271]
P node: An intra-domain transport router P node: An intra-domain transport router
RD: Route Distinguisher RD: Route Distinguisher
RR: Route Reflector RR: Route Reflector
T-RR: Transport Route Reflector
S-RR: Service Route Reflector
SAFI: Subsequent Address Family Identifier SAFI: Subsequent Address Family Identifier
TEA: Tunnel Encapsulation Attribute [RFC9012] TEA: Tunnel Encapsulation Attribute [RFC9012]
V/v, W/w: Generic representations of a service route (indicating V/v, W/w: Generic representations of a service route (indicating
prefix/mask length), regardless of AFI/SAFI or actual NLRI prefix/mask length), regardless of AFI/SAFI or actual NLRI
encoding encoding
1.2. Illustration 1.2. Illustration
skipping to change at line 714 skipping to change at line 718
redundant paths at every BGP hop identical to BGP-LU or BGP-IP. For redundant paths at every BGP hop identical to BGP-LU or BGP-IP. For
instance, BGP CAR routes originated by two or more egress ABRs in a instance, BGP CAR routes originated by two or more egress ABRs in a
domain are advertised as multiple paths to ingress ABRs in the domain are advertised as multiple paths to ingress ABRs in the
domain, where they become equal-cost or primary-backup paths. A domain, where they become equal-cost or primary-backup paths. A
failure of an egress ABR is detected and handled by ingress ABRs failure of an egress ABR is detected and handled by ingress ABRs
locally within the domain for faster convergence, without any locally within the domain for faster convergence, without any
necessity to propagate the event to upstream nodes for traffic necessity to propagate the event to upstream nodes for traffic
restoration. restoration.
BGP ADD-PATH [RFC7911] SHOULD be enabled for BGP CAR to signal BGP ADD-PATH [RFC7911] SHOULD be enabled for BGP CAR to signal
multiple next hops through a TRR. multiple next hops through a transport RR (T-RR).
2.8. BGP CAR Signaling Through Different Color Domains 2.8. BGP CAR Signaling Through Different Color Domains
[Color Domain 1 A]-----[B Color Domain 2 E2] [Color Domain 1 A]-----[B Color Domain 2 E2]
[C1=low delay ] [C2=low delay ] [C1=low delay ] [C2=low delay ]
Let us assume a BGP CAR route (E2, C2) is signaled from B to A, two Let us assume a BGP CAR route (E2, C2) is signaled from B to A, two
BRs of Domain 2 and Domain 1, respectively. Let us assume that these BRs of Domain 2 and Domain 1, respectively. Let us assume that these
two domains do not share the same color-to-intent mapping (i.e., they two domains do not share the same color-to-intent mapping (i.e., they
belong to different color domains). Low delay in Domain 2 is color belong to different color domains). Low delay in Domain 2 is color
skipping to change at line 1522 skipping to change at line 1526
* Each domain has Flex-Algo 128. Prefix-SID for a node is Segment * Each domain has Flex-Algo 128. Prefix-SID for a node is Segment
Routing Global Block (SRGB) 168000 plus node number. Routing Global Block (SRGB) 168000 plus node number.
* A BGP CAR route (E2, C1) is advertised by egress BRM node 451. * A BGP CAR route (E2, C1) is advertised by egress BRM node 451.
The route is sourced locally from redistribution from IGP Flex- The route is sourced locally from redistribution from IGP Flex-
Algo 128. Algo 128.
* Not shown for simplicity, node 452 will also advertise (E2, C1). * Not shown for simplicity, node 452 will also advertise (E2, C1).
* When a TRR is used within the domain or across domains, ADD-PATH * When a transport RR (T-RR) is used within the domain or across
is enabled to advertise paths from both egress BRs to its clients. domains, ADD-PATH is enabled to advertise paths from both egress
BRs to its clients.
* Egress PE E2 advertises a VPN route RD:V/v with BGP Color-EC C1 * Egress PE E2 advertises a VPN route RD:V/v with BGP Color-EC C1
that propagates via service RRs to ingress PE E1. that propagates via service RRs to ingress PE E1.
* E1 steers V/v prefix via color-aware path (E2, C1) and VPN label * E1 steers V/v prefix via color-aware path (E2, C1) and VPN label
30030. 30030.
5.2. Deployment Model 5.2. Deployment Model
5.2.1. Flat 5.2.1. Flat
skipping to change at line 1635 skipping to change at line 1640
* Each BGP hop allocates local label and programs swap entry in * Each BGP hop allocates local label and programs swap entry in
forwarding for (451, C1). forwarding for (451, C1).
* 121 resolves received BGP CAR route (451, C1) via 231 (label * 121 resolves received BGP CAR route (451, C1) via 231 (label
168451) on color-aware path (231, C1). 168451) on color-aware path (231, C1).
- Color-aware path (231, C1) is Flex-Algo 128 path to 231 (label - Color-aware path (231, C1) is Flex-Algo 128 path to 231 (label
168231). 168231).
* 451 advertises BGP CAR route (E2, C1) via 451 to TRR T-RR2, which * 451 advertises BGP CAR route (E2, C1) via 451 to T-RR2, which
reflects it to TRR T-RR1, which reflects it to 121. reflects it to T-RR1, which reflects it to 121.
* 121 receives BGP CAR route (E2, C1) via 451 with label 168002. * 121 receives BGP CAR route (E2, C1) via 451 with label 168002.
- Let's assume 121 selects that path. - Let's assume 121 selects that path.
* 121 resolves BGP CAR route (E2, C1) via 451 on color-aware path * 121 resolves BGP CAR route (E2, C1) via 451 on color-aware path
(451, C1). (451, C1).
- Color-aware path (451, C1) is BGP CAR path to 451 (label - Color-aware path (451, C1) is BGP CAR path to 451 (label
168451). 168451).
skipping to change at line 1718 skipping to change at line 1723
Figure 5: Hierarchical BGP Transport CAR, Next-Hop-Unchanged Figure 5: Hierarchical BGP Transport CAR, Next-Hop-Unchanged
(NHU) at iBR (NHU) at iBR
* Nodes 341, 231, and 121 receive and resolve BGP CAR route (451, * Nodes 341, 231, and 121 receive and resolve BGP CAR route (451,
C1) the same as in the previous model. C1) the same as in the previous model.
* Node 121 allocates local label and programs swap entry in * Node 121 allocates local label and programs swap entry in
forwarding for (451, C1). forwarding for (451, C1).
* 451 advertises BGP CAR route (E2, C1) to TRR T-RR2, which reflects * 451 advertises BGP CAR route (E2, C1) to T-RR2, which reflects it
it to TRR T-RR1, which reflects it to 121. to T-RR1, which reflects it to 121.
* Node 121 advertises (E2, C1) to E1 with next hop as 451 (i.e., * Node 121 advertises (E2, C1) to E1 with next hop as 451 (i.e.,
next-hop-unchanged). next-hop-unchanged).
* 121 also advertises (451, C1) to E1 with next-hop-self (121) and * 121 also advertises (451, C1) to E1 with next-hop-self (121) and
label 168451. label 168451.
* E1 resolves BGP CAR route (451, C1) via 121 on color-aware path * E1 resolves BGP CAR route (451, C1) via 121 on color-aware path
(121, C1). (121, C1).
skipping to change at line 3581 skipping to change at line 3586
+-----+ SRv6SID=B:C11:2:DT4:: +-----+ +-----+ SRv6SID=B:C11:2:DT4:: +-----+
...... |S-RR1| <..................................|S-RR2| <..... ...... |S-RR1| <..................................|S-RR2| <.....
: +-----+ +-----+ : : +-----+ +-----+ :
: : : :
: : : :
: AS2 AS1 : : AS2 AS1 :
+-:------------------------------------+ +--------------:--+ +-:------------------------------------+ +--------------:--+
| : | | : | | : | | : |
| : B:C11::/32 via IP1 | | : | | : B:C11::/32 via IP1 | | : |
| : +-----+ LCM=C1, AIGP=10 | | : | | : +-----+ LCM=C1, AIGP=10 | | : |
| : | TRR |<.............. | | : | | : |T-RR |<.............. | | : |
| : +-----+<.......... : | | : | | : +-----+<.......... : | | : |
| : : B:C11::/32 : : | | : | | : : B:C11::/32 : : | | : |
| : : via IP2 : : | | : | | : : via IP2 : : | | : |
| : : LCM=C1,AIGP=10: : | | : | | : : LCM=C1,AIGP=10: : | | : |
| : ......... : : : | B:C11::/32 | : | | : ......... : : : | B:C11::/32 | : |
| : : : : : | via 231 | +-----| | : : : : : | via 231 | +-----|
| : : : : : | LCM=C1 | | E2 | | : : : : : | LCM=C1 | | E2 |
: : +---+ : +---+ : : | AIGP=10 | +-----| : : +---+ : +---+ : : | AIGP=10 | +-----|
| : : |P11|<.:..>|P13| : +----+ +---+ : | | : : |P11|<.:..>|P13| : +----+ +---+ : |
| : : +---+ : +---+ : | 121|-----IP1|231| : | | : : +---+ : +---+ : | 121|-----IP1|231| : |
skipping to change at line 3617 skipping to change at line 3622
iPE ASBR ASBR ePE iPE ASBR ASBR ePE
Figure 15 Figure 15
The topology above is an example to illustrate the BGP CAR SRv6 The topology above is an example to illustrate the BGP CAR SRv6
locator prefix route-based design (Section 7.1.1) with hop-by-hop locator prefix route-based design (Section 7.1.1) with hop-by-hop
IPv6 routing within and between domains. IPv6 routing within and between domains.
* Multi-AS network with eBGP CAR session between ASBRs. * Multi-AS network with eBGP CAR session between ASBRs.
* Transport RR (TRR) peers with P, BR, and PE clients within an AS * Transport RR (T-RR) peers with P, BR, and PE clients within an AS
to propagate CAR prefixes. ADD-PATH is enabled to propagate to propagate CAR prefixes. ADD-PATH is enabled to propagate
multiple paths. multiple paths.
* IS-IS (IGP) Flex-Algo 128 for SRv6 is running in each AS (AS may * IS-IS (IGP) Flex-Algo 128 for SRv6 is running in each AS (AS may
consist of multiple IGP domains), where the following steps apply: consist of multiple IGP domains), where the following steps apply:
- Prefix B:C11::/32 summarizes Flex-Algo 128 block in AS1 for the - Prefix B:C11::/32 summarizes Flex-Algo 128 block in AS1 for the
given intent. Node locators in the egress domain are sub- given intent. Node locators in the egress domain are sub-
allocated from the block for the given intent. allocated from the block for the given intent.
- Similarly, Prefix B:C12::/32 summarizes Flex-Algo 128 block in - Similarly, Prefix B:C12::/32 summarizes Flex-Algo 128 block in
AS2. AS2.
- Per Flex-Algo external subnets for eBGP next hops IP1 and IP2 - Per Flex-Algo external subnets for eBGP next hops IP1 and IP2
are distributed in IS-IS within AS2. are distributed in IS-IS within AS2.
* BGP CAR prefix route B:C11::/32 with LCM C1 is originated by AS1 * BGP CAR prefix route B:C11::/32 with LCM C1 is originated by AS1
BRs 231 and 232 on eBGP sessions to AS2 BRs 121 and 122. BRs 231 and 232 on eBGP sessions to AS2 BRs 121 and 122.
* ASBR 121 and 122 propagate the route in AS2 to all the P, ABRs, * ASBR 121 and 122 propagate the route in AS2 to all the P, ABRs,
and PEs through TRR. and PEs through T-RR.
* Every router in AS2 resolves BGP CAR prefix B:C11::/32 next hops * Every router in AS2 resolves BGP CAR prefix B:C11::/32 next hops
IP1 and IP2 in IS-ISv6 Flex-Algo 128 and programs B:C11::/32 IP1 and IP2 in IS-ISv6 Flex-Algo 128 and programs B:C11::/32
prefix in global IPv6 forwarding table. prefix in global IPv6 forwarding table.
* AIGP attribute influences BGP CAR route best path decision. * AIGP attribute influences BGP CAR route best path decision.
* Egress PE E2 advertises a VPN route RD:V/v with SRv6 Service SID * Egress PE E2 advertises a VPN route RD:V/v with SRv6 Service SID
B:C11:2:DT4::. Service SID is allocated by E2 from its locator of B:C11:2:DT4::. Service SID is allocated by E2 from its locator of
color C1 intent. color C1 intent.
skipping to change at line 3748 skipping to change at line 3753
domain. domain.
- Prefix B:C13::/32 summarizes Flex-Algo 128 block in ingress - Prefix B:C13::/32 summarizes Flex-Algo 128 block in ingress
domain. domain.
* BGP CAR route B:C11::/32 is originated by ABRs 231 and 232 with * BGP CAR route B:C11::/32 is originated by ABRs 231 and 232 with
LCM C1. Along the propagation path, BRs set next-hop-self and LCM C1. Along the propagation path, BRs set next-hop-self and
appropriately update the intra-domain encapsulation information appropriately update the intra-domain encapsulation information
for the C1 intent. For example, 231 and 121 signal SRv6 SID of for the C1 intent. For example, 231 and 121 signal SRv6 SID of
End behavior [RFC8986] allocated from their respective locators End behavior [RFC8986] allocated from their respective locators
for the C1 intent. (Note: IGP Fleixible Algorithm is shown for for the C1 intent. (Note: IGP Flexible Algorithm is shown for
intra-domain path, but SR Policy may also provide the path as intra-domain path, but SR Policy may also provide the path as
shown in Appendix C.3.) shown in Appendix C.3.)
* AIGP attribute influences BGP CAR route best path decision. * AIGP attribute influences BGP CAR route best path decision.
* Egress PE E2 advertises a VPN route RD:V/v with SRv6 Service SID * Egress PE E2 advertises a VPN route RD:V/v with SRv6 Service SID
B:C11:2:DT4::. Service SID is allocated by E2 from its locator of B:C11:2:DT4::. Service SID is allocated by E2 from its locator of
color C1 intent. color C1 intent.
* Ingress PE E1 learns CAR route B:C11::/32 and VPN route RD:V/v * Ingress PE E1 learns CAR route B:C11::/32 and VPN route RD:V/v
skipping to change at line 3795 skipping to change at line 3800
C.3. BGP CAR (E, C) Route Distribution for Steering Non-Routed Service C.3. BGP CAR (E, C) Route Distribution for Steering Non-Routed Service
SID SID
RD:V/v via E2 RD:V/v via E2
+-----+ SRv6SID: B:01:2:DT4:: +-----+ +-----+ SRv6SID: B:01:2:DT4:: +-----+
...... |S-RR1| <..................................|S-RR2| <....... ...... |S-RR1| <..................................|S-RR2| <.......
: +-----+ Color C2 +-----+ : : +-----+ Color C2 +-----+ :
: : : :
: +-----+ (E2,C2) via 231 : : +-----+ (E2,C2) via 231 :
: -----------------| TRR |-------------------| : : -----------------|T-RR |-------------------| :
:| +-----+ SID=B:C21:2:B6:: | : :| +-----+ SID=B:C21:2:B6:: | :
+-:|---------------------+---------------------|+------------------:--+ +-:|---------------------+---------------------|+------------------:--+
| :| | || : | | :| | || : |
| :| | || : | | :| | || : |
| :| B:C21::/32 via 121 | B:C21::/32 via 231 ||SR Policy(E2,C2) : | | :| B:C21::/32 via 121 | B:C21::/32 via 231 ||SR Policy(E2,C2) : |
| :| LCM=C2,AIGP=110 | LCM=C2 AIGP=10 ||BSID=B:C21:2:B6:: : | | :| LCM=C2,AIGP=110 | LCM=C2 AIGP=10 ||BSID=B:C21:2:B6:: : |
| :| +---+ +---+ : | | :| +---+ +---+ : |
| :|-------------------|121|<-----------------|231|<-------------| : | | :|-------------------|121|<-----------------|231|<-------------| : |
| :V SR Policy(121,C2) +---+SR Policy(231,C2) +---+ | : | | :V SR Policy(121,C2) +---+SR Policy(231,C2) +---+ | : |
|----+ | | +-----| |----+ | | +-----|
skipping to change at line 3831 skipping to change at line 3836
route-based design (Section 7.1.2). The example is iBGP, but the route-based design (Section 7.1.2). The example is iBGP, but the
design also applies to eBGP (multi-AS). design also applies to eBGP (multi-AS).
* SR Policy (E2, C2) provides given intent in egress domain. * SR Policy (E2, C2) provides given intent in egress domain.
- SR Policy (E2, C2) with segments <B:01:z:END::, B:01:2:END::>, - SR Policy (E2, C2) with segments <B:01:z:END::, B:01:2:END::>,
where z is the node id in egress domain. where z is the node id in egress domain.
* Egress ABRs 231 and 232 redistribute SR Policy into BGP CAR Type-1 * Egress ABRs 231 and 232 redistribute SR Policy into BGP CAR Type-1
NLRI (E2, C2) to other domains, with SRv6 SID of End.B6 behavior. NLRI (E2, C2) to other domains, with SRv6 SID of End.B6 behavior.
This route is propagated to ingress PEs through TRR or inline with This route is propagated to ingress PEs through T-RR or inline
next-hop-unchanged. through BRs (121 and 122) with next-hop-unchanged.
* The ABRs also advertise BGP CAR prefix route (B:C21::/32) * The ABRs also advertise BGP CAR prefix route (B:C21::/32)
summarizing locator part of SRv6 SIDs for SR policies of given summarizing locator part of SRv6 SIDs for SR policies of given
intent to different PEs in egress domain. BGP CAR prefix route intent to different PEs in egress domain. BGP CAR prefix route
propagates through BRs. At each BGP hop, BGP CAR prefix next-hop propagates through BRs. At each BGP hop, BGP CAR prefix next-hop
resolution triggers intra-domain transit SR Policy (C2, CAR next resolution triggers intra-domain transit SR Policy (C2, CAR next
hop). For example: hop). For example:
- SR Policy (231, C2) with segments <B:02:y:END::, - SR Policy (231, C2) with segments <B:02:y:END::,
B:02:231:END::>, and B:02:231:END::>, and
 End of changes. 12 change blocks. 
15 lines changed or deleted 20 lines changed or added

This html diff was produced by rfcdiff 1.48.