VxLAN заводу. Частина 2

Привіт Хабр. Продовжую цикл статей за технологією VxLAN EVPN, які були написані спеціально до запуску курсу "Мережевий інженер" від OTUS. І сьогодні розглянемо цікаву частину завдань – маршрутизацію. Хоч би як банально це звучало, проте в рамках роботи мережевої фабрики все може бути не так просто.

VxLAN заводу. Частина 2

1 частина циклу - L2 зв'язаність між серверами

Минулої частини ми досягли одного широкомовного домену, побудованого поверх мережевої фабрики на Nexus 9000v. Однак це далеко не весь спектр завдань, які необхідно вирішити у межах мережі ЦОД. І сьогодні ми розглянемо наступне завдання – маршрутизація між мережами чи між VNI.

Нагадаю, що використовується топологія Spine-Leaf:

VxLAN заводу. Частина 2

Спочатку розберемо, як відбувається маршрутизація і які є особливості.

Для розуміння спростимо логічну схему та додамо ще один VNI 20000 для Host-2. У результаті виходить:

VxLAN заводу. Частина 2

Як у такому разі можна передати трафік від одного Host до іншого?

Є два варіанти:

  1. На всіх Leaf комутаторах тримати інформацію про всіх VNI, тоді вся маршрутизація відбуватиметься на першому ж Leaf у мережі;
  2. Використовувати спеціально виділений - L3 VNI

Перший спосіб простий та зручний. Тому що потрібно лише завести всі VNI на всі Leaf комутатори. Проте завести кілька сотень чи тисяч VNI на все Leaf вже не здається простим завданням. Тому у роботі він застосовується досить рідко.

Розберемо 2 спосіб, як цікавіший і трохи складніший, але дає більшу гнучкість у налаштуванні фабрики.

Додамо до топології VRF "PROD". До нього додамо interface vlan 10 на парі Leaf-11/12 і interface VLAN 20 на Leaf-21. VLAN 20 асоціюємо з VNI 20000

vrf context PROD
  rd auto       ! Route Distinguisher не принципиален и можем использовать сформированный автоматически
  address-family ipv4 unicast
    route-target both auto      ! указываем Route-target с которым будут импортироваться и экспортироваться префиксы в/из VRF
vlan 20
  vn-segment 20000

interface nve 1
  member vni 20000
    ingress-replication protocol bgp

interface Vlan10
  no shutdown
  vrf member PROD
  ip address 192.168.20.1/24
  fabric forwarding mode anycast-gateway

Для того, щоб використовувати L3VNI, необхідно створити новий VLAN, асоціювати його з новим VNI. Новий VNI має бути однаковим на всіх Leaf, зацікавлених у інформації про VLAN 10 та 20

vlan 99
  vn-segment 99000

interface nve1
  member vni 99000 associate-vrf        ! Создаем L3 VNI

vrf context PROD
  vni 99000                             ! Привязываем L3 VNI к определенному VRF

В результаті схема представлятиметься так:

VxLAN заводу. Частина 2

Залишилося трохи доробити - додати ще один інтерфейс - interface vlan 99 в VRF PROD

interface Vlan99
  no shutdown
  vrf member PROD
  ip forward  ! На интерфейсе не должно быть IP. Используется только для пересылки пакетов между Leaf

У результаті логіка проходження кадру від Host-1 до Host-2:

  1. Кадр, відправлений Host-1 приходить на Leaf у VLAN 10, який асоційований з VNI 10000;
  2. Leaf перевіряє де знаходиться адреса призначення та знаходить його через L3 VNI на другому Leaf комутатор;
  3. Як тільки знайдено маршрут до адреси призначення, Leaf запаковує кадр у заголовок з необхідним L3VNI 99000 - і відправляє у бік другого Leaf;
  4. Другий Leaf комутатор отримує дані з L3VNI 99000. Дістає початковий кадр і переносить його в необхідний L2VNI 20000 і далі VLAN 20.

Результатом такої роботи L3VNI прибирає необхідність тримати на всіх Leaf комутаторах інформацію про всі VNI, які є у мережі.

У результаті, коли відправляємо трафік з Host-1 до Host-2, пакет запаковується всередину VxLAN з новим VNI — 99000:

VxLAN заводу. Частина 2

Залишається зрозуміти, як саме Leaf-1 дізнається про MAC адресу з іншого VNI. Відбувається це за допомогою EVPN route-type 2 (MAC/IP).

Нижче показано процес розповсюдження маршруту про префікс, що знаходиться в іншому VNI:

VxLAN заводу. Частина 2

Тобто адреси, отримані з VNI 20000, мають два RT.
Нагадаю, що маршрути, отримані з Update, потрапляють у таблицю BGP c Route-target, вказаною в налаштуваннях VRF (процес дещо складніший, проте в рамках цієї статті не поглиблюватимемося).
Сам RT формується за формулою: AS: VNI ​​(якщо використовується автоматичний режим).

Приклад формування RT в автоматичному та ручному режимі:

vrf context PROD
  address-family ipv4 unicast
    route-target import auto - автоматический режим работы
    route-target export 65001:20000 - ручной режим формирования RT

В результаті вище видно, що префікси іншого VNI мають два значення RT.
Одне з них 65001:99000 – додатковий L3 VNI. Так як цей VNI однаковий на всіх Leaf і підпадає під наші правила import в налаштуваннях VRF - префікс потрапляє в таблицю BGP, що можна побачити з висновку:

sh bgp l2vpn evpn
<.....>
   Network            Next Hop            Metric     LocPrf     Weight Path
Route Distinguisher: 10.255.1.11:32777    (L2VNI 10000)
*>l[2]:[0]:[0]:[48]:[5001.0007.0007]:[0]:[0.0.0.0]/216
                      10.255.1.10                       100      32768 i
*>l[2]:[0]:[0]:[48]:[5001.0007.0007]:[32]:[192.168.10.10]/272
                      10.255.1.10                       100      32768 i
*>l[3]:[0]:[32]:[10.255.1.10]/88
                      10.255.1.10                       100      32768 i

Route Distinguisher: 10.255.1.21:32787
* i[2]:[0]:[0]:[48]:[5001.0008.0007]:[32]:[192.168.20.20]/272    ! Префикс полученный из VNI 20000
                      10.255.1.20                       100          0 i
*>i                   10.255.1.20                       100          0 i

Якщо подивимося уважніше на отриманий update, то видно, що цей префікс має два RT:

