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 with various 2.4.x kernels.  The kernel patch is named
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).  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.

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.  If everything went fine
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_IPV6_TUNNEL=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 MIPv6 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 for your system.  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) and /etc/mipv6_acl.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. Currently the configuration of security associations needs to be done manually, see mipdiag(8) for details.


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.
Also, tunnels must be created on Mobile Node and Home Agent with the
ipv6tunnel utility.

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 AUTHENTICATION 

MIPL-0.9.1 includes and  can use 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). 

The default method for authentication of Binding Updates and
Acknowledegements is the use of the authentication data suboption (new
in mipv6 draft 15). It is compiled into the module by default. To
start using it just set /proc/sys/net/ipv6/mobility/use_auth to 1 and
set the SAs for all the nodes either manually with mipdiag OR
beforehand into /etc/mipv6_sas.conf and uncomment the AUTHENTICATION
line in network-mip6.conf.

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:
 
	http://v6web.litech.org/radvd/ (official)

The radvd package includes needed installation and configuration
notes.
