MPLS(Multi-Protocol Label Switching):多协议标签交换
Multi-Protocol:支持多种三层协议,如IP,IPv6,IPX等,通常处于二层和三层之间,俗称2.5层
Label:一种短的、等长的、易于处理的,不包含拓扑信息、只具有局部意义的信息内容

Switching:MPLS报文交换和转发是基于标签的。针对IP业务,IP包在进入MPLS网络时,入口的路由器分析IP包的内容并且为这些IP包选择合适的标签,然后所有MPLS网络中节点都时依据这个简短标签来做为转发依据。当该IP包最终离开MPLS网络时,标签被出口的边缘路由器分离

IP:面向无连接的控制平面,面向无连接的转发平面
ATM:面向连接的控制平面,面向连接的转发平面
MPLS:结合了两者的特点,面向无连接的控制平面,面向连接的转发平面

传统IP转发特点
1、每一跳分析IP头,效率低
2、QoS难于部署,而且效率低
3、所有路由器都要知道整个网络的所有路由

ATM的交换过程
1、面向连接,有N平方问题
2、靠链路层选路,基于VPI/LCI或标签
3、业务质量有保证,可保证实时业务

MPLS的优点:
1、以短、固定长度的标签代替IP头做为转发依据,提高转发速度
2、IP与ATM更好地结合
3、提供增值业务,同时不损害效率
4、还可用于VPN、流量工程即QoS等

为什么使用MPLS
1、MPLS结合了网络层地灵活连接和可扩展性,以及ATM地标签转发地可靠传输和QoS,支持多种标准地路由协议,如BGP,OSPF
支持多种标签生成协议,如LDP、RSVP 支持多种网络层协议,包括IPv4、IPv6、IPX等 有效解决QoS问题 具有标签转发地高性能
2、支持二层和三层地MPLS VPN
LSP本身就是公网上地隧道,用MPLS来实现VPN有天然地优势,避免了L2TP、GRE等传统VPN在配置和管理上地N平方问题
VPN的控制在PE上实现,管理和扩展非常方便 每个VPN单独构成一个独立的地址空间,即VPN之间可以重用地址 方便的控制VPN各业务之间的隔离和互通
3、支持流量工程(Traffic Engineering)

MPLS封装格式与标签

MPLS报头有32Bit(即4字节)构成,其中包括:
20Bit用作标签(Label)
3Bit的Experimental,协议中没有明确,通常用作CoS(Class of Service)
1Bit的S,用于标识是否时栈底,用来做标签的嵌套,这样可以使标签无限扩展
8Bit的TTL

MPLS包头处于IP(3层)头部前,2层头部后,不同封装类型MPLS头部所处位置不同。其中ATM/FR中的标签(VPI/VCI)目前也是MPLS协议栈的一部分

MPLS在协议中的位置

1、MPLS通常是夹在二层链路层和三层IP包头之间
2、IP包在打上MPLS包头以后还是需要有二层的包头封装
3、ATM/FR则分别采用原来包头的VPI/VCI,DLCI做标签

相关名词概念介绍
FEC:Forwarding Equivalence
Class,即转发等价类,是在转发过程中以等价的方式处理的一组数据分组,例如目的地址前缀相同的数据分组。通常对一个FEC分配相同的标签

LSP:Label Switched
Path,即标签交换通道,一个FEC的数据流,在不同的节点被赋予确定的标签,数据转发按照这些标签进行,FEC数据流所走的路径就是LSP

LSR:Label Switching Router,LSR是MPLS网络的核心交换机,提供标签交换和标签分发功能

LER:Label Switching Edge
Router,在MPLS的网络边缘,进入到MPLS网络的流量由LER分为不同的FEC,并为这些FEC请求相应的标签,它提供流量分类和标签映射、标签的移除功能

LSP的作用
1、LSP是一条有源接口和宿接口的路径,是面向连接的
2、LSP配置了Label
3、LSP配置了相关的操作
4、LSP决定了数据的出接口

