企业广域网 · 云网互联 · 深圳与香港双节点服务 深圳 0755-82267798 香港 +852 3110 6188 简 繁 EN
世纪网安 · 深圳服务器托管与 SD-WAN 组网

MPLS VPN技术详解

阅读 1938 来源:世纪网安

这里的MPLS VPN,应该是指MPLS L3 VPN

 

VPN:虚拟专用网络。用户不需要专用的物理线路,而是在公共基础设施上进行私有网络服务的传播,从而达到专用网络的功能。

L3 VPN:一种VPN实现方式,它构建在L3网络之上,传输的是L3packet。

MPLS L3 VPN:L3VPN构建在MPLS网络之上。

peer-to-peer模式的实现,

控制简单,成本低,支持IP地址重叠

1 MPLS VPN模型

 

 

PE1,PE2,P,一起构成的MPLS 网络,与PE直接相连的是CE

 

CE:(Customer EdgeRouter,用户网络边缘路由器)设备直接与服务提供商网络相连

 

感知不到“VPN”的存在,

主要功能就是将VPN客户的路由通告给PE,以及从PE学习同一个VPN下其他站点的路由

PE:(Provider EdgeRouter,网络边缘路由器)设备与用户的CE直接相连,还连接P路由器,

 

负责VPN业务接入,处理VPN-IPV4路由

使用VRF对VPN客户进行隔离,

通过与客户设备CE进行路由协议,以便获取客户路由,并将路由生成VPNv4前缀放入MPLS VPN骨干网传递到对端PE

P:(Provider Router骨干网核心路由器):与PE或其他的P相连

 

负责快速转发数据。

不知道VPN客户网络,以及客户的路由。只负责在骨干网内运载标签数据

PE之间,是通过MPLSTunnel(LSP)通讯的。是通过MP-BGP协议传递路由信息

 

CE-PE之间,是两个路由器之间普通的交流,可以是IGP,如:OSPF,EIGRP,可以是BGP,也可以配置静态路由。

 

以下对概念的讲解是在此模型的基础上的

 

2 基本概念:

 

a,VRF(Virtual Router Forwarding):

 

MPLS VPN不同于其他VPN,有一个很大的特点是,支持不同VPN中IP地址的重叠,

 

 

 

PE1 是连着VPNA和VPNB ,且CE1 ,CE3 的IP地址相同都是10.0.0.1,那么目的地是10.0.0.1的网络流量到达PE1,PE1怎么区分该网络流量转发CE 1还是CE3呢?

 

VRF

 

PE路由器上每一个VPN都有一个VRF,每一个VRF,可看作是虚拟的路由器,包括:

 

一张独立的路由表,包括独立的地址空间

一组归属于这个VRF的接口的集合,

一组只用于本VRF的路由协议

因此PE1对于VPNA和VPNB都分别对应一个VRF,到达PE1的网络流量只需要先决定到了那个VRF里,到了每个VRF里后,IP地址为10.0.0.1就只有一个了,就能知道是转发到CE1还是CE3了

 

b MP-BGP(MultiProtocol-BGP)

 

 

BGP-4的多协议扩展,原本的BGP协议只能管理IPV4的信息,这个能支持如ipv6这样的其他协议,本质还是一个BGP。

在MPLSL3 VPN的场景下,本质上就是一个iBGP

MP-BGP session建立在PE1和PE2之间。

PE2通过这个MP-BGPsession将CE4的路由传递给PE1。

这里有两个问题?

 

1.PE1和PE2之间就一个MP-BGP session,VPNA和VPNB都需要通过这个session来传递各自的路由。如果VPNA和VPNB中的路由的目的地址是一样的(像上面提到过的那样),那session的对端怎么区分相同的地址?

2.就一个BGPsession,对端的PE怎么知道传递过来的路由是来自哪个VPN,又要写入到自己的哪个VRF table中?

c RD(Route-Distinguisher)

 

为解决第一问题:MP-BGP协议专门为MPLS L3 VPN指定了VPNv4前缀。那么VPNv4是什么?

 

 

 

 

VPNv4前缀有12字节(96bits)就是在4字节的IPv4地址之前,增加了8个字节的标识符,增加的8个字节叫做RD(RouteDistinguisher)。格式就是上面那样。

 

RD(Route-Distinguisher)

 

格式:Type=0,AdministratorSubfield=iBGP AS number,Assigned Number Subfield=每个VPN唯一的编号。这是比价常用的

 

            Type=0,AdministratorSubfield=IP-Address,Assigned Number Subfield=每个VPN唯一的编号。

 

功能:与32bits的IPv4前缀一起构成96bits的VPNv4前缀

 

           若不同的VPN用户,存在相同的IPv4地址空间,可通过设置不同的RD值,来保证前缀的唯一性

 

本质:就是一个数字,不包含了实际的信息,区分相同IPv4前缀的路由,保证BGP的进程不会认为这些路由相同

 

对于第一个问题,10.0.0.1这个路由信息,若想传到VPNA,就IP前加VPNA对应的RD,若想传到VPNB,就IP前加VPNB对应的RD,这样地址就可以在MP-BGP session中区别出来了

 

