MPLS 从基础到高手学习手册

用快递、火车、信封和大城市路网等生活化比喻,带你从零理解多协议标签交换(MPLS),一路进阶到段路由 SRv6。本手册约 2 万字,循序渐进,含大量实例与配置片段。

基础概念 转发原理 MPLS VPN 流量工程 Segment Routing SRv6 深入 实战配置

第 0 章 开篇:为何要学 MPLS

如果你第一次听到 MPLS 这个词,多半会觉得它既熟悉又陌生:熟悉是因为它几乎出现在每一张运营商网络架构图里;陌生是因为它的名字“多协议标签交换”听起来就很高冷。别担心,本手册的目标就是用最生活化的语言,把你从“完全没听过”带到“能跟同事讲清楚 SRv6 为什么是下一代”。

一句话比喻:MPLS 就像快递包裹上的条形码贴纸。快递员(路由器)不需要拆开包裹看里面是谁写给谁的(不用查 IP 路由表),只要扫一眼贴纸上的编号,就能立刻知道下一站送到哪里。这个“贴纸编号”就是标签(Label)

0.1 我们为什么需要 MPLS

要理解 MPLS 的存在价值,先要理解“传统 IP 转发”遇到了什么麻烦。在纯 IP 网络中,每台路由器收到一个数据包,都要做一件事:查路由表。路由表里可能有十几万条、上百万条路由,路由器要逐条匹配“最长前缀”,这很消耗算力;更要命的是,传统 IP 路由器做转发决策时,只能基于目的 IP 地址。它无法说“这条流量走便宜链路、那条流量走低延迟链路”,也无法轻松实现“把一个企业的多个分支机构连成一个虚拟私有网络”。

20 世纪 90 年代,互联网流量暴涨,设备厂商开始思考:能不能让网络转发像“电话交换机”那样快、那样可控?于是 MPLS 诞生了。它的核心思想非常朴素:把“每次都重新思考去哪”变成“第一次规划好路径,以后照着走”。这和现实中的城市物流完全一致——货车司机不会每到一个路口就打开地图重新规划,而是出发前就拿到一份“路径清单”。

0.2 MPLS 今天在哪里

你每天用的手机上网、公司总部和分公司的内网互联、银行的核心交易专线,背后几乎都有 MPLS 的身影。三大运营商的 CN2、IP 专网、政企专线,骨干网大概率跑着 MPLS。而在“MPLS 之后”,业界正在向 Segment Routing(段路由),尤其是 SRv6 演进——这是本手册后半段的重头戏。

学习建议:请把 MPLS 看作“标签转发的世界观”,把 SRv6 看作“用 IPv6 地址当指令的新一代实现”。理解了前者,后者会非常顺;跳过前者直接学 SRv6,容易“知其然不知其所以然”。

第 1 章 MPLS 是什么:从“查地址”到“看标签”

1.1 把网络想象成一座大城市

假设你要从北京寄一封信到广州的某个人手里。传统 IP 网络的做法是:每个中转邮局(路由器)拿到信,看一眼收件人地址“广州市天河区……”,然后查自己的“全国地址簿”,决定下一站寄到哪个城市。问题是,所有寄往广州的信,无论你是加急还是平邮、无论你是银行还是视频网站,走的都是同一条默认路径

MPLS 的做法是:在信的最外面贴一张快递面单,上面印着一个数字编号,比如“1024”。第一个邮局贴上 1024 后,后面每个邮局根本不看收件人地址,只扫这个编号:看到 1024,下一站就去上海;上海邮局把面单换成“2050”,下一站去武汉;武汉再换成“3300”,下一站到广州。整个过程,没有任何一个邮局需要“思考”最终地址,它们只做机械的“换牌”动作。

北京(贴标签1024) 上海(换标签2050) 武汉(换标签3300) 广州(撕掉标签,按IP投递)

1.2 MPLS 的全称与本质

MPLS 是 MultiProtocol Label Switching 的缩写,中文叫“多协议标签交换”。拆开看:

  • MultiProtocol(多协议):标签不仅能装在 IP 包上,也能装在以太网帧、ATM 信元、帧中继上。也就是说,MPLS 不关心“里面装的是什么”,它只负责“外面贴标签、中间换标签”。
  • Label(标签):一个简短的整数,通常是 20 位,最多约 100 万个取值空间。
  • Switching(交换):指“基于标签做转发”,类似交换机查 MAC 表那样快,而不是路由器逐包查 IP 表那样慢。
关键认知:MPLS 不是一种“网络层协议”,它工作在二层(数据链路层)和三层(网络层)之间的“垫层(shim)”。你可以把它理解为夹在以太网帧头和 IP 头之间的“便利贴”。

1.3 为什么“标签”能更快

路由器的 IP 转发是“软查找 + 最长前缀匹配”,算法复杂度为 O(W)(W 是地址位数,IPv4 最多 32 位)。而 MPLS 的标签查找是精确匹配的一张表,输入一个标签,输出“出接口 + 新标签”,类似查字典,速度极快,甚至能由专用芯片(ASIC)硬件完成。在流量特别大的骨干网,哪怕是几微秒的差距,乘以每秒几百万个包,累积起来就是巨大的吞吐优势。

1.4 MPLS 解决的三大根本问题

传统 IP 的痛点MPLS 的解法
转发只能看目的 IP,路径不可控标签预先规划路径(LSP),可实现流量工程
难以隔离不同客户、不同业务标签天然区分不同“转发等价类”,轻松做 VPN
服务质量(QoS)难以按流保障标签头部有 EXP 优先级位,可做差分服务
核心网设备要维护海量路由可只让边缘设备懂路由,核心做简单标签交换

第 2 章 核心概念三件套:LSR、LSP 与 FEC

2.1 网络里的三种“角色”

在一个 MPLS 网络里,设备按位置分为三类,记住它们对理解转发过程至关重要:

ingress LER(入节点 / 入口边界路由器)

是“贴标签的人”。它位于 MPLS 域的入口,收到一个普通 IP 包后,根据策略判断“这个包该走哪条 MPLS 路径”,然后压入(Push)一个标签,把 IP 包变成 MPLS 包送进网络。

LSR(Label Switching Router,标签交换路由器)

是“换牌子的人”。位于 MPLS 域中间,收到带标签的包,查标签转发表,把旧标签交换(Swap)成新标签,从另一个接口转发出去。LSR 通常不看 IP 头。

egress LER(出节点 / 出口边界路由器)

是“撕标签的人”。位于 MPLS 域出口,收到最后一个标签包,弹出(Pop)标签,恢复成普通 IP 包,按正常 IP 路由送给最终目的地。

类比剧场:坐高铁出行。你(IP 包)在始发站(ingress)拿到一张去“终点城市”的车票(标签),中途每经过一个换乘枢纽(LSR),工作人员撕掉这一段票根、换下一段(Swap)。到达终点站(egress),票被收走(Pop),你走出闸门,自己走到最终目的地。

