Network Performance를 구성하는 요소를 알아보자.
네트워크의 Performance를 구성하는 요소들은 세 가지가 있다.
우선 Packet Loss
에 대해 알아보자.
패킷들은 라우터에서 전송될 때까지 기다리는데 이를 Queue된다고 한다.
만약 라우터가 패킷들을 다음 라우터로 전송하는 속도보다 라우터로 패킷들이 도착하는 속도가 더 빠르다면, 라우터의 Queue(=buffer)길이는 길어진다.
Queue되어 있는 패킷들을 저장하는 라우터의 메모리가 꽉 찼다면, Packet Loss(drop)가 발생한다.
물리적으로 라우터에 더 이상 저장공간이 없기 때문에, 도착한 패킷을 더 이상 저장할 수 없고, 이때 패킷을 손실하게 되는 것이다.
만약 패킷이 손실된다면, 이전 노드에서 혹은 source end system에서 패킷을 재전송하게 될 수도 있고, 아예 보내지 않을 수도 있다.
이를 결정하는 요인은 서비스의 종류인데, 재전송해야 하는 경우는 패킷의 손실이 일어나서는 안되는 경우다. 패킷의 손실은 정보의 손실을 의미하기 때문에, 정보가 사용자에게 중요하고 필요한 경우에 패킷을 재전송하게 된다.
패킷을 다시 보내지 않는 경우는, 패킷을 다시 보내게 되는 것보다 그 패킷을 보내지 않는 것이 서비스에 더 긍정적인 영향을 주는 경우다. 실시간으로 화상 회의를 하거나, 영화를 스트리밍 하는 경우를 예로 들 수 있다. 영화 혹은 화상 회의의 패킷, 그러니까 한 프레임 정도는 손실되어도 사용자 입장에서 눈치채기 힘들다. 오히려 패킷이 재전송되기를 기다리며 영상이 멈추는 것이 사용자의 입장에서 부정적인 경험이다.
다음은 Delay
에 대해서 알아보자.
패킷이 전송될 때는 delay가 발생하는데, delay의 종류는 네 가지가 있다.
1. Nodal Processing Delay
패킷이 라우터에 도착했을 때, 라우터는 패킷의 bit에 에러가 있는지 확인하고, 다음 라우터로 가기 위해서 어떤 link로 보내야 하는지 결정해야 한다. 이러한 일련의 과정들을
Nodal Processing Delay
라고 한다.
2. Queueing Delay
패킷이 다음 라우터로 전송되기 위해서는 output link가 필요하다. 하지만 output link를 통해 전송되는 패킷이 많을 경우 패킷들은 자신이 전송될 차례가 될 때까지 Queue에서 대기하는데, 이 대기하며 걸리는 시간을 Queueing Delay
라고 한다. 라우터의 Congestion Level
, 즉 라우터 내에 패킷이 얼마나 많은지에 따라 결정된다.
3. Transmission Delay
이미 앞에서 설명한 적 있다. 패킷의 비트를 'L'이라고 하고, link trasmission rate(=Link Bandwidth)를 'R'이라고 할 경우,
L/R
로 표현되는 delay이다. 라우터가 패킷을 링크에 전송하는 데 걸리는 딜레이를 의미한다.
4. Propagation Delay
'Propagataion' 이란 '전송', '전파' 를 의미한다. 패킷이 link를 통해 다음 라우터까지 이동하는 데 걸리는 시간이다. 물리적인 link의 길이를 d라고 하고, propagation speed를 s라고 했을 때, Propagation Delay는 d/s
로 표현된다.
이번에는 Queueing Delay를 결정하는 요소인 Traffic Intensity
에 대해 알아보자.
Traffic intensity는 세 가지 변수가 있다.
이렇게 세 가지이다. 이 세 가지의 변수를 이용해서 우리는 traffic intensity의 값을 알 수 있는데 값은
이렇게 표현할 수 있다.
이제 traffic intensity의 값에 따른 세 가지 경우의 수를 살펴보자면, traffic intensity가 0에 가까운 경우, 1에 거의 가까운 경우, 1을 넘어가는 경우 이렇게 세 가지가 있다.
1. ~0 인 경우.
이 경우 queueing delay는 거의 없다.
2. 1에 가까운 경우
1에 가까워지지만, 1보다는 작은 경우이다. 이 경우 결과적으로 라우터가 서비스하는 패킷 전송이, 라우터로 도착하는 패킷의 양보다 많기 때문에 service는 이루어진다. packet loss도 발생하지 않으며, 1에 가까워질수록 평균 queueing delay가 커질 뿐이다.
3. 1을 넘는 경우
Traffic intensity가 1을 넘었다는 것은 라우터가 서비스 할 수 있는 것보다 더 많은 양의 패킷들이 라우터로 도착한다는 뜻이다. 이 경우 delay가 무한해진다고 표현하게 되며, 네트워크가 기능을 하지 못하게 된다.
Throughput
이란 sender 에서 receiver까지 bit들이 전송되는 rate를 의미한다.
쉽게 말해서 정해진 time unit에 전송되는 bit의 양을 뜻한다.
물이 흐르는 파이프를 생각해 보면, 지름이 더 큰 파이프가 더 많은 양의 물을 이동시킬 수 있는데, 이렇게 큰 파이프가 Throughput이 큰 것이다.
그렇다면 처음 패킷이 전송될 때, 시작점과 목적지 사이에 한 개의 노드가 있다고 가정해 보자.
시작점
----(link a)---- 노드(라우터)
-----(link b)----- 목적지
link a의 throughput을 A, link b의 throughput을 B라고 하자.
만약 A > B이면 어떻게 될까?
시작점에서 라우터까지 가는 패킷의 양 > 라우터에서 목적지로 전송하는 패킷의 양
이기 때문에 Queueing Delay가 발생하게 되며, 패킷의 손실이 발생하게 될 수 있다.
하지만 반대의 경우, 별 일 없이 목적지까지 패킷들이 전송될 것이다.
여기서 알 수 있는 것은, 패킷의 손실을 없애기 위해서 시작점부터 목적지까지 많은 link들 중에서 가장 Throughput(=Bandwidth)가 작은 링크에 속도를 맞출 수 밖에 없다는 것이다.
이렇게 시작 지점에서부터 목적지까지(end-to-end)의 throughput을 억누르는(constrain)하는 링크를 Bottleneck Link
라고 한다. 이는 한국어로 '병목'을 의미한다. '병목 현상'의 병목과 같다.