MPLS:多协议标签交换

概述

MPLS的历史背景

  1. 早期:90年代初期,由于硬件性能限制,路由器采取最长掩码匹配算法逐跳转发IP报文,当路由器表项过于庞大时,检索速度受限于硬件性能,短时间内无法得到提升,导致转发效率低,于是IETF组织提出MPLS作为快速转发技术
  2. 后期:硬件性能得到巨大的提升,MPLS快速转发的优势不再明显,MPLS逐渐被淘汰,但是由于MPLS支持多层嵌套和设备内转空分离的特点,再新兴领域得到广泛应用,如VPN、TE(流量工程)等而被保留下来

MPLS的网络架构

MPLS域:由一组连续的运行了MPLS的路由器集合构成的网络

LSR:标签交换路由器,运行了MPLS的路由器

LSR的角色

  1. 根据LSR位于MPLS域的未知,将LSR分为:

    • LER:标签边缘路由器,位于MPLS域边缘的LSR,连接了其他网络,主要负责标签的压入和弹出
    • core LSR:核心标签骄傲换路由器,位于MPLS域内的LSR主要负责标签的交换
  2. 根据对数据的处理的方式,将LSR分为
    • ingress LSR:入站LSR(入节点)

      • 对普通IP报文职系那个标签压入的动作,形成MPLS报文
    • transit LSR:中转LSR(中间节点)
      • 对MPLS报文进行标签交换
    • egress LSR:出站LSR(出节点)
      • 对MPLS报文执行标签弹出的动作,形成普通LIP报文

FEC:转发等价类

定义

  • 具有相同在那发特征的数据流,转发路径上的设备对于相同特性的数据流采用相同的处理方式

转发特征

  • 数据流的五元组、DSCP、目的IP地址和掩码等等参数
  • 在MPLS网络中,对FEC的划分方式为
    • 对于到达同一目的地的所有报文就是一个FEC,也就是一条路由条目就是一个FEC

LSP:标签交换路径

定义

  • 到达同一目的地的报文(FEC)在MPLS网络中经过的转发路径

    • 一条FEC对应一条LSP,数据转发前需要先建立好LSP

特点

  1. LSP是单向的,是一组有序的标签的集合
  2. LSP的方向与数据流的方向一致

LSP的建立方式

  1. 静态LSP

    • 手工配置

      • 优点:无需交互协议报文,开销小且稳定
      • 缺点:配置工作量大,无法适应网络变化,需要管理员手工干预,灵活性差,后期维护复杂
    • 动态LSP
      • 通过动态标签分发协议动态建立LSP

        1. LDP:标签分发协议
        2. MP-BGP:应用于MPLS VPN,为VPNv4路由分发标签
        3. RSVP-TE:应用于流量工程,RSVP的扩展协议(本课程不涉及)

MPLS标签

  • MPLS头部封装在数据链路层和网络层中间,称为2.5层协议

  • MPLS头部参数:占32bit

    1. label:标签值,20bit取值范围0~(2^20)-1

      1. 特殊标签

        • 0~15

          • 0:显示空标签,IPv4路由

          • 2:显示空标签,IPv6路由

            • 需要通告显示空标签时,配置命令:

            • 在MPLS视图配置

              label advertise explicit-null
              
          • 3:隐式空标签,缺省通告

      2. 静态LSP使用

        • 16~1023
      3. 动态LSP使用

        • 1024~1048575
    2. EXP:3bit,优先级字段,取值0~7,值越大优先级越高,越优先先被处理,用于QOS

    3. s:1bit,栈底标识

      • s=0时,表明该标签不是最后一个标签
      • s=1时,表明该标签为栈底标签(最接近IP头部)
    4. TTL:8bit,取值0~255,用于MPLS防环

MPLS标签的处理动作

  1. push:压入标签

    • 入节点在二层和三层头部之间插入MPLS标签的行为,中间节点根据需要也可以执行该动作,在栈顶位压入一个新的标签
  2. swap:交换标签
    • 中间节点根据标签在转发表,用下一跳分配的标签替换栈顶标签(最接近二层头部的标签)
  3. pop:弹出标签
    • 出节点上将MPLS标签去掉