LSP对数据的操作
LSP定义了三种操作:
Ingress:数据从用户设备进入MPLS网络边缘设备,数据报文要进行分装
Egress:数据从MPLS网络核心设备进入了边缘设备,MPLS标签要被剥离
Transit:数据在MPLS网络核心内从一个设备进入了另一个设备,标签要被交换

LSP的建立和结构
LSP的建立其实就是将FEC和标签进行绑定,并将这种绑定通告LSP上相邻LSR的过程,建立起相邻LSR间的标签映射关系。可以通过
1、静态标签配置,无通告过程
2、通过标签分发协议或其他协议建立

LSP的建立是逐段进行的

LSP的转发过程

1、进入网络的分组根据其特征划分成转发等价类FEC。一般根据IP地址前缀或主机地址来划分FEC。这些具有相同FEC的分组在MPLS区域中将经过相同的路径(即LSP)。LER对到来的FEC分组分配一个短而定长的标签,然后从相应的端口转发出去

2、在LSP沿途的LSR上都已建立了输入/输出标签的映射表。对于接收到的标签分组,LSR只需根据标签从表中找到相应的NHLFE,并用新的标签来替换原来的标签,然后对标签分组进行转发

3、在MPLS域的出口,标签被剥离,还原成标准的IP报文

MPLS在网络入口处指定特定分组的FEC,后续路由器只需简单的转发即可,较常规的网络层转发而言要简单的多,从而提高了转发速度

LSP的建立方式
1、静态LSP:用户通过手工方式为各个转发等价类分配标签建立转发隧道
2、动态LSP:通过标签发布协议动态建立转发隧道

静态LSP特点:
1、不使用标签发布协议,不需要交互控制报文,资源消耗比较小
2、通过静态方式建立的LSP不能根据网络拓扑变化动态调整,需要管理员干预

静态LSP适用于拓扑结构简单并且稳定的网络

静态LSP配置步骤:

1、在Ingress节点配置此LSP的目的地址、下一跳和出标签的值

2、在Transit节点配置此LSP的入接口、与上一节点出标签相等的入标签的值、对应的下一跳和出标签的值

3、在Egress配置此LSP的入接口及与上一节点出标签相等的入标签的值

通过MPLS信令建立LSP

LDP(Label Distribution
Protocol)协议是MPLS协议中专门用来实现标签分发的协议。LDP要利用路由转发表中信息来去欸的那个如何进行数据转发,而路由转发表中的信息一般是通过IGP、BGP等路由协议收集的。但LDP并不直接和各种路由协议有关联,只是间接使用路由信息

LDP并不是唯一的标签分发协议,对BGP、RSVP等已有协议进行扩展也可以支持MPLS标签的分发

MPLS的一些应用也需要对某些路由协议进行扩展,如基于MPLS的VPN应用就需要对BGP协议进行扩展,基于MPLS的流量工程需要对OSPF或IS-IS协议进行扩展

MPLS的实际用用
1、点到点的虚拟共享专线业务
2、虚拟共享局域网业务

在LDP协议中,存在四种LDP消息:
发现消息:用于通告和维护网络中LSR的存在
会话消息:用于,建立、维护和结束LDP对等体之间的额会话连接
通告消息:用于创建、改变和删除特定FEC-标签绑定
通知消息:用于提供消息通告和差错通知

通过LDP协议动态产生LSP的默认规律

对于直连的环回接口的32位主机路由,做为Egress产生LSP
对于非直连的32位主机路由,做为Ingress和Transit产生LSP

LDP协议的工作机制
1、相邻的LDP路由器会建立邻居

接口发送LDP的Hello报文,目的IP地址为224.0.0.2,使用UDP的646端口,以默认5s为周期发送,自动建立邻居并维护邻居关系,邻居失效时间为15s

