Presentation by Joe Szymanski For Upper Layer Protocols April 13, 2015 What is a big fat pipe? High bandwidth-delay product What is the unit of measure? Bits per seconds times seconds results in bits? Bandwidth-delay product is max bits “in flight” Data 4 6 27531 1 bps Delay = 6 seconds Why are big fat pipes special? Two parts to bandwidth-delay Bandwidth high speed Delay Each requires special considerations with regards to congestion control The effects of high speed During steady data transfer: 1.5 Max _ Throughput ppr packet_ error _ rate What error rate is needed to reach a given throughput? For packet size = 1500 bytes and RTT = 100 ms: 1500 bytes 8bits _ per _ byte 1 ppr 1.2 10 5 bps 0.1s To reach a throughput of 10 Gbps: 1010 1.5 1.2 105 p p 2 1010 Other difficulties for high speed Packet loss rate creates a limit to max window size How long to reach max throughput in slow start? For a 10Gbps link, it takes a windows size of 83,333 packets and 17 RTTs Recovery from consecutive timeouts Two consecutive timeouts ? First timeout ssthresh = cwnd/2, cwnd = 1 MSS Second timeout ssthresh = 2 MSS, cwnd = 1 MSS To reach 10Gbps again, it takes 83,332 RTTs What about high delay? High delay means lots of bits are in flight at once A single loss takes just over 1 RTT to be detected 2 × bandwidth-delay product bits are sent between loss and detection of loss All of these bits potentially need to be retransmitted What can fix this? SACK with selective repeat Proposed Solutions High Speed TCP Proposed by Sally Floyd The ICSI Center for Internet Research Once the congestion window reaches a threshold, a new function is used for window increases and decreases H-TCP Proposed by D. Leith and R. Shorten Hamilton Institute, NUI Maynooth Changes the values for additive increase and multiplicative decrease based on congestion High Speed TCP (Floyd) While packet drop rate p < 0.0015 (or while congestion window < 31), use standard TCP rules Otherwise, increase/decrease the congestion window by a function of the current congestion window If Wi is the current congestion window, let Wi+1 f(Wi) Different functions are used for increase and decrease of the congestion window High Speed TCP (Floyd) (cont’d) Through a lot of math based on the chosen packet drop rate and the required throughput, the following are given for a (the function for increasing the cwnd) and b (the function for decreasing the cwnd) w is the current congestion window (in packets) W is the threshold to use the new equations W1 is the required final throughput B = b(W1) 2 w 2.0 b( w) p(w) a(w) 2.0 b(w) log(w) log(W ) b( w) ( B 0.5) 0.5 log(W1 ) log(W ) HTCP (Leith, Shorten) Using an analysis of drop-tail networks, it is shown that a TCP friendly congestion control scheme must have the following: Let α be the additive increase factor Let β be the multiplicative decrease factor α = 2(1 - β) Highest throughput can be achieved by setting α must be calculated as in the above equation RTTmin RTTmax HTCP (Leith, Shorten) (cont’d) For each ACK, set α as a factor of the time since the last congestion event If the last event was recently, set δ = 1 This corresponds to standard TCP congestion control Otherwise, set δ = f(t), where f is a function of t, the time since the last congestion event Set α = 2(1 – β)δ to maintain TCP friendliness For each congestion event, set β = RTTmin / RTTmax There are functions that can be used that avoid direct calculations on RTTmin and RTTmax Implementation Change SCTP stack to allow for congestion control modules Implement and test an HTCP module Standard test cases: Loss rates of 0%, 5%, and 10% For more details, contact me later Results, 0% loss Standard HTCP Results, 5% loss Standard HTCP Results, 10% loss HTCP Standard What happened? HTCP performed worse than standard congestion control in high loss cases Why? HTCP only performed slightly better than standard congestion control otherwise What changes can be made to increase performance? Remove some of the multiplicative decrease Results, 0% loss HTCP Standard HTCP (Modified) Results, 5% loss Standard HTCP HTCP (Modified) Results, all cases Don’t panic! I’ll show you what each line means. What’s wrong with the modification? Is the modified HTCP algorithm TCP friendly? Will the modified HTCP algorithm work well on a link that is used by multiple TCP streams?