| 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.  | ||||