TUX is a kernel-based web server licensed under the GNU General Public License (GPL).
It is currently limited to serving static web pages and coordinating with kernel-space modules, user-space modules, and regular user-space web server daemons to provide dynamic content. Regular user-space web servers do not need to be altered in any way for TUX to coordinate with them. However, user-space code has to use a new interface based on the tux(2) system call.
Although dynamic content is becoming increasingly popular, there is still a need to serve static content. For example, nearly all images are static. TUX can serve static content very efficiently from within the Linux kernel. A similar operation is already performed by the Network File System (NFS) daemon that runs in the kernel.
TUX also has the ability to cache dynamic content. TUX modules use page caching to store objects for the dynamic content as well as their precomputed TCP checksum values. When a request is made for dynamic content, a TUX module sends back a combination of dynamically generated content and cached pre-generated objects. This takes advantage of TUX's zero-copy cached checksum architecture. (It is recommended that TUX modules be run as user-space although they can also run as kernel-space.)
This new architecture for serving dynamic content requires a new API. The current API's for CGI can not be sufficiently mapped to TUX's API. Thus, existing CGI applications must be converted before TUX will process them. If the CGI application does not require the increased speed of TUX, TUX can process it by redirecting it to another web server daemon such as Apache. This is done through TUX's CGI module. In other words, static content, TUX modules, old-style CGI applications, and programs specifically written for other webservers can be run on the same system with TUX as the main web server.
In summary, the differences between TUX and other webservers as well as the benefits of using TUX include:
TUX runs partly within a custom version of kernel 2.4.x or higher and partly as a user-space loadable module (device driver).
TUX caches partial TCP checksum data and uses them to speed network transmission of data.
With a capable network card, TUX enables direct scatter-gather DMA from the page cache directly to the network thus avoiding data copies.
Whenever TUX is unsure how to process a request or receives a request it is unable to handle, it always redirects the request to the user-space web server daemon to handle it in an RFC-compliant manner. An example of this user-space web server daemon is Apache.
![]() | Apache is used throughout this document as the user-space web server daemon for readability. |
For questions or comments about TUX or this documentation, join the <tux-list@redhat.com> mailing list. For instructions on joining the mailing list, see http://www.redhat.com/mailing-lists/list_subscribe.html.
TUX Customized 2.4.x-based version of the kernel or higher
x86-based Server (current limitation)
Alternate web server such as Apache running on the same server to process unknown requests