VPN 基础:
vpn 全称(Virtual Private Network )虚拟专用网络,就是用来实现专用广域网专线技术的业务仿真技术。通俗的来讲就是企业利用公共网络来建立私网的连接。这个私网传递的业务流量,对于公网来说是不可见的,当然对于其他私网也是互相隔离的状态。再直白一些就是通过某些技术手段,把两个不同地区的办公室进行互连,双方均可进行数据通信,且仅双方可以通信,公网和其他网络均不可访问,实现这种技术的手段称为 VPN 。 现在也很多公司已经开始使用 vpn 来打通各个区域办公室的网络,提供了不同区域需要访问公司业务的需求,也保证了公司内部网络的安全性。
MPLS VPN 基本组件:
- CE (Custom Edge):用户网络的边界设备,直接与运营商网络相连接,CE 设备可以是路由器,可以是交换机,或主机设备。
- PE (Provider Edge Router):骨干网络的边界设备,直接连接 CE 设备,从而提供 VPN 的业务接入,PE 设备可以是路由器或者交换机设备。
- P (Provider Router) :骨干网络中的核心路由器,主要是提供骨干网络内部的路由和数据包的快速转发服务。
MPLS VPN 基本知识:
-
VPN-Instance 在一个典型的 MPLS VPN 网络中,CE 和 PE 之间可以使用任何 IP 路由协议技术来交换用户的私网路由,但是当多个 VPN 用户连接到同一个 PE 上或者不同 VPN 用户之间需要相互通信的时候,因为不同用户的地址在空间上会有重叠的情况,若两边用户私网地址都是 192.168.1.0/24 的网段,那么就会存在地址空间的重叠。所以 PE 上必须将这些不同的 VPN 用户的路由隔离起来,这就产生了 VPN 实例。一个 VPN 实例就相当于是一个虚拟的路由器,这台虚拟路由器具有自己的接口、路由转发等资源,在控制平面上是独立运行的。每个 VPN 用户都会在 PE 上有一个自己的 VPN 实例,当 PE 收到来自不同用户的私网路由时,会将其放在该用户对应的 VPN 实例的路由转发表中。一台 PE 可以拥有多个路由转发表,包括一个公网路由转发表,以及一个或多个 VPN 路由转发表。 VPN 实例主要解决了两大问题: 1、在 PE 上解决不同 VPN 用户的路由冲突问题 2、不需要 ACL 等工具,简化了隔离不同用户网络的操作
-
RD(Route Distinguisher) 用户的 VPN 路由是通过 MP-BGP 在 MPLS VPN 骨干网络中来传递的,如果来自不同用户的 VPN 路由地址空间相同,BGP 协议就无法区分这是来自那个用户的路由了,为了保证用户的 VPN 路由的唯一性,引入了 RD 的概念。 通过在 PE 上为每个用不分配一个唯一的 RD 值,并在通告用户私网路由时附带上该 RD 值,这时在接收端路由器收到不同用户的 VPN 路由后,只需要识别 RD 值就可以区分是否为同一用户发起的。
由 CE1 将用户的 IPv4 路由信息通告给 PE1 ,PE1 接收到后会生成一个 RD 值,并加入到 IPv4 地址的前缀,形成一个 VPNv4前缀,发向 MP-BGP 网络中,一直传递到 PE2 ,PE2 将 VPNv4 前缀还原成 IPv4 的路由信息并发送给 CE2 ,CE2 根据路由信息进行路由传递。
-
VPN Target VPN Target 是 BGP 的一个扩展团体属性,用来判断路由该被送入到那个 VPN 实例中,当一个 PE 将路由引入到 MP-BGP 网络中,还会给路由添加一个 RT 属性,传送到远端的 PE ,最终由远端的 PE 决定该路由往哪里发送,远端发送过来的路由携带的 RT 值和本地的 RT 值匹配成功的话,该路由就被送往相对应的 VRF 路由表。
一条路由可以携带多个 RT 值,这个特性可以轻易的实现相同 VPN 站点或不同 VPN 站点之间的路由通告。那么如上图所示用户要求,所有分支公司的互相访问都需要经过总部才能进行数据通信,为总部公司的 VPN 实例设置两个 RT 值,分别指向分支公司的 VPN 实例。而分公司只需要设置一个 RT 值用来接收总部的 VPN 实例即可。
路由发布过程
在 MPLS VPN 中路由可以分为以下几个阶段。
- CE 到 PE 之间的路由交换
- PE 到 VRF 中的路由注入进 MP-BGP
- VPNv4 路由在骨干网络中传递
- PE 将 VPNv4 路由注入到 VRF 中
1. CE 到 PE 之间的路由交换 PE 和 CE 之间通过标准的 BGP 、OSPF、IS-IS、RIP或者静态路由协议来交换路由信息,这个过程中,PE 需要把 CE 传递过来的路由分别存放在不同的 VPN 实例中,除此之外的其他操作和普通路由器没有区别。 2. PE 将 VPN 实例中的路由引入到 MP-BGP PE 需要将从 CE 学习到的用户私网路由传递到 MP-BGP 中,需要将这些私网路由从 VPN 实例中引入到 MP-BGP 中,如果 PE 和 CE 之间运行的就是 BGP 那么就不需要引入。 当 PE 把 VPN 实例中的用户私网路由引入到 MP-BGP 中后,会在 IPv4 路由前缀前面添加一个 RD 值,形成一个 VPNv4 路由。然后 VPNv4 路由通告中携带 ExportRT 值,还会为该 VPNv4 路由分配一个私网标签,同时还将路由的下一跳修改成自己。这些操作完成后 PE 将 VPNv4 路由发布到所有的 MP-BGP 邻居。 3. VPNv4 路由在公网中传递 用户的私网路由在 PE 上被引入到 MP-BGP 后变成了 VPNv4 路由,这些 VPNv4 路由需要传递到其他的 PE 。如果这些 PE 都在同一个 AS 内,那么需要在 PE 之间配置 MP-iBGP 邻居关系,经过多协议扩展后的 BGP 可以用来传递 VPNv4 路由。 4. PE 将 VPNv4 路由注入到 VPN 实例中 在 PE 收到邻居的 VPNv4 路由后,由于 VPNv4 携带了 ExportRT 值,可以根据本地的 VRF 的 ImportRT 值将路由导入到相对应的 VRF 中,并且 RD 值在路由被注入时会被移除变成 IPv4 路由,再通过本地 PE-CE 之间运行的路由协议把 IPv4 路由发布到 CE 。 经过上述四个步骤后,VPN 用户不同站点之间实现了私网路由的交换,构建起了一个 VPN 。只有骨干网络上的 PE 才会维护私网路由,而其核心设备不会接收到任何私网路由,只有公网的路由,从而节省了设备开销。