这里写目录标题
一、MPLS概述
MPLS的定义
MPLS(Multiprotocol Label Switching,多协议标签交换)起源于IPv4(Internet Protocol version 4,因特网协议版本4),最初是为了提高转发速度而提出的,其核心技术可扩展到多种网络协议,包括IPv6(Internet Protocol version 6,因特网协议版本6)、IPX(Internet Packet Exchange,网际报文交换)和CLNP(Connectionless Network Protocol,无连接网络协议)等。MPLS中的“M”指的就是支持多种网络协议。
MPLS是一种IP(Internet Protocol)骨干网技术。MPLS在无连接的IP网络上引入面向连接的标签交换概念,将第三层路由技术和第二层交换技术相结合,充分发挥了IP路由的灵活性和二层交换的简捷性。
它实际上是一种隧道技术。这种技术不仅支持多种高层协议与业务,而且在一定程度上可以保证信息传输的安全性。
当下MPLS存在的意义
- 解决BGP的路由黑洞
- MPLS VPN
- MPLS TE 流量工程
二、MPLS相关概念
-
转发等价类
MPLS作为一种分类转发技术,将具有相同转发处理方式的分组归为一类,称为FEC(Forwarding Equivalence Class,转发等价类)。相同FEC的分组在MPLS网络中将获得完全相同的处理。通常对一个FEC分配唯一的标签。
FEC的划分方式非常灵活,可以是以源地址、目的地址、源端口、目的端口、协议类型或VPN等为划分依据的任意组合。例如:
- 属于某特定组的组播报文
- 目的IP地址匹配了某一个特定前缀的报文
- 根据DCSP字段,有相同QOS策略的报文
- MPLS VPN中,属于同一个VPN的报文
-
标签
标签是一个长度固定,仅具有本地意义的短标识符,用于唯一标识一个分组所属的FEC。
-
MPLS domain
LSR构成的网络区域称为MPLS域(MPLS Domain) ,是MPLS的工作半径。 -
标签交换路由器
LSR(Label Switching Router,标签交换路由器)是MPLS网络中的基本元素,所有LSR都支持MPLS技术。
-
标签边界路由器
LER(Label Edge Router,标签边界路由器)可以转发数据包进入MPLS域,也可以转发IP包进入或离开MPLS域。
在MPLS域中LSR是转发带标签的数据包,LER可以转发数据包进入MPLS域,也可以转发IP包进入或离开MPLS域。
-
标签交换路径
一个转发等价类在MPLS网络中经过的路径称为LSP(Label Switched Path,标签交换路径)。在一条LSP上,沿数据传送的方向,相邻的LSR分别称为上游LSR和下游LSR。
LSP是一个单向路径,与数据流方向一致。LSP的入口LER称为入节点(Ingress);位于LSP中间的LSR称为中间节点(Transit);LSP的出口LER称为出节点(Egress)。
-
MPLS MTU
MPLS标签栈象“垫层”一样,位于二层数据帧头和数据之间。在MPLS转发过程中,虽然网络层报文长度小于接口的MTU,但是增加MPLS标签后,报文长度可能超过链路层允许发送的范围,从而导致报文无法正常转发。为此,设备上定义了MPLS MTU,MPLS转发时将增加标签后的报文长度与MPLS MTU比较。报文长度大于MPLS MTU时,如果允许分片,则将报文分片后再进行转发;如果不允许分片,则直接丢弃。
三、MPLS结构
控制平面:负责产生和维护路由信息以及标签信息。
- IP路由协议:OSPF、ISIS等。
- 路由信息表RIB(Routing Information Base):由IP路由协议(IP Routing Protocol)生成,用于选择路由。
- 标签分发协议LDP(Label Distribution Protocol):负责标签的分配、标签转发信息表的建立、标签交换路径的建立、拆除等工作。
- 标签信息表LIB(Label Information Base):由标签分发协议生成,用于管理标签信息。
转发平面:即数据平面(Data Plane),负责普通IP报文的转发以及带MPLS标签报文的转发。
-转发信息表FIB(Forwarding Information Base):从RIB提取必要的路由信息生成,负责普通IP报文的转发。
-标签转发信息表LFIB(Label Forwarding Information Base):简称标签转发表,由标签分发协议在LSR上建立LFIB,负责带MPLS标签报文的转发。
四、MPLS标签报文格式
采用帧模式。在二层报头和三层报头之间插入MPLS报头。可以插入一个或多个,这种标签模式也被称为帧模式。
靠近二层报头的叫外层或者高层;靠近三层的叫内层或者低层标签。当查看完二层报头发现标签之后就不再关心三层报头,直接进行转发。理论上,MPLS标签可以无限嵌套。目前MPLS标签嵌套主要应用在MPLS VPN、TE FRR(Traffic Engineering Fast ReRoute)中。
怎么判断一个数据包是通过MPLS还是IP转发呢?
在二层头部中有一个PID(协议号字段)
PID标识二层头部后面的报文类型,LSR判断报文类型
-
Ethernet :
0x0800 IPv4
0x8847 MPLS单播报文
0x8848 MPLS多播报文 -
PPP :0x8021 IPv4
0x8281 MPLS单播报文
0x8283 MPLS多播报文
MPLS标签空间:
标签空间就是指标签的取值范围。标签空间划分如下:
- 0~15:特殊标签。
- 16~1023:静态LSP和静态CR-LSP(Constraint-based Routed Label Switched Path)共享的标签空间。
- 1024及以上:LDP、RSVP-TE(Resource Reservation Protocol-Traffic Engineering)、MP-BGP(MultiProtocol Border Gateway Protocol)等动态信令协议的标签空间。
PS:MPLS有一些特殊的固定标签值,在后面会细说,这里不方便理解。
标签操作类型(Label Operations)
-
Push:指当IP报文进入MPLS域时,MPLS边界设备在报文二层首部和IP首部之间插入一个新标签;或者MPLS中间设备根据需要,在标签栈顶增加一个新的标签(即标签嵌套封装)。
-
Swap: 当报文在MPLS域内转发时,根据标签转发表,用下一跳分配的标签,替换MPLS报文的栈顶标签。
-
Pop: 当报文离开MPLS域时,将MPLS报文的标签去掉。