SRv6网络编程自学系列 | PCEP for SRv6

书籍来源:《SRv6网络编程:开启IP网络新时代》

这本书已经出了很多年了,但多年之后因为工作需要再来读一遍,除了温习之外,发现自己学到了更多的知识。一边学习一边整理读书笔记,并与大家分享,侵权即删,谢谢支持!

附上汇总贴:SRv6网络编程自学系列 | 汇总_COCOgsta的博客-CSDN博客


4.3.1 PCE概述

PCE(Path Computation Element,路径计算单元)架构的提出最早是为了解决大型的多区域网络路径计算问题,通过PCE可以为TE计算跨域路径。PCE架构包含以下3个部分。

  • PCE:PCE是能够基于网络拓扑信息计算满足约束的路径的部件。PCE可以部署在路由设备中,也可以部署在一个独立的服务器中。大多数时候,PCE是和控制器集成在一起的。
  • PCC(Path Computation Client,路径计算客户端):PCC是客户端请求路径计算单元执行路径计算的应用程序。PCC向PCE发送路径请求,并接受PCE返回的路径计算结果。PCC一般部署在路由设备上。
  • PCEP:PCEP是PCC和PCE之间的通信协议。PCEP使用TCP端口号4189,由1个公共头和多个强制或可选的对象携带TE路径信息。

PCE架构与集中式SR-TE的体系架构具有一定的相似性,事实上集中式SR-TE的体系架构来源于PCE架构。传统PCE采用的就是集中算路,最初版本的PCEP定义了面向RSVP-TE的Stateless PCE(无状态PCE)的协议扩展和交互流程 [10]。Stateless PCE独立地基于TE数据库计算路径,无须维护任何已经计算的路径,但是Stateless PCE没有当前活跃的TE路径信息,也无法对活跃路径进行任何类型的重优化。另外,由于配合RSVP-TE还存在扩展性问题,传统PCE没有得到大范围的部署。

随着SDN的发展和Segment Routing技术的兴起,PCEP又出现了Stateful PCE(有状态PCE)协议 [11-12]和针对Segment Routing的扩展,可以很好地支持集中式SR-TE的功能。

Stateful PCE服务器会维护一个和网络严格同步的TE数据库,包括IGP链路状态、TE信息以及TE路径信息,同时还会维护TE路径在网络中使用的预留资源。相对来说,Stateful PCE通过和网络进行可靠的状态同步,可以计算出更优的网络路径。

PCE针对Segment Routing的扩展:Segment Routing能提供与RSVP TE相同的显式地指定路径的能力,并且由于不需要在中间节点维护基于流的状态,从而具有比RSVP-TE更好的扩展性。另外,正是因为中间节点不维护状态,Segment Routing缺乏在头节点根据带宽使用情况进行算路的能力。基于PCE的Segment Routing能够解决这一问题,因为PCE存储了整网的拓扑信息、TE信息以及路径信息,所以能够根据整网的资源情况计算路径,达到优化整网资源的目的。

4.3.2 Stateful PCE

Stateful PCE是PCE的一个重要扩展。Stateful PCE不仅维护用于路径计算的拓扑信息和TE信息,而且会保留TE路径的信息,这样在路径计算的时候可以基于现有的TE路径实现全网的优化,而不仅仅是简单地计算一个满足约束条件的路径。

Stateful PCE有Passive和Active两种模式。Passive Stateful PCE是通过从PCC学习到的LSP状态信息计算优化路径,不主动更新LSP状态, PCC与PCE保持同步。Active Stateful PCE可以主动向网络下发关于路径的建议,更新路径。例如,Active Stateful PCE可以通过授权机制将PCC对LSP的控制权委托给PCE,由此PCE可以更新PCC中的LSP参数。

为了方便理解,下面以SRv6 Policy为例,介绍Stateful PCE的路径计算过程,如图4-15所示。

图4-15 Stateful PCE的路径计算过程

① 通过NETCONF或CLI(Command Line Interface,命令行接口)在PCC头节点配置SRv6 Policy。关于SRv6 Policy的细节请参考本章后续的介绍。

② PCC和PCE通过PCEP会话互相发送Open消息,协商各自支持的能力。为了支持SRv6,PCEP扩展支持了SRv6 PCE Capabilities Sub-TLV,用于PCC和PCE协商SRv6能力。

③ PCC头节点发送PCRpt消息给PCE(携带托管标记Delegate = 1),托管SRv6Policy,请求PCE计算路径。PCRpt消息中携带了各种对象,这些对象指定了SRv6Policy路径的约束和属性集合。

④ PCE接收PCC发送的PCRpt消息,根据其中携带的托管标记以及路径的约束和属性,进行SRv6路径计算。

⑤ PCE路径计算完成后,通过PCUpd消息中的ERO(Explicit Route Object,显式路由对象)携带路径信息发送给PCC头节点。为了支持SRv6, PCEP扩展了对SRv6-ERO子对象携带SRv6路径信息的支持。

⑥ PCC头节点接收PCE下发的路径信息,并且安装路径。

