Overview of Network Layer
4장부터는 라우터에 대해 배운다.
라우터에는 2가지 function, logic이 있다.
- Data plane
: 네트워크 가입자의 데이터 (IP packet)을 처리(forwarding)한다. (3계층까지)
: 라우터 내에서 지역적으로 일어나는 일을 다룸. - Control plane
: router들 간에 주고받는 routing protocol message (IP packet)을 처리하고 routing table을 만든다.
: data plane을 제대로 동작시키기 위해서 제어
: 즉 Control plane은 Data plane의 기능을 수행하기 위해 필요한 것!
※ 4장에서는 주로 Data plane에 대해 이야기할 것이다.
Network layer services and protocols
Network layer의 핵심 : host-to-host communication
sender host
- 4계층 프로토콜이 준 segment를 내 datagram (또는 packet)에 넣고, 헤더를 붙여서 2계층으로 내려보낸다.
receiver host
- 2계층으로부터 받은 데이터로부터 IP header를 보고, segment를 윗계층인 transport layer (4계층)에 올려보낸다.
routers
- examines header fields in all IP datagrams passing through it
패킷 단위로 deliever됨. 각 패킷의 헤더에 있는 destination IP address를 보고 forwarding lookup을 한다.
=> Data plane에서 이걸 한다!
- forwards datagram
Two key network-layer functions
forwarding
- 최종 목적지(destination host) 주소를 key값으로 하여 outgoing port (or link)를 결정하는 것 (forwarding table, FIB 이용)
- 패킷이 하나의 라우터를 지나가는것
- destination IP address를 보고 lookup을 한다
- forwarding은 end-to-end의 학습(routing)이 선행되어야 한다!
// switching - 이미 결정된 input port와 output port로 데이터가 이동하는 것
routing
- 라우터가 end-to-end path를 결정하는 것 (forwarding table을 만든다)
- 라우터들끼리 정보를 수집한 후, 여러 path중 하나를 고름 (routing algorithm, path selection algorithm)
=> 정보를 주고받아야 하므로 routing protocol이 필요한데, 이는 5장에서 다룬다.
- 최종 dest nw로 가기 위한 다음 라우터 (output port)를 정하는 일은 각 라우터가 독자적으로 실행
Data plane, Control plane
Data plane (forwarding)
- local, per-router function : 각자 라우터가 알아서 한다 => distributed
- 각자 라우터가 자기한테 들어온 후 나감. 각자의 forwarding table이 각 라우터에 있다.
Control plane (routing)
- 라우터들이 메세지를 주고받으며 end-to-end path를 결정
- two Control plane approaches
- traditional routing algorithms - per router
: 각각의 라우터들이 결정한다는 것 (distributed)
: data plane에 control plane. 즉 routing protocol 보드가 하나의 device 안에 붙어있다.
=> destination IP address만 보고 forwarding함 - software-defined networking (SDN) - logically centralized
: application msg가 들어오는 패킷이 지나가는 장비와, 패킷이 어디로 가는지 결정하는 control plane이 멀리 떨어져 있음.
: control plane이 분리되어 멀리 떨어져있기 때문에 전체를 본다.
=> (destination IP address + α)를 보고 lookup을 한다
=> (forwarding + α) 를 한다
Interplay between routing and forwarding
RIB (Routing Information Base)
= routing algorithm이 만들어낸 테이블
RIB를 만드는 애가 distributed한 방법으로 같은 라우터에 있냐 (per router),
아니면 저 멀리서 어떤 애가 전체를 보고 결정했느냐(SDN) 2가지 방식으로 나뉜다!
그 중 best만 고른게 FIB (Forwarding Information Base), 즉 forwarding table이다.
패킷이 들어온 순간 가능한 빨리 forwarding을 해야하는데,
기존의 방법(per router)은 destination IP address만 보고,
SDN은 +α 를 본다! <= 즉 1,2,3,4계층을 다 볼 수 있으며, 뭐든지 가능하다.
Network layer service model
Transport layer에서 요구하는 것들
한개의 패킷만 보내는 경우 요구될수 있는 것들
- No loss
- max e2e delay
- in-order delivery
여러개를 보내는 경우 요구될 수 있는 것들
- min bandwidth
- delay jitter
Datagram packet switching network (ex. Internet)
IP는 Stateless & Connectionless하다
data delivery 전에 routing 안함 => Forwarding (based on routing) is determined during data delivery.
Packets between src and dst may take different e2e routes.
order-delivery 보장X
resource reservation 안함 → 중간 라우터의 output buffer에서 delay or loss 발생
It provides best-effort service (no service at all, loss, delay, throughput 다 안잡아줌)
=> thus it can interconnect well networks that use heterogeneous L2 protocols.
Virtual Circuit packet switching network (ex. ATM)
VCPS (Virtual Circuit Packet Switching Network)
- e2e path가 데이터 전송 전에 결정된다. 즉 routing이 data delivery 전에 이루어진다.
- connection set-up 함 (즉 src와 dst 사이의 모든 msg들이 다 같은 길로 감)
=> in-order-delivery가 보장됨!
- circuit switching을 흉내낸 packet switching이라고 생각하면 된다.
- 하지만, circuit switching과 달리, resource reservation을 하지 않는다.
=> queueing delay & loss 발생
VCPS는 path만 fix하지 resource를 보장하지 않아 delay와 loss가 생길 수 있는데,
IP protocol을 쓰면서 QoS를 보장하기 위해 부가적으로 쓰는 것들이 있다!
(ex. ATM, Intserv, Diffserv는 option으로 QoS를 보장할 수 있다.)
Reflections on best-effort service
항상 어떤 프로토콜은 자기가 상위 계층에 뭘 하겠다고 하는 순간 아래 계층에서 해주는게 있는지 본다.
근데 IP는 best-effort service로, 아무것도 안한다. 즉, 아래 계층한테 아무것도 시키지 않는다.
단점이기도 하지만, 이는 곧 어떠한 technology도 다 어울릴 수 있다는 장점이 되기도 한다.
=> IP는 heterogeneous한 link technology를 다 수용할 수 있다!
(IP는 아무것도 안하지만, 위아래 계층 덕분에 살아남았다고 보면 된다.)
'네트워크' 카테고리의 다른 글
[네트워크] Chap 3.9 - Evolution of transport-layer functionality (QUIC) (0) | 2024.11.27 |
---|---|
[네트워크] Chap 3.8 - TCP congestion control & TCP fairness (0) | 2024.11.26 |
[네트워크] Chap 3.7 - Congestion이란? (0) | 2024.11.25 |
[네트워크] Chap 3.6 - TCP flow control & Connection management (0) | 2024.11.24 |
[네트워크] Chap 3.5 - TCP reliable data transfer (0) | 2024.11.23 |