1. Network Layer 개요

Network layer는 sending host에서 receiving host까지 transport layer segment를 전달하는 역할을 한다.

  • Sender: Transport layer에서 받은 segment를 datagram으로 encapsulate하여 link layer에 전달
  • Receiver: Link layer에서 받은 datagram에서 segment를 추출하여 transport layer에 전달
  • Network layer protocol은 모든 Internet device(host, router)에 구현되어 있다
  • Router는 통과하는 모든 IP datagram의 header field를 검사하고, input port에서 output port로 이동시킨다

1.1 두 가지 핵심 기능: Forwarding과 Routing

  • Forwarding (Data Plane): Router에 도착한 packet을 적절한 output link로 이동시키는 local, per-router 기능. 하드웨어에서 nanosecond 단위로 동작
  • Routing (Control Plane): Source에서 destination까지의 전체 경로를 결정하는 network-wide 기능. 소프트웨어에서 millisecond 단위로 동작

1.2 Data Plane vs Control Plane

Data Plane

  • Local, per-router 기능
  • Input port에 도착한 datagram을 어떤 output port로 forwarding할지 결정
  • Forwarding table(또는 flow table)의 값을 기반으로 동작

Control Plane

  • Network-wide 로직
  • Source에서 destination까지 datagram이 어떤 경로로 이동할지 결정
  • 두 가지 접근법이 있다:

Traditional routing algorithm (Per-router control plane):

각 router에서 routing algorithm이 독립적으로 실행되고, router끼리 정보를 교환하여 forwarding table을 구성한다.

Software-Defined Networking (SDN):

Remote controller가 전체 네트워크의 forwarding table을 계산하여 각 router에 설치한다. Control plane이 router에서 분리되어 중앙 서버에서 실행된다.

1.3 Network Service Model

Network layer가 제공하는 서비스의 수준, 즉 “channel”의 품질을 정의하는 것이 service model이다.

개별 datagram에 대한 서비스와 datagram flow에 대한 서비스로 나뉜다:

서비스 유형예시
개별 datagramGuaranteed delivery, 40 msec 이내 delivery
Datagram flowIn-order delivery, 최소 대역폭 보장, packet 간격 제한

Internet의 service model은 “best effort”다. Bandwidth, loss, order, timing 어느 것도 보장하지 않는다. 단순해 보이지만, 이 단순함이 Internet의 성공 요인이다:

  • 메커니즘이 단순하여 대규모 배포가 가능
  • 충분한 대역폭 확보로 실시간 서비스도 “충분히 좋은” 성능
  • CDN, replicated service가 보완
  • Congestion control이 elastic 서비스를 지원

2. Router 내부 구조

Router는 크게 세 부분으로 구성된다:

  • Input ports: Physical/link layer 수신, forwarding table lookup, queueing
  • High-speed switching fabric: Input port에서 output port로 datagram을 전달
  • Output ports: Queueing, scheduling, physical/link layer 송신

상단의 routing processor는 control plane(software)에서 동작하며, routing protocol 실행, forwarding table 관리 등을 담당한다.

2.1 Input Port 기능

Input port에서의 핵심 동작:

  1. Line termination: Physical layer - bit 수신
  2. Link layer protocol: Frame 처리 (예: Ethernet)
  3. Lookup/forwarding: Header field 값으로 forwarding table을 조회하여 output port 결정 (“match plus action”)
  4. 목표: input port 처리를 line speed에 완료 - datagram이 도착하는 속도와 같은 속도로 처리

Forwarding 방식:

  • Destination-based forwarding: Destination IP address만으로 forwarding (전통적)
  • Generalized forwarding: Header의 여러 field 값을 조합하여 forwarding (SDN)

Longest Prefix Matching

Destination-based forwarding에서는 forwarding table의 여러 entry가 매칭될 수 있다. 이때 가장 긴 prefix가 일치하는 entry를 선택한다.

예를 들어 forwarding table에 다음 entry가 있다면:

Destination Address PrefixLink Interface
11001000 00010111 00010*** ********0
11001000 00010111 00011000 ********1
11001000 00010111 00011*** ********2
otherwise3

주소 11001000 00010111 00010110 10100001은 entry 0과 매칭 (21 bits 일치).
주소 11001000 00010111 00011000 10101010은 entry 1과 2에 모두 매칭되지만, entry 1이 더 긴 prefix(24 bits)와 일치하므로 interface 1로 forwarding.

