본문 바로가기
전공 관련/컴퓨터 네트워크

Network layer(네트워크 계층)과 router(라우터)

by 현댕5697 2020. 11. 30.
반응형

*네트워크 계층에서는 데이터를 데이터그램 형태로 송수신 하지만 본 게시물에서는 그냥 패킷과 데이터그램을 섞어가며 사용했다.

 

호스트1이 라우터를 거쳐 호스트2로 보낼 때

- 호스트1: 패킷->세그먼트->데이터그램 단계(뒤의 2단계 생략)를 거쳐 캡슐화 진행 후 라우터로 전송

- 라우터: 입력 링크에서 출력 링크로 데이터그램 전달

- 호스트2:  데이터그램->세그먼트->패킷 추출

네트워크 계층에서는 송신 호스트에서 수신호스트로 패킷(데이터그램)을 전송하는 것이 중요하다!

 

 

용어정리

forwarding(포워딩, 전달)

패킷이 라우터의 입력 링크에 도달했을 때 적절한 출력 링크로 이동시키는 것.

routing(라우팅)

송신자가 수신자에게 패킷을 전송할 때 네트워크 계층은 패킷 route를 결정해야 한다.

어느 라우터들을 거쳐갈지 결정하는 것을 routing algorithm이라고 한다.

 

* forwarding과 routing을 헷갈리기 쉬운데 forwarding은 매우 짧은 시간동안 하드웨어에서 실행되고, routin은 네트워크 전반에 걸쳐서 일어난다는 것을 기억하면 된다!

 

 

네트워크 라우터에서 forwarding table은 매우 중요하다. 이것은 라우터에 도착한 패킷을 forwarding할 때 어떤 출력 링크를 선택할지 결정짓는데 사용된다. 

 

전통적인 라우터 구조

 

data plane(데이터 평면)

실제 데이터를 forwarding하는 곳이다. local forwarding table을 포함한 부분을 말한다.

 

control plane(제어 평면)

네트워크 리소스를 어떻게 end to end path에 할당할지를 결정하는 부분이다. 즉, 출발지로 부터 도착지 까지의 경로를 결정한다.

전통적으로는 라우터 안에 라우팅 알고리즘을 구현하였지만, 현대에 들어서 네트워크가 복잡해지며 서버에 라우팅 알고리즘을 구현한 SDN 방식을 사용한다. 

 

위의 그림처럼 라우터들끼리 라우팅 알고리즘을 통해 필요한 정보들을 공유하고, local forwarding table을 동기화한다.

이 동기화 과정에서 network operator가 관여를 하는데, 현대에 이르러 이 과정이 매우 복잡해졌기 때문에 SDN 모델이 나왔다.

 

물리적으로 분리된 data plane과 control plane

 

라우터는 원격 컨트롤러에에 정보를 제공하고, control agent가 라우팅 알고리즘 계산 및 setup 과정을 수행하여 라우터들을 한꺼번에 관리한다. 그리고 계산한 forwarding table을 라우터들에게 전달한다.


 

네트워크 서비스 모델

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

 

- 각 데이터그램(패킷)에 대해

  1. 패킷이 출발지에서 목적지 호스트까지 없어지지 않고 도착하는 것을 보장
  2. 패킷 전달 시 호스트 간의 특정 지연 제한 안에 전달

- 데이터그램들 간의 흐름에 대해

  1. 패킷들이 목적시에 보내진 순서대로 도착
  2. 송수신 호스트 사이에 최소 대역폭을 보장
  3. 패킷 간 간격 변경 제한
  4. 데이터그램을 송신 호스트에서는 암호화, 수신 호스트에서는 해독을 할 수 있게 하여 보안 유지

인터넷 네트워크 계층은 best-effort 서비스를 제공한다.

  • 패킷이 출발지에서 목적지 호스트까지 없어지지 않고 도착하는 것을 보장
  • 패킷 전달 시 호스트 간의 특정 지연 제한 안에 전달
  • 패킷들이 목적시에 보내진 순서대로 도착
  • 송수신 호스트 사이에 최소 대역폭을 보장

