论MPLS VPN网络 VRF、RT与RD的作用,附带实例

  • 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表中。

举个例子:

论MPLSVPN网络VRF、RT与RD的作用,附带实例

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之间可达。

大家都理解了吗?有不理解的可在下方留言(需要持续交流的可加关注)。