Mailing List Archive

ssh ServerAlive probes
Hello,

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.

Don
Re: ssh ServerAlive probes [ In reply to ]
Hello,

i was faced same problem while designing client server based system.
In that after connecting to host_B to host_A, if any host disconnected
it was not notifing to another even if notifing method defined well.

How to do that?

On 4/5/11, Don Tucker <dtucker@arlut.utexas.edu> wrote:
> Hello,
>
> 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.
>
> Don
>
>
>
>
Re: ssh ServerAlive probes [ In reply to ]
Why cant you put a packet on the link up to the data transfer is
finish? What is your MTU ? that is what MTU is for. Or perhaps your
MTU into time units is bigger than you want to signal !

Cheers


2011/4/5 Don Tucker <dtucker@arlut.utexas.edu>:
> Hello,
>
> 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.
>
> Don
>
>
>
>