MPLS体系结构

  1. 控制平面

    • 产生和维护路由信息和标签信息

      • RIB:路由信息表,通过运行路由协议学习到的路由存放在RIB中

      • LIB:标签信息表,通过LDP(标签分发协议)动态学习到的标签信息存放在LIB中

        • 查看命令
        display LDP LSP//查看LIB表信息
        
  2. 转发平面

    • 负责转发普通IP报文和MPLS标签报文

      • FIB:转发信息表,由RIB映射生成,负责IP报文转发

      • LFIB:标签转发信息表,由ILM和NHLFE关联形成,负责MPLS标签报文转发

        • 查看命令
        display mpls lsp
        //查看LFIB表
        

MPLS转发的三张表

  1. FTN:FEC to NHLFE

    • 由FIB和NHLFE关联产生,只在入节点存在,接收到的IP报文需要MPLS转发时,查该表以获得tunnel id
    • 表中内容为
      • FEC和tunnel id的映射关系
  2. NHLFE:下一跳标签转发表项
    • 存在于入节点和中间节点,用于指导MPLS报文转发
    • 表中内容为
      • tunnel id、出接口、下一跳地址、出标签、标配前操作类型等
  3. ILM:入标签映射
    • 存在于中间节点和出节点上,用于指导MPLS报文转发

      • 表中内容为

        • tunnel id、入标签、入接口、变迁操作类型等

MPLS数据标签转发的详细过程

  • 当数据进入MPLS域时:

    1. 先查看FIB表项,找到对应的转发条目(FEC),查看转发条目包含的tunnel id字段

      1. 如果为0x0,则IP转发
      2. 如果为非0,则MPLS转发
    2. ingress的处理
      • 通过查找FIB和NHLFE表项指导报文转发

        1. 先查找FIB,找到对应的tunnel id;
        2. 根据tunnel id查找到对应的NHLFE表项,将FIB和NHLFE关联起来(FTN)
        3. 查看NHLFE表项可以得出出接口、下一跳地址、出标签、和标签操作类型等信息
        4. 在IP报文中压入标签,同时处理TTL,封装MPLS报文后发送给下一跳
    3. transit的处理
      • 通过查看ILM和NHLFE指导MPLS报文转发

        1. 根据MPLS的标签查看对应的额ILM表项,得到tunnel id;
        2. 根据获得的tunnel id找到对应的NHLFE表项
        3. 通过NHLFE表项可以的出处接口、下一跳地址、出标签和标签操作类型等信息
        4. MPLS报文的处理方式根据不同的出标签而不同
          • 如果label>16,则用新标签替换MPLS报文中的旧标签
          • 如果label=0,则用0标签替换MPLS报文中的旧标签(swap)
          • 如果label=3,则直接弹出标签,同时哦处理TTL,封装好发送给下一跳(次末跳弹出)
    4. egress的处理
      • 查询ILM指导MPLS报文或者FIB表指导IP报文转发

        1. 如果出节点接收到IP报文,则查FIB表转发
        2. 如果出节点接收到MPLS报文,则差ILM表获得标签操作类型,同时处理TTL(pop)
          1. 如果标签中s=1:表明该标签为占比标签,直接查FIB表IP转发
          2. 如果标签中s=0:表明还有下一层标签,则进行下一层标签转发

