🌐 Chapter 4: The Network Layer — Data Plane
4.1 Overview of the Network Layer

🔹 역할
- 송신측 host의 segment를 수신측 host로 전달
- 모든 router와 host에 존재
송수신 처리
- 송신측: segment → datagram으로 encapsulate
- 수신측: datagram → segment 추출 후 transport layer로 전달
🔧 주요 기능
| 기능 | 설명 |
|---|
| Forwarding | Router input에 들어온 packet을 적절한 output port로 이동 |
| Routing | Source에서 destination까지 packet 경로 결정 (routing algorithm 사용) |
➡️ forwarding table에 따라 header 정보를 기반으로 output port 탐색
🧩 Data Plane vs Control Plane
| Plane | 설명 | 수행 주체 |
|---|
| Data Plane | 개별 router가 input → output port로 forwarding. | local, per-router |
| Control Plane | 여러 router 간 경로 계산 협의 (routing) | distributed or centralized |
⚙️ Data Plane
-
local, per-router function, 라우터 하나가 자기 혼자서 수행하는 작업이고, 다른 라우터와 협의 없이도 처리할 수 있는 기능. | local, per-router |
-
forwarding: input datagram → output port로 전달
🧠 Control Plane
- network-wide logic, 각 라우터가 단독으로 판단하는 게 아니라, 여러 라우터 간의 정보 교환을 통해 경로를 계산하는 논리 기반.
- 라우터 간 협력 기반 경로 계산 → routing 결정
방식 1: Traditional Routing Algorithms
- 각 라우터가 알고리즘 구성요소 보유
- 라우터 간 정보 교환으로 routing 결정

방식 2: Software-Defined Networking (SDN)
- 중앙의 controller가 모든 라우터(local agents)와 상호작용
- remote controller가 global routing 결정

📡 Network Service Model
Network Layer가 제공할 수 있는 서비스 유형
| 서비스 | 설명 |
|---|
| Guaranteed Delivery | 패킷이 목적지에 반드시 도달함을 보장 |
| Guaranteed Delivery w/ Bounded Delay | 특정 시간 이내 도달 보장 (예: 100ms 이내) |
| In-order Delivery | 순서 보장 (전송 순서 == 수신 순서) |
| Guaranteed Minimal Bandwidth | 최소 대역폭 확보 (예: 1 Mbps 이상 처리 보장) |
| Security | 암호화 및 복호화 통한 기밀성 보장 |
🌍 실제 인터넷 서비스
- Best-Effort Delivery만 제공
- 도달 여부, 지연, 순서, 보안 어느 것도 보장하지 않음
💡 ATM (Asynchronous Transfer Mode)
- QoS 보장형 네트워크
- in-order delivery, bounded delay, minimal bandwidth 보장
4.2 What’s Inside a Router

Router가 외부 링크에서 packet을 받아들일 때 가장 처음 작동하는 부분.

구성 요소
-
Physical Layer Termination
- 링크로부터 신호 수신, router 내부로 전달
-
Link Layer Processing
- Frame 처리 (decoding, CRC, MAC 검사 등)
-
Forwarding Table Lookup
- header 분석 → 목적지 IP 기반으로 forwarding table 조회
- 적절한 output port 결정
⚠️ 병목 이슈
- Queuing: forwarding 속도 < 도착 속도
- Buffer Overflow: 패킷 손실 발생 가능
- HOL Blocking: 맨 앞 패킷 때문에 뒤에 있는 패킷까지 지연

Forwarding 방식
| 방식 | 설명 |
|---|
| Destination-based | 목적지 IP만 기반 (전통적) |
| Generalized (SDN) | 다양한 header field 기반 |
✅ Longest Prefix Matching
- 여러 경로가 일치할 때 가장 긴 접두어를 가진 경로 선택
🔁 Switching Fabric
라우터 내부 네트워크: input port → output port 연결

