As part of a broader organisational restructure, data networking research at Swinburne University of Technology has moved from the Centre for Advanced Internet Architecture (CAIA) to the Internet For Things (I4T) Research Lab.

Although CAIA no longer exists, this website reflects CAIA's activities and outputs between March 2002 and February 2017, and is being maintained as a service to the broader data networking research community.

Stateless TCP for HTTP

Exploring the utility of Stateless TCP for highspeed, high-load Web Servers under FreeBSD


Overview

Similar as for DNS queries in the previous "statelessTCP for DNS" project we translated TCP based HTTP queries to UDP based HTTP queries in kernelspace and vice versa. A small and simple webserver has been modified to serve content via UDP, rather than TCP.

StatelessTCP for HTTP design
The design of statelessTCP for HTTP

The small size of HTTP GET requests and the large initial window used in TCP, allowed standard web browsers to communicate without problems with the webserver running in HTTP 1.0 mode only. Running the server in HTTP 1.1 mode allowed persistent connections, which resulted in the clients waiting for a TCP FIN packet from the server in order to stop the webbrowser from displaying a "still loading" symbol. With the webserver using UDP there was no possibility to communicate to the TCP stack that the end of the data transfer had been reached, so we introduced a timeout in the UDP to TCP translation mechanism in kernelspace. After the timeout (the native TCP SYN cache timeout) the kernel now sends a FIN/RST packet to the client, avoiding further communication.

Adding a RST to the FIN allows us to deal much better with packet loss as well. Upon packet loss, webbrowsers display part of the webpage (and depending on the browser also part of the images) and wait for the remaining TCP packets expected before a FIN , before processing the FIN. As packets are not retransmitted in statelessTCP, sending a RST with the FIN allows theRST to be processed, and the webbrowser stops displaying the "still loading" symbol".

Safari browser dealing with packet loss using statelessTCP
Safari displays images partially if packet loss occurs

Tests using statelessTCP for HTTP in combination with the UDP based webserver have shown a reduction of CPU usage (20%) and Memory usage (90%).

CPU usage of statelessTCP vs. TCP

StatelessTCP uses 20% less CPU than TCP


Memory usage of statelessTCP vs. TCP
StatelessTCP uses 90% less Memory than TCP

The full implementation details and performance results can be consulted here,
the FreeBSD 9 patches can be obtained here.

Last Updated: Thursday 2-Feb-2012 18:10:57 AEDT | Maintained by: Mattia Rossi (mrossi@swin.edu.au) | Authorised by: Grenville Armitage ( garmitage@swin.edu.au)