I am going bonkers trying to explain some TCP connection issues I am seeing. Can you pls help?
Consider this scenario:
Server A has IP: 10.20.30.40 Client B has IP: 50:60:70:80 A is hidden behind an F5 Virtual IP: 220.127.116.11
Client B uses the Virtual IP when it wants to connect to Server A. F5 does not translate client B's IP, so it is visible as is to Server A.
When a connection is established, here is what netstat shows:
10.20.30.40:1234 18.104.22.168:5678 ESTABLISHED
22.214.171.124:5678 126.96.36.199:9876 ESTABLISHED
But this connection fails often and I am trying to determine why.
Here is my theory:
Right now A's keep_alive_interval < F5's keep_alive_interval.
So, as soon as A's interval expires, A sends a keep alive probe to B directly at 188.8.131.52 (because that it what it sees) totally bypassing F5. B ignores this probe because as far as it is concerned it has no connection with A at 10.20.30.40. So Server A drops the connection, client B does not know about it until later when all hell breaks loose.
Solution: Making F5's keep alive interval the lowest among the three, will make sure that it mediates the connection between A and B and keep them content.
Does the theory make sense at all?