MPLS出现的背景传统的IP转发采用的是逐跳转发。数据报文经过每一台路由器,都要被解封装查看报文网络层信息,然后根据路由最长匹配原则查找路由表指导报文转发。各路由器重复进行解封装查找路由表和再封装的过程,所以转发性能低。 传统IP路由转发的特点: - 传统IP转发是面向无连接的,无法提供较好的端到端QoS保证。
MPLS的定义MPLS位于TCP/IP协议栈中的链路层和网络层之间,用于向IP层提供连接服务,同时又从链路层得到服务。MPLS以标签交换替代IP转发,标签是一个短而定长的、只具有本地意义的连接标识符,与ATM的VPI/VCI以及Frame Relay的DLCI类似。 MPLS不局限于任何特定的链路层协议,能够使用任意二层介质传输网络分组。MPLS起源于IPv4,其核心技术可扩展到多种网络协议,包括IPv6、IPX、Appletalk、DECnet、CLNP等。MPLS中的Multiprotocol指的就是支持多种网络协议。 由此可见,MPLS并不是一种业务或者应用,它实际上是一种隧道技术,在一定程度上可以保证信息传输的安全性。 MPLS基本概念MPLS术语一系列连续的运行MPLS的网络设备构成了一个MPLS域。 - LSR(Label Switching Router,标签交换路由器)
支持MPLS的路由器(实际上也指支持MPLS的交换机或其他网络设备)。位于MPLS域边缘、连接其它网络的LSR称为边沿路由器LER(Label Edge Router),区域内部的LSR称为核心LSR(Core LSR)。 - FEC(Forwarding Equivalence Class,转发等价类)
是一组具有某些共性的数据流的集合,这些数据流在转发过程中被网络节点以相同方式处理。 - LSP(Label Switched Path,标签交换路径)
是标签报文穿越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可能会有多个入标签,但是一台LSR上,一个标签只能代表一个FEC。标签长度为4个字节,封装结构如下图所示。 ❝标签共有4个域: - Exp:3bit,用于扩展。现在通常用做CoS(Class of Service),其作用与Ethernet802.1p的作用类似。
- BoS:1bit,栈底标识。MPLS支持多层标签,即标签嵌套。S值为1时表明为最底层标签。
- TTL:8bit,和IP分组中的TTL(Time To Live)意义相同。
” 标签封装在链路层和网络层之间。这样,标签能够被任意的链路层所支持。标签在分组中的封装位置如下图所示。 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标签的处理标签栈按后进先出方式组织标签,从栈顶开始处理标签。 标签的操作类型包括标签压入(Push)、标签交换(Swap)和 标签弹出(Pop),它们是标签转发的基本动作,是标签转发信息表的组成部分。 - Push:指当IP报文进入MPLS域时,MPLS边界设备在报文二层首部和IP首部之间插入一个新标签;或者MPLS中间设备根据需要,在标签栈顶增加一个新的标签(即标签嵌套封装)。
- Swap:当报文在MPLS域内转发时,根据标签转发表,用下一跳分配的标签,替换MPLS报文的栈顶标签。
- Pop:当报文离开MPLS域时,将MPLS报文的标签去掉;或者MPLS倒数第二跳节点处去掉栈顶标签,减少标签栈中的标签数目。
MPLS的工作原理MPLS个工作原理主要包含两部分内容: - MPLS的体系结构是指运行MPLS的单个设备内部的独立工作原理。
- MPLS的网络结构是指运行MPLS的多个设备互连的联合工作原理。
MPLS的体系结构MPLS的体系结构由控制平面(Control Plane)和转发平面(Forwarding Plane)组成: - 控制平面是无连接的,主要功能是负责标签的分配、LFIB(标签转发表,Lable Forwarding Information Base)的建立、 LSP(标签交换路径,Label Switched Path)的建立、拆除等工作。
- 转发平面也称为数据平面(Data Plane),是面向连接的,可以使用ATM、Ethernet等二层网络承载,主要功能是对IP包进行标签的添加和删除,同时依据标签转发表对收到的分组进行转发。
MPLS转发平面建立以后,设备中已经生成了IP转发表和标签转发表,就可以对于接收到的数据包进行转发,其过程如下图 LSP建立原则- 当网络层协议为IP协议时,FEC所对应的路由必须存在于LSR的IP路由表中,否则该FEC的标签转发表项不生效
- LSR用标签标识指定FEC,所以该FEC的数据被发送至LSR时,必须携带正确的标签,才能被LSR正确的处理。
LSP建立方式MPLS需要为报文事先分配好标签,建立一条LSP,才能进行报文转发。LSP分为静态LSP和动态LSP两种。 静态LSP- 静态LSP是用户通过手工为各个FEC分配标签而建立的。
- 静态LSP不使用标签发布协议,不需要交互控制报文,因此消耗资源比较小。
- 通过静态方式建立的LSP不能根据网络拓扑变化动态调整,需要管理员干预。
动态LSP- 标签发布协议是MPLS的控制协议(也可称为信令协议),负责FEC的分类、标签的分发以及LSP的建立和维护等一系列操作。
MPLS标签转发LSR处理报文时主要根据FTN、 NHLFE和ILM。 - FTN(FEC-to-NHLFE):当LSR收到IP报文并需要进行MPLS转发时使用,FTN只在Ingress存在。
- FTN包括:Tunnel ID、FEC到NHLFE的映射信息。
- 下一跳标签转发表项(Next Hop Label Forwarding Entry):LSR对报文(MPLS或IP报文)进行MPLS转发时使用,NHLFE在Ingress和Transit存在
- NHLFE包括:Tunnel ID、出接口、下一跳、出标签、标签操作类型等信息。
- 入标签映射(ILM,Incoming Label Map):用于指导MPLS报文的转发(MPLS或IP转发),ILM只在Transit和Egress存在。
- ILM包括:Tunnel ID、入标签、入接口、标签操作类型等信息。
❝当IP报文进入MPLS域时: - Ingress LSR查看FIB表,检查目的IP地址对应的Tunnel ID值是否为0x0(如果Tunnel ID值为0x0,则进入正常的IP转发流程)。
- 如果Tunnel ID值不为0x0,根据FIB表的Tunnel ID找到对应的NHLFE表项,将FIB表项和NHLFE表项关联起来。
- 查看NHLFE表项,可以得到出接口、下一跳、出标签和标签操作类型。
- 在IP报文中压入出标签,同时处理TTL,然后将封装好的MPLS报文发送给下一跳。
” ❝当MPLS报文在MPLS域转发时: - Transit LSR根据MPLS的标签值查看对应的ILM表,得到Tunnel ID。
- 根据ILM表的Tunnel ID找到对应的NHLFE表项。
- 查看NHLFE表项,得到出接口、下一跳、出标签和标签操作类型,标签操作类型为Swap,则交换标签。
” ❝当MPLS报文需要离开MPLS域时: - Egress根据ILM查询到该标签对应的操作为Pop,说明需要剥离该标签
”
|