2、Hello报文中携带传输地址,默认传输地址为LSR-ID

3、建立邻居后,传输地址大的一方向传输地址小的乙方发起TCP连接,使用TCP端口号646,进行LDP会话的建立。注意,LDP会话是建立在传输地址之间的

4、发送初始化消息进行参数协商,协商成功后发送Keepalive报文,会话建立成功

5、发送地址消息和标签映射消息,交换标签,构建LSP

注意,LDP的邻居关系是通过Hello报文维护的,LDP的会话是通过Keepalive报文维护的

标签的分配和管理

标签分配方式:
DoD:即Downstream On Demand,下游按需标签分发

DU:Downstream Unsolicited,下游自主标签分发,主流方式
上游与下游:在一条LSP上,沿数据包传送的方向,相邻的LSR分别叫上游LSR和下游LSR。下游LSR是路由的始发者
下游主动向上游发出标记映射消息,主动发送的前提是:
1、发现自己有接口路由,并且接口已经up
2、收到下游到某个路由的标签

标签控制方式:
Ordered:有序方式标签控制
除非LSR时路由的始发节点,否则LSR必须等收到下一跳的标签映射才能向上游发出标签映射消息

Independent:独立方式标签控制,主流方式
LSR可以向上游发出标签映射,而不必等待来自LSR下一跳的标签映射消息

标签保留方式:
Liberal retention mode:自由方式
保留来自邻居的所有发送来的标签,主流方式
优点:当IP路由收敛、下一跳改变时减少了LSP的收敛时间
缺点:需要更多的内存和标签空间

Conservative retention mode:保守方式
只保留来自下一跳邻居的标签,丢弃所有非下一跳邻居发来的标签
优点:节省内存和标签空间
缺点:当IP路由收敛、下一跳改变时LSP收敛慢

标签转发表中的IN和OUT,是相对于标签转发而言的,不是相对于标签分配的IN和OUT

MPLS标签分配协议创建的标签转发表中的标签分配可以站在不同的角度去理解。

1、相对于协议创建标签表时标签分配而言:
1)入标签是我分给别人的,出标签是别人分给我的   2)我分配的标签是给别人用的,我不会添加到报文中
2、相关数据转发标签分配而言:
)入标签是我自己的标签,来匹配报文中的标签;出标签是我分配给数据的标签,是让别人来匹配的,可以认为是我分配的标签; 2)出标签可以相同,入标签不能相同;
对于一台设备具体如下:

对于一台设备的标签转发表(全局标签空间)来说:

所有的入标签( 一定不同)

对于相同的路由(下一跳也相同),出标签(一定相同)

对于不同的路由(但下一跳相同),出标签(一定不同)

对于不同的路由(下一跳也不同),出标签(可能相同)

对于同一条路由,入标签和出标签(可能相同)的标签转发表来说,所有的入标签一定不同;对于相同的路由(下一跳也相同),出标签可能相同;对于不同的路由(但下一跳相同),出标签一定不同;对于不同的路由(下一跳也不同),出标签一定不同;对于同一条路由,入标签和出标签可能相同

PHP:倒数第二跳弹出
Egress
LSR收到的仍旧是含有标签的MPLS报文,这个报文应该送交MPLS模块处理,而此时MPLS模块不需要标签转发,能做的只是去掉标签,然后送交IP层。其实对于Egress
LSR,处理MPLS报文是没有意义的,最好能够保证它直接收到的就是IP报文。这就需要在Egress
LSR的上游(倒数第二跳)就把标签给弹出来。但关键问题是:上游设备如何知道自己是倒数第二跳呢?其实很简单,在倒数第一跳为其分配标签时做一下特殊说明即可(分配一个特殊的标签3)

MPLS路由环路的预防与检测
路由环路的预防:
LSP的建立是依赖IP路由的,环路的预防也由IP处理
路由环路的检测:
在标签转发过程中,MPLS报文头中的TTL减一,但IP报文头中的TTL只在到达Egress LSR后才减一

