**๋คํธ์ํฌ ๊ณ์ธต(Network Layer)**์ ๋ฐ์ดํฐ๋ฅผ ์ก์ ์์์ ์์ ์๊น์ง ์ ๋ฌํ๋ ์ญํ ์ ๋ด๋นํ๋ฉฐ, ํฌ๊ฒ ๋ ๊ฐ์ง ํต์ฌ ๊ธฐ๋ฅ์ด ์์:
๐ฌ ํฌ์๋ฉ(Forwarding)
๐บ๏ธ ๋ผ์ฐํ (Routing)
๋คํธ์ํฌ์ ์ ์ด ํ๋ฉด(Control Plane)์ ๊ตฌ์ฑํ๋ ๋ฐฉ์์ ํฌ๊ฒ ๋ ๊ฐ์ง ์ ๊ทผ๋ฒ์ผ๋ก ๋๋ ์ ์์:
๊ฐ๋ณ ๋ผ์ฐํฐ(Router) ๊ฐ๊ฐ์ ํ์ฌ๋ ๋ผ์ฐํ ์๊ณ ๋ฆฌ์ฆ(Routing Algorithm)์ด ์๋ก ์ํธ์์ฉํ์ฌ ํฌ์๋ฉ ํ ์ด๋ธ(Forwarding Table)์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ณ์ฐํ๊ณ ๊ด๋ฆฌํจ. ๋ผ์ฐํฐ๊ฐ ๋ถ์ฐ๋ ํํ๋ก ๋์ํ๋ฏ๋ก ๋ถ์ฐ ์ ์ด(Distributed Control) ๋ฐฉ์์ด๋ผ๊ณ ๋ ๋ถ๋ฆ.

๋ ผ๋ฆฌ์ ์ค์ ์ง์คํ ์ ์ด๋ ๋ผ์ฐํฐ์์ ๋ถ๋ฆฌ๋ **๋ ผ๋ฆฌ์ ์ค์ ์ปจํธ๋กค๋ฌ(Logical Central Controller)**๊ฐ ์ ์ฒด ๋คํธ์ํฌ ์ํ๋ฅผ ํ์ ํ๊ณ , ๋ผ์ฐํฐ์ ์กด์ฌํ๋ ๋ก์ปฌ ์ ์ด ์์ด์ ํธ(Control Agents, CAs)์ ์ํธ์์ฉํ์ฌ ํฌ์๋ฉ ํ ์ด๋ธ์ ๊ณ์ฐํ๋ ๋ฐฉ์์.
์ผ๋ฐ์ ์ผ๋ก SDN ์ปจํธ๋กค๋ฌ๋ ๋คํธ์ํฌ ์ธ๋ถ์ ๋ฐฐ์น๋์ด ์๊ฒฉ์ผ๋ก ๊ด๋ฆฌ๋๋ฉฐ, ๊ฐ๋ฐฉํ ์ํํธ์จ์ด(Open Source Software)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ฑ๋จ.

๐ ๋ผ์ฐํ ํ๋กํ ์ฝ(Routing Protocol)์ ๋ชฉํ:
๐ ๊ฒฝ๋ก(Path)์ ์ ์:)
๐ "์ข๋ค(Good)"์ ์๋ฏธ:

