Санкции, проблемы с параллельным импортом и требования регулятора ставят нас перед неизбежным вопросом - чем заменить привычное западное? Да так, чтобы не переучиваться с нуля на новую архитектуру и синтаксис. К сожалению, заявления производителей не всегда соответствует реальности. Поэтому, что железо, что ПО нужно тщательно тестировать. Что мы и делаем в нашей технической лаборатории. 

Недавно к нам приехали коммутаторы для ЦОД российского вендора Eltex. И эта статья открывает цикл материалов, посвященных тестированию данного оборудованию в разных условиях. 

Меня зовут Евгений Алыхов, больше 20 лет я занимаюсь внедрением и тестированием оборудования для ЦОД. Под катом предлагаю рассмотреть процесс работы с коммутаторами Eltex от «достаем из коробки» и до «ура, заработало!» на примере сбора простейшей фабрики. Я детально разберу и дам рекомендации по настройке решения  и его интеграции с иностранным оборудованием. Расскажу о плюсах и минусах и поделюсь некоторыми лайфхаками, которые помогут при первом знакомстве с данными коммутаторами. 

Поставка и распаковка

Eltex – единственная компания, которая привозит коммутаторы в деревянных ящиках, внутри которых лежат коробки. Что ж, это необычно, но в этих ящиках оборудование точно доедет целым и невредимым. 

В качестве тестового оборудования у нас есть:

Модель

Количество

Как будем использовать

MES5500-32

3

Spine

MES5410-48

4

Leaf

100G QSFP28 Copper Twinax Cable 1m

15

crossconnect

Лицензии тоже есть, но о них мы поговорим чуть позже. А пока – это то, что мы получаем из коробок:

sh license

Features installed:

                   Licenses  Licenses

     Feature       installed used      Active

------------------ --------- --------- -------

Licenses installed:

Итак, у нас есть подопытное оборудование, попробуем собрать на нем что-то современное, где есть такие умные слова как VxLAN, EVPN, BGP, Underlay/Overlay, Anycast Gateway, VNI, BUM traffic и пр. Построим VxLAN фабрику! Легких путей мы не ищем, поэтому часть сети мы настроим правильно (по феншую), а часть по принципу “а так будет работать?” И, конечно, учтем интересы начинающих сетевых инженеров,  которые только знакомятся с оборудованием Eltex и подсветим не только хитроумные команды для создания фабрики, но и базовые настройки для первоначального доступа к управлению оборудованием.

Организация удаленного управления

Для начала настроим удаленное управление:

terminal no prompt           - очень полезная команда, потому что очень много будет спрашивать «Y/N?» без нее

conf t

ip vrf MGMT

exit

hostname <hostname>

username <username> privilege 15 encryption-algorithm sha-512 password <password> 

aaa authentication login default local

ip ssh server vrf MGMT

interface oob

 ip vrf MGMT

 ip address 172.23.84.15 255.255.255.0

 no ip address dhcp

ip default-gateway 172.23.84.1 vrf MGMT 

aaa authentication login default local

line ssh 

 login authentication default

И здесь сразу странное поведение: это вывод конфигурации на настроенном оборудовании, но если я его скопирую и вставлю на следующий коммутатор, то она не применится. Всё из-за того, как работает применение VRF на интерфейсе и преднастроенных командах на OOB. Чтобы иметь возможность настроить OOB, команды должны идти в таком порядке:

interface oob

 no ip address dhcp

 no ip address

 ip vrf MGMT

 ip address 172.23.84.15 255.255.255.0

exit

Underlay

Что ж, удаленный доступ настроен и теперь настала пора придумать какой-то дизайн для тестирования. Начнем с L1 и underlay. У нас достаточно оборудования, чтобы придумать схему с MultiPod, а потому давайте соединим и настроим всё вот таким образом:

Здесь обращаю внимание на линки eSpine2-1 в сторону Leaf-коммутаторов – там есть параллельные линки в сторону eLeaf2-2 для проверки ECMP и есть Port-Channel в сторону eLeaf2-1 (а почему нет?). Вот его-то настройки в качестве примера и приведем ниже (полную настройку всех коммутаторов приведу в конце статьи). При этом в качестве underlay протокола маршрутизации используем OSPF.

hostname eSpine2-1

!

ip ssh server vrf MGMT

!

interface HundredGigabitEthernet1/0/1

 channel-group 1 mode auto

exit

!

interface HundredGigabitEthernet1/0/2

 channel-group 1 mode auto

exit

!

interface HundredGigabitEthernet1/0/3

 ip address 10.2.1.5 255.255.255.252

exit

!

interface HundredGigabitEthernet1/0/4

 ip address 10.2.1.9 255.255.255.252

exit

!

interface HundredGigabitEthernet1/0/31

 ip address 10.1.255.2 255.255.255.252

exit

!

interface HundredGigabitEthernet1/0/32

 ip address 10.1.255.6 255.255.255.252

exit

!

interface Port-Channel1

 ip address 10.2.1.1 255.255.255.252

exit

!

interface loopback1

 ip address 10.1.0.15 255.255.255.255

!

router ospf 100

 network 10.1.0.15 area 0.0.0.0

 network 10.1.255.2 area 0.0.0.0

 network 10.1.255.6 area 0.0.0.0

 network 10.2.1.1 area 0.0.0.0

 network 10.2.1.5 area 0.0.0.0

 network 10.2.1.9 area 0.0.0.0

 router-id 10.1.0.15

exit

Здесь из интересного следует отметить, что в настройке network под OSPF-процессом можно указать только direct connected IP-адрес, нельзя задать range, как у других вендоров. Это заставляет переписывать все команды network для каждого коммутатора. Неудобно, но O’key…

Но вот что достаточно уникально для Eltex – это вариант настройки OSPF network type point-to-point. Если у всех вендоров эта настройка выполняется в меню интерфейса, то у Eltex появляется новая сущность: «interface ip», в контексте которой есть эта настройка.

То есть наша конфигурация еще дополняется следующим:

eSpine2-1#conf t

interface ip 10.1.255.2

 ip ospf network point-to-point

interface ip 10.1.255.6

 ip ospf network point-to-point

interface ip 10.2.1.1

ip ospf network point-to-point

interface ip 10.2.1.5

ip ospf network point-to-point

interface ip 10.2.1.9

 ip ospf network point-to-point

Ну и вот мы дошли до необходимых лицензий, ведь сейчас мы не можем даже настроить BGP:

eSpine1-1(config)#router ?

  isis                     Intermediate System to Intermediate System (IS-IS).

  msdp                     Configure MSDP.

  ospf                     Configure OSPF.

  rip                      Routing Information Protocol (RIP)

eSpine1-1(config)#       

У нас есть лицензии для всех коммутаторов. Загружаю через USB: eSpine1-1#copy usb://ESBE001666.demo flash:

20-Mar-2025 04:53:39 %COPY-I-FILECPY: Files Copy - source URL usb://ESBE001666.demo destination URL flash://ESBE001666.demo

20-Mar-2025 04:53:39 %COPY-N-TRAP: The copy operation was completed successfully

Copy: 2860 bytes copied in 00:00:01 [hh:mm:ss]

eSpine1-1#boot license flash:ESBE001666.demo

20-Mar-2025 04:53:47 %COPY-I-FILECPY: Files Copy - source URL flash://ESBE001666.demo destination URL flash://system/licenses/ESBE001666.demo

20-Mar-2025 04:53:47 %LICENSE-I-TRIAL-INSTALL: Trial license file ESBE001666.demo was installed.

20-Mar-2025 04:53:47 %COPY-N-TRAP: The copy operation was completed successfully

Copy: 2860 bytes copied in 00:00:01 [hh:mm:ss]

И посмотрим, как изменился доступ к функционалу, которого раньше не было:

eSpine1-1#sh license 

Features installed:

                   Licenses  Licenses         

     Feature       installed used      Active 

------------------ --------- --------- -------

BGP                1         0         No     

EVPN               1         0         No     

Licenses installed:

  License name: ESBE001666.demo

  ELM License version: 1.0

  Trial license with time-limited expiration

    Total duration: 2 months, 88 days

    Time to expire: 2 months, 88 days

  Valid for device: ESBE001666 (90:54:b7:82:53:80)

  Status: Active after reboot

  Features:

    BGP, EVPN

А вот эта строчка  совсем не веселит:

  Status: Active after reboot

И это же подтверждается колонкой «Licenses used = 0».

Неужели для активации лицензии потребуется перезагрузка коммутатора? Проверим конфигурацию:

eSpine1-1(config)#router ?

  isis                     Intermediate System to Intermediate System (IS-IS).

  msdp                     Configure MSDP.

  ospf                     Configure OSPF.

  rip                      Routing Information Protocol (RIP)

eSpine1-1(config)#       

Да, нужна перезагрузка.

eSpine1-1#wr

Overwrite file [startup-config].... (Y/N)[N] ?Y

20-Mar-2025 04:54:17 %COPY-I-FILECPY: Files Copy - source URL running-config destination URL flash://system/configuration/startup-config

20-Mar-2025 04:54:17 %COPY-N-TRAP: The copy operation was completed successfully

eSpine1-1#reload

This command will reset the whole system and disconnect your current session. Do you want to continue ? (Y/N)[N] Y

20-Mar-2025 04:54:26 %RNDMISC-A-RELOAD: Reload requested administratively by user croc over ssh, source 10.22.11.168

Shutting down ...

Shutting down ...

И проверяем статус после перезагрузки:

eSpine1-1#sh license

Features installed:

                   Licenses  Licenses

     Feature       installed used      Active

------------------ --------- --------- -------

BGP                1         1         Yes

EVPN               1         1         Yes

Licenses installed:

  License name: ESBE001666.demo

  ELM License version: 1.0

  Trial license with time-limited expiration

    Total duration: 2 months, 88 days

    Time to expire: 2 months, 87 days, 22 hours, 32 minutes, 23 seconds

  Valid for device: ESBE001666 (90:54:b7:82:53:80)

  Status: Active

  Features:

    BGP, EVPN

eSpine1-1(config)#router ?

  bgp                      Border Gateway Protocol (BGP).            – вот он, родимый!

  isis                     Intermediate System to Intermediate System (IS-IS).

  msdp                     Configure MSDP.

  ospf                     Configure OSPF.

  rip                      Routing Information Protocol (RIP)

Итак, все лицензии установлены, коммутаторы перезагружены и соединены между собой физически. Настроим BGP по такой схеме:

И сделаем всё по красоте! Кстати, это означает, что мы всё продумали, задокументировали и настроили в лучших традициях (как сказано в validated design). Господа эксперты, которые уже знают Eltex и особенности построения на нем фабрики, наверно, уже заметили подводный камень, который я заложил в эту схему.

Давайте, для себя, зафиксируем всё в таблице:

Коммутатор

BGP AS

BGP Update source (Loopback 1)

eSpine1-1

65001

10.1.0.11

eSpine1-2

65001

10.1.0.12

eLeaf1-1

65001

10.1.0.13

eLeaf1-2

65001

10.1.0.14

eSpine2-1

65002

10.1.0.15

eLeaf2-1

65002

10.1.0.16

eLeaf2-2

65002

10.1.0.17

Конфигурация для Spine (на примере eSpine1-1 (вы же помните, что конфигурация остальных коммутаторов будет в конце статьи?)):

router bgp 65001

 bgp router-id 10.1.0.11

 address-family ipv4 unicast

 exit

 !

 peer-group RRC

  remote-as 65001

  update-source loopback 1

  fall-over bfd

  route-reflector-client

  soft-reconfiguration inbound

  password encrypted sVzWTDY7HEH4Px3EEVFbWz5V4aJC5LRc7z4HDqJ8Gjo=       - кто угадает, что здесь зашифровано «Eltex» - тот мегакрутой хакер!

 exit

 !

 neighbor 10.1.0.13

  peer-group RRC

  address-family ipv4 unicast

  exit

 address-family l2vpn evpn

  exit

 exit

 !

 neighbor 10.1.0.14

  peer-group RRC

  address-family ipv4 unicast

  exit

 address-family l2vpn evpn

  exit

 neighbor 10.1.255.2

  remote-as 65002

  fall-over bfd

  soft-reconfiguration inbound

  password encrypted sVzWTDY7HEH4Px3EEVFbWz5V4aJC5LRc7z4HDqJ8Gjo=

  address-family ipv4 unicast

  exit

  !

  address-family l2vpn evpn

  exit

 exit

exit

Конфигурация для Leaf, на примере eLeaf1-1:

router bgp 65001

 bgp router-id 10.1.0.13

 address-family ipv4 unicast

 exit

 !

 peer-group RR

  remote-as 65001

  update-source loopback 1

  fall-over bfd

  soft-reconfiguration inbound

  password encrypted sVzWTDY7HEH4Px3EEVFbWz5V4aJC5LRc7z4HDqJ8Gjo=

 exit

 !

 neighbor 10.1.0.11

  peer-group RR

  address-family ipv4 unicast

  exit

 address-family l2vpn evpn

  exit

 exit

 !

 neighbor 10.1.0.12

  peer-group RR

  address-family ipv4 unicast

  exit

 address-family l2vpn evpn

  exit

 exit

