MPLS VPN详解

了解MPLS VPN之前,要先了解一下MPLS。

了解MPLS之前,先回顾一下基于MAC地址的交换和基于IP地址的路由转发。

(上篇主要是介绍基于mac地址的交换、基于IP地址的路由转发、MPLS详解)

(下篇主要是MPLS VPN的网络结构、组成原理、接入方式、为什么要用MPLS VPN、优势及应用场景)

一、传统基于mac地址的交换和基于IP地址的路由转发

1.1、基于mac地址的交换(二层)

交换层面,也就是基于发arp学习mac地址,形成mac地址和接口的对照表,然后根据mac地址表逐跳进行交换。

1.2、基于IP地址的路由转发(三层)

1、路由器收到数据包的时候,先解封装,还原成数据帧,此时路由器查看数据包头的mac地址的目的地址,如果是自己接收数据的接口地址,那么继续解封装,如果不是,则丢弃。

2、路由器继续解封装到源IP和目的IP,路由器分析目的IP不是自己接口的IP,那么路由器会将这个目的IP拿到自己的路由表中,进行最长匹配原则,如果匹配不上,则丢弃。

3、路由表如果匹配上了,就会根据路由表往相应的接口去送,此时送之前要把三层的数据包压上二层的帧头,如果是以太网的话,得要下一跳的目的mac,没有吓一跳的目的mac,要发arp请求目的mac,然后进行封装,再转发到下一个路由器。

传统的IP路由也是逐跳转发。

1.3、三层转发和二层交换有什么不同

三层说是转发,通过三层头部(IP)进行相关表项的查找进行转发。

二层说是交换,是针对二层头部(mac)相关表项的查找进行交换。

1.4、二层交换和三层转发哪个快

肯定是交换快,因为交换机是直接将0101转发成帧,只需要通过一步进行交换,不用解封装。

路由器进行解封装的时候,先解成帧,对比目的mac,再解成IP,查找路由表,最后再根据表项转发,再封装二层mac,最后转发,是比较消耗资源的。

所以二层要比三层快。

二、MPLS详解

2.1、MPLS全称 Multi-protocol label switching 多协议标签交换

多协议:指支持三层协议,如果IPv4、IPv6、IPX等;

标签交换:在所承载的报文前加上标签栈,基于标签做转发。

2.2、MPLS的封装结构

MPLS数据IP头和MAC头中间,数据2.5层协议。

2.3、MPLS简介

MPLS是一种新的转发机制,数据在MPLS网络中是以标签信息进行转发;

MPLS标签依据IP路由及CEF交换。

2.4、MPLS原理介绍

1、路由器运行IGP路由协议,维护RIB表及CEF表,所有路由器运行OSPF路由,只看图中30.0.0.0/24这个网段。

2、路由器运行标签分发协议LDP,维护LIB表;LDP维护自己的邻居关系,且为所有的路由前缀绑一个本地标签。

如图中,将R3将本地的30.0.0.0/24的路由前缀捆绑标签30且通告给自己的LDP邻居R2;

R2为30.0.0.0/24的前缀添加本地标签20,且在自己的LIB表中记录R3为30.0.0.0/24分配的标签30,同时R2将为30.0.0.0/24分配的本地标签20通告给R1;

R1为30.0.0.0/24分配的本地标签是10,且记录R2通告给R1的标签信息。

3、路由器更新CEF表时,同时维护LFIB表,LFIB表是由LIB表和CEF表共同组成。

2.5、MPLS架构

控制层面:交换三层路由信息(如OSPF/ISIS/BGP等)及标签(LDP)

IGP填充RIB表

LDP为前缀填充标签形成LIB表

控制层面关键点:

routing protocol

ip routing table (RIB)

label exchange protocol(LDP)

数据层面:基于标签进行数据的转发

控制层面关键点:

ip forwording table (FIB)

label forwarding table (LFIB)

原理解析:IGP协议产生RIB表,LDP协议产生LIB表,这样LDP为路由前缀加上标签,形成LFIB表(LDP会产生本地的LIB,然后通过LDP通告给自己的邻居,这样就形成LFIB表)。

2.6、MPLS网络中的设备角色

MPLS网络中的设备角色,只是为了区别不同的设备角色,主要分为三种:

1、入站LSR;(label seitch routing)

2、出站LSR;

3、链路中的LSR。

结合上面图看,R1就是入站LSR,R2就是链路中的LSR,R3就是出站LSR。

2.7、MPLS优势总结

