TCP
Timers & Header Option
TCP/IP Protocol Suite 1
Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
TCP TIMERS
To perform its operation smoothly, most TCP
implementations use at least four timers
In TCP, there can be only one RTT
measurement in progress at any time.
TCP/IP Protocol Suite 2
ReTransmission Timeout
(RTO)
Calculations
3
ReTransmission Timeout (RTO)
To calculate retransmission time out (RTO)
we need to calculate the RTT
1. When TCP sends the segment in front of the sending queue, it starts the
timer.
2. When the timer expires, TCP resends the first segment in front of the queue,
and restarts the timer.
3. When a segment (or segments) are cumulatively acknowledged, the segment
(or segments) are purged from the queue.
4. If the queue is empty, TCP stops the timer; otherwise, TCP restarts the timer.
Measured RTT (RTTm) : how long it takes to send a segment and receives an acknowledgement
Smoothened RTT (RTTs) : weighted average of RTTm and previous RTTS
RTT Deviation (RTTd) : deviation in RTT over various transmission
the segments and their ACKs do not have a 1-1
TCP/IP Protocol Suite
relationship 4
Calculation of RTO
Smoothed RTT: RTTS
Original No value
After 1st measurement RTTS = RTTM
2nd … RTTS = (1-)*RTTS + *RTTM
RTT Deviation : RTTD
Original No value
After 1st measurement RTTD = 0.5*RTTM
2nd … RTTD = (1-)*RTTD + *|RTTS - RTTM|
In TCP, there can be only one RTT measurement in
progress at any time.
5
Calculation of RTO (2)
Retransmission Timeout (RTO)
Original Initial value
After any measurement
RTO = RTTS + 4RTTD
Default values
= 1/8
= 1/4
6 TCP/IP Protocol Suite
Smoothed RTT: RTTS
Default values
Original No value
= 1/8
After 1st measurement RTTS = RTTM
2nd … RTTS = (1-)*RTTS + *RTTM = 1/4
RTT Deviation : RTTD
Original No value
After 1st measurement RTTD = 0.5*RTTM
2nd … RTTD = (1-)*RTTD + *|RTTS - RTTM|
Retransmission Timeout (RTO)
Original Initial value
After any measurement
RTO = RTTS + 4RTTD
7 TCP/IP Protocol Suite
Example
Consider hypothetical example. shows part of a connection. The
figure shows the connection establishment and part of the data
transfer phases.
1. When the SYN segment is sent, there is no value for RTTm,
RTTs, or RTTd. The value of RTO is set to 6.00 seconds. The
following shows the value of these variable at this moment:
2. When the SYN+ACK segment arrives, RTTM is measured
and is equal to 1.5 seconds.
TCP/IP Protocol Suite 8
Example
TCP/IP Protocol Suite 9
Example 15.3 Continued
3. When the first data segment is sent, a new RTT measurement
starts. No RTT measurement starts for the second data
segment because a measurement is already in progress. The
arrival of the last ACK segment is used to calculate the next
value of RTTM. Although the last ACK segment acknowledges
both data segments (cumulative), its arrival finalizes the value
of RTTM for the first segment. The values of these variables
are now as shown below.
TCP/IP Protocol Suite 10
Karn’s Algorithm
Do not consider the round-trip time of a retransmitted
segment in the calculation of RTTs.
Do not update the value of RTTs until you send a segment
and receive an acknowledgment without the need for
retransmission.
TCP does not consider the RTT of a retransmitted
segment in its calculation of a new RTO.
Exponential Backoff
What is the value of RTO if a retransmission occurs?.
The value of RTO is doubled for each retransmission. So if
the segment is retransmitted once, the value is two times the
RTO. If it transmitted twice, the value is four times the RTO,
and so on 11
Example 15.4
In a continuation of the previous example. There is retransmission
and Karn’s algorithm is applied.
The first segment in the figure is sent, but lost.
The RTO timer expires after 4.74 seconds.
The segment is retransmitted and the timer is set to 9.48, twice the
previous value of RTO.
This time an ACK is received before the time-out.
We wait until we send a new segment and receive the ACK for it
before recalculating the RTO (Karn’s algorithm).
TCP/IP Protocol Suite 12
Example Retransmission and Karn’s algorithm
TCP/IP Protocol Suite 13
Persistent Timer
Used to deal with zero-window –size advertisement
If ACK segment containing noz-zero window advt got lost.
Since there is no retransmission timer for ACK segment, this may create a
deadlock where both ends continue to wait for each other
Resolved with persistent Timer
Whenever a sender receives a zero-size-window advt, it starts its persistent timer
On this timer expiry, it sends a special segment called probe
•The value of this timer is set to value of retransmission timer
•If the acknowledgement is not rcvd, then another probe is sent with a double
value.
•It keeps on doubling until threshold ( usually 60 s) After that it send one probe
after every 60 s
TCP/IP Protocol Suite 14
Keep Alive Timer
To prevent long idle connection between two TCPs
Server equips with keepalive timer
•Each time server hears from a client, it reset it timer.
•Time-out is usually 2 hours (120 mins).
•If nothing hears from client within this period, it send a probe
segment.
•If no response after sending 10 probes, after 75 secs apart,
connection will be terminated
TCP/IP Protocol Suite 15
Time Wait Timer
Used during connection termination
Keep hold the resources for 2 * Life
time ( Max segment life/ Life Time )
Prevent undelivered segment after the
connection termination to be delivered
to a wrong process if the same port
number is assigned to a new process
TCP/IP Protocol Suite 16
OPTIONS
The TCP header can have up to 40 bytes of optional
information.
Options convey additional information to the destination
or align other options.
TCP/IP Protocol Suite 17
End-of-option option
EOP can be used only once.
Figure 15.43 No-operation option
NOP can be used more than once.
TCP/IP Protocol Suite 18
Maximum-segment-size option
Kind: 2
Value(bytes) : 2 bytes
Default value is 536 bytes
The value of MSS is determined during connection
establishment and does not change during the
connection.
TCP/IP Protocol Suite 19
Window-scale-factor option (wsf)
Kind: 3
Scale factor : 1 bytes
New window size = window size in header * 2 wsf
Though the scale factor could be as large a 255, the largest value allowed by
TCP/IP is 14
( this is to avoid window size getting larger than sequence numbers)
The value of the window scale factor can be
determined only during connection
establishment; it does not change during the
connection.
TCP/IP Protocol Suite 20
Figure 15.46 Timestamp option
One application of the timestamp option is the calculation of
round-trip time (RTT).
Other application of the timestamp option is prevention of Wrap
Around Sequences
TCP/IP Protocol Suite 21
Example
an example that calculates the round-trip time for one end.
TCP/IP Protocol Suite 22
Protections Against Wrapped Sequence Numbers (PAWS)
Wrapping around of sequences is possible in high speed connections ,
where a same sequence can be used during the lifetime of same
connection. This may arise a conflict if two segment wit same sequence
numbers arrive at same time
Solution
Include a timestamp in the identification of a segment, Identity of a
segment is defined as combination of
Timestamp + Sequence Number
Ex;
Two segments 400 : 12001 and 700 : 12001
can be easily distinguished as first sent at time 400 and second sent at
time 700
timestamp option is also used for prevention of Wrap Around Sequences 23
TCP/IP Protocol Suite
SACK
TCP/IP Protocol Suite 24
Example
the SACK option is used to list out-of-order blocks.
In Figure one end has received five segments of data.
TCP/IP Protocol Suite 25
Example
Duplicate segment can be detected with a combination of ACK
and SACK.
Note that only the first block can be used for duplicate data.
TCP/IP Protocol Suite 26
Example
what happens if one of the segments in the out-of-order section is
also duplicated? In example, one of the segments (4001:5000) is
duplicated.
TCP/IP Protocol Suite 27
Lecture videos on the topic can be found at
TCP Timers
https://youtu.be/sDWFlniQh6o
TCP Sequence Number and Wrap Around Time (WAT)
https://youtu.be/xTyOvYDXEHs
Karn's Algorithm
https://youtu.be/KlzHXu3CUYk
RTO Calculations -
https://youtu.be/_Y_5c0s8IfM (old -dumped)
https://youtu.be/nYyniXX5h5o
TCP Header OPTION
https://youtu.be/C28IDraZ2zs
28