์Šค์œ„์น˜์šฉ ๋„คํŠธ์›Œํฌ ์šด์˜์ฒด์ œ DentOS 2.0 ์ถœ์‹œ

Linux ์ปค๋„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ ์Šค์œ„์น˜, ๋ผ์šฐํ„ฐ ๋ฐ ํŠน์ˆ˜ ๋„คํŠธ์›Œํฌ ์žฅ๋น„๋ฅผ ์žฅ์ฐฉํ•˜๊ธฐ ์œ„ํ•œ DentOS 2.0 ๋„คํŠธ์›Œํฌ ์šด์˜ ์ฒด์ œ๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์€ Amazon, Delta Electronics, Marvell, NVIDIA, Edgecore Networks ๋ฐ Wistron NeWeb(WNC)์˜ ์ฐธ์—ฌ๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๋Š” ์›๋ž˜ Amazon์ด ์ธํ”„๋ผ์— ๋„คํŠธ์›Œํฌ ์žฅ๋น„๋ฅผ ์žฅ์ฐฉํ•˜๊ธฐ ์œ„ํ•ด ์„ค๋ฆฝํ–ˆ์Šต๋‹ˆ๋‹ค. DentOS ์ฝ”๋“œ๋Š” C๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ ๋ฌด๋ฃŒ Eclipse Public License์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

ํŒจํ‚ท ์ „ํ™˜์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด DentOS๋Š” Linux SwitchDev ์ปค๋„ ํ•˜์œ„ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ”„๋ ˆ์ž„ ์ „๋‹ฌ ๋ฐ ๋„คํŠธ์›Œํฌ ํŒจํ‚ท ์ฒ˜๋ฆฌ๋ฅผ ํŠน์ˆ˜ ํ•˜๋“œ์›จ์–ด ์นฉ์— ์œ„์ž„ํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋”๋„ท ์Šค์œ„์น˜์šฉ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์†Œํ”„ํŠธ์›จ์–ด๋Š” ํ‘œ์ค€ Linux ๋„คํŠธ์›Œํฌ ์Šคํƒ, IPRoute2, tc(Traffic Control), brctl(Bridge Control) ๋ฐ FRRouting๊ณผ ๊ฐ™์€ NetLink ํ•˜์œ„ ์‹œ์Šคํ…œ ๋ฐ ๋„๊ตฌ๋Š” ๋ฌผ๋ก  VRRP(Virtual Router Redundancy Protocol), LLDP(Link Layer)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. Discovery Protocol) ํ”„๋กœํ† ์ฝœ๊ณผ MSTP(Multiple Spanning Tree Protocol)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์Šค์œ„์น˜์šฉ ๋„คํŠธ์›Œํฌ ์šด์˜์ฒด์ œ DentOS 2.0 ์ถœ์‹œ

