本页课程原文(点开阅读)

SR-TE 段路由

课程(5 节,按顺序学)

第 1 课 · MPLS 隧道为什么会长出 Segment Routing

入门 · 约 8 分钟

本课目标:搞清楚 SR 到底想解决什么问题,而不是一上来就背概念。

回顾一下 LDP 和 RSVP-TE 的痛点

LDP:跟着 IGP 走,没法指定路径,也不知道带宽还剩多少。

RSVP-TE:能指定路径、能预留带宽,但代价是每一跳都要为每一条隧道单独维护一份状态,还要靠周期性刷新维持——隧道一多,光维护这些软状态就是运营商网络的一大负担。

★ Segment Routing 想解决的正是这一条:要不要一种既能指定路径,又不用沿途设备维护状态的办法?

SR 的核心思路:把路径写进包头,不要写进沿途设备的内存

SR 的做法是:把整条显式路径拆成一串「segment」,直接压进数据包的标签栈里。

沿途设备只需要认标签、知道怎么处理,完全不需要知道「这个包属于哪条隧道」。
这和 RSVP-TE 的思路刚好相反:RSVP-TE 是「让每一跳都记住这条隧道」,SR 是「让每一跳什么都不用记,答案已经写在包上了」。

最关键的区别:标签是算出来的,不是协商出来的

SR 最常用的一种 segment 叫 Prefix-SID:每台设备通过 IGP(IS-IS / OSPF)扩展广播一个全局唯一的 index,其他设备拿到之后自己套公式

标签 = SRGB 起始值 + index

就知道「去这台设备该用哪个标签」——不需要跟它打招呼确认。这也是为什么全网的 SRGB 必须配成一样的:公式的输入不一致,算出来的标签就不一样。

实验重点

  • SR 要解决的是 RSVP-TE 中间节点状态太重的问题
  • 做法:把显式路径压进数据包的标签栈,沿途设备不用记住任何「隧道」
  • 标签是靠 SRGB + index 算出来的,不是靠信令协商出来的

第 2 课 · Prefix-SID 和 SRGB

入门 · 约 8 分钟

本课目标:看懂「16000 + 2 = 16002」这行算式到底是怎么回事。

Prefix-SID:给一个前缀(通常是 loopback)分配一个 index

每台设备给自己的 loopback 分配一个 Prefix-SID index(也叫 Node-SID),这个 index 通过 IGP 扩展广播给全网,别人学到之后自己换算标签。

index 只是一个相对小的数字(比如 1、2、3……),标签值不是它本身,而是加上 SRGB 起始值之后的结果。

SRGB:Segment Routing Global Block,标签的「换算基准」

SRGB 是每台设备预留出来专门给 SR 用的一段标签区间(常见默认是 16000 ~ 23999)。

同一个 index,在两台 SRGB 不同的设备上会换算出不同的标签值——所以现网强烈建议全网统一 SRGB,否则规划和排障都会变得很麻烦。

动手:去发包仿真页看这条算式怎么用

北京、首尔、东京、旧金山的 index 分别是 1、2、3、4,SRGB 起始都是 16000,所以它们的标签分别是 16001、16002、16003、16004。

去②发包仿真页看看这几个标签是怎么被压进数据包、又怎么被逐跳弹掉的。

实验重点

  • Prefix-SID = 给一个前缀分配的全局唯一 index
  • 标签 = SRGB 起始值 + index,全网 SRGB 必须一致
  • 这一套换算不需要任何信令协商,纯粹是本地算出来的

第 3 课 · Adjacency-SID:什么时候必须精确到某一条链路

进阶 · 约 8 分钟

本课目标:Prefix-SID 只能带你到「某台设备」,带不到「某条链路」——这是它的天然局限。

Prefix-SID 的局限:目标是设备,不是链路

如果两台设备之间有两条等价链路(ECMP),Prefix-SID 只能告诉沿途设备「去某台设备」,具体走哪条链路是由本地负载分担逻辑决定的——你没法用 Prefix-SID 强制走其中一条。

Adjacency-SID:精确到某一条具体的邻接关系

