4. IGP 扩展与 SID 通告
Segment Routing 能否在 MX 系列路由器上真正跑起来,关键不在 MPLS 转发面本身,而在于 IGP 是否把 SID 信息可靠地泛洪到整个域内。SR 的控制平面完全依赖 IGP 扩展:IS-IS 通过 TLVs 携带 Prefix-SID 与 Adjacency-SID,OSPF 通过 Opaque LSA 携带同类信息。如果 IGP 扩展没有正确启用或数据库未同步,转发面就会出现标签栈无法解析、SR 路径中断等问题。本节围绕“配置—泛洪—同步—验证”这条主线展开,重点说明 MX 上如何让 IS-IS 和 OSPF 携带 SR 扩展,以及如何确认 SID 已正确进入链路状态数据库。
一、SR 扩展在 IGP 中的承载方式
在 IS-IS 中,SR 扩展以子 TLV 形式封装在已有的 TLV 内。Prefix-SID 使用 TLV 236(IPv4)或 TLV 237(IPv6),其中包含 SID/Label 子 TLV 与 Flags 字段;Adjacency-SID 使用 TLV 240,绑定到具体的邻居与链路。Router Capability TLV 242 则声明本机支持 SR、SRGB 范围以及算法(Algorithm 0 为 SPF,Algorithm 1 为 Strict SPF)。这些 TLV 随 LSP 泛洪,所有运行 SR 的 IS-IS 路由器都会解析并存入 LSDB。
在 OSPF 中,SR 扩展通过 Opaque LSA 承载:Prefix-SID 使用 OSPFv2 的 Extended Prefix Opaque LSA(类型 7),Adjacency-SID 使用 Extended Link Opaque LSA(类型 8),Router Information Opaque LSA(类型 4)声明 SRGB 与算法。OSPFv3 则使用对应的类型 7/8/4 LSA。与 IS-IS 不同,OSPF 的 Opaque LSA 有明确的 flooding scope,Prefix-SID 通常在 area 内泛洪,跨 area 需要 ABR 重新生成。
二、MX 上启用 IS-IS SR 扩展
在 MX 上启用 IS-IS SR,需要在 protocols isis 层级下配置 source-packet-routing,并指定 srgb 范围。以下为示例配置,节点 loopback 为 10.0.0.1/32,SRGB 使用默认值:
set protocols isis source-packet-routing srgb start-label 16000 index-range 8000
set protocols isis source-packet-routing node-segment ipv4-index 1
set protocols isis interface ge-0/0/0.0 family inet
set protocols isis interface lo0.0 passive
set protocols isis level 2 wide-metrics-only
其中 node-segment ipv4-index 1 表示本节点的 Prefix-SID Index 为 1,对应标签 16001。接口 ge-0/0/0.0 启用后,IS-IS 会为该接口的邻接关系分配 Adjacency-SID。若需为特定邻接静态指定 SID,可使用:
set protocols isis interface ge-0/0/0.0 level 2 adjacency-segment sid 10001
配置完成后,MX 会在 LSP 中生成 TLV 236、240、242。可通过 show isis database detail 查看 LSP 内容,确认 SR 子 TLV 是否存在。
三、MX 上启用 OSPF SR 扩展
OSPF 侧配置类似,在 protocols ospf 下启用 source-packet-routing:
set protocols ospf source-packet-routing srgb start-label 16000 index-range 8000
set protocols ospf source-packet-routing node-segment ipv4-index 1
set protocols ospf area 0.0.0.0 interface ge-0/0/0.0
set protocols ospf area 0.0.0.0 interface lo0.0 passive
OSPF 会生成 Router Information LSA 声明 SRGB,生成 Extended Prefix LSA 携带 Prefix-SID,生成 Extended Link LSA 携带 Adjacency-SID。注意 OSPF 的 Prefix-SID 默认只在 area 内泛洪,若网络存在多区域,ABR 需要正确重生成 LSA 才能让 SID 跨区传播。
四、SID 泛洪与数据库同步验证
配置完成后,验证分三步:第一,确认本机 LSP/LSA 中已携带 SR 扩展;第二,确认邻居已收到并解析;第三,确认 LSDB 中所有节点的 SID 一致且无冲突。
IS-IS 验证命令:
show isis database detail
show isis database extensive | match "TLV 236|TLV 240|TLV 242"
show isis adjacency detail
show isis source-packet-routing
OSPF 验证命令:
show ospf database opaque-area detail
show ospf database extensive | match "Prefix-SID|Adj-SID|SRGB"
show ospf interface detail
show ospf source-packet-routing
若 show isis database detail 中某节点的 LSP 缺少 TLV 236,说明该节点未启用 SR 或 SRGB 配置不一致;若 TLV 240 缺失,说明邻接接口未启用 SR 或邻接未建立。OSPF 中若 opaque-area 数据库缺少类型 7 LSA,需检查 area 内是否所有路由器都启用了 SR,以及 ABR 是否正确重生成 LSA。
五、数据库同步中的典型问题与排查
实际工程中最常见的问题是“配置已加但 SID 未泛洪”。在 IS-IS 中,若某接口未加入 IS-IS 进程,或接口被设置为 passive,则 Adjacency-SID 不会生成;若 level 不匹配(如一端 level 1、另一端 level 2),LSP 不会互相泛洪,SID 自然无法同步。在 OSPF 中,若接口未加入 area 0,或 area 类型为 stub/NSSA,Opaque LSA 的泛洪范围会受限,Prefix-SID 可能无法到达其他区域。
另一个常见问题是 SRGB 不一致。如果 R1 的 SRGB 为 16000–23999,R2 的 SRGB 为 17000–24999,则 R1 计算出的标签 16001 在 R2 上无法映射到相同 Index,导致转发面标签栈解析失败。因此部署前必须统一 SRGB 范围,或在 Router Capability TLV 中正确声明各自 SRGB,由接收方进行标签映射。
验证时建议按“本机—邻居—全网”三层递进:先确认本机 LSP/LSA 包含 SR 扩展,再确认邻居已收到,最后确认全网 LSDB 中所有节点的 SID 一致且无冲突。只有三层都通过,才能认为 IGP SR 扩展部署完成,后续的 SR-MPLS 转发和 SR-TE 策略才有可靠的控制平面基础。