"Multiplicative Decrease" in TCP
When a network is getting congested and packets are lost or when a network delay increases and packets timed out, TCP adjusts its window size to fit the congested environment. "Multiplicative Decrease" in TCP exists for that.
2. How this protocol works..
Whenever the sender recognizes that there is a collision - by receiving duplicated ack or timeout -, it decrease its window size by half of current window size (while the value is greater than 2) and transmits data in "slow-start" fashion, so that TCP can deliver its data reliably and efficiently even in a congested environment. This feature is necessary in the Internet.
3. How it is shown in nam (network animator)..
Here is some scenario to explain "multiplicative decrease" with a simulated Internet environment. Look the change of cwnd and ssthresh value.
Environmental parameters :: The bandwidth between
node 0 & 1 and between node 2 & 3 is 5Mb, and that between node
1 & 2 is just 0.5Mb. Queue limit between node 1 & 2 is 5. Frame
losses can be predictable.
|
Node 0 sends one packet to node 3.
cwnd = 1
|
|
....... |
|
There are some loss of packets.
cwnd = 20.199
|
|
|
|
When the sender recognizes that there is loss, it start "slow start"
cwnd = 1
( Notice, ssthresh value is decreased half of cwnd before congestion. cwnd was 20.199 ) |
|
|
|
While it increases its window size from 1, another loss is occurred.
cwnd = 6
|
|
|
|
When the sender recognizes that there is loss, it start "slow start"
cwnd = 1
( Notice, ssthresh value is decreased half of cwnd before congestion. cwnd was 6 ) |
|
|
With nam-graph, we could see the whole traffic pattern.
|
The left most points mean the packets which the sender sends.
The followed right points mean the ACKs of each packets. The red points mean retransmitted packets. |
Here is ns script for this simulation. You can also download ns script and nam file and run it by yourself.