- VRF(Virtual Route Forwarding): VRF的目的是解决不同企业私网地址段相同,为了防止冲突,采用将相同私网地址放到不同的VRF表中。VRF区分不同CE端进来边界PE的相同私网路由,路由器的每一个VRF 都自动生成相应VRF表,比如show route vrf A ,show route vrf B。对于每一个VRF表,都具有路由区分符(Route Distinguisher:RD)和路由目标(Route Target:RT)两大属性。
- RD(Route-Distinguisher): 8个字节的RD+4个字节的IPv4地址组成96位VPNv4路由,使不唯一的IPv4地址转化为唯一的VPN-IPv4地址,该VPNv4路由在ISP域内传递(区分),RD给某VRF里面的路由打上标签,进而实现地址的复用而不产生冲突。RD用来区分本地VRF,该属性仅本地有效。
- RT(Route Tagert):BGP的扩展团体属性,它分成Import RT和Export RT,分别用于路由的导入、导出策略。也即RT是控制这个VRF里面可以发出和接受什么样的路由。RT具有全局唯一性,并且只能被一个VPN使用。
- 关于RT,新人还要注意的点:
当从VRF表中导出VPN路由给BGP邻居时,要用Export RT对VPN路由进行标记;在往BGP邻居的VRF表中导入VPN路由时,只有所带RT标记与VRF表中任意一个Import RT相符的路由才会被导入到VRF表中。RT使得PE路由器只包含和其直接相连的VPN的路由,而不是全网所有VPN的路由,从而节省了PE路由器的资源,提高了网络拓展性。(将connect路由发给BGP邻居,而)
通过配置import和export RT,来控制收发路由。
1.当从VRF表中导出VPN路由时,要用Export RT对VPN路由进行标记。
2.当往VRF表中导入VPN路由时,只有所带RT标记与VRF表中任意一个Import RT相符的路由才会被导入到VRF表中。
举个例子:

CE-A对应21-PE的接口加入到vrf A,CE-B对应05-PE的接口加入到vrf B
- 运营商网络一般至少部署双RR冗余,也即PE只是和RR建立MP-BGP邻居。
- MPLS内启用IGP(一般用isis动态路由协议)给建立ibgp邻居提供路由可达(TCP连接建立条件)、MPLS内启用MPLS,确保MPLS邻居UP。
- PE和RR只跑信令,此流量很小的,数据转发还是靠PE去完成。
RP/0/RSP1/CPU0:D-21-PE-A-ASR9010-new#show running-config vrf A
Sat Mar 21 20:34:35.091 BeiJing
vrf A
address-family ipv4 unicast
import route-target
64512:510 #vrf A 的RD值
33580:1
!
export route-target
64512:510
!
!
!
21-PE有些直连路由:
D-21-PE-A-ASR9010-new#show route vrf B connected
C 10.32.91.0/30 is directly connected, 48w2d, Bundle-Ether109.1924
C 10.32.91.4/30 is directly connected, 48w2d, Bundle-Ether109.1881
C 10.32.91.8/29 is directly connected, 1y18w, Bundle-Ether109.1966
RP/0/RSP0/CPU0:D-05-PE-A-ASR9010#show running-config vrf B
Sat Mar 21 20:43:06.136 BeiJing
vrf GOV_HZSQHDJK
address-family ipv4 unicast
import route-target
33580:1 #B 的RD值
64512:510
!
export route-target
33580:1
!
!
!
RP/0/RSP0/CPU0:D-05-PE-A-ASR9010#show route vrf B connected
C 10.6.21.16/30 is directly connected, 1y22w, Bundle-Ether105.136
C 10.6.21.44/30 is directly connected, 1y26w, Bundle-Ether105.1032
因为两PE互相import了彼此的RT,故05-PE及21-PE上存在彼此VRF的路由:
D-05-PE-A-ASR9010#show route vrf B 10.32.91.0
Sat Mar 21 20:47:24.926 BeiJing
Routing entry for 10.32.91.0/30
Known via "bgp 64512", distance 200, metric 0, type internal
Installed Apr 18 01:21:40.276 for 48w2d
Routing Descriptor Blocks
172.25.8.17, from 172.25.8.110
Nexthop in Vrf: "default", Table: "default", IPv4 Unicast, Table Id: 0xe0000000
Route metric is 0
No advertising protos.
RP/0/RSP1/CPU0:D-21-PE-A-ASR9010-new#show route vrf A 10.6.21.16
Known via "bgp 64512", distance 200, metric 0, type internal
Installed Mar 25 23:52:54.334 for 51w4d
Routing Descriptor Blocks
172.25.8.5, from 172.25.8.110
Nexthop in Vrf: "default", Table: "default", IPv4 Unicast, Table Id: 0xe0000000
Route metric is 0
No advertising protos.
可以看到两PE学习到vrf的路由情况:
因为两PE互相import了彼此的RT,故05-PE及21-PE上存在彼此VRF的路由:
RP/0/RSP0/CPU0:D-05-PE-A-ASR9010#show route vrf B 10.32.91.0
Sat Mar 21 20:47:24.926 BeiJing
Routing entry for 10.32.91.0/30
Known via "bgp 64512", distance 200, metric 0, type internal
Installed Apr 18 01:21:40.276 for 48w2d
Routing Descriptor Blocks
172.25.8.17, from 172.25.8.110
Nexthop in Vrf: "default", Table: "default", IPv4 Unicast, Table Id: 0xe0000000
Route metric is 0
No advertising protos.
RP/0/RSP1/CPU0:D-21-PE-A-ASR9010-new#show route vrf A 10.6.21.16
Known via "bgp 64512", distance 200, metric 0, type internal
Installed Mar 25 23:52:54.334 for 51w4d
Routing Descriptor Blocks
172.25.8.5, from 172.25.8.110
Nexthop in Vrf: "default", Table: "default", IPv4 Unicast, Table Id: 0xe0000000
Route metric is 0
No advertising protos.
根据如下配置提个问题:
D-21-PE-A-ASR9010-new#show running-config vrf C
vrf C
address-family ipv4 unicast
import route-target
10006:114 #vrf C的RD
64512:510
!
export route-target
10006:114
!
!
!
D-05-PE-A-ASR9010-new#show running-config vrf D
vrf D
address-family ipv4 unicast
import route-target
33580:1 #vrf D的RD
64512:510
!
export route-target
33580:1
64512:510 #没有export 64512:510 和 export 64512:510
!
!
!
问题:vrf D没有export 64512:510 和有export 64512:510 C是否会有D的路由?(答案见评论处),D是否有C的路由?
总结:
vrf F
address-family ipv4 unicast
import route-target
10000:146
10000:160
10006:114
10051:115
!
export route-target#其他邻居PE想要学习到中心点的路由,只需要import了【1000:146 | 10000:160|10006:114|10051:115】 都将收到的VRF F的路由加载到相应的VRF表中。
10000:146
10000:160
10006:114
10051:115
!
!
!
有来的路由还得有回去的,import 【10000:146|10000:160|10006:114|10051:115】将 携带export 这相同RT的路由条目加载到VRF F表中。
这样实现相应vrf 路由在两PE之间可达。
大家都理解了吗?有不理解的可在下方留言(需要持续交流的可加关注)。