Book/COMPUTER NETWORKING A TOP-DOWN-APPROACH

4.2 What's Inside a Router?

S0LL 2024. 12. 3. 17:21

라우터는 네트워크 계층에서 데이터그램을 입력 링크에서 받아 적절한 출력 링크로 전달하는 역할을 한다.

이 과정에서 라우터의 내부 구조는 크게 네 가지 구성 요소로 나뉜다.

 

그림 4.4: 라우터 아키텍처

그림 4.4는 라우터의 주요 구성 요소를 보여준다. 라우터는 다음 네 가지 주요 컴포넌트로 구성된다.

1. 입력 포트(Input Port):

데이터그램이 라우터로 들어오는 링크의 종단점 역할을 한다.

기능:

물리 계층의 신호를 처리하고, 데이터 링크 계층에서 프레임을 디캡슐화(decapsulation)하여 네트워크 계층 데이터그램을 추출한다.

데이터그램의 헤더 정보를 사용해 포워딩 테이블을 조회하고, 해당 데이터그램이 나가야 할 출력 포트를 결정한다.

2. 스위칭 패브릭(Switching Fabric):

입력 포트와 출력 포트를 연결하는 역할을 한다.

데이터그램이 지정된 출력 포트로 전송될 수 있도록 내부에서 데이터를 전환(switch)한다.

스위칭 패브릭은 라우터 내부의 “미니 네트워크”로 볼 수 있다.

3. 출력 포트(Output Port):

스위칭 패브릭에서 전달받은 데이터그램을 지정된 출력 링크로 전송한다.

기능:

데이터 링크 계층과 물리 계층 처리를 수행한다.

양방향 링크에서는 입력 포트와 짝을 이룬다.

4. 라우팅 프로세서(Routing Processor):

컨트롤 플레인의 작업을 수행한다.

라우팅 프로토콜을 실행하여 라우팅 테이블과 포워딩 테이블을 업데이트한다.

SDN 환경에서는 원격 컨트롤러와 통신하며, 포워딩 테이블의 엔트리를 입력 포트로 전송한다.

 

각 구성 요소의 상세 설명

 

1. 입력 포트(Input Port)

 

입력 포트는 라우터의 중요한 첫 번째 단계이다. 다음과 같은 기능을 수행한다:

물리 계층에서의 신호 처리 및 데이터 링크 계층에서 프레임 디캡슐화를 수행한다.

포워딩 테이블 조회를 통해 패킷이 전달될 출력 포트를 결정한다.

제어 패킷(예: 라우팅 프로토콜 관련 패킷)을 라우팅 프로세서로 전달한다.

 

현대의 고속 라우터에서는 포워딩 작업을 가속화하기 위해 하드웨어가 사용된다.

예를 들어, 100Gbps 링크와 64바이트 데이터그램을 처리하려면 5.12나노초 이내에 데이터를 처리해야 한다.

 

2. 스위칭 패브릭(Switching Fabric)

 

스위칭 패브릭은 라우터 내부의 핵심 경로로서 입력 포트에서 출력 포트로 데이터를 전환(switch)하는 역할을 한다.

여러 유형의 스위칭 메커니즘(크로스바, 버스 등)이 사용된다.

스위칭 패브릭이 과부하 상태가 되면 데이터그램이 대기열에 저장되거나 드롭될 수 있다.

 

3. 출력 포트(Output Port)

 

출력 포트는 데이터를 최종적으로 라우터에서 외부로 전송하는 역할을 한다.

데이터그램을 스위칭 패브릭에서 받아 필요한 데이터 링크 계층 및 물리 계층 처리를 수행한다.

양방향 링크에서는 입력 포트와 연결되어 작동한다.

 

4. 라우팅 프로세서(Routing Processor)

 

라우팅 프로세서는 라우터의 컨트롤 플레인 작업을 수행하며 다음과 같은 기능을 담당한다:

라우팅 프로토콜 실행 (예: OSPF, BGP).

라우팅 테이블 및 포워딩 테이블 업데이트.

SDN 환경에서는 원격 컨트롤러와 통신하여 포워딩 테이블 엔트리를 관리한다.

 

 

4.2.1 입력 포트 처리와 목적지 기반 포워딩 (Input Port Processing and Destination-Based Forwarding)

 

입력 포트에서 데이터그램 처리는 다음 단계로 이루어진다(그림 4.5 참조):

1. 라인 종료(Line Termination): 물리 계층 신호 처리.

2. 데이터 링크 처리: 프로토콜 처리 및 디캡슐화.

3. 포워딩 테이블 조회:

데이터그램의 헤더를 기반으로 출력 포트를 결정한다.