best-effort 서비스는 위의 요소들을 보장하지 않는다! 

- 그러면 왜 이러한 서비스를 사용하느냐?

: 이러한 것들을 보장하기 위해서는 하드웨어에 의존적이 될 수 밖에 없는데, 이 경우 네트워크를 확장할 때마다 하드웨어를 다시 고쳐야 하니 너무 힘이 들기 때문이다.

- 그러면 이러한 서비스를 어떻게 제공받을 수 있느냐?

: 네트워크 계층이 아니라 다른 계층에서 이러한 서비스들을 구현하면 된다!

 


 

라우터

우리는 앞선 부분에서 패킷 스위치라는 것을 배웠다.

패킷 스위치에는 링크 계층 스위치와 라우터가 있다. 이 중에서 나는 라우터에 대해 살펴보고자 한다.

 

실제 라우터의 모습들... 요상하게 생겼다

 

내부 구성요소

라우터의 내부 구성요소로 다음과 같은 4가지를 들 수 있다.

  • input port (입력 포트)
  • output port (출력 포트)
  • switching fabric (스위칭 구조)
  • routing processor (라우팅 프로세서)

 

routing processor

routing processor는 일종의 control plane으로서 라우팅을 담당한다.

switching fabric은 일종의 data plane으로서 input port로 들어온 패킷들을 열심히 output port로 포워딩한다.

포워딩에는 destination-based 방식과 generalized 방식이 있다.

- destination-based forwarding은 말 그대로 목적지 IP 주소를 기반으로 포워딩한다.

- generalized forwarding은 목적지 IP 주소 외에도 데이터그램의 우선순위, 들어온 input port, 나가는 output port 등 여러가지 요소가 포워딩에 관여한다.

 

 

그렇다면 destination-based forwarding일 경우에 대해 생각해보자.

모든 주소에 대해 link interface를 결정하는 포워딩 테이블을 만드는 것은 너무 비효율적이다.

그래서 longest prefix matching 방식을 사용한다. 이 방식은 테이블에서 가장 길게 대응되는 엔트리를 찾아서 그에 맞는 link interface로 패킷을 포워딩하는 것이다.

 

목적지 주소 범위 link interface
11001000 00010111 00010*** ******** 0
11001000 00010111 00011000 ******** 1
11001000 00010111 00011*** ******** 2
그 외 3

 

이러한 포워딩 테이블이 있을 때 

11001000 00010111 00010110 10100001 주소를 가지는 패킷은 0번 link interface로 포워딩 될 것이다.

11001000 00010111 00011000 10101010 주소를 가지는 패킷은 1번 link interface로 포워딩 될 것이다.

 

 

스위칭 구조

스위칭 구조에서는 input buffer에서 적절한 output buffer로 패킷을 전송한다.

스위칭 구조에는 3가지 종류가 있다. memory, bus, crossbar 방식이다.

 

 

- memory를 통한 교환 방식에서는 패킷이 입력 포트에 도착한 후 메모리를 복사한다. 그 후 포워딩 테이블에서 적절한 출력 포트를 찾은 뒤 패킷을 출력 포트의 버퍼에 복사한다. 이 방식의 속도는 메모리 bandwidth에 영향을 받는다.

- bus를 통한 교환 방식에서는 라우팅 프로세서의 개입 없이 공유버스를 통해 직접 출력 포트로 패킷을 전송한다. 이 방식의 속도는 버스의 bandwidth에 영향을 받는다.

- interconnection(crossbar)를 통한 교환 방식에서는 bus 방식이 변형된 것으로 N개의 input port, N개의 output port에서 2N개의 버스로 구성된다. 이 방식은 여러개의 패킷을 동시에 전달 가능하다. 각 버스의 교차점에는 스위치가 있어 열고 닫기가 가능하다. 

 

 

패킷 큐는 input port, output port에 모두 형성될 수 있다.

 

input port queuing