exit

Вы заметили? – мы, как истинные педанты использовали peer-group, BFD и пароли для соседей. И было хорошо. И работал BGP как было задумано, пока не наступил Pod-2.

Вы же помните, что часть сети мы настраиваем по фэншую, а часть по принципу «а так будет работать?».

Так вот как выглядит конфигурация по фэншую:

eSpine1-1#sh ip bgp neighbors

Address Family: IPv4 Unicast, VRF: default

------------------------------------------

  BGP neighbor      Remote AS       Router ID          State          Uptime       Hold Time   Keepalive

---------------- --------------- ---------------- --------------- --------------- -----

   10.1.0.13          65001         10.1.0.13       ESTABLISHED     00,00:13:34       90          30

   10.1.0.14          65001         10.1.0.14       ESTABLISHED     00,00:13:11       90          30

   10.1.255.2         65002         10.1.0.15       ESTABLISHED     00,00:03:50       90          30

eSpine1-1#sh ip bfd neighbors

   Neighbor          Local           State              Last Down Diag

--------------- --------------- --------------- ------------------------------

   10.1.0.13       10.1.0.11          Up                No Diagnostic

   10.1.0.14       10.1.0.11          Up                No Diagnostic

  10.1.255.2      10.1.255.1          Up                No Diagnostic

А вот так работает конфигурация «а вот так?»:

eSpine2-1#20-Mar-2025 04:44:49 %BGP-I-ADJCHANGE: Neighbor 10.1.0.16 Up

20-Mar-2025 04:44:50 %BFD-I-SESSION_UP: BFD session to neighbor 10.1.0.16 is up

20-Mar-2025 04:44:51 %BFD-I-SESSION_DOWN: BFD session to neighbor 10.1.0.16 has gone down. Reason: Control detection time

20-Mar-2025 04:44:51 %BGP-I-ADJCHANGE: Neighbor 10.1.0.16 Down

20-Mar-2025 04:45:06 %BGP-I-ADJCHANGE: Neighbor 10.1.0.16 Up

20-Mar-2025 04:45:07 %BFD-I-SESSION_UP: BFD session to neighbor 10.1.0.16 is up

20-Mar-2025 04:45:08 %BFD-I-SESSION_DOWN: BFD session to neighbor 10.1.0.16 has gone down. Reason: Control detection time

20-Mar-2025 04:45:08 %BGP-I-ADJCHANGE: Neighbor 10.1.0.16 Down

20-Mar-2025 04:45:23 %BGP-I-ADJCHANGE: Neighbor 10.1.0.16 Up

20-Mar-2025 04:45:24 %BFD-I-SESSION_UP: BFD session to neighbor 10.1.0.16 is up

20-Mar-2025 04:45:24 %BFD-I-SESSION_DOWN: BFD session to neighbor 10.1.0.16 has gone down. Reason: Control detection time

20-Mar-2025 04:45:24 %BGP-I-ADJCHANGE: Neighbor 10.1.0.16 Down

20-Mar-2025 04:45:40 %BGP-I-ADJCHANGE: Neighbor 10.1.0.16 Up

eSpine2-1#sh ip bfd neighbors 10.1.0.16 detail

BFD neighbor: 10.1.0.16, local: 10.1.0.15

  Current State: Down

  Last Down Diag: No Diagnostic

  Detection Multiplier: 3

  Desired Min TX Interval: 150

  Required Min RX Interval: 150

  Remote Discr: 2147483676, (0x8000001c)

eSpine2-1#20-Mar-2025 04:44:33 %BFD-I-SESSION_UP: BFD session to neighbor 10.1.0.16 is up

eSpine2-1#sh ip bfd neighbors 10.1.0.16 detail

BFD neighbor: 10.1.0.16, local: 10.1.0.15

  Current State: Up

  Last Down Diag: No Diagnostic

  Detection Multiplier: 3

  Desired Min TX Interval: 150

  Required Min RX Interval: 150

  Remote Discr: 2147483676, (0x8000001c)

А всё почему? Потому, что НИКОГДА (СЛЫШИТЕ, НИКОГДА!) НЕ НАСТРАИВАЙТЕ КОМБИНАЦИЮ PORT-CHANNEL+BFD! Если только производитель не заявляет о том, что поддерживает такой режим, а Eltex как раз таки обещал это реализовать.

Для справедливости конфиг eSpine2-1:

router bgp 65002

 bgp router-id 10.1.0.15

 address-family ipv4 unicast

 exit

 !

 peer-group RRC

  remote-as 65002

  update-source loopback 1

  fall-over bfd

  route-reflector-client

  soft-reconfiguration inbound

  password encrypted sVzWTDY7HEH4Px3EEVFbWz5V4aJC5LRc7z4HDqJ8Gjo=

 exit

 !

 neighbor 10.1.0.16

  peer-group RRC

  address-family ipv4 unicast

  exit

 address-family l2vpn evpn

  exit

 exit

 !

 neighbor 10.1.0.17

  peer-group RRC

  address-family ipv4 unicast

  exit

 address-family l2vpn evpn

  exit

 exit

 neighbor 10.1.255.1

  remote-as 65001

  fall-over bfd

  soft-reconfiguration inbound

  password encrypted sVzWTDY7HEH4Px3EEVFbWz5V4aJC5LRc7z4HDqJ8Gjo=

  address-family ipv4 unicast

  exit

  !

  address-family l2vpn evpn

  exit

 exit

 !

 neighbor 10.1.255.5

  remote-as 65001

  fall-over bfd

  soft-reconfiguration inbound

  password encrypted sVzWTDY7HEH4Px3EEVFbWz5V4aJC5LRc7z4HDqJ8Gjo=

  address-family ipv4 unicast

  exit

  !

  address-family l2vpn evpn

  exit

exit

и конфиг с eLeaf2-1:

router bgp 65002

 bgp router-id 10.1.0.16

 address-family ipv4 unicast

 exit

 !

 peer-group RR

  remote-as 65002

  update-source loopback 1

  fall-over bfd

  soft-reconfiguration inbound

  password encrypted sVzWTDY7HEH4Px3EEVFbWz5V4aJC5LRc7z4HDqJ8Gjo=

 exit

 !

 neighbor 10.1.0.15

  peer-group RR

  address-family ipv4 unicast

  exit

 address-family l2vpn evpn

  exit

 exit

exit

Найдите 10 отличий:

Да, схема с ECMP будет работать, а вот схема с Port-Channel+BFD работать не будет.

И тут включается креатив : да, правильно разобрать Port-Channel на 2 канала с использованием ECMP, но у нас же пытливый ум, комсомольцы не ищут легких путей. Мы просто выключим BFD для Port-Channel.

eSpine2-1:

router bgp 65002

 bgp router-id 10.1.0.15

 address-family ipv4 unicast

 exit

 !

 peer-group RRC

  remote-as 65002

  update-source loopback 1

  route-reflector-client

  soft-reconfiguration inbound

  password encrypted sVzWTDY7HEH4Px3EEVFbWz5V4aJC5LRc7z4HDqJ8Gjo=

 exit

 !

 peer-group RRC_BFD

  remote-as 65002

  update-source loopback 1

  fall-over bfd

  route-reflector-client

  soft-reconfiguration inbound

  password encrypted sVzWTDY7HEH4Px3EEVFbWz5V4aJC5LRc7z4HDqJ8Gjo=

 exit

 !

 neighbor 10.1.0.16

  peer-group RRC

  address-family ipv4 unicast

  exit

 address-family l2vpn evpn

  exit

 exit

 !

 neighbor 10.1.0.17

  peer-group RRC_BFD

  address-family ipv4 unicast

  exit

 exit

 neighbor 10.1.255.1

  remote-as 65001

  fall-over bfd

  soft-reconfiguration inbound

  password encrypted sVzWTDY7HEH4Px3EEVFbWz5V4aJC5LRc7z4HDqJ8Gjo=

  address-family ipv4 unicast

  exit

  !

  address-family l2vpn evpn

  exit

 exit

 !

 neighbor 10.1.255.5

  remote-as 65001

  fall-over bfd

  soft-reconfiguration inbound

  password encrypted sVzWTDY7HEH4Px3EEVFbWz5V4aJC5LRc7z4HDqJ8Gjo=

  address-family ipv4 unicast

  exit

  !

  address-family l2vpn evpn

  exit

exit

eLeaf-2-1:

router bgp 65002

 bgp router-id 10.1.0.15

 address-family ipv4 unicast

 exit

 !

 peer-group RRC

  remote-as 65002

  update-source loopback 1

  route-reflector-client

  soft-reconfiguration inbound

  password encrypted sVzWTDY7HEH4Px3EEVFbWz5V4aJC5LRc7z4HDqJ8Gjo=

 exit

 !

 peer-group RRC_BFD

  remote-as 65002

  update-source loopback 1

  fall-over bfd

  route-reflector-client

  soft-reconfiguration inbound

  password encrypted sVzWTDY7HEH4Px3EEVFbWz5V4aJC5LRc7z4HDqJ8Gjo=

 exit

 !

 neighbor 10.1.0.16

  peer-group RRC

  address-family ipv4 unicast

  exit

 address-family l2vpn evpn

  exit

 exit

 !

 neighbor 10.1.0.17

  peer-group RRC_BFD

  address-family ipv4 unicast

  exit

 address-family l2vpn evpn

  exit

 exit

exit

Проверим, изменилось ли что-то:

eSpine2-1#sh ip bgp neighbors

Address Family: IPv4 Unicast, VRF: default

------------------------------------------

  BGP neighbor      Remote AS       Router ID          State          Uptime       Hold Time   Keepalive

---------------- --------------- ---------------- --------------- --------------- -----

   10.1.0.16          65002         10.1.0.16       ESTABLISHED     00,10:48:35       90          30

   10.1.0.17          65002         10.1.0.17       ESTABLISHED     00,10:48:19       90          30

   10.1.255.1         65001         10.1.0.11       ESTABLISHED     00,00:08:58       90          30

   10.1.255.5         65001         10.1.0.12       ESTABLISHED     00,00:07:58       90          30

eSpine2-1#sh ip bfd neighbors

   Neighbor          Local           State              Last Down Diag

--------------- --------------- --------------- ------------------------------

   10.1.0.17       10.1.0.15          Up                No Diagnostic

  10.1.255.1      10.1.255.2          Up                No Diagnostic

  10.1.255.5      10.1.255.6          Up                No Diagnostic

Ну вроде всё… Или нет? Кто внимательный?

Даю подсказку:

sh ip bgp l2vpn evpn neighbors

<пустота>

Да, несмотря на то что мы настроили EVPN для BGP-соседей:

router bgp 65001

 neighbor 10.1.0.13

  address-family l2vpn evpn

 neighbor 10.1.0.14

  address-family l2vpn evpn

Мы не включили семейство EVPN в самом BGP-процессе. Поэтому везде делаем так:

router bgp 65001

 address-family l2vpn evpn

Проверяем еще раз:

eSpine1-1#sh ip bgp l2vpn evpn neighbors

Address Family: L2VPN EVPN, VRF: default

----------------------------------------

  BGP neighbor      Remote AS       Router ID          State          Uptime       Hold Time   Keepalive

---------------- --------------- ---------------- --------------- --------------- ----------- -----

   10.1.0.13          65001         10.1.0.13       ESTABLISHED     00,00:28:18       90          30

   10.1.0.14          65001         10.1.0.14       ESTABLISHED     00,00:27:57       90          30

   10.1.255.2         65002         10.1.0.15       ESTABLISHED     00,00:27:58       90          30

Вот теперь точно всё.

UNDERLAY ГОТОВ!!!

Overlay. Часть 1

Теперь попробуем придумать нашу схему, которая должна, по нашей задумке, работать.

Пусть будет такая:

«Я – художник, я так вижу»  ?

Так, первое – это Port-Channel (eLeaf1-1/eLeaf1-2). 

MLAG на фабрике нет. Пора использовать разные умные слова, которыми я разбрасывался вначале – «EVPN multihoming» подойдет. Очень интересная штука, которая использует пакеты EVPN типа 4 и 1 для формирования так называемого Ethernet Segment.

Для настройки EVPN multihoming нам надо одинаково настроить интерфейсы на паре коммутаторов Leaf:

eLeaf1-1:

interface HundredGigabitEthernet1/0/1

 channel-group 1 mode auto

exit

interface Port-Channel1

 switchport mode trunk

 switchport trunk allowed vlan add 10-11,20

 ethernet-segment 1

  system-mac 55:55:55:55:00:01

 exit

exit

eLeaf1-2:

interface HundredGigabitEthernet1/0/1

 channel-group 1 mode auto

