PCEP技术白皮书
Copyright © 2022 新华三技术有限公司 版权所有,保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。
除新华三技术有限公司的商标外,本手册中出现的其它公司的商标、产品标识及商品名称,由各自权利人拥有。
本文中的内容为通用性技术信息,某些信息可能不适用于您所购买的产品。
在大型多域网络中,路径计算非常复杂。在某些场景下,需要在控制器上部署特殊的计算组件,并需要不同域中的节点之间协作,才能完成路径计算。这使得网元在进行路径计算时效率低,同时还会降低网元本身的转发性能。
PCEP(Path Computation Element Communication Protocol,路径计算单元通信协议)通过将网络内的路径计算功能进行集中控制,由计算单元来单独完成MPLS、SRv6路径的计算,来解决上述问题。PCEP这种集中计算的核心思想与SDN技术非常匹配。因此,PCEP也作为MPLS网络向SDN网络迁移的一种方案。
本文档仅介绍通过PCEP技术计算LSP路径的相关内容。
PCEP具有如下特点:
· 集中控制:将网络内的路径计算功能进行集中控制,提升路径计算效率,易于管理与维护网络。
· 跨域路径计算:在大型多域网络中,可以通过多个PCE协作完成跨域路径的计算。
图2-1 PCEP网络模型
如图2-1所示,典型的PCEP网络包括如下几部分:
· PCE(Path Computation Element,路径计算单元):网络中的一个实体,用于为网络上的设备提供路径计算服务,可进行区域内的路径计算,也可在复杂的网络环境中计算完整的LSP路径。
· PCC(Path Computation Client,路径计算客户端):请求PCE执行路径计算,并根据PCE返回的路径信息建立LSP。
· PCEP会话:PCC与PCE、PCE与PCE之间建立的会话。PCEP会话分为如下两种类型:
¡ Stateless PCEP会话(Stateless Path Computation Element Protocol,无状态PCEP):该类型PCEP会话下,PCC仅请求PCE执行路径计算;PCE仅提供路径计算服务。
¡ Stateful PCEP会话(Stateful Path Computation Element Protocol,有状态PCEP):该类型PCEP会话下,PCC向PCE上报网络内所有LSP信息;PCE除了提供路径计算服务外,可以创建、删除和优化域内的LSP,以达到最大程度分配和使用网络资源的目的。Stateful PCE会话包括如下两种类型:
- Active-Stateful PCEP会话(Active-Stateful Path Computation Element Protocol,主动有状态PCEP):主动有状态PCEP会话下,PCC可以将LSP托管给PCE;PCE可以对LSP进行优化。
- Passive-Stateful PCEP会话(Passive-Stateful Path Computation Element Protocol,被动有状态PCE):被动有状态PCEP会话下,PCE仅维护PCC上报的LSP信息,不支持LSP托管和优化。
LSP托管是指PCC授权PCE可以修改PCC上的LSP。
· PCEP(Path Computation Element Protocol,路径计算单元通信协议):运行于PCC与PCE之间、或者PCE与PCE之间的通信协议,用于建立PCEP会话,交互PCEP消息。该协议基于TCP。
· PCEP对等体:建立PCEP会话的两端称为PCEP对等体。
PCC与PCE之间通过交互PCEP消息完成会话建立、维护、路径计算和更新等。PCEP消息由一个PCEP报文头和一个长度可变的消息主体组成,消息主体由一个或多个对象组成。PCEP消息的主要内容通过不同的对象来携带。
PCEP消息包含如下几类:
· Open消息:用于启动PCEP会话。
· Keepalive消息:PCEP会话的保活消息。
· PCReq(Path Computation Request,路径计算请求)消息:PCC向PCE发送的请求路径计算消息。
· PCRep(Path Computation Reply,路径计算应答)消息:PCE向PCC发送的路径计算应答消息。
· PCNtf(Path Computation Notification,路径计算通知)消息:由PCC发送给PCE或由PCE发送给PCC的事件通知消息。
· PCErr(Path Computation Error,路径计算错误)消息:由PCC发送给PCE或由PCE发送给PCC的错误通知消息。
· Close消息:用于关闭PCEP会话的消息。
· PCRpt(Path Computation LSP State Report,路径状态上报)消息:PCC向PCE发送的用于报告LSP当前状态的消息。
· PCUpd(Path Computation LSP Update Request,路径更新请求)消息:PCE向PCC发送的用于更新LSP信息的PCEP消息。
· PCInitiate(LSP Initiate Request,LSP初始化请求)消息:PCE向PCC发送的用于创建LSP的PCEP消息。
如图2-2所示,PCEP消息的报文头包含的内容如下:
· Ver:PCEP版本号,长度为3bits。
· Flags:标志位,长度为5bits。当前未定义,在报文中全部填充为0。
· Message-Type:消息类型,长度为8bits。当前支持如下消息类型:
¡ 2:Keepalive
¡ 3:PCReq
¡ 4:PCRep
¡ 5:PCNtf
¡ 6:PCErr
¡ 7:Close
¡ 10:PCRpt
¡ 11:PCUpd
¡ 12:PCInitiate
· Message-Length:包括PCEP报文头在内的PCEP消息的总长度,长度为16bits。
图2-2 PCEP报文头格式
如图2-3所示,对象头包含的内容如下:
· Object-Class:PCEP对象类,长度为8bits。
· OT(Object-Type):PCEP对象类型,长度为4bits。Object-Class和Object-Type字段唯一标识一个PCEP对象。
· Res:保留字段,长度为2bits。该字段在传输时必须设置为零,并且在接收时必须被忽略。
· P(Processing-Rule):P标志用于在PCC发给PCE的PCEP消息中标识指定对象在路径计算期间是否必须被PCE考虑。当P标志被置为1时,标识PCE在路径计算时必须考虑该对象。相反,当P标志被置为0时,标识该对象是可选的,即PCE可以忽略该对象。
· I(Ignore):I标志用于在PCEP消息中向PCC标识PCE是否考虑了可选对象。当I标志被置为1时,标识可选对象在路径计算期间被忽略。相反,当I标志被置为0时,标识PCE在路径计算期间考虑了可选对象。当对应的PCReq消息中I标志为1时,I标志在PCRep消息中没有意义。
· Object Length:表示包括对象头在内的总对象长度,以字节为单位。对象长度字段必须始终是4的倍数,并且至少为4。最大对象长度为65528字节。
不同的对象体具有不同的报文格式,以下列举几类常见的对象体。
Open对象的Object-Class和Object-Type字段取值分别为1和1。如图2-4所示,Open对象体包含如下内容:
· Ver:PCEP版本号,长度为3bits。
· Flags:标志位,长度为5bits。当前未定义,在报文中全部填充为0。
· Keepalive:发送Keepalive消息的时间间隔。
· DeadTimer:PCEP会话的老化时间。
· SID:PCEP会话ID。
· Optional TLVs:可选TLV。例如STATEFUL-PCE-CAPABILITY TLV。
图2-4 Open对象体报文格式
Bandwidth对象的Object-Class字段取值为5,Object-Type字段包含2种取值。取值为1时,表示请求的链路带宽;取值为2时,表示在自动带宽调整场景中,需要调整的链路的当前带宽。如图2-5所示,Bandwidth对象体长度固定为4字节,带宽取值的单位为每秒字节数。
图2-5 Bandwidth对象体报文格式
Metric对象的Object-Class和Object-Type字段取值分别为6和1。如图2-6所示,Metric对象体包含如下内容:
· Reserved:保留字段,长度为16bits。当前未定义,在报文中全部填充为0。
· Flags:标志位,长度为8bits。当前已定义的标志位为B(Bound)和C(Computed Metric)。
· T:度量类型。当前定义的度量类型为:
¡ 1:IGP度量。
¡ 2:TE度量。
¡ 3:跳数。
· Metric value:度量值。
图2-6 Metric对象体报文格式
Explicit Route对象的Object-Class和Object-Type字段取值分别为7和1。如图2-7所示,Explicit Route对象体包含如下内容:
· L:L标志位,在报文中必须置为0。
· Type:类型。当前定义的类型为:
¡ 1:表示IPv4类型。
¡ 2:表示IPv6类型。
¡ 3,表示Label类型。
· Length:对象体长度。
· U:指示标签方向的标志位。取值为0,表示下游标签;取值为1,表示上游标签。
· C-type:服务类型。
· Label:路径的标签值。
图2-7 Explicit Route对象体报文格式
SRP(Stateful PCE Request Parameters,有状态PCE请求参数)对象的Object-Class和Object-Type字段取值分别为33和1。如图2-8所示,SRP对象体包含如下内容:
· Flags:标志位,长度为16bits。当前未定义,在报文中全部填充为0。
· SRP ID:Stateful PCE请求ID。
· Optional TLVs:可选TLV。例如PATH-SETUP-TYPE TLV。
图2-8 Explicit Route对象体报文格式
Open消息是PCEP对等体之间发送的用于建立、维护PCEP会话的消息。Open消息必须是PCC发送给PCE或PCE发送给PCC的第一个PCEP消息。
在建立PCEP会话阶段,PCEP对等体之间会协商Open消息携带的PCEP会话参数。如果双方对这些参数协商一致,则成功建立PCEP会话;否则,会关闭PCEP对等体之间的TCP连接。Open消息中包含的会话参数如下:
· PCEP版本
· Keepalive发送时间间隔
· 会话的老化时间
· PCEP会话ID
· PCEP能力集合。例如:PCEP会话类型(有状态、无状态)、本端是否具备Segment Routing能力等。
Keepalive消息是PCC或PCE为了保持会话处于活跃状态而发送的PCEP消息。Keepalive消息还用于响应Open消息,以确认已收到Open消息并且Open消息中携带的PCEP会话参数是可接受的。
Keepalive消息不携带任何对象,发送Keepalive消息的时间间隔通过Open消息中携带的Keepalive发送时间间隔协商。PCEP对等体之间发送Keepalive消息的时间间隔可以不同。
任何PCEP消息都具备会话保活功能。
PCReq消息是PCC向PCE发送的请求路径计算的PCEP消息。
PCReq消息中主要携带如下信息:
· 路径计算请求ID。
· 请求计算的路径源IP地址。
· 请求计算的路径目的IP地址。
· 路径计算的约束条件:
¡ 优先级。
¡ 路径约束:包含、排除某个节点、SRLG(Shared Risk Link Group,共享风险链路组)或接口地址。
¡ 亲和属性。
¡ 带宽信息。
¡ 度量信息。
PCRep消息是PCE响应接收到的PCReq消息而向PCC发送的路径计算应答消息。
如果PCE路径计算成功,则回复的PCRep消息中主要携带如下信息:
· 路径计算请求ID。该ID与对应的PCReq消息携带的路径计算请求ID一致。
· 计算出的路径信息。
如果PCE路径计算失败,则回复的PCRep消息中主要携带路径计算失败的原因。
PCNtf消息可以由PCE发送给PCC,也可以由PCC发送给PCE,用于通知特定事件。主要的事件如下:
· PCC取消路径计算请求。
· PCE当前处于过载状态。
· PCE当前不再处于过载状态。
PCErr消息可以由PCE发送给PCC,也可以由PCC发送给PCE,用于通知PCEP对等体之间发生的错误。主要在以下情况下发送PCErr消息:
· 发生协议错误。例如,PCInitiate消息创建的LSP在PCC上已经存在。
· PCEP消息不符合PCEP协议规范。例如,接收到格式错误的消息,接收到的消息缺失对象等。
Close消息可以由PCE发送给PCC,也可以由PCC发送给PCE,用于关闭已建立的PCEP会话。
在收到Close消息后,PCEP对等体必须取消所有待处理的请求,且不能再发送其他类型的PCEP消息,并关闭PCEP对等体之间的TCP连接。
PCRpt消息是PCC向PCE发送的用于报告LSP当前状态的PCEP消息。如下场景会触发PCC向PCE发送PCRpt消息:
· PCC接收到来自PCE的LSP更新请求。
· PCC上LSP的状态发生变化。
PCRpt消息主要包含如下内容:
· PLSP ID:标识一条LSP。
· LSP操作标记和状态标记。操作标记如托管、上报和同步等,状态标记如Up、Down和Active等。
· Stateful PCE请求ID。该ID与对应的PCUpd消息携带的Stateful PCE请求ID一致。
· 路径信息。
· 带宽信息。
· 度量信息。
· 亲和属性。
· 优先级。
PCUpd消息是PCE向PCC发送的用于更新LSP信息的PCEP消息。PCUpd消息主要包含如下内容:
· PLSP ID:标识一条LSP。
· LSP操作标记和状态标记。操作标记包括托管、上报和同步等,状态标记包括Up、Down和Active等。
· 路径信息。
· Stateful PCE请求ID:标识一次更新请求。
· 带宽信息。
· 链路度量。
· 亲和属性。
· 优先级。
在LSP托管场景中,PCInitiate消息是PCE向PCC发送的用于创建LSP的PCEP消息。PCInitiate消息主要包含如下内容:
· PLSP ID:标识一条LSP。
· LSP操作标记和状态标记。操作标记包括托管、同步等,状态标记包括Up、Down和Active等。
· 路径信息。
· Stateful PCE请求ID。
· 带宽信息。
· 度量信息。
· 亲和属性。
· 优先级。
本章节以PCC与PCE之间建立PCEP会话为例,介绍PCEP会话建立、路径计算和LSP托管的工作机制。
PCC可以通过如下方式发现网络中的PCE,以便与其建立PCEP会话:
· 在PCC设备上静态指定PCE设备。
· 通过OSPF TE将PCE的IP地址发布到网络中。
如图2-9所示,PCEP对等体之间建立PCEP会话的过程为:
(1) PCEP对等体之间建立TCP连接。
(2) PCC向PCE发送Open消息。
(3) PCE向PCC发送Open消息。
(4) PCE收到Open消息后,根据Open消息中携带的信息进行会话参数协商。若协商成功,则发送Keepalive消息确认。
(5) PCC收到Open消息后,根据Open消息中携带的信息进行会话参数协商。若协商成功,则发送Keepalive消息确认。
(6) 当PCEP对等体都收到了来自对方的Keepalive消息,则认为PCEP会话建立完成。
图2-9 PCEP会话建立示意图
路径计算是指PCC主动向PCE发起路径计算请求,由PCE为PCC计算路径, PCC再根据PCE的路径计算结果建立LSP。
如图2-10所示,在AS 1内需要计算一条从Ingress节点到Egress节点的LSP,域内路径计算的具体过程为:
(1) PCC向PCE发送PCReq消息。
(2) PCE收到PCRep消息后,使用基于约束的路径优先算法,在TEDB(TE DataBase,流量工程数据库)中计算出一条到达目的节点的符合约束条件的路径。
(3) PCE路径计算成功后,向PCE发送PCRep消息。
(4) PCC收到发送PCRep消息后,根据PCE计算的路径建立LSP。
如图2-11所示,在跨域场景中,由于AS 1内的PCE 1无法学习到Egress节点所在的AS 2内的IGP路由,所以无法计算出到达Egress节点的LSP路径。因此需要AS 2内的PCE 2协作计算跨域的LSP路径。跨域路径计算具体过程为:
(1) PCC向PCE 1发送PCReq消息请求计算到达Egress节点的LSP,其中PCReq消息中携带了PCE 1和PCE 2的地址。
(2) PCE 1收到PCReq消息后,发现无法计算到达Egress节点的路径信息,则将PCReq消息发送给PCE 2,请求PCE 2计算PCE 1到Egress节点的路径信息。
(3) PCE 2收到PCRep消息后,使用基于约束的路径优先算法,在TEDB中计算出一条到达目的节点的符合约束条件的路径,然后将路径信息通过PCReq消息发送给PCE 1。
(4) PCE 1收到PCE 2的PCReq消息后,计算Ingress节点到达PCE 1的路径信息,将计算后的路径信息与PCE 1到Egress节点的路径信息汇总,再通过PCRep消息对PCC进行应答。
(5) PCC收到PCRep消息后,根据PCE计算的路径建立LSP。
LSP托管是指PCE具有修改PCC上LSP的权限,由PCE主动发起LSP路径创建和更新。
如图2-12所示,PCC与PCE之间建立了Active-Stateful PCEP会话。可以通过如下方式在PCC上建立或更新LSP:
· PCC通过发送PCRpt消息将LSP 1托管给PCE。PCE计算出LSP 1的路径后,通过PCUpd消息通知PCC更新LSP 1。
· PCE主动向PCC发送PCInitiate消息来要求PCC创建LSP 2。PCC收到PCInitiate消息后,根据路径信息在PCC上创建LSP 2,然后通过PCRpt消息将LSP 2上报并托管给PCE。
图2-12 LSP托管、更新与创建示意图
如图3-1所示,在大型跨域网络中,通过部署PCE节点,可以提升域内、跨域路径计算的效率。由于网络内的路径计算功能由PCE集中控制,易于管理员管理与维护网络。PCC将LSP上报、托管给PCE,由PCE维护网络内的TEDB,还可以减轻网络内其他网元的压力。因为,在大型的跨域MPLS网络内,PCEP的应用十分广泛。
· RFC 5440:Path Computation Element (PCE) Communication Protocol (PCEP)
· RFC 8231:Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE
· RFC 8281:Path Computation Element Communication Protocol (PCEP) Extensions for PCE-Initiated LSP Setup in a Stateful PCE Model
· RFC 8408:Conveying Path Setup Type in PCE Communication Protocol (PCEP) Messages