Performance-Enhancing proxy for TCP over lossy links (TCPeP)

Implementation of the Network Coded TCP (CTCP) by Gregoire Delannoy as part of his final year project at Dublin City University.

Author’s description:

TCPeP is a Performance-Enhancing proxy for TCP over lossy links, using Network Coding principles. It is partly based on the paper “Network coded tcp – CTCP”.
Standard TCP algorithm were designed with wired networks in mind, assuming that all losses resulted from congestion events.
Coded-TCP is based on the assumption that losses can be completely random, as it occurs in some wireless links.

Source: https://github.com/GregoireDelannoy/TCPeP

AAU Summerschool 2014: Mobile Phone Programming

This summer (July 28 – August 15) we ran our mobile phone programming summer-school for students from around the world. This year we had 35 participants for the mobile phone programming track. During the three weeks the students get intensive crash course on mobile application development (this year the focus was on Android). Besides becoming familiar with various aspects of mobile programming the students also develop their own mobile applications. Typically this is great fun – and if you are interested in learning more about the upcoming AAU summer-schools or the mobile phone programming track, you can visit the AAU summer-school webpage here.

June 2014 IEEE ComSoc Papers on Network Coding


IEEE Transactions On Communications


IEEE Communications Letters

IEEE Transactions On Wireless Communications


IEEE Wireless Communications Letters

Source: IEEE Comunications Society’s Publications Contents Digest

Tutorial NetCod 2014

This year I gave a tutorial on using the Kodo library at the NetCode 2014 conference.

Kodo is a C++ library for implementing Erasure Correcting Codes, in
particular Random Linear Network Codes. The library is intended to be
used for reliable communication protocols and storage systems and for
research on the use and implementation of Random Linear Network Codes.

Find the tecnical program here.

May 2014 IEEE ComSoc Papers on Network Coding


IEEE Communications Letters


IEEE Transactions On Wireless Communications


Journal Of Optical Communications and Networking

Source: IEEE Comunications Society’s Publications Contents Digest

April 2014 IEEE ComSoc Papers on Network Coding


IEEE Communications Magazine


IEEE Journal On Selected Areas In Communication


IEEE Communications Letters


IEEE Transactions On Wireless Communications

Source: IEEE Comunications Society’s Publications Contents Digest

March 2014 IEEE ComSoc Papers on Network Coding


IEEE Transactions on Communications


IEEE Transactions On Wireless Communications

Source: IEEE Comunications Society’s Publications Contents Digest

February 2014 IEEE ComSoc Papers on Network Coding


IEEE/ACM Transactions on Networking


IEEE Transactions On Wireless Communications


IEEE Transactions On Multimedia

Source: IEEE Comunications Society’s Publications Contents Digest

Tutorial Chair European Wireless 2015

This year I will serve as the tutorial chair for European Wireless 2015.

EW 2015 will be accompanied by a set of three-hour long tutorials on important and emerging topics in wireless and mobile communications. These tutorials will be offered free of charge to all participants of the conference.

See the call for tutorials here: http://ew2015.european-wireless.org/call-for-tutorials/

If you are interested please also consider submitting a technical paper.
Find the call for papers here: http://ew2015.european-wireless.org/call-for-papers/

Installing a newer gcc/g++ on Ubuntu 12.04 LTS

I recently had the need to install a newer version of the g++ compiler on Ubuntu 12.04 LTS. I documented the approach here.

Ubuntu does not typically release new toolchains for their stable versions, instead newer toolchains are made available in a PPA (Personal Package Archive) “https://launchpad.net/~ubuntu-toolchain-r/+archive/test“ to use the repository we can use the add-apt-repository command:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.7 g++-4.7

Currently the PPA contains gcc/g++-4.7 and 4.8. After installing one or multiple of the newer versions we can use update-alternatives to switch between the different versions. The update-alternatives tool manages symlinks to the different installed versions and allow us to easily switch between them.

Before we add the new gcc/g++ lets check if we already have any alternatives setup by running:
$ update-alternatives --display gcc

If you don’t have any alternatives installed it will just print:
update-alternatives: error: no alternatives for gcc.

Lets see how to add an alternative:

$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.7
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.6

As a default when we install new alternatives they are added to a group (in this case gcc) in automatic mode. This means that the link with the highest priority will become the default. In the case above we gave gcc-4.7 a priority of 60 and gcc-4.6 a priority of 40, so the default with be gcc-4.7
The –slave options tells update-alternative that when we change gcc it should also update the g++ links.

To check that everything is ok or to switch between the compilers we can use

$ sudo update-alternatives --config gcc
There are 2 choices for the alternative gcc (providing /usr/bin/gcc).

Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/gcc-4.7 60 auto mode
1 /usr/bin/gcc-4.6 40 manual mode
2 /usr/bin/gcc-4.7 60 manual mode

Press enter to keep the current choice[*], or type selection number: 0

That is more or less it. Running gcc --version shows that we are now using the newer version:

gcc (Ubuntu/Linaro 4.7.3-2ubuntu1~12.04) 4.7.3
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.