포워딩 테이블은 라우팅 프로세서에서 입력 포트로 전달되며, 이는 데이터그램의 처리를 더욱 빠르게 만든다.

 

예: 단순 포워딩 테이블 사용

 

라우터는 데이터그램의 목적지 주소를 기반으로 출력 포트를 결정한다.

포워딩 테이블의 엔트리는 주소 범위와 출력 포트가 매핑되어 있다.

예를 들어:

주소 11001000 00010111 00010 → 포트 0

주소 11001000 00010111 00011 → 포트 1

 

라우터가 출력 포트를 결정하는 기본 과정

 

라우터는 입력 포트로 들어온 데이터그램을 처리하고, 포워딩 테이블을 참고하여 출력 포트를 결정한다. 이 과정은 다음과 같이 이루어진다.

1. 데이터그램의 헤더 분석:

데이터그램의 IP 헤더에서 **목적지 IP 주소(Destination IP Address)**를 추출한다.

이 주소는 네트워크 계층에서 패킷을 어디로 보내야 하는지를 나타낸다.

2. 포워딩 테이블 검색:

라우터는 자신의 포워딩 테이블을 조회한다.

테이블은 다음과 같은 정보를 포함한다:

주소 범위(Prefix): 각 엔트리는 특정 네트워크 범위에 해당한다.

출력 포트(Link Interface): 패킷이 다음으로 전달될 포트를 나타낸다.

3. 매칭되는 엔트리 찾기:

데이터그램의 목적지 주소가 어떤 주소 범위(Prefix)와 일치하는지 확인한다.

만약 여러 엔트리가 일치하면, Longest Prefix Match (가장 긴 접두사 매칭) 규칙을 사용해 결정한다.

4. 출력 포트로 전송:

매칭된 엔트리에 명시된 출력 포트로 데이터그램을 전송한다.

Longest Prefix Match (가장 긴 접두사 매칭)

 

라우터는 데이터그램의 목적지 주소가 여러 테이블 엔트리와 매칭될 경우, 가장 긴 접두사를 가진 엔트리를 선택한다.

이는 더 구체적인 경로를 의미하며, 정확한 전송을 보장한다.

 

Longest Prefix Match의 작동 방식

 

데이터그램의 목적지 IP 주소와 포워딩 테이블의 Prefix를 비교한다.

여러 엔트리가 매칭될 경우, 가장 많은 비트가 일치하는 엔트리를 선택한다.

입력 포트 처리의 주요 과제

 

빠른 조회 속도: 고속 링크 환경에서 테이블 조회는 나노초 단위로 이루어져야 한다.

메모리 접근 시간 최적화: 빠른 메모리(SRAM, TCAM)를 사용하여 성능을 개선한다.

혼잡 관리: 스위칭 패브릭으로의 데이터 전송이 지연되면, 대기열에서 데이터그램을 처리하거나 드롭한다.


.

 

4.2.2 스위칭(Switching)

 

스위칭은 라우터 내부에서 데이터그램을 입력 포트에서 받아 출력 포트로 전달하는 과정을 의미한다.

이를 수행하기 위해 다양한 스위칭 기법이 존재하며, 이는 그림 4.6에서 세 가지 방식으로 설명된다.

그림 4.6: 세 가지 스위칭 기법

 

1. 메모리를 통한 스위칭(Switching via Memory)

2. 버스를 통한 스위칭(Switching via Bus)

3. 상호연결 네트워크를 통한 스위칭(Switching via Interconnection Network)

 

1. 메모리를 통한 스위칭

 

초기 라우터에서 사용되었던 가장 단순한 스위칭 방식이다.

 

작동 방식:

 

입력 포트로 들어온 패킷은 라우팅 프로세서에 의해 메모리에 저장된다.

라우팅 프로세서가 목적지 주소를 확인하고 적절한 출력 포트를 결정한다.

이후, 패킷은 메모리에서 읽혀져 출력 포트로 전달된다.

 

제약 사항:

 

메모리 대역폭이 스위칭의 성능을 제한한다.

메모리 대역폭이 B 패킷/초라면, 최대 처리량은 B/2 패킷/초이다.

이는 읽기와 쓰기가 동시에 이루어질 수 없기 때문이다.

두 개 이상의 패킷이 동시에 전송되지 못하며, 직렬로 처리된다.

 

활용 예:

 

초창기 라우터 및 공유 메모리 시스템.

 

2. 버스를 통한 스위칭

 

버스를 이용해 입력 포트에서 출력 포트로 패킷을 직접 전달하는 방식이다.

 

작동 방식:

 

입력 포트가 패킷에 **레이블(출력 포트를 나타냄)**을 추가한다.

패킷이 공용 버스를 통해 전송되고, 각 출력 포트는 자신에게 할당된 패킷만 수신한다.

출력 포트는 레이블을 확인하고 해당 패킷을 수신한다.

 

제약 사항:

 

모든 입력 포트와 출력 포트가 하나의 공용 버스를 공유한다.

버스 대역폭은 스위칭 속도를 제한하며, 동시에 여러 패킷이 처리되지 못한다.

 

활용 예:

 

중소형 네트워크에서 충분한 성능 제공.

Cisco 6500 시리즈 라우터에서는 32Gbps 백플레인 버스를 사용.

 

3. 상호연결 네트워크를 통한 스위칭

 

멀티프로세서 컴퓨터의 상호연결 네트워크 구조에서 영감을 받은 방식으로, 복잡한 라우터에서 주로 사용된다.

 

작동 방식:

 

크로스바 스위치(Crossbar Switch):

N개의 입력 포트를 N개의 출력 포트에 연결한다.

**교차점(Crosspoint)**을 통해 입력과 출력을 동적으로 연결한다.

패킷이 입력 포트에서 출력 포트로 전송될 때, 스위치 컨트롤러가 크로스바의 교차점을 설정한다.

 

장점:

 

비차단성(Non-blocking):

다른 입력 포트에서 출력 포트로의 연결이 영향을 받지 않는다.

동시에 여러 패킷을 병렬로 전송할 수 있다.

대규모 네트워크에서 높은 성능 제공.

 

제약 사항:

 

크로스바 설계가 복잡하며, 비용이 높다.

다중 입력 포트가 동일한 출력 포트를 목표로 하면 병목 현상이 발생할 수 있다.

 

활용 예:

 

Cisco 12000 시리즈 라우터에서 사용.

대규모 데이터센터 및 고성능 네트워크 환경.

 

스위칭 기술 요약

스위칭 기술 장점 단점 활용 사례

메모리를 통한 스위칭 구현이 단순하고 초기 라우터에서 사용 메모리 대역폭 제한, 동시 처리 불가 초기 라우터, 공유 메모리 시스템

버스를 통한 스위칭 단순 구현, 중소형 네트워크 적합 버스 대역폭 제한, 병렬 처리 불가 Cisco 6500 시리즈

상호연결 네트워크를 통한 스위칭 높은 성능, 비차단 스위칭 가능 설계 복잡성, 비용 증가 Cisco 12000 시리즈

 

큐잉(Queuing)과 HOL 차단

 

1. 입력 큐잉(Input Queuing):

스위칭 패브릭이 충분히 빠르지 않으면 입력 포트에서 패킷이 대기열에 저장된다.

동일한 출력 포트를 목표로 하는 패킷들 간의 병목 현상이 발생할 수 있다.

HOL(Head-of-Line) 차단:

입력 큐의 첫 번째 패킷이 전송되지 못하면 뒤에 있는 패킷들도 대기해야 하는 문제.

HOL 차단은 라우터의 전체 처리량을 58%로 제한할 수 있다.

 

2. 출력 큐잉(Output Queuing):

출력 포트로 전송될 패킷이 많아 대기열이 형성된다.

대기열이 포화 상태가 되면 **패킷 손실(Packet Loss)**이 발생한다.

적응형 큐 관리(AQM):

RED(Random Early Detection)와 같은 알고리즘을 사용해 혼잡을 줄이고 패킷 손실을 완화한다.

 

3. 큐잉과 버퍼 크기

네트워크 설계에서 적절한 버퍼 크기를 설정하는 것은 중요하다.

일반적으로 RTT × 링크 대역폭으로 버퍼 크기를 계산한다.

그러나 지나치게 큰 버퍼는 지연을 유발할 수 있다(버퍼블로트(Bufferbloat) 문제).

 

 

 

4.2.5 패킷 스케줄링(Packet Scheduling)

 

패킷 스케줄링은 출력 링크로 패킷을 전송하는 순서를 결정하는 과정이다.

이 과정은 **큐잉 정책(Queuing Discipline)**에 따라 패킷의 전송 우선순위를 설정하며, 네트워크 성능에 큰 영향을 미친다.

일반적으로 사용되는 주요 스케줄링 방법은 다음과 같다:

1. FIFO(First-In-First-Out): 도착 순서대로 처리.

2. 우선순위 큐잉(Priority Queuing): 높은 우선순위의 패킷 먼저 처리.

3. 라운드 로빈 및 WFQ(Weighted Fair Queuing): 여러 클래스의 패킷을 공정하게 처리.

 

 

1. FIFO 스케줄링 (First-In-First-Out)

 

FIFO는 가장 간단한 큐잉 방식으로, 패킷이 큐에 도착한 순서대로 처리된다.

이는 선착순 서비스(First-Come-First-Served) 원칙과 유사하다.

