4049 lines
85 KiB
HTML
4049 lines
85 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
<HTML
|
|
><HEAD
|
|
><TITLE
|
|
>Linux Mobile IPv6 HOWTO</TITLE
|
|
><META
|
|
NAME="GENERATOR"
|
|
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"></HEAD
|
|
><BODY
|
|
CLASS="article"
|
|
BGCOLOR="#FFFFFF"
|
|
TEXT="#000000"
|
|
LINK="#0000FF"
|
|
VLINK="#840084"
|
|
ALINK="#0000FF"
|
|
><DIV
|
|
CLASS="ARTICLE"
|
|
><DIV
|
|
CLASS="TITLEPAGE"
|
|
><H1
|
|
CLASS="title"
|
|
><A
|
|
NAME="AEN2"
|
|
></A
|
|
>Linux Mobile IPv6 HOWTO</H1
|
|
><H3
|
|
CLASS="author"
|
|
><A
|
|
NAME="AEN5"
|
|
>Lars Strand</A
|
|
></H3
|
|
><DIV
|
|
CLASS="affiliation"
|
|
><DIV
|
|
CLASS="address"
|
|
><P
|
|
CLASS="address"
|
|
><TT
|
|
CLASS="email"
|
|
><<A
|
|
HREF="mailto:lars (at) unik no"
|
|
>lars (at) unik no</A
|
|
>></TT
|
|
></P
|
|
></DIV
|
|
></DIV
|
|
><P
|
|
CLASS="pubdate"
|
|
>2004-04-20<BR></P
|
|
><DIV
|
|
CLASS="revhistory"
|
|
><TABLE
|
|
WIDTH="100%"
|
|
BORDER="0"
|
|
><TR
|
|
><TH
|
|
ALIGN="LEFT"
|
|
VALIGN="TOP"
|
|
COLSPAN="3"
|
|
><B
|
|
>Revision History</B
|
|
></TH
|
|
></TR
|
|
><TR
|
|
><TD
|
|
ALIGN="LEFT"
|
|
>Revision 1.2</TD
|
|
><TD
|
|
ALIGN="LEFT"
|
|
>2004-04-20</TD
|
|
><TD
|
|
ALIGN="LEFT"
|
|
>Revised by: LKS</TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
ALIGN="LEFT"
|
|
COLSPAN="3"
|
|
>Updated links. Changed lisence back to <A
|
|
HREF="http://www.gnu.org/copyleft/fdl.html"
|
|
TARGET="_top"
|
|
>GFDL</A
|
|
></TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
ALIGN="LEFT"
|
|
>Revision 1.1</TD
|
|
><TD
|
|
ALIGN="LEFT"
|
|
>2004-02-04</TD
|
|
><TD
|
|
ALIGN="LEFT"
|
|
>Revised by: LKS</TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
ALIGN="LEFT"
|
|
COLSPAN="3"
|
|
>Added "Travelling through several foregin LAN's"
|
|
and "Returning home". Some cleanup and restructuring.</TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
ALIGN="LEFT"
|
|
>Revision 1.0</TD
|
|
><TD
|
|
ALIGN="LEFT"
|
|
>2003-12-02</TD
|
|
><TD
|
|
ALIGN="LEFT"
|
|
>Revised by: TMM</TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
ALIGN="LEFT"
|
|
COLSPAN="3"
|
|
>Reviewed by LDP</TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
ALIGN="LEFT"
|
|
>Revision 0.5.2</TD
|
|
><TD
|
|
ALIGN="LEFT"
|
|
>2003-11-26</TD
|
|
><TD
|
|
ALIGN="LEFT"
|
|
>Revised by: LKS</TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
ALIGN="LEFT"
|
|
COLSPAN="3"
|
|
>A lot of cleanup. Thanks to John Levon levon [at]
|
|
movementarian.org</TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
ALIGN="LEFT"
|
|
>Revision 0.5.1</TD
|
|
><TD
|
|
ALIGN="LEFT"
|
|
>2003-11-22</TD
|
|
><TD
|
|
ALIGN="LEFT"
|
|
>Revised by: LKS</TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
ALIGN="LEFT"
|
|
COLSPAN="3"
|
|
>Changed the license from <A
|
|
HREF="http://www.gnu.org/copyleft/fdl.html"
|
|
TARGET="_top"
|
|
> GFDL </A
|
|
> to
|
|
<A
|
|
HREF="http://www.opencontent.org/openpub/"
|
|
TARGET="_top"
|
|
> OPL
|
|
</A
|
|
> due to some GFDL <A
|
|
HREF="http://people.debian.org/~srivasta/Position_Statement.xhtml"
|
|
TARGET="_top"
|
|
> problems.</A
|
|
></TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
ALIGN="LEFT"
|
|
>Revision 0.5</TD
|
|
><TD
|
|
ALIGN="LEFT"
|
|
>2003-11-18</TD
|
|
><TD
|
|
ALIGN="LEFT"
|
|
>Revised by: LKS</TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
ALIGN="LEFT"
|
|
COLSPAN="3"
|
|
>Converted to XML Docbook. Some cleanup.</TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
ALIGN="LEFT"
|
|
>Revision 0.4</TD
|
|
><TD
|
|
ALIGN="LEFT"
|
|
>2002-11-07</TD
|
|
><TD
|
|
ALIGN="LEFT"
|
|
>Revised by: LKS</TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
ALIGN="LEFT"
|
|
COLSPAN="3"
|
|
>Fixed some errors + update. Thanks to Henrik Petander
|
|
petander (at) tcs hut fi.</TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
ALIGN="LEFT"
|
|
>Revision 0.3.1</TD
|
|
><TD
|
|
ALIGN="LEFT"
|
|
>2003-11-03</TD
|
|
><TD
|
|
ALIGN="LEFT"
|
|
>Revised by: LKS</TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
ALIGN="LEFT"
|
|
COLSPAN="3"
|
|
>Updated to MIPL relase 1.0 (kernel 2.4.22).</TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
ALIGN="LEFT"
|
|
>Revision 0.3</TD
|
|
><TD
|
|
ALIGN="LEFT"
|
|
>2003-08-05</TD
|
|
><TD
|
|
ALIGN="LEFT"
|
|
>Revised by: LKS</TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
ALIGN="LEFT"
|
|
COLSPAN="3"
|
|
>Initial release.</TD
|
|
></TR
|
|
></TABLE
|
|
></DIV
|
|
><DIV
|
|
><DIV
|
|
CLASS="abstract"
|
|
><A
|
|
NAME="AEN63"
|
|
></A
|
|
><P
|
|
></P
|
|
><P
|
|
> This document describes the software and procedures to set up
|
|
and use mobile IPv6 for Linux. </P
|
|
><P
|
|
></P
|
|
></DIV
|
|
></DIV
|
|
><HR></DIV
|
|
><DIV
|
|
CLASS="TOC"
|
|
><DL
|
|
><DT
|
|
><B
|
|
>Table of Contents</B
|
|
></DT
|
|
><DT
|
|
>1. <A
|
|
HREF="#intro"
|
|
>Introduction</A
|
|
></DT
|
|
><DD
|
|
><DL
|
|
><DT
|
|
>1.1. <A
|
|
HREF="#WhatisMIPv6"
|
|
>What is Mobile IP?</A
|
|
></DT
|
|
><DT
|
|
>1.2. <A
|
|
HREF="#WhyMIPv6"
|
|
>Why Mobile IP?</A
|
|
></DT
|
|
><DT
|
|
>1.3. <A
|
|
HREF="#HowWork"
|
|
>How does it work?</A
|
|
></DT
|
|
></DL
|
|
></DD
|
|
><DT
|
|
>2. <A
|
|
HREF="#IPv6"
|
|
>IPv6</A
|
|
></DT
|
|
><DT
|
|
>3. <A
|
|
HREF="#MIPv6"
|
|
>Mobile IPv6 for Linux</A
|
|
></DT
|
|
><DD
|
|
><DL
|
|
><DT
|
|
>3.1. <A
|
|
HREF="#patch"
|
|
>Patching the kernel</A
|
|
></DT
|
|
><DT
|
|
>3.2. <A
|
|
HREF="#userspace"
|
|
>Userspace tools</A
|
|
></DT
|
|
><DT
|
|
>3.3. <A
|
|
HREF="#dev"
|
|
>MIPv6 device node</A
|
|
></DT
|
|
><DT
|
|
>3.4. <A
|
|
HREF="#startup"
|
|
>Automatic startup</A
|
|
></DT
|
|
></DL
|
|
></DD
|
|
><DT
|
|
>4. <A
|
|
HREF="#testbed"
|
|
>Test bed</A
|
|
></DT
|
|
><DD
|
|
><DL
|
|
><DT
|
|
>4.1. <A
|
|
HREF="#testcase"
|
|
>Testcase</A
|
|
></DT
|
|
><DT
|
|
>4.2. <A
|
|
HREF="#stepbystep"
|
|
>Step-by-step configuration</A
|
|
></DT
|
|
></DL
|
|
></DD
|
|
><DT
|
|
>5. <A
|
|
HREF="#dotest"
|
|
>Doing some tests</A
|
|
></DT
|
|
><DD
|
|
><DL
|
|
><DT
|
|
>5.1. <A
|
|
HREF="#pretest"
|
|
>Pre-test</A
|
|
></DT
|
|
><DT
|
|
>5.2. <A
|
|
HREF="#MovDet"
|
|
>Movement detection</A
|
|
></DT
|
|
><DT
|
|
>5.3. <A
|
|
HREF="#ping6"
|
|
>ping6</A
|
|
></DT
|
|
><DT
|
|
>5.4. <A
|
|
HREF="#routeTable"
|
|
>Kernel IP routing table</A
|
|
></DT
|
|
><DT
|
|
>5.5. <A
|
|
HREF="#movement"
|
|
>Travelling through several foregin LAN's</A
|
|
></DT
|
|
><DT
|
|
>5.6. <A
|
|
HREF="#home"
|
|
>Returning home</A
|
|
></DT
|
|
><DT
|
|
>5.7. <A
|
|
HREF="#realLife"
|
|
>Real life testing - smooth handover</A
|
|
></DT
|
|
></DL
|
|
></DD
|
|
><DT
|
|
>6. <A
|
|
HREF="#faq"
|
|
>FAQ</A
|
|
></DT
|
|
><DT
|
|
>7. <A
|
|
HREF="#resources"
|
|
>Useful Resources</A
|
|
></DT
|
|
><DT
|
|
>8. <A
|
|
HREF="#copyack"
|
|
>Copyright, acknowledgments and miscellaneous</A
|
|
></DT
|
|
><DD
|
|
><DL
|
|
><DT
|
|
>8.1. <A
|
|
HREF="#copyright"
|
|
>Copyright and License</A
|
|
></DT
|
|
><DT
|
|
>8.2. <A
|
|
HREF="#produced"
|
|
>How this document was produced</A
|
|
></DT
|
|
><DT
|
|
>8.3. <A
|
|
HREF="#feedback"
|
|
>Feedback</A
|
|
></DT
|
|
><DT
|
|
>8.4. <A
|
|
HREF="#ack"
|
|
>Acknowledgments</A
|
|
></DT
|
|
></DL
|
|
></DD
|
|
><DT
|
|
>A. <A
|
|
HREF="#gfdl"
|
|
>GNU Free Documentation License</A
|
|
></DT
|
|
><DD
|
|
><DL
|
|
><DT
|
|
>A.1. <A
|
|
HREF="#gfdl-0"
|
|
>PREAMBLE</A
|
|
></DT
|
|
><DT
|
|
>A.2. <A
|
|
HREF="#gfdl-1"
|
|
>APPLICABILITY AND DEFINITIONS</A
|
|
></DT
|
|
><DT
|
|
>A.3. <A
|
|
HREF="#gfdl-2"
|
|
>VERBATIM COPYING</A
|
|
></DT
|
|
><DT
|
|
>A.4. <A
|
|
HREF="#gfdl-3"
|
|
>COPYING IN QUANTITY</A
|
|
></DT
|
|
><DT
|
|
>A.5. <A
|
|
HREF="#gfdl-4"
|
|
>MODIFICATIONS</A
|
|
></DT
|
|
><DT
|
|
>A.6. <A
|
|
HREF="#gfdl-5"
|
|
>COMBINING DOCUMENTS</A
|
|
></DT
|
|
><DT
|
|
>A.7. <A
|
|
HREF="#gfdl-6"
|
|
>COLLECTIONS OF DOCUMENTS</A
|
|
></DT
|
|
><DT
|
|
>A.8. <A
|
|
HREF="#gfdl-7"
|
|
>AGGREGATION WITH INDEPENDENT WORKS</A
|
|
></DT
|
|
><DT
|
|
>A.9. <A
|
|
HREF="#gfdl-8"
|
|
>TRANSLATION</A
|
|
></DT
|
|
><DT
|
|
>A.10. <A
|
|
HREF="#gfdl-9"
|
|
>TERMINATION</A
|
|
></DT
|
|
><DT
|
|
>A.11. <A
|
|
HREF="#gfdl-10"
|
|
>FUTURE REVISIONS OF THIS LICENSE</A
|
|
></DT
|
|
><DT
|
|
>A.12. <A
|
|
HREF="#gfdl-addendum"
|
|
>ADDENDUM: How to use this License for
|
|
your documents</A
|
|
></DT
|
|
></DL
|
|
></DD
|
|
></DL
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect1"
|
|
><H1
|
|
CLASS="sect1"
|
|
><A
|
|
NAME="intro"
|
|
></A
|
|
>1. Introduction</H1
|
|
><P
|
|
> This document describes the software and procedures to set up and
|
|
use mobile IPv6 for Linux. The <A
|
|
HREF="http://www.ietf.org/internet-drafts/draft-ietf-mobileip-ipv6-24.txt"
|
|
TARGET="_top"
|
|
> "Mobility Support in IPv6" draft </A
|
|
> answers the
|
|
<EM
|
|
>what</EM
|
|
> and <EM
|
|
>why</EM
|
|
> of mobile IP:
|
|
</P
|
|
><DIV
|
|
CLASS="sect2"
|
|
><HR><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="WhatisMIPv6"
|
|
></A
|
|
>1.1. What is Mobile IP?</H2
|
|
><P
|
|
> <SPAN
|
|
CLASS="QUOTE"
|
|
>"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."</SPAN
|
|
> --- draft-ietf-mipv6-24, page 1-2.
|
|
</P
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><HR><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="WhyMIPv6"
|
|
></A
|
|
>1.2. Why Mobile IP?</H2
|
|
><P
|
|
> <SPAN
|
|
CLASS="QUOTE"
|
|
>"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."</SPAN
|
|
> --- draft-ietf-mipv6-24, page 6.
|
|
</P
|
|
><P
|
|
> For all the details, read the <A
|
|
HREF="http://www.ietf.org/internet-drafts/draft-ietf-mobileip-ipv6-24.txt"
|
|
TARGET="_top"
|
|
> "Mobility Support in IPv6" draft</A
|
|
>
|
|
</P
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><HR><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="HowWork"
|
|
></A
|
|
>1.3. How does it work?</H2
|
|
><DIV
|
|
CLASS="mediaobject"
|
|
><P
|
|
><IMG
|
|
SRC="images/Mobile-IP.png"
|
|
ALIGN="center"
|
|
WIDTH="520"><DIV
|
|
CLASS="caption"
|
|
><P
|
|
>Mobile IP</P
|
|
></DIV
|
|
></P
|
|
></DIV
|
|
><P
|
|
> <P
|
|
></P
|
|
><OL
|
|
TYPE="1"
|
|
><LI
|
|
><P
|
|
> The Mobile Node (MN) travels to a foreign network and gets a
|
|
new care-of-address.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> 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.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>A Correspondent Node (CN) wants to contact the MN. The HA
|
|
intercepts packets destined to the MN.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>The HA then tunnels all packets to the MN from the CN using
|
|
MN's care-of-address.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>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.</P
|
|
></LI
|
|
></OL
|
|
>
|
|
</P
|
|
><P
|
|
>See figure <A
|
|
HREF="#mobileIP"
|
|
>"Mobile IP"</A
|
|
> for
|
|
an explanation.
|
|
</P
|
|
></DIV
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect1"
|
|
><HR><H1
|
|
CLASS="sect1"
|
|
><A
|
|
NAME="IPv6"
|
|
></A
|
|
>2. IPv6</H1
|
|
><P
|
|
>IP version 6 (IPv6) is a new version of the Internet Protocol,
|
|
designed as the successor to IP version 4 (IPv4) <A
|
|
HREF="http://www.ietf.org/rfc/rfc791.txt"
|
|
TARGET="_top"
|
|
>[RFC-791]</A
|
|
>. The
|
|
changes from IPv4 to IPv6 fall primarily into the following
|
|
categories:
|
|
</P
|
|
><P
|
|
></P
|
|
><UL
|
|
><LI
|
|
><P
|
|
>Expanded addressing capabilities </P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Header format simplification</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Improved support for extensions and options</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Flow labeling capability</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Authentication and privacy capabilities</P
|
|
></LI
|
|
></UL
|
|
><P
|
|
><EM
|
|
>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 <A
|
|
HREF="http://www.ietf.org/rfc/rfc2462.txt"
|
|
TARGET="_top"
|
|
>[RFC2462]</A
|
|
>.
|
|
</EM
|
|
>
|
|
</P
|
|
><P
|
|
>For more information on IPv6 in general, visit the <A
|
|
HREF="http://www.ietf.org/html.charters/ipv6-charter.html"
|
|
TARGET="_top"
|
|
>IETF's IPv6
|
|
Working Group</A
|
|
>.
|
|
</P
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect1"
|
|
><HR><H1
|
|
CLASS="sect1"
|
|
><A
|
|
NAME="MIPv6"
|
|
></A
|
|
>3. Mobile IPv6 for Linux</H1
|
|
><P
|
|
>There are currently two Mobile IPv6 Linux implementations
|
|
available. The Lancaster University in the UK has the oldest(?)
|
|
implementation (<A
|
|
HREF="http://www.cs-ipv6.lancs.ac.uk/MobileIP/"
|
|
TARGET="_top"
|
|
> http://www.cs-ipv6.lancs.ac.uk/MobileIP/</A
|
|
>). 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. </P
|
|
><P
|
|
>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 <A
|
|
HREF="http://www.mobile-ipv6.org/"
|
|
TARGET="_top"
|
|
> http://www.mobile-ipv6.org/</A
|
|
> for papers, software or to
|
|
browse the mail archive. </P
|
|
><DIV
|
|
CLASS="sect2"
|
|
><HR><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="patch"
|
|
></A
|
|
>3.1. Patching the kernel</H2
|
|
><P
|
|
>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. </P
|
|
><P
|
|
><EM
|
|
>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.</EM
|
|
>
|
|
</P
|
|
><P
|
|
> <P
|
|
></P
|
|
><OL
|
|
TYPE="1"
|
|
><LI
|
|
><P
|
|
> Download the latest Linux MIPv6 source code from
|
|
<A
|
|
HREF="http://www.mobile-ipv6.org/"
|
|
TARGET="_top"
|
|
> http://www.mobile-ipv6.org/</A
|
|
>. The latest release today is:
|
|
<EM
|
|
>mipv6-1.0-v2.4.22</EM
|
|
>. The last four numbers
|
|
corresponds to the Linux kernel the patch should be applied to:
|
|
</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # 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
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
></LI
|
|
><LI
|
|
><P
|
|
> Download and unpack the correspondent Linux kernel version
|
|
from <A
|
|
HREF="ftp://ftp.kernel.org"
|
|
TARGET="_top"
|
|
>ftp.kernel.org</A
|
|
>:
|
|
</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # 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
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Apply the MIPv6 patch:</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # patch -p1 --dry-run < /usr/local/src/mipv6-1.0-v2.4.22/mipv6-1.0-v2.4.22.patch
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><P
|
|
>The --dry-run option checks that the patch will apply
|
|
correctly. If you get any failed hunks, you should
|
|
<EM
|
|
>not</EM
|
|
> proceed. If everything went fine do:
|
|
</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
>
|
|
# patch -p1 < /usr/local/src/mipv6-1.0-v2.4.22/mipv6-1.0-v2.4.22.patch
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
></LI
|
|
><LI
|
|
><P
|
|
> Now your kernel tree is ready for configuration. Run your
|
|
favorite <B
|
|
CLASS="command"
|
|
>make *config</B
|
|
>. The MIPv6 options are under
|
|
<SPAN
|
|
CLASS="QUOTE"
|
|
>"Networking Options"</SPAN
|
|
>. The following options should be present in
|
|
<EM
|
|
><SPAN
|
|
CLASS="QUOTE"
|
|
>".config"</SPAN
|
|
></EM
|
|
>:</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> 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
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><P
|
|
> Since MIPL is still a work-in-progress you might want to
|
|
enable:</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> CONFIG_IPV6_MOBILITY_DEBUG=y
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><P
|
|
> 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.</P
|
|
><P
|
|
>To be sure you have all the correct options, you can run
|
|
<TT
|
|
CLASS="userinput"
|
|
><B
|
|
>chkconf_kernel.sh</B
|
|
></TT
|
|
>, which is a small shell
|
|
script included in the MIPL tarball.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> Next you should compile and install your kernel.</P
|
|
><P
|
|
> Hint: To easily distinguish this kernel from other
|
|
kernels, you can change the <SPAN
|
|
CLASS="QUOTE"
|
|
>"EXTRAVERSION"</SPAN
|
|
> variable
|
|
in the <TT
|
|
CLASS="userinput"
|
|
><B
|
|
>/usr/src/linux/Makefile</B
|
|
></TT
|
|
> to for
|
|
example <SPAN
|
|
CLASS="QUOTE"
|
|
>"-MIPv6-1"</SPAN
|
|
>.</P
|
|
></LI
|
|
></OL
|
|
>
|
|
</P
|
|
><P
|
|
>Read the <A
|
|
HREF="http://tldp.org/HOWTO/Kernel-HOWTO/"
|
|
TARGET="_top"
|
|
>Linux Kernel
|
|
HOWTO</A
|
|
> for detailed instruction on how to patch, compile and
|
|
install your new kernel.</P
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><HR><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="userspace"
|
|
></A
|
|
>3.2. Userspace tools</H2
|
|
><P
|
|
>The userspace tool <TT
|
|
CLASS="userinput"
|
|
><B
|
|
>mipdiag</B
|
|
></TT
|
|
>, config
|
|
files and init scripts must be installed for the module to work
|
|
correctly:</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # cd /usr/local/src/mipv6-1.0-v2.4.22
|
|
# ./configure
|
|
# make && make install
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><HR><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="dev"
|
|
></A
|
|
>3.3. MIPv6 device node</H2
|
|
><P
|
|
>The MIPv6 module also needs a new device node entry. Issue
|
|
the command:</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # mknod /dev/mipv6_dev c 0xf9 0
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><HR><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="startup"
|
|
></A
|
|
>3.4. Automatic startup</H2
|
|
><P
|
|
></P
|
|
><OL
|
|
TYPE="1"
|
|
><LI
|
|
><P
|
|
><EM
|
|
>Red Hat:</EM
|
|
></P
|
|
><P
|
|
>All init scripts are located in <TT
|
|
CLASS="filename"
|
|
>/etc/init.d/</TT
|
|
>,
|
|
which are sym-linked to the correct runlevel
|
|
(<TT
|
|
CLASS="filename"
|
|
>/etc/rcX.d/</TT
|
|
>). You can issue the command:</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # chkconfig --add mobile-ip6
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><P
|
|
>to enable MIPv6 at startup, or</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # chkconfig --del mobile-ip6
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><P
|
|
>to remove MIPv6 from startup.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
><EM
|
|
>Debian:</EM
|
|
></P
|
|
><P
|
|
>If you are so lucky to be running Debian, you can issue
|
|
the command:</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # update-rc.d -n mobile-ip6 start 75 3 4 5 . stop 05 1 2 6 .
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><P
|
|
>to set up all the necessary links.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
><EM
|
|
>Slackware:</EM
|
|
></P
|
|
><P
|
|
>Slackware users have all their startup/runlevel scripts in
|
|
<TT
|
|
CLASS="filename"
|
|
>/etc/rc.d</TT
|
|
>. Since 'configure' doesn't check for
|
|
<SPAN
|
|
CLASS="QUOTE"
|
|
>"/etc/rc.d"</SPAN
|
|
>,
|
|
you can add <EM
|
|
>INIT_SLACK="/etc/rc.d"</EM
|
|
>, 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:</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # echo '/etc/rc.d/mobile-ip6 start' >> /etc/rc.d/rc.local
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><P
|
|
>If you don't hack the Makefile, the
|
|
<TT
|
|
CLASS="filename"
|
|
>mobile-ip6</TT
|
|
> script is installed at '/' (you
|
|
may then move it to /etc/rc.d/).</P
|
|
></LI
|
|
></OL
|
|
></DIV
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect1"
|
|
><HR><H1
|
|
CLASS="sect1"
|
|
><A
|
|
NAME="testbed"
|
|
></A
|
|
>4. Test bed</H1
|
|
><P
|
|
>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.</P
|
|
><DIV
|
|
CLASS="sect2"
|
|
><HR><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="testcase"
|
|
></A
|
|
>4.1. Testcase</H2
|
|
><P
|
|
>The addresses we are using in our test-bed are
|
|
site-local. You may as well use global addresses, but do
|
|
<EM
|
|
>note that link local addresses won't work!</EM
|
|
>
|
|
Our test-bed consist of four nodes; see figure
|
|
<A
|
|
HREF="#mipv6testbed"
|
|
>"Mobile IPv6 testbed"</A
|
|
>.</P
|
|
><P
|
|
></P
|
|
><OL
|
|
TYPE="1"
|
|
><LI
|
|
><P
|
|
><EM
|
|
>HA - Home Agent:</EM
|
|
> The HA is located at the home
|
|
network with address <TT
|
|
CLASS="userinput"
|
|
><B
|
|
>fec0:106:2700::2</B
|
|
></TT
|
|
>,
|
|
with one wireless interface.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
><EM
|
|
>MN - Mobile Node:</EM
|
|
> When MN is on the
|
|
<SPAN
|
|
CLASS="QUOTE"
|
|
>"home network"</SPAN
|
|
>, it has address
|
|
<TT
|
|
CLASS="userinput"
|
|
><B
|
|
>fec0:106:2700::4</B
|
|
></TT
|
|
>. When MN travels to
|
|
another network, it generates a new <SPAN
|
|
CLASS="QUOTE"
|
|
>"care-of"</SPAN
|
|
> address.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
><EM
|
|
>R - Router:</EM
|
|
> This is the router from
|
|
the home network to the internet. It has one wireless interface with
|
|
address <TT
|
|
CLASS="userinput"
|
|
><B
|
|
>fec0:106:2700::1</B
|
|
></TT
|
|
> and a wired
|
|
interface with address <TT
|
|
CLASS="userinput"
|
|
><B
|
|
>fec0:106:2300::2</B
|
|
></TT
|
|
>.
|
|
</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
><EM
|
|
>AR - Access Router:</EM
|
|
> The link
|
|
between AR and R is our <SPAN
|
|
CLASS="QUOTE"
|
|
>"internet"</SPAN
|
|
> - but in this
|
|
testcase only a cross-cable (can be any network). The AR has
|
|
two interfaces; the wired interface to R has address
|
|
<TT
|
|
CLASS="userinput"
|
|
><B
|
|
>fec0:106:2300::1</B
|
|
></TT
|
|
>, the wireless has
|
|
address <TT
|
|
CLASS="userinput"
|
|
><B
|
|
>fec0:106:1100::1</B
|
|
></TT
|
|
>.</P
|
|
></LI
|
|
></OL
|
|
><DIV
|
|
CLASS="mediaobject"
|
|
><P
|
|
><IMG
|
|
SRC="images/mipv6-testbed.png"
|
|
ALIGN="center"
|
|
WIDTH="550px"><DIV
|
|
CLASS="caption"
|
|
><P
|
|
>Mobile IPv6 testbed</P
|
|
></DIV
|
|
></P
|
|
></DIV
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><HR><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="stepbystep"
|
|
></A
|
|
>4.2. Step-by-step configuration</H2
|
|
><DIV
|
|
CLASS="sect3"
|
|
><H3
|
|
CLASS="sect3"
|
|
><A
|
|
NAME="fullyipv6"
|
|
></A
|
|
>4.2.1. Setting up a fully functional IPv6 network</H3
|
|
><P
|
|
>Before we can start testing mobile IP, we need a fully
|
|
functional IPv6 network. All the nodes should be able to ping
|
|
each other. <EM
|
|
>This is a crucial part.</EM
|
|
> If, for
|
|
example, AR is not able to ping HA, then there will be no binding
|
|
update.</P
|
|
><P
|
|
>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 <A
|
|
HREF="http://ldp.linux.no/HOWTO/Linux+IPv6-HOWTO/"
|
|
TARGET="_top"
|
|
>Linux IPv6
|
|
HOWTO</A
|
|
>.</P
|
|
><P
|
|
>I've turned off encryption for simplicity - <EM
|
|
>NOTE that you
|
|
should ALWAYS use encryption when dealing with wireless
|
|
networks!</EM
|
|
></P
|
|
><P
|
|
><EM
|
|
>Also note that the different wireless networks
|
|
have different ESSIDs!</EM
|
|
></P
|
|
><P
|
|
></P
|
|
><OL
|
|
TYPE="1"
|
|
><LI
|
|
><P
|
|
><EM
|
|
>MN:</EM
|
|
> The Mobile Node has one wireless
|
|
interface. Forwarding should be turned off, but should accept
|
|
autoconf and ra's:</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # 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
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
></LI
|
|
><LI
|
|
><P
|
|
><EM
|
|
>HA:</EM
|
|
> 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. <EM
|
|
>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.</EM
|
|
></P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # 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
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
></LI
|
|
><LI
|
|
><P
|
|
><EM
|
|
>R:</EM
|
|
> The (home) Router has two
|
|
interfaces; one wireless and one line. The Router must have
|
|
forwarding turned on. </P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # 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
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
></LI
|
|
><LI
|
|
><P
|
|
><EM
|
|
>AR:</EM
|
|
> The Access Router (on a foreign
|
|
network) also has two interfaces; one wireless and one
|
|
line. Forwarding must be turned on.</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # 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
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
></LI
|
|
></OL
|
|
><P
|
|
>Instead of modifying proc variables, you can use
|
|
<EM
|
|
>sysctl</EM
|
|
>.</P
|
|
><P
|
|
>Note: We are setting static routes on our test-bed. You
|
|
should now be able to ping all the hosts from every host.</P
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect3"
|
|
><HR><H3
|
|
CLASS="sect3"
|
|
><A
|
|
NAME="confmipv6"
|
|
></A
|
|
>4.2.2. Configuring Mobile IPv6</H3
|
|
><P
|
|
>The last configuration is MIPv6 settings in
|
|
<TT
|
|
CLASS="filename"
|
|
>network-mip6.conf</TT
|
|
>. In Debian/Slackware the
|
|
file is found under <TT
|
|
CLASS="filename"
|
|
>/etc/</TT
|
|
>. (RedHat the file
|
|
is found under <TT
|
|
CLASS="filename"
|
|
>/etc/sysconfig/</TT
|
|
>.) The file
|
|
should be pretty self-explanatory. </P
|
|
><P
|
|
></P
|
|
><OL
|
|
TYPE="1"
|
|
><LI
|
|
><P
|
|
><EM
|
|
>HA:</EM
|
|
> The HA config file should
|
|
contain these settings:</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # cat /etc/network-mip6.conf
|
|
|
|
# Home Agent configuration file
|
|
FUNCTIONALITY=ha
|
|
DEBUGLEVEL=1
|
|
MIN_TUNNEL_NR=1
|
|
MAX_TUNNEL_NR=5
|
|
TUNNEL_SITELOCAL=yes
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
></LI
|
|
><LI
|
|
><P
|
|
><EM
|
|
>MN:</EM
|
|
> The MN config file should
|
|
look like this:</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # 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
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Next, start mobile-IP:</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # /etc/init.d/mobile-ip6 start
|
|
Starting Mobile IPv6: OK
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
></LI
|
|
></OL
|
|
><P
|
|
>You can verify that it started by doing a
|
|
<TT
|
|
CLASS="userinput"
|
|
><B
|
|
>ifconfig</B
|
|
></TT
|
|
> on HA. If the tunnel(s) comes up,
|
|
<TT
|
|
CLASS="varname"
|
|
>ip6tnl1</TT
|
|
>, mobile-ip6 is started:</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # 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 <A
|
|
NAME="tunnel1"
|
|
><IMG
|
|
SRC="../images/callouts/1.gif"
|
|
HSPACE="0"
|
|
VSPACE="0"
|
|
BORDER="0"
|
|
ALT="(1)"></A
|
|
>
|
|
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 <A
|
|
NAME="tunnel2"
|
|
><IMG
|
|
SRC="../images/callouts/2.gif"
|
|
HSPACE="0"
|
|
VSPACE="0"
|
|
BORDER="0"
|
|
ALT="(2)"></A
|
|
>
|
|
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)
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><DIV
|
|
CLASS="calloutlist"
|
|
><DL
|
|
COMPACT="COMPACT"
|
|
><DT
|
|
><A
|
|
HREF="#tunnel1"
|
|
><IMG
|
|
SRC="../images/callouts/1.gif"
|
|
HSPACE="0"
|
|
VSPACE="0"
|
|
BORDER="0"
|
|
ALT="(1)"></A
|
|
></DT
|
|
><DD
|
|
>The tunnel is up and ready for connections.</DD
|
|
><DT
|
|
><A
|
|
HREF="#tunnel2"
|
|
><IMG
|
|
SRC="../images/callouts/2.gif"
|
|
HSPACE="0"
|
|
VSPACE="0"
|
|
BORDER="0"
|
|
ALT="(2)"></A
|
|
></DT
|
|
><DD
|
|
>Another tunnel ready.</DD
|
|
></DL
|
|
></DIV
|
|
><P
|
|
>You will also see the mipv6 kernel modules are loaded (MN):</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # 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]
|
|
...
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect3"
|
|
><HR><H3
|
|
CLASS="sect3"
|
|
><A
|
|
NAME="ARradvd"
|
|
></A
|
|
>4.2.3. Configuring radvd on AR</H3
|
|
><P
|
|
>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
|
|
<A
|
|
HREF="http://www.ietf.org/rfc/rfc2462.txt"
|
|
TARGET="_top"
|
|
>[RFC2462]</A
|
|
>
|
|
(IPv6 Stateless Address Autoconfiguration) describe the next
|
|
phase:</P
|
|
><P
|
|
> <SPAN
|
|
CLASS="QUOTE"
|
|
>"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."</SPAN
|
|
></P
|
|
><P
|
|
> <SPAN
|
|
CLASS="QUOTE"
|
|
>"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."</SPAN
|
|
> --- page 8</P
|
|
><P
|
|
>This is where we use
|
|
<A
|
|
HREF="http://v6web.litech.org/radvd/"
|
|
TARGET="_top"
|
|
>RADVD</A
|
|
>.</P
|
|
><P
|
|
>Read <A
|
|
HREF="http://www.ietf.org/rfc/rfc2462.txt"
|
|
TARGET="_top"
|
|
>[RFC2462]</A
|
|
>
|
|
more more details concerning IPv6 Stateless Address
|
|
Autoconfiguration.</P
|
|
><P
|
|
>We'll configure RADVD on AR's wireless interface. The
|
|
<TT
|
|
CLASS="filename"
|
|
>radvd.conf</TT
|
|
> file should contain this:</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # 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;
|
|
};
|
|
};
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><P
|
|
>We then start it:</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # /etc/init.d/radvd start
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><P
|
|
>You should now be able to use <TT
|
|
CLASS="userinput"
|
|
><B
|
|
>radvdump</B
|
|
></TT
|
|
> to
|
|
see that the radvd messages really are being sent periodically:</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # 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
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><P
|
|
><EM
|
|
>Note! When using radvd on HA and enabling
|
|
<SPAN
|
|
CLASS="QUOTE"
|
|
>"autoconf"</SPAN
|
|
> (in proc), you will also get an
|
|
autogenerated IPv6 address on MN (which is superfluous) in
|
|
addition to your static address:</EM
|
|
></P
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect3"
|
|
><HR><H3
|
|
CLASS="sect3"
|
|
><A
|
|
NAME="radvdar"
|
|
></A
|
|
>4.2.4. Configuring radvd on HA</H3
|
|
><P
|
|
> 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
|
|
<TT
|
|
CLASS="filename"
|
|
>/etc/radvd.conf</TT
|
|
> file should contain:
|
|
</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # 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;
|
|
};
|
|
};
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><P
|
|
>Also do a <TT
|
|
CLASS="userinput"
|
|
><B
|
|
>radvdump</B
|
|
></TT
|
|
> on HA to check
|
|
whether radvd messages are beeing sent:</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # 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
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # 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 <A
|
|
NAME="newaddress"
|
|
><IMG
|
|
SRC="../images/callouts/1.gif"
|
|
HSPACE="0"
|
|
VSPACE="0"
|
|
BORDER="0"
|
|
ALT="(1)"></A
|
|
>
|
|
inet6 addr: fec0:106:2700::4/64 Scope:Site <A
|
|
NAME="staticadr"
|
|
><IMG
|
|
SRC="../images/callouts/2.gif"
|
|
HSPACE="0"
|
|
VSPACE="0"
|
|
BORDER="0"
|
|
ALT="(2)"></A
|
|
>
|
|
inet6 addr: fe80::290:7dff:fef3:31a/64 Scope:Link <A
|
|
NAME="linkaddrs"
|
|
><IMG
|
|
SRC="../images/callouts/3.gif"
|
|
HSPACE="0"
|
|
VSPACE="0"
|
|
BORDER="0"
|
|
ALT="(3)"></A
|
|
>
|
|
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
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><DIV
|
|
CLASS="calloutlist"
|
|
><DL
|
|
COMPACT="COMPACT"
|
|
><DT
|
|
><A
|
|
HREF="#newaddress"
|
|
><IMG
|
|
SRC="../images/callouts/1.gif"
|
|
HSPACE="0"
|
|
VSPACE="0"
|
|
BORDER="0"
|
|
ALT="(1)"></A
|
|
></DT
|
|
><DD
|
|
>A new (superfluous) autogenerated address. Since we are
|
|
setting <TT
|
|
CLASS="userinput"
|
|
><B
|
|
>autoconf</B
|
|
></TT
|
|
> in
|
|
<TT
|
|
CLASS="userinput"
|
|
><B
|
|
>/proc/sys/net/ipv6/conf/eth0/autoconf</B
|
|
></TT
|
|
>
|
|
to <TT
|
|
CLASS="userinput"
|
|
><B
|
|
>1</B
|
|
></TT
|
|
>, 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.</DD
|
|
><DT
|
|
><A
|
|
HREF="#staticadr"
|
|
><IMG
|
|
SRC="../images/callouts/2.gif"
|
|
HSPACE="0"
|
|
VSPACE="0"
|
|
BORDER="0"
|
|
ALT="(2)"></A
|
|
></DT
|
|
><DD
|
|
>Our original static IPv6 address</DD
|
|
><DT
|
|
><A
|
|
HREF="#linkaddrs"
|
|
><IMG
|
|
SRC="../images/callouts/3.gif"
|
|
HSPACE="0"
|
|
VSPACE="0"
|
|
BORDER="0"
|
|
ALT="(3)"></A
|
|
></DT
|
|
><DD
|
|
>The link-local address generated at boot.</DD
|
|
></DL
|
|
></DIV
|
|
></DIV
|
|
></DIV
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect1"
|
|
><HR><H1
|
|
CLASS="sect1"
|
|
><A
|
|
NAME="dotest"
|
|
></A
|
|
>5. Doing some tests</H1
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="pretest"
|
|
></A
|
|
>5.1. Pre-test</H2
|
|
><P
|
|
>Do every configuration as shown above; it's especially important
|
|
to have a different ESSID on the home net and visited network. </P
|
|
><P
|
|
>When you start mobile-IPv6 on MN, you will see
|
|
multicasting router solicitations messages:</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # 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)
|
|
...
|
|
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><HR><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="MovDet"
|
|
></A
|
|
>5.2. Movement detection</H2
|
|
><P
|
|
>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).</P
|
|
><P
|
|
> To easily see whats going on, you should have one xterm
|
|
window for each of these commands: </P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # watch ifconfig eth0
|
|
# watch route -A inet6
|
|
# tcpdump -i eth0 -vv ip6 or proto ipv6
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><P
|
|
>To <SPAN
|
|
CLASS="QUOTE"
|
|
>"travel"</SPAN
|
|
> to another net, you can issue the
|
|
command on MN:</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # iwconfig eth1 essid visitnet
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><P
|
|
>The MN is then on the other wireless network, and since it is
|
|
sending out <SPAN
|
|
CLASS="QUOTE"
|
|
>"router solicitation"</SPAN
|
|
> (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 <B
|
|
CLASS="command"
|
|
>ifconfig eth0</B
|
|
> you will see the new IPv6
|
|
address:</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # 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 <A
|
|
NAME="newaddr"
|
|
><IMG
|
|
SRC="../images/callouts/1.gif"
|
|
HSPACE="0"
|
|
VSPACE="0"
|
|
BORDER="0"
|
|
ALT="(1)"></A
|
|
>
|
|
inet6 addr: fec0:106:2700:0:290:7dff:fef3:31a/64 Scope:Site <A
|
|
NAME="superadr"
|
|
><IMG
|
|
SRC="../images/callouts/2.gif"
|
|
HSPACE="0"
|
|
VSPACE="0"
|
|
BORDER="0"
|
|
ALT="(2)"></A
|
|
>
|
|
inet6 addr: fec0:106:2700::4/64 Scope:Site <A
|
|
NAME="oldaddr"
|
|
><IMG
|
|
SRC="../images/callouts/3.gif"
|
|
HSPACE="0"
|
|
VSPACE="0"
|
|
BORDER="0"
|
|
ALT="(3)"></A
|
|
>
|
|
inet6 addr: fe80::290:7dff:fef3:31a/64 Scope:Link <A
|
|
NAME="linkaddr"
|
|
><IMG
|
|
SRC="../images/callouts/4.gif"
|
|
HSPACE="0"
|
|
VSPACE="0"
|
|
BORDER="0"
|
|
ALT="(4)"></A
|
|
>
|
|
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
|
|
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><DIV
|
|
CLASS="calloutlist"
|
|
><DL
|
|
COMPACT="COMPACT"
|
|
><DT
|
|
><A
|
|
HREF="#newaddr"
|
|
><IMG
|
|
SRC="../images/callouts/1.gif"
|
|
HSPACE="0"
|
|
VSPACE="0"
|
|
BORDER="0"
|
|
ALT="(1)"></A
|
|
></DT
|
|
><DD
|
|
>The new <SPAN
|
|
CLASS="QUOTE"
|
|
>"foreign"</SPAN
|
|
> address, generated by
|
|
combining AR's prefix and MAC-address</DD
|
|
><DT
|
|
><A
|
|
HREF="#superadr"
|
|
><IMG
|
|
SRC="../images/callouts/2.gif"
|
|
HSPACE="0"
|
|
VSPACE="0"
|
|
BORDER="0"
|
|
ALT="(2)"></A
|
|
></DT
|
|
><DD
|
|
>The superfluous home network address (because of HA
|
|
radvd messages and MN autoconf set to
|
|
<SPAN
|
|
CLASS="QUOTE"
|
|
>"true"</SPAN
|
|
>).</DD
|
|
><DT
|
|
><A
|
|
HREF="#oldaddr"
|
|
><IMG
|
|
SRC="../images/callouts/3.gif"
|
|
HSPACE="0"
|
|
VSPACE="0"
|
|
BORDER="0"
|
|
ALT="(3)"></A
|
|
></DT
|
|
><DD
|
|
>The <SPAN
|
|
CLASS="QUOTE"
|
|
>"original"</SPAN
|
|
> (home) address</DD
|
|
><DT
|
|
><A
|
|
HREF="#linkaddr"
|
|
><IMG
|
|
SRC="../images/callouts/4.gif"
|
|
HSPACE="0"
|
|
VSPACE="0"
|
|
BORDER="0"
|
|
ALT="(4)"></A
|
|
></DT
|
|
><DD
|
|
>The link-local address generated at boot</DD
|
|
></DL
|
|
></DIV
|
|
><P
|
|
>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:</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # mipdiag -s
|
|
Mobile IPv6 Statistics
|
|
NEncapsulations : 0
|
|
NDecapsulations : 0
|
|
NBindUpdatesRcvd : 0
|
|
NBindAcksRcvd : 1 <A
|
|
NAME="back"
|
|
><IMG
|
|
SRC="../images/callouts/1.gif"
|
|
HSPACE="0"
|
|
VSPACE="0"
|
|
BORDER="0"
|
|
ALT="(1)"></A
|
|
>
|
|
NBindNAcksRcvd : 0
|
|
NBindRqsRcvd : 0
|
|
NBindUpdatesSent : 1 <A
|
|
NAME="bupdate"
|
|
><IMG
|
|
SRC="../images/callouts/2.gif"
|
|
HSPACE="0"
|
|
VSPACE="0"
|
|
BORDER="0"
|
|
ALT="(2)"></A
|
|
>
|
|
NBindAcksSent : 0
|
|
NBindNAcksSent : 0
|
|
NBindRqsSent : 0
|
|
NBindUpdatesDropAuth : 0
|
|
NBindUpdatesDropInvalid : 0
|
|
NBindUpdatesDropMisc : 0
|
|
NBindAcksDropAuth : 0
|
|
NBindAcksDropInvalid : 0
|
|
NBindAcksDropMisc : 0
|
|
NBindRqsDropAuth : 0
|
|
NBindRqsDropInvalid : 0
|
|
NBindRqsDropMisc : 0
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><DIV
|
|
CLASS="calloutlist"
|
|
><DL
|
|
COMPACT="COMPACT"
|
|
><DT
|
|
><A
|
|
HREF="#back"
|
|
><IMG
|
|
SRC="../images/callouts/1.gif"
|
|
HSPACE="0"
|
|
VSPACE="0"
|
|
BORDER="0"
|
|
ALT="(1)"></A
|
|
></DT
|
|
><DD
|
|
>One binding ACK received.</DD
|
|
><DT
|
|
><A
|
|
HREF="#bupdate"
|
|
><IMG
|
|
SRC="../images/callouts/2.gif"
|
|
HSPACE="0"
|
|
VSPACE="0"
|
|
BORDER="0"
|
|
ALT="(2)"></A
|
|
></DT
|
|
><DD
|
|
>One binding UPDATE sent.</DD
|
|
></DL
|
|
></DIV
|
|
><P
|
|
>You can also verify the binding with the following command
|
|
(on MN):</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # 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
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><P
|
|
>You can also verify it on HA with the statistics option
|
|
(-s) and with the <SPAN
|
|
CLASS="QUOTE"
|
|
>"binding cache"</SPAN
|
|
> (-c) option:</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # 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
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><HR><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="ping6"
|
|
></A
|
|
>5.3. ping6</H2
|
|
><P
|
|
>From the MN, you can try to ping AR's eth1
|
|
(fec0:106:1100::1):</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # 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
|
|
...
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><P
|
|
>By using tcpdump, you can see how the packets travel:</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> 12:13:51.789688 fec0:106:1100:0:202:a5ff:fe6f:a08a > fec0:106:2700::2: \ <A
|
|
NAME="mntoha"
|
|
><IMG
|
|
SRC="../images/callouts/1.gif"
|
|
HSPACE="0"
|
|
VSPACE="0"
|
|
BORDER="0"
|
|
ALT="(1)"></A
|
|
>
|
|
fec0:106:2700::4 > fec0:106:1100::1: icmp6: echo request \ <A
|
|
NAME="hatocr"
|
|
><IMG
|
|
SRC="../images/callouts/2.gif"
|
|
HSPACE="0"
|
|
VSPACE="0"
|
|
BORDER="0"
|
|
ALT="(2)"></A
|
|
>
|
|
(len 64, hlim 64) (len 104, hlim 255)
|
|
|
|
12:13:51.797675 fec0:106:2700::2 > fec0:106:1100:0:202:a5ff:fe6f:a08a: \ <A
|
|
NAME="artomn"
|
|
><IMG
|
|
SRC="../images/callouts/3.gif"
|
|
HSPACE="0"
|
|
VSPACE="0"
|
|
BORDER="0"
|
|
ALT="(3)"></A
|
|
>
|
|
fec0:106:1100::1 > fec0:106:2700::4: icmp6: echo reply \
|
|
(len 64, hlim 62) (len 104, hlim 253)
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><DIV
|
|
CLASS="calloutlist"
|
|
><DL
|
|
COMPACT="COMPACT"
|
|
><DT
|
|
><A
|
|
HREF="#mntoha"
|
|
><IMG
|
|
SRC="../images/callouts/1.gif"
|
|
HSPACE="0"
|
|
VSPACE="0"
|
|
BORDER="0"
|
|
ALT="(1)"></A
|
|
></DT
|
|
><DD
|
|
>The packet first goes from MN to the HA using MN new
|
|
IPv6 address.</DD
|
|
><DT
|
|
><A
|
|
HREF="#hatocr"
|
|
><IMG
|
|
SRC="../images/callouts/2.gif"
|
|
HSPACE="0"
|
|
VSPACE="0"
|
|
BORDER="0"
|
|
ALT="(2)"></A
|
|
></DT
|
|
><DD
|
|
>Then from HA to AR.</DD
|
|
><DT
|
|
><A
|
|
HREF="#artomn"
|
|
><IMG
|
|
SRC="../images/callouts/3.gif"
|
|
HSPACE="0"
|
|
VSPACE="0"
|
|
BORDER="0"
|
|
ALT="(3)"></A
|
|
></DT
|
|
><DD
|
|
>The AR then responds to HA and tunnels the packets to
|
|
MN.</DD
|
|
></DL
|
|
></DIV
|
|
><P
|
|
>You can now see the statistics have been updated (on MN):</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # mipdiag -s
|
|
Mobile IPv6 Statistics
|
|
NEncapsulations : 56
|
|
NDecapsulations : 25
|
|
...
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><HR><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="routeTable"
|
|
></A
|
|
>5.4. Kernel IP routing table</H2
|
|
><P
|
|
>One interesting thing MIPv6 does is change the default route to
|
|
a tunnel. The new default route becomes:</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # route -A inet6
|
|
Kernel IPv6 routing table
|
|
Destination Next Hop Flags Metric Ref Use Iface
|
|
::/0 :: UD 64 0 0 ip6tnl1
|
|
....
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><P
|
|
>If it doesn't add a default route, you may add it manually:</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # ip route ::/0 via dev ip6tnl
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><HR><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="movement"
|
|
></A
|
|
>5.5. Travelling through several foregin LAN's</H2
|
|
><P
|
|
>To travel to several visited networks, is no different than
|
|
travel to <EM
|
|
>one</EM
|
|
> network. The only thing you
|
|
must have in mind is that you will generate a new address for each
|
|
visited network.
|
|
</P
|
|
><DIV
|
|
CLASS="mediaobject"
|
|
><P
|
|
><IMG
|
|
SRC="images/lanvisits.png"
|
|
ALIGN="center"
|
|
WIDTH="550px"><DIV
|
|
CLASS="caption"
|
|
><P
|
|
>MN travelling through severeal different LANs.</P
|
|
></DIV
|
|
></P
|
|
></DIV
|
|
><P
|
|
></P
|
|
><OL
|
|
TYPE="1"
|
|
><LI
|
|
><P
|
|
>MN first visits 'visitnet', as we have been through above.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>MN is then travelling from 'visitnet' to
|
|
'visitnet2'.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>When at 'visitnet2', MN generates a new IPv6 address and
|
|
do a new binding update to HA.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>MN then travels back home. (Se next section.)</P
|
|
></LI
|
|
></OL
|
|
><P
|
|
>The AR at <SPAN
|
|
CLASS="QUOTE"
|
|
>"visitnet2"</SPAN
|
|
>, is configured exactly
|
|
as the other AR (at <SPAN
|
|
CLASS="QUOTE"
|
|
>"visitnet"</SPAN
|
|
>), except using address
|
|
<TT
|
|
CLASS="userinput"
|
|
><B
|
|
>fec0:106:1000::/64</B
|
|
></TT
|
|
> instead of
|
|
<TT
|
|
CLASS="userinput"
|
|
><B
|
|
>fec0:106:1100::/64</B
|
|
></TT
|
|
>.</P
|
|
><P
|
|
>To make the mobile node travel from 'visitnet' to
|
|
'visitnet2', issue the command (on MN):</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # iwconfig eth0 essid visitnet2
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><P
|
|
>You will then see the MN configures itself to the new network:</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # 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 <A
|
|
NAME="net2"
|
|
><IMG
|
|
SRC="../images/callouts/1.gif"
|
|
HSPACE="0"
|
|
VSPACE="0"
|
|
BORDER="0"
|
|
ALT="(1)"></A
|
|
>
|
|
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
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><DIV
|
|
CLASS="calloutlist"
|
|
><DL
|
|
COMPACT="COMPACT"
|
|
><DT
|
|
><A
|
|
HREF="#net2"
|
|
><IMG
|
|
SRC="../images/callouts/1.gif"
|
|
HSPACE="0"
|
|
VSPACE="0"
|
|
BORDER="0"
|
|
ALT="(1)"></A
|
|
></DT
|
|
><DD
|
|
>The new autoconfigured address at 'visitnet2'.</DD
|
|
></DL
|
|
></DIV
|
|
><P
|
|
><EM
|
|
>Note! You may have to restart mobile-ipv6 on MN
|
|
when coming to a new network!</EM
|
|
></P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # /etc/init.d/mobile-ip6 restart
|
|
Stopping Mobile IPv6: OK
|
|
Starting Mobile IPv6: OK
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><P
|
|
>The MN will then perform a new binding update to HA. Notice
|
|
the new <SPAN
|
|
CLASS="QUOTE"
|
|
>"care-of address"</SPAN
|
|
>:</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # 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
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><P
|
|
>You can also see the <SPAN
|
|
CLASS="QUOTE"
|
|
>"binding cache"</SPAN
|
|
> on HA has
|
|
been updated:</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # 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
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><HR><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="home"
|
|
></A
|
|
>5.6. Returning home</H2
|
|
><P
|
|
>To make the MN return home, you can just issue the
|
|
command:</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> # iwconfig eth0 essid homenet
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><P
|
|
>The MN will know it is back home, since HA is sending out
|
|
radvd messages with the HA-bit set (AdvHomeAgentFlag), see <A
|
|
HREF="#radvdar"
|
|
>Section 4.2.4</A
|
|
></P
|
|
><P
|
|
>You can see the MN <SPAN
|
|
CLASS="QUOTE"
|
|
>"is back home"</SPAN
|
|
>, since the
|
|
binding cache information at HA is flushed (empty):</P
|
|
><TABLE
|
|
BORDER="0"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="screen"
|
|
> Mobile IPv6 Binding cache
|
|
Home Address Care-of Address Lifetime Type
|
|
</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><HR><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="realLife"
|
|
></A
|
|
>5.7. Real life testing - smooth handover</H2
|
|
><P
|
|
>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 <SPAN
|
|
CLASS="QUOTE"
|
|
>"travel"</SPAN
|
|
>
|
|
and you can see an almost smooth handover.</P
|
|
><DIV
|
|
CLASS="mediaobject"
|
|
><P
|
|
><IMG
|
|
SRC="images/gnomemeeting1.png"
|
|
ALIGN="center"
|
|
WIDTH="250px"><DIV
|
|
CLASS="caption"
|
|
><P
|
|
>Using GnomeMeeting with IPv6 to test roaming between two
|
|
wireless networks</P
|
|
></DIV
|
|
></P
|
|
></DIV
|
|
></DIV
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect1"
|
|
><HR><H1
|
|
CLASS="sect1"
|
|
><A
|
|
NAME="faq"
|
|
></A
|
|
>6. FAQ</H1
|
|
><P
|
|
></P
|
|
><OL
|
|
TYPE="1"
|
|
><LI
|
|
><P
|
|
><EM
|
|
>Q: Why do we have to create the
|
|
<TT
|
|
CLASS="filename"
|
|
>/dev/mipv6_dev</TT
|
|
> entry?</EM
|
|
></P
|
|
><P
|
|
>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. <B
|
|
CLASS="command"
|
|
>mknod</B
|
|
> creates the special
|
|
device file with paramters recognizable by the mobile-ip6
|
|
module.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
><EM
|
|
>Q: Is there any support for kernel 2.6.x?</EM
|
|
></P
|
|
><P
|
|
>A: Here is the<A
|
|
HREF="http://www.mobile-ipv6.org/pipermail/mipl/2003-December/001871.html"
|
|
TARGET="_top"
|
|
> answer from Henrik Petander</A
|
|
> on the MIPL
|
|
mailinglist:</P
|
|
><P
|
|
><SPAN
|
|
CLASS="QUOTE"
|
|
>"Here is a short overview of the status of MIPL for
|
|
2.6 kernel series:"</SPAN
|
|
></P
|
|
><P
|
|
><SPAN
|
|
CLASS="QUOTE"
|
|
>"We have finished the kernel infrastructure for
|
|
Mobile IPv6 in cooperation with the USAGI project. The
|
|
infrastructure does route optimization, tunneling and policy
|
|
routing."</SPAN
|
|
></P
|
|
><P
|
|
><SPAN
|
|
CLASS="QUOTE"
|
|
>"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."</SPAN
|
|
></P
|
|
></LI
|
|
><LI
|
|
><P
|
|
><EM
|
|
>Q: Does MIPL support
|
|
IPSec?</EM
|
|
></P
|
|
><P
|
|
>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.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
><EM
|
|
>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)?</EM
|
|
></P
|
|
><P
|
|
>A: You can control this through:</P
|
|
><P
|
|
> <TT
|
|
CLASS="userinput"
|
|
><B
|
|
>/proc/sys/conf/net/ipv6/mobility/accept_return_routability</B
|
|
></TT
|
|
>
|
|
</P
|
|
><P
|
|
>If you do not want to use return routability and route optimization,
|
|
set it to 0 with:</P
|
|
><P
|
|
> <TT
|
|
CLASS="userinput"
|
|
><B
|
|
># echo 0 >
|
|
/proc/sys/..../accept_return_routability</B
|
|
></TT
|
|
>
|
|
</P
|
|
><P
|
|
> Then MN will communicate with CNs only through the
|
|
home tunnel.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
><EM
|
|
>Q: Can different wireless networks
|
|
have different ESSIDs/WEP keys?</EM
|
|
></P
|
|
><P
|
|
>A: Yes, but you must change this upon arrival to the new
|
|
network. MIPv6 from MIPL can't do this automatically.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
><EM
|
|
>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 <SPAN
|
|
CLASS="QUOTE"
|
|
>"flush/delete"</SPAN
|
|
> these
|
|
addresses?</EM
|
|
></P
|
|
><P
|
|
>A: No, I do not know of any automatic way these adresses
|
|
can be removed, but you can delete them manually:</P
|
|
><P
|
|
><TT
|
|
CLASS="userinput"
|
|
><B
|
|
> # ifconfig eth0 inet6 del <ipv6-address>
|
|
</B
|
|
></TT
|
|
></P
|
|
></LI
|
|
><LI
|
|
><P
|
|
><EM
|
|
>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!</EM
|
|
></P
|
|
><P
|
|
>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:</P
|
|
><P
|
|
><TT
|
|
CLASS="userinput"
|
|
><B
|
|
> # ip route add fec0:106:2700::/64 via fec0:106:2300::1
|
|
</B
|
|
></TT
|
|
></P
|
|
><P
|
|
>or</P
|
|
><P
|
|
><TT
|
|
CLASS="userinput"
|
|
><B
|
|
> # route -A inet6 add fec0:106:2700::/64 gw fec0:106:2300::1 dev eth0
|
|
</B
|
|
></TT
|
|
></P
|
|
></LI
|
|
><LI
|
|
><P
|
|
><EM
|
|
>Q: How do I set a default gateway in
|
|
IPv6?</EM
|
|
></P
|
|
><P
|
|
>A: You do that using the traditional <SPAN
|
|
CLASS="QUOTE"
|
|
>"route"</SPAN
|
|
>:</P
|
|
><P
|
|
><TT
|
|
CLASS="userinput"
|
|
><B
|
|
> # route -A inet6 add default gw <ipv6-host>
|
|
</B
|
|
></TT
|
|
></P
|
|
><P
|
|
>or the newer <SPAN
|
|
CLASS="QUOTE"
|
|
>"ip"</SPAN
|
|
> command:</P
|
|
><P
|
|
><TT
|
|
CLASS="userinput"
|
|
><B
|
|
> # ip route ::/0 via <ipv6-host>
|
|
</B
|
|
></TT
|
|
></P
|
|
></LI
|
|
><LI
|
|
><P
|
|
><EM
|
|
>Q: Why does the host send a multicast
|
|
address rather than an anycast address, requesting for router
|
|
solicitation?</EM
|
|
></P
|
|
><P
|
|
>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 <SPAN
|
|
CLASS="QUOTE"
|
|
>"best"</SPAN
|
|
> default router.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
><EM
|
|
>Q: Why doesn't MN notice that it has
|
|
moved?</EM
|
|
></P
|
|
><P
|
|
>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 <TT
|
|
CLASS="option"
|
|
>on</TT
|
|
>. See <B
|
|
CLASS="command"
|
|
>man radvd.conf</B
|
|
> for
|
|
details.</P
|
|
></LI
|
|
></OL
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect1"
|
|
><HR><H1
|
|
CLASS="sect1"
|
|
><A
|
|
NAME="resources"
|
|
></A
|
|
>7. Useful Resources</H1
|
|
><P
|
|
> <P
|
|
></P
|
|
><OL
|
|
TYPE="1"
|
|
><LI
|
|
><P
|
|
>Mobile IPv6 for Linux <A
|
|
HREF="http://www.mipl.mediapoli.com/"
|
|
TARGET="_top"
|
|
> http://www.mipl.mediapoli.com/</A
|
|
></P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Mobile IP Working Group (IETF) <A
|
|
HREF="http://www.ietf.org/html.charters/mobileip-charter.html"
|
|
TARGET="_top"
|
|
> http://www.ietf.org/html.charters/mobileip-charter.html </A
|
|
></P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Mobile IPv6 draft <A
|
|
HREF="http://www.ietf.org/internet-drafts/draft-ietf-mobileip-ipv6-24.txt"
|
|
TARGET="_top"
|
|
> http://www.ietf.org/internet-drafts/draft-ietf-mobileip-ipv6-24.txt</A
|
|
>
|
|
</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>IPv6 Working Group (IETF) <A
|
|
HREF="http://www.ietf.org/html.charters/ipv6-charter.html"
|
|
TARGET="_top"
|
|
> http://www.ietf.org/html.charters/ipv6-charter.html </A
|
|
></P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>RFC2460 Internet Protocol, Version 6 (IPv6) Specification
|
|
<A
|
|
HREF="http://www.ietf.org/rfc/rfc2460.txt"
|
|
TARGET="_top"
|
|
> http://www.ietf.org/rfc/rfc2460.txt </A
|
|
></P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>RFC2461 Neighbor Discovery for IP Version 6 (IPv6) <A
|
|
HREF="http://www.ietf.org/rfc/rfc2461.txt"
|
|
TARGET="_top"
|
|
> http://www.ietf.org/rfc/rfc2461.txt </A
|
|
></P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>RFC2462 IPv6 Stateless Address Autoconfiguration <A
|
|
HREF="http://www.ietf.org/rfc/rfc2462.txt"
|
|
TARGET="_top"
|
|
> http://www.ietf.org/rfc/rfc2462.txt </A
|
|
></P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Peter Bieringer's Linux IPv6 HOWTO (en) <A
|
|
HREF="http://ldp.linux.no/HOWTO/Linux+IPv6-HOWTO/"
|
|
TARGET="_top"
|
|
> http://ldp.linux.no/HOWTO/Linux+IPv6-HOWTO/ </A
|
|
></P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Current Status of IPv6 Support for Networking Applications
|
|
<A
|
|
HREF="http://www.deepspace6.net/docs/ipv6_status_page_apps.html"
|
|
TARGET="_top"
|
|
> http://www.deepspace6.net/docs/ipv6_status_page_apps.html</A
|
|
></P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Linux Kernel HOWTO <A
|
|
HREF="http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/html_single/Kernel-HOWTO.html"
|
|
TARGET="_top"
|
|
> http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/html_single/Kernel-HOWTO.html
|
|
</A
|
|
></P
|
|
></LI
|
|
></OL
|
|
>
|
|
</P
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect1"
|
|
><HR><H1
|
|
CLASS="sect1"
|
|
><A
|
|
NAME="copyack"
|
|
></A
|
|
>8. Copyright, acknowledgments and miscellaneous</H1
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="copyright"
|
|
></A
|
|
>8.1. Copyright and License</H2
|
|
><P
|
|
> Copyright (c) 2003, 2004 Lars Strand.</P
|
|
><P
|
|
> Permission is granted to copy, distribute and/or modify this
|
|
document under the terms of the <A
|
|
HREF="http://www.gnu.org/licenses/fdl.html"
|
|
TARGET="_top"
|
|
>GNU Free
|
|
Documentation License</A
|
|
>, 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".
|
|
</P
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><HR><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="produced"
|
|
></A
|
|
>8.2. How this document was produced</H2
|
|
><P
|
|
>This document was originally written in LaTeX using
|
|
Emacs. HTML version created with latex2html. Later it was
|
|
converted to DocBook XML.</P
|
|
><P
|
|
>An up-to-date version of this document can be found at:</P
|
|
><P
|
|
> HTML: <A
|
|
HREF="http://www.tldp.org/HOWTO/Mobile-IPv6-HOWTO/"
|
|
TARGET="_top"
|
|
> http://www.tldp.org/HOWTO/Mobile-IPv6-HOWTO/</A
|
|
> </P
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><HR><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="feedback"
|
|
></A
|
|
>8.3. Feedback</H2
|
|
><P
|
|
>Suggestions, corrections, additions wanted. Contributors
|
|
wanted and acknowledged. Flames not wanted.</P
|
|
><P
|
|
>I can always be reached at <TT
|
|
CLASS="email"
|
|
><<A
|
|
HREF="mailto:lars at unik
|
|
no"
|
|
>lars at unik
|
|
no</A
|
|
>></TT
|
|
></P
|
|
><P
|
|
>Homepage: <A
|
|
HREF="http://www.gnist.org/~lars"
|
|
TARGET="_top"
|
|
> http://www.gnist.org/~lars</A
|
|
></P
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><HR><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="ack"
|
|
></A
|
|
>8.4. Acknowledgments</H2
|
|
><P
|
|
>This document was produced as a part of Interoperable
|
|
Networks for Secure Communications <A
|
|
HREF="http://insc.nodeca.mil.no/"
|
|
TARGET="_top"
|
|
>(INSC task 6)</A
|
|
></P
|
|
><P
|
|
>Thanks to Andreas Hafslund (andreha [at] unik.no) for
|
|
initial support. Also thanks to UniK (University Graduate Center)
|
|
<A
|
|
HREF="http://www.unik.no"
|
|
TARGET="_top"
|
|
>http://www.unik.no</A
|
|
> and FFI
|
|
(Norwegian Defence Research Establishment) <A
|
|
HREF="http://www.ffi.mil.no"
|
|
TARGET="_top"
|
|
>http://www.ffi.mil.no</A
|
|
> for
|
|
hardware support.</P
|
|
><P
|
|
>Thanks also to the other HOWTO authors whose works I have
|
|
referenced: </P
|
|
><P
|
|
><EM
|
|
>Linux IPv6 HOWTO (en)</EM
|
|
> by Peter
|
|
Bieringer</P
|
|
></DIV
|
|
></DIV
|
|
><DIV
|
|
CLASS="appendix"
|
|
><HR><H1
|
|
CLASS="appendix"
|
|
><A
|
|
NAME="gfdl"
|
|
></A
|
|
>A. GNU Free Documentation License</H1
|
|
><FONT
|
|
COLOR="RED"
|
|
>Version 1.2, November 2002</FONT
|
|
><A
|
|
NAME="fsf-copyright"
|
|
></A
|
|
><BLOCKQUOTE
|
|
CLASS="BLOCKQUOTE"
|
|
><P
|
|
>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.</P
|
|
></BLOCKQUOTE
|
|
><DIV
|
|
CLASS="section"
|
|
><HR><H1
|
|
CLASS="section"
|
|
><A
|
|
NAME="gfdl-0"
|
|
></A
|
|
>A.1. PREAMBLE</H1
|
|
><P
|
|
>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.</P
|
|
><P
|
|
>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.</P
|
|
><P
|
|
>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.</P
|
|
></DIV
|
|
><DIV
|
|
CLASS="section"
|
|
><HR><H1
|
|
CLASS="section"
|
|
><A
|
|
NAME="gfdl-1"
|
|
></A
|
|
>A.2. APPLICABILITY AND DEFINITIONS</H1
|
|
><P
|
|
>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.</P
|
|
><P
|
|
>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.</P
|
|
><P
|
|
>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.</P
|
|
><P
|
|
>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.</P
|
|
><P
|
|
>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.</P
|
|
><P
|
|
>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".</P
|
|
><P
|
|
>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.</P
|
|
><P
|
|
>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.</P
|
|
><P
|
|
>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.</P
|
|
><P
|
|
>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.</P
|
|
></DIV
|
|
><DIV
|
|
CLASS="section"
|
|
><HR><H1
|
|
CLASS="section"
|
|
><A
|
|
NAME="gfdl-2"
|
|
></A
|
|
>A.3. VERBATIM COPYING</H1
|
|
><P
|
|
>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.
|
|
</P
|
|
><P
|
|
>You may also lend copies, under the same conditions stated above,
|
|
and you may publicly display copies.</P
|
|
></DIV
|
|
><DIV
|
|
CLASS="section"
|
|
><HR><H1
|
|
CLASS="section"
|
|
><A
|
|
NAME="gfdl-3"
|
|
></A
|
|
>A.4. COPYING IN QUANTITY</H1
|
|
><P
|
|
>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.</P
|
|
><P
|
|
>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.</P
|
|
><P
|
|
>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.</P
|
|
><P
|
|
>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.</P
|
|
></DIV
|
|
><DIV
|
|
CLASS="section"
|
|
><HR><H1
|
|
CLASS="section"
|
|
><A
|
|
NAME="gfdl-4"
|
|
></A
|
|
>A.5. MODIFICATIONS</H1
|
|
><P
|
|
>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:</P
|
|
><P
|
|
></P
|
|
><OL
|
|
TYPE="A"
|
|
><LI
|
|
><P
|
|
>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.
|
|
</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>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.
|
|
</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>State on the Title page the name of the publisher of
|
|
the Modified Version, as the publisher.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Preserve all the copyright notices of the Document.
|
|
</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Add an appropriate copyright notice for your
|
|
modifications adjacent to the other copyright notices.
|
|
</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>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
|
|
<A
|
|
HREF="#gfdl-addendum"
|
|
>Addendum</A
|
|
> below.
|
|
</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Preserve in that license notice the full lists of
|
|
Invariant Sections and required Cover Texts given in the Document's
|
|
license notice.</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Include an unaltered copy of this License.
|
|
</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>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.
|
|
</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>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.
|
|
</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>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.
|
|
</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>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.
|
|
</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Delete any section Entitled "Endorsements".
|
|
Such a section may not be included in the Modified Version.
|
|
</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Do not retitle any existing section to be Entitled
|
|
"Endorsements" or to conflict in title with any Invariant Section.
|
|
</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
>Preserve any Warranty Disclaimers.
|
|
</P
|
|
></LI
|
|
></OL
|
|
><P
|
|
>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.</P
|
|
><P
|
|
>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.</P
|
|
><P
|
|
>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.</P
|
|
><P
|
|
>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.</P
|
|
></DIV
|
|
><DIV
|
|
CLASS="section"
|
|
><HR><H1
|
|
CLASS="section"
|
|
><A
|
|
NAME="gfdl-5"
|
|
></A
|
|
>A.6. COMBINING DOCUMENTS</H1
|
|
><P
|
|
>You may combine the Document with other documents released under
|
|
this License, under the terms defined in <A
|
|
HREF="#gfdl-4"
|
|
>section
|
|
4</A
|
|
> 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.</P
|
|
><P
|
|
>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.</P
|
|
><P
|
|
>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".</P
|
|
></DIV
|
|
><DIV
|
|
CLASS="section"
|
|
><HR><H1
|
|
CLASS="section"
|
|
><A
|
|
NAME="gfdl-6"
|
|
></A
|
|
>A.7. COLLECTIONS OF DOCUMENTS</H1
|
|
><P
|
|
>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.</P
|
|
><P
|
|
>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.</P
|
|
></DIV
|
|
><DIV
|
|
CLASS="section"
|
|
><HR><H1
|
|
CLASS="section"
|
|
><A
|
|
NAME="gfdl-7"
|
|
></A
|
|
>A.8. AGGREGATION WITH INDEPENDENT WORKS</H1
|
|
><P
|
|
>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.</P
|
|
><P
|
|
>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.</P
|
|
></DIV
|
|
><DIV
|
|
CLASS="section"
|
|
><HR><H1
|
|
CLASS="section"
|
|
><A
|
|
NAME="gfdl-8"
|
|
></A
|
|
>A.9. TRANSLATION</H1
|
|
><P
|
|
>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.</P
|
|
><P
|
|
>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.</P
|
|
></DIV
|
|
><DIV
|
|
CLASS="section"
|
|
><HR><H1
|
|
CLASS="section"
|
|
><A
|
|
NAME="gfdl-9"
|
|
></A
|
|
>A.10. TERMINATION</H1
|
|
><P
|
|
>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.</P
|
|
></DIV
|
|
><DIV
|
|
CLASS="section"
|
|
><HR><H1
|
|
CLASS="section"
|
|
><A
|
|
NAME="gfdl-10"
|
|
></A
|
|
>A.11. FUTURE REVISIONS OF THIS LICENSE</H1
|
|
><P
|
|
>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/.</P
|
|
><P
|
|
>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.</P
|
|
></DIV
|
|
><DIV
|
|
CLASS="section"
|
|
><HR><H1
|
|
CLASS="section"
|
|
><A
|
|
NAME="gfdl-addendum"
|
|
></A
|
|
>A.12. ADDENDUM: How to use this License for
|
|
your documents</H1
|
|
><P
|
|
>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:</P
|
|
><A
|
|
NAME="copyright-sample"
|
|
></A
|
|
><BLOCKQUOTE
|
|
CLASS="BLOCKQUOTE"
|
|
><P
|
|
> 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".
|
|
</P
|
|
></BLOCKQUOTE
|
|
><P
|
|
>If you have Invariant Sections, Front-Cover Texts and Back-Cover
|
|
Texts, replace the "with...Texts." line with this:</P
|
|
><A
|
|
NAME="inv-cover-sample"
|
|
></A
|
|
><BLOCKQUOTE
|
|
CLASS="BLOCKQUOTE"
|
|
><P
|
|
> with the Invariant Sections being LIST THEIR TITLES, with the
|
|
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
|
|
</P
|
|
></BLOCKQUOTE
|
|
><P
|
|
>If you have Invariant Sections without Cover Texts, or some other
|
|
combination of the three, merge those two alternatives to suit the
|
|
situation.</P
|
|
><P
|
|
>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.</P
|
|
></DIV
|
|
></DIV
|
|
></DIV
|
|
></BODY
|
|
></HTML
|
|
> |