Module 7: Transport Layer - Congestion and TCP Variants Flashcards
Solution for congestion in TCP
Dynamic adjustment
- every sender infers the level of congestion
- adapts its sending rate for the greater good
Why is congestion control difficulty?
How does the sender know there is congestion?
How should the sender adapt?
What is the performance objective?
The goal of congestion control is to…
prevent communicating hosts from overloading the network
How does the sender infer congestion?
- packet delay (RTT estimate)
- packet loss (timeout, triple duplicate ack)
What can the end host do when it detects congestion?
decrease the sending rate
when NOT detecting congestion
- increase sending rate
- make sure packets are getting sent
What are the pros and cons of the TCP Congestion Window?
- pro: avoids having explicit feedback from network
- con: under-shooting and over-shooting the rate
How does TCP increase and decrease congestion window size?
increase: linearly
decrease: multiplicatively
What’s worse? Over-sized window or under-sized window?
Oversized is worse
Oversized: packets are dropped and retransmitted (congestion collapse)
Undersized: somewhat lower throughputs
What causes the sawtooth behavior of congestion window size?
additive increase and multiplicative decrease
How is congestion window size calculated?
What is the difference between flow control and congestion control?
flow control: keep a fast sender from overwhelming a receiver
congestion control: keep a set of senders from overloading the network
Similar mechanisms:
TCP flow control: receiver window
TCP congestion control: congestion window
TCP window: min{congestion window, receiver window}
slow start and the TCP sawtooth
to start the flow, we double packets sent each time we receive an acknowledgement - until we hit a loss
what are two types of loss in TCP?
- timeout (serious problem)
solution: better to start over with a low CWND or else you might trigger a very large burst in traffic - triple duplicate ACK (fast retransmit/recovery)
solution: do a multiplicative decrease and keep going
Explain the motivation for Nagle’s algorithm?
How does Nagle’s algorithm deal with this issue?