2.2 LSP:标签交换路径

LSP(Label Switched Path,标签交换路径)是数据从入节点到出节点所经过的、由一串标签构成的“隧道”。它是一条单向的逻辑路径。就像快递的“北京→上海→武汉→广州”被预先规划好,LSP 也是预先建立的,中间的 LSR 不需要再做路径决策。

注意 LSP 是单向的:从 A 到 B 是一条 LSP,从 B 回 A 是另一条 LSP,二者独立建立(类似单行车道,对向要另修一条)。

2.3 FEC:转发等价类

FEC(Forwarding Equivalence Class,转发等价类)是 MPLS 里一个非常重要但常被忽略的概念。它回答了一个问题:“哪些包应该走同一条 LSP?”

所谓“等价”,是指网络对某一类包“一视同仁”地做相同处理。FEC 的划分方式非常灵活,可以是:

  • 目的 IP 前缀相同(最常见,例如“所有去往 10.1.0.0/16 的包”是一个 FEC);
  • 目的地址 + 服务等级相同;
  • 属于同一个 VPN 客户;
  • 源地址 + 目的地址相同(用于流量工程精细控制)。

每个 FEC 对应一条 LSP。当 ingress 把一个包映射(分类)到某个 FEC 时,就等于决定了它要压入哪个标签、走哪条路径。所以“标签”只是 FEC 的外在编号,真正决定行为的是 FEC。

一句话总结:FEC 决定“怎么走”,LSP 是“实际走的路”,Label 是“路上的路牌编号”。三者一一对应,是 MPLS 的底层逻辑。

第 3 章 MPLS 报文结构:标签长什么样

3.1 标签栈:夹心饼干

MPLS 标签不是直接替换 IP 头,而是插在二层帧头和 IP 头之间。看起来像这样:

以太网帧头  |  [MPLS 标签 1] [MPLS 标签 2] ...  |  IP 头  |  数据
   (L2)              (shim 层,标签栈)              (L3)     (L4+)

可以插多个标签,叠成一摞,称为标签栈(Label Stack)。最外层(顶部)的标签先生效,越往里越后生效。这就像俄罗斯套娃,或者一封信外面套了好几层转运袋。

顶部标签(Top Label)— 先被处理,如公网隧道标签
中间标签 — 如 VPN 标签
底部标签(S=1)— 最后一层,内层业务标签

3.2 单个标签:32 位精算结构

每个 MPLS 标签固定占 32 比特(4 字节),分成 4 个字段:

字段长度含义
Label(标签值)20 bit核心编号,取值 0~2^20-1,决定转发行为
EXP / TC(实验位 / 流量类)3 bit优先级标记,用于 QoS(现在标准叫 Traffic Class)
S(Bottom of Stack)1 bit栈底标志:0 表示下面还有标签,1 表示这是最后一层
TTL(生存时间)8 bit防环路,每经过一跳减 1,到 0 丢弃,类似 IP TTL
 0                   1                   2                   3  
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                Label                  | Exp |S|     TTL     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  20 bit 标签         3bit   1bit  8bit
重点记忆:S 位非常关键。因为标签可以多层,设备必须知道“剥到第几层才到 IP”。S=1 告诉设备“再往下就是 IP 头了,别再当我标签看了”。

3.3 MPLS 与以太网的关系

在以太网上,MPLS 包用什么“类型”标识?以太网帧头的 EtherType 字段会写成 0x8847(单播)或 0x8848(组播)。这样交换机/路由器一看帧类型就知道:“哦,后面跟的是 MPLS,不是纯 IP(0x0800)。”这保证了 MPLS 可以无缝跑在现有二层网络上,不用改造网卡。

第 4 章 工作原理:控制平面与数据平面

4.1 两个平面,两种“思考”

MPLS 的工作可以清晰拆成两个互不打扰的世界:

控制平面(Control Plane)—— “规划路线”

负责建立标签转发表。它通过各种协议(LDP、RSVP-TE、BGP、IS-IS/OSPF 扩展)交换信息,让每台设备知道“收到标签 X 该从哪个口出去、换成什么新标签”。控制平面慢、可以偶尔中断、跑在软件里,它决定“路怎么修”。

数据平面(Data Plane / Forwarding Plane)—— “实际跑车”

负责真正转发每个包。它只看硬件里的标签转发表,做 Push/Swap/Pop,速度极快、跑在 ASIC 芯片上,它决定“车怎么跑”。

类比:控制平面像“城市交通规划局”——平时慢慢研究哪里该修路、哪里该设红绿灯;数据平面像“每天跑在路上的成千上万辆车”——它们严格按规划走,从不停下来思考。

4.2 控制平面如何建立 LSP:两种思路

MPLS 建立标签路径有两条主要路线,理解了它们,就理解了 MPLS 的“性格”:

思路一:自底向上(LDP 方式)

LDP(Label Distribution Protocol)的做法是:先有 IP 路由(由 OSPF/IS-IS 算好),然后 LDP 顺着 IP 路由的方向,逐跳分发标签。结果是“沿着最短路径(IGP 算出的路径)建立 LSP”。简单、自动、省心,但路径就是 IGP 最短路径,无法人工指定绕路

思路二:自顶向下(RSVP-TE 方式)

RSVP-TE(资源预留协议 - 流量工程扩展)的做法是:由源节点主动“预约”一条路径(可以指定经过哪些节点、避开哪些节点、要多少带宽),沿途逐跳向资源管理者“订座”,成功后才建立 LSP。这种方式能实现真正的流量工程,但协议复杂、状态多。

打个比方:LDP 像“跟着导航默认推荐路线走”(快、省事、但绕不开拥堵);RSVP-TE 像“提前包下一条专属路线,指定经过哪几个城市、占用多少车位”(灵活、可控、但规划成本高)。

4.3 标签转发表长啥样

数据平面查的是一张叫 LFIB(Label Forwarding Information Base,标签转发信息库)的表。逻辑上长这样:

入标签 (In Label)入接口操作 (Op)出标签 (Out Label)出接口
1024Gi0/1Swap2050Gi0/2
2050Gi0/2Swap3300Gi0/3
3300Gi0/3PopGi0/4

设备收到一个带标签 1024 的包,从 Gi0/1 进来,查表:换成 2050,从 Gi0/2 出去。就这么简单、这么快。

第 5 章 标签转发全过程:Push、Swap、Pop

5.1 三个动作,贯穿始终

MPLS 数据平面的全部行为,抽象成三个动词就讲完了:

  • Push(压入):在 IP 包前面加一个(或几个)标签。ingress 干这事。
  • Swap(交换):把当前顶层标签换成另一个值。中间 LSR 干这事。
  • Pop(弹出):撕掉最外层标签。egress 干这事(或倒数第二跳提前撕,见 PHP)。

5.2 完整实例:一次跨城访问

