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: 11.22.33.44
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:
Server A:
10.20.30.40:1234 50.60.70.80:5678 ESTABLISHED
Client B:
50.60.70.80:5678 11.22.33.44: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 50.60.70.80 (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?