VxLAN фабрика. Част 2

Здравей, Хабр. Продължавам цикъла от статии за технологията VxLAN EVPN, които бяха написани специално за старта на курса "Мрежов инженер" от OTUS. И днес ще разгледаме интересна част от задачите — маршрутизация. Както и да звучи банално, в рамките на работата на мрежовата фабрика всичко може да е много по-сложно.

VxLAN фабрика. Част 2

1 част от цикъла — L2 свързаност между сървъри

В предишната част успяхме да постигнем един широковещателен домейн, построен върху мрежовата фабрика на Nexus 9000v. Въпреки това, това далеч не е целият спектър от задачи, които е необходимо да решим в рамките на мрежата на ЦОД. Днес ще разгледаме следната задача — маршрутизация между мрежи или между VNI.

Напомням, че се използва топология Spine-Leaf:

VxLAN фабрика. Част 2

Първо, нека разгледаме как се осъществява маршрутизацията и какви са особеностите.

За улеснение ще опростим логичната схема и ще добавим още един VNI 20000 за Host-2. В крайна сметка получаваме:

VxLAN фабрика. Част 2

Как в такъв случай можем да предадем трафик от един Host на друг?

Има два варианта:

  1. Да запазим информация за всички VNI на всички Leaf комутатори, така че цялата маршрутизация да се осъществява на първия Leaf в мрежата;
  2. Да използваме специално определен — L3 VNI

Първият метод е прост и удобен. Необходимо е само да въведем всички VNI на всички Leaf комутатори. Въпреки това, въвеждането на стотици или хиляди VNI на всички Leaf вече не изглежда толкова лесна задача. Следователно, той се използва доста рядко.

Нека разгледаме втория метод, който е по-интересен и малко по-сложен, но предоставя по-голяма гъвкавост в конфигурацията на фабриката.

Добавяме към топологията 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 премахва необходимостта от съхраняване на информация за всички VNI, които съществуват в мрежата на всички Leaf комутатори.

В крайна сметка, когато изпращаме трафик от 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 таблицата с 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

   Мрежа            Следваща скок            Метрика     LocPrf     Тежест Път
Идентификатор на маршрута: 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

Идентификатор на маршрута: 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

Ако погледнем по-внимателно полученото обновление, ще видим, че този префикс има два RT:

Leaf11# sh bgp l2vpn evpn 5001.0008.0007
Информация за таблицата на BGP маршрути за VRF по подразбиране, адресно семейство L2VPN EVPN
Идентификатор на маршрута: 10.255.1.21:32787
Запис в таблицата на BGP маршрути за [2]:[0]:[0]:[48]:[5001.0008.0007]:[32]:[192.168.20.20]\/272, версия 5164
Пътища: (2 налични, най-добрият #2)
Флагове: (0x000202) (high32 00000000) в xmit-list, не е в l2rib\/evpn, не е в HW

  Тип на пътя: вътрешен, пътят е валиден, не е най-добър, причина: адрес на съсед, няма етикетирана следваща стъпка
  AS-Път: НЯМА, пътят е източен вътрешно към AS
    10.255.1.20 (метрика 81) от 10.255.1.102 (10.255.1.102)
      Произход IGP, MED не е зададен, локален преференс 100, тежест 0
      Получен етикет 20000 99000                                 ! Два етикета за работа с VxLAN
      Extcommunity: RT:65001:20000 RT:65001:99000 SOO:10.255.1.20:0 ENCAP:8     ! Два стойности Route-target, на основание, на които е добавен този префикс
          MAC на рутера:5001.0005.0007
      Инициатор: 10.255.1.21 Списък на клъстера: 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.20fault, [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 получават информация само за хостовете, които са в мрежата ви. И това е правилното поведение. По-горе във всички обновления е видно, че идва информация с MAC\/IP съдържание. За никакви префикси не се говори.

Тук работи протоколът Host Mobility Manager (HMM), който запълва ARP таблицата, от която по-натам се попълва BGP таблицата (в рамките на тази статия ще пропуснем този процес). На основата на информацията, получена от HMM, се формират EVPN route-type 2 (предава се MAC\/IP).

Но какво да направим, ако е необходимо да предадем информация за някакъв префикс?

За този вид информация съществува EVPN route-type 5 — позволява предаване на префикси чрез address-family l2vpn evpn (този тип маршрути в момента на написване на статията се намира само в чернова версия RFS, поради това различните производители може да имат различно поведение при работа с този тип маршрут)

За предаване на префиксите е необходимо в процеса на 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.10fault, [200/0], 00:14:32, bgp-65001, internal, tag 65001 ! Удален префикс, достъпен чрез Leaf1/2 (адрес Next-hop = виртуален IP между парите VPC)
(evpn) segid: 99000 tunnelid: 0xaff010a encap: VXLAN ! Префиксът е достъпен чрез L3VNI 99000

192.168.10.10/32, ubest/mbest: 1/0
 *via 10.255.1.10fault, [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

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster