9

I have the following set up:

|-----------------|                          |---------------|
|   Windows       |     LAN (or VPN)         |    Linux box  |
| (local machine) | <-------------------->   |               |
|-----------------|                          |---------------|

and I would like to access my Emacs and Eclipse windows on the Linux box from my Windows machine with minimal latency.

My options seem to be:

  • VNC
  • Virtualization of a Linux guest on my local Windows host using for example Virtualbox with Ubuntu, and then ssh -X to the Linux box from it (here is a thread that discusses configurations for fast ssh X tunneling)
  • cygwin with an X server and ssh -X to the remote box.

At the moment I use RealVNC, but I have noticed some notable latency. After doing some research I read on Wikipedia the following:

The VNC protocol is pixel-based. Although this leads to great flexibility (i.e.- any type of desktop can be displayed), it is often less efficient than solutions that have a better understanding of the underlying graphic layout like X11 or Windows Remote Desktop Protocol

This makes me wonder, what options do I have to get the fastest access to remote X windows from a local Windows machine?

  • ssh -X is what i use via putty, some colleagues use xming though. – h3rrmiller Oct 12 '12 at 15:11
  • ssh tunneling comes to mind but how can you control latency introduced by the network? Latency of VNC introduction could potentially be significantly lower then the one introduced by the network. – Karlson Oct 12 '12 at 15:31
  • In addition, to VNC and ssh-X-forwarding, there is Spice. I do not know if you can use it as it is mainly developed for virtual machines. – jofel Oct 12 '12 at 15:32
  • Thanks. @h3rrmiller I thought you needed xming to do remote X with Putty. How exactly do you ssh -X in Putty? I have clicked on Enable X11 forwarding in Putty, but this does not seem to be enough. – Amelio Vazquez-Reina Oct 12 '12 at 15:32
  • 3
    @user27915816 yes, for X11 forwarding with putty, you need xming running in the background. – jofel Oct 12 '12 at 15:34
6

I think the state of the art for the maximum bandwidth is NX, an X11 protocol compression program. It should perform well with respect to latency too. Try using the Windows NX client and the free NX server on Linux.

If possible, use a direct TCP connection instead of SSH. Of course, this is only viable in a controlled environment with no security worries.

I think in most setups a virtual machine running locally will give you the best latency. Even better, run Emacs and Eclipse under Windows; make them edit remote files, or (for even better results) make them edit local files which you then synchronize with Unison or through a version control system.

2

Windows Remote Desktop works just fine -- as long as you run xrdp on the Linux box (and in my experience, it is significantly less annoying and more responsive than VNC).

xrdp runs an X server on the Linux box, and then hooks that up to RDP.

In fact, even though I usually have Linux on both ends of this wire, I typically prefer rdesktop to xrdp over VNC whenever plain X11 forwarding proves too sluggish. VNC is just a French acronym for "doesn't work very well".

1

Actually I was shocked to find that Mobaxterm is super-fast.

I'm a software developer, and I use the IDE called Qt Creator. Qt Creator is very known to be very, very fast, but Putty + Xming were too slow with it that I gave up on using it through a remote xserver. Eventually Mobaxterm shocked me with its speed. Try it.

1

I agree that Mobaxterm is fast in x forwarding. Then I find out that it's using ssh based on cygwin, but it's still faster than my cygwin/ssh. After looking into debug info, I find out the secret of Mobaxterm is using aes128-ctr rather than the more common aes256-cbc cipher, use hmac-sha1 and turn on compression by default.

In cygwin,

ssh -m hmac-sha1 -c aes128-ctr -C 

should give you performance close to mobaxterm. If you still believe mobaxterm is faster, you can directly use _ssh.exe, which you can find in your mobaxterm root.

Some blogs/answers suggested ciphers like arcfour or blowfish. They should be slightly better than aes128-ctr (for old CPU), but they are outdated and not necessarily available on all platform. You can view all supported ciphers and macs by

ssh -Q cipher
ssh -Q mac

This benchmark shows that aes128-gcm should give you the best performance on modern CPU.

Update:

Some suggest against compression. I would say assume -C still helps unless your trial turns out otherwise, even if you believe your network is perfect. Since the data transfer amount is very huge, and the compression ratio is impressive, e.g.

 debug1: compress outgoing: raw data 603154, compressed 141717, factor 0.23 
 debug1: compress incoming: raw data 67841628, compressed 641357, factor 0.01

Actually, I tried x forwarding with both direct tcp and ssh with compression and an appropriate cipher over an internal 100Mbps LAN connection with <1ms latency. The ssh option is obviously faster.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.