RFC 9723:BGP Colored Prefix Routing (CPR) for Services Based on Segment Routing over IPv6 (SRv6),May 2025
梗概
这份文档(RFC 9723)描述了一种在BGP中通告与颜色扩展团体字(Color Extended Community)关联的IPv6前缀的新机制。它的目的是为基于IPv6分段路由(SRv6)的服务建立端到端的意图感知路径。这种前缀被称为“着色前缀”,而整个机制则被称为“着色前缀路由”(Colored Prefix Routing, CPR)。
在SRv6网络中,着色前缀实际上就是与不同业务意图相关联的SRv6定位符(Locator)。当需要提供具有特定意图的SRv6服务(比如SRv6 VPN服务)时,服务提供商可以在对应的着色前缀(即SRv6定位符)下分配SRv6分段标识符(Segment Identifiers, SID),并将这些SID作为着色前缀进行通告。
这种操作方式允许网络根据SRv6服务SID与着色前缀之间的最长前缀匹配原则,将业务流量精准地引导到端到端的意图感知路径上。该机制巧妙地复用了现有的BGP IPv6地址族和颜色扩展团体字,无需定义新的BGP扩展属性,因此具有良好的互操作性,并可以在属于同一可信域的多个自治系统(AS)网络中实现增量部署。
1、简介
如今,单一网络承载多种业务已成为趋势,而不同业务对网络的要求也各不相同。这些要求通常被视为服务或客户的“意图”,并以一个称为“颜色”的抽象概念来表示。
在跨越多个自治系统(AS)交付服务的场景下,网络需要为服务提供不同的端到端路径来满足其特定意图。文档[INTENTAWARE]详细描述了域间意图感知路由所面临的问题和相关需求。
域间路径可以利用多协议标签交换(MPLS)或IP数据平面来建立。在基于MPLS的网络中,通常采用基于[RFC8277]机制建立的端到端标签交换路径(LSP),也就是常说的BGP-LU。这种方式需要每个域的入口边界节点对端到端LSP进行标签交换,并将相应的标签栈施加到本域内的数据包上。
而在基于IP的网络中,则可以通过BGP在不同域之间发布IP可达性信息,使所有域的边界节点都能获知其他域目的节点的IP前缀路由。随着SRv6技术的引入,BGP服务可以被分配SRv6服务SID,这些SID能够根据其所属的SRv6定位符前缀在网络中进行路由。这样一来,仅依靠到前缀的域间路由就可以建立域间路径,基于BGP-LU的域间LSP对于纯IPv6和SRv6网络来说就不再是必需的了。
本文档(作为RFC 9723的解读)旨在介绍一种通过BGP通告与颜色关联的IPv6前缀的机制,从而为SRv6服务建立端到端意图感知路径。颜色扩展团体字中的颜色值就代表了具体的意图。这种IPv6前缀被称为“着色前缀”,整个机制则称为着色前缀路由(CPR)。
在SRv6网络中,着色前缀就是与不同意图绑定的SRv6定位符。具有特定意图的SRv6 BGP服务可以在相应的着色前缀下分配SRv6 SID,并将这些前缀作为着色前缀进行通告。这使得网络能够根据SRv6服务SID与着色前缀的最长前缀匹配,将业务流量引导进入预设的端到端意图感知路径。在数据平面,这种域间路径不需要专用的传输标签或SID,因此与其他方案相比,其封装开销更小。
由于复用了现有的BGP IPv6地址族和颜色扩展团体字,无需新的BGP扩展,因此该机制易于实现互操作,并且可以在属于同一可信域的多AS网络中进行增量部署。
2、BGP CPR详解
2.1、着色前缀分配
在SRv6网络中,每个节点都需要分配一个SRv6定位符。为了区分N种不同的业务意图,可以为提供商边缘(PE)节点分配N个SRv6定位符,每个定位符都关联一个由颜色值标识的特定意图。一种实用的实现方法是将节点的基本SRv6定位符切分为N个子网段,这些子网段就是与不同意图关联的着色前缀。
举个例子,假设一个PE节点分配到的基本SRv6定位符是 2001:db8:aaaa:1::/64。为了支持16种不同的意图,可以将这个/64的前缀进一步划分为16个/68的子定位符,范围从 2001:db8:aaaa:1:0000::/68 到 2001:db8:aaaa:1:F000::/68。每个/68的子定位符都可以关联一种不同的意图,例如低延迟、高带宽等。
2.2、着色前缀宣告
PE节点上分配好着色前缀后,这些前缀的路由不仅需要在本地域内传播,还必须通过BGP发布到其他域,以便后续的BGP SRv6业务路由能够解析到相应的CPR路由上。
在多AS的IPv6网络中,宣告着色前缀路由使用的是[RFC2545]中定义的IPv6单播路由机制,其地址族/后续地址族(AFI/SAFI)为 2/1。宣告时会携带颜色扩展团体字,其中的颜色值就指明了路由的意图。

