In order to operate UMIP, you need a mobility-ready kernel as well as an userland daemon. The kernel will be retrieved from the official linux kernel repository, and recompiled with the needed options. The UMIP userland will be compiled from the sources.
UMIP sources are managed with git and hosted at http://git.umip.org/. They are regularly updated with new features and bugfixes. Most of the code that we integrate to this repository comes from our repository of experimental patches. These patches would eventually find their way into the UMIP source repository once they have proved to be stable. If you have interest in using such patches, you may also consult this document.
This documentation describes how to compile a mobility-ready kernel, as well as how to retrieve the UMIP sources, compile and install them. As our source repository is frequently updated, we also propose debian packages to allow users to easily install and update the UMIP userland.
Building a Mobility-ready Kernel
You need to compile a kernel for your system. The IPv6 mobility support has been integrated into the kernel sources since version 2.6.26, so no patches are needed anymore on 2.6 kernel versions greater than 2.6.26. This is another story on 3.* kernels, where mobility is broken up to kernels version 3.8.1. This documentation is based on a kernel version 3.8.2 which does not need to be patched. If you need to use a version older than 3.8.1, we provide a set of patches here.
We describe below how to build a mobility-ready 3.8.2 kernel with UMIP. Download the kernel sources from kernel.org. For example with a 3.8.2 kernel:
# cd /usr/src/ # wget http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.8.2.tar.bz2
Verify the integrity of the downloaded kernel sources:
# wget http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.8.2.tar.sign # bunzip2 linux-3.8.2.tar.bz2 # gpg --keyserver wwwkeys.pgp.net --recv-keys 0x6092693E # gpg --verify linux-3.8.2.tar.sign gpg: Signature made Sun Mar 3 23:04:31 2013 CET using RSA key ID 6092693E gpg: Good signature from "Greg Kroah-Hartman (Linux kernel stable release signing key) [...]"
Uncompress the sources, and create a symbolic link to the kernel sources:
# tar xf linux-3.8.2.tar # ln -s /usr/src/linux-3.8.2/ /usr/src/linux # cd linux-3.8.2/
If you need to patch your kernel (for versions less than 3.8.1), you should do it now with the patches located here. For more information on which patch you should apply depending on your kernel version, see this README file).
You can now edit the kernel configuration file to turn on the mobility options. If you are not familiar with kernel compilation, take a look at this kernel rebuild guide. In practice, you can simply (and usually) reuse your old running kernel configuration and then set the required mobility options:
# make oldconfig # make menuconfig
To enable the mobility features, you need to turn on the following options in the kernel:
General setup --> Prompt for development and/or incomplete code/drivers [CONFIG_EXPERIMENTAL] --> System V IPC [CONFIG_SYSVIPC] Networking support [CONFIG_NET] --> Networking options --> Transformation user configuration interface [CONFIG_XFRM_USER] --> Transformation sub policy support [CONFIG_XFRM_SUB_POLICY] --> Transformation migrate database [CONFIG_XFRM_MIGRATE] --> PF_KEY sockets [CONFIG_NET_KEY] --> PF_KEY MIGRATE [CONFIG_NET_KEY_MIGRATE] --> TCP/IP networking [CONFIG_INET] --> The IPv6 protocol [CONFIG_IPV6] --> IPv6: AH transformation [CONFIG_INET6_AH] --> IPv6: ESP transformation [CONFIG_INET6_ESP] --> IPv6: IPComp transformation [CONFIG_INET6_IPCOMP] --> IPv6: Mobility [CONFIG_IPV6_MIP6] --> IPv6: IPsec transport mode [CONFIG_INET6_XFRM_MODE_TRANSPORT] --> IPv6: IPsec tunnel mode [CONFIG_INET6_XFRM_MODE_TUNNEL] --> IPv6: MIPv6 route optimization mode [CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION] --> IPv6: IP-in-IPv6 tunnel (RFC2473) [CONFIG_IPV6_TUNNEL] --> IPv6: Multiple Routing Tables [CONFIG_IPV6_MULTIPLE_TABLES] --> IPv6: source address based routing [CONFIG_IPV6_SUBTREES] File systems --> Pseudo filesystems --> /proc file system support [CONFIG_PROC_FS]
You can now proceed to the kernel compilation and installation:
# make # make modules_install # make install # make headers_install
Verify your bootloader configuration and reboot on your new kernel.
Building the UMIP Userland from the Sources
First, you may need additional packages to be able to compile and use UMIP. Be sure to have the following packages: autoconf, automake, bison, flex, libssl-dev, indent, ipsec-tools, radvd on your system. On a Debian operating system, you can install them with:
# apt-get install autoconf automake bison flex libssl-dev indent ipsec-tools radvd
Then, retrieve the source code from our repository:
$ cd /usr/src/ $ git clone git://git.umip.org/umip/umip.git $ cd umip/
Provided that you have built your kernel as explained in the previous section, you can compile and install UMIP with:
$ autoreconf -i $ CPPFLAGS='-isystem /usr/src/linux/usr/include/' ./configure --enable-vt $ make # make install
CPPFLAGS is used to indicate where are your kernel headers (they should have been installed in /usr/src/linux/usr/include/ when you did make headers_install during the kernel installation stage). The --enable-vt option enables a virtual terminal for UMIP, which can be useful to retrieve the binding cache or binding update list information on the Home Agent or the Mobile Node.
That's it! You can now configure UMIP with the help of our documentions.
We provide Debian packages for UMIP as well as all the necessary files to build you own Debian packages. Check the documentation here (section Debian). Note that you still need to compile a mobility-ready kernel as described in the Kernel section above.
- 2017/02/01: Updated links.
- 2013/03/13: Updated kernel to 3.8.2.
- 2013/01/13: Updated kernel to 3.7.2.
- 2011/03/19: Updated addresses of repo (switch from http transport to git).
- 2009/08/26: First version of this document.