Раз уж мы настраиваем EVPN/VXLAN в рамках стандартной Clos-топологии, то стоит рассмотреть все части этой фразы. И стандартную Clos-топологии мы уже сделали в underlay.
Теперь же время рассмотреть EVPN/VXLAN (netlab поддерживает еще и MPLS, но VXLAN идет дефолтно). За его настройку отвечает отдельный модуль evpn и модуль vxlan.
Так как все лабы проводятся на образах arista, то выберем их подход в построении фабрики, то есть eBGP over eBGP ( ну и потому что iBGP over IGP прост, и нюансов при настройке в netlab почти нет).
Так как ариста отказалась запускаться при таком количестве плагинов, этот пример и лаба будут на frr.
Также лаба не запускается в codespace из-за отсутствия там модулей ядра.
Дальнейшие лабы с arista будут iBGP IGP.
Fixed
Лаба запускается с ceos и работает на нем в codespace. lab05 обновил, но уменьшил количество спайнов до одного.
Не забудьте, что нужно скачать образ cEOS
Overlay
Для начала настроим bgp, чтобы evpn строился от lo интерфейсов с multihop
plugin:[ebgp.multihop,fabric] # добавим плагин для установления mh сессийevpn.session:[] # отключаем глобально evpn, чтобы не строил лишнегоbgp.multihop.activate.ipv4:[evpn] # и активируем для mh соседстваbgp.community.ebgp:[standard,extended] # ну extended community, без него не заработаетbgp.sessions.ipv4:[ebgp] # и включаем ipv4 af только для ebgp соседства # (а то попробует построить ibgp для spine)bgp.multihop.sessions: # и нужно прописать какие сессии нужно устанавливать-L1-S1-L2-S1-L3-S1-L1-S2-L2-S2-L3-S2
Теперь сконфигурируем фабрику
L2VNI
А теперь нужно сделать базовую связанность между хостами
L3VNI
И добавим l3 связанность (symmetric irb):
Теперь хосты из разных vlan могут общаться между собой.
Но есть проблема, на каждом лифе у одинаковых svi свои ip. А хотелось бы anycast. Давайте добавим. Для этого тоже есть отдельный модуль gateway.
Модуль берет последний адрес в сети как адрес для anycast gateway.
External connectivity
Добавим дополнительные роутер, и соединим с L3 в каждом vrf
При включеном bgp в vrf устанавливаются соседства между лифами по svi интерфейсам, а с выключеным не устанавливаются соседства с ext_rtr. Решаемо с помощью netlab config, но не критично в лабораторных.
В итоге получилась такая схема:
Схема сгенерирована с помощью netlab graph и визуализирована в dreampuf.github.io
fabric:
spines: 2
spine:
module: [bgp, evpn] # тут включим на спайнах evpn
bgp:
as: 65100
next_hop_self: false
leafs: 3
leaf:
module: [vlan, vxlan, bgp, evpn, vrf] # а вот лифам нужно больше
bgp:
as: "{65000 + count}"
next_hop_self: false
nodes: # добавим сами хосты
h1:
device: linux
h2:
device: linux
vlans:
red: # создадим влан
mode: bridge # без svi
vni: 1001
links: [L1-h1, L2-h2] # и подключим хосты аксесами к лифам
vrfs:
red:
evpn.transit_vni: 5042 # тут этого достаточно, но необходимо
vlans:
red1:
mode: irb # c svi, есть еще route, он для router on a stick
vrf: red
vni: 1001
links: [L1-h1]
red2:
mode: irb # c svi, есть еще route, он для router on a stick
vrf: red
vni: 1002
links: [L2-h2]
fabric:
leaf:
module: [vlan, vxlan, bgp, evpn, vrf, gateway] # добавим модуль на нужные устройства
vlans:
red1:
gateway: True # и включим в нужном влане
nodes:
ext_rtr:
device: frr
module: [bgp]
bgp:
as: 65999
originate: "172.16.0.0/12" # анонсируем summary
vrfs:
red:
evpn.transit_vni: 5042
# bgp: false # тут возникла проблема, о которой ниже
links: [ext_rtr-L3]
blue:
evpn.transit_vni: 5043
# bgp: false
links: [ext_rtr-L3]