SDN & Virtual Networking
소프트웨어 정의 네트워크(SDN)의 제어부/데이터부 분리 원리와 클라우드 환경의 가상 네트워크 터널링 기술을 다루는 학습 노드입니다.
Article
M
Me
hyunyoun's Blog
network-communicationnetworkcommunicationsdnvirtual-networkingnetwork-virtualizationlearningprogrammability9 min read
1. Overview
SDN 및 가상 네트워킹(SDN & Virtual Networking, SVN)은 무겁고 멍청한 하드웨어 라우터의 두뇌를 적출하여, 중앙의 똑똑한 소프트웨어 하나로 수만 대의 스위치를 조종하고 가상의 네트워크를 무한대로 찍어내는 현대 클라우드 인프라의 마법을 다룹니다.
과거에는 장비 하나하나에 관리자가 접속해 CLI를 두드려야 했지만, 학습자는 **제어부(Control Plane)**와 **데이터 전송부(Data Plane)**를 물리적으로 찢어발기는 SDN(Software-Defined Networking) 철학을 배웁니다. 나아가 기존 물리망(Underlay)의 제약을 비웃으며 IP 패킷 안에 또 다른 이더넷 프레임을 숨겨 날리는(캡슐화) 오버레이(Overlay) 기술의 극치, VXLAN을 해부합니다. 이를 통해 AWS VPC나 쿠버네티스 CNI의 근간이 되는 '가상 네트워크'를 코드로 지휘하는 능력을 갖춥니다.
2. Scope & Boundaries
In-Scope
- SDN 아키텍처 (SDN Architecture): Control Plane vs Data Plane 분리, 컨트롤러(Controller)의 중앙 집중 논리, OpenFlow 물리.
- 오버레이 네트워킹 (Overlay Networks): 물리망(Underlay) 위를 달리는 논리망(Overlay), VXLAN 및 NVGRE 캡슐화 역학, MAC-in-UDP 기전.
- 가상 스위치 메커니즘 (Virtual Switches): Open vSwitch(OVS), 네임스페이스(Namespace) 기반의 L2 브리지(Bridge) 물리, 하이퍼바이저 통신.
- 네트워크 기능 가상화 (NFV): 방화벽, 로드 밸런서 등의 하드웨어 어플라이언스를 소프트웨어(VM/Container)로 대체하는 VNF 아키텍처.
Out-of-Scope
- 클라우드 벤더(AWS/GCP) 특정 네트워크 UI 설정: "AWS에서 VPC 체크박스 누르는 법" 같은 벤더 종속적 튜토리얼 07-07. Cloud-Native & Serverless Evolution 영역으로 위임.
- 하드웨어 라우터 칩(ASIC) 설계: 시스코(Cisco) 장비 내부의 실리콘 라우팅 테이블 구조 02-01. Computer Architecture 영역으로 위임.
Boundaries
- SVN vs. Traditional Routing (08-03): RGI(08-03)가 '동네마다 있는 경찰(라우터)들이 무전기로 서로 길을 묻고(OSPF/BGP) 차량을 유도'하는 분산 통제라면, SVN(08-06)은 '관제탑(SDN Controller) 하나가 모든 도로의 신호등(스위치)을 한 번에 조작'하는 중앙 통제 패러다임입니다.
3. Counterexample
- 가상 머신의 네트워크를 물리망으로 오해 (Virtualization Fallacy): AWS 인스턴스 간 핑(Ping)이 갈 때, 그 밑단에서 실제 구리선이나 스위치가 내 IP를 직접 알고 포워딩해 준다고 믿는 행위. 퍼블릭 클라우드의 언더레이(Underlay) 물리 장비들은 넷플릭스 유저의 사설 IP(
10.0.0.5) 따위는 알지도 못하고 관심도 없습니다. 데이터는 가상 스위치(VTEP)에 의해 거대한 UDP 패킷 안에 **통째로 캡슐화(VXLAN)**되어 물리망을 통과할 뿐입니다. 이 오버레이(Overlay) 캡슐화의 물리를 모르면 쿠버네티스의 파드(Pod) 간 통신 지연이나 MTU 이슈를 절대 디버깅할 수 없습니다. - SDN을 단순 중앙화 스크립트로 오해 (SDN Fallacy): 기존 시스코 라우터 100대에 텔넷(Telnet)으로 접속해 스크립트를 뿌리는 것을 "우리는 SDN을 한다"고 착각하는 행위. 진정한 SDN은 스크립트 배포가 아니라, 네트워크 장비에서 '경로를 생각하는 두뇌(Control Plane)' 자체를 물리적으로 뽑아내어 컨트롤러에 몰아넣고, 장비는 오직 '컨트롤러가 시키는 대로 패킷을 넘기는 바보(Data Plane, OpenFlow)'로 전락시키는 근본적인 아키텍처 혁명입니다.
4. Prerequisites
- 네트워크 기초 및 캡슐화 (Basic): 데이터 링크 계층(L2) 프레임과 네트워크 계층(L3) 패킷이 구조적으로 어떻게 생겼는지(특히 MTU 크기) 알아야 캡슐화를 이해합니다. (08-01. NFS)
- 운영체제 및 가상화 기전 (Recommended): 도커(Docker) 컨테이너가 어떻게 호스트와 네트워크 네임스페이스를 분리하여 가상 IP를 가지는지 이해해야 합니다. (03-03. Virtualization Physics)
5. Learning Map
6. Learning Topics
Basic
Core Topic 01: SDN 아키텍처와 계층 분리 (SDN Foundations)
- Why to Learn: 새로운 비즈니스 요구가 생길 때마다 네트워크 장비를 뜯어고치는 대신, 소프트웨어 코드 몇 줄로 전체 트래픽을 통제하기 위함입니다.
- What to Learn:
- Concepts: SDN의 철학, 제어 평면(Control Plane)과 데이터 평면(Data Plane)의 완전한 분리.
- Skills: SDN 컨트롤러(두뇌)의 역할, 스위치(손발)의 포워딩 엔진 구조, 3계층 아키텍처(App, Control, Infrastructure Layer).
- Tools: Mininet (SDN 에뮬레이터).
- Trade-offs: "야, 모든 트래픽을 보안 서버로 우회시켜!"라고 명령 한 번에 수만 대의 장비를 통제하는 압도적 민첩성 vs 그 중앙 컨트롤러 하나가 죽거나 해킹당하면 네트워크 전체가 즉시 마비되는 단일 장애점(SPOF) 리스크.
- How to Learn:
- 1단계: Mininet을 이용해 스위치 3대와 호스트 4대를 가상으로 띄우되, 컨트롤러를 끈 상태에서 핑(Ping)을 날려 스위치들이 아무것도 못 하는 '바보 상태'임을 확인합니다.
- 2단계: 컨트롤러(예: RYU Controller)를 기동하는 순간, 컨트롤러가 스위치들에게 포워딩 테이블(Flow Table)을 내려주며 핑이 정상적으로 통과하기 시작하는 제어권 인가(Provisioning) 과정을 관찰합니다.
- Implement: 전통적인 라우터 기반 기업망과 SDN 기반 기업망의 트래픽 우회(Traffic Engineering) 소요 시간 및 장비 의존성을 비교한 아키텍처 전환 보고서.
Recommended
Core Topic 02: OpenFlow 프로토콜 물리 (Programmable Flow)
- Why to Learn: 컨트롤러(뇌)와 스위치(손발)가 서로 어떤 언어로 대화하며 트래픽을 조작하는지 그 핏줄(API)을 해부하기 위해서입니다.
- What to Learn:
- Concepts: Southbound API (컨트롤러 장비), Northbound API (애플리케이션 컨트롤러), OpenFlow.
- Skills: Flow Table 구조 (Match, Action, Stats), Packet-In과 Flow-Mod 메시지 역학, Proactive vs Reactive 흐름 설정.
- Tools: Wireshark (OpenFlow 패킷 분석).
- Trade-offs: 스위치가 모르는 패킷이 들어올 때마다 컨트롤러에 물어보는 방식(Reactive)의 높은 유연성 vs 첫 패킷의 지연 시간 증가 및 컨트롤러 폭주(DDoS) 취약성.
- How to Learn:
- 1단계: 스위치에 처음 보는 MAC 주소의 패킷이 도착했을 때, 스위치가 이를 버리지 않고 패킷의 앞단(Header)만 잘라서 컨트롤러에 올리는
Packet-In동작의 물리를 스케치합니다. - 2단계: 컨트롤러가 이를 받아보고 "아, 이 IP는 2번 포트로 보내(Action)"라는 룰을 담은
Flow-Mod메시지를 스위치에 주입(Injection)하여 흐름(Flow)을 완성하는 과정을 Wireshark로 캡처합니다.
- 1단계: 스위치에 처음 보는 MAC 주소의 패킷이 도착했을 때, 스위치가 이를 버리지 않고 패킷의 앞단(Header)만 잘라서 컨트롤러에 올리는
- Implement: 특정 IP(악성 서버)로 향하는 트래픽을 감지하면, 즉각적으로 SDN 컨트롤러를 통해 모든 스위치에 "해당 IP를 향하는 패킷은 0번 포트(Drop)로 버려라"라는 플로우를 주입하는 방화벽 스크립트 작성.
Practical
Core Topic 03: 가상 네트워킹과 오버레이 터널링 (VXLAN & Overlay)
- Why to Learn: 클라우드 서비스(AWS VPC 등)에서 어떻게 수만 개의 회사가 '10.0.0.0/16'이라는 똑같은 IP 대역을 쓰는데도 서로 충돌하지 않는지 그 격리의 마법을 풀기 위함입니다.
- What to Learn:
- Concepts: 언더레이(Underlay) 네트워크 vs 오버레이(Overlay) 네트워크, 캡슐화 터널링(Tunneling).
- Skills: VLAN의 한계(4096개) 돌파, VXLAN (MAC-in-UDP) 프레임 구조, VTEP(VXLAN Tunnel End Point) 물리.
- Tools: Open vSwitch (OVS), Linux
ip link명령어. - Trade-offs: 물리적 서버 위치와 상관없이 논리적 망을 마음대로 묶었다 풀 수 있는 궁극의 가상화 vs 패킷 겉면에 두꺼운 헤더(VXLAN 50바이트 추가)를 씌우느라 발생하는 MTU 초과 문제와 암복호화/캡슐화 CPU 오버헤드.
- How to Learn:
- 1단계: 호스트 A(뉴욕)의 가상 머신과 호스트 B(런던)의 가상 머신이 같은 L2 네트워크(스위치)에 묶여 있는 것처럼 통신하지만, 실제로는 그 이더넷 프레임이 커다란 외부 UDP 패킷에 담겨(MAC-in-UDP) 대서양을 건너는 구조를 분해합니다.
- 2단계: VTEP 역할을 하는 가상 스위치(OVS)가 내부 VM의 패킷을 받아 VXLAN 헤더를 씌우고 물리망으로 쏘아 보내는 캡슐화 지점의 동작을 리눅스 환경에서 실습합니다.
- Implement: 2대의 물리 서버 위에 각각 2개씩 도커(Docker) 컨테이너를 띄우고, VXLAN 오버레이 네트워크를 수동으로 설정하여 물리 서버를 뛰어넘어 4대의 컨테이너가 로컬 망처럼 통신하는 아키텍처 구축.
Advanced
Core Topic 04: NFV와 클라우드 네이티브 네트워크 (Cloud Fabric & CNI)
- Why to Learn: 비싸고 무거운 하드웨어 방화벽이나 로드 밸런서 장비들을 치워버리고, 평범한 리눅스 서버 위에서 소프트웨어로 모든 네트워크 기능을 찍어내기 위해서입니다.
- What to Learn:
- Concepts: NFV(Network Function Virtualization), VNF(Virtual Network Function), 서비스 체이닝(Service Chaining).
- Skills: 쿠버네티스 CNI(Container Network Interface) 동작 원리(Calico, Flannel), DPDK(Data Plane Development Kit)를 이용한 유저 공간(User Space) 패킷 고속 처리 물리.
- Tools: Kubernetes, Calico BGP, eBPF 기초.
- Trade-offs: 코드로 방화벽 수백 대를 1분 만에 찍어내는 극강의 탄력성 vs OS 커널 스택(인터럽트, 컨텍스트 스위칭)을 거치면서 발생하는 소프트웨어 처리 속도의 태생적 한계(이를 극복하기 위해 DPDK나 eBPF 도입 필수).
- How to Learn:
- 1단계: 외부 트래픽이 웹 서버로 들어가기 전, [방화벽 VNF IDS VNF 로드 밸런서 VNF] 순서대로 강제 통과하도록 SDN 컨트롤러가 경로를 꼬아버리는 서비스 체이닝(Service Chaining)의 궤적을 그립니다.
- 2단계: 쿠버네티스 환경에서 파드(Pod) 하나가 생성될 때, CNI 플러그인이 호스트의 네트워크 네임스페이스를 쪼개고 가상 이더넷 인터페이스(
vethpair)를 꽂아 IP를 할당하는 리눅스 커널의 물리를 뜯어봅니다.
- Implement: 소프트웨어 로드 밸런서(HAProxy)와 가상 라우터를 리눅스 네임스페이스 위에 구성하여, 트래픽 유입량에 따라 로드 밸런서 VNF 인스턴스가 스케일 아웃(Scale-out)되며 부하를 나누는 NFV 데모 아키텍처 구현.
7. Terminology
8. References
Primary References
- [P1] CS2023: NC-Software-Defined Networking — SDN 핵심 원리와 제어 평면 이론.
- [P1] CS2023: NC-Networked Applications — 가상화 기반 응용 계층 네트워킹.
Secondary References
- [SDN: Software Defined Networks] Thomas D. Nadeau — SDN 아키텍처 및 구현 가이드.
- [Network Virtualization] Victor Moreno — 하이브리드 클라우드와 오버레이 네트워크 상세 분석.
Industry References
- [ONF] OpenFlow Switch Specification — SDN 기술의 시초이자 핵심 통신 표준.
- [VMware/Cisco] VXLAN Fundamentals — 클라우드 네트워킹에서 VXLAN의 실무 적용 케이스.
9. Final Checklist
Primary Checklist
- SDN의 '중앙 집중식 제어'가 전통적 '분산 제어' 라우팅 방식에 비해 변화 대응 및 일관성 측면에서 갖는 물리적 이점을 설명할 수 있는 있는가? (P1-NC)
- Control Plane과 Data Plane이 분리되었을 때, 패킷이 도착한 후 실제 포워딩이 이루어지기까지의 순차적 단계(Flow Lookup 등)를 기술할 수 있는가? (P1-NC-SD)
Secondary Checklist
- VXLAN 캡슐화 시 사용되는 외부(Outer) IP/UDP 헤더와 내부(Inner) 이더넷 헤더의 역할 차이를 명확히 구분할 수 있는가?
- OpenFlow에서 'Match' 조건이 일치하지 않을 때(Miss) 발생하는 동작과 컨트롤러의 개입 과정을 설명할 수 있는가?
Industry Checklist
- 실무 클라우드 환경에서 멀티 테넌시 격리가 필요한 상황에 VLAN보다 VXLAN이 적합한 물리적 이유(ID 범위 및 L3 통과 가능성)를 제시할 수 있는가?
- 마이크로서비스 간의 복잡한 트래픽 제어를 위해 SDN 기반의 서비스 메시(Service Mesh)를 도입할 때의 이득과 관리 오버헤드를 비교 분석할 수 있는 있는 있는가?