HCIP Datacom-MPLS转发原理

MPLS概念

MPLS转发概述

  • MPLS转发的本质就是将数据归到对应的FEC并按照提前建立好的LSP进行转发。对于整个MPLS域,LSP是某一给定的FEC进入域和离开域的路径,可以看成是LSR的有序集合。对于单台LSR,需要建立标签转发表,用标签来识别FEC,并绑定相应的标签处理和转发等行为。

MPLS体系结构

  • 控制平面
    • 负责产生和维护路由信息及标签信息
    • 控制平面包括IP路由协议和路由信息表,标签分发协议和标签信息表
  • 转发平面
    • 也称为数据平面(Data Plane),负责普通IP报文的转发及带MPLS标签报文的转发
    • 转发平面包括IP转发信息表和标签转发信息表

LSP建立原则

  • 当网络层协议为IP协议时,FEC所对应的路由必须存在于LSR的IP路由表中,否则该FEC的标签转发表项不生效
  • LSR用标签标识指定FEC,所以该FEC的数据被发送至LSR时,必须携带正确的标签,才能被LSR正确的处理
    • 对某一FEC,设备上存在进(In)标签时和出(out)标签,分别表示该FEC的数据接收和发送时所携带的标签

LSP建立方式

静态LSP 动态LSP
* 用户通过手工为各个FEC分配标签而建立的
* 不使用标签协议,不需要交互控制报文,消耗资源少
* 不能根据网络拓扑变化动态调整
场景:
适用于拓扑结构简单并且稳定的小型网络
通过标签发布协议动态建立;MPLS控制协议(也称为信令协议)负责FEC的分类。标签分发以及LSP的建立和维护等一系列操作。
常用标签发布协议:标签分发协议(LDP)
全称:Label Ditrbution Protocol
LDP规定了标签分发过程中的各种消息以及相关信息处理过程
应用场景:LDP广泛地应用在VPN服务上,具有组网。配置简单、支持基于路由动态建立LSP,支持大容量LSP等优点

MPLS标签转发

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

​ (FEC-to-NHLFE)当LSR收到IP报文并需要进行MPLS转发时使用,FTN只在Ingress 存在;FTN包括:Tunnel ID、FEC到NHLF的映射信息

  • NHLFE

    下一跳标签转发表项NHLFE(Next Hop Label Forwarding Entry)用于指导MPLS报文的转发。

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

    FEC到一组NHLFE的映射称为FTN(FEC-to-NHLFE)。通过查看FIB表中Tunnel ID值不为0x0的表项,能够获得FTN的详细信息。FTN只在Ingress存在。

  • ILM

    入标签到一组下一跳标签转发表项的映射称为入标签映射ILM(Incoming Label Map)。

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

    ILM在Transit节点的作用是将标签和NHLFE绑定。通过标签索引ILM表,就相当于使用目的IP地址查询FIB,能够得到所有的标签转发信息。

Ingress LSR的处理

  • 在MPLS转发过程中,FIB、ILM和NHLFE表项是通过Tunnel ID关联的。
    • Ingress的处理:通过查询FIB表和NHLFE表指导报文的转发。
      • 查看FIB表,根据目的IP地址找到对应的Tunnel ID。
      • 根据FIB表的Tunnel ID找到对应的NHLFE表项,将FIB表项和NHLFE表项关联起来。
      • 查看NHLFE表项,可以得到出接口、下一跳、出标签和标签操作类型。
      • 在IP报文中压入出标签,同时处理TTL,然后将封装好的MPLS报文发送给下一跳。

Transit LSR处理

  • 通过查询ILM表和NHLFE表指导MPLS报文的转发。
    1. 根据MPLS的标签值查看对应的ILM表,可以得到Tunnel ID。
    2. 根据ILM表的Tunnel ID找到对应的NHLFE表项。
    3. 查看NHLFE表项,可以得到出接口、下一跳、出标签和标签操作类型。
    4. MPLS报文的处理方式根据不同的标签值而不同。
      • 如果标签值>=16,则用新标签替换MPLS报文中的旧标签,同时处理TTL,然后将替换完标签的MPLS报文发送给下一跳。
      • 如果标签值为3,则直接弹出标签,同时处理TTL,然后进行IP转发或下一层标签转发。

Egress LSR处理

  • 通过查询ILM表指导MPLS报文的转发或查询路由表指导IP报文转发。
    • 如果Egress收到IP报文,则查看路由表,进行IP转发。
    • 如果Egress收到MPLS报文,则查看ILM表获得标签操作类型,同时处理TTL。
      • 如果标签中的栈底标识S=1,表明该标签是栈底标签,直接进行IP转发。
      • 如果标签中的栈底标识S=0,表明还有下一层标签,继续进行下一层标签转发。

MPLS基本配置命令

操作 命令 说明
配置本节点的LSR ID mpls lsr-id lsr-id 缺省情况下,未配置LSR ID,LSR ID在MPLS网络内必须唯一,LSR ID采用点分十进制格式,与IP地址格式相同。推荐使用Loopback接口的IP地址作为LSR ID
使用mpls mpls mpls命令用来使能本节点的全局MPLS能力,并进入MPLS视图

静态LSP配置命令