图1:CPR路由宣告的拓扑示例
假设图1中的PE3配置了两个不同的着色前缀 CLP-1 和 CLP-2,分别用于“低延迟”和“高带宽”两种意图。在此示例中,我们假定代表特定意图的颜色值在所有域中是一致的。
- PE3为着色前缀
PE3:CL1:: 和 PE3:CL2:: 发起BGP IPv6单播路由。每条路由都携带对应的颜色扩展团体字(例如C1或C2)。同时,PE3还会发布一条不携带颜色扩展团体字的基本SRv6定位符前缀 PE3:BL 的路由。
- ASBR31和ASBR32收到来自PE3的CPR路由后,会将下一跳改为自身,并进一步发布给ASBR23和ASBR24。
- ASBR23和ASBR24收到这些CPR路由。由于AS2中的颜色-意图映射与AS3一致,因此路由中的颜色扩展团体字保持不变。它们同样将下一跳改为自身,在AS2内继续通告这些CPR路由。
- ASBR21和ASBR22的行为与ASBR31/ASBR32类似。
- ASBR11和ASBR12的行为与ASBR23/ASBR24类似。
在正常情况下,与CPR路由关联的颜色值在所有域中应保持一致,因此颜色扩展团体字在传递过程中不会改变。但在某些特殊场景下,同一个意图在不同域中可能用不同的颜色值表示。这时,就需要在域的边界节点根据预设的颜色映射策略,更新CPR路由中的颜色扩展团体字。
2.3、CPR到域内路径解析
接收到CPR路由的域边界节点,可以根据元组 (N, C) 将其解析为一条域内的颜色感知路径。其中,N 是CPR路由的下一跳,C 是其携带的颜色扩展团体字。构建域内颜色感知路径可以采用多种现有机制,例如:
- SRv6策略
- SR-MPLS策略
- SRv6 Flex算法
- SR-MPLS Flex算法
- RSVP-TE
例如,如果PE1收到一条通往 PE3:CL1:: 的CPR路由,其颜色为C1,下一跳是ASBR11,那么PE1就可以根据元组 (ASBR11, C1),将这条CPR路由解析为一条域内的SRv6策略路径。
2.4、SRv6业务路由发布
对于与特定意图关联的SRv6服务,其SRv6服务SID可以在对应的着色定位符前缀下进行分配。例如,在图1拓扑的PE3上,可以为需要低延迟意图的SRv6 VPN服务分配一个SRv6 End.DT4 SID:PE3:CL1:DT::,其中 PE3:CL1:: 就是为低延迟服务分配的着色前缀。
SRv6服务路由的发布遵循[RFC9252]定义的机制。如果采用域间VPN Option C方案,那么SRv6业务路由的下一跳将始终设置为发起该路由的原始PE(如PE3),并且在传递过程中不会改变。由于服务的意图已经嵌入在SRv6服务SID之中(通过其所属的着色前缀体现),因此SRv6服务路由本身不需要再携带颜色扩展团体字。
2.5、SRv6服务引导
通过CPR路由机制,接收SRv6服务路由的入口PE节点(如PE1)会遵循SRv6最短路径转发行为。业务路由中携带的SRv6服务SID,将被用作封装业务数据包的外层IPv6头中的目的地址。
如果该入口PE已经接收并安装了相应的CPR路由,它就会对SRv6服务SID执行与着色前缀的最长前缀匹配。通过匹配找到的“下一跳”,实际上就是一条之前解析好的域内颜色感知路径,业务流量将通过这条路径被转发。这个过程会在数据包途径的每一个域的边界节点处重复进行,直到最终抵达目的地。
3、封装转发过程
本节结合图1的拓扑,说明数据包在匹配了CPR路由后,具体的封装和转发过程。
3.1、基于SRv6域内路径的CPR
以下以CPR over SRv6策略为例,说明报文封装和转发过程。这里使用[RFC8754]中描述的IPv6和分段路由报文头(SRH)的抽象表示法。
- PE3配置了用于“低延迟”的着色前缀
PE3:CL1::。
- 在AS1中,PE1上针对元组
(ASBR11, C1) 的SRv6策略,其SID列表表示为 <P1, ASBR11>。
- 在AS2中,ASBR21上针对元组
(ASBR23, C1) 的SRv6策略,其SID列表表示为 <P2, ASBR23>。
- 在AS3中,ASBR31上针对元组
(PE3, C1) 的SRv6策略,其SID列表表示为 <P3, PE3>。
假设 C-pkt 是PE1从其连接的CE设备接收到的原始客户数据包。对于一个属于SRv6 VPN服务(其SRv6服务SID为 PE3:CL1.DT6)的数据包,采用H.Encaps.Red行为进行封装和转发的全过程如下所示:

