Часть 5. VxLAN. EVPN L2
Цель
Настроить Overlay на основе VxLAN EVPN для L2 связанности между клиентами
Ожидаемый результат
Настроен BGP peering между Leaf и Spine в AF l2vpn evepn.
Настроена и проверена IP связанность между клиентами в первой зоне.
В документации зафиксирован план работ, адресное пространство, схема сети и конфигурация устройств.
Небольшое введение
Перед началом работы на этим Д/З немного меняем топологию сети. Делаем задел на будущее - масштабирование в пределах одного ДЦ, масштабирование в 2 и более ДЦ с растягиваением L2 (чего делать очень не рекомендуют), включение в схему с l2vni файрволов.


Представляем, что у нас:
2 Spine-коммутатора в разных сетевых стойках
2 стойки и в каждой по 2 Leaf-коммутатора и 1 гипервизор на базе VMware ESXi 8.x
1 стойка с парой border-leaf и/или service-leaf. Всего в схеме теперь 8 коммутаторов и 2 гипервизора.
Идем в свой выдуманный ДЦ в Netbox и смотрим на расположение оборудования:

Мы же в самом начале этого увлекательного путешествия решили, что:
Spine-коммутаторы расположены в разных серверных стойках
Leaf-коммутаторы сгруппированы по 2 в качестве Top of Rack устройств (пока это standalone устройства, дальше будем пробовать их в m-lag).
Из-за добавившихся устройств возникла необходимость в обновлении BGP сессий внутри Netbox. Проблема с автоматизацией или генерацией все еще актуальна и не решена, но для минимизации ошибок воспользуемся Excel'ем.
В файле нет рокет сайнс. На первом листе справочники устройств, AS и адресов. На втором листе их можно выбрать из drop-down меню:

А потом скопировать и вставить в поле импорта Netbox:

В результате получается вполне годный список сессий для последующего использования в Netbox Provisioning -> Config Templates

Здесь стоит сделать паузу. Куратор курса дал направление в сторону динамических соседей. Это нужно обдумать, так как инфо в Netbox нужно будет отдавать с устройств. Подумаем позже над этим.
Достижение результата
Шаблон конфигурации
Как и прежде, конфигурация устройств генерируется внутри Netbox на основе его данных через шаблоны. Методом проб и ошибок я пришел к тому, что шаблон нужно разделить для групп устройств. Теперь их два - один для Spine'ов hw5_netbox_spine_bgp_template.jinja2, второй - для Leaf'ов hw5_netbox_leaf_bgp_template.jinja2.
Тут, пожалуй, стоит подробнее остановиться на том, как шаблоны работают.
Например, для устройства no-osl-dc1-f1-r03k01-lf01 на основании настроек интерфейсов в Netbox сгенерируется следующий конфиг
Конфигурационные файлы
Сгенерированные в Netbox файлы подложены как start-up config в лабе EVE-NG как есть без ручных изменений:
Проверка настроек
Ниже приложены скриншоты с устройства no-osl-dc1-f1-r03k03-lf02, к которому подключен тестовый PC на Ubuntu. С этого PC запушены ping до всех гипервизиров: 192.168.10.1, 192.168.10.2, 192.168.10.3
Вывод команды show interfaces vxlan 1

show interfaces vxlan 1Вывод команды show vxlan vtep

show vxlan vtepВывод команд show mac address-table и show vxlan address-table

show mac address-table и show vxlan address-tableВывод команды show bgp evpn route-type mac-ip

show bgp evpn route-type mac-ipТестирование на отказ
Сценарий 1. Перезагрузка одного из Spine-коммутаторов
В данном сценарии перезапускаем no-osl-dc1-f1-r01k01-spn01

Проверяем устройство no-osl-dc1-f1-r03k03-lf02

Видим в логе сообщения
Dec 13 07:08:14 no-osl-dc1-f1-r03k03-lf02 Bgp: %BGP-3-NOTIFICATION: sent to neighbor 10.16.2.10 (VRF default AS 4200131329) 6/10 (Cease/BFD down <Hard Reset>) 0 bytes
И проверяем доступность гипервизоров с тестового PC

Сценарий 2. Перезагрузка одного из Leaf-коммутаторов в паре Rack 1
В данном сценарии перезапускаем no-osl-dc1-f1-r03k01-lf01

Проверяем доступность гипервизора и он не доступен xD

Пробуем Suspend Link в EVE-NG

Убеждаемся, что гипервизор доступен через Leaf no-osl-dc1-f1-r03k01-lf02

В данном случае обращаем внимание на вывод:
Это значит, что mac-адрес 0050.5666.b8eb стал доступен через leaf no-osl-dc1-f1-r03k01-lf02
А вывод команды show vxlan address-table:
Говорит о том, что mac-адрес переезжал и был получен через другой VTEP
Послесловие
Отличное задание!
Хочу выразить благодарность кураторам курса за наводящие ответы и неравнодушным однопоточникам за подсказку при траблшутинге. Особенно за команду neighbor SPINE-PEERS send-community extended, без которой не работало вообще ничего :xD
Last updated