득이공간
[컴퓨터 네트워크] 4장. Network Layer: Data Plane 본문
해당 게시물은 김정근 교수님의 '컴퓨터 네트워크' 강의를 수강하며
학습한 내용을 개인적으로 정리한 글입니다.
📌 목차 - 4장. Network Layer: Data Plane
4-1. Network layer: overview
4-2. What's inside a router
4-3. IP: the Internet Protocol
4-4. Generalized Forwarding, SDN
4-5. Middleboxes
📌 4-1. Network layer: overview
* Two key network-layer functions
- forwarding: 하나의 개별 라우터 내에서 입력링크->출력링크로 안내하는 것 // Data Plane
- routing: 네트워크 전반에 걸쳐서 패킷의 출발지->목적지까지 전체 경로를 결정하는 것 // Control Plane
* Two Control plane approaches
- traditional routing algorithms: 라우팅 기능을 라우터 내에 구현한다.
- software-defined networking (SDN): 라우팅 기능을 서버 내에 구현한다.
* Per-router Control Plane Structure
- Control Plane: routing algorithm
- Data Plane: forwarding table(header, output: 각 패킷과 출력링크 매치)
* Software-Defined Networking (SDN) Control Plane Structure
- 별도의 remote 서버에 Control Plane이 위치한다.
* Network service model
- example services for individual datagrams
- example services for a flow of datagrams
* Qos (Quality of Service)
- 차별화된 네트워크 서비스
* Network-layer service model
- Internet: best effort // bandwidth guarantees X, loss X, Order X, Timing X
* Reflections on best-effort service
- 네트워크 코어를 단순하고 간단하게 설계하고 다른 모든 기능을 네트워크 엣지에 설계한다.
📌 4-2. What's inside a router
* Router architecture overview
- routing processor: routing, management, control plane
- high-speed switching fabric, input ports, output ports: forwarding, data plane
* Input port functions
- destination-based forwarding: 목적지 주소만 본다.
- generalized forwarding: 목적지 주소 뿐 아니라 다른 정보들까지 본다.
* Destination-based forwarding table, Longest prefix matching
- 여러개의 entry에 매칭되면 가장 길게 매칭되는 entry를 선택한다.
* Switching fabrics
- 입력 링크로부터 들어온 패킷을 출력 링크로 빠르게 넘겨준다.
- switching rate: switch가 얼마나 빠른지, 많은 양의 데이터를 처리할 수 있는지에 대한 성능 지표
- 구현 방법: memory, bus, interconnection network
* Input port queueing
- Head-of-the-Line (HOL) blocking: 여러 입력 링크에서 동시에 한 출력 링크로 갈 때 뒤에 있는 패킷이 기다리게 되는 현상을 말한다.
* Output port queueing
- buffering 시에 발생하는 drop policy에 대해 다양한 방식이 존재한다.
- scheduling discipline: queue에 대기중인 pkt 중에서 누구를 먼저 보낼 지에 대한 다양한 방식이 존재한다.
- FCFS
- Priority
- queueing delay and loss due to output port buffer overflow
* Buffer Management
- drop: which packet to add, drop when buffers are full
- tail drop
- priority
- marking: which packets to mark to signal congestion
* Packet Scheduling: FCFS // best effort
* Scheduling policies: priority // QoS
- packet header의 특정 field에 해당 packet의 등급을 마킹해서 구분한다.
- 높은 등급의 packet부터 보낸다.
* Scheduling policies: round robin // best effort에 가깝다.
- packet을 등급별로 분류하지만 각 등급별로 rotation하면서 동등하게 packet을 보낸다. ex. 1:1:1
* Scheduling policies: weighted fair queueing // QoS
- round robin으로부터 파생되었다.
- 등급별로 동등하게 packet을 보내지 않고 각 등급에 따라 가중치를 다르게 두어서 가중치만큼 packet을 보낸다. ex. 4:2:1
📌 4-3. IP: the Internet Protocol
* Network Layer: Internet
- Path-selection algorithms -> forwarding table
- IP protocol: datagram format, addressing, packet handling conventions
- ICMP protocol: error reporting, router "signaling"
* IPv4 Datagram format
- src address, dest address, error check (checksum, CRC)
- TTL(Time To Live): remaining max hops. 라우터 하나를 지날 때마다 값이 1씩 감소한다. => 이 때마다 checksum을 다시 계산한다. overhead 발생.
- overhead: 20 byte (TCP header) + 20 byte (IP header)
- Max Length: ip header + payload data => 64K bytes, Typically: 1500 bytes
* IP addressing
- IP address: interface에 할당된 id 값 => 총 32bit를 네 부분(8bit)으로 나눠서 각 부분을 10진수로 표현한 값이다.
- interface: host/router와 link 사이의 접점
* Subnets
- 라우터를 통하지 않고 물리적으로 직접 연결되어 있는 여러개의 interface
- 하나의 섬처럼 서브넷을 이루고 있다.
* IP address: CIDR (Classless InterDomain Routing)
- subnet part + host part
- address format: a.b.c.d/x (x: subnet part에 할당된 bit의 수)
* IP address: how to get one?
1. hard-coded by sysadmin in config file.
2. DHCP: dynamically get address from as server => "plug-and-play"
* DHCP(Dynamic Host Configuration Protocol): client-server senario
1. DHCP discover - Broadcast: is there a DHCP server out there?
2. DHCP offer - Broadcast: I'm a DHCP server! Here's an IP address you can use
3. DHCP request - Broadcast: OK. I would like to use this IP address!
4. DHCP ACK - Broadcast: OK. You've got that IP address!
- DHCP는 UDP를 사용한다.
* ISP provide IP address
- ISP's block (a.b.c.d/20) -> allocate out 8 blocks (a.b.c.d/23)
* ICANN (Internet Corporation for Assigned Names and Numbers)
- ICANN이 IXP에게 IP를 할당한다.
* NAT: Network Address Translation
- Internet 영역과 연결된 IP는 local 영역의 IP와 다르다. (중간에서 NAT가 교환을 해준다.)
- Internet 영역에서는 하나의 IP만을 사용한다. 따라서 local 영역 내의 각 interface는 port 넘버로 구분한다.
* NAT translation table
- WAN side addr: a.b.c.d, e
- LAN side addr: f.g.h.i, j
* IPv6: motivation
- IPv4: 32-bit
- IPv6: 128-bit
- 네트워크 규모가 커짐에 따라 빠른 스위칭 처리를 하기위해 알고리즘을 단순화한다.
- QoS를 제공한다.
* IPv6 datagram format
- source address (128 bit)
- destination address (128 bit)
- ver, priority, flow label (32 bit)
- payload
- no checksum, no fragmentation/reassembly, no options
* Transition from IPv4 to IPv6
- IPv4 라우터와 IPv6 라우터가 서로 호환이 되지 않는데 혼재되어 있을 때
- tunneling: IPv6 datagram carried as payload in IPv4 datagram among IPv4 routers ("packet within a packet")
📌 4-4. Generalized Forwarding, SDN
* Generalized Forwarding, SDN
- match: 목적지 IP 주소
- action: 해당 출력 링크로 forwarding
* Flow table abstraction
- forwarding table에서 이름을 바꿨다.
- flow: defined by header field values(in link-, network-, transport-layer field)
- generalized forwarding // flow table
- match
- action
- priority: 매치된 애들 중에 우선순위를 나타낸다.
- counters: 얼마나 자주 사용되고 있는지 카운팅한다.
* OpenFlow: generalized forwarding
- match: header fields to match
- action
1. Forward packet to port(s)
2. Drop packet
3. Modify fields in header(s): NAT
4. Encapsulate and forward to controller
- stats: packet + byte counters
* OpenFlow abstraction
- Router
- match: longest destination IP prefix
- action: forward out a link
- Switch
- match: destination MAC address
- action: forward or flood(홍수 나게 한다.)
- Firewall
- match: IP addresses and TCP/UDP port numbers
- action: permit or deny
- NAT
- match: IP address and port
- action: rewrite address and port
📌 4-5. Middleboxes
* Middleboxes
- source -> dest 사이에서 IP router가 하는 표준 기능 이외의 다른 기능을 하는 모든 애들을 일컫는다.
- ex: NAT, Firewalls(IDS), Load balancers, Caches, Application-specific
- 추세: 따로따로 각 기능 하나를 가진 hardware 말고 "whitebox" hardware의 통합형태로 만들어서 각 기능들을 software 형태로 골라넣자
- SDN의 세상이 되면 범용 hardware 위에 flexable하게 기능들을 갖추고 control하게 된다.
- NFV(Network Functions Virtualization): programmable services over white box networking.
* Architectural Principles of the Internet
- simple connectivity
- IP protocol: that narrow waist
- intelligence, complexity at network edge
* 시대에 따른 변화
- PSTN -> intelligence at edge -> at edge, middleboxes, core
'CS > 네트워크' 카테고리의 다른 글
[컴퓨터 네트워크] 6장. Link Layer and Local Area Networks (0) | 2024.02.26 |
---|---|
[컴퓨터 네트워크] 5장. Network Layer: Control Plane (0) | 2024.02.26 |
[컴퓨터 네트워크] 3장. Transport Layer (1) | 2024.02.26 |
[컴퓨터 네트워크] 2장. Application Layer (1) | 2024.02.26 |
[컴퓨터 네트워크] 1장. Computer Networks and the Internet (1) | 2024.02.26 |