了解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架构。