2022. 2. 17. 14:01ㆍMajor`/컴퓨터 네트워크
Router 기능
1. Router Processor가 라우팅 알고리즘/프로토콜을 수행해준다
- Control Plane :: 라우팅 기능을 수행하기 위해서 라우팅 프로토콜 메시지를 주고받음
- Packet의 경로를 결정해준다
- 소프트웨어가 구현한다
2. Forwarding :: 입력 Link → 출력 Link로 Packet을 포워딩한다
- 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 폐기 정책이 필요하다
- 꼬리 폐기 : 도착한 Packet 폐기
- 우선순위 : 우선순위에 기반해서 폐기/제거
- 무작위 방식(Random) : 무작위로 폐기/제거
우선순위 스케쥴링 :: Priority Scheduling
- 큐에 존재하는 Packet 중, 우선순위가 높은 Packet부터 전송
- 서로 다른 큐에 존재하는 Packet들
- 구분 방법 : IP 출발지/목적지, 포트 번호, 마킹 등의 정보를 통해서 구분
- 라운드 로빈 스케쥴링 정책에 의해서 Packet 전달
라운드 로빈 스케쥴링 :: Round-Robin Scheduling
- 다중 클래스일 경우
- 클래스 큐를 조사해서 각 클래스 별로 순서대로 Packet 전송
WFQ 스케쥴링 :: Weighted Fair Queuing Scheduling
- 라운드 로빈의 일반화된 개념 :: 각 클래스별로 순서대로 Packet을 전송
- 차이점 : WFQ는 각 클래스마다 서비스 시간(가중치)가 다르다