Subject: [multipathtcp] Some MCTCP Implementation Details

From: "SCHARF, Michael" <[email-masked]>
Date: Sun, 25 Jul 2010 13:03:31 +0200

Dear all,

as a small follow-up note to yesterday's workshop, I'd like to share
some background information concerning my implementation of
draft-scharf-mptcp-mctcp.

As already mentioned, in order to minimize the impact on the Linux
kernel, I implement MCTCP by a combination of a kernel patch and a new
user-space library, which seems to be possible for payload encoding. Of
course, a full kernel implementation would have many advantages, but
MCTCP is designed to allow less ambitious steps first. Note that the
whole implementation is work-in-progess and not well tested, thus all
this information is preliminary.

Kernel-space part:

  - A patch for Linux 2.6.32, written from scratch (in about four days)

  - Implements the minimum set of functions required in the kernel as
specified in draft-scharf-mptcp-mctcp-00

  - About 800 additional lines of code (including comments etc.), rather
straightforward, since the fast path processing of data is not affected

  - Implements the handling of the TCP options in the
three-way-handshake, 5 simple additional socket options for
communication with the user-space library, and congestion control
coupling for Reno

User-space part:

  - A new library for the payload encoding that exchanges MCTCP control
information (e. g., tokens) with the kernel by the socket options

  - Implements TLV encoding of chunks, scheduling, reassembly, simple
path management, and socket API to applications

  - Currently about 4000 lines of code (including comments etc.)

  - A proof-of-concept implementation only, with some missing features,
and in particular not performance optimized - but the library can easily
be exchanged...

There will be a live demo of MCTCP on Ubuntu Linux 10.04 next week
during the "Euroview 2010" workshop in Wuerzburg:
http://www3.informatik.uni-wuerzburg.de/euroview/2010/

In case of any questions or interest in the MCTCP implementation (or, my
code), please feel free to contact me. 

Michael