设想公司总部在深圳,分公司在上海,中间经过 MPLS 骨干网(深圳 R1 → 广州 R2 → 武汉 R3 → 上海 R4)。深圳分公司主机 192.168.1.10 要访问上海服务器 10.0.0.5。

步骤 1:ingress R1 收到 IP 包 (src 192.168.1.10, dst 10.0.0.5)
        分类到 FEC "去往上海",Push 标签 100(隧道标签)
         发出 [Label=100] + IP包

步骤 2:LSR R2 收到 Label=100
        查 LFIB:Swap 100 → 200,从出口2 转发
         发出 [Label=200] + IP包

步骤 3:LSR R3 收到 Label=200
        查 LFIB:Swap 200 → 300,从出口3 转发
         发出 [Label=300] + IP包

步骤 4:egress R4 收到 Label=300
        Pop 撕掉标签,恢复纯 IP 包
        按 IP 路由表把包送达 10.0.0.5

关键观察:R2、R3 从头到尾没看过一次 IP 头。它们只扫标签数字。这正是 MPLS 快且可控的根源。

5.3 PHP:倒数第二跳弹出

PHP(Penultimate Hop Popping,倒数第二跳弹出)是 MPLS 里一个非常巧妙的优化。按上面的流程,egress(最后一跳)要负责 Pop。但 egress 其实既要把标签撕掉,又要查 IP 路由做转发,做了“两次查找”。

PHP 的解决办法:让倒数第二跳就提前把标签撕掉,egress 收到的直接就是纯 IP 包,只需做“一次 IP 查找”即可。MPLS 用一个特殊标签值 3 来表示“请下一跳弹标签”。egress 在分发标签时,给倒数第二跳发的是标签 3,R3 收到后就知道:“哦,到 R4 之前我把标签弹了。”

为什么叫“倒数第二跳”优化?因为它把“弹标签 + 查 IP”两次动作合并到最后一跳的一次 IP 查找,减轻了最繁忙的边界设备负担。标签 3 是保留值,专用于 PHP。

5.4 TTL 与 MPLS 的“可见性”

传统 IP 里,我们用 traceroute 看路径,靠的是 TTL 逐跳减到 0 时设备回 ICMP 超时。MPLS 里,标签也有 TTL。默认情况下,ingress 把 IP TTL 复制到标签 TTL,中间 LSR 只减标签 TTL,不回 ICMP,所以 MPLS 域内部对 traceroute 是“透明”的——你看到的是“进 MPLS 前”和“出 MPLS 后”两个端点,中间黑盒。

如果想让 traceroute 穿透 MPLS 显示每一跳,可以开启 ICMP 隧道超时MPLS-aware traceroute(设备回送携带标签信息的 ICMP)。这在排障时很有用。

第 6 章 标签分发协议:LDP 与 RSVP-TE 的取舍

6.1 为什么需要“分发协议”

标签本身没意义,除非全网对“标签 X 代表什么”达成共识。比如 R1 给 R2 发“去往上海我压标签 100”,那 R2 必须知道自己收到 100 后该 Swap 成 200 发给 R3,R3 也要同意 200 对应下一段。这套“谁给谁发什么标签”的协商,就是标签分发协议的任务。

6.2 LDP:简单够用的大多数

LDP 是 MPLS 世界里最经典、部署最广的标签分发协议。它的信条是:“IP 路由怎么走,MPLS 就怎么走。”

  • 依赖 IGP(OSPF/IS-IS)先算好路由;
  • 邻居间通过 TCP(端口 646)建立会话,交换“前缀→标签”映射;
  • 自动为每个 IGP 路由前缀分配标签,建立“顺着最短路径”的 LSP;
  • 优点:配置极简(基本一句话开启)、稳定、运维心智负担小;
  • 缺点:路径 = IGP 最短路径,无法做精细流量工程、无法预留带宽。

6.3 RSVP-TE:为“控制”而生

RSVP-TE 是资源预留协议加上流量工程扩展。它不是“顺着路由走”,而是“我要订一条特定路线”。

  • 源节点可指定显式路径(ERO,Explicit Route Object):“必须经过 R2、R5,避开 R3”;
  • 预留带宽,保证某条 LSP 有专属带宽,避免拥塞;
  • 支持快速重路由(FRR),链路故障时 50ms 内切到保护路径(类似环网保护);
  • 优点:强大的流量工程、严格的 SLA 保障;
  • 缺点:协议复杂、每台设备要维护每条 LSP 的状态(扩展性差)、运维难。
维度LDPRSVP-TE
路径来源IGP 最短路径显式指定 / 约束计算
带宽预留不支持支持
快速重路由需配合其他机制原生 FRR
扩展性好(无状态/LSP少)一般(每 LSP 有状态)
配置复杂度
典型用途基础 MPLS VPN 承载高价值专线、TE、保护
现实经验:90% 的 MPLS VPN 网络只用 LDP 就够了。只有对“路径、带宽、可靠性”有极致要求的金融、政企专线,才会上 RSVP-TE。而今天,RSVP-TE 的流量工程能力正在被 Segment Routing(SR-TE) 取代——这是后文重点。

6.4 BGP 在 MPLS 中的特殊角色

除了 LDP/RSVP-TE 分发“公网隧道标签”,MPLS VPN 还需要分发“私网标签”,这靠 MP-BGP(多协议 BGP)。BGP 本来是传互联网路由的,扩展后能携带 VPN 路由和对应的标签。记住:LDP 管“怎么到对端 PE”,BGP 管“哪个客户的哪个网段”,二者配合,VPN 才成立。

第 7 章 MPLS L3VPN:把客户塞进“专属火车车厢”

7.1 问题:多家公司共用一张网,怎么互不干扰

运营商有一张巨大的 MPLS 骨干网。客户 A(银行)和客户 B(视频公司)都想用它互联自己的分支机构。难点在于:A 和 B 可能用了相同的私网地址(比如都用 192.168.1.0/24),运营商的网怎么区分“这是 A 的 192.168.1.0 还是 B 的”?答案就是 MPLS L3VPN

类比火车:MPLS 骨干网是一列长火车,每个 VPN 客户是一节封闭车厢。A 公司的包裹只能在 A 的车厢里流动,B 公司的在 B 车厢。车厢之间完全隔离,但都搭同一列火车走同一条铁轨(共享物理链路),既隔离又省钱。

7.2 三个关键概念:VRF、RD、RT

VRF(VPN Routing and Forwarding,虚拟路由转发实例)

PE(运营商边缘设备)上为每个客户开辟一个独立的“路由表 + 转发表”小空间,叫 VRF。有了 VRF,即使 A 和 B 都用 192.168.1.0/24,在 PE 上它们是两张互不相关的表,互不串门。

RD(Route Distinguisher,路由区分符)

虽然 PE 本地用 VRF 隔开了,但路由要传到对端 PE 的 BGP 里,而 BGP 是全局的。为了解决“相同地址冲突”,给每个 VPN 的每条路由前面拼一个 8 字节的 RD,把 192.168.1.0/24 变成“65001:10-192.168.1.0/24”。这样在 BGP 眼里,A 和 B 的地址就不同了。RD 只为解决“不能重复”的问题,不参与选路。

