MPLS多协议标签交换

  1. MPLS采用短而定长的标签进行数据转发,大大提高了硬件限制下的转发能力;而且MPLS可以扩展到多种网络协议(如IPv6,IPX等)。

  2. 概述


    MPLS头部放在2.5层

  3. 分类

    • 基于帧的MPLS(分组网络,IP网络),DU的方式
    • 基于信源的MPLS(电路交换网络,ATM),DoD的方式
  4. MPLS基本结构

    1. LSP:标签交换路径,即到达同一个目的地址的报文在MPLS网络中经过的路径
      • LER:用于标签压入或弹出
        • 入口的LER称为入节点,出口的LER称为出节点
      • LSR:用于标签的交换
        • 位于中间的LSR称为中间节点
    2. FEC(转发等价类):指具有相同转发处理方式的报文。在一条LSP上不同节点被用相同方式转发的报文。去往不同目的地址但匹配相同路由的报文是最常见的FEC分类方式
  5. MPLS体系

    • 控制层面

      • 路由信息表(RIB):由IP路由协议生成,用于选择路由
      • 标签分发协议(LSP):负责标签的分配、标签转发信息的建立、标签交换路径的建立、拆除
      • 标签转发表(LSB):由标签分发协议生成,用于管理标签信息
    • 转发层面:

      • 转发信息表(FIB):从RIP提取必要的路由信息生成,负责普通IP报文转发
      • 标签转发信息表(LFIB):由标签分发协议建立LFIB。负责带MPLS标签报文的转发
    • 路由转发:控制层面运行路由协议,生成路由表,路由表下发到转发层面转发。

    • 标签转发:在控制层面运行一个标签分发协议(LDP),根据路由表的路由条目生成标签信息(LIB),最后生成LDP生成一个标签转发表(LFIB)

  6. MPLS数据报文结构

    • 标签的长度为4个字节,共4个字段

      • Label:20bit,标签值域
      • Exp:3bit,用于扩展,现在通常做CoS(class of service),当设备发送阻塞时,优先转发优先级高的报文
      • S:1bit。栈底标识。MPLS支持多层标签,即标签嵌套,S值为1时标识为最底层标签
      • TTL:8bit,和IP报文中的TTL意义相同
    • 标签空间是指标签的取值范围

      • 0~15:特殊标签。如标签3,称为隐式标签。用于倒数第二跳弹出
      • 16~1023:静态LSP和静态CR-LSP共享标签
      • 1024及以上:LDP、RSVP-TE、MP-BGP等动态信令协议的标签空间

LSP的建立方式

  1. 静态LSP:

    • 用户通过手工方式为各个转发等价类分配标签建立转发隧道

    • 不需要通过标签分发协议,不需要交换控制报文,资源消耗比较小

    • 通过静态方式建立的LSP不能根据网络拓扑变化动态调整,需要管理员干预。

      适用于图片简单并稳定的网络

  2. 动态LSP:通过标签发布协议(LDP)动态建立转发隧道,实现对FEC的分类,标签的分配及LSP的建立和维护

    • 组网配置简单,易于管理和维护
    • 支持基于路由建立LSP,网络拓扑发生变化时,能及时反映网络状况
    • 对于直连的loopabck接口的32位主机路由做为ergess产生LSP
    • 对于非直连的32位主机路由,做为ingress和transit产生LSP

