пятница, 27 июня 2014 г.

VRF Basic Example




VRF на данный момент не является широко документированным и полно разобранным материалом. К тому же полносвязно и доходчиво он рассматривается и понимается -- как механизм в MPLS в курсе CCIE. Однако для "зашедших на огонёк" тут есть немного мат части. 

Virtual Routing and Forwarding (VRF) -- технология позволяющая создать несколько виртуальных маршрутизаторов на одной железке, каждый со своей таблицей маршрутизации. Каждый VRF состоит из трёх основных компонентов: 
1) RIB ( Routing Information Base ) -- таблицы маршрутизации 
2) CEF FIB ( Forwarding Information Base ), заполненной на основании RIB этой VRF ( если включен CEF) 
3) Отдельной instance или процесса протокола маршрутизации, который используется для обмена маршрутами с CE, которые должны поддерживаться этой VRF. Графический разворот трёх пунктов дан на картинке вначале. Стоит учесть, что он сильно упрощён только под данный пример. 

Дано: В нашем случае рассмотрим пример взаимодействия PE (Provider Edge) и нескольких клиентов (CE - Client Edge) 

Задача: создать для них 3 виртуальных таблицы маршрутизации типа VRF, при этом подсети и адреса клиентов будут идеентичны. 




Решение: 

1) Задаём три VRF (Virtual Routing and Forwarding) и определяем RD -- route distinguisher, по факту это уникальный и индивидуальный идентификатор для каждого VRF. По сути, RD, уникально идентифицирует маршрут для всей сети, например, провайдера. Синтаксис приведён для справки, чтобы было понятно как формируется команда и из чего состоит.

PE(config)#ip vrf VRF-ClientA
PE(config-vrf)#rd ?
  ASN:nn or IP-address:nn  VPN Route Distinguisher
PE(config-vrf)#rd 2:1
PE(config-vrf)#exit

PE(config)#ip vrf VRF-ClientB
PE(config-vrf)#rd 3:1
PE(config-vrf)#exit

PE(config)#ip vrf VRF-ClientC
PE(config-vrf)#rd 4:1
PE(config-vrf)#exit
PE(config)#
2) Конфигурируем sub-интерфейсы и накладываем VRF Forwarding на интерфейсы. Интересный момент, что в ином случае вышла бы ошибка "Overlaps" с другими интерфейсами по range IP

PE(config)#int fa 1/1.2
PE(config-subif)#encapsulation dot1Q 2
PE(config-subif)#ip vrf forwarding VRF-ClientA
PE(config-subif)#ip add 100.100.100.1 255.255.255.252
PE(config-subif)#exit

PE(config)#int fa1/1.3
PE(config-subif)#encapsulation dot1Q 3
PE(config-subif)#ip vrf forwarding VRF-ClientB
PE(config-subif)#ip add 100.100.100.1 255.255.255.252
PE(config-subif)#exit

PE(config)#int fa1/1.4
PE(config-subif)#encapsulation dot1Q 4
PE(config-subif)#ip vrf forwarding VRF-ClientC
PE(config-subif)#ip add 100.100.100.1 255.255.255.252
PE(config-subif)#exit

PE(config)#int fa 1/1
PE(config-if)#no shutdown
3) Настраиваем клиентов на адрес 100.100.100.2/30 255.255.255.252

ClientA(config)#int fa 1/0
ClientA(config-if)#ip add 100.100.100.2 255.255.255.252
ClientA(config-if)#no sh
ClientA(config-if)#exit

ClientB(config)#int fa 1/0
ClientB(config-if)#ip add 100.100.100.2 255.255.255.252
ClientB(config-if)#no sh
ClientB(config-if)#exit

ClientC(config)#int fa 1/0
ClientC(config-if)#ip add 100.100.100.2 255.255.255.252
ClientC(config-if)#no sh
ClientC(config-if)#exit
4) Отчёт и проверка

 

ClientA#ping 100.100.100.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 100.100.100.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 48/88/128 ms

ClientB(config)#do ping 100.100.100.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 100.100.100.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 40/92/144 ms

ClientC#ping 100.100.100.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 100.100.100.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 72/86/108 ms


PE#ping vrf VRF-ClientA 100.100.100.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 100.100.100.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 68/82/116 ms

PE#ping vrf VRF-ClientB 100.100.100.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 100.100.100.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 44/73/100 ms

PE#ping vrf VRF-ClientC 100.100.100.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 100.100.100.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 52/86/148 ms
5) Для особо упоротых как я, конечно же, вишенка на тортик -- конфигурация свитча = ) Для GNS3 интерфейсы указаны в скобках, если вы будете поднимать в GNS3, а не на реальном железе, как я. 





Для реальной железки

Sw1(config)#int e0/0
Sw1(config-if)#switchport trunk encapsulation dot1q
Sw1(config-if)#switchport mode trunk

Sw1(config)#int e0/1
Sw1(config-if)#switchport mode access
Sw1(config-if)#switchport access vlan 2  

Sw1(config)#int e0/2
Sw1(config-if)#switchport mode access
Sw1(config-if)#switchport access vlan 3 

Sw1(config)#int e0/3
Sw1(config-if)#switchport mode access
Sw1(config-if)#switchport access vlan 4 


6) Пробежимся по show

PE#sh ip vrf
  Name                             Default RD          Interfaces
  VRF-ClientA                      2:1                 Fa1/1.2
  VRF-ClientB                      3:1                 Fa1/1.3
  VRF-ClientC                      4:1                 Fa1/1.4


PE#sh ip vrf detail
VRF VRF-ClientA (VRF Id = 1); default RD 2:1; default VPNID <not set="">
  Interfaces:
    Fa1/1.2
VRF Table ID = 1
  No Export VPN route-target communities
  No Import VPN route-target communities
  No import route-map
  No export route-map
  VRF label distribution protocol: not configured
  VRF label allocation mode: per-prefix

VRF VRF-ClientB (VRF Id = 2); default RD 3:1; default VPNID <not set="">
  Interfaces:
    Fa1/1.3
VRF Table ID = 2
  No Export VPN route-target communities
  No Import VPN route-target communities
  No import route-map
  No export route-map
  VRF label distribution protocol: not configured
  VRF label allocation mode: per-prefix

VRF VRF-ClientC (VRF Id = 3); default RD 4:1; default VPNID <not set="">
  Interfaces:
    Fa1/1.4
VRF Table ID = 3
  No Export VPN route-target communities
  No Import VPN route-target communities
  No import route-map
  No export route-map
  VRF label distribution protocol: not configured
  VRF label allocation mode: per-prefix

PE#



PE#sh ip vrf interfaces
Interface              IP-Address      VRF                              Protocol
Fa1/1.2                100.100.100.1   VRF-ClientA                      up
Fa1/1.3                100.100.100.1   VRF-ClientB                      up
Fa1/1.4                100.100.100.1   VRF-ClientC                      up
PE#
PE#sh ip protocols vrf VRF-ClientA
*** IP Routing is NSF aware ***

PE#

PE#sh ip ro vrf VRF-ClientA

Routing Table: VRF-ClientA
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

      100.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C        100.100.100.0/30 is directly connected, FastEthernet1/1.2
L        100.100.100.1/32 is directly connected, FastEthernet1/1.2
PE#


PE#sh ip bgp vpnv4 vrf VRF-ClientA % BGP not active PE#

Комментариев нет:

Отправить комментарий