slow start size threshhold:
include/net/sock.h: 319: __u32 snd_ssthresh; /* Slow start size threshold */
it is initilized in : /usr/src/linux/net/ipv4/tcp.c:2023:
tp->snd_ssthresh =
0x7fffffff;
Sending congestion window :
include/net/sock.h: 320: __u32 snd_cwnd; /* Sending congestion window */
it is initialized in : tcp_ipv4.c:1900: tp->snd_cwnd = 2;
tcp.c:2020: tp->snd_cwnd = 2;
tcp_window_scaling is on(
1 ): Enable window scaling as defined in RFC1323.
tcp_sack is on ( 1 ):
Enable select acknowledgments after RFC2018.
tcp_timestamps is on (
1 ):Enable timestamps as defined in RFC1323.
/* The following are from /usr/src/linux/include/net/tcp.h
*/
#define MAX_TCP_HEADER (128 + MAX_HEADER)
/*
* Never offer a window over 32767 without using window
scaling. Some
* poor stacks do signed 16bit maths!
*/
#define MAX_TCP_WINDOW 32767
/* Minimal accepted MSS. It is (60+60+8) - (20+20).
*/
#define TCP_MIN_MSS 88
/* Minimal RCV_MSS. */
#define TCP_MIN_RCVMSS 536
/* After receiving this amount of duplicate ACKs fast
retransmit starts. */
#define TCP_FASTRETRANS_THRESH 3
/* Maximal reordering. */
#define TCP_MAX_REORDERING 127
/* Maximal number of ACKs sent quickly to accelerate
slow-start. */
#define TCP_MAX_QUICKACKS 16
/* urg_data states */
#define TCP_URG_VALID 0x0100
#define TCP_URG_NOTYET 0x0200
#define TCP_URG_READ 0x0400
#define TCP_RETR1 3
/** This is how many retries it does before it tries to
figure out if the gateway is down. Minimal RFC value is 3; it corresponds to
~3sec-8min depending on RTO.*/
#define TCP_RETR2 15
/* This should take
at least 90 minutes to time out. RFC1122 says that
the limit is 100 sec. 15 is ~13-30min depending on RTO.*/
#define TCP_SYN_RETRIES 5 /* number of times to retry active opening a connection: ~180sec is RFC minumum */
#define TCP_SYNACK_RETRIES 5 /*
number of times to retry passive opening a connection: ~180sec is RFC minumum */
#define TCP_ORPHAN_RETRIES 7 /*
number of times to retry on an orphaned socket. 7 is ~50sec-16min.*/
#define TCP_TIMEWAIT_LEN (60*HZ) /*
how long to wait to destroy TIME-WAIT state, about 60 seconds */
#define TCP_FIN_TIMEOUT TCP_TIMEWAIT_LEN
/* BSD style FIN_WAIT2 deadlock breaker.
* It used to be 3min, new value is 60sec,
* to combine FIN-WAIT-2 timeout with
* TIME-WAIT timer.
*/
#define TCP_DELACK_MAX (HZ/5) /*
maximal time to delay before sending an ACK */
#if HZ >= 100
#define TCP_DELACK_MIN (HZ/25) /*
minimal time to delay before sending an ACK */
#define TCP_ATO_MIN (HZ/25)
#else
#define TCP_DELACK_MIN 4
#define TCP_ATO_MIN 4
#endif
#define TCP_RTO_MAX (120*HZ)
#define TCP_RTO_MIN (HZ/5)
#define TCP_TIMEOUT_INIT (3*HZ) /* RFC 1122 initial RTO value */
#define TCP_RESOURCE_PROBE_INTERVAL (HZ/2) /*
Maximal interval between probes for local resources.*/
#define TCP_KEEPALIVE_TIME (120*60*HZ) /* two hours */
#define TCP_KEEPALIVE_PROBES 9 /*
Max of 9 keepalive probes */
#define TCP_KEEPALIVE_INTVL (75*HZ)
#define MAX_TCP_KEEPIDLE 32767
#define MAX_TCP_KEEPINTVL 32767
#define MAX_TCP_KEEPCNT 127
#define MAX_TCP_SYNCNT 127
/* TIME_WAIT reaping mechanism. */
#define TCP_TWKILL_SLOTS 8 /* Please keep this a power of 2. */
#define TCP_TWKILL_PERIOD (TCP_TIMEWAIT_LEN/TCP_TWKILL_SLOTS)
#define TCP_SYNQ_INTERVAL (HZ/5) /*
Period of SYNACK timer */
#define TCP_SYNQ_HSIZE 512 /* Size of SYNACK hash table */
#define TCP_PAWS_24DAYS (60 * 60 * 24 * 24)
#define TCP_PAWS_MSL 60 /* Per-host timestamps are invalidated
* after this time. It should be equal
* (or greater than) TCP_TIMEWAIT_LEN
* to provide reliability equal to one
* provided by timewait state.
*/
#define TCP_PAWS_WINDOW 1 /* Replay window for per-host
* timestamps. It must be less than
* minimal timewait lifetime.
*/
#define TCP_TW_RECYCLE_SLOTS_LOG 5
#define TCP_TW_RECYCLE_SLOTS (1<<TCP_TW_RECYCLE_SLOTS_LOG)
/* If time > 4sec, it is "slow" path, no recycling is required,
so that we select tick to get range about 4 seconds.
*/
#if HZ <= 16 || HZ > 4096
# error Unsupported: HZ <= 16 or HZ > 4096
#elif HZ <= 32
# define TCP_TW_RECYCLE_TICK (5+2-TCP_TW_RECYCLE_SLOTS_LOG)
#elif HZ <= 64
# define TCP_TW_RECYCLE_TICK (6+2-TCP_TW_RECYCLE_SLOTS_LOG)
#elif HZ <= 128
# define TCP_TW_RECYCLE_TICK (7+2-TCP_TW_RECYCLE_SLOTS_LOG)
#elif HZ <= 256
# define TCP_TW_RECYCLE_TICK (8+2-TCP_TW_RECYCLE_SLOTS_LOG)
#elif HZ <= 512
# define TCP_TW_RECYCLE_TICK (9+2-TCP_TW_RECYCLE_SLOTS_LOG)
#elif HZ <= 1024
# define TCP_TW_RECYCLE_TICK (10+2-TCP_TW_RECYCLE_SLOTS_LOG)
#elif HZ <= 2048
# define TCP_TW_RECYCLE_TICK (11+2-TCP_TW_RECYCLE_SLOTS_LOG)
#else
# define TCP_TW_RECYCLE_TICK (12+2-TCP_TW_RECYCLE_SLOTS_LOG)
#endif
/*
* TCP option
*/
#define TCPOPT_NOP 1 /* Padding */
#define TCPOPT_EOL 0 /* End of options */
#define TCPOPT_MSS 2 /* Segment size negotiating */
#define TCPOPT_WINDOW 3 /* Window scaling */
#define TCPOPT_SACK_PERM 4 /* SACK Permitted */
#define TCPOPT_SACK 5 /* SACK Block */
#define TCPOPT_TIMESTAMP 8 /* Better RTT estimations/PAWS */
/*
* TCP option lengths
*/
#define TCPOLEN_MSS 4
#define TCPOLEN_WINDOW 3
#define TCPOLEN_SACK_PERM 2
#define TCPOLEN_TIMESTAMP 10
/* But this is what stacks really send out. */
#define TCPOLEN_TSTAMP_ALIGNED 12
#define TCPOLEN_WSCALE_ALIGNED 4
#define TCPOLEN_SACKPERM_ALIGNED 4
#define TCPOLEN_SACK_BASE 2
#define TCPOLEN_SACK_BASE_ALIGNED 4
#define TCPOLEN_SACK_PERBLOCK 8
#define TCP_TIME_RETRANS 1 /* Retransmit timer */
#define TCP_TIME_DACK 2 /* Delayed ack timer */
#define TCP_TIME_PROBE0 3 /* Zero window probe timer */
#define TCP_TIME_KEEPOPEN 4 /* Keepalive timer */