RT(Route Target,路由目标)

RD 解决了“区分”,RT 解决“谁和谁能通”。RT 是一个团体属性(Community),分 Export(导出时打标签)和 Import(导入时按标签收)。例如 A 公司所有站点都 Export RT=100:1、Import RT=100:1,那么只有同样带 100:1 的路由才会被放进 A 的 VRF。这样就能灵活组建“全互联 VPN”“Hub-Spoke VPN”等拓扑。

概念作用类比
VRFPE 上隔离的路由表一节封闭车厢
RD让相同地址在 BGP 中唯一车厢编号前缀,防重名
RT控制哪些站点互通车票颜色,决定你能进哪节车厢

7.3 双层标签:公网隧道 + 私网标签

MPLS L3VPN 转发时,包里其实压了两层标签

  • 外层标签(公网隧道标签):由 LDP/RSVP-TE 分配,负责把包从本端 PE 送到对端 PE(解决“怎么跨越骨干网”)。
  • 内层标签(私网标签 / VPN 标签):由 MP-BGP 分配,对端 PE 收到后,靠它知道“该把这个包丢进哪个客户的 VRF”(解决“交给哪个客户”)。
CE --- PE (Push 内层VPN标签 + 外层隧道标签) --- 骨干(LSR Swap外层) --- 对端PE (Pop外层, 按内层标签入VRF) --- CE

7.4 完整流程示例

假设 A 公司北京站点(CE1)要访问上海站点(CE2):

  1. CE1 把 IP 包发给北京 PE;
  2. 北京 PE 查 A 的 VRF,发现去往上海私网的下一跳是对端 PE 的 BGP 路由,于是 Push 内层 VPN 标签 Lv,再 Push 外层隧道标签 Lt(去往上海 PE 的 LSP);
  3. 包带着两层标签进入 MPLS 骨干,中间 LSR 只 Swap 外层 Lt;
  4. 到达上海 PE(倒数第二跳 PHP 或最后一跳 Pop 外层);
  5. 上海 PE 看内层标签 Lv,查表知道“Lv 属于 A 公司 VRF 的某接口”,Pop 内层,把纯 IP 包发给 CE2。

整个过程,骨干网 LSR 完全不知道这是哪家客户的什么地址,只当“带标签的包”搬运。隔离性、扩展性都极好。

高手视角:真正的 MPLS L3VPN 是“MP-BGP 传递 VPNv4 路由 + 内层标签”与“LDP/RSVP-TE 提供外层隧道”的叠加架构。理解这一点,你就能看懂任何厂商的 VPN 配置。

第 8 章 L2VPN 与 VPLS:让异地像连在同一根线

8.1 L3VPN 与 L2VPN 的区别

L3VPN 里,运营商 PE 参与客户的三层路由(帮客户做 IP 转发、跑路由协议)。但有些客户不想把路由交给运营商,只想把两个站点的二层链路(以太网)在地理上拉直,像一根长网线。这就是 L2VPN。

8.2 VPWS:点对点的“虚拟专线”

VPWS(Virtual Private Wire Service,虚拟私有线缆服务)提供站点 A 到站点 B 的一对一二层透传。PE 把 A 收到的一个以太网帧,原封不动(只加 MPLS 标签)送到 B。客户感觉“两根网线被延长到了一起”。常用于替代传统的 SDH/DDN 专线。

8.3 VPLS:多点的“虚拟交换机”

VPLS(Virtual Private LAN Service,虚拟私有局域网服务)更厉害:它让分散在多地、属于同一客户的多个站点,像连在同一个以太网交换机上。PE 之间通过 MPLS 全连接(或 PW 网格),并在数据平面模拟以太网交换——学习 MAC 地址、广播泛洪、 unknown unicast 泛洪。

类比:VPWS 像“北京和上海之间拉了一根专属网线”;VPLS 像“把北京、上海、广州三地的办公室,接进了同一台看不见的、分布式的虚拟交换机”,它们在一个广播域里,能互相 ARP、能广播。

8.4 L2VPN 的标签结构

和 L3VPN 类似,L2VPN 也常用“外层隧道标签 + 内层 PW(伪线)标签”。内层 PW 标签标识“这是哪条二层电路/哪个 VPLS 实例”,由信令协议(LDP 的 PW 扩展 或 BGP)分配。VPLS 还需在 PE 间做 MAC 地址学习,复杂度和状态量随站点数平方增长,这是 VPLS 的扩展瓶颈之一。

8.5 EVPN:拯救 L2 的“控制平面革命”

传统 VPLS 用“数据平面泛洪学 MAC”,效率和扩展性都差。后来业界引入 EVPN(Ethernet VPN),用 BGP在控制平面提前分发 MAC 地址和可达性,不再靠泛洪。EVPN 既能做二层(替代 VPLS),也能做三层(替代传统 L3VPN),是当今最主流的 VPN 方案。记住:EVPN 是“控制平面”,MPLS/SRv6 是“数据平面承载”,二者可自由组合(EVPN over MPLS、EVPN over SRv6)。

第 9 章 流量工程与 QoS:让网络“听话”

9.1 流量工程(TE)要解决什么

想象城市有两条路去机场:一条近但窄(容易堵),一条远但宽(很空)。传统 IP 路由只看“距离最短”,所有车都挤近路,远路空着。TE 的目标就是让一部分车改走远路,整体不堵。在网络里,这意味着把流量精准地分配到不同链路上,避免局部拥塞、提升利用率。

9.2 MPLS TE 的实现方式

基于前面讲的 RSVP-TE,可以建立“非最短路径”的 LSP:

  • 约束路径(C SPF):在 IGP 拓扑上,按“带宽、链路颜色、管理策略”等约束计算路径;
  • 带宽预留:LSP 建立时沿途预留资源,保证有路可走;
  • 负载均衡:把不同 FEC 映射到不同 LSP,实现“把大象和蚂蚁分开走”;
  • 快速重路由 FRR:为主 LSP 预置一条备份路径,链路断了 50ms 内切换,业务几乎无感。

9.3 QoS:用 EXP 位区分“轻重缓急”

MPLS 标签头里有 3 个 EXP 位(现称 TC,Traffic Class),能表示 0~7 共 8 个优先级。设备可以根据 EXP 做:

  • 分类与标记:把语音流量标 EXP=5,文件下载标 EXP=0;
  • 队列调度:高 EXP 进高优先级队列,优先发送;
  • 拥塞避免:拥塞时先丢低 EXP 的包(WRED)。
注意坑点:EXP 位只有 3 位,远少于 IP 头的 DSCP(6 位)。做 MPLS QoS 时,通常在 ingress 把 IP DSCP 映射成 EXP,在 egress 再把 EXP 映射回 DSCP,保证端到端优先级不丢失。