* 采用MPLS,可避免IP路由的逐跳转发情况,减少对数据包的深入分析、借助标签建立二层的快速转发路径,使得数据沿着一条预先建立的路径快速的转发;

* 数据包再进入MPLS网络的入口路由器上被进行一次三层查找,而在此后的LSR只是进行简单的标签交换动作,无需进一步分析三层信息;

* 每个LSR必须在数据转发之前建立好LIB(标签信息库),及LFIB(标签转发信息库)。当LSR收到一个标签数据帧时,将数据帧中的标签在LFIB表中进行查找,再根据LFIB表中指示的相关动作对标签进行压入、弹出、交换、移除等动作。

三、MPLS VPN详解

3.1、MPLS VPN的网络结构

P:(Provider)运营商网络中除PE之外的运营商网络设备

PE:(Provider Edge)运营商网络与客户(用户)网络相连的边缘网络设备

CE:(Customer Edge)客户(用户)网络与运营商网络相连的边缘网络设备

运营商只是一个统称,不一定非要是三大运营商。

3.2、MPLS VPN的接入方式

接入方式主要说的是CE和PE之间连接方式。

1、直接链路接入(直连)――POS/GE/FE等接口直连接入;

2、VLAN TRUNK方式接入;

3、二层隧道接入――L2TP/PPPoE等;

4、三层隧道接入――GRE/IPsec等;

接入协议支持IGP或BGP

IGP支持静态路由,RIP、OSPF、ISIS等。

BGP支持EBGP。

IGP和BGP唯一区别是:IGP是需要将IPv4路由重分布到MP-BGP中,但是EBGP是直接带有重分布功能(静态写入VRF中)。

3.3、MPLS VPN的组成原理

1、MPLS VPN的网络架构是由运营商来完成的。在这种架构中由运营商向用户提供VPN服务,用户是感知不到运营商的网络的存在的。

2、对于P设备来说,不知道VPN的存在,因为P设备只负责MPLS内部的数据传输。只要支持MPLS协议即可。

3、所有面向用户网络的VPN的构建、连接和管理都是在PE上进行的。

4、从PE的视角看用户的网络(CE),CE其实就是一个站点(site),一个CE可以包含多个site,一个或多个site组成一个VPN。

5、CE与CE之间的通信,通过中间运营商的PE与PE之间的VPN隧道来完成。

6、任何两个没有共同site的VPN都可以使用重叠的地址空间,这些都需要依赖于PE上的VRF。

3.4、MPLS VPN中的VRF、RD、RT、MP-iBGP、vpnv4路由、双标签(内层和外层)

1、VRF:虚拟路由转发(virtual routing forwarding),是一种VPN路由转发的实例,每一个独立的VRF都有一张独立路由表。虚拟说明是在一台路由器上虚拟出多个路由表,每个表之间相互隔离,其实一个VRF实例就可以当作一台路由器,只不过是在一台真实路由器上虚拟出来的。

2、RD:路由区分符(route distinguish),解决地址冲突问题。其实就是在IPv4的加上64bit的字段,保证在IPv4地址进入PE后保持全局唯一性。

3、RT:路由目标(route target),是BGP的扩展团体属性,分为export target和import target,可以理解为是VRF路由表的大门,路由出携带export属性,路由进对比import属性。

4、MP-iBGP:PE和PE之间交换路由信息以及私网标签分配,该私网标签是随机生成(控制层面的私网标签)。

5、vpnv4路由:RD+IPv4路由=vpnv4路由。

6、双标签:均是在数据转发层面打上的内层和外层标签,内层标签主要是区分数据包是哪个VRF,外层标签主要是数据包进行域内转发(外层标签与下一跳出口PE路由器的地址紧密相联)。

3.5、MPLS VPN的原理(控制层面和转发层面)

LDP协议:在PE-P、P-P之间分发外层标签,建立从入口PE到出口PE之间的隧道LSP。

MP-BGP协议:在入口PE和出口PE交换VPN路由,用于建立VPN标签。

PE:接收用户IP报文,识别VPN,选择VPN相应的VRF表,找到VPN下一跳出口,加VPN内层标签,找到下一跳PE的出口,加外层标签。

重点:MPLS隧道包含两层标签,外层标签为隧道LSP标签,内层标签为VPN标签。

路由更新(控制层面):当CE到PE之间可以用IGP或者EBGP通告纯IPv4路由。当PE vrf接收到路由以后,IPv4路由被注入到vrf路由表中,IPv4路由被重分布到MP-BGP中,同时RD和RT(export)被添加上,骨干网络PE和PE之间通过MP-IBGP通告带有标签和RT的vpnv4路由(包含IPv4地址、路由区分符RD、路由目标RT、VPN标签和下一跳PE地址),到达对端PE时,通过对端PE的RT(import)知道应该把路由注入到哪个VRF中,然后对端PE将RD、RT、标签等属性移除,将ipv4路由通告给对端CE。

