4. IGP 扩展与 SR 信息分发
Segment Routing 的控制平面并不依赖新的路由协议,而是把 SID 信息“寄生”在既有 IGP 的扩展字段中随链路状态泛洪。理解 IS-IS 与 OSPF 各自的 SR 扩展载体、Prefix-SID 与 Adj-SID 的通告方式,以及 SRGB 在全域一致性的约束,是设计 IGP SR 部署参数的核心。本节先厘清两类协议承载 SR 信息的结构差异,再落到 Prefix-SID、Adj-SID 与 SRGB 的具体参数设计。
一、IS-IS 的 SR 扩展:TLV 承载
IS-IS 通过新增 TLV(Type-Length-Value)承载 SR 信息,主要涉及以下三类:
- SR Capability TLV(类型 103):携带本节点的 SRGB 范围(多个 SID/Label Range 子 TLV),以及可选的算法标识(如 SPF 算法 0、严格 SPF 算法 1)。
- Prefix-SID Sub-TLV(类型 2):作为 TLV 135/235/236/237 的子 TLV,为某个前缀通告 Prefix-SID,包含 Flags、Algorithm、SID/Label 字段。
- Adj-SID Sub-TLV(类型 31):作为 TLV 22/222 的子 TLV,为某条邻接链路通告 Adj-SID,包含 Flags、Weight、SID/Label 字段。
IS-IS 的 SR 扩展天然与链路状态泛洪绑定:只要节点在 LSP 中携带 SR Capability TLV,其 SRGB 就随 LSP 泛洪到整个 Level 区域。Prefix-SID 与 Adj-SID 分别挂在可达性 TLV 与邻接 TLV 上,因此它们的传播范围与对应前缀、邻接的传播范围一致。
二、OSPF 的 SR 扩展:Opaque LSA 承载
OSPFv2 通过 Opaque LSA(类型 9/10/11)承载 SR 信息,OSPFv3 则使用扩展的 Router Information LSA 与 E-Router-LSA。关键载体包括:
- Router Information Opaque LSA(类型 4):携带 SRGB 与算法信息,作用域为 Area 或 AS。
- Extended Prefix Opaque LSA(类型 7):携带 Prefix-SID,作用域为 Area。
- Extended Link Opaque LSA(类型 8):携带 Adj-SID,作用域为 Area。
与 IS-IS 不同,OSPF 的 SR 信息作用域由 Opaque LSA 的类型决定:类型 10(Area 作用域)只在区域内泛洪,类型 11(AS 作用域)在全域泛洪。这意味着 OSPF 中 SRGB 的传播范围需要显式选择,而 IS-IS 中 SRGB 随 LSP 自然泛洪到 Level 区域。设计时必须注意这一差异,否则可能出现“区域内 SRGB 一致、跨区域不一致”的隐蔽问题。
三、Prefix-SID 与 Adj-SID 的通告语义
Prefix-SID 是绑定到 IGP 前缀的 SID,用于指导节点沿最短路径转发到该前缀。它有两种关键标志位:
- N 标志(Node-SID):置位时表示该 Prefix-SID 是节点 SID,对应前缀为 /32 或 /128 主机路由,用于标识节点本身。
- R 标志(Re-advertisement):置位时表示该 Prefix-SID 从其他协议重通告而来,接收节点不应将其用于本地转发。
Prefix-SID 的 SID/Label 字段有两种编码方式:索引(Index)与绝对标签值。使用索引时,实际标签 = SRGB 起始值 + Index,因此要求全域 SRGB 一致;使用绝对标签值时,标签值直接写入,不依赖 SRGB,但灵活性较差。工程上推荐使用索引方式,便于统一规划。
Adj-SID 绑定到邻接链路,用于显式指定出接口。其关键标志位包括:
- F 标志(Address-Family):标识该 Adj-SID 对应的地址族(IPv4/IPv6)。
- B 标志(Backup):标识该 Adj-SID 是否为备份邻接的 SID。
- V 标志(Value):标识 SID/Label 字段是索引还是绝对标签值。
- L 标志(Local):标识该 Adj-SID 是否仅本地有效。
Adj-SID 的 Weight 字段用于在等价多路径场景下调整流量分配权重,默认值为 0,表示按等价路径均分。
四、SRGB 一致性要求
SRGB(Segment Routing Global Block)是节点为 Prefix-SID 预留的本地标签空间。当 Prefix-SID 使用索引编码时,实际标签 = SRGB 起始值 + Index。这意味着:如果两个节点的 SRGB 起始值不同,同一个 Index 在它们上会映射为不同的标签值,导致转发面标签不匹配。
因此,SRGB 一致性要求包含两个层面:
- 同一 SR 域内所有节点 SRGB 起始值必须一致。例如统一使用 16000 作为起始值,范围 16000–23999。
- SRGB 范围必须足够大,至少覆盖所有需要分配 Index 的前缀数量。若域内有 500 个节点需要 Node-SID,则 SRGB 至少需要 500 个标签,建议预留 8000 以上以应对增长。
五、部署参数设计示例
以下给出一个可参考的 IGP SR 部署参数设计,适用于单域 200 节点规模的中型网络:
| 参数 | IS-IS 配置项 | OSPF 配置项 | 推荐值 |
|---|---|---|---|
| SRGB 起始值 | segment-routing global-block | segment-routing global-block | 16000 |
| SRGB 范围 | 同上 | 同上 | 16000–23999(8000 个) |
| Prefix-SID 编码 | index | index | 使用 Index,便于统一规划 |
| Node-SID 分配 | 每节点 Loopback /32 | 每节点 Loopback /32 | Index = 节点编号,如 1–200 |
| Adj-SID 分配 | 动态或显式 | 动态或显式 | 动态分配,范围 24000 以上 |
| 算法 | SPF(0) | SPF(0) | 默认算法 0 |
以 IS-IS 为例,关键配置片段如下:
router isis 1
segment-routing mpls
global-block 16000 23999
connected-prefix-sid-map
address-family ipv4
10.0.0.1/32 index 1
10.0.0.2/32 index 2
!
!
!
!
配置完成后,可通过以下命令验证 SR 信息是否正确泛洪:
show isis segment-routing prefix-sid
show isis segment-routing adjacency-sid
show isis segment-routing global-block
预期输出中,每个节点的 Loopback 前缀应显示对应的 Index 与计算出的标签值(16000 + Index)。若发现某节点 SRGB 起始值不一致,或 Prefix-SID 未出现在 LSDB 中,应检查 SR Capability TLV 是否已正确泛洪、SRGB 配置是否全域统一。
总结来看,IS-IS 与 OSPF 的 SR 扩展在承载结构上不同,但核心逻辑一致:SRGB 定义标签空间,Prefix-SID 与 Adj-SID 定义转发语义。设计 IGP SR 部署参数时,首要任务是统一 SRGB 起始值与范围,其次规划 Prefix-SID 的 Index 分配,最后根据网络规模决定 Adj-SID 的分配方式。只有这三者协同一致,SR 转发面才能正确建立标签映射并完成端到端转发。