⑦ PCC头节点安装完路径后,发送PCRpt消息给PCE,报告SRv6 Policy状态信息,使用RRO(Record Route Object,记录路由对象)携带PCC的实际转发路径,并使用ERO对象携带PCE计算的路径信息。为了支持SRv6,PCEP扩展了对SRv6-RRO子对象携带SRv6实际路径信息的支持,使用SRv6-ERO子对象携带PCE计算的SRv6路径信息。

除了以上流程里提到的PCEP消息,还有其他几种PCEP消息。PCEP消息类型及其作用如表4-12所示。

表4-12 PCEP消息类型及其作用

每一个消息中可能会包含一个或多个Object(对象),用于描述特定的功能,比如OPEN和LSP。Stateful PCE模式下的Object种类如表4-13所示 [10-12]。

表4-13 Stateful PCE模式下的PCEP Object种类

4.3.3 PCEP SRv6扩展

上文介绍了PCE架构和Stateful PCE的基本知识,下面将介绍PCEP针对SRv6的扩展。

PCEP针对SRv6的扩展主要分为3部分:支持SRv6的PATH-SETUPTYPE新类型、用于通告支持SRv6能力的SRv6 PCE Capabilities SubTLV、用于携带SRv6 SID的SRv6 ERO和SRv6 RRO Subobject,具体如表4-14所示 [13]。

表4-14 PCEP针对SRv6的扩展

  1. SRv6 PATH-SETUP-TYPE

建立PCEP连接时,PCC和PCE之间需要通过OPEN消息通告各自支持的能力,比如支持创建的路径类型。支持创建路径的能力由PATH-SETUPTYPE-CAPABILITIES TLV描述,其格式如图4-16所示 [14]。

图4-16 PATH-SETUP-TYPE-CAPABILITIES TLV的格式

PATH-SETUP-TYPE-CAPABILITIES TLV各字段的说明如表4-15所示。

表4-15 SRv6 PATH-SETUP-TYPE-CAPABILITIES TLV各字段的说明

为支持SRv6,PCEP引入了新的PST用于标识SRv6路径,其类型值为2。此外,PCEP还定义了SRv6 PCE Capabilities Sub-TLV,用于详细描述节点支持SRv6的能力[13]。

在通告能力时,如果PATH-SETUP-TYPE-CAPABILITIES TLV携带类型值为2的PST,则表示支持建立SRv6路径,此时PATH-SETUPTYPE-CAPABILITIES TLV必须携带一个SRv6 PCE Capabilities Sub-TLV,用于详细描述其对SRv6的支持能力。

此外,在计算请求路径时,SRP Object需携带Path-SETUP-TYPE TLV,描述路径的类型 [11]。为支持SRv6的算路请求,PCEP也同样扩展了新的PST支持SRv6,类型值同样为2。

  1. SRv6 PCE Capabilities Sub-TLV

SRv6 PCE Capabilities Sub-TLV详细描述了节点支持SRv6的能力,格式如图4-17所示。

图4-17 SRv6 PCE Capabilities Sub-TLV的格式

SRv6 PCE Capabilities Sub-TLV各字段的说明如表4-16所示。

表4-16 SRv6 PCE Capabilities Sub-TLV各字段的说明

  1. SRv6-ERO Subobject

在PCEP中,ERO由一系列的Subobject组成,用于描述路径 [10]。为了携带SRv6SID和NAI(Node or Adjacency Identifier,节点或邻接标识符),或是其中之一,PCEP定义了一个新的子对象,称为“SRv6-ERO Subobject(SRv6-ERO子对象)”[13]。NAI与SRv6 SID关联,可通过NAI解析到对应的SRv6 SID。

SRv6-ERO Subobject可以由PCRep/PCInitiate/PCUpd/PCRpt消息携带,其格式如图4-18所示。

图4-18 SRv6-ERO Subobject的格式

SRv6-ERO Subobject各字段的说明如表4-17所示。

表4-17 SRv6-ERO Subobject各字段的说明

  1. SRv6-RRO Subobject

RRO表示PCC应用的SID列表,即LSP所采取的实际路径。PCC上报LSP状态时,使用此对象报告LSP的实际路径。为了携带SRv6 SID的信息, PCEP定义了“SRv6-RRO Subobject”[13]。SRv6-RRO Subobject的格式如图4-19所示,除了没有L字段以外,其他字段与SRv6-ERO Subobject一致。

图4-19 SRv6-RRO Subobject的格式

SRv6-RRO Subobject各字段的说明如表4-18所示。

表4-18 SRv6-RRO Subobject各字段的说明

以上就是关于PCEP支持SRv6的主要内容。基于以上的PCEP扩展,PCE可以接收来自PCC的SRv6 TE路径算路请求,并计算对应的路径,然后返回给PCC。结合PCE的集中算路能力和SRv6的头节点显式路径可编程能力,可以实现灵活可控、全局最优、扩展性更好的TE。

猜你喜欢

转载自blog.csdn.net/guolianggsta/article/details/129917014