Leaf11# sh bgp l2vpn evpn 5001.0008.0007
BGP routing table information for VRF default, address family L2VPN EVPN
Route Distinguisher: 10.255.1.21:32787
BGP routing table entry for [2]:[0]:[0]:[48]:[5001.0008.0007]:[32]:[192.168.20.2
0]/272, version 5164
Paths: (2 available, best #2)
Flags: (0x000202) (high32 00000000) on xmit-list, is not in l2rib/evpn, is not i
n HW

  Path type: internal, path is valid, not best reason: Neighbor Address, no labeled nexthop
  AS-Path: NONE, path sourced internal to AS
    10.255.1.20 (metric 81) from 10.255.1.102 (10.255.1.102)
      Origin IGP, MED not set, localpref 100, weight 0
      Received label 20000 99000                                 ! Два label для работы VxLAN
      Extcommunity: RT:65001:20000 RT:65001:99000 SOO:10.255.1.20:0 ENCAP:8     ! Два значения Route-target, на основе, которых добавили данный префикс
          Router MAC:5001.0005.0007
      Originator: 10.255.1.21 Cluster list: 10.255.1.102
<......>

У таблиці маршрутизації на Leaf-1 також можна спостерігати префікс 192.168.20.20/32:

Leaf11# sh ip route vrf PROD
192.168.10.0/24, ubest/mbest: 1/0, attached
    *via 192.168.10.1, Vlan10, [0/0], 01:29:28, direct
192.168.10.1/32, ubest/mbest: 1/0, attached
    *via 192.168.10.1, Vlan10, [0/0], 01:29:28, local
192.168.10.10/32, ubest/mbest: 1/0, attached
    *via 192.168.10.10, Vlan10, [190/0], 01:27:22, hmm
192.168.20.20/32, ubest/mbest: 1/0                                        ! Адрес Host-2
    *via 10.255.1.20%default, [200/0], 01:20:20, bgp-65001, internal, tag 65001     ! Доступный через Leaf-2
(evpn) segid: 99000 tunnelid: 0xaff0114 encap: VXLAN                                ! Через VNI 99000

Помітили відсутність основного префікса 192.168.20.0/24 у таблиці маршрутизації?
Напевно, його там немає. Тобто віддалені Leaf отримують інформацію лише про хостів, що є у вашій мережі. І це правильна поведінка. Вище у всіх update видно, що надходить інформація зі змістом MAC/IP. Про жодні префікси не йдеться.

Це працює протокол Host Mobility Manager (HMM), який заповнює ARP таблицю, з якої далі заповнюється BGP таблиця (в рамках цієї статті опустимо цей процес). На основі інформації, отриманої з HMM, формуються EVPN route-type 2 (передається MAC/IP).

Однак, що робити, якщо є необхідність передати інформацію про префікс?

Для такого виду інформації існує EVPN route-type 5 – дозволяє передавати префікси через address-family l2vpn evpn (даний тип маршрутів на момент написання статті знаходиться лише у draft версії RFС, через це у різних виробників може відрізнятися поведінка роботи цього типу маршруту)

Для передачі префіксів необхідно в процесі BGP для VRF додати префікси, які будуть анонсуватися:

router bgp 65001
  vrf PROD
    address-family ipv4 unicast
      redistribute direct route-map VNI20000        ! В данном случае анонсируем префиксы подключение непосредственно к Leaf в VNI 20000
route-map VNI20000 permit 10
  match ip address prefix-list VNI20000_OUT    ! Указываем какой использовать prefix-list

ip prefix-list VNI20000_OUT seq 5 permit 192.168.20.0/24   ! Указываем какие сети будут попадать в EVPN route-type 5

У результаті в Update буде:

VxLAN заводу. Частина 2

Подивимося таблицю BGP. Крім EVPN route-type 2,3 з'явилися маршрути типу 5, які містять інформацію про номер мережі:

<......>
   Network            Next Hop            Metric     LocPrf     Weight Path
Route Distinguisher: 10.255.1.11:3
* i[5]:[0]:[0]:[24]:[192.168.10.0]/224
                      10.255.1.10              0        100          0 ?
*>i                   10.255.1.10              0        100          0 ?

Route Distinguisher: 10.255.1.11:32777
* i[2]:[0]:[0]:[48]:[5001.0007.0007]:[0]:[0.0.0.0]/216
                      10.255.1.10                       100          0 i
*>i                   10.255.1.10                       100          0 i
* i[2]:[0]:[0]:[48]:[5001.0007.0007]:[32]:[192.168.10.10]/272
                      10.255.1.10                       100          0 i
*>i                   10.255.1.10                       100          0 i
* i[3]:[0]:[32]:[10.255.1.10]/88
                      10.255.1.10                       100          0 i
*>i                   10.255.1.10                       100          0 i

Route Distinguisher: 10.255.1.12:3
*>i[5]:[0]:[0]:[24]:[192.168.10.0]/224      ! EVPN route-type 5 с номером префикса
                      10.255.1.10              0        100          0 ?
* i
<.......>                   

У таблиці маршрутизації префікс також з'явився:

Leaf21# sh ip ro vrf PROD
192.168.10.0/24, ubest/mbest: 1/0
    *via 10.255.1.10%default, [200/0], 00:14:32, bgp-65001, internal, tag 65001  ! Удаленный префикс, доступный через Leaf1/2(адрес Next-hop = virtual IP между парой VPC)
(evpn) segid: 99000 tunnelid: 0xaff010a encap: VXLAN      ! Префикс доступен через L3VNI 99000

192.168.10.10/32, ubest/mbest: 1/0
    *via 10.255.1.10%default, [200/0], 02:33:40, bgp-65001, internal, tag 65001
(evpn) segid: 99000 tunnelid: 0xaff010a encap: VXLAN

192.168.20.0/24, ubest/mbest: 1/0, attached
    *via 192.168.20.1, Vlan20, [0/0], 02:39:44, direct
192.168.20.1/32, ubest/mbest: 1/0, attached
    *via 192.168.20.1, Vlan20, [0/0], 02:39:44, local
192.168.20.20/32, ubest/mbest: 1/0, attached
    *via 192.168.20.20, Vlan20, [190/0], 02:35:46, hmm

На цьому закінчимо другу частину циклу статей з VxLAN EVPN. У наступній частині розглянемо різні варіанти маршрутизації між VRF.

Основи протоколу IPv6 та його відмінності від IPv4

Джерело: habr.com

Додати коментар або відгук