SHISA; The new KAME Mobile IPv6 / NEMO stack

KAME Mobility development team
$Id: index.html,v 1.3 2005/02/16 13:41:28 t-momose Exp $


The KAME Mobile IPv6 stack had been developped for long time. Now, it enoughly works well and is regarded reference code. However, it cause a kernel size enlarged since the most of codes are implemented in the kernel side. Addition the kernel enlargement problem, there are other probelms that implementing in kernel makes it difficult to debug and improve some extensions.

On the other hand, the current Mobile IPv6 specification introduced a new extention header, mobility header, to convey mobile ip signaling packet. This decision makes it possibe to implement mobile IPv6 stack on userland.

In WIDE project, another Moble IPv6 code for BSDs had been developed by SFC in Keio University. They also faced similar problems to us. Therefore we have agreed to unify and re-design our implementations.

The new MIP6 code is named 'SHISA' which is derived from a traditional roof ornament of Okinawa, a tropical island in Japan, because the first developping camp was held in Okinawa in April, 2004. We had almost done the work by October and attended ETSI IPv6 plugtests event to confirm its interoperability.

What were changed ?

From a operetain view, some points are changed.
Most of parts especially signaling are moved to user land. Userland programs are separated to four parts for each functions.
Home address assignement
Home addresses are not assigned automatically. You should specify it explicitly.
Supported NEMO protocol
NEMO Basic protocol is implemented by default.
Getting BCE/BUL informations
'mip6control' is no longer supported. You can use telnet interfaces to get mobility status or informations.


The current Shisa is based on RFC3775, RFC3776, draft-ietf-nemo-basic-03 and draft-wakikawa-mobileip-multiplecoa-03. It works on FreeBSD 4.10, FreeBSD 5.3 and NetBSD 1.6.2. OpenBSD edition isn't ported yet. But note that FreeBSD 4.10 will not supported in kame snap soon as announced on snap-users mailing list.

But, there remains some work to do such as:

How to Use Shisa

There is a good documentation of usage MIP6 and NEMO. Please refer here(pdf).
Using IPsec
If you will protect signaling packets between a mobile node(it is recommended and normal), turn a switch on, and setup security associations.
# sysctl net.inet6.mip6.ipsec=1
Currently, setting securtiy associations is the same way as before. Please refer the section 'Create IPsec configuration files' of the document KAME Mobile IPv6 How To.

the Most Convinient Way
For FreeBSD and NetBSD users, a special rc script to be able to describe MIP6 configuration in /etc/rc.conf is provided. To use this feature, you have to copy the rc scripts from $(kame)/$(bsd)/etc/.

Following keywords are defined:

ipv6_mobile_enable <All>
(bool) if set to 'YES', mobile IPv6 is supported. At least correspondent node functionality is enabled if others are not set.
ipv6_mobile_nodetype <All>
(str) Select from 'mobile_node', 'correspondent_node', or 'home_agent'.
ipv6_mobile_security <Home Agent / Mobile Node>
(bool) if set to 'NO', the node accepts packets not protected with IPsec. But it is not recommended using 'NO' except on experimental network. If set to 'YES', you have to setup IPsec parameters.
ipv6_mobile_home_interface <Home Agent>
(str) Specify a home link.
This is a template for a home agent
# These are the same as a traditional IPv6 router setting
ipv6_ifconfig_xx="<your home agent address> prefixlen <your home agent address prefix. normally 64>"

# For Home Agent
Here is a template for a mobile node. You have to specify home address statically.
# IPv6 host setting

# For MN
ipv6_ifconfig_mip0="<<Your home address>> prefixlen 64 home"

More Reading