什么是MPLS?
MPLS是一种利用标签来指导数据报文高速转发的协议,由IETF (Internet Engineering Task Force,因特网工程服务组)提出。MPLS将IP地址映射为简短且长度固定、只具有本地意义的标签,以标签交换替代IP查表,从而显著提升转发效率。同时,MPLS的标签机制可以在IP网络中构筑一条逻辑上的隧道,并且MPLS兼容不同的网络层和链路层协议,因此,MPLS可以很好地为各种L2VPN、L3VPN以及EVPN业务提供公网隧道服务。
为什么需要MPLS?
在20世纪90年代中期,随着IP网络的快速发展,Internet数据量急剧增长。由于当时的硬件技术存在限制,基于最长匹配算法的IP技术必须使用软件方法查找路由,转发性能低下,所以IP的转发性能成为当时限制网络发展的瓶颈。在这种背景下,IETF提出了MPLS协议。MPLS最初的目的就是为了提升IP网络中路由设备的转发速率。
IP路由与MPLS转发方式对比
与传统的IP路由方式相比,MPLS通过以下两种方式提升转发速率:
- 将查找庞大的IP路由表转化为简洁的标签交换,显著减少指导报文转发的时间。
- 当报文进入MPLS区域之后,只需在位于边缘的入、出节点解析IP报文头,封装或解封装标签,而在中间的所有节点上都无需解析IP报文头,只进行标签交换,进一步节约了转发报文的处理时间。
后来,随着ASIC(Application Specific Integrated Circuit,专用集成电路)技术的迅速发展,IP路由表查找逐步改用硬件方法,处理速度大大提高,这使得MPLS在提高IP网络转发速率方面不再具备明显的优势。
但是,MPLS的标签转发本质上是一种隧道技术,它还支持封装多层标签,并且MPLS天然兼容多种网络层和链路层协议,因此,MPLS非常适合在各种VPN业务中充当公网隧道。此外,由于MPLS的报文转发依靠一条固定的标签交换路径,所以MPLS是一种面向连接的转发技术,这使得MPLS在流量工程(Traffic Engineering,TE)、QoS、SD-WAN等领域也有着广泛的应用。
MPLS有哪些特征?
MPLS的基本概念有哪些?
想了解MPLS是什么,首先要知道MPLS的基本概念,下面介绍几个核心概念。
FEC
MPLS是一种分类转发技术,它将具有相同转发处理方式的数据分组归为一类,称为FEC(Forwarding Equivalence Class,转发等价类)。MPLS对相同FEC的数据分组采取完全相同的处理方式。
FEC的划分方式非常灵活,可以是源地址、目的地址、源端口、目的端口、协议种类、业务类型等要素的任意组合。例如,在采用最长匹配算法的IP路由转发中,去往同一个目的地址的所有报文就是一个FEC。
MPLS标签
MPLS标签是一个简短且长度固定的标识符,它只具有本地意义,用于唯一标识一个分组所属的FEC。在某些情况下(例如,进行负载分担)对应一个FEC可能会有多个MPLS标签,但是在一台设备上,一个MPLS标签只能代表一个FEC。
MPLS标签长度为4个字节,封装结构如下图所示。
MPLS标签封装结构
MPLS标签共有4个域:
Label:20bit,标签值域。
TC:3bit,流量等级(Traffic Class),又名Exp。通常用做CoS(Class of Service,服务分类)。
S:1bit,栈底标识(Bottom of Stack)。MPLS支持多层标签,即标签嵌套。BoS值为1时表明为最底层标签。
TTL:8bit,和IP分组中的TTL(Time To Live)意义相同。
MPLS标签封装在链路层和网络层之间,它在报文分组中的封装位置如下图所示。MPLS标签能够被任意的链路层协议所支持。
MPLS标签的封装位置
MPLS标签栈(Label stack)也称为MPLS多层标签,是指MPLS标签的排序集合,如下图所示。靠近二层首部的标签称为栈顶标签或外层标签;靠近IP首部的标签称为栈底标签,或内层标签。MPLS标签栈按后进先出(Last In First Out)方式组织标签,从栈顶开始处理标签。
MPLS标签栈
标签操作
MPLS标签的基本操作包括标签压入(Push)、标签交换(Swap)和标签弹出(Pop),它们是标签转发的基本动作,是标签转发信息表的组成部分。
标签基本操作
MPLS标签的基本操作详解如下:
Push:指当IP报文进入MPLS域(由一系列连续的标签交换路由器LSR构成的网络区域称为MPLS域)时,MPLS边界设备在报文二层首部和IP首部之间插入一个新标签;或者MPLS中间设备根据需要,在标签栈顶增加一个新的标签(即标签嵌套封装)。
Swap:当报文在MPLS域内转发时,根据标签转发表,用下一跳分配的标签,替换MPLS报文的栈顶标签。
Pop:当报文离开MPLS域时,将MPLS报文的标签去掉;或者MPLS倒数第二跳的节点处去掉栈顶标签,减少标签栈中的标签数目。
在最后一跳的节点上,MPLS标签实际已没有使用价值。这种情况下,可以利用PHP(Penultimate Hop Popping,倒数第二跳弹出)特性,在倒数第二跳的节点上就将标签弹出,这样最后一跳的节点可直接进行IP转发或者下一层标签转发,从而减少最后一跳的处理负担。
PHP特性是通过分配特殊的标签值3来实现的。标签值3表示隐式空标签(implicit-null),这个值不会出现在标签栈中。当倒数第二跳节点发现自己被分配了标签值3时,它并不用这个值替代栈顶原来的标签,而是直接执行Pop操作,使最后一跳节点直接进行IP转发或下一层标签转发。
LSP
LSP(Label Switched Path,标签交换路径)是指属于同一FEC的报文(即封装了MPLS标签的报文)在MPLS域内转发所经过的路径,如下图所示。
LSP示意图
LSP是一条从入口到出口的单向通道,包含以下角色:
LSP的起始节点称为入节点(Ingress),一条LSP只能有一个Ingress。Ingress的主要功能是给IP报文压入一个新的MPLS标签,将其封装成MPLS报文。
位于LSP中间的节点称为中间节点(Transit),一条LSP可能有0个或多个Transit。Transit的主要功能是查找标签转发信息表,通过标签交换完成MPLS报文的转发。
LSP的末尾节点称为出节点(Egress),一条LSP只能有一个Egress。Egress的主要功能是弹出标签,恢复成原来的报文进行相应的转发。
MPLS网络是什么样的?
MPLS网络的典型结构如下图所示。
MPLS网络结构示意图
MPLS网络主要包含以下要素:
- 支持MPLS功能的网络设备称为LSR(Label Switching Router,标签交换路由器),它是MPLS网络的基本组成单元。由一系列连续的LSR构成的网络区域称为MPLS域。
- MPLS域内部的LSR称为Core LSR,如果一个LSR的相邻节点都运行MPLS,则该LSR就是Core LSR。
- 位于MPLS域边缘、连接其它网络的LSR称为LER(Label Edge Router,标签边缘路由器),如果一个LSR有一个或多个不运行MPLS的相邻节点,那么该LSR就是LER。
在MPLS网络中,任何两个LER之间都可以建立LSP,用来转发进入MPLS域的报文,中间可途径若干个Core LSR。因此,一条LSP的Ingress和Egress都是LER,而Transit是Core LSR。
MPLS有什么价值?
MPLS在当前的IP网络中得到了广泛的应用,其主要价值体现在以下几方面:
- MPLS完全兼容IP网络,相当于在IP网络的基础上进行改进,建设成本低,易于推广。
- MPLS的控制平面和转发平面是分开的,在控制平面依靠IP路由来建立LSP,MPLS可以借用IP路由的各种灵活性、可靠性机制;在转发平面通过LSP来传输报文,是面向连接的,MPLS可以有效地实施流量工程和QoS。
- MPLS是一种与链路层协议无关的技术,它同时支持帧中继、ATM、PPP和SDH等协议,保证了多种网络的互通,兼容性非常好。
- MPLS网络支持层次化的拓扑结构,适合在IP骨干网中部署。
- MPLS标签栈在理论上可支持标签的无限嵌套,正好契合了VPN业务对公、私网标签多层封装的要求,因此MPLS为VPN业务的蓬勃发展提供了强有力的支持。
MPLS是如何工作的?
简单来说,MPLS的工作就是将进入MPLS域的报文正确地转发到目的地。MPLS的工作可以概括为两个过程:建立LSP、报文通过LSP转发。
MPLS是如何建立LSP的?
MPLS是一种依靠标签交换来指导数据报文转发的技术,因此,LSP的建立过程实际上就是沿途LSR为特定FEC确定标签的过程。
MPLS标签由下游分配,按照从下游到上游的方向进行分发。如下图所示,下游LSR根据IP路由的目的地址进行FEC划分,并将标签分配给对应指定目的地址的FEC,再将标签发送给上游LSR,触发上游LSR建立标签转发信息表,最终使一系列LSR形成一条LSP。
LSP的建立过程示意图
LSP按建立方式可以分为静态LSP和动态LSP两种:
- 静态LSP是管理员通过手工为各个FEC分配标签而建立的LSP。手工分配标签需要遵循的原则是:上游LSR出方向的标签的值等于下游LSR入方向的标签值。
- 动态LSP是各LSR通过标签发布协议动态的生成和发布标签而建立的LSP,下游LSR向上游LSR发送标签时需要依赖IP路由。MPLS支持多种标签发布协议,例如:LDP(Label Distribution Protocol,标签分发协议)、RSVP-TE(Resource Reservation Protocol Traffic Engineering,资源预留协议)和MP-BGP(Multiprotocol Border Gateway Protocol,多协议边界网关协议)。
LDP
LDP是MPLS体系中非常重要的一种标签发布控制协议,负责FEC的分类、MPLS标签分配以及LSP的动态建立和维护等操作,规定了标签分发过程中的各种消息以及相关处理过程。通过LDP协议,LSR可以把网络层的路由信息直接映射到数据链路层的LSP交换路径上,实现在网络层动态建立LSP。
LDP具有组网和配置简单、支持路由拓扑驱动建立LSP及支持大容量LSP等优点。相较于手工配置的静态LSP,LDP也能够极大地减轻维护人员的工作量,减少配置错误的产生。
LDP有以下四种会话消息类型:
- 发现(Discovery)消息:用于通告和维护网络中LSR的存在;
- 会话(Session)消息:用于建立、维护和终止LDP对等体之间的会话,包括Initialization消息、Keepalive消息等;
- 通告(Advertisement)消息:用于创建、改变和删除FEC的标签映射;
- 通知(Notification)消息:用于提供建议性的消息和差错通知。
为保证LDP消息的可靠发送,除了发现消息使用UDP外,LDP的会话消息、通告消息和通知消息都使用TCP传输。
LDP会话是由两台LSR之间交换Hello消息触发建立的,以下图为例,介绍LDP会话建立过程。
LDP会话建立过程
- 两个LSR之间互相发送Hello消息。Hello消息中携带传输地址,双方使用传输地址建立LDP会话。首先传输地址较大的一方将作为主动方,发起建立TCP连接。如图,LSR A作为主动方发起建立TCP连接,LSR B作为被动方等待对方发起连接。
- TCP连接建立成功后,由主动方LSR A发送Initialization消息,协商建立LDP会话的相关参数,包括LDP协议版本、标签分发方式、Keepalive保持定时器的值、最大PDU长度和标签空间等。
- 被动方LSR B收到Initialization消息后,如果不能接受相关参数,则发送Notification消息终止LDP会话的建立;如果被动方LSR B能够接受相关参数,则发送Initialization消息,同时发送Keepalive消息给主动方LSR A。
- 主动方LSR A收到Initialization消息后,如果不能接受相关参数,则发送Notification消息给被动方LSR B终止LDP会话的建立;如果能够接受相关参数,则发送Keepalive消息给被动方LSR B。
当双方都收到对端的Keepalive消息后,LDP会话建立成功。
RSVP与RSVP-TE
RSVP是为Integrated Service Model(集成服务模型)而设计的,用于在访问Internet应用程序时获得不同的服务质量(QoS)。它通过IPv4或IPv6运行,并由接收端发起资源预留请求,在一条传输路径的各节点上进行资源预留。RSVP不是路由协议,它的唯一工作是通告和维护网络中的预留资源。RSVP由接收端使用路径消息(Path message)申请资源,由发送端沿路径消息的反向路径,通过预留消息(Resv message)完成资源分配和资源预留。
RSVP-TE是针对流量工程扩展的资源预留协议,基于RSVP进行了扩展,在Path消息中引入Label_Request对象用于发起标签请求,在Resv消息中引入Label对象用于标签分配,从而允许建立MPLS LSP,并考虑了带宽和亲和属性等路径约束信息,实现网络流量的路径规划和调优。
RSVP-TE的LSP建立过程
MPLS报文转发涉及哪些基本概念?
MPLS转发过程涉及FIB(Forwarding Information Base,转发信息表)、NHLFE(Next Hop Lable Forwarding Entry,下一跳标签转发表项)、ILM(Incomming Lable Map,入标签映射)等几个表项的查询,它们之间通过Tunnel ID关联。
Tunnel ID
为了给使用隧道的上层应用(如VPN、路由管理)提供统一的接口,系统自动为各种隧道分配了一个ID,称为Tunnel ID,长度为32bit,仅具有本地意义,即只需要在本地设备上唯一。
FIB、LIB与LFIB
FIB表用于在IP网络中指导IP报文转发,是由从RIB(Routing Information Base,路由信息表)中优选出的路由信息生成的,包含目的网段、出接口、下一跳IP地址、路由标记、路由优先级等信息。
LIB(Label Information Base,标签信息表)与RIB类似,保存着每个标签与对应FEC的映射关系,用来管理MPLS标签信息,包含FEC网段、入标签、出标签、分发出标签的下游节点等元素。
LFIB(Label Forwarding Information Base,标签转发信息表)与FIB类似,用于在MPLS网络中指导MPLS报文转发,是由从LIB中提取出的必要信息生成的,除了包含目的网段、出接口、下一跳IP地址,还包括入标签和出标签等元素。
NHLFE
NHLFE用于指导MPLS报文的转发,包含Tunnel ID、出接口、下一跳、出标签、标签操作类型等信息,能够根据出标签找到对应的出接口和下一跳,进行报文转发。FEC与NHLFE的映射称为FTN(FEC-to-NHLFE),通过查看FIB表中Token值不为0x0的表项,能够获得FTN的详细信息。FTN只在Ingress存在。
ILM
ILM是入标签与NHLFE的映射,它使得本地设备的入标签和出标签、Tunnel ID建立对应的对应关系。ILM在Transit节点的作用是将标签和NHLFE绑定。通过标签索引ILM表,就相当于使用目的IP地址查询FIB,能够得到所有的标签转发信息。
报文是如何通过LSP转发的?
以支持PHP特性的LSP为例,MPLS报文在该LSP中的基本转发过程描述如下:
入节点Ingress收到目的地址为192.168.1.1/24的IP报文,首先通过FIB表检查该目的IP地址对应的Tunnel ID值是否为0x0。若是,按IP转发流程处理;若不是,则进入MPLS转发流程,依据此Tunnel ID找到对应NHLFE中指示的出接口、下一跳、出标签(假设为Y)和标签操作类型等信息,压入标签Y(Push),封装为MPLS报文,并按NHLFE指示的出接口和下一跳继续转发。
Transit收到该MPLS报文,根据标签Y查询ILM表中对应的Tunnel ID,并根据此Tunnel ID在NHLFE中找到进行下一跳转发所需要的出接口、下一跳、出标签、标签操作类型(标签交换,Swap),将标签Y换成标签X后继续转发。
倒数第二跳的Transit收到该MPLS报文,继续上述查询动作,此时由于为Egress分给它的标签值为3(特殊标签,参见上文“MPLS标签”),所以进行PHP操作,弹出标签X(Pop)并继续将IP报文转发给Egress。
Egress节点收到该IP报文,直接根据对应的IP路由表将其转发到目的地192.168.1.1/24。
报文通过LSP转发的示意图
MPLS的典型应用——MPLS VPN
MPLS VPN是指利用MPLS在IP骨干网络上构建VPN的技术。VPN的实质就是在公网上像私有专用网一样传输业务数据,这就需要在公网上建立一条隧道,让数据报文通过隧道直达目的地,从而达到私有专用网络的效果。概括地讲,MPLS VPN就是采用MPLS建立的LSP作为公网隧道来传输私网业务数据的,
MPLS VPN的基本模型主要由三种角色构成,如基本模型图所示:
CE(Customer Edge):用户网络边缘设备,有接口直接与服务提供商SP(Service Provider)网络相连,用户的VPN站点(Site)通过CE连接到SP网络。CE可以是网络设备,也可以是一台主机。通常情况下,CE“感知”不到VPN的存在,也不需要支持MPLS。
PE(Provider Edge):是服务提供商网络的边缘设备,与CE直接相连。在MPLS网络中,PE设备作为LSR,对MPLS和VPN的所有处理都发生在PE上,对PE性能要求较高。
P(Provider):服务提供商网络中的骨干设备,不与CE直接相连。在MPLS网络中,P设备作为LSR,只需要处理MPLS,不维护VPN信息。
在MPLS VPN中,VPN报文转发采用两层标签方式:外层标签与内层标签。其中外层标签在骨干网内部进行交换,指示从本端PE到对端PE的一条LSP,VPN报文利用这层LSP标签可以沿LSP到达对端PE;内层标签则用在报文从对端PE到对端CE的过程,指示报文所属的VPN实例,并依据该VPN实例的路由表,将报文转发至相应的Site。外层标签由LDP和RSVP-TE分配,内层标签由LDP分配。
MPLS VPN的基本模型
MPLS VPN充分利用了MPLS的技术优势,是目前应用最广泛的VPN技术。从用户角度来看,MPLS VPN具有如下价值:
- 一个MPLS标签对应一个指定业务的数据流(特定FEC),非常有利于不同用户业务的隔离。
- MPLS可以提供流量工程和QoS能力,用户可以借助MPLS最大限度地优化VPN网络的资源配置。
- MPLS VPN还能提供灵活的策略控制,满足不同用户的特殊要求,快速实现增值服务。
- 作者: 孙于玲
- 最近更新: 2024-11-10
- 浏览次数: 110167
- 平均得分: