High Performance Networking for TCP-based Applications

The Transmission Control Protocol (TCP) is one of the universally accepted transport layer protocols in today's networking world. The introduction of gigabit speed networks a few years back had challenged the traditional TCP/IP implementation in two aspects, namely performance and CPU requirements. In order to allow TCP/IP based applications achieve the performance provided by these networks while demanding lesser CPU resources, researchers came up with solutions in two broad directions: user-level sockets and TCP Offload Engines. Both these approaches concentrate on optimizing the protocol stack either by replacing the TCP stack with zero-copy, OS-bypass protocols such as VIA, EMP or by offloading the entire or part of the TCP stack on to hardware. However, these offloading techniques have not been completely successful in avoiding the multiple copies and kernel context switches, mainly due to certain fundamental bottlenecks in the traditional TCP implementation including the memory traffic associated with the data streaming semantics, buffering for out-of-order packets, and several others.

As a part of this research, we have taken up the challenge of identifying these bottlenecks and implementing rectifying algorithms. Our approach to this problem involves the development of the Direct Data Placement (DDP) and the Marker PDU Aligned (MPA) protocols, where the data is directly placed into the user buffer, thus avoiding the intermediate copy and buffering of data. The challenges in this project include the message segmentation algorithm and the data re-assembly queue. To support the applications which are designed to take advantage of the data-streaming capabilities of TCP, we have retained the current sockets implementation, giving the user an option to choose either of them.

Current research along this direction investigates the following issues:


Publications:

Journals

Conferences/Workshops

Technical Reports


Graduate Student Researchers:

Pavan Balaji, Karthikeyan Vaidyanathan


D. K. Panda
Last modified: March 16 2005