exit

interface Port-Channel1

 switchport mode trunk

 switchport trunk allowed vlan add 10-11,20

 ethernet-segment 1

  system-mac 55:55:55:55:00:01

 exit

exit

Не забывайте, что каждый Port-Channel будет иметь свой уникальный номер ethernet-segment и свой уникальный system-mac!

На этом моменте возьмем пульт и поставим на паузу. Открою маленький секрет – на другой стороне в качестве конечного оборудования подключен коммутатор Maipu. И тут начались проблемы.

Проблема 1. Согласование параметров интерфейсов

Команда show interface HundredGigabitEthernet1/0/1 показывает, что интерфейс физически не включен. Смотрим конфигурацию на Maipu:

interface 100ge0/49

 fec mode rs auto

И снова «show interface HundredGigabitEthernet1/0/1» на Eltex:

eLeaf1-1#sh int hu1/0/1

HundredGigabitEthernet1/0/1 is down (not connected)

  Interface index is 103

  Hardware is HundredGigabitEthernet, MAC address is 90:54:b7:4e:5b:31

  Interface MTU is 1500

  Link is down for 0 days, 16 hours, 8 minutes and 46 seconds

  Flow control is off, MDIX mode is off

  FEC is disabled

Нужно согласование режима FEC, поэтому на Eltex смотрим что можно сделать:

eLeaf1-1(config)#int hu1/0/1

eLeaf1-1(config-if)#fec ?

  off                      Disable FEC.

  cl74                     Enable FC-FEC.

  cl91                     Enable RS-FEC.

То, что нужно. Настраиваем на eLeaf1-1 и eLeaf1-2:

interface HundredGigabitEthernet1/0/1

 fec cl91

У-а-ля! (как это пишется правильно?!). Короче, физика поднялась!

HundredGigabitEthernet1/0/1 is up (connected)

<пропущено>

  FEC is cl91

Проблема 2. EVPN Ethernet-segment

Из двух линков в Port-Channel участвует только один (это вывод с Maipu):

TestEndpoint#sh link-aggregation group 1

Link Aggregation 1 Information:

User: Lac                        System Priority: 32768

Type: Switchport                 System Id: ccd8-1f47-173f

Dynamic Lacp: Disable            Load-balance Profile: default

Force Forward: Disable           Forward Mode: Global-Fair

Working Mode: Lacp               Least Active-linknumber: 1

Lacp Selected Speed: Disable     Maximal Active-linknumber: 16

Number of Ports In Total: 2      Number of Ports Attached: 1

LAG Status: Up                   Root Port: 100ge0/49

BFD Src-ip: N/A                  BFD Dst-ip: N/A

Mlag Group: 0                    Extend Port Id: 0

Resilient Hashing: Disable       Port Sort: Disable

Link-aggregation Last Up Time: Aug 13 2025 13:25:48

Link-aggregation Last Down Time: Aug 13 2025 13:23:04

Actor Information

-----------------

ActorPort        PortNo  Portpri  PortKey  PortState  Status

---------------  ------  -------  -------  ---------  ------------

100ge0/49        49      32768    30721    10111100   ATTACHED

100ge0/50        50      32768    30721    10100000   DETACHED

Partner Information

-------------------

ActorPort        PortNo  SystemID        SystemPri  Portpri  PortKey  PortState

---------------  ------  --------------  ---------  -------  -------  ---------

100ge0/49        103     5555-5555-0001  1          1        1000     10111100

100ge0/50        103     5555-5555-0001  1          1        1000     10110000

Это же подтверждается выводом с коммутаторов Leaf:

eLeaf1-1#sh evpn ethernet-segment

Interface Status     ES Number   Ethernet Segment ID (ESI)   Remote members

          admin/oper

--------- ---------- --------- ----------------------------- ---------------

   Po1      UP/UP        1     03:55:55:55:55:00:01:00:00:01

eLeaf1-2#sh evpn ethernet-segment

Interface Status     ES Number   Ethernet Segment ID (ESI)   Remote members

          admin/oper

--------- ---------- --------- ----------------------------- ---------------

   Po1     UP/DOWN       1     03:55:55:55:55:00:01:00:00:01   10.1.0.13

А знаете почему? Оба коммутатора Leaf представляются для Maipu единой системой с MAC 55:55:55:55:00:01

ActorPort        PortNo  SystemID        SystemPri  Portpri  PortKey  PortState

---------------  ------  --------------  ---------  -------  -------  ---------

100ge0/49        103     5555-5555-0001  1          1        1000     10111100

100ge0/50        103     5555-5555-0001  1          1        1000     10110000

Но так как мы используем в обоих коммутаторах интерфейсы HundredGigabitEthernet1/0/1, у которых один и тот же индекс, напомню:

eLeaf1-1#sh int hu1/0/1

  Interface index is 103

eLeaf1-2#sh int hu1/0/1

  Interface index is 103

Maipu видит, что к его разным интерфейсам (100ge0/49 и 100ge0/50) подключен один и тот же интерфейс, что невозможно (повторю вывод еще раз, ведь теперь мы знаем, что нужно искать SystemID 5555-5555-0001 и PortNo 103):

ActorPort        PortNo  SystemID        SystemPri  Portpri  PortKey  PortState

---------------  ------  --------------  ---------  -------  -------  ---------

100ge0/49        103     5555-5555-0001  1          1        1000     10111100

100ge0/50        103     5555-5555-0001  1          1        1000     10110000

К счастью, на Maipu есть такая команда, которая решает эту проблему:

TestEndpoint(config)#int link-aggregation 1

TestEndpoint(config-if-link-aggregation1)#lacp partner-port-check disable

Так как я ленивый, то проверю сразу на коммутаторах Leaf:

eLeaf1-1#sh evpn ethernet-segment

Interface Status     ES Number   Ethernet Segment ID (ESI)   Remote members

          admin/oper

--------- ---------- --------- ----------------------------- ---------------

   Po1      UP/UP        1     03:55:55:55:55:00:01:00:00:01   10.1.0.14

eLeaf1-2#sh evpn ethernet-segment

Interface Status     ES Number   Ethernet Segment ID (ESI)   Remote members

          admin/oper

--------- ---------- --------- ----------------------------- ---------------

   Po1      UP/UP        1     03:55:55:55:55:00:01:00:00:01   10.1.0.13

Так, а кто видел пульт? Под диваном смотрели? А, вот он… Снимаем с паузы, продолжаем разговор.

Overlay. Часть 2. Неправильная

Умный Port-Channel (EVPN multihoming) мы настроили, а теперь приступим к настройке сетей. И снова, что для этого нужно:

  • Создать пары VLAN/VxLAN и присвоить им L2VNI;

  • Создать пары VRF/VxLAN и присвоить им L3VNI;

  • Создать L3-интерфейсы;

  • Настроить Anycast gateway MAC;

  • Настроить маршрутизацию.

Сделаем табличку:

Тип VNI

Номер VNI

VLAN

VxLAN

L2

20010

10

VLAN10

L2

20011

11

VLAN11

L2

20020

20

VLAN20

L3

30000

3000

VRF_A

L3

30001

3001

VRF_B

И еще одну:

Interface VLAN

VRF

IP address

10

A

10.1.10.1/24

11

A

10.1.11.1/24

20

B

10.1.20.1/24

3000

A

-

3001

B

-

Теперь в виде команд:

vlan database

 vlan 10-11,20,3000-3001

vxlan VLAN10

 vni 20010

 arp-suppression

 vlan 10

 route-target both 10.1.10.0:10

exit

!

vxlan VLAN11

 vni 20011

 arp-suppression

 vlan 11

 route-target both 10.1.11.0:11

exit

!

vxlan VLAN20

 vni 20020

 arp-suppression

 vlan 20

 route-target both 10.1.20.0:20

exit

ip vrf A

 vni 30000

 route-target both 1.2.3.4:3000

exit

!

ip vrf B

 vni 30001

 route-target both 1.2.3.4:3001

exit

vxlan VRF_A

 vni 30000 ip-routing

 vlan 3000

exit

!

vxlan VRF_B

 vni 30001 ip-routing

 vlan 3001

exit

anycast-gateway mac-address 12:34:56:78:ab:cd

interface vlan 10

 name CustomerA-1

 ip vrf A

 ip address 10.1.10.1 255.255.255.0

 anycast-gateway

exit

!

interface vlan 11

 name CustomerA-2

 ip vrf A

 ip address 10.1.11.1 255.255.255.0

 anycast-gateway

exit

!

interface vlan 20

 name CustomerB-1

 ip vrf B

 ip address 10.1.20.1 255.255.255.0

 anycast-gateway

exit

!

interface vlan 3000

 name VRF_A

 ip vrf A

exit

!

interface vlan 3001

 name VRF_B

 ip vrf B

exit

router bgp 65001

 vrf A

  address-family ipv4 unicast

   network 0.0.0.0 mask 0.0.0.0

   redistribute connected

  exit

 exit

 !

 vrf B

  address-family ipv4 unicast

   network 0.0.0.0 mask 0.0.0.0

   redistribute connected

  exit

 exit

exit

Посмотрим, что у нас получилось.

eLeaf1-1#sh vxlan

                                         Status

Name                    VNI      VLAN ID admin/oper BUM Forwarding  Route Distinguisher

----------------------- -------- ------- ---------- --------------- ---------------------

VLAN10                  20010    10      UP/UP      Ingress Repl.   10.1.0.13:10

VLAN11                  20011    11      UP/UP      Ingress Repl.   10.1.0.13:11

VLAN20                  20020    20      UP/UP      Ingress Repl.   10.1.0.13:20

VRF_A                   30000    3000    UP/DOWN    Ingress Repl.   10.1.0.13:3000

VRF_B                   30001    3001    UP/DOWN    Ingress Repl.   10.1.0.13:3001

Здесь сразу бросается в глаза тот факт, что конфигурация в Eltex уже немного автоматизирована за нас, например, не надо настраивать Ingress Replication для BUM-трафика, что, несомненно, удобно.

Пусть не пугает UP/DOWN для VRF_A и VRF_B – это L3VNI, у которых нет IP-адреса:

eLeaf1-1#sh vxlan VRF_A

VRF_A

  VxLAN Network ID is 30000, VLAN ID is 3000

  Administrative status is UP

  Operational status is DOWN, reason: interfaces are not configured

  Local Router ID is 10.1.0.13

  Route Distinguisher is 10.1.0.13:3000 (auto-assigned)

  Route Target is: 65001:3000 (auto-assigned)

  Broadcast/Unknown Unicast/Multicast traffic

    is forwarded in Ingress Replication mode

И туннели VxLAN (внимание на 10.1.255.2):

eLeaf1-1#sh vxlan tunnels

VLAN10

Destination              Source                   Status

------------------------ ------------------------ ------

20010:10.1.0.14          20010:10.1.0.13          Up

20010:10.1.0.16          20010:10.1.0.13          Up

20010:10.1.255.2         20010:10.1.0.13          Up

VLAN11

Destination              Source                   Status

------------------------ ------------------------ ------

20011:10.1.0.14          20011:10.1.0.13          Up

20011:10.1.0.16          20011:10.1.0.13          Up

20011:10.1.255.2         20011:10.1.0.13          Up

VLAN20

Destination              Source                   Status

------------------------ ------------------------ ------

20020:10.1.0.14          20020:10.1.0.13          Up

20020:10.1.0.16          20020:10.1.0.13          Up

20020:10.1.0.17          20020:10.1.0.13          Up

20020:10.1.255.2         20020:10.1.0.13          Up

VRF_A

Destination              Source                   Status

------------------------ ------------------------ ------

30000:10.1.0.14          30000:10.1.0.13          Up

30000:10.1.255.2         30000:10.1.0.13          Up

VRF_B

Destination              Source                   Status

------------------------ ------------------------ ------

30001:10.1.0.14          30001:10.1.0.13          Up

30001:10.1.255.2         30001:10.1.0.13          Up

И то, что изучил EVPN (маршруты типа 2) о конечном оборудовании (и снова внимание на 10.1.255.2):

eLeaf1-1#sh evpn mac-ip

VXLAN VLAN10

VNI      VLAN MAC Address       IP              ESI                           Next Hop

-------- ---- ----------------- --------------- ----------------------------- ---------

20010    10   aa:aa:bb:bb:cc:10 -               03:55:55:55:55:00:01:00:00:01 Po1

20010    10   aa:aa:bb:bb:cc:10 10.1.10.100     03:55:55:55:55:00:01:00:00:01 Po1

20010    10   cc:d8:1f:47:17:3d -               -                             10.1.255.2

20010    10   cc:d8:1f:47:17:3d 10.1.10.200     -                             10.1.255.2

VXLAN VLAN11

VNI      VLAN MAC Address       IP              ESI                           Next Hop

-------- ---- ----------------- --------------- ----------------------------- ---------

20011    11   aa:aa:bb:bb:cc:11 -               03:55:55:55:55:00:01:00:00:01 Po1

