Ver3.0 ๐ Cumulus Linux: ๊ฐ๋ฐฉํ ๋คํธ์ํน ํ๊ฒฝ ๊ตฌ์ถ

๐ Cumulus Linux: ๊ฐ๋ฐฉํ ๋คํธ์ํน ํ๊ฒฝ ๊ตฌ์ถ
์๋
! ์ค๋์ ๋คํธ์ํฌ ์ธ๊ณ์ ํ์ ์ ๊ฐ์ ธ์จ Cumulus Linux์ ๋ํด ์ด์ผ๊ธฐํด๋ณผ๊น ํด. ๐
ํน์ ๋คํธ์ํฌ ์ฅ๋น ๊ตฌ๋งคํ ๋๋ง๋ค ํน์ ๋ฒค๋์ ์ข
์๋์ด ๋น์ผ ๊ฐ๊ฒฉ์ ์ง๋ถํ๊ณ , ์ ํ์ ์ธ ๊ธฐ๋ฅ์ ๋ต๋ตํจ์ ๋๋ ์ ์์ด? ๊ทธ๋ ๋ค๋ฉด ์ด ๊ธ์ด ๋ฑ ๋ง์ ๊ฑฐ์ผ!
Cumulus Linux๋ ๋คํธ์ํฌ ์ค์์น์์ ๋์ํ๋ ๋ฆฌ๋
์ค ๊ธฐ๋ฐ ์ด์์ฒด์ ๋ก, ๋คํธ์ํน ์ธ๊ณ์ ์คํ์์ค์ ์์ ๋ก์์ ๊ฐ์ ธ์จ ํ์ ์ ์ธ ์๋ฃจ์
์ด์ผ. ๋ง์น ์๋ฒ ์ธ๊ณ์์ ๋ฆฌ๋
์ค๊ฐ ๊ทธ๋ฌ๋ ๊ฒ์ฒ๋ผ ๋ง์ด์ง! ๐ฏ
๐ฏ Cumulus Linux๊ฐ ๋ญ๊ธธ๋?
Cumulus Linux๋ 2013๋
์ ๋ฑ์ฅํ ๋คํธ์ํฌ ์ค์์น ์ ์ฉ ๋ฆฌ๋
์ค ๋ฐฐํฌํ์ด์ผ. ๐ง
์ผ๋ฐ์ ์ธ ์๋ฒ์ฉ ๋ฆฌ๋
์ค์ฒ๋ผ, ๋คํธ์ํฌ ์ค์์น์์๋ ํ์ค ๋ฆฌ๋
์ค ํ๊ฒฝ์ ์ฌ์ฉํ ์ ์๊ฒ ๋ง๋ ๊ฑฐ์ง.
๊ฐ์ฅ ํฐ ํน์ง์ ๋ญ๋๊ณ ? ๋ฐ๋ก ํ๋์จ์ด์ ์ํํธ์จ์ด์ ๋ถ๋ฆฌ์ผ!
์ ํต์ ์ธ ๋คํธ์ํฌ ์ฅ๋น๋ ์์ค์ฝ, ์ฃผ๋ํผ ๊ฐ์ ํน์ ๋ฒค๋์ ํ๋์จ์ด์ ์ํํธ์จ์ด๊ฐ ํ๋๋ก ๋ฌถ์ฌ ์์์ด. ๋ง์น ์ค๋งํธํฐ ์ด์ฐฝ๊ธฐ์ ํ๋์จ์ด์ OS๊ฐ ๋ถ๋ฆฌ๋์ง ์์๋ ๊ฒ์ฒ๋ผ ๋ง์ด์ผ. ๐ฑ
๐ก ํต์ฌ ๊ฐ๋ : ๋์ค์ด๊ทธ๋ฆฌ๊ฒ์ด์ (Disaggregation)
๋์ค์ด๊ทธ๋ฆฌ๊ฒ์ด์
์ ํ๋์จ์ด์ ์ํํธ์จ์ด๋ฅผ ๋ถ๋ฆฌํ๋ ๊ฐ๋
์ด์ผ.
์ด๋ฅผ ํตํด ์ฌ์ฉ์๋ ์ํ๋ ํ๋์จ์ด๋ฅผ ์ ํํ๊ณ , ๊ทธ ์์ Cumulus Linux๋ฅผ ์ค์นํ ์ ์์ด.
๋ง์น PC๋ฅผ ์กฐ๋ฆฝํ๋ฏ์ด ๋คํธ์ํฌ ์ฅ๋น๋ฅผ ๊ตฌ์ฑํ ์ ์๊ฒ ๋ ๊ฑฐ์ง! ๐ง
๐ ์ Cumulus Linux๊ฐ ์ฃผ๋ชฉ๋ฐ์๊น?
๋น์ฉ ์ ๊ฐ
์ ํต์ ์ธ ๋คํธ์ํฌ ์ฅ๋น ๋๋น 50-70% ๋น์ฉ ์ ๊ฐ์ด ๊ฐ๋ฅํด. ๋ฒ ์ด๋ฉํ ์ค์์น๋ ๋ธ๋๋ ํ๋ฆฌ๋ฏธ์์ด ์๊ฑฐ๋ !
๋ฒค๋ ์ข ์ ํํผ
ํน์ ๋ฒค๋์ ๋ฌถ์ด์ง ์๊ณ ๋ค์ํ ํ๋์จ์ด ์ ์กฐ์ฌ์ ์ ํ์ ์์ ๋กญ๊ฒ ์ ํํ ์ ์์ด.
์ต์ํ ๋ฆฌ๋ ์ค ํ๊ฒฝ
์๋ฒ ๊ด๋ฆฌ์๋ผ๋ฉด ๋๊ตฌ๋ ์๋ ๋ฆฌ๋ ์ค ๋ช ๋ น์ด์ ๋๊ตฌ๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์์ด. ํ์ต ๊ณก์ ์ด ์๋งํ์ง!
์๋ํ ์นํ์
Ansible, Puppet, Chef ๊ฐ์ ์๋ํ ๋๊ตฌ๋ฅผ ๋ฐ๋ก ์ ์ฉํ ์ ์์ด. DevOps์ ์ฐฐ๋ก๊ถํฉ์ด์ผ!
ํ์ค ํ๋กํ ์ฝ ์ง์
BGP, OSPF, VXLAN ๋ฑ ๋ชจ๋ ํ์ค ๋คํธ์ํฌ ํ๋กํ ์ฝ์ ์๋ฒฝํ๊ฒ ์ง์ํด.
ํ์ฅ์ฑ
์๊ท๋ชจ๋ถํฐ ๋๊ท๋ชจ ๋ฐ์ดํฐ์ผํฐ๊น์ง, ํ์์ ๋ฐ๋ผ ์ ์ฐํ๊ฒ ํ์ฅํ ์ ์์ด.
๐๏ธ Cumulus Linux ์ํคํ ์ฒ ์ดํดํ๊ธฐ
Cumulus Linux์ ์ํคํ
์ฒ๋ฅผ ์ดํดํ๋ ค๋ฉด ๋จผ์ ๋คํธ์ํฌ ์ค์์น์ ๊ตฌ์กฐ๋ฅผ ์์์ผ ํด.
์ผ๋ฐ์ ์ธ ๋คํธ์ํฌ ์ค์์น๋ ํฌ๊ฒ ๋ ๋ถ๋ถ์ผ๋ก ๋๋์ด:
๐น Control Plane (์ ์ด ํ๋ฉด)
๋คํธ์ํฌ ํ๋กํ ์ฝ์ ์คํํ๊ณ , ๋ผ์ฐํ
ํ
์ด๋ธ์ ๊ณ์ฐํ๋ฉฐ, ๋คํธ์ํฌ ์ ์ฑ
์ ๊ด๋ฆฌํ๋ ๋๋ ์ญํ ์ด์ผ.
Cumulus Linux๋ ๋ฐ๋ก ์ด Control Plane์์ ๋์ํด. CPU์์ ์คํ๋๋ ์ํํธ์จ์ด ์์ญ์ด์ง. ๐ง
๐น Data Plane (๋ฐ์ดํฐ ํ๋ฉด)
์ค์ ํจํท์ ๊ณ ์์ผ๋ก ์ ๋ฌํ๋ ํ๋์จ์ด ์์ญ์ด์ผ.
ASIC(Application-Specific Integrated Circuit)์ด๋ผ๋ ์ ์ฉ ์นฉ์ด ์ด๋น ์๋ฐฑ๋ง ๊ฐ์ ํจํท์ ์ฒ๋ฆฌํด.
Broadcom Trident, Mellanox Spectrum ๊ฐ์ ์นฉ์
๋ค์ด ์ฌ๊ธฐ์ ํด๋น๋ผ. โก
๐จ Cumulus Linux์ ๊ณ์ธต ๊ตฌ์กฐ
Cumulus Linux๋ ์ฌ๋ฌ ๊ณ์ธต์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ด. ๊ฐ ๊ณ์ธต์ด ์ด๋ค ์ญํ ์ ํ๋์ง ์ดํด๋ณด์! ๐
| ๊ณ์ธต | ์ค๋ช | ์ฃผ์ ๊ตฌ์ฑ์์ |
|---|---|---|
| ์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต | ์ฌ์ฉ์๊ฐ ์ง์ ์ํธ์์ฉํ๋ ์์ญ | CLI, Web UI, REST API, ์๋ํ ๋๊ตฌ |
| ๋คํธ์ํฌ ์๋น์ค ๊ณ์ธต | ๋คํธ์ํฌ ํ๋กํ ์ฝ๊ณผ ์๋น์ค ์คํ | FRRouting, LLDP, SNMP, NTP |
| ๋ฆฌ๋ ์ค ์ปค๋ | ์ด์์ฒด์ ์ ํต์ฌ | Debian ๊ธฐ๋ฐ ์ปค๋, ๋คํธ์ํฌ ์คํ |
| ํ๋์จ์ด ์ถ์ํ ๊ณ์ธต | ํ๋์จ์ด์ ์ํํธ์จ์ด ์ฐ๊ฒฐ | Switchdev, SDK ๋๋ผ์ด๋ฒ |
| ํ๋์จ์ด ๊ณ์ธต | ๋ฌผ๋ฆฌ์ ์ค์์น ์นฉ์ | ASIC, ํฌํธ, ๋ฉ๋ชจ๋ฆฌ |
๐ Switchdev: ๋ง๋ฒ์ ์ฐ๊ฒฐ๊ณ ๋ฆฌ
Switchdev๋ Cumulus Linux์ ํต์ฌ ๊ธฐ์ ์ค ํ๋์ผ! ๐ฏ
๋ฆฌ๋
์ค ์ปค๋์ ํ์ค ๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ฅผ ํตํด ํ๋์จ์ด ASIC์ ์ ์ดํ ์ ์๊ฒ ํด์ฃผ๋ ํ๋ ์์ํฌ์ง.
์ฝ๊ฒ ๋งํ๋ฉด, ์ผ๋ฐ ๋ฆฌ๋
์ค ๋ช
๋ น์ด๋ก ํ๋์จ์ด ์ค์์น๋ฅผ ์กฐ์ํ ์ ์๊ฒ ๋ง๋๋ ๋ฒ์ญ๊ธฐ ๊ฐ์ ๊ฑฐ์ผ! ๐
์๋ฅผ ๋ค์ด, ip link ๋ช
๋ น์ด๋ก ์ค์์น ํฌํธ๋ฅผ ๊ด๋ฆฌํ๊ณ , bridge ๋ช
๋ น์ด๋ก VLAN์ ์ค์ ํ ์ ์์ด.
# ์ค์์น ํฌํธ ์ํ ํ์ธ (์ผ๋ฐ ๋ฆฌ๋
์ค ๋ช
๋ น์ด!)
ip link show swp1
# VLAN ์์ฑ (๋ธ๋ฆฟ์ง ๋ช
๋ น์ด ์ฌ์ฉ)
ip link add br0 type bridge
ip link set swp1 master br0
# IP ์ฃผ์ ํ ๋น
ip addr add 192.168.1.1/24 dev swp1
โ๏ธ Cumulus Linux ์ค์น์ ์ด๊ธฐ ์ค์
์, ์ด์ ์ค์ ์ผ๋ก ๋ค์ด๊ฐ๋ณผ๊น? Cumulus Linux๋ฅผ ์ค์นํ๊ณ ์ค์ ํ๋ ๊ณผ์ ์ ๋จ๊ณ๋ณ๋ก ์์๋ณด์! ๐
์๊ฐ๋ณด๋ค ํจ์ฌ ๊ฐ๋จํด์ ๋๋ ๊ฑฐ์ผ.
๐ฆ 1๋จ๊ณ: ํ๋์จ์ด ์ ํ
๋จผ์ Cumulus Linux๋ฅผ ์ค์นํ ๋ฒ ์ด๋ฉํ ์ค์์น๊ฐ ํ์ํด.
Cumulus Linux๋ ๋ค์ํ ํ๋์จ์ด๋ฅผ ์ง์ํ๋๋ฐ, ์ฃผ์ ์ ์กฐ์ฌ๋ ๋ค์๊ณผ ๊ฐ์:
Dell EMC
S4048, S5248F ๋ฑ ๋ค์ํ ๋ชจ๋ธ ์ง์. ๊ธฐ์ ํ๊ฒฝ์์ ์ธ๊ธฐ๊ฐ ๋ง์.
Edge-Core
AS7712, AS5812 ๋ฑ ๊ฐ์ฑ๋น ์ข์ ํ์ดํธ๋ฐ์ค ์ค์์น ์ ๊ณต.
Mellanox (NVIDIA)
SN2700, SN3700 ๋ฑ ๊ณ ์ฑ๋ฅ ์ค์์น. 100G/400G ์ง์.
Quanta
T3048-LY8, T7032-IX7 ๋ฑ ํด๋ผ์ฐ๋ ๋ฐ์ดํฐ์ผํฐ์ฉ ์ค์์น.
๐ ํ๋์จ์ด ํธํ์ฑ ํ์ธ
Cumulus Linux ๊ณต์ ์น์ฌ์ดํธ์ HCL(Hardware Compatibility List)์์ ์ง์ ํ๋์จ์ด ๋ชฉ๋ก์ ํ์ธํ ์ ์์ด.
๊ตฌ๋งค ์ ์ ๋ฐ๋์ ํธํ์ฑ์ ์ฒดํฌํ๋ ๊ฒ ์ค์ํด! โ
๐ฟ 2๋จ๊ณ: Cumulus Linux ์ค์น
Cumulus Linux ์ค์น๋ ํฌ๊ฒ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ด:
๋ฐฉ๋ฒ 1: ONIE๋ฅผ ํตํ ์ค์น (๊ถ์ฅ) ๐ฏ
ONIE(Open Network Install Environment)๋ ๋คํธ์ํฌ ์ค์์น๋ฅผ ์ํ ๋ถํธ๋ก๋์ผ.
๋๋ถ๋ถ์ ๋ฒ ์ด๋ฉํ ์ค์์น์ ์ฌ์ ์ค์น๋์ด ์์ด์, ๋คํธ์ํฌ๋ฅผ ํตํด OS๋ฅผ ์๋์ผ๋ก ์ค์นํ ์ ์์ง.
์ค์น ๊ณผ์ ์ ์ด๋ ๊ฒ ๊ฐ๋จํด:
# 1. ์ค์์น๋ฅผ ONIE ๋ชจ๋๋ก ๋ถํ
# 2. HTTP/FTP ์๋ฒ์์ Cumulus Linux ์ด๋ฏธ์ง ๋ค์ด๋ก๋
onie-nos-install http://server.example.com/cumulus-linux-4.4.0-mlx-amd64.bin
# 3. ์๋์ผ๋ก ์ค์น ์งํ
# 4. ์ฌ๋ถํ
ํ Cumulus Linux ์คํ!
๋ฐฉ๋ฒ 2: USB๋ฅผ ํตํ ์ค์น ๐พ
๋คํธ์ํฌ ํ๊ฒฝ์ด ์ค๋น๋์ง ์์๋ค๋ฉด USB๋ฅผ ์ฌ์ฉํ ์๋ ์์ด.
Cumulus Linux ์ด๋ฏธ์ง๋ฅผ USB์ ๋ณต์ฌํ๊ณ , ์ค์์น์ ์ฐ๊ฒฐํ ํ ONIE์์ ์ค์นํ๋ฉด ๋ผ.
๐ง 3๋จ๊ณ: ์ด๊ธฐ ์ค์
์ค์น๊ฐ ์๋ฃ๋๋ฉด ๊ธฐ๋ณธ ์ค์ ์ ํด์ผ ํด. ์ฒซ ๋ก๊ทธ์ธ ์ ๋ณด๋ ๋ค์๊ณผ ๊ฐ์:
Username: cumulus
Password: cumulus
# ์ฒซ ๋ก๊ทธ์ธ ํ ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ ํ์!
passwd
๐ ๋คํธ์ํฌ ์ธํฐํ์ด์ค ์ค์
Cumulus Linux๋ /etc/network/interfaces ํ์ผ๋ก ๋คํธ์ํฌ๋ฅผ ์ค์ ํด.
Debian ๋ฆฌ๋
์ค๋ฅผ ์จ๋ณธ ์ฌ๋์ด๋ผ๋ฉด ์ต์ํ ๊ฑฐ์ผ! ๐
# /etc/network/interfaces ํ์ผ ํธ์ง
sudo nano /etc/network/interfaces
# ๊ด๋ฆฌ ์ธํฐํ์ด์ค ์ค์ ์์
auto eth0
iface eth0 inet static
address 192.168.1.100/24
gateway 192.168.1.1
# ์ค์์น ํฌํธ ์ค์ ์์
auto swp1
iface swp1
address 10.0.1.1/24
# ์ค์ ์ ์ฉ
sudo ifreload -a
๐๏ธ NCLU: ๋คํธ์ํฌ ๋ช ๋ น์ด ์ ํธ๋ฆฌํฐ
Cumulus Linux๋ NCLU(Network Command Line Utility)๋ผ๋ ํธ๋ฆฌํ CLI ๋๊ตฌ๋ฅผ ์ ๊ณตํด.
์ ํต์ ์ธ ๋คํธ์ํฌ ์ฅ๋น์ CLI์ ๋น์ทํ ๋ฌธ๋ฒ์ ์ฌ์ฉํด์, ์์ค์ฝ๋ ์ฃผ๋ํผ์ ์ต์ํ ์ฌ๋๋ค๋ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ด! ๐ฏ
# NCLU ๊ธฐ๋ณธ ๋ช
๋ น์ด
net show interface # ์ธํฐํ์ด์ค ์ํ ํ์ธ
net show configuration # ํ์ฌ ์ค์ ๋ณด๊ธฐ
net show system # ์์คํ
์ ๋ณด ํ์ธ
# ์ค์ ๋ณ๊ฒฝ ์์
net add interface swp1 ip address 10.0.1.1/24
net add vlan 100 ip address 192.168.100.1/24
net pending # ๋ณ๊ฒฝ์ฌํญ ๋ฏธ๋ฆฌ๋ณด๊ธฐ
net commit # ์ค์ ์ ์ฉ
net abort # ๋ณ๊ฒฝ์ฌํญ ์ทจ์
# ์ค์ ๋กค๋ฐฑ
net rollback last # ๋ง์ง๋ง ์ค์ ์ผ๋ก ๋๋๋ฆฌ๊ธฐ
net ์
๋ ฅ ํ ํญ์ ๋ ๋ฒ ๋๋ฅด๋ฉด ์ฌ์ฉ ๊ฐ๋ฅํ ๋ช
๋ น์ด ๋ชฉ๋ก์ด ๋์! ๐
๐ ๋คํธ์ํฌ ๊ธฐ๋ฅ ๊ตฌ์ฑํ๊ธฐ
์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก Cumulus Linux์ ๋คํธ์ํฌ ๊ธฐ๋ฅ๋ค์ ์ค์ ํด๋ณด์!
์ค๋ฌด์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ๊ธฐ๋ฅ๋ค์ ์ค์ฌ์ผ๋ก ์์๋ณผ๊ฒ. ๐
๐ ๋ธ๋ฆฌ์ง์ VLAN ์ค์
๋ธ๋ฆฌ์ง(Bridge)๋ ์ฌ๋ฌ ํฌํธ๋ฅผ ํ๋์ ๋คํธ์ํฌ๋ก ๋ฌถ๋ ๊ธฐ๋ฅ์ด์ผ.
VLAN๊ณผ ํจ๊ป ์ฌ์ฉํ๋ฉด ๋คํธ์ํฌ๋ฅผ ๋
ผ๋ฆฌ์ ์ผ๋ก ๋ถ๋ฆฌํ ์ ์์ง. ๐
์ ํต์ ์ธ ๋ธ๋ฆฌ์ง ๋ชจ๋
๊ฐ VLAN๋ง๋ค ๋ณ๋์ ๋ธ๋ฆฌ์ง๋ฅผ ์์ฑํ๋ ๋ฐฉ์์ด์ผ. ์ค์ ์ด ์ง๊ด์ ์ด์ง๋ง, VLAN์ด ๋ง์์ง๋ฉด ๊ด๋ฆฌ๊ฐ ๋ณต์กํด์ ธ.
# ์ ํต์ ์ธ ๋ธ๋ฆฌ์ง ์ค์
net add bridge bridge ports swp1,swp2,swp3
net add bridge bridge vids 100,200,300
net add interface swp1 bridge access 100
net add interface swp2 bridge access 200
net add interface swp3 bridge trunk vlans 100,200,300
net commit
VLAN-aware ๋ธ๋ฆฌ์ง ๋ชจ๋ (๊ถ์ฅ) โญ
ํ๋์ ๋ธ๋ฆฌ์ง๋ก ๋ชจ๋ VLAN์ ๊ด๋ฆฌํ๋ ํ๋์ ์ธ ๋ฐฉ์์ด์ผ.
๋๊ท๋ชจ ํ๊ฒฝ์์ ํจ์ฌ ํจ์จ์ ์ด๊ณ , ์ค์ ๋ ๊ฐ๋จํด!
# VLAN-aware ๋ธ๋ฆฌ์ง ์ค์
net add bridge bridge ports swp1-10
net add bridge bridge vids 100-200
net add bridge bridge pvid 1
# Access ํฌํธ ์ค์ (๋จ์ผ VLAN)
net add interface swp1 bridge access 100
# Trunk ํฌํธ ์ค์ (๋ค์ค VLAN)
net add interface swp10 bridge trunk vlans 100-200
# VLAN ์ธํฐํ์ด์ค ์์ฑ (L3)
net add vlan 100 ip address 192.168.100.1/24
net add vlan 200 ip address 192.168.200.1/24
net commit
๐ ๋ณธ๋ฉ(Bonding)๊ณผ LACP
๋ณธ๋ฉ์ ์ฌ๋ฌ ๋ฌผ๋ฆฌ ํฌํธ๋ฅผ ํ๋์ ๋
ผ๋ฆฌ ํฌํธ๋ก ๋ฌถ์ด์ ๋์ญํญ์ ๋๋ฆฌ๊ณ ์ด์คํ๋ฅผ ์ ๊ณตํ๋ ๊ธฐ์ ์ด์ผ.
LACP(Link Aggregation Control Protocol)๋ฅผ ์ฌ์ฉํ๋ฉด ๋์ ์ผ๋ก ๋งํฌ๋ฅผ ๊ด๋ฆฌํ ์ ์์ด. ๐ช
# ๋ณธ๋ ์ธํฐํ์ด์ค ์์ฑ
net add bond bond0 bond slaves swp1,swp2
net add bond bond0 bond mode 802.3ad # LACP ๋ชจ๋
net add bond bond0 bond lacp-rate fast # LACP ๋น ๋ฅธ ํ์ด๋จธ
net add bond bond0 bridge access 100
# ๋ณธ๋๋ฅผ ๋ธ๋ฆฌ์ง์ ์ถ๊ฐ
net add bridge bridge ports bond0
net commit
# ๋ณธ๋ ์ํ ํ์ธ
net show interface bond0
| ๋ณธ๋ฉ ๋ชจ๋ | ์ค๋ช | ์ฌ์ฉ ์๋๋ฆฌ์ค |
|---|---|---|
| 802.3ad (LACP) | ๋์ ๋งํฌ ์ง๊ณ, ํ์ค ํ๋กํ ์ฝ | ๋๋ถ๋ถ์ ํ๊ฒฝ์์ ๊ถ์ฅ |
| balance-xor | ์ ์ ๋ก๋ ๋ฐธ๋ฐ์ฑ | LACP ๋ฏธ์ง์ ์ฅ๋น์ ์ฐ๊ฒฐ |
| active-backup | ์กํฐ๋ธ-์คํ ๋ฐ์ด ์ด์คํ | ๋จ์ ์ฅ์ ๋์ |
๐ฃ๏ธ ๋ผ์ฐํ ํ๋กํ ์ฝ ์ค์
Cumulus Linux๋ FRRouting(FRR)์ ์ฌ์ฉํด์ ๋์ ๋ผ์ฐํ
์ ์ง์ํด.
FRR์ Quagga์ ํ์ ํ๋ก์ ํธ๋ก, BGP, OSPF, IS-IS ๋ฑ ๋ค์ํ ํ๋กํ ์ฝ์ ์ง์ํ๋ ์คํ์์ค ๋ผ์ฐํ
์ค์ํธ์ผ! ๐บ๏ธ
๐ท BGP ์ค์
BGP(Border Gateway Protocol)๋ ์ธํฐ๋ท์ ํต์ฌ ๋ผ์ฐํ
ํ๋กํ ์ฝ์ด์, ๋ฐ์ดํฐ์ผํฐ์์๋ ๋๋ฆฌ ์ฌ์ฉ๋ผ.
ํนํ Leaf-Spine ์ํคํ
์ฒ์์ BGP๋ ํ์์ ์ด์ผ!
# BGP ๊ธฐ๋ณธ ์ค์
net add bgp autonomous-system 65001
net add bgp router-id 10.0.0.1
# BGP ๋ค์ด๋ฒ ์ถ๊ฐ
net add bgp neighbor 10.0.1.2 remote-as 65002
net add bgp neighbor 10.0.1.2 description "Spine-01"
# ๋คํธ์ํฌ ๊ด๊ณ
net add bgp network 192.168.1.0/24
# BGP ์ค์ ์ ์ฉ
net commit
# BGP ์ํ ํ์ธ
net show bgp summary
net show bgp neighbor
๐ฏ Unnumbered BGP
Cumulus Linux์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ ์ค ํ๋๊ฐ Unnumbered BGP์ผ!
๊ฐ ๋งํฌ์ IP ์ฃผ์๋ฅผ ํ ๋นํ์ง ์๊ณ ๋ BGP๋ฅผ ์คํํ ์ ์์ด์, IP ์ฃผ์ ๊ด๋ฆฌ๊ฐ ํจ์ฌ ๊ฐ๋จํด์ ธ.
๋งํฌ-๋ก์ปฌ ์ฃผ์๋ฅผ ์ฌ์ฉํด์ BGP ์ธ์
์ ๋งบ๋ ๋ฐฉ์์ด์ง. ๐
# Unnumbered BGP ์ค์
net add interface swp1 ipv6 nd ra-interval 10
net add bgp autonomous-system 65001
net add bgp neighbor swp1 interface remote-as external
net commit
# ์ด๋ ๊ฒ ํ๋ฉด IP ์ฃผ์ ์์ด๋ BGP๊ฐ ๋์ํด!
๐ถ OSPF ์ค์
OSPF(Open Shortest Path First)๋ ์ํฐํ๋ผ์ด์ฆ ํ๊ฒฝ์์ ๋ง์ด ์ฌ์ฉํ๋ IGP(Interior Gateway Protocol)์ผ.
# OSPF ๊ธฐ๋ณธ ์ค์
net add ospf router-id 10.0.0.1
net add ospf network 192.168.1.0/24 area 0.0.0.0
net add ospf network 10.0.0.0/30 area 0.0.0.0
# ์ธํฐํ์ด์ค๋ณ OSPF ์ค์
net add interface swp1 ospf area 0.0.0.0
net add interface swp1 ospf network point-to-point
net commit
# OSPF ์ํ ํ์ธ
net show ospf neighbor
net show ospf database
๐ VXLAN๊ณผ EVPN
ํ๋ ๋ฐ์ดํฐ์ผํฐ์ ํต์ฌ ๊ธฐ์ ์ธ VXLAN(Virtual Extensible LAN)๊ณผ EVPN(Ethernet VPN)!
์ด ์กฐํฉ์ ๋๊ท๋ชจ ๋ฉํฐํ
๋ํธ ํ๊ฒฝ์์ ๋คํธ์ํฌ ๊ฐ์ํ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํด์ค. ๐
VXLAN์ด๋? ๐ค
VXLAN์ L2 ์ด๋๋ท ํ๋ ์์ L3 UDP ํจํท์ผ๋ก ์บก์ํํด์ ์ ์กํ๋ ํฐ๋๋ง ํ๋กํ ์ฝ์ด์ผ.
๊ธฐ์กด VLAN์ 4096๊ฐ ์ ํ์ ๋์ด 1600๋ง ๊ฐ ์ด์์ ๋
ผ๋ฆฌ ๋คํธ์ํฌ๋ฅผ ๋ง๋ค ์ ์์ด!
ํด๋ผ์ฐ๋ ํ๊ฒฝ์์ ํ
๋ํธ ๊ฒฉ๋ฆฌ์ ์๋ฒฝํ์ง. โ๏ธ
# VXLAN ๊ธฐ๋ณธ ์ค์
net add vxlan vni100 vxlan id 100
net add vxlan vni100 vxlan local-tunnelip 10.0.0.1
net add vxlan vni100 bridge access 100
# EVPN์ ์ฌ์ฉํ VXLAN ์ค์ (๊ถ์ฅ)
net add bgp autonomous-system 65001
net add bgp l2vpn evpn neighbor swp1 activate
net add bgp l2vpn evpn advertise-all-vni
# VXLAN ์ธํฐํ์ด์ค๋ฅผ ๋ธ๋ฆฌ์ง์ ์ถ๊ฐ
net add bridge bridge ports vni100
net commit
# VXLAN ์ํ ํ์ธ
net show vxlan
net show evpn vni
๐ก EVPN์ ์ฅ์
EVPN์ BGP๋ฅผ ์ปจํธ๋กค ํ๋ ์ธ์ผ๋ก ์ฌ์ฉํด์ VXLAN์ ๊ด๋ฆฌํด.
โข ์๋ VTEP(VXLAN Tunnel Endpoint) ๋ฐ๊ฒฌ
โข MAC ์ฃผ์ ํ์ต ์ต์ ํ
โข ๋ฉํฐ์บ์คํธ ์์ด BUM(Broadcast, Unknown unicast, Multicast) ํธ๋ํฝ ์ฒ๋ฆฌ
โข ๋ฉํฐํ
๋์ ์ง์
์์ ์๋ํ๋ ์ค๋ฒ๋ ์ด ๋คํธ์ํฌ๋ฅผ ๊ตฌ์ถํ ์ ์์ด! ๐ฏ
๐ค ๋คํธ์ํฌ ์๋ํ์ DevOps
Cumulus Linux์ ๊ฐ์ฅ ํฐ ๊ฐ์ ์ค ํ๋๊ฐ ๋ฐ๋ก ์๋ํ ์นํ์ฑ์ด์ผ! ๐
๋ฆฌ๋
์ค ๊ธฐ๋ฐ์ด๊ธฐ ๋๋ฌธ์ ๊ธฐ์กด DevOps ๋๊ตฌ๋ค์ ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์๊ฑฐ๋ .
๋คํธ์ํฌ๋ ์ด์ Infrastructure as Code(IaC)์ ์๋์ผ!
๐ Ansible์ ํ์ฉํ ์๋ํ
Ansible์ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ์๋ํ ๋๊ตฌ ์ค ํ๋์ผ.
์์ด์ ํธ๊ฐ ํ์ ์๊ณ , YAML๋ก ๊ฐ๋จํ๊ฒ ์ค์ ์ ์ ์ํ ์ ์์ด์ ๋คํธ์ํฌ ์๋ํ์ ๋ฑ์ด์ง! ๐ฏ
# Ansible ์ธ๋ฒคํ ๋ฆฌ ํ์ผ (inventory.yml)
all:
children:
leaf:
hosts:
leaf01:
ansible_host: 192.168.1.11
leaf02:
ansible_host: 192.168.1.12
spine:
hosts:
spine01:
ansible_host: 192.168.1.21
vars:
ansible_user: cumulus
ansible_become: yes
ansible_become_method: sudo
# Ansible ํ๋ ์ด๋ถ ์์ (configure_vlans.yml)
---
- name: Configure VLANs on Cumulus switches
hosts: leaf
tasks:
- name: Configure bridge with VLANs
nclu:
commands:
- add bridge bridge ports swp1-10
- add bridge bridge vids 100-200
commit: yes
- name: Configure VLAN interfaces
nclu:
commands:
- add vlan 100 ip address 192.168.100.1/24
- add vlan 200 ip address 192.168.200.1/24
commit: yes
- name: Save configuration
command: net commit
# ํ๋ ์ด๋ถ ์คํ
# ansible-playbook -i inventory.yml configure_vlans.yml
๐ Python๊ณผ REST API
Cumulus Linux๋ NCLU REST API๋ฅผ ์ ๊ณตํด์ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ๋คํธ์ํฌ๋ฅผ ์ ์ดํ ์ ์์ด.
Python ์คํฌ๋ฆฝํธ๋ก ๋ณต์กํ ๋คํธ์ํฌ ์์
์ ์๋ํํ ์ ์์ง! ๐
# Python์ผ๋ก Cumulus Linux ์ ์ดํ๊ธฐ
import requests
import json
# API ์๋ํฌ์ธํธ
base_url = "http://192.168.1.11:8080/nclu/v1"
headers = {"Content-Type": "application/json"}
# ์ธํฐํ์ด์ค ์ ๋ณด ์กฐํ
response = requests.get(f"{base_url}/show/interface",
auth=("cumulus", "password"))
print(json.dumps(response.json(), indent=2))
# ์ค์ ๋ณ๊ฒฝ
config_commands = {
"commands": [
"add vlan 300 ip address 192.168.300.1/24",
"add interface swp5 bridge access 300"
]
}
response = requests.post(f"{base_url}/configure",
headers=headers,
data=json.dumps(config_commands),
auth=("cumulus", "password"))
# ์ค์ ์ปค๋ฐ
commit = {"commands": ["commit"]}
requests.post(f"{base_url}/configure",
headers=headers,
data=json.dumps(commit),
auth=("cumulus", "password"))
๐ Git์ ํ์ฉํ ์ค์ ๋ฒ์ ๊ด๋ฆฌ
๋คํธ์ํฌ ์ค์ ๋ ์ฝ๋์ฒ๋ผ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํ ์ ์์ด!
Git์ ์ฌ์ฉํ๋ฉด ์ค์ ๋ณ๊ฒฝ ์ด๋ ฅ์ ์ถ์ ํ๊ณ , ๋ฌธ์ ๋ฐ์ ์ ์ฝ๊ฒ ๋กค๋ฐฑํ ์ ์์ง. ๐
# Git ์ ์ฅ์ ์ด๊ธฐํ
cd /etc/network
sudo git init
sudo git add interfaces
sudo git commit -m "Initial network configuration"
# ์ค์ ๋ณ๊ฒฝ ํ ์ปค๋ฐ
sudo nano interfaces
sudo git add interfaces
sudo git commit -m "Added VLAN 300 configuration"
# ๋ณ๊ฒฝ ์ด๋ ฅ ํ์ธ
sudo git log --oneline
# ์ด์ ๋ฒ์ ์ผ๋ก ๋กค๋ฐฑ
sudo git checkout HEAD~1 interfaces
sudo ifreload -a
๐ ๋ชจ๋ํฐ๋ง๊ณผ ํ ๋ ๋ฉํธ๋ฆฌ
์๋ํ๋งํผ ์ค์ํ ๊ฒ ๋ชจ๋ํฐ๋ง์ด์ผ!
Cumulus Linux๋ ๋ค์ํ ๋ชจ๋ํฐ๋ง ๋๊ตฌ์ ํตํฉํ ์ ์์ด. ๐
Prometheus
๋ฉํธ๋ฆญ ์์ง๊ณผ ์๋ฆผ. node_exporter๋ก ์์คํ ๋ฉํธ๋ฆญ์ ์์งํ๊ณ , SNMP exporter๋ก ๋คํธ์ํฌ ๋ฉํธ๋ฆญ์ ๊ฐ์ ธ์ฌ ์ ์์ด.
Grafana
์๊ฐํ ๋์๋ณด๋. ์ค์๊ฐ์ผ๋ก ๋คํธ์ํฌ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ ์์ ๊ทธ๋ํ๋ก ํํํ ์ ์์ง.
Nagios/Zabbix
์ ํต์ ์ธ ๋ชจ๋ํฐ๋ง ๋๊ตฌ. SNMP๋ฅผ ํตํด Cumulus Linux๋ฅผ ๋ชจ๋ํฐ๋งํ ์ ์์ด.
Streaming Telemetry
์ค์๊ฐ ๋ฐ์ดํฐ ์คํธ๋ฆฌ๋ฐ. gRPC๋ Kafka๋ฅผ ํตํด ๋คํธ์ํฌ ์ด๋ฒคํธ๋ฅผ ์ค์๊ฐ์ผ๋ก ์์ง.
# SNMP ์ค์
sudo apt-get install snmpd
sudo nano /etc/snmp/snmpd.conf
# ๊ธฐ๋ณธ SNMP ์ค์
agentAddress udp:161
rocommunity public default
syslocation "DataCenter-01"
syscontact admin@example.com
sudo systemctl restart snmpd
# SNMP๋ก ์ ๋ณด ์กฐํ
snmpwalk -v2c -c public localhost system
๐ข ์ค์ ์๋๋ฆฌ์ค: Leaf-Spine ์ํคํ ์ฒ ๊ตฌ์ถ
์ด์ ๋ฐฐ์ด ๋ด์ฉ์ ์ข
ํฉํด์ ์ค์ ๋ฐ์ดํฐ์ผํฐ์์ ์ฌ์ฉํ๋ Leaf-Spine ์ํคํ
์ฒ๋ฅผ ๊ตฌ์ถํด๋ณด์! ๐๏ธ
์ด๊ฑด ํ๋ ๋ฐ์ดํฐ์ผํฐ์ ํ์ค ์ํคํ
์ฒ๋ก, ํ์ฅ์ฑ๊ณผ ์ฑ๋ฅ์ด ๋ฐ์ด๋. ํนํ ํด๋ผ์ฐ๋ ํ๊ฒฝ์ ์ต์ ํ๋์ด ์์ง!
๐ฏ Leaf-Spine ์ํคํ ์ฒ์ ํน์ง
๊ท ์ผํ ์ง์ฐ์๊ฐ
๋ชจ๋ ์๋ฒ ๊ฐ ํต์ ์ด ์ต๋ 3ํ(Leaf-Spine-Leaf)๋ง ๊ฑฐ์ณ. ์์ธก ๊ฐ๋ฅํ ์ฑ๋ฅ!
์ํ ํ์ฅ
Leaf๋ Spine์ ์ถ๊ฐํ๊ธฐ๋ง ํ๋ฉด ์ฉ๋ ์ฆ์ค ์๋ฃ. ์ค์ผ์ผ ์์์ด ์ฌ์!
๋ก๋ ๋ฐธ๋ฐ์ฑ
ECMP(Equal-Cost Multi-Path)๋ก ํธ๋ํฝ์ ์ฌ๋ฌ ๊ฒฝ๋ก๋ก ๋ถ์ฐ. ๋์ญํญ ์ต๋ ํ์ฉ!
๊ณ ๊ฐ์ฉ์ฑ
Spine ํ๋๊ฐ ์ฃฝ์ด๋ ๋๋จธ์ง Spine์ผ๋ก ํธ๋ํฝ ์ฐํ. ๋จ์ผ ์ฅ์ ์ ์์!
๐ง Spine ์ค์์น ์ค์
Spine ์ค์์น๋ ๋ชจ๋ Leaf ์ค์์น์ BGP ํผ์ด๋ง์ ๋งบ์ด์ผ ํด.
Unnumbered BGP๋ฅผ ์ฌ์ฉํ๋ฉด ์ค์ ์ด ์ ๋ง ๊ฐ๋จํด์ ธ! ๐
# Spine-01 ์ค์
# 1. ๋ฃจํ๋ฐฑ ์ธํฐํ์ด์ค ์ค์ (๋ผ์ฐํฐ ID์ฉ)
net add loopback lo ip address 10.0.1.1/32
# 2. ๋ชจ๋ ๋ค์ด๋งํฌ ํฌํธ ์ค์
net add interface swp1-5
# 3. BGP ๊ธฐ๋ณธ ์ค์
net add bgp autonomous-system 65100
net add bgp router-id 10.0.1.1
# 4. BGP Unnumbered ํผ์ด ์ค์ (๋ชจ๋ Leaf์ ์ฐ๊ฒฐ)
net add bgp neighbor swp1 interface remote-as external
net add bgp neighbor swp2 interface remote-as external
net add bgp neighbor swp3 interface remote-as external
net add bgp neighbor swp4 interface remote-as external
net add bgp neighbor swp5 interface remote-as external
# 5. EVPN ํ์ฑํ
net add bgp l2vpn evpn neighbor swp1 activate
net add bgp l2vpn evpn neighbor swp2 activate
net add bgp l2vpn evpn neighbor swp3 activate
net add bgp l2vpn evpn neighbor swp4 activate
net add bgp l2vpn evpn neighbor swp5 activate
# 6. ์ค์ ์ ์ฉ
net commit
# 7. BGP ์ํ ํ์ธ
net show bgp summary
net show bgp l2vpn evpn summary
๐ Leaf ์ค์์น ์ค์
Leaf ์ค์์น๋ ์๋ฒ์ ์ฐ๊ฒฐ๋๋ ์ก์ธ์ค ๋ ์ด์ด์ผ.
VXLAN๊ณผ EVPN์ ์ค์ ํด์ ์ค๋ฒ๋ ์ด ๋คํธ์ํฌ๋ฅผ ๊ตฌ์ฑํด๋ณด์! ๐
# Leaf-01 ์ค์
# 1. ๋ฃจํ๋ฐฑ ์ธํฐํ์ด์ค ์ค์
net add loopback lo ip address 10.0.2.1/32
# 2. ์
๋งํฌ ํฌํธ ์ค์ (Spine ์ฐ๊ฒฐ)
net add interface swp51-53
# 3. ๋ค์ด๋งํฌ ํฌํธ ์ค์ (์๋ฒ ์ฐ๊ฒฐ)
net add bridge bridge ports swp1-10
net add bridge bridge vids 100,200,300
# 4. VXLAN ์ธํฐํ์ด์ค ์์ฑ
net add vxlan vni100 vxlan id 100
net add vxlan vni100 vxlan local-tunnelip 10.0.2.1
net add vxlan vni100 bridge access 100
net add vxlan vni200 vxlan id 200
net add vxlan vni200 vxlan local-tunnelip 10.0.2.1
net add vxlan vni200 bridge access 200
net add vxlan vni300 vxlan id 300
net add vxlan vni300 vxlan local-tunnelip 10.0.2.1
net add vxlan vni300 bridge access 300
# 5. VXLAN์ ๋ธ๋ฆฌ์ง์ ์ถ๊ฐ
net add bridge bridge ports vni100,vni200,vni300
# 6. BGP ๊ธฐ๋ณธ ์ค์
net add bgp autonomous-system 65001
net add bgp router-id 10.0.2.1
# 7. BGP Unnumbered ํผ์ด ์ค์ (๋ชจ๋ Spine๊ณผ ์ฐ๊ฒฐ)
net add bgp neighbor swp51 interface remote-as external
net add bgp neighbor swp52 interface remote-as external
net add bgp neighbor swp53 interface remote-as external
# 8. EVPN ํ์ฑํ ๋ฐ VNI ๊ด๊ณ
net add bgp l2vpn evpn neighbor swp51 activate
net add bgp l2vpn evpn neighbor swp52 activate
net add bgp l2vpn evpn neighbor swp53 activate
net add bgp l2vpn evpn advertise-all-vni
# 9. ๊ฒ์ดํธ์จ์ด ์ค์ (Anycast Gateway)
net add vlan 100 ip address 192.168.100.1/24
net add vlan 200 ip address 192.168.200.1/24
net add vlan 300 ip address 192.168.300.1/24
net add vlan 100 ip address-virtual 00:00:5e:00:01:01 192.168.100.254/24
net add vlan 200 ip address-virtual 00:00:5e:00:01:02 192.168.200.254/24
net add vlan 300 ip address-virtual 00:00:5e:00:01:03 192.168.300.254/24
# 10. ์ค์ ์ ์ฉ
net commit
๐ฏ Anycast Gateway๋?
Anycast Gateway๋ ๋ชจ๋ Leaf ์ค์์น๊ฐ ๋์ผํ ๊ฐ์ IP์ MAC ์ฃผ์๋ฅผ ๊ฒ์ดํธ์จ์ด๋ก ์ฌ์ฉํ๋ ๊ธฐ์ ์ด์ผ.
์๋ฒ๋ ๊ฐ์ฅ ๊ฐ๊น์ด Leaf๋ฅผ ๊ฒ์ดํธ์จ์ด๋ก ์ฌ์ฉํ๊ฒ ๋์ด, ํธ๋ํฝ์ด ์ต์ ๊ฒฝ๋ก๋ก ํ๋ฅด๊ณ ๋ก๋ ๋ฐธ๋ฐ์ฑ๋ ์๋์ผ๋ก ๋ผ!
๊ฒ๋ค๊ฐ Leaf ํ๋๊ฐ ์ฃฝ์ด๋ ์๋ฒ๋ ๋ค๋ฅธ Leaf๋ฅผ ๊ฒ์ดํธ์จ์ด๋ก ๋ฐ๋ก ์ฌ์ฉํ ์ ์์ด์ ๊ณ ๊ฐ์ฉ์ฑ๋ ํ๋ณด๋์ง. ๐
โ ์ค์ ๊ฒ์ฆ
์ค์ ์ด ์ ๋๋ก ๋์๋์ง ํ์ธํด๋ณด์! ๋ค์ํ ๋ช ๋ น์ด๋ก ์ํ๋ฅผ ์ ๊ฒํ ์ ์์ด. ๐
# BGP ํผ์ด ์ํ ํ์ธ
net show bgp summary
# ๋ชจ๋ Spine/Leaf์ Established ์ํ์ฌ์ผ ํด
# EVPN ๋ผ์ฐํธ ํ์ธ
net show bgp l2vpn evpn route
# Type-2 (MAC), Type-3 (IMET) ๋ผ์ฐํธ๊ฐ ๋ณด์ฌ์ผ ํด
# VXLAN ์ํ ํ์ธ
net show evpn vni
# ๋ชจ๋ VNI๊ฐ Up ์ํ์ด๊ณ , Remote VTEP์ด ๋ณด์ฌ์ผ ํด
# MAC ์ฃผ์ ํ์ต ํ์ธ
net show evpn mac vni 100
# ์๊ฒฉ Leaf์์ ํ์ตํ MAC ์ฃผ์๋ค์ด ๋ณด์ฌ์ผ ํด
# ARP ํ
์ด๋ธ ํ์ธ
net show evpn arp-cache vni 100
# ๋ธ๋ฆฌ์ง ์ํ ํ์ธ
net show bridge
# ๋ชจ๋ ํฌํธ์ VXLAN ์ธํฐํ์ด์ค๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ฐ๊ฒฐ๋์ด ์์ด์ผ ํด
# ๋ผ์ฐํ
ํ
์ด๋ธ ํ์ธ
ip route show
# ECMP ๊ฒฝ๋ก๋ค์ด ๋ณด์ฌ์ผ ํด (nexthop via ... ์ฌ๋ฌ ๊ฐ)
๐ ๋ณด์๊ณผ ACL
๋คํธ์ํฌ ๋ณด์์ ์ ๋ ๋นผ๋์ ์ ์๋ ์ค์ํ ์์์ผ! ๐ก๏ธ
Cumulus Linux๋ ๋ฆฌ๋
์ค ๊ธฐ๋ฐ์ด๊ธฐ ๋๋ฌธ์ iptables์ ebtables๋ฅผ ์ฌ์ฉํด์ ๊ฐ๋ ฅํ ๋ณด์ ์ ์ฑ
์ ๊ตฌํํ ์ ์์ด.
๐ง ACL (Access Control List) ์ค์
Cumulus Linux๋ cl-acltool์ด๋ผ๋ ๋๊ตฌ๋ก ACL์ ๊ด๋ฆฌํด.
iptables ๊ท์น์ ํ๋์จ์ด ASIC์ ์คํ๋ก๋ํด์ ๊ณ ์ฑ๋ฅ ํจํท ํํฐ๋ง์ด ๊ฐ๋ฅํ์ง! โก
# ACL ๊ท์น ํ์ผ ์์ฑ (/etc/cumulus/acl/policy.d/50_custom.rules)
[iptables]
# SSH ์ ๊ทผ ์ ํ (ํน์ IP๋ง ํ์ฉ)
-A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT
-A INPUT -p tcp --dport 22 -j DROP
# ICMP ์๋ ์ ํ (DDoS ๋ฐฉ์ด)
-A INPUT -p icmp --icmp-type echo-request -m limit --limit 10/sec -j ACCEPT
-A INPUT -p icmp --icmp-type echo-request -j DROP
# ํน์ VLAN ๊ฐ ํต์ ์ฐจ๋จ
-A FORWARD -i vlan100 -o vlan200 -j DROP
# ์น ์๋ฒ ๋ณดํธ (Rate Limiting)
-A FORWARD -p tcp --dport 80 -m state --state NEW -m recent --set
-A FORWARD -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 60 --hitcount 20 -j DROP
[ebtables]
# MAC ์ฃผ์ ๊ธฐ๋ฐ ํํฐ๋ง
-A FORWARD -s 00:11:22:33:44:55 -j DROP
# ARP ์คํธํ ๋ฐฉ์ง
-A FORWARD -p ARP --arp-op Request --arp-ip-src 192.168.1.1 -j DROP
# ACL ์ ์ฉ
sudo cl-acltool -i
# ACL ์ํ ํ์ธ
sudo cl-acltool -L ip
sudo iptables -L -v -n
๐ ํฌํธ ๋ณด์
ํฌํธ ๋ณด์์ ํน์ ํฌํธ์ ์ฐ๊ฒฐํ ์ ์๋ MAC ์ฃผ์๋ฅผ ์ ํํ๋ ๊ธฐ๋ฅ์ด์ผ.
๋ฌด๋จ ์ฅ๋น ์ฐ๊ฒฐ์ ๋ฐฉ์งํ ์ ์์ง! ๐
# 802.1X ์ธ์ฆ ์ค์ (hostapd ์ฌ์ฉ)
sudo apt-get install hostapd
# hostapd ์ค์ ํ์ผ (/etc/hostapd/hostapd.conf)
interface=swp1
driver=wired
ieee8021x=1
eap_server=0
eap_reauth_period=3600
# RADIUS ์๋ฒ ์ค์
auth_server_addr=192.168.1.10
auth_server_port=1812
auth_server_shared_secret=your_secret_key
# hostapd ์์
sudo systemctl enable hostapd
sudo systemctl start hostapd
# ์ ์ MAC ์ฃผ์ ๋ฐ์ธ๋ฉ (๊ฐ๋จํ ๋ฐฉ๋ฒ)
# /etc/network/interfaces์ ์ถ๊ฐ
auto swp1
iface swp1
post-up bridge fdb add 00:11:22:33:44:55 dev swp1 master static
๐ DHCP Snooping๊ณผ Dynamic ARP Inspection
DHCP Snooping์ ์ ๋ขฐํ ์ ์๋ DHCP ์๋ฒ๋ก๋ถํฐ ๋คํธ์ํฌ๋ฅผ ๋ณดํธํ๊ณ ,
Dynamic ARP Inspection(DAI)์ ARP ์คํธํ ๊ณต๊ฒฉ์ ๋ฐฉ์ดํด. ๐ก๏ธ
# DHCP Snooping ์ค์
# /etc/dhcp/dhcpd.conf ํ์ผ ์์
authoritative;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option routers 192.168.1.1;
option domain-name-servers 8.8.8.8, 8.8.4.4;
}
# ebtables๋ก DHCP ํจํท ํํฐ๋ง
sudo ebtables -A FORWARD -p IPv4 --ip-protocol udp --ip-destination-port 67 -i swp1 -j DROP
# swp1์์ ์ค๋ DHCP ์๋ฒ ์๋ต ์ฐจ๋จ (์ ๋ขฐํ ์ ์๋ ํฌํธ)
# ARP ๊ฒ์ฆ ๊ท์น
sudo ebtables -A FORWARD -p ARP --arp-ip-src 192.168.1.1 ! -s 00:11:22:33:44:55 -j DROP
# ๊ฒ์ดํธ์จ์ด IP๋ฅผ ์ฌ์ฉํ๋๋ฐ MAC์ด ๋ค๋ฅด๋ฉด ์ฐจ๋จ
๐ง ํธ๋ฌ๋ธ์ํ ๊ณผ ๋๋ฒ๊น
๋คํธ์ํฌ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๋ ๋น ๋ฅด๊ฒ ์์ธ์ ์ฐพ๊ณ ํด๊ฒฐํ๋ ๊ฑด ์ ๋ง ์ค์ํด! ๐
Cumulus Linux๋ ๋ฆฌ๋
์ค ๊ธฐ๋ฐ์ด๋ผ ์ต์ํ ๋๊ตฌ๋ค์ ๋ชจ๋ ์ฌ์ฉํ ์ ์์ด์ ํธ๋ฌ๋ธ์ํ
์ด ํจ์ฌ ์ฌ์.
๐ ๋ก๊ทธ ๋ถ์
์์คํ ๋ก๊ทธ๋ ๋ฌธ์ ํด๊ฒฐ์ ์์์ ์ด์ผ. Cumulus Linux๋ ํ์ค ๋ฆฌ๋ ์ค ๋ก๊น ์ ์ฌ์ฉํด. ๐
# ์์คํ
๋ก๊ทธ ํ์ธ
sudo tail -f /var/log/syslog
sudo journalctl -f
# ํน์ ์๋น์ค ๋ก๊ทธ ํ์ธ
sudo journalctl -u frr.service
sudo journalctl -u networking.service
# BGP ๊ด๋ จ ๋ก๊ทธ
sudo tail -f /var/log/frr/bgpd.log
# ์ธํฐํ์ด์ค ์ด๋ฒคํธ ๋ก๊ทธ
sudo dmesg | grep -i eth
sudo dmesg | grep -i swp
# ๋ก๊ทธ ๋ ๋ฒจ ์กฐ์ (FRR)
sudo vtysh
configure terminal
log syslog debugging
log file /var/log/frr/debug.log debugging
exit
exit
๐ ๋คํธ์ํฌ ์ง๋จ ๋๊ตฌ
ping & traceroute
๊ธฐ๋ณธ ์ฐ๊ฒฐ์ฑ ํ ์คํธ. ICMP ํจํท์ผ๋ก ๊ฒฝ๋ก์ ์ง์ฐ์๊ฐ ํ์ธ.
tcpdump
ํจํท ์บก์ฒ ๋ฐ ๋ถ์. ์ค์๊ฐ์ผ๋ก ๋คํธ์ํฌ ํธ๋ํฝ ๋ชจ๋ํฐ๋ง.
mtr
ping๊ณผ traceroute์ ๊ฒฐํฉ. ์ฐ์์ ์ธ ๊ฒฝ๋ก ๋ชจ๋ํฐ๋ง.
iperf3
๋์ญํญ ํ ์คํธ. ์ค์ ์ฒ๋ฆฌ๋ ์ธก์ .
# ๊ธฐ๋ณธ ์ฐ๊ฒฐ์ฑ ํ
์คํธ
ping -c 4 192.168.1.1
traceroute 8.8.8.8
mtr -r -c 10 google.com
# ํจํท ์บก์ฒ
sudo tcpdump -i swp1 -w capture.pcap
sudo tcpdump -i swp1 'port 80'
sudo tcpdump -i swp1 'host 192.168.1.100'
# BGP ํจํท ์บก์ฒ
sudo tcpdump -i swp1 'tcp port 179'
# ๋์ญํญ ํ
์คํธ
# ์๋ฒ ์ธก
iperf3 -s
# ํด๋ผ์ด์ธํธ ์ธก
iperf3 -c 192.168.1.100 -t 30 -P 4
# ์ธํฐํ์ด์ค ํต๊ณ
ip -s link show swp1
ethtool -S swp1
# ์๋ฌ ์นด์ดํฐ ํ์ธ
net show interface swp1
net show counters
๐ ์ผ๋ฐ์ ์ธ ๋ฌธ์ ์ ํด๊ฒฐ ๋ฐฉ๋ฒ
๋ฌธ์ 1: BGP ํผ์ด๊ฐ Established ๋์ง ์์ โ
์ฆ์: net show bgp summary์์ ํผ์ด ์ํ๊ฐ Active๋ Connect๋ก ํ์๋จ.
์์ธ:
โข ๋ฌผ๋ฆฌ์ ๋งํฌ ๋ค์ด
โข AS ๋ฒํธ ๋ถ์ผ์น
โข ๋ฐฉํ๋ฒฝ/ACL ์ฐจ๋จ
โข ๋ผ์ฐํฐ ID ์ค๋ณต
ํด๊ฒฐ:
# 1. ๋ฌผ๋ฆฌ ๋งํฌ ํ์ธ
net show interface swp1
ip link show swp1
# 2. BGP ์ค์ ํ์ธ
sudo vtysh
show running-config
show ip bgp neighbors 10.0.1.1
# 3. ํจํท ์บก์ฒ๋ก BGP ๋ฉ์์ง ํ์ธ
sudo tcpdump -i swp1 'tcp port 179' -vv
# 4. BGP ๋๋ฒ๊น
ํ์ฑํ
sudo vtysh
configure terminal
debug bgp neighbor-events
debug bgp updates
exit
# 5. ํผ์ด ๋ฆฌ์
clear ip bgp *
๋ฌธ์ 2: VXLAN ํฐ๋์ด ํ์ฑ๋์ง ์์ ๐ซ
์ฆ์: net show evpn vni์์ Remote VTEP์ด ๋ณด์ด์ง ์์.
์์ธ:
โข EVPN ๋ผ์ฐํธ ๊ตํ ์คํจ
โข ๋ฃจํ๋ฐฑ IP ๋๋ฌ ๋ถ๊ฐ
โข VNI ์ค์ ๋ถ์ผ์น
ํด๊ฒฐ:
# 1. EVPN ๋ผ์ฐํธ ํ์ธ
net show bgp l2vpn evpn route
net show bgp l2vpn evpn route type 3 # IMET ๋ผ์ฐํธ
# 2. ๋ฃจํ๋ฐฑ ๋๋ฌ์ฑ ํ์ธ
ping 10.0.2.2 # ๋ค๋ฅธ Leaf์ ๋ฃจํ๋ฐฑ
traceroute 10.0.2.2
# 3. VXLAN ์ธํฐํ์ด์ค ์ํ
ip -d link show vni100
bridge fdb show | grep vni100
# 4. EVPN ๋๋ฒ๊น
sudo vtysh
configure terminal
debug zebra vxlan
debug bgp evpn
exit
# 5. VXLAN ์ฌ์์
sudo systemctl restart frr
๋ฌธ์ 3: ๋์ CPU ์ฌ์ฉ๋ฅ ๐
์ฆ์: top ๋ช
๋ น์ด์์ CPU ์ฌ์ฉ๋ฅ ์ด ์ง์์ ์ผ๋ก ๋์.
์์ธ:
โข ๊ณผ๋ํ ์ปจํธ๋กค ํ๋ ์ธ ํธ๋ํฝ
โข ๋ผ์ฐํ
๋ฃจํ
โข ํ๋กํ ์ฝ ํ๋ํ(Flapping)
ํด๊ฒฐ:
# 1. CPU ์ฌ์ฉ๋ฅ ํ์ธ
top
htop
# 2. ํ๋ก์ธ์ค๋ณ CPU ์ฌ์ฉ๋ฅ
ps aux --sort=-%cpu | head -10
# 3. ์ธํฐํ์ด์ค ํ๋ํ ํ์ธ
net show interface all | grep -i down
sudo dmesg | grep -i "link down"
# 4. ๋ผ์ฐํ
ํ
์ด๋ธ ํฌ๊ธฐ ํ์ธ
ip route show | wc -l
net show route summary
# 5. ์ปจํธ๋กค ํ๋ ์ธ ํธ๋ํฝ ์ ํ
sudo iptables -A INPUT -p tcp --dport 179 -m limit --limit 100/sec -j ACCEPT
sudo iptables -A INPUT -p udp --dport 520 -m limit --limit 50/sec -j ACCEPT
# 6. BGP ํ๋ํ ๋ฐฉ์ง (Dampening)
sudo vtysh
configure terminal
router bgp 65001
bgp dampening
exit
๐ ๏ธ ๊ณ ๊ธ ๋๋ฒ๊น ๊ธฐ๋ฒ
๋ณต์กํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋๋ ๋ ๊น์ด ํ๊ณ ๋ค์ด์ผ ํด. ๊ณ ๊ธ ๋๋ฒ๊น ๋๊ตฌ๋ค์ ์์๋ณด์! ๐ฌ
# ํ๋์จ์ด ASIC ์ํ ํ์ธ
sudo cl-resource-query
sudo cl-resource-query -k
# ํ๋์จ์ด ์นด์ดํฐ ํ์ธ
sudo ethtool -S swp1 | grep error
sudo ethtool -S swp1 | grep drop
# FRR ๋ด๋ถ ์ํ ํ์ธ
sudo vtysh
show ip bgp neighbors 10.0.1.1 advertised-routes
show ip bgp neighbors 10.0.1.1 received-routes
show ip bgp neighbors 10.0.1.1 routes
show evpn vni detail
show evpn rmac vni all
# ์ปค๋ ๋คํธ์ํฌ ์คํ ํ์ธ
cat /proc/net/dev
cat /proc/net/route
cat /proc/net/arp
# ๋ธ๋ฆฌ์ง ํ์ต ํ
์ด๋ธ
bridge fdb show
bridge mdb show
# VLAN ํํฐ๋ง ์ํ
bridge vlan show
# ๋คํธ์ํฌ ๋ค์์คํ์ด์ค (VRF ์ฌ์ฉ ์)
ip netns list
ip netns exec mgmt ip addr show
๐ ์ฑ๋ฅ ์ต์ ํ
Cumulus Linux๋ฅผ ์ต๋ํ ํ์ฉํ๋ ค๋ฉด ์ฑ๋ฅ ์ต์ ํ๊ฐ ํ์์ผ! ๐ช
ํ๋์จ์ด ์ฑ๋ฅ์ 100% ๋์ด๋ด๋ ๋ฐฉ๋ฒ๋ค์ ์์๋ณด์.
โก ํ๋์จ์ด ์คํ๋ก๋ฉ
ํ๋์จ์ด ์คํ๋ก๋ฉ์ CPU ๋์ ASIC์์ ํจํท ์ฒ๋ฆฌ๋ฅผ ํ๋ ๊ธฐ์ ์ด์ผ.
์ ๋๋ก ์ค์ ํ๋ฉด ์๋ฐฑ๋ง PPS(Packets Per Second)๋ฅผ ์ฒ๋ฆฌํ ์ ์์ด! ๐ฅ
| ๊ธฐ๋ฅ | ํ๋์จ์ด ์คํ๋ก๋ฉ | ์ฑ๋ฅ ํฅ์ |
|---|---|---|
| L2 Forwarding | โ ์ง์ | ๋ผ์ธ ๋ ์ดํธ (์๋ฐฑ Gbps) |
| L3 Routing | โ ์ง์ | ๋ผ์ธ ๋ ์ดํธ |
| ACL | โ ์ง์ (์ ํ์ ) | 10-100๋ฐฐ |
| VXLAN Encap/Decap | โ ์ง์ | ๋ผ์ธ ๋ ์ดํธ |
| LAG/LACP | โ ์ง์ | ๋ผ์ธ ๋ ์ดํธ |
# ํ๋์จ์ด ์คํ๋ก๋ฉ ์ํ ํ์ธ
sudo ethtool -k swp1 | grep offload
# ํ๋์จ์ด ํ
์ด๋ธ ์ฌ์ฉ๋ฅ ํ์ธ
sudo cl-resource-query
# MAC ํ
์ด๋ธ, ๋ผ์ฐํ
ํ
์ด๋ธ, ACL ํ
์ด๋ธ ์ฌ์ฉ๋ฅ ํ์
# ํ๋์จ์ด ํต๊ณ
sudo ethtool -S swp1 | grep hw_
# ASIC ์จ๋ ํ์ธ
sudo smonctl -j
sensors
๐ฏ ๋ฒํผ ํ๋
๋คํธ์ํฌ ๋ฒํผ๋ฅผ ์ ์ ํ ์กฐ์ ํ๋ฉด ํจํท ์์ค์ ์ค์ด๊ณ ์ง์ฐ์๊ฐ์ ์ต์ ํํ ์ ์์ด. ๐
# ๋ฒํผ ์ค์ ํ์ธ
sudo cat /etc/cumulus/datapath/traffic.conf
# ๋ฒํผ ํ๋กํ์ผ ์์
sudo nano /etc/cumulus/datapath/traffic.conf
# ์์: ๋์ฉ๋ ๋ฒํผ ์ค์ (๊ณ ์ง์ฐ ํ๊ฒฝ)
# ingress_service_pool ์ค์
# egress_service_pool ์ค์
# ์ค์ ์ ์ฉ
sudo systemctl restart switchd
# QoS ์ค์ (์ฐ์ ์์ ํ)
sudo nano /etc/cumulus/datapath/qos/qos_features.conf
# DSCP ๊ธฐ๋ฐ QoS
# traffic_class 0-7 ์ค์
๐ ECMP ์ต์ ํ
ECMP(Equal-Cost Multi-Path)๋ฅผ ์ ํ์ฉํ๋ฉด ๋์ญํญ์ ์ต๋ํ ํ์ฉํ ์ ์์ด! ๐
# ECMP ํด์ ์๊ณ ๋ฆฌ์ฆ ์ค์
sudo nano /etc/cumulus/datapath/traffic.conf
# ํด์ ํ๋ ์ค์
# hash_config.enable = true
# hash_config.fields = src_ip,dst_ip,src_port,dst_port,protocol
# BGP ECMP ์ต๋ ๊ฒฝ๋ก ์ ์ค์
sudo vtysh
configure terminal
router bgp 65001
maximum-paths 64
maximum-paths ibgp 64
exit
# ECMP ์ํ ํ์ธ
ip route show | grep "nexthop"
net show route
# ํ๋ก์ฐ ๋ถ์ฐ ํ์ธ
sudo ethtool -S swp1 | grep tx_packets
sudo ethtool -S swp2 | grep tx_packets
# ์ฌ๋ฌ ์
๋งํฌ์ ํจํท ์๊ฐ ๋น์ทํ๋ฉด ์ ๋ถ์ฐ๋๋ ๊ฒ!
๐ ๋ชจ๋ํฐ๋ง ๋ฉํธ๋ฆญ
์ฑ๋ฅ์ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋งํด์ผ ๋ฌธ์ ๋ฅผ ์กฐ๊ธฐ์ ๋ฐ๊ฒฌํ ์ ์์ด. ์ค์ํ ๋ฉํธ๋ฆญ๋ค์ ์์๋ณด์! ๐
๋์ญํญ ์ฌ์ฉ๋ฅ
๊ฐ ์ธํฐํ์ด์ค์ ํธ๋ํฝ ์. 80% ์ด์์ด๋ฉด ์ ๊ทธ๋ ์ด๋ ๊ณ ๋ ค.
์ง์ฐ์๊ฐ
ํจํท ์ ์ก ์๊ฐ. 1ms ์ดํ๊ฐ ์ด์์ .
ํจํท ์์ค๋ฅ
๋๋กญ๋ ํจํท ๋น์จ. 0.01% ์ดํ ์ ์ง.
CPU/๋ฉ๋ชจ๋ฆฌ
์์คํ ๋ฆฌ์์ค. CPU 70%, ๋ฉ๋ชจ๋ฆฌ 80% ์ดํ ๊ถ์ฅ.
์จ๋
ASIC ์จ๋. 85ยฐC ์ดํ ์ ์ง.
๋งํฌ ํ๋ํ
์ธํฐํ์ด์ค Up/Down ํ์. ์ต์ํ ํ์.
๐ ์ค๋ฌด ๋ฒ ์คํธ ํ๋ํฐ์ค
๋ง์ง๋ง์ผ๋ก ์ค๋ฌด์์ Cumulus Linux๋ฅผ ์ด์ํ ๋ ๊ผญ ์ง์ผ์ผ ํ ๋ฒ ์คํธ ํ๋ํฐ์ค๋ฅผ ์ ๋ฆฌํด๋ณผ๊ฒ! ๐
์ด๊ฑด ์๋ง์ ์ํ์ฐฉ์ค๋ฅผ ๊ฑฐ์ณ ์ป์ ์์คํ ๋
ธํ์ฐ๋ค์ด์ผ.
๐ ์ค์ ๊ด๋ฆฌ
1. ํญ์ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํ์! ๐
๋ชจ๋ ์ค์ ํ์ผ์ Git์ผ๋ก ๊ด๋ฆฌํ๊ณ , ๋ณ๊ฒฝ ์๋ง๋ค ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ์์ธํ ์์ฑํด.
๋์ค์ ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๋ ์ธ์ ๋ฌด์์ด ๋ฐ๋์๋์ง ์ถ์ ํ ์ ์์ด์ผ ํด!
2. ์ค์ ํ ํ๋ฆฟ์ ๋ง๋ค์! ๐
ํ์ค ์ค์ ํ
ํ๋ฆฟ์ ๋ง๋ค์ด๋๋ฉด ์ ์ค์์น ์ถ๊ฐ๊ฐ ํจ์ฌ ๋นจ๋ผ์ ธ.
Ansible์ด๋ Jinja2 ํ
ํ๋ฆฟ์ ํ์ฉํ๋ฉด ๊ธ์์ฒจํ!
3. ๋ณ๊ฒฝ ์ ํญ์ ๋ฐฑ์ ! ๐พ
net commit ์ ์ net pending์ผ๋ก ๋ณ๊ฒฝ์ฌํญ์ ํ์ธํ๊ณ ,
์ค์ํ ๋ณ๊ฒฝ์ ๋ฐฑ์
์ ๋จผ์ ๋ฐ์๋์. net commit confirm์ ์ฌ์ฉํ๋ฉด ์๋ ๋กค๋ฐฑ๋ ๊ฐ๋ฅํด!
๐ ๋ณด์ ๊ฐํ
ํ์ ๋ณด์ ์ฒดํฌ๋ฆฌ์คํธ โ
โ ๊ธฐ๋ณธ ๋น๋ฐ๋ฒํธ ์ฆ์ ๋ณ๊ฒฝ
โ SSH ํค ๊ธฐ๋ฐ ์ธ์ฆ ์ฌ์ฉ
โ ๋ถํ์ํ ์๋น์ค ๋นํ์ฑํ
โ ๊ด๋ฆฌ ์ธํฐํ์ด์ค ๋ถ๋ฆฌ (Out-of-Band Management)
โ ACL๋ก ๊ด๋ฆฌ ์ ๊ทผ ์ ํ
โ SNMP v3 ์ฌ์ฉ (v1/v2c ๊ธ์ง)
โ ์ ๊ธฐ์ ์ธ ๋ณด์ ์
๋ฐ์ดํธ
โ ๋ก๊ทธ ์ค์ ์ง์คํ (Syslog ์๋ฒ)
๐ฏ ์ด์ ํ
์๋ก์ด ๊ธฐ๋ฅ์ด๋ ์ค์ ์ ์ ์ฒด์ ์ ์ฉํ๊ธฐ ์ ์ ํ ์คํธ ํ๊ฒฝ์ด๋ ์ผ๋ถ ์ฅ๋น์์ ๋จผ์ ๊ฒ์ฆํด๋ด.
ํ ๋ฒ์ ๋ชจ๋ ๊ฑธ ๋ฐ๊พธ๋ฉด ๋ฌธ์ ๋ฐ์ ์ ์์ธ ํ์ ์ด ์ด๋ ค์!
๋คํธ์ํฌ ํ ํด๋ก์ง, IP ์ฃผ์ ํ ๋น, VLAN ๋งคํ ๋ฑ์ ๋ฌธ์๋ก ๋จ๊ฒจ๋ฌ.
6๊ฐ์ ํ์ ๋น์ ์ด ๊ณ ๋ง์ํ ๊ฑฐ์ผ! ๐
์ค์ํ ์ด๋ฒคํธ(๋งํฌ ๋ค์ด, BGP ํผ์ด ๋ค์ด, ๋์ CPU ์ฌ์ฉ๋ฅ ๋ฑ)์ ๋ํ ์๋์ ์ค์ ํด.
๋ฌธ์ ๋ฅผ ์กฐ๊ธฐ์ ๋ฐ๊ฒฌํ๋ฉด ๋์์ด ํจ์ฌ ์ฌ์์ ธ!
์ฃผ๊ธฐ์ ์ผ๋ก ์์คํ ์ํ๋ฅผ ์ ๊ฒํ๊ณ , ๋ก๊ทธ๋ฅผ ๋ฆฌ๋ทฐํ๊ณ , ์ฑ๋ฅ ๋ฉํธ๋ฆญ์ ๋ถ์ํด.
์๋ฐฉ์ด ์น๋ฃ๋ณด๋ค ๋ซ๋ค๋ ๋ง, ๋คํธ์ํฌ์๋ ์ ์ฉ๋ผ!
๐ ์ ๊ทธ๋ ์ด๋ ์ ๋ต
Cumulus Linux ์ ๊ทธ๋ ์ด๋๋ ์ ์คํ๊ฒ ๊ณํํด์ผ ํด. ๋ค์ดํ์์ ์ต์ํํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์! ๐
# 1. ํ์ฌ ๋ฒ์ ํ์ธ
net show version
# 2. ๋ฐฑ์
์์ฑ
sudo cl-img-install -b
# 3. ์ ์ด๋ฏธ์ง ๋ค์ด๋ก๋ ๋ฐ ์ค์น
sudo onie-install -a -i http://server.example.com/cumulus-linux-4.4.0.bin
# 4. ์ฌ๋ถํ
์ ์ค์ ํ์ธ
net show configuration
# 5. ์ฌ๋ถํ
sudo reboot
# 6. ์
๊ทธ๋ ์ด๋ ํ ๊ฒ์ฆ
net show version
net show interface
net show bgp summary
# ๋กค๋ฐฑ์ด ํ์ํ ๊ฒฝ์ฐ
sudo cl-img-select -s 1 # ์ด์ ์ด๋ฏธ์ง๋ก ๋ถํ
sudo reboot
๐ฏ ๋ฌด์ค๋จ ์ ๊ทธ๋ ์ด๋ (ISSU)
Leaf-Spine ์ํคํ
์ฒ์์๋ ํ ๋ฒ์ ํ ์ค์์น์ฉ ์
๊ทธ๋ ์ด๋ํ๋ฉด ์๋น์ค ์ค๋จ ์์ด ์
๊ทธ๋ ์ด๋ํ ์ ์์ด!
1. Leaf ํ๋ ์
๊ทธ๋ ์ด๋ โ ๊ฒ์ฆ
2. ๋ค์ Leaf ์
๊ทธ๋ ์ด๋ โ ๊ฒ์ฆ
3. ๋ชจ๋ Leaf ์๋ฃ ํ Spine ์
๊ทธ๋ ์ด๋
ECMP์ ์ด์คํ ๋๋ถ์ ๊ฐ๋ฅํ ๋ง๋ฒ์ด์ง! โจ
๐ ํ์ต ๋ฆฌ์์ค์ ์ปค๋ฎค๋ํฐ
Cumulus Linux๋ฅผ ๋ ๊น์ด ๋ฐฐ์ฐ๊ณ ์ถ๋ค๋ฉด? ๋ค์ํ ํ์ต ์๋ฃ์ ์ปค๋ฎค๋ํฐ๊ฐ ์์ด! ๐
ํผ์ ๊ณต๋ถํ๋ ๊ฒ๋ ์ข์ง๋ง, ์ปค๋ฎค๋ํฐ์์ ๋ค๋ฅธ ์ฌ๋๋ค๊ณผ ๊ต๋ฅํ๋ฉด ํจ์ฌ ๋น ๋ฅด๊ฒ ์ฑ์ฅํ ์ ์์ด.
๐ ๊ณต์ ๋ฌธ์
NVIDIA Cumulus Linux Documentation
๊ฐ์ฅ ๊ถ์ ์๊ณ ์์ธํ ๋ฌธ์์ผ. ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ํ ์ค๋ช
๊ณผ ์์ ๊ฐ ์์ด.
์ ๊ธฐ์ ์ผ๋ก ์
๋ฐ์ดํธ๋๋๊น ๋ถ๋งํฌ ํ์! ๐
๐ฅ ์จ๋ผ์ธ ๊ต์ก
NVIDIA ๊ณต์ ๊ต์ก
๋ฌด๋ฃ ์จ๋ผ์ธ ์ฝ์ค์ ์จ๋น๋ ์ ๊ณต. ๊ธฐ์ด๋ถํฐ ๊ณ ๊ธ๊น์ง!
YouTube
๋ค์ํ ํํ ๋ฆฌ์ผ๊ณผ ์ค์ต ์์. ์๊ฐ์ ์ผ๋ก ๋ฐฐ์ฐ๊ธฐ ์ข์.
Slack/Discord
์ค์๊ฐ ์ง๋ฌธ๊ณผ ๋ต๋ณ. ์ ๋ฌธ๊ฐ๋ค๊ณผ ์ง์ ์ํต!
๋ธ๋ก๊ทธ
์ค๋ฌด ๊ฒฝํ๋ด๊ณผ ํธ๋ฌ๋ธ์ํ ์ฌ๋ก. ์ค์ ๋ ธํ์ฐ ๊ฐ๋!
๐ค ์ปค๋ฎค๋ํฐ ์ฐธ์ฌ
๋คํธ์ํน ์ปค๋ฎค๋ํฐ๋ ์ ๋ง ํ๋ฐํด! ์ง๋ฌธํ๊ณ , ๊ฒฝํ์ ๊ณต์ ํ๊ณ , ํจ๊ป ์ฑ์ฅํ์. ๐ฑ
๊ทธ๋ฆฌ๊ณ ์ฌ๋ฅ๋ท ๊ฐ์ ํ๋ซํผ์์ ๋ฉํ ๋ฅผ ์ฐพ๊ฑฐ๋, ๋ฐ๋๋ก ๋น์ ์ ์ง์์ ๋๋๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ด์ผ!
๐ ๏ธ ์ค์ต ํ๊ฒฝ ๊ตฌ์ถ
์ด๋ก ๋ง ๊ณต๋ถํ๋ฉด ๊ธ๋ฐฉ ๊น๋จน์ด. ์ง์ ์์ผ๋ก ๋ง์ ธ๋ด์ผ ์ง์ง ์ค๋ ฅ์ด ๋์ด! ๐ช
# Cumulus VX (๊ฐ์ ๋จธ์ )๋ก ์ค์ต ํ๊ฒฝ ๊ตฌ์ถ
# 1. VirtualBox๋ VMware ์ค์น
# 2. Cumulus VX ์ด๋ฏธ์ง ๋ค์ด๋ก๋
# 3. ๊ฐ์ ๋จธ์ ์์ฑ ๋ฐ ๋คํธ์ํฌ ์ค์
# Vagrant๋ก ์๋ํ๋ ๋ฉ ํ๊ฒฝ ๊ตฌ์ถ
vagrant init CumulusCommunity/cumulus-vx
vagrant up
# GNS3๋ EVE-NG๋ก ๋ณต์กํ ํ ํด๋ก์ง ๊ตฌ์ฑ
# Leaf-Spine ์ํคํ
์ฒ ์ ์ฒด๋ฅผ ๊ฐ์์ผ๋ก ๋ง๋ค ์ ์์ด!
# ํด๋ผ์ฐ๋ ๋ฉ ํ๊ฒฝ
# AWS, GCP, Azure์์ ์ธ์คํด์ค ์์ฑ
# ์ค์ ํ๋ก๋์
๊ณผ ์ ์ฌํ ํ๊ฒฝ ํ
์คํธ ๊ฐ๋ฅ
๐ฌ ๋ง๋ฌด๋ฆฌํ๋ฉฐ
์! ์ฌ๊ธฐ๊น์ง ์ฝ์๋ค๋ฉด ์ ๋ง ๋๋จํด! ๐
Cumulus Linux์ ๋ํด ๊ฝค ๋ง์ ๊ฑธ ๋ฐฐ์ ์ ๊ฑฐ์ผ. ๊ฐ๋ฐฉํ ๋คํธ์ํน์ ์ธ๊ณ๋ ์ ๋ง ๋๊ณ ํฅ๋ฏธ๋ก์.
์ ํต์ ์ธ ๋คํธ์ํฌ ์ฅ๋น์ ํ์์ฑ๊ณผ ๋์ ๋น์ฉ์์ ๋ฒ์ด๋, ์คํ์์ค์ ์์ ๋ก์๊ณผ ์ ์ฐ์ฑ์ ๋๋ฆด ์ ์๋ค๋ ๊ฑด ์ ๋ง ํ๋ช
์ ์ด์ผ! ๐
Cumulus Linux๋ ๋จ์ํ ๋คํธ์ํฌ OS๊ฐ ์๋๋ผ, ๋คํธ์ํฌ๋ฅผ ์ฝ๋์ฒ๋ผ ๋ค๋ฃจ๋ ์๋ก์ด ํจ๋ฌ๋ค์์ด์ผ.
Infrastructure as Code, ์๋ํ, DevOps... ์ด ๋ชจ๋ ๊ฒ ๋คํธ์ํฌ์์๋ ๊ฐ๋ฅํด์ง ๊ฑฐ์ง! ๐ฏ
๋ฌผ๋ก ์ฒ์์๋ ์ด๋ ค์ธ ์ ์์ด. ๊ธฐ์กด ๋คํธ์ํฌ ์ฅ๋น์๋ ๋ค๋ฅธ ์ ๊ทผ ๋ฐฉ์์ด๋๊น.
ํ์ง๋ง ๋ฆฌ๋
์ค์ ์ต์ํ๋ค๋ฉด, ๊ทธ๋ฆฌ๊ณ ์๋ํ์ ๊ด์ฌ์ด ์๋ค๋ฉด, Cumulus Linux๋ ์ ๋ง ๊ฐ๋ ฅํ ๋๊ตฌ๊ฐ ๋ ๊ฑฐ์ผ! ๐ช
์ค๋ฌด์ ๋ฐ๋ก ์ ์ฉํ๊ธฐ ์ ์ ์ถฉ๋ถํ ํ
์คํธํ๊ณ , ์ปค๋ฎค๋ํฐ์ ๋์์ ๋ฐ๊ณ , ์์ ๊ฒ๋ถํฐ ์์ํด๋ด.
๊ทธ๋ฆฌ๊ณ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ๋นํฉํ์ง ๋ง๊ณ ์ฐจ๊ทผ์ฐจ๊ทผ ๋ก๊ทธ๋ฅผ ํ์ธํ๊ณ ๋๋ฒ๊น
ํด๋ณด์. ๋ฆฌ๋
์ค ๊ธฐ๋ฐ์ด๋ผ ํธ๋ฌ๋ธ์ํ
์ด ํจ์ฌ ์ฌ์ธ ๊ฑฐ์ผ! ๐
๋คํธ์ํฌ ์์ง๋์ด๋ก์ ์๋ก์ด ๊ธฐ์ ์ ๋ฐฐ์ฐ๋ ๊ฑด ์ ๋ง ์ค์ํด.
ํด๋ผ์ฐ๋, ์ปจํ
์ด๋, ๋ง์ดํฌ๋ก์๋น์ค... ์ธ์์ด ๋น ๋ฅด๊ฒ ๋ณํ๊ณ ์๊ณ , ๋คํธ์ํฌ๋ ํจ๊ป ์งํํ๊ณ ์๊ฑฐ๋ .
Cumulus Linux๋ ๊ทธ ๋ณํ์ ์ต์ ์ ์ ์๋ ๊ธฐ์ ์ด์ผ! ๐
ํน์ ๋ ๊น์ด ๋ฐฐ์ฐ๊ณ ์ถ๊ฑฐ๋, ์ค๋ฌด ์ ์ฉ์ ๋์์ด ํ์ํ๋ค๋ฉด ์ฌ๋ฅ๋ท์์ ์ ๋ฌธ๊ฐ์ ์กฐ์ธ์ ๊ตฌํ๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ด์ผ.
์ฑ
์ด๋ ๋ฌธ์๋ก๋ ๋ฐฐ์ธ ์ ์๋ ์ค์ ๋
ธํ์ฐ๋ฅผ ์ป์ ์ ์์ ๊ฑฐ์ผ! ๐
์, ์ด์ ๋น์ ์ฐจ๋ก์ผ! ๐
Cumulus Linux๋ก ๋ฉ์ง ๋คํธ์ํฌ๋ฅผ ๊ตฌ์ถํด๋ณด์. ๊ฐ๋ฐฉํ ๋คํธ์ํน์ ์ธ๊ณ๋ก ๋ ๋๋ ์ฌ์ , ์ ๋ง ์ ๋์ง ์์?
ํ์ดํ
! ๐ชโจ
๐ ๊ฐ๋ฐฉํ ๋คํธ์ํน์ ๋ฏธ๋๋ฅผ ํจ๊ป ๋ง๋ค์ด๊ฐ์!
Cumulus Linux๋ก ์์ํ๋ ๋คํธ์ํฌ ํ์ ๐
์์ ๋ก์ด ์ ํ, ๋ฌดํํ ๊ฐ๋ฅ์ฑ, ๊ทธ๋ฆฌ๊ณ ํจ๊ปํ๋ ์ปค๋ฎค๋ํฐ ๐
Happy Networking! ๐ฏ
๊ด๋ จ ํค์๋
๋๊ธ ์์ฑ
์ด ๊ธ์ ๋ํ ์ฌ๋ฌ๋ถ์ ์๊ฐ์ ๋ค๋ ค์ฃผ์ธ์
๋ก๊ทธ์ธ์ด ํ์ํฉ๋๋ค
๋๊ธ์ ์์ฑํ๋ ค๋ฉด ๋จผ์ ๋ก๊ทธ์ธํด์ฃผ์ธ์.
๋๊ธ 0
์ง์์ธ์ ์ฒ - ์ง์ ์ฌ์ฐ๊ถ ๋ณดํธ ๊ณ ์ง
์ง์ ์ฌ์ฐ๊ถ ๋ณดํธ ๊ณ ์ง
- ์ ์๊ถ ๋ฐ ์์ ๊ถ: ๋ณธ ์ปจํ ์ธ ๋ ์ฌ๋ฅ๋ท์ ๋ ์ AI ๊ธฐ์ ๋ก ์์ฑ๋์์ผ๋ฉฐ, ๋ํ๋ฏผ๊ตญ ์ ์๊ถ๋ฒ ๋ฐ ๊ตญ์ ์ ์๊ถ ํ์ฝ์ ์ํด ๋ณดํธ๋ฉ๋๋ค.
- AI ์์ฑ ์ปจํ ์ธ ์ ๋ฒ์ ์ง์: ๋ณธ AI ์์ฑ ์ปจํ ์ธ ๋ ์ฌ๋ฅ๋ท์ ์ง์ ์ฐฝ์๋ฌผ๋ก ์ธ์ ๋๋ฉฐ, ๊ด๋ จ ๋ฒ๊ท์ ๋ฐ๋ผ ์ ์๊ถ ๋ณดํธ๋ฅผ ๋ฐ์ต๋๋ค.
- ์ฌ์ฉ ์ ํ: ์ฌ๋ฅ๋ท์ ๋ช ์์ ์๋ฉด ๋์ ์์ด ๋ณธ ์ปจํ ์ธ ๋ฅผ ๋ณต์ , ์์ , ๋ฐฐํฌ, ๋๋ ์์ ์ ์ผ๋ก ํ์ฉํ๋ ํ์๋ ์๊ฒฉํ ๊ธ์ง๋ฉ๋๋ค.
- ๋ฐ์ดํฐ ์์ง ๊ธ์ง: ๋ณธ ์ปจํ ์ธ ์ ๋ํ ๋ฌด๋จ ์คํฌ๋ํ, ํฌ๋กค๋ง, ๋ฐ ์๋ํ๋ ๋ฐ์ดํฐ ์์ง์ ๋ฒ์ ์ ์ฌ์ ๋์์ด ๋ฉ๋๋ค.
- AI ํ์ต ์ ํ: ์ฌ๋ฅ๋ท์ AI ์์ฑ ์ปจํ ์ธ ๋ฅผ ํ AI ๋ชจ๋ธ ํ์ต์ ๋ฌด๋จ ์ฌ์ฉํ๋ ํ์๋ ๊ธ์ง๋๋ฉฐ, ์ด๋ ์ง์ ์ฌ์ฐ๊ถ ์นจํด๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
์์ง ๋๊ธ์ด ์์ต๋๋ค.