image.png

1. MultiProtocol Label Switching(多协议标签交换)特征


  • MPLS 起源于 IPv4,后续扩展到多种网络协议(IPv6、IPX、CLNP 等),最初是为了提高路由器的转发速度而提出的,引入了面向连接的标签交换概念,将第三层路由技术和第二层交换技术相结合,发挥了 IP 路由的灵活性和二层交换的简捷性。相比传统 IP 路由方式相比,在数据转发时,只在网络边缘分析 IP Header,而不用在每一跳都分析 IP Header,因此节约了数据转发的处理时间。,在 MPLS 之前还有一个 ATM 技术,采用定长标签,由于部署成本高和协议相对复杂而导致没有普及
  • MPLS 是一种 IP 骨干网技术,实际上是一种隧道技术(LSP 标签交换路径),可以通过多层标签形成标签栈。而且在专网属性上一定程度保证信息传输的安全性
  • 信元模式的 MPLS 已经被淘汰
  • 以太帧封装 Type 类型
    • 0x8847 MPLS 单播
    • 0x8848 MPLS 组播
  • PPP 封装 Type 类型
    • 0x8281 MPLS 单播
    • 0x8283 MPLS 组播
  • MPLS 现网的应用
    • MPLS VPN
    • MPLS TE(服务于 MPLS VPN)
    • MPLS MP
    • MPLS QoS(服务于 MPLS VPN)
  • 分发标签的协议
    • 静态方式分发标签
    • LDP(标签分发协议):为 IGP 分发标签
    • RSVP(资源预留协议):用于 MPLS TE(MPLS 流量工程)
    • MP-BGP 多协议 BGP:为 BGP 单播路由分发标签
    • SR(Segment Routing):Cisco、Huawei 新的标签协议,标签是全局有效
  • MPLS 主要是实现了转控分离
    • 控制层面:路由协议、标签的分发协议
    • 转发层面:FIB(转发信息库)、LFIB(标签转发信息库)

      2. MPLS 结构


1)MPLS 网络结构

任何设备都有多个角色,要看数据传输到哪里(因为 MPLS 是单向的建立 LSP)

image.png
MPLS Domain:由一系列连续的 LSR 构成 MPLS 域
LSR(Label Switch Router):标签交换路由器,在网络中交换标签和报文转发的设备
Transit LSR(中转 LSR):交换标签 Swap,查看LFIB转发标签
LER(Label Edge Router):边缘路由器,在网络边缘执行压入标签或弹出标签处理的设备(有非 MPLS 邻居的设备)
Ingress LSR(入站 LSR):压入标签 Push,查看FIB进行转发
Egress LSR(出站 LSR):弹出标签 Pop,查看LFIB后移除标签再查FIB转发(会增加PE设备负担)
LSP(Label Switched Path):标签交换路径,是标签报文到达目的地的转发路径(经过的设备)。LSP 是单方向的,没有入接口,只有出接口

2)MPLS 体系结构

FEC(转发等价类):类似于目的 IP,对应的是一组相同特征的数据流,其实在这里就是指路由前缀(去往同一地址目的地的,具有相同转发性质的报文)。LDP 会为每个 FEC 分配一个 Label

MPLS - 图3

  • 控制平面:负责产生和维护路由信息以及标签信息
    • RIB(路由表):由 IP 路由协议生成,用于选择路由
    • LDP(标签分发协议):负责标签的分配、标签转发信息表的建立、标签交换路径的建立、拆除等工作,依赖 IGP 的路由表
    • LIB(标签表):由标签分发协议生成,存储的是邻居分发的标签,包含所有标签,无论是优选的标签还是次优的标签(类似于 IGP 的 LSDB)
  • 转发平面:即数据平面,负责普通 IP 报文的转发以及带 MPLS 标签报文的转发
    • FIB(转发表):由 RIB 和 LDP 协议共同组成,负责普通报文的转发,包含了出接口、下一跳地址、标签等。FIB 中 Tunnel ID ≠ 0 则用标签转发
    • LFIB(标签转发表):由标签分发协议在 LSR 上建立,只负责带 MPLS 标签报文的转发

      3. MPLS 标签


