On-line flow measurement for proactive optimization of bandwidth usage

Taken by: Laurent Fasnacht
Completed by: Laurent Fasnacht

Reliable data distribution over the internet is mostly based on TCP (transmission control protocol). With TCP, the rate of data transmission between two nodes decreases as the distance between the two nodes increases. In a globalized internet, it becomes more and more difficult to make optimal use of the broad bandwidth now commonly available in private households. In the case of one-to-many data distribution, large content providers do fix the problem by deploying expensive content delivery networks.

The success of novel bandwidth-demanding peer-to-peer applications such as tele-presence and high definition video-conference will have to rely on transmission protocols that make more effective use of the available bandwidth. Forward error correcting codes (FEC) on top of standard UDP protocol have proven to provide reliable and efficient data transmission over long distance and/or lossy networks. In particular, using fountain codes it is possible to saturate any available bandwidth by flooding the connection with an arbitrary number of repair packets. Although optimal for the two peers, this method is not very fair to the users sharing the same link and will end up wasting resources. In fact, the sender transmission rate should not exceed the effective bandwidth linking the two peers.

The goal of this project is to develop an efficient method to quickly determine and monitor the actual bandwidth available between two peers in order to make optimal and fair use of it. Measurements will have to be fitted with theoretical models in order to determine the more realistic description of the communication channel at any moment in time during transmission.

The computer programs developed for this project will be included in a generic library that is being developed in our laboratory for tunneling network traffic over a transmission channel made reliable and efficient using FEC. The library also provides an easy to use application programming interface (API) that hides to the user all the technicalities including the difficulty of establishing a one-to-one communication channel between nodes that are behind firewalls and NAT routers.