# Часть 8. VxLAN. Routing

### Цель

* Реализовать маршрутизацию между "клиентами" (tentant) через EVPN route-type 5

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

1. Два "клиента" размещены в разных VRF в рамках одной фабрики.
2. Настроена маршрутизацию между клиентами через внешнее устройство (граничный роутер\фаерволл\etc).
3. В документации зафиксированы - план работы, адресное пространство, схему сети, настройки сетевого оборудования.

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

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

***В этой части не будет ничего про автоматизацию. Нужно глобально переделывать шаблоны для поддержки multitentant'ости ¯\_(ツ)*****/¯\_**

Представим, что у нас есть два тентанта - "red" и "green" (они помечены соответствующими цветами в схеме. Внезапно :xD ). Тентантам принадлежат следующие сети:

| Tenant | Network          |
| ------ | ---------------- |
| red    | 192.168.101.0/24 |
| red    | 192.168.103.0/24 |
| green  | 192.168.102.0/24 |

На leaf'ах настроены anycast gateway на vlan-интерфейсах, а сами интерфейсы определены в соответствующие vrf:

```
interface Vlan101
   vrf red
   ip address virtual 192.168.101.254/24
!
interface Vlan102
   vrf green
   ip address virtual 192.168.102.254/24
!
interface Vlan103
   vrf red
   ip address virtual 192.168.103.254/24
!
```

#### Схема сети

Модернизируем схему и встраиваем в нее NGFW Palo Alto Networks (PAN-OS 11.0.0). ~~FW будет подключен аггрегированным линком в no-osl-dc1-f1-r03k04-lf01 и no-osl-dc1-f1-r03k04-lf02~~ Оказалось, что PA-VM не поддерживает агрегированные интерфейсы.&#x20;

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

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

Согласно схемы имеем следующие подключения:

| Устройство A | Интерфейс    | IP-адрес      | Устройство B              | Интерфейс  | IP-адрес      | VRF   |
| ------------ | ------------ | ------------- | ------------------------- | ---------- | ------------- | ----- |
| NGFW PA-VM   | Ethernet 1/1 | 10.16.2.17/31 | no-osl-dc1-f1-r03k04-lf01 | Ethernet 3 | 10.16.2.16/31 | red   |
| NGFW PA-VM   | Ethernet 1/2 | 10.16.2.19/31 | no-osl-dc1-f1-r03k04-lf01 | Ethernet 4 | 10.16.2.18/31 | green |
| NGFW PA-VM   | Ethernet 1/3 | 10.16.2.21/31 | no-osl-dc1-f1-r03k04-lf02 | Ethernet 3 | 10.16.2.20/31 | red   |
| NGFW PA-VM   | Ethernet 1/4 | 10.16.2.23/31 | no-osl-dc1-f1-r03k04-lf02 | Ethernet 4 | 10.16.2.22/31 | green |

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

Традиционно не вмешиваемся в настройки spine'ов, а работаем только с leaf'ами. Собственно, бОльшая часть конфигурации приходится на border leaf'ы и сам файрвол.

Ниже ссылки на конфиги leaf'ов

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

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

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

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

Файрвол ничего не файрволит, а только маршрутизирует :)

Для простоты созданы 2 зоны - trust и untrust. В trust помещены все интерфейсы, идущие к leaf'ам, в untrust - вымышленный интерфейс в интернет.

Создана одна единственная политика безопасности, которая разрешает все отовсюду.

Настройки интерфейсов:

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

Настройки BGP для PAN-OS:

1. `BGP. General`

Тут нас интересует включение поддержки 4-byte AS

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

2. `BGP. Advanced`

Здесь я отметил `ECMP Multiple AS Support`

<figure><img src="/files/2Xa3nJAJp9tD5t4YrKok" alt=""><figcaption></figcaption></figure>

3. `BGP. Peer Group`

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

4. `BGP. Import`

Тут ничего не делал

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

5. `BGP. Export`

Вот тут настроена политика экспорта. Не претендую на изящное и правильное решение, но, как-будто, работает как нужно.

