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 重新生成。

SRGB(Segment Routing Global Block)是全局标签块,MX 默认范围为 16000–23999。Prefix-SID 的 Index 与 SRGB 基址相加得到实际标签值,例如 Index 为 100、SRGB 基址 16000 时,标签为 16100。Adjacency-SID 则从 SRLB(默认 10000–15999)中动态或静态分配。

二、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。

IS-IS / OSPF SR 扩展泛洪与数据库同步验证 IS-IS 域(Level 2) MX-R1 lo0: 10.0.0.1/32 Prefix-SID Index 1 MX-R2 lo0: 10.0.0.2/32 Prefix-SID Index 2 ge-0/0/0.0 Adj-SID 10001 LSP 携带的 SR 子 TLV TLV 236: Prefix-SID (Index 1/2) TLV 240: Adjacency-SID (10001) TLV 242: Router Capability (SRGB 16000-23999) OSPF 域(Area 0) MX-R3 lo0: 10.0.0.3/32 Prefix-SID Index 3 MX-R4 lo0: 10.0.0.4/32 Prefix-SID Index 4 ge-0/0/0.0 Adj-SID 10002 Opaque LSA 携带的 SR 扩展 Type 4: Router Information (SRGB) Type 7: Extended Prefix (Prefix-SID) Type 8: Extended Link (Adj-SID) LSDB 同步 数据库同步验证要点 ① 本机 LSP/LSA 检查 show isis database detail show ospf database opaque-area detail 确认 TLV 236/240/242 或 LSA 4/7/8 存在 ② 邻居泛洪检查 show isis adjacency detail show ospf neighbor detail 确认邻居已收到并解析 SR 扩展 ③ SID 一致性检查 show isis source-packet-routing show ospf source-packet-routing 确认 Index 无冲突、SRGB 一致 常见异常判断 • TLV 236 缺失 → 本节点未启用 SR 或 SRGB 配置不一致 • TLV 240 缺失 → 邻接接口未启用 SR 或邻接未建立 • Opaque LSA 缺失 → area 内未全部启用 SR 或 ABR 未重生成 • SID 冲突 → 多节点使用相同 Index,需重新规划

五、数据库同步中的典型问题与排查

实际工程中最常见的问题是“配置已加但 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 策略才有可靠的控制平面基础。

本节核心检查清单:① IS-IS/OSPF 已启用 source-packet-routing;② SRGB 全网统一;③ Prefix-SID Index 无冲突;④ Adjacency-SID 已分配;⑤ LSDB 中 TLV 236/240/242 或 LSA 4/7/8 完整可见;⑥ show isis/ospf source-packet-routing 输出正常。