Lenne egy linuxos tcp server, amin szeretném ha mennének a tcp keepalive csomagok. Tesztként levettem a tcp_keepalive_time -ot 10-re.
A server el is indul, a kliens becsatlakozik, jon is syn, synack majd ack csomag, ezt követően 10 sec múlva egy ack pár, majd semmi, csak server bont 60 sec múlva.
Mit hagyhattam ki, hogy nem 10 sec-omként küld keepalive csomagot?
socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) a socket-em
int optval=1;
socklen_t optlen = sizeof(optval);
setsockopt(server_socket, SOL_SOCKET, SO_KEEPALIVE, &optval, optlen)
Így akarnám, hogy kuldjön keepalive csomagokat.
cat /proc/sys/net/ipv4/tcp_keepalive_time
10
sysctl -a
net.ipv4.tcp_keepalive_intvl = 75
net.ipv4.tcp_keepalive_probes = 9
net.ipv4.tcp_keepalive_time = 10
Nem tom hogy tovább.
17:35:57.255024 IP (tos 0x10, ttl 64, id 41267, offset 0, flags [DF], proto: TCP (6), length: 60) localhost.55140 > localhost.1111: S, cksum 0x5265 (correct), 2079415374:2079415374(0) win 32792
17:35:57.255024 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto: TCP (6), length: 60) localhost.1111 > localhost.55140: S, cksum 0x5d44 (correct), 2068181171:2068181171(0) ack 2079415375 win 32768
17:35:57.255037 IP (tos 0x10, ttl 64, id 41268, offset 0, flags [DF], proto: TCP (6), length: 52) localhost.55140 > localhost.1111: ., cksum 0x4266 (correct), 1:1(0) ack 1 win 1025
17:36:07.250364 IP (tos 0x0, ttl 64, id 3529, offset 0, flags [DF], proto: TCP (6), length: 52) localhost.1111 > localhost.55140: ., cksum 0x3e80 (correct), 0:0(0) ack 1 win 1024
17:36:07.250375 IP (tos 0x10, ttl 64, id 41269, offset 0, flags [DF], proto: TCP (6), length: 52) localhost.55140 > localhost.1111: ., cksum 0x3e7e (correct), 1:1(0) ack 1 win 1025
17:36:57.262562 IP (tos 0x0, ttl 64, id 3530, offset 0, flags [DF], proto: TCP (6), length: 52) localhost.1111 > localhost.55140: F, cksum 0x270d (correct), 1:1(0) ack 1 win 1024
17:36:57.262733 IP (tos 0x10, ttl 64, id 41270, offset 0, flags [DF], proto: TCP (6), length: 52) localhost.55140 > localhost.1111: F, cksum 0x1382 (correct), 1:1(0) ack 2 win 1025
17:36:57.262752 IP (tos 0x0, ttl 64, id 3531, offset 0, flags [DF], proto: TCP (6), length: 52) localhost.1111 > localhost.55140: ., cksum 0x1383 (correct), 2:2(0) ack 2 win 1024