操作 命令 说明
进入系统视图 system-view -
配置静态LSP的Ingress节点 static-lsp ingress lsp-name destination dest-addr { mask | mask-length } { nexthop next-hop-addr | outgoing-interface interface-type interface-number } out-label out-label 配置静态LSP的Ingress节点时,如果指定下一跳,则需要保证节点上存在该下一跳地址对应的激活路由
配置静态LSP的Transit节点 static-lsp transit lsp-name in-label in-label { nexthop next-hop-addr | outgoing-interface interface-type interface-number } out-label out-label 配置静态LSP的Transit节点时,如果指定下一跳,则需要保证节点上存在该下一跳地址对应的激活路由
配置静态LSP的Egress节点 static-lsp egress lsp-name in-label in-label 如果静态LSP的倒数第二跳节点上配置的出标签为0或3,则不需要在Egress节点上执行本命令
操作 命令
显示静态LSP的信息 display mpls static-lsp [ lsp-name lsp-name ]

MPLS LDP协议工作原理

LDP协议概述

  • 标签分发协议LDP(Label Distribution Protocol)是多协议标签交换MPLS的一种控制协议,相当于传统网络中的信令协议,负责转发等价类FEC(Forwarding Equivalence Class)的分类、标签的分配以及标签交换路径LSP(Label Switched Path)的建立和维护等操作。LDP规定了标签分发过程中的各种消息以及相关处理过程。

LDP基本概念

  • LDP会话:

    LDP会话用于LSR之间交换标签映射、释放等消息。只有存在对等体才能建立LDP会话,LDP会话分为两种类型:

    • 本地LDP会话(Local LDP Session):建立会话的两个LSR之间是直连的。
    • 远端LDP会话(Remote LDP Session):建立会话的两个LSR之间可以是直连的,也可以是非直连的。

    本地LDP会话和远端LDP会话可以共存。

  • LDP邻居体:

    当一台LSR接收到对端发送过来的Hello消息后LDP邻接体建立。LDP邻接体存在两种类型:

    • 本地邻接体(Local Adjacency):以组播形式发送Hello消息(即链路Hello消息)发现的邻接体叫做本地邻接体。
    • 远端邻接体(Remote Adjacency):以单播形式发送Hello消息(即目标Hello消息)发现的邻接体叫做远端邻接体。

    LDP通过邻接体来维护对等体的存在,对等体的类型取决于维护它的邻接体的类型。一个对等体可以由多个邻接体来维护,如果由本地邻接体和远端邻接体两者来维护,则对等体类型为本远共存对等体。

  • LDP对等体:

    LDP对等体是指相互之间存在LDP会话、使用LDP来交换标签消息的两个LSR。LDP对等体通过它们之间的LDP会话获得对方的标签。

  • LDP邻接体/对等体/会话之间的区别和联系

    区别

    LDP邻接体/对等体/会话之间的区别如下:

    • LDP邻接体是指两台设备之间互发Hello消息之后建立起来的TCP连接,针对的是互连的两个接口之间的链路。
    • LDP对等体是指建立起TCP连接之后,利用LDP协议相互交换标签消息的两台设备,针对的是两台交互信息的设备。
    • LDP会话是指两个LDP对等体之间相互交换标签消息的一系列过程。

    联系

    LDP邻接体/对等体/会话之间联系概括起来,是这样的:建立LDP会话首先要有一条建立了TCP连接的链路,这条链路就是邻接体;建立邻接体之后,两台设备之间交互标签信息,成为对等体关系;最后对等体之间形成LDP会话。具体可以描述为:

    • LDP通过邻接体来维持对等体的存在,对等体的类型取决于维持它的邻接体的类型。
    • 一个对等体可以由多个邻接体来维护,如果同时由本地邻接体和远端邻接体两者来维持,则对等体类型为本远共存对等体。
    • 只有LDP对等体之间才能建立LDP会话。

LDP消息

  • LDP消息类型

    LDP协议主要使用四类消息:

    • 发现(Discovery)消息:用于通告和维护网络中LSR的存在,如Hello消息。
    • 会话(Session)消息:用于建立、维护和终止LDP对等体之间的会话,如Initialization消息、Keepalive消息。
    • 通告(Advertisement)消息:用于创建、改变和删除FEC的标签映射。
    • 通知(Notification)消息:用于提供建议性的消息和差错通知。

    为保证LDP消息的可靠发送,除了Discovery消息使用UDP(User Datagram Protocol)传输外,LDP的Session消息、Advertisement消息和Notification消息都使用TCP(Transmission Control Protocol)传输。

    示例图片

LDP会话的建立

  • 通过LDP发现机制发现LDP对等体用来建立LDP会话。只有建立了LDP会话后,才能建立LDP LSP来承载业务。

LDP发现机制

  • LDP发现机制用于LSR发现潜在的LDP对等体。LDP有两种发现机制:

    • 基本发现机制:用于发现链路上直连的LSR。

      LSR通过周期性地发送LDP链路Hello消息(LDP Link Hello),实现LDP基本发现机制,建立本地LDP会话。

      LDP链路Hello消息使用UDP报文,目的地址是组播地址224.0.0.2。如果LSR在特定接口接收到LDP链路Hello消息,表明该接口存在LDP对等体。

    • 扩展发现机制:用于发现链路上非直连LSR。

      LSR周期性地发送LDP目标Hello消息(LDP Targeted Hello)到指定IP地址,实现LDP扩展发现机制,建立远端LDP会话。

      LDP目标Hello消息使用UDP报文,目的地址是指定IP地址。如果LSR接收到LDP目标Hello消息,表明该LSR存在LDP对等体。

LDP会话的建立过程