# Часть 6. VxLAN. EVPN L3

### Цель

* Настроить маршрутизацию в рамках Overlay между клиентами

**Ожидаемый результат**

* Каждый клиент настроен в своем VNI.
* Настроена маршрутизация между клиентами.
* В документации зафиксирован план работ, адресное пространство, схема сети и конфигурация устройств.

### Достижение результата

#### Введение

За основу используется топология из предыдущего задания [Часть 5. VxLAN. EVPN L2](#dostizhenie-rezultata) с небольшими изменениями.

<figure><img src="/files/gUTfYoVTVQYLbEvBD5Qf" alt=""><figcaption><p>IP адресация</p></figcaption></figure>

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

Коротко о нововведениях:

* no-osl-dc1-f1-r03k01-lf01
  * За leaf'ом no-osl-dc1-f1-r03k01-lf01 появилась сеть 192.168.11.0/24.
  * На leaf no-osl-dc1-f1-r03k01-lf01 настроен vlan11. Порт Ethernet 4 настроен в режиме access для vlan11
  * На leaf no-osl-dc1-f1-r03k01-lf01 настроен интерфейс Vlan11 с адресом 192.168.11.254/24
  * К коммутатору на порт Ethernet 4 подключен PC с адресом 192.168.11.1/24 и gw 192.168.11.254
* no-osl-dc1-f1-r03k02-lf02
  * За leaf'ом no-osl-dc1-f1-r03k02-lf02 появилась сеть 192.168.41.0/24.
  * На leaf no-osl-dc1-f1-r03k02-lf02 настроен vlan11. Порт Ethernet 4 настроен в режиме access для vlan41
  * На leaf no-osl-dc1-f1-r03k02-lf02 настроен интерфейс Vlan11 с адресом 192.168.41.254/24
  * К коммутатору на порт Ethernet 4 подключен PC с адресом 192.168.41.1/24 и gw 192.168.41.254

#### Шаблоны конфигурации

Как и прошлом задании стараемся придерживать шаблонной конфигурации устройств и ренедеринга из Netbox.

Вводятся новые понятия в Netbox:

* `IPAM -> VRFS -> VRFs`&#x20;

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

* `IPAM -> VRFS -> Route Targets`&#x20;

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

Для корректности конфигурации нам нужно, чтобы в конфигурацию устройств добавились секции:

* vrf
* interface Vlan\[x] с привязкой к нужному VRF
* секция в BGP для работы с VRF

Шаблон конфигурации Spine-коммутаторов остается неизменным.

Описание нового шаблона для leaf-коммутаторов:

1. Добавлен блок для генерации VRF:

{% code lineNumbers="true" %}

```python
 {%- set interface_vrf_names = [] %}
 {%- for interface in device.interfaces.all() %}
     {%- for ip in interface.ip_addresses.all() %}
         {%- if ip.vrf and ip.vrf.name not in interface_vrf_names %}
             {%- set _ = interface_vrf_names.append(ip.vrf.name) %}
         {%- endif %}
     {%- endfor %}
 {%- endfor %}
 {%- for vrf_name in interface_vrf_names %}
 vrf instance {{ vrf_name }}
 !
 {%- endfor %}
```

{% endcode %}

2. В блок генерации интерфейсов и IP-адресов добавлена генерация для vlan-интерфейсов

{% code lineNumbers="true" %}

```python
   {%- elif interface.name.startswith('Vlan') %}
 interface {{ interface.name }}
     {%- for ip in interface.ip_addresses.all() %}
   ip address {{ ip.address }}
   vrf {{ interface.ip_addresses.first().vrf.name }}
     {%- endfor %}
     {%- if interface.description %}
   description {{ interface.description }}
     {%- endif %}
```

{% endcode %}

3. В блок генерации настроек BGP добавлена логика генерации для VRF

{% code lineNumbers="true" %}

```python
 {%- for interface in device.interfaces.all() %}
   {%- if interface.name.startswith('Vlan') and interface.tags.filter(slug='vxlan').exists() %}
    vrf {{ interface.ip_addresses.first().vrf.name }}
       rd {{ device.interfaces.get(name="Loopback0").ip_addresses.first().address.ip }}:{{ interface.ip_addresses.first().vrf.id }}
       {%- set all_targets = [] %}
       {%- for target in interface.ip_addresses.first().vrf.import_targets.all() %}
         {%- if target not in all_targets %}
           {%- set _ = all_targets.append(target) %}
         {%- endif %}
       {%- endfor %}
       {%- for target in interface.ip_addresses.first().vrf.export_targets.all() %}
         {%- if target not in all_targets %}
           {%- set _ = all_targets.append(target) %}
         {%- endif %}
       {%- endfor %}
       {%- for target in all_targets %}
       route-target import evpn {{ target }}
       route-target export evpn {{ target }}
       {%- endfor %}
       redistribute connected
     !
   {%- endif %}
 {%- endfor %}
```

{% endcode %}

4. Другие небольшие изменения в виде фильтров для связки vlan-vni.

{% file src="/files/BQWinwoJcBUgpJzPL7bP" %}

Таким образом, чтобы сгенерировать конфигурацию, в Netbox нужно сделать:

1. Создать VRF.
2. Добавить vlan для сайта
   1. Добавить на коммутаторе настройки физического порта
   2. Добавить на коммутаторе vlan-интерфейс с тэгом "vxlan" и назначить не него соотвествующий адрес. Для адреса указать нужный VRF (это важно).
3. Создать route-target для импорта/экспорта маршрутов и привязать их к VRF.

#### Конфигурационные файлы устройств

{% file src="/files/4kEe59zoUct7CEXGl5UT" %}

{% file src="/files/qkCLNKO0BjHjFZMEPut5" %}

{% file src="/files/csFzmyesvbTDFDvHmuJm" %}

{% file src="/files/XAez89l6JYkv5MSiLymL" %}

{% file src="/files/6szYAbthtjIqH9pvPHxS" %}

{% file src="/files/fwrV591et5JEyv4WbQvD" %}

{% file src="/files/VuB2v4QI6FObD347pCUM" %}

{% file src="/files/MrYaSIQWcMOhMzyOH4kp" %}

#### Проверка настроек

* no-osl-dc1-f1-r03k01-lf01

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

```
    no-osl-dc1-f1-r03k01-lf01#show vxlan vtep
    Remote VTEPS for Vxlan1:
    
    VTEP            Tunnel Type(s)
    --------------- --------------
    10.16.4.2       flood         
    10.16.4.3       flood         
    10.16.4.4       flood, unicast
    10.16.4.5       flood         
    10.16.4.6       flood
    
    Total number of remote VTEPS:  5
```

Вывод команды `show bgp evpn route-type ip-prefix ipv4`

```
    no-osl-dc1-f1-r03k01-lf01#show bgp evpn route-type ip-prefix ipv4
    BGP routing table information for VRF default
    Router identifier 10.16.1.1, local AS number 4200131331
    Route status codes: * - valid, > - active, S - Stale, E - ECMP head, e - ECMP
                        c - Contributing to ECMP, % - Pending BGP convergence
    Origin codes: i - IGP, e - EGP, ? - incomplete
    AS Path Attributes: Or-ID - Originator ID, C-LST - Cluster List, LL Nexthop - Link Local Nexthop
    
              Network                Next Hop              Metric  LocPref Weight  Path
     * >      RD: 10.16.1.1:1 ip-prefix 192.168.11.0/24
                                     -                     -       -       0       i
     * >Ec    RD: 10.16.1.4:1 ip-prefix 192.168.41.0/24
                                     10.16.4.4             -       100     0       4200131329 4200131334 i
     *  ec    RD: 10.16.1.4:1 ip-prefix 192.168.41.0/24
                                     10.16.4.4             -       100     0       4200131329 4200131334 i
```

* no-osl-dc1-f1-r03k01-lf01

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

```
    no-osl-dc1-f1-r03k02-lf02#sh vxlan vtep
    Remote VTEPS for Vxlan1:
    
    VTEP            Tunnel Type(s)
    --------------- --------------
    10.16.4.1       unicast, flood
    10.16.4.2       flood         
    10.16.4.3       flood         
    10.16.4.5       flood         
    10.16.4.6       flood         
    
    Total number of remote VTEPS:  5
```

Вывод команды `show bgp evpn route-type ip-prefix ipv4`

```
     no-osl-dc1-f1-r03k02-lf02#show bgp evpn route-type ip-prefix ipv4
     BGP routing table information for VRF default
     Router identifier 10.16.1.4, local AS number 4200131334
     Route status codes: * - valid, > - active, S - Stale, E - ECMP head, e - ECMP
                         c - Contributing to ECMP, % - Pending BGP convergence
     Origin codes: i - IGP, e - EGP, ? - incomplete
     AS Path Attributes: Or-ID - Originator ID, C-LST - Cluster List, LL Nexthop - Link Local Nexthop
     
               Network                Next Hop              Metric  LocPref Weight  Path
      * >Ec    RD: 10.16.1.1:1 ip-prefix 192.168.11.0/24
                                      10.16.4.1             -       100     0       4200131329 4200131331 i
      *  ec    RD: 10.16.1.1:1 ip-prefix 192.168.11.0/24
                                      10.16.4.1             -       100     0       4200131329 4200131331 i
      * >      RD: 10.16.1.4:1 ip-prefix 192.168.41.0/24
                             -                     -       -       0       i
```

Проверка доступности по IP конечных устройств:&#x20;

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


---

# Agent Instructions: 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://1ops.gitbook.io/learn-vxlan.1ops.uz/postroenie-fabriki-vxlan-evpn-s-ispolzovaniem-infrastructure-as-a-code-podkhoda/chast-6.-vxlan.-evpn-l3.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.
