雏鹰部落

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 310|回复: 0

[学习/资料] 【SPOTO思博网络】网工基础知识!MPLS《MPLS基础》

[复制链接]
发表于 2021-12-20 16:23:30 | 显示全部楼层 |阅读模式
【SPOTO思博网络】网工基础知识!MPLS《MPLS基础》

MPLS是啥?

多协议标签交换MPLS(Multiprotocol Label Switching)是一种IP(Internet Protocol)骨干网技术。MPLS在无连接的IP网络上引入面向连接的标签交换概念,将第三层路由技术和第二层交换技术相结合,充分发挥了IP路由的灵活性和二层交换的简捷性。


MPLS起源于IPv4(Internet Protocol version 4),其核心技术可扩展到多种网络协议,包括IPv6(Internet Protocol version 6)、IPX(Internet Packet Exchange)和CLNP(Connectionless Network Protocol)等。MPLS中的“Multiprotocol”指的就是支持多种网络协议。


由此可见,MPLS并不是一种业务或者应用,它实际上是一种隧道技术。这种技术不仅支持多种高层协议与业务,而且在一定程度上可以保证信息传输的安全性。


90年代中期,随着IP技术的快速发展,Internet数据海量增长。但由于硬件技术存在限制,基于最长匹配算法的IP技术必须使用软件查找路由,转发性能低下,因此IP技术的转发性能成为当时限制网络发展的瓶颈。


为了适应网络的发展,ATM(Asynchronous Transfer Mode)技术应运而生。


ATM采用定长标签,并且只需要维护比路由表规模小得多的标签表,能够提供比IP路由方式高得多的转发性能。然而,ATM协议相对复杂,且ATM网络部署成本高,这使得ATM技术很难普及。


传统的IP技术简单,且部署成本低。如何结合IP与ATM的优点成为当时热门话题。多协议标签交换技术MPLS就是在这种背景下产生的。


MPLS最初是为了提高路由器的转发速度而提出的。与传统IP路由方式相比,它在数据转发时,只在网络边缘分析IP报文头,而不用在每一跳都分析IP报文头,节约了处理时间。


随着专用集成电路ASIC(Application Specific Integrated Circuit)技术的发展,路由查找速度已经不是阻碍网络发展的瓶颈。这使得MPLS在提高转发速度方面不再具备明显的优势。但是MPLS支持多层标签和转发平面面向连接的特性,使其在VPN(Virtual Private Network)、流量工程、QoS(Quality of Service)等方面得到广泛应用。




MPLS基本结构


网络结构



MPLS网络的典型结构如图1所示。MPLS基于标签进行转发,图1中进行MPLS标签交换和报文转发的网络设备称为标签交换路由器LSR(Label Switching Router);

由LSR构成的网络区域称为MPLS域(MPLS Domain)。位于MPLS域边缘、连接其他网络的LSR称为边缘路由器LER(Label Edge Router),区域内部的LSR称为核心LSR(Core LSR)。


file:///C:/Users/SPOTO/AppData/Local/Temp/ksohtml/wps4A4B.tmp.jpg

IP报文进入MPLS网络时,MPLS入口的LER分析IP报文的内容并且为这些IP报文添加合适的标签,所有MPLS网络中的LSR根据标签转发数据。


当该IP报文离开MPLS网络时,标签由出口LER弹出。


IP报文在MPLS网络中经过的路径称为标签交换路径LSP(Label Switched Path)。LSP是一个单向路径,与数据流的方向一致。


如图,LSP的入口LER称为入节点(Ingress);

位于LSP中间的LSR称为中间节点(Transit);

LSP的出口LER称为出节点(Egress)。


一条LSP可以有0个、1个或多个中间节点,但有且只有一个入节点和一个出节点。


根据LSP的方向,MPLS报文由Ingress发往Egress,则Ingress是Transit的上游节点,Transit是Ingress的下游节点。同理,Transit是Egress上游节点,Egress是Transit的下游节点。