input port 속도에 비해 switching fabric 속도가 빠르지 않다면? 

이렇게 되면 input port로 들어온 패킷들이 기다려야 할 것이다. 이때 패킷들의 큐에서 queuing이 발생한다.

만약 메모리(버퍼)에 패킷들이 가득 차게 된다면 queuing delay나 패킷 loss가 발생할 것이다.

 

 

이 그림을 보면 왼쪽 제일 하단의 빨간색 패킷이 오른쪽 제일 상단의 output port로 이동하려 했지만, 파란색 패킷에 막혀 이동하지 못하였다. 이러한 현상을 HOL(Head-of-the-Line) blocking이라고 한다. 

 

output port queuing

마찬가지로 switching fabric 속도에 비해 output port 속도가 빠르지 않다면?

이렇게 되면 switching fabric으로 들어온 패킷들이 기다려야 할 것이다. 기다리는 패킷들을 queuing할 버퍼가 없다면 패킷의 손실이 발생할지도 모른다. 스케줄링 알고리즘을 통해 버퍼 안 패킷들을 스케줄링하여 내보낸다.

버퍼에 패킷들이 가득 차게 된다면 역시 queuing delay나 패킷 loss가 발생할 것이다.

 


 

패킷 스케줄링

그러면 패킷을 스케줄링하는 방식에는 어떤 것들이 있을까?

 

1. FIFO(fist in first out)

제일 간단한 스케줄링 방법이다. 다른 말로는 FCFS라고도 한다.

반약 버퍼 공간이 충분하지 않다면 공간을 확보하기 위해 정책에 따라 큐에서 어떤 패킷을 제거할지 결정한다.

이때 사용할 수 있는 정책은 3가지가 있다.

첫 번째는 tail drop 이다. 이 정책은 큐에 도착한 패킷을 버리는 것이다.

두 번째는 priority 이다. 말 그대로 우선순위에 따라 버릴 패킷을 정하는 것이다.

세 번째는 random 이다. 랜덤으로 버릴 패킷을 정한다.

 

* 버퍼가 가득 차기 전에 미리 패킷을 버리는 방법을 취하는 것이 좋을 수도 있다.

이러한 방법을 AQM(Active Queue Management)라고 한다.

미리 불필요한 패킷을 버려서 미리 congestion을 예방하는 것이다. 

이 방법 중 하나로 RED(Random Early Detection)이 있다. 랜덤하게 큐의 패킷을 선택해서 미리 버리는 것이다.

 

2. Priority

패킷의 우선순위에 따라 스케줄링 하는 방법이다. 우선순위는 isp나 network operator들이 결정한다.

우선순위에 따라 여러개의 queue로 나눠진다. 

non-preemptive 방식이다. 이 말이 무슨 말이냐면 우선순위가 낮은 패킷 a가 전송되고 있을 때 우선 순위가 높은 패킷 b가 큐에 들어왔다면, 패킷 a를 전송하던 것을 도중에 멈추지 않고 그냥 계속 전송시킨다는 것이다.

 

3. RR(Round Robin)

패킷은 여러 개의 클래스로 분류된다. 클래스 간에는 우선순위가 존재하지 않는다.

클래스들을 계속 번갈아 가면서 패킷을 전송한다.

만약 특정 클래스에 보낼 패킷이 없다면 다른 클래스로 넘어가서 패킷을 전송한다.

 

4. WFQ(Weighted Fair Queuing)

일반화된 RR 스케줄링 알고리즘이다.

각 클래스들에 weight을 줘서 클래스 마다 다른 양의 서비스 시간을 부여받는다.

클래스 i는 항상 R*Wi/∑Wi 의 처리율을 가진다. R은 bandwidth이다.

 

 

 

반응형

'전공 관련 > 컴퓨터 네트워크' 카테고리의 다른 글

HTTP 그리고 HTTPS  (0) 2023.04.16
Routing Algorithm(라우팅 알고리즘)  (0) 2020.12.08
IP(인터넷 프로토콜)  (0) 2020.12.01

댓글