MPLS VPN 标签到底是怎么“套娃”的?

小陈 的头像

0 评论

13 阅读

2,344 字,阅读时间 12 分。

hello,我是网工小陈。

在第一次接触 MPLS VPN 的同学眼里,抓个包会看到这样的画面:

  • 原本的 IP 数据包外面套了一个 MPLS 标签
  • 有时候不是一个,而是两个甚至三个标签
  • 标签的值还会变来变去

于是问题来了:

“为什么要多加一个标签?”

“这些标签是谁加的、在哪加的?”

“解的时候是按什么顺序剥的?”

如果你把 MPLS VPN 想成一辆快递车运送包裹,标签就是快递单,但为了送到最终目的地,中途可能会贴上中转标签区域标签,甚至不同快递公司之间还会再套一层外包装——这就是“套娃”的由来。

MPLS VPN 标签到底是怎么“套娃”的?_img_1

基于MPLS的VPN

接下来,我们按从外到内、从入口到出口的顺序,把 MPLS VPN 标签的“套娃”过程讲清楚。


1. MPLS VPN 的基本结构

一个典型的 MPLS VPN 网络中,有四类设备角色:

  1. CE(Customer Edge)

  • 客户侧的边缘路由器,不跑 MPLS
  • PE(Provider Edge)

    • 运营商边缘路由器,负责接入 VPN 客户,跑 MPLS
  • P(Provider)

    • 运营商核心路由器,只跑 MPLS,不接客户
  • CE-PE、PE-P、P-P

    • 分别对应不同连接场景

    MPLS VPN 最常用的是L3VPN(基于 BGP 的 MPLS VPN),核心在于:

    • VPNv4 路由:用 RD + IPv4 地址区分不同客户
    • 标签转发:用两层 MPLS 标签完成从 CE 到 CE 的跨网段通信

    2. “套娃”中的两个主要标签

    在 MPLS VPN L3VPN 场景中,一般会看到两层标签

    1. 外层标签(LDP/RSVP 标签)

    • 由 LDP(或 RSVP-TE)分发,用于在 MPLS 核心中找到目标 PE
    • 就像快递的“中转单号”,让包裹先到对的仓库(目标 PE)
  • 内层标签(VPN 标签)

    • 由 MP-BGP 分发,用于在目标 PE 上找到正确的 VPN 实例(VRF)
    • 就像快递到仓库后,内部的“客户收货单号”,保证投递给正确客户的 CE

    顺序

    • 外层标签在最外面,先被 P 路由器剥掉
    • 内层标签在里面,最终被 PE 路由器剥掉

    3. 数据流转过程:从源 CE 到目的 CE

    步骤 1:CE 发包给 PE

    • CE 不知道 MPLS 的存在,它把数据发到 PE
    • PE 查 VRF 路由表,决定下一跳是哪个 PE

    步骤 2:PE 给包“套娃”

    • PE 查询 BGP 路由条目,找到目标 VPN 标签(内层)
    • PE 再查询 LDP/RSVP,找到目标 PE 的 LSP 标签(外层)
    • 把这两个标签依次压到 IP 包头前:外层标签在前,内层标签在后

    步骤 3:核心 P 路由器转发

    • P 路由器只看外层标签,用 LFIB 查表,换上新的外层标签(标签交换)
    • 内层标签保持不变,直到到达目标 PE

    步骤 4:目标 PE 解外层标签

    • 当外层标签的S(Bottom of Stack)标志为 0 时,说明还有内层标签
    • PE 剥掉外层标签,继续根据内层标签查找 VRF
    • 找到对应 CE 的出接口,把数据发过去

    4. 多标签的特殊场景

    有时候你会抓到三层标签,比如:

    • LDP 外层标签
    • VPN 内层标签
    • 流量工程(RSVP-TE)标签FRR(Fast Reroute)标签

    甚至在MPLS over MPLS多段 LSP 拼接场景下,会出现更多层标签,但剥离顺序始终是从外到内


    5. 抓包分析 MPLS VPN 标签

    在运维中,我们经常会用Wireshark或设备自带的display mpls forwarding-table/show mpls forwarding-table来定位问题。

    抓包注意点:

    1. 外层标签值变化

    • 由于 P 路由器做标签交换,每经过一个 P 节点外层标签都会变

    • 如果外层标签完全没变,可能是 Penultimate Hop Popping(PHP,倒数第二跳剥标签)

  • 内层标签值稳定

    • 内层 VPN 标签在核心中不变

    • 如果变了,说明标签分发出现了错配,可能是 BGP/MPLS VPN 会话问题

  • S(Bottom of Stack)位

    • S=0 → 还有更多标签

    • S=1 → 这是最内层标签(VPN 标签)

  • 标签剥离点

    • 最终的 PE 会剥掉 VPN 标签

    • 倒数第二个 P 可能提前剥掉外层标签(PHP 场景)


    6. 运维中容易踩的坑

    1. 标签分发协议不一致

    • 核心设备有的用 LDP,有的用 RSVP,导致 LSP 不通
  • VPN 标签丢失

    • MP-BGP 会话没建立或路由过滤导致没有下发 VPN 标签
  • MTU 不够

    • MPLS 标签会占用 4 字节,如果链路 MTU 配得太小,会出现丢包
  • Penultimate Hop Popping 带来的混淆

    • 有时抓包看不到外层标签,其实是倒数第二跳剥掉了,不是 MPLS 没工作
  • 多段 LSP 拼接误判

    • 在跨 AS MPLS VPN(Inter-AS)场景下,标签会在边界重新分配

    7. 总结

    MPLS VPN 标签“套娃”并不是为了复杂化网络,而是为了兼顾全网可扩展性与多租户隔离

    • 外层标签让数据包在 MPLS 核心中找到目标 PE
    • 内层标签确保数据进入正确的 VPN 实例
    • “套娃”式结构让 P 路由器无需理解客户网络,只专注标签转发,减少了核心的路由负担

    一句话记住

    外层找人,内层找家,先送到门口,再送进房间。

    理解了标签的加剥逻辑,再结合抓包工具和设备命令,你就能快速定位 MPLS VPN 中的大多数转发问题,不会再被多层标签吓到。

    MPLS VPN 标签到底是怎么“套娃”的?_img_2
    网络工程师必备资料领取

    免责声明:本文内容来源于:

    微信公众号

    网络工程师小陈

    ,原文链接:

    http://mp.weixin.qq.com/s?__biz=Mzk0OTc0MzYxNA==&mid=2247485908&idx=1&sn=4630868a3750287526ca81e5285451f1&chksm=c352f345f4257a5330f8b0a8b28a2f26aa1092fd0866776ee64b1912b75c4438eb347c37f279#rd

    本站为个人站点,相关文章均为网络公开资料,仅出于个人学习、研究及资料整理之用途转载收集,所有版权均归原作者及原发布平台所有。文末作者信息仅用于进行本站文章的分类信息使用,不代表原作者授权或者原作者入驻等依据。
    本站不保证内容的完整性与准确性,亦不对内容承担任何法律责任。 如本文涉及版权问题,请原作者及时与我们联系,我们将在第一时间内进行删除处理。 本站尊重并遵守相关版权法规,倡导合法使用网络资源。 联系方式:[email protected]

    小陈 的头像

    60篇作品

    946总阅读量

    发表回复

    您的邮箱地址不会被公开。 必填项已用 * 标注

    更多文章

    网工通信弱电的宝藏知识网站