Router
- 입력 포트 : 포워딩 테이블을 참조하여 도착된 패킷이 스위치 구조를 통해 라우터 출력 포트를 결정한다.
- 스위치 구조 : 라우터의 입력 포트와 출력 포트를 연결한다.
- 출력 포트 : 스위치 구조에서 수신한 패킷을 저장하고 필요한 링크 계층 및 물리 계층 기능을 수행하여 출력 링크로 패킷을 전송한다.
Destination-based forwarding
- 목적지 주소 기반 포워딩의 경우 목적지 주소에 따라서 링크를 결정하게 되는데, 위 표와 같이 목적지 주소 범위에 따라서 링크 인터페이스가 결정된다.
- 다수의 매치가 있을 때 라우터는 최장 프리픽스 매치 규칙(longest prefix matching rule)을 사용한다. 즉, 테이블에서 가장 긴 매치 엔트리를 찾고, 여기에 연관된 링크 인터페이스로 패킷을 보낸다.
(ex) 11001000 00010111 00010110 10100001 -> 0번, 11001000 00010111 00011000 10101010 -> 1번)
Queueing
- Input port queueing
위 그림과 같이 Input port에서 데이터그램 queueing이 일어나고 있을 때 앞에 있는 데이터그램이 출력 포트 경쟁으로 인해 전달되지 못하고 있으면 뒤에 있는 데이터그램은 HOL Blocking을 겪게된다.
- Output port queueing
링크로 전달되는 속도보다 스위치 구조가 데이터그램을 전달하는 속도가 더 빠르다면 버퍼링이 필요하다. 여기서 버퍼는 당연이 유한공간이기 때문에 버퍼에 자리가 없다면 어떤 데이터그램을 Drop할지에 대한 정책이 필요하다. 버퍼가 가득 찼을 때 도착하는 패킷을 Drop하거나, 버퍼 내부에서 우선순위를 고려하여 Drop하는 정책 등이 있다.
버퍼에 있는 데이터그램을 링크로 보낼 때도 버퍼에 있는 데이터그램 중 어떤 것을 우선적으로 처리할 지에 대한 스케줄링도 필요하다.
Packet Scheduling
- FCFS
패킷은 도착한 순서와 동일한 순서로 나가게 된다.
- Priority
전형적으로는 FIFO와 동일하나, 우선순위가 더 높은 큐에 있는 패킷을 먼저 나가게 한다.
- Round robin
우선순위 큐잉과 같이 클래스로 분류 되지만, 클래스 간에는 엄격한 서비스 우선순위가 존재하지 않으며, 라운드 로빈 스케줄러가 클래스 간에 서비스를 번갈아서 제공한다.
- Weighted fair queueing
라운드 로빈 튜잉의 일반화된 형태이다. 이는 각 클래스 마다 다른 양의 서비스 시간을 부여받는다는 점에서 라운드 로빈과 차이가 있다.