1535 lines
80 KiB
Plaintext
1535 lines
80 KiB
Plaintext
|
Linux Mobile IPv6 HOWTO
|
|||
|
|
|||
|
Lars Strand
|
|||
|
|
|||
|
<lars (at) unik no>
|
|||
|
|
|||
|
2004-04-20
|
|||
|
Revision History
|
|||
|
Revision 1.2 2004-04-20 Revised by: LKS
|
|||
|
Updated links. Changed lisence back to [http://www.gnu.org/copyleft/fdl.html]
|
|||
|
GFDL
|
|||
|
Revision 1.1 2004-02-04 Revised by: LKS
|
|||
|
Added "Travelling through several foregin LAN's" and "Returning home". Some
|
|||
|
cleanup and restructuring.
|
|||
|
Revision 1.0 2003-12-02 Revised by: TMM
|
|||
|
Reviewed by LDP
|
|||
|
Revision 0.5.2 2003-11-26 Revised by: LKS
|
|||
|
A lot of cleanup. Thanks to John Levon levon [at] movementarian.org
|
|||
|
Revision 0.5.1 2003-11-22 Revised by: LKS
|
|||
|
Changed the license from [http://www.gnu.org/copyleft/fdl.html] GFDL to OPL
|
|||
|
due to some GFDL [http://people.debian.org/~srivasta/
|
|||
|
Position_Statement.xhtml] problems.
|
|||
|
Revision 0.5 2003-11-18 Revised by: LKS
|
|||
|
Converted to XML Docbook. Some cleanup.
|
|||
|
Revision 0.4 2002-11-07 Revised by: LKS
|
|||
|
Fixed some errors + update. Thanks to Henrik Petander petander (at) tcs hut
|
|||
|
fi.
|
|||
|
Revision 0.3.1 2003-11-03 Revised by: LKS
|
|||
|
Updated to MIPL relase 1.0 (kernel 2.4.22).
|
|||
|
Revision 0.3 2003-08-05 Revised by: LKS
|
|||
|
Initial release.
|
|||
|
|
|||
|
|
|||
|
This document describes the software and procedures to set up and use
|
|||
|
mobile IPv6 for Linux.
|
|||
|
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
Table of Contents
|
|||
|
1. Introduction
|
|||
|
1.1. What is Mobile IP?
|
|||
|
1.2. Why Mobile IP?
|
|||
|
1.3. How does it work?
|
|||
|
|
|||
|
|
|||
|
2. IPv6
|
|||
|
3. Mobile IPv6 for Linux
|
|||
|
3.1. Patching the kernel
|
|||
|
3.2. Userspace tools
|
|||
|
3.3. MIPv6 device node
|
|||
|
3.4. Automatic startup
|
|||
|
|
|||
|
|
|||
|
4. Test bed
|
|||
|
4.1. Testcase
|
|||
|
4.2. Step-by-step configuration
|
|||
|
|
|||
|
|
|||
|
5. Doing some tests
|
|||
|
5.1. Pre-test
|
|||
|
5.2. Movement detection
|
|||
|
5.3. ping6
|
|||
|
5.4. Kernel IP routing table
|
|||
|
5.5. Travelling through several foregin LAN's
|
|||
|
5.6. Returning home
|
|||
|
5.7. Real life testing - smooth handover
|
|||
|
|
|||
|
|
|||
|
6. FAQ
|
|||
|
7. Useful Resources
|
|||
|
8. Copyright, acknowledgments and miscellaneous
|
|||
|
8.1. Copyright and License
|
|||
|
8.2. How this document was produced
|
|||
|
8.3. Feedback
|
|||
|
8.4. Acknowledgments
|
|||
|
|
|||
|
|
|||
|
A. GNU Free Documentation License
|
|||
|
A.1. PREAMBLE
|
|||
|
A.2. APPLICABILITY AND DEFINITIONS
|
|||
|
A.3. VERBATIM COPYING
|
|||
|
A.4. COPYING IN QUANTITY
|
|||
|
A.5. MODIFICATIONS
|
|||
|
A.6. COMBINING DOCUMENTS
|
|||
|
A.7. COLLECTIONS OF DOCUMENTS
|
|||
|
A.8. AGGREGATION WITH INDEPENDENT WORKS
|
|||
|
A.9. TRANSLATION
|
|||
|
A.10. TERMINATION
|
|||
|
A.11. FUTURE REVISIONS OF THIS LICENSE
|
|||
|
A.12. ADDENDUM: How to use this License for your documents
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1. Introduction
|
|||
|
|
|||
|
This document describes the software and procedures to set up and use
|
|||
|
mobile IPv6 for Linux. The [http://www.ietf.org/internet-drafts/
|
|||
|
draft-ietf-mobileip-ipv6-24.txt] "Mobility Support in IPv6" draft answers
|
|||
|
the what and why of mobile IP:
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
1.1. What is Mobile IP?
|
|||
|
|
|||
|
"Each mobile node is always identified by its home address, regardless of
|
|||
|
its current point of attachment to the Internet. While situated away from its
|
|||
|
home, a mobile node is also associated with a care-of address, which provides
|
|||
|
information about the mobile node's current location. IPv6 packets addressed
|
|||
|
to a mobile node's home address are transparently routed to its care-of
|
|||
|
address via the mobile nodes Home Agent (HA). The protocol enables IPv6 nodes
|
|||
|
to cache the binding of a mobile node's home address with its care-of
|
|||
|
address, and then to send any packets destined for the mobile node directly
|
|||
|
to it at this care-of address." --- draft-ietf-mipv6-24, page 1-2.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
1.2. Why Mobile IP?
|
|||
|
|
|||
|
"Without specific support for mobility in IPv6, packets destined to a
|
|||
|
mobile node (host or router) would not be able to reach it while the mobile
|
|||
|
node is away from its home link (the link on which its home IPv6 subnet
|
|||
|
prefix is in use), since routing is based on the subnet prefix in a packet's
|
|||
|
destination IP address. In order to continue communication in spite of its
|
|||
|
movement, a mobile node could change its IP address each time it moves to a
|
|||
|
new link, but the mobile node would then not be able to maintain transport
|
|||
|
and higher-layer connections when it changes location. Mobility support in
|
|||
|
IPv6 is particularly important, as mobile computers are likely to account for
|
|||
|
a majority or at least a substantial fraction of the population of the
|
|||
|
Internet during the lifetime of IPv6." --- draft-ietf-mipv6-24, page 6.
|
|||
|
|
|||
|
For all the details, read the [http://www.ietf.org/internet-drafts/
|
|||
|
draft-ietf-mobileip-ipv6-24.txt] "Mobility Support in IPv6" draft
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
1.3. How does it work?
|
|||
|
|
|||
|
[Mobile-IP]
|
|||
|
|
|||
|
Mobile IP
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1. The Mobile Node (MN) travels to a foreign network and gets a new
|
|||
|
care-of-address.
|
|||
|
|
|||
|
2. The MN performs a binding update to its Home Agent (HA) (the new
|
|||
|
care-of-address gets registered at HA). HA sends a binding
|
|||
|
acknowledgement to MN.
|
|||
|
|
|||
|
3. A Correspondent Node (CN) wants to contact the MN. The HA intercepts
|
|||
|
packets destined to the MN.
|
|||
|
|
|||
|
4. The HA then tunnels all packets to the MN from the CN using MN's
|
|||
|
care-of-address.
|
|||
|
|
|||
|
5. When the MN answers the CN, it may use its current care-of-address (and
|
|||
|
perform a binding to the CN) and communicate with the CN directly
|
|||
|
(optimized routing) or it can tunnel all its packets through the HA.
|
|||
|
|
|||
|
|
|||
|
See figure "Mobile IP" for an explanation.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
2. IPv6
|
|||
|
|
|||
|
IP version 6 (IPv6) is a new version of the Internet Protocol, designed as
|
|||
|
the successor to IP version 4 (IPv4) [http://www.ietf.org/rfc/rfc791.txt]
|
|||
|
[RFC-791]. The changes from IPv4 to IPv6 fall primarily into the following
|
|||
|
categories:
|
|||
|
|
|||
|
<EFBFBD><EFBFBD>*<2A>Expanded addressing capabilities
|
|||
|
|
|||
|
<EFBFBD><EFBFBD>*<2A>Header format simplification
|
|||
|
|
|||
|
<EFBFBD><EFBFBD>*<2A>Improved support for extensions and options
|
|||
|
|
|||
|
<EFBFBD><EFBFBD>*<2A>Flow labeling capability
|
|||
|
|
|||
|
<EFBFBD><EFBFBD>*<2A>Authentication and privacy capabilities
|
|||
|
|
|||
|
|
|||
|
You should have basic knowledge of IPv6 stateless auto-configuring to fully
|
|||
|
understand how 'mobile IPv6' (MIPv6) works. You can read up on IPv6 Stateless
|
|||
|
Address Autoconfiguration in [http://www.ietf.org/rfc/rfc2462.txt] [RFC2462].
|
|||
|
|
|||
|
For more information on IPv6 in general, visit the IETF's IPv6 Working Group.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
3. Mobile IPv6 for Linux
|
|||
|
|
|||
|
There are currently two Mobile IPv6 Linux implementations available. The
|
|||
|
Lancaster University in the UK has the oldest(?) implementation ([http://
|
|||
|
www.cs-ipv6.lancs.ac.uk/MobileIP/] http://www.cs-ipv6.lancs.ac.uk/MobileIP
|
|||
|
/). The latest kernel supported is 2.1.90, and is compatible with IETF mobile
|
|||
|
IPv6 draft-v5 (the current revision is v24). The code and website has not
|
|||
|
been updated since 1998, so it is considered obsolete.
|
|||
|
|
|||
|
The other implementation, which is up-to-date, is Helsinki University of
|
|||
|
Technology's MIPL project. The latest supported kernel is 2.4.22, and they
|
|||
|
have patches for the upcoming 2.6 kernel (see the FAQ). Visit [http://
|
|||
|
www.mobile-ipv6.org/] http://www.mobile-ipv6.org/ for papers, software or to
|
|||
|
browse the mail archive.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
3.1. Patching the kernel
|
|||
|
|
|||
|
The MIPL MIPv6 implementation requires a kernel patch. The implementation
|
|||
|
modifies the IPv6 kernel stack, so a kernel recompile is necessary. The
|
|||
|
installation process is well documented, but I will give a brief step-by-step
|
|||
|
howto.
|
|||
|
|
|||
|
Please note! The need for two different kernels, one for MN and one for HA,
|
|||
|
is obsolete. Just compile support for MN and HA in the same kernel. It is not
|
|||
|
possible to run as both an MN and an HA at the same time; which mode is
|
|||
|
chosen depends on which of the modules are loaded.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1. Download the latest Linux MIPv6 source code from [http://
|
|||
|
www.mobile-ipv6.org/] http://www.mobile-ipv6.org/. The latest release
|
|||
|
today is: mipv6-1.0-v2.4.22. The last four numbers corresponds to the
|
|||
|
Linux kernel the patch should be applied to:
|
|||
|
# cd /usr/local/src
|
|||
|
# wget http://www.mobile-ipv6.org/download/mipv6-1.0-v2.4.22.tar.gz
|
|||
|
# tar zxfv mipv6-1.0-v2.4.22.tar.gz
|
|||
|
|
|||
|
|
|||
|
2. Download and unpack the correspondent Linux kernel version from [ftp://
|
|||
|
ftp.kernel.org] ftp.kernel.org:
|
|||
|
# cd /usr/src
|
|||
|
# wget ftp://ftp.kernel.org/pub/linux/kernel/v2.4/linux-2.4.22.tar.bz2
|
|||
|
# tar jxvf linux-2.4.22.tar.bz2
|
|||
|
# ln -s linux-2.4.22 linux
|
|||
|
# cd linux
|
|||
|
|
|||
|
|
|||
|
3. Apply the MIPv6 patch:
|
|||
|
# patch -p1 --dry-run < /usr/local/src/mipv6-1.0-v2.4.22/mipv6-1.0-v2.4.22.patch
|
|||
|
|
|||
|
|
|||
|
The --dry-run option checks that the patch will apply correctly. If you
|
|||
|
get any failed hunks, you should not proceed. If everything went fine do:
|
|||
|
|
|||
|
# patch -p1 < /usr/local/src/mipv6-1.0-v2.4.22/mipv6-1.0-v2.4.22.patch
|
|||
|
|
|||
|
|
|||
|
4. Now your kernel tree is ready for configuration. Run your favorite make *
|
|||
|
config. The MIPv6 options are under "Networking Options". The following
|
|||
|
options should be present in ".config":
|
|||
|
CONFIG_EXPERIMENTAL=y
|
|||
|
CONFIG_SYSCTL=y
|
|||
|
CONFIG_PROC_FS=y
|
|||
|
CONFIG_MODULES=y
|
|||
|
CONFIG_NET=y
|
|||
|
CONFIG_NETFILTER=y
|
|||
|
CONFIG_UNIX=y
|
|||
|
CONFIG_INET=y
|
|||
|
CONFIG_IPV6=m
|
|||
|
CONFIG_IPV6_SUBTREES=y
|
|||
|
CONFIG_IPV6_IPV6_TUNNEL=m
|
|||
|
CONFIG_IPV6_MOBILITY=m
|
|||
|
CONFIG_IPV6_MOBILITY_MN=m
|
|||
|
CONFIG_IPV6_MOBILITY_HA=m
|
|||
|
|
|||
|
|
|||
|
Since MIPL is still a work-in-progress you might want to enable:
|
|||
|
CONFIG_IPV6_MOBILITY_DEBUG=y
|
|||
|
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
To be sure you have all the correct options, you can run
|
|||
|
chkconf_kernel.sh, which is a small shell script included in the MIPL
|
|||
|
tarball.
|
|||
|
|
|||
|
5. Next you should compile and install your kernel.
|
|||
|
|
|||
|
Hint: To easily distinguish this kernel from other kernels, you can
|
|||
|
change the "EXTRAVERSION" variable in the /usr/src/linux/Makefile to for
|
|||
|
example "-MIPv6-1".
|
|||
|
|
|||
|
|
|||
|
Read the Linux Kernel HOWTO for detailed instruction on how to patch, compile
|
|||
|
and install your new kernel.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
3.2. Userspace tools
|
|||
|
|
|||
|
The userspace tool mipdiag, config files and init scripts must be installed
|
|||
|
for the module to work correctly:
|
|||
|
# cd /usr/local/src/mipv6-1.0-v2.4.22
|
|||
|
# ./configure
|
|||
|
# make && make install
|
|||
|
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
3.3. MIPv6 device node
|
|||
|
|
|||
|
The MIPv6 module also needs a new device node entry. Issue the command:
|
|||
|
# mknod /dev/mipv6_dev c 0xf9 0
|
|||
|
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
3.4. Automatic startup
|
|||
|
|
|||
|
1. Red Hat:
|
|||
|
|
|||
|
All init scripts are located in /etc/init.d/, which are sym-linked to the
|
|||
|
correct runlevel (/etc/rcX.d/). You can issue the command:
|
|||
|
# chkconfig --add mobile-ip6
|
|||
|
|
|||
|
|
|||
|
to enable MIPv6 at startup, or
|
|||
|
# chkconfig --del mobile-ip6
|
|||
|
|
|||
|
|
|||
|
to remove MIPv6 from startup.
|
|||
|
|
|||
|
2. Debian:
|
|||
|
|
|||
|
If you are so lucky to be running Debian, you can issue the command:
|
|||
|
# update-rc.d -n mobile-ip6 start 75 3 4 5 . stop 05 1 2 6 .
|
|||
|
|
|||
|
|
|||
|
to set up all the necessary links.
|
|||
|
|
|||
|
3. Slackware:
|
|||
|
|
|||
|
Slackware users have all their startup/runlevel scripts in /etc/rc.d.
|
|||
|
Since 'configure' doesn't check for "/etc/rc.d", you can add INIT_SLACK="
|
|||
|
/etc/rc.d", and then INIT_SLACK to INITDIRS in 'configure' (search for
|
|||
|
INITDIR in configure). Since you are running Slackware, you probably know
|
|||
|
this already. The following command should then do the trick:
|
|||
|
# echo '/etc/rc.d/mobile-ip6 start' >> /etc/rc.d/rc.local
|
|||
|
|
|||
|
|
|||
|
If you don't hack the Makefile, the mobile-ip6 script is installed at '/'
|
|||
|
(you may then move it to /etc/rc.d/).
|
|||
|
|
|||
|
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
4. Test bed
|
|||
|
|
|||
|
Now you should have a working MIPL patched kernel, installed userlevel tools
|
|||
|
and enabled automatic startup at boot. If anything went wrong, go through the
|
|||
|
above sections carefully.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
4.1. Testcase
|
|||
|
|
|||
|
The addresses we are using in our test-bed are site-local. You may as well
|
|||
|
use global addresses, but do note that link local addresses won't work! Our
|
|||
|
test-bed consist of four nodes; see figure "Mobile IPv6 testbed".
|
|||
|
|
|||
|
1. HA - Home Agent: The HA is located at the home network with address fec0:
|
|||
|
106:2700::2, with one wireless interface.
|
|||
|
|
|||
|
2. MN - Mobile Node: When MN is on the "home network", it has address fec0:
|
|||
|
106:2700::4. When MN travels to another network, it generates a new
|
|||
|
"care-of" address.
|
|||
|
|
|||
|
3. R - Router: This is the router from the home network to the internet. It
|
|||
|
has one wireless interface with address fec0:106:2700::1 and a wired
|
|||
|
interface with address fec0:106:2300::2.
|
|||
|
|
|||
|
4. AR - Access Router: The link between AR and R is our "internet" - but in
|
|||
|
this testcase only a cross-cable (can be any network). The AR has two
|
|||
|
interfaces; the wired interface to R has address fec0:106:2300::1, the
|
|||
|
wireless has address fec0:106:1100::1.
|
|||
|
|
|||
|
|
|||
|
[mipv6-testbed]
|
|||
|
|
|||
|
Mobile IPv6 testbed
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
4.2. Step-by-step configuration
|
|||
|
|
|||
|
4.2.1. Setting up a fully functional IPv6 network
|
|||
|
|
|||
|
Before we can start testing mobile IP, we need a fully functional IPv6
|
|||
|
network. All the nodes should be able to ping each other. This is a crucial
|
|||
|
part. If, for example, AR is not able to ping HA, then there will be no
|
|||
|
binding update.
|
|||
|
|
|||
|
I will give a brief instruction to get our network up and running using IPv6.
|
|||
|
For more info on setting up an IPv6 network, you can read Peter Bieringer's
|
|||
|
excellent Linux IPv6 HOWTO.
|
|||
|
|
|||
|
I've turned off encryption for simplicity - NOTE that you should ALWAYS use
|
|||
|
encryption when dealing with wireless networks!
|
|||
|
|
|||
|
Also note that the different wireless networks have different ESSIDs!
|
|||
|
|
|||
|
1. MN: The Mobile Node has one wireless interface. Forwarding should be
|
|||
|
turned off, but should accept autoconf and ra's:
|
|||
|
# iwconfig eth0 mode ad-hoc essid homenet enc off
|
|||
|
# ifconfig eth0 inet6 add fec0:106:2700::4/64
|
|||
|
# echo "0" > /proc/sys/net/ipv6/conf/eth0/forwarding
|
|||
|
# echo "1" > /proc/sys/net/ipv6/conf/eth0/autoconf
|
|||
|
# echo "1" > /proc/sys/net/ipv6/conf/eth0/accept_ra
|
|||
|
# echo "1" > /proc/sys/net/ipv6/conf/eth0/accept_redirects
|
|||
|
# /etc/init.d/mobile-ip6 start
|
|||
|
|
|||
|
|
|||
|
2. HA: The Home Agent has one wireless interface. It should have forwarding
|
|||
|
turned on because it uses normal routing to deliver packets captured from
|
|||
|
a physical interface to the virtual tunnel interface. Note: You must add
|
|||
|
a default route or else HA will have problem contacting the MN on visited
|
|||
|
LAN's. One possible solution is to use HA as the default router of the
|
|||
|
home network.
|
|||
|
# iwconfig eth0 mode ad-hoc essid homenet enc off
|
|||
|
# ifconfig eth0 inet6 add fec0:106:2700::2/64
|
|||
|
# echo "1" > /proc/sys/net/ipv6/conf/eth0/forwarding
|
|||
|
# echo "0" > /proc/sys/net/ipv6/conf/eth0/autoconf
|
|||
|
# echo "0" > /proc/sys/net/ipv6/conf/eth0/accept_ra
|
|||
|
# echo "0" > /proc/sys/net/ipv6/conf/eth0/accept_redirects
|
|||
|
# ip route add ::/0 via fec0:106:2700::1
|
|||
|
# /etc/init.d/mobile-ip6 start
|
|||
|
|
|||
|
|
|||
|
3. R: The (home) Router has two interfaces; one wireless and one line. The
|
|||
|
Router must have forwarding turned on.
|
|||
|
# ifconfig eth0 inet6 add fec0:106:2300::2/64
|
|||
|
# iwconfig eth1 mode ad-hoc essid homenet enc off
|
|||
|
# ifconfig eth1 inet6 add fec0:106:2700::1/64
|
|||
|
# echo "1" > /proc/sys/net/ipv6/conf/all/forwarding
|
|||
|
# echo "0" > /proc/sys/net/ipv6/conf/all/autoconf
|
|||
|
# echo "0" > /proc/sys/net/ipv6/conf/all/accept_ra
|
|||
|
# echo "0" > /proc/sys/net/ipv6/conf/all/accept_redirects
|
|||
|
# ip route add fec0:106:1100::/64 via fec0:106:2300::1
|
|||
|
|
|||
|
|
|||
|
4. AR: The Access Router (on a foreign network) also has two interfaces; one
|
|||
|
wireless and one line. Forwarding must be turned on.
|
|||
|
# ifconfig eth0 inet6 add fec0:106:2300::1/64
|
|||
|
# iwconfig eth1 mode ad-hoc essid visitnet enc off
|
|||
|
# ifconfig eth1 inet6 add fec0:106:1100::1/64
|
|||
|
# echo "1" > /proc/sys/net/ipv6/conf/all/forwarding
|
|||
|
# echo "0" > /proc/sys/net/ipv6/conf/all/autoconf
|
|||
|
# echo "0" > /proc/sys/net/ipv6/conf/all/accept_ra
|
|||
|
# echo "0" > /proc/sys/net/ipv6/conf/all/accept_redirects
|
|||
|
# ip route add fec0:106:2700::/64 via fec0:106:2300::2
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Instead of modifying proc variables, you can use sysctl.
|
|||
|
|
|||
|
Note: We are setting static routes on our test-bed. You should now be able to
|
|||
|
ping all the hosts from every host.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
4.2.2. Configuring Mobile IPv6
|
|||
|
|
|||
|
The last configuration is MIPv6 settings in network-mip6.conf. In Debian/
|
|||
|
Slackware the file is found under /etc/. (RedHat the file is found under /etc
|
|||
|
/sysconfig/.) The file should be pretty self-explanatory.
|
|||
|
|
|||
|
1. HA: The HA config file should contain these settings:
|
|||
|
# cat /etc/network-mip6.conf
|
|||
|
|
|||
|
# Home Agent configuration file
|
|||
|
FUNCTIONALITY=ha
|
|||
|
DEBUGLEVEL=1
|
|||
|
MIN_TUNNEL_NR=1
|
|||
|
MAX_TUNNEL_NR=5
|
|||
|
TUNNEL_SITELOCAL=yes
|
|||
|
|
|||
|
|
|||
|
2. MN: The MN config file should look like this:
|
|||
|
# cat /etc/network-mip6.conf
|
|||
|
|
|||
|
# Mobile Node configuration file
|
|||
|
FUNCTIONALITY=mn
|
|||
|
DEBUGLEVEL=1
|
|||
|
TUNNEL_SITELOCAL=yes
|
|||
|
MIN_TUNNEL_NR=1
|
|||
|
MAX_TUNNEL_NR=3
|
|||
|
HOMEDEV=mip6mnha1
|
|||
|
HOMEADDRESS=fec0:106:2700::4/64 # MN's home adress
|
|||
|
HOMEAGENT=fec0:106:2700::2/64 # HA's address
|
|||
|
|
|||
|
|
|||
|
3. Next, start mobile-IP:
|
|||
|
# /etc/init.d/mobile-ip6 start
|
|||
|
Starting Mobile IPv6: OK
|
|||
|
|
|||
|
|
|||
|
|
|||
|
You can verify that it started by doing a ifconfig on HA. If the tunnel(s)
|
|||
|
comes up, ip6tnl1, mobile-ip6 is started:
|
|||
|
# ifconfig
|
|||
|
eth1 Link encap:Ethernet HWaddr 00:02:2D:2D:DE:79
|
|||
|
inet6 addr: fec0:106:2700::2/64 Scope:Site
|
|||
|
inet6 addr: fe80::202:2dff:fe2d:de79/64 Scope:Link
|
|||
|
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
|
|||
|
RX packets:618 errors:6 dropped:6 overruns:0 frame:6
|
|||
|
TX packets:1485 errors:22 dropped:0 overruns:0 carrier:0
|
|||
|
collisions:0 txqueuelen:100
|
|||
|
RX bytes:87914 (85.8 KiB) TX bytes:252596 (246.6 KiB)
|
|||
|
Interrupt:3 Base address:0x100
|
|||
|
|
|||
|
ip6tnl1 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 (1)
|
|||
|
UP POINTOPOINT RUNNING NOARP MTU:1460 Metric:1
|
|||
|
RX packets:6 errors:0 dropped:0 overruns:0 frame:0
|
|||
|
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
|
|||
|
collisions:0 txqueuelen:0
|
|||
|
RX bytes:576 (576.0 b) TX bytes:624 (624.0 b)
|
|||
|
|
|||
|
ip6tnl2 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 (2)
|
|||
|
UP RUNNING NOARP MTU:1460 Metric:1
|
|||
|
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
|
|||
|
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
|
|||
|
collisions:0 txqueuelen:0
|
|||
|
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
|
|||
|
|
|||
|
lo Link encap:Local Loopback
|
|||
|
inet addr:127.0.0.1 Mask:255.0.0.0
|
|||
|
inet6 addr: ::1/128 Scope:Host
|
|||
|
UP LOOPBACK RUNNING MTU:16436 Metric:1
|
|||
|
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
|
|||
|
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
|
|||
|
collisions:0 txqueuelen:0
|
|||
|
RX bytes:560 (560.0 b) TX bytes:560 (560.0 b)
|
|||
|
|
|||
|
|
|||
|
(1) The tunnel is up and ready for connections.
|
|||
|
(2) Another tunnel ready.
|
|||
|
|
|||
|
You will also see the mipv6 kernel modules are loaded (MN):
|
|||
|
# lsmod
|
|||
|
Module Size Used by Not tainted
|
|||
|
mip6_mn 59888 0 (unused)
|
|||
|
ipv6_tunnel 11448 1 [mip6_mn]
|
|||
|
mip6_base 40728 0 [mip6_mn]
|
|||
|
ipv6 179764 -1 [mip6_mn ipv6_tunnel mip6_base]
|
|||
|
...
|
|||
|
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
4.2.3. Configuring radvd on AR
|
|||
|
|
|||
|
When MN comes to a new network, it does a link-local address configuration,
|
|||
|
going to the next phase if that succeeds. I'll let [http://www.ietf.org/rfc/
|
|||
|
rfc2462.txt] [RFC2462] (IPv6 Stateless Address Autoconfiguration) describe
|
|||
|
the next phase:
|
|||
|
|
|||
|
"The next phase of autoconfiguration involves obtaining a Router
|
|||
|
Advertisement or determining that no routers are present. If routers are
|
|||
|
present, they will send Router Advertisements that specify what sort of
|
|||
|
autoconfiguration a host should do. If no routers are present, stateful
|
|||
|
autoconfiguration should be invoked."
|
|||
|
|
|||
|
"Routers send Router Advertisements periodically, but the delay between
|
|||
|
successive advertisements will generally be longer than a host performing
|
|||
|
autoconfiguration will want to wait. To obtain an advertisement quickly, a
|
|||
|
host sends one or more Router Solicitations to the all-routers multicast
|
|||
|
group." --- page 8
|
|||
|
|
|||
|
This is where we use [http://v6web.litech.org/radvd/] RADVD.
|
|||
|
|
|||
|
Read [http://www.ietf.org/rfc/rfc2462.txt] [RFC2462] more more details
|
|||
|
concerning IPv6 Stateless Address Autoconfiguration.
|
|||
|
|
|||
|
We'll configure RADVD on AR's wireless interface. The radvd.conf file should
|
|||
|
contain this:
|
|||
|
# cat /etc/radvd.conf
|
|||
|
interface eth1
|
|||
|
{
|
|||
|
AdvSendAdvert on;
|
|||
|
AdvIntervalOpt on;
|
|||
|
|
|||
|
MinRtrAdvInterval 3;
|
|||
|
MaxRtrAdvInterval 10;
|
|||
|
AdvHomeAgentFlag off;
|
|||
|
|
|||
|
prefix fec0:106:1100::/64
|
|||
|
{
|
|||
|
AdvOnLink on;
|
|||
|
AdvAutonomous on;
|
|||
|
AdvRouterAddr on;
|
|||
|
};
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
We then start it:
|
|||
|
# /etc/init.d/radvd start
|
|||
|
|
|||
|
|
|||
|
You should now be able to use radvdump to see that the radvd messages really
|
|||
|
are being sent periodically:
|
|||
|
# radvdump
|
|||
|
Router advertisement from fe80::202:2dff:fe54:d1b2 (hoplimit 255)
|
|||
|
Received by interface eth1
|
|||
|
# Note: {Min,Max}RtrAdvInterval cannot be obtained with radvdump
|
|||
|
AdvCurHopLimit: 64
|
|||
|
AdvManagedFlag: off
|
|||
|
AdvOtherConfigFlag: off
|
|||
|
AdvHomeAgentFlag: off
|
|||
|
AdvReachableTime: 0
|
|||
|
AdvRetransTimer: 0
|
|||
|
Prefix fec0:106:1100::/64
|
|||
|
AdvValidLifetime: 2592000
|
|||
|
AdvPreferredLifetime: 604800
|
|||
|
AdvOnLink: on
|
|||
|
AdvAutonomous: on
|
|||
|
AdvRouterAddr: off
|
|||
|
AdvSourceLLAddress: 00 02 2D 54 D1 B2
|
|||
|
|
|||
|
|
|||
|
Note! When using radvd on HA and enabling "autoconf" (in proc), you will also
|
|||
|
get an autogenerated IPv6 address on MN (which is superfluous) in addition to
|
|||
|
your static address:
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
4.2.4. Configuring radvd on HA
|
|||
|
|
|||
|
To enable the MN to know when it's home, HA should also be sending out RAs.
|
|||
|
We should therefore enable RADVD on the HA as well. The /etc/radvd.conf file
|
|||
|
should contain:
|
|||
|
# cat /etc/radvd.conf
|
|||
|
interface eth0
|
|||
|
{
|
|||
|
AdvSendAdvert on;
|
|||
|
MaxRtrAdvInterval 3;
|
|||
|
MinRtrAdvInterval 1;
|
|||
|
AdvIntervalOpt off;
|
|||
|
AdvHomeAgentFlag on;
|
|||
|
HomeAgentLifetime 10000;
|
|||
|
HomeAgentPreference 20;
|
|||
|
AdvHomeAgentInfo on;
|
|||
|
prefix fec0:106:2700::2/64
|
|||
|
{
|
|||
|
AdvRouterAddr on;
|
|||
|
AdvOnLink on;
|
|||
|
AdvAutonomous on;
|
|||
|
AdvPreferredLifetime 10000;
|
|||
|
AdvValidLifetime 12000;
|
|||
|
};
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
Also do a radvdump on HA to check whether radvd messages are beeing sent:
|
|||
|
# radvdump
|
|||
|
Router advertisement from fe80::202:2dff:fe54:d11e (hoplimit 255)
|
|||
|
Received by interface eth0
|
|||
|
# Note: {Min,Max}RtrAdvInterval cannot be obtained with radvdump
|
|||
|
AdvCurHopLimit: 64
|
|||
|
AdvManagedFlag: off
|
|||
|
AdvOtherConfigFlag: off
|
|||
|
AdvHomeAgentFlag: on
|
|||
|
AdvReachableTime: 0
|
|||
|
AdvRetransTimer: 0
|
|||
|
Prefix fec0:106:2700::2/64
|
|||
|
AdvValidLifetime: 12000
|
|||
|
AdvPreferredLifetime: 10000
|
|||
|
AdvOnLink: on
|
|||
|
AdvAutonomous: on
|
|||
|
AdvRouterAddr: on
|
|||
|
AdvSourceLLAddress: 00 02 2D 54 D1 1E
|
|||
|
AdvHomeAgentInfo:
|
|||
|
HomeAgentPreference: 20
|
|||
|
HomeAgentLifetime: 1000
|
|||
|
|
|||
|
# ifconfig eth0
|
|||
|
eth0 Link encap:Ethernet HWaddr 00:90:7D:F3:03:1A
|
|||
|
inet6 addr: fec0:106:2700:0:290:7dff:fef3:31a/64 Scope:Site (1)
|
|||
|
inet6 addr: fec0:106:2700::4/64 Scope:Site (2)
|
|||
|
inet6 addr: fe80::290:7dff:fef3:31a/64 Scope:Link (3)
|
|||
|
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
|
|||
|
RX packets:513 errors:89 dropped:89 overruns:0 frame:85
|
|||
|
TX packets:140 errors:41 dropped:0 overruns:0 carrier:0
|
|||
|
collisions:0 txqueuelen:100
|
|||
|
RX bytes:56084 (54.7 Kb) TX bytes:19212 (18.7 Kb)
|
|||
|
Interrupt:3 Base address:0x100
|
|||
|
|
|||
|
|
|||
|
(1) A new (superfluous) autogenerated address. Since we are setting autoconf
|
|||
|
in /proc/sys/net/ipv6/conf/eth0/autoconf to 1, MN will generate a new
|
|||
|
adress combined with HA's prefix and it's own MAC address. I do not think
|
|||
|
is it possible to avoid having this address generated.
|
|||
|
(2) Our original static IPv6 address
|
|||
|
(3) The link-local address generated at boot.
|
|||
|
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
5. Doing some tests
|
|||
|
|
|||
|
5.1. Pre-test
|
|||
|
|
|||
|
Do every configuration as shown above; it's especially important to have a
|
|||
|
different ESSID on the home net and visited network.
|
|||
|
|
|||
|
When you start mobile-IPv6 on MN, you will see multicasting router
|
|||
|
solicitations messages:
|
|||
|
# tcpdump -i eth0 -vv ip6 or proto ipv6
|
|||
|
|
|||
|
...
|
|||
|
13:32:54.681763 fe80::202:a5ff:fe6f:a08a > ff02::2: icmp6: router solicitation \
|
|||
|
(src lladdr: 0:2:a5:6f:a0:8a) (len 16, hlim 255)
|
|||
|
|
|||
|
13:32:55.681763 fe80::202:a5ff:fe6f:a08a > ff02::2: icmp6: router solicitation \
|
|||
|
(src lladdr: 0:2:a5:6f:a0:8a) (len 16, hlim 255)
|
|||
|
|
|||
|
13:32:57.681765 fe80::202:a5ff:fe6f:a08a > ff02::2: icmp6: router solicitation \
|
|||
|
(src lladdr: 0:2:a5:6f:a0:8a) (len 16, hlim 255)
|
|||
|
...
|
|||
|
|
|||
|
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
5.2. Movement detection
|
|||
|
|
|||
|
Generic movement detection uses Neighbor Unreachability Detection to detect
|
|||
|
when the default router is no longer bi-directionally reachable, in which
|
|||
|
case the mobile node must discover a new default router (usually on a new
|
|||
|
link).
|
|||
|
|
|||
|
To easily see whats going on, you should have one xterm window for each of
|
|||
|
these commands:
|
|||
|
# watch ifconfig eth0
|
|||
|
# watch route -A inet6
|
|||
|
# tcpdump -i eth0 -vv ip6 or proto ipv6
|
|||
|
|
|||
|
|
|||
|
To "travel" to another net, you can issue the command on MN:
|
|||
|
# iwconfig eth1 essid visitnet
|
|||
|
|
|||
|
|
|||
|
The MN is then on the other wireless network, and since it is sending out
|
|||
|
"router solicitation" (multicast), our AR will respond with it's prefix. MN
|
|||
|
will then configure itself with at new IPv6 address with the received prefix
|
|||
|
and it's own MAC address. If you type ifconfig eth0 you will see the new IPv6
|
|||
|
address:
|
|||
|
# ifconfig eth0
|
|||
|
eth0 Link encap:Ethernet HWaddr 00:90:7D:F3:03:1A
|
|||
|
inet6 addr: fec0:106:1100:0:290:7dff:fef3:31a/64 Scope:Site (1)
|
|||
|
inet6 addr: fec0:106:2700:0:290:7dff:fef3:31a/64 Scope:Site (2)
|
|||
|
inet6 addr: fec0:106:2700::4/64 Scope:Site (3)
|
|||
|
inet6 addr: fe80::290:7dff:fef3:31a/64 Scope:Link (4)
|
|||
|
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
|
|||
|
RX packets:854 errors:154 dropped:154 overruns:0 frame:148
|
|||
|
TX packets:293 errors:58 dropped:0 overruns:0 carrier:0
|
|||
|
collisions:0 txqueuelen:100
|
|||
|
RX bytes:96536 (94.2 Kb) TX bytes:44664 (43.6 Kb)
|
|||
|
Interrupt:3 Base address:0x100
|
|||
|
|
|||
|
|
|||
|
|
|||
|
(1) The new "foreign" address, generated by combining AR's prefix and
|
|||
|
MAC-address
|
|||
|
(2) The superfluous home network address (because of HA radvd messages and MN
|
|||
|
autoconf set to "true").
|
|||
|
(3) The "original" (home) address
|
|||
|
(4) The link-local address generated at boot
|
|||
|
|
|||
|
Almost at the same time, the MN will perform a binding update to HA. In your
|
|||
|
tcpdump window, you will see several packets destined to HA. To verify that
|
|||
|
the binding update has been sent and acknowledged from MN:
|
|||
|
# mipdiag -s
|
|||
|
Mobile IPv6 Statistics
|
|||
|
NEncapsulations : 0
|
|||
|
NDecapsulations : 0
|
|||
|
NBindUpdatesRcvd : 0
|
|||
|
NBindAcksRcvd : 1 (1)
|
|||
|
NBindNAcksRcvd : 0
|
|||
|
NBindRqsRcvd : 0
|
|||
|
NBindUpdatesSent : 1 (2)
|
|||
|
NBindAcksSent : 0
|
|||
|
NBindNAcksSent : 0
|
|||
|
NBindRqsSent : 0
|
|||
|
NBindUpdatesDropAuth : 0
|
|||
|
NBindUpdatesDropInvalid : 0
|
|||
|
NBindUpdatesDropMisc : 0
|
|||
|
NBindAcksDropAuth : 0
|
|||
|
NBindAcksDropInvalid : 0
|
|||
|
NBindAcksDropMisc : 0
|
|||
|
NBindRqsDropAuth : 0
|
|||
|
NBindRqsDropInvalid : 0
|
|||
|
NBindRqsDropMisc : 0
|
|||
|
|
|||
|
|
|||
|
(1) One binding ACK received.
|
|||
|
(2) One binding UPDATE sent.
|
|||
|
|
|||
|
You can also verify the binding with the following command (on MN):
|
|||
|
# mipdiag -l
|
|||
|
Mobile IPv6 Binding update list
|
|||
|
Recipient CN: fec0:106:2700::2
|
|||
|
BINDING home address: fec0:106:2700::4 care-of address: fec0:106:1100:0:290:7dff:fef3:31a
|
|||
|
expires: 936 sequence: 0 state: 1
|
|||
|
delay: 3 max delay 32 callback time: 736
|
|||
|
|
|||
|
|
|||
|
You can also verify it on HA with the statistics option (-s) and with the
|
|||
|
"binding cache" (-c) option:
|
|||
|
# mipdiag -c
|
|||
|
Mobile IPv6 Binding cache
|
|||
|
Home Address Care-of Address Lifetime Type
|
|||
|
fec0:106:2700::4 fec0:106:1100:0:290:7dff:fef3:31a 971 2
|
|||
|
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
5.3. ping6
|
|||
|
|
|||
|
From the MN, you can try to ping AR's eth1 (fec0:106:1100::1):
|
|||
|
# ping6 fec0:106:1100::1
|
|||
|
PING fec0:106:1100::1(fec0:106:1100::1) from fec0:106:2700::4 : 56 data bytes
|
|||
|
64 bytes from fec0:106:1100::1: icmp_seq=1 ttl=62 time=8.01 ms
|
|||
|
64 bytes from fec0:106:1100::1: icmp_seq=2 ttl=62 time=8.02 ms
|
|||
|
...
|
|||
|
|
|||
|
|
|||
|
By using tcpdump, you can see how the packets travel:
|
|||
|
12:13:51.789688 fec0:106:1100:0:202:a5ff:fe6f:a08a > fec0:106:2700::2: \ (1)
|
|||
|
fec0:106:2700::4 > fec0:106:1100::1: icmp6: echo request \ (2)
|
|||
|
(len 64, hlim 64) (len 104, hlim 255)
|
|||
|
|
|||
|
12:13:51.797675 fec0:106:2700::2 > fec0:106:1100:0:202:a5ff:fe6f:a08a: \ (3)
|
|||
|
fec0:106:1100::1 > fec0:106:2700::4: icmp6: echo reply \
|
|||
|
(len 64, hlim 62) (len 104, hlim 253)
|
|||
|
|
|||
|
|
|||
|
(1) The packet first goes from MN to the HA using MN new IPv6 address.
|
|||
|
(2) Then from HA to AR.
|
|||
|
(3) The AR then responds to HA and tunnels the packets to MN.
|
|||
|
|
|||
|
You can now see the statistics have been updated (on MN):
|
|||
|
# mipdiag -s
|
|||
|
Mobile IPv6 Statistics
|
|||
|
NEncapsulations : 56
|
|||
|
NDecapsulations : 25
|
|||
|
...
|
|||
|
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
5.4. Kernel IP routing table
|
|||
|
|
|||
|
One interesting thing MIPv6 does is change the default route to a tunnel. The
|
|||
|
new default route becomes:
|
|||
|
# route -A inet6
|
|||
|
Kernel IPv6 routing table
|
|||
|
Destination Next Hop Flags Metric Ref Use Iface
|
|||
|
::/0 :: UD 64 0 0 ip6tnl1
|
|||
|
....
|
|||
|
|
|||
|
|
|||
|
If it doesn't add a default route, you may add it manually:
|
|||
|
# ip route ::/0 via dev ip6tnl
|
|||
|
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
5.5. Travelling through several foregin LAN's
|
|||
|
|
|||
|
To travel to several visited networks, is no different than travel to one
|
|||
|
network. The only thing you must have in mind is that you will generate a new
|
|||
|
address for each visited network.
|
|||
|
|
|||
|
[lanvisits]
|
|||
|
|
|||
|
MN travelling through severeal different LANs.
|
|||
|
|
|||
|
1. MN first visits 'visitnet', as we have been through above.
|
|||
|
|
|||
|
2. MN is then travelling from 'visitnet' to 'visitnet2'.
|
|||
|
|
|||
|
3. When at 'visitnet2', MN generates a new IPv6 address and do a new binding
|
|||
|
update to HA.
|
|||
|
|
|||
|
4. MN then travels back home. (Se next section.)
|
|||
|
|
|||
|
|
|||
|
The AR at "visitnet2", is configured exactly as the other AR (at "visitnet"),
|
|||
|
except using address fec0:106:1000::/64 instead of fec0:106:1100::/64.
|
|||
|
|
|||
|
To make the mobile node travel from 'visitnet' to 'visitnet2', issue the
|
|||
|
command (on MN):
|
|||
|
# iwconfig eth0 essid visitnet2
|
|||
|
|
|||
|
|
|||
|
You will then see the MN configures itself to the new network:
|
|||
|
# ifconfig eth0
|
|||
|
eth1 Link encap:Ethernet HWaddr 00:90:7D:F3:03:1A
|
|||
|
inet6 addr: fec0:106:1000:0:290:7dff:fef3:31a/64 Scope:Site (1)
|
|||
|
inet6 addr: fec0:106:1100:0:290:7dff:fef3:31a/64 Scope:Site
|
|||
|
inet6 addr: fec0:106:2700:0:290:7dff:fef3:31a/64 Scope:Site
|
|||
|
inet6 addr: fec0:106:2700::4/64 Scope:Site
|
|||
|
inet6 addr: fe80::290:7dff:fef3:31a/64 Scope:Link
|
|||
|
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
|
|||
|
RX packets:1073 errors:212 dropped:212 overruns:0 frame:204
|
|||
|
TX packets:371 errors:72 dropped:0 overruns:0 carrier:0
|
|||
|
collisions:0 txqueuelen:100
|
|||
|
RX bytes:120340 (117.5 Kb) TX bytes:56912 (55.5 Kb)
|
|||
|
Interrupt:3 Base address:0x100
|
|||
|
|
|||
|
|
|||
|
(1) The new autoconfigured address at 'visitnet2'.
|
|||
|
|
|||
|
Note! You may have to restart mobile-ipv6 on MN when coming to a new network!
|
|||
|
# /etc/init.d/mobile-ip6 restart
|
|||
|
Stopping Mobile IPv6: OK
|
|||
|
Starting Mobile IPv6: OK
|
|||
|
|
|||
|
|
|||
|
The MN will then perform a new binding update to HA. Notice the new "care-of
|
|||
|
address":
|
|||
|
# mipdiag -l
|
|||
|
Mobile IPv6 Binding update list
|
|||
|
Recipient CN: fec0:106:2700::2
|
|||
|
BINDING home address: fec0:106:2700::4 care-of address: fec0:106:1000:0:290:7dff:fef3:31a
|
|||
|
expires: 973 sequence: 14 state: 1
|
|||
|
delay: 3 max delay 32 callback time: 773
|
|||
|
|
|||
|
|
|||
|
You can also see the "binding cache" on HA has been updated:
|
|||
|
# mipdiag -c
|
|||
|
Mobile IPv6 Binding cache
|
|||
|
Home Address Care-of Address Lifetime Type
|
|||
|
fec0:106:2700::4 fec0:106:1000:0:290:7dff:fef3:31a 943 2
|
|||
|
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
5.6. Returning home
|
|||
|
|
|||
|
To make the MN return home, you can just issue the command:
|
|||
|
# iwconfig eth0 essid homenet
|
|||
|
|
|||
|
|
|||
|
The MN will know it is back home, since HA is sending out radvd messages with
|
|||
|
the HA-bit set (AdvHomeAgentFlag), see Section 4.2.4
|
|||
|
|
|||
|
You can see the MN "is back home", since the binding cache information at HA
|
|||
|
is flushed (empty):
|
|||
|
Mobile IPv6 Binding cache
|
|||
|
Home Address Care-of Address Lifetime Type
|
|||
|
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
5.7. Real life testing - smooth handover
|
|||
|
|
|||
|
To really get the feel on how mobile IP works, fire up GnomeMeeting (See the
|
|||
|
figure GnomeMeeting and start a netmeeting. Note! You must use the latest
|
|||
|
GnomeMeeting to get support for IPv6! Then do a "travel" and you can see an
|
|||
|
almost smooth handover.
|
|||
|
|
|||
|
[gnomemeeting1]
|
|||
|
|
|||
|
Using GnomeMeeting with IPv6 to test roaming between two wireless networks
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
6. FAQ
|
|||
|
|
|||
|
1. Q: Why do we have to create the /dev/mipv6_dev entry?
|
|||
|
|
|||
|
A: The dev file is mainly so that the userspace tool, mipdiag, can make
|
|||
|
modifications to the kernel parameters using ioctl calls through the
|
|||
|
device file. mknod creates the special device file with paramters
|
|||
|
recognizable by the mobile-ip6 module.
|
|||
|
|
|||
|
2. Q: Is there any support for kernel 2.6.x?
|
|||
|
|
|||
|
A: Here is the[http://www.mobile-ipv6.org/pipermail/mipl/2003-December/
|
|||
|
001871.html] answer from Henrik Petander on the MIPL mailinglist:
|
|||
|
|
|||
|
"Here is a short overview of the status of MIPL for 2.6 kernel series:"
|
|||
|
|
|||
|
"We have finished the kernel infrastructure for Mobile IPv6 in
|
|||
|
cooperation with the USAGI project. The infrastructure does route
|
|||
|
optimization, tunneling and policy routing."
|
|||
|
|
|||
|
"We are now working on the userspace daemon which handles the MIPv6
|
|||
|
signaling and controls the operation of the kernel part. The userspace
|
|||
|
part is also progressing nicely. However, the protocol logic is still
|
|||
|
missing, so there isn't really anything for users to test yet. We should
|
|||
|
have a well working and tested prototype ready and by the end of March."
|
|||
|
|
|||
|
3. Q: Does MIPL support IPSec?
|
|||
|
|
|||
|
A: There is no support IPSec on 2.4.x. MIPL for 2.6 series will have
|
|||
|
IPSec support from the start. You may use a third-party IPSec
|
|||
|
implementation.
|
|||
|
|
|||
|
4. Q: How can I control the type of routing used for communication between
|
|||
|
the MN and a CN (through HA tunnel or by direct communication using
|
|||
|
binding update/acks)?
|
|||
|
|
|||
|
A: You can control this through:
|
|||
|
|
|||
|
/proc/sys/conf/net/ipv6/mobility/accept_return_routability
|
|||
|
|
|||
|
If you do not want to use return routability and route optimization, set
|
|||
|
it to 0 with:
|
|||
|
|
|||
|
# echo 0 > /proc/sys/..../accept_return_routability
|
|||
|
|
|||
|
Then MN will communicate with CNs only through the home tunnel.
|
|||
|
|
|||
|
5. Q: Can different wireless networks have different ESSIDs/WEP keys?
|
|||
|
|
|||
|
A: Yes, but you must change this upon arrival to the new network. MIPv6
|
|||
|
from MIPL can't do this automatically.
|
|||
|
|
|||
|
6. Q: If MN has travelled through several visited LAN, and then returning
|
|||
|
home; the interface still has all the autogenerated IPv6 addresses from
|
|||
|
all the visited networks! Is there any way to "flush/delete" these
|
|||
|
addresses?
|
|||
|
|
|||
|
A: No, I do not know of any automatic way these adresses can be removed,
|
|||
|
but you can delete them manually:
|
|||
|
|
|||
|
# ifconfig eth0 inet6 del <ipv6-address>
|
|||
|
|
|||
|
7. Q: Host B has two interfaces with two different subnets assigned. When I
|
|||
|
ping B from host A, it does not answer! Why not? Host A knows where host
|
|||
|
B (subnets) are!
|
|||
|
|
|||
|
A: The host B doesn't know where host A is (B doesn't know where A's net
|
|||
|
is), so you must add a route entry:
|
|||
|
|
|||
|
# ip route add fec0:106:2700::/64 via fec0:106:2300::1
|
|||
|
|
|||
|
or
|
|||
|
|
|||
|
# route -A inet6 add fec0:106:2700::/64 gw fec0:106:2300::1 dev eth0
|
|||
|
|
|||
|
8. Q: How do I set a default gateway in IPv6?
|
|||
|
|
|||
|
A: You do that using the traditional "route":
|
|||
|
|
|||
|
# route -A inet6 add default gw <ipv6-host>
|
|||
|
|
|||
|
or the newer "ip" command:
|
|||
|
|
|||
|
# ip route ::/0 via <ipv6-host>
|
|||
|
|
|||
|
9. Q: Why does the host send a multicast address rather than an anycast
|
|||
|
address, requesting for router solicitation?
|
|||
|
|
|||
|
A: Because the host wants an answer from every router, not from just any
|
|||
|
router. The idea is to be able to get all parameters and to choose the
|
|||
|
"best" default router.
|
|||
|
|
|||
|
10. Q: Why doesn't MN notice that it has moved?
|
|||
|
|
|||
|
A: It thinks that it's previous router is still reachable. This may
|
|||
|
result from very large lifetimes in router advertisements. Check the
|
|||
|
configuration of the program sending router advertisements in the router.
|
|||
|
If the program supports router advertisement intervals, you can use this
|
|||
|
to help MN in movement detection by setting the use of interval to on.
|
|||
|
See man radvd.conf for details.
|
|||
|
|
|||
|
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
7. Useful Resources
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1. Mobile IPv6 for Linux [http://www.mipl.mediapoli.com/] http://
|
|||
|
www.mipl.mediapoli.com/
|
|||
|
|
|||
|
2. Mobile IP Working Group (IETF) [http://www.ietf.org/html.charters/
|
|||
|
mobileip-charter.html] http://www.ietf.org/html.charters/
|
|||
|
mobileip-charter.html
|
|||
|
|
|||
|
3. Mobile IPv6 draft [http://www.ietf.org/internet-drafts/
|
|||
|
draft-ietf-mobileip-ipv6-24.txt] http://www.ietf.org/internet-drafts/
|
|||
|
draft-ietf-mobileip-ipv6-24.txt
|
|||
|
|
|||
|
4. IPv6 Working Group (IETF) [http://www.ietf.org/html.charters/
|
|||
|
ipv6-charter.html] http://www.ietf.org/html.charters/ipv6-charter.html
|
|||
|
|
|||
|
5. RFC2460 Internet Protocol, Version 6 (IPv6) Specification [http://
|
|||
|
www.ietf.org/rfc/rfc2460.txt] http://www.ietf.org/rfc/rfc2460.txt
|
|||
|
|
|||
|
6. RFC2461 Neighbor Discovery for IP Version 6 (IPv6) [http://www.ietf.org/
|
|||
|
rfc/rfc2461.txt] http://www.ietf.org/rfc/rfc2461.txt
|
|||
|
|
|||
|
7. RFC2462 IPv6 Stateless Address Autoconfiguration [http://www.ietf.org/rfc
|
|||
|
/rfc2462.txt] http://www.ietf.org/rfc/rfc2462.txt
|
|||
|
|
|||
|
8. Peter Bieringer's Linux IPv6 HOWTO (en) [http://ldp.linux.no/HOWTO/
|
|||
|
Linux+IPv6-HOWTO/] http://ldp.linux.no/HOWTO/Linux+IPv6-HOWTO/
|
|||
|
|
|||
|
9. Current Status of IPv6 Support for Networking Applications [http://
|
|||
|
www.deepspace6.net/docs/ipv6_status_page_apps.html] http://
|
|||
|
www.deepspace6.net/docs/ipv6_status_page_apps.html
|
|||
|
|
|||
|
10. Linux Kernel HOWTO http://www.ibiblio.org/pub/Linux/docs/HOWTO/
|
|||
|
other-formats/html_single/Kernel-HOWTO.html
|
|||
|
|
|||
|
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
8. Copyright, acknowledgments and miscellaneous
|
|||
|
|
|||
|
8.1. Copyright and License
|
|||
|
|
|||
|
Copyright (c) 2003, 2004 Lars Strand.
|
|||
|
|
|||
|
Permission is granted to copy, distribute and/or modify this document under
|
|||
|
the terms of the GNU Free Documentation License, Version 1.2 or any later
|
|||
|
version published by the Free Software Foundation; with no Invariant
|
|||
|
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the
|
|||
|
license is included in the section entitled "GNU Free Documentation License".
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
8.2. How this document was produced
|
|||
|
|
|||
|
This document was originally written in LaTeX using Emacs. HTML version
|
|||
|
created with latex2html. Later it was converted to DocBook XML.
|
|||
|
|
|||
|
An up-to-date version of this document can be found at:
|
|||
|
|
|||
|
HTML: [http://www.tldp.org/HOWTO/Mobile-IPv6-HOWTO/] http://www.tldp.org/
|
|||
|
HOWTO/Mobile-IPv6-HOWTO/
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
8.3. Feedback
|
|||
|
|
|||
|
Suggestions, corrections, additions wanted. Contributors wanted and
|
|||
|
acknowledged. Flames not wanted.
|
|||
|
|
|||
|
I can always be reached at <lars at unik no>
|
|||
|
|
|||
|
Homepage: [http://www.gnist.org/~lars] http://www.gnist.org/~lars
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
8.4. Acknowledgments
|
|||
|
|
|||
|
This document was produced as a part of Interoperable Networks for Secure
|
|||
|
Communications [http://insc.nodeca.mil.no/] (INSC task 6)
|
|||
|
|
|||
|
Thanks to Andreas Hafslund (andreha [at] unik.no) for initial support. Also
|
|||
|
thanks to UniK (University Graduate Center) [http://www.unik.no] http://
|
|||
|
www.unik.no and FFI (Norwegian Defence Research Establishment) [http://
|
|||
|
www.ffi.mil.no] http://www.ffi.mil.no for hardware support.
|
|||
|
|
|||
|
Thanks also to the other HOWTO authors whose works I have referenced:
|
|||
|
|
|||
|
Linux IPv6 HOWTO (en) by Peter Bieringer
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
A. GNU Free Documentation License
|
|||
|
|
|||
|
Version 1.2, November 2002
|
|||
|
|
|||
|
|
|||
|
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. 59 Temple
|
|||
|
Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy
|
|||
|
and distribute verbatim copies of this license document, but changing it
|
|||
|
is not allowed.
|
|||
|
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
A.1. PREAMBLE
|
|||
|
|
|||
|
The purpose of this License is to make a manual, textbook, or other
|
|||
|
functional and useful document "free" in the sense of freedom: to assure
|
|||
|
everyone the effective freedom to copy and redistribute it, with or without
|
|||
|
modifying it, either commercially or noncommercially. Secondarily, this
|
|||
|
License preserves for the author and publisher a way to get credit for their
|
|||
|
work, while not being considered responsible for modifications made by
|
|||
|
others.
|
|||
|
|
|||
|
This License is a kind of "copyleft", which means that derivative works of
|
|||
|
the document must themselves be free in the same sense. It complements the
|
|||
|
GNU General Public License, which is a copyleft license designed for free
|
|||
|
software.
|
|||
|
|
|||
|
We have designed this License in order to use it for manuals for free
|
|||
|
software, because free software needs free documentation: a free program
|
|||
|
should come with manuals providing the same freedoms that the software does.
|
|||
|
But this License is not limited to software manuals; it can be used for any
|
|||
|
textual work, regardless of subject matter or whether it is published as a
|
|||
|
printed book. We recommend this License principally for works whose purpose
|
|||
|
is instruction or reference.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
A.2. APPLICABILITY AND DEFINITIONS
|
|||
|
|
|||
|
This License applies to any manual or other work, in any medium, that
|
|||
|
contains a notice placed by the copyright holder saying it can be distributed
|
|||
|
under the terms of this License. Such a notice grants a world-wide,
|
|||
|
royalty-free license, unlimited in duration, to use that work under the
|
|||
|
conditions stated herein. The "Document", below, refers to any such manual or
|
|||
|
work. Any member of the public is a licensee, and is addressed as "you". You
|
|||
|
accept the license if you copy, modify or distribute the work in a way
|
|||
|
requiring permission under copyright law.
|
|||
|
|
|||
|
A "Modified Version" of the Document means any work containing the Document
|
|||
|
or a portion of it, either copied verbatim, or with modifications and/or
|
|||
|
translated into another language.
|
|||
|
|
|||
|
A "Secondary Section" is a named appendix or a front-matter section of the
|
|||
|
Document that deals exclusively with the relationship of the publishers or
|
|||
|
authors of the Document to the Document's overall subject (or to related
|
|||
|
matters) and contains nothing that could fall directly within that overall
|
|||
|
subject. (Thus, if the Document is in part a textbook of mathematics, a
|
|||
|
Secondary Section may not explain any mathematics.) The relationship could be
|
|||
|
a matter of historical connection with the subject or with related matters,
|
|||
|
or of legal, commercial, philosophical, ethical or political position
|
|||
|
regarding them.
|
|||
|
|
|||
|
The "Invariant Sections" are certain Secondary Sections whose titles are
|
|||
|
designated, as being those of Invariant Sections, in the notice that says
|
|||
|
that the Document is released under this License. If a section does not fit
|
|||
|
the above definition of Secondary then it is not allowed to be designated as
|
|||
|
Invariant. The Document may contain zero Invariant Sections. If the Document
|
|||
|
does not identify any Invariant Sections then there are none.
|
|||
|
|
|||
|
The "Cover Texts" are certain short passages of text that are listed, as
|
|||
|
Front-Cover Texts or Back-Cover Texts, in the notice that says that the
|
|||
|
Document is released under this License. A Front-Cover Text may be at most 5
|
|||
|
words, and a Back-Cover Text may be at most 25 words.
|
|||
|
|
|||
|
A "Transparent" copy of the Document means a machine-readable copy,
|
|||
|
represented in a format whose specification is available to the general
|
|||
|
public, that is suitable for revising the document straightforwardly with
|
|||
|
generic text editors or (for images composed of pixels) generic paint
|
|||
|
programs or (for drawings) some widely available drawing editor, and that is
|
|||
|
suitable for input to text formatters or for automatic translation to a
|
|||
|
variety of formats suitable for input to text formatters. A copy made in an
|
|||
|
otherwise Transparent file format whose markup, or absence of markup, has
|
|||
|
been arranged to thwart or discourage subsequent modification by readers is
|
|||
|
not Transparent. An image format is not Transparent if used for any
|
|||
|
substantial amount of text. A copy that is not "Transparent" is called
|
|||
|
"Opaque".
|
|||
|
|
|||
|
Examples of suitable formats for Transparent copies include plain ASCII
|
|||
|
without markup, Texinfo input format, LaTeX input format, SGML or XML using a
|
|||
|
publicly available DTD, and standard-conforming simple HTML, PostScript or
|
|||
|
PDF designed for human modification. Examples of transparent image formats
|
|||
|
include PNG, XCF and JPG. Opaque formats include proprietary formats that can
|
|||
|
be read and edited only by proprietary word processors, SGML or XML for which
|
|||
|
the DTD and/or processing tools are not generally available, and the
|
|||
|
machine-generated HTML, PostScript or PDF produced by some word processors
|
|||
|
for output purposes only.
|
|||
|
|
|||
|
The "Title Page" means, for a printed book, the title page itself, plus such
|
|||
|
following pages as are needed to hold, legibly, the material this License
|
|||
|
requires to appear in the title page. For works in formats which do not have
|
|||
|
any title page as such, "Title Page" means the text near the most prominent
|
|||
|
appearance of the work's title, preceding the beginning of the body of the
|
|||
|
text.
|
|||
|
|
|||
|
A section "Entitled XYZ" means a named subunit of the Document whose title
|
|||
|
either is precisely XYZ or contains XYZ in parentheses following text that
|
|||
|
translates XYZ in another language. (Here XYZ stands for a specific section
|
|||
|
name mentioned below, such as "Acknowledgements", "Dedications",
|
|||
|
"Endorsements", or "History".) To "Preserve the Title" of such a section when
|
|||
|
you modify the Document means that it remains a section "Entitled XYZ"
|
|||
|
according to this definition.
|
|||
|
|
|||
|
The Document may include Warranty Disclaimers next to the notice which states
|
|||
|
that this License applies to the Document. These Warranty Disclaimers are
|
|||
|
considered to be included by reference in this License, but only as regards
|
|||
|
disclaiming warranties: any other implication that these Warranty Disclaimers
|
|||
|
may have is void and has no effect on the meaning of this License.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
A.3. VERBATIM COPYING
|
|||
|
|
|||
|
You may copy and distribute the Document in any medium, either commercially
|
|||
|
or noncommercially, provided that this License, the copyright notices, and
|
|||
|
the license notice saying this License applies to the Document are reproduced
|
|||
|
in all copies, and that you add no other conditions whatsoever to those of
|
|||
|
this License. You may not use technical measures to obstruct or control the
|
|||
|
reading or further copying of the copies you make or distribute. However, you
|
|||
|
may accept compensation in exchange for copies. If you distribute a large
|
|||
|
enough number of copies you must also follow the conditions in section 3.
|
|||
|
|
|||
|
You may also lend copies, under the same conditions stated above, and you may
|
|||
|
publicly display copies.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
A.4. COPYING IN QUANTITY
|
|||
|
|
|||
|
If you publish printed copies (or copies in media that commonly have printed
|
|||
|
covers) of the Document, numbering more than 100, and the Document's license
|
|||
|
notice requires Cover Texts, you must enclose the copies in covers that
|
|||
|
carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the
|
|||
|
front cover, and Back-Cover Texts on the back cover. Both covers must also
|
|||
|
clearly and legibly identify you as the publisher of these copies. The front
|
|||
|
cover must present the full title with all words of the title equally
|
|||
|
prominent and visible. You may add other material on the covers in addition.
|
|||
|
Copying with changes limited to the covers, as long as they preserve the
|
|||
|
title of the Document and satisfy these conditions, can be treated as
|
|||
|
verbatim copying in other respects.
|
|||
|
|
|||
|
If the required texts for either cover are too voluminous to fit legibly, you
|
|||
|
should put the first ones listed (as many as fit reasonably) on the actual
|
|||
|
cover, and continue the rest onto adjacent pages.
|
|||
|
|
|||
|
If you publish or distribute Opaque copies of the Document numbering more
|
|||
|
than 100, you must either include a machine-readable Transparent copy along
|
|||
|
with each Opaque copy, or state in or with each Opaque copy a
|
|||
|
computer-network location from which the general network-using public has
|
|||
|
access to download using public-standard network protocols a complete
|
|||
|
Transparent copy of the Document, free of added material. If you use the
|
|||
|
latter option, you must take reasonably prudent steps, when you begin
|
|||
|
distribution of Opaque copies in quantity, to ensure that this Transparent
|
|||
|
copy will remain thus accessible at the stated location until at least one
|
|||
|
year after the last time you distribute an Opaque copy (directly or through
|
|||
|
your agents or retailers) of that edition to the public.
|
|||
|
|
|||
|
It is requested, but not required, that you contact the authors of the
|
|||
|
Document well before redistributing any large number of copies, to give them
|
|||
|
a chance to provide you with an updated version of the Document.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
A.5. MODIFICATIONS
|
|||
|
|
|||
|
You may copy and distribute a Modified Version of the Document under the
|
|||
|
conditions of sections 2 and 3 above, provided that you release the Modified
|
|||
|
Version under precisely this License, with the Modified Version filling the
|
|||
|
role of the Document, thus licensing distribution and modification of the
|
|||
|
Modified Version to whoever possesses a copy of it. In addition, you must do
|
|||
|
these things in the Modified Version:
|
|||
|
|
|||
|
A. Use in the Title Page (and on the covers, if any) a title distinct from
|
|||
|
that of the Document, and from those of previous versions (which should,
|
|||
|
if there were any, be listed in the History section of the Document). You
|
|||
|
may use the same title as a previous version if the original publisher of
|
|||
|
that version gives permission.
|
|||
|
|
|||
|
B. List on the Title Page, as authors, one or more persons or entities
|
|||
|
responsible for authorship of the modifications in the Modified Version,
|
|||
|
together with at least five of the principal authors of the Document (all
|
|||
|
of its principal authors, if it has fewer than five), unless they release
|
|||
|
you from this requirement.
|
|||
|
|
|||
|
C. State on the Title page the name of the publisher of the Modified
|
|||
|
Version, as the publisher.
|
|||
|
|
|||
|
D. Preserve all the copyright notices of the Document.
|
|||
|
|
|||
|
E. Add an appropriate copyright notice for your modifications adjacent to
|
|||
|
the other copyright notices.
|
|||
|
|
|||
|
F. Include, immediately after the copyright notices, a license notice giving
|
|||
|
the public permission to use the Modified Version under the terms of this
|
|||
|
License, in the form shown in the Addendum below.
|
|||
|
|
|||
|
G. Preserve in that license notice the full lists of Invariant Sections and
|
|||
|
required Cover Texts given in the Document's license notice.
|
|||
|
|
|||
|
H. Include an unaltered copy of this License.
|
|||
|
|
|||
|
I. Preserve the section Entitled "History", Preserve its Title, and add to
|
|||
|
it an item stating at least the title, year, new authors, and publisher
|
|||
|
of the Modified Version as given on the Title Page. If there is no
|
|||
|
section Entitled "History" in the Document, create one stating the title,
|
|||
|
year, authors, and publisher of the Document as given on its Title Page,
|
|||
|
then add an item describing the Modified Version as stated in the
|
|||
|
previous sentence.
|
|||
|
|
|||
|
J. Preserve the network location, if any, given in the Document for public
|
|||
|
access to a Transparent copy of the Document, and likewise the network
|
|||
|
locations given in the Document for previous versions it was based on.
|
|||
|
These may be placed in the "History" section. You may omit a network
|
|||
|
location for a work that was published at least four years before the
|
|||
|
Document itself, or if the original publisher of the version it refers to
|
|||
|
gives permission.
|
|||
|
|
|||
|
K. For any section Entitled "Acknowledgements" or "Dedications", Preserve
|
|||
|
the Title of the section, and preserve in the section all the substance
|
|||
|
and tone of each of the contributor acknowledgements and/or dedications
|
|||
|
given therein.
|
|||
|
|
|||
|
L. Preserve all the Invariant Sections of the Document, unaltered in their
|
|||
|
text and in their titles. Section numbers or the equivalent are not
|
|||
|
considered part of the section titles.
|
|||
|
|
|||
|
M. Delete any section Entitled "Endorsements". Such a section may not be
|
|||
|
included in the Modified Version.
|
|||
|
|
|||
|
N. Do not retitle any existing section to be Entitled "Endorsements" or to
|
|||
|
conflict in title with any Invariant Section.
|
|||
|
|
|||
|
O. Preserve any Warranty Disclaimers.
|
|||
|
|
|||
|
|
|||
|
If the Modified Version includes new front-matter sections or appendices that
|
|||
|
qualify as Secondary Sections and contain no material copied from the
|
|||
|
Document, you may at your option designate some or all of these sections as
|
|||
|
invariant. To do this, add their titles to the list of Invariant Sections in
|
|||
|
the Modified Version's license notice. These titles must be distinct from any
|
|||
|
other section titles.
|
|||
|
|
|||
|
You may add a section Entitled "Endorsements", provided it contains nothing
|
|||
|
but endorsements of your Modified Version by various parties--for example,
|
|||
|
statements of peer review or that the text has been approved by an
|
|||
|
organization as the authoritative definition of a standard.
|
|||
|
|
|||
|
You may add a passage of up to five words as a Front-Cover Text, and a
|
|||
|
passage of up to 25 words as a Back-Cover Text, to the end of the list of
|
|||
|
Cover Texts in the Modified Version. Only one passage of Front-Cover Text and
|
|||
|
one of Back-Cover Text may be added by (or through arrangements made by) any
|
|||
|
one entity. If the Document already includes a cover text for the same cover,
|
|||
|
previously added by you or by arrangement made by the same entity you are
|
|||
|
acting on behalf of, you may not add another; but you may replace the old
|
|||
|
one, on explicit permission from the previous publisher that added the old
|
|||
|
one.
|
|||
|
|
|||
|
The author(s) and publisher(s) of the Document do not by this License give
|
|||
|
permission to use their names for publicity for or to assert or imply
|
|||
|
endorsement of any Modified Version.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
A.6. COMBINING DOCUMENTS
|
|||
|
|
|||
|
You may combine the Document with other documents released under this
|
|||
|
License, under the terms defined in section 4 above for modified versions,
|
|||
|
provided that you include in the combination all of the Invariant Sections of
|
|||
|
all of the original documents, unmodified, and list them all as Invariant
|
|||
|
Sections of your combined work in its license notice, and that you preserve
|
|||
|
all their Warranty Disclaimers.
|
|||
|
|
|||
|
The combined work need only contain one copy of this License, and multiple
|
|||
|
identical Invariant Sections may be replaced with a single copy. If there are
|
|||
|
multiple Invariant Sections with the same name but different contents, make
|
|||
|
the title of each such section unique by adding at the end of it, in
|
|||
|
parentheses, the name of the original author or publisher of that section if
|
|||
|
known, or else a unique number. Make the same adjustment to the section
|
|||
|
titles in the list of Invariant Sections in the license notice of the
|
|||
|
combined work.
|
|||
|
|
|||
|
In the combination, you must combine any sections Entitled "History" in the
|
|||
|
various original documents, forming one section Entitled "History"; likewise
|
|||
|
combine any sections Entitled "Acknowledgements", and any sections Entitled
|
|||
|
"Dedications". You must delete all sections Entitled "Endorsements".
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
A.7. COLLECTIONS OF DOCUMENTS
|
|||
|
|
|||
|
You may make a collection consisting of the Document and other documents
|
|||
|
released under this License, and replace the individual copies of this
|
|||
|
License in the various documents with a single copy that is included in the
|
|||
|
collection, provided that you follow the rules of this License for verbatim
|
|||
|
copying of each of the documents in all other respects.
|
|||
|
|
|||
|
You may extract a single document from such a collection, and distribute it
|
|||
|
individually under this License, provided you insert a copy of this License
|
|||
|
into the extracted document, and follow this License in all other respects
|
|||
|
regarding verbatim copying of that document.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
A.8. AGGREGATION WITH INDEPENDENT WORKS
|
|||
|
|
|||
|
A compilation of the Document or its derivatives with other separate and
|
|||
|
independent documents or works, in or on a volume of a storage or
|
|||
|
distribution medium, is called an "aggregate" if the copyright resulting from
|
|||
|
the compilation is not used to limit the legal rights of the compilation's
|
|||
|
users beyond what the individual works permit. When the Document is included
|
|||
|
in an aggregate, this License does not apply to the other works in the
|
|||
|
aggregate which are not themselves derivative works of the Document.
|
|||
|
|
|||
|
If the Cover Text requirement of section 3 is applicable to these copies of
|
|||
|
the Document, then if the Document is less than one half of the entire
|
|||
|
aggregate, the Document's Cover Texts may be placed on covers that bracket
|
|||
|
the Document within the aggregate, or the electronic equivalent of covers if
|
|||
|
the Document is in electronic form. Otherwise they must appear on printed
|
|||
|
covers that bracket the whole aggregate.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
A.9. TRANSLATION
|
|||
|
|
|||
|
Translation is considered a kind of modification, so you may distribute
|
|||
|
translations of the Document under the terms of section 4. Replacing
|
|||
|
Invariant Sections with translations requires special permission from their
|
|||
|
copyright holders, but you may include translations of some or all Invariant
|
|||
|
Sections in addition to the original versions of these Invariant Sections.
|
|||
|
You may include a translation of this License, and all the license notices in
|
|||
|
the Document, and any Warranty Disclaimers, provided that you also include
|
|||
|
the original English version of this License and the original versions of
|
|||
|
those notices and disclaimers. In case of a disagreement between the
|
|||
|
translation and the original version of this License or a notice or
|
|||
|
disclaimer, the original version will prevail.
|
|||
|
|
|||
|
If a section in the Document is Entitled "Acknowledgements", "Dedications",
|
|||
|
or "History", the requirement (section 4) to Preserve its Title (section 1)
|
|||
|
will typically require changing the actual title.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
A.10. TERMINATION
|
|||
|
|
|||
|
You may not copy, modify, sublicense, or distribute the Document except as
|
|||
|
expressly provided for under this License. Any other attempt to copy, modify,
|
|||
|
sublicense or distribute the Document is void, and will automatically
|
|||
|
terminate your rights under this License. However, parties who have received
|
|||
|
copies, or rights, from you under this License will not have their licenses
|
|||
|
terminated so long as such parties remain in full compliance.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
A.11. FUTURE REVISIONS OF THIS LICENSE
|
|||
|
|
|||
|
The Free Software Foundation may publish new, revised versions of the GNU
|
|||
|
Free Documentation License from time to time. Such new versions will be
|
|||
|
similar in spirit to the present version, but may differ in detail to address
|
|||
|
new problems or concerns. See http://www.gnu.org/copyleft/.
|
|||
|
|
|||
|
Each version of the License is given a distinguishing version number. If the
|
|||
|
Document specifies that a particular numbered version of this License "or any
|
|||
|
later version" applies to it, you have the option of following the terms and
|
|||
|
conditions either of that specified version or of any later version that has
|
|||
|
been published (not as a draft) by the Free Software Foundation. If the
|
|||
|
Document does not specify a version number of this License, you may choose
|
|||
|
any version ever published (not as a draft) by the Free Software Foundation.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
A.12. ADDENDUM: How to use this License for your documents
|
|||
|
|
|||
|
To use this License in a document you have written, include a copy of the
|
|||
|
License in the document and put the following copyright and license notices
|
|||
|
just after the title page:
|
|||
|
|
|||
|
|
|||
|
Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute
|
|||
|
and/or modify this document under the terms of the GNU Free Documentation
|
|||
|
License, Version 1.2 or any later version published by the Free Software
|
|||
|
Foundation; with no Invariant Sections, no Front-Cover Texts, and no
|
|||
|
Back-Cover Texts. A copy of the license is included in the section
|
|||
|
entitled "GNU Free Documentation License".
|
|||
|
|
|||
|
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
|
|||
|
replace the "with...Texts." line with this:
|
|||
|
|
|||
|
|
|||
|
with the Invariant Sections being LIST THEIR TITLES, with the
|
|||
|
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
|
|||
|
|
|||
|
If you have Invariant Sections without Cover Texts, or some other combination
|
|||
|
of the three, merge those two alternatives to suit the situation.
|
|||
|
|
|||
|
If your document contains nontrivial examples of program code, we recommend
|
|||
|
releasing these examples in parallel under your choice of free software
|
|||
|
license, such as the GNU General Public License, to permit their use in free
|
|||
|
software.
|