Go backward to Congestion Control
Go up to Top

Congestion control in TCP

  1. The first thing to note about his topic is that is might be a bit surprising that congestion control is part of TCP.

  2. The logic behind implementing congestion control techniques within TCP seems to have two components.

  3. First, we should observe that TCP already tends to have one good property as far as congestion control is concerned. The limits imposed by end-to-end flow control tend to smooth out the data rate when large quantities of data are transmitted.

  4. Recall from our discussion of sliding window protocols at the data link layer that if errors are highly unlikely, the perfect buffer size is the size that allows us just enough leeway to send packets just a bit longer than the time it takes for an Ack to return for the first packet sent.

  5. Consider what happens at the transport layer if the flow-control window size allows us to send more data than the system can actually deliver in the time required for an ack to return.

  6. This illustrates where and how congestion arises:

  7. It also suggest that it might be completely avoidable: but this is misleading:

  8. So, the trick is to overburden the routers somewhat but not too much.

  9. The other trick is that end-hosts can infer than "too much" has occurred by monitoring "lost" packets:

  10. TCP uses this simple feedback to limit congestion by placing an additional "congestion window" on its transmissions and adjusting this window's size based on when timeouts occur.

  11. At the steady state, TCP employs something like Ethernet's exponential backoff algorithm:

  12. If you think carefully about what actually happens when a packet gets lost, you will see that we still have a problem. Basically, the whole connection goes dead so we lose our self-clocking property.

  13. TCP solves this with an approach called "slow start". This approach is used (with slight difference) both when a connection is first established and after a packet is lost.

  14. The mechanisms I have described so far represent a (somewhat imcomplete) description of most current TCP implementations.

  15. If you think about them for a bit, you should at least conclude that Berners-Lee wasn't thinking much about how TCP works when the web protocol HTTP was developed.

  16. There are some odd tricks routers can perform to help schemes like this work better.

  17. One approach is called "Random Early Detection" gateways.

  18. Another issue with which routers can help is fairness.

Computer Science 336
Department of Computer Science
Williams College

Prev Up