Congestion Control in TCP
Congestion Control in TCP
Introduction
Many very important networking issues exist at the TCP layer:
For instance:
• How to reliable communicate over an unreliable channel
• How should a sender restrain itself: flow and congestion control
• How to agree on the action to take for lost, delayed, reordered
messages
• How to deal with large data: fragmentation and reassembly
• How to guarantee performance when resources shared
TCP segment
32 bits
URG: urgent data counting
(generally not used) source port # dest port #
by bytes
sequence number of data
ACK: ACK #
valid acknowledgement (not segments!)
U A Pnumber
head not
PSH: push data now len used
R S F Receive window
(generally not used) # bytes
checksum Urg data pnter
rcvr willing
RST, SYN, FIN: to accept
Options (variable length)
connection estab
(setup, teardown
commands)
application
Internet data
checksum (variable length)
(as in UDP)
Congestion Control:
• Congestion: informally: “too many sources sending too much
data too fast for network to handle”
• Manifestations:
– Packet loss (buffer overflow at routers)
– Increased end-to-end delays (queuing in router buffers)
W
rate = Bytes/sec
RTT
• SACK
ACK
2
W W+ 1/W
• Linear growth of W each
RTT:
3
WW+1
4
CA: Additive Increase, Multiplicative Decrease
be long! 1
1
1
1
1
1
• Option 2: duplicate ACKs 1
• Adjusts ssthresh
ssthresh W/2
• EWMA
• influence of past sample decreases
exponentially fast
• typical value: = 0.125