IPRAN中MPLS的基础(下)

IPRAN中MPLS的基础(下)

一、LSP的建立

1、LSP的基本建立过程

MPLS需要为报文事先分配好标签,建立一条LSP,才能进行报文转发。

标签由下游分配,按从下游到上游的方向分发。如下图,由下游LSR在IP路由表的基础上进行FEC的划分,并将标签分配给特定FEC,再通过标签发布协议通知上游LSR,以便建立标签转发表和LSP。

LSP分为静态LSP和动态LSP两种。静态LSP由管理员手工配置,动态LSP则利用路由协议和标签发布协议动态建立。

2、静态LSP的建立

静态LSP是用户通过手工为各个转发等价类分配标签而建立的。手工分配标签需要遵循的原则是:上游节点出标签的值就是下游节点入标签的值。

由于静态LSP各节点上不能相互感知到整个LSP的情况,因此静态LSP是一个本地的概念。

  • 配置静态LSP的入节点,且在出接口使能了MPLS,如果路由可达,则静态LSP就为UP状态,无论是否有Transit节点或出节点。这里的“路由可达”的含义是本地路由表中存在与指定目的IP地址精确匹配的路由项(包括目的地址和下一跳都匹配)。
  • 配置静态LSP的Transit节点,且在入接口和出接口使能了MPLS,如果入接口和出接口的物理层及协议层状态为Up,则该静态LSP就为UP状态,无论是否有入节点、出节点或其他Transit节点。
  • 配置静态LSP的出节点,且入接口使能了MPLS,如果入接口的物理层及协议层状态为Up,则该静态LSP就为UP状态,无论是否有入节点或Transit节点。

说明:只有入节点的静态LSP的建立依赖于路由,中间节点和出节点无此限制。

静态LSP不使用标签发布协议,不需要交互控制报文,因此消耗资源比较小,适用于拓扑结构简单并且稳定的小型网络。但通过静态方式分配标签建立的LSP不能根据网络拓扑变化动态调整,需要管理员干预。

3、动态LSP的建立

动态LSP通过标签发布协议动态建立。MPLS可以使用多种标签发布协议:

(1)LDP

LDP是专为标签发布而制定的协议。LDP通过逐跳方式建立LSP时,利用沿途各LSR路由转发表中的信息来确定下一跳,而路由转发表中的信息一般是通过IGP、BGP等路由协议收集的。LDP并不直接和各种路由协议关联,只是间接使用路由信息。

虽然LDP是专门用来实现标签分发的协议,但LDP并不是唯一的标签分发协议。通过对BGP、RSVP等已有协议进行扩展,也可以支持MPLS标签的分发。

(2)RSVP-TE

资源预留协议RSVP是为Integrated Service模型而设计的,用于在一条路径的各节点上进行资源预留。RSVP工作在传输层,但不参与应用数据的传送,是一种网络上的控制协议,类似于ICMP。

为了能够建立基于约束的LSP,对RSVP协议进行了扩展。扩展后的RSVP信令协议称为RSVP-TE信令协议,主要用于建立TE隧道。它拥有普通LDP LSP没有的功能,如发布带宽预留请求、带宽约束、链路颜色和显式路径等。

(3)MP-BGP

MP-BGP是在BGP协议基础上扩展的协议。MP-BGP引入Community属性,支持为MPLS VPN业务中私网路由和跨域VPN的标签路由分配标签。

二、MPLS转发

1、基本概念

(1)Tunnel ID

为了给使用隧道的上层应用(如VPN、路由管理)提供统一的接口,系统自动为各种隧道分配了一个ID,也称为Tunnel ID。该Tunnel ID只是本地有效。Tunnel ID的长度为32比特,不同类型的隧道,各字段的长度可能不同。

(2)NHLFE

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

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

(3)ILM

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

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

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

(4)FTN

FEC到一组NHLFE的映射称为FTN(FEC-to-NHLFE)。

