Я установил следующие параметры ядра tcp в Solaris
ndd -set /dev/tcp tcp_ip_abort_interval 120000
ndd -set /dev/tcp tcp_rexmit_interval_max 15000
ndd -set /dev/tcp tcp_rexmit_interval_min 400
ndd -set /dev/tcp tcp_keepalive_interval 30000
Какой будет эквивалент в Linux (RedHat)? Я нашел только tcp_keepalive_intvl.
Для тех, кого вы скучаете, нужно настроить больше параметров, и некоторые из них являются частью netfilter:
net.netfilter.nf_conntrack_tcp_timeout_syn_sent = 120
net.netfilter.nf_conntrack_tcp_timeout_syn_recv = 60
net.netfilter.nf_conntrack_tcp_timeout_established = 432000
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_last_ack = 30
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close = 10
net.netfilter.nf_conntrack_tcp_timeout_max_retrans = 300
net.netfilter.nf_conntrack_tcp_timeout_unacknowledged = 300
Вам необходимо загрузить в ядро модули отслеживания соединений.
Остальные для настройки:
net.ipv4.tcp_syn_retries = 5
net.ipv4.tcp_synack_retries = 5
net.ipv4.tcp_retries1 = 3
net.ipv4.tcp_retries2 = 15
net.ipv4.tcp_fin_timeout = 60
Поэтому вам нужно рассчитать значения для этих параметров, чтобы имитировать поведение, которое вы получаете, задав 4 параметра для сетевого стека Solaris. Кстати проверить man 7 tcp
в Linux.