Longest prefix matching은 하드웨어의 TCAM (Ternary Content Addressable Memory)으로 구현되어, table 크기와 무관하게 1 clock cycle에 조회가 가능하다. Cisco Catalyst: ~1M routing table entries.

2.2 Switching Fabric

Switching fabric은 input port에서 output port로 packet을 전달하는 내부 경로다. Switching rate는 input/output line rate의 배수로 측정되며, N개의 input이 있으면 이상적으로 N배가 바람직하다.

세 가지 주요 유형:

Switching via Memory

  • 1세대 router: CPU가 직접 제어
  • Packet이 system memory에 복사되고, CPU가 destination을 확인한 뒤 output port memory에 복사
  • 속도가 memory bandwidth에 제한됨 (datagram당 bus를 2번 통과)

Switching via Bus

  • Shared bus를 통해 input port memory에서 output port memory로 직접 전송
  • Bus contention: bus bandwidth에 의해 switching 속도가 제한
  • 예: Cisco 5600, 32 Gbps bus - access router에 적합

Switching via Interconnection Network

  • Crossbar, Clos network 등 병렬 switching 구조
  • Datagram을 고정 크기 cell로 분할하여 fabric을 통과시키고, output에서 재조립
  • 병렬성을 활용하여 bus 방식의 bandwidth 한계를 극복
  • 예: Cisco CRS - 8개 switching plane, 각 plane이 3-stage interconnection network. 100+ Tbps switching capacity

2.3 Input Port Queueing

Switching fabric의 속도가 input port의 합산 속도보다 느리면, input port에서 queueing이 발생한다.

HOL (Head-of-Line) Blocking: Queue의 맨 앞에 있는 datagram이 output port 충돌 때문에 대기하면, 그 뒤에 있는 datagram(다른 output port로 가려는)도 함께 막힌다. 이로 인해 throughput이 이론적 한계의 약 58%로 제한될 수 있다.

2.4 Output Port Queueing

Switching fabric에서 도착하는 속도가 output link 전송 속도보다 빠르면 output port에서 buffering이 필요하다.

  • Buffer가 가득 차면 packet이 drop된다 - Drop policy가 필요
  • Scheduling discipline: Queue에서 어떤 packet을 다음에 전송할지 결정

Buffer 크기 결정

  • RFC 3439 권장: 평균 buffer = typical RTT (250 ms) x link capacity
    • 예: = 10 Gbps 2.5 Gbit buffer
  • 개의 flow가 있는 경우 최근 권장:
  • 너무 큰 buffer는 delay를 증가시킨다 (bufferbloat 문제) - delay-based congestion control의 “keep bottleneck link just full enough, but no fuller” 원칙

2.5 Packet Scheduling

Buffer에 여러 packet이 대기 중일 때, 어떤 packet을 먼저 전송할지 결정하는 정책이다.

FCFS (First Come First Served)

도착 순서대로 전송. FIFO라고도 한다. 가장 단순하지만 traffic class 간 차별화가 불가능.

Priority Scheduling

  • 도착하는 packet을 class별로 분류하여 별도의 queue에 저장
  • 가장 높은 priority의 queue에서 먼저 packet을 전송
  • 같은 priority 내에서는 FCFS

Round Robin (RR)

  • Traffic을 class별로 분류
  • 각 class의 queue를 순환하며, 각 class에서 하나의 packet을 전송
  • 모든 class가 공평하게 서비스를 받음

Weighted Fair Queueing (WFQ)

  • Round Robin의 일반화
  • 각 class 에 weight 를 부여하여, 각 cycle에서 weight에 비례한 서비스를 받음
  • Class 의 보장 대역폭: (단, 은 link rate)
  • Per-traffic-class minimum bandwidth를 보장

2.6 Network Neutrality

Network neutrality는 ISP가 자원을 어떻게 공유/할당해야 하는지에 대한 기술적, 사회적, 법적 이슈다.

2015 US FCC “Open Internet” 규칙:

  • No blocking: 합법적 컨텐츠, 서비스, 장치를 차단하지 않을 것
  • No throttling: 합법적 Internet 트래픽을 컨텐츠나 서비스에 따라 의도적으로 저하시키지 않을 것
  • No paid prioritization: 유료 우선 처리를 하지 않을 것

3. IP: Internet Protocol