VPNA: RD1:1     IPv410.0.0.1/24     VPNv4    1:1:10.0.0.1/24

 

VPNB: RD2:2     IPv410.0.0.1/24     VPNv4    2:2:10.0.0.1/24

 

d RT(Route Target)

 

本质:每个VRF表达自己的路由输出和输出方式,主要用于控制VPN路由的发布和安装策略。

 

属性:import和export

 

            前者import属性表示了我需要的路由属性,后者export属性表示我发出的路由的属性。

 

            当PE发布路由时,将使用路由所属VRF的RT export规则,直接发送给其他的PE设备。

 

            对端PE接收路由时,首先接收所有的路由,并根据每个VRF配置的RTimport规则进行检查,如果与路由中的RT属性match,则将该路由加入到相应的VRF中。

 

 

CE1: 我发的路由 RT是101:101,我也只接收 RT是100:100

 

CE2:我发的路由RT是100:100,我也只接收RT是101:101

 

CE3:我发的路由 RT是201:201,我也只接收 RT是200:200

 

CE4:我发的路由 RT是200:200,我也只接收 RT是201:201

 

CE1发出的路由只能由CE2接收,CE2发出的路由只能由CE1接收,这样CE1和CE2都在一个VPN里,实现互访

同理CE3和CE4也在一个VPN里,实现互访

 

RT和RD有着同样的结构,为什么不用RD来区分VPN(即用RD实现RT功能)?

 

分开定义有分开定义的灵活性。

当一条路由需要传递到多个VPN时,如果没有RT,就需要创建多条BGP数据,每条有着不同的RD。而有RT的话,只需要创建一条BGP数据,带上多个RT即可。从数据的长短来看,后者更有优势。

 

要想实现CE3pingCE4,那么控制平面的过程:

 

CE4--PE2

 

PE内部对每一个VPN,都会有一个独立的路由交换进程与对应的CE相连。这里有2个VPN连接PE,那就会有2个独立的路由交换进程,分别与CE交换各自的路由。CE4和PE2两个路由器之间普通的交流,可以是IGP例如:OSPF,EIGRP,也可以是BGP,可以配置静态路由。这样CE4的路由就可以成功传递到了PE2中的VPNB的VRF table VRFB当中。

 

PE2--PE1

 

PE2 是通过MP-BGP session将CE4的路由转发给PE1,

 

PE2中对应VPNB的VRFB Virtual router包含了与VPN相关的路由器变量,就是指RT和RD。

 

MP-BGP进程会自动的取出RD与RT,在IP地址前加上RD生成VPNv4,在后面加上RT(export 属性),进而生成相应的MP-BGP数据。

 

同时,PE2还会生成为PE1,生成一个MPLS Label,用于指定是哪个VPN

 

当PE2把这MP-BGP数据送到PE1之后,PE1首先会取出RT,对比本地的VRFs的Import Targets,记录Import Targets与BGP中RT有交集的VRFs。

 

如果没有匹配的VRFs,丢弃MP-BGP数据。

 

这里VRFB的Import Targets匹配,再计算得出IPv4格式的next-hop和IPv4格式的prefix,这样就得到了IPv4格式的路由。再分别写入相应的VRF中,这里是写入PE1的VRFB对应的虚拟转发表中。

 

至于MPLSLabel,随着上面的IPv4格式路由绑定,一起写入到这个VRF当中。

 

PE2终于有了CE1的路由信息,并且多个VPN可以共用这个路由传输通道且相互不影响。

 

PE1--CE3

通过PE1中的Virtual router和对应的路由交换进程,CE3的路由最终到达了CE4。

 

整个控制平面的过程就结束了

 

 

 

CE3 ping CE4,数据转发的过程:

 

 

1 CE3因为从PE1学习到了CE4网络的路由,因此,对应的路由下一跳是PE1。CE1直接将目的地址是CE2的数据包发往PE1。这就是一个普通的路由转发。

 

2 数据包到达PE1,准确的说是到达了PE1中对应的VPNB的VRFB的路由表中。因为之前是从PE2学习的CE2网络的路由,因此,对应的路由下一跳是PE2,此时会将数据包发往PE2地址。PE2通过MP-BGP不是给PE1分配了一个标签,也就是一个内部标签,标识不同的VPN,这样在VRF内部,IP 数据包就变成了MPLS数据包。

 

在MPLS网络内部,PE1到PE2并未直接相连,所以,将数据包传递到PE2 就和之前的数据包传递过程时一样的

 

PE2 再将VPN标签去掉,找到对应的VRF转发表,将IP包转发给对应CE2

 

由于PE1并未与PE2直接相连,虽然VRF 会将数据包发往PE1,但是数据包不能直接到达目的地。虽然PE1未与PE2直接相连,但是在建立MPLSTunnel的时候,PE1已经把自己的路由

返回行业资讯

SD-WAN 新闻与洞察

行业动态、公司进展与媒体报导,帮助判断企业组网与专线市场的变化。