[์ปดํจํฐ๋คํธ์ํฌ2] ํํฅ์ ์ ๊ทผ๋ฒ 5์ฅ (5) - SDN
๐ SDN(Software-Defined Networking)์ด๋?
SDN(Software-Defined Networking)์ ๋คํธ์ํฌ์ ์ปจํธ๋กค ํ๋ ์ธ์ ์ค์์์ ์ ์ดํ๋ ๋คํธ์ํฌ ์ํคํ ์ฒ
๊ธฐ์กด ๋คํธ์ํฌ์์๋ ๊ฐ ๋ผ์ฐํฐ๊ฐ ์์ฒด์ ์ผ๋ก ๊ฒฝ๋ก๋ฅผ ๊ณ์ฐํ์ง๋ง, SDN์์๋ ์ค์ ์ปจํธ๋กค๋ฌ๊ฐ ์ ์ฒด ๋คํธ์ํฌ๋ฅผ ๊ด๋ฆฌํ๊ณ ๋ผ์ฐํ ์ ๊ฒฐ์
- ๋ฐ์ดํฐ ํ๋ฉด๊ณผ ์ ์ด ํ๋ฉด์ ๋ช ํํ ๋ถ๋ฆฌ
- ์ ์ด ํ๋ฉด ๊ธฐ๋ฅ์ ์์ ์ด ๊ด๋ฆฌํ๋ ๋ผ์ฐํฐ์ ์ ๋ฌ ๊ธฐ๋ฅ ์์์ ๋ถ๋ฆฌ๋ ๋ณ๋์ ์๊ฒฉ ‘์ปจํธ๋กค๋ฌ’ ์๋น์ค์ ๊ตฌํ
1๏ธโฃ ๊ธฐ์กด ๋คํธ์ํฌ (Per-Router Control Plane) vs. SDN
๐น ๊ธฐ์กด ๋คํธ์ํฌ (Per-Router Control Plane)
- ๊ฐ ๋ผ์ฐํฐ๊ฐ ๊ฐ๋ณ์ ์ผ๋ก ๋ผ์ฐํ ํ ์ด๋ธ์ ๊ณ์ฐ
- ๋ผ์ฐํฐ ๊ฐ ๋ถ์ฐ๋ ํ๋กํ ์ฝ(OSPF, BGP ๋ฑ)์ ์ฌ์ฉํด ๊ฒฝ๋ก ๊ฒฐ์
- ๋ผ์ฐํฐ๋ง๋ค ์ค์ ์ด ํ์ํ๋ฏ๋ก ๊ตฌ์ฑ์ด ๋ณต์กํ๊ณ ์ค๋ฅ ๋ฐ์ ๊ฐ๋ฅ์ฑ ์ฆ๊ฐ
- ๋ชจ๋๋ฆฌ์ ๋ผ์ฐํฐ์๋ ์ค์์นญ ํ๋์จ์ด๊ฐ ํฌํจ๋์ด ์์ผ๋ฉฐ, ๋ ์ ๋ผ์ฐํฐ OS(์: Cisco IOS)์์ ์ธํฐ๋ท ํ์ค ํ๋กํ ์ฝ(IP, RIP, IS-IS, OSPF, BGP)์ ๋ ์ ๊ตฌํ์ ์คํ
- ์๋ก ๋ค๋ฅธ ๋คํธ์ํฌ ๊ณ์ธต ๊ธฐ๋ฅ์ ๋ํ ๋ค๋ฅธ "๋ฏธ๋ค๋ฐ์ค": ๋ฐฉํ๋ฒฝ, ๋ก๋ ๋ฐธ๋ฐ์, NAT ๋ฐ์ค ๋ฑ.
๐ ๋ฏธ๋ค๋ฐ์ค(Middlebox)๋?
๋ฏธ๋ค๋ฐ์ค(Middlebox)๋ ๋ผ์ฐํฐ๋ ์ค์์น๊ฐ ์๋, ํน์ ๋คํธ์ํฌ ๊ธฐ๋ฅ์ ์ํํ๋ ์ฅ๋น๋ฅผ ์๋ฏธํด.
์๋ฅผ ๋ค์ด, ๋ฐฉํ๋ฒฝ(Firewall), NAT(Network Address Translation), ๋ก๋ ๋ฐธ๋ฐ์(Load Balancer) ๊ฐ์ ์ฅ๋น๋ค์ด ์์ด!
1๏ธโฃ ๋ฏธ๋ค๋ฐ์ค๋ ์ ํ์ํ ๊น?
๊ธฐ๋ณธ์ ์ผ๋ก ๋คํธ์ํฌ๋ ํจํท์ ๋ชฉ์ ์ง๋ก ์ ๋ฌํ๋ ๊ฒ์ด ํต์ฌ ์ญํ ์ด์ผ.
ํ์ง๋ง, ํ์ค์์๋ ์ถ๊ฐ์ ์ธ ๋คํธ์ํฌ ๊ธฐ๋ฅ์ด ํ์ํด!
โ ๋ณด์(Security) → ๋ฐฉํ๋ฒฝ(Firewall)
- ์ ์ฑ ํธ๋ํฝ์ ์ฐจ๋จํ๊ณ , ํ์ฉ๋ ํธ๋ํฝ๋ง ์ ๋ฌ
โ ํธ๋ํฝ ๊ด๋ฆฌ(Traffic Management) → ๋ก๋ ๋ฐธ๋ฐ์(Load Balancer)
- ์ฌ๋ฌ ์๋ฒ์ ํธ๋ํฝ์ ๋ถ์ฐํด์ ๋ถํ๋ฅผ ์ค์
โ IP ์ฃผ์ ๋ณํ → NAT(Network Address Translation)
- ์ฌ์ค IP๋ฅผ ๊ณต์ธ IP๋ก ๋ณํํด ์ธํฐ๋ท๊ณผ ํต์ ๊ฐ๋ฅํ๋๋ก ํจ
โ ๋ฐ์ดํฐ ์์ถ, ์ฝํ ์ธ ์บ์ฑ ๋ฑ
โก๏ธ ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ํํ๋ ๋ณ๋์ ์ฅ๋น๋ ์ํํธ์จ์ด๋ฅผ "๋ฏธ๋ค๋ฐ์ค"๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฑฐ์ผ!
2๏ธโฃ ๋ฏธ๋ค๋ฐ์ค์ ๊ธฐ์กด ๋คํธ์ํฌ ์ฅ๋น(๋ผ์ฐํฐ, ์ค์์น)์ ์ฐจ์ด
๐น ๊ธฐ๋ฅ ๐น ๋ผ์ฐํฐ/์ค์์น ๐น ๋ฏธ๋ค๋ฐ์ค์ฃผ์ ์ญํ | ํจํท์ ๋น ๋ฅด๊ฒ ์ ๋ฌ | ํน์ ๋คํธ์ํฌ ๊ธฐ๋ฅ ์ํ |
์์น | ๋คํธ์ํฌ ๊ฒฝ๋ก(๋ฐ์ดํฐ ํ๋ ์ธ) | ๋คํธ์ํฌ ์ค๊ฐ์์ ํน์ ์ญํ |
์์ | L2/L3 ์ค์์น, ๋ผ์ฐํฐ | ๋ฐฉํ๋ฒฝ, NAT, ๋ก๋ ๋ฐธ๋ฐ์ |
๐ ์ฆ, ๋ฏธ๋ค๋ฐ์ค๋ ํจํท์ ๋จ์ํ ์ ๋ฌํ๋ ๊ฒ์ด ์๋๋ผ, "ํน์ ๊ธฐ๋ฅ์ ์ถ๊ฐ"ํ๋ ์ฅ๋น์ผ!
3๏ธโฃ SDN๊ณผ ๋ฏธ๋ค๋ฐ์ค์ ๊ด๊ณ
๊ธฐ์กด ๋คํธ์ํฌ์์๋ ๋ฏธ๋ค๋ฐ์ค๋ฅผ ๋ฌผ๋ฆฌ์ ์ธ ์ฅ๋น๋ก ์ถ๊ฐํด์ผ ํ์ง๋ง,
SDN์์๋ ์ํํธ์จ์ด์ ์ผ๋ก ๋คํธ์ํฌ ๊ธฐ๋ฅ์ ์ ์ํ ์ ์์ด!
๐ SDN์ ์ฅ์
โ
๋ฐฉํ๋ฒฝ, NAT, ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ํ๋์จ์ด ๋์ ์ํํธ์จ์ด๋ก ๊ตฌํ ๊ฐ๋ฅ
โ
์ค์์์ ๋ชจ๋ ๋คํธ์ํฌ ๊ธฐ๋ฅ์ ์ํํธ์จ์ด๋ก ๊ด๋ฆฌ ๊ฐ๋ฅ
๐ก ์ฆ, SDN์ ์ฌ์ฉํ๋ฉด ๋ฏธ๋ค๋ฐ์ค๋ฅผ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ค์นํ์ง ์๊ณ , ๋คํธ์ํฌ ๊ธฐ๋ฅ์ "ํ๋ก๊ทธ๋๋ฐ"ํ ์ ์๊ฒ ๋ผ!
๐น SDN (Software-Defined Networking)
- ์ปจํธ๋กค ํ๋ ์ธ์ ์ค์ ์ง์ค์์ผ๋ก ๊ด๋ฆฌ (SDN ์ปจํธ๋กค๋ฌ)
- ๋ผ์ฐํฐ๋ ๋จ์ํ ํฌ์๋ฉ ์ญํ ์ ํ๊ณ , ๊ฒฝ๋ก ๊ฒฐ์ ์ SDN ์ปจํธ๋กค๋ฌ๊ฐ ๋ด๋น
- ๋คํธ์ํฌ ์ค์ ์ด ๊ฐ๋จํ๊ณ ์ ์ฐ์ฑ์ด ๋์
2๏ธโฃ SDN์ ํต์ฌ ๊ฐ๋ : ์ค์์ง์คํ ์ปจํธ๋กค ํ๋ ์ธ (Logically Centralized Control Plane)
๊ธฐ์กด ๋ฐฉ์๊ณผ ๋ค๋ฅด๊ฒ, SDN์์๋ ์ปจํธ๋กค ํ๋ ์ธ์ด ์ค์์์ ๋์ํด.
โ 1. ๋คํธ์ํฌ ๊ด๋ฆฌ๊ฐ ์ฌ์์ง (Easier Network Management)
- ๋ผ์ฐํฐ๋ง๋ค ์ค์ ํ ํ์ ์์ด ์ค์์์ ํ ๋ฒ์ ๊ด๋ฆฌ
- ์๋ชป๋ ์ค์ (๋ฏธ์ค์ปจํผ๊ท๋ ์ด์ )์ ๋ฐฉ์งํ ์ ์์
โ 2. ํธ๋ํฝ ํ๋ฆ์ ๋ ์ ์ฐํ๊ฒ ์ ์ด ๊ฐ๋ฅ (Greater Flexibility of Traffic Flows)
- ํน์ ํธ๋ํฝ์ ์ฐ์ ์ฒ๋ฆฌํ๊ฑฐ๋, ํน์ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๋๋ก ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ฅ
- ํ์์ ๋ฐ๋ผ ๋์ ์ผ๋ก ๋ผ์ฐํ ์ ๋ณ๊ฒฝํ ์ ์์
โ 3. ํ ์ด๋ธ ๊ธฐ๋ฐ ํฌ์๋ฉ์ผ๋ก ๋ผ์ฐํฐ "ํ๋ก๊ทธ๋๋ฐ" ๊ฐ๋ฅ (Table-Based Forwarding & OpenFlow API)
- ๋ผ์ฐํฐ๊ฐ ๋ผ์ฐํ ํ๋กํ ์ฝ์ ์คํํ๋ ๋์ , ์ค์์์ ๊ณ์ฐ๋ ํ ์ด๋ธ์ ์ฌ์ฉ
- OpenFlow ๊ฐ์ API๋ฅผ ์ฌ์ฉํ๋ฉด ์ํํธ์จ์ด์ ์ผ๋ก ๊ฒฝ๋ก๋ฅผ ์ค์ ๊ฐ๋ฅ
โ 4. ์ค์ ์ง์คํ์ด ๋ถ์ฐ ๋ฐฉ์๋ณด๋ค ๊ฐ๋จํจ
- ์ค์์์ ํ ์ด๋ธ์ ๊ณ์ฐํด์ ๋ฐฐํฌํ๋ ๊ฒ์ด ํจ์ฌ ๊ฐ๋จ
- ๊ธฐ์กด ๋ฐฉ์(Per-Router Control Plane)์ฒ๋ผ ๊ฐ ๋ผ์ฐํฐ๊ฐ ๋ถ์ฐ ์๊ณ ๋ฆฌ์ฆ์ ์คํํ ํ์ ์์
3๏ธโฃ SDN์ ๊ฐ๋ฐฉ์ฑ (Open Implementation)๊ณผ ํ์ (Innovation)
SDN์ ๊ธฐ์กด ๋คํธ์ํฌ ์ฅ๋น ์ ์กฐ์ ์ฒด(Cisco, Juniper ๋ฑ)์ ๋ ์ ๊ธฐ์ ์์ ๋ฒ์ด๋, ๊ฐ๋ฐฉ์ ์ธ ๋คํธ์ํฌ ๊ด๋ฆฌ ๋ฐฉ์์ ์ ๊ณตํด.
๐ SDN์ ๊ฐ๋ฐฉ์ฑ์ด ๊ฐ์ ธ์ค๋ ๋ณํ
- ๋ฒค๋ ์ข ์์ฑ ๊ฐ์ → ๋คํธ์ํฌ ์ฅ๋น ์ ์กฐ์ ์ฒด์ ์์กดํ์ง ์๊ณ ๋ค์ํ ๊ธฐ์ ์ ์ฌ์ฉํ ์ ์์
- ์๋ก์ด ๋คํธ์ํฌ ๊ธฐ์ ์คํ ๊ฐ๋ฅ → ๋ค์ํ ์ฐ๊ตฌ์ ํ์ ์ด ํ๋ฐํ๊ฒ ์งํ๋จ
- ๋น์ : ๋ฉ์ธํ๋ ์์์ PC ํ๋ช
์ผ๋ก!
- ๊ณผ๊ฑฐ์๋ ์ค์์์ ๋ชจ๋ ์ปดํจํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฉ์ธํ๋ ์ ๋ฐฉ์์ด์์ง๋ง,
- PC๊ฐ ๋ฑ์ฅํ๋ฉด์ ๊ฐ๋ฐฉํ ๊ธฐ์ ์ด ๋ฐ์ ํ๋ฏ์ด,
- SDN๋ ๊ธฐ์กด ๋คํธ์ํฌ ์ฅ๋น ์ค์ฌ์์ ๊ฐ๋ฐฉํ์ผ๋ก ๋ณํํ๊ณ ์์
๐ SDN์ ํ ๋ฌธ์ฅ์ผ๋ก ์ ๋ฆฌํ๋ฉด?
๐ "๋คํธ์ํฌ์ ๋๋(์ปจํธ๋กค ํ๋ ์ธ)๋ฅผ ์ค์์์ ์ ์ดํ๊ณ , ๋ผ์ฐํฐ๋ ๋จ์ํ ์คํ ์ญํ ์ ํ๊ฒ ๋ง๋๋ ๊ธฐ์ "
๐ ์ด๋ ๊ฒ ํ๋ฉด ๋คํธ์ํฌ ๊ด๋ฆฌ๊ฐ ์ฌ์์ง๊ณ , ์ ์ฐํ ํธ๋ํฝ ์ ์ด๊ฐ ๊ฐ๋ฅํด์ง
Traffic engineering: ๊ธฐ์กด ๋ผ์ฐํ ์ผ๋ก๋ ๋ถ๊ฐ๋ฅํ๋ ๊ฒ๋ค
Q: what if network operator wants u-to-z traffic to flow along uvwz, rather than uxyz? ๋ง์ฝ ๋คํธ์ํฌ ์ด์์๊ฐ u์์ z๋ก ๊ฐ๋ ํธ๋ํฝ์ uvwz ๊ฒฝ๋ก๋ก ๋ณด๋ด๊ณ ์ถ๋ค๋ฉด?
A: need to re-define link weights so traffic routing algorithm computes routes accordingly (or need a new routing algorithm)!
link weights are only control “knobs”: not much control!
-> ๊ธฐ์กด์ ๋ผ์ฐํ ์๊ณ ๋ฆฌ์ฆ์ "์ต๋จ ๊ฒฝ๋ก"๋ฅผ ๊ณ์ฐํ๊ธฐ ๋๋ฌธ์, ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฒฝ๋ก๋ฅผ ์ง์ ์ง์ ํ๊ธฐ ์ด๋ ต๋ค๋ ๋ฌธ์
-> ์ ํต์ ์ธ ๋ผ์ฐํ
๋ฐฉ์์์๋ "๋งํฌ ๊ฐ์ค์น(Link Weight)"๊ฐ ๊ฒฝ๋ก๋ฅผ ์กฐ์ ํ ์ ์๋ ๊ฑฐ์ ์ ์ผํ ๋ฐฉ๋ฒ(knob)์ด์ผ.
์ฆ, ๋คํธ์ํฌ ์ด์์๊ฐ ํ ์ ์๋ ์ผ์ ๋งํฌ ๊ฐ์ค์น๋ฅผ ์กฐ์ ํด์ ๊ฒฝ๋ก๋ฅผ ์ฐํํ๋๋ก ์ ๋ํ๋ ๊ฒ๋ฟ
์ knobs(์กฐ์ ํ ์ ์๋ ์์)๊ฐ ๋ถ์กฑํ ๊น?
- ์ ํต์ ์ธ ๋ผ์ฐํ
ํ๋กํ ์ฝ(OSPF, RIP ๋ฑ)์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋งํฌ ๊ฐ์ค์น๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋์
ํ์ง๋ง ๋งํฌ ๊ฐ์ค์น๋ง์ผ๋ก๋ ํน์ ํธ๋ํฝ์ ์ํ๋ ๊ฒฝ๋ก๋ก ๋ณด๋ด๋ ์ธ๋ฐํ ์ ์ด๊ฐ ์ด๋ ต๋ค - "knobs"๊ฐ ์ ํ์ ์ด๋ผ๋ ๋ง์, ์ฐ๋ฆฌ๊ฐ ํธ๋ํฝ์ ์ ์ดํ ๋ฐฉ๋ฒ์ด ๋ถ์กฑํ๋ค๋ ์๋ฏธ
- ๋งํฌ ๊ฐ์ค์น๋ฅผ ์กฐ์ ํ๋ฉด ๊ฒฝ๋ก๋ฅผ ๋ฐ๊ฟ ์ ์๊ธด ํ์ง๋ง, ๋ชจ๋ ํธ๋ํฝ์ ์ํฅ์ ์ฃผ๊ธฐ ๋๋ฌธ์ ์ํ๋ ๋๋ก ์ธ๋ฐํ ์กฐ์ ์ด ์ด๋ ต๋ค.
u-to-z ํธ๋ํฝ์ uvwz์ uxyz ๊ฒฝ๋ก๋ก ๋ถํ ํ๋ ๊ฒ์ด ์ ๋ถ๊ฐ๋ฅํ ๊น?
-> ์ ํต์ ์ธ ๋ผ์ฐํ ๋ฐฉ์(์: OSPF, RIP)์ ๋จ์ผ ๊ฒฝ๋ก๋ง ์ ํํ๊ธฐ ๋๋ฌธ
- ๊ธฐ์กด ๋ผ์ฐํ ์๊ณ ๋ฆฌ์ฆ(๋งํฌ ์ํ ๋ผ์ฐํ , ๊ฑฐ๋ฆฌ ๋ฒกํฐ ๋ผ์ฐํ )์ "๋จ์ผ ์ต๋จ ๊ฒฝ๋ก"๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋์
- "๋ก๋ ๋ฐธ๋ฐ์ฑ(load balancing)"์ ํ๋ ค๋ฉด ํธ๋ํฝ์ ๋ ๊ฐ์ ๊ฒฝ๋ก(uvwz & uxyz)๋ก ๋๋ ์ผ ํ๋๋ฐ, ์ ํต์ ์ธ ๋ผ์ฐํ ํ๋กํ ์ฝ์์๋ ํ๋์ ๊ฒฝ๋ก๋ง ์ ํํ ์ ์์
- ๊ธฐ์กด ๋ฐฉ์์์๋ ํธ๋ํฝ์ ํน์ ๋น์จ๋ก ๋๋ ์ ๋ณด๋ด๋ ๊ธฐ๋ฅ์ด ์๊ธฐ ๋๋ฌธ์ ๋ถ๊ฐ๋ฅํ๊ฑฐ์
- ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ํ๋ ค๋ฉด?
- ECMP(Equal-Cost Multi-Path) ๊ฐ์ ๊ธฐ์ ์ ์ฌ์ฉํด์ผ ํ๋๋ฐ, ์ด๋ ๊ธฐ์กด ๋ผ์ฐํ ํ๋กํ ์ฝ๋ง์ผ๋ก๋ ์ง์๋์ง ์์
- ๋๋, SDN(์ํํธ์จ์ด ์ ์ ๋คํธ์ํน)์ฒ๋ผ ํ๋ก๊ทธ๋๋จธ๋ธํ ๋ผ์ฐํ ๋ฐฉ์์ด ํ์
w์์ z๋ก ๊ฐ๋ "ํ๋์/๋นจ๊ฐ์ ํธ๋ํฝ"์ ๋ค๋ฅด๊ฒ ๋ผ์ฐํ ํ ์ ์๋ ์ด์ ๋?
-> ๊ธฐ์กด ๋ผ์ฐํ ์ "๋ชฉ์ ์ง ๊ธฐ๋ฐ(destination-based)"์ด๊ธฐ ๋๋ฌธ!
- ์ ํต์ ์ธ ๋ผ์ฐํ
ํ๋กํ ์ฝ(OSPF, RIP, BGP ๋ฑ)์ "๋ชฉ์ ์ง ์ฃผ์"๋ง ๋ณด๊ณ ๊ฒฝ๋ก๋ฅผ ๊ฒฐ์
- ํธ๋ํฝ์ด ์ด๋ค ์ข ๋ฅ์ธ์ง(์: QoS, ์๋น์ค ์ ํ, VLAN, ์ ํ๋ฆฌ์ผ์ด์ ์ข ๋ฅ ๋ฑ)๋ ๊ณ ๋ คํ์ง ์์
- ์ w๊ฐ ํ๋์/๋นจ๊ฐ์ ํธ๋ํฝ์ ๋ค๋ฅด๊ฒ ๋ผ์ฐํ
ํ ์ ์์๊น?
- ๊ธฐ์กด ๋ฐฉ์์์๋ z๋ก ๊ฐ๋ ์ต์ ์ ๊ฒฝ๋ก๋ฅผ ํ๋๋ง ์ ํํ ๋ฟ, ํธ๋ํฝ์ ์ข ๋ฅ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ค๋ฅด๊ฒ ๋ผ์ฐํ ํ ์ ์๊ธฐ ๋๋ฌธ
- ๋ชจ๋ ํธ๋ํฝ์ด ๊ฐ์ ๋ชฉ์ ์ง(z)๋ก ๊ฐ๋ ๊ฒฝ์ฐ, ๊ฐ์ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ๊ฐ์ผ ํจ
- ํธ๋ํฝ์ ์ข
๋ฅ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋ผ์ฐํ
ํ๋ ค๋ฉด?
- SDN์์๋ ํจํท์ ์ข ๋ฅ, ์ ํ๋ฆฌ์ผ์ด์ ์ ํ, QoS ๋ฑ์ ๋ค์ํ ๊ธฐ์ค์ ๊ธฐ๋ฐ์ผ๋ก ๋ผ์ฐํ ํ ์ ์์
- ex) OpenFlow ๊ฐ์ ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ฉด ์ถ๋ฐ์ง, ๋ชฉ์ ์ง๋ฟ๋ง ์๋๋ผ ํธ๋ํฝ ํ์ ๊น์ง ๊ณ ๋ คํ ๋ผ์ฐํ ์ด ๊ฐ๋ฅ
์ ํต์ ์ธ ๋ผ์ฐํ ๋ฐฉ์์์๋
- ์ํ๋ ๊ฒฝ๋ก๋ฅผ ์ง์ ์ง์ ํ๊ธฐ ์ด๋ ค์ (๋งํฌ ๊ฐ์ค์น(Link Weight)๊ฐ ๊ฒฝ๋ก ์กฐ์ ์ ์ ์ผํ ๋ฐฉ๋ฒ, ์ต๋จ ๊ฒฝ๋ก ์ ํ)
- ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ์ง์ํ์ง ์์ (ํ๋์ ์ต์ ๊ฒฝ๋ก๋ง ์ ํ)
- ํธ๋ํฝ ์ ํ์ ๋ฐ๋ฅธ ์ฐจ๋ฑ ๋ผ์ฐํ ์ด ๋ถ๊ฐ๋ฅํจ (๋ชฉ์ ์ง ๊ธฐ๋ฐ ๋ผ์ฐํ ๋ง ๊ฐ๋ฅ)
SDN ๊ตฌ์กฐ
Data-plane switches
1. ๋น ๋ฅด๊ณ ๋จ์ํ ๋ฒ์ฉ(commodity) ์ค์์น
- ํ๋์จ์ด์์ ์ผ๋ฐํ๋ ๋ฐ์ดํฐ ํ๋ ์ธ ํฌ์๋ฉ ์ํ (์น์ 4.4 ์ฐธ๊ณ )
2. ์ปจํธ๋กค๋ฌ์ ๊ฐ๋ ์๋ ํ๋ก์ฐ ํ ์ด๋ธ(flow table) ๊ณ์ฐ & ์ค์น
- ์ปจํธ๋กค๋ฌ๊ฐ ๊ฒฝ๋ก๋ฅผ ๊ณ์ฐํ๊ณ , ์ค์์น์ ์ ๋ฌํจ
- ์ค์์น๋ ๋จ์ํ ์ปจํธ๋กค๋ฌ์ ์ง์์ ๋ฐ๋ผ ํจํท์ ์ ๋ฌ
3. ํ ์ด๋ธ ๊ธฐ๋ฐ ์ค์์น ์ ์ด API ์ ๊ณต (์: OpenFlow)
- ์ด๋ค ๊ธฐ๋ฅ์ด ์ ์ด ๊ฐ๋ฅํ๊ณ , ์ด๋ค ๊ฒ์ ๋ถ๊ฐ๋ฅํ์ง ์ ์
- ์ปจํธ๋กค๋ฌ์ ์ค์์น ๊ฐ ํต์ ํ๋กํ ์ฝ (์: OpenFlow ์ฌ์ฉ)
์์ ๋ ๋ค์ ์ถ๊ฐ ๋ด์ฉ
- ๋คํธ์ํฌ ๊ธฐ๋ฅ ๊ฐ์ํ(NFV)์ ์ฐ๊ณ ๊ฐ๋ฅ: ๋ฐฉํ๋ฒฝ, ๋ก๋ ๋ฐธ๋ฐ์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ํํธ์จ์ด๋ก ๊ตฌํํ์ฌ ์ ์ฐํ ๋คํธ์ํฌ ๊ตฌ์ฑ ๊ฐ๋ฅ
- ๊ณผ๊ฑฐ ๋คํธ์ํฌ๋ Lock-in ๋ฌธ์
์์ ์๋ ํ ํ์ฌ์ ์ ์ฉ ํ๋์จ์ด์ ์ํํธ์จ์ด๋ง ์ฌ์ฉ ๊ฐ๋ฅ -> ํ์์ (Lock-in ํ์)
์ดํ ๋ง์ดํฌ๋กํ๋ก์ธ์ ๋ฑ์ฅ์ผ๋ก ์ฌ๋ฌ OS & ์ ํ๋ฆฌ์ผ์ด์ ์คํ ๊ฐ๋ฅ
๋คํธ์ํฌ๋ SDN์ ํตํด ํ๋์จ์ด์ ์ํํธ์จ์ด ๋ถ๋ฆฌ → ๊ฐ๋ฐฉ์ฑ ์ฆ๊ฐ
- SDN์ ํ์ฉํ ๋คํธ์ํฌ ์ ์ด ์ฌ๋ก
์ ๊ทผ ์ ์ด ๋ฆฌ์คํธ(Access Control List) : ํน์ ํธ๋ํฝ ์ฐจ๋จ/ํ์ฉ
๋ก๋ ๋ฐธ๋ฐ์ฑ : ํธ๋ํฝ์ ์ฌ๋ฌ ๋ ธ๋์ ๋ถ์ฐํด ํ ๋ ธ๋์ ๊ณผ๋ถํ๊ฐ ๊ฐ์ง ์๋๋ก ์กฐ์
- SDN์์๋ ๋ฐ์ดํฐ ํ๋ ์ธ ์ค์์น๋ ๋จ์ํ ํจํท ์ ๋ฌ ์ฅ์น
- ์ปจํธ๋กค๋ฌ๊ฐ ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ ๊ณ์ฐ & ์ค์
- API(OpenFlow ๋ฑ)๋ก ์ปจํธ๋กค๋ฌ์ ํต์
- ๊ธฐ์กด ํ์์ ๋คํธ์ํฌ ๊ตฌ์กฐ(Lock-in)์์ ๊ฐ๋ฐฉ์ SDN ๊ตฌ์กฐ๋ก ๋ณํ
SDN controller (network OS)
- ๋คํธ์ํฌ ์ํ ์ ๋ณด ์ ์ง
- ์ด๋ค ์ฅ์น์ ์ฐ๊ฒฐ๋์ด ์๋์ง ๋ฑ์ ์ ๋ณด(network state information)๋ฅผ ํ ์ด๋ธ๋ก ๊ด๋ฆฌ
- Northbound API (์ปจํธ๋กค ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ์ํธ์์ฉ)
- ์์ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ฐ๊ฒฐํ์ฌ ์ ์ฑ ๋ฐ ์ ์ด ๊ธฐ๋ฅ ์ ๊ณต
- Southbound API (๋คํธ์ํฌ ์ค์์น์ ์ํธ์์ฉ)
- ํ์ ์ค์์น์ ์ฐ๊ฒฐํ์ฌ ๋ฐ์ดํฐ ํ๋ ์ธ ์ ์ด
- ๋ถ์ฐ ์์คํ
์ผ๋ก ๊ตฌํ
- ์ฑ๋ฅ, ํ์ฅ์ฑ, ์ฅ์ ๋ด์ฑ, ๊ฒฌ๊ณ ์ฑ ํ๋ณด
- ๋
ผ๋ฆฌ์ ์ผ๋ก ์ค์ ์ง์ค์ ๊ตฌ์กฐ
- ๋คํธ์ํฌ ์ ๋ฐ์ ํ๋์ ์์คํ ์ฒ๋ผ ๊ด๋ฆฌ
network-control apps
- ์ ์ด ๊ธฐ๋ฅ ๊ตฌํ
- SDN ์ปจํธ๋กค๋ฌ๊ฐ ์ ๊ณตํ๋ API์ ์๋น์ค ํ์ฉ
- ์ ์ฐํ ๊ธฐ๋ฅ ๊ตฌํ
- ๋ค์ํ ์ ๋ณด๋ฅผ ํ์ฉํ์ฌ ๋ง์ถคํ ๋คํธ์ํฌ ์ ์ด ๊ธฐ๋ฅ ๊ตฌํ
- Unbundled(๋น๋ฒ๋ค๋ง) ๊ฐ๋
- ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ์ถ๊ฐํ์ฌ ํ์ฅ ๊ฐ๋ฅ
- ๋ผ์ฐํ ๋ฒค๋๋ SDN ์ปจํธ๋กค๋ฌ์ ๋ถ๋ฆฌ๋์ด ์ 3์๊ฐ ์ ๊ณต ๊ฐ๋ฅ
- ์ปจํธ๋กค ํ๋กํ ์ฝ ํ์ฉ: OpenFlow ์ธ์๋ ์ฌ๋ฌ ํ๋กํ ์ฝ์ ํ์ฉ ๊ฐ๋ฅ
SDN Controller ๊ตฌ์ฑ์์
1. ์ถ์ํ API
2. network-wide state management : ์ํ๊ด๋ฆฌ, ๋๊ฐ ์ฐ๊ฒฐ ๋์ด์๊ณ ๋์ด์ ธ์๋์ง ๋ฑ ์ ๋ณด ๋ฐ์์ forwarding table = flow table ์ ์ ์ฅ : ๋ถ์ฐ๋ DB -> ์๋ฒ๋ฅผ ๋ถ์ฐ, single point of failure problem์ ํด๊ฒฐํ ์ ์๋ค
3. communication : simple network management protocol ์ฌ์ฉํด์ SDN์ปจํธ๋กค๋ฌ์ ์ปจํธ๋กค๋ ์ค์์น๋ค(๋ผ์ฐํฐ)๋ฅผ ํต์
Distributed database๊ฐ SPOF ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ์ด์ ?
Single Point of Failure (๋จ์ผ ์ฅ์ ์ , SPOF) ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค(DB)๋ฅผ ์ฌ์ฉํ๋ ์ด์ :
- ์ด์คํ ๋ฐ ๋ณต๊ตฌ ๊ฐ๋ฅ
- ํ ์๋ฒ๊ฐ ๋ค์ด๋๋๋ผ๋ ๋ค๋ฅธ ์๋ฒ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ ํ๊ณ ์์ด ๋คํธ์ํฌ ์ด์์ด ์ค๋จ๋์ง ์์
- ๋ถํ ๋ถ์ฐ (Load Balancing)
- ์ฌ๋ฌ ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ๋๋ ์ ์ฅํ์ฌ ํน์ ์๋ฒ์ ๊ณผ๋ถํ๊ฐ ๊ฑธ๋ฆฌ๋ ๊ฒ์ ๋ฐฉ์ง
- ๊ณ ๊ฐ์ฉ์ฑ (High Availability)
- ์ฌ๋ฌ ๋ ธ๋์์ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ์ฌ ์ฅ์ ๋ฐ์ ์ ๋ค๋ฅธ ๋ ธ๋๊ฐ ์ฆ์ ๋์ ๊ฐ๋ฅ
- ๋ฐ์ดํฐ ์ผ๊ด์ฑ ์ ์ง
- ๋คํธ์ํฌ ์ ์ฒด ์ํ๋ฅผ ์ง์์ ์ผ๋ก ๋๊ธฐํํ์ฌ ์ต์ ์ ๋ณด๋ฅผ ์ ์ง
- ์ง๋ฆฌ์ ์ด์คํ ๊ฐ๋ฅ
- ์ฌ๋ฌ ์ง์ญ์ ์๋ฒ๋ฅผ ๋ฐฐํฌํ๋ฉด ํน์ ์ง์ญ ์ฅ์ ์๋ ๋คํธ์ํฌ๊ฐ ์ ์์ ์ผ๋ก ์ด์๋จ
์ฆ, ๋จ์ผ ์๋ฒ๊ฐ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ฉด ํด๋น ์๋ฒ๊ฐ ๊ณ ์ฅ ๋ ๊ฒฝ์ฐ ์ ์ฒด ๋คํธ์ํฌ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง๋ง, ๋ถ์ฐ๋ DB๋ฅผ ์ฌ์ฉํ๋ฉด ์ฅ์ ๊ฐ ๋ฐ์ํด๋ ๋ค๋ฅธ ์๋ฒ๊ฐ ์ด๋ฅผ ๋์ฒดํ ์ ์์ด SPOF ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์.
OpenFlow protocol
- ๊ธฐ๋ณธ ๊ฐ๋
- ์ปจํธ๋กค๋ฌ์ ์ค์์น ๊ฐ ํต์ ์ ๋ด๋น
- ๋ฉ์์ง ๊ตํ์ TCP ์ฌ์ฉ
- ๋ณด์์ ๊ฐํํ๋ ค๋ฉด ์ํธํ(Optional) ๊ฐ๋ฅ
- OpenFlow ๋ฉ์์ง๋ ์ธ ๊ฐ์ง ์ ํ
- Controller-to-Switch (์ปจํธ๋กค๋ฌ → ์ค์์น)
- Asynchronous (์ค์์น → ์ปจํธ๋กค๋ฌ)
- Symmetric (์๋ฐฉํฅ, ๊ธฐํ ๋ฉ์์ง)
- OpenFlow API์ ๊ตฌ๋ณ๋จ (API๋ ์ผ๋ฐํ๋ ํฌ์๋ฉ ๋์์ ์ง์ ํ๋ ์ฉ๋)
- Controller-to-Switch Messages
- features: ์ปจํธ๋กค๋ฌ๊ฐ ์ค์์น์ ๊ธฐ๋ฅ ์กฐํ(queries), ์ค์์น๊ฐ ์๋ต
- configure: ์ปจํธ๋กค๋ฌ๊ฐ ์ค์์น ์ค์ (configuration parameters) ์กฐํ(queries)/๋ณ๊ฒฝ(sets)
- modify-state: OpenFlow ํ ์ด๋ธ์ ํ๋ก์ฐ ์ํธ๋ฆฌ ์ถ๊ฐ, ์ญ์ , ์์ (add, delete, modify)
- packet-out: ํน์ ์ค์์น ํฌํธ๋ก ํจํท ์ ์ก
- Switch-to-Controller Messages
- packet-in: ํจํท(and its control)์ ์ปจํธ๋กค๋ฌ๋ก ์ ๋ฌ, ์ปจํธ๋กค๋ฌ๋ถํฐ์ packet-out ๋ฉ์์ง๋ฅผ ๋ด.
- flow-removed: ํ๋ก์ฐ ํ ์ด๋ธ์์ ์ญ์ ๋ ์ํธ๋ฆฌ๋ฅผ ์ปจํธ๋กค๋ฌ์ ์๋ฆผ
- port status: ํฌํธ ๋ณ๊ฒฝ ์ฌํญ์ ์ปจํธ๋กค๋ฌ์ ๋ณด๊ณ
- ์ถ๊ฐ ๊ฐ๋
- ๋คํธ์ํฌ ์ด์์๋ OpenFlow ๋ฉ์์ง๋ฅผ ์ง์ ์์ฑํ ํ์ ์์
- ์ปจํธ๋กค๋ฌ์์ ๊ณ ์์ค ์ถ์ํ๋ ๋ฐฉ์์ผ๋ก ์ค์์น๋ฅผ ์ ์ดํ ์ ์๋๋ก ์ง์
SDN: ์ฃผ์ ๊ณผ์ ๋ฐ ๋ฏธ๋ ์ ๋ง
- SDN์ ์์ผ๋ก์ ๊ณผ์ ๋ค
- ์ ์ด ํ๋ฉด ๊ฐํ: ์ ๋ขฐ์ฑ, ํ์ฅ์ฑ, ๋ณด์์ด ๋ฐ์ด๋ ๋ถ์ฐ ์์คํ ๊ตฌ์ถ
- ์ฅ์ ๋ณต์๋ ฅ: ์ ๋ขฐํ ์ ์๋ ๋ถ์ฐ ์์คํ ์ด๋ก ์ ์ฉ
- ์์กด์ฑ ๋ฐ ๋ณด์: ์ฒ์๋ถํฐ ๋ณด์์ ๊ณ ๋ คํ ์ค๊ณ
- ํน์ ์๊ตฌ์ฌํญ ์ถฉ์กฑ: ์ค์๊ฐ, ์ด๊ณ ์ ๋ขฐ์ฑ, ์ด๊ณ ๋ณด์ ๋คํธ์ํฌ ๊ตฌํ
- ์ธํฐ๋ท ๊ท๋ชจ ํ์ฅ: ๋จ์ผ AS๋ฅผ ๋์ด์ ํ์ฅ์ฑ ๊ณ ๋ ค
- 5G ๋คํธ์ํฌ์์ SDN ํ์ฉ์ด critical
- SDN๊ณผ ๊ธฐ์กด ๋คํธ์ํฌ ํ๋กํ ์ฝ์ ๋ฏธ๋
- ๋ผ์ฐํฐ๊ฐ ์ง์ ๊ณ์ฐํ๋ ๋ฐฉ์ vs. SDN์ด ๊ณ์ฐํ๋ ๋ฐฉ์ ๋น๊ต
- SDN ๊ธฐ๋ฐ ํผ์ก ์ ์ด ๊ฐ๋ฅ:
- ๋ผ์ฐํฐ๊ฐ ์ปจํธ๋กค๋ฌ์ ํผ์ก ์ํ๋ฅผ ๋ณด๊ณ -> ์ปจํธ๋กค๋ฌ๊ฐ ์ก์ ์๋ ์กฐ์
- NAT, ๋ณด์, ๋ฐฉํ๋ฒฝ, ๋ก๋ ๋ฐธ๋ฐ์ ๊ธฐ๋ฅ๋ SDN์ ํฌํจ์ด ๋ ์ ์๋ค
p.98~p.102: interaction ์์ ~ ์ถ๊ฐ ์ปจํธ๋กค๋ฌ ์์ ๋ค์ ๋์ค์ ํผํผํฐ๋ก ๋ฐ๋ก ๊ฐ๋ณ๊ฒ ๋ณด๊ธฐ
- ์ด๋ฏธ์ง ์ถ์ฒ : https://gaia.cs.umass.edu/kurose_ross/ppt.php