Adjacency-SID(Adj-SID) 绑定的不是一台设备,而是「我到某个邻居的某一条链路」。只要把 Adj-SID 放进标签栈,收到它的设备必须从那条指定的链路发出去,没有任何选择空间。

★ 和 Prefix-SID 不同:Adj-SID 通常只在本地设备上有效(本地生效),不需要全网统一换算,天生就是「精确制导」的。

组合起来用:大段用 Prefix-SID,关键一跳用 Adj-SID

现网常见的做法是——大部分路径用 Prefix-SID(省标签栈深度),只在「必须避开某条特定链路」或者「有 ECMP 必须强制指定」的那一跳插入 Adj-SID。

这一页的演练场景是一条没有旁路的直链,所以全程用 Prefix-SID 就够了——没有 ECMP,Prefix-SID 天生就是唯一路径。

实验重点

  • Prefix-SID 精确到设备,Adj-SID 精确到具体一条链路
  • 有 ECMP 时,只有 Adj-SID 能强制走某一条
  • 现网常见用法:大段 Prefix-SID + 关键跳 Adj-SID 混用

第 4 课 · SR-TE Policy:color、endpoint、segment list

进阶 · 约 10 分钟

本课目标:看懂配置里那几行到底在说什么。

三个必须记住的字段

一条 SR-TE Policy 靠三个字段唯一确定:

· color:给这条 Policy 打的一个数字标签,路由可以用 BGP Color Community 自动匹配到对应颜色的 Policy 上(自动引流的关键)
· endpoint:这条隧道的目的地(通常是出口设备的 loopback)
· segment list / 显式路径:依次要经过哪些 segment,作用等价于 RSVP-TE 的 ERO

binding-SID:给整条 Policy 再包一层壳

binding-SID 是给这条 Policy 本身分配的一个标签。用处是——别的设备只要压这一个标签,就能把流量导进整条 Policy 里,不需要知道 Policy 内部完整的 segment list 有多长。

这在多域场景特别有用:一个域的边界设备只需要知道「压这个 binding-SID」,不需要知道另一个域内部走了几跳。

动手:对照发包仿真页的配置抄一遍

去②发包仿真页的第 ③ 步,把 segment-list 和 te-policy 那几行对照着抄一遍,重点看 segment list 里的三个 SID 是怎么跟「显式路径依次经过首尔、东京」对应起来的。

实验重点

  • Policy 靠 color + endpoint 唯一确定
  • segment list 是显式路径,作用等价于 RSVP-TE 的 ERO
  • binding-SID 是给整条 Policy 包的一层壳,多域场景很有用

第 5 课 · 和 RSVP-TE 正面对比

排障 · 约 10 分钟

本课目标:同一条网络、同一条路径,两种建隧道的方式,差别到底在哪。

步骤数对比:12 步信令 vs 4 步转发

RSVP-TE 那一页走完是 12 段自动过程(8 段信令 + 4 段转发)。

SR-TE 这一页只有 4 段自动过程,而且全部都是数据转发——因为路径已经在包头里了,不需要事先跟任何一跳打招呼。

状态对比:谁在为这条隧道维护状态

RSVP-TE:沿途每一跳都要维护「这条隧道」的软状态,并周期性刷新。

SR-TE:沿途设备只维护「我自己的 SID 表」,这张表跟全网有多少条 Policy 完全无关——这是运营商网络转向 SR 的最大动机:隧道数量可以轻松扩展到几万条。

动手:两条路径来回切换着看

RSVP-TE 和 SR-TE 这两页走的是完全一样的物理路径(北京→首尔→东京→旧金山)。来回切换着看两边的「为什么会这样」讲解,重点确认自己能说清楚「同样一条路,两种方式差在哪」。

实验重点

  • RSVP-TE 12 步信令+转发,SR-TE 只有 4 步转发
  • SR-TE 中间节点状态跟隧道数量无关,RSVP-TE 有关
  • SR-TE 基础 Policy 不带宽感知,要带宽感知得配 PCE
冀ICP备2026021556号-2|冀公网安备13068302000206号