We present icTCP, an "information and control" TCP implementation that exposes key pieces of internal TCP state and allows certain TCP variables to be set in a safe fashion. The primary benefit of icTCP is that it enables a variety of TCP extensions to be implemented at user-level while ensuring that extensions are TCP-friendly. We demonstrate the utility of icTCP through a collection of case studies. We show that by exposing information and safe control of the TCP congestion window, we can readily implement user-level versions of TCP Vegas, TCP Nice, and the Congestion Manager; we show how user-level libraries can safely control the duplicate acknowledgment threshold to make TCP more robust to packet reordering or more appropriate for wireless LANs; we also show how the retransmission timeout value can be adjusted dynamically. Finally, we find that converting a stock TCP implementation into icTCP is relatively straightforward; our prototype requires approximately 300 lines ...
Haryadi S. Gunawi, Andrea C. Arpaci-Dusseau, Remzi