通过查看FIB表中Token值不为0x0的表项,能够获得FTN的详细信息。FTN只在Ingress存在。

2、MPLS报文的基本转发过程

以支持PHP(倒数第二跳弹出)的LSP为例,说明MPLS报文的基本转发过程。

如上图所示,MPLS建立了一条LSP,其目的地址为3.3.3.3/32。则MPLS报文基本转发过程如下:

(1)Ingress节点收到目的地址为3.3.3.3/32的IP报文,添加标签Z并转发。

(2)Transit节点收到该标签报文,进行标签交换,将标签Z弹出,换成标签Y。

(3)倒数第二跳Transit节点收到带标签Y的报文。因Egress分给它的标签值为3,进行PHP操作,弹出标签Y并转发报文。从倒数第二跳到Egress之间报文以IP报文形式传输。

(4)Egress节点收到该IP报文,将其转发给目的地3.3.3.3/32。

3、MPLS转发流程

当IP报文进入MPLS域时,首先查看FIB(Forwarding Info Base)表,检查目的IP地址对应的Tunnel ID值是否为0x0。

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

在报文转发过程中:

(1)在Ingress,通过查询FIB表和NHLFE表指导报文的转发。

(2)在Transit,通过查询ILM表和NHLFE表指导MPLS报文的转发。

(3)在Egress,通过查询ILM表指导MPLS报文的转发。

ILM:入标签到一组下一跳标签转发表项的映射称为入标签映射ILM(Incoming Label Map)。ILM包括Tunnel ID、入标签、入接口等信息。

NHLFE:下一跳标签转发表项NHLFE(Next Hop Label Forwarding Entry)用于指导MPLS报文的转发。NHLFE包括:Tunnel ID、出接口、下一跳、出标签、标签操作类型等信息。

在MPLS转发过程中,FIB、ILM和NHLFE表项实际上是通过Tunnel ID中的Token字段关联的。

(1)Ingress节点的处理如下:

  1. 查看FIB表,根据目的IP地址找到对应的Tunnel ID。
  2. 根据FIB表的Tunnel ID找到对应的NHLFE表项,将FIB表项和NHLFE表项关联起来。
  3. 查看NHLFE表项,可以得到出接口、下一跳、出标签和标签操作类型,标签操作类型为Push。
  4. 在IP分组报文中压入获得的标签,并根据QoS策略处理EXP,同时处理TTL,然后将封装好的MPLS分组报文发送给下一跳。

(2)Transit节点收到MPLS报文后的处理:

  1. 根据MPLS的标签值查看对应的ILM表,可以得到Token。

  2. 根据ILM表的Token找到对应的NHLFE表项。

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

  4. MPLS报文的处理方式根据不同的标签值而不同。

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

(3)Egress节点收到MPLS报文后,查看ILM表获得标签操作类型,同时处理EXP和TTL。

  • 如果标签中的S=1,表明该标签是栈底标签,直接进行IP转发。
  • 如果标签中的S=0,表明还有下一层标签,继续进行下一层标签转发。

4、MPLS对TTL的处理

MPLS标签中包含一个8位的TTL域,其含义与IP头中的TTL域相同。MPLS对TTL的处理除了用于防止产生路由环路外,也用于实现Traceroute功能。

RFC3443中定义了两种MPLS对TTL的处理模式:Uniform和Pipe。缺省情况下,MPLS对TTL的处理模式为Uniform。

(1)Uniform模式

IP分组经过MPLS网络时,在入节点,IP TTL减1映射到MPLS TTL字段,此后报文在MPLS网络中按照标准的TTL处理方式处理。在出节点将MPLS TTL减1后映射到IP TTL字段。如下图所示:

(2)Pipe模式

在入节点,IP TTL值减1,MPLS TTL字段为固定值,此后报文在MPLS网络中按照标准的TTL处理方式处理。在出节点会将IP TTL字段的值减1。即IP分组经过MPLS网络时,无论经过多少跳,IP TTL只在入节点和出节点分别减1。如下图所示:

