Remote Display Protocols in Abundance

|

Over the years I've used a number remote display products.

VNC

The first one I recall using was Virtual Network Computing aka VNC in 1998. VNC is free software and has been incorporated, forked and enhanced by a number of companies and projects. While VNC works rather well over a medium to high speed LAN, it can be a bit slow over slower connections. That is because VNC isn't a completely vector-based protocol and still uses mostly bitmaps... or at least that is my understanding. One good thing about VNC though is that both the client and the server are available for Windows, Mac, and Linux... and a few other things as well.

Let's examine a few alternatives.

Plain X11

If you are strickly working with X11 stuff on both sides then you can use xhosts and set your display environment variable... and make sure to open up all of the necessary ports in your firewall. Most people just prefer to simplify it by tunneling X11 traffic over ssh. If you want a full desktop you can use Xephyr. That works fairly well over a LAN but is even slower than VNC over modest connections.

NX

A company named NoMachine created the NX protocol that is basically a greatly optimized X11 protocol. While much of their NX version 3 stuff is open sourced, their upcoming NX version 4 is completely closed source. With version 4, NX is expanding beyond just X11 and will supposedly have a server for Windows and the Mac... although they have had five preview releases of NX 4, only the Linux version is available. It makes one wonder how far along they are on the non-Linux versions.

While NoMachine does offer a free (as in beer) version of NX server, it only allows for two users total with one connected at a time. That is good enough for many people but a free (as in freedom) solution is still preferred.

There are a few projects that are based on the free bits NoMachine released but they mostly seem to be abandonware.

SPICE

Red Hat has their SPICE protocol but it comes from KVM and was originally designed only for use with KVM virtual machines rather than being a general purpose terminal services type protocol.

They have since released xspice which is the SPICE protocol for X11 and not tied to a virtual machine... but it is fairly new... and my experience with SPICE has been that it isn't usable over my DSL link that has horrible latency.

SPICE client support is fairly limited still. The Linux client is available as a stock package in many Linux disributions. There is a Windows client but it takes a little effort to install. There is a beta-quality Mac client available as a plugin for Vinagre (if you search hard enough) but even that doesn't seem to work on the latest version of OS X.

On a LAN or a reasonable broadband connecion, SPICE seems to perform quite well and can even do some multi-media and bi-directional audio. USB device access is a new addition or perhaps still a work in progress, I haven't tried that yet.

ICA

Citrix has their ICA protocol and while there are ICA clients for Linux, I'm not aware of any freely available ICA servers... and is ICA only for access to Microsoft Windows-based OSes? I haven't used ICA so I'm not sure.

RDP

Microsoft has their Remote Desktop Protocol and terminal services are fairly popular in the Windows world. There are a number of free client implimentations for Linux (rdesktop and FreeRDP) and a number of the remote access applications on Linux (Vinagre, KRDC, Remmina, etc) that speak multiple protocols including RDP. RDP seems to be fairly efficient and works quite well even over slower connections.

Others

There are a few additional proprietary but free beer remote display products out there. Some examples are LogMeIn and TeamViewer. The thing I don't like about those, as if them being proprietary wasn't bad enough, is that they aren't a direct connection between two end points... and use a centralized server controlled by the companies behind the products. They act as a middleman for every connection. That can be a point of failure but what disturbs me even more is the potential for them to sniff or alter the communications. I'm not saying they do that, but the potential exists. And just imagine if some black hats break into their middleman servers. No thanks.

XRDP

Wouldn't it be nice if there was an RDP server for Linux? There is. It is called xrdp and it has actually been around for a couple of years now. I only recently heard about it and decided to give it a try. Since I'm a Fedora and Red Hat fan, I was comforted to find xrdp in the stock Fedora repo as well as in EPEL. I imagine xrdp is available as a stock package in a number of other Linux distributions.