1-ая политика явно разрешает экспорт маршрута 0.0.0.0/0.

2-ая политика запрещает экспорт маршрутов, полученных от пиров. ***Надеюсь, я правильно интерпретировал настройку.***

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

#### Таблицы маршрутизации устройств

В итоговом виде таблицы маршрутизации выглядят следующим образом:

**no-osl-dc1-f1-r03k04-lf01**

`sh ip route vrf red`

```
VRF: red
Codes: C - connected, S - static, K - kernel, 
       O - OSPF, IA - OSPF inter area, E1 - OSPF external type 1,
       E2 - OSPF external type 2, N1 - OSPF NSSA external type 1,
       N2 - OSPF NSSA external type2, B - Other BGP Routes,
       B I - iBGP, B E - eBGP, R - RIP, I L1 - IS-IS level 1,
       I L2 - IS-IS level 2, O3 - OSPFv3, A B - BGP Aggregate,
       A O - OSPF Summary, NG - Nexthop Group Static Route,
       V - VXLAN Control Service, M - Martian,
       DH - DHCP client installed default route,
       DP - Dynamic Policy Route, L - VRF Leaked,
       G  - gRIBI, RC - Route Cache Route

Gateway of last resort:
 B E      0.0.0.0/0 [200/0] via 10.16.2.17, Ethernet3

 C        10.16.2.16/31 is directly connected, Ethernet3
 B E      10.16.2.20/31 [200/0] via VTEP 10.16.4.8 VNI 120101 router-mac 50:01:00:a1:60:83 local-interface Vxlan1
 B E      192.168.101.5/32 [200/0] via VTEP 10.16.4.5 VNI 120101 router-mac 50:00:00:15:f4:e8 local-interface Vxlan1
 C        192.168.101.0/24 is directly connected, Vlan101
 B E      192.168.103.6/32 [200/0] via VTEP 10.16.4.6 VNI 120101 router-mac 50:00:00:88:fe:27 local-interface Vxlan1
 C        192.168.103.0/24 is directly connected, Vlan103
```

`sh ip route vrf green`

```
VRF: green
Codes: C - connected, S - static, K - kernel, 
       O - OSPF, IA - OSPF inter area, E1 - OSPF external type 1,
       E2 - OSPF external type 2, N1 - OSPF NSSA external type 1,
       N2 - OSPF NSSA external type2, B - Other BGP Routes,
       B I - iBGP, B E - eBGP, R - RIP, I L1 - IS-IS level 1,
       I L2 - IS-IS level 2, O3 - OSPFv3, A B - BGP Aggregate,
       A O - OSPF Summary, NG - Nexthop Group Static Route,
       V - VXLAN Control Service, M - Martian,
       DH - DHCP client installed default route,
       DP - Dynamic Policy Route, L - VRF Leaked,
       G  - gRIBI, RC - Route Cache Route

Gateway of last resort:
 B E      0.0.0.0/0 [200/0] via 10.16.2.19, Ethernet4

 C        10.16.2.18/31 is directly connected, Ethernet4
 B E      10.16.2.22/31 [200/0] via VTEP 10.16.4.8 VNI 12010 router-mac 50:01:00:a1:60:83 local-interface Vxlan1
 C        192.168.102.0/24 is directly connected, Vlan102
```

Вывод указывает на то, что для vrf 'red' маршрут по умолчанию получен через интерфейс Ethernet 3 и следует через FW и его интерфейс Ethernet 1/1, а для vrf 'green' маршрут по умолчанию получен через интерфейс Ethernet 4 и пойдет через FW и интерфейс Ethernet 1/2.

`sh ip bgp summary vrf red`

```
BGP summary information for VRF red
Router identifier 10.16.1.7, local AS number 4200131337
Neighbor Status Codes: m - Under maintenance
  Neighbor   V AS           MsgRcvd   MsgSent  InQ OutQ  Up/Down State   PfxRcd PfxAcc
  10.16.2.17 4 4200131350      3497      4118    0    0 19:28:26 Estab   1      1
```

`sh ip bgp summary vrf green`