三、MPLS Ping/Traceroute

1、概述

在MPLS中,如果LSP转发数据失败,负责建立LSP的MPLS控制平面将无法检测到这种错误,这会给网络维护带来困难。

MPLS Ping/Traceroute为用户提供了发现LSP错误、并及时定位失效节点的机制。

MPLS Ping主要用于检查网络连接及主机是否可达。MPLS Traceroute在检查网络连接是否可达的同时,还可以分析网络什么地方发生了故障。

类似于普通IP的Ping/Traceroute,MPLS Ping/Traceroute使用MPLS Echo Request和MPLS Echo Reply检测LSP的可用性。这两种消息以UDP报文格式发送,端口号为3503。接收端通过UDP端口号识别出MPLS Echo Request和MPLS Echo Reply报文。

MPLS Echo Request中携带需要检测的FEC信息,和其他属于此FEC的报文一样沿LSP发送,从而实现对LSP的检测。MPLS Echo Request通过MPLS转发给目的端,而MPLS Echo Reply则按照一般IP报文的方式转发给源端。

为了防止消息到达Egress节点后又被转发给其他节点,Echo Request消息的IP头中目的地址设置为127.0.0.1/8(本机环回地址),IP头中的TTL值=1。

2、MPLS Ping

如下图所示,CX-A上建立了一条目的地为CX-D的LSP。从CX-A对该LSP进行MPLS Ping时的处理如下:

(1)CX-A查找该LSP是否存在(对于TE隧道,查找Tunnel接口是否存在且CR-LSP是否建立成功)。如果不存在,返回错误信息,停止Ping。如果存在,则继续进行以下操作。

(2)CX-A构造MPLS Echo Request报文,IP首部目的地址为127.0.0.1/8,IP TTL=1。查找相应的LSP,压入LSP的标签(标签的TTL=255),将报文发送给CX-B。

(3)中间节点CX-B和CX-C对MPLS Echo Request报文进行普通MPLS转发。

如果中间节点MPLS转发失败,则中间节点返回带有错误码的应答消息。

(4)当MPLS转发路径无故障,则MPLS Echo Request报文到达LSP的出节点CX-D。CX-D处理后返回MPLS Echo Reply报文。

3、MPLS Traceroute

如上图所示,从CX-A对4.4.4.4/32进行MPLS traceroute时的处理如下:

(1)CX-A检查LSP是否存在,如果不存在,返回错误消息,停止Traceroute,否则继续进行如下处理。

(2)CX-A构造MPLS Echo Request报文,IP首部目的地址为127.0.0.1/8,IP TTL=1。查找相应的LSP,压入LSP的标签(标签的TTL=1),将报文发送给CX-B。CX-B收到此报文,标签的TTL超时,因此返回MPLS Echo Reply消息。MPLS Echo Reply消息的目的UDP端口和目的IP地址就是MPLS Echo Request报文的源UDP端口和源IP地址,IP TTL=255。

(3)CX-A收到MPLS Echo Reply消息后发送MPLS Echo Request报文,其中标签的TTL=2。CX-B对该报文进行普通MPLS转发。CX-C收到此报文,标签的TTL超时,返回MPLS Echo Reply消息。

如果中间节点MPLS转发失败,则没有MPLS Echo Reply消息返回。

(4)CX-A收到MPLS Echo Reply消息后发送MPLS Echo Request报文,其中标签的TTL=3。CX-B和CX-C对该报文进行普通MPLS转发。CX-D收到此报文,发现报文目的地址为本机回环地址,返回MPLS Echo Reply消息。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 xumeng32@126.com

文章标题:IPRAN中MPLS的基础(下)

文章字数:3.2k

本文作者:F_numen

发布时间:2020-04-14, 21:41:25

最后更新:2020-04-15, 21:43:38

原始链接:https://netheroone.cn/archives/c41a7f3c.html

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
/*baidu统计*/