종류
- Memory-based
- Bus-based
- Crossbar-based
➡️ switching rate: forwarding 처리 속도 최대치
🔃 Output Ports
Switching Fabric으로부터 받은 패킷을 저장하고, 출력 링크를 통해 전송
필요한 링크 계층 및 물리 계층 작업 수행

역할
- 패킷을 전송 직전까지 저장
- 링크 계층, 물리 계층 처리
- 버퍼링 필요 (fabric → output link 간 속도 차이)

📤 Scheduling (전송 순서 결정)
| 방식 | 설명 |
|---|
| FIFO | 선입선출 |
| Priority | 우선순위 높은 패킷 먼저 |
| Round Robin | 각 queue를 순차적으로 탐색 |
| WFQ | 가중치 기반 공정 큐잉 |
FIFO

Priority

Round Robin

WFQ (Weighted Fair Queuing)
- RR + Priority 개념 혼합
- 흐름별 공정하고 효율적

4.3 IP: Internet Protocol

(32bit = 4byte)
TCP Header: 32bit × 5 = 20byte
IP Header: 32bit × 5 = 20byte
총 40byte + Application Layer Overhead
✂️ Fragmentation

- MTU(Max Transfer Unit)에 따라 link-level frame의 최대 크기 제한
- datagram을 여러 조각으로 fragmentation
- 수신지에서 재조립 reassembly
- IP header bit를 활용해 fragmented datagram 사이의 순서 식별 가능.

- datagram header 크기(20byte) 고려 필요.
- 4000byte datagram = 20byte header + 3980byte data
- Offset: 조각 순서
- ID: 같은 datagram 조각 묶음 식별
🧭 IPv4 Addressing
- IPv4: 32bit (약 42억 개)
- 각 interface에 할당됨 (host/router의 링크 단위)
interface: host/router 간 연결의 physical link. 각 interface마다 ip 주소 할당됨.
router: network layer
switch: link layer
구조
- Subnet part (상위 비트): 네트워크 식별
- Host part (하위 비트): 네트워크 내 장비 식별

8bit 단위로 끊어서 표현.
Subnet
- 물리적으로 서로 직접 접근 가능한 네트워크
- subnet mask 사용 → 네트워크/호스트 영역 분리

📏 CIDR (Classless Inter-Domain Routing)
a.b.c.d/x 형식, x = subnet 길이
- Subnet 길이를 자유롭게 설정 가능

📡 IP 주소 할당 방식
- 수동 (관리자 설정)
- 자동: DHCP 사용
🔄 DHCP (Dynamic Host Configuration Protocol)
- Plug-and-play 방식. server로부터 IP 주소를 동적으로 할당받음.
- IP 주소 재사용 가능 (IP 주소 임대 기반)
절차
- DHCP Discover (Broadcast) - optional
- DHCP Offer - optional
- DHCP Request
- DHCP ACK


서로의 IP 주소를 모르기 때문에 통신은 모두 broadcast로 진행.
DHCP 서버 자신의 IP 주소는 클라이언트가 어느 서버로부터 IP를 할당받을지를 결정하고,그 선택을 Request 메시지에서 명시하기 위한 서버 식별자 역할을 수행함
DHCP는 다음 정보를 함께 제공:
- Subnet Mask
- Default Gateway (client를 위한 first-hop router의 주소)
- DNS Server
🏛 Subnet Address 할당
- ISP로부터 subnet block 할당 받음


총 8개의 조직이 연결되어야 하기때문에 subnet mask가 20에서 23으로 증가
➡️ Long Prefix Match 사용
🔁 NAT (Network Address Translation)

- 내부 사설 IP → 외부 공인 IP로 변환
- port 번호로 local network 내부 host 구분
NAT 장점
- ISP로부터 많은 IP 주소를 받을 필요 없음. IP 주소 절약
- 로컬 네트워크 내부의 주소 변경이 외부에 영향을 주지 않음. 내부 주소 변경 자유
- ISP를 바꿔도 로컬 네트워크 설정은 그대로 유지. 유지보수 용이성 향상, ISP 독립성
- 외부에서 내부 장치가 직접 접근되지 않음. 방화벽과 유사한 효과 제공, 보안 강화
⚙️ NAT 구현
- 외부로 전달되는 datagram의 출발지 IP, port number를 수정 후 전달
- 수정 전 정보 출발지 정보와 NAT 정보를 쌍으로 저장.
- 외부에서 유입되는 datagram의 목적지 IP와 port를 확인하고 NAT table 활용해 목적지 IP, port를 local network에 맞게 변경 후 전달.

