MPLS基础---通俗易懂
目录
前言
一、基本概述
1.什么是MPLS
2.相关概念
二、工作原理
1.LDP
2.会话建立工程
三、转发过程
四、MPLS扩展内容
前言
为什么出现MPLS?
①硬件限制
②传统IP转发:每一跳都要去分析IP报文,效率低, 需要经过CPU进行处理,进行转发的时候需要匹配路由,并且需要查找最长掩码的路由, 所有路由器都需要知道整个网络的路由③ATM昂贵
一、基本概述
1.什么是MPLS
MPLS(Multiprotocol Label Switching)是一种利用标签来指导数据报文高速转发的协议,是多协议标签交换MPLS的一种控制协议,负责转发等价类FEC(Forwarding Equivalence Class)的分类、标签的分配以及标签交换路径LSP(Label Switched Path)的建立和维护等操作。
MPLS协议运行于数据链路层与网络层之间,也就是常说的2.5层
MPLS的网络架构
MPLS的体系结构
分为控制平面与转发平面
控制平面:负责标签的分配、LSP的建立等工作
转发平面:负责数据包的转发(依据标签表)
流程:
2.相关概念
角色
MPLS网络的基本组成单元是标签交换路由器LSR(Label Switching Router):
LER: 位于MPLS域边缘、连接其它网络的LSR称为边沿路由器LER(Label Edge Router),在MPLS域边缘负责标签入栈或标签出栈
LSR: 区域内部的LSR称为核心LSR(Core LSR),在MPLS域内进行标签交换
标签动作
Push(压入):位于MPLS域的边缘当外部路由需要进入MPLS域为此路由压入标签
Swap(交换):位于MPLS域内进行转发时经过每台核心LSR进行交换标签
Pop(弹出):位于MPLS域的边缘当要离开MPLS域需要弹出标签,在倒数第二跳弹出标签
在最后一跳节点,标签已经没有使用价值。这种情况下,可以利用倒数第二跳弹出特性PHP(Penultimate Hop Popping),在倒数第二跳节点处将标签弹出,最后一台设备直接根据IP转发
FEC
MPLS将具有相同特征的报头归为一类,叫做一个FEC,并且将属于用一个FEC打上相同的MPLS标签
LSP
启用了MPLS协议的路由器从源到目标转发的途径
MPLS标签
MPLS标签长度为4个字节,封装结构如下图所示:
-
Label:20bit,标签值域。其中0-15是系统保留
-
TC:3bit,流量等级(Traffic Class),又名Exp。通常用做CoS(Class of Service,服务分类)
-
S:1bit,栈底标识(Bottom of Stack)---IP报头之前的最后一个标签。MPLS支持多层标签,即标签嵌套。BoS值为1时表明为最底层标签,为0时表示不为最低层标签
-
TTL:8bit,生存时间用于防环
MPLS标签封装在链路层和网络层之间,它在报文分组中的封装位置如下图所示。
MPLS多层标签:靠近二层(数据链路层)的为栈顶标签,靠近网络层的为栈底标签。采用后进先出的标签处理形式,在报文分组中的封装位置如下图所示
上游与下游
-
上游:以指定的LSR为视角,根据数据传送的方向,所有往本LSR发送MPLS报文的LSR都可以称为上游LSR。
-
下游:以指定的LSR为视角,根据数据传送的方向,本LSR将MPLS报文发送到的所有下一跳LSR都可以称为下游LSR。
按照数据和标签转发方向,看设备C往设备A发送标签,设备C的所处方向为下游,而设备A往设备C发送数据包,设备A的所处方向为上游
二、工作原理
1.LDP
LDP是MPLS体系中非常重要的一种标签发布控制协议,负责FEC的分类、MPLS标签分配以及LSP的动态建立和维护等操作,规定了标签分发过程中的各种消息以及相关处理过程。通过LDP协议,LSR可以把网络层的信息直接映射到数据链路层的LSP交换路径上,实现在网络层动态建立LSP。
四种会话类型
- 发现(Discovery)消息:用于通告和维护网络中LSR的存在;
- 会话(Session)消息:用于建立、维护和终止LDP对等体之间的会话,包括Initialization消息、Keepalive消息等;
- 通告(Advertisement)消息:用于创建、改变和删除FEC的标签映射;
- 通知(Notification)消息:用于提供建议性的消息和差错通知。
为保证LDP消息的可靠发送,除了发现消息使用UDP外,LDP的会话消息、通告消息和通知消息都使用TCP传输。
2.会话建立工程
①LSRA、B互相发送hello消息(携带传输地址),双方使用传输地址建立LDP会话,传输地址大的作为主动方 ,等待TCP连接
②TCP建立成功之后,由主动方发送initialization消息,协商建立LDP会话的相关参数,包括LDP协议版本、标签分发方式、Keepalive保持定时器的值、最大PDU长度和标签空间等。
③当被动方收到initialization消息之后,若不能接受其消息的参数则发送notification消息终止LDP的会话建立;若能,则发送initialization消息,同时发送keepalive消息
④当主动方收到initialization消息之后,若,若不能接受其消息的参数则发送notification消息终止LDP的会话建立;若能,则发送keepalive消息
⑤双方接收到keepalive消息之后建立LDP会话
三、MPLS报文转发
基本术语:
tunnel ID:运行MPLS系统自动会为各隧道分配一个tunnelID,本地有效
FIB:(Forwarding Information Base,转发信息表)通过IP网络中指导IP报文转发,从RIB(路由信息表)优选出来的路由
LIB:(Label Information Base,标签信息表)每个标签与对应FEC的映射关系
LFIB:(Label Forwarding Information Base,标签转发信息表)用于指导MPLS的报文转发,包括下一跳出接口等
NHLFE:(Next Hop Lable Forwarding Entry,下一跳标签转发表项)用于指导MPLS的报文转发,包括tunnelID等比LFIB更为详细的信息
ILM:(Incomming Lable Map,入标签映射)ILM是入标签与NHLFE的映射,它使得本地设备的入标签和出标签、Tunnel ID建立对应的对应关系。ILM在Transit节点的作用是将标签和NHLFE绑定。通过标签索引ILM表,就相当于使用目的IP地址查询FIB,能够得到所有的标签转发信息。
转发流程:
详细过程:(此情况支持PHP)
①当ingress收到目的地址为192.168.1.1/24。
首先查看其tunnel ID值若为0x0,则通过FIB表直接通过IP地址转发;若不为0x0,则通过NHLFE查看相关的信息进行打标签(Y)转发
②Transit收到之后,根据标签Y查看ILM中对应的tunnel-ID,在NHLFE找到对应的信息之后进行标签(X)的转发
③当到达倒数第二跳设备之后,继续进行上述的动作,egress(最后一跳设备)会为其分配标签3,(需要弹出标签转发到自己),所以进行PHP。弹出标签(X)之后转发
④Egress设备收到之后,查看FIB根据路由表直接转发到目的地
四、MPLS扩展内容
类别 | 方式 | 概念描述 |
---|---|---|
标签发布方式 | 下游按需 (DoD) | 下游标签交换路由器(LSR)仅在收到上游的标签请求消息后,才会分发标签映射。 |
下游自主 (DU) | 下游标签交换路由器(LSR)无需等待上游的标签请求消息,主动分发标签映射。 | |
标签分配控制方式 | 独立 | 标签交换路由器(LSR)不依赖下游设备的标签分配,独立向上游分发标签映射。 |
有序 | 标签交换路由器(LSR)仅在收到下游设备的标签映射后,才会向上游分发标签映射。 | |
标签保持方式 | 自由 | 标签交换路由器(LSR)保留从所有邻居LSR收到的标签映射,无论其是否为下一跳。 |
保守 | 标签交换路由器(LSR)仅保留从作为下一跳的邻居LSR收到的标签映射,其余丢弃。 |