네트워크_Router/라우터
[Router architecture]
[정의]
Router architecture란, 라우터 내부에서 패킷을 수신, 처리, 전달하기 위해 구성된 구조를 의미하며, 이는 크게 데이터 평면(Data Plane)과 제어 평면(Control Plane)으로 나뉜다.
[구성 요소]
- 입력 포트 (Input Port)
- 수신된 패킷을 저장하고, 헤더 검사 및 포워딩 결정을 위해 준비
- 라우팅 룩업을 위해 헤더를 추출
- 종종 lookup 기능이 여기에 탑재됨
- 스위칭 패브릭 (Switching Fabric)
- 입력 포트에서 출력 포트로 패킷을 전송하는 내부 경로
- 크로스바(crossbar), 버스(bus), 상호연결망(interconnection network) 등이 사용됨
- 출력 포트 (Output Port)
- 스위칭 패브릭으로부터 패킷을 받아, 큐에 저장한 뒤 송신
- 혼잡 시 패킷이 큐에 쌓이고, 큐 관리가 중요함 (드롭 정책 등)
- 제어 평면 (Control Plane)
- 경로 선택과 라우팅 테이블 구성을 담당
- 라우팅 프로토콜(OSPF, BGP 등) 수행
- 데이터 평면이 참조하는 포워딩 테이블(FIB)을 생성
[동작 원리 요약]
- 패킷이 입력 포트로 수신됨
- 헤더를 분석하고 포워딩 테이블(FIB)을 참조하여 목적지를 결정
- 스위칭 패브릭을 통해 해당 출력 포트로 패킷 이동
- 출력 포트에서 큐잉 후, 네트워크로 전송됨
- 제어 평면은 라우팅 정보를 수집하여 데이터 평면의 포워딩 기준을 지속적으로 업데이트함
[스위칭 패브릭(Switching Fabric)]
[정의]
스위칭 패브릭은 라우터 내부에서 입력 포트에서 받은 패킷을 출력 포트로 전달하기 위한 내부 연결 구조이다. 스위칭 방식에 따라 처리 속도와 병렬 처리 능력이 달라지며, 크게 세 가지 방식이 존재한다.
1. Switching via Memory (메모리 기반 스위칭)
정의:
가장 단순한 형태로, 패킷이 CPU를 통해 메모리에 저장되고 다시 꺼내져 출력 포트로 전달되는 구조이다.
동작 원리:
- 입력 포트에서 CPU가 패킷을 메모리에 복사
- CPU가 라우팅 결정 후, 출력 포트로 복사
2. Switching via a Bus (버스 기반 스위칭)
정의:
모든 포트가 공유하는 하나의 버스를 통해 패킷을 전달하는 방식이다.
동작 원리:
- 입력 포트가 패킷을 공용 버스로 전송
- 출력 포트가 해당 패킷을 읽어 감
3. Switching via an Interconnection Network
(상호연결망 기반 스위칭)
정의:
여러 입력 포트와 출력 포트를 병렬적으로 연결하는 고속 교차망 구조로, 크로스바(crossbar)나 다단계 네트워크 구조를 사용한다.
동작 원리:
- 입력과 출력 포트를 동적으로 연결하는 스위칭 경로를 설정
- 여러 포트 간의 동시 전송 가능
[Input port queuing:
Head-of-the-Line (HOL) blocking]
[Input Port Queuing의 개념]
라우터에서 입력 포트 큐잉(Input Port Queuing)은 스위칭 패브릭이 바쁘거나 출력 포트가 사용 중일 때, 도착한 패킷들을 입력 포트 큐에 임시 저장하는 과정을 말한다. 이때 여러 패킷이 줄지어 기다리는 동안 첫 번째 패킷이 병목이 되면 전체 큐에 영향을 주는 현상이 발생할 수 있다.
[HOL Blocking (Head-of-the-Line Blocking)]
정의:
Head-of-the-Line Blocking은 입력 큐의 맨 앞에 있는 패킷이 원하는 출력 포트가 바쁘거나 충돌 중일 경우, 뒤에 있는 다른 패킷들도 함께 지연되는 현상이다. 이로 인해 전체 처리율이 감소하고 네트워크 성능 저하가 발생할 수 있다.
[동작 원리 설명 예시]
- 입력 포트에 패킷 A, B, C가 순서대로 도착했다고 가정
- A는 출력 포트 1번을 필요로 하지만, 1번 포트가 현재 사용 중
- B와 C는 포트 2번을 향하고 있어 당장 전송 가능하지만,
- A가 큐의 맨 앞에 있으므로, B와 C도 대기 상태에 빠지게 됨
→ 이것이 HOL blocking이다.
[특징 및 해결방안]
- 전체 스루풋 감소 (이론상 최대 58.6%로 알려짐)
- 주로 **입력 큐만 존재하는 구조(Input-queued switch)**에서 발생
- 해결 방법:
- Virtual Output Queuing (VOQ) 사용: 출력 포트별로 가상 큐를 두어 독립적으로 전송 가능
- 고급 스케줄링 알고리즘(ex. iSLIP) 적용
[Output ports,
Output port queueing]
[Output Port의 정의와 역할]
출력 포트(Output Port)는 라우터에서 스위칭 패브릭으로부터 전달된 패킷을 수신하고, 이를 물리적인 링크를 통해 전송하는 역할을 한다. 출력 포트는 패킷 전송 속도가 물리 링크의 대역폭에 의해 제한되기 때문에, 트래픽이 몰릴 경우 큐잉(Queueing)이 발생할 수 있다.
[Output Port Queuing의 정의와 원인]
Output Port Queuing이란, 여러 입력 포트에서 동시에 같은 출력 포트로 패킷이 도착할 경우, 도착한 순서대로 전송하지 못하고 대기열(큐)에 저장하는 현상을 의미한다.
큐잉이 발생하는 이유:
- 여러 입력 포트에서 같은 출력 포트로 동시 전송 발생
- 출력 링크의 전송 속도보다 도착 속도가 빠름
- 출력 포트에서 처리할 수 없어 큐에 임시 저장됨