|
本文档主要是以思科交换机为例,通俗的讲解VRF的用途和使用方法, 看完本篇之后,建议再看一下 华为VRF和思科VRF的区别
VRF技术通过在一台三层转发设备上创建多张路由表实现数据或业务的隔离,常用于MPLS vpn、防火墙等一些需要实现隔离的应用场景。
我们知道交换机中设置vlan就是为了使不同的网段进行隔离, 而VRF就像路由器的VLAN,只不过VRF是用来隔离路由器中的路由表的,在路由器上建立一个vrf,里面的路由表和外面是隔离的,只能同一个vrf自己使用,其实就相当于这个vrf是一个独立的虚拟的路由器了,例如路由器的2口和4口设置为同一个vrf,那么2口和4口就相当于组成了一个虚拟的独立路由器,这个vrf上的路由表只能端口2和端口4使用,物理路由器上都无法使用vrf上的路由表。
所有 vrf 又称 VPN Instance(VPN 实例),在物理设备上创建多个VPN实例,每个VPN实例拥有独立的接口、路由表和路由协议进程等。简单理解是,将整个设备“分割”成多个小设备。每一个VPN实例就是相当于一个个独立的路由表,添加VPN实例相当于隔离建立多个独立的路由器。正常来说,一个路由器只有一个路由表,那么一台路由器有多个虚拟路由表,每个路由表互相隔离,其实就等同于多台“真实”的路由器。这种结果恰恰是因为引入VPN实例的概念。而全局路由表,又称为根实例,相对于交换机中的默认vlan1一样。新的vlan的创建,就是为了隔离vlan1本身这个大的广播域,而相同vlan下的设备就可以互相通信。同理得,创建新的VPN实例,可以实现绑定同一实例下的接口,即可以实现同一路由表下的互相通信,隔离其他实例的通信。
为了理解,举个例子,如下图:
网络服务商有两个客户: 客户Blue和客户Red,每个客户都有两个站点,并且这些站点都连接到ISP路由器下。
如果不用vrf,默认情况下,路由器只有一个全局路由表,这样就可能使客户Blue能通过isp上的路由访问到客户Red,例如Blue 192.168.1.0 将默认路由指向isp路由器,而192.168.4.0也将默认路由指向isp路由器,那么 192.168.1.0就可以访问192.168.4.0
还有一种情况,比如 blue1下面再接一个交换机上面划分一个新vlan 192.168.10.0 ,Red1下面再接一个交换机上面划分一个新vlan 192.168.10.0 ,这两个vlan都是两个客户自己的私网,但是ip段相同了,如果blue2想要访问blue1下的192.168.10, isp路由器上就需要新加一个路由,同样red2如果要访问red1下的新vlan也需要isp上新建一个路由器,但是两个公司私网的ip段相同都是192.168.10.,那么isp上就没法区分了。而如果使用vrf 这种内网ip地址重叠问题就能解决。
设置vrp过程:
ISP(config)#ip vrf Red 创建vrf 名为Red
ISP(config-vrf)#exit
ISP(config)#ip vrf Blue 创建vrf 名为Blue
ISP(config-vrf)#exit
上面是为每个客户都创建了一个VRF。
客户Blue 接在 路由器的 Fa0/0和Fa2/0两个口, 那么我们在这两个端口上应用 vrf Blue
客户Red 接在 路由器的 Fa1/0和Fa3/0两个口, 那么我们在这两个端口上应用 vrf Red
这样客户Blue1和Blue2 就是同一个vrf,这两个端口共用一个虚拟路由表, 客户Red1和Red2就是同一个vrf,公用一个虚拟路由表,两个客户都可以在自己的虚拟路由表上任意设置路由,同时两个客户互不影响。
可以使用命令 show ip vrf 来查看路由器上的所有vrf:
路由器上创建vrf后,那么vrf就是一个虚拟的独立的路由器,例如本例中,在路由器上创建了两个vrf:Blue和Red,这样你就可以理解为这个物理路由器上创建了两个虚拟路由器,加上物理器自己,就是3个路由器了:
show ip route connected 本来是查看全局路由表的命令, 这里就只是查看物理路由器本身上的路由,这条命令查不到vrf里的路由表
show ip route vrf Blue connected 查看vrf Blue里的路由表
show ip route vrf Red connected 查看vrf Red里的路由表
同理:
ping 192.168.1.1 就只是在物理路由器上ping 192.168.1.1
ping vrf Blue 192.168.1.1 就是在vrf Blue里ping 192.168.1.1
ping vrf Red 192.168.1.1 就是在vrf Red里ping 192.168.1.1
下面验证一下:
ISP#show ip route connected 全局路由表没有条目,这是因为所有接口都添加到了VRF中。
查看vrf Blue的路由表:
ISP#show ip route vrf Blue connected
C 192.168.1.0/24 is directly connected, FastEthernet0/0
C 192.168.3.0/24 is directly connected, FastEthernet2/0
查看vrf Red的路由表:
ISP#show ip route vrf Red connected
C 192.168.4.0/24 is directly connected, FastEthernet3/0
C 192.168.2.0/24 is directly connected, FastEthernet1/0
到这里 vrf的概念已经讲完了。
补充: 在路由器上创建了vrf之后,就需要把vrf当作是一个独立的路由器了,例如路由器有1-10个端口,我们把1-2两个端口设置为了vrf vpn3 (这里vpn3是一个vrf的名字),那么我们可以理解为路由器1-2端口是一个路由器名字为vrf vpn3 , 物理路由器就是3-10端口了。
再在路由器上设置任何命令,如果不指明 vrf vpn3,那么配置的这条命令只对3-10端口有效,对1-2端口无效,如果要对1-2端口有效,那么就需要指明 vrf vpn3 了。
例如 ip route 1.1.1.1 255.255.255.255 192.168.1.1 (在物理路由器上设置这个命令,那这条命令只对3-10端口有效)
如果要对1-2端口有效,那么需要设置 ip route vrf vpn3 1.1.1.1 255.255.255.255 192.168.1.1 (对vrf设置路由,就要使用命令 ip route vrf 名字 )
对ospf 也是一样,像本例,设置好vrf之后,客户Blue 设置ospf, isp路由器上也是对vrf Blue设置ospf, 这样两个客户的ospf互不影响:
Blue1(config)#router ospf 1
Blue1(config-router)#network 192.168.1.0 0.0.0.255 area 0
Blue2(config)#router ospf 1
Blue2(config-router)#network 192.168.3.0 0.0.0.255 area 0
ISP(config)#router ospf 1 vrf Blue
ISP(config-router)#network 192.168.1.0 0.0.0.255 area 0
ISP(config-router)#network 192.168.3.0 0.0.0.255 area 0
再补充一下: vrf可以应用到端口,也可以应用到vlan, 例如路由器上有多个vlan,可以将其中几个vlan划为一个vrf,那么这几个vlan就是一个独立的路由器了。
|
|