xrdp impliments the RDP protocol on the server side so you can connect to a Linux desktop with an RDP client. xrdp actually uses VNC as an underneath layer on the server-side but does not impact client-side performance... which performs like you'd expect RDP to.

The desktop provided by xrdp is independent of the local X11 desktop. If you have the graphical login enabled on the server and login to it (or run startx as a user from text console) and then connect to the server via xrdp, you'll get a new X11 session and so far as I can tell, there is no way to join the two together. That is how VNC as well as most other remote display protocol servers work on Linux.

When you make an initial connection with xrdp it will start up a desktop for you. What desktop it starts is tied to whatever is default on the system or on the users settings if they have switched to something else.

If you logout from the desktop envionment, then the session is destroyed. If you disconnect from the session rather than logging out, your session will continue to run and you can reconnect to it later from the same client or even another client on a completely different machine. There is one catch though. A session is tied to its display settings. So for example, if you make an initial connection with the display set to 1024x768, 16-bit color and then disconnect.. when you try to connect again it will compare the requested display settings to the existing sessions and if there is a match found, it will reconnect to the existing session. However, if the client doesn't match any of the existing sessions, it'll automatically start a new session / desktop... which is probably not what you wanted. It would be nice if it would confirm starting a new session when one already exists. So if you want to reconnect, make sure you do it correctly. Luckily many RDP clients allow you to save and use host profiles.

So far as I can tell, there isn't any way to share a single desktop between multiple users like there is with VNC but that isn't something I routinely do.

Also I have not tried using xrdp as a terminal server for a slew of users... and have no idea how well it would scale. If anyone has any experiences with xrdp in that area, please share them.

The Future

While I'm somewhat content with xrdp for the moment I definitely can imagine a better future. While I completely neglected to mention any of the multi-media extensions that are available for few of the remote display products, xrdp does not offer sound and while it is fairly efficent, plain RDP is not designed for multi-media. NoMachine's NX protocol seems more performant and their upcoming version 4 promises reasonable video and audio even over moderate connection speeds. xspice also shows some potential once it has a bit more time to develop.

If I could have a wish granted, it would be for someone (cough Red Hat cough) to buy NoMachine and open up the upcoming NX 4 protocol... and for the server ports to Windows and Mac to be done and work as well as the Linux version.


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

XRDP - VNC alternative backend

Hi Scott - there is a better backend for XRDP - see http://scarygliders.net/2011/11/17/x11rdp-ubuntu-11-10-gnome-3-xrdp-customization-new-hotness/comment-page-2/#comment-1405.

Kevin has some good notes on using X11rdp - its significantly faster than VNC, there was a small issue with virtualised desktops, but it is an interesting step for Linux desktops.


Scott Dowdle's picture

No Machine 4 Preview 6 is out

After sometime, and I've been checking every few days, the No Machine folks have released NX 4 Preview 6... and now they include Linux, Windows, and Mac OS X server packages. I have to try it real soon now.


Scott Dowdle's picture

Issues and work arounds on Mac OS X clients

I've noticed that the official Microsoft Remote Desktop Client for Macintosh (that they ship with Microsoft Office for Mac but it is freely downloadable for those without it) does NOT work with xrdp. I'm not sure why. I'm guessing that maybe there are some obscure settings somewhere in the Microsoft RDP client that one could adjust to make it work but I couldn't figure it out so I gave up. Oddly, the initial connection is made and you get the XRDP login screen over RDP just fine, but it fails to authenticate when you manually enter the username and password. I'm thinking it is something with the assumptions made about authentication by the client but I'm really just guessing. I didn't really research the problem much... so maybe there is a server side fix?

Anyway...

Gary Bummer from the MSU-Bozeman Math Department (and BozemanLUG member) recommended a free software RDP client alternative for the Mac named CoRD and it works just fine... at least on Snow Leopard. I haven't tried it on Lion yet.


Issues and work arounds on Mac OS X clients

NLA Settings maybe?


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.