티스토리 뷰

4.1 네트워크 계층 개요

각 라우터의 데이터 영역 역할은 입력 링크에서 출력 링크로 데이터그램을 전달하는 것이다.
네트워크 제어 영역의 근본적 역할은 데이터그램이 송신 호스트에서 목적지 호스트까지 잘 전달되게끔 local 포워딩, pre-router 포워딩을 대응시키게 만드는 것이다.

 


4.1.1 포워딩과 라우팅: 데이터 영역과 제어 영역

네트워크 계층의 근본적 역할은 송신 호스트에서 수신 호스트로 패킷을 전달하는 것


포워딩(전달)

  • 네트워크 계층 데이터 영역에 의해 실행되는 매우 중요한 기능이다.
  • 패킷이 라우터의 입력 링크에 도달했을 때 라우터는 그 패킷을 적절한 출력 링크로 이동시켜야 한다.
  • 매우 짧은 시간(보통 몇 나노초) 단위를 갖기에, 대표적으로 하드웨어 실행된다.

라우팅

  • 네트워크 전반에 걸쳐 출발지에서 목적지까지 데이터그램의 종단간의 경로를 결정하는 것
  • 패킷 전송 라우팅은 네트워크 계층의 제어 영역에서 실행된다.
  • 송신자가 수신자에게 패킷을 전송할 때 네트워크 계층은 패킷 경로를 설정해야 한다.
  • 이러한 경로를 계산하는 알고리즘을 라우팅 알고리즘(routing-algorithm)이라 한다.
  • 포워딩보다 더 긴 시간(보통 초) 단위를 갖기에 소프트웨어에서 보통 실행된다.

 


4.1.2 네트워크 서비스 모델

송수신 호스트 간 패킷 전송 특성을 정의한다.

네트워크 계층에서 제공할 수 있는 서비스들은 다음과 같다.

  • 보장된 전달
  • 지연 제한 이내의 보장된 전달
  • 순서화(in-order)패킷 전달
  • 최소 대역폭 보장
  • 보안(security) 서비스


인터넷 네트워크 계층은 최선형 서비스(best-effort service)라고 알려진 서비스를 제공한다.

  • 패킷을 보내는 순서대로 수신됨을 보장x
  • 목적지까지의 전송 자체도 보장될 수 x
  • 종단 시스템 간 지연 또한 보장되지 x
  • 보장된 최소 대역폭 또한 없다.

-> 쓸모 없어 보임.

여러 네트워크 구조는 최선형 서비스보다 좋은 서비스 모델을 정의하고 구현하였다.

 


4.2 라우터 내부에는 무엇이 있을까?

입력 포트

  • 중간 상자
    • 들어오는 링크의 반대편에 있는 링크 계층과 상호 운용하기 위해 필요한 링크 계층 기능을 수행한다.
  • 오른쪽 상자
    • 입력 포트에서 검색 기능을 수행(가장 중요)
    • 포워딩 테이블을 참조하여 도착된 패킷이 스위칭 구조를 통해 라우터 출력 포트를 결정

스위칭 구조

  • 라우터의 입력 포트와 출력 포트를 연결
  • 라우터 내부에 포함되어 있다.

출력 포트

  • 스위칭 구조에서 수신한 패킷을 저장하고 필요한 링크 계층 및 물리적 계층 기능을 수행하여 출력 링크로 패킷을 전송한다.

라우팅 프로세서

  • 제어 영역 기능을 수행한다.

✖️ 입력 포트, 출력 포트, 스위칭 구조는 거의 항상 하드웨어로 구현된다.

 


4.2.1 입력 포트 처리 및 목적지 기반 전송

입력 포트에서 수행되는 검색은 라우터 동작의 핵심이다.
라우터는

  • 포워딩 테이블을 사용하여 도착 패킷이 스위칭 구조를 통해 전달되는 출력 포트를 검색한다.

포워딩 테이블은

  • 라우팅 프로세서(다른 네트워크 라우터의 라우팅 프로세서와 상호 작용하기 위해 라우팅 프로토콜 사용)에서 계산되거나 업데이트되거나 원격 SDN 컨트롤러에서 수신된다.


포워딩 테이블에서 라우터는 패킷의 목적지 주소의 프리픽스를 테이블의 엔트리와 대응시킨다. 대응하는 엔트리가 존재하면 라우터는 패킷을 그 대응에 연관된 링크로 보낸다.

만약 앞 3개의 엔트리와 대응하지 않으면 최장 프리픽스 대응 규칙(longest prefix matching rule)을 적용한다.

  • 즉, 테이블에서 가장 긴 대응 엔트리를 찾고, 여기에 연관된 링크 인터페이스로 패킷을 보낸다.

 


