1/27
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced |
---|
No study sessions yet.
What is congestion?
The packets coming into a router are faster than they leave
What are the two methods to deal with congestion?
avoidance and control
What is congestion avoidance?
pre allocate resources to avoid congestion
What is congestion control?
control congestion if and when it occurs
What are the properties we want from congestion control?
fairness and optimizing power, where power the ratio of throughput to delay
What happens if you increase a load too much?
packet losses increase and queueing delay increase
What is the idea of TCP congestion control?
each source determines network capacity by itself using implicit feedback
ACKs pace transmission (self-clocking sliding window)
How does self-clocking work?
sender sends packets, the packets get sent over a slow link that the receiver gets them from
receiver sends ACKs back at the same speed that they were sent, so we see how much time it took to send packets over the slow link
then the sender can send packets in at the same rate that the slow link sends them
If the window is W and the round-trip delay is RTT, what is the throughput of TCP assuming the bottleneck link is NOT the first link of the host?
W/RTT
What is the baseRTT?
RTT minus the queueing delay
Whats the capacity of the network? This is where no packets are in the queues.
bandwidth * baseRTT
What do we want our optimal window size to be?
the capacity of the network, ie bandwidth * baseRTT
Does TCP know the baseRTT?
no, network does not share the bandwidth
How does the source know if the network is congested?
a timeout or fast retransmit occurs
How does the source know if the network is NOT congested?
TCP just assumes this
What should the sender do based off congestion?
adjust to the available capacity
How can a sender adjust to available capacity of a network?
limit how much data is in transit using:
MaxWin = MIN(CongestionWindow, AdvertisedWindow)
How does MaxWindow relate to LastByte sent and Acked?
LastByteSent - LastByteAcked <= MaxWindow
When do we increase and decrease the CongestionWindow?
increase when congestion goes down
decrease when congestion goes up
How does the AIMD algorithm work?
increment CongestionWindow by one packet per RTT
when timeout occurs, divid CongestionWindow by two
How does AIMD work in practice?
increment the window for each ACK received
CongestionWindow = CongestionWindow + Increment
What is the increment in AIMD?
MSS * (MSS/CongestionWindow)
where MSS = maximum packet size
What happens if the initial congestion window value is too small?
waste bandwidth waiting for it to grow
What happens if the initial congestion window value is too big?
cause congestion immediately
What happens if the initial congestion window value is just right?
can still cause congestion by dumping all the bytes into the network at once
What should we do with congestion window size when we start?
we have a slow start to determine the available capacity by doubling it each RTT after receiving an ACK
What do we do to the congestion window when a timeout occurs?
enter congestion control mode
set slow start threshold, SSThresh = CongestionWindow/2
set CongestionWindow = 1
use slow start and let CW grow exponentially until = SSThresh
back to congestion avoidance w/ additive increase of CW
After a fast retransmission occurs, fast recovery can occur. What is fast recovery?
receiver misses a packet and sends duplicate ACKs
on receiving the third ACK, the sender retransmits that packet
halves the congestion window size
exits recovery when ACK for missing packet is received
enters slow start to gradually increase window size