图2:基于SRv6域内路径的CPR数据包转发示例
在某些自治系统中,也可以使用SRv6 Flex-Algo来提供意图感知的域内路径,其封装方式与SRv6策略的情况类似。
3.2、基于MPLS域内路径的CPR
在某些自治系统使用MPLS数据平面的混合网络场景中,CPR路由可以被解析为颜色感知的域内MPLS LSP。这种LSP可以通过SR-MPLS策略、SR-MPLS Flex-Algo或RSVP-TE来建立。
SRv6业务报文(本质上是IPv6报文)在域内MPLS LSP上的封装和转发,基于[RFC3031]、[RFC3032]和[RFC8660]中定义的MPLS机制,其行为类似于IPv6提供商边缘路由器(6PE)。
- 在AS1中,PE1上针对
(ASBR11, C1) 的SR-MPLS策略,其SID列表表示为 <P1, ASBR11>。
- 在AS2中,ASBR21上用于
(ASBR23, C1) 的SR-MPLS Flex-Algo,其SID列表表示为 <ASBR23>。
- 在AS3中,ASBR31上针对
(PE3, C1) 的SR-MPLS策略,其SID列表表示为 <P3, PE3>。
假设 C-pkt 是PE1从其连接的CE设备接收到的原始客户数据包。对于一个属于SRv6 VPN服务(其SRv6服务SID为 PE3:CL1.DT6)的数据包,其报文封装和转发过程如下所示:

图3:基于MPLS域内路径的CPR数据包转发示例
4、操作注意事项
CPR机制适用于多个互连AS属于同一运营商,或者不同运营商的AS之间存在操作信任模型的网络场景,即它们属于同一个“可信域”。
如[INTENTAWARE]所述,域间意图感知路由也可以通过适用于多个AS的SR策略(逻辑隧道)来实现。此外,也可以根据颜色扩展团体字将特定意图的服务流量引导至域间SR策略。出于文档中描述的原因,部分运营商可能更青睐基于BGP路由的解决方案。运营商也需要考虑用于端到端意图感知路径计算的域间控制器的可用性。本文档提出的CPR,提供了一种使用BGP和IPv6着色前缀来表示意图的替代方案。
当将着色前缀分配为节点基本SRv6定位符的子网段时,基本定位符前缀的IPv6单播路由是一个覆盖所有着色定位符的超集前缀。为了确保着色定位符前缀能够被分发到入口PE节点,需要网络对携带了颜色扩展团体字的IPv6单播路由禁用路由聚合功能。
在CPR机制中,在发起着色前缀的节点处,每个前缀就与一种特定意图(颜色)绑定了。在每个域中,根据颜色映射策略,同一条CPR路由总是被更新为相同的颜色。如果出现多个具有相同前缀但不同颜色扩展团体字的CPR路由副本,这将被视为配置错误。
所有边界节点和入口PE节点都需要在其RIB和FIB中安装着色定位符前缀。对于支持CPR机制的中转域,其边界节点可以使用元组 (N, C) 将CPR路由解析为意图感知的域内路径。对于不支持CPR机制的传统中转域,其边界节点会忽略颜色扩展团体字,并通过尽力而为的普通域内路径将CPR路由解析到下一跳 N,同时继续将CPR路由(仅更新下一跳为自身)发布到下游域。这种设计允许CPR路由在支持该机制的AS中被解析为意图感知路径,而在传统AS中则回退到尽力而为的转发路径。
相邻自治系统之间可能存在多条域间链路,边界BGP发言者可以通过EBGP从另一个域的多个对等体接收同一条CPR路由。在为特定着色前缀选择最佳路径时,BGP发言者的本地策略可以考虑域间链路的属性以及接收到的CPR路由的属性,以更好地满足意图。详细的策略定义超出了本文档的范围,但在多AS环境中,不同域内BGP发言者的策略需要保持一致。
本文档使用IPv6单播地址族来通告IPv6着色前缀。这种方法的主要优点是提高了与不支持意图感知路径的传统网络的互操作性,并促进了意图感知路由机制的增量部署。一个潜在的考虑点是需要将着色前缀与公共的IPv6单播路由区分开。由于网络基础设施的IP前缀和SRv6定位符通常作为IP单播路由的一部分进行通告,并且在网络管理边界配置了适当的过滤器,因此这通常不被视为重大问题。[RFC9602]为SRv6 SID分配了 5f00::/16 的专用地址块。根据可信域内参与者的共同约定,可以配置过滤器默认丢弃来自 5f00::/16 的流量,但允许在这些域内使用着色前缀。
5、总结
BGP着色前缀路由(CPR)为基于SRv6的服务提供了一种灵活且可扩展的域间意图感知路由解决方案。它通过复用现有BGP属性和地址族,简化了部署,并利用IPv6的前缀层次结构,将业务意图直接编码在SRv6定位符和SID中,实现了高效的流量调度。对于正在向SRv6演进或规划多自治系统(AS) 网络架构的团队而言,理解CPR的工作原理具有重要意义。想了解更多前沿网络技术动态与实践,欢迎访问云栈社区进行交流与探讨。