Internet network layer의 핵심 구성 요소:

  • IP protocol: Datagram format, addressing, packet handling conventions
  • Routing protocols (OSPF, BGP): Path selection - forwarding table을 구성 (Chapter 5에서 다룸)
  • ICMP protocol: Error reporting, router signaling

3.1 IP Datagram Format

IPv4 datagram header는 20 bytes (options 제외):

Field크기설명
Version4 bitsIP protocol version (4 = IPv4)
Header length4 bitsHeader 길이 (32-bit word 단위)
Type of Service (ToS)8 bitsDiffserv (0:5), ECN (6:7)
Total length16 bitsHeader + data의 전체 길이 (bytes). 최대 64KB
Identification, Flags, Fragment offset32 bitsFragmentation/reassembly 관련
TTL (Time to Live)8 bits남은 최대 hop 수. 각 router에서 1 감소, 0이 되면 datagram drop
Upper layer protocol8 bits상위 프로토콜 (6=TCP, 17=UDP)
Header checksum16 bitsHeader의 오류 검출
Source/Dest IP address각 32 bits송수신 호스트의 IP 주소
Options가변선택적 (timestamp, record route 등)

Overhead: TCP segment를 전송할 때, TCP header 20 bytes + IP header 20 bytes = 40 bytes + application layer overhead.

3.2 IP Addressing

IP address: Host 또는 router의 interface에 할당되는 32-bit 식별자.

  • Interface: Host/router와 physical link 사이의 연결 지점
  • Router는 보통 여러 interface를 가짐
  • Host는 보통 1~2개 interface (유선 Ethernet, 무선 WiFi)

Subnet

Subnet은 router를 거치지 않고 서로 물리적으로 도달할 수 있는 device interface의 집합이다.

IP address는 두 부분으로 구성된다:

  • Subnet part (high-order bits): 같은 subnet의 device는 공통 prefix를 공유
  • Host part (low-order bits): Subnet 내에서 개별 device를 식별

Subnet을 식별하는 방법: Router의 각 interface를 분리(“detach”)하면 생기는 “isolated island”가 하나의 subnet이다.

Subnet mask /x는 상위 x bits가 subnet part임을 나타낸다. 예: 223.1.1.0/24

Classful Addressing (구식)

과거에는 IP address를 고정된 class로 나누었다:

  • Class A (0~127): /8, 16,777,216 hosts per network
  • Class B (128~191): /16, 65,536 hosts per network
  • Class C (192~223): /24, 256 hosts per network

문제: 너무 경직된 구조. Class B는 대부분의 조직에 너무 크고, Class C는 너무 작다.

CIDR (Classless InterDomain Routing)

CIDR (발음: “cider”)은 classful의 한계를 극복한다.

  • Subnet part의 길이가 임의일 수 있다: a.b.c.d/x
  • 예: 200.23.16.0/23 - 상위 23 bits가 subnet part, 하위 9 bits가 host part ( hosts)

CIDR의 핵심 이점은 route aggregation이다:

ISP가 200.23.16.0/20 블록을 가지고 있으면, 이를 8개의 /23 블록으로 나누어 하위 조직에 할당할 수 있다. 외부에서는 ISP의 단일 /20 prefix만 광고하면 되므로 routing table이 간결해진다.

조직이 다른 ISP로 이전하는 경우, 새 ISP가 해당 조직의 /23을 more specific route로 별도 광고한다. Longest prefix matching 덕분에 올바른 ISP로 routing된다.

3.3 DHCP (Dynamic Host Configuration Protocol)

Host가 네트워크에 접속할 때 IP 주소를 동적으로 할당받는 프로토콜이다. “Plug-and-play” 방식.

DHCP의 4단계:

  1. DHCP Discover: Client가 broadcast (255.255.255.255)로 “DHCP 서버 있나요?” 전송
  2. DHCP Offer: DHCP server가 broadcast로 “이 IP 주소를 사용할 수 있습니다” 응답
  3. DHCP Request: Client가 broadcast로 “이 IP 주소를 사용하겠습니다” 확인
  4. DHCP ACK: Server가 broadcast로 “확인, 그 IP 주소는 당신 것입니다” 최종 승인

DHCP가 제공하는 정보 (IP 주소 외):

  • First-hop router (default gateway)의 주소
  • DNS server의 이름과 IP 주소
  • Network mask (network/host portion 구분)

