Ubuntu – X11 forwarding via “ssh -X username@hostname” is slow, but fast using “nxclient”

nxsshx11-forwarding

As mentioned, when I do X11 forwarding using basic ssh -X username@hostname it's quite sluggish. But interestingly, when I use nxclient, it's significantly faster.

I'd rather use ssh instead of nxclient, due to various reasons.

I've tried turning on compression and setting ciphers, (i.e. ssh -X -C -c blowfish-cbc,arcfour username@hostname) but it's still pretty sluggish.

Why is that? How do I speed up ssh X11 forwarding to be up to par with nxclient?

Best Answer

The NoMachine NX library is basically a derivative of DXPC. It is stated in wikipedia http://en.wikipedia.org/wiki/NX_technology "The NX scheme was derived from that of DXPC – the Differential X Protocol Compressor project".

So while ssh -C -X simply compresses whatever you feed it with (in your case, an X session), NX goes the extra mile to NOT send the 'unchanged' bits of information that it has already sent, thus the 'differential' term. Once what needs to be sent has been decided, nx will actually use ssh (or rather an nx derivative of ssh, nxssh to transmit session information).

So there is no way that the ssh -X -C will be as efficient as setting up an nx session. (nxclient is only one end of the deal btw, you will need the corresponding nxserver - i.e you cannot just replace the nxclient with ssh -X).

EDIT (as per requested): As far as speeding up the ssh, I can only go as far as saying that using compressiong -C generally helps. This is backed up in this question.

Perhaps one can also consider switching to very lightweight desktop environments, such as xfce or even simpler like fluxbox. Of course this will only help with window drawing operations rather than with speeding up the content in the windows but still.