1 cs 4396 computer networks lab tcp – part ii. 2 flow control congestion control retransmission...
TRANSCRIPT
![Page 1: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/1.jpg)
1
CS 4396 Computer Networks Lab
TCP – Part II
![Page 2: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/2.jpg)
2
Flow Control
Congestion ControlRetransmission Timeout
TCP:
![Page 3: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/3.jpg)
3
What is Flow & Congestion Control ?
• Flow Control: Algorithms to prevent that the sender overruns the receiver with information
• Congestion Control: Algorithms to prevent that the sender overloads the network
The goal of each of the control mechanisms are different.
But the implementation is combined
![Page 4: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/4.jpg)
4
TCP Flow Control
![Page 5: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/5.jpg)
5
TCP Flow Control
• TCP implements sliding window flow control
• Sending acknowledgements is separated from setting the window size at sender.
• Acknowledgements do not automatically increase the window size
• Acknowledgements are cumulative
![Page 6: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/6.jpg)
6
TCP Format
• TCP segments have a 20 byte header with >= 0 bytes of data.
IP header TCP header TCP data
Sequence number (32 bits)
DATA
20 bytes 20 bytes
0 15 16 31
Source Port Number Destination Port Number
Acknowledgement number (32 bits)
window sizeheaderlength
0 Flags
Options (if any)
TCP checksum urgent pointer
20 bytes
![Page 7: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/7.jpg)
7
Window Management in TCP
• The receiver is returning two parameters to the sender
• The interpretation is:• I am ready to receive new data with
SeqNo= AckNo, AckNo+1, …., AckNo+Win-1
• Receiver can acknowledge data without opening the window• Receiver can change the window size without acknowledging
data
AckNowindow size
(win)32 bits 16 bits
![Page 8: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/8.jpg)
8
Sliding Window Flow Control
1 2 3 4 5 6 7 8 9 10 11
Advertised window
sent but notacknowledged can be sent
USABLEWINDOW
sent andacknowledged
can't sent
• Sliding Window Protocol is performed at the byte level:
•Here: Sender can transmit sequence numbers 6,7,8.
![Page 9: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/9.jpg)
9
Sliding Window: “Window Closes”
1 2 3 4 5 6 7 8 9 10 11
1 2 3 4 5 6 7 8 9 10 11
Transmit Byte 6
1 2 3 4 5 6 7 8 9 10 11
AckNo = 5, Win = 4is received
• Transmission of a single byte (with SeqNo = 6) and acknowledgement is received (AckNo = 5, Win=4):
![Page 10: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/10.jpg)
10
Sliding Window: “Window Opens”
1 2 3 4 5 6 7 8 9 10 11
1 2 3 4 5 6 7 8 9 10 11
AckNo = 5, Win = 6is received
• Acknowledgement is received that enlarges the window to the right (AckNo = 5, Win=6):
• A receiver opens a window when TCP buffer empties (meaning that data is delivered to the application).
![Page 11: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/11.jpg)
11
Sliding Window: “Window Shrinks”
1 2 3 4 5 6 7 8 9 10 11
1 2 3 4 5 6 7 8 9 10 11
AckNo = 5, Win = 3is received
• Acknowledgement is received that reduces the window from the right (AckNo = 5, Win=3):
• Shrinking a window should not be used; why?
![Page 12: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/12.jpg)
12
Sliding Window: Example
3K
ReceiverBuffer
0 4KSendersends 2Kof data
2K
Sendersends 2Kof data
4K
Sender blocked
![Page 13: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/13.jpg)
TCP Flow control
• Host sends 1 byte in a segment(In-efficient usage of bandwidth)
– 40 bytes TCP+IP headers – 1 byte application data
Nagle’s algorithm Send the first byte in a segment and buffer the rest until first segment is ACKed
• Rcvr reads 1 byte at a time(RcvWindow = 1 byte to the sender)
Silly window syndrome (Clark) Rcvr does not send a window update of 1 but waits until it has a buffer space of
min(MSS, half empty buffer)
![Page 14: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/14.jpg)
14
TCP Congestion Control
![Page 15: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/15.jpg)
15
TCP Congestion Control
• TCP has a mechanism for congestion control. The mechanism is implemented at the sender
• The sender has two parameters:– Congestion Window (cwnd)
– Slow-start threshhold Value (ssthresh)Initial value is the advertised window size
• Congestion control works in two modes:– slow start (cwnd < ssthresh)– congestion avoidance (cwnd >= ssthresh)
![Page 16: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/16.jpg)
16
Slow Start
• Initial value: Set cwnd = 1 » Note: Unit is a segment size. TCP actually is based on bytes and
increments by 1 MSS (maximum segment size)
• The receiver sends an acknowledgement (ACK) for each packet » Note: Generally, a TCP receiver sends an ACK for every other
segment.
• Each time an ACK is received by the sender, the congestion window is increased by 1 segment:
cwnd = cwnd + 1 » If an ACK acknowledges two segments, cwnd is still increased
by only 1 segment.» Even if ACK acknowledges a segment that is smaller than MSS bytes
long, cwnd is increased by 1.
• Does Slow Start increment slowly? Not really. In fact, the increase of cwnd is exponential (why?)
![Page 17: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/17.jpg)
17
Slow Start Example
• The congestion window size grows very rapidly– For every ACK, we
increase cwnd by 1 irrespective of the number of segments ACK’ed
• TCP slows down the increase of cwnd when cwnd > ssthresh
segment 1
ACK for segment 1
cwnd = 1
cwnd = 2 segment 2segment 3
ACK for segments 2
cwnd = 4 segment 4segment 5segment 6
ACK for segments 4
cwnd = 8
ACK for segments 3
ACK for segments 5
ACK for segments 6
segment 7
ACK for segments 7
![Page 18: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/18.jpg)
18
Congestion Avoidance
• Congestion avoidance phase is started if cwnd has reached the slow-start threshold value
• If cwnd >= ssthresh then each time an ACK is received, increment cwnd as follows:
• cwnd = cwnd + 1/ cwnd
• So cwnd is increased by one only if all cwnd segments have been acknowledged.
![Page 19: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/19.jpg)
19
Example of Slow Start/Congestion Avoidance
Assume that ssthresh = 8 cwnd = 1
cwnd = 2
cwnd = 4
cwnd = 8
cwnd = 9
cwnd = 10
0
2
4
6
8
10
12
14
Roundtrip times
Cw
nd
(in
seg
men
ts)
ssthresh
![Page 20: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/20.jpg)
20
Responses to Congestion
• So, TCP assumes there is congestion if it detects a packet loss• A TCP sender can detect lost packets via:
• Timeout of a retransmission timer• Receipt of a duplicate ACK (why?)
• TCP interprets a Timeout as a binary congestion signal. When a timeout occurs, the sender performs: – cwnd is reset to one:
cwnd = 1– ssthresh is set to half the current size of the congestion window:
ssthressh = cwnd / 2
– and slow-start is entered
![Page 21: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/21.jpg)
21
Summary of TCP congestion control
Initially:cwnd = 1;ssthresh =
advertised window size;New Ack received:
if (cwnd < ssthresh) /* Slow Start*/ cwnd = cwnd + 1;else /* Congestion Avoidance */ cwnd = cwnd + 1/cwnd;
Timeout:/* Multiplicative decrease */ssthresh = cwnd/2;cwnd = 1;
![Page 22: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/22.jpg)
22
Flavors of TCP Congestion Control
• TCP Tahoe (1988, FreeBSD 4.3 Tahoe)– Slow Start– Congestion Avoidance– Fast Retransmit
• TCP Reno (1990, FreeBSD 4.3 Reno)– Fast Recovery
• New Reno (1996)• SACK (1996)
• RED (Floyd and Jacobson 1993)
![Page 23: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/23.jpg)
23
Acknowledgments in TCP
• Receiver sends ACK to sender
– ACK is used for flow control, error control, and congestion control
• ACK number sent is the next sequence number expected
• Delayed ACK: TCP receiver normally delays transmission of an ACK (for about 200ms)
– Why?
• ACKs are not delayed when packets are received out of sequence
– Why?
Lost segment
![Page 24: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/24.jpg)
24
Acknowledgments in TCP
• Receiver sends ACK to sender
– ACK is used for flow control, error control, and congestion control
• ACK number sent is the next sequence number expected
• Delayed ACK: TCP receiver normally delays transmission of an ACK (for about 200ms)
– Why?
• ACKs are not delayed when packets are received out of sequence
– Why?
Out-of-order arrivals
1K SeqNo=0
AckNo=1024
1K SeqNo=1024
AckNo=2048
SeqNo=3072
AckNo=2048
SeqNo=2048 1K1K
![Page 25: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/25.jpg)
25
Fast Retransmit
• If three or more duplicate ACKs are received in a row, the TCP sender believes that a segment has been lost.
• Then TCP performs a retransmission of what seems to be the missing segment, without waiting for a timeout to happen.
• Enter slow start:
ssthresh = cwnd/2
cwnd = 1
duplicate
duplicate
![Page 26: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/26.jpg)
26
TCP Reno
• Duplicate ACKs:• Fast retransmit• Fast recovery
Fast Recovery avoids slow start
• Timeout:• Retransmit • Slow Start
• TCP Reno improves upon TCP Tahoe when a single packet is dropped in a round-trip time.
![Page 27: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/27.jpg)
27
Fast Recovery
• Fast recovery avoids slow start after a fast retransmit
• Intuition: Duplicate ACKs indicate that data is getting through
• After three duplicate ACKs set:– Retransmit “lost packet”
• When ACK arrives that acknowledges “new data” (here: AckNo=2048), set:– ssthresh = cwnd/2– cwnd=ssthresh
enter congestion avoidance
1K SeqNo=0
AckNo=1024
AckNo=1024
1K SeqNo=1024
SeqNo=20481K
AckNo=1024
SeqNo=30721K
SeqNo=10241K
SeqNo=40961K
AckNo=5120
AckNo=2048
![Page 28: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/28.jpg)
28
TCP Tahoe and TCP Reno(for single segment losses)
Reno
time
cwn
d
time
cwn
d
Tahoe
![Page 29: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/29.jpg)
31
TCP Retransmission Timeout
![Page 30: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/30.jpg)
32
Retransmissions in TCP
• A TCP sender retransmits a segment when it assumes that the segment has been lost:
1. No ACK has been received and a timeout occurs
2. Multiple ACKs have been received for the same segment
![Page 31: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/31.jpg)
33
Receiving duplicate ACKs
• If three or more duplicate ACKs are received in a row, the TCP sender believes that a segment has been lost.
• Then TCP performs a retransmission of what seems to be the missing segment, without waiting for a timeout to happen.
• This can fix losses of single segments
1. duplicate
2. duplicate
3. duplicate
![Page 32: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/32.jpg)
34
Retransmission Timer
• TCP sender maintains one retransmission timer for each connection
• When the timer reaches the retransmission timeout (RTO) value, the sender retransmits the first segment that has not been acknowledged
• The timer is started 1. When a packet with payload is transmitted and timer is not running2. When an ACK arrives that acknowledges new data and there are
other segments pending ACKs, 3. When a segment is retransmitted
• The timer is stopped when – All segments are acknowledged
![Page 33: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/33.jpg)
35
How to set the timer
• Retransmission Timer:– The setting of the retransmission timer is crucial for good
performance of TCP– Timeout value too small results in unnecessary
retransmissions– Timeout value too large long waiting time before
a retransmission can be issued
– A problem is that the delays in the network are not fixed – Therefore, the retransmission timers must be adaptive
![Page 34: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/34.jpg)
36
Setting the value of RTO:
• The RTO value is set based on round-trip time (RTT) measurements that each TCP performs
RTT #1
RTT #2
RTT #3
Each TCP connection measures the time difference between the transmission of a segment and the receipt of the corresponding ACK
There is only one measurement ongoing at any time (i.e., measurements do not overlap)
Figure on the right shows three RTT measurements
![Page 35: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/35.jpg)
37
Setting the RTO value
• RTO is calculated based on the RTT measurements– Uses an exponential moving average to calculate
estimators for delay (srtt) and variance of delay (rttvar)
• The RTT measurements are smoothed by the following estimators srtt and rttvar:
srttn+1 = RTT + (1- ) srttn
rttvarn+1 = ( | RTT - srttn | ) + (1- ) rttvarn
RTOn+1 = srttn+1 + 4 rttvarn+1
– The gains are set to =1/4 and =1/8
![Page 36: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/36.jpg)
38
Setting the RTO value (cont’d)
• Initial value for RTO:– Sender should set the initial value of RTO to
RTO0 = 3 seconds
• RTO calculation after first RTT measurements arrived
srtt1 = RTT rttvar1 = RTT / 2
RTO1 = srtt1 + 4 rttvar1
• When a timeout occurs, the RTO value is doubled
RTOn+1 = max ( 2 RTOn, 64) seconds
This is called an exponential backoff
![Page 37: 1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:](https://reader030.vdocument.in/reader030/viewer/2022033021/5697bfa51a28abf838c97fc3/html5/thumbnails/37.jpg)
39
Karn’s Algorithm
Timeout !
RT
T ? R
TT
?
Karn’s Algorithm: Don’t update RTT on any segments that have been retransmitted Restart RTT measurements only after an ACK is received for a segment that is not retransmitted
If an ACK for a retransmitted segment is received, the sender cannot tell if the ACK belongs to the original or the retransmission. RTT measurements is ambiguous in
this case