MPLS 报文与普通的 IP 报文相比在二层和三层之间增加了 MPLS 标签信息,MPLS 标签的长度为「4」个字节(每层)。MPLS 标签封装在链路层和网络层之间,可以支持任意的链路层协议 标签只有本设备有效

1)MPLS 标签格式

MPLS 支持多标签嵌套,当有多层标签封装时就构成了一个「标签栈」。靠近二层头部的标签称为「外层标签」,靠近 IP头部的称为「内层标签」

MPLS - 图4
MPLS 标签格式解析

  • Label:20bit,标签空间,就是标签的取值范围
  • Exp:3bit,用于做 CoS,对应 IP 报文中的 ToS 或 DSCP。当设备阻塞时,优先发送优先级高的报文
  • S:1bit,栈底标识
    • S =1:表示最后一层标签
    • S = 0:不是最后一层标签
  • TTL:8bit,和 IP 报文中的 TTL 意义相同,可以相互拷贝 TTL

    2)标签范围

  • 0 ~ 15:特殊标签

  • 16 ~ 1023:静态分配的标签
  • 1024 以上:标签分发协议动态产生

    3)特殊标签

    | 标签值 | 含义 | 描述 | | —- | —- | —- | | 0 | IPv4 显示空标签 | 表示该标签必须被弹出,且报文进行 IPv4 转发 | | 1 | 路由器警报标签 | 只有出现在非栈底时才有效 | | 2 | IPv6 显示空标签 | 表示该标签必须被弹出,且报文进行 IPv6 转发 | | 3 | 隐式空标签 | 表示在次末跳时弹出标签 | | 14 | OAM 路由器报警标签 | 通过发送 OAM 报文检测和通告 LSP 故障 |

4. LSP 的建立和转发


1)LSP 的建立

按照从下游 LSR 到上游 LSR 的方向分发 Label,下游 LSR 在 IP 路由表的基础上进行 FEC 的划分,并根据 FEC 分配标签,通告给上游 LSR 建立 LFIB 和 LSP

  • 静态建立 LSP:手工定义的 LSP 转发路径
  • LDP 建立 LSP:根据 IGP、BGP 路由信息通过逐跳方式建立 LSP
  • RSVP 建立 LSP:用于建立基于约束的 LSP
  • MP-BGP 建立 LSP:是在 BGP 协议基础上扩展的协议,支持为MPLS VPN业务中私网路由和跨域VPN的标签路由分配标签

    2)LSP 的角色和转发

    • 把 IGP 下一跳的 Label 放入 LFIB,用于标签转发。一个设备可以可以有多种角色
    • FIB、ILM 和 NHLFE 表项是通过 Tunnel ID 关联的

image.png

  • Tunnel ID:为使用隧道的上层应用(如VPN、路由管理)提供统一的接口,只本地有效
  • 下一跳标签转发表项(NHLFE):用于指导 MPLS 报文的转发。包括 Tunnel ID、出接口、下一跳、出标签、标签操作类型等
  • 入标签映射(ILM):入标签到一组下一跳标签转发表项,ILM 在 Transit 节点的作用是将标签和 NHLFE 绑定,通过标签索引 ILM 表,就相当于使用目的 IP 地址查询 FIB,能够得到所有的标签转发信息。包括 Tunnel ID、出接口、下一跳、出标签、标签操作类型等
  • 入口 PE 设备(Ingress):标签行为是 PUSH「压入标签」。IP 报文进入 MPLS 域,查看 FIB,根据目的 IP 地址找到对应的 Tunnel ID,然后进行转发
  • 传输 P 设备(Transit):标签行为是 SWAP「交换标签」,查看 LFIB 交换标签进行转发
  • 出口 PE 设备(Egress):标签行为是 POP「弹出标签,隐式空标签」,每次只能弹出一层标签
  • Untag/No Label(没有标签):出现问题,导致无法转发数据。在 MPLS VPN环境中只能丢弃报文
  • Aggregate(聚合):把报文拿掉 MPLS 之后转发给一个 VRF 接口

/