20011    11   aa:aa:bb:bb:cc:11 10.1.11.100     03:55:55:55:55:00:01:00:00:01 Po1

20011    11   aa:aa:bb:bb:cc:11 10.1.11.100     03:55:55:55:55:00:01:00:00:01 10.1.0.14

20011    11   cc:d8:1f:47:17:3d -               -                             10.1.255.2

20011    11   cc:d8:1f:47:17:3d 10.1.11.200     -                             10.1.255.2

VXLAN VLAN20

VNI      VLAN MAC Address       IP              ESI                           Next Hop

-------- ---- ----------------- --------------- ----------------------------- ---------

20020    20   aa:aa:bb:bb:cc:20 -               03:55:55:55:55:00:01:00:00:01 Po1

20020    20   aa:aa:bb:bb:cc:20 10.1.20.100     03:55:55:55:55:00:01:00:00:01 Po1

20020    20   aa:aa:bb:bb:cc:20 10.1.20.100     03:55:55:55:55:00:01:00:00:01 10.1.0.14

20020    20   aa:aa:bb:bb:cc:52 -               -                             10.1.255.2

20020    20   aa:aa:bb:bb:cc:52 10.1.20.200     -                             10.1.255.2

20020    20   aa:aa:bb:bb:cc:54 -               -                             10.1.255.2

20020    20   aa:aa:bb:bb:cc:54 10.1.20.201     -                             10.1.255.2

20020    20   cc:d8:1f:47:17:3f -               -                             10.1.255.2

А если хочется посмотреть ВСЕ (все?!) типы пакетов EVPN (внимание на 10.1.255.2 (AS65002) и 10.1.255.6 (AS65002)):

eLeaf1-1#sh ip bgp l2vpn evpn


BGP routing table information for VRF default

BGP table version is 4040, local router ID is 10.1.0.13

Status codes: * - valid, > - best, i - internal, s-suppressed

Origin codes: i - IGP, e - EGP, ? - incomplete

Path type: a-aggregate


   Network            Nexthop         Metric     LocPrf     Weight     Path


Route distinguisher: 10.1.0.13:0

*> [1][03:55:55:55:55:00:01:00:00:01][-1]/152

                      0.0.0.0         0          100        0          ?


Route distinguisher: 10.1.0.13:10

*> [1][03:55:55:55:55:00:01:00:00:01][0]/152

                      0.0.0.0         0          100        0          ?


Route distinguisher: 10.1.0.13:11

*> [1][03:55:55:55:55:00:01:00:00:01][0]/152

                      0.0.0.0         0          100        0          ?


Route distinguisher: 10.1.0.13:20

*> [1][03:55:55:55:55:00:01:00:00:01][0]/152

                      0.0.0.0         0          100        0          ?


Route distinguisher: 10.1.0.14:0

*>i[1][03:55:55:55:55:00:01:00:00:01][-1]/152

                      10.1.0.14       0          100        0          ?


Route distinguisher: 10.1.0.14:0

* i[1][03:55:55:55:55:00:01:00:00:01][-1]/152

                      10.1.0.14       0          100        0          ?


Route distinguisher: 10.1.0.14:10

*>i[1][03:55:55:55:55:00:01:00:00:01][0]/152

                      10.1.0.14       0          100        0          ?


Route distinguisher: 10.1.0.14:10

* i[1][03:55:55:55:55:00:01:00:00:01][0]/152

                      10.1.0.14       0          100        0          ?


Route distinguisher: 10.1.0.14:11

*>i[1][03:55:55:55:55:00:01:00:00:01][0]/152

                      10.1.0.14       0          100        0          ?


Route distinguisher: 10.1.0.14:11

* i[1][03:55:55:55:55:00:01:00:00:01][0]/152

                      10.1.0.14       0          100        0          ?


Route distinguisher: 10.1.0.14:20

*>i[1][03:55:55:55:55:00:01:00:00:01][0]/152

                      10.1.0.14       0          100        0          ?


Route distinguisher: 10.1.0.14:20

* i[1][03:55:55:55:55:00:01:00:00:01][0]/152

                      10.1.0.14       0          100        0          ?


Route distinguisher: 10.1.0.13:10

*>a[2][03:55:55:55:55:00:01:00:00:01][0][48][aa:aa:bb:bb:cc:10][0][0.0.0.0]/240

                      0.0.0.0         0          100        0          ?


Route distinguisher: 10.1.0.13:11

*>a[2][03:55:55:55:55:00:01:00:00:01][0][48][aa:aa:bb:bb:cc:11][0][0.0.0.0]/240

                      0.0.0.0         0          100        0          ?


Route distinguisher: 10.1.0.13:20

*>a[2][03:55:55:55:55:00:01:00:00:01][0][48][aa:aa:bb:bb:cc:20][0][0.0.0.0]/240

                      0.0.0.0         0          100        0          ?


Route distinguisher: 10.1.0.16:10

*>i[2][0][0][48][cc:d8:1f:47:17:3d][0][0.0.0.0]/240

                      10.1.255.2      0          100        0          65002 ?


Route distinguisher: 10.1.0.16:10

* i[2][0][0][48][cc:d8:1f:47:17:3d][0][0.0.0.0]/240

                      10.1.255.6      0          100        0          65002 ?


Route distinguisher: 10.1.0.16:11

*>i[2][0][0][48][cc:d8:1f:47:17:3d][0][0.0.0.0]/240

                      10.1.255.2      0          100        0          65002 ?


Route distinguisher: 10.1.0.16:11

* i[2][0][0][48][cc:d8:1f:47:17:3d][0][0.0.0.0]/240

                      10.1.255.6      0          100        0          65002 ?


Route distinguisher: 10.1.0.16:20

*>i[2][0][0][48][aa:aa:bb:bb:cc:54][0][0.0.0.0]/240

                      10.1.255.2      0          100        0          65002 ?


Route distinguisher: 10.1.0.16:20

* i[2][0][0][48][aa:aa:bb:bb:cc:54][0][0.0.0.0]/240

                      10.1.255.6      0          100        0          65002 ?


Route distinguisher: 10.1.0.17:20

*>i[2][0][0][48][aa:aa:bb:bb:cc:52][0][0.0.0.0]/240

                      10.1.255.2      0          100        0          65002 ?


Route distinguisher: 10.1.0.17:20

* i[2][0][0][48][aa:aa:bb:bb:cc:52][0][0.0.0.0]/240

                      10.1.255.6      0          100        0          65002 ?


Route distinguisher: 10.1.0.17:20

*>i[2][0][0][48][cc:d8:1f:47:17:3f][0][0.0.0.0]/240

                      10.1.255.2      0          100        0          65002 ?


Route distinguisher: 10.1.0.17:20

* i[2][0][0][48][cc:d8:1f:47:17:3f][0][0.0.0.0]/240

                      10.1.255.6      0          100        0          65002 ?


Route distinguisher: 10.1.0.13:10

*>a[2][03:55:55:55:55:00:01:00:00:01][0][48][aa:aa:bb:bb:cc:10][32][10.1.10.100]/272

                      0.0.0.0         0          100        0          ?


Route distinguisher: 10.1.0.13:11

*>a[2][03:55:55:55:55:00:01:00:00:01][0][48][aa:aa:bb:bb:cc:11][32][10.1.11.100]/272

                      0.0.0.0         0          100        0          ?


Route distinguisher: 10.1.0.13:20

*>a[2][03:55:55:55:55:00:01:00:00:01][0][48][aa:aa:bb:bb:cc:20][32][10.1.20.100]/272

                      0.0.0.0         0          100        0          ?


Route distinguisher: 10.1.0.14:11

*>i[2][03:55:55:55:55:00:01:00:00:01][0][48][aa:aa:bb:bb:cc:11][32][10.1.11.100]/272

                      10.1.0.14       0          100        0          ?


Route distinguisher: 10.1.0.14:11

* i[2][03:55:55:55:55:00:01:00:00:01][0][48][aa:aa:bb:bb:cc:11][32][10.1.11.100]/272

                      10.1.0.14       0          100        0          ?


Route distinguisher: 10.1.0.14:20

*>i[2][03:55:55:55:55:00:01:00:00:01][0][48][aa:aa:bb:bb:cc:20][32][10.1.20.100]/272

                      10.1.0.14       0          100        0          ?


Route distinguisher: 10.1.0.14:20

* i[2][03:55:55:55:55:00:01:00:00:01][0][48][aa:aa:bb:bb:cc:20][32][10.1.20.100]/272

                      10.1.0.14       0          100        0          ?


Route distinguisher: 10.1.0.16:10

*>i[2][0][0][48][cc:d8:1f:47:17:3d][32][10.1.10.200]/272

                      10.1.255.2      0          100        0          65002 ?


Route distinguisher: 10.1.0.16:10

* i[2][0][0][48][cc:d8:1f:47:17:3d][32][10.1.10.200]/272

                      10.1.255.6      0          100        0          65002 ?


Route distinguisher: 10.1.0.16:11

*>i[2][0][0][48][cc:d8:1f:47:17:3d][32][10.1.11.200]/272

                      10.1.255.2      0          100        0          65002 ?


Route distinguisher: 10.1.0.16:11

* i[2][0][0][48][cc:d8:1f:47:17:3d][32][10.1.11.200]/272

                      10.1.255.6      0          100        0          65002 ?


Route distinguisher: 10.1.0.16:20

*>i[2][0][0][48][aa:aa:bb:bb:cc:54][32][10.1.20.201]/272

                      10.1.255.2      0          100        0          65002 ?


Route distinguisher: 10.1.0.16:20

* i[2][0][0][48][aa:aa:bb:bb:cc:54][32][10.1.20.201]/272

                      10.1.255.6      0          100        0          65002 ?


Route distinguisher: 10.1.0.17:20

*>i[2][0][0][48][aa:aa:bb:bb:cc:52][32][10.1.20.200]/272

                      10.1.255.2      0          100        0          65002 ?


Route distinguisher: 10.1.0.17:20

* i[2][0][0][48][aa:aa:bb:bb:cc:52][32][10.1.20.200]/272

                      10.1.255.6      0          100        0          65002 ?


Route distinguisher: 10.1.0.13:10

*> [3][0][32][10.1.0.13]/88

                      0.0.0.0         0          100        0          ?


Route distinguisher: 10.1.0.13:11

*> [3][0][32][10.1.0.13]/88

                      0.0.0.0         0          100        0          ?


Route distinguisher: 10.1.0.13:20

*> [3][0][32][10.1.0.13]/88

                      0.0.0.0         0          100        0          ?


Route distinguisher: 10.1.0.14:10

*>i[3][0][32][10.1.0.14]/88

                      10.1.0.14       0          100        0          ?


Route distinguisher: 10.1.0.14:10

* i[3][0][32][10.1.0.14]/88

                      10.1.0.14       0          100        0          ?


Route distinguisher: 10.1.0.14:11

*>i[3][0][32][10.1.0.14]/88

                      10.1.0.14       0          100        0          ?


Route distinguisher: 10.1.0.14:11

* i[3][0][32][10.1.0.14]/88

                      10.1.0.14       0          100        0          ?


Route distinguisher: 10.1.0.14:20

*>i[3][0][32][10.1.0.14]/88

                      10.1.0.14       0          100        0          ?


Route distinguisher: 10.1.0.14:20

* i[3][0][32][10.1.0.14]/88

                      10.1.0.14       0          100        0          ?


Route distinguisher: 10.1.0.16:10

*>i[3][0][32][10.1.0.16]/88

                      10.1.255.2      0          100        0          65002 ?


Route distinguisher: 10.1.0.16:10

* i[3][0][32][10.1.0.16]/88

                      10.1.255.6      0          100        0          65002 ?


Route distinguisher: 10.1.0.16:11

*>i[3][0][32][10.1.0.16]/88

                      10.1.255.2      0          100        0          65002 ?


Route distinguisher: 10.1.0.16:11

* i[3][0][32][10.1.0.16]/88

                      10.1.255.6      0          100        0          65002 ?


Route distinguisher: 10.1.0.16:20

*>i[3][0][32][10.1.0.16]/88

                      10.1.255.2      0          100        0          65002 ?


Route distinguisher: 10.1.0.16:20

* i[3][0][32][10.1.0.16]/88

                      10.1.255.6      0          100        0          65002 ?


Route distinguisher: 10.1.0.17:20

*>i[3][0][32][10.1.0.17]/88

                      10.1.255.2      0          100        0          65002 ?


Route distinguisher: 10.1.0.17:20

* i[3][0][32][10.1.0.17]/88

                      10.1.255.6      0          100        0          65002 ?


Route distinguisher: 10.1.0.13:0

s> [4][03:55:55:55:55:00:01:00:00:01][32][10.1.0.13]/136

                      0.0.0.0         0          100        0          ?


Route distinguisher: 10.1.0.14:0