MPLS:多协议标签交换相关推荐

  1. MPLS多协议标签交换原理—Vecloud微云

    MPLS:Multi-Protocol Label Switching,多协议标签交换 ① mpls-vpn ② 在各种运营商的设备上面例如:LTE 注意:MPLS是二层半协议,介于mac和ip之间 ...

  2. MPLS多协议标签交换

    目录 MPLS(多协议标签交换) 1.1 概念 1.1.1 MPLS出现的背景 1.1.2 工作原理 1.1.3 使用场景 2. MPLS体系结构 2.1 术语 2.2 标签操作类型 3. MPLS的 ...

  3. mpls 保留标签值_浅析MPLS多协议标签交换的发展历程

    一.MPLS概念 MPLS:multipule protocol label seitch 多协议标签交换,是通过一个叫label的东西来做交换转发的,这个label中可以承载多种协议payload, ...

  4. MPLS多协议标签交换技术

    MPLS (multiprotocol labelswitching)多协议标签交换技术.采用短而定长的标签进行数据转发,提高了硬件限制下的转发能力,结合IP与atm的优点,而且MPLS可以扩展到多种 ...

  5. MPLS 多协议标签交换

    标题 MPLS:多协议标签交换 多协议:可以基于多种不同的3层协议来生成2.5层的标签信息: 包交换-包为网络层的PDU,故包交换是基于IP地址进行数据转发:就是路由器的路由行为: 原始的包交换:数据 ...

  6. MPLS(多协议标签交换)基础

    文章目录 原始包交换 标签交换 包交换的优化 MPLS 简介 标签报文格式 名词解释 LDP:标签分发协议 LDP会话 本地LDP会话建立 标签分发方式 标签传递方式 MPLS工作过程 控制层面 数据 ...

  7. MPLS 多协议标签交换技术

    包交换 标签交换 MPLS 构建LSP 构建静态LSP 构建动态LSP 控制层面: 数据层面: 包交换 数据组成数据包,之后在各个网络节点中不断传递,最终到达目标 包交换过程:假设PC1向PC3发数据 ...

  8. 多协议标签交换的MPLS原理

    Multi-ProtocolLabelSwitching:多协议标签交换. ampls-vpn 2各种运营者的设备如:LTE等. 注:MPLS是介于mac和ip之间的两层半协议. 通过直接查询MPLS ...

  9. 多协议标签交换(MPLS)技术的潜在弱点—Vecloud

    多协议标签交换(MPLS)已经统治企业专用网市场十多年了.然而,随着云计算.移动应用和全球化的趋势,MPLS的缺点逐渐暴露如下: 1.不适用于云计算.SaaS和移动应用程序:云计算.SaaS和移动应用 ...

  10. 什么是MPLS?多协议标签交换(MPLS)基础知识和工作原理

    <什么是MPLS?多协议标签交换> 简介 MPLS的起源 90年代中期,IP技术凭借技术简单和成本低廉实现快速发展,Internet数据海量增长.但由于硬件技术存在限制,基于最长匹配算法的 ...

最新文章

  1. 手把手带你玩转 AWS Lambda
  2. 重庆python培训-重庆Python培训班学完能做什么
  3. 不得不爱开源 Wijmo jQuery 插件集(4)-【手风琴效果】(附页面展示和源码)
  4. JDBC之一:JDBC快速入门
  5. 【Tensorflow】小白入门实战基础篇(上)
  6. pip download timeout 下载慢,超时解决方法
  7. python init 用法_python里init的用法
  8. 设计模式学习笔记七:常用设计模式原则总结
  9. Java基础系列13:JDBC批处理简介
  10. (十二) 简单使用 Dockerfile 保留字指令,尝试自定义centos镜像
  11. 吞吐量、响应时间和 CPU 利用率之间的关系
  12. 解码2022中国网安强星丨构建企业第一重“安全感”,联软科技以零信任重塑网络安全边界
  13. Ubuntu使用Windows字体
  14. 图书信息管理系统设计
  15. 不平衡电网电压下虚拟同步发电机VSG控制策略-实现不平衡电压下控制三相电流平衡
  16. connecting to host: cephm resulted in errors: IOError cannot send (already closed?)[ceph-deploy部署报错]
  17. linux who 时间,linux命令之who、w、whoami
  18. 删除word中的空白页
  19. gitlab+maven+spingboot+jenkin实现自动化部署
  20. 树莓派新手入门:烧录系统、换源、基础配置、putty或vnc远程连接

热门文章

  1. python 数据清洗 豆瓣电影_利用python进行数据清洗和分析
  2. Swift map、flatMap、compactMap、filer、reduce的使用总结
  3. 使用gcc编译报错:/tmp/ccoLTk4o.o:在函数‘main’中: main1.c:(.text+0x9c):对‘pirnt1’未定义的引用 collect2: 错误:ld 返回 1
  4. Arduino ESP32:测试GPIO中断功能
  5. STM32 USB VCOM和HID的区别,配置及Echo功能实现(HAL)
  6. 百度人脸识别API调用实现
  7. 苹果企业账号发布APP详解——通过自己网站分发应用
  8. python生成基础头像_python个性化头像
  9. 在python中怎么定义一个范围_如何定义范围
  10. Using 1.7 requires compiling with Android 4.4 (KitKat); currently using API 15