TUX 3.2.21 review

by rbytes.net on

TUX is a kernel-based, threaded, extremely high-performance HTTP server. TUX server is able to efficiently and safely serve both s

License: GPL (GNU General Public License)
File size: 0K
Developer: TUX Team
0 stars award from rbytes.net

TUX is a kernel-based, threaded, extremely high-performance HTTP server.

TUX server is able to efficiently and safely serve both static and dynamic data.

TUX moves the HTTP protocol stack to the kernel, and can handle requests for data with both kernel-space and user-space modules.

TUX is a http-daemon (webserver) for Linux. TUX is different from other webservers in that it runs partially from within the Linux-kernel as a module (device driver). Given sufficiently-capable networking cards, it enables direct scatter-gather DMA and hardware-based TCP/IP checksumming from the page cache directly to the network, avoiding extra data copies.

TUX handles static pages directly, and can work in concert with kernel modules, user-space modules, and regular user-space web server daemons to provide dynamic content. Regular user-space daemons do not need to be altered in any way for TUX to use them to provide content, but in order for TUX to cache dynamic content, user-space code has to use a new interface based on the tux(2) system call.

Static web pages are not a very complex thing to serve, but these are very important nevertheless, since virtually all images are static, and a large portion of the html pages are static also. A "regular" webserver has little added value for static pages; it is simply a "copy file to network" operation. This can be done very efficiently from within the Linux kernel; for example, the nfs (network file system) daemon performs a similar task and also runs in the kernel.

But dynamic content is becoming a larger and larger part of the web, and TUX provides a way to cache dynamic content as well. TUX modules (which can be build in kernel space or in user space; user space is recommended) can create "objects" which are stored using the page cache. To respond to a request for dynamic data, a TUX module can send a mix of dynamically-generated data and cached pre-generated objects, taking maximal advantage of TUX's zero-copy architecture. (Kernel-space modules are currently the only modules capable of making use of TUX's SSI support; that will change in the future.)

This completely new architecture for providing dynamic content requires a new API. Existing standard APIs for CGI are not sufficient to be mapped to TUX's API. This means that existing CGI applications must be re-coded in order to take advantage of TUX's architecture. TUX can, however, call CGI programs via its CGI module, so you can choose to convert only programs that need TUX's speed to the TUX api and run other programs using the standard CGI interface. TUX can also redirect requests to another webserver, such as Apache, so on a single site, you can mix and match static content, TUX modules, old-style CGIs, and programs written to other webservers' APIs.

Whenever TUX isn't sure what to do (that is, encounters input that it is not prepared to handle), it always redirects the request to Apache to handle in an RFC-compliant manner.

Note: This document sometimes uses "Apache" instead of "any webserver you might ever want to use", just for reasons of readability.

TUX 3.2.21 search tags