s>i[4][03:55:55:55:55:00:01:00:00:01][32][10.1.0.14]/136

                      10.1.0.14       0          100        0          ?


Route distinguisher: 10.1.0.14:0

s i[4][03:55:55:55:55:00:01:00:00:01][32][10.1.0.14]/136

                      10.1.0.14       0          100        0          ?


Route distinguisher: 10.1.0.13:30000

*> [5][0][0][24][10.1.10.0]/224

                      0.0.0.0         0          100        32768      ?


Route distinguisher: 10.1.0.13:30000

*> [5][0][0][24][10.1.11.0]/224

                      0.0.0.0         0          100        32768      ?


Route distinguisher: 10.1.0.13:30001

*> [5][0][0][24][10.1.20.0]/224

                      0.0.0.0         0          100        32768      ?


Route distinguisher: 10.1.0.14:30000

*>i[5][0][0][24][10.1.10.0]/224

                      10.1.0.14       0          100        0          ?


Route distinguisher: 10.1.0.14:30000

* i[5][0][0][24][10.1.10.0]/224

                      10.1.0.14       0          100        0          ?


Route distinguisher: 10.1.0.14:30000

*>i[5][0][0][24][10.1.11.0]/224

                      10.1.0.14       0          100        0          ?


Route distinguisher: 10.1.0.14:30000

* i[5][0][0][24][10.1.11.0]/224

                      10.1.0.14       0          100        0          ?


Route distinguisher: 10.1.0.14:30001

*>i[5][0][0][24][10.1.20.0]/224

                      10.1.0.14       0          100        0          ?


Route distinguisher: 10.1.0.14:30001

* i[5][0][0][24][10.1.20.0]/224

                      10.1.0.14       0          100        0          ?


Route distinguisher: 10.1.0.16:30000

*>i[5][0][0][24][10.1.10.0]/224

                      10.1.255.2      0          100        0          65002 ?


Route distinguisher: 10.1.0.16:30000

* i[5][0][0][24][10.1.10.0]/224

                      10.1.255.6      0          100        0          65002 ?


Route distinguisher: 10.1.0.16:30000

*>i[5][0][0][24][10.1.11.0]/224

                      10.1.255.2      0          100        0          65002 ?


Route distinguisher: 10.1.0.16:30000

* i[5][0][0][24][10.1.11.0]/224

                      10.1.255.6      0          100        0          65002 ?


Route distinguisher: 10.1.0.16:30001

*>i[5][0][0][24][10.1.20.0]/224

                      10.1.255.2      0          100        0          65002 ?


Route distinguisher: 10.1.0.16:30001

* i[5][0][0][24][10.1.20.0]/224

                      10.1.255.6      0          100        0          65002 ?


Route distinguisher: 10.1.0.17:30001

*>i[5][0][0][24][10.1.20.0]/224

                      10.1.255.2      0          100        0          65002 ?


Route distinguisher: 10.1.0.17:30001

* i[5][0][0][24][10.1.20.0]/224

                      10.1.255.6      0          100        0          65002 ?

Зафиксировали то, что запомнили. И проверяем связность.

Тест связности с хоста 10.1.10.100 (Pod1, VRF A):

Доступность AnycastGW

TestEndpoint#ping vrf Pod1VRFA 10.1.10.1

Press key (ctrl + shift + 6) interrupt it.

Sending 5, 76-byte ICMP Echos to 10.1.10.1 , timeout is 0 seconds:

!!!!!

Success rate is 100% (5/5). Round-trip min/avg/max = 1/1/1 ms.

Доступность хоста 10.1.11.100 в другой сети в том же VRF (Pod1, VRF A)

TestEndpoint#ping vrf Pod1VRFA 10.1.11.100

Press key (ctrl + shift + 6) interrupt it.

Sending 5, 76-byte ICMP Echos to 10.1.11.100 , timeout is 0 seconds:

!!!!!

Success rate is 100% (5/5). Round-trip min/avg/max = 1/1/2 ms.

Доступность хоста 10.1.20.100 в другом VRF (Pod1, VRF B)

TestEndpoint#ping vrf Pod1VRFA 10.1.20.100

Press key (ctrl + shift + 6) interrupt it.

Sending 5, 76-byte ICMP Echos to 10.1.20.100 , timeout is 0 seconds:

UUUUU                <-так как в таблице маршрутизации нет такой сети (другой же VRF!), то и ответ у нас отличается

Success rate is 0% (0/5).

Доступность хоста в той же сети на другом Pod (Pod2, VRF A)

TestEndpoint#ping vrf Pod1VRFA 10.1.10.200

Press key (ctrl + shift + 6) interrupt it.

Sending 5, 76-byte ICMP Echos to 10.1.10.200 , timeout is 0 seconds:

.....                        <-а вот это уже плохо, потому что очень хочется, чтобы был растянутый L2, а его нет

Success rate is 0% (0/5).

Ну и посмотреть таблицу ARP:

eLeaf1-1#sh arp


Total number of entries: 10

    VLAN    Interface        IP address        HW address          status       IP Unnumbered I/F

-------------------------- --------------- ------------------- --------------- -------------------

           hu1/0/5         10.1.1.1        90:54:b7:82:53:80   dynamic

           hu1/0/6         10.1.1.9        90:54:b7:82:6a:c0   dynamic

           oob             172.23.84.1     00:1a:6c:47:b5:de   dynamic

           oob             172.23.84.52    cc:d8:1f:47:17:3c   dynamic

           oob             172.23.84.60    00:04:96:43:bc:a0   dynamic

           oob             172.23.84.190   e0:cc:7a:08:75:5e   dynamic

           oob             172.23.84.250   64:2f:c7:8f:66:15   dynamic

vlan 10    Po1             10.1.10.100     aa:aa:bb:bb:cc:10   dynamic

vlan 11    Po1             10.1.11.100     aa:aa:bb:bb:cc:11   dynamic

vlan 20    Po1             10.1.20.100     aa:aa:bb:bb:cc:20   dynamic

Для сравнения, посмотрим таблицу ARP с Pod-2:

eLeaf2-1#sh arp


Total number of entries: 9

    VLAN    Interface        IP address        HW address          status       IP Unnumbered I/F

-------------------------- --------------- ------------------- --------------- -------------------

           Po1             10.2.1.1        90:54:b7:82:57:80   dynamic

           oob             172.23.84.1     00:1a:6c:47:b5:de   dynamic

           oob             172.23.84.52    cc:d8:1f:47:17:3c   dynamic

           oob             172.23.84.60    00:04:96:43:bc:a0   dynamic

           oob             172.23.84.190   e0:cc:7a:08:75:5e   dynamic

           oob             172.23.84.250   64:2f:c7:8f:66:15   dynamic

vlan 10    hu1/0/1         10.1.10.200     cc:d8:1f:47:17:3d   dynamic

vlan 11    hu1/0/1         10.1.11.200     cc:d8:1f:47:17:3d   dynamic

vlan 20    hu1/0/2         10.1.20.201     aa:aa:bb:bb:cc:54   dynamic

Что, в сокращенном выводе, получили:

  • в рамках одного Pod и одного VRF связь полностью работает – правильно;

  • в рамках одного Pod и между VRF связи нет – правильно;

  • между Pod в рамках одного VRF связи нет – НЕ ПРАВИЛЬНО.

Так почему же у нас нет растянутого VLAN? Вот тут-то и вспоминаем про 10.1.255.2 (AS65002) и 10.1.255.6 (AS65002). Кто же это? Где там наша схема?

Да это же адреса eSpine2-1! А почему у нас в качестве nexthop везде указаны адреса не коммутаторов Leaf, а адреса Spine? Да всё просто – у нас же настроен eBGP, который подменяет nexthop (помните коварного енота?). В текущем релизе НЕ ПОДДЕРЖИВАЕТСЯ eBGP взаимодействие, но согласно карте развития Eltex, данный функционал должен появиться в Q3 2025 (можно ориентироваться на версию 6.6.10). Что ж, зная, и что важнее, доказав неприменимость eBGP, давайте полностью пересоберем схему, но теперь у нас будет только одна BGP AS. И это еще один повод пользоваться имеющимся от производителя документом по настройке фабрики.

Overlay. Часть 2. Правильная

Не забываем только, что теперь у нас Spine коммутаторы, являясь iBGP соседями не будут передавать информацию друг другу, поэтому сделаем их друг для друга BGP Route-Reflector Client (RRC). Итого, новая схема BGP:

А давайте сразу проверим связность?

Тест связности с хоста 10.1.10.100 (Pod1, VRF A):

Доступность AnycastGW

TestEndpoint#ping vrf Pod1VRFA 10.1.10.1

Press key (ctrl + shift + 6) interrupt it.

Sending 5, 76-byte ICMP Echos to 10.1.10.1 , timeout is 0 seconds:

!!!!!                   - не сломали – и то уже хорошо!

Success rate is 100% (5/5). Round-trip min/avg/max = 1/1/1 ms.

Доступность хоста 10.1.11.100 в другой сети в том же VRF (Pod1, VRF A)

TestEndpoint#ping vrf Pod1VRFA 10.1.11.100

Press key (ctrl + shift + 6) interrupt it.

Sending 5, 76-byte ICMP Echos to 10.1.11.100 , timeout is 0 seconds:

!!!!!

Success rate is 100% (5/5). Round-trip min/avg/max = 1/1/2 ms.

Доступность хоста 10.1.20.100 в другом VRF (Pod1, VRF B)

TestEndpoint#ping vrf Pod1VRFA 10.1.20.100

Press key (ctrl + shift + 6) interrupt it.

Sending 5, 76-byte ICMP Echos to 10.1.20.100 , timeout is 0 seconds:

UUUUU

Success rate is 0% (0/5).

Доступность хоста в той же сети на другом Pod (Pod2, VRF A)

TestEndpoint#ping vrf Pod1VRFA 10.1.10.200

Press key (ctrl + shift + 6) interrupt it.

Sending 5, 76-byte ICMP Echos to 10.1.10.200 , timeout is 0 seconds:

!!!!!

Success rate is 100% (5/5). Round-trip min/avg/max = 1/1/1 ms.

Доступность хоста в другой сети на другом Pod (Pod2, VRF A)

TestEndpoint#ping vrf Pod1VRFA 10.1.11.200

Press key (ctrl + shift + 6) interrupt it.

Sending 5, 76-byte ICMP Echos to 10.1.11.200 , timeout is 0 seconds:

!!!!!

Success rate is 100% (5/5). Round-trip min/avg/max = 1/1/1 ms.

Ну и посмотреть таблицу ARP:

eLeaf1-1# sh arp

Total number of entries: 10

    VLAN    Interface        IP address        HW address          status       IP Unnumbered I/F

-------------------------- --------------- ------------------- --------------- -------------------

           hu1/0/5         10.1.1.1        90:54:b7:82:53:80   dynamic

           hu1/0/6         10.1.1.9        90:54:b7:82:6a:c0   dynamic

           oob             172.23.84.1     00:1a:6c:47:b5:de   dynamic

           oob             172.23.84.52    cc:d8:1f:47:17:3c   dynamic

           oob             172.23.84.60    00:04:96:43:bc:a0   dynamic

           oob             172.23.84.190   e0:cc:7a:08:75:5e   dynamic

           oob             172.23.84.250   64:2f:c7:8f:66:15   dynamic

vlan 10    Po1             10.1.10.100     aa:aa:bb:bb:cc:10   dynamic

vlan 11    Po1             10.1.11.100     aa:aa:bb:bb:cc:11   dynamic

vlan 20    Po1             10.1.20.100     aa:aa:bb:bb:cc:20   dynamic

Казалось бы – а где наши удаленные IP?

 А вот тут:

eLeaf1-1#sh ip route vrf A

Maximum Parallel Paths: 32 (32 after reset)

Load balancing: src-dst-mac-ip

IP Forwarding: enabled

Codes: > - best, C - connected, S - static,

       R - RIP,

       O - OSPF intra-area, OIA - OSPF inter-area,

       OE1 - OSPF external 1, OE2 - OSPF external 2,

       B - BGP, i - IS-IS, L1 - IS-IS level-1,

       P - PBR

       L2 - IS-IS level-2, ia - IS-IS inter area

[d/m]: d - route's distance, m - route's metric

C    10.1.10.0/24 is directly connected, vlan 10

B    10.1.10.200/32 [200/0] via 10.1.0.16, 00:31:22, VNI 30000,

router-mac 90:54:b7:4e:58:00

C    10.1.11.0/24 is directly connected, vlan 11

B    10.1.11.200/32 [200/0] via 10.1.0.16, 00:31:22, VNI 30000,

router-mac 90:54:b7:4e:58:00

eLeaf1-1#sh ip route vrf B

Maximum Parallel Paths: 32 (32 after reset)

Load balancing: src-dst-mac-ip

IP Forwarding: enabled

