ssh ServerAlive probes


I am working on an application that needs to be able to rapidly detect a lost connection between an ssh client and ssh server. I am using ssh to do local and remote port forwarding, and sending data across the forwarded ports. I was originally relying upon the TCPKeepAlive probes, but found that I could not consistently detect a lost detection. Using the ServerAliveInterval and ServerAliveCountMax options, however, I am able to consistently detect a lost connection. The problem is, if I am using a low-bandwidth connection (cellular modem), and I am pushing a significant amount of data across, it seems that this hinders the communication between the client and server with the ServerAlive messages. In other words, when I am actually USING the connection, my application can mistakenly detect the connection as lost because the ServerAliveInterval x ServerAliveCountMax is exceeded without a response from the server. I was surprised at this behavior, since I expected the ServerAlive probes to only start after data flow between the client and server machines across that connection had ceased, but perhaps I am misunderstanding. I do not have much leeway as to how the server is configured. Can someone recommend a way to be able to both (1) quickly detect a lost connection [which, seems to require the interval and countmax be small], but not mistakenly detect the connection as lost when it is being used?

Thank you for any assistance.


Attachment: smime.p7s
Description: S/MIME Cryptographic Signature