体系结构

MPLS的体系结构如下图所示,它由控制平面(Control Plane)和转发平面(Forwarding Plane)组成。


file:///C:/Users/SPOTO/AppData/Local/Temp/ksohtml/wps4A4C.tmp.jpg


•控制平面:负责产生和维护路由信息以及标签信息。

■路由信息表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标签报文的转发。



file:///C:/Users/SPOTO/AppData/Local/Temp/ksohtml/wps4A4D.tmp.jpg
MLSP的建立


转发等价类


MPLS将具有相同特征的报文归为一类,称为转发等价类FEC(Forwarding Equivalence Class)。


属于相同FEC的报文在转发过程中被LSR以相同方式处理。


FEC可以根据源地址、目的地址、源端口、目的端口、VPN等要素进行划分。例如,在传统的采用最长匹配算法的IP转发中,到同一条路由的所有报文就是一个转发等价类。


标签


标签(Label)是一个短而定长的、只具有本地意义的标识符,用于唯一标识一个分组所属的FEC。


在某些情况下,例如要进行负载分担,对应一个FEC可能会有多个入标签,但是一台设备上,一个标签只能代表一个FEC。


MPLS报文与普通的IP报文相比增加了MPLS标签信息,MPLS标签的长度为4个字节。MPLS标签封装在链路层和网络层之间,可以支持任意的链路层协议。MPLS标签的封装结构如图所示。


file:///C:/Users/SPOTO/AppData/Local/Temp/ksohtml/wps4A4E.tmp.jpg

标签共有4个字段:


•Label:20bit,标签值域。
•Exp:3bit,用于扩展。现在通常用做CoS(Class of Service),当设备阻塞时,优先发送优先级高的报文.
•S:1bit,栈底标识。MPLS支持多层标签,即标签嵌套。S值为1时表明为最底层标签。
•TTL:8bit,和IP报文中的TTL(Time To Live)意义相同。


标签空间


标签空间就是指标签的取值范围。标签空间划分如下:


•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)等动态信令协议的标签空间。



file:///C:/Users/SPOTO/AppData/Local/Temp/ksohtml/wps4A4F.tmp.jpg
LSP的建立


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


静态LSP的建立


静态LSP是用户通过手工为各个转发等价类分配标签而建立的。由于静态LSP各节点上不能相互感知到整个LSP的情况,因此静态LSP是一个本地的概念。


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


动态LSP的建立


动态LSP的标签发布协议


动态LSP通过标签发布协议动态建立。标签发布协议是MPLS的控制协议(也可称为信令协议),负责FEC的分类、标签的分发以及LSP的建立和维护等一系列操作。

MPLS可以使用多种标签发布协议:


•LDP
LDP(Label Distribution Protocol)是专为标签发布而制定的协议。LDP根据IGP(Interior Gateway Protocol)、BGP(Border Gateway Protocol)路由信息通过逐跳方式建立LSP。


•RSVP-TE
RSVP-TE(Resource Reservation Protocol Traffic Engineering)是对RSVP的扩展,用于建立基于约束的LSP。它拥有普通LDP LSP没有的功能,如发布带宽预留请求、带宽约束、链路颜色和显式路径等。


•MP-BGP
MP-BGP(Multiprotocol Border Gateway Protocol)是在BGP协议基础上扩展的协议。MP-BGP支持为MPLS VPN业务中私网路由和跨域VPN的标签路由分配标签。


动态LSP的基本建立过程


标签由下游LSR分配,按从下游到上游的方向分发。如图,由下游LSR在IP路由表的基础上进行FEC的划分,并根据FEC分配标签,通告给上游的LSR,以便建立标签转发表和LSP。


file:///C:/Users/SPOTO/AppData/Local/Temp/ksohtml/wps4A50.tmp.jpg


file:///C:/Users/SPOTO/AppData/Local/Temp/ksohtml/wps4A51.tmp.jpg
MPLS转发

MPLS基本转发过程


