marți, 19 august 2014

VRF-uri sau cum virtualizam un router Cisco

Asa cum virtualizam un switch folosind Vlan-uri, tot asa putem virtualiza un router folosind VRF-uri (Virtual Routing & Forwarding). De exemplu un ISP instaleaza intr-o cladire de birouri echipamentele de transmisuni si un router pentru acces la Internet. ISP conecteaza primul client si acesta ii solicita sa configureze routerul cu adresa IP 192.168.1.1/24 pentru aceasta este adresa IP folosita de calculatoarele sale ca default-gateway. Al doilea client doreste si el acces la Internet, dar el doreste ca routerul ISP sa fie configurat cu adresa 192.168.1.254/24. Desi adresele IP sunt diferite, totusi sunt in acelasi subnet si stim ca routerele nu pot avea doua interfete diferite in acelasi subnet in aceeasi tabela de rutare. Cum adica aceeasi tabela de rutare? Dar cate tabele de rutare are un router? Raspunsul corect este ca un router are in mod implicit o tabela de rutare (denumita si tabela globala), dar poate fi configurat cu mai multe tabele de rutare. Castigul este ca putem configura aceleasi adrese IP (sau subneturi) daca acestea apartin diferitelor tabele de rutare.
La fel si switch-urile Cisco, sunt configurate in mod implicit cu Vlan-ul 1.
Cum se modifica pachetele IP care tranziteaza un astfel de router? Raspunsul este ca nu se schimba, sunt tratate ca si cum tranziteaza un router dedicat, cu interfete separate, cu tabela de rutare proprie.
Daca discutam si despre MPLS, atunci intr-adevar mesajele IP sufera niste modificari, prin incapsularea in frame-uri MPLS.

In continuare vom analiza problema de mai sus in care:
- clientul 1 doreste acces la Internet si in LAN adresele IP sunt din subnetul 192.168.1.0/24, default-gateway 192.168.1.1; ISP aloca adresa publica 100.50.25.2
- clientul 2 doreste acces la Internet si in LAN adresele IP sunt din subnetul 192.168.1.0/24, default-gateway 192.168.1.254; ISP aloca adresa publica 100.50.25.6
- ISP separa cele doua legaturi la Internet cu ajutorul subintefetelor 802.1Q
- in tabela globala de rutare se gaseste doar subinterfata de monitorizare pe care o foloseste ISP pentru monitorizare si conectare prin Telnet/SSH; ISP aloca adresa publica 100.50.25.254

Topologie


Configurarea tabelei de rutare globale si a interfetei de monitorizare

interface Ethernet0/0.2
   encapsulation dot1Q 2
   ip address 100.50.25.254 255.255.255.252
   exit
ip route 0.0.0.0 0.0.0.0 100.50.25.253

! definire aliasuri pentru comenzi
alias exec siibe show ip interface brief | exclude unassigned
alias exec sir show ip route
end
siibe
sir


Configurarea serviciului de acces la Internet pentru primul client

ip vrf Client1
   rd 1:1
   exit
interface Ethernet0/0.10
   encapsulation dot1Q 10
   ip vrf forwarding Client1
   ip address 100.50.25.2 255.255.255.252
   ip nat outside
   exit
ip route vrf Client1 0.0.0.0 0.0.0.0 100.50.25.1

interface Vlan 101
   ip vrf forwarding Client1
   ip address 192.168.1.1 255.255.255.0
   ip nat inside
   no shutdown
   exit
access-list 100 permit ip 192.168.1.0 0.0.0.255 any
ip nat inside source list 100 interface Ethernet0/0.10 vrf Client1 overload
end
siibe
sir vrf Client1
ping vrf Client1 100.50.25.1

In mod practic, am asociat interfetele cu un VRF denumit Client1 (vezi comanda ip vrf forwarding ...) si apoi am definit o ruta implicita ca apartinand tabelei de rutare corespunzatoare acestui VRF. Comanda de vizualizare a tabelei de rutare primeste cuvintul cheie vrf urmat de numele VRF-ului, la fel utilitarul ping.
Comanda de configurare pentru PAT primeste si aceasta cuvantul cheie vrf urmat de numele VRF-ului.
Definirea unui VRF are doua componente importante: numele si parametrul RD (Route Distinguisher). RD este un numar pe 64 de biti care trebuie sa fie unic, pe acelasi router nu pot exista doua VRF-uri cu acelasi RD. Totusi, adminul nu poate alege decat 48 de biti din cei 64 (16 biti sunt rezervati pentru campul Type). Astfel, RD se poate scrie:
- AS_16_biti:numar_32_biti (Type 0)
- IP:numar_16_biti (Type 1)
- AS_32_biti:numar_16_biti (Type 2)

Configurarea serviciului de acces la Internet pentru al 2-lea client

ip vrf Client2
   rd 1:2
   exit
interface Ethernet0/0.11
   encapsulation dot1Q 11
   ip vrf forwarding Client2
   ip address 100.50.25.6 255.255.255.252
   ip nat outside
   exit
ip route vrf Client2 0.0.0.0 0.0.0.0 100.50.25.5

interface Vlan 102
   ip vrf forwarding Client2
   ip address 192.168.1.254 255.255.255.0
   ip nat inside
   no shutdown
   exit
access-list 100 permit ip 192.168.1.0 0.0.0.255 any
ip nat inside source list 100 interface Ethernet0/0.11 vrf Client2 overload
end
siibe
sir vrf Client2
ping vrf Client2 100.50.25.5

Observatie: Comanda ip vrf forwarding ... se va folosi inainte de comanda ip address ..., altfel adresa IP existenta se va sterge, evenimentul este anuntat in consola si trebuie reconfigurata adresa IP.
Concluzie: un pachet IP care intra in router pe o interfata asociata cu un VRF nu poate iesi pe o interfata dintr-un alt VRF; cel mult poate iesi pe o interfata din tabela globala de rutare, folosind o configuratie corespunzatoare.

Configuratii suplimentare facem in cadrul cursurilor CCNA de la academia Asociatia Netschool.