ํค์ด ํ๋ธ๋ฅด. ๋๋ VxLAN EVPN ๊ธฐ์ ์ ๋ํ ์ผ๋ จ์ ๊ธฐ์ฌ๋ฅผ ๊ณ์ํฉ๋๋ค. ์ฝ์ค ์์์ ์ํด ํน๋ณํ ์์ฑ๋์์ต๋๋ค.
๋ง์ง๋ง ๋ถ๋ถ์์๋ Nexus 9000v์ ๋คํธ์ํฌ ํจ๋ธ๋ฆญ ์์ ๊ตฌ์ถ๋ ํ๋์ ๋ธ๋ก๋์บ์คํธ ๋๋ฉ์ธ์ ๋ฌ์ฑํ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋ฐ์ดํฐ ์ผํฐ ๋คํธ์ํฌ์ ํ๋ ์์ํฌ ๋ด์์ ํด๊ฒฐํด์ผ ํ๋ ์ ์ฒด ์์ ๋ฒ์๊ฐ ์๋๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ค๋ ์ฐ๋ฆฌ๋ ๋คํธ์ํฌ ๊ฐ ๋๋ VNI ๊ฐ ๋ผ์ฐํ ๊ณผ ๊ฐ์ ์์ ์ ๊ณ ๋ คํ ๊ฒ์ ๋๋ค.
Spine-Leaf ํ ํด๋ก์ง๊ฐ ์ฌ์ฉ๋จ์ ์๊ธฐ์์ผ ๋๋ฆฌ๊ฒ ์ต๋๋ค.
๋จผ์ ๋ผ์ฐํ ์ด ์ด๋ป๊ฒ ๋ฐ์ํ๊ณ ์ด๋ค ๊ธฐ๋ฅ์ด ์๋์ง ๋ถ์ํฉ๋๋ค.
์ดํด๋ฅผ ๋๊ธฐ ์ํด ๋ ผ๋ฆฌ ๋ค์ด์ด๊ทธ๋จ์ ๋จ์ํํ๊ณ Host-20000์ฉ VNI 2์ ์ถ๊ฐํด ๋ณด๊ฒ ์ต๋๋ค. ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด ๊ฒฝ์ฐ ํ ํธ์คํธ์์ ๋ค๋ฅธ ํธ์คํธ๋ก ์ด๋ป๊ฒ ํธ๋ํฝ์ ์ ์กํ ์ ์์ต๋๊น?
๋ ๊ฐ์ง ์ต์ ์ด ์์ต๋๋ค :
- ๋ชจ๋ ๋ฆฌํ ์ค์์น์ ๋ชจ๋ VNI์ ๋ํ ์ ๋ณด๋ฅผ ์ ์งํ๋ฉด ๋ชจ๋ ๋ผ์ฐํ ์ด ๋คํธ์ํฌ์ ์ฒซ ๋ฒ์งธ ๋ฆฌํ์์ ๋ฐ์ํฉ๋๋ค.
- ์ ์ฉ ์ฌ์ฉ - L3 VNI
์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ๊ฐ๋จํ๊ณ ํธ๋ฆฌํฉ๋๋ค. ๋ชจ๋ ๋ฆฌํ ์ค์์น์์ ๋ชจ๋ VNI๋ง ์์ํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ ์ฒด ๋ฆฌํ์์ ์๋ฐฑ ๋๋ ์์ฒ ๊ฐ์ VNI๋ฅผ ์คํํ๋ ๊ฒ์ ๋ ์ด์ ์ฌ์ด ์์ ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ฐ๋ผ์ ์์ ์์๋ ๊ฑฐ์ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
๋ ํฅ๋ฏธ๋กญ๊ณ ์ฝ๊ฐ ๋ ๋ณต์กํ์ง๋ง ๊ณต์ฅ ์ค์ ์ ๋ ๋ง์ ์ ์ฐ์ฑ์ ์ ๊ณตํ๋ ๋ฐฉ๋ฒ 2๋ฅผ ๋ถ์ํ ๊ฒ์ ๋๋ค.
VRF ํ ํด๋ก์ง์ "PROD"๋ฅผ ์ถ๊ฐํด ๋ณด๊ฒ ์ต๋๋ค. Leaf-10/11 ์์ ์ธํฐํ์ด์ค vlan 12์ ์ถ๊ฐํ๊ณ Leaf-20์ ์ธํฐํ์ด์ค VLAN 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๋ 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
๊ฒฐ๊ณผ์ ์ผ๋ก ๋ค์ด์ด๊ทธ๋จ์ ๋ค์๊ณผ ๊ฐ์ด ํ์๋ฉ๋๋ค.
์กฐ๊ธ ๋ ๋ง๋ฌด๋ฆฌํด์ผ ํฉ๋๋ค. ์ธํฐํ์ด์ค๋ฅผ ํ๋ ๋ ์ถ๊ฐํฉ๋๋ค. VRF PROD์ ์ธํฐํ์ด์ค vlan 99
interface Vlan99
no shutdown
vrf member PROD
ip forward ! ะะฐ ะธะฝัะตััะตะนัะต ะฝะต ะดะพะปะถะฝะพ ะฑััั IP. ะัะฟะพะปัะทัะตััั ัะพะปัะบะพ ะดะปั ะฟะตัะตััะปะบะธ ะฟะฐะบะตัะพะฒ ะผะตะถะดั Leaf
๊ฒฐ๊ณผ์ ์ผ๋ก Host-1์์ Host-2๋ก ํ๋ ์์ ์ ๋ฌํ๋ ๋ ผ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- Host-1์์ ๋ณด๋ธ ํ๋ ์์ VNI 10๊ณผ ์ฐ๊ฒฐ๋ VLAN 10000์ ๋ฆฌํ์ ๋์ฐฉํฉ๋๋ค.
- Leaf๋ ๋์ ์ฃผ์๊ฐ ์ด๋์ ์๋์ง ํ์ธํ๊ณ ๋ ๋ฒ์งธ Leaf ์ค์์น์ L3 VNI๋ฅผ ํตํด ์ฐพ์ต๋๋ค.
- ๋ชฉ์ ์ง ์ฃผ์์ ๋ํ ๊ฒฝ๋ก๊ฐ ๋ฐ๊ฒฌ๋๋ ์ฆ์ Leaf๋ ํ์ํ L3VNI 99000์ ์ฌ์ฉํ์ฌ ํ๋ ์์ ํค๋์ ์์ถํ์ฌ ๋ ๋ฒ์งธ Leaf๋ก ๋ณด๋ ๋๋ค.
- ๋ ๋ฒ์งธ ๋ฆฌํ ์ค์์น๋ L3VNI 99000์์ ๋ฐ์ดํฐ๋ฅผ ์์ ํฉ๋๋ค. ์๋ณธ ํ๋ ์์ ๊ฐ์ ธ์ ํ์ํ L2VNI 20000์ผ๋ก ์ ์กํ ๋ค์ VLAN 20์ผ๋ก ์ ์กํฉ๋๋ค.
์ด ์์ ์ ๊ฒฐ๊ณผ๋ก L3VNI๋ ๋ชจ๋ ๋ฆฌํ ์ค์์น์ ๋คํธ์ํฌ์ ์๋ ๋ชจ๋ VNI์ ๋ํ ์ ๋ณด๋ฅผ ์ ์งํ ํ์๊ฐ ์์ต๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก Host-1์์ Host-2๋ก ํธ๋ํฝ์ ๋ณด๋ผ ๋ ํจํท์ ์๋ก์ด VNI - 99000์ ์ฌ์ฉํ์ฌ VxLAN ๋ด๋ถ์ ํจํน๋ฉ๋๋ค.
Leaf-1์ด ๋ค๋ฅธ VNI์์ MAC ์ฃผ์์ ๋ํด ์ ํํ ์ด๋ป๊ฒ ํ์ตํ๋์ง ํ์ธํด์ผ ํฉ๋๋ค. ์ด๋ EVPN ๊ฒฝ๋ก ์ ํ 2(MAC/IP)์ ๋์์ผ๋ก๋ ๋ฐ์ํฉ๋๋ค.
๋ค์์ ๋ค๋ฅธ VNI์ ์๋ ์ ๋์ฌ์ ๋ํ ๊ฒฝ๋ก ์ ํ ํ๋ก์ธ์ค๋ฅผ ๋ณด์ฌ์ค๋๋ค.
์ฆ, VNI 20000์์ ๋ฐ์ ์ฃผ์๋ XNUMX๊ฐ์ RT๋ฅผ ๊ฐ์ง๋๋ค.
Update์์ ๋ฐ์ ๊ฒฝ๋ก๋ VRF ์ค์ ์ ์ง์ ๋ Route-target์ด ์๋ BGP ํ
์ด๋ธ์ ์ํ๋ค๋ ์ ์ ์๊ธฐ์์ผ ๋๋ฆฌ๊ฒ ์ต๋๋ค(ํ๋ก์ธ์ค๊ฐ ๋ค์ ๋ณต์กํ์ง๋ง ์ด ๊ธฐ์ฌ์์๋ ๋ค๋ฃจ์ง ์๊ฒ ์ต๋๋ค).
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๋ ๋ชจ๋ Leafs์์ ๋์ผํ๊ณ 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
์์ ๋ ์ ๋ฐ์ดํธ๋ฅผ ์์ธํ ์ดํด๋ณด๋ฉด ์ด ์ ๋์ฌ์ ๋ ๊ฐ์ 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๊ฐ ๋๋ฝ๋ ๊ฒ์ ํ์ธํ์
จ์ต๋๊น?
๋ง์ต๋๋ค. ๊ทธ๋ ๊ฑฐ๊ธฐ์ ์์ต๋๋ค. ์ฆ, ์๊ฒฉ ๋ฆฌํ๋ ๋คํธ์ํฌ์ ์๋ ํธ์คํธ์ ๋ํ ์ ๋ณด๋ง ์์ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ์ฌ๋ฐ๋ฅธ ํ๋์
๋๋ค. ์์ ๋ชจ๋ ์
๋ฐ์ดํธ์์ ์ ๋ณด๊ฐ MAC / IP์ ๋ด์ฉ๊ณผ ํจ๊ป ์ ๊ณต๋๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ๋งํ ์ ๋์ฌ๊ฐ ์์ต๋๋ค.
์ด๊ฒ์ BGP ํ ์ด๋ธ์ด ์ถ๊ฐ๋ก ์ฑ์์ง๋ ARP ํ ์ด๋ธ์ ์ฑ์ฐ๋ HMM(Host Mobility Manager) ํ๋กํ ์ฝ์ ๋๋ค(์ด ๋ฌธ์์ ํ๋ ์์ํฌ ๋ด์์ ์ด ํ๋ก์ธ์ค๋ ์๋ตํจ). HMM์ผ๋ก๋ถํฐ ๋ฐ์ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก route-type 2 EVPN์ด ํ์ฑ๋๋ค(MAC/IP๋ก ์ ์ก).
๊ทธ๋ฌ๋ ์ ๋์ฌ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๋ฌํด์ผ ํ๋ ๊ฒฝ์ฐ์๋ ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น?
์ด๋ฌํ ์ ํ์ ์ ๋ณด์๋ EVPN ๊ฒฝ๋ก ์ ํ 5๊ฐ ์์ต๋๋ค. ์ด๋ฅผ ํตํด address-family l2vpn evpn์ ํตํด ์ ๋์ฌ๋ฅผ ๋ณด๋ผ ์ ์์ต๋๋ค(์ด ์์ฑ ๋น์ ์ด ์ ํ์ ๊ฒฝ๋ก๋ ์ด์ ๋ฒ์ ์๋ง ์์).
์ ๋์ฌ๋ฅผ ์ ์กํ๋ ค๋ฉด VRF์ ๋ํ BGP ํ๋ก์ธ์ค์์ ์ ๋์ฌ๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
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
๊ฒฐ๊ณผ์ ์ผ๋ก ์ ๋ฐ์ดํธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
BGP ํ ์ด๋ธ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. EVPN ๊ฒฝ๋ก ์ ํ 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 ๊ฐ์ ๋ผ์ฐํ ์ ์ํ ๋ค์ํ ์ต์ ์ ๊ณ ๋ คํ ๊ฒ์ ๋๋ค.
์ถ์ฒ : habr.com