이상적으로는, 두 엔드 시스템이 서로 데이터를 원하는 만큼 걱정 없이 주고 받을 수 있어야 하지만 현실은 그렇지 않다.
데이터는 생각했던 것보다 더 느리게 전송되거나, 유실되는 경우도 종종 발생한다.
이번 글에서는 이러한 문제들에 대해서 알아본다.
어떻게 packet loss와 delay가 발생할 수 있을까?
Packet Queueing
데이터는 패킷이라는 작은 단위로 나뉘어져서 네트워크를 통해 전송된다. 이러한 패킷들은 router나 switch와 같은 네트워크 장치의 buffer에서 대기열을 이룬다. 각 패킷들은 대기열 내에서 순차적으로 처리되고, 해당 장치가 전송될 준비가 완료되면 전송하게 된다.
Arrival Rate & Output Link Capacity
네트워크 장치의 연결하는 arrival rate(라우터에 도착하는 속도)가 일시적으로 output link capacity(= link transmission rate)를 초과하게 되면 패킷 손상으로 이어질 수 있다.
(라우터에 물이 계속 들어오는데 물을 다시 퍼내는 속도가 느려서 이에 따른 delay가 발생하고, 결국 물이 계속 쌓이게 되는 현상. 만약 buffer의 크기를 초과하게 되면, 그 초과한 양만큼 물이 넘치게 되는 것과 동일하기 때문에 loss가 발생한다고 생각하면 된다.)
Packet Delay의 4가지 요소
d_proc : nodal processing <라우터 내부에서 일어나는 과정>
- 패킷이 네트워크 노드 (ex. 라우터, 스위치)를 통과하는 과정을 말한다.
- 이 과정에서 발생하는 지연을 Nodal processing delay(d_proc)라고 부른다.
- bit error들을 check
- 노드를 통과하는 패킷의 ip header를 확인하고 output link를 결정하는데 소요되는 시간을 말함
- 보통 msec 이하의 매우 짧은 시간임
d_queue : queueing delay
- transmission(전송)을 위해 output link에서 기다리고 있는 시간
- 라우터의 혼잡도 레벨에 의존함
d_trans : transmission delay
- 패킷의 모든 비트들을 link로 밀어내는 시간
- L: Packet Length (bits)
- R: Link Transmission Rate (bps)
- Transmission Delay = L/R
d_prop : propagation delay
- d: length of physical link
- s: propagation speed (2x10^8 m/sec)
(ex. 빛, 음파의 속도) - Propagation Delay = d/s
여기서 Transmission(전송), Propagation(전파)이 비슷해보이기 때문에 혼동될 수 있는데, 이 둘은 완전히 다른 녀석들이다!
Transmission Delay는 Output link에서 push해서 packet을 밖으로 내보는데 걸리는 지연 시간을 의미. (물을 밖으로 퍼나르는 시간)
Propagation Delay는 Packet이 Physical Link를 타고 다음 목적지로 도착할 때까지 걸리는 지연 시간을 의미. (물이 시냇물을 따라 흘러가는 시간)
Caravan Analogy (고속도로 자동차와의 유사점으로 살펴보기)
데이터 패킷의 전송을 설명하기 위한 비유이다.
자동차(비트), 카라반(패킷), 톨부스(라우터) 를 각각 나타낸다.
Q. 위와 같이 자동차 10대가 있는데 100 km/h로 운행된다. (bit가 네트워크를 통해 이동하는 속도) 그리고 toll booth(요금소)에서 자동차가 정산하기 위해 12 sec가 걸린다. (bit transmission time)
그러면 10개의 자동차가 2번째 toll booth까지 세워질려면 얼마나 걸릴까?
A. toll gate의 총 10개의 차량이 거치니깐 12sec * 10 =120 sec, 그리고 자동차가 propagate하는 100km/100km/h=60min
2min(transmission delay)+60min(propagation delay) = 62min
Q. 위의 예에서 만약 자동차의 속도가 1000 km/h라고 하고 toll booth에서 자동차 요금 정산시간이 1 min이라고 한다면,
첫번째 booth에서 모든 자동차가 서비스 받기 전 몇 개의 자동차들이 2번째 booth에 도착할 수 있을까?
A. 도착할 수 있다. 첫번째 자동차는 두번째 톨부스에 도착할 때 6min+1min=7min이 걸린다. 이때 10대중 7대는 이미 떠났고 3대는 남아 있다.
즉 이 예에서 말하고 싶은거는 빠져나가는 속도가 매우 빨라서, 모든 packet의 bit가 1st를 나가기 전에 일부 bit가 두번째 라우터에 이미 도착해서 처리될 수 있다는 것이다. 즉 두번째 라우터에서 쌓여서 queueing 현상을 일으키지 않는다.
Packet Queueing Delay 자세히 살펴보기
R: link bandwidth (bps)
L: packet length (bits)
a: average packet arrival rate
La/R는 평균 큐잉 지연을 결정하는 주요 요인이다. 이 값이 0에 가까울수록 평균 큐잉 지연은 작아지고, 반면에 이 값이 1에 가까워지면 평균 큐잉 지연은 커진다.
특별히, La/R > 1일 때는 서비스될 수 있는 작업보다 더 많은 작업이 도착하고 있다는 의미로, 즉 네트워크 장치가 처리할 수 있는 것보다 더 많은 데이터가 도착하고 있다는 의미이다.
유한한 크기의 큐에서 La/R > 1인 상황은 과도한 패킷 손실을 초래할 수 있기 때문에, 따라서 이론적으로 La/R 값을 가능한 한 1 아래로 유지하는 것이 중요하다. 이를 위해 트래픽 관리와 제어 메커니즘을 사용하여 네크워크 복잡성을 최소화하고 전체 시스템 성능을 향상시켜야 한다.
La/R ~ 0: avg. queueing delay small
La/R → 1: avg. queueing delay large
La/R > 1: more “work” arriving is more than can be serviced
그렇다면, 진짜 Internet Delay & Loss는 어떻게 보일까?
Traceroute Program
traceroute는 인터넷에서 소스(출발지)부터 목적지까지의 경로에 있는 각 라우터까지의 지연 시간을 측정하는 프로그램이다. 이 프로그램은 네트워크 문제를 진단하거나 경로 추적을 수행하는 데 유용하다.
(1) 모든 라우터에서 각각 경로상 다음라우터에게 3개 packet들을 보낸다.
(2) 다음 라우터는 이전의 보낸 라우터에게 packet들을 리턴한다.
(3) 이전의 보낸 라우터는 transmission and reply (전송과 응답 사이) 간격을 측정한다. (delay 측정)
Throughput
Throughput은 네트워크 성능을 측정하는 중요한 지표 중 하나로, 송신자에서 수신자로 전송되는 비트의 비율을 시간 단위로 나타낸다. 즉, 단위 시간 동안 얼마나 많은 데이터가 성공적으로 전송되었는지를 나타내며, 이는 종종 "bps"(비트/초)와 같은 단위로 표시된다.
즉시성(Instantaneous) Throughput
특정 시점에서의 데이터 전송률을 나타낸다. 이 값은 네트워크의 현재 상태를 반영하며, 네트워크 복잡도나 다른 요인들에 따라 순간적으로 변할 수 있다.
평균(Average) Throughput
긴 기간 동안의 평균 데이터 전송률을 나타낸다. 이 값은 네트워크 성능의 일반적인 측정치를 제공하며, 일시적인 변동성을 평준화하여 보다 안정적인 측정치를 제공한다.
만약 위의 그림처럼 들어오는 Rate가 나가는 Rate보다 작다면 처리되는 average throughput은 Ra일 것이다.
반대로 들어오는게 Rate가 나가는 것보다 크면 Bottleneck Link (= Min(Rs, Rc)) 때문에 처리되는 average throughput은 Rc일 것이다.
위 그림 느낌처럼 총 10개의 connection이 한 척추(backbone) R에 share된다고 가정하자. 그럼 이때 다양한 Rs, 다양한 Rc, R의 Capacity를 10개가 가져가므로 R/10 중 가장 작은 bit로 해야 원활하게 데이터가 흘러갈 것이다. 그래서 throughput은 이 값들의 제일 최소값이 되게 된다.
참고
Computer Networking: A Top-Down Approach 8th edition / Kurose, Ross / Pearson
Pro를 위한 pro https://m.blog.naver.com/dongju0531hb/221869197179