Rounter에는 packet이 넘칠 것을 대비해 buffer가 존재한다. 이 버퍼는 queue구조이다. 당연하겠지만 link의 capacity보다 arrival rate가 더 높을 때 queue가 증가한다. 만약 queue가 full인데도 더 도착하면 그 때부턴 packet loss가 발생한다.
그러나 packet이 delay되는 까닭은 그것 이외에도 4가지나 존재한다. 방금 설명한 것이 바로
queueing delay이다.큐잉 딜레이는 말 그대로 router안에 패킷들이 넘쳐서 버퍼에 저장하게 되니 발생하는 지연이다.
두번째는 Transmission Delay이다. 이것은 데이터가 네트워크 링크를 통해 전송되는 시간을 의미한다. Data's Length / Transmission Rate(bps)
세번째는 nodal processing이다. 이것은 bit error가 존재하는지 점검하는 것과 router에 arrival link로 들어온 패킷이 departure link로 옮겨지기까지 발생하는 지연이다. 즉, 라우터 도착~출발까지의 시간이다.
마지막은 Propagation Delay이다. 이것은 말 그대로 물리적으로 전달되는 시간이다. 거리,속력,시간 공식을 그대로 적용해서 link의 총 길이 / link를 통과하는 속력이다.
그냥 queue를 무지막지하게 크게 만들면 안될까?
queue가 너무 크다면 딜레이가 너무 커질 것이고 그렇다고 queue가 없다면 loss양이 너무 많아질 것이다. 그 사이의 적정지점을 찾는 것이 그 동안의 과제였다.
실제 해저광케이블을 통해 router들은 연결되어있는데 이것이 실제로 작용하는지 확인하기 위해서 traceroute program을 사용하면 된다(tracert for window)
Throughput은 sender에서 receiver까지 전달될때의 속도를 의미한다. bit/time이니까 사실 bps와 다를 것이 없다.
일종의 병목현상으로 이해하면 된다. 위 그림을 보면 각각 링크의 bandwidth가 더 좁은 쪽이 존재한다. 그리고 data의 전달은 더 좁은 link에 의해 결정된다. 아무리 큰 link가 존재해도 좁은 link에 의해 지연되기 때문이다. 그리고 그런 지점들을 Bottleneck이라고 부른다.