数据转发(数据层面):当CE路由器将一个VPN分组转发给入口PE路由器后,PE路由器查找该VPN对应的VRF,从VRF中得到一个VPN标签和下一跳出口PE路由器的地址,VPN标签作为内层标签打在VPN分组上,根据下一跳出口PE路由器的地址可以在全局路由表中查出到达该PE路由器应打上的域内路由的标签,即外层标签,也是VPN分组被打上了两层标签。主干的P路由器根据外层标签转发VPN分组,在最后一个P路由器(注意是P路由器,不是PE)处,外层标签弹出,VPN分组只剩下内层标签(此过程被称作次末级弹出机制),接着VPN分组被发往出口PE路由器上。出口PE路由器根据内层标签查找到相应的出口后,将VPN分组上的内层标签删除,将不含标签的VPN分组转发给正确的CE路由器,CE路由器根据自己的路由表将分组转发到正确的目的地。


重点区分:

1、PE上两张路由表:VRF路由表和全局路由表

PE上分别存放着VRF路由表和全局路由表,VRF路由表中存放VPN路由,全局路由表中存放着运营商的域内路由。

2、外层标签交换

所有PE路由器和P路由器都运行主干网的域内路由(OSPF或者ISIS等),生成的路由表将触发主干网中LSP的建立(拓扑驱动方式),通过LDP或RSVP等信令协议建立LSP,产生的标签转发表用于VPN分组外层标签的交换(也就说在数据转发时,在PE收到CE的数据报文时,VRF为数据报文打上内层VPN标签和获取下一跳出口PE路由器的地址,根据这个地址进行外层标签的转发,因此这个下一跳地址是连接域内路由和VPN路由的纽带)。


3.6、 MPLS VPN分析

3.6.1、MPLS VPN的实现目标

1、隧道在PE和PE之间建立,用户不需要维护自己的VPN隧道;

2、VPN隧道的部署和路由发布变为动态实现。

3.6.2、MPLS VPN解决的问题

1、提供一种动态建立隧道的方式;

2、解决不同VPN共享相同地址空间的问题。

3.6.3、用BGP传递VPN路由的好处

VPN路由信息可以直接在PE之间传递,P路由器不包含任何VPN路由信息。

3.7、MPLS VPN应用场景

1、三大运营商的构建的IP承载网:例如中国联通的A网、B网等都是采用MPLS VPN的架构承载大客户业务、固网传输业务、宝视通、视频监控、114/116业务、自营业务、互联网业务等。

2、大型OTT、云厂商的广域网均采用MPLS VPN架构,例如:阿里云的广域网。

3、国企等政府部门,不同的政府部门有着不同的业务系统,各系统之间的数据都是相互隔离的,同时各个业务系统都存在互访的需求,所以使用MPLS VPN架构技术实现隔离和互访;

4、二级ISP运营商、二级IDC运营商的城域网均采用MPLS VPN架构。

相关推荐
JH307325 分钟前
Oracle与MySQL中CONCAT()函数的使用差异
数据库·mysql·oracle
蓝染-惣右介27 分钟前
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
java·数据库·tomcat·mybatis
冷心笑看丽美人28 分钟前
Spring框架特性及包下载(Java EE 学习笔记04)
数据库
ZZZCY200337 分钟前
华为ENSP--IP编址及静态路由配置
网络·华为
EasyCVR1 小时前
私有化部署视频平台EasyCVR宇视设备视频平台如何构建视频联网平台及升级视频转码业务?
大数据·网络·音视频·h.265
hummhumm1 小时前
第 22 章 - Go语言 测试与基准测试
java·大数据·开发语言·前端·python·golang·log4j
hgdlip1 小时前
主IP地址与从IP地址:深入解析与应用探讨
网络·网络协议·tcp/ip
武子康1 小时前
Java-07 深入浅出 MyBatis - 一对多模型 SqlMapConfig 与 Mapper 详细讲解测试
java·开发语言·数据库·sql·mybatis·springboot
珹洺2 小时前
C语言数据结构——详细讲解 双链表
c语言·开发语言·网络·数据结构·c++·算法·leetcode
科技象限2 小时前
电脑禁用U盘的四种简单方法(电脑怎么阻止u盘使用)
大数据·网络·电脑