Packet Scheduling
상위 문서: Router
개요
패킷 스케쥴링(Packet scheduling)이란 출력 포트 버퍼에 여러 패킷이 대기하고 있을 때 어떤 순서로 패킷을 보낼지를 결정하는 메커니즘이다. 이때 패킷 스케쥴링에서 고려해야할 요소는 크게 network neutrality와 priority이다. Network neutrality는 네트워크가 특정 기업이나 서비스에 편향적인 대우를 해서는 안된다는 것이다. 즉, 네트워크는 공공의 것이므로 그 누구에게 치우침도 없이 공정하게 운영되어야 한다는 것이다. 이는 일견 맞는 말처럼 보인다. 하지만 network neutrality를 엄격하게 실천할 경우에는 네트워크 트래픽을 과도하게 사용하고 있는 어떤 무임승차자를 처벌하거나 제제할 방법이 없다. 이 경우에는 네트워크에 투자할 기업이나 국가가 줄어들어 전체 네트워크 망에 대한 투자가 감소할 수도 있다.
이에 대치되는 개념이 priority이다. 어떤 패킷은 특별히 더 중요한 성격을 띄고 있을 수 있다. 예를 들어 해당 패킷의 송신 호스트가 망사용료를 많이 내는 기업이나 개인일 수도 있고, 중요한 기관에서 전송된 패킷일 수도 있다. 이러한 패킷에 더 높은 priority를 주고, 해당 패킷에 더 많은 혜택을 제공한 다면 국가나 기업이 네트워크 망에 투자할 유인이 생겨 네트워크에 대한 투자가 증가할 수도 있다. 그러나 이는 공공의 성격을 띄는 네트워크의 목적성에 부합하지 않는다는 점이 지적되기도 한다.
따라서 패킷 스케쥴링을 설계할 때는 priority나 neutrality를 고려하여 설계되며, 그 설계 방식에 따라 neutrality를 중시할 수도 있고, priority를 중심으로 설계될 수도 있으며, 이 선택에 따라 네트워크의 성능, 사용자 만족도, 투자 유인 등에 큰 영향을 미친다.
First-in-First-Out
FIFO(First-in-First-Out) 방식은 쉽게 말해서 버퍼에 도착한 순서대로 패킷을 전송하는 방식이다. Figure 1은 FIFO 방식에 사용되는 포트를 추상화하여 도식적으로 나타낸 것이다. Figure 2는 FIFO 방식이 어떻게 동작하는지 잘 보여준다. 패킷 도착 순서는 위쪽 타임라인 위의 상자에 표시되어 있으며, 패킷 전송(출발)은 아래쪽 타임라인에 나타나있다. 또한 각 시간에 어떤 패킷이 전송되고 있는지는 두 타임라인 사이에 표시되어 있다. 해당 문서의 예제에서는 각 패킷을 전송하는데 3t 만큼이 소요된다. Figure 2는 각 패킷이 도착한 순서대로 전송되는 것을 잘 보여준다. 또한 패킷 4가 전송된 이후 queue에는 아무 패킷도 남아 있지 않기 때문에 패킷 5가 도착하기 전까지 출력 링크(link)는 idle 상태가 되어있다.
Priority Queuing
Priority queuing에서는 출력 링크로 도착하는 패킷들이 queue에 도착하면서 priority class로 분류된다. 각 priority class는 고유한 queue를 가지며, 스케쥴러는 전송할 패킷을 고를 때 queue가 비어있지 않은 가장 높은 priority queue에서 패킷을 선택한다. 또한 같은 priority class 내에서는 보통 FIFO 방식으로 처리한다. Figure 3는 priority queueing 방식을 이용하는 포트를 추상화하여 도식적으로 나타내었다. 또한 figure 4는 priority queueing 방식이 어떻게 동작하는지 잘 보여준다. 해당 예제에서는 priority class가 두개 존재하며, 패킷 1, 3, 4는 high-priority class, 패킷 2, 5는 low-priority class에 속한다. 이때 다음고 같이 동작한다.
- 패킷 1이 도착했을 때 링크가 비어 있으므로 즉시 전송을 시작한다.
- 전송 중에 패킷 2(low), 패킷 3(high)이 도착하여 각자 큐에 저장된다.
- 패킷 1 전송이 끝나면 패킷 2가 먼저 도착했음에도 high-priority queue에 저장된 패킷 3이 먼저 전송되고 이후 패킷 2가 전송된다.
- 패킷 2 전송 중에 패킷 4(high)가 도착하더라도 전송 중단은 없으며, 패킷 4는 high-priority queue에서 대기하다가 패킷 2 전송 후 전송된다.