第80篇:IS-IS over SR-MPLS 的部署演进
关键词
IS-IS、SR-MPLS、Segment Routing、Prefix-SID、Adj-SID、LDP 替代
一、从 LDP 到 SR-MPLS
1.1 传统 MPLS 的标签分发
传统 MPLS 网络中,标签分发依赖 LDP(Label Distribution Protocol):
IGP(IS-IS/OSPF)→ 负责路由
↓
LDP → 为每个 IGP 前缀分配标签
↓
标签沿着 IGP 最短路径分发
↓
MPLS 转发
痛点: - 需要额外运行 LDP 协议 - IGP 和 LDP 的收敛需要协调 - 不支持显式路径(需要 RSVP-TE) - 复杂性高
1.2 SR-MPLS 的思路
SR-MPLS(Segment Routing MPLS) 将标签分配功能集成到 IGP 中:
IS-IS(扩展后)→ 同时负责路由和标签分配
↓
无需 LDP!
IS-IS LSP 中携带 Prefix-SID/Adj-SID
↓
MPLS 转发
二、IS-IS 的 SR 扩展
2.1 新增的 TLV
为了支持 SR-MPLS,IS-IS 在 wide 模式下新增了以下 TLV:
| TLV 类型 | 名称 | 用途 |
|---|---|---|
| 22 | IS-IS Router Capability | 宣告路由器的 SR 能力 |
| 135 | Extended IP Reachability | 携带 Prefix-SID 子 TLV |
| 22/222 | IS-IS Extended IS Reachability | 携带 Adj-SID 子 TLV |
| 137 | Dynamic Hostname | SRGB 信息 |
2.2 Prefix-SID(前缀标签)
Prefix-SID 为每个 IGP 前缀分配一个全局标签:
IS-IS 为 Loopback 1.1.1.1/32 分配 Prefix-SID 16001
SRGB(Segment Routing Global Block)= 16000~23999
Prefix-SID = SRGB 起始值 + Index
= 16000 + 1
= 16001
特点: - 全局唯一(同一 SR 域内) - 预设的,不需要信令协议 - 沿着 IGP 最短路径转发
2.3 Adj-SID(邻接标签)
Adj-SID 为每个 IS-IS 邻接分配一个本地标签:
RouterA 到 RouterB 的 GE0/0/0 邻接 → 分配 Adj-SID = 24001
Adj-SID 是本地有效的,只在分配的路由器上有意义
特点: - 本地有效(不同路由器可以分配相同值) - 强制流量从指定邻接转发 - 支持显式路径
三、配置示例
3.1 启用 IS-IS SR
# 全局启用 SR
isis 1
cost-style wide # SR 需要 wide Metric
segment-routing mpls # 启用 SR-MPLS
# 配置 SRGB
segment-routing global-block 16000 23999
# 配置 Prefix-SID(在 Loopback 接口下)
interface LoopBack0
isis enable 1
isis prefix-sid index 1 # Prefix-SID = SRGB_起始 + 1 = 16001
3.2 配置 Adj-SID
# 接口下配置 Adj-SID(可选)
interface GigabitEthernet0/0/0
isis enable 1
isis adjacency-sid 24001 # 为该邻接分配 Adj-SID
# 也可以让 IS-IS 自动分配 Adj-SID
isis adjacency-sid absolute 24001 # 绝对值的 Adj-SID
3.3 验证
# 查看 IS-IS SR 信息
display isis segment-routing
# 查看 Prefix-SID
display isis prefix-sid
# 查看 MPLS 标签转发表
display mpls forwarding-table
# 查看 SR-MPLS 隧道
display segment-routing mpls forwarding
四、IS-IS SR 的转发流程
4.1 基本转发
目的地:2.2.2.2(Prefix-SID = 16002)
数据包到达 RouterA:
1. 查找标签 16002 对应的 FEC
2. 是最短路径 → 标签交换
3. 转发到下一跳
4.2 显式路径(使用 Segment List)
从 RouterA 到 RouterD 的显式路径:
A → B → C → D
Segment List = {16003(Adj-A→C), 16004(Adj-C→D)}
数据包:
RouterA: push 16004, push 16003 → 转发到 B
RouterB: 查看外层标签 16003 → 从邻接 C 转发
RouterC: pop → 标签 16004 → 从邻接 D 转发
RouterD: pop → IP 转发
五、SR-MPLS 对比 LDP
| 对比项 | LDP | SR-MPLS |
|---|---|---|
| 协议依赖 | 独立协议 | 集成在 IGP 中 |
| 标签分发 | 信令协议分发 | IGP TLV 携带 |
| 收敛协调 | IGP 收敛 → LDP 收敛 → IGP 重新检查 | 一次收敛 |
| 显式路径 | 需要 RSVP-TE | Segment List 实现 |
| 状态维护 | LSP 状态(每跳维护) | 无状态(源路由) |
| 扩展性 | 受限于 LSP 数量 | 更高 |
| 部署复杂度 | 高(多协议协作) | 低(一个协议) |
六、部署演进策略
6.1 阶段一:启用 IS-IS wide
# 先全网切换为 wide Metric
isis 1
cost-style wide
6.2 阶段二:替换 LDP 为 SR
# 启用 SR,LDP 和 SR 共存
isis 1
segment-routing mpls
segment-routing global-block 16000 23999
# 逐步迁移 LDP 到 SR
mpls
label advertise non-null-for-explicit-null
6.3 阶段三:关闭 LDP
当所有设备都支持 SR 后,关闭 LDP:
# 在每台路由器上关闭 LDP
mpls ldp
shutdown
# 或直接删除 LDP 配置
undo mpls ldp
七、IS-IS SR 的优势场景
| 场景 | 传统方案 | IS-IS SR 方案 |
|---|---|---|
| MPLS 骨干网 | IS-IS + LDP | IS-IS SR(简化运维) |
| 流量工程 | IS-IS + RSVP-TE | IS-IS SR-TE(Segment List) |
| 快速重路由 | RSVP-TE FRR | TI-LFA(拓扑无关快速重路由) |
| 网络切片 | 复杂的策略 | SR 切片 + Flex-Algo |
八、总结
| 知识点 | 核心要点 |
|---|---|
| IS-IS SR 本质 | 将 MPLS 标签分配集成到 IS-IS |
| Prefix-SID | 全局标签,沿 IGP 最短路径转发 |
| Adj-SID | 本地标签,强制从指定邻接转发 |
| SRGB | Segment Routing Global Block(全局标签块) |
| 相比 LDP | 无需独立协议,一次收敛,无状态 |
| 部署步骤 | wide → SR 启用 → LDP 下线 |
九、思考
- SR-MPLS 相比传统 LDP 方案最大的优势是什么?
- Prefix-SID 和 Adj-SID 有什么区别?分别在什么场景下使用?
- IS-IS 启用 SR-MPLS 需要什么前提条件(开销模式等)?
- 在 SR-MPLS 中,显式路径(Segment List)是如何实现源路由的?
- 从传统 LDP 迁移到 SR-MPLS 的推荐部署步骤是什么?
下篇预告:第81篇《BGP 基础——AS 与 eBGP/iBGP 基本概念》——进入 BGP 的世界,了解互联网的路由协议。