转发过程

  1. 基本概念
    • Tunnel ID:为了给使用隧道的上层应用(如VPN、路由管理)提供统一的接口,系统自动为隧道分配了一个ID,也称为Tunnel ID。本地有效
    • NHLFE:下一跳标签转发表项。用于指导MPLS报文的转发。
      • 包含Tunnel ID、出接口、下一跳、出标签、标签操作类型等信息。
    • ILM
      • 入标签到一组下一跳标签转发表项的映射称为入标签映射ILM
      • ILM包括:Tunnel ID、入标签、入接口、标签操作类型等信息。
      • ILM在Transit节点的作用是将标签和NHLFE绑定。通过标签索引ILM表,就相当于使用目的IP地址查询FIB,能够得到所有的标签转发信息。
  2. Ingress的处理(查询FIB表和NHLFE表 指导报文的转发)
    • 当收到普通IP报文时,查找FIB表,如果Tunnel ID
      • 为0x0,则普通IP转发。非0x0,则进行MPLS转发
    • 根据FIB表的Tunnel ID找到对应的NHLFE表,将FIB表项和NHLFE表项关联起来
      • 查看NHLFE表要开启诊断视图diagnose
    • 查看NHLFE表项,可以得到出接口,下一跳,出标签,和标签操作类型
    • 在IP报文中压入出标签,同时处理TTL,然后将封装好的MPLS报文发送给下一跳。
  3. Transit的处理(查询ILM表和NHLFE表 指导MPLS报文的转发)
    • 根据MPLS的标签值查看对应的ILM表,可以得到Tunnel ID。
    • 根据ILM表的Tunnel ID找到对应的NHLFE表项。
    • 查看NHLFE表项,可以得到出接口、下一跳、出标签和标签操作类型。
    • MPLS报文的处理方式根据不同的标签值而不同。
      • 如果标签值>=16,则用新标签替换MPLS报文中的旧标签,同时处理TTL,然后将替换完标签的MPLS报文发送给下一跳。
      • 如果标签值为3,则直接弹出标签,同时处理TTL,然后进行IP转发或下一层标签转发。
  4. Egress的处理(查询ILM表指导MPLS报文的转发或查询路由表指导IP报文 转发)
    • 如果Egress收到IP报文,则查看路由表,进行IP转发。
    • 如果Egress收到MPLS报文,则查看ILM表获得标签操作类型,同时处理TTL。
      • 如果标签中的栈底标识S=1,表明该标签是栈底标签,查找路由表后直接进行IP转发。
        • 会造成两次查表,一次标签转发表,一次路由表
        • 可以在上一条提前弹出,即会向上一跳分配3的弹出标签
      • 如果标签中的栈底标识S=0,表明还有下一层标签,继续进行下一层标签转发。

LDP

标签分发,发布方式,控制方式,保持方式

  1. 对自身非直连的主机路由做的入节点和中间节点的LSP,始发路由做出节点的LSP

  2. LSP触发策略:默认情况下华为路由器仅为非物理接口主机路由产生LSP,即为/32掩码长度的loopback口路由产生LSP。

  3. 直连loopback口主机路由作为egress创建LSP。非直连主机路由作为ingress和transit创建LSP

  4. 标签发布方式

    • DU(下游自主方式):对于一个到达同一目的地址报文的分组,LSR无需从上游获得标签请求即可进行标签分配与分发(华为默认)

      • 无需等待上游请求,可以直接分配标签,在网络拓扑发生变化时,采用DU可以快速反应为新拓扑分发标签,收敛时间先对于DOD较短
    • DOD(下游按需方式):对于一个到达同一目的地址报文的分组,LSR获得标签请求之后才进行标签分配与分发

  5. 控制方式

    • Independent(独立标签分配控制方式):本地LSR可以自主地分配一个标签绑定到某个IP分组,并通告给上游LSR,而无需等待下游的标签。

    • Ordered(有序标签分配控制方式):只有当该LSR已经具有此IP分组的下跳的标签,或者该LSR就是该IP分组的出节点时,该LSR才可以向上游发送此IP分组的标签。(华为默认)

  6. 标签的保留方式

    • Liberal(自由标签保持方式):对于从邻居LSR收到的标签映射,无论邻居LSR是不是自己的下一跳都保留。(华为默认)

      • 可以直接利用原来非下一跳邻居发来的标签,迅速重建LSP,但需要更多的内存和标签空间
    • Conservative(保守标签保持方式):对于从邻居LSR收到的标签映射,只保留当前最佳下一跳(由 IGP 选出的最优路径)发来的标签。

      • 只保留来自下一跳邻居的标签,节省空间,但邻居重建慢

