BGP EVPN FRR simple
Минимальная конфигурация EVPN по шагам
Это документ о настройке абсолютно минимальной конфигурации EVPN
Схема сети
Оригинал: Файл:FRR BGP EVPN 1.drawio
Тестовый стенд полностью виртуализирован.
На этой схеме:
- 2 маршрутизатора FRR выполняют роли PE (Provider Edge, маршрутизатор куда подключены клиентские устройства)
- Сеть tenant используется как транспортная сеть между маршрутизаторами (l2 сегмент)
- Каждый из PE имеет по 1 подключеному CE (Client Edge, маршрутизатор клиента подключенный к оборудованию провайдера)
- CE максимально упрощены - это просто IP адрес поднятый на бридже (но конечно ничто не мешает использовать отдельную виртуальную машину, разницы нет)
- Используется 1 интерфейс для поддключения CE
- Номер VNI (VxLAN Network Identifier) выбран абсолютно произвольно, такое значение взято что бы оно случайно не совпало ни с каким другим и было заведомо больше максимального номера влана
- Management сеть используется только для управлени маршрутизаторами (без нее можно обойтись) Интерфейсы в этой сети названы external по историческим причинам.
- Интерфейсы loopback изспользуются для построения сессий BGP
Настройка сети на маршрутизаторах
- Настройки на обоих маршрутизаторах идентичны (с точностью до адресов)
dummyподдерживается в относительно новых версияхnetplan(Убунту 24.04 поддерживает)
FRR1
network:
version: 2
dummy-devices:
loopback0:
addresses:
- 192.168.32.101/32
ethernets:
ens3:
dhcp4: false
dhcp6: false
addresses: ["10.80.6.253/24"]
set-name: "tenant"
match:
macaddress: "00:99:00:00:00:01"
ens5:
dhcp4: true
dhcp6: false
match:
macaddress: "00:99:00:00:00:03"
set-name: "external"
FRR2
network:
version: 2
dummy-devices:
loopback0:
addresses:
- 192.168.32.102/32
ethernets:
ens3:
dhcp4: false
dhcp6: false
addresses: ["10.80.6.252/24"]
set-name: "tenant"
match:
macaddress: "00:99:00:00:22:01"
ens5:
dhcp4: true
dhcp6: false
match:
macaddress: "00:99:00:00:22:03"
set-name: "external"
Настройка демона FRR
Эта часть разделена на 2 части - не относящееся к EVPN выжелено в отдельную часть
Подготовительная настройка
- Запустить OSPF в сети tenant для того что бы получить доступность интерфейсов loopback
- сделать редистрибьюцию маршрутов в OSPF (не уверене что нужно делать все три - static connected и kernel даже скорее всего нет)
- тут можно вполне обойтись статикой без OSPF но так сделано для большей "достоверности"
Немного заметок про настройку OSPF:
prefix-list REDISTRIBUTE- ...- префикс-листы что бы ограничить редистрибьюцию в OSPF только /32 (ge) сетями из диапазона192.168.32.0/24- В работе OSPF учавствует только интерфейс
tenant(no ip ospf passive,passive-interface defaul)
FRR1 OSPF
frr version 10.2.1 frr defaults traditional hostname frr1 log file /var/log/frr.log log syslog informational no ip forwarding no ipv6 forwarding service integrated-vtysh-config ! ip prefix-list REDISTRIBUTE-KERNEL-TO-OSPF-LOOPBACK-BLOCK seq 10 permit 192.168.32.0/24 ge 32 ip prefix-list REDISTRIBUTE-STATIC-TO-OSPF-LOOPBACK-BLOCK seq 10 permit 192.168.32.0/24 ge 32 ip prefix-list REDISTRIBUTE-CONNECTED-TO-OSPF-LOOPBACK-BLOCK seq 10 permit 192.168.32.0/24 ge 32 ! interface tenant no ip ospf passive exit ! router ospf ospf router-id 192.168.32.101 redistribute kernel route-map REDISTRIBUTE-KERNEL-TO-OSPF redistribute connected route-map REDISTRIBUTE-CONNECTED-TO-OSPF redistribute static route-map REDISTRIBUTE-STATIC-TO-OSPF passive-interface default network 10.80.6.0/24 area 0 exit ! route-map REDISTRIBUTE-KERNEL-TO-OSPF permit 10 match ip address prefix-list REDISTRIBUTE-KERNEL-TO-OSPF-LOOPBACK-BLOCK exit ! route-map REDISTRIBUTE-STATIC-TO-OSPF permit 10 match ip address prefix-list REDISTRIBUTE-STATIC-TO-OSPF-LOOPBACK-BLOCK exit ! route-map REDISTRIBUTE-CONNECTED-TO-OSPF permit 10 match ip address prefix-list REDISTRIBUTE-CONNECTED-TO-OSPF-LOOPBACK-BLOCK exit ! end
FRR2 OSPF
frr version 10.2.1 frr defaults traditional hostname frr2 log file /var/log/frr.log log syslog informational no ip forwarding no ipv6 forwarding service integrated-vtysh-config ! ip prefix-list REDISTRIBUTE-KERNEL-TO-OSPF-LOOPBACK-BLOCK seq 10 permit 192.168.32.0/24 ge 32 ip prefix-list REDISTRIBUTE-STATIC-TO-OSPF-LOOPBACK-BLOCK seq 10 permit 192.168.32.0/24 ge 32 ip prefix-list REDISTRIBUTE-CONNECTED-TO-OSPF-LOOPBACK-BLOCK seq 10 permit 192.168.32.0/24 ge 32 ! ! interface tenant no ip ospf passive exit ! router ospf ospf router-id 192.168.32.102 redistribute kernel route-map REDISTRIBUTE-KERNEL-TO-OSPF redistribute connected route-map REDISTRIBUTE-CONNECTED-TO-OSPF redistribute static route-map REDISTRIBUTE-STATIC-TO-OSPF passive-interface default network 10.80.6.0/24 area 0 exit ! route-map REDISTRIBUTE-KERNEL-TO-OSPF permit 10 match ip address prefix-list REDISTRIBUTE-KERNEL-TO-OSPF-LOOPBACK-BLOCK exit ! route-map REDISTRIBUTE-STATIC-TO-OSPF permit 10 match ip address prefix-list REDISTRIBUTE-STATIC-TO-OSPF-LOOPBACK-BLOCK exit ! route-map REDISTRIBUTE-CONNECTED-TO-OSPF permit 10 match ip address prefix-list REDISTRIBUTE-CONNECTED-TO-OSPF-LOOPBACK-BLOCK exit ! end
Проверка работы OSPF
Соседи видят друг-друга
frr1# show ip ospf neighbor
Neighbor ID Pri State Up Time Dead Time Address Interface RXmtL RqstL DBsmL 192.168.32.102 1 Full/DR 22h48m06s 30.094s 10.80.6.252 tenant:10.80.6.253 0 0 0
frr2# show ip ospf neighbor
Neighbor ID Pri State Up Time Dead Time Address Interface RXmtL RqstL DBsmL 192.168.32.101 1 Full/Backup 22h48m23s 33.773s 10.80.6.253 tenant:10.80.6.252 0 0 0
Просмотр базы данных OSPF (на примере frr2):
show ip ospf database
OSPF Router with ID (192.168.32.102)
Router Link States (Area 0.0.0.0)
Link ID ADV Router Age Seq# CkSum Link count
192.168.32.101 192.168.32.101 1533 0x80000032 0x037a 1
192.168.32.102 192.168.32.102 1542 0x80000032 0xe497 1
Net Link States (Area 0.0.0.0)
Link ID ADV Router Age Seq# CkSum
10.80.6.252 192.168.32.102 1692 0x80000030 0x6e90
AS External Link States
Link ID ADV Router Age Seq# CkSum Route
192.168.32.1 192.168.32.101 1683 0x80000030 0xe233 E2 192.168.32.1/32 [0x0]
192.168.32.1 192.168.32.102 1552 0x80000030 0xdc38 E2 192.168.32.1/32 [0x0]
192.168.32.2 192.168.32.101 1563 0x80000030 0xd83c E2 192.168.32.2/32 [0x0]
192.168.32.2 192.168.32.102 1612 0x80000030 0xd241 E2 192.168.32.2/32 [0x0]
192.168.32.101 192.168.32.101 1483 0x80000030 0xf6ba E2 192.168.32.101/32 [0x0]
192.168.32.102 192.168.32.102 12 0x80000031 0xe4c9 E2 192.168.32.102/32 [0x0]
|
Уточнение: |
EVPN
Cхема работы (приблизительная
<TODO>
Существует два типа информации о доступности сети, которую VTEP передает через BGP EVPN:
- VNI, в которых они заинтересованы (маршруты L3)
- локальный MAC-адрес для каждого VNI (маршруты L2)
Начальная настройка BGP
На начальном этапе в конфигурации отсутствуют VxLAN интерфейсы, пока просто проверка что BGP-сессия поднимаются нормально