INTRODUCTION

This file describes how to install MIPL Mobile IPv6 for Linux.  Mobile
IPv6 (or IPv6 Mobility support) provides transparent mobility for
Internet Protocol version 6.  Protocols above IP should not be
affected.


INSTALLATION

MIPL Mobile IPv6 comes as a kernel patch for the 2.4.x series.  It has
been tested in 2.4.0 through 2.4.7 kernels.  This patch should only be
applied against fresh 2.4.x tree (or later; provided no changes have
been made in the net/ipv6 directory).  MIPL MIPv6 has only been tested
on Redhat system but should work on any Linux system assuming you
already have working 2.4.x kernel and IPv6 environment.

The kernel patch is mipv6-a.b-v2.4.x.patch (where a and b are the
major and minor version numbers of MIPL and x is the kernel version
sublevel against which the patch was made).  Assuming you have a fresh
2.4.x kernel tree in /usr/src/linux do the following:

cd /usr/src/linux
patch -p1 --dry-run < mipv6-a.b-v2.4.x.patch

This does not actually do anything but display errors if any.  If you
get any failed hunks, you should NOT proceed.  Otherwise do:

patch -p1 < mipv6-a.b-v2.4.x.patch

Now your kernel tree is ready for configuration.  Run your favorite
'make *config'.  Make sure you have at least the following options
set.  For easy checking use chkconf_kernel.sh in userspace.

 CONFIG_EXPERIMENTAL=y 
 CONFIG_SYSCTL=y 
 CONFIG_PROC_FS=y 
 CONFIG_MODULES=y 
 CONFIG_NET=y 
 CONFIG_NETLINK=y
 CONFIG_RTNETLINK=y
 CONFIG_NETFILTER=y 
 CONFIG_UNIX=y 
 CONFIG_INET=y 
 CONFIG_IPV6=m
 CONFIG_IPV6_MOBILITY=m

The last configuration option is the newly added Mobility Support.
There are also two sub-options for mobility: CONFIG_IPV6_MOBILITY_AH
and CONFIG_IPV6_MOBILITY_DEBUG.  The first one turns on Authentication
header support in MIPL.  All signaling data is protected with AH if
this option is set.  Nodes with AH support cannot interoperate with
nodes without it.  The latter turns on debugging messages for MIPL.
Since MIPL is still work-in-progress you might want to enable this.
With debug messages it is easier to figure out what happened when
something goes wrong.  Also when reporting a bug debug messages are
very helpful.

After you are satisfied with your configuration save changes and exit.
Run 'make dep' and compile and install the new kernel and modules.
The kernel part is now done.

Go back to the directory where you untar'd the MIPL distribution
package.  You should have a directory called userspace. Run
'configure' to create Makefile and mobile-ip6. Check that the Makefile
directories are in order for your system. Run 'make' and 'make install'
to compile and install userlevel tools, man pages, init scripts and
example configuration files. These are mandatory for the module to work
correctly. You also need to create the device file for MIPL with
'mknod /dev/mipv6_dev c 0xf9 0'.

The essential files are installed in following directories:

mipdiag		/sbin			all

man pages	/usr/man		all

init script	/etc/rc.d/init.d	RH6
		/etc/init.d		RH7 & Debian
		/sbin/init.d		SuSE

config files	/etc/sysconfig		RH6 & RH7
		/etc			Debian & SuSE

docs		/usr/share/doc		ALL

Configuration scripts are tested only in RH6, RH7 and Debian. They
are not guaranteed to work on other systems.


CONFIGURATION

Now configure MIPL for your system.  There are three configuration
files /etc/sysconfig/network-mip6.conf(5), /etc/mipv6_acl.conf(5) and
/etc/mipv6_sas.conf(5).  They are pretty self-explanatory but you may
want to take a look at the man pages.  For run-time configuration and
diagnostics use mipdiag(8).  See manual page for usage information.


USAGE

Included in the package the is an automatic startup script called
"mobile-ip6" for the module.  Use "mobile-ip6 start" to start the
module by hand and "mobile-ip6 stop" to unload.  This script reads the
configuration files and configures module accordingly.

Module may also be loaded by hand using insmod.  You cannot set Home
Address nor Home Agent Address with insmod so Mobile Node will be left
in a state where it does not know these addresses until given with
mipdiag(8).  See provided init script for insmod options available.

Automatic startup in RedHat and Debian

On RedHat and Debian systems all init scripts are in /etc/init.d (or
/etc/rc.d/init.d in older RedHats).  Runlevel directories /etc/rc?.d
(or /etc/rc.d/rc?.d in older RedHats) contain symbolic links to actual
scripts.  Links are managed in RedHat with chkconfig tool and in
Debian with update-rc.d (both similar to IRIX chkconfig).  Doing
'chkconfig mobile-ip6 --levels 345 on' in RedHat or 'update-rc.d
mobile-ip6 start 75 3 4 5 stop 05 1 2 6' in Debian will set up all
necessary links.

NOTE ON IPSEC SUPPORT

MIPL-0.9 includes and uses manually keyed IPSec AH in transport mode
for authenticating mobility related signaling.  After compiling the
module with AH turned on you should configure the security
associations in the file /etc/mipv6_sas.conf according to
mipv6_sas.conf(5). 

NOTE ON DYNAMIC HOME AGENT ADDRESS DISCOVERY SUPPORT

MIPL supports Dynamic Home Agent Address Discovery.  However, DHAAD
uses anycast which is not supported in Linux IPv6 stack and requires
some tricks.  To use DHAAD you must configure Home Agents Anycast
address for your Home Agent.  If you have multiple HAs in your home
subnet you must assign the address to just one of them.  Furthermore
this address must be the first global address assigned to the
interface due to broken source address selection (anycast address
should never be used as source address).  HA supporting DHAAD must
also run radvd (or other software capable of sending Router
Advertisements with MIPv6 extensions) and advertise itself with H-bit
(Home Agent) set on every interface it serves as a Home Agent.

To enable DHAAD in Mobile Node, just assign Home Agents Anycast
Address for Home Agent Address.  For how to compute the Home Agents
Anycast Address for your home subnet see RFC 2526.


RADVD

A Router Advertisement Daemon (radvd) should be installed on the routers
of home and foreign networks which the mobile node may visit.  Official
radvd supports Mobile IPv6 extensions since version 0.6.2.  radvd can be
downloaded from:
 
ftp://ftp.cityline.net/pub/systems/linux/network/ipv6/radvd/ (official)
http://www.mipl.mediapoli.com/pub/mirrors/radvd/ (mirror)
 
The radvd package includes needed installation and configuration notes.
