mpls怎样标签交换

联启 网络工具 13

本文目录导读:

mpls怎样标签交换-第1张图片-电脑手机工具软件下载 - 免费实用工具合集 | 联启科技

  1. 场景假设
  2. 第一步:标签压入(Push)—— Ingress 路由器
  3. 第二步:标签交换(Swap)—— Transit 路由器
  4. 第三步:标签弹出(Pop)—— Egress 路由器
  5. 关键概念与补充说明
  6. 标签交换的本质

MPLS(多协议标签交换)的核心思想是通过短而固定的标签来指导数据包的转发,而不是像传统IP路由那样依赖最长前缀匹配,它的标签交换过程可以概括为“压入、交换、弹出”

下面用一个具体的例子来详细拆解这个过程。

场景假设

  • 网络中有一个MPLS域,包含三台路由器:Ingress(入口)Transit(中转)Egress(出口)
  • 数据包要从网络A发往网络B,路径是 Ingress → Transit → Egress。
  • 在MPLS域内部,为到达网络B的FEC(转发等价类)预先建立了一条LSP(标签交换路径),分配的标签如下:
    • Ingress 告诉 Transit:发送给我的数据,标签用 100
    • Transit 告诉 Egress:发送给我的数据,标签用 200

第一步:标签压入(Push)—— Ingress 路由器

  1. 收到原始IP包:Ingress路由器收到一个普通的IP数据包,目标IP是网络B。
  2. 分类:基于目标IP地址,它匹配到一个FEC(所有去往网络B的流量”)。
  3. 查找标签转发表:根据这个FEC,它查到对应的出站标签(Out Label)是 100,并且出接口是通往Transit路由器的接口。
  4. 执行动作
    • 在IP数据包前面压入(Push)一个MPLS头部,其中Label=100。
    • 将带有标签100的包从对应接口转发给Transit路由器。

数据包的样子: [MPLS Label=100] [IP头] [负载]


第二步:标签交换(Swap)—— Transit 路由器

  1. 收到带标签的包:Transit路由器从Ingress路由器收到一个带有标签 100 的MPLS包。
  2. 查找标签转发表:Transit路由器查看自己的LFIB(标签转发信息表),找到对应 入标签 = 100 的表项,表项内容通常为:
    • 入标签:100
    • 出标签:200 (这是下一跳Egress要求的标签)
    • 出接口:通往Egress路由器的接口
    • 下一跳:Egress路由器的IP
  3. 执行动作
    • 将MPLS头部中的标签从 100 交换(Swap)为 200
    • (如TTL、CoS)可能根据策略修改,但标签是核心替换项。
    • 将带有新标签200的包从出接口转发给Egress路由器。

数据包的样子: [MPLS Label=200] [IP头] [负载]


第三步:标签弹出(Pop)—— Egress 路由器

  1. 收到带标签的包:Egress路由器从Transit路由器收到一个带有标签 200 的MPLS包。
  2. 查找标签转报表:Egress路由器查找自己的LFIB,找到 入标签 = 200 的表项,它发现自己是LSP的终点(倒数第二跳通常已弹出,这里假设是Egress弹出,更常见的是PHP——倒数第二跳弹出,见下方补充)。
    • 表项通常显示:出标签为 PopImplicit-Null(隐式空标签)。
  3. 执行动作
    • 弹出(Pop)MPLS头部,直接露出原始的IP数据包。
  4. 继续IP转发:Egress路由器得到的是一个普通的IP数据包,它根据目标IP地址查询普通的路由表,将数据包转发给最终的设备(如网络B的交换机或PC)。

数据包的样子: [IP头] [负载] (恢复了原始形态)


关键概念与补充说明

  1. 转发等价类(FEC)

    在上面的例子中,“去往网络B的所有流量”就是一个FEC,MPLS将具有相同转发行为(例如去往同一目的地、同优先级)的流聚合到一个FEC,并分配相同标签,简化了处理。

  2. 标签分配与分发

    • 上面的例子假设标签已经预配好(例如通过LDP、RSVP-TE或BGP-LU协议),实际网络中,下游路由器(如Transit、Egress)会通过标签分发协议主动向上游路由器通告“你发给我去往网络B的包时,应该用标签X”。
    • 下游标签分发:Egress告诉Transit用标签200;Transit告诉Ingress用标签100。
  3. PHP(倒数第二跳弹出)

    • 在上面的例子中,如果Egress是直接弹出了标签,它还需要查一次IP路由表,为了优化,通常使用PHP:
      • Egress会告诉上一跳(Transit):“你不需要给我带标签,直接给我IP包就行,我自己查IP表更快。” Egress分配的标签是 隐式空标签(Implicit Null,值为3)。
      • 在Transit上,当它查到入标签=100时,出标签会执行 Pop 动作,直接去掉MPLS头部,将原始IP包发给Egress。
      • 这样,Egress就不需要再查标签表了,它直接收到IP包进行IP转发,这就是标准的MPLS转发流程。
  4. 标签栈(Label Stack)

    • MPLS允许在数据包前压入多层标签,最内层标签用于标识目的地,外层标签用于引导数据包通过特定的隧道(例如MPLS TE或L3VPN),在转发过程中,只有栈顶标签被用于转发决策,当外层标签弹出后,内层标签暴露出来,继续指导下一跳转发。

标签交换的本质

  • 数据层面:MPLS交换过程就是压入、交换、弹出三个基本操作的组合。
  • 控制层面:标签的分配和分发由标签分发协议完成,确保每个路由器都知道“收到标签X后,应该换成标签Y并发给谁”。
  • 核心优势:基于短标签的精确匹配转发,比基于最长前缀匹配的IP路由查找更快(硬件实现简单),并且天然支持流量工程和VPN多租户隔离。

标签: MPLS标签交换

抱歉,评论功能暂时关闭!