```
BGP summary information for VRF green
Router identifier 10.16.1.7, local AS number 4200131337
Neighbor Status Codes: m - Under maintenance
  Neighbor   V AS           MsgRcvd   MsgSent  InQ OutQ  Up/Down State   PfxRcd PfxAcc
  10.16.2.19 4 4200131350      2957      3318    0    0 19:28:31 Estab   1      1
```

**no-osl-dc1-f1-r03k04-lf02**

`ip route vrf red`

```
VRF: red
Codes: C - connected, S - static, K - kernel, 
       O - OSPF, IA - OSPF inter area, E1 - OSPF external type 1,
       E2 - OSPF external type 2, N1 - OSPF NSSA external type 1,
       N2 - OSPF NSSA external type2, B - Other BGP Routes,
       B I - iBGP, B E - eBGP, R - RIP, I L1 - IS-IS level 1,
       I L2 - IS-IS level 2, O3 - OSPFv3, A B - BGP Aggregate,
       A O - OSPF Summary, NG - Nexthop Group Static Route,
       V - VXLAN Control Service, M - Martian,
       DH - DHCP client installed default route,
       DP - Dynamic Policy Route, L - VRF Leaked,
       G  - gRIBI, RC - Route Cache Route

Gateway of last resort:
 B E      0.0.0.0/0 [200/0] via 10.16.2.21, Ethernet3

 B E      10.16.2.16/31 [200/0] via VTEP 10.16.4.7 VNI 120101 router-mac 50:01:00:02:f6:c5 local-interface Vxlan1
 C        10.16.2.20/31 is directly connected, Ethernet3
 B E      192.168.101.5/32 [200/0] via VTEP 10.16.4.5 VNI 120101 router-mac 50:00:00:15:f4:e8 local-interface Vxlan1
 C        192.168.101.0/24 is directly connected, Vlan101
 B E      192.168.103.6/32 [200/0] via VTEP 10.16.4.6 VNI 120101 router-mac 50:00:00:88:fe:27 local-interface Vxlan1
 C        192.168.103.0/24 is directly connected, Vlan103
```

`sh ip route vrf green`

```
VRF: green
Codes: C - connected, S - static, K - kernel, 
       O - OSPF, IA - OSPF inter area, E1 - OSPF external type 1,
       E2 - OSPF external type 2, N1 - OSPF NSSA external type 1,
       N2 - OSPF NSSA external type2, B - Other BGP Routes,
       B I - iBGP, B E - eBGP, R - RIP, I L1 - IS-IS level 1,
       I L2 - IS-IS level 2, O3 - OSPFv3, A B - BGP Aggregate,
       A O - OSPF Summary, NG - Nexthop Group Static Route,
       V - VXLAN Control Service, M - Martian,
       DH - DHCP client installed default route,
       DP - Dynamic Policy Route, L - VRF Leaked,
       G  - gRIBI, RC - Route Cache Route

Gateway of last resort:
 B E      0.0.0.0/0 [200/0] via 10.16.2.23, Ethernet4

 B E      10.16.2.18/31 [200/0] via VTEP 10.16.4.7 VNI 12010 router-mac 50:01:00:02:f6:c5 local-interface Vxlan1
 C        10.16.2.22/31 is directly connected, Ethernet4
 C        192.168.102.0/24 is directly connected, Vlan102
```

`sh ip bgp summary vrf red`

```
BGP summary information for VRF red
Router identifier 10.16.1.8, local AS number 4200131338
Neighbor Status Codes: m - Under maintenance
  Neighbor   V AS           MsgRcvd   MsgSent  InQ OutQ  Up/Down State   PfxRcd PfxAcc
  10.16.2.21 4 4200131350      2807      3392    0    0 19:42:36 Estab   1      1
```

`sh ip bgp summary vrf green`

```
BGP summary information for VRF green
Router identifier 10.16.1.8, local AS number 4200131338
Neighbor Status Codes: m - Under maintenance
  Neighbor   V AS           MsgRcvd   MsgSent  InQ OutQ  Up/Down State   PfxRcd PfxAcc
  10.16.2.23 4 4200131350      2798      3146    0    0 19:42:39 Estab   1      1
```

