Pozdravljen, Habr. Nadaljujem s ciklom člankov o tehnologiji VxLAN EVPN, ki so bili napisani posebej za zagon tečaja od OTUS. In danes bomo obravnavali zanimiv del nalog — usmerjanje. Kako banalno se to lahko sliši, a v okviru delovanja omrežne fabrike je lahko vse skupaj precej zapleteno.

V prejšnjem delu smo dosegli en širokopasovni domen, zgrajen nad omrežno fabriko na Nexus 9000v. Vendar to še zdaleč ni celotni spekter nalog, ki jih je treba rešiti v okviru DC omrežja. In danes bomo obravnavali naslednjo nalogo — usmerjanje med omrežji ali med VNI.
Opomnim, da se uporablja topologija Spine-Leaf:

Najprej razberimo, kako poteka usmerjanje in katere so posebnosti.
Za razumevanje poenostavimo logično shemo in dodamo še en VNI 20000 za Host-2. Tako dobimo:

Kako lahko v takem primeru prenesemo promet od enega Host-a do drugega?
Obstajata dva načina:
- Na vseh Leaf stikala ohranjamo informacije o vseh VNI, tako da se vse usmerjanje zgodi na prvem Leaf v omrežju;
- Uporabiti posebej dodeljen — L3 VNI
Prvi način je preprost in priročen. Potrebno je le zaužiti vse VNI na vseh Leaf stikalah. Vendar pa se zdi, da je uvedba več sto ali tisoč VNI na vsa Leaf že precej zahtevna naloga. Zato se ta način v praksi uporablja precej redko.
Razmislimo o drugem načinu, ki je bolj zanimiv in nekoliko bolj zapleten, vendar nudi večjo fleksibilnost pri nastavljanju fabrike.
Dodali bomo v topologijo VRF "PROD". Vanjo dodamo interface vlan 10 na paru Leaf-11/12 in interface VLAN 20 na Leaf-21. VLAN 20 povežemo z VNI 20000.
vrf context PROD
rd auto ! Route Distinguisher ni ključnega pomena in lahko uporabimo samodejno ustvarjeno vrednost
address-family ipv4 unicast
route-target both auto ! določimo Route-target, s katerim bomo uvažali in izvažali prefikse v/iz 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-gatewayZa uporabo L3 VNI je potrebno ustvariti nov VLAN, ga povezati z novim VNI. Nov VNI mora biti enak na vseh Leaf, ki jih zanima informacija o VLAN 10 in 20.
vlan 99
vn-segment 99000
interface nve1
member vni 99000 associate-vrf ! Ustvarimo L3 VNI
vrf context PROD
vni 99000 ! Povezujemo L3 VNI z določenim VRFKot se bo shema predstavila takole:

Še malo je potrebno dokončati — dodati še en vmesnik — interface vlan 99 v VRF PROD
interface Vlan99
no shutdown
vrf member PROD
ip forward ! Na vmesniku ne sme biti IP naslova. Uporablja se le za preusmerjanje paketov med LeafTorej je logika prehoda okvira od Host-1 do Host-2 naslednja:
- Okvir, poslan iz Host-1, prispe na Leaf v VLAN 10, ki je povezan z VNI 10000;
- Leaf preveri, kje se nahaja ciljni naslov in ga najde preko L3 VNI na drugem Leaf stikali;
- Ko je pot do ciljnega naslova najdena, Leaf zapakira okvir v glavo z ustreznim L3VNI 99000 — in ga pošlje proti drugemu Leaf;
- Drugi Leaf stikalo prejme podatke iz L3VNI 99000. Izvleče prvotni okvir in ga prenese v ustrezen L2VNI 20000 in naprej v VLAN 20.
Rezultat takšnega delovanja L3VNI odpravlja potrebo po hranjenju informacij o vseh VNI-jih v omrežju na vseh Leaf stikalih.
Torej, ko pošiljamo promet od Host-1 do Host-2, se paket zapakira v notranjost VxLAN z novim VNI — 99000:

Ostaja razumeti, kako natančno Leaf-1 izve za MAC naslov iz drugega VNI. To se zgodi tudi s pomočjo EVPN route-type 2 (MAC/IP).
Spodaj je prikazan postopek širjenja poti o prefiksu, ki se nahaja v drugem VNI:

Torej, naslovi, pridobljeni iz VNI 20000, imajo dva RT.
Spominjam vas, da se poti, pridobljene iz Update, uvrstijo v BGP tabelo z Route-target, določenim v nastavitvah VRF (postopek je nekoliko bolj zapleten, toda v okviru tega članka se ne bomo poglabljali).
Sam RT se oblikuje po formuli: AS:VNI (če se uporablja avtomatski način).
Primer oblikovanja RT v avtomatskem in ročnem načinu:
vrf context PROD
address-family ipv4 unicast
route-target import auto - avtomatski način delovanja
route-target export 65001:20000 - ročni način oblikovanja RTZgoraj je torej razvidno, da prefiksi iz drugega VNI imajo dve vrednosti RT.
Ena izmed njih je 65001:99000 — dodatni L3 VNI. Ker je ta VNI enak na vseh Leaf in ustreza našim pravilom uvoza v nastavitvah VRF — prefiks pride v BGP tabelo, kar lahko vidimo iz izhoda:
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Если посмотрим более внимательно на полученный обновление, то видно, что данный префикс имеет два 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.20]/272, version 5164
Paths: (2 available, best #2)
Flags: (0x000202) (high32 00000000) on xmit-list, is not in l2rib/evpn, is not in 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 получают информацию только о хостах, что есть в вашей сети. И это правильное поведение. Выше во всех обновлениях видно, что приходит информация с содержанием MAC/IP. Ни о каких префиксах речи не идет.
Это работает протокол Host Mobility Manager (HMM), который заполняет ARP таблицу, из которой дальше заполняется BGP таблица (в рамках данной статьи опустим этот процесс). На основе информации, полученной из HMM, формируются EVPN route-type 2 (передается MAC/IP).
Однако, что делать, если есть необходимость передать информацию о каком-либо префиксе?
Za to vrsto informacij obstaja EVPN route-type 5 — omogoča prenos prefiksov preko address-family l2vpn evpn (ta vrsta poti je ob pisanju članka v osnutku) , zato se lahko obnašanje te vrste poti med različnimi proizvajalci razlikuje)
Za prenos prefiksov je potrebno med procesom BGP za VRF dodati prefikse, ki bodo napovedani:
router bgp 65001
vrf PROD
address-family ipv4 unicast
redistribute direct route-map VNI20000 ! V tem primeru napovedujemo prefikse povezave neposredno na Leaf v VNI 20000
route-map VNI20000 permit 10
match ip address prefix-list VNI20000_OUT ! Določimo, katero prefix-list uporabiti
ip prefix-list VNI20000_OUT seq 5 permit 192.168.20.0/24 ! Določimo, kateri omrežni prefiksi bodo vključeni v EVPN route-type 5Na koncu bo v posodobitvi:

Poglejmo BGP tabelo. Poleg EVPN route-type 2,3 so se pojavile tudi poti 5. tipa, ki vsebujejo informacije o številu omrežja:
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 s številko prefiksa
10.255.1.10 0 100 0 ?
* i V tabeli usmerjanja se je prefiks tudi pojavil:
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, hmmS tem končamo drugi del cikla člankov o VxLAN EVPN. V naslednjem delu bomo obravnavali različne možnosti usmerjanja med VRF.
Izvor: habr.com
