ssh ServerAlive probes

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!


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.


Site Timeline