**NGFW PA-VM**

`show routing route`

flags: A:active, ?:loose, C:connect, H:host, S:static, \~:internal, R:rip, O:ospf, B:bgp, Oi:ospf intra-area, Oo:ospf inter-area, O1:ospf ext-type-1, O2:ospf ext-type-2, E:ecmp, M:multicast

```
VIRTUAL ROUTER: default (id 1)
  ==========
destination                                 nexthop                                 metric flags      age   interface          next-AS    
0.0.0.0/0                                   0.0.0.0                                 1      A ~                                            
10.16.1.50/32                               0.0.0.0                                 0      A H                                            
10.16.2.16/31                               10.16.2.16                                      ?B        65336                    4200131337 
10.16.2.16/31                               10.16.2.17                              0      A C              ethernet1/1                   
10.16.2.17/32                               0.0.0.0                                 0      A H                                            
10.16.2.18/31                               10.16.2.18                                      ?B        65336                    4200131337 
10.16.2.18/31                               10.16.2.19                              0      A C              ethernet1/2                   
10.16.2.19/32                               0.0.0.0                                 0      A H                                            
10.16.2.20/31                               10.16.2.20                                      ?B        65336                    4200131338 
10.16.2.20/31                               10.16.2.21                              0      A C              ethernet1/3                   
10.16.2.21/32                               0.0.0.0                                 0      A H                                            
10.16.2.22/31                               10.16.2.22                                      ?B        65336                    4200131338 
10.16.2.22/31                               10.16.2.23                              0      A C              ethernet1/4                   
10.16.2.23/32                               0.0.0.0                                 0      A H                                            
192.168.101.0/24                            10.16.2.16                                     A?B E      65336                    4200131337 
192.168.101.0/24                            10.16.2.20                                     A?B E      65336                    4200131338 
192.168.101.5/32                            10.16.2.16                                     A?B E      3988                     4200131337 
192.168.101.5/32                            10.16.2.20                                     A?B E      3988                     4200131338 
192.168.102.0/24                            10.16.2.18                                     A?B E      65336                    4200131337 
192.168.102.0/24                            10.16.2.22                                     A?B E      65336                    4200131338 
192.168.103.0/24                            10.16.2.16                                     A?B E      65336                    4200131337 
192.168.103.0/24                            10.16.2.20                                     A?B E      65336                    4200131338 
192.168.103.6/32                            10.16.2.16                                     A?B E      3988                     4200131337 
192.168.103.6/32                            10.16.2.20                                     A?B E      3988                     4200131338 
total routes shown: 24
```

Тут можно проследить, что для префиксов tentant'ов 'red' и 'green' (192.168.101.0/24, 192.168.102.0/24, 192.168.103.0/24) работает ECMP.

#### Тестирование на отключение одного leaf'а

Тестировать будем пингами с 192.168.103.6 до 192.168.102.5

<figure><img src="/files/9TszLduO5k5f3ZvkQdQY" alt=""><figcaption></figcaption></figure>

Смотрим в логи NGFW и отмечаем Ingress и Egress интерфейсы. Видим, что трафик обрабатывается на no-osl-dc1-f1-r03k04-lf02

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

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

Отключаем leaf! (/) (°,,°) (/)

После перестроения маршрутов видим, что трафик пошел через leaf no-osl-dc1-f1-r03k04-lf01

Это видно по Ingress и Egress интерфейсам. Теперь это ethernet1/1 и ethernet1/2, соотвественно:

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

### Выводы

Таким образом можно сделать следующие выводы:

* маршрутизация между сетями внутри одного tentant'а отработает внутри EVPN фабрики
* маршрутизация между сетями разным tentent'ов отработает через NGFW PA-VM за пределами EVPN фабрики за счет анонса префикса 0.0.0.0/0 со стороны NGFW.
* удалось добиться какой-то отказоустойчивости по линкам и border leaf'ам.


---

# 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-8.-vxlan.-routing.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.
