Segment, Segment ID, Segment List
Segment
Segment 是节点针对所收到的数据包要执行的指令,该指令包含在数据包头部中;
例如:
- 指令 1:沿着最短路径到达 R4(支持 ECMP)
- 指令 2:沿着 R4 的 GE0/0/2 接口转发数据包
- 指令 3:沿着最短路径到达 R8
Segment ID
通过 Segment ID(SID)标识 Segment,它的格式取决于具体的技术实现(例如 MPLS 标签、MPLS 标签空间中的索引、IPv6 地址等等);
例如:
- 指令 1(400):沿着支持 ECMP 的最短路径到达 R4
- 指令 2(1046):沿着 R4 的 GE0/0/2 接口转发数据包
- 指令 3(800):沿着支持 ECMP 的最短路径到达 R8
注,该图示使用的标签数值仅起到帮助理解的作用,具体的标签分配范围请参考文档手册;
Segment List
Segment List 是一个或多个 SID 构成的有序列表;
Segment Type
如图所示(红绿橙),Segment 具有多种类型,各种类型的 Segment 具有不同的作用;
前缀段 | Prefix Segment
- 功能作用:用于标识网络中的某个目的地址前缀(即见标签如见路由),如图橙色;
- 表现形式:通过 Prefix Segment ID 来标识 Prefix Segment;
- 生成方式:管理员配置 SRGB、Prefix SID Index 参数,并由设备主动通告 SRGB、Prefix SID Index 参数,其他设备自动计算 Prefix Segment ID = SRGB + Prefix SID Index 参数;
- 传播方式:通过 IGP 协议,将 Prefix Segment 扩散到其他网元,全局可见,全局有效;
而 Prefix Segment ID 是发布端通告的的 Prefix SID Index(偏移值),接收端会根据自己的 SRGB 计算实际标签值,以用于生成 MPLS 转发表项;
针某特定路由条目:
- 其入标签,设备通过自身的 SRGB + Prefix Segment ID Index 计算;
- 其出标签,设备通过下一跳 SRGB + Prefix Segment ID Index 计算;
节点段 | Node Segment
Node Segment 是特殊的 Prefix Segment,如图红色,用于标识特定的节点(Node);
在节点的 Loopback 接口下,配置 IP Address 作为前缀,该节点的 Prefix SID 实际就是 Node SID 类型;
邻接段 | Adjacency Segment
- 功能作用:用于标识网络中的某个邻接,如图绿色;
- 表现形式:通过 Adjacency Segment ID(SID)来标识 Adjacency Segment;
- 生成方式:源节点通过 IGP 协议动态分配,其无法人工配置;
- 传播方式:通过 IGP 协议扩散到本地网元
- 有效范围:全局可见,但仅本地有效(即仅能作用于特定范围);
Adjacency SID 的取值范围在 SRGB 范围之外,其为本地 SID,即临近设备之间。针对间隔设备(R1、R3),其间无法得知彼此的 Adjacency Segment ID 值;
SR Policy
在 RFC 8402 中,定义 SR Policy 是一段有序的段列表(an ordered list of segments)。更完整的说法是 SR Policy 最终呈现为一段有序的段列表,还包含计算、生成、维护该段列表及引入流量等 SR 技术的一种框架。
SR Policy 是当前最主流的实现 SR 的方式。其实现控制平面功能,所以 SR Policy 是工作在控制平面;
一个 SR Policy 由头端节点引导流量进入这个段策略中。它的段列表被精确的分配为标签栈指导流量转发。这个段列表由一系列的优化目标和限制(例如时延、亲和性、SRLG 等)综合计算得到。该计算可由本地或控制器完成,然后应用到网络中。
SR Policy:
- 生成方式:CLI、NETCONF、PCEP、BGP SR Policy、……
- 包含 Segment List 信息,完整的指导流量引入和转发;
标签栈,粘连标签,粘连节点
标签栈
标签栈是标签的排序集合,用于标识一条完整的 LSP;
标签栈中每一个邻接标签标识一条具体的邻接,整个标签栈标识了整条转发路径 LSP 的所有邻接;
在报文转发过程中,通过标签栈中每个邻接标签查找对应的邻接,并将标签弹出后转发,将标签栈中所有邻接标签弹出后,报文亦即通过 LSP 到达隧道的目的地;
粘连标签 and 粘连节点
当标签栈深度超过转发器所支持的标签栈深度时,控制器需要为转发器分配多个标签栈,在合适的节点下发标签栈的同时分配一种特殊的标签,然后将这些标签栈关联起来,实现逐段转发。
该类特殊的标签称为粘连标签,该合适的节点称为粘连节点。
生成方式:控制器为粘连节点分配粘连标签,并将其压在标签栈底;
所以如图,假设 R1 支持的最大标签深度为 3,即仅能容纳 3 个标签;
所以,在 R2 中,我们定义粘连标签 100,此时 R2 被称为粘连节点;
当 R1 的 100 标签到达 R2 时,将 100 被展开为 1024 1045 1056 标签栈;