Multiple TCP connections between the same pair of hosts each carry out congestion control on their own. Much efficiency could be gained if such TCP connections would "collaborate" by sharing certain information such as the congestion window (cwnd).
These ideas are outlined in RFC 2140 and several papers, e.g. this one, show the benefits that could be achieved by combining congestion control. In practice, such mechanisms are hardly implemented (e.g. RFC 2140 is only partially implemented in Linux). This is mainly because multiple TCP connections between the same pair of hosts may in fact not always take the same path, e.g. due to routing mechanisms such as ECMP (Equal Cost Multi-Path).
The goal of this master thesis is to address this problem, by:
- sending TCP over UDP, such that multiple TCP connections between the same host pair use the same UDP port number pair and will hence be similarly routed. This is called "TCP-in-UDP" as opposed to "TCP-over-UDP" because the combined UDP-TCP header will be a bit "special" - some unnecessary things will be removed such that the combined header does not need more space than a normal TCP header.
- implementing cwnd sharing for these TCP-over-UDP connections
- showing with measurements that, as expected, huge gains arise from using TCP in this way
This work requires good networking knowledge and experience with Linux or FreeBSD kernel programming. Item #1 above will be relatively easy as it only influences the way packets look as they are put on the wire. Item #2 is probably a bit harder, but there are quite clear instructions available (e.g. RFC 2140 and the paper mentioned above).
It is a plus if you're interested in contributing code to the FreeBSD or Linux kernel, and it is planned to propose a standard based on this master thesis; thus, it is a thesis with big gains for big pains :-)