Datacom-HCIP-17 MPLS原理与配置


90年代中期,互联网流量的快速增长。传统IP报文依赖路由器查询路由表转发,但由于硬件技术存在限制导致转发性能低,路由器的查表转发成为了网络数据转发的瓶颈。
因此,旨在提高路由器转发速度的MPLS(Multi-Protocol Label Switching,多协议标签交换)被提出。与传统IP路由方式相比,MPLS在数据转发时,只在网络边缘分析IP报文头,在网络内部采用更为高效的标签(Label)转发,节约了处理时间。
随着设备硬件性能不断提升,MPLS在提高数据转发速度上的优势逐渐弱化,但其支持多层标签嵌套和设备内转控分离的特点,使其在VPN(Virtual Private Network,虚拟私有网络)、QoS(Quality of Service,服务质量)等新兴应用中得到广泛应用。
本文主要介绍MPLS的工作原理以及标签的转发流程,静态标签交换路径的配置方法等。

MPLS基础

MPLS概述

传统IP路由转发

传统的IP转发采用的是逐跳转发。数据报文经过每一台路由器,都要被解封装查看报文网络层信息,然后根据路由最长匹配原则查找路由表指导报文转发。各路由器重复进行解封装查找路由表和再封装的过程,所以转发性能低。

MPLS基本概念

MPLS位于TCP/IP协议栈中的数据链路层和网络层之间,可以向所有网络层提供服务。
通过在数据链路层和网络层之间增加额外的MPLS头部,基于MPLS头部实现数据快速转发。
本文仅介绍MPLS在IP网络中的应用。

MPLS术语

MPLS术语介绍 - LSR与MPLS域

MPLS域(MPLS Domain):一系列连续的运行MPLS的网络设备构成了一个MPLS域。
LSR(Label Switching Router,标签交换路由器):支持MPLS的路由器(实际上也指支持MPLS的交换机或其他网络设备)。位于MPLS域边缘、连接其它网络的LSR称为边沿路由器LER(Label Edge Router),区域内部的LSR称为核心LSR(Core LSR)。

MPLS术语介绍 - LSR分类

除了根据LSR在MPLS域中的位置进行分类之外,还可以根据对数据处理方式的不同进行分类:
入站LSR(Ingress LSR):通常是向IP报文中压入MPLS头部并生成MPLS报文的LSR。
中转LSR(Transit LSR):通常是将MPLS报文进行例如标签置换操作,并将报文继续在MPLS域中转发的LSR。
出站LSR(Egress LSR):通常是将MPLS报文中MPLS头部移除,还原为IP报文的LSR。

MPLS术语介绍 - FEC

FEC(Forwarding Equivalence Class,转发等价类)是一组具有某些共性的数据流的集合,这些数据流在转发过程中被网络节点以相同方式处理。
在MPLS网络中,FEC可以通过多种方式划分,例如基于目的IP地址及网络掩码、DSCP等特征来划分。
数据属于哪一个LSP,由数据进入MPLS域时的Ingress LSR决定。
MPLS标签通常是与FEC相对应的,必须有某种机制使得网络中的LSR获得关于某FEC的标签信息。

MPLS术语介绍 - LSP

LSP(Label Switched Path,标签交换路径)是标签报文穿越MPLS网络到达目的地所走的路径。
同一个FEC的报文通常采用相同的LSP穿越MPLS域,所以对同一个FEC,LSR总是用相同的标签转发。

MPLS标签

MPLS标签

IP报文进入MPLS域之前,会被入站LSR压入MPLS头部(又叫MPLS标签),形成一个MPLS标签报文。
一个标签报文可以包含一个或多个MPLS标签。

标签(Label):用于携带标签值,长度20bit。
EXP(Experimental Use):主要用于CoS(Class of Service),长度3bit。
S(Bottom of Stack):栈底位,用于指示该标签头部是否为最后一层标签,长度1bit。如果该字段为1,则表示当前标签头部为栈底;如果该字段为0,则表示当前标签头部之后依然还有其他标签头部。
TTL(Time To Live):用于当网络出现环路时,防止标签报文被无限制转发,与IP报文头部中的TTL具有相同的意义,长度8bit。

MPLS标签栈

