MPLS标签转发过程(个人学习笔记)

embedded/2024/10/18 6:06:06/

三个操作标签

  • Push:当IP报文进入MPLS域时,MPLS边界设备在报文二层首部和IP首部之间插入一个新标签;或者MPLS中间设备根据需要,在标签栈顶增加一个新的标签(即标签嵌套封装)。
  • Swap:当报文在MPLS域内转发时,根据标签转发表,用下一跳分配的标签,替换MPLS报文的栈顶标签。
  • Pop:当报文离开MPLS域时,将MPLS报文的标签剥掉。
    在最后一跳节点,标签已经没有使用价值。这种情况下,可以利用倒数第二跳弹出特性PHP(Penultimate Hop Popping),在倒数第二跳节点处将标签弹出,减少最后一跳的负担。最后一跳节点直接进行IP转发或者下一层标签转发。
    默认情况下,设备支持PHP特性,支持PHP的Egress节点分配给倒数第二跳节点的标签值为3

MPLS标签转发

        LSR处理报文时主要根据FTN、 NHLFE和ILM

        FTN(FEC-to-NHLFE):当 LSR收到IP报文并需要进行MPLS转发时使用,FTN只在Ingress存在。

        FTN包括:Tunnel ID、FEC到NHLFE的映射信息。

        过程:Ingress设备通过查看FIB表中Tunnel ID值不为0x0的表项,能够获得FTN的详细信息。

        下一跳标签转发表项(NHLFE,Next Hop Label Forwarding Entry):LSR对报文(MPLS或IP报文)进行MPLS转发时使用,NHLFE在IngressTransit存在

        NHLFE包括:Tunnel ID、出接口、下一跳、出标签、标签操作类型等信息

        入标签映射(ILM,Incoming Label Map):用于指导MPLS报文的转发(MPLS或IP转发),ILM只在TransitEgress存在

        ILM包括:Tunnel ID、入标签、入接口、标签操作类型等信息

Ingress LSR的处理

如果Tunnel ID值为0x0,则进入正常的IP转发流程。

如果Tunnel ID值不为0x0,则进入MPLS转发流程

当IP报文进入MPLS域时:

1、Ingress  LSR 查看FIB表,检查目的IP地址对应的Tunnel ID值是否为0x0(如果Tunnel ID值为0x0,则进入正常的IP转发流程)

2、如果Tunnel ID值不为0x0,根据FIB表的Tunnel ID 找到对应的NHLFE表项,将FIB表项和NHLFE表项关联起来。

3、查看NHLFE表项,可以得到出接口、下一跳、出标签和标签操作类型。

4、在IP报文中压入出标签,同时处理TTL,然后将封装好的MPLS报文发送给下一跳。

Transit LSR 的 处理

1、Transit LSR根据MPLS的标签值查看对应的ILM表,得到Tunnel ID。

2、根据ILM表的Tunnel ID找到对应的NHLFE表项。

3、查看NHLFE表项,得到出接口、下一跳、出标签和标签操作类型

4、处理方式:

  • 如果标签值>=16,则用新标签替换MPLS报文中的旧标签,同时处理TTL,然后将替换完标签的MPLS报文发送给下一跳。
  • 如果标签值为3,则直接弹出标签,同时处理TTL,然后进行IP转发或下一层标签转发(PHP倒数第二跳弹出)。

Egress LSR的处理

Egress根据ILM查则查看ILM表获得标签操作类型,同时处理TTL

        如果标签中的栈底标识S=1,表明该标签是栈底标签,直接进行IP转发

        如果标签中的栈底标识S=0,表明还有下一层标签,继续进行下一层标签转发

基本流程:


http://www.ppmy.cn/embedded/52605.html

相关文章

MySQL入门学习-连接查询.复杂连接

复杂连接是指涉及多个表之间的连接操作,通过使用条件和连接类型来组合和关联这些表的数据。 一、常见的复杂连接类型及其特点、使用方法和示例代码: 1. INNER JOIN(内连接): - 特点:返回两个表中满足连接…

2023国家最高科学技术奖薛其坤院士:科学家的幸福感来自于哪里

内容来源:量子前哨(ID:Qforepost) 文丨浪味仙 排版丨沛贤 深度好文:2000字丨8分钟阅读 6 月 24 日,2023 年度国家最高科学技术奖在京揭晓,薛其坤院士荣获中国科技界崇高荣誉,这不…

GitHub的基本使用方法

GitHub是一个面向开源及私有软件项目的托管平台,提供了版本控制功能、代码托管服务、协作功能等。以下是GitHub的基本使用方法: 注册并登录:首先,访问GitHub官网(https://github.com/)并点击右上角的"…

机器学习之函数式自动微分

前言 神经网络的训练主要使用反向传播算法,通过损失函数计算模型预测值与正确标签的差异,并进行反向传播计算梯度,最终更新模型参数。自动微分能够计算可导函数在某点处的导数值,是反向传播算法的一般化,主要解决了复…

查看es p12证书文件过期方法

查看证书过期时间: openssl pkcs12 -in elastic-certificates.p12 -nokeys -out elastic-certificates.crt (需要输入证书生成时配置密码) openssl x509 -enddate -noout -in elastic-certificates.crt

Sam Altman:从少儿奇才到OpenAI掌舵人

自2022年底发布了ChatGPT以来,OpenAI及其首席执行官Sam Altman迅速成为科技界的焦点人物。Altman的崛起并非偶然,而是长期以来不断追求权力和创新的结果。本文将回顾Altman的成长历程,探索他如何一步步走向OpenAI的顶峰。 童年与教育背景 S…

【D3.js in Action 3 精译】关于本书

文章目录 本书读者本书结构与路线图本书代码liveBook 在线论坛 D3.js 项目的传统开发步骤 本书读者 这本书适用于所有渴望在数据可视化工作中获得完全创意自由的人,从定制化的经典图表到创建独特的数据可视化布局,涵盖内容广泛,应有尽有。您…

QT学习积累——在C++中,for循环中使用``与不使用``的区别和联系

目录 引出使用&与不使用&除法的一个坑 总结自定义信号和槽1.自定义信号2.自定义槽3.建立连接4.进行触发 自定义信号重载带参数的按钮触发信号触发信号拓展 lambda表达式返回值mutable修饰案例 引出 QT学习积累——在C中,for循环中使用&与不使用&的…