IP address 할당 체계:

  • Host: DHCP로 자신의 IP 주소를 받음
  • Network: 상위 ISP의 address space에서 subnet block을 할당받음
  • ISP: ICANN (Internet Corporation for Assigned Names and Numbers)으로부터 5개의 Regional Registry (RR)를 통해 address block을 할당받음

3.4 NAT (Network Address Translation)

NAT는 local network의 모든 device가 외부에 대해 하나의 public IPv4 주소를 공유하는 기술이다.

  • 내부 device는 private IP address (10/8, 172.16/12, 192.168/16)를 사용
  • 외부와 통신 시, NAT router가 source IP와 port를 변환

장점:

  • ISP에서 하나의 IP만 구매하면 됨
  • 내부 네트워크의 주소 변경이 외부에 영향 없음
  • ISP를 변경해도 내부 주소를 바꿀 필요 없음
  • 내부 device가 외부에서 직접 접근 불가능 (보안)

NAT 동작 원리

  1. 내부 host 10.0.0.1:3345가 외부 128.119.40.186:80으로 datagram 전송
  2. NAT router가 source를 138.76.29.7:5001로 변환하고, NAT translation table(138.76.29.7:5001) <-> (10.0.0.1:3345) 매핑을 기록
  3. 외부 server의 응답이 138.76.29.7:5001로 도착
  4. NAT router가 table을 참조하여 destination을 10.0.0.1:3345로 복원하고 내부로 전달

16-bit port field로 약 65,000개의 동시 연결을 하나의 WAN address로 지원할 수 있다.

NAT의 논란

  • Router는 layer 3까지만 처리해야 하는데, NAT는 port 번호(layer 4)를 조작한다
  • IPv4 주소 부족은 IPv6로 해결해야 한다
  • End-to-end 원칙을 위반한다 (네트워크 내부에서 packet을 변조)
  • NAT 뒤의 server에 외부에서 접근하기 어렵다 (NAT traversal 문제)
  • 그럼에도 NAT는 가정, 기업, 4G/5G 셀룰러 네트워크에서 광범위하게 사용 중

3.5 IPv6

IPv4의 32-bit 주소 공간이 고갈되면서 개발되었다. ICANN은 2011년에 마지막 IPv4 address block을 할당했다.

IPv6 Datagram Format

IPv6 header는 40 bytes 고정 길이:

Field크기설명
Version4 bitsIP version (6)
Priority (Traffic Class)8 bitsFlow 내 datagram 간 우선순위
Flow Label20 bits같은 “flow”의 datagram을 식별
Payload Length16 bitsPayload(data)의 길이
Next Header8 bits상위 layer protocol 또는 extension header
Hop Limit8 bitsIPv4의 TTL과 동일
Source/Dest Address각 128 bits128-bit 주소 공간

IPv4와 비교하여 제거된 것들:

  • Checksum: 처리 속도 향상 (upper layer에서 이미 error detection 수행)
  • Fragmentation/reassembly: Source에서만 fragmentation 가능. 너무 큰 datagram은 ICMPv6 “Packet Too Big” 메시지로 source에 알림
  • Options: Options가 고정 header에서 분리되어 “Next Header”로 연결

IPv4에서 IPv6로의 전환: Tunneling

모든 router를 동시에 IPv6로 업그레이드하는 것은 불가능하다 (“flag day” 없음).

Tunneling: IPv4 network를 통과해야 하는 IPv6 datagram을 IPv4 datagram의 payload로 encapsulate하여 전송한다. “Packet within a packet” 방식이다.

IPv6/v4 dual-stack router B가 IPv6 datagram을 IPv4로 감싸서 전송하고, 반대편의 IPv6/v4 dual-stack router E가 IPv4 header를 벗기고 원래의 IPv6 datagram을 복원한다.

IPv6 adoption 현황 (2023): Google 기준 약 40%의 client가 IPv6로 접속. 25년이 넘도록 전환이 진행 중이다.

4. Generalized Forwarding과 SDN

4.1 Match+Action 추상화

전통적인 destination-based forwarding은 destination IP address만으로 forwarding을 결정한다. Generalized forwarding은 이를 확장하여, 여러 header field를 match하고 다양한 action을 수행한다.

각 router에는 flow table이 있으며, 각 entry는:

  • Match: Packet header field의 pattern (link, network, transport layer 모두)
  • Action: 매칭된 packet에 대한 동작 - forward, drop, modify, send to controller
  • Priority: 여러 pattern이 겹칠 때 우선순위
  • Counters: 매칭된 bytes/packets 수