4.2.2 스위칭

스위칭 구조는 패킷이 입력 포트에서 출력 포트로 실제로 스위칭(즉, 전달)되는 구조를 통과하므로 라우터의 핵심이다.

메모리를 통한 교환

  • 가장 단순하고, 초기의 라우터는 CPU(라우팅 프로세서)를 직접 제어해서 입력 포트와 출력 포트 사이에서 패킷을 스위칭하는 전통적인 컴퓨터이다.

버스를 통한 교환

  • 입력 포트는 라우팅 프로세서의 개입 없이 공유 버스를 통해 직접 출력 포트로 패킷을 전송한다.


인터커넥션 네트워크를 통한 교환

  • 공유 버스의 대역폭 제한을 극복하는 한가지 방법은 이전의 다중 프로세서 컴퓨터 구조에서 프로세서를 인터커넥션하는 데 사용된 것과 같은 보다 복잡한 인터커넥션 네트워크를 사용하는 것이다.

 


4.2.3 출력 포트 프로세싱

출력 포트의 메모리에 저장된 패킷을 가져와서 출력 링크를 통해 전송한다.

 


4.2.4 어디에서 큐잉이 일어날까?

패킷 큐는 입력 포트와 출력 포트 모두에서 형성될 수 있다.
대기열이 더 커지면 라우터의 메모리가 결국 소모될 수 있고 도착하는 패킷을 저장할 수 있는 메모리가 없을 때 패킷 손실이 발생한다.

 

입력 큐잉

대기 중인 스위치에서의 HOL(head-of-the-line) 차단

  • 회선이 앞쪽에서 다른 패킷이 막고 있으므로 입력 큐에서 대기 중인 패킷은 사용할 출력 포트가 사용 중이지 않아도 스위칭 구조를 통해 전송되기 위햇서 기다려야 한다.

 

출력 큐잉

  • 들어오는 패킷을 저장할 메모리가 충분하지 않을 때 도착한 패킷을 삭제(drop-tail 정책으로 알려짐)시키거나 이미 대기 중인 하나 이상의 패킷을 제거하여 새로 도착한 패킷을 저장하기 위한 공간을 확보해야 한다.


이러한 큐잉의 결과는 출력 포트의 패킷 스케줄러가 전송대기 중인 패킷 중 하나의 패킷을 선택해야 한다는 것이다.

 


4.2.5 패킷 스케줄링

라우터에서 일반적으로 사용되는 큐잉 처리 방법

  • FCFS(first-com-first-served)방식
    • FIFO(first-in-first out)
    • Oh, are you queueing? 오, 기다리고 계신가요?

 

First-In-First-Out(FIFO)

  • 회선이 현재 다른 패킷을 전송 중이면 전송 큐잉에 도착한 패킷은 전송을 기다린다.
  • 패킷이 출력되는 회선을 통해 완전히 전송되면(즉, 서비스를 받는 경우) 큐에서 제거된다.
  • 출력 링크 큐에 도착한 순서와 동일한 순서로 출력 링크에서 전송할 패킷을 선택한다.

 

우선순위 큐잉

  • 출력 링크에 도착한 패킷은 큐에 도착하면 우선순위 클래스로 분류된다.
  • 동일한 우선순위를 가지는 패킷들을 선택하는 것은 전형적으로 FIFO 방식으로 행해진다.

 

라운드 로빈(Round robin)과 WFQ(Weighted Fair Queuing)

  • 라운드 로빈 큐잉 규칙에서는 패킷은 우선순위 큐잉과 같이 클래스로 분류된다.
    • 그러나 클래스 간에는 엄격한 서비스 우선순위가 존재하지 않으며, 라운드 로빈 스케줄러가 클래스 간에 서비스를 번갈아서 제공한다.
  • 작업 보존(work-conserving) 큐잉 규칙에서는
    • 전송을 위해 큐에서 기다리는 패킷이 있다면, 링크는 유휴 상태가 되는 것을 허용하지 않는다.
    • 클래스에서 패킷을 찾지만 아무것도 찾지 못하면 시퀀스의 다음 클래스를 즉시 검사한다.
  • WFQ
    • 라우터에서 널리 구현된 라운드 로빈 큐잉의 일반적인 형태는 소위 WFQ 규칙이다.
    • WFQ 규칙은 순환 방식으로 동작한다.
    • 작업 보존 큐잉 규칙으로 빈 클래스 큐를 찾으면 서비스 순서에서 다음 클래스로 즉시 이동한다.
    • 각 클래스마다 다른 양의 서비스 시간을 부여 받는다는 점에서 라운드 로빈과 차이가 있다.