G = (N, E)N (๋ผ์ฐํฐ(Router)์ ์งํฉ)E (๋งํฌ(Link)์ ์งํฉ)๐ ๋งํฌ ๋น์ฉ(Link Cost):
c(X, Y): ๋งํฌ (X, Y)์ ๋น์ฉ๐ ๊ฒฝ๋ก ๋น์ฉ(Path Cost):
๐ Global (Centralized)
๐ Decentralized
โ๏ธ ์ ์ (Static):
โก๏ธ ๋์ (Dynamic):
๐ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ(Dijkstra's Algorithm)
๐ ํต์ฌ ๊ฐ๋ :
๐ ๋ฐ๋ณต ์ํ:
k๋ฒ ๋ฐ๋ณตํ๋ฉด k๊ฐ์ ๋ชฉ์ ์ง์ ๋ํ ์ต์ ๋น์ฉ ๊ฒฝ๋ก ๊ณ์ฐ ๊ฐ๋ฅ๐ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ ํ๊ธฐ๋ฒ(Notation):
c(X, Y): ๋
ธ๋ X์์ ๋
ธ๋ Y๋ก ์ด๋ํ๊ธฐ ์ํ ๋งํฌ ๋น์ฉ (์ง์ ์ฐ๊ฒฐ๋์ง ์์ ๊ฒฝ์ฐ โ)D(v): ์ก์ ์ธก์ผ๋ก๋ถํฐ ๋ชฉ์ ์ง ๋
ธ๋ v๋ก ์ด๋ํ๋ ๋ฐ ํ์ํ ํ์ฌ ๋น์ฉp(v): ์ก์ ์ธก์ผ๋ก๋ถํฐ ๋
ธ๋ v๊น์ง์ ๊ฒฝ๋ก์์ ์ง์ ๋ฐฉ๋ฌธ ๋
ธ๋N': ์ต์ ๋น์ฉ ๊ฒฝ๋ก๋ฅผ ๊ณ์ฐ ์๋ฃํ ๋
ธ๋์ ์งํฉ๐ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ์์ฌ ์ฝ๋(Pseudo Code):
Initialization:
N' = {u}
for all nodes v
if v is a neighbor of u
then D(v) = c(u, v)
else
D(v) = โ
Loop:
find w not in N' such that D(w) is a minimum
add w to N'
update D(v) for each neighbor v of w and not in N':
D(v) = min(D(v), D(w) + c(w, v))
until all nodes are in N'
๐ ๊ทธ๋ํ ์์(Graph Example):

๐ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ ์ํ ์์:

๐ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ๋ณต์ก๋(Complexity):
n๊ฐ์ผ ๋, ๊ฐ ๋จ๊ณ์์ ๋จ์์๋ ๋ชจ๋ ๋
ธ๋๋ฅผ ๊ฒ์ฌn(n+1)/2์ด๋ฏ๋ก ์๊ฐ ๋ณต์ก๋๋ O(nยฒ)O(nlogn)๊น์ง ๊ฐ์ ๊ฐ๋ฅ๐ Oscillation ๋ฌธ์ ๐




๐ ํน์ง
| ๊ตฌ๋ถ | ์ค๋ช |
|---|---|
| ๐ ๋ฐ๋ณต์ (iterative) | ์ด์๋ผ๋ฆฌ ๋ ์ด์ ์ ๋ณด๋ฅผ ๊ตํํ์ง ์์ ๋๊น์ง ํ๋ก์ธ์ค๋ฅผ ์ง์. |
| โฐ ๋น๋๊ธฐ์ (asynchronous) | ๋ชจ๋ ๋ ธ๋๊ฐ ์๋ก ์ ํํ ๋ง๋ฌผ๋ ค ๋์ํ ํ์๊ฐ ์์. |
| ๐ ๋ถ์ฐ์ (distributed) | ๊ฐ ๋ ธ๋๋ ์ง์ ์ฐ๊ฒฐ๋ ์ด์์ผ๋ก๋ถํฐ ์ ๋ณด๋ฅผ ๋ฐ์ ๊ณ์ฐํ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ์ด์๋ค์๊ฒ ๋ฐฐํฌ. |
๐ ๋ฒจ๋ง-ํฌ๋ ๋ฐฉ์ ์(Bellman-Ford Equation)
๐ ์ ์
์ฌ๊ธฐ์ ๋ ๋ ธ๋ ์์ ๋ ธ๋ ๋ก ์ด๋ํ ์ ์๋ ๊ฒฝ๋ก์ ์ต์ ๋น์ฉ์ด๊ณ , ๋ ๋ ธ๋ ์ ์ด์ ๋ ธ๋ ์ฌ์ด์ ๋งํฌ ๋น์ฉ์ด๋ค.
๐ ์์

๐ Distance Vector Algorithm ํต์ฌ ์์ด๋์ด
๐ ๊ฐ ๋ ธ๋๋ ์์ ์ ๊ฑฐ๋ฆฌ ๋ฒกํฐ ์ถ์ ์น๋ฅผ ์ด์์๊ฒ ์ ์ก. ์๋ก์ด ๊ฑฐ๋ฆฌ ๋ฒกํฐ๋ฅผ ๋ฐ์ผ๋ฉด Bellman-Ford ๋ฐฉ์ ์์ ์ด์ฉํด ๊ฐฑ์ . ๋ชจ๋ ๋ ธ๋๊ฐ ์ง์์ ์ผ๋ก ๊ฑฐ๋ฆฌ ๋ฒกํฐ๋ฅผ ๊ตํํ๋ฉด ์ต์ ๋น์ฉ ๊ฒฝ๋ก์ ์ค์ ๋น์ฉ์ผ๋ก ์๋ ด.
๐ Distance Vector Algorithm ์์ฌ ์ฝ๋
Initialization:
for all destinations y in N:
D(y) = c(x, y) // ์ด์์ด ์๋๋ฉด ๋น์ฉ์ ๋ฌดํ๋
for each neighbor w:
send distance vector D = [D(y): y in N] to w
Loop:
wait (link cost change or distance vector received)
for each y in N:
D(y) = min {c(x, v) + D(v)}
if D(y) changed for any destination y:
send updated distance vector D to all neighbors
forever

๐ ๋งํฌ ๋น์ฉ ๋ณํ ์ ๋์
| ์ํฉ | ์ค๋ช |
|---|---|
| ๐ ๋งํฌ ๋น์ฉ ๊ฐ์ (Good News) | ๋น ๋ฅด๊ฒ ์ ํ๋จ |
| ๐ ๋งํฌ ๋น์ฉ ์ฆ๊ฐ (Bad News) | ๋๋ฆฌ๊ฒ ์ ํ๋จ. count-to-infinity ๋ฌธ์ ๋ฐ์ |
๐ ๋งํฌ ๋น์ฉ ๊ฐ์ ์์

๐ ๋งํฌ ๋น์ฉ ์ฆ๊ฐ ์์ (count-to-infinity)

๐ Poisoned Reverse
๐ ์ ์
๋ฃจํ ๋ฐฉ์ง๋ฅผ ์ํด, ํน์ ๋ ธ๋๊ฐ ์ด์ ๋ ธ๋๋ฅผ ํตํด ๋ชฉ์ ์ง๋ก ๊ฐ๋ ๊ฒฝ๋ก๋ฅผ ์ค์ ํ์ผ๋ฉด ํด๋น ์ด์์๊ฒ ๊ทธ ๋ชฉ์ ์ง๋ก ๊ฐ๋ ๋น์ฉ์ ๋ฌดํ๋๋ผ๊ณ ์๋ฆฌ๋ ๋ฐฉ๋ฒ์ด๋ค. ๋ชจ๋ ํํ์ ๋ฃจํ๋ฅผ ํด๊ฒฐํ ์๋ ์๋ค.
| ๋น๊ต ์์ | Link State (LS) | Distance Vector (DV) |
|---|---|---|
| ๐ฌ ๋ฉ์์ง ๋ณต์ก๋ | , ์ ์ฒด ๋คํธ์ํฌ ์ ๋ณด ๊ตํ | ๊ทผ์ ์ด์ ๊ฐ ์ ๋ณด ๊ตํ, ์๋ ด ์๊ฐ ๋ค์ |
| โฑ๏ธ ์๋ ด ์๋ | ๋น ๋ฆ (), Oscillation ๊ฐ๋ฅ์ฑ ์กด์ฌ | ์๋์ ์ผ๋ก ๋๋ฆผ, count-to-infinity ๋ฌธ์ ๊ฐ๋ฅ |
| ๐ก๏ธ ๊ฒฌ๊ณ ์ฑ | ๋ถ์ ํํ ์ ๋ณด๊ฐ ๊ตญ์ง์ ์ค๋ฅ๋ก ํ์ | ๋ถ์ ํํ ์ ๋ณด๊ฐ ๋คํธ์ํฌ ์ ์ฒด๋ก ์ ํ ๊ฐ๋ฅ |
๐ ๋ฌธ์ ์ ๋ฐฐ๊ฒฝ
| ๋ฌธ์ ์ํฉ | ์ค๋ช |
|---|---|
| ๐ ๊ท๋ชจ(scale) | ํ์ค์ ์ผ๋ก ๋ผ์ฐํฐ์ ์๊ฐ ๋งค์ฐ ๋ง์, ๋ชจ๋ ๋ชฉ์ ์ง ์ ๋ณด๋ฅผ ํ๋์ ๋ผ์ฐํ ํ ์ด๋ธ์ ์ ์ฅํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅ |
| ๐ ๏ธ ๊ด๋ฆฌ ์์จ์ฑ(administrative autonomy) | ์ธํฐ๋ท์ ๋คํธ์ํฌ์ ๋คํธ์ํฌ๋ก ๊ฐ ๋คํธ์ํฌ ๊ด๋ฆฌ์๋ ์์ฒด ๋คํธ์ํฌ์ ๋ผ์ฐํ ์ ์ ์ดํ๊ณ ์ ํจ |
๐ ์ธํฐ๋ท์ ํ์ฅ ๊ฐ๋ฅํ ๋ผ์ฐํ ์ ๊ทผ๋ฒ(Internet Approach to Scalable Routing)
๐ ๋ผ์ฐํ ์ ์ข ๋ฅ
| ๋ผ์ฐํ ์ ํ | ์ค๋ช |
|---|---|
| ๐ intra-AS routing | ๋์ผํ AS ๋ด๋ถ์์ ํธ์คํธ ๋ฐ ๋ผ์ฐํฐ ๊ฐ ๋ผ์ฐํ . ๋ชจ๋ ๋ผ์ฐํฐ๋ ๋์ผ intra-domain ํ๋กํ ์ฝ ์คํ ํ์. |
| ๐ inter-AS routing | ์๋ก ๋ค๋ฅธ AS ๊ฐ์ ๋ผ์ฐํ . gateway-router๋ AS ๊ฐ ์ฐ๊ฒฐ ๊ด๋ฆฌ ๋ฐ inter-domain ๋ผ์ฐํ ์ํ |
๐ ๋ผ์ฐํ ์๊ณ ๋ฆฌ์ฆ์ ์ญํ
๐ intra-AS routing ์๊ณ ๋ฆฌ์ฆ
๐ inter-AS routing ์๊ณ ๋ฆฌ์ฆ
๐ ๋ํ์ ์ธ intra-AS ํ๋กํ ์ฝ(interior gateway protocols, IGP)
| ํ๋กํ ์ฝ ์ข ๋ฅ | ์๊ณ ๋ฆฌ์ฆ ์ ํ | ํน์ง |
|---|---|---|
| ๐ RIP | DV | Routing Information Protocol |
| ๐ OSPF | LS | Open Shortest Path First |
| ๐ง IGRP | DV | Interior Gateway Routing Protocol |
๐ ๊ฐ๋ฐฉ์ฑ(open): ๋๊ตฌ๋ ์ฌ์ฉ ๊ฐ๋ฅ
๐ ์๊ณ ๋ฆฌ์ฆ: ๋งํฌ ์ํ ์๊ณ ๋ฆฌ์ฆ(Link State Algorithm) ์ฌ์ฉ
๐ก ๋งํฌ ์ํ ์ ๋ณด ์ ํ
๐ก๏ธ ๋ณด์
๐ฆ ๋์ผ ๋น์ฉ ๋ค์ค ๊ฒฝ๋ก ์ง์
๐ฃ๏ธ ์๋น์ค ์ ํ(Type of Service, TOS)๋ณ ๋งํฌ ๋น์ฉ ์ค์ ๊ฐ๋ฅ
| ๐ ๏ธ TOS ์ ํ | ๐ฐ ๋งํฌ ๋น์ฉ(metric) | ๐ ํด์ |
|---|---|---|
| ๐ฆ Best-effort | ๋ฎ์ (์: 10) | ์ผ๋ฐ ํธ๋ํฝ์ ์์ฑ ๋งํฌ ์ฌ์ฉ ๊ฐ๋ฅ |
| โฑ๏ธ Real-time | ๋์ (์: 100) | ์ค์๊ฐ ํธ๋ํฝ์ ์์ฑ ๋งํฌ ํผํจ |
๐ข ์ ๋์บ์คํธ์ ๋ฉํฐ์บ์คํธ ํตํฉ ์ง์
๐๏ธ ๊ณ์ธต์ ๊ตฌ์กฐ ์ง์
๐ ์ธํฐ๋ท Inter-AS Routing: BGP (Border Gateway Protocol)
| ์ญํ | ์ค๋ช |
|---|---|
| ๐ eBGP | ์ด์ํ AS๋ค๋ก๋ถํฐ ์๋ธ๋ท ๋๋ฌ ๊ฐ๋ฅ์ฑ(reachability) ์ ๋ณด ํ๋ |
| ๐ iBGP | AS ๋ด๋ถ ๋ชจ๋ ๋ผ์ฐํฐ์ ํ๋ํ reachability ์ ๋ณด ์ ํ |
๐ BGP์ ๋ชฉํ: ๋ค๋ฅธ ๋คํธ์ํฌ(domain)๋ก ํฅํ๋ "์ข์" ๊ฒฝ๋ก๋ฅผ reachability ์ ๋ณด์ ์ ์ฑ (policy)์ ๊ธฐ๋ฐ์ผ๋ก ๊ฒฐ์
๐ข ์๋ธ๋ท์ด ์์ ์ ์กด์ฌ๋ฅผ ์ธํฐ๋ท์ ๊ด๊ณ (advertise)ํ ์ ์๋๋ก ์ง์
๐ BGP ์ธ์ : ๋ BGP ๋ผ์ฐํฐ(peer)๋ ๋ฐ์๊ตฌ์ TCP ์ฐ๊ฒฐ์ ํตํด BGP ๋ฉ์์ง๋ฅผ ๊ตํ
๐๏ธ BGP attribute๋ฅผ ํฌํจํ prefix ๊ด๊ณ :
| Attribute | ์ค๋ช |
|---|---|
| ๐ฃ๏ธ AS-PATH | prefix ๊ด๊ณ ๊ฐ ์ง๋์จ AS์ ๋ชฉ๋ก |
| ๐ NEXT-HOP | ๋ค์ AS๋ก ํจํท์ ์ ๋ฌํ ๋ด๋ถ ๋ผ์ฐํฐ IP ์ฃผ์, ์ฆ AS-PATH๊ฐ ์์๋๋ ๋ผ์ฐํฐ์ ์ธํฐํ์ด์ค IP ์ฃผ์ |
๐ ์ ์ฑ ๊ธฐ๋ฐ ๋ผ์ฐํ
- ๊ฒฝ๋ก ๊ด๊ณ ๋ฅผ ๋ฐ์ ๊ฒ์ดํธ์จ์ด๋ ๊ฒฝ๋ก๋ฅผ ์ฑํ/๊ฑฐ๋ถํ๋ import policy ์ ์ฉ
- AS ์ ์ฑ ์ ์ด์ AS์ ๊ฒฝ๋ก๋ฅผ ๊ด๊ณ ํ ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์

AS3, X๋ฅผ AS2 ๊ฒ์ดํธ์จ์ด ๋ผ์ฐํฐ์ธ 2c์ ๊ด๊ณ . AS3๋ AS2์ ๋ฐ์ดํฐ๊ทธ๋จ์ X๋ก ํฌ์๋ฉํด์ค ๊ฒ์ ์ฝ์.AS3, X๋ฅผ AS3 3a์ผ๋ก๋ถํฐ ์์ .AS3, X๋ฅผ ์ฑํ, iBGP๋ฅผ ํตํด AS2 ๋ด๋ถ์ ๋ชจ๋ ๋ผ์ฐํฐ์ ํด๋น ๊ฒฝ๋ก๋ฅผ ์ ํ.AS2, AS3, X๋ฅผ AS1 ๋ผ์ฐํฐ 1c์ ์ ๋ฌ.
๊ฒ์ดํธ์จ์ด๋ ๋ค์ํ ๊ฒฝ๋ก๋ฅผ ํ์ตํ ์ ์์ผ๋ฉฐ, ์ ์ฑ ์ ๋ฐ๋ผ ์ต์ ๊ฒฝ๋ก๋ฅผ ์ ํ
์ ํํ ๊ฒฝ๋ก๋ iBGP๋ฅผ ํตํด ๋ด๋ถ ๋ผ์ฐํฐ์ ๊ณต์ ๋จ
์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ์ํฉ์์ AS1 ๊ฒ์ดํธ์จ์ด ๋ผ์ฐํฐ 1c๋ 2a๋ก๋ถํฐ ๊ฒฝ๋ก AS2, AS3, X ํ์ต. 3a๋ก๋ถํฐ ๊ฒฝ๋ก AS3, X ํ์ต.
AS1 ์ ์ฑ ์ ๊ธฐ๋ฐํด 1c๋ ๊ฒฝ๋ก๋ฅผ ์ ์ . ๊ฒฐ์ ๋ ๊ฒฝ๋ก๋ฅผ iBGP ํตํด AS1 ๋ด๋ถ์ ๋ชจ๋ ๋ผ์ฐํฐ์ ๊ณต์ .
| ๋ฉ์์ง ์ข ๋ฅ | ์ญํ |
|---|---|
| ๐ช OPEN | ์๊ฒฉ BGP peer์ TCP ์ฐ๊ฒฐ ๊ฐ๋ฐฉ ๋ฐ ์ธ์ฆ |
| ๐ UPDATE | ์๋ก์ด ๊ฒฝ๋ก ๊ด๊ณ ๋๋ ๊ธฐ์กด ๊ฒฝ๋ก ์ฒ ํ |
| โณ KEEPALIVE | ์ฐ๊ฒฐ ์ํ ์ ์ง ๋ฐ OPEN ๋ฉ์์ง ACK |
| โ ๏ธ NOTIFICATION | ์ค๋ฅ ๋ณด๊ณ ๋ฐ ์ฐ๊ฒฐ ์ข ๋ฃ ์๊ตฌ |
๊ฒฝ๋ก๊ฐ ์ฌ๋ฌ ๊ฐ์ผ ๋ ์ ํ ๊ธฐ์ค:

AS1, AS3, X. (2a๊น์ง ๊ฐ๋ ์ต์๋น์ฉ 201)AS3, X. (2c๊น์ง ๊ฐ๋ ์ต์๋น์ฉ 263)Hot potato routing์ intra-domain ๋น์ฉ์ด ์ต์์ธ ๋ก์ปฌ ๊ฒ์ดํธ์จ์ด๋ฅผ ์ ํ. ์ฆ, 2d๋ AS hop์ด ๋ ๋ง๋๋ผ๋ 2a๋ฅผ ์ ํํจ.

Aw๋ฅผ ISP B์ ISP C์ ๊ด๊ณ .BAw๋ฅผ C์ ๊ด๊ณ ํ์ง ์๊ธฐ๋ก ์ ํ. (C, A, w๋ B์ ๊ณ ๊ฐ์ด ์๋๋ผ์ B๋ ๊ฒฝ๋ก CBAw๋ฅผ ๋ผ์ฐํ
ํด์ ์ป๋ ์ด์ต์ด ์๊ธฐ ๋๋ฌธ)CAw๋ฅผ ํตํด w๋ก ๊ฐ๋ ํธ๋ํฝ์ ๋ผ์ฐํ
.| ๊ตฌ๋ถ | Inter-AS | Intra-AS |
|---|---|---|
| ๐ ์ ์ฑ | ๊ฐ ๊ด๋ฆฌ์๊ฐ ์์ ์ ๋คํธ์ํฌ๋ฅผ ํตํด ํธ๋ํฝ์ด ๋๊ฐ ์ด๋ป๊ฒ ๋ผ์ฐํ ํ๋์ง ์ ์ดํ๊ณ ์ถ์ดํจ. | ๊ด๋ฆฌ์๊ฐ ๋จ์ผ, ๋ณ๋์ ์ ์ฑ ๊ฒฐ์ ๋ถํ์ |
| ๐ ์ค์ผ์ผ | ๊ณ์ธต์ ๋ผ์ฐํ ์ผ๋ก ๋ผ์ฐํ ํ ์ด๋ธ ํฌ๊ธฐ ์ ์ฝ ๋ฐ ํธ๋ํฝ ๊ฐ์ | ๊ณ์ธต์ ๊ตฌ์กฐ๋ก ํจ์จ์ ๊ด๋ฆฌ ๋ฐ ํธ๋ํฝ ๊ด๋ฆฌ ๊ฐ๋ฅ |
| ๐ ์ฑ๋ฅ | ์ฑ๋ฅ๋ณด๋ค๋ ์ ์ฑ ์ฐ์ | ์ฑ๋ฅ์ ์ค์ ๋ง์ถค |
๐ ๊ณผ๊ฑฐ์ ์ธํฐ๋ท ๋คํธ์ํฌ ๊ณ์ธต ๊ตฌ์กฐ
| ๊ตฌ์ฑ ์์ | ์ค๋ช |
|---|---|
| ๐งฑ Monolithic Router | ์ค์์นญ ํ๋์จ์ด(HW)์ ๋ผ์ฐํ ์ํํธ์จ์ด(SW)๋ฅผ ํตํฉํ ์ฅ๋น. ๋ฒค๋ ์ข ์ (์: Cisco) |
| ๐ฆ Middlebox | ๋ผ์ฐํฐ/์ค์์น๋ฅผ ์ ์ธํ ํนํ ์ฅ๋น (์: ๋ฐฉํ๋ฒฝ, ๋ก๋ ๋ฐธ๋ฐ์, NAT ๋ฑ) |

๐งฐ ๋คํธ์ํฌ ๊ด๋ฆฌ์ ์ฉ์ด์ฑ:
- count-to-infinity, oscillation ๋ฌธ์ ํํผ ๊ฐ๋ฅ
- ์ ์ฐํ ํธ๋ํฝ ํ๋ฆ ๊ด๋ฆฌ ๊ฐ๋ฅ
๐ก ํ ์ด๋ธ ๊ธฐ๋ฐ ํฌ์๋ฉ = ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ฅํ ๋ผ์ฐํฐ ์คํ
| ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์ | ์ค๋ช |
|---|---|
| ๐งท ์ค์์ง์ค์(Centralized) | ์ปจํธ๋กค๋ฌ์์ ๊ณ์ฐํ ํฌ์๋ฉ ํ ์ด๋ธ์ ๊ฐ ์ค์์น์ ๋ฐฐํฌ โ ๊ตฌํ ์ฌ์ |
| ๐ ๋ถ์ฐ์(Distributed) | ๊ฐ ๋ผ์ฐํฐ๊ฐ ๋ถ์ฐ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํ ์ด๋ธ ๊ณ์ฐ โ ๊ตฌํ ๋ณต์ก |

SDN ์ปจํธ๋กค๋ฌ์ OpenFlow API๋ฅผ ๊ตฌํํ ์ค์์น ๊ฐ ํต์ ์ ๋ด๋นํ๋ ํ๋กํ ์ฝ
| ๋ฉ์์ง ์ ํ | ๊ธฐ๋ฅ ์ค๋ช |
|---|---|
| ๐ features | ์ค์์น ๊ธฐ๋ฅ ์ง์, ์ค์์น๋ ์์ ์ด ์ง์ํ๋ ๊ธฐ๋ฅ์ ์๋ต |
| โ๏ธ configure | ์ค์์น ์ค์ ํ๋ผ๋ฏธํฐ ์กฐํ/์ค์ |
| ๐งพ modify-state | Flow Table ํญ๋ชฉ ์ถ๊ฐ(add), ์ญ์ (delete), ์์ (modify) |
| ๐ค packet-out | ํน์ ํจํท์ ์ง์ ๋ ํฌํธ๋ก ์ง์ ์ ์กํ๋๋ก ์ง์ |
| ๋ฉ์์ง ์ ํ | ๊ธฐ๋ฅ ์ค๋ช |
|---|---|
| ๐ฅ packet-in | ์ค์์น๊ฐ ์ฒ๋ฆฌ ๋ชปํ ํจํท์ ์ปจํธ๋กค๋ฌ์ ์ ๋ฌํ์ฌ ์ ์ด ์์ฒญ |
| โ flow-removed | Flow Table์์ ํญ๋ชฉ ์ญ์ ๋์์์ ์ปจํธ๋กค๋ฌ์ ํต๋ณด |
| ๐ถ port status | ํฌํธ ์ํ ๋ณํ (์ /๋ค์ด ๋ฑ)๋ฅผ ์ปจํธ๋กค๋ฌ์ ์๋ฆผ |
โ ๏ธ ์ด์์๊ฐ OpenFlow ๋ฉ์์ง๋ฅผ ์ง์ ์ ์ดํ์ง ์์ผ๋ฉฐ, ์ปจํธ๋กค๋ฌ๊ฐ ๊ณ ์์ค ์ถ์ํ API๋ฅผ ํตํด ์ฒ๋ฆฌํจ

1๏ธโฃ ์ค์์น s1์์ ๋งํฌ ์ฅ์ ๋ฐ์ โ port status ๋ฉ์์ง๋ก ์ปจํธ๋กค๋ฌ์ ์๋ฆผ
2๏ธโฃ SDN ์ปจํธ๋กค๋ฌ๊ฐ ๋ฉ์์ง๋ฅผ ์์ โ ๋ด๋ถ ๋งํฌ ์ํ ์ ๋ณด(link-state info) ๊ฐฑ์
3๏ธโฃ ๋ฑ๋ก๋ ๋ค์ต์คํธ๋ผ(Dijkstra) ์๊ณ ๋ฆฌ์ฆ ํธ์ถ โ ์๋ก์ด ๊ฒฝ๋ก ๊ณ์ฐ
4๏ธโฃ ์ปจํธ๋กค๋ฌ๋ ๋คํธ์ํฌ ๊ทธ๋ํ์ ๋งํฌ ์ํ ๊ธฐ๋ฐ์ผ๋ก ์ต์ ๊ฒฝ๋ก ๊ณ์ฐ
5๏ธโฃ ๊ณ์ฐ ๊ฒฐ๊ณผ ๊ธฐ๋ฐ์ผ๋ก ์ด๋ค ์ค์์น์ ์ด๋ค ๋ฃฐ์ด ํ์ํ์ง ๊ฒฐ์
6๏ธโฃ OpenFlow ํ๋กํ ์ฝ๋ก ์ค์์น๋ค์ flow table์ ์ ๋ฐ์ดํธ
| ๊ธฐ๋ฅ | ์ค๋ช |
|---|---|
| โ ์๋ฌ ๋ฆฌํฌํ | ๋ชฉ์ ์ง ํธ์คํธ/๋คํธ์ํฌ/ํฌํธ/ํ๋กํ ์ฝ ์ ๊ทผ ๋ถ๊ฐ ์ ๊ฒฝ๊ณ |
| ๐ ์์ฝ ์์ฒญ/์๋ต | ping ๋ช
๋ น์ด์ ๊ธฐ๋ฐ ๊ธฐ๋ฅ, ์ฐ๊ฒฐ ์ํ ํ์ธ์ฉ |
type, code| Type | Code | ์ค๋ช |
|---|---|---|
| 0 | 0 | Echo reply (ping ์๋ต) |
| 3 | 0~7 | Destination unreachable (๋คํธ์ํฌ, ํธ์คํธ, ํฌํธ ๋ฑ ๋๋ฌ ๋ถ๊ฐ) |
| 4 | 0 | Source quench (ํผ์ก ์ ์ด โ ํ์ฌ๋ ์ฌ์ฉ๋์ง ์์) |
| 8 | 0 | Echo request (ping ์์ฒญ) |
| 9 | 0 | Route advertisement |
| 10 | 0 | Router discovery |
| 11 | 0 | TTL expired (์ค๊ฐ ๋ผ์ฐํฐ์์ TTL ์์ง๋จ) |
| 12 | 0 | Bad IP header (์๋ชป๋ IP ํค๋) |
๐ฉ ICMP port unreachable ๋ฉ์์ง(type=3, code=3)๋ฅผ ๋ฐํ