-> 블로그 이전

[Network] 네트워크 계층 : Router

2022. 2. 17. 14:01Major`/컴퓨터 네트워크

Router 기능

1. Router Processor라우팅 알고리즘/프로토콜을 수행해준다

  • Control Plane :: 라우팅 기능을 수행하기 위해서 라우팅 프로토콜 메시지를 주고받음
  • Packet의 경로를 결정해준다
    • 소프트웨어가 구현한다

2. Forwarding :: 입력 Link → 출력 LinkPacket을 포워딩한다

  • Data Plane :: user의 Data를 라우팅 결과(경로)를 이용해서 포워딩
    • user의 Data를 빨리 전달하기 위해서 하드웨어로 구현

 

1. Packet이 Input Port로 들어온다

2. Input Port에서 Switching을 통해서 Output Port로 내보내진다

  • 스위칭 구조(Switching Fabric)은 3가지가 존재

Input Ports

Physical Layer - Processor

- bit Data들을 수신해서 원래 Frame을 형성한다

 

Data Link Layer - Processor

- Frame이 물리 계층에서 Link를 통해서 문제없이 잘 왔나 검사해준다

 

Queueing / Switching

- 잘 도착한 Frame을 어디로 보내야 할지 결정

  • 포워딩 테이블을 통해서 해당 Frame의 출력포트를 찾아낸다

- 라인 속도(Line Speed)로 Input Port를 처리한다

  • "Data가 Link를 통해 유입되는 속도 == Link를 통해서 내보내는 속도"를 목표
  • 정체 없이 온대로 바로바로 내보내기 :: 느리게 내보내면 Packet Delay/Loss가 발생할 수 있다

※ HOL Blocking (Head-Of-The-Line Blocking)

- 큐(Buffer)의 제일 앞에 있는 Datagram 때문에 뒤에 존재하는 Datagram들이 나갈수 있음에도 불구하고, 못나가는 경우

  • Switching 구조는 2개 이상의 Datagram을 하나의 Output Port로 내보내지 못하기 때문이다

  • 현재 Port 1의 Datagram과 Port 3의 Datagram이 동시에 Output Port (Red)로 가려고 한다
    • 이 때, Switch Fabric은 2개 이상의 Datagram을 동시에 허용하지 못한다

  • 따라서 Port 3의 Datagram은 나가지 못하였다
    • Port 3의 Red Packet 때문에 뒤에있는 Green Packet은 나갈수 있음에도 불구하고 나가지 못하였다 :: HOL Blocking

Switching Fabric

- '얼마나 빠르게 Input Port → Output Port로 전달할 수 있을까...'

- 스위칭 속도 : Packet들이 Input Port → Output Port로 전달되는 속도

  • N개의 입력포트가 존재 >> N × (line rate)의 스위칭 속도

 

(1) Switching via Memory

- 1세대 라우터

  • CPU가 직접 Switching을 제어한다

 

▶ 과정

1. Input Port로 들어온 Packet을 Memory가 Copy한다

  • 이 때 Input Port → Memory로 Packet이 전달되어야 하기 때문에 System Bus 1번 접근 

2. Memory에 존재하는 Packet을 Output Port에서 Copy한다

  • 이 경우도, Memory → Output Port로 Packet이 전달되어야 하기 때문에 System Bus 1번 접근 

 

>> Packet이 Input Port → Output Port로 가려면 System Bus를 총 2번 접근해야 한다

  • 스위칭 속도는 Memory Bandwidth에 의해 제한된다

 

(2) Switching via Bus

- CPU가 직접 제어하지 않고, 따로 공유 버스를 통해서 Packet이 전달된다

  • 공유 버스 : Cisco 5600 Router / 32 Gbps bus

- Bus에는 1번에 하나의 Packet만 접근이 가능하다 

  • 2개 이상의 Packet이 Bus에 접근하면 충돌이 발생한다

- 스위칭 속도는 Bus Bandwidth에 의해 제한된다

 

 

(3) Switching via Interconnection (:: Crossbar)

- Bus Bandwidth 한계를 극복

  • N개의 Input Port, N개의 Output Port에 대해서 2n개의 Bus로 구성
    • 버스 : Cisco 12000 Router / 60 Gbps bus

- 원래 멀티 프로세서에서 프로세서 간의 연결을 위해서 개발된 스위칭 구조이다 


Output Ports

- 큐잉(Buffer 관리)가 필요하다

  • Network 혼잡시 Packet Loss가 발생

- Buffer에 저장된 Datagram들을 선택해서 전송하는 스케줄링 규칙이 필요하다


스케쥴링 (Scheduling)

- Link로 전송을 위해서 큐(Buffer)에 존재하는 Packet을 선택하는 방식

 

FIFO 스케쥴링 :: First-In First-Out Scheduling

1. 큐에 도착한 Packet의 순서대로 전송한다

2. 큐가 가득찬 경우, Packet 폐기 정책이 필요하다

  1. 꼬리 폐기 : 도착한 Packet 폐기
  2. 우선순위 : 우선순위에 기반해서 폐기/제거
  3. 무작위 방식(Random) : 무작위로 폐기/제거

 

우선순위 스케쥴링 :: Priority Scheduling

- 큐에 존재하는 Packet 중, 우선순위가 높은 Packet부터 전송

  • 서로 다른 큐에 존재하는 Packet들
    • 구분 방법 : IP 출발지/목적지, 포트 번호, 마킹 등의 정보를 통해서 구분
    • 라운드 로빈 스케쥴링 정책에 의해서 Packet 전달

 

라운드 로빈 스케쥴링 :: Round-Robin Scheduling

- 다중 클래스일 경우

  • 클래스 큐를 조사해서 각 클래스 별로 순서대로 Packet 전송

 

WFQ 스케쥴링 :: Weighted Fair Queuing Scheduling

- 라운드 로빈의 일반화된 개념 :: 각 클래스별로 순서대로 Packet을 전송

  • 차이점 : WFQ는 각 클래스마다 서비스 시간(가중치)가 다르다