当前位置: 首页 > news >正文

MPLS的基本工作原理

一、MPLS标签动作

        MPLS 基本转发过程中涉及一些标签操作,主要包括标签压入 (Push)、标签交换(Swap)和标签弹出(Pop)这三个动作。

  • Push:标签压入动作,可能会在Ingress或Transit节点上发生。
    • 标签压入动作是指在IP报文的二层协议头和IP报头之间插入一个MPLS标签,或者是在现有标签栈顶部再增加一个新的出标签,即标签嵌套封装,如BGP/MPLS IP VPN的Ingress节点可能会在一个IP报文中同时压入多层公网或私网MPLS标签。
  • Swap:标签交换动作,会在Transit节点发生
    • 当MPLS报文在MPLS域内转发时,Transit节点根据标签转发表LFIB的查找,匹配到相应的表项后,用下一跳分配的出标签交换MPLS报文中原有的栈顶标签。原有MPLS报文中可以携带一层或多层MPLS标签,但仅交换最外层的标签。
    • Pop:标签弹出动作,会在倒数第二跳Transit节点或Egress节点发生
      • 当MPLS报文离开MPLS域时,Egress节点将MPLS报文外层的标签剥离,使后续的报文转发按照IP路由进行,或者按照余下的标签进行。也可以利用PHP特性,在倒数第二跳节点处将标签弹出,减少最后一跳的负担,使最后一跳节点直接进行IP路由转发或下一层标签转发。

二、Ingress LSR的处理

当IP报文进入MPLS域时:

  • Ingress LSR查看FIB表,检查目的IP地址对应的Tunnel ID值是否为0x0(如果Tunnel ID值为0x0,则进入正常的IP转发流程)。
  • 如果Tunnel ID值不为0x0,根据FIB表的Tunnel ID找到对应的NHLFE表项,将FIB表项和NHLFE表项关联起来。
  • 查看NHLFE表项,可以得到出接口、下一跳、出标签和标签操作类型。
  • 在IP报文中压入出标签,同时处理TTL,然后将封装好的MPLS报文发送给下一跳。

三、Transit LSR的处理

当MPLS报文在MPLS域转发时:

  • Transit LSR根据MPLS的标签值查看对应的ILM表,得到Tunnel ID。
  • 根据ILM表的Tunnel ID找到对应的NHLFE表项。
  • 查看NHLFE表项,得到出接口、下一跳、出标签和标签操作类型,标签操作类型为Swap,则交换标签。

四、Egress LSR的处理

当MPLS报文需要离开MPLS域时:

  • Egress根据ILM查询到该标签对应的操作为Pop,说明需要剥离该标签
  • 根据当前标签头部的下一层报文头部进行下一步处理

五、MPLS详细转发过程

        以下以支持PHP的LSP为例,说明MPLS报文的基本转发过程。在单纯的LDP LSP隧道环境下,MPLS报文最多仅带一层MPLS标签,从上游节点进入本地节点的入接口时携带的是上游节点分配给该FEC的出标签(也是本地节点对应的入标签),从本地节点出接口向下游节点发送时携带的是本地节点分配给对应FEC的出标签。

        如图1-16所示,MPLS标签已分发完成,建立了一条LSP,其目的 地址为4.4.4.2/32,其MPLS报文的基本转发过程如下。

图1-16 MPLS报文基本转发示例

(1)Ingress节点收到目的地址为4.4.4.2的IP报文后,首先根据 FIB找到对应的下一跳,发现下一跳是LSR标签设备(如果发现下一跳 是IP设备时会直接按FIB表项进行IP转发),并且因为本节点是入节 点,所以在进行报文转发前需要进行标签压入动作,需压入的标签是 根据FEC 4.4.4.2与标签的映射关系找到的(为Z,作为出标签),然后 把MPLS报文从压入的标签所映射的出接口转发出去。

(2)Transit节点收到该标签的MPLS报文后,根据LFIB找到对应入 标签(上一节点的出标签就是本节点的入标签)所映射的出标签、出 接口,先进行标签交换(无需查看IP报头的目的地址),即用本地为 FEC 4.4.4.2/32分配的出标签(Y)替换报文中原来的MPLS标签 (Z),然后从找到的出标签所映射的出接口转发出去。

(3)倒数第二跳Transit节点收到MPLS报文后,同样根据LFIB找到 对应入标签所映射的出标签、出接口,先用本地为FEC 4.4.4.2/32分配 的出标签(通常为3)替换原来的MPLS标签,然后准备从出标签3所映 射的出接口转发出去。但是因为Egress分给其的出标签值为3(这是一 个特殊的标签,必须弹出,参见表1-1说明),所以需要先进行PHP操 作,弹出出标签(此时报文已不带MPLS标签了),并根据自己的出标 签3所映射的接口转发报文。

(4)Egress节点收到无MPLS标签的IP报文后,直接根据对应的IP 路由表项把数据传输给目的主机4.4.4.2/32。

http://www.dtcms.com/a/324985.html

相关文章:

  • AI玩具新浪潮:百亿资本涌入,情感计算重塑陪伴经济
  • WAIC2025逛展分享·AI鉴伪技术洞察“看不见”的伪造痕迹
  • JAVA中关于Stream流的使用
  • 虚拟主机示例
  • vuhub drippingblues靶场攻略
  • Windows环境下私有化部署Dify,并接入通义千问模型
  • UNet改进(31):基于Adaptive Attention的UNet设计与实践
  • 基于Spring SSE构建实时监控系统
  • Python 的列表 list 和元组 tuple 有啥本质区别?啥时候用谁更合适?
  • TC39x STM(System Timer)学习记录
  • 压力测试等工具源码包编译及使用方法
  • Vulnhub doubletrouble 靶场复现 详细攻略
  • Knuth‘s TwoSum Algorithm 原理详解
  • MyBatis 核心入门:从概念到实战,一篇掌握简单增删改查
  • 【东枫科技】FR3 可扩展测试平台,适用于 6G 研究与卫星通信,高达 1.6 GHz 的带宽
  • 【自动化运维神器Ansible】playbook案例解析:Tags组件实现任务选择性执行
  • 【01】华勤技术股份有限公司——华勤C++笔试,题目记录及解析
  • Java基础-使用反射做一个简易框架
  • Python 实例属性和类属性
  • 【PyTorch】单目标检测项目
  • vulnhub-Drippingblues靶机
  • Typora结合PicGo + 使用Gitee搭建个人免费图床
  • 计算机网络---IP(互联网协议)
  • 2025年6月电子学会全国青少年软件编程等级考试(Python六级)真题及答案
  • 二叉树进阶 之 【二叉搜索树的简介与模拟实现的前提准备】
  • 【杂谈】-智能代理+可观察性:构建下一代复杂系统监控体系
  • UE5多人MOBA+GAS 41、制作一个飞弹,添加准心索敌
  • JS实现数组扁平化
  • 计算二分类误差时的常见错误及解决方案
  • ubuntu22.04+samba