Datacenter Network Topology
3-Tier vs Spine-Leaf ๊ตฌ์กฐ, ECMP, Oversubscription, VXLAN/BGP
๐ฏ ๊ฐ์โ
| ํ ํด๋ก์ง | ์๋ | ํน์ง |
|---|
| 3-Tier | ์ ํต | ๊ณ์ธต์ , North-South ์ต์ ํ |
| Spine-Leaf | ํ๋ | ํ๋ฉด์ , East-West ์ต์ ํ |
๐๏ธ ์ ํต 3-Tier ๊ตฌ์กฐโ
์ํคํ
์ฒโ
flowchart TB
Core["Core - Router"]
Agg1["Aggregation"]
Agg2["Aggregation"]
Agg3["Aggregation"]
Acc1["Access (L2)"]
Acc2["Access (L2)"]
Acc3["Access (L2)"]
Acc4["Access (L2)"]
Acc5["Access (L2)"]
Acc6["Access (L2)"]
S1["Servers"]
S2["Servers"]
S3["Servers"]
S4["Servers"]
S5["Servers"]
S6["Servers"]
Core --> Agg1 & Agg2 & Agg3
Agg1 --> Acc1 & Acc2
Agg2 --> Acc3 & Acc4
Agg3 --> Acc5 & Acc6
Acc1 --> S1
Acc2 --> S2
Acc3 --> S3
Acc4 --> S4
Acc5 --> S5
Acc6 --> S6
3๊ณ์ธต ์ญํ โ
| ๊ณ์ธต | ์ฅ๋น | ์ญํ |
|---|
| Core | ๋ผ์ฐํฐ/L3 ์ค์์น | ์ธ๋ถ ์ฐ๊ฒฐ, ๊ณ ์ ๋ฐฑ๋ณธ |
| Aggregation | L3 ์ค์์น | ๋ผ์ฐํ
, ์ ์ฑ
, VLAN ์ง์ |
| Access | L2 ์ค์์น | ์๋ฒ/์๋ํฌ์ธํธ ์ฐ๊ฒฐ |
ํธ๋ํฝ ํจํดโ
North-South ํธ๋ํฝ:
flowchart TB
Internet["์ธํฐ๋ท/์ธ๋ถ"]
Core["Core"]
Servers["Servers"]
Internet <-->|"North-South"| Core
Core <--> Servers
ํด๋ผ์ด์ธํธ โ ์๋ฒ ๊ฐ ํธ๋ํฝ. ์ ํต์ ์น ์๋น์ค ํ๊ฒฝ.
์ฅ๋จ์ โ
| ์ฅ์ | ๋จ์ |
|---|
| ๊ฒ์ฆ๋ ๊ตฌ์กฐ | East-West ๋นํจ์จ |
| ๊ด๋ฆฌ ์ฉ์ด | STP ๋ณ๋ชฉ |
| ๊ณ์ธต๋ณ ์ญํ ๋ช
ํ | ํ์ฅ ์ ๋ณต์ก๋ ์ฆ๊ฐ |
| Oversubscription |
STP (Spanning Tree Protocol) ๋ฌธ์ โ
๋ฃจํ ๋ฐฉ์ง๋ฅผ ์ํด ์ผ๋ถ ๋งํฌ๋ฅผ ๋นํ์ฑํํจ โ ๋์ญํญ ๋ญ๋น.
flowchart TB
Agg["Aggregation"]
Acc1["Access 1"]
Acc2["Access 2"]
Agg --> Acc1
Agg --> Acc2
Acc1 -.->|"STP ์ฐจ๋จ - ๋ฃจํ ๋ฐฉ์ง"| Acc2
๐ฟ Spine-Leaf ๊ตฌ์กฐโ
์ํคํ
์ฒโ
flowchart TB
subgraph Spines["Spine Layer (๋ฐฑ๋ณธ)"]
S1["Spine 1"]
S2["Spine 2"]
S3["Spine 3"]
S4["Spine 4"]
end
subgraph Leaves["Leaf Layer (ToR)"]
L1["Leaf 1"]
L2["Leaf 2"]
L3["Leaf 3"]
L4["Leaf 4"]
L5["Leaf 5"]
end
S1 --- L1 & L2 & L3 & L4 & L5
S2 --- L1 & L2 & L3 & L4 & L5
S3 --- L1 & L2 & L3 & L4 & L5
S4 --- L1 & L2 & L3 & L4 & L5
L1 --- R1["Rack 1"]
L2 --- R2["Rack 2"]
L3 --- R3["Rack 3"]
L4 --- R4["Rack 4"]
L5 --- R5["Rack 5"]
ํต์ฌ: ๋ชจ๋ Leaf๊ฐ ๋ชจ๋ Spine์ ์ฐ๊ฒฐ.
2๊ณ์ธต ์ญํ โ
| ๊ณ์ธต | ์ญํ | ํน์ง |
|---|
| Spine | ๋ฐฑ๋ณธ, Leaf ๊ฐ ์ฐ๊ฒฐ | ์๋ฒ ์ง์ ์ฐ๊ฒฐ ์์ |
| Leaf | ์๋ฒ/ToR ์ฐ๊ฒฐ | Top of Rack ์ค์์น |
ํธ๋ํฝ ํจํดโ
East-West ํธ๋ํฝ:
flowchart LR
SA["Server A (Leaf 1)"]
Spine["Spine (1ํ)"]
SB["Server B (Leaf 3)"]
SA <-->|"East-West"| Spine <--> SB
ํ๋ ๋ฐ์ดํฐ์ผํฐ: ๋ง์ดํฌ๋ก์๋น์ค, ๋ถ์ฐ ์คํ ๋ฆฌ์ง, ๋น
๋ฐ์ดํฐ โ ์๋ฒ ๊ฐ ํต์ ํญ์ฆ.
์ฅ๋จ์ โ
| ์ฅ์ | ๋จ์ |
|---|
| East-West ์ต์ ํ | ์ด๊ธฐ ๋น์ฉ ๋์ |
| ์์ธก ๊ฐ๋ฅํ ์ง์ฐ (2ํ) | ์ผ์ด๋ธ๋ง ๋ณต์ก |
| STP ๋ถํ์ (ECMP) | ๊ธฐ์กด ์ธํ๋ผ ์ฌ์ค๊ณ |
| ๋น์ฐจ๋จ (Non-blocking) | |
| ์ฌ์ด ์ํ ํ์ฅ | |
๐ 3-Tier vs Spine-Leaf ๋น๊ตโ
| ํญ๋ชฉ | 3-Tier | Spine-Leaf |
|---|
| ๊ณ์ธต ์ | 3 | 2 |
| ์ต์ ํ ๋์ | North-South | East-West |
| ํ์ฅ์ฑ | ์์ง ํ์ฅ | ์ํ ํ์ฅ |
| ํ ์ | ๊ฐ๋ณ (1~4ํ) | ๊ณ ์ (2ํ ์ด๋ด) |
| ๋์ญํญ ํ์ฉ | STP๋ก ์ ํ | ECMP๋ก ์ ์ฒด ํ์ฉ |
| ์ค๋ฒ์๋ธ์คํฌ๋ฆฝ์
| ๋์ | ๋ฎ์/์์ |
| ์ง์ฐ | ๊ฐ๋ณ | ์์ธก ๊ฐ๋ฅ |
| ๋น์ฉ | ๋ฎ์ | ๋์ (์ด๊ธฐ) |
ํธ๋ํฝ ๋น๊ตโ
flowchart TB
subgraph ThreeTier["3-Tier (East-West ๋นํจ์จ)"]
direction LR
T_SA["Server A"] --> T_Acc1["Access"] --> T_Agg["Aggregation"] --> T_Acc2["Access"] --> T_SB["Server B"]
end
subgraph SpineLeaf["Spine-Leaf (East-West ์ต์ ํ)"]
direction LR
S_SA["Server A"] --> S_L1["Leaf 1"] --> S_Spine["Spine (ECMP)"] --> S_L2["Leaf 2"] --> S_SB["Server B"]
end
โ๏ธ ECMP (Equal-Cost Multi-Path)โ
๋์ผ ๋น์ฉ์ ์ฌ๋ฌ ๊ฒฝ๋ก๋ก ํธ๋ํฝ ๋ถ์ฐํจ.
flowchart LR
L1["Leaf 1"]
S1["Spine 1"]
S2["Spine 2"]
S3["Spine 3"]
L2["Leaf 2"]
L1 --> S1 --> L2
L1 --> S2 --> L2
L1 --> S3 --> L2
โ 3๊ฐ ๊ฒฝ๋ก ๋ชจ๋ ํ์ฑ, ํธ๋ํฝ ๋ถ์ฐ
STP vs ECMPโ
| ํญ๋ชฉ | STP | ECMP |
|---|
| ๋ฃจํ ๋ฐฉ์ง | ๋งํฌ ์ฐจ๋จ | ๋ผ์ฐํ
์ผ๋ก ํด๊ฒฐ |
| ํ์ฑ ๊ฒฝ๋ก | 1๊ฐ | ๋ชจ๋ |
| ๋์ญํญ | ๋ญ๋น | ์ ์ฒด ํ์ฉ |
| ๋ ์ด์ด | L2 | L3 |
๐ Oversubscriptionโ
์
๋งํฌ ๋์ญํญ ๋๋น ๋ค์ด๋งํฌ ์ดํฉ์ ๋น์จ.
์: Access ์ค์์น
- ์๋ฒ ํฌํธ: 1G x 48 = 48Gbps
- ์
๋งํฌ: 10G x 2 = 20Gbps
Oversubscription = 48:20 = 2.4:1
| ๊ตฌ์กฐ | ์ผ๋ฐ์ ์ธ ๋น์จ |
|---|
| 3-Tier | 4:1 ~ 20:1 |
| Spine-Leaf | 1:1 ~ 3:1 |
1:1 = Non-blocking (์ ์ฒด ๋์ญํญ ๋ณด์ฅ)
๐ ํ๋ ๋ฐ์ดํฐ์ผํฐ ์๊ตฌ์ฌํญโ
East-West ํธ๋ํฝ ์ฆ๊ฐ ์์ธโ
| ๊ธฐ์ | ํน์ง |
|---|
| ๋ง์ดํฌ๋ก์๋น์ค | ์๋น์ค ๊ฐ API ํธ์ถ ํญ์ฆ |
| ๋ถ์ฐ ์คํ ๋ฆฌ์ง | ๋
ธ๋ ๊ฐ ๋ณต์ (Ceph, HDFS) |
| ๋น
๋ฐ์ดํฐ | ํด๋ฌ์คํฐ ๋ด ๋ฐ์ดํฐ ์ด๋ |
| ๊ฐ์ํ/์ปจํ
์ด๋ | VM/์ปจํ
์ด๋ ๋ง์ด๊ทธ๋ ์ด์
|
| AI/ML | GPU ํด๋ฌ์คํฐ ๊ฐ ํต์ |
Spine-Leaf ์ ์ฉ ํ๊ฒฝโ
| ํ๊ฒฝ | ์ ํฉ๋ |
|---|
| ํด๋ผ์ฐ๋ ๋ฐ์ดํฐ์ผํฐ | โ |
| ๋๊ท๋ชจ ๊ฐ์ํ | โ |
| ๋น
๋ฐ์ดํฐ/AI ํด๋ฌ์คํฐ | โ |
| ์๊ท๋ชจ ๊ธฐ์
| โณ |
| ์ ํต์ ์น์๋น์ค | โ |
๐๏ธ Spine-Leaf ์ค๊ณ ๊ณ ๋ ค์ฌํญโ
1. Spine/Leaf ์ ๊ฒฐ์ โ
Leaf ์ค์์น: ์๋ฒ ์ / Leaf๋น ํฌํธ ์
Spine ์ค์์น: ์ํ๋ ๋์ญํญ / ์ค๋ฒ์๋ธ์คํฌ๋ฆฝ์
์:
- ์๋ฒ 1000๋, Leaf๋น 48ํฌํธ โ Leaf 21๋
- Leaf์ Spine ์ฐ๊ฒฐ์ฉ 4ํฌํธ โ Spine ์ต๋ 4๋
2. ํฌํธ ๋ฐ๋โ
| Leaf ์
๋งํฌ | Spine ์ | ์ด Leaf ์ (Spine 48ํฌํธ) |
|---|
| 2ํฌํธ | 2 | 96 |
| 4ํฌํธ | 4 | 192 |
| 8ํฌํธ | 8 | 384 |
3. ๋์ญํญ ๊ณ์ฐโ
Leaf๋น ์๋ฒ ๋์ญํญ: 25G x 48 = 1.2Tbps
Leaf ์
๋งํฌ: 100G x 4 = 400Gbps
Oversubscription = 1.2T / 400G = 3:1
๐ ๊ด๋ จ ๊ธฐ์ โ
Underlay vs Overlayโ
flowchart TB
subgraph Stack["๋คํธ์ํฌ ์คํ"]
Overlay["Overlay Network (VXLAN, NVGRE, Geneve)"]
Underlay["Underlay Network (Spine-Leaf ๋ฑ)"]
Overlay --> Underlay
end
| ๊ณ์ธต | ์ญํ |
|---|
| Underlay | ๋ฌผ๋ฆฌ์ ์ฐ๊ฒฐ, IP ๋ผ์ฐํ
|
| Overlay | ๊ฐ์ ๋คํธ์ํฌ, ํ
๋ํธ ๋ถ๋ฆฌ |
L2 ๋คํธ์ํฌ๋ฅผ L3 ์์ ํฐ๋๋งํจ.
flowchart LR
SA["Server A (VXLAN 100)"]
VTEP1["VTEP Encapsulate"]
IP["IP Network"]
VTEP2["VTEP Decapsulate"]
SB["Server B (VXLAN 100)"]
SA --> VTEP1 --> IP --> VTEP2 --> SB
BGP in Datacenterโ
Spine-Leaf์์ ๋ผ์ฐํ
ํ๋กํ ์ฝ๋ก BGP ์ฌ์ฉ์ด ์ฆ๊ฐํ๋ ์ถ์ธ์.
| ๊ธฐ์กด | ํ๋ DC |
|---|
| OSPF | BGP (eBGP) |
์ด์ :
- ํ์ฅ์ฑ
- ์ ์ฑ
์ ์ด
- ECMP ์ง์
- ๋ฉํฐ๋ฒค๋ ํธํ
๐ ์์ฝโ
ํต์ฌ ๋น๊ตโ
| ํญ๋ชฉ | 3-Tier | Spine-Leaf |
|---|
| ๊ตฌ์กฐ | ๊ณ์ธต์ | ํ๋ฉด์ |
| ์ต์ ํ | North-South | East-West |
| ํ์ฅ | ์์ง | ์ํ |
| ํ ์ | ๊ฐ๋ณ | ๊ณ ์ (2ํ) |
| ๊ธฐ์ | STP | ECMP, BGP |
์ ํ ๊ฐ์ด๋โ
| ํ๊ฒฝ | ๊ถ์ฅ |
|---|
| ์๊ท๋ชจ, ์ ํต์ | 3-Tier |
| ํด๋ผ์ฐ๋, ๊ฐ์ํ | Spine-Leaf |
| ๋น
๋ฐ์ดํฐ, AI | Spine-Leaf |
| ๋ง์ดํฌ๋ก์๋น์ค | Spine-Leaf |
๐ ๊ด๋ จ ๋ฌธ์โ
๐ ์ฐธ๊ณ ์๋ฃโ