Codes: > - best, C - connected, S - static,

       R - RIP,

       O - OSPF intra-area, OIA - OSPF inter-area,

       OE1 - OSPF external 1, OE2 - OSPF external 2,

       B - BGP, i - IS-IS, L1 - IS-IS level-1,

       P - PBR

       L2 - IS-IS level-2, ia - IS-IS inter area

[d/m]: d - route's distance, m - route's metric

C    10.1.20.0/24 is directly connected, vlan 20

B    10.1.20.200/32 [200/0] via 10.1.0.17, 00:33:01, VNI 30001,

router-mac 90:54:b7:59:f8:00

B    10.1.20.201/32 [200/0] via 10.1.0.16, 00:33:01, VNI 30001,

router-mac 90:54:b7:4e:58:00

А что изменилось в выводах других команд?

Туннели VxLAN (тут больше нет destination 10.1.255.2, а всё указывает на remote leaf):

eLeaf1-1#sh vxlan tunnels

VLAN10

Destination              Source                   Status

------------------------ ------------------------ ------

20010:10.1.0.14          20010:10.1.0.13          Up

20010:10.1.0.16          20010:10.1.0.13          Up

VLAN11

Destination              Source                   Status

------------------------ ------------------------ ------

20011:10.1.0.14          20011:10.1.0.13          Up

20011:10.1.0.16          20011:10.1.0.13          Up

VLAN20

Destination              Source                   Status

------------------------ ------------------------ ------

20020:10.1.0.14          20020:10.1.0.13          Up

20020:10.1.0.16          20020:10.1.0.13          Up

20020:10.1.0.17          20020:10.1.0.13          Up

VRF_A

Destination              Source                   Status

------------------------ ------------------------ ------

30000:10.1.0.14          30000:10.1.0.13          Up

30000:10.1.0.16          30000:10.1.0.13          Up

VRF_B

Destination              Source                   Status

------------------------ ------------------------ ------

30001:10.1.0.14          30001:10.1.0.13          Up

30001:10.1.0.16          30001:10.1.0.13          Up

30001:10.1.0.17          30001:10.1.0.13          Up

И то, что изучил EVPN (маршруты типа 2) о конечном оборудовании (и снова – 10.1.255.2 исчез, остались только remote leaf в качестве nexthop):

eLeaf1-1#sh evpn mac-ip

VXLAN VLAN10

VNI      VLAN MAC Address       IP              ESI                           Next Hop

-------- ---- ----------------- --------------- ----------------------------- ---------------

20010    10   aa:aa:bb:bb:cc:10 -               03:55:55:55:55:00:01:00:00:01 Po1

20010    10   aa:aa:bb:bb:cc:10 10.1.10.100     03:55:55:55:55:00:01:00:00:01 Po1

20010    10   cc:d8:1f:47:17:3d -               -                             10.1.0.16

20010    10   cc:d8:1f:47:17:3d 10.1.10.200     -                             10.1.0.16

VXLAN VLAN11

VNI      VLAN MAC Address       IP              ESI                           Next Hop

-------- ---- ----------------- --------------- ----------------------------- ---------------

20011    11   aa:aa:bb:bb:cc:11 -               03:55:55:55:55:00:01:00:00:01 Po1

20011    11   aa:aa:bb:bb:cc:11 10.1.11.100     03:55:55:55:55:00:01:00:00:01 Po1

20011    11   aa:aa:bb:bb:cc:11 10.1.11.100     03:55:55:55:55:00:01:00:00:01 10.1.0.14

20011    11   cc:d8:1f:47:17:3d -               -                             10.1.0.16

20011    11   cc:d8:1f:47:17:3d 10.1.11.200     -                             10.1.0.16

VXLAN VLAN20

VNI      VLAN MAC Address       IP              ESI                           Next Hop

-------- ---- ----------------- --------------- ----------------------------- ---------------

20020    20   aa:aa:bb:bb:cc:20 -               03:55:55:55:55:00:01:00:00:01 Po1

20020    20   aa:aa:bb:bb:cc:20 10.1.20.100     03:55:55:55:55:00:01:00:00:01 Po1

20020    20   aa:aa:bb:bb:cc:20 10.1.20.100     03:55:55:55:55:00:01:00:00:01 10.1.0.14

20020    20   aa:aa:bb:bb:cc:52 -               -                             10.1.0.17

20020    20   aa:aa:bb:bb:cc:52 10.1.20.200     -                             10.1.0.17

20020    20   aa:aa:bb:bb:cc:54 -               -                             10.1.0.16

20020    20   aa:aa:bb:bb:cc:54 10.1.20.201     -                             10.1.0.16

20020    20   cc:d8:1f:47:17:3f -               -                             10.1.0.16

Балансировка. Нюансы

Что ж, я думаю, это успех! Но, хоть Матроскин уже обозначил близость конца статьи, тем не менее, мы же хотели еще проверить ECMP?

Тут все просто:

eSpine2-1#show ip route address 10.1.0.17

Maximum Parallel Paths: 32 (32 after reset)

Load balancing: src-dst-mac-ip

IP Forwarding: enabled

Codes: > - best, C - connected, S - static,

       R - RIP,

       O - OSPF intra-area, OIA - OSPF inter-area,

       OE1 - OSPF external 1, OE2 - OSPF external 2,

       B - BGP, i - IS-IS, L1 - IS-IS level-1,

       P - PBR

       L2 - IS-IS level-2, ia - IS-IS inter area

[d/m]: d - route's distance, m - route's metric

O    10.1.0.17/32 [30/20] via 10.2.1.6, 47:38:11, hu1/0/3

O    10.1.0.17/32 [30/20] via 10.2.1.10, 47:38:11, hu1/0/4

Да, в таблице маршрутизации nexthop балансируется между линками. Но есть нюанс… Обратили внимание на строку «Maximum Parallel Paths: 32 (32 after reset)»? Команда, которая включает возможность использования ECMP:

(config)#ip maximum-paths 32             - можно до 64 указать

И эту команду НАДО давать, но вот где нюанс:

eSpine2-1(config)#ip maximum-paths 32

Warning! New value will be applied only after reboot

Ребут?! Опять?! Любое изменение конфигурации или применение лицензии, требующее перезагрузки оборудования – это очень, очень, очень, ОЧЕНЬ, ОЧЕНЬ, ОЧЕНЬ неправильно. Я, как инженер, допускаю перезагрузку только в одном случае – это обновление ПО (да, я знаю про ISSU, но это не для одноюнитовых железок). Если бы можно было как-то повлиять на такое поведение, чтобы без перезагрузки… Но пока могу только порекомендовать включить и настроить всё, что требует перезагрузки, вначале настройки и потом за 1 раз перезагрузить.

Ладно, посмотрим разницу в балансировке между Port-Channel и ECMP. Вот этот самый кусок схемы:

Запустим трафик до 10.1.20.20, который находится за eLeaf2-2, зафиксируем трафик в начале:

eSpine2-1#sh int HundredGigabitEthernet1/0/31 | i bytes sent

      1261493 packets output, 95837511 bytes sent

eSpine2-1#sh int HundredGigabitEthernet1/0/32 | i bytes sent

      1197556 packets output, 85190809 bytes sent

И чуть позже:

eSpine2-1#sh int HundredGigabitEthernet1/0/31 | i bytes sent

      1264002 packets output, 96483804 bytes sent

eSpine2-1#sh int HundredGigabitEthernet1/0/32 | i bytes sent

      1199720 packets output, 85345064 bytes sent

Через Hu1/0/31 прошло 2509 пакетов, через Hu1/0/32 прошло 2164 пакета – выглядит как равномерное распределение нагрузки по ECMP.

А теперь запустим трафик до 10.1.10.200, который находится за eLeaf2-1 (через Port-Channel), зафиксируем трафик в начале:

eSpine2-1#sh int HundredGigabitEthernet1/0/1 | i bytes sent

      46044 packets output, 4615686 bytes sent

eSpine2-1#sh int HundredGigabitEthernet1/0/2 | i bytes sent

      13343 packets output, 1558374 bytes sent

И чуть позже:

eSpine2-1#sh int HundredGigabitEthernet1/0/1 | i bytes sent

      46406 packets output, 4652115 bytes sent

eSpine2-1#sh int HundredGigabitEthernet1/0/2 | i bytes sent

      14843 packets output, 3731538 bytes sent

Через Hu1/0/1 прошло 362 пакета, через Hu1/0/2 прошло 1500 пакетов – это не выглядит как равномерное распределение нагрузки между членами Port-Channel. Думаем, вспоминаем, осознаем… 

Подсказка:

eSpine2-1(config)#port-channel load-balance ?

  src-dst-mac-ip           Port channel and ECMP load balancing is based on

                           source and destination of MAC and IP addresses.

  src-dst-mac              Port channel and ECMP load balancing is based on

                           source and destination MAC address.

  src-dst-ip               Port channel and ECMP load balancing is based on

                           source and destination IP address.

  src-dst-mac-ip-port      Port channel and ECMP load balancing is based on

                           source and destination of MAC and IP addresses and on

                           source and destination TCP/UDP port numbers.

  dst-mac                  Port channel and ECMP load balancing is based on

                           destination MAC addresses.

  dst-ip                   Port channel and ECMP load balancing is based on

                           destination IP addresses.

  src-mac                  Port channel and ECMP load balancing is based on

                           source MAC addresses.

  src-ip                   Port channel and ECMP load balancing is based on

                           source IP addresses.

У нас соседство между eSpine2-1 и eLeaf2-1 – это Port-Channel, который балансирует по уникальному совпадению ряда параметров, но VxLAN туннель – это всегда UDP/4789, всегда один и тот же Source IP и один и тот же Destination IP – тут нечего балансировать в рамках одной и той же пары коммутаторов Leaf.

Конечно, за счет того, что на коммутатор будут прилетать пакеты от разных коммутаторов Leaf (то есть разные Source IP в VxLAN пакете), будет какая-то балансировка, но, если вдруг основной трафик будет между 2-мя коммутаторами, то один канал будет загружен больше другого.

Итого:

  • Port-Channel + BFD = зло (если не поддерживается производителем, ждем поддержку от Eltex)

  • Port-Channel для балансировки между коммутаторами не используем

  • BGP AS должна быть одна (iBGP)

Всё выглядит не так сложно, и часть этой заслуги – отсутствие лишней конфигурации, которую Eltex уже настроил за нас (как, например, Ingress replication).

Система управления ECCM

И, маленький бонус, который заслуживает отдельной статьи – система управления ECCM. Мы попробуем завести наши коммутаторы в ECCM в режиме brownfield, а затем попробуем снести полностью конфигурацию и развернуть то же самое в режиме greenfield. Ниже немного скриншотов из ECCM для затравки. А подробнее ECCM разберу в отдельной статье.

Выводы

Попробую свести все свои впечатления об оборудовании и ПО ELTEX в емкий вывод.  Оборудование

Монтаж вентиляторов и блоков питания легкий (но, лучше иметь шуруповерт), в стойке коммутаторы держатся уверенно. Лайк.

Производительность. Это настолько большая тема для обсуждения, что я решил вынести ее в отдельную статью, но, небольшой спойлер, там тоже всё хорошо.

Программное обеспечение

Очень просто настраивать оборудование тем, кто уже имел дело с Cisco-like консолями. Вся настройка интуитивна и понятна, команды максимально близки к формату, к которому мы так привыкли за годы эксплуатации буржуазного оборудования. Лайк.

Конфигурация out-of-the-box (show run) пустая и не содержит избыточных команд со значениями по умолчанию. Непривычно, но со временем не обращаешь на это внимания. Пусть будет.

Включение нового функционала, применение лицензий и изменение ряда параметров, требующих перезагрузки. Хотелось бы, конечно, чтобы данные процессы были как-то изменены и не требовали полной перезагрузки устройства. С другой стороны, подобные настройки выполняются на начальном этапе, и можно заранее всё настроить и перезагрузиться 1 раз. Но чувство легкого дискомфорта всё равно есть. Надеюсь, что в будущем разработчики смогут добиться того, чтобы все изменения выполнялись без полной перезагрузки.

Поддержка вендора

Гарантированный и стопроцентный лайк. Быстрая реакция, помощь в поиске проблем и при настройке оборудования.

Обновление ПО

Все мы знаем волшебную формулу «в новой версии ПО исправлено 80% проблем и добавлено 20% новых проблем» ?. Я отношусь к этому нормально, так как все мы люди-человеки, ошибки имеют место быть. Но вот что важно – это то, как к ним относится вендор. В случае с Eltex, все ошибки анализируются и исправляются, потому что для российско��о производителя сетевого оборудования сейчас очень важно, чтобы мы, инженеры, поверили в него. Так что исправление ошибок и добавление нового функционала – задача, которую Eltex непрерывно исполняет на самом высоком уровне.

Документация

