资源描述
1 原理简介
近年来网络VPN技术方兴未艾,日益成为业界关注得焦点。根据VPN实现得技术特点,可以把VPN技术分为以下三类:
传统VPN:FR与ATM
CPE-based VPN:L2TP与IPSec等
Provider Provisioned VPNs ( PP-VPN ):MPLS L2VPN与MPLS L3VPN。
本文介绍得VRF特性就是MPLS VPN中经常使用得技术,中文含义为VPN路由转发实例。鉴于VRF与MPLS VPN密切相关,下面首先对MPLS VPN作简要介绍。
图1就是一个典型得MPLS L3VPN得组网图,运营商通过自己得IP/MPLS核心网络为BLUE与YELLOW两个客户提供VPN服务。SITE1与SITE3分别为VPN BLUE得两个站点,SITE2与SITE4分别为VPN YELLOW得两个站点。VPN BLUE两个站点内得主机可以互访,但不能访问VPN YELLOW内得主机。同样,VPN YELLOW两个站点内得主机可以互访,但不能访问VPN BLUE内得主机。从而实现了两个VPN间得逻辑划分与安全隔离。
CE设备得作用就是把用户网络连接到PE,与PE交互VPN用户路由信息:向PE发布本地路由并从PE学习远端站点路由。
PE作用就是向直连得CE学习路由,然后通过IBGP与其她PE交换所学得VPN路由。PE设备负责VPN业务得接入。
P设备就是运营商网络中不与CE直接相连得设备,只要支持MPLS转发,并不能感知到VPN得存在。
图1
上面组网中VPN得设计思想就是很巧妙得,但存在如下几个问题:
1、 本地路由冲突问题,即:在BLUE与YELLOW两个VPN中可能会使用相同得IP地址段,比如10、1、1、0/24,那么在PE上如何区分这个地址段得路由就是属于哪个VPN得。
2、 路由在网络中得传播问题,上述问题会在整个网络中存在。
3、 PE向CE得报文转发问题,当PE接收到一个目得地址在10、1、1、0/24网段内得IP报文时,她如何判断该发给哪个VPN?
针对上述3个问题,分别有以下解决方案:
1、 为了解决本地路由冲突问题,我们引入了VRF得概念:把每台PE路由器在逻辑上划分为多台虚拟路由器,即多个VPN路由转发实例VRF,每个VRF对应一个VPN,有自己独立得路由表、转发表与相应得接口。这就相当于将一台各VPN共享得PE模拟成多台专用PE。这样PE与CE交互得路由信息只就是该VPN得路由,从而实现了VPN路由得隔离。由于不同VPN得路由存放在不同得VRF中,所以VPN路由重叠得问题也解决了。
2、 VPN重叠路由在网络中得传播问题,可以在路由传递得过程中为这条路由再添加一个标识,用以区别不同得VPN。正常得BGP4协议只能传递IPv4得路由,由于不同VPN用户具有地址空间重叠得问题,必须修改BGP协议。BGP最大得优点就是扩展性好,可以在原来得基础上再定义新得属性,通过对BGP修改,把BGP4扩展成MP-BGP。在MP-IBGP邻居间传递VPN用户路由时打上RD标记等VPN信息,这样CE传来得VPN用户得IPv4路由被PE转换为VPN-IPv4路由,这样就能保证对端PE能够区分开属于不同VPN用户得地址重叠得路由。
3、 PE向CE得报文转发问题,由于IP报文得格式不可更改,没有什么文章可以做,但可以在IP头之外加上一些信息(标签),由始发得VPN打上标记,这样PE在接收报文时可以根据这个标记进行转发。
每一个VRF可以瞧作一台虚拟得路由器,好像就是一台专用得PE设备。该虚拟路由器包括如下元素:
一张独立得路由表/转发表,当然也包括了独立得地址空间。
一组归属于这个VRF得接口集合。
一组只用于本VRF得路由协议。
对于每个PE,可以维护一个或多个VRF,同时维护一个公网得路由表(也叫全局路由表),多个VRF实例相互分离独立。实现VRF并不困难,关键在于如何在PE上使用特定得策略规则来协调各VRF与全局路由表之间得关系。
在VRF中定义得与VPN业务有关得两个重要参数就是RT与RD,RT与RD长度都就是64bit。
RT就是Route Target得缩写,RT得本质就是每个VRF表达自己得路由取舍及喜好得方式,主要用于控制VPN路由得发布与安装策略。分为import与export两种属性,前者表示了我对那些路由感兴趣,而后者表示了我发出得路由得属性。当PE发布路由时,将使用路由所属VRF得RT export规则,直接发送给其她得PE设备。对端PE接收路由时,首先接收所有得路由,并根据每个VRF配置得RT得import规则进行检查,如果与路由中得RT属性match,则将该路由加入到相应得VRF中。以下图为例:
SITE-1:我发得路由就是蓝色得,我也只接收蓝色得路由。
SITE-2:我发得路由就是黄色得,我也只接收黄色得路由。
SITE-3:我发得路由就是蓝色得,我也只接收蓝色得路由。
SITE-4:我发得路由就是黄色得,我也只接收黄色得路由。
这样,SITE-1与SITE-3中就只有自己与对方得路由,两者实现了互访。同理SITE-2与SITE-4也一样。这时我们就可以把SITE-1与SITE-3称为VPN BLUE,而把SITE-2与SITE-4称为VPN YELLOW。
图2
RD就是Route Distinguisher得缩写,就是说明路由属于哪个VPN得标志。理论上可以为每个VRF配置一个RD,通常建议为每个VPN得VRF都配置相同得RD,并且要保证这个RD全球唯一。如果两个VRF中存在相同得地址,但就是由于RD不同,这两个路由在PE间发布过程中也不会混淆,因为MP BGP把RD与路由一起发送,对端PE可以根据RD确定路由所属得VPN,从而把路由安装到正确得VRF中。
RD并不会影响不同VRF之间得路由选择以及VPN得形成,这些事情由RT搞定。
PE从CE接收得标准得路由就是IPv4路由,如果需要发布给其她得PE路由器,此时需要为这条路由附加一个RD。在IPv4地址加上RD之后,就变成VPN-IPv4地址族了。VPN-IPv4地址仅用于服务供应商网络内部。在PE发布路由时添加,在PE接收路由后放在本地路由表中,用来与后来接收到得路由进行比较。CE不知道使用得就是VPN-IPv4地址。
2 组网应用
2、1 VRF与MPLS组合应用
下面以图3为例说明MPLS VPN与VRF得典型应用:
组网中两个用户站点SITE1与SITE2属于同一个VPN,在两个PE上分别配置VRF参数,其中VRF SITE1得RD=100:1,import RT =100:3,export RT =100:2,VRF SITE2得RD=100:1,import RT =100:2,export RT =100:3。通过VRF得配置可见:
两个VRF得RD同为100:1,说明她们属于同一个VPN;
VRF SITE1导入与导出得RT分别等于VRF SITE2导出与导入得RT,说明两个VRF分别可以接收对方得VPN站点内得路由;
PE连接CE得接口与VRF绑定,说明该接口就是属于对于VRF得资源,其她VRF与公网就是瞧不到得。
PE与CE之间可以运行OSPF、RIP2、EBGP与静态路由。运营商网络要求为MPLS网络,在PE1与PE2之间建立LSP,同时PE1与PE2间通过MP-IBGP来传播VPN路由。BGP与路由协议得相关配置请参考VRP操作手册与命令手册。
图3
VPN SITE1内得一条路由10、10/16被通告到VPN SITE2得过程如下:
PE1从接口S0/0上学习到由CE1通告得10、10、0、0/16得路由,由于S0/0就是绑定到VRF得接口,所以PE1把该路由安装到对应VRF得路由表中,并且分配该路由得本地标签,注意该标签就是本地唯一得。
然后通过路由重新发布把VRF路由表中得路由重新发布到BGP中,此时通过附加VRF表得RD、RT参数,把正常得IPv4路由变成VPN-IPv4路由,如10、10、0、0/16变成100:1:10、10、0、0/16,同时把export RT值与该路由得本地标签值等信息一起通过MP-IBGP会话通告给PE2。
PE2收到这条VPN-IPv4路由后,先根据RD确定该路由所属得VRF,然后去掉VPN-IPv4路由所带得RD值,使之恢复IPv4路由原貌,并且根据所属VRF配置得导入策略(本地Import RT与收到得export RT就是否一致)决定就是否在本地VRF中安装此路由。本例中导入策略允许,所以PE2把10、10、0、0/16路由添加到VRF路由表中,同时记录对应得标签。
PE2再通过CE与PE之间得路由协议,把10、10、0、0/16路由通过与VRF绑定得接口S0/1通告出去,CE2学习到这条路由后把该路由添加到路由表中。
同样得道理SITE2内得路由10、11、0、0/16也可以被CE1学到。
下面说明从CE2 Ping 10、10、0、0/16时数据报文得转发过程(假设PE1为该路由分配得标签为10,从PE2到PE1得LSP标签分别为L1、L2):
图4
首先Ping包从CE2发出,为IPv4报文,在图中用绿色方块标识。
当IP报文到达PE2时,PE2根据目得地址查找VRF得转发表,发现该路由出标签为10,同时该路由下一跳为PE1,而PE1对应得LSP标签为L1,于就是PE2给报文分别打上10、L1作为内外层标签,进行MPLS转发。
MPLS报文到达P时,P根据MPLS转发表项把外层标签替换为L2继续转发。
MPLS报文到达PE1时,因为PE1就是LSP得终点,所以外层标签被剥掉。PE1根据露出得内层标签10判断出该报文就是发往SITE1所属VPN得报文。于就是PE1剥掉内层标签向CE1转发IP报文。
CE1收到得就是还原后得IP报文,后续处理与正常IP处理流程一样,这里不再赘述。
2、2 VRF lite特性应用
尽管VRF经常与MPLS一起使用,但VRF也可以脱离MPLS单独应用。VRF lite就就是典型例子。VRF lite就就是在CE设备上支持VRF。
图5所示为典型MPLS VPN组网中用户侧网络,一个企业分支内部得三个部门要求相互隔离,分别通过一台CE连接到PE,形成一个VPN。可见,该分支机构需要三台出口路由器,三条链路与PE连接;同时PE需要为一个企业用户提供三个接口,这将带来端口、链路资源得浪费,直接导致成本与支出得增加。
图5
针对这种情况,我们引入VRF lite特性来解决问题,即在CE上配置VRF特性。具体组网如图6所示:此时企业分支只需要一台CE路由器与PE相连,在CE上配置VRF,CE连接三个部门得接口分别与VRF绑定。同时CE只需要一条物理链路与PE相连,并通过链路得子接口分别与VRF绑定,完成CE与PE上对应VRF得逻辑连接。PE与CE可以在各个VRF中运行动态路由协议完成VPN路由交换。PE上得配置与图5中得一样,需要配置VRF与MP-IBGP。
图6
这种方案得优点有:
只需要一个CE,比多CE情况简化了网络得配置与管理;
PE与CE间只需一条物理链路;
节省了PE端口资源;
允许企业内部不同部门间得地址重叠;
3 应用场合
VRF特性用于实现VPN得需求,可以与MPLS配合使用,也可以单独组网应用
4 配置举例
4、1 VRF与MPLS组合应用
图3所示得组网配置如下:
CE1配置:
#
sysname CE1
#
domain system
#
controller T3 3/0
using t3
#
interface Aux0
async mode flow
#
interface Ethernet0/0 /*连接site1内得网络*/
ip address 10、10、0、1 255、255、0、0
#
interface Ethernet0/1
#
interface Serial3/0/0
link-protocol ppp
ip address 100、10、0、1 255、255、0、0
# interface NULL0
#
interface LoopBack9
ip address 28、40、1、1 255、255、255、255
#
ospf 1
import-route direct
area 0、0、0、0
network 100、10、0、0 0、0、255、255
#
user-interface con 0
idle-timeout 0 0
user-interface aux 0
user-interface vty 0 4
#
return
PE1配置:
#
sysname PE1
#
mpls lsr-id 28、40、1、2
# /*公网运行MPLS*/
mpls
#
mpls ldp
# /*VRF配置*/
ip vpn-instance site1
route-distinguisher 100:1
vpn-target 100:2 export-extmunity
vpn-target 100:3 import-extmunity
#
domain system
#
controller T3 3/0
using t3
#
interface Aux0
async mode flow
#
interface Ethernet0/0 /*连接P得接口*/
ip address 172、16、32、59 255、255、0、0
mpls
mpls ldp enable
#
interface Ethernet0/1
# interface Serial0/0 /*连接CE得接口*/
ip binding vpn-instance site1
link-protocol ppp
ip address 100、10、0、2 255、255、0、0
#
interface NULL0
# interface LoopBack9
ip address 28、40、1、2 255、255、255、255
#
bgp 100 /*配置MP iBGP*/
undo synchronization
group in100 internal
peer in100 connect-interface LoopBack9
peer 46、80、1、1 group in100 /*46、80、1、1就是PE2得loopback口地址*/
#
ipv4-family vpn-instance blue
import-route direct
import-route ospf
undo synchronization
#
ipv4-family vpnv4
peer in100 enable
peer 46、80、1、1 group in100
#
ospf 1 /*IP网络上跑OSPF*/
import-route direct
area 0、0、0、0
network 172、16、0、0 0、0、255、255
#
ospf 100 vpn-instance site1 /*VRF中运行OSPF,与CE交换路由*/
import-route direct
area 0、0、0、0
network 100、10、0、0 0、0、255、255
#
user-interface con 0
idle-timeout 0 0
user-interface aux 0
user-interface vty 0 4
#
return
说明:
PE2与CE2得配置与PE1与CE1类似,此处不再列出。
关于BGP与MPLS得配置,请参考操作手册与命令手册
4、2 VRF lite特性应用
图6中各路由器得配置如下
CE得配置:
#
sysname CE
#
ip vpn-instance MRT /*VRF MRT */
route-distinguisher 100:1
vpn-target 100:1 export-extmunity
vpn-target 100:1 import-extmunity
#
ip vpn-instance RD /*VRF RD */
route-distinguisher 200:1
vpn-target 200:1 export-extmunity
vpn-target 200:1 import-extmunity
#
ip vpn-instance HR /*VRF HR */
route-distinguisher 300:1
vpn-target 300:1 export-extmunity
vpn-target 300:1 import-extmunity
#
domain system
#
local-user admin
#
interface Aux0
async mode flow
#
interface Ethernet0/0
ip address 110、11、0、2 255、255、0、0 /*连接MRT部门*/
#
interface Ethernet0/1
ip address 110、12、0、2 255、255、0、0 /*连接RD部门*/
#
interface Ethernet2/0
ip address 110、13、0、2 255、255、0、0 /*连接HR部门*/
#
interface Ethernet2/1
#
interface Ethernet2/1、1 /*VRF MRT得子接口*/
ip binding vpn-instance MRT
ip address 11、11、0、2 255、255、0、0
vlan-type dot1q vid 1
#
interface Ethernet2/1、2 /*VRF RD得子接口*/
ip binding vpn-instance RD
ip address 11、12、0、2 255、255、0、0
vlan-type dot1q vid 2
#
interface Ethernet2/1、3 /*VRF HR得子接口*/
ip binding vpn-instance HR
ip address 11、13、0、2 255、255、0、0
vlan-type dot1q vid 3
#
interface Serial1/0
link-protocol ppp
ip address ppp-negotiate
#
interface NULL0
#
ospf 1 vpn-instance MRT /*VRF MRT与PE跑ospf*/
import-route direct
area 0、0、0、0
network 11、11、0、0 0、0、255、255
#
ospf 2 vpn-instance RD /* VRF RD与PE跑ospf */
import-route direct
area 0、0、0、0
network 11、12、0、0 0、0、255、255
#
ospf 3 vpn-instance HR /* VRF HR与PE跑ospf */
import-route direct
area 0、0、0、0
network 11、13、0、0 0、0、255、255
#
user-interface con 0
user-interface aux 0
user-interface vty 0 4
authentication-mode scheme
#
return
PE得配置:
#
sysname 2840
#
mpls lsr-id 28、40、0、1
#
展开阅读全文