์‹œ์Šคํ…œ ํ™˜๊ฒฝ์€ ONL(Open Network Linux) ๋ฐฐํฌํŒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ Debian GNU/Linux ํŒจํ‚ค์ง€ ๊ธฐ๋ฐ˜์„ ์‚ฌ์šฉํ•˜๊ณ  ์Šค์œ„์น˜์—์„œ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ, ์„ค์ • ๋ฐ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ONL์€ Open Compute ํ”„๋กœ์ ํŠธ์— ์˜ํ•ด ๊ฐœ๋ฐœ๋˜์—ˆ์œผ๋ฉฐ 2๊ฐœ ์ด์ƒ์˜ ๋‹ค์–‘ํ•œ ์Šค์œ„์น˜ ๋ชจ๋ธ์— ๋Œ€ํ•œ ์„ค์น˜๋ฅผ ์ง€์›ํ•˜๋Š” ํŠน์ˆ˜ ๋„คํŠธ์›Œํฌ ์žฅ์น˜๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ์ด ๊ตฌ์„ฑ์—๋Š” ์Šค์œ„์น˜์— ์‚ฌ์šฉ๋˜๋Š” ํ‘œ์‹œ๊ธฐ, ์˜จ๋„ ์„ผ์„œ, ์ฟจ๋Ÿฌ, I2C ๋ฒ„์Šค, GPIO ๋ฐ SFP ํŠธ๋žœ์‹œ๋ฒ„์™€์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ์œ„ํ•œ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด IpRoute2 ๋ฐ ifupdown6020 ๋„๊ตฌ์™€ gNMI(gRPC ๋„คํŠธ์›Œํฌ ๊ด€๋ฆฌ ์ธํ„ฐํŽ˜์ด์Šค)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. YANG(Yet Another Next Generation, RFC-XNUMX) ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์€ ๊ตฌ์„ฑ์„ ์ •์˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ด ์‹œ์Šคํ…œ์€ ์ตœ๋Œ€ 48๊ฐœ์˜ 10๊ธฐ๊ฐ€๋น„ํŠธ ํฌํŠธ๋ฅผ ๊ฐ–์ถ˜ Marvell ๋ฐ Mellanox ASIC ๊ธฐ๋ฐ˜ ์Šค์œ„์น˜์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋“œ์›จ์–ด ํŒจํ‚ท ์ „๋‹ฌ ํ…Œ์ด๋ธ” ๊ตฌํ˜„์„ ํ†ตํ•ด Mellanox Spectrum, Marvell Aldrin 2 ๋ฐ Marvell AC3X ASIC ์นฉ์„ ํฌํ•จํ•œ ๋‹ค์–‘ํ•œ ASIC ๋ฐ ๋„คํŠธ์›Œํฌ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์นฉ์— ๋Œ€ํ•œ ์ž‘์—…์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰์‹œ ์„ค์น˜ ๊ฐ€๋Šฅํ•œ DentOS ์ด๋ฏธ์ง€๋Š” ARM64(257MB) ๋ฐ AMD64(523MB) ์•„ํ‚คํ…์ฒ˜์šฉ์œผ๋กœ ์ค€๋น„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒˆ ๋ฆด๋ฆฌ์Šค์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐœ์„  ์‚ฌํ•ญ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • ์Šค์œ„์น˜์˜ ์ผ๋ฐ˜(๊ณ„์ธต 44, ๋„คํŠธ์›Œํฌ ๊ณ„์ธต) ๋ฐ VLAN ํฌํŠธ(๋„คํŠธ์›Œํฌ ๋ธŒ๋ฆฌ์ง€) ์ˆ˜์ค€์—์„œ ๋‚ด๋ถ€ ๋ฒ”์œ„์—์„œ ๊ณต์šฉ ์ฃผ์†Œ๋กœ์˜ ์ฃผ์†Œ ๋ณ€ํ™˜(NAT)์„ ์œ„ํ•ด NAT-3 ๋ฐ NA(P)T๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • 802.1Q ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค(VLAN)๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ์ด๋ฅผ ํ†ตํ•ด ํŠธ๋ž˜ํ”ฝ์„ ๋ผ์šฐํŒ…ํ•˜๊ธฐ ์œ„ํ•œ ์˜ต์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. IpRoute2 ๋ฐ Ifupdown2 ํŒจํ‚ค์ง€๊ฐ€ ๊ตฌ์„ฑ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ์ด๋”๋„ท์„ ํ†ตํ•œ ์ „์› ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด PoE(Power over Ethernet) ์ปจํŠธ๋กค๋Ÿฌ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฐฉํ™”๋ฒฝ ๊ตฌ์„ฑ์˜ ์„ฑ๋Šฅ๊ณผ ํ™•์žฅ์„ฑ์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•œ ๋ณ€๊ฒฝ์ด ์ด๋ฃจ์–ด์กŒ์Šต๋‹ˆ๋‹ค.
  • ACL ๊ธฐ๋ฐ˜ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ๊ฐ€ ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋กœ์ปฌ(์ธํŠธ๋ผ๋„ท) IP ์ฃผ์†Œ๋ฅผ ์ธ์‹ํ•˜๋Š” ํ”Œ๋ž˜๊ทธ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ์ง€์ • ์ฒ˜๋ฆฌ๊ธฐ๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ํฌํŠธ ๊ฒฉ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ •๋ณด ํš๋“ ๋ฐ ์žฅ์น˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ณ€๊ฒฝ์„ ์œ„ํ•œ API์ธ "devlink"๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋กœ์ปฌ ํŠธ๋žฉ ๋ฐ ์‚ญ์ œ๋œ ํŒจํ‚ท ์นด์šดํ„ฐ์— ๋Œ€ํ•œ ์ง€์›์ด ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€