Тут, честно сказать, приятно удивлен. Eltex, помимо всяких “User Manual” еще разработал документацию типа “IP Fabric design guide”, что очень, очень, очень помогает во время первой настройки фабрики (а чем, по вашему мнению, я тут руководствовался при написании этой статьи?). Это очень хорошая практика, которая есть далеко не у всех производителей сетевого оборудования. Хотелось бы пожелать развивать эту историю, потому что нам, инженерам, такие документы очень нужны.

Вердикт

Ну что тут сказать… Дайте две! Я готов использовать оборудование Eltex в ЦОД и считаю, что оно имеет зрелую стадию развития. А что до мелких проблем, то, при поддержке вендора, как говорил кот Леопольд: «Неприятность эту мы переживем!».

Конец

Ну что, вроде ничего не забыл, про всё поговорили… Так что…

И обещанная конфигурация:

eSpine 1-1

eSpine1-1#sh run
ip vrf MGMT
exit
!
!
vlan database
vlan 2
exit
!
ip maximum-paths 32
!
hostname eSpine1-1
!
logging host 172.23.84.80 vrf MGMT
logging origin-id hostname
logging source-interface oob vrf MGMT
!
username croc password encrypted 5d18ada9ed1a641f5df43c9c48f6069ce25cdfd68a38c5fea5e9b3c3993e4b216a4c14ff6777044700cc42095b20bdb8b3bdb0ba277e93f252cd489e645d9502 privilege 15 encryption-algorithm sha-512
!
ip ssh server vrf MGMT
!
snmp-server server
snmp-server engineID local 800089c1039054b7825380
encrypted snmp-server community qFiDC/J5H872AchiufYPZN8DRuLwUa5Mh4avgWaNg/M= ro view Default vrf MGMT
encrypted snmp-server host 172.23.84.80 traps version 2c qFiDC/J5H872AchiufYPZN8DRuLwUa5Mh4avgWaNg/M= vrf MGMT
snmp-server group ECCM v3 priv
encrypted snmp-server user snmp-user ECCM v3 auth md5 y+SIfENWL1MT2QrQSJcpnTa4z2oZBGR3g/6UkS8dolg= priv-protocol aes-128-cfb priv y+SIfENWL1MT2QrQSJcpnTa4z2oZBGR3g/6UkS8dolg= vrf MGMT
snmp-server source-interface traps oob vrf MGMT
!
clock timezone MSK +3
!
interface HundredGigabitEthernet1/0/1
ip address 10.1.1.1 255.255.255.252
exit
!
interface HundredGigabitEthernet1/0/2
ip address 10.1.1.5 255.255.255.252
exit
!
interface HundredGigabitEthernet1/0/32
ip address 10.1.255.1 255.255.255.252
exit
!
interface vlan 1
no ip address dhcp
shutdown
exit
!
interface oob
ip vrf MGMT
ip address 172.23.84.11 255.255.255.0
no ip address dhcp
exit
!
interface loopback1
ip address 10.1.0.11 255.255.255.255
exit
!
!
!
ip default-gateway 172.23.84.1 vrf MGMT
!
router ospf 100
network 10.1.0.11 area 0.0.0.0
network 10.1.1.1 area 0.0.0.0
network 10.1.1.5 area 0.0.0.0
network 10.1.255.1 area 0.0.0.0
router-id 10.1.0.11
exit
!
router bgp 65001
bgp router-id 10.1.0.11
address-family ipv4 unicast
exit
!
address-family l2vpn evpn
exit
!
peer-group RRC
remote-as 65001
update-source loopback 1
fall-over bfd
route-reflector-client
soft-reconfiguration inbound
password encrypted sVzWTDY7HEH4Px3EEVFbWz5V4aJC5LRc7z4HDqJ8Gjo=
exit
!
neighbor 10.1.0.13
peer-group RRC
address-family ipv4 unicast
exit
!
address-family l2vpn evpn
exit
exit
!
neighbor 10.1.0.14
peer-group RRC
address-family ipv4 unicast
exit
!
address-family l2vpn evpn
exit
exit
!
neighbor 10.1.255.2
remote-as 65001
fall-over bfd
route-reflector-client
soft-reconfiguration inbound
password encrypted sVzWTDY7HEH4Px3EEVFbWz5V4aJC5LRc7z4HDqJ8Gjo=
address-family ipv4 unicast
exit
!
address-family l2vpn evpn
exit
exit
exit
!
!
end

eSpine 1-2

eSpine1-2#sh run
ip vrf MGMT
exit
!
!
ip maximum-paths 32
!
hostname eSpine1-2
!
username croc password encrypted 5d18ada9ed1a641f5df43c9c48f6069ce25cdfd68a38c5fea5e9b3c3993e4b216a4c14ff6777044700cc42095b20bdb8b3bdb0ba277e93f252cd489e645d9502 privilege 15 encryption-algorithm sha-512
!
ip ssh server vrf MGMT
!
interface HundredGigabitEthernet1/0/1
ip address 10.1.1.9 255.255.255.252
exit
!
interface HundredGigabitEthernet1/0/2
ip address 10.1.1.13 255.255.255.252
exit
!
interface HundredGigabitEthernet1/0/32
ip address 10.1.255.5 255.255.255.252
exit
!
interface vlan 1
no ip address dhcp
exit
!
interface oob
ip vrf MGMT
ip address 172.23.84.12 255.255.255.0
no ip address dhcp
exit
!
interface loopback1
ip address 10.1.0.12 255.255.255.255
exit
!
!
!
ip default-gateway 172.23.84.1 vrf MGMT
!
router ospf 100
network 10.1.0.12 area 0.0.0.0
network 10.1.1.9 area 0.0.0.0
network 10.1.1.13 area 0.0.0.0
network 10.1.255.5 area 0.0.0.0
router-id 10.1.0.12
exit
!
router bgp 65001
bgp router-id 10.1.0.12
address-family ipv4 unicast
exit
!
address-family l2vpn evpn
exit
!
peer-group RRC
remote-as 65001
update-source loopback 1
fall-over bfd
route-reflector-client
soft-reconfiguration inbound
password encrypted sVzWTDY7HEH4Px3EEVFbWz5V4aJC5LRc7z4HDqJ8Gjo=
exit
!
neighbor 10.1.0.13
peer-group RRC
address-family ipv4 unicast
exit
!
address-family l2vpn evpn
exit
exit
!
neighbor 10.1.0.14
peer-group RRC
address-family ipv4 unicast
exit
!
address-family l2vpn evpn
exit
exit
!
neighbor 10.1.255.6
remote-as 65001
fall-over bfd
route-reflector-client
soft-reconfiguration inbound
password encrypted sVzWTDY7HEH4Px3EEVFbWz5V4aJC5LRc7z4HDqJ8Gjo=
address-family ipv4 unicast
exit
!
address-family l2vpn evpn
exit
exit
exit
!
!
end

eSpine 2-1

eSpine2-1#sh run
ip vrf MGMT
exit
!
ip vrf A
exit
!
!
vlan database
vlan 10-11
exit
!
ip maximum-paths 32
!
anycast-gateway mac-address 12:34:56:78:ab:cd
!
hostname eSpine2-1
!
username croc password encrypted 5d18ada9ed1a641f5df43c9c48f6069ce25cdfd68a38c5fea5e9b3c3993e4b216a4c14ff6777044700cc42095b20bdb8b3bdb0ba277e93f252cd489e645d9502 privilege 15 encryption-algorithm sha-512
!
ip ssh server vrf MGMT
!
interface HundredGigabitEthernet1/0/1
channel-group 1 mode auto
exit
!
interface HundredGigabitEthernet1/0/2
channel-group 1 mode auto
exit
!
interface HundredGigabitEthernet1/0/3
ip address 10.2.1.5 255.255.255.252
exit
!
interface HundredGigabitEthernet1/0/4
ip address 10.2.1.9 255.255.255.252
exit
!
interface HundredGigabitEthernet1/0/31
ip address 10.1.255.2 255.255.255.252
exit
!
interface HundredGigabitEthernet1/0/32
ip address 10.1.255.6 255.255.255.252
exit
!
interface Port-Channel1
ip address 10.2.1.1 255.255.255.252
exit
!
interface vlan 1
no ip address dhcp
exit
!
interface vlan 10
name CustomerA-1
ip vrf A
ip address 10.1.10.1 255.255.255.0
exit
!
interface vlan 11
name CustomerA-2
ip vrf A
ip address 10.1.11.1 255.255.255.0
exit
!
interface oob
ip vrf MGMT
ip address 172.23.84.15 255.255.255.0
no ip address dhcp
exit
!
interface loopback1
ip address 10.1.0.15 255.255.255.255
exit
!
!
!
ip default-gateway 172.23.84.1 vrf MGMT
!
!
router ospf 100
network 10.1.0.15 area 0.0.0.0
network 10.1.255.2 area 0.0.0.0
network 10.1.255.6 area 0.0.0.0
network 10.2.1.1 area 0.0.0.0
network 10.2.1.5 area 0.0.0.0
network 10.2.1.9 area 0.0.0.0
router-id 10.1.0.15
exit
!
router bgp 65001
bgp router-id 10.1.0.15
address-family ipv4 unicast
exit
!
address-family l2vpn evpn
exit
!
peer-group RRC
remote-as 65001
update-source loopback 1
route-reflector-client
soft-reconfiguration inbound
password encrypted sVzWTDY7HEH4Px3EEVFbWz5V4aJC5LRc7z4HDqJ8Gjo=
exit
!
peer-group RRC_BFD
remote-as 65001
update-source loopback 1
fall-over bfd
route-reflector-client
soft-reconfiguration inbound
password encrypted sVzWTDY7HEH4Px3EEVFbWz5V4aJC5LRc7z4HDqJ8Gjo=
exit
!
neighbor 10.1.0.16
peer-group RRC
address-family ipv4 unicast
exit
!
address-family l2vpn evpn
exit
exit
!
neighbor 10.1.0.17
peer-group RRC_BFD
address-family ipv4 unicast
exit
!
address-family l2vpn evpn
exit
exit
!
neighbor 10.1.255.1
remote-as 65001
fall-over bfd
route-reflector-client
soft-reconfiguration inbound
password encrypted sVzWTDY7HEH4Px3EEVFbWz5V4aJC5LRc7z4HDqJ8Gjo=
address-family ipv4 unicast
exit
!
address-family l2vpn evpn
exit
exit
!
neighbor 10.1.255.5
remote-as 65001
fall-over bfd
route-reflector-client
soft-reconfiguration inbound
password encrypted sVzWTDY7HEH4Px3EEVFbWz5V4aJC5LRc7z4HDqJ8Gjo=
address-family ipv4 unicast
exit
!
address-family l2vpn evpn
exit
exit
exit
!
!
end

eLeaf 1-1

