[p2p-hackers] UDP file transfer link speed identification

Daniel Stutzbach agthorr at cs.uoregon.edu
Thu Jul 21 23:32:25 UTC 2005


On Thu, Jul 21, 2005 at 04:19:30PM -0700, David Barrett wrote:
> Assuming TCP is a very simplified finite state machine (FSM) that starts 
> in "slow start" state and transitions to "congestion avoidance" state 
> when a packet loss is detected, does it likewise transition from 
> "congestion avoidance" to "hold steady" once a second packet loss is 
> detected?  If so, under what circumstances does it transition from "hold 
> steady" back to "collision avoidance" or "slow start"?  Furthermore, 
> does the cwnd get adjusted at all in "hold steady"?

There is no "hold steady" mode.  

If a loss is detected by timeout, cwnd is set to 1, ssthresh is cut in
half, and it goes back to Slow Start.

If a loss is detected via 3 duplicate ACKs, cwnd and ssthresh are both
cut in half, then it goes into Fast Retransmit mode to recover the
loss.  Once the loss is recovered, it returns to congestion avoidance
mode.

Basically, in congestion avoidance mode you still oscillate, but you
oscillate slower and closer to the goal.

Also, this oscillation is from the sender's perspective.  Ideally,
the receiver sees a steady stream of packets.  When the sender is
sending too fast, their building up in a router's queue, until the
router drops one.  The sender cuts it window in half, but there's
still a bunch of packets in the queue.  The (ideal) net effect is a
steady stream of packets arriving at the receiver.

-- 
Daniel Stutzbach                           Computer Science Ph.D Student
http://www.barsoom.org/~agthorr                     University of Oregon



More information about the P2p-hackers mailing list