在MPLS L3VPN下,RD值就可以区分路由了,为什么还需要RT值?

首先,我们先回顾一下RD值和RT值的作用分别是什么?

  • RD值(Route Distinguisher):在控制层面区分路由(64bit的RD值 + 32bit的IPv4地址 = 96bit的VPNv4地址)。
    1. RD值与VPN路由一起被携带在BGP Update报文中发送给对端;
    2. RD值不具有选路能力,不影响路由的发送与接收。
  • RT值(Route Target):用来控制VPN路由的导入导出,增加VPN路由导入导出时的灵活性。
    1. 当从VRF表中导出VPN路由时,要用Export RT值对VPN路由进行标记;
    2. 当往VRF表中导入VPN路由时,只有所带RT值与VRF表中任意一个Import RT值相符的路由才会被导入到VRF表中。

接下来,我们会用一个实验拓扑来说明为什么除了需要有RD值以外,还需要有RT值。

MPLS L3VPN Spoke and Hub实验拓扑
MPLS L3VPN Spoke and Hub实验拓扑

在上面的实验拓扑中,有一个企业,它有两个Spoke(分支站点)和一个Hub(总部),Spoke和Hub之间已经实现了MPLS L3VPN通信。

RD值一般有以下两种设置方式:

R1(config)#ip vrf R1
R1(config-vrf)#rd ?
  ASN:nn or IP-address:nn  VPN Route Distinguisher
  1. ASN:nn:32bit的BGP AS号 + 32bit的标识符
  2. IP-address:nn:32bit的可全局路由的IP地址 + 32bit的标识符

如果互联网服务提供商(ISP)按照上面的方法进行设置,那RD值一般都是全局(或者说全球)唯一的。比如,对于AS号为1234的服务提供商来说,它可以为标识符为1的企业提供MPLS L3VPN服务(RD = 1234:1),也可以为标识符为2的企业提供MPLS L3VPN服务(RD = 1234:2),两个企业之间的VPN路由通过RD值区分即可,每个企业都有唯一一个RD值。

那问题来了,上面实验拓扑中的两个Spoke和一个Hub都同属于一个企业,使用RD值就好了呀?为啥还要RT值?

回答:单单使用RD值,确实可以区分路由,但如果想灵活地控制路由导入导出,就不行了。比如现在要实现以下需求:每个Spoke都需要接收来自Hub的路由,但是Spoke和Spoke之间不允许互相接收到对方的路由,而Hub又需要接收所有Spoke的路由。如果单单只有RD值,再根据上述RD值的设置方式,很明显这两个Spoke和一个Hub他们设置的RD值都是相同的(因为同属一个企业),所以就没法灵活地在Spoke和Hub之间做路由的导入导出了。

于是,我们需要引进RT值。那用RT值又该如何完成上述需求呢?

回答:如下图所示,为了在Spoke上能接收来自Hub的路由,我们需要这么做:

  1. 在Hub上,为导出的VPN路由设置Export RT值1:1;
  2. 再在两个Spoke上,导入Hub发来的VPN路由:Import RT值为1:1。
Hub上VPN路由通过RT值导入导出
Hub上VPN路由通过RT值导入导出

现在,两个Spoke上都收到来自Hub的VPN路由了,但我们还需要把Spoke上的路由发给Hub,同时要保证Spoke和Spoke之间不允许互相接收到对方的路由:

  1. 在EIGRP为138的Spoke上,为导出的VPN路由设置Export RT值138:138,
  2. 在EIGRP为249的Spoke上,为导出的VPN路由设置Export RT值249:249,
  3. 再在Hub上,导入两个Spoke发来的VPN路由:Import RT值为138:138和249:249。
Hub上VPN路由通过RT值导入导出
Hub上VPN路由通过RT值导入导出

现在,对上面的RT值的设置做一个汇总:

Import RT Export RT
Hub 138:138和249:249 1:1
EIGRP为138的Spoke 1:1 138:138
EIGRP为249的Spoke 1:1 249:249

由上表可知,Hub上接收到了所有来自Spoke的VPN路由,因为Hub设置的Import RT值为138:138和249:249,而138:138是EIGRP为138的Spoke导出的,249:249是EIGRP为249的Spoke导出的。

同时,两个Spoke都接收到了来自Hub的VPN路由,因为两个Spoke设置的Import RT值为1:1,而1:1是Hub导出的。

最后,两个Spoke之间互相接收不到对方的VPN路由,因为EIGRP为138的Spoke没有导入RT值为249:249的VPN路由,而EIGRP为249的Spoke也没有导入RT值为138:138的VPN路由。

所以,通过RT值就可以灵活地控制VPN路由的导入导出,而RD值仅仅只是为了区分路由。

打赏作者
这里是 “ CCIE 工程师社区 ” 官方的捐款通道,您是否可以考虑请我们喝杯咖啡呢?

您的支持将鼓励我们继续创作!

[微信] 扫描二维码打赏

[支付宝] 扫描二维码打赏

Was this article helpful?

Related Articles

Leave A Comment?

This site uses Akismet to reduce spam. Learn how your comment data is processed.