- 포트 번호 16bit → 최대 60,000 연결 관리 가능
NAT 단점 / 논란
-
Network Layer 원칙 위배. router는 원래 network layer까지만 처리해야 하지만, NAT router는 port number, IP, MAC 모두 처리.
-
End-to-End 설계 위반. 네트워크는 간단하게, 복잡한 기능은 host에서 처리한다는 설계 원칙
-
App 구현 복잡성 증가
-
IPv6가 NAT 대안. IP 주소 부족 문제는 IPv6로 해결하는 것이 건강함.
🧪 IPv6 Addressing
신규 할당 가능한 IPv4 주소 부족해짐.
새로운 header format은 처리/포워딩 속도 증가. QoS 향상.

- 128bit 주소
- 고정 길이 40byte header
- checksum 제거, fragmentation 제거
- next header + 확장 헤더
- ICMPv6 사용
🕳 IPv6 전환 방식: Tunneling
- IPv6 → IPv4 datagram 내부에 encapsulate 후 전송


4.4 Generalized Forwarding & SDN
🧠 개요 (Overview)
- 각 라우터는 논리적으로 중앙화된 컨트롤러가 계산한 flow table을 가지고 있음
- 기존 라우터(router)보다 패킷 스위치(packet switch)라는 표현이 SDN에서 더 적절함

📘 OpenFlow
OpenFlow는 SDN(Software-Defined Networking)의 대표적 실현 기술이고, SDN의 개념을 처음으로 널리 구현한 프로토콜
- OpenFlow는 패킷 헤더 필드 조합 (flow) 단위로 동작함
- 전통적인 목적지 기반 포워딩(destination-based) 대신 일반화된 헤더 기반 매칭 사용
🔹 Flow 구성 요소 (Flow Table Components)
| 구성 요소 | 영어 | 설명 |
|---|
| 패턴 | Pattern (Match) | 어떤 조건의 패킷인지 정의 (IP, 포트 등) |
| 동작 | Action | 조건에 맞는 패킷에 수행할 행동 |
| 우선순위 | Priority | 여러 규칙이 겹칠 때 선택 기준 |
| 카운터 | Counter | 해당 흐름에서 처리된 바이트/패킷 수 |
⚙️ Action 종류 (Types of Action)
| 동작 | 영어 | 설명 |
|---|
| 전송 | Forward | 특정 포트로 전송 |
| 폐기 | Drop | 패킷 제거 |
| 수정 | Modify | 헤더 수정 (예: MAC/IP/Port 변경) |
| 컨트롤러 전송 | Send to controller | SDN 컨트롤러로 패킷 전달 |

🔍 OpenFlow Entry 구성 (Flow Table Entry)
| 구성 요소 | 영어 | 설명 |
|---|
| 규칙 | Rule | 헤더 기반 매칭 조건 |
| 동작 | Action | 매칭된 패킷에 수행할 작업 |
| 통계 | Stats | 해당 규칙으로 처리된 패킷 수 및 바이트 수 |
📑 Match-Action 모델 비교 (Per Device)
| 장비 | 영어 | Match 기준 | Action |
|---|
| 라우터 | Router | 목적지 IP 주소 (Longest Prefix Match) | 해당 목적지로 포워딩 |
| 스위치 | Switch | 목적지 MAC 주소 | 특정 포트로 전송 or 브로드캐스트 |
| 방화벽 | Firewall | IP/Port 등 | 허용(permit) 또는 차단(deny) |
| NAT | NAT | 내부 IP + Port | 공인 IP/Port로 변환 후 전송 |