基本概念


在MPLS基本转发过程中涉及的相关概念如下:


标签操作类型包括标签压入(Push)、标签交换(Swap)和标签弹出(Pop),它们是标签转发的基本动作。


•Push:当IP报文进入MPLS域时,MPLS边界设备在报文二层首部和IP首部之间插入一个新标签;或者MPLS中间设备根据需要,在标签栈顶增加一个新的标签(即标签嵌套封装)。

•Swap:当报文在MPLS域内转发时,根据标签转发表,用下一跳分配的标签,替换MPLS报文的栈顶标签。

•Pop:当报文离开MPLS域时,将MPLS报文的标签剥掉。

在最后一跳节点,标签已经没有使用价值。


这种情况下,可以利用倒数第二跳弹出特性PHP(Penultimate Hop Popping),在倒数第二跳节点处将标签弹出,减少最后一跳的负担。最后一跳节点直接进行IP转发或者下一层标签转发。


默认情况下,设备支持PHP特性,支持PHP的Egress节点分配给倒数第二跳节点的标签值为3。


基本转发过程


以支持PHP的LSP为例,说明MPLS基本转发过程。


file:///C:/Users/SPOTO/AppData/Local/Temp/ksohtml/wps4A52.tmp.jpg

如图,MPLS标签已分发完成,建立了一条LSP,其目的地址为4.4.4.2/32。则MPLS基本转发过程如下:


1.Ingress节点收到目的地址为4.4.4.2的IP报文,压入标签Z并转发。


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


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


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


MPLS详细转发过程


基本概念


在MPLS详细转发过程中涉及的相关概念如下:


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


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

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

FEC到一组NHLFE的映射称为FTN(FEC-to-NHLFE)。通过查看FIB表中Tunnel ID值不为0x0的表项,能够获得FTN的详细信息。FTN只在Ingress存在。


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

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

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


详细转发过程


file:///C:/Users/SPOTO/AppData/Local/Temp/ksohtml/wps4A53.tmp.jpg


MPLS详细转发过程如图所示。


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

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

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


在MPLS转发过程中,FIB、ILM和NHLFE表项是通过Tunnel ID关联的。

•Ingress的处理:通过查询FIB表和NHLFE表指导报文的转发。

1.查看FIB表,根据目的IP地址找到对应的Tunnel ID。

2.根据FIB表的Tunnel ID找到对应的NHLFE表项,将FIB表项和NHLFE表项关联起来。

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

4.在IP报文中压入出标签,同时处理TTL,然后将封装好的MPLS报文发送给下一跳。


•Transit的处理:通过查询ILM表和NHLFE表指导MPLS报文的转发。

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

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

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

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


•如果标签值>=16,则用新标签替换MPLS报文中的旧标签,同时处理TTL,然后将替换完标签的MPLS报文发送给下一跳。

•如果标签值为3,则直接弹出标签,同时处理TTL,然后进行IP转发或下一层标签转发。

•Egress的处理:通过查询ILM表指导MPLS报文的转发或查询路由表指导IP报文转发。


■如果Egress收到IP报文,则查看路由表,进行IP转发。

■如果Egress收到MPLS报文,则查看ILM表获得标签操作类型,同时处理TTL。

■如果标签中的栈底标识S=1,表明该标签是栈底标签,直接进行IP转发。

■如果标签中的栈底标识S=0,表明还有下一层标签,继续进行下一层标签转发。

了解更多课程↓↓↓
进入全国网络工程师交流群 ,请扫描下方二维码↓↓↓
群里有行业大咖、实战分享、技术交流、技术咨询、企业内推等机会
若群满,请添加老杨微信(spotoa),邀你进群



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|熊猫同学技术论坛|小黑屋| 网络工程师论坛 ( 沪ICP备09076391 )

GMT+8, 2024-5-6 11:20 , Processed in 0.078280 second(s), 19 queries , Gzip On.

快速回复 返回顶部 返回列表