eLeaf1-1#sh run
ip vrf MGMT
exit
!
ip vrf A
vni 30000
route-target both 1.2.3.4:3000
exit
!
ip vrf B
vni 30001
route-target both 1.2.3.4:3001
exit
!
!
vlan database
vlan 10-11,20,3000-3001
exit
!
vxlan VLAN10
vni 20010
arp-suppression
vlan 10
route-target both 10.1.10.0:10
exit
!
vxlan VLAN11
vni 20011
arp-suppression
vlan 11
route-target both 10.1.11.0:11
exit
!
vxlan VLAN20
vni 20020
arp-suppression
vlan 20
route-target both 10.1.20.0:20
exit
!
vxlan VRF_A
vni 30000 ip-routing
vlan 3000
exit
!
vxlan VRF_B
vni 30001 ip-routing
vlan 3001
exit
!
!
ip maximum-paths 32
!
anycast-gateway mac-address 12:34:56:78:ab:cd
!
hostname eLeaf1-1
!
logging host 172.23.84.80 vrf MGMT
logging origin-id hostname
logging source-interface oob vrf MGMT
!
username croc password encrypted 5d18ada9ed1a641f5df43c9c48f6069ce25cdfd68a38c5fea5e9b3c3993e4b216a4c14ff6777044700cc42095b20bdb8b3bdb0ba277e93f252cd489e645d9502 privilege 15 encryption-algorithm sha-512
!
ip ssh server vrf MGMT
!
snmp-server server
snmp-server engineID local 800089c1039054b74e5b00
snmp-server view iso iso included
encrypted snmp-server host 172.23.84.80 version 3 priv hXT0cGv3GYVLcHVklQxGT7ozAKWFDYa2is4ZCTyVvKE= vrf MGMT
snmp-server group ECCM v3 priv read iso
encrypted snmp-server user snmp-user ECCM v3 auth md5 y+SIfENWL1MT2QrQSJcpnTa4z2oZBGR3g/6UkS8dolg= priv-protocol aes-128-cfb priv y+SIfENWL1MT2QrQSJcpnTa4z2oZBGR3g/6UkS8dolg= vrf MGMT
snmp-server source-interface traps oob vrf MGMT
!
clock timezone MSK +3
!
interface TwentyFiveGigaEthernet1/0/1
speed 1000
switchport access vlan 10
exit
!
interface HundredGigabitEthernet1/0/1
channel-group 1 mode auto
fec cl91
exit
!
interface HundredGigabitEthernet1/0/5
ip address 10.1.1.2 255.255.255.252
exit
!
interface HundredGigabitEthernet1/0/6
ip address 10.1.1.10 255.255.255.252
exit
!
interface Port-Channel1
switchport mode trunk
switchport trunk allowed vlan add 10-11,20
ethernet-segment 1
system-mac 55:55:55:55:00:01
exit
exit
!
interface vlan 10
name CustomerA-1
ip vrf A
ip address 10.1.10.1 255.255.255.0
anycast-gateway
exit
!
interface vlan 11
name CustomerA-2
ip vrf A
ip address 10.1.11.1 255.255.255.0
anycast-gateway
exit
!
interface vlan 20
name CustomerB-1
ip vrf B
ip address 10.1.20.1 255.255.255.0
anycast-gateway
exit
!
interface vlan 3000
name VRF_A
ip vrf A
exit
!
interface vlan 3001
name VRF_B
ip vrf B
exit
!
interface oob
ip vrf MGMT
ip address 172.23.84.13 255.255.255.0
no ip address dhcp
exit
!
interface loopback1
ip address 10.1.0.13 255.255.255.255
exit
!
!
!
ip default-gateway 172.23.84.1 vrf MGMT
!
!
!
router ospf 100
network 10.1.0.13 area 0.0.0.0
network 10.1.1.2 area 0.0.0.0
network 10.1.1.10 area 0.0.0.0
router-id 10.1.0.13
exit
!
router bgp 65001
bgp router-id 10.1.0.13
address-family ipv4 unicast
exit
!
address-family l2vpn evpn
exit
!
peer-group RR
remote-as 65001
update-source loopback 1
fall-over bfd
soft-reconfiguration inbound
password encrypted sVzWTDY7HEH4Px3EEVFbWz5V4aJC5LRc7z4HDqJ8Gjo=
exit
!
neighbor 10.1.0.11
peer-group RR
address-family ipv4 unicast
exit
!
address-family l2vpn evpn
exit
exit
!
neighbor 10.1.0.12
peer-group RR
address-family ipv4 unicast
exit
!
address-family l2vpn evpn
exit
exit
!
vrf A
address-family ipv4 unicast
network 0.0.0.0 mask 0.0.0.0
redistribute connected
exit
exit
!
vrf B
address-family ipv4 unicast
network 0.0.0.0 mask 0.0.0.0
redistribute connected
exit
exit
exit
!
!
end

eLeaf 1-2

eLeaf1-2#sh run
ip vrf MGMT
exit
!
ip vrf A
vni 30000
route-target both 1.2.3.4:3000
exit
!
ip vrf B
vni 30001
route-target both 1.2.3.4:3001
exit
!
!
vlan database
vlan 10-11,20,3000-3001
exit
!
vxlan VLAN10
vni 20010
arp-suppression
vlan 10
route-target both 10.1.10.0:10
exit
!
vxlan VLAN11
vni 20011
arp-suppression
vlan 11
route-target both 10.1.11.0:11
exit
!
vxlan VLAN20
vni 20020
arp-suppression
vlan 20
route-target both 10.1.20.0:20
exit
!
vxlan VRF_A
vni 30000 ip-routing
vlan 3000
exit
!
vxlan VRF_B
vni 30001 ip-routing
vlan 3001
exit
!
!
ip maximum-paths 32
!
anycast-gateway mac-address 12:34:56:78:ab:cd
!
hostname eLeaf1-2
!
username croc password encrypted 5d18ada9ed1a641f5df43c9c48f6069ce25cdfd68a38c5fea5e9b3c3993e4b216a4c14ff6777044700cc42095b20bdb8b3bdb0ba277e93f252cd489e645d9502 privilege 15 encryption-algorithm sha-512
!
ip ssh server vrf MGMT
!
interface HundredGigabitEthernet1/0/1
channel-group 1 mode auto
fec cl91
exit
!
interface HundredGigabitEthernet1/0/5
ip address 10.1.1.6 255.255.255.252
exit
!
interface HundredGigabitEthernet1/0/6
ip address 10.1.1.14 255.255.255.252
exit
!
interface Port-Channel1
switchport mode trunk
switchport trunk allowed vlan add 10-11,20
ethernet-segment 1
system-mac 55:55:55:55:00:01
exit
exit
!
interface vlan 10
name CustomerA-1
ip vrf A
ip address 10.1.10.1 255.255.255.0
anycast-gateway
exit
!
interface vlan 11
name CustomerA-2
ip vrf A
ip address 10.1.11.1 255.255.255.0
anycast-gateway
exit
!
interface vlan 20
name CustomerB-1
ip vrf B
ip address 10.1.20.1 255.255.255.0
anycast-gateway
exit
!
interface vlan 3000
name VRF_A
ip vrf A
exit
!
interface vlan 3001
name VRF_B
ip vrf B
exit
!
interface oob
ip vrf MGMT
ip address 172.23.84.14 255.255.255.0
no ip address dhcp
exit
!
interface loopback1
ip address 10.1.0.14 255.255.255.255
exit
!
!
!
ip default-gateway 172.23.84.1 vrf MGMT
!
!
!
router ospf 100
network 10.1.0.14 area 0.0.0.0
network 10.1.1.6 area 0.0.0.0
network 10.1.1.14 area 0.0.0.0
router-id 10.1.0.14
exit
!
router bgp 65001
bgp router-id 10.1.0.14
address-family ipv4 unicast
exit
!
address-family l2vpn evpn
exit
!
peer-group RR
remote-as 65001
update-source loopback 1
fall-over bfd
soft-reconfiguration inbound
password encrypted sVzWTDY7HEH4Px3EEVFbWz5V4aJC5LRc7z4HDqJ8Gjo=
exit
!
neighbor 10.1.0.11
peer-group RR
address-family ipv4 unicast
exit
!
address-family l2vpn evpn
exit
exit
!
neighbor 10.1.0.12
peer-group RR
address-family ipv4 unicast
exit
!
address-family l2vpn evpn
exit
exit
!
vrf A
address-family ipv4 unicast
network 0.0.0.0 mask 0.0.0.0
redistribute connected
exit
exit
!
vrf B
address-family ipv4 unicast
network 0.0.0.0 mask 0.0.0.0
redistribute connected
exit
exit
exit
!
!
end

eLeaf 2-1

eLeaf2-1#sh run
ip vrf MGMT
exit
!
ip vrf A
vni 30000
route-target both 1.2.3.4:3000
exit
!
ip vrf B
vni 30001
route-target both 1.2.3.4:3001
exit
!
!
vlan database
vlan 10-11,20,3000-3001
exit
!
vxlan VLAN10
vni 20010
arp-suppression
vlan 10
route-target both 10.1.10.0:10
exit
!
vxlan VLAN11
vni 20011
arp-suppression
vlan 11
route-target both 10.1.11.0:11
exit
!
vxlan VRF_A
vni 30000 ip-routing
vlan 3000
exit
!
vxlan VLAN20
vni 20020
arp-suppression
vlan 20
route-target both 10.1.20.0:20
exit
!
vxlan VRF_B
vni 30001 ip-routing
vlan 3001
exit
!
!
ip maximum-paths 32
!
anycast-gateway mac-address 12:34:56:78:ab:cd
!
hostname eLeaf2-1
!
username croc password encrypted 5d18ada9ed1a641f5df43c9c48f6069ce25cdfd68a38c5fea5e9b3c3993e4b216a4c14ff6777044700cc42095b20bdb8b3bdb0ba277e93f252cd489e645d9502 privilege 15 encryption-algorithm sha-512
!
ip ssh server vrf MGMT
!
interface TwentyFiveGigaEthernet1/0/1
speed 1000
switchport access vlan 11
exit
!
interface HundredGigabitEthernet1/0/1
switchport mode trunk
switchport trunk allowed vlan add 10-11
fec cl91
exit
!
interface HundredGigabitEthernet1/0/2
switchport access vlan 20
fec cl91
exit
!
interface HundredGigabitEthernet1/0/5
channel-group 1 mode auto
exit
!
interface HundredGigabitEthernet1/0/6
channel-group 1 mode auto
exit
!
interface Port-Channel1
ip address 10.2.1.2 255.255.255.252
exit
!
interface vlan 10
name CustomerA-1
ip vrf A
ip address 10.1.10.1 255.255.255.0
anycast-gateway
exit
!
interface vlan 11
name CustomerA-2
ip vrf A
ip address 10.1.11.1 255.255.255.0
anycast-gateway
exit
!
interface vlan 20
name CustomerB-1
ip vrf B
ip address 10.1.20.1 255.255.255.0
anycast-gateway
exit
!
interface vlan 3000
name VRF_A
ip vrf A
exit
!
interface vlan 3001
name VRF_B
ip vrf B
exit
!
interface oob
ip vrf MGMT
ip address 172.23.84.16 255.255.255.0
no ip address dhcp
exit
!
interface loopback1
ip address 10.1.0.16 255.255.255.255
exit
!
!
!
ip default-gateway 172.23.84.1 vrf MGMT
!
!
!
router ospf 100
network 10.1.0.16 area 0.0.0.0
network 10.2.1.2 area 0.0.0.0
router-id 10.1.0.16
exit
!
router bgp 65001
bgp router-id 10.1.0.16
address-family ipv4 unicast
exit
!
address-family l2vpn evpn
exit
!
peer-group RR
remote-as 65001
update-source loopback 1
soft-reconfiguration inbound
password encrypted sVzWTDY7HEH4Px3EEVFbWz5V4aJC5LRc7z4HDqJ8Gjo=
exit
!
neighbor 10.1.0.15
peer-group RR
address-family ipv4 unicast
exit
!
address-family l2vpn evpn
exit
exit
!
vrf A
address-family ipv4 unicast
network 0.0.0.0 mask 0.0.0.0
redistribute connected
exit
exit
!
vrf B
address-family ipv4 unicast
network 0.0.0.0 mask 0.0.0.0
redistribute connected
exit
exit
exit
!
!
end

eLeaf 2-2

eLeaf2-2#sh run
ip vrf MGMT
exit
!
ip vrf B
vni 30001
route-target both 1.2.3.4:3001
exit
!
!
vlan database
vlan 20,3001
exit
!
vxlan VLAN20
vni 20020
arp-suppression
vlan 20
route-target both 10.1.20.0:20
exit
!
vxlan VRF_B
vni 30001 ip-routing
vlan 3001
exit
!
!
ip maximum-paths 32
!
anycast-gateway mac-address 12:34:56:78:ab:cd
!
hostname eLeaf2-2
!
username croc password encrypted 5d18ada9ed1a641f5df43c9c48f6069ce25cdfd68a38c5fea5e9b3c3993e4b216a4c14ff6777044700cc42095b20bdb8b3bdb0ba277e93f252cd489e645d9502 privilege 15 encryption-algorithm sha-512
!
ip ssh server vrf MGMT
!
interface HundredGigabitEthernet1/0/1
switchport access vlan 20
fec cl91
exit
!
interface HundredGigabitEthernet1/0/5
ip address 10.2.1.6 255.255.255.252
exit
!
interface HundredGigabitEthernet1/0/6
ip address 10.2.1.10 255.255.255.252
exit
!
interface vlan 20
name CustomerB-1
ip vrf B
ip address 10.1.20.1 255.255.255.0
anycast-gateway
exit
!
interface vlan 3001
name VRF_B
ip vrf B
exit
!
interface oob
ip vrf MGMT
ip address 172.23.84.17 255.255.255.0
no ip address dhcp
exit
!
interface loopback1
ip address 10.1.0.17 255.255.255.255
exit
!
!
!
ip default-gateway 172.23.84.1 vrf MGMT
!
!
router ospf 100
network 10.1.0.17 area 0.0.0.0
network 10.2.1.6 area 0.0.0.0
network 10.2.1.10 area 0.0.0.0
router-id 10.1.0.17
exit
!
router bgp 65001
bgp router-id 10.1.0.17
address-family ipv4 unicast
exit
!
address-family l2vpn evpn
exit
!
peer-group RR
remote-as 65001
update-source loopback 1
fall-over bfd
soft-reconfiguration inbound
password encrypted sVzWTDY7HEH4Px3EEVFbWz5V4aJC5LRc7z4HDqJ8Gjo=
exit
!
neighbor 10.1.0.15
peer-group RR
address-family ipv4 unicast
exit
!
address-family l2vpn evpn
exit
exit
!
vrf B
address-family ipv4 unicast
network 0.0.0.0 mask 0.0.0.0
redistribute connected
exit
exit
exit
!
!
end

Комментарии (0)


  1. lesha-filimonov
    24.09.2025 11:27

    Фанатично написанная статья с детективным сюжетом! Спасибо большое за вашу работу!


    1. EAlykhov Автор
      24.09.2025 11:27

      Спасибо!