9.4 MPLS 的“差分服务”哲学

MPLS 网络通常采用差分服务(DiffServ)模型,而不是“逐流保证”。也就是“按类保障”,而不是“为每个视频通话单独开通道”。这既保证了关键业务(语音、信令)的低延迟,又避免了状态爆炸。对绝大多数运营商网络,DiffServ over MPLS 已是标配。

第 10 章 MPLS 的成就与局限:为何要有 SRv6

10.1 MPLS 带来的巨大价值

必须承认,MPLS 统治骨干网二十年,靠的是真功夫:

  • 极快转发:标签交换比逐包查路由快得多;
  • 天然 VPN:用标签隔离客户,规模巨大;
  • 流量工程:能精细控制路径与带宽;
  • 成熟稳定:标准完备、厂商互通好、运维经验丰富。

10.2 MPLS 的“阿喀琉斯之踵”

但时代在变,MPLS 的短板越来越明显:

  • 协议“全家桶”太重:要跑 MPLS,得同时养 OSPF/IS-IS + LDP + RSVP-TE + BGP + VPN 信令,协议多、状态杂、排障难;
  • 控制平面复杂、扩展性差:RSVP-TE 每条 LSP 全网都有状态,大规模时难以为继;
  • 与 IPv6/云原生割裂:MPLS 是“另一套体系”,无法直接利用 IPv6 生态、SRv6 可编程、SDN 集中控制等新技术;
  • 业务开通慢:跨域、跨运营商建立端到端 LSP 繁琐,难以匹配云时代“分钟级开通”的需求;
  • 芯片与运维锁定:MPLS 转发依赖专用标签处理,向新业务演进成本高。
核心矛盾:MPLS 把“智能”分散在网络的每一台设备上(每台 LSR 都要维护标签状态、参与协议)。而云时代希望“智能集中在控制器(SDN),网络只做简单转发”。这个矛盾,催生了 Segment Routing。

10.3 段路由:把“路牌”换成“导航清单”

下一章开始,我们进入 MPLS 的“继任者”世界——Segment Routing(SR,段路由)。它的核心理念是:不再让每台路由器记住整张标签地图,而是让源头发一份“导航指令清单”,沿途路由器照着清单一步一步走。这就像你出门前在手机里设好“先去加油站,再去超市,最后回家”的导航,一路照做即可,不需要每个路口都有交警指挥。

第 11 章 段路由(Segment Routing)横空出世

11.1 SR 的设计哲学

Segment Routing 由思科等公司提出,后来成为 IETF 标准。它的三个设计原则直指 MPLS 痛点:

  • 源路由(Source Routing):路径由入口(源)决定,并把路径编码成一串“段(Segment)”。中间节点无状态,只按指令执行;
  • 仅边界有状态:只有源(和可能的尾节点)需要维护路径信息,中间节点零状态,扩展性爆炸式提升;
  • 复用现有控制平面:SR 可以直接跑在 IS-IS/OSPF(扩展)或 IPv6 上,不需要 LDP、不需要 RSVP-TE,大幅简化协议栈。

11.2 什么是“段(Segment)”

Segment(段)是 SR 里最小的“指令单元”,代表网络中的某一个“动作目标”,例如:

  • 到达某台节点(Node Segment,相当于“去 R3”);
  • 经过某条链路(Adjacency Segment,相当于“走 R2-R3 这条线”);
  • 进入某个 VPN 实例(VPN Segment);
  • 执行某个特定功能(如“到这里做业务链引流”)。
类比外卖:Segment 就是外卖 App 里的“途经点”。你想让骑手“先去奶茶店(段A),再去便利店(段B),最后送到家(段C)”。你把这三个途经点一次性发给骑手,他照着走。骑手本人不需要提前记住全城路线,这就是源路由 + 段序列的精髓。

11.3 段序列(Segment List)

把多个 Segment 按顺序排成一列,就是 Segment List(段列表),相当于完整导航路线。例如 [R1, 链路R2-R3, R4] 表示:先到 R1,再走 R2-R3 链路,最后到 R4。源节点把这个列表塞进包里(或在包头指示),沿途设备逐个“消费”段,直到走完。

11.4 SR 的两种数据平面:SR-MPLS 与 SRv6

SR 是“理念”,它可以用两种技术承载:

  • SR-MPLS:用 MPLS 标签来装 Segment(把 Segment 编码成标签值)。好处是直接兼容现有 MPLS 设备,是 MPLS 向 SR 演进的平滑路径;
  • SRv6:用 IPv6 地址来装 Segment(把 Segment 编码成 128 位 IPv6 地址,放在 IPv6 扩展头里)。好处是原生 IPv6、可编程、面向未来,是终极形态。

下一章先快速过 SR-MPLS,然后我们用大量篇幅攻克 SRv6。

第 12 章 SR-MPLS:给 MPLS 装上“导航清单”

12.1 标签即段

在 SR-MPLS 中,一个 Segment 就是一个 MPLS 标签。Node Segment 对应一个全局标签(如 16003 表示“去节点 3”),Adjacency Segment 对应一个本地标签(如 24003 表示“走某条邻接链路”)。

12.2 段列表 = 标签栈

所谓“段序列”,在 SR-MPLS 里就是一个 MPLS 标签栈。源节点把要依次经过的 Segment 压成一摞标签(顶部是最先执行的段),中间节点照常做 Swap,本质上就是 MPLS 转发——所以 SR-MPLS 不需要新硬件,现有 MPLS 芯片直接支持。这也是它快速普及的原因。

Segment List = [去R1, 走链路R2-R3, 去R4]
映射为标签栈(从底到顶压入):
  底层标签: 16004 (Node R4)
  中层标签: 24023 (Adj R2-R3)
  顶层标签: 16001 (Node R1)   <- 先被处理

12.3 SR-MPLS 怎么分发 Segment

关键优势来了:SR-MPLS 不需要 LDP 和 RSVP-TE。Segment 信息通过 IGP 扩展(OSPF/IS-IS 的 SR 扩展)直接在路由协议里广播。每台路由器宣告“我是节点 3,我的 Node-SID 是 16003”,全网自动同步,自动算出任意段的标签路径。协议栈从“OSPF+LDP+RSVP+BGP”精简为“OSPF/IS-IS(带SR扩展)+ BGP”,运维幸福感飙升。

12.4 SR-MPLS 的局限

虽然 SR-MPLS 解决了“协议简化、无状态”,但它终究还是 MPLS 标签体系

  • 标签只有 20 位,能表达的“指令”有限,可编程性弱
  • 仍是“另一套网络层”,与 IPv6、云、主机生态割裂;
  • 难以直接在互联网、5G、IoT 等纯 IP 环境端到端部署;
  • 对“网络编程”(在沿途插入复杂业务功能)支持不足。

这些局限,正是 SRv6 要彻底解决的。我们正式进入重头戏。

第 13 章 SRv6 基础:用 IPv6 地址当“指令”

