'packet size'에 해당되는 글 1건

  1. 2006.08.11 pakcet size와 window size에 따른 down load 속도 비교
engineering/Network Eng.2006. 8. 11. 13:51


                 10M Ethernet
    C3550 <----------------------> PC(tftp server)


위와 같이 스위치에 IOS image(1Mbyte size)를 down 받는다고 할때, packet size나 기타 다른 조건들의
변경으로 down load 속도는 어떻게 차이가 날 수 있는지 대략적인 예를 들어서 설명해 보겠습니다.
10M Ethernet이니 Physical 전송 speed는 1/10000000 = 0.1us입니다.


대략 속도에 영향을 주는 delay factor는 Processing Delay와 Queueing Delay, Transmission Delay,
Propagation Delay의 4가지를 생각해 볼수 있습니다.   


Processing Delay는 tftp server S/W가 IOS image file을 읽어서 physical로 전송하기 위해서
실제로 physical로 전송을 담당하는 device나 processor가 읽어갈수 있는 장소(이하 queue)에
packet을 가져다 놓을때까지 걸리는 시간과 같이 S/W가 data를 전송하기 전에 handling하는데 걸리는 시간입니다.

Queueing Delay는 Application에서 앞서 보내려 했던 packet이 완전히 physical로 전송되기 전에 다시 queue에
packet을 write하여, 실제적인 transmission이 시작되기까지 queue에서 대기하는 시간입니다.

Transmission Delay는 Queue에 있던 packet이 완전히 phyisical link로 전송되는데 걸리는 시간입니다.

Propagation Delay는 physical midium을 타고 data(bit)가 상대편 수신부까지 전달되는데 걸리는 시간입니다.

전기의 전달 속도는 빛의 2/3 정도 계산하여 2.1*10E8으로 계산된다고 하며, 근접한 거리의 경우 다른
delay factor들에 비해 무시할만큼 작은 값이 되므로 이번 계산에서는 무시합니다.
(WAN 구간으로 100Km를 넘는 경우라면 절대로 무시할만한 시간이 아니겠지요. 인공위성을 통한 경우에는
더더군다나 무시할 수 없습니다. 단방향 delay가 약 500ms정도나 됩니다.)

Processing delay는 CPU의 부하 상태에 따라서 달라질수 있고, 때로는 매우 커질수도 있습니다.
이번 계산에서는 편의상 10ms로 가정하고 계산해 보겠습니다.


계산상의 편의를 위해서 header등을 모두 무시하고, 실제로 physical로 전송되는 packet size를 100byte(800bit)와
1000byte(8000bit)로 가정하고 계산을 해보겠습니다. 각각 Transmission dealy는 80us와 800us가 되겠지요.


첫째, packet by packet 단위로 ack를 받고 전송하는 경우
100byte씩 보낼 경우 총 10000번 전송을 해야하고, 1000byte씩 보낼경우 1000번을 전송해야 합니다.
(Tx Processing Delay + Transmissiong Delay  + Rx Processing Delay) * 송수신 반복 횟수
100byte   : (10000us + 80us + 10000us) * 10000 = 200800000us(약 200초)
1000byte : (10000us + 800us + 10000us) * 1000 = 20800000us(약 20초)
위에 보신 결과와 같이 packet by packet 단위로 ack를 주고 받는 경우, processing delay나 propagation delay가
transmission delay에 비해 매우 큰 경우 packet을 크게 잘라서 보내야 down loading 속도가 빨라집니다.


둘째, 첫째와 같이 다른 delay factor들로 인해 ack를 매번 받으면 많은 시간이 걸리기 때문에 Sender Buffer와 Receive Buffer를 두고,
일정 갯수의 packet을 Ack없이 연속적으로 보내는 경우.(TCP의 Accumulate Ack)  Windown Size를 10으로 가정해 보겠습니다.
즉, 10개를 연속 보낸후에 Ack을 받고 다시 10개를 연속 보내고, 또 Ack를 받고 하는 식의 방법입니다.
100 byte  : (10000us * 10 + 80 * 10 + 10000us) * 1000 = 110800000us(약 110초)
1000byte : (10000us * 10 + 800*10 + 10000us) * 100   =  11800000us ( 약 11.8초)

좀 빨라졌지요. ^^


위와 같은 결과를 볼때 FTP로 화일을 다운 받거나 할때, 속도를 빨리 하려면 어떻게 하는게 좋을까요.
가능하면 packet size를 크게 하고, window size도 가능한만큼 크게하면 속도가 빨라 집니다.

FTP나 HTTP같은거 실행하시고, etherial로 한번 확인해 보세요. packet size는 MTU일꺼고, window size도
data link의 품질 신뢰성이 높을수록 크게 잡게 될것입니다.


도움이 되는 글이었나요??? ^^


출처. 네트워크 전문가 따라잡기 -  오리님의 글

Posted by theYoungman