CS/네트워크

[네트워크] 4. Network layer (1) - Forwarding and Routing / Switching

공영재 2023. 12. 3. 19:49

Reference - Computer Networking: a Top Down Approach

 

 

Network layer는 end to end로 패킷을 전송할 때, 경로를 설정하고 라우터 관점에서 어떻게 효율적으로 전달할지를 결정하는 역할을 한다.

Network layer: Data plane & Control plane

 

라우터는 application layer, transport layer를 지원하지 않으므로 network layer 상위 계층은 존재하지 않는다.

network layer에는 하나의 라우터 안에서 어느 라우터로 패킷을 전달할지를 결정하는 forwarding과 전체 network-wide에서 전체 경로를 결정하는 routing, 두가지 function이 있다. 

forwarding은 몇 ns의 매우 짧은 시간단위를 가지며 하드웨어에서 실행된다.

routing은 상대적으로 시간이 오래걸리며 라우터 내부에서 실행할 수도 있고, 라우터들에게서 정보를 받아 하나의 서버에서 실행할 수도 있다. 소프트웨어에서 수행되며, 이때 패킷의 순서를 정하는 스케줄링 알고리즘이 굉장히 중요하다.

 

이때 Data plane은 입력 링크에서 출력 링크로 datagram을 전달하고, Control plane은 datagram이 source에서 destination까지 end to end로 전달되게끔 path를 결정한다.

 

Router Architecture

 

Router Architecture Overview

 

라우터 구조는 위처럼 생겼는데, 앞의 router input ports를 확대해서 보면 이렇다.

 

이때 포워딩 테이블에서 많은 ip주소를 처리하기 위해 Longest prefix matching을 사용한다.

destination address 중 들어온 패킷에서 가장 많은 접두사가 매칭되는 주소로 포워딩한다.

이후 큐잉을 통해 스위칭 딜레이가 있을 때 먼저 온 데이터를 큐에 쌓는다.

 

Switching

 

스위칭은 input buffer의 패킷을 적절한 output buffer로 전송하는 작업인데, memory, bus, interconnection network 이렇게 3가지 type이 있다. switching rate은 input에서 output port까지 전송되는 속도를 말한다.

 

1세대 라우터였던 memory 스위치의 경우, CPU 메모리가 패킷을 제어해서 input과 output port 사이에서 패킷을 스위칭한다. 데이터를 메모리에 쓰고, 메모리를 다시 보내는 부하가 큰 작업이기에 속도가 늦다.

 

그다음 bus 스위치의 경우, shared bus를 통해 datagram을 input에서 output port로 전송한다.

이 경우 switching rate은 bus bandwidth에 의해 제한된다.

 

마지막으로 interconnection network 스위치의 경우, N개의 input port와 output port가 N*N으로 연결되며, 패킷을 병렬로 전달한다. 각 bus는 controller로 자유롭게 열고 닫을 수 있다. crossbar switch라고도 한다.

 

- input queueing

FIFO로 패킷이 input에서 output 큐로 이동될 때, 출력 포트가 같으면 하나의 패킷만 지정된 출력 포트로 전송하고 나머지 패킷은 기다려야 한다. 이렇게 한 큐의 앞쪽 datagram이 딜레이가 생겨, 두번째 패킷은 다른 output port로 갈 수 있음에도 못가고 있는 상태를 Head-of-the-Line(HOL) blocking이라 한다.

 

- output queueing

출력 포트는 시간 단위에 단일 패킷만을 전송할 수 있기에, 스위치의 속도가 출력 포트 속도보다 빠른 경우 패킷은 출력 링크 전송 큐에서 대기해야 하며, 이때 queueing delay가 발생할 수 있고 패킷을 삭제하여(loss) 공간을 확보하기도 한다.

이때 패킷 스케줄러가 어떤 패킷을 삭제할지 결정한다.

 

버퍼의 양은 일반적으로 B = RTT * C(link bandwidth) / N^(1/2)(=TCP flow num) 를 추천하고 있다.

버퍼의 양이 클수록 패킷 손실율을 줄일 수는 있겠지만 Queueing delay가 늘어나는 단점이 있다.

 

- Scheduling mechanism

link로 보낼 다음 패킷을 선택하는 것.

이때 scheduling의 discard policy는 tail drop / priority / random이 있다.

 

- Scheduling policy

FIFO scheduling, Priority scheduling, RR scheduling, Weighted Fair Queueing(WFQ) scheduling이 있다.

FIFO는 먼저 온것이 먼저 나가며, Priority는 우선순위 클래스로 분류하여 우선순위가 높은 패킷이 먼저나가고 동일하면 FIFO를 한다. RR은 클래스를 번갈아가면서 패킷을 보내고, WFQ는 일반화된 RR으로, 각 클래스가 패킷 양에 따라 가중치를 할당받아 Fairness를 보장받는다. 

 

 

 

loading