13.1 SRv6 是什么

SRv6(Segment Routing over IPv6) 是把 Segment Routing 跑在 IPv6 原生 数据平面上的技术。它最大的颠覆是:不再用 MPLS 标签,而是直接用 IPv6 地址本身来编码“段(指令)”。换句话说,网络里的“导航指令”就是普通的 IPv6 地址,每个地址都代表“到达某处 + 执行某个动作”。

类比升级:MPLS 标签像“贴在包裹上的条形码编号”,只有网络设备懂;SRv6 像“把指令直接写成了收件人地址”——而这个地址本身就说清楚了“送到哪个邮局,并在那里办什么事”。因为它是标准 IPv6 地址,任何支持 IPv6 的设备、主机、云都能理解和参与。

13.2 SID:SRv6 的“段标识符”

在 SRv6 里,Segment 叫做 SID(Segment Identifier)。它就是一个128 位的 IPv6 地址。但和普通的“主机地址”不同,SRv6 的 SID 被人为划分成几个有意义的部分:

字段含义说明
Locator(定位符)路由可达部分类似“街道地址”,保证这个 SID 能被路由到对应节点
Function(功能)要执行的指令类似“门牌号后的备注:在此做 VPN 终结/做重定向”
Arguments(参数,可选)附加参数少数 SID 需要,承载额外控制信息
一个 SRv6 SID 的 128 位结构示意:
|-------- Locator (例如 64~96 bit) --------|---- Function (例如 32~16 bit) ----|
  例如:2001:db8:1:3::  (Locator=节点3)   +  4 (Function=End.X 去某邻接)
        => 完整 SID: 2001:db8:1:3::4

13.3 Locator:让 SID“可被路由”

Locator 是 SID 的前缀部分,它必须能被 IGP/BGP 路由。比如节点 R3 宣告“我负责 2001:db8:1:3::/64 这一段”,那么任何去往以该前缀开头的 SID,都会一路路由到 R3。到达 R3 后,R3 再看 SID 的 Function 部分,决定具体执行什么动作。这就把“如何到达”和“到达后干什么”优雅地编码进同一个地址。

13.4 Function:网络可编程的灵魂

Function 是 SID 的灵魂,它定义了“到达这个节点后要执行什么指令”。这是 SRv6 相比 MPLS 的革命性能力——网络节点可以像执行小程序一样执行 SID。常见 Function 类型(按 IETF 标准命名):

  • End:最基础的“终点”动作——弹出当前段,处理下一个段(相当于“到达这里,继续前进”);
  • End.X:到达后,把包从指定链路转发出去(Adjacency 段);
  • End.T:查指定拓扑表转发(用于多拓扑);
  • End.DT4 / End.DT6 / End.DT46:解封装并查 IPv4/IPv6 路由表(用于 SRv6 VPN,对应 MPLS 的私网标签);
  • End.DX4 / End.DX6:解封装并直接发给指定下一跳(用于 L2/L3 交叉连接);
  • End.B6 / End.BM:绑定到一段 SRv6 策略(Binding SID,做隧道嵌套);
  • End.AM:应用层段,用于服务链(把包引向防火墙、DPI 等)。
高手理解:MPLS 标签只是“编号”,本身不含动作语义;SRv6 的 SID 是“地址 + 动作”二合一。Function 字段让每个 SID 自带指令,这是网络可编程(Network Programming)的基础——你可以像拼乐高一样把不同 Function 的 SID 组合成任意业务逻辑。

13.5 SRH:段路由头

既然不用 MPLS 标签栈了,SRv6 靠什么携带“段列表”?答案是 IPv6 的扩展头——SRH(Segment Routing Header,段路由头),Next Header 值为 43(路由头类型 4)。SRH 里装着:

  • Segment List[]:完整的目的段序列(多个 SID);
  • Segments Left(SL):还剩几个段没处理(类似“导航还剩几站”);
  • Last Entry:段列表最后一个元素的索引;
  • 可选的类型长度值(TLV),携带 OAM、HMAC 等附加信息。
IPv6 头 (目的地址 = Segment List[SL], 即当前要去的 SID)
  |--- SRH (段路由头) ---|
       Segments Left = 2
       Segment List = [SID-A, SID-B, SID-C]
                       ^当前在 C(SL=0) 实际 IPv6 目的地址=C
  |--- 内层原始包 (IP/ payload) ---|

转发时,设备处理完当前 SID,把 Segments Left 减 1,并把 IPv6 目的地址改成段列表里的下一个 SID,然后转发。如此逐级“消费”,直到 SL=0,到达最终目的地。

第 14 章 SRv6 转发机制与编程能力

14.1 两种封装模式

SRv6 向包里插入 SRH 有两种常见方式:

插入模式(Insertion)

在原有 IPv6 包头和净荷之间,直接插入一个 SRH。原包的目的地址被移到段列表(作为最后一段),新的目的地址设为第一个 SID。优点是不额外增加外层 IP 头、开销小;缺点是需要修改原 IPv6 头,某些场景受限。

封装模式(Encapsulation,最常用)

源节点(或入口 PE)把整个原始包作为净荷,外面再套一个新的 IPv6 头 + SRH。外层 IPv6 目的地址设为当前 SID。这类似于“把信装进一个印着导航清单的新信封”。优点是对原包零侵入、兼容性好,是 SRv6 VPN 的标准做法。

封装模式下的报文:
[ 外层 IPv6 头 (dst = 当前SID, nh=43) ]
[ SRH: Segment List=[SID1,SID2,SID3], SL=2 ]
[ 内层: 原始 IPv6/IPv4 包 ]

14.2 节点处理 SRv6 包的标准流程

一个支持 SRv6 的节点收到包后,大致这样做:

  1. 查 IPv6 目的地址,看它是否匹配本机的某个 SID(Locator 命中);
  2. 若命中,查该 SID 对应的 Function,执行对应动作(End/End.X/End.DT6 等);
  3. 若是 End 类,把 SL 减 1,更新目的地址为段列表[SL],转发;
  4. 若是 End.DT6 类(VPN 终结),解封装,取出内层包,按对应 VRF 路由表转发给客户;
  5. 若目的地址不是本机 SID,则按普通 IPv6 路由转发(Locator 路由把它送到拥有该 SID 的节点)。
对比 MPLS:MPLS 是“查标签→换标签→转发”;SRv6 是“查 SID→执行 Function→更新目的地址→转发”。思路神似,但 SRv6 用的是标准 IPv6、动作由 Function 定义、能力远超标签。

14.3 网络编程:把 SID 当“指令拼图”

SRv6 最迷人的地方是网络编程。因为 SID 自带动作,你可以把一串不同 Function 的 SID 组合起来,描述任意复杂的业务路径。例如要实现一个“总部流量先过防火墙、再走低延迟链路、最后进入分支 VPN”的策略,可以这样拼:

