近年来网络×××技术方兴未艾,日益成为业界关注的焦点。根据×××实现的技术特点,可以把×××技术分为以下三类:

传统×××:FR和ATM

CPE-based ×××L2TPIPSec

Provider Provisioned ×××s ( PP-××× )MPLS L2×××MPLS L3×××

本文介绍的VRF(virtual route forwarding)特性是MPLS ×××中经常使用的技术,中文含义为×××路由转发实例。鉴于VRF与MPLS ×××密切相关,下面首先对MPLS ×××作简要介绍。


图1是一个典型的MPLS L3×××的组网图,运营商通过自己的IP/MPLS核心网络为BLUE和YELLOW两个客户提供×××服务。SITE1和SITE3分别为××× BLUE的两个站点,SITE2和SITE4分别为××× YELLOW的两个站点。××× BLUE两个站点内的主机可以互访,但不能访问××× YELLOW内的主机。同样,××× YELLOW两个站点内的主机可以互访,但不能访问××× BLUE内的主机。从而实现了两个×××间的逻辑划分和安全隔离。

CE设备的作用是把用户网络连接到PE,与PE交互×××用户路由信息:向PE发布本地路由并从PE学习远端站点路由。

PE作用是向直连的CE学习路由,然后通过IBGP与其他PE交换所学的×××路由。PE设备负责×××业务的接入。

P设备是运营商网络中不与CE直接相连的设备,只要支持MPLS转发,并不能感知到×××的存在。


1


上面组网中×××的设计思想是很巧妙的,但存在如下几个问题:

1、本地路由冲突问题,即:在BLUE和YELLOW两个×××中可能会使用相同的IP地址段,比如10.1.1.0/24,那么在PE上如何区分这个地址段的路由是属于哪个×××的。

2、路由在网络中的传播问题,上述问题会在整个网络中存在。

3、PE向CE的报文转发问题,当PE接收到一个目的地址在10.1.1.0/24网段内的IP报文时,他如何判断该发给哪个×××?


针对上述3个问题,分别有以下解决方案:

1、为了解决本地路由冲突问题,我们引入了VRF的概念:把每台PE路由器在逻辑上划分为多台虚拟路由器,即多个×××路由转发实例VRF,每个VRF对应一个×××,有自己独立的路由表、转发表和相应的接口。这就相当于将一台各×××共享的PE模拟成多台专用PE。这样PE与CE交互的路由信息只是该×××的路由,从而实现了×××路由的隔离。由于不同×××的路由存放在不同的VRF中,所以×××路由重叠的问题也解决了。

2、×××重叠路由在网络中的传播问题可以在路由传递的过程中为这条路由再添加一个标识,用以区别不同的×××。正常的BGP4协议只能传递IPv4的路由,由于不同×××用户具有地址空间重叠的问题,必须修改BGP协议。BGP最大的优点是扩展性好,可以在原来的基础上再定义新的属性,通过对BGP修改,把BGP4扩展成MP-BGP。在MP-IBGP邻居间传递×××用户路由时打上RD标记等×××信息,这样CE传来的×××用户的IPv4路由被PE转换为×××-IPv4路由,这样就能保证对端PE能够区分开属于不同×××用户的地址重叠的路由。

3、PE向CE的报文转发问题,由于IP报文的格式不可更改,没有什么文章可以做,但可以在IP头之外加上一些信息(标签),由始发的×××打上标记,这样PE在接收报文时可以根据这个标记进行转发。

每一个VRF可以看作一台虚拟的路由器,好像是一台专用的PE设备。该虚拟路由器包括如下元素:

一张独立的路由表/转发表,当然也包括了独立的地址空间。

一组归属于这个VRF的接口集合。

一组只用于本VRF的路由协议。

对于每个PE,可以维护一个或多个VRF,同时维护一个公网的路由表(也叫全局路由表),多个VRF实例相互分离独立。实现VRF并不困难,关键在于如何在PE上使用特定的策略规则来协调各VRF和全局路由表之间的关系。


在VRF中定义的和×××业务有关的两个重要参数是RT和RD,RT和RD长度都是64bit。

RTRoute Target的缩写,RT的本质是每个VRF表达自己的路由取舍及喜好的方式,主要用于控制×××路由的发布和安装策略。分为importexport两种属性,前者表示了我对那些路由感兴趣,而后者表示了我发出的路由的属性。当PE发布路由时,将使用路由所属VRFRT export规则,直接发送给其他的PE设备。对端PE接收路由时,首先接收所有的路由,并根据每个VRF配置的RTimport规则进行检查,如果与路由中的RT属性match,则将该路由加入到相应的VRF中。以下图为例:

SITE-1:我发的路由是蓝色的,我也只接收蓝色的路由。

SITE-2:我发的路由是×××的,我也只接收×××的路由。

SITE-3:我发的路由是蓝色的,我也只接收蓝色的路由。

SITE-4:我发的路由是×××的,我也只接收×××的路由。

这样,SITE-1与SITE-3中就只有自己和对方的路由,两者实现了互访。同理SITE-2与SITE-4也一样。这时我们就可以把SITE-1与SITE-3称为××× BLUE,而把SITE-2与SITE-4称为××× YELLOW


2


RDRoute Distinguisher的缩写,是说明路由属于哪个×××的标志。理论上可以为每个VRF配置一个RD,通常建议为每个×××VRF都配置相同的RD,并且要保证这个RD全球唯一。如果两个VRF中存在相同的地址,但是由于RD不同,这两个路由在PE间发布过程中也不会混淆,因为MP BGPRD和路由一起发送,对端PE可以根据RD确定路由所属的×××,从而把路由安装到正确的VRF中。

RD并不会影响不同VRF之间的路由选择以及×××的形成,这些事情由RT搞定。

PECE接收的标准的路由是IPv4路由,如果需要发布给其他的PE路由器,此时需要为这条路由附加一个RD。在IPv4地址加上RD之后,就变成×××-IPv4地址族了。×××-IPv4地址仅用于服务供应商网络内部。在PE发布路由时添加,在PE接收路由后放在本地路由表中,用来与后来接收到的路由进行比较。CE不知道使用的是×××-IPv4地址。