VPN中的角色
CE:Custom Edge,直接与服务提供商相连的用户设备
PE:Provider Edge Router:指骨干网上的边缘路由器,与CE相连,主要负责VPN业务的接入
P:Provider Router,指骨干网上的核心路由器,主要完成路由和快速转发功能
由于网络规模不同,网络中可能不存在P路由器

什么是VPN?
VPN:虚拟私有网络
在公共网络上实现私有网络通信
VPN技术需要通过隧道来解决,隧道的本质是对私有报文的重新封装,利用封装后的报头执行转发
LSP看起来是提高报文的转发效率,但本质上也是一种隧道技术
单纯的MPLS技术目前已经失去价值,因为现在的硬件都是并行查表,专用芯片,效率极高
MPLS目前更多的是利用它的隧道能力,支持MPLS VPN,VPLS,MPLS-TE等业务

MPLS VPN
PE:运营商边缘设备,用于私网路由的接入
CE:用户边缘设备

1、PE如果接入多个私有网络,而私有内网路由冲突,导致PE无法正确处理
PE本地私网路由冲突问题如何解决?
@site独享PE,通过不同的PE解决PE上私网路由冲突的问题

@site共享PE,在PE上创建虚拟的路由表和CE进行私网路由的学习。每张虚拟路由表运行独立的路由协议和独立的地址空间相互隔离避免路由冲突。虚拟的路由表绑定一组接口,运行独立的路由协议,称为VPN-Instance
@PE需要维护公网路由信息,也要维护不同vpn-instance上的私网路由信息

通过共享PE连接CE的时候,vpn-instance解决本地路由冲突的问题

问题一:将VPN实例中的路由通过引入到BGP协议时,BGP无法区分相同私网路由

解决方法:将VPN实例的路由引入到BGP时,为这些路由添加RD,并和IPv4路由的前缀组合起来,形成VPNv4格式的路由

VPNv4路由,即添加了RD参数的IPv4路由
MP-BGP:多协议BGP,即可以传递多种不同格式路由的BGP协议

IPv4地址族格式:192.168.1.0/24
VPNv4地址族格式:1:2 192.168.1.0/24

RD:即路由区分符,每个VPN-instance只能配置一个RD,在同一台PE上不同的VPN-instance配置不同的RD

RD的作用:
1、区分不同VPN-instance中相同的私网路由
2、PE收到VPNv4路由时,根据RD可以判断VPNv4路由是否来自同一个VPN-instance

RD如何规划:
1、所有的VPN-instance配置全网唯一的RD
2、同一个VPN的不同VPN-instance配置相同的RD,不同VPN的不同VPN-instance不能配置相同的RD

问题二:如何将IPv4私网路由转化成VPNv4路由

步骤

1、将VPN实例中的IGP路由通过import-route命令引入到相同VPN实例的BGP路由中

Instance A1:IPv4 IGP路由 -----import-route---------> Instance A1:BGP路由

2、将VPN实例的BGP路由自动转化成MP-BGP VPNv4路由

Instance A1:BGP路由------------------自动生成------->MP-BGP VPNv4路由

问题三:当PE收到VPNv4路由时,如何将VPNv4路由引入到本地的VPN实例中

通过RT解决VPNv4路由交换的问题,事先给VPN-instance配置

export rt属性:VPNv4路由发送时只携带该属性
import rt属性:表示该VPN-instance对哪些VPNv4路由感兴趣

如果export rt和import rt只要有一个相同,则可以引入到该VPN-instance中

RT的本质时BGP的团体属性,在MPLS VPN中取了个新的名字

问题四:私网路由传递的问题解决后,私网报文如果直接发送到公网,肯定不通,如何解决

解决方法:用MPLS的LSP解决,即隧道技术,将私网报文迭代到该私网路由的下一跳地址的LSP中进行发送

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信