Download presentation
Presentation is loading. Please wait.
Published byAdam Cannon Modified over 9 years ago
1
TCP Timers Chia-tai Tsai tai@cis.nctu.edu.tw
2
Introduction The 7 Timers for each Connection Connection-Establishment Timer Establish a new connection. If a response isn ’ t received within 75 seconds, the connection establishment is aborted. Retransmission Timer Based on Round-Trip Time (RTT). TCP sends data. When this timer expires, TCP retransmit the data.
3
Introduction cont. Delay ACK Timer Need not be acknowledged immediately. TCP waits up to 200 ms. Piggybacking Persist Timer Based on RTT Triggered when a null window is advertised If timer expires, sender issues a probe (between 5 and 60 s, never gives up)
4
Introduction cont. Keepalive Timer socket option SO_KEEPALIVE. Tests if the other end is still up and running Expires after 2 hours FIN_WAIT_2 Timer FIN_WAIT_1 -> FIN_WAIT_2 Avoid a connection in the FIN_WAIT_2 state forever.
5
Introduction cont. 2MSL Timer (TIME_WAIT Timer) MSL (Maximum Segment Life) 30s to 4 min Triggered when connection (client) enters TIME_WAIT state During 2MSL, the socket pair cannot be reused. (packets arriving during this state are discarded) Timer Function Fast timer Triggered every 200 ms Delay ACK Timer Slow timer Triggered every 500 ms
6
Implements of the 7 TCP timers
7
tcp_canceltimers Function tcp_timer.c Triggered when enters TIME_WAIT state. All 4 timers counters are set to 0.
8
tcp_fasttime Function tcp_timer.c Delay ACK Timer If TF_DELACK flag is set, it is cleared and TF_ACKNOW flag is set instead.
9
tcp_slowtime Function tcp_timer.c Handle the other 6 Timers Connection establishment 、 retransmission 、 persist 、 keepalive 、 FIN_WAIT_2 、 2MSL Check each timer counter in all TCPCB Check if TCPCB has been deleted
10
tcp_slowtime Function cont. Count idle time Keepalive FIN_WAIT_2 Increment RTT counter Increment RFC 1323 timestamp value tcp_now
11
tcp_timers Function tcp_timer.c Called by TCP ’ s PRU_SLOWTIMO request
12
tcp_timers Function cont. Case TCPT_2MSL (FIN_WAIT_2 and 2MSL Timers) 2MSL Timers
13
tcp_timers Function cont. FIN_WAIT_2 timer
14
tcp_timers Function cont. Case TCPT_PERSIST (Persist Timer) Force window probe segment Time line of persist time
15
tcp_timers Function cont. Case TCPT_KEEP (Connection Establishment and Keepalive Timers) Connection establishment timer and retransmission timer after SYN is sent
16
tcp_timers Function cont. Keepalive timer Expired after 2 hours of idle time Drop connection who no response Send a keepalive probe Reset keepalive timer
17
Retransmission Timer Calculations
18
memberUnitsInitial value#secDescription t_srttticks x 80 Smoothed RTT estimator : srtt x 8 t_rttvarticks x 4243 Smoothed mean deviation estimator : rttvar x 4 t_rxtcurticks126 Current retransmission timeout: RTO t_rttminticks21 Min. value for retransmissions timeout t_rxtshiftnull0 Index into tcp_backoff[] array (exponential backoff)
19
tcp_setpersist Function tcp_output.c Check retransmission timer not enabled Calculate RTO
20
tcp_setpersist Function cont. Exponential backoff array {1, 2, 4, 8, 16, 32, 64, 64, 64, 64, 64, 64, 64}
21
tcp_xmit_timer Function tcp_input.c rtt is the RTT measurement to be applied Timestamp option (tcp_now) RTT counter (t_rtt)
22
tcp_xmit_timer Function cont. Update smoothed estimators and RTO
23
Retransmission Timeout (tcp_timers Function cont.) tcp_timer.c
24
Retransmission Timeout cont. Source introduction Increment shift count (t_rxtshift) Calculate new RTO Ask IP to find a new route Clear estimators Force retransmission of oldest unacknowledged data
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.