> For the complete documentation index, see [llms.txt](https://adavyshin.gitbook.io/networks/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://adavyshin.gitbook.io/networks/network/laboratornaya-rabota-vxlan.md).

# Лабораторная работа: VXLAN

## Ч1. Предисловие

На лабораторном полигоне разворачиваем мини-VXLAN EVPN фабрику на базе виртуальных \
L3-коммутаторов с рабочим софтом Arista vEOS Lab. Почему не Cisco Nexus 9000v? Arista vEOS требует намного меньше аппаратных ресурсов по сравнению с NX-OS. На каждый коммутатор у нас выделяется по 1 vCPU и по 2 GB RAM, c HDD в режиме thin-provision порядка 500МВ, хотя в системе резервируется жёсткий диск под 4 GB.

Фабрика состоит из двух пар `Leaf`-коммутаторов, работающих в MC-LAG, то есть 4 шт, и двух `Spine`-коммутаторов, которые на себе держат BGP-RR (route-reflector).

<figure><img src="/files/Gshjk3pdgLoEjF8EHTuT" alt=""><figcaption></figcaption></figure>

В качестве underlay протокола маршрутизации будем использовать OSPF, для того чтобы все устройства знали Loopback-адреса друг друга.  Список адресов, которые используются для Loopback представлен ниже в таблице:

<table data-full-width="true"><thead><tr><th align="center">Hostname</th><th align="center">Loopback0 (BGP Update Source)</th><th align="center">Loopback1 (Anycast VTEP)</th></tr></thead><tbody><tr><td align="center">Leaf-01</td><td align="center">10.0.0.1</td><td align="center">10.0.1.12</td></tr><tr><td align="center">Leaf-02</td><td align="center">10.0.0.2</td><td align="center">10.0.1.12</td></tr><tr><td align="center">Leaf-03</td><td align="center">10.0.0.3</td><td align="center">10.0.1.34</td></tr><tr><td align="center">Leaf-04</td><td align="center">10.0.0.4</td><td align="center">10.0.1.34</td></tr><tr><td align="center">Spine-01</td><td align="center">10.0.0.101</td><td align="center">N/A</td></tr><tr><td align="center">Spine-02</td><td align="center">10.0.0.102</td><td align="center">N/A</td></tr></tbody></table>

## Ч2. Настраиваем underlay и overlay

Настройка underlay инфраструктуры представляет из себя настройку OSPF по всем межкоммутаторным соединениям и объявление Loopback-адресов, Cisco рекомендует OSPF, хотя Huawei - BGP. Также обратите внимание, что для межкоммутаторных линий используются `/31` подсети, где у нас все два адреса для устройств, и нет адреса сети и широковещательного адреса. Для ускорения взаимодействия OSPF соседства на интерфейсах используется `network type point-to-point`.

Для overlay у нас используется MP-BGP, в частности EVPN address-family. В параметрах bgp-соседства важно будет указать, что передаём community, так как VNI (идентификатор VXLAN) у нас и представляет community. Так как фабрика у нас маленькая и количество BGP-соседей не большое, но бывают разные ситуации я привожу пример с масштабируемой настройкой BGP, где используем фичу `peer group`. И вдруг в фабрике было 100+ leaf-ов, то вам бы не пришлось до каждого leaf прописывать все настройки соседства.

{% hint style="info" %}
Логин для входа на коммутаторы Arista - admin, без пароля.
{% endhint %}

🔧 Настройка коммутатора <kbd>Spine-01</kbd>:

```
configure terminal
!
interface Loopback0
  description {iBGP Source}
  ip address 10.0.0.101/32
!
router ospf 10
  router-id 10.0.0.101
  network 10.0.0.101/32 area 0
  network 10.1.101.0/31 area 0
  network 10.2.101.0/31 area 0
  network 10.3.101.0/31 area 0
  network 10.4.101.0/31 area 0 
!
router bgp 65000
   router-id 10.0.0.101
   neighbor LEAFS peer group
   neighbor LEAFS remote-as 65000
   neighbor LEAFS update-source Loopback0
   neighbor LEAFS route-reflector-client
   neighbor LEAFS send-community standard extended
   neighbor 10.0.0.1 peer group LEAFS
   neighbor 10.0.0.2 peer group LEAFS
   neighbor 10.0.0.3 peer group LEAFS
   neighbor 10.0.0.4 peer group LEAFS
   !
   address-family evpn
      neighbor LEAFS activate
!
interface Ethernet1-4
  ip ospf network point-to-point

```

🔧 Настройка коммутатора <kbd>Spine-02</kbd>:

```
configure terminal
!
interface Loopback0
  description {iBGP Source}
  ip address 10.0.0.102/32
!
router ospf 10
  router-id 10.0.0.102
  network 10.0.0.102/32 area 0
  network 10.1.102.0/31 area 0
  network 10.2.102.0/31 area 0
  network 10.3.102.0/31 area 0
  network 10.4.102.0/31 area 0 
!
router bgp 65000
   router-id 10.0.0.102
   neighbor LEAFS peer group
   neighbor LEAFS remote-as 65000
   neighbor LEAFS update-source Loopback0
   neighbor LEAFS route-reflector-client
   neighbor LEAFS send-community standard extended
   neighbor 10.0.0.1 peer group LEAFS
   neighbor 10.0.0.2 peer group LEAFS
   neighbor 10.0.0.3 peer group LEAFS
   neighbor 10.0.0.4 peer group LEAFS
   !
   address-family evpn
      neighbor LEAFS activate
!
interface Ethernet1-4
  ip ospf network point-to-point
```

🔧 Настройка коммутатора <kbd>Leaf-01</kbd>:

```
configure terminal
!
interface Loopback0
  description {iBGP Source}
  ip address 10.0.0.1/32
!
router ospf 10
  router-id 10.0.0.1
  network 10.0.0.1/32 area 0
  network 10.1.101.0/31 area 0
  network 10.1.102.0/31 area 0
!
router bgp 65000
   router-id 10.0.0.1
   neighbor SPINES peer group
   neighbor SPINES remote-as 65000
   neighbor SPINES update-source Loopback0
   neighbor SPINES send-community standard extended
   neighbor 10.0.0.101 peer group SPINES
   neighbor 10.0.0.102 peer group SPINES
   !
   address-family evpn
      neighbor SPINES activate
!
interface Ethernet1-2
  ip ospf network point-to-point
```

🔧 Настройка коммутатора <kbd>Leaf-02</kbd>:

```
configure terminal
!
interface Loopback0
  description {iBGP Source}
  ip address 10.0.0.2/32
!
router ospf 10
  router-id 10.0.0.2
  network 10.0.0.2/32 area 0
  network 10.2.101.0/31 area 0
  network 10.2.102.0/31 area 0
!
router bgp 65000
   router-id 10.0.0.2
   neighbor SPINES peer group
   neighbor SPINES remote-as 65000
   neighbor SPINES update-source Loopback0
   neighbor SPINES send-community standard extended
   neighbor 10.0.0.101 peer group SPINES
   neighbor 10.0.0.102 peer group SPINES
   !
   address-family evpn
      neighbor SPINES activate
!
interface Ethernet1-2
  ip ospf network point-to-point
```

🔧 Настройка коммутатора <kbd>Leaf-03</kbd>:

```
configure terminal
!
interface Loopback0
  description {iBGP Source}
  ip address 10.0.0.3/32
!
router ospf 10
  router-id 10.0.0.3
  network 10.0.0.3/32 area 0
  network 10.3.101.0/31 area 0
  network 10.3.102.0/31 area 0
!
router bgp 65000
   router-id 10.0.0.3
   neighbor SPINES peer group
   neighbor SPINES remote-as 65000
   neighbor SPINES update-source Loopback0
   neighbor SPINES send-community standard extended
   neighbor 10.0.0.101 peer group SPINES
   neighbor 10.0.0.102 peer group SPINES
   !
   address-family evpn
      neighbor SPINES activate
!
interface Ethernet1-2
  ip ospf network point-to-point
```

🔧 Настройка коммутатора <kbd>Leaf-04</kbd>:

```
configure terminal
!
interface Loopback0
  description {iBGP Source}
  ip address 10.0.0.4/32
!
router ospf 10
  router-id 10.0.0.4
  network 10.0.0.4/32 area 0
  network 10.4.101.0/31 area 0
  network 10.4.102.0/31 area 0
!
router bgp 65000
   router-id 10.0.0.4
   neighbor SPINES peer group
   neighbor SPINES remote-as 65000
   neighbor SPINES update-source Loopback0
   neighbor SPINES send-community standard extended
   neighbor 10.0.0.101 peer group SPINES
   neighbor 10.0.0.102 peer group SPINES
!
   address-family evpn
      neighbor SPINES activate
!
interface Ethernet1-2
  ip ospf network point-to-point
```

## Ч3. Настройка MLAG на Leaf-коммутаторах

Настроим объединение Leaf-коммутаторов в MC-LAG, для peer-link на коммутаторах задействованы порты `Eth11` и `Eth12`, объединим их в агрегированный логический интерфейс `Port-channel`.

🔧 Настройка коммутатора <kbd>Leaf-01</kbd>:

```
configure terminal
!
interface Ethernet11
   description {Leaf-02_Eth11}
   channel-group 1000 mode active
!
interface Ethernet12
   description {Leaf-02_Eth12}
   channel-group 1000 mode active
!
interface Port-Channel1000
   description MLAG-Peer-Link
   switchport mode trunk
!
vlan 4094
!
interface Vlan4094
   ip address 10.12.0.1/30
   no autostate
   no shutdown
!
mlag configuration
   domain-id MLAG-PAIR-1
   local-interface Vlan4094
   peer-address 10.12.0.2
   peer-link Port-Channel1000
!
router ospf 10
  network 10.12.0.0/30 area 0
```

🔧 Настройка коммутатора <kbd>Leaf-02</kbd>:

```
configure terminal
!
interface Ethernet11
   description {Leaf-01_Eth11}
   channel-group 1000 mode active
!
interface Ethernet12
   description {Leaf-01_Eth12}
   channel-group 1000 mode active
!
interface Port-Channel1000
   description MLAG-Peer-Link
   switchport mode trunk
!
vlan 4094
!
interface Vlan4094
   ip address 10.12.0.2/30
   no autostate
   no shutdown
!
mlag configuration
   domain-id MLAG-PAIR-1
   local-interface Vlan4094
   peer-address 10.12.0.1
   peer-link Port-Channel1000
!
router ospf 10
  network 10.12.0.0/30 area 0
```

🔧 Настройка коммутатора <kbd>Leaf-03</kbd>:

```
configure terminal
!
interface Ethernet11
   description {Leaf-04_Eth11}
   channel-group 1000 mode active
!
interface Ethernet12
   description {Leaf-04_Eth12}
   channel-group 1000 mode active
!
interface Port-Channel1000
   description MLAG-Peer-Link
   switchport mode trunk
!
vlan 4094
!
interface Vlan4094
   ip address 10.34.0.1/30
   no autostate
   no shutdown
!
mlag configuration
   domain-id MLAG-PAIR-2
   local-interface Vlan4094
   peer-address 10.34.0.2
   peer-link Port-Channel1000
!
router ospf 10
  network 10.34.0.0/30 area 0
```

🔧 Настройка коммутатора <kbd>Leaf-04</kbd>:

```
configure terminal
!
interface Ethernet11
   description {Leaf-03_Eth11}
   channel-group 1000 mode active
!
interface Ethernet12
   description {Leaf-03_Eth12}
   channel-group 1000 mode active
!
interface Port-Channel1000
   description MLAG-Peer-Link
   switchport mode trunk
!
vlan 4094
!
interface Vlan4094
   ip address 10.34.0.2/30
   no autostate
   no shutdown
!
mlag configuration
   domain-id MLAG-PAIR-2
   local-interface Vlan4094
   peer-address 10.34.0.1
   peer-link Port-Channel1000
!
router ospf 10
  network 10.34.0.0/30 area 0
```

***

C Anycast VTEP, оба Leaf-коммутатора в MLAG-паре будут строить VXLAN-туннели из под единого IP-адреса. Без использования одинакового адреса в инфраструктуре может случатся ситуации, когда сервер подключается по LACP сразу к двум Leaf, и каждый Leaf будет анонсировать в EVPN "*У меня есть MAC/IP такого-то сервера за своим уникальным VTEP IP*", в результате будут возникать дубли в таблицах MAC/IP, неопределённость маршрута, а в худшем случае - петли и флаппинг MAC.

🔧 Настройка коммутатора <kbd>Leaf-01</kbd>:

```
configure terminal
!
interface Loopback1
   description {Anycast-VTEP}
   ip address 10.0.1.12/32
!
router ospf 10
  network 10.0.1.12/32 area 0
```

🔧 Настройка коммутатора <kbd>Leaf-02</kbd>:

```
configure terminal
!
interface Loopback1
   description {Anycast-VTEP}
   ip address 10.0.1.12/32
!
router ospf 10
  network 10.0.1.12/32 area 0
```

🔧 Настройка коммутатора <kbd>Leaf-03</kbd>:

```
configure terminal
!
interface Loopback1
   description {Anycast-VTEP}
   ip address 10.0.1.34/32
!
router ospf 10
  network 10.0.1.34/32 area 0
```

🔧 Настройка коммутатора <kbd>Leaf-04</kbd>:

```
configure terminal
!
interface Loopback1
   description {Anycast-VTEP}
   ip address 10.0.1.34/32
!
router ospf 10
  network 10.0.1.34/32 area 0
```

## Ч4. Построение L2-связности (L2VNI)

Наша задача сделать так, чтобы два импровизированных хоста <kbd>HOST-A1</kbd> и <kbd>HOST-A2</kbd> смогли увидеть друг-друга, хотя они находятся за разными парами Leaf-коммутаторами и между Leaf-ами как вы понимаете не растянуты VLAN, там L3-развязка.

Создаём необходимый нам `VLAN10`, также создаём дополнительный `VLAN20`, он нам понадобиться для маршрутизации между VLAN, но в рамках этого пункта он не нужен. Добавлен в этом разделе для того, что однотипную задачу выполнить разом, и не возвращаться к ней.&#x20;

Следующим шагом создаём VXLAN-интерфейсы (NVE), из под которых будет происходить VXLAN-туннелирование. Внутри этого интерфейса мы объявляем какой `Virtual Network Identifier` будет использоваться для того, чтобы содержимое VXLAN-пакетов можно было сегрегировать.&#x20;

Команда `service routing protocols model multi-agent` используется сугубо для Arista EOS, она меняет архитектуру ОС как работают протоколы маршрутизации, это необходимо нам для работы EVPN&#x20;

🔧 Настройка коммутатора <kbd>Leaf-01</kbd>:

```
configure terminal
!
service routing protocols model multi-agent
!
vlan 10
  name net_192.168.10.0s24
!
vlan 20
  name net_192.168.20.0s24
!
interface Vlan10
  ip address 192.168.10.1/24
  no autostate
!
interface Vlan20
  ip address 192.168.20.1/24
  no autostate
!
interface Vxlan1
   vxlan source-interface Loopback1
   vxlan mlag source-interface Loopback 1
   vxlan udp-port 4789
   vxlan vlan 10 vni 1010
   vxlan vlan 20 vni 1020
!
router bgp 65000
  vlan 10
    rd 10.0.0.1:1010
    route-target import evpn domain all 1010:1010
    route-target export evpn domain all 1010:1010
  vlan 20
    rd 10.0.0.1:1020
    route-target import evpn domain all 1020:1020
    route-target export evpn domain all 1020:1020
```

🔧 Настройка коммутатора <kbd>Leaf-02</kbd>:

```
configure terminal
!
service routing protocols model multi-agent
!
vlan 10
  name net_192.168.10.0s24
!
vlan 20
  name net_192.168.20.0s24
!
interface Vlan10
  ip address 192.168.10.1/24
  no autostate
!
interface Vlan20
  ip address 192.168.20.1/24
  no autostate
!
interface Vxlan1
   vxlan source-interface Loopback1
   vxlan mlag source-interface Loopback 1
   vxlan udp-port 4789
   vxlan vlan 10 vni 1010
   vxlan vlan 20 vni 1020
!
router bgp 65000
  vlan 10
    rd 10.0.0.2:1010
    route-target import evpn domain all 1010:1010
    route-target export evpn domain all 1010:1010
  vlan 20
    rd 10.0.0.2:1020
    route-target import evpn domain all 1020:1020
    route-target export evpn domain all 1020:1020
```

🔧 Настройка коммутатора <kbd>Leaf-03</kbd>:

```
configure terminal
!
service routing protocols model multi-agent
!
vlan 10
  name net_192.168.10.0s24
!
vlan 20
  name net_192.168.20.0s24
!
interface Vlan10
  ip address 192.168.10.1/24
!
interface Vlan20
  ip address 192.168.20.1/24
!
interface Vxlan1
   vxlan source-interface Loopback1
   vxlan mlag source-interface Loopback 1
   vxlan udp-port 4789
   vxlan vlan 10 vni 1010
   vxlan vlan 20 vni 1020
!
router bgp 65000
  vlan 10
    rd 10.0.0.3:1010
    route-target import evpn domain all 1010:1010
    route-target export evpn domain all 1010:1010
  vlan 20
    rd 10.0.0.3:1020
    route-target import evpn domain all 1020:1020
    route-target export evpn domain all 1020:1020
```

🔧 Настройка коммутатора <kbd>Leaf-04</kbd>:

```
configure terminal
!

vlan 10
  name net_192.168.10.0s24
!
vlan 20
  name net_192.168.20.0s24
!
interface Vlan10
  ip address 192.168.10.1/24
!
interface Vlan20
  ip address 192.168.20.1/24
!
interface Vxlan1
   vxlan source-interface Loopback1
   vxlan mlag source-interface Loopback 1
   vxlan udp-port 4789
   vxlan vlan 10 vni 1010
   vxlan vlan 20 vni 1020
!
router bgp 65000
  vlan 10
    rd 10.0.0.4:1010
    route-target import evpn domain all 1010:1010
    route-target export evpn domain all 1010:1010
  vlan 20
    rd 10.0.0.4:1020
    route-target import evpn domain all 1020:1020
    route-target export evpn domain all 1020:1020
```

## Ч5. Настройка портов доступа в сторону серверов

🔧 Настройка коммутатора <kbd>Leaf-01</kbd>:

```
configure terminal
!
interface Ethernet5
  channel-group 5 mode active
  no shutdown
interface Port-channel5
  switchport mode access
  switchport access vlan 10
  mlag 5
!
interface Ethernet6
  channel-group 6 mode active
  no shutdown
interface Port-channel6
  switchport mode access
  switchport access vlan 20
  mlag 6
```

🔧 Настройка коммутатора <kbd>Leaf-02</kbd>:

```
configure terminal
!
interface Ethernet5
  channel-group 5 mode active
  no shutdown
interface Port-channel5
  switchport mode access
  switchport access vlan 10
  mlag 5
!
interface Ethernet6
  channel-group 6 mode active
  no shutdown
interface Port-channel6
  switchport mode access
  switchport access vlan 20
  mlag 6
```

🔧 Настройка коммутатора <kbd>Leaf-03</kbd>:

```
configure terminal
!
interface Ethernet5
  channel-group 5 mode active
  no shutdown
interface Port-channel5
  switchport mode access
  switchport access vlan 10
  mlag 5
```

🔧 Настройка коммутатора <kbd>Leaf-04</kbd>:

```
configure terminal
!
interface Ethernet5
  channel-group 5 mode active
  no shutdown
interface Port-channel5
  switchport mode access
  switchport access vlan 10
  mlag 5
```

## Ч6. Проверка L2-связности

Для понимания, что у нас настроено корректно воспользуемся диагностической командой `show vxlan config-sanity detail`. Тоже самое проверяем на остальных коммутаторах.

<figure><img src="/files/fbOwAhyJGgETZcrbmez6" alt=""><figcaption></figcaption></figure>

После импорта импорта лабораторной работы, на псевдо-хостах <kbd>HOST-XY</kbd>, которыми выступают образы IOU есть мини-баг с состояние SVI-интерфейса, хоть интерфейсы Po1 будут в состоянии UP и они работают в VLAN1, но SVI `interface Vlan1` будет в состоянии `DOWN`. Лечится обычным выключением `shutdown`/`no shudown`.

🔧 Реанимация хоста <kbd>HOST-A1</kbd>:

```
interface vlan1
 shutdown
 no shutdown
```

🔧  Реанимация хоста <kbd>HOST-A2</kbd>:

```
interface vlan1
 shutdown
 no shutdown
```

Теперь проверим, как всё между собой взаимодействует. Давайте с хоста <kbd>HOST-A1</kbd> (192.168.10.11) попробуем пингануть хост <kbd>HOST-A2</kbd> (192.168.10.12) . Для визуализации взаимодействия запустим Wireshark на соединениях между коммутаторами фабриками.&#x20;

<figure><img src="/files/FUtV7ukDD3tw4RTdjO8r" alt=""><figcaption></figcaption></figure>

Видим, что icmp-ping успешно проходит, при этом в Wireshark дампе мы наблюдаем следующую многослойную матрёшку (VXLAN-инкапсуляцию):\
`Ethernet-кадр` ➡️ `IPv4-пакет` ➡️ `UDP-дейтаграмма` ➡️ `VXLAN-заголовок` ➡️ `Исходный Ethernet-кадр` ➡️ `Исходный IPv4-пакет`.&#x20;

<figure><img src="/files/00nGHyHZso2cMOj34NV7" alt=""><figcaption></figcaption></figure>

Давайте проверим EVPN-маршруты на одном из Leaf-коммутаторов, здесь мы видим только `imet` (EVPN type-3 inclusive multicast). На основе этой информации у нас передаётся BUM-трафик. Но каждый раз гонять траффик по фабрике с широковещательными запросами - не очень правильно.&#x20;

<figure><img src="/files/aqi6bBI23480aWMhC5AG" alt=""><figcaption></figcaption></figure>

Предлагаю включить распространение EVPN type-2 маршрутов (mac+ip) и включить механизм ARP suppression, когда локальный Leaf отвечает на ARP-запрос, который адресован удалённому устройству, но обязательное условие если о связке mac+ip локальный Leaf узнал по BGP control plane сигнализации, как type-2 маршрут.

Команда `arp reply relay` включает механизм ARP Supression (Proxy-ARP), a `redistribute learned` внутри MAC-VRF (подсистема vlan внутри bgp конфигурации) - говорит устройству анонсировать локальный ARP-записи и просто MAC-записи в EVPN address-family как type-2 маршруты.

&#x20;Конфигурируем виртуальный MAC на  <kbd>Leaf-01</kbd>:

```
configure terminal
!
interface Vxlan1
  arp reply relay
!
router bgp 65000
  vlan 10
    redistribute learned
  !
  vlan 20
    redistribute learned
```

Конфигурируем виртуальный MAC на  <kbd>Leaf-02</kbd>:

```
configure terminal
!
interface Vxlan1
  arp reply relay
!
router bgp 65000
  vlan 10
    redistribute learned
  !
  vlan 20
    redistribute learned
```

Конфигурируем виртуальный MAC на  <kbd>Leaf-03</kbd>:

```
configure terminal
!
interface Vxlan1
  arp reply relay
!
router bgp 65000
  vlan 10
    redistribute learned
  !
  vlan 20
    redistribute learned
```

Конфигурируем виртуальный MAC на  <kbd>Leaf-04</kbd>:

```
configure terminal
!
interface Vxlan1
  arp reply relay
!
router bgp 65000
  vlan 10
    redistribute learned
  !
  vlan 20
    redistribute learned
```

## Ч7. Построение L3-связности (L3VNI)

В предыдущих разделах мы работали над обеспечением канальной связности межу хостами в подключенных к одному VLAN. Но теперь давайте подумаем над тем как обеспечить связность между VLAN, в традиционных сетях это делается с помощью отдельного маршрутизирующего устройства, в рамках VXLAN у нас есть 3 пути решения этого вопроса

* `Centralized Routing`, когда специально выделенный Leaf - Border Leaf делает L3 маршрутизацию межу VLAN&#x20;
* `Distributed Routing`, когда каждый Leaf-маршрутизатор маршрутизирует локально, то есть распределённый по всем Leaf-ам функционал.
* `External L3 Gateway`, внешний маршрутизатор или firewall за пределами VXLAN-фабрики занимается процессом перекладывания пакетов между VLAN.&#x20;

Мы в нашем сценарии рассмотрим 2-ой вариант, где у нас будет распределённый шлюз по технологии `Anycast Gateway` на Leaf-устройствах.

Anycast Gateway - технология, когда один и тот же unicast IP-адрес настроен на нескольких девайсах, и трафик направленный на этот общий IP-адрес будет направляться к ближайшему владельцу. Это технология очень удобна в Дата-Центрах, так как у вас большое количество хостов виртуализации распределённых между несколькими DC, а широковещательный домен - один. И виртуальные машины могут ездить из одного кластера в другой без изменения сетевой конфигурации, но есть "но. При миграции ВМ может запомнить ARP-кэш своего шлюза, а в другом DC за тем же IP-адресом шлюза может скрываться уже новый MAC-адрес.

💡Это ограничение тоже можно обойти с помощью виртуального MAC-адреса, который мы присвоим ко всем интерфейсам с anycast IPv4-адресом.

🔧 Конфигурируем виртуальный MAC на  <kbd>Leaf-01</kbd>:

```
configure terminal
!
ip virtual-router mac-address 00:1c:73:00:00:01
```

🔧 Конфигурируем виртуальный MAC на  <kbd>Leaf-02</kbd>:

```
configure terminal
!
ip virtual-router mac-address 00:1c:73:00:00:01
```

🔧 Конфигурируем виртуальный MAC на  <kbd>Leaf-03</kbd>:

```
configure terminal
!
ip virtual-router mac-address 00:1c:73:00:00:01
```

🔧 Конфигурируем виртуальный MAC на  <kbd>Leaf-04</kbd>:

```
configure terminal
!
ip virtual-router mac-address 00:1c:73:00:00:01
```

Взаимодействие между VLAN я предлагаю сделать по схеме Symmetric, когда у нас поднимается посредник L3VNI-домен, стоящий за VRF-сущностью. Синонимом VRF в контексте фабрик является термин Tenant, поэтому имя VRF мы дадим TENANT-VRF1.

{% hint style="info" %}
Тенанты (tenants) — это *логическая сущность, имеющая возможность использовать ресурсы и сервисы*
{% endhint %}

Обратите внимание, что после добавления интерфейса в VRF, то адресация аннулируется, что говорит следующее сообщение...

> ! Interface Vlan10 IP address 192.168.10.1 removed due to enabling VRF TENANT-VRF1

🔧 Конфигурируем VRF  и L3VNI на  <kbd>Leaf-01</kbd>:

```
configure terminal
!
vrf instance TENANT-VRF1
ip routing vrf TENANT-VRF1
!
interface Vlan10
   no autostate
   vrf TENANT-VRF1
   ip address 192.168.10.251/24
   ip virtual-router address 192.168.10.1/24
!
interface Vlan20
   no autostate
   vrf TENANT-VRF1
   ip address 192.168.20.251/24
   ip virtual-router address 192.168.20.1/24
!
interface vxlan1
  vxlan vrf TENANT-VRF1 vni 5000
!
router bgp 65000
  vrf TENANT-VRF1
    rd 10.0.0.1:5000
    route-target import evpn 5000:5000
    route-target export evpn 5000:5000
    redistribute connected
```

🔧 Конфигурируем VRF  и L3VNI  на  <kbd>Leaf-02</kbd>:

```
configure terminal
!
vrf instance TENANT-VRF1
ip routing vrf TENANT-VRF1
!
interface Vlan10
   no autostate
   vrf TENANT-VRF1
   ip address 192.168.10.252/24
   ip virtual-router address 192.168.10.1/24
!
interface Vlan20
   no autostate
   vrf TENANT-VRF1
   ip address 192.168.20.252/24
   ip virtual-router address 192.168.20.1/24

!
interface vxlan1
  vxlan vrf TENANT-VRF1 vni 5000
!
router bgp 65000
  vrf TENANT-VRF1
    rd 10.0.0.2:5000
    route-target import evpn 5000:5000
    route-target export evpn 5000:5000
    redistribute connected
```

🔧 Конфигурируем VRF  и L3VNI  на  <kbd>Leaf-03</kbd>:

```
configure terminal
!
vrf instance TENANT-VRF1
ip routing vrf TENANT-VRF1
!
interface Vlan10
   no autostate
   vrf TENANT-VRF1
   ip address 192.168.10.253/24
   ip virtual-router address 192.168.10.1/24
!
interface Vlan20
   no autostate
   vrf TENANT-VRF1
   ip address 192.168.20.253/24
   ip virtual-router address 192.168.20.1/24

!
interface vxlan1
  vxlan vrf TENANT-VRF1 vni 5000
!
router bgp 65000
  vrf TENANT-VRF1
    rd 10.0.0.3:5000
    route-target import evpn 5000:5000
    route-target export evpn 5000:5000
    redistribute connected
```

🔧 Конфигурируем VRF  и L3VNI  на  <kbd>Leaf-04</kbd>:

```
configure terminal
!
vrf instance TENANT-VRF1
ip routing vrf TENANT-VRF1
!
interface Vlan10
   no autostate
   vrf TENANT-VRF1
   ip address 192.168.10.254/24
   ip virtual-router address 192.168.10.1/24
!
interface Vlan20
   no autostate
   vrf TENANT-VRF1
   ip address 192.168.20.254/24
   ip virtual-router address 192.168.20.1/24

!
interface vxlan1
  vxlan vrf TENANT-VRF1 vni 5000
!
router bgp 65000
  vrf TENANT-VRF1
    rd 10.0.0.4:5000
    route-target import evpn 5000:5000
    route-target export evpn 5000:5000
    redistribute connected
```

## Ч.8 Проверка L3-связности

Смысл этого задания в том, что мы должны пропинговать с хоста в одном VLAN хост из другого VLAN.

Пробуем, с хоста <kbd>HOST-A1</kbd> отправляем echo-запрос на хост <kbd>HOST-B1</kbd> . И видим, что мы не получаем echo-ответ. Есть здесь один нюанс, который не даёт связаться этим двум устройствам. И понять почему, предлагаю предварительно вам самим. Здесь понадобиться Wireshark-дамп на обоих линках у хоста, с которого пингуете. Этим действием я хочу показать, что можно было бы долго копаться в настройках EVPN VXLAN-фабрики, но проблема не там. И очень часто мы копаемся в настройках, а быстродейственнее было бы посмотреть что происходит "в проводах".

Чтобы включить дамп, правой кнопкой мыши нажмите на интересующий провод и нажмите Dump.

Если долго не можете сообразить, то подсказка ниже...

<details>

<summary> Подсказка здесь ↩️</summary>

Изначально псевдо-хосты это образы IOS on Unix (IOU) в режиме L2, то есть отключен режим маршрутизации no ip routing, после этой команды хосты ведут себя не корректно. И если вы глянете внимательно дампы, то если вы с HOST-A1 пинговали HOST-B1, то в дампе увидите \
ARP-запрос на поиск IP из другой сети. Честно я не знаю, с чем это может связано. Но для корректной работы необходимо вернуть полноценный L3-функционал.&#x20;

🔧  На всех хостах <kbd>HOST-A1</kbd> & <kbd>HOST-A2</kbd>:

```
configure terminal
!
ip routing
ip cef
!
no ip default-gateway 192.18.10.1
!
ip route 0.0.0.0 0.0.0.0 192.168.10.1
```

```
configure terminal
!
ip routing
ip cef
!
no ip default-gateway 192.18.10.1
!
ip route 0.0.0.0 0.0.0.0 192.168.10.1
```

🔧  На всех хостах <kbd>HOST-B1</kbd>:

```
configure terminal
!
ip routing
ip cef
!
no ip default-gateway 192.18.20.1
!
ip route 0.0.0.0 0.0.0.0 192.168.20.1
```

</details>

После того как протраблшутили этот момент, давайте теперь проверим связность. Для убедительности я предлагаю, пинговать с хоста <kbd>HOST-B1</kbd> хост <kbd>HOST-A2</kbd>, так как они подключены к разным парам Leaf-коммутаторам, и маршрутизации в рамках одного коммутатора у нас не будет.

<figure><img src="/files/IZwonhgNZaiEbuJ5nnBb" alt=""><figcaption></figcaption></figure>

А давайте глянем таблицу маршрутизации на одном из leaf-коммутаторов, например, <kbd>Leaf-02</kbd>. Проверяем командой `show ip route vrf TENANT-VRF1`, если что имена VRF TAB-аются и полностью их писать не надо.

<figure><img src="/files/J2F8SagS81Ep5SV9yoxc" alt=""><figcaption></figcaption></figure>

💡 Обратите внимание, что у нас появился BGP EVPN-маршрут в ipv4 address-family, с VNI нашего VRF.&#x20;

***

На этом с лабораторной работой по EVPN VLAN давайте закончим, самые азы и принципы, которые работают под капотом IP-фабрики, я думаю, мне удалось донести, Двинемся дальше к multicast!!!


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://adavyshin.gitbook.io/networks/network/laboratornaya-rabota-vxlan.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