MPLS支持一层或多层标签头部,这些标签头部的有序集合被称为标签栈(Label Stack)。
当标签栈中存在多个标签时,这些标签的顺序是非常讲究的:
最靠近二层头部的标签是栈顶标签,标签中的S字段为0。
最靠近IP头部的标签是栈底标签,标签中的S字段为1。

标签空间

标签是一个短而定长的、只具有本地意义的标识符。标签空间就是指标签的取值范围。
标签值的范围及规划如下:

标签值 描述
0~15 特殊标签值。例如0被定义为IPv4显式空标签(IPv4 Explicit NULL Label),标签值3被定义为隐式空标签(Implicit NULL Label)
16~1023 用于静态LSP、静态CR-LSP的共享标签空间
1024~1048575 LDP、RSVP-TE、MP-BGP等动态信令协议的标签空间;动态信令协议的标签空间不是共享的,而是独立且连续的,互不影响

MPLS标签的处理

LSR对标签的操作类型包括标签压入(Push)、标签交换(Swap)和标签弹出(Pop)。

MPLS转发

MPLS转发概述

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

MPLS体系结构

MPLS的体系结构由控制平面 (Control Plane)和转发平面 (Forwarding Plane)组成。

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

控制平面与转发平面

LSP建立原则

当网络层协议为IP协议时,FEC所对应的路由必须存在于LSR的IP路由表中,否则该FEC的标签转发表项不生效。
LSR用标签标识指定FEC,所以该FEC的数据被发送至LSR时,必须携带正确的标签,才能被LSR正确的处理。

对某一FEC,设备上存在进(In)标签和出(Out)标签,分别表示该FEC的数据接收时和发送时所携带的标签。
以R2转发到4.4.4.0/24的数据为例,R1为R2的上游(Upstream)LSR,R3为R2的下游(Downstream)LSR。为确保标签报文能被正确的处理和转发,那么R1发给R2的报文所携带的标签与R2上绑定到4.4.4.0/24的相同,即R1的出标签等于R2的入标签。同理,R2关于4.4.4.0/24这条FEC的出标签必须等于R3的入标签。

LSP建立方式

MPLS需要为报文事先分配好标签,建立一条LSP,才能进行报文转发。LSP分为静态LSP和动态LSP两种。
静态LSP
基本概念:
静态LSP是用户通过手工为各个FEC分配标签而建立的。
静态LSP不使用标签发布协议,不需要交互控制报文,因此消耗资源比较小。
通过静态方式建立的LSP不能根据网络拓扑变化动态调整,需要管理员干预。
应用场景:
适用于拓扑结构简单并且稳定的小型网络。
标签分配原则:
前一节点出标签的值等于下一个节点入标签的值。
动态LSP
基本概念:
动态LSP通过标签发布协议动态建立。
标签发布协议是MPLS的控制协议(也可称为信令协议),负责FEC的分类、标签的分发以及LSP的建立和维护等一系列操作。
常用标签发布协议:标签分发协议 (LDP)
全称:Label Distribution Protocol。
定义:LDP是多协议标签交换MPLS的一种控制协议,负责转发等价类FEC的分类、标签的分配以及标签交换路径LSP的建立和维护等操作。LDP规定了标签分发过程中的各种消息以及相关处理过程。
应用场景:LDP广泛地应用在VPN服务上,具有组网、配置简单、支持基于路由动态建立LSP、支持大容量LSP等优点。

MPLS标签转发

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

Ingress LSR的处理


当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的处理


当MPLS报文在MPLS域转发时:
5. Transit LSR根据MPLS的标签值查看对应的ILM表,得到Tunnel ID。
6. 根 据 ILM 表 的 Tunnel ID 找到对应的NHLFE表项。
7. 查看NHLFE表项,得到出接口、下一跳、出标签和标签操作类型,标签操作类型为Swap,则交换标签。

Egress LSR的处理


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

MPLS详细转发过程

静态LSP配置