Segment List = [
  SID-FW   (End.AM: 引流到防火墙做安全检测),
  SID-LOW  (End.X: 走低延迟链路),
  SID-VPN  (End.DT6: 解封装进入分支 VRF 并投递)
]

这在 MPLS 里几乎无法实现(MPLS 标签没有“引流到防火墙”这种语义),但在 SRv6 里只是几个 SID 的组合。这就是“可编程网络”的威力。

14.4 SRv6 与 SDN:天作之合

由于路径完全由源(或控制器下发的头端)决定,SRv6 天然适合 SDN 集中控制。控制器(如华为 iMaster、思科 NSO、开源的 SONiC/Stratum)计算出端到端 Segment List,下发给入口节点。网络中间节点保持“无状态、简单转发”,完美契合云时代“控制与转发分离”的架构。再加上 SRv6 原生 IPv6,能端到端贯通数据中心、广域网、5G 和云,真正实现“一网通达”。

第 15 章 SRv6 应用场景:从 VPN 到切片

15.1 SRv6 L3VPN

对应 MPLS L3VPN,SRv6 用 End.DT4 / End.DT6 SID 做“私网终结”。CE 把 IP 包发给 PE,PE 封装外层 IPv6+SRH(段列表含对端 PE 的 End.DT6 SID),沿途按 SRv6 路由转发,对端 PE 收到后执行 End.DT6:解封装,按内层地址查对应 VRF 表,送给 CE。整个过程不需要 LDP、不需要 RSVP、不需要 MPLS 标签,只用 IPv6 + IGP(SR 扩展)+ BGP(EVPN 传路由)。

15.2 SRv6 L2VPN / EVPN

End.DX2(二层交叉连接)等 SID,可以把以太网帧通过 SRv6 隧道透传,实现 VPWS/VPLS 等价功能。更优的是结合 EVPN 作为控制平面,用 BGP 分发 MAC/IP 可达性,数据面走 SRv6。这叫 EVPN over SRv6,是当前城域网、数据中心互联(DCI)的主流方案。

15.3 SRv6 TE(流量工程)

SRv6 的 TE 比 RSVP-TE 简单得多。头端直接构造包含“Node SID + Adjacency SID”的段列表,就能精确指定路径,例如“先到 R2,再强制走 R2-R5 链路,再到 R7”。不需要全网为每条 LSP 维护状态,不需要 RSVP 信令。结合 SR Policy(段路由策略),还能做基于时延、带宽、链路上色的智能选路,以及 TI-LFA(拓扑无关无环路备份,50ms 保护)。

15.4 网络切片(Network Slicing)

5G 和垂直行业(电力、交通、工业)要求“一张物理网,多个逻辑网,彼此 SLA 隔离”。SRv6 的 Locator 可绑定切片 ID,不同切片的流量走不同 Locator 对应的 SID,再配合 Flex-Algo(灵活算法,为不同切片跑独立 IGP 计算)和切片相关的 Function,能实现亚秒级、确定性的硬隔离。这是 MPLS 难以低成本做到的。

15.5 5G 承载与云网融合

3GPP 标准已明确把 SRv6 作为 5G 回传的重要方案。5G 的 CU/DU/UPF 之间需要灵活、低延迟、可编程的连接,SRv6 用标准 IPv6 打通无线、承载、核心网与云,避免了 MPLS 与 IP 两套体系转换的麻烦。同时,SRv6 能直接延伸到云内(Kubernetes、云厂商 VPC),实现“云网一体”。

应用MPLS 做法SRv6 做法
L3VPNLDP隧道+BGP私网标签IGP-SR + End.DT6 SID
TERSVP-TE 信令源端 SR Policy 段列表
保护RSVP FRRTI-LFA(无状态)
切片复杂、需多层Locator+Flex-Algo 原生
云网延伸需网关转换原生 IPv6 直达

第 16 章 SRv6 压缩技术:uSID 与 G-SRv6

16.1 SRv6 的“先天缺点”:报文头太长

SRv6 有个广受批评的问题:每个 SID 是 128 位(16 字节)。如果一条路径要经过 10 个段,SRH 里的段列表就要 160 字节,再加上外层 IPv6 头 40 字节,封装开销巨大。在 MTU 较小、或段数很多的场景,会显著拉低有效吞吐、增加分片风险。于是业界提出压缩 SRv6(Compressed SRv6)

16.2 uSID(micro SID)

uSID 的思想是:把一个 128 位的 SID,拆成多个短的“微段”。最常见的做法是把 128 位分成 8 个 16 位(或 4 个 32 位)的格子,每个格子放一个 uSID(微段)。这样原本一个 SID 占 16 字节,现在一段路径的多个微段能“挤”进一个 128 位容器里,极大节省空间。

标准 SRv6:  [SID1(128bit)][SID2(128bit)][SID3(128bit)] = 48 字节
uSID:       [blk | u1 | u2 | u3 | u4 | u5 | u6 | u7]    = 16 字节装 7+ 个微段
              一个 128 位容器装下整条短路径

16.3 G-SRv6(Generic SRv6)

G-SRv6 是另一派压缩方案(国内标准推动较多),采用“Common Prefix + 变长压缩”的方式:把多个 SID 共享的前缀提取一次,后面只携带变化的“压缩后缀”(如 16/32 位)。既保留 SRv6 的编程能力,又显著降低开销,且对硬件友好。

16.4 压缩技术的意义

压缩 SRv6 解决了“头开销大”这个阻碍 SRv6 规模部署的关键问题,使其在城域、移动回传、甚至对报文效率敏感的场景也能高效运行。今天主流设备厂商均已支持 uSID / G-SRv6,压缩后的 SRv6 与标准 SRv6 可互通,平滑演进。

一句话:标准 SRv6 功能最强但头长;压缩 SRv6(uSID/G-SRv6)在几乎不损失能力前提下把头压到最小。实际部署通常“混合使用”:关键节点用完整 SID 保证可编程,长路径用压缩省带宽。

第 17 章 MPLS 与 SRv6 全面对比与演进路线

17.1 横向对比表

维度MPLS / SR-MPLSSRv6
数据平面MPLS 标签(32bit, 20bit 值)IPv6 + SRH(128bit SID)
是否原生 IP否,独立垫层是,标准 IPv6
协议栈IGP + LDP/RSVP + BGPIGP(SR扩展)+ BGP
中间节点状态有(标签表)几乎无(仅源/尾端)
可编程性弱(标签无语义)强(SID 含 Function)
流量工程RSVP-TE 复杂SR Policy 源路由,简单
VPN 支持成熟(L3VPN/L2VPN)成熟(EVPN over SRv6)
云/5G 延伸需转换网关原生贯通
硬件要求现有 MPLS 芯片即可需 IPv6/SRH 处理(新芯片)
成熟度极成熟,二十年验证快速成熟,标准持续完善
头开销小(4 字节/标签)大(可压缩优化)

17.2 演进路线:不是“取代”而是“分层共存”

