Analysing TCP Performance When Link Experiencing Packet Loss
Total Page:16
File Type:pdf, Size:1020Kb
Analysing TCP performance when link experiencing packet loss Master of Science Thesis [in the Programme Networks and Distributed System] SHAHRIN CHOWDHURY KANIZ FATEMA Chalmers University of Technology University of Gothenburg Department of Computer Science and Engineering Göteborg, Sweden, October 2013 The Author grants to Chalmers University of Technology and University of Gothenburg the non-exclusive right to publish the Work electronically and in a non-commercial purpose make it accessible on the Internet. The Author warrants that he/she is the author to the Work, and warrants that the Work does not contain text, pictures or other material that violates copyright law. The Author shall, when transferring the rights of the Work to a third party (for example a publisher or a company), acknowledge the third party about this agreement. If the Author has signed a copyright agreement with a third party regarding the Work, the Author warrants hereby that he/she has obtained any necessary permission from this third party to let Chalmers University of Technology and University of Gothenburg store the Work electronically and make it accessible on the Internet. Analysing TCP performance when link experiencing packet loss SHAHRIN CHOWDHURY, KANIZ FATEMA © SHAHRIN CHOWDHURY, October 2013. © KANIZ FATEMA, October 2013. Examiner: TOMAS OLOVSSON Chalmers University of Technology University of Gothenburg Department of Computer Science and Engineering SE-412 96 Göteborg Sweden Telephone + 46 (0)31-772 1000 Department of Computer Science and Engineering Göteborg, Sweden October 2013 Acknowledgement We are grateful to our supervisor and examiner Tomas Olovsson for his valuable time and assistance in compilation for this thesis. We would like to pay our gratitude to CHALMERS for providing us necessary equipment. We would also like to thank the Department of Networks and Distributed Systems for giving us the opportunity to perform our thesis in the department. Last but not the least we are grateful to our parents for encouraging us to achieve our goal. Abstract TCP is a reliable protocol which is capable of handling retransmission and packet loss. In TCP, packet loss is not expected to have a noticeable impact on bandwidth. However, performance was affected even at low packet loss rates (1%) and with an increased rate of packet loss, a drastic drop was observed. To uncover the cause of this unexpected behavior of TCP, a deep analysis of TCP has been accomplished. In this paper we have done a comparison between three different congestion control algorithms (Cubic, Reno and H_TCP) and a deeper analysis of Reno by means of several experimental tests in when the link experiences Data loss and ACK loss. Initially different TCP congestion control algorithms were used to observe their influence on bandwidth rate. Subsequently the TCP variables i.e. advanced window scaling, ECN value, window scaling, TCP no-metric-save value were changed to examine their role in obtaining adequate bandwidth rate with respect to packet drop. In addition to our experimental results, we also include some possible reasons behind the drastic drop in performance rate which was observed. Moreover, experimental results show that the congestion control algorithm H-TCP performed better than Cubic and Reno while link was experiencing packet loss. However, ACK loss didn‟t affect performance that much, and up to 50% loss of ACKs could be tolerated with almost no performance degradation. Keywords: TCP congestion control algorithms, TCP variables, Data loss, ACK loss, Packet loss, Bandwidth rate etc. Table of Content Chapter 1: Introduction ....................................................................... 12 1.1 Background..............................................................................................................12 1.2 Outline of the paper .............................................................................................12 Chapter 2: Problem description ........................................................ 13 2.1 Detected problem in TCP performance........................................................13 2.2 Related work ...........................................................................................................14 Chapter 3: TCP Concepts ...................................................................... 17 3.1 TCP congestion avoidance algorithms ........................................................17 3.2 TCP variables ..........................................................................................................18 Chapter 4: Testing TCP performance............................................... 20 4.1 Description of measurement tools ................................................................20 4.1.1 Wireshark........................................................................................................... 20 4.1.2 Linux Network Traffic control (tc)............................................................. 20 4.1.3 IPERF .................................................................................................................... 21 4.1.4 Netcat ................................................................................................................... 21 4.2 Setting up the network........................................................................................22 4.3 Measuring the impact of TCP drops ..............................................................24 4.3.1 Experiment when Data link experiencing Data Drop ......................... 24 4.3.2 Experiment when Data link experiencing ACK drop........................... 25 4.3.3 Tests with CUBIC when experiencing Data Drop .................................. 26 4.3.4 Tests with CUBIC when experiencing ACK drop ................................... 27 4.3.5 Tests with Reno when experiencing Data drop .................................... 28 4.3.6 Tests with Reno when experiencing ACK drop ..................................... 28 Chapter 5: Tests with more algorithms and TCP variables ....... 30 5.1 Experiments with different congestion avoidance algorithms for data loss ...............................................................................................................................30 5.1.1 CUBIC.................................................................................................................... 31 5.1.2 RENO..................................................................................................................... 31 5.1.3 H-TCP ................................................................................................................... 32 5.1.4 Tests with different TCP variables: tcp_window_scaling ................... 33 5.1.5 Tests with different TCP variables: tcp_adv_win_scale....................... 34 5.1.6 Tests with different TCP variables: tcp_ecn............................................ 35 5.1.7 Tests with different TCP variables: tcp_no_metrics_save value ...... 35 5.2 Experiments with different congestion avoidance algorithms for ACK loss.................................................................................................................................36 5.2.1 CUBIC/RENO/H_TCP ....................................................................................... 36 5.2.2 Tests with different TCP variables: tcp_window_scaling ................... 37 5.2.3 Tests with different TCP variables: tcp_adv_win_scale....................... 38 5.2.4 Tests with different TCP variables: tcp_ecn............................................ 39 5.2.5 Tests with different TCP variables: tcp_no_metric_save value ........ 39 Chapter 6: Discussion ............................................................................ 41 6.1 Outcome from the experiments when link experiencing Data loss ....... 41 6.2 Outcome from the experiments when link experiencing ACK loss........ 42 6.3 Possible reason behind the drastic drop when link experiencing Data loss in RENO ........................................................................................................... 45 Chapter 7: Conclusion ............................................................................ 47 Chapter 8: Future Work ........................................................................ 49 References ................................................................................................. 50 Appendix .................................................................................................... 52 1. Tests with different TCP variables in CUBIC for Data loss ................... 52 1.2 tcp_adv_win_scale ............................................................................................ 52 1.3 tcp_ecn ................................................................................................................. 53 1.4 tcp_no_metric_save.......................................................................................... 53 2 Tests with different TCP variables in CUBIC for ACK loss ..................... 54 2.1 tcp_window_scaling........................................................................................ 54 2.2 tcp_adv_win_scale ............................................................................................ 54 2.3 tcp_ecn ................................................................................................................. 55 2.4 tcp_ no_metric_save ........................................................................................