Congestion control is one of the most important control mechanisms mostly managed by the TCP (Transmission Control Protocol) from the beginning of the Internet over the last 35 years. This mechanism tries to avoid low utilization of network resources in cases, when links are overloaded by transmitting end hosts. Since the Internet had been changing continuously, new and new TCP versions have been developed. Current TCP variants provide more efficient solutions by modifying the existing congestion control algorithm. The new algorithms has been widely varied in order to fit the requirements in ever-changing network environments. From backbone to wireless networks, different conditions demand changes and improvements on the TCP, but these new TCP variants only work for some important network environments and all of them fail to act as universal mechanism considering heterogeneous and changing network conditions. It seems that there is little hope that TCP's closed-loop congestion control mechanism could result such a universal solution in the future.
Some ideas have been proposed and investigated where congestion control was not employed at all. One of these ideas was proposed by GENI (Global Environment for Network Innovations). This idea advocates an alternative solution for the future Internet, which can be to avoid congestion control and allow users to send at maximal rate, so every network resource would always be fully utilized. If end point access rates do not cause congestion, then this idea yields the most efficient solution. However, when hosts send data at their maximal rates, excessive packet loss is likely to occur, mostly in bursty manner. The emerging huge packet loss is handled by the use of efficient erasure coding, which makes it possible to recover the original message at the receiver. In this work I introduce a new transport layer protocol, which uses the new idea, so congestion control is avoided, and packet loss is corrected by efficient erasure codes. The implementation of this protocol can be found in a modified Linux kernel, so firstly I will provide a quick overview of the core elements of the Linux networking subsystem. After that I will show the new concept, its advantages, disadvantages, and the properties of the new protocol in more detail. You will see the different working phases of the protocol, the applied coding schemes, and their implementation. Finally I will explain the parameters, which can be used to change the behavior of the protocol in some important situations. In all cases I use figures, tables, and flowcharts to demonstrate the processes used by the protocol.
After that I will introduce the programs, network topologies, and the applied configurations used to measure the performance of the new protocol compared to some important TCP variants, which can be found in the Linux kernel. Finally I discuss the future works on improving the performance of the new protocol.