NX technology is a computer program that handles remote X Window System connections, and attempts to greatly improve on the performance of the native X display protocol to the point that it can be usable over a slow link such as a dial-up modem. It wraps remote connections in SSH sessions for encryption and authentication security.
It is developed by Gian Filippo Pinzari at the Italian software company NoMachine.
Contents |
History
The NX compression scheme was derived from that of DXPC - the Differential X Protocol Compressor project.[1] Currently the NX software only works on Linux and Solaris servers, though they are developing software for Windows and OS X. [2]
Technical details
NX compresses the X11 data to minimize the amount of data transmitted. NX takes full advantage of modern hardware by caching all manners of data, to make the session as responsive as possible; for example, if a menu is opened, the first time it may take a few seconds, but every subsequent time the menu is opened it will appear almost instantly.
NX is faster than its predecessors, as it eliminates most of the X round-trips, while dxpc and MLView only compress data.
The two principal components of NX are nxproxy and nxagent. nxproxy is derived from dxpc and is started on both the remote (client in X terminology) and the local (server in X termininology) machines simulating an X server on the client and forwarding remote X protocol requests to the local X server.
Typical setup:
remote clients (xterm, etc)
↕
nxproxy client
↕
Network
↕
nxproxy server
↕
local X server (monitor/keyboard)
nxproxy alone achieves 1:100 to 1:1000 compression ratios (according to NoMachine) reducing bandwidth, but does not eliminate most of X's synchronous round trips, which are mostly responsible for X's perceived latency.
nxagent in turn is derived from Xnest and is typically started on the remote (client) machine, thus avoiding most X11 protocol round trips. Together with nxproxy (which is built into nxagent) this setup performs well over low bandwidth/high latency links:
remote clients (xterm, etc)
↕
nxagent server side \
nxagent client side nxagent executable
nxproxy client /
↕
Network
↕
nxproxy server
↕
local X server (monitor/keyboard)
On systems with a functional X11 implementation, nxproxy and nxagent are all that is needed to establish a connection with low-bandwidth requirements between a set of remote X clients and the local X server. SSH can be used to establish a secure tunnel between the two hosts involved.
FreeNX and the various NX Clients are used for setup, handling suspend and resume, secure tunnelling over SSH, and for printing and sound.
Other display protocols
Although designed primarily to optimize X11 sessions, NX server can be configured as a proxy server to tunnel Remote Desktop Protocol (for Windows Terminal Services sessions) and remote Virtual Network Computing sessions (most modern general-purpose operating system platforms), giving them some of the same speed improvements.
Use of SSH protocol
NX uses the SSH protocol to send its data, making use of public key cryptography for authentication purposes. When an NX client connects to a server, the client program initially logs into the server using the 'nx' username, authenticated with the SSH public key method. 'nx' is a special user account created on the server with its shell set to an NX application, through which client-server communication can take place. In this session, the client requests session data which can then be fed to 'nxproxy' to start the graphical NX session. Once the NX link is established, the real username is authenticated through the pre-established SSH tunnel, and the 'session possession' is handed over to the real user.
In addition to simply allowing users to log in remotely over a slow internet link to a server graphically, NX also allows them to suspend and resume sessions. During suspension, the processes invoked inside the session continue to run, and so many people have come to use NX as a graphical alternative to SSH and the 'screen' application - in order to run applications such as XChat permanently on a computer with a fixed internet link.
SSH was chosen as a base for NX because of its excellent security record.
License
NoMachine uses the GNU General Public License for the core NX technology, while at the same time offering non-free commercial NX solutions for the enterprise [3], free client and server products for Linux and Solaris and free client software for Microsoft Windows, Mac OS X and embedded systems.
Due to the free software nature of NX, the FreeNX project was started in order to provide the wrapper scripts for the GPL NX libraries. FreeNX is developed and maintained by Fabian Franz.
2X develops another commercial terminal server for Linux that also uses the NX protocol.[4]
On July 7, 2009, Google announced their open-source NX server, Neatx[5].
Clients
The primary client for use with NX is the official freeware NoMachine NX Client, but there are several projects underway to produce an open source client.
The most mature of the projects used to be Lawrence Roufail's nxc client library. This is a full library which can be used for other clients to build upon, and another application, 'nxrun', is provided which makes use of this library. As of 2006, the library does not support suspending or resuming sessions, nor does it support using any compression method other than JPEG for the graphics.
The kNX project was a proof-of-concept application written by Joseph Wenninger. This was meant to eventually become a complete NX client, showing that an open-source client could be written. However, this implementation got stuck in an incomplete stage; to date it lacks many important features. As such, kNX was effectively useless. In late 2005, Fabian Franz and George Wright started to change kNX to use the nxc library, but quickly abandoned the project.
More recent open-source efforts include QtNX, which offers full suspend and resume support. However, this has been reported not to work with the most recent NX libraries.
An update to nxclientlib (which was the core of QtNX) called nxcl has been completed by Seb James in September 2007. nxcl is an update to nxclientlib and works with version 3 of the NX core libraries.[citation needed] It also drops the Qt dependency which prevented nxclientlib from becoming widely used as a cross-platform basis for NX client programs. nxcl provides both a library which can be linked to in a client program (libnxcl), and a self-contained NX client with a D-Bus API (the nxcl binary). nxcl is available from the freenx Subversion server.
Other recent and actively maintained OSS NX clients include OpenNX a "drop-in replacement for Nomachine's [proprietary] nxclient". OpenNX supports full suspend and resume.
Various terminal server projects such as x2go also support the NX protocol.
Previous X11 compression schemes
- lbxproxy - Low Bandwidth X (obsolete and of historical interest only)
- dxpc The Differential X Protocol Compressor
See also
- Comparison of remote desktop software
- Thinstation thin client Linux implementation with optional built-in NX client.
References
External links
- NoMachine - official site offering client and commercial server.
- NoMachine technical documentation - describes Vanilla X and NX server.
- FreeNX project page on BerliOS.
- Release announcement of the QtNX client.
- OpenNX project page SourceForce.
- x2go terminal server.
- 2X Terminal Server, PXES terminal system, with a functionality similar to LTSP but uses NX clients and servers.
- Article series on FreeNX (LinuxJournal): Part 1 -- Part 2 -- Part 3 -- Part 4 -- Part 5 -- [Part 6 is missing from publication].
- Faster remote desktop connections with FreeNX - Article from Linux.com on NX technology and FreeNX in particular.
- DotRiver uses NX technologies and offers a free trial. You can test NX there.
- DXPC Home page Differential X Protocol Compressor by Kevin Vigor.
- Neatx Neatx is an Open Source NX server developed by Google, similar to the commercial NX server from NoMachine.
This entry is from Wikipedia, the leading user-contributed encyclopedia. It may not have been reviewed by professional editors (see full disclaimer)