很多人问“SRv6 会不会淘汰 MPLS?”现实答案是:长期看 SRv6 是方向,但未来十年是共存期

  • 阶段一(已发生):纯 MPLS 网络 → 引入 SR-MPLS,保留 MPLS 转发,简化协议栈;
  • 阶段二(进行中):核心/骨干逐步支持 SRv6,新建网络直接上 SRv6;
  • 阶段三(未来):SRv6 成为端到端统一底座,MPLS 在存量设备、特定场景长期服役;
  • 互通:通过 Binding SID / 网关,MPLS 域和 SRv6 域可以无缝对接,业务不中断迁移。
类比:MPLS 像成熟的“铁路系统”,SRv6 像新兴的“智能公路网”。短期内铁路不会拆,公路会越修越宽;最终两种交通方式通过“换乘枢纽(网关)”连成一体,货物(数据)自由流转。

17.3 如何选型

给实际网络的建议:

  • 存量 MPLS 设备多、求稳:继续 MPLS,可平滑加 SR-MPLS;
  • 新建广域网/5G 承载/云网:优先 SRv6(配压缩);
  • 需要极致可编程、业务链、切片:SRv6 是唯一选择;
  • 跨域、跨厂商老设备:MPLS 互通性仍最稳。

第 18 章 实战配置示例(华为风格伪命令)

18.1 MPLS L3VPN 最小配置

下面是一段示意性配置,帮助建立直觉(不同厂商命令不同,但逻辑一致):

# 1) 全局开启 MPLS 与 LDP
mpls lsr-id 1.1.1.1
mpls
 label advertise non-propagonal  # 简化示意
mpls ldp
 route-id 1.1.1.1

# 2) 接口开启 MPLS 与 LDP
interface GigabitEthernet0/0/1
 mpls
 mpls ldp

# 3) 建立 VRF(客户 A)
ip vpn-instance A
 route-distinguisher 100:1
 vpn-target 100:1 export-extcommunity
 vpn-target 100:1 import-extcommunity

# 4) 连接客户的接口绑定 VRF
interface GigabitEthernet0/0/2
 ip binding vpn-instance A
 ip address 192.168.1.1 24

# 5) 与对端 PE 建立 MP-BGP,传递 VPNv4 路由
bgp 65000
 peer 2.2.2.2 as-number 65000
 peer 2.2.2.2 connect-interface LoopBack0
 ipv4-family vpnv4
  peer 2.2.2.2 enable
 ipv4-family vpn-instance A
  import-route direct          # 把客户路由引入 VPN

18.2 SRv6 基础配置(示意)

# 1) 启用 IPv6 与 SRv6
ipv6
segment-routing ipv6
 locator MYLOC 2001:db8:1::/64   # 本节点 Locator 前缀
  opcode ::1 end                # 分配 End SID = 2001:db8:1::1
  opcode ::2 end-x ge0/0/1      # 分配 Adj SID 走某链路

# 2) IGP (IS-IS) 发布 SRv6 Locator
isis 1
 ipv6 enable
 segment-routing ipv6 locator MYLOC

# 3) 配置 SRv6 VPN 实例(对应 End.DT6)
ip vpn-instance A
 ipv6-family
  segment-routing ipv6 locator MYLOC
  segment-routing ipv6 tunnel-policy ...

# 4) BGP EVPN 传递路由,数据面用 SRv6
bgp 65000
 peer 2.2.2.2
  ipv6-family evpn
   peer 2.2.2.2 enable
学习提示:配置命令会因华为、思科、Juniper、新华三而大不相同,但逻辑骨架永远一样:① 启用 SRv6 / 定义 Locator;② IGP 广播 Locator;③ VPN 实例绑定 Locator 的 End.DT SID;④ BGP 传路由。抓住骨架,任何厂商文档都能秒懂。

18.3 排障命令直觉

  • MPLS:display mpls lsp 看标签路径;display mpls ldp session 看邻居;tracert lsp 查路径;
  • SRv6:display segment-routing ipv6 locator 看 SID 分配;display ipv6 routing-table 看 Locator 路由;ping ipv6 / tracert ipv6 验证可达;
  • 通用:先看 IGP 通不通(Locator/标签前提),再看 BGP 邻居与路由,最后看数据面封装。

第 19 章 学习路径总结与进阶建议

19.1 核心知识地图回顾

我们从“快递贴纸”出发,走完了这样一条路:

  • 基础:MPLS 是什么 → 标签/LSR/LSP/FEC → 报文结构 → 控制/数据平面 → Push/Swap/Pop/PHP;
  • 协议:LDP 与 RSVP-TE 的取舍 → BGP 在 VPN 中的角色;
  • 业务:L3VPN(VRF/RD/RT/双层标签)→ L2VPN/VPLS → EVPN;
  • 增强:流量工程、QoS/EXP;
  • 演进:MPLS 局限 → Segment Routing 理念 → SR-MPLS → SRv6(SID/Locator/Function/SRH);
  • 深入:SRv6 转发与编程、应用(VPN/TE/切片/5G)、压缩(uSID/G-SRv6);
  • 对比:MPLS vs SRv6 全面对照与共存演进。

19.2 推荐学习阶梯

阶段目标行动建议
入门讲清 MPLS 概念用本手册比喻复述;画一张标签转发流程图
进阶理解 VPN 与协议在模拟器(EVE-NG/GNS3)搭 MPLS L3VPN 实验
高级掌握 SR/SRv6读 IETF RFC 8402(SR)、RFC 8986(SRv6);搭 SRv6 实验
专家面向业务设计研究 EVPN、Flex-Algo、切片、SRv6 编程与压缩

19.3 必读 RFC 与标准

  • RFC 3031:MPLS 架构(奠基之作,必读);
  • RFC 3036:LDP 协议;
  • RFC 4364:BGP/MPLS IP VPN(L3VPN 圣经);
  • RFC 8402:Segment Routing 架构;
  • RFC 8754:IPv6 Segment Routing Header(SRH);
  • RFC 8986:SRv6 网络编程(Function 定义大全);
  • RFC 9300/9301:SRv6 压缩(uSID)相关。

19.4 给“高手”的最后一句话

真正的高手,不在于背下多少命令,而在于理解“为何这样设计”。MPLS 用标签把“转发”与“路由”解耦,SRv6 进一步把“路径决策”从每台设备收拢到源头、把“网络能力”编码进地址本身。从 MPLS 到 SRv6,是网络从“分布式智能、逐跳协商”走向“集中式编程、源端定义”的范式转移。掌握这条主线,你就能在云、5G、算力网络的时代里,看懂任何一张新一代网络架构图。

结语彩蛋:如果有人问你“MPLS 和 SRv6 到底啥关系”,你可以这样回答——“MPLS 是给包裹贴条形码、让分拣员按码搬货的旧时代物流;SRv6 是给每个包裹写明了导航指令和代办事项的标准快递,任何支持 IPv6 的快递员都能照着办。它们解决的是同一个问题,只是代际不同。”