简介
类似GRE,MPLS VPN也是一种隧道技术,它提供了一条虚拟通路,使经过特殊封装的数据报能够在这个通路上传输。在隧道的两端分别对数据报进行封装及解封装。MPLS VPN相比传统的VPN,可以满足更多客户的需求,MPLS VPN不仅仅是单一VPN技术,是一种由多种技术结合的综合解决方案。由于MPLS VPN是由运行商提供的服务,所以在安全和传输有更好的保障。
名词介绍
- PE:服务提供商边界设备,为公网设备,搭建MPLS VPN时需要连接私网,拥有私网接口
- CE:客户边界设备,私网的边界设备
VRF空间
- 在图1中,PE连接了两个公司私网,私网路由都会来到PE设备上,但由于私网网段极有可能是重复的,如果都来PE设备上难以区分,而且PE是公网设备,公网是不允许出现私网路由的,故在PE上划分两个空间专门用来存放私网路由,该空间在cisco被称为VRF空间,在华为设备上称为Vpn-Instances(vpn 实例)。划分VRF空间时可以将本地的接口与VRF空间绑定,绑定后从该接口学来的路由和该接口的路由都属于VRF空间,这些路由独立于全局路由表,进行相关配置时需指定VRF空间。
# 创建VRF空间
[r2]ip vpn-instance a # ip vpn-instance 空间名,空间名区分大小写
[r2-vpn-instance-a]quit
[r2]inter GigabitEthernet
[r2-GigabitEthernet0/0/0]ip binding vpn-instance a # 将接口绑定到VRF空间
# 查看VRF空间
[r2]display ip routing-table vpn-instance a # 查看VRF空间路由表
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: a
Destinations : 5 Routes : 5
Destination/Mask Proto Pre Cost Flags NextHop Interface
192.168.1.0/24 Direct 0 0 D 192.168.1.1 GigabitEthernet 0/0/0
192.168.1.1/32 Direct 0 0 D 127.0.0.1 GigabitEthernet 0/0/0
192.168.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet 0/0/0
255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
# 在空间中配置静态路由
[r2]ip route-static vpn-instance a 192.168.1.0 24 192.168.2.1
RD
- 使用VPN技术连接私网后,私网间需要传递路由,PE上不同VRF空间内可能都是172.16.0.0/24网段内的路由,这些路由来到对端PE设备上,PE如何区分这些路由是一个私网的路由还是多个私网的路由,所以MPLS VPN使用RD(路由区分码)来辨别这些相同网段的路由信息。
- RD值是由64位二进制构成,形式为:AS号:NN,NN为自定义数值,在传递路由信息时,VRF空间会将64位的RD值放在32位IP路由前缀前面,形成96位的路由前缀,形成VPNv4路由进行传递。
[r2-vpn-instance-a]route-distinguisher 1:1 # 配置该VRF空间的RD值
RD值一旦确定后不可更改,如果需要更改只能删除VRF空间重新创建。
MP-BGP
- PE间的传递的是私网路由,如果通过IGP协议传递这些路由,会导致私网路由信息洪泛到公网中,所以PE间的路由传递使用的使BGP协议,通过BGP单播建邻,一对一传输。
- 由于PE传递的路由时携带RD值的VPNv4路由,普通的BGP协议只能携带ipv4路由,故使用BGP V4的拓展版:MP-BGP,该协议支持多种地址族,包括IPV4,VPNV4,IPV6…
#
bgp 1
router-id 2.2.2.2
peer 4.4.4.4 as-number 1
peer 4.4.4.4 connect-interface LoopBack0
# 配置后,MP-BGP可携带VPNv4路由
ipv4-family vpnv4
policy vpn-target
peer 4.4.4.4 enable
# 宣告某个VRF空间的路由
ipv4-family vpn-instance a
network 192.168.1.0
import-route static
#
[r2]display bgp vpnv4 vpn-instance a routing-table # 查看空间内部BGP表
BGP Local router ID is 2.2.2.2
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
VPN-Instance a, Router ID 2.2.2.2:
Total Number of Routes: 3
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 192.168.1.0 0.0.0.0 0 0 i
*>i 192.168.2.0 4.4.4.4 0 100 0 i
RT
- 当PE收到对端PE传来的VPNv4路由时,通过RD可以辨别这些私网路由是否属于同一个私网,但它是如何知道应该把这些路由放到本地的哪一个路由表中?MPLS VPN使用RT(路由目标值)辨别这些路由应该放到哪个VRF空间。
- RT(VPN Target),由32位二进制构成,一个VPNv4路由可以携带多个RT值,通过BGP的社团属性来携带,RT值分为出站RT和入站RT。
- 出站RT:PE为不同的VRF空间定义的发出路由时社团属性中携带RT值
- 入站RT:PE收到携带一个或多个RT值的路由时,会将这些路由携带的RT值与本地所有VRF空间定义的入站RT值进行对比,只要相同,则允许该路由进入该VRF空间。
[r2-vpn-instance-a]vpn-target 1:1 export-extcommunity # 配置出战RT
2-vpn-instance-a]vpn-target 1:1 import-extcommunity # 配置入站RT
[r2-vpn-instance-a]vpn-target 1:1 both # 同时配置出战RT和入站RT
双层标签
- 当两个私网控制层面可达后,在通信时,如一个ping包从一个私网来到另一端的PE设备上时,PE如何知道这个流量需要看哪张路由表,只有看相应的路由表才能正常通信。
- MP-BGP会为每个VRF空间设置一个标签号,通过社团属性携带给对端PE,对端PE在于本地私网通信时,会先在流量中添加该标签,本地根据该表签选择需要查看的路由表。
工作过程
PE上创建VRF空间,并设置该空间的RD和RT值,MP-BGP会自动给该空间分配一个标签号,然后将本地的私网接口与VRF空间绑定,绑定后该私网的路由会进入所绑定的VRF空间内,PE间通过MP-BGP传递路由信息,将私网路由重发布到BGP中,BGP携带VPNv4路由、出站RT值和本地VRF空间的标签号,通过MPLS将路由传递给对端PE,对端PE收到路由后根据路由所携带的出站RT值将路由放到对应的VRF空间,该空间的路由可以由IGP协议传递到私网内,对端私网访问本地私网的流量首先来到对端PE上,然后由MP-BGP添加VRF空间标签,在由MPLS添加标签,于是公网的设备基于标签转发执行次末跳,本端PE收到访问的流量首先查看到标签号,根据标签号查看对应的路由表,最后转发到对应的私网网段中。
在ensp中的配置
- 在如下拓扑中,我们通过MPLS VPN将A公司的站点1和站点2连接,以下配置为R2上的配置。
- 配置完所有的IP地址后,首先在公网部分启动IGP协议
#
ospf 1 router-id 2.2.2.2
area 0.0.0.0
network 2.2.2.2 0.0.0.0
network 23.1.1.1 0.0.0.0
#
- 开启MPLS
#
mpls lsr-id 2.2.2.2
mpls
#
mpls ldp
#
interface GigabitEthernet0/0/1
mpls
mpls ldp
#
- 在PE上创建VRF空间并配置RD值域RT值
#
ip vpn-instance a
ipv4-family
route-distinguisher 1:1
vpn-target 1:1 export-extcommunity
vpn-target 1:1 import-extcommunity
#
- 启动MP-BGP并于对端PE建立对等体关系
#
bgp 1
router-id 2.2.2.2
peer 4.4.4.4 as-number 1
peer 4.4.4.4 connect-interface LoopBack0
#
ipv4-family vpnv4
peer 4.4.4.4 enable
#
- 私网内可以允许IGP协议也可以使用静态路由,我这里使用静态路由
#
ip route-static vpn-instance a 192.168.4.0 255.255.255.0 192.168.2.1
ip route-static vpn-instance a 192.168.3.0 255.255.255.0 192.168.1.2
#
- MP-BGP宣告路由,使PE间传递私网路由
#
bgp 1
ipv4-family vpn-instance a
network 192.168.1.0
import-route static
#