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#
Комментариев нет:
Отправить комментарий