工作机制

  1. 相邻的LDP路由器都会建立邻居

    • 接口发送LDP的hello报文,DIP为224.0.0.2,使用UDP的646端口
    • hello报文中携带传输地址,默认是LSR-ID
  2. 建立邻居后传输地址大的一方向传输地址小的一方发起TCP646的连接,进行LDP会话的建立

    注意:LDP会话是建立在传输地址之间的

  3. Initialization(会话初始化)

    • 通过 TCP 通道交换 Initialization 消息,成功后发送keeplive报文,会话建立成功
    • 协商参数:LDP 版本、标签分配模式(DU/DoD/On-demand)、Keepalive 时间等 → 协商成功 → LDP 会话正式建立
  4. Session(会话维护)

    • 双方周期性发送 Keepalive 消息 → 保持会话存活(默认每 60s 发一次,Holdtime 180s)
  5. Advertisement(标签通告阶段)

    • 双方开始发送 Address 消息(通告自己用于 TCP 连接的地址,通常是 Router ID)
    • 接着发送 Label Mapping 消息(FEC → Label 绑定) → 互相学习对方的标签映射 → 构建 LFIB(标签转发表)
    • Incoming Label = 我收到的标签(别人打的)
    • Outgoing Label = 我发出去的标签(我要打给下家的)
  6. Notification(通知)

    • 用于报告错误、撤回标签、会话异常等(例如标签释放、会话关闭等),一旦收到则会断开TCP会话

LDP建立过程

  • RTD上存在100.1.1.1/32的主机路由,因为RTD是Egress节点,所以直接向自己上游邻居RTC发布100.1.1.1/32与标签的绑定关系;
  • RTC收到下游邻居RTD分配的100.1.1.1/32的绑定关系后,将标签记录在自己的LIB表中,并向上游邻居RTB发布100.1.1.1/32与标签的绑定关系,同时RTC查看自己IP路各由表中到达100.1.1.1/32的下一跳是否为RTD,如果IP路由表中的下一跳为RID,则RTC保留RTD分配跳为RTD,如果IP路由表中的下一跳不是RTD,则RTC使用RTD分配的标签作为备用标签
  • RTB收到下游邻居RTC分配的100.1.1.1/32与标签的绑定关系后,执行与RTC相同的动作;
  • RTA收到下游邻居RTB分配的100.1.1.1/32与标签的绑定关系后,查看自己IP路由表中到达100.1.1.1/32的下一跳是否为RTB,如果IP路由表中的下一跳为RIB,则RTA使用RTB分配的标签封装到达100.1.1.1/32的数据,如果IP路由表中的下一跳不是RTB,则RTA保留RTB分配的标签作为备用。因为RTA为ingress,最终道德100.1.1.1/32的LSP完成建立
相关推荐
那就回到过去9 小时前
VRRP协议
网络·华为·智能路由器·ensp·vrrp协议·网络hcip
极客小云9 小时前
【ComfyUI API 自动化利器:comfyui_xy Python 库使用详解】
网络·python·自动化·comfyui
符哥200810 小时前
用Apollo + RxSwift + RxCocoa搭建一套网络请求框架
网络·ios·rxswift
相思难忘成疾10 小时前
通向HCIP之路:第四步:边界网关路由协议—BGP(概念、配置、特点、常见问题及其解决方案)
网络·华为·hcip
君陌社区·网络安全防护中心10 小时前
基于Mininet模拟SDN环境
网络
Porco.w10 小时前
C#与三菱PLC FX5U通信
网络·c#
枷锁—sha10 小时前
Burp Suite 抓包全流程与 Xray 联动自动挖洞指南
网络·安全·网络安全
云飞云共享云桌面10 小时前
高性能图形工作站的资源如何共享给10个SolidWorks研发设计用
linux·运维·服务器·前端·网络·数据库·人工智能
爱学习的程序媛10 小时前
PSTN(公共交换电话网)的起源与发展
网络·信息与通信