Congestion
Informally: “too many sources sending too much data too fast for network to handle”
Manifestations:
Long delays (queueing in router buffers)
Packet loss (buffer overt routers)
Different from flow control
Causes/Costs
Scenario 1
Simplest scenario:
1 router, infinite buffers
Input, output link capacity: R
2 flows
Scenario 2
1 router, finite buffers
Sender retransmits lost, timed-out packets
Application-layer input = application-layer output: λin = λout
Transport-layer input includes retransmissions: λ’in >= λin
Idealisation
Perfect knowledge
Sender sends only when router buffers available
Some perfect knowledgePackets can be lost (dropped at router) due to full buffers
Sender knows when packet has been dropped: only resends if packet known to be lost
Realistic Scenario
Un-needed duplicates
Packets can be lost, dropped at router due to full buffers - requiring retransmissions
But sender times can time out prematurely, sending two copies, both of which are delivered
“Costs” of Congestion
More work (retransmission) for given receiver throughput
Unneeded retransmissions - link carries multiple copies of a packet
Decreasing maximum achievable throughput
Scenario 3
4 senders
Multi-hop paths
Timeout/retransmit
Another “Cost” of Congestion
When packet dropped, any upstream transmission capacity and buffering used for that packet was wasted
Insights
Throughput can never exceed capacity
Delay increases as capacity approached
Un-needed duplicates further decreases effective throughput
Loss/retransmission decreases effective throughput
Upstream transmission capacity / buffering wasted for packets lost downstream