TCP: Reno vs Cubic Matt Kane, Ryan Chu
Agenda Brief history of congestion control reno cubic Experiment description Results
Reno In the late 80s, the internet suffered major performance issues caused by high volume of packets being sent after a certain amount of packets offered to the network, the amount of goodput (useful packets) dropped dramatically One internet backbone dropped from 32kbits/s to 40 bits/s Van Jacobson is said to have saved the internet from congestion collapse Introduced congestion control principles in TCP Tahoe/Reno (1988-1990) ie congestion window Upon receiving 3 duplicate ACKS, Reno halves the congestion window, sets the slow-start threshold to the new cwnd, perform fast retransmit, entering fast recovery phase.
Cubic Derived from BIC BIC was more aggressive BIC was more complex BIC was not as TCP fair/friendly TCP congestion-control algorithm for high bandwidth networks with high latency The congestion window is a cubic function of time since the last congestion event
Reno vs Cubic
Experiment Upload a large file (multiple GBs) using both reno and cubic and measure the throughput. Which will have a higher throughput? Initial thought: cubic
Linux congestion control Find out and modify Linux congestion control: /proc/sys/net/ipv4/tcp_available_congestion_control shows all congestion control algorithms that can be used cubic reno /proc/sys/net/ipv4/tcp_congestion_control shows CURRENT congestion control algorithm to change, write “cubic” or “reno” cubic is default from version 2.6.19 NOTE: need root permission to change
Linux congestion control Changing TCP congestion control Method 1: setsockopt() Method 2: iperf -Z reno -Z cubic #include <netinet/tcp.h> ... if (setsockopt(msgsock, IPPROTO_TCP, TCP_CONGESTION, optval, optlen) < 0) { perror("setsockopt"); return 1; }
Results Using setsockopt() Trouble sending more than 1.4GB results were inconsistent
Results Using iperf
Discussion Why was there no difference in throughput? Ideas: Is iperf actually changing the congestion control algorithm? Network is not fast enough for cubic to make a difference max out ~100 MB/sec
Questions