4.2 OpenFlow

OpenFlow는 generalized forwarding의 대표적인 프로토콜이다. Match할 수 있는 header field:

  • Link layer: Ingress port, Source/Dest MAC, Ethernet type, VLAN ID/Priority
  • Network layer: IP Source/Dest, IP Protocol, IP ToS
  • Transport layer: TCP/UDP Source/Dest Port

OpenFlow 예시

Destination-based forwarding (Router):

  • Match: IP Dst = 51.6.0.8, Action: forward(port6)

Firewall:

  • Match: TCP d-port = 22 (SSH), Action: drop - SSH 트래픽 차단
  • Match: IP Src = 128.119.1.1, Action: drop - 특정 host의 모든 트래픽 차단

Layer 2 forwarding (Switch):

  • Match: MAC dst = 22:A7:23:11:E1:02, Action: forward(port3)

Match+Action의 통합 추상화

Match+action은 서로 다른 네트워크 장비를 하나의 추상화로 통합한다:

장비MatchAction
RouterLongest destination IP prefixForward out a link
SwitchDestination MAC addressForward or flood
FirewallIP addresses + TCP/UDP port numbersPermit or deny
NATIP address + portRewrite address and port

SDN controller가 여러 router의 flow table을 조율(orchestrate)하면, network-wide behavior를 프로그래밍할 수 있다.

5. Middlebox

인용

“source host와 destination host 사이의 data path에서, IP router의 일반적이고 표준적인 기능 이외의 기능을 수행하는 모든 중간 장치”

Middlebox의 종류:

  • NAT: 가정, 셀룰러, 기관 네트워크
  • Firewall, IDS: 기업, ISP
  • Load Balancer: Data center, service provider
  • Cache: Service provider, CDN
  • Application-specific: Service provider, 기관

Middlebox의 진화

초기에는 proprietary hardware 솔루션이었으나, 다음과 같이 진화 중:

  • Whitebox hardware: Open API를 구현한 범용 하드웨어로 전환
  • SDN: 논리적으로 중앙화된 control과 configuration management
  • NFV (Network Functions Virtualization): White box networking, computation, storage 위에서 programmable services 구현

5.1 Internet Architecture의 원칙

Internet은 hourglass(모래시계) 구조다:

  • Network layer에는 오직 하나의 프로토콜: IP
  • IP는 Internet에 연결된 수십억 개의 모든 device에 구현되어야 한다
  • Application, transport, link, physical layer에는 다양한 프로토콜이 존재

하지만 middlebox의 확산으로 이 모래시계의 허리가 두꺼워지고 있다 - NAT, caching, firewall, NFV 등이 network layer에 추가되었다.

End-to-end argument [Saltzer, Reed, Clark, 1981]:

어떤 기능은 통신 시스템의 end point에 있는 application의 지식과 도움으로만 완전하고 올바르게 구현될 수 있다. 따라서 그 기능을 통신 시스템 자체의 기능으로 제공하는 것은 불가능하다.

이 원칙에 따라 Internet은 복잡성을 network edge에 두고, network core는 단순하게 유지하는 설계 철학을 따른다.

6. Chapter 4 정리

주제핵심 내용
Data PlanePer-router, local 기능. Forwarding table lookup, nanosecond 단위 하드웨어 동작
Control PlaneNetwork-wide 경로 결정. Per-router algorithm 또는 SDN(remote controller)
Router 내부Input port (lookup), switching fabric (memory/bus/interconnection), output port (queueing/scheduling)
HOL BlockingInput queue의 앞 packet이 뒤 packet을 차단
SchedulingFCFS, Priority, Round Robin, WFQ (weighted minimum bandwidth 보장)
IP Datagram20-byte header. Version, TTL, protocol, src/dst IP, checksum
IP Addressing32-bit, subnet (prefix + host). Classful CIDR(classless)
DHCPDiscover Offer Request ACK. IP, gateway, DNS, mask 할당
NATPrivate IP > public IP:port 변환. IPv4 주소 절약
IPv6128-bit 주소, 40-byte 고정 header. No checksum, no fragmentation. Tunneling으로 전환
Generalized ForwardingMatch+action (OpenFlow). Router, switch, firewall, NAT를 통합하는 추상화
MiddleboxNAT, firewall, load balancer, cache. NFV/SDN으로 진화
End-to-end Argument복잡성은 edge에, core는 단순하게