Congestion Avoidance
Congestion Avoidance
Congestion Avoidance
Congestion avoidance
Behavior of a TCP Sender
• Sender sends “N” bytes (as
much as credit allows)
• Start credit (window size) is
small
– To avoid overloading network
queues
• Increases credit exponentially
– To gauge network capability
Behavior of a TCP Receiver
• Receiver schedules an ACK on
receipt of “next message.”
• TCP acknowledges the next
segment it expects to receive,
not the last segment it
received.
– In the example, N+1 is blocked,
so the receiver keeps
acknowledging N+1 (the next
segment it expects to receive).
TCP Slow Start
• If ACK acknowledges
something
– Updates credit and sends
• If not, presumes it
indicates a lost packet
– Sends first
unacknowledged message
right away
– Halves current credit
(slows down)
– Increases slowly to gauge
network throughput
Multiple Drops in TCP
• If multiple drops occur in the
same session:
– Current TCPs wait for time-out
– Selective acknowledge may be
a workaround
– New “fast retransmit” phase
takes several round-trip times
to recover
Managing Interface Congestion
with Tail Drop