ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 네트워크: Network Layer 정리(forwarding, routing, control plan, SDN...)
    네트워크 2020. 10. 11. 19:47

    이번 포스팅부터는 네트워크 계층에 대해서 다룬다.

     

    네트워크 계층이 어떤 일을 하는지 알아보자

     

     

    < 네트워크 계층(Network Layer) >

     

    전송계층에서는 segment라는 패킷단위를 다루었다면

    네트워크 계층에서는 datagram을 다룬다. 

     

    host to host구조에서 sending side에서는 segment를 datagram으로 encapsulate한다.

    반면, receving side에서는 datagram를 segments으로 decapsulate한다.

     

    하지만 단순히 데이터가 라우터를 경유하여 다른 호스트까지 가는 경우 

    네트워크 계층에서는 다음 이동할 라우터로 패킷을 전송한다. 

     

    (모든 호스트와 라우터에는 네트워크 계층이 존재한다.

    하지만 라우터에는 응용계층이 필요 없으므로 응용계층이 존재하지 않는다.)

     

     

     

    위와 같은 일들을 하려면 네트워크 계츠에서 필요한 기능이 크게 두가지가 있다.

     

    1. forwarding

     

    라우터로 들어온 패킷들을 다른 라우터로 내보내는 과정이다. 

    여행으로 예시를 들면, 갈림길 앞에서 어떤 갈림길로 갈지 정해진 이후,

    갈림길로 가는 것이라고 할 수 있다.

     

     

     

     

     

     

    2. routing

     

    source로 부터 destination까지 어떤 경로로 갈지 결정하는 과정이다. 

    이는 마찬가지로 여행으로 예시를 들면 여행계획과 같다. 

     

     

    - data plane

    인풋 포트로 들어온 datagram을 어떤 아웃풋포트로 보낼지 결정하는 과정

     

    - control plane

    datagram이 호스트로부터 다른 호스트까지 전송될 때, 어떻게 routing될지 결정한다.

     

     

     

     

    control plane이 라우팅 테이블을 만드는 방법에는 두가지가 있다.

     

    1) Traditional Routing Algorithms

     

    모든 라우터에 control plane과 data plane이 존재하며 

    각 라우터에는 라우팅 알고리즘이 있어서 라우터들끼리 통신하여 

    라우팅 테이블을 만든다. 

     

     

     

     

    2) SDN(software-defined networking)

     

    remote controller server에서 각각의 라우터에 대해 control agent(CAs)를 두어 

    라우터들과 통신하며 라우팅 테이블을 내려보낸다. 

     

     

     

     

     

    < 라우터의 구조 >

     

    라우터는 다음과 같이  input port, switching fabric 그리고 output port으로 구성된다. 

     

    high-level 관점에서 본 라우터의 구조 

     

     

     

    1. Input port functions

     

     

    인풋 포트는 decentralized switching을 하며

    forwarding table을 이용하여 어떤 아웃풋포트로 나갈지 확인한다.

     

    - lookup: 포워딩 테이블을 확인 후 어떤 아웃풋 포트로 갈지 확인하는 단계
    - forwarding: 들어온 패킷이 정해진 아웃풋 포트로 스위칭하는 스위칭하는 단계

    - queueing: switching rate보다 더 빠르게 Input buffer에 패킷 도착시  queueing이 발생한다.  

     

     

     

    이 때 forwarding에는 두가지 방법이 있다. 

     

    1) Destination-based forwarding

     

    목적지 주소의 범위에 따라 어떤 아웃풋 포트로 나가는지 결정된다. 

     

     

    ※ Longest prefix matching

     

    매치가 되는 것들중에 가장 길게 매치되는 것들을 기준으로 나누는 법

    첫번째 경우는 0번 인터페이스, 두번째는 1번 인터페이스로 나간다. 

     

     

     

    2) Genalized forwarding

     

    다른 layer에서의 정보를 이용해서 forwarding하는 방법

     

    예를 들어,

    11001000 00010111 00010*** ********* -> 0번 link interface

    11001000 00010111 00011000 ********* -> 1번 link interface 일때

     

    11001000 00010111 00011000 11100010 -> 1번 link interface로 이동 

     

     

     

     

    2. Switching fabrics 

     

    switching fabric은 인풋 buffer에 있는 패킷들을 적절한 아웃풋 buffer로 이동시키는 역할을 한다.

      

    인풋에서 아웃풋 포트로 나가ㄴ는 시간은 switch rate에 의해 결정되는데

    switch rate는 패킷이 인풋에서 아웃풋으로 나가는 속도로

    아웃풋 포트까지 나가는 경우 N개의 인풋에 대해 N x switching rate의 시간이 걸린다.

     

    switching fabrics는 다음과 같은 종류들이 있다. 

     

     

     

    1) switching via memory

     

    메모리를 이용한 방식으로 패킷을 복사해서 넘겨주는 방식이다.

    라우터 초기에 사용되던 방법으로 느리다. 

     

     

     

    2) switching via a bus

     

    인풋포트와 아웃풋 포트는 버스를 공유하며

    bus bandwidth를 갖고 있어서 switching speed에 제한이 있다.

     

     

     

    3) switching via Interconnection network

     

    bus의 bandwidth limitation을 극복한 방법으로 

    동시에 여러개의 패킷처리가 가능하기 때문에 속도가 빠르다

     

     

     

    ※ Input port queuing

     

    만약 datagram이 switching되는 속도보다 더 빠르게 input buffer에 도착한다면

    버퍼에서 줄을 서게 되고 이 때 패킷들은 queuing된다. 

     

    queuing되어 input buffer가 overflow가 되면 queuing delay와 packet loss가 발생할 수 있다. 

     

     

    위 경우는 빨간색 패킷이 동시에 아웃풋 포트로 스위칭되어야 하는 경우, 동시에 스위칭되지 못하고

    빨간색 패킷이 다음 차례가 올 때까지 기다리는 경우다.

     

    이 때, queuing되어 datagram이 전송되지 않을 때의 상황을 Head-of-the-line(HOL) blocking 이라한다.

     

    즉 위 상황은 빨간색 패킷이 특정 아웃풋 버퍼로 가야하는데 현재 아웃풋버퍼가 

    사용중므로 갈 수 없기 때문에 HOL blocking인 상태라 한다. 

     

     

     

     

    2. ouput ports

     

     

    - buffering : transmission rate보다 빠르게 datagram이 버퍼에 도착했을 때, buffering이 발생한다.

    이때 버퍼가 congestion되면, packet들이 loss될 수 있다.

     

    - Scheduling dicipline: queuing하고 있는 datagram중에 미리 정해진 스케줄링 우선순위에 따라

    어떤 datagram을 먼저 보낼지 결정한다. 

     

     

     

    ※ Scheduling mechanisms

     

    - FIFO(first in first out) scheduling: queue에 도착하는 순서대로 보낸다.

     

     

     

    - priority scheduling: 가장 우선순위가 높은 패킷 먼저 보낸다. 

     

     

    - Round Robin(RR) sheduling: 번갈아 가면서 packet들을 보낸다.  

     

     

    - Weighted Fair Queuing(WFQ): Round Robin을 일반화시킨 경우로

    각각의 class들에게 다른 weight를 주어 weight에 따라 번갈아가며 보낸다.

    (Round Robin같은 경우에는 weight가 모두 같다고 생각하면된다) 

     

     

     

    ※ discard policy

    packet이 full queue에 도착하는 경우, 어떤 패킷들을 우선적으로 버릴지 결정한다. 

     

    - tail drop: 가장 나중에 도착한 패킷을 버린다. 

    - priority: 우선순위가 가장 낮은 패킷을 버린다.

    - random: 랜덤하게 버린다. 

     

     

     

     

     

     

    ※전공 공부용으로 작성했습니다.

    출처: computer networking a top down approach

    반응형

    댓글

Designed by Tistory.