Fri, 06/08/2007 - 13:42 by Sébastien Barré • Categories:

Shim6 is a mechanism that allows multihomed hosts to take profit from the multiple paths available across the Internet. It is designed as a new intermediate sublayer inside the IPv6 network layer. Shim6 is still a work in progress. The set of drafts produced by the IETF Shim6 working group is available here.

Since Shim6 gives end-hosts the ability to manage several paths, it is also a natural mean of providing failure detection and recovery, as well as best path selection. While the second is still a research matter, the first has been defined as the REAP companion protocol for shim6.

The LinShim6 implementation first appeared as a result of a Master's thesis work, which described the initial design choices and implications on the Linux Networking stack of the new shim6 layer. It currently support the major parts of the shim6 protocol, as well as the full REAP protocol.

Up to now, the only author is Sébastien Barré but proposals for contributions are very welcome. The development platform for LinShim6 is gforge. You can find there information for subscription to the LinShim6 mailing list, a browsable svn and the latest tarballs and documentation for the project.

Referencing and being referenced

When citing LinShim6 in publications, please use the following reference paper:
Implementation and evaluation of the Shim6 protocol in the Linux kernel, Sébastien Barré, John Ronan and Olivier Bonaventure. To appear in Computer Communications, 2011.

You are also welcome to tell us about your LinShim6-related publications. We can then list them here (see below for a list of already published Shim6 papers).


MipShim6 is a variant of LinShim6 that handles mobility together with multihoming.
It is currently in prototype state, and can be downloaded here .

As for LinShim6, there is a publication you can cite when referencing the MipShim6 implementation:
MipShim6: une approche combinée pour la mobilité et la multi-domiciliation,S. Barré, A. Dhraief, N. Montavont, O. Bonaventure, Actes du 14ème Colloque Francophone sur l'Ingénierie des Protocoles (CFIP 09), pages 113-124, October 2009.

LinShim6 Publications

In this section we try to gather an up to date list of publications that made use of our LinShim6 implementation.

Quick links


  • Aug 28th, 09: LinShim6 0.9.1 released.
    • List of changes here.
    • download here.
    • You can also try already version 0.10 (not as stable), through the git repository, here .
  • Feb 12th, 09: LinShim6 0.9 released. New features:
    • Shim6 can be compiled as a module
    • Faster TCP failure recovery, thanks to a RTO reset after path change.
    • New option in shim6c, to configure the failure detection timer.
    • Support for the Keepalive timeout option.
  • Sept 29th, 08: LinShim6 svn repository replaced with a git repository. You can get information about it here.
  • July 25th, 08, LinShim6 0.8.2 released : Two bug fixes in the kernel patch, that were sometimes responsible for freezing the kernel.
    NEW : .deb packages are now provided for easy installation of the kernel part. If you install linux-image, linux-ubuntu-modules, and linux-backports-modules, you will get a fully functional shim6-enabled Ubuntu kernel, that simply appears as a new Shim6 kernel in the grub. We also provide a linux-headers package, which is needed by the Linshim6 daemon. There is not yet a kernel package for the daemon, but it is easy to install :

    • tar -zxvf LinShim6-0.8.2.tar.gz
    • cd LinShim6-0.8.2
    • ./configure CPPFLAGS="-isystem /usr/src/linux-headers-2.6.24-19-shim6-0.8/include/" (you must have installed the linux-headers package first)
    • make
    • make install
  • July 15th, 08 : LinShim6 0.8.1 released : A small bug was present in the just released 0.8. We thus fixed it in this release 0.8.1.
  • July 14th, 08 : LinShim6 0.8 released : The major new addition is the support for locator updates. Several bugs have also been fixed.
  • May 7th, 08 : LinShim6 0.7 released : The major new addition is the implementation of HBA. You can now easily specify in the config file a set of prefixes you use regularly. HBA will be used by LinShim6 for thoses prefixes instead of CGA, thus lowering the computational cost of the Shim6 negotiation.
  • April 28th, 08 : LinShim6 0.6.3 released : It contains mainly bug fixes.
  • February 29th, 08 : LinShim6 version 0.6.1 released. It now includes a tool for manual CGA generation, as well as a CGA daemon that listens to Router Advertisements. The CGA stuff is now configured automatically when typing make install, so that it works without complicated procedure.
  • February 11th, 08 : LinShim6 version 0.6 released. It can be downloaded here.
  • January 1st, 08 : The documentation for the 0.5.x version of LinShim6 is now available and can be downloaded here.
  • October 13th : Fixed compilation errors when LOG_EXPL_TIME option was enabled.
    Thanks to Martin Kulas and Aaron Kunde for their patch ! New version LinShim6-0.5.1-2

  • October 11th : Fixed bug #167 - New version LinShim6-0.5.1-1
  • October 10th : The bug tracking system has been enabled on the gforge development platform. You just need to create an account for that (which is fast), than you will be able to submit a bug report.
  • October 10th : Junxiu Lu, from Cernet Tsinghua University, China, has joined the development 'team' (whose only member previously was Sébastien Barré). Welcome !
  • October 8th : the 0.5 release of LinShim6, for the Linux kernel is available. This is a complete redesign of the architecture, that makes use of the xfrm framework. Rather than bringing new functionalities, this release provides better integration to the Linux kernel, which will allow good interaction with Mobile IPv6 and IPsec in the future. Because it is newer, it is probably more buggy than 0.4.3, but you are still strongly encouraged to test it and report bugs, so as to improve it. Thank you !
Research topic related: 
Our members: 
Sébastien Barré
Programming language: 
Development State: