Congestion Avoidance and Control Van Jacobson and Michael Karels Presented by Sui-Yu Wang Introduction • Congestion problem has become more severe as the computer network grows • New algorithm forcing the “packet conservation” can be used to achieve network stability – – – – – i) round-trip-time variance estimation ii) exponential retransmit timer backoff iii) slow-start iv) more aggressive receiver ack policy v) dynamic window sizing on congestion Three ways for packet conservation to fail • The connection doesn’t get to equilibrium • A sender injects a new packet before an old packet has exited • The equilibrium can’t be reached because of resource limits along the path Getting to equilibrium: slow-start • Self-clocking • Gradually increase the data in transit Source of the picture: fig1 in the paper Getting to equilibrium: slow-start • Add a congestion window to the per-connection state. • When starting or restarting after a loss, set congestion window to on packet • On each ack for new data, increase congestion window by one packet • When sending, send the minimum of the receiver’s advertised window and congestion window R log Source of the picture: fig2 in the paper Conservation at equilibrium round-trip timing • TCP – Estimating mean round trip time R R (1 ) M R R (1 ) M – Next packet sent R • Exponential backoff Source of the picture: fig4 in the paper Source of the picture: fig3 in the paper Adapting to the path: congestion avoidance • Reasons that cause time out – Packets damaged in transit – Packets lost due to insufficient buffer • Congestion avoidance – The network must be able to signal the transport endpoints that congestion is occurring – The endpoints must have a policy that decreases utilization Adapting to the path: congestion avoidance • Signal of a congested network: drop of packets • Measuring network load: – Smooth network Li N – Congested network Li N Li 1 • Sender policy Wi Wi 1 u Adapting to the path: congestion avoidance • On any timeout, set congestion window to half the current window size • On each ack for new data, increase the congestion window by 1/cwnd • When wending, send the minimum of the receiver’s advertised window and cwnd