그림 4.11: FIFO 큐잉 추상화

 

이 그림은 FIFO 방식의 기본 동작 원리를 보여준다.

Arrivals(도착): 패킷이 도착하면 대기열(Queue)에 추가된다.

Departures(출발): 출력 링크(Link)를 통해 도착 순서대로 전송된다.

 

그림 4.12: FIFO 큐 동작

이 그림은 실제로 FIFO 큐가 동작하는 모습을 시간 축으로 보여준다:

t=0에서 패킷 1이 도착하여 전송된다.

각 패킷은 동일한 전송 시간을 가지며, 패킷 5가 도착하기 전까지 큐는 비어 있다.

결과적으로, 패킷들은 도착 순서대로 전송되며, 모든 패킷이 동일한 대기 시간과 전송 순서를 갖는다.

 

FIFO 방식은 단순하지만, 중요한 서비스 품질(QoS)을 제공하지 못한다는 단점이 있다.

 

 

2. 우선순위 큐잉 (Priority Queuing)

 

우선순위 큐잉에서는 패킷이 도착하면 우선순위 클래스에 따라 분류된다. 높은 우선순위를 가진 패킷이 먼저 전송되며, 동일한 우선순위의 패킷은 FIFO 방식으로 처리된다.

 

그림 4.13: 우선순위 큐잉 모델

이 그림은 큐잉이 두 가지 클래스(높은 우선순위와 낮은 우선순위)로 나뉘는 모습을 보여준다:

High-priority queue(높은 우선순위 대기열): 실시간 트래픽(예: 음성, 화상 회의) 처리.

Low-priority queue(낮은 우선순위 대기열): 비실시간 트래픽(예: 이메일, 파일 다운로드) 처리.

 

그림 4.14: 우선순위 큐의 동작

이 그림은 두 클래스가 어떻게 처리되는지 시간 축으로 설명한다:

패킷 1, 3, 4는 높은 우선순위 클래스로 분류되고, 패킷 2, 5는 낮은 우선순위 클래스로 분류된다.

높은 우선순위의 패킷이 모두 처리된 후에야 낮은 우선순위의 패킷이 전송된다.

 

우선순위 큐잉은 실시간 서비스 품질(QoS)을 보장하지만, 낮은 우선순위 패킷이 무한정 대기하는 **Starvation(기아 현상)**이 발생할 수 있다.

 

 

3. 라운드 로빈 및 가중치 공정 큐잉(Weighted Fair Queuing, WFQ)

 

라운드 로빈 방식은 모든 클래스에 공정한 전송 기회를 제공한다. WFQ는 라운드 로빈 방식에 가중치를 추가하여 특정 클래스가 더 많은 대역폭을 차지하도록 한다.

 

라운드 로빈 방식

 

큐가 순환하며 각 클래스에서 하나씩 패킷을 선택한다.

모든 클래스가 동일한 대역폭을 가지며, 특정 클래스에 과도한 대역폭이 집중되지 않는다.

 

WFQ 방식

 

각 클래스는 **가중치(weight)**를 기반으로 대역폭을 할당받는다.

예를 들어, w1, w2, w3 가중치를 가진 세 클래스가 있을 때, 각 클래스는 다음 비율로 대역폭을 사용한다:

 

여기서  R 은 전체 대역폭이다.

 

그림 4.15: 라운드 로빈 큐 동작

클래스 1의 패킷(1, 2, 4)과 클래스 2의 패킷(3, 5)이 번갈아 가며 처리된다.

모든 클래스가 공정하게 전송 기회를 가진다.

 

그림 4.16: WFQ 큐 동작

WFQ 방식에서는 각 클래스의 가중치( w_1, w_2, w_3 )에 따라 대역폭이 배분된다.

높은 가중치를 가진 클래스는 더 많은 패킷을 전송할 수 있다.

 

WFQ는 공정성과 효율성을 동시에 제공하며, 네트워크 성능 최적화를 위해 널리 사용된다.

 

 

 

네트워크 중립성(Net Neutrality)

 

우선순위 스케줄링은 트래픽을 차별적으로 처리할 수 있으므로, 이는 **네트워크 중립성(Net Neutrality)**과 관련된 논쟁으로 이어질 수 있다.

네트워크 중립성의 기본 원칙:

1. No Blocking: 합법적인 콘텐츠를 차단하지 않는다.

2. No Throttling: 특정 애플리케이션이나 서비스를 느리게 하지 않는다.

3. No Paid Prioritization: 돈을 지불한 트래픽에 특권을 부여하지 않는다.

 

이 논쟁은 ISP가 트래픽을 공정하게 처리해야 하는지, 혹은 서비스 품질을 위해 차별적으로 처리할 수 있는지를 두고 이루어진다.