VRF-Lite
Dentro del mundo del routing, es posible realizar la segmentación del tráfico cuando tenemos diferentes clientes o cuando necesitamos que, por ejemplo, el tráfico de management quede aislado del resto. Esto es posible a lo llamado VRF (Virtual Routing and Forwarding).
Las VRFs son principalmente utilizadas en la MPLS para aislar el tráfico de cada cliente, pero no se encuentra limitada a dicha tecnología. Cuando las VRFs son usadas en una red que no trabaja con MPLS, son llamadas VRF-Lite.
La gracia de usar VRFs, es que se crean contextos de routing (routers virtuales dentro del router físico), donde cada uno de estos posee una tabla de enrutamiento completamente aislada de las demás, permitiendo configurar protocolos de enrutamiento en cada contexto.
La tabla de rutas que no pertenece a una VRF creada por nosotros (la que aparece usando el comando show ip route) es denominada GRT (Global Routing Table).
A continuación, se muestra un ejemplo de cómo se verían las VRFs:
Como se puede observar en la ilustración anterior, las VRFs son routers aislados dentro de un mismo chasis.
Por lo tanto, se puede decir que, las VRFs equivalen a la utilización de VLANs en los switches, donde se segmenta lógicamente el switch, para trabajar en distintos dominios de colisión.
Para la demostración de la configuración de VRFs, se utilizará la siguiente topología:
Donde al momento de configurar las VRF de cada cliente, quedaría lógicamente como se muestra a continuación:
Existen dos formas de configurar VRF-Lite, la primera corresponde a una forma legacy, la cual solo soporta IPv4, y la segunda, la cual es recomendada utilizar, que soporta IPv4 e IPv6.
Lo primero que tenemos que hacer para crear las distintas VRFs, es asignarles un nombre:
Configuración legacy:
R1(config)#ip vrf cliente1 R1(config-vrf)#description CLIENTE1 R1(config-vrf)#ip vrf cliente2 R1(config-vrf)#description CLIENTE2 R1(config-vrf)#ip vrf cliente3 R1(config-vrf)#description CLIENTE3
En la configuración recomendada, es necesario indicar en que versión de IP se trabajará, con el comando address-family:
R1(config)#vrf definition cliente1 R1(config-vrf)#description CLIENTE1 R1(config-vrf)#address-family ipv4 R1(config-vrf-af)#exit-address-family R1(config-vrf)#exit R1(config)#vrf definition cliente2 R1(config-vrf)#description CLIENTE2 R1(config-vrf)#address-family ipv4 R1(config-vrf-af)#exit-address-family R1(config-vrf)#exit R1(config)#vrf definition cliente3 R1(config-vrf)#description CLIENTE3 R1(config-vrf)#address-family ipv4 R1(config-vrf-af)#exit-address-family R1(config-vrf)#exit
Luego de tener creadas las VRFs, se asocian las interfaces que trabajarán en cada una de estas.
Es necesario tener en cuenta, que una interfaz (física o virtual [como las SVI]) solo puede pertenecer a una única VRF.
En esta asociación, si la interfaz posee dirección IP, al momento de ingresar el comando de la VRF, este es automáticamente eliminada:
R1(config)#int f0/0 R1(config-if)#ip add 10.10.10.1 255.255.255.0 R1(config-if)#ip vrf forwarding cliente1 % Interface FastEthernet0/0 IPv4 disabled and address(es) removed due to enabling VRF cliente1 R1(config-if)#do sh ip int br | in 0/0 FastEthernet0/0 unassigned YES manual up up
En el ejemplo anterior, se da una muestra de cómo asociar una interfaz a una VRF con el comando legacy, y a continuación se muestra como se realiza con la versión de configuración recomendada:
R1(config)#int f0/0 R1(config-if)#vrf forwarding cliente1 R1(config-if)#description cliente1-a R1(config-if)#ip add 192.168.10.1 255.255.255.0 R1(config-if)#int f2/0 R1(config-if)#vrf forwarding cliente1 R1(config-if)#description cliente1-b R1(config-if)#ip add 192.168.11.1 255.255.255.0 R1(config-if)#int f1/0 R1(config-if)#vrf forwarding cliente2 R1(config-if)#description cliente2-a R1(config-if)#ip add 192.168.10.1 255.255.255.0 R1(config-if)#int f2/1 R1(config-if)#vrf forwarding cliente2 R1(config-if)#description cliente2-b R1(config-if)#ip add 192.168.12.1 255.255.255.0 R1(config-if)#int f1/1 R1(config-if)#vrf forwarding cliente3 R1(config-if)#ip add 192.168.30.1 255.255.255.0 R1(config-if)#description cliente3-a R1(config-if)#int f3/0 R1(config-if)#description cliente3-b R1(config-if)#vrf forwarding cliente3 R1(config-if)#ip add 192.168.13.1 255.255.255.0
Como se puede observar, las interfaces Fa0/0 y Fa1/0 tienen la misma IP, esto se debe a que al trabajar en contextos distintos de routing, no se produce solapamiento entre las redes de estas interfaces.
R1#sh ip int br Interface IP-Address OK? Method Status Protocol FastEthernet0/0 192.168.10.1 YES manual up up FastEthernet1/0 192.168.10.1 YES manual up up FastEthernet1/1 192.168.30.1 YES manual up up FastEthernet2/0 192.168.11.1 YES manual up up FastEthernet2/1 192.168.12.1 YES manual up up FastEthernet3/0 192.168.13.1 YES manual up up FastEthernet3/1 unassigned YES unset administratively down down
Para poder validar las VRFs creadas con las interfaces asignadas a cada una de estas, se pueden usar los comandos show vrf o show ip vrf:
R1#sh vrf Name Default RD Protocols Interfaces cliente1 <not set> ipv4 Fa0/0 Fa2/0 cliente2 <not set> ipv4 Fa1/0 Fa2/1 cliente3 <not set> ipv4 Fa1/1 Fa3/0 R1#sh ip vrf Name Default RD Interfaces cliente1 <not set> Fa0/0 Fa2/0 cliente2 <not set> Fa1/0 Fa2/1 cliente3 <not set> Fa1/1 Fa3/0
Como se tienen las VRFs configuradas, y con interfaces asociadas, al momento de hacer un show ip route, se puede notar que no se muestra ninguna ruta en la tabla, y esto se debe a que en la GRT no se tiene ninguna red asociada, solo en las VRFs creadas:
R1#show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
+ - replicated route, % - next hop override
Gateway of last resort is not set
R1#
Pero si se hacen shows para ver las tablas de las VRFs, podrán encontrar las rutas configuradas en cada interfaz:
R1#show ip route vrf cliente1 Routing Table: cliente1 Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP + - replicated route, % - next hop override Gateway of last resort is not set 192.168.10.0/24 is variably subnetted, 2 subnets, 2 masks C 192.168.10.0/24 is directly connected, FastEthernet0/0 L 192.168.10.1/32 is directly connected, FastEthernet0/0 192.168.11.0/24 is variably subnetted, 2 subnets, 2 masks C 192.168.11.0/24 is directly connected, FastEthernet2/0 L 192.168.11.1/32 is directly connected, FastEthernet2/0 R1#show ip route vrf cliente2 Routing Table: cliente2 Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP + - replicated route, % - next hop override Gateway of last resort is not set 192.168.10.0/24 is variably subnetted, 2 subnets, 2 masks C 192.168.10.0/24 is directly connected, FastEthernet1/0 L 192.168.10.1/32 is directly connected, FastEthernet1/0 192.168.12.0/24 is variably subnetted, 2 subnets, 2 masks C 192.168.12.0/24 is directly connected, FastEthernet2/1 L 192.168.12.1/32 is directly connected, FastEthernet2/1 R1#show ip route vrf cliente3 Routing Table: cliente3 Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP + - replicated route, % - next hop override Gateway of last resort is not set 192.168.13.0/24 is variably subnetted, 2 subnets, 2 masks C 192.168.13.0/24 is directly connected, FastEthernet3/0 L 192.168.13.1/32 is directly connected, FastEthernet3/0 192.168.30.0/24 is variably subnetted, 2 subnets, 2 masks C 192.168.30.0/24 is directly connected, FastEthernet1/1 L 192.168.30.1/32 is directly connected, FastEthernet1/1 R1#
Como se esta trabajando con diferentes tablas de rutas, no es posible realizar ping o traceroute de la forma “normal”. Al igual que para revisar las tablas de rutas de una VRF específica se utiliza el comando seguido de vrf más el nombre de este, para hacer un ping, también es necesario indicar la VRF en la cual se encuentra la ruta a que queremos llegar:
R1#ping 192.168.11.10 source f0/0 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.11.10, timeout is 2 seconds: Packet sent with a source address of 192.168.10.1 ..... Success rate is 0 percent (0/5) R1#ping vrf cliente1 192.168.11.10 source f0/0 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.11.10, timeout is 2 seconds: Packet sent with a source address of 192.168.10.1 !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 4/6/12 ms R1#
Por lo tanto, al hacer el ping sin VRF, lo que hace el router es buscar la ruta en la GRT, y por este motivo, no se tiene respuesta, mientras que usando la VRF correcta, si se tiene respuesta.