My Tech notes: tcp_keepalive and tcp_retries
Subscribe

Unix Documentation

Free Online Unix Training Materials

Lists many links to free Unix training materials.

Pointers and Arrays Materials

Pointers and Arrays materials Explained for C beginners

C FAQ and General Questions C Interview Questions

Powered By

Free XML Skins for Blogger

Powered by Blogger

Saturday, June 28, 2008

tcp_keepalive and tcp_retries

The Proc entries to change the timeout values for TCP keep alive and TCP retransmissions.
1) TCP Keep-Alive:
A) tcp_keepalive_time:
The number of seconds a connection needs to be idle before TCP
begins sending out keep-alive probes. Keep-alives are only sent
when the SO_KEEPALIVE socket option is enabled. The default
value is 7200 seconds (2 hours).
This default value can be changed by over writing the proc entry.
example: echo 20 > /proc/sys/net/ipv4/tcp_keepalive_time.
B) tcp_keepalive_probes:
The maximum number of TCP keep-alive probes to send before giving
up and killing the connection if no response is obtained
from the other end. The default value is 9.
Corresponding proc entry to change this value.
example: echo 2 > /proc/sys/net/ipv4/tcp_keepalive_probes
C) tcp_keepalive_intvl:
The number of seconds between TCP keep-alive probes. The
default value is 75 seconds.
Corresponding proc entry to change this value.
example: echo 10 > /proc/sys/net/ipv4/tcp_keepalive_intvl

Note:
1) what ever values has taken in examples is the values that we set for USBIP server.
2) Keepalive timer will be kicked off when there is no data transaction on that particular socket.
Cases in which Heart Beat Fails:
The HeartBeat will fail to close the connection when the device has got the data to send or the board
has some response to send. For ISOCH IN devices there will be always some data to send.
2) TCP Retransmissions:
1) TCP retransmission timer will be start as soon as the data has been given to the
IP layer and this timer will be initiated if no ACK is received for this packet.
2) The maximum number of times a TCP packet is retransmitted in established state before giving up
is based on "TCP_RETRIES2" value. The default value is 15, which corresponds to a duration of approximately 13 min, depending on
the retransmission timeout.
3) The interval between two successive retransmissions will be increased exponentially.
(This is based on the RTT value).
4) we can close the connection early by reducing either "Maximum Retransmission time out" or by reducing the "number of retries".
5) we are reducing the number of retries value to "5", which will take approximately 17 seconds to close the connection.
The proc entry to change this value is
/proc/sys/net/ipv4/tcp_retries2

No comments:

Post a Comment