《笔记》关于网络运维那些事---(MPLS基础)

MPLS(Multi-Protocol Label Switching,多协议标签交换):多协议是指MPLS技术能够支持多种网络协议。标签交换指的是MPLS设备能够为IP报文增加标签信息,并且基于标签信息对报文进行转发,提高数据的转发效率(随着硬件技术的突破,专用集成电路被用于提升IP路由查询的执行效率,IP路由的执行速度被极大程度地提升了,现如今MPLS在提升转发效率方面的优势已经不再明显)。简单理解,MPLS技术其实就是在原有IP报文的基础之上增加MPLS标签头部,标签头部被压入到报文的二层头部之后、三层头部之前。在MPLS域中,携带了标签头部的报文是基于该头部中标签进行转发的,这使得转发设备无需层层解封装该报文,直至它们看到报文的目的IP地址。(由于原始报文被压入了标签头部,因此IP头部以及报文载荷被“隐藏”在标签头部后面,这就可以解决路由黑洞等问题。)

主要应用:

1.基于MPLS的VPN

2.基于MPLS的流量工程

MPLS术语:

LSR(Label Switch Router,标签交换路由器):指激活了MPLS功能的路由器(或网络设备),这些路由器维护着用于指导标签报文转发的信息,并且能够依据这些信息对标签报文进行处理。此外,它们也能根据需要,将IP报文处理成标签报文,或者将标签报文处理成IP报文。

Ingress LSR(入站LSR):通常指是将IP报文进行处理,压入标签头部并生成标签报文的LSR。入站LSR往往处于MPLS域的边界。

Transit LSR(中转LSR):指的是将标签报文进行处理,例如执行标签标签置换等操作,然后将处理后的标签报文继续在MPLS域内转发的LSR。

Egress LSR(出站LSR):通常指的是将标签报文中的标签头部移除,并将报文还原为IP报文的LSR。

Label(标签):当一个IP报文进入MPLS域时,MPLS标签头部被压入到了报文的IP头部之前、二层头部之后。标签头部的长度是固定的,在标签头部中,“标签”字段填写的便是相应的标签值。在MPLS域内,中转LSR根据报文所携带的标签进行数据转发,它们不会关心标签报文中的IP头部信息。一个标签报文可能包含一个或多个标签头部,这些标签头部按照一定的顺序排列,此时该报文所携带的标签头部就构成了一个标签栈(Label Stack),实际上当报文仅含一层标签头部时,该标签头部也被理解成标签栈,只不过它既是栈底又是栈顶。

FEC(Forwarding Equivalence Class,等价转发类):指的是具有相同特征的报文,这些报文在LSR转发过程中采用相同的方式进行处理。MPLS标签通常是与FEC相对应的。

LSP(Label Switch Path,标签交换路径):指的是报文在MPLS域年内的转发过程中所经过的路径。LSP需要在数据转发开始之前建立完成,只有这样报文才能够顺利穿越MPLS域。同一个FEC的报文通常采用相同的LSP穿越MPLS域。另外,LSP是单向的,因此如果一个应用涉及到双向数据交互,那么便要求在通信双方之间建立双向的LSP。

LDP(Label Distribution Protocol,标签分发协议):在一个 流量能够顺利穿越MPLS域之前,该流量所对应的FEC的LSP必须已经建立完成。LSP的建立可以通过两种方式实现:静态及动态{建立一条LSP的最简单的方式是采用手工配置方式,采用这种方式建立的LSP被称为静态LSP。  通过标签分分发协议建立的LSP被称为动态LSP。常见的标签分发协议有:LDP 、RSVP及MP-BGP。

MPLS标签

一个IP报文进入MPLS域之前,会被入站LSR压入MPLS标签头部,形成一个MPLS标签报文。一个标签头部的长度为固定的32bit,共包含四个字段:

标签:用于存储标签值

EXP:主要用于CoS(Class of Service)。

BoS(Bottom of Stack):也被称为栈底,如果该字段的值为1,则表示本标签头部为标签栈的栈底,这意味着该标签头部后便是IP头部;如果该字段值为0,这表示本标签头部并非栈底。

TTL(Time To Live):用于防止当网络中出现环路时,标签报文被无限制转发。与IP报文头部中的TTL字段作用类似。

MPLS标签的基本操作类型

压入:压入标签

置换:置换标签

弹出:弹出标签

在一个MPLS网络中,每一台LSR都可能维护着以下的数据:

Tunnel ID(隧道标识):Tunnel ID是一个长度为32bit,且只具有本地意义的隧道标识,这是设备为各种隧道所分配的一个ID。如果Tunnel ID的值为0x0,则设备收到去往该目的网段的IP报文时,将报文执行IP路由操作;如果Tunnel ID值不为0x0,则设备将报文执行MPLS转发操作,设备将在NHLFE中查询该Tunnel ID值,从而找到匹配的表项并按照表项的只是进行操作。

NHLFE(Next Hop Label Forwarding Entry,下一跳标签转发表项):用于指导MPLS标签报文转发。每个NHLFE都包含这Tunnel ID、出站接口、下一跳地址、出站标签、标签操作类型等信息。

ILM(Incoming Label Map,入标签映射):ILM体现的是入站标签到NHLFE的映射关系,ILM包含Tunnel ID、入站标签、入站接口、标签操作等信息。

LDP(Label Distribution Protocol,标签分发协议)

LDP ID:每一台运行了MPLS的LSR必须拥有一个域内唯一的LSR ID(标签交换路由器标识符);每一台运行了LDP的LSR必须拥有LDP ID(标签分发协议标识符),由LSR ID和Label Space ID(标签空间标识符)构成。例如“1.1.1.1:0”。Label Space ID值通常为0或非0,0表示基于设备的标签空间;非0表示基于接口的标签空间。

本地LDP会话:指直连的LDP设备之间所建立的LDP会话,设备采用组播的Hello报文发现直连链路上的其他LDP对等体。无需手动指定LDP对等体的IP地址。

远程LDP会话:不要求建立会话的LDP设备之间必须直连,在配置LDP设备时,必须手工指定对等体的IP地址。

本地LDP会话建立过程

1.LDP设备发现:当设备激活LDP后,接口便开始发送Hello报文。LDP的Hello报文采用UDP封装,源UDP端口号及目的UDP端口号均是646,Hello报文采用组播的方式发送,目的IP地址为224.0.0.2。缺省情况下LDP设备采用LSR ID作为传输地址,在Hello报文中将传输地址告知对方。

2.LDP会话建立:传输地址大的一方发起TCP连接建立请求,目的TCP端口号为646,源IP地址为传输地址,源端口号随机。两端传输地址路由可达。

3.通告标签映射:使用Label Mapping(标签映射)报文相互通告标签映射,该报文中包含FEC(路由前缀)以及该LSR为这个FEC分配的标签值。

PHP(Penultimate Hop Poppoing,次末跳弹出)机制

在MPLS的标签空间中,3是一个有着特殊意义的值,它被称为隐式空标签(Implicit Null Label)。LSR在转发标签报文时,如果发现该报文的入站变迁对应的出站标签为,则将标签头部弹出,并将里面所封装的报文转发给最后一条LSR。

华为路由器缺省已激活了PHP特性,因此出站LSR缺省向倒数第二跳LSR分配隐式空标签。

作用:优化出站LSR操作。

你可能感兴趣的:(《笔记》关于网络运维那些事---(MPLS基础))