Mobile IPv6 for Linux Guide (with USAGI patch)

Note that UMIP-0.1 is OBSOLETE.

Japanese version is here.


This article provides a tutorial on setting up Mobile IPv6(MIPv6) on Linux.

Basic kernel configuration, IPv6 networking operation, configuration experience and basic MIPv6 knowledge are needed. If you use IPsec, basic IPsec knowledge and IPv6 tunnel gateway configuration experience is also required.

First of all, see README.MIPv6 about this software.

On this document, "(ready-logo)" means that configuration or procedure required to prepare environment to obtain IPv6 Ready Logo Program Phase-2 MIPv6.


For all nodes(HA, MN, CN)

For HA

For HA and MN

Building kernel and mip6d


After mip6d is installed, you can see mip6d.conf(5) which has useful information about configuration.

HA specific configuration

MN specific configuration

CN specific configuration

IPsec configuration

Boot sequence

HA boot sequence

  1. Before starting mip6d, the following conditions should be satisfied:
    • Be ready as a router
    • Assigned a global address on home link interface, as HA address
    • IPsec SA configuration (when using IPsec with static keying)
    • (optional)syslogd is running
  2. Run mip6d
  3. After started mip6d:
    • Run radvd

MN boot sequence

  1. Before starting mip6d, the following conditions should be satisfied:
    • Disable sending RS from kernel(ready-logo, see below).
    • The interface is brought up before you run mip6d.
    • IPsec SA configuration (when using IPsec with static keying).
    • (optional)syslogd is running.
  2. After you made sure these conditions, you can run mip6d.
Note that about running IPv6 Ready Logo phase 2 with this implementation:

CN boot sequence

  1. Before starting mip6d, the following conditions should be satisfied:
    • (optional)syslogd is running
  2. Run mip6d

Example of mip6d boot script

Examples for other distributions are (TBD)



Binding cache

Binding update list

Route optimization

We don't have an easy and good route optimization test for both-direction (other than using TAHI test or dumping packet). On the other hand, with ping6 command from USAGI cvs, you can check whether inbound echo reply is route-optimized or not.


Known issues

  1. It is not supported:
    • mip6d with IKE daemon to establish SA
    • to flush SPD during mip6d is running
    • to re-insert SA during mip6d is running
      [HA] relevant binding cache entry exists
      [MN] on foreign link
  2. Don't send BU to HA during HA performs proxy DAD with the same HoA.
    When HA receives the next BU while processing the BU for the first Home Registration, HA can't handle it correctly and will go wrong.
    When such a case occurred, you can aovid this trouble by setting InitialBindackTimeoutFirstReg or InitialBindackTimeoutReReg more than 1.0 second in the configuration file of MN(i.e., MN waits more than InitialBindackTimeoutFirstReg or INITIAL_BINDACK_TIMEOUT seconds to send the next BU).See also MN boot sequence section.

$Id: index.html.en,v 1.4 2007-03-31 16:55:50 yoshfuji Exp $
Copyright ©2006,2007 USAGI/WIDE Project, All Rights Reserved.