I'm investigating an intermittent problem involving the transfer of data. An internal client application sends data to a server accessible over the internet. The communication uses SSL. Recently, the transfer of data has started to fail. Application logs show a 'connection time out' message. Application providers say it's not a software fault. All other internet bound services are operating without issues and this is an isolated issue. Questions:
asked 05 Aug '15, 02:17 Brad_101 |
One Answer:
Without seeing a capture it's a lot of guesswork but here is my try.
Regards Matthias answered 05 Aug '15, 11:34 mrEEde |
Thanks Matthias.
Here are two seperate traces captured from firewall during a successful data transfer and during an unsuccessful transfer.
The failure trace is different to the caputre I was referring too previously so the 30 sec time out is different (looks like it's higher in this case).
Success trace = https://drive.google.com/file/d/0BxWWq7ozi-PFZnc2eEFSZnh6blU/view?usp=sharing Failure trace = https://drive.google.com/file/d/0BxWWq7ozi-PFUW4yeUZUcGlBZFU/view?usp=sharing
The TTL on the RST is different to the TTL in previous packets.
For what reason would another device send the RST? Is that normal?
The failing trace shows that your firewall resets the connection because the server didn't send a syn_ack within 30 seconds.
So the real problem is that the server does not accept your 4th tcp connection (tcp.stream==3). It -might- be because your client application didn't close the 3rd connection (tcp.stream==2) as it did with tcp.stream=0 of tcp.stream==1.
Thanks for the response Matthias.
How do you know that it's the firewall resetting the connection? Is it assumed it's that device because the server hasn't sent a SYN_ACK?
From looking at the success trace, it seems the client didn't send a FIN for streams 5 & 6 either.
Does that change your thoughts in response to your comment in the second paragraph?
"How do I know it's the FW sending the RST?" I don't know, I guess from the TTL 64 which is a well known initial ttl value (for linux based systems) - and it would make sense if a firewall resets a connection that never fully established after a certain amount of time.
In the success case the server actively terminates the connections after 15 seconds. I don't know the application protocol so I cannot comment on whether it is good behaviour by the client to keep sessions open if they're no longer needed. And the success case doesn't show another new session attempt while the sessions are still in FINWAIT2 state.
But there are many possibilities why the server doesn't respond to your syn requests.