MPLS基本配置命令

  1. 配置LSR ID
    [Huawei] mpls Isr-id Isr-id
    mpls Isr-id命令用来配置LSR的ID。LSR ID用来在网络中唯一标识一个LSR。LSR没有缺省的LSR ID,必须手工配置。为了提高网络的可靠性,推荐使用LSR某个Loopback接口的地址作为LSR ID并在配置前对网络中所有LSR的LSR ID进行统一规划。
  2. 使能MPLS
    [Huawei] mpls
    mpls命令用来使能本节点的全局MPLS能力,并进入MPLS视图。
    [Huawei-GigabitEthernet0/0/0] mpls
    在接口视图下,使能当前接口的MPLS功能。需先使能全局MPLS能力后才能执行接口下的MPLS使能命令。

静态LSP配置命令

  1. Ingress LSR配置
    [Huawei] static-Isp ingress Isp-name destination ip-address { mask-length | mask } { nexthop next-hop-address | outgoing-interface interface-type interface-number } * out-label out-label
    static-lsp ingress命令用来为入口节点配置静态LSP。
    推荐采用指定next-hop的方式配置静态LSP,确保本地路由表中存在与指定目的IP地址精确匹配的路由项,包括目的IP地址和下一跳IP地址。如果LS出接口为以太网类型,必须配置nexthop next-hop-address参数以保证LSP的正常转发。
    out-label的取值范围为16~1048575。
  2. Transit LSR配置
    [Huawei] static-Isp transit Isp-name [ incoming-interface interface-type interface-number ] in-label in-label { nexthop next-hop-address | outgoing-interface interface-type interface-number }* out-label out-label
    static-lsp transit`命令用来为中间转发节点配置静态LSP。
    下一跳和出接口的配置规则和Ingress LSR保持一致。
    in-label的取值范围为16~1023。
    out-label的取值范围为16~1048575。
  3. Egress LSR配置
    [Huawei] static-Isp egress Isp-name [ incoming-interface interface-type interface-number ] in-label in-label
    static-lsp egress命令用来在出口节点配置静态LSP。
    ·in-label的取值范围为16~1023。
  4. 查看静态LSP配置
    [Huawei] display mpls static-Isp [ Isp-name ] [ { include | exclude } ip-address mask-length ] [ verbose ]
    display mpls static-Isp命令用来查看静态LSP信息。

静态LSP配置案例

案例介绍:R1、R2和R3之间已经部署了IGP协议,故1.1.1.0/24与3.3.3.0/24网络之间已经能够互访。现要求通过配置静态LSP,使得这两个网络之间能基于MPLS进行互访,标签分配如图。
配置思路:

  1. 在设备和接口上使能MPLS功能
  2. 按照规划配置静态LSP
  3. 三台路由器的LSR ID分别为10.1.1.1、10.1.1.2和10.1.1.3,以R1为例,使能全局和接口的MPLS功能。
[R1]mpls lsr-id 10.1.1.1
[R1]mpls
Info: Mpls starting, please wait... OK!
[R1-mpls]quit
[R1]interface GigabitEthernet 0/0/0
[R1-GigabitEthernet0/0/0]mpls
[R1-GigabitEthernet0/0/0]quit

  1. 配置R1去往R3方向的静态LSP
[R1] static-lsp ingress 1to3 destination 3.3.3.0 24 nexthop 10.0.12.2 out-label 200
[R2] static-lsp transit 1to3 incoming-interface GigabitEthernet 0/0/0 in-label 200 nexthop 10.0.23.3 out-label 300
[R3] static-lsp egress 1to3 incoming-interface GigabitEthernet 0/0/0 in-label 300

静态LSP配置案例 - 检查配置

[R1]display mpls lsp
---------------------------------------------------------------------
 LSP Information: STATIC LSP
---------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
3.3.3.0/24 NULL/200 -/GE0/0/0 
[R2]display mpls lsp
---------------------------------------------------------------------
 LSP Information: STATIC LSP
---------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
3.3.3.0/24 200/300 GE0/0/0/GE0/0/1 
[R3]display mpls lsp
---------------------------------------------------------------------
 LSP Information: STATIC LSP
---------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
3.3.3.0/24 300/NULL GE0/0/0/-

经测试,1.1.1.0/24网段的主机到3.3.3.0/24主机的ping测试没有问题。
仅配置了1.1.1.0/24到3.3.3.0/24的单向静态LSP,为何可以实现双向通信呢?

静态LSP配置案例 - 抓包分析

posted @ 2024-12-04 00:11  Liam-Wu  阅读(18)  评论(0编辑  收藏  举报