0x04 패킷 교환 네트워크에서 지연, 손실, 처리율
4.1 패킷 교환네트워크 지연 개요
buffer에서 packet이 delay가 일어나는 경우가 4가지 있다 :
(1) 노드처리지연(processing delay)
패킷 헤더(오류)를 조사하고 그 패킷을 어떤 출력링크로 보낼지를 결정하는 시간(일반적으로 ms)
(2) 큐잉지연(Queuing delay)
큐에서 출력링크로 전송되기를 기다리는 시간
-
특정 패킷 큐잉 지연 길이는 큐에 앞서 도착한 패킷의 수에 의해 결정되며
-
라우터의 혼잡제어 레벨에 따라 결정됨
- 출력링크가 큐로들어오는 패킷의 속도를 따라잡지 못하는 경우 발생
- 큐가 비어 있고 다른 패킷이 전송중인 상태가 아니라면 큐잉지연은 0, 트래픽이 많고 다른 많은 패킷이 전송 대기 중이면 큐잉 지연은 매우 길어짐
- 큐잉 지연은 수 μs ~ 수 ms
(3) 전송지연(transmission delay)
큐에서 하나의 패킷의 모든비트가 출력링크로 전송되는 시간
- 패킷의 길이를 L bits, 라우터 A에서 B까지 링크 전송률을 R bps라 할 때, R은 라우터 B로 가는 링크의 전송률에 의해 결정됨
- 예를 들어 10 Mbps 이더넷 링크의 경우 전송률 R은 10 Mbps인 것(100Mbps면 100Mbps임)
이 때 전송지연은 L/R임. 일반적으로 수 μs ~ 수 ms
(4) 전파지연(propagation delay)
출력링크의 처음부터 라우터 B 까지의 전파에 필요한 시간
-
전파속도는 링크의 물리 매체(광 섬유, 꼬임쌍선)에 따라 다른데 범위는
2∗108meter/sec 에서 3∗108meter/sec 임(빛의 속도와 같거나 약간 작음)
-
전파 지연은 구 라우터 사이의 거리(링크길이)를 전파 속도로 나눈 것 👉 d/s
전파속도 ≠ 전송률(band width)
windows에서 tracert, Linux에서 traceroute를 쓰면 실제지연인 dnodal를 볼 수 있으며, 총 3번의 실험을 한다.(전송과 라우터의 응답사이의 시간) 또한 이 명령어는 end system간의 경로도 출력해준다.
4.2 큐잉지연과 패킷손실
(1) 큐잉지연
앞의 3가지 지연과 달리 큐잉지연은 패킷마다 모두 다르다. 예를들어, 10개의 패킷이 날라갔다고 가정할 때 1번째 패킷은 큐잉지연이 없지만, 10번째 패킷은 매우긴 큐잉지연이 될 것이다. 따라서 일반적으로 큐잉지연을 말할 때 모든 패킷의 평균으로 계산하게 된다.
- R : link bandwidth (bps) # 전송률(비트가 큐에서 밀려나오는 비율)
- L : packet length (bits) # 하나의 패킷의 비트 수
- a : average packet arrival rate # 패킷이 큐에 도착하는 평균율(단위:packet/sec)
- L*a : 비트가 큐에 도착하는 평균율(큐에 쌓이는 정도로 이해하면 쉽다.)
- La/R : 트래픽 강도(traffic intensity)
큐가 매우 커서 무한대 비트를 저장할 수 있다고 가정
La/R = 0 : average. 큐잉지연이 없음
La/R → 1 : average. 큐잉지연이 커짐
La/R > 1 : 무한대의 큐잉지연!
궁금증❓ 들어오는 속도와 나가는 속도가 같으면 1이 아닌가라는 생각이 들텐데 a는 평균이기 때문에 훨씬 큰 값이 들어오기도 한다.
(2) 패킷손실
- 패킷이 무한대로 큐로 온다고 가정함
- 현실적으로 큐의 용량은 스위치 설계와 비용에 크게 의존하며, 일반적으로 유한 용량을 가짐
- 큐 용량이 유한하므로 트래픽 강도가 1에 접근함에 따라 패킷 지연이 실제로 무한대가 되진 않는다
- 다만, 패킷이 도착해서 큐가 꽉 찬 것을 발견하면, 라우터는 그 패킷을 버림(drop, lost)
- 종단 시스템 입장에서 패킷 손실은 캐핏이 네트워크 코어로 전송되었으나, 네트워크로부터 목적지에 나타나지 않는 것으로 보임
4.3 종단간 지연
종단간 지연
-
출발지 호스트와 목적지 호스트 사이에 N-1개의 라우터가 있다고 할 때
-
또한 네트워크가 혼잡하지 않으며(큐잉 지연 무시)
-
각 라우터와 출발지 호스트의 처리 지연은 dproc
-
각 링크에서의 전파지연은 dprop
-
각 호스트와 출발지 호스트에서의 전송률은 R bit/s, dtrans=L/R
-
위에 노드 지연을 더하면 종단간의 지연을 얻을 수 있음
dend−end=N(dproc+dtrans+dprop)
4.4 처리율(Throughput)
📝 처리율(Throughput) : 1초에 sender와 receiver 사이에 bit가 전송된 양(bps)
위 그림은 서버측의 처리율(Rs)과 클라이언트측 처리율(Rc)을 구분하고 있다.
- 클라이언트측 처리율이 더 크다면 average end-end throughput은 Rs
- 클라이언트와 출력링크사이에 병목현상(bottleneck link)이 생긴다
- 서버측 처리율이 더 크다면 average end-end throughput은 Rc
- 라우터에는 병목현상(bottleneck link)이 생긴다.
- 보통 라우터에서 병목현상이 생긴다.
- 처리율이 가장 작은데서 병목현상이 생긴다
처리율은 사용자들이 접속할 때마다 커지는 트래픽
, 네트워크 장치간 대역폭
, 네트워크 중간에 발생하는 에러
, 장치 스펙
에 영향을 받음.
대역폭(bandwidth) == 최대처리율, 즉 단위시간당 전송가능한 최대비트수