Mobile IP for Solaris/Linux

Networking and Security Center
Sun Microsystems Laboratories (Sun Microsystems, Inc)
(Last Update: Jan 14, 1999)

What is Mobile IP?

Mobile IP is a new proposed standard of the Internet Engineering Task Force (IETF) designed to support mobile users. In the traditional Internet architecture, a computer's IP address encodes its topological location within the Internet and must be changed whenever the computer is moved to a new network. While newer protocols such as DHCP simplify address reconfiguration, they do not address related problems. For example, an address change causes a mobile computer to lose already established TCP connections. There is also the problem of efficiently propagating a mobile computer's current address to other computers that may wish to communicate with it.

Mobile IP allows a mobile computer to be reachable at a fixed IP address (called its home address) irrespective of its current point of attachment to the Internet. Transport layer connections are maintained across moves and all this is accomplished without the need to propagate host-specific routes throughout the Internet routing fabric.


How does it work?

In brief, Mobile IP works as follows. A mobile computer visiting a foreign network chooses a care-of address on that subnet and registers it with its home agent (HA), a special entity residing on its home subnet. The home agent intercepts IP packets meant for the mobile computer and tunnels them to the registered care-of address. Tunneling refers to the process of enclosing the original datagram, as data, inside another datagram with a new IP header. The destination field in the outer IP header contains the care-of address -- a topologically significant address -- to which standard IP routing mechanisms can deliver packets. The care-of address may belong to a specially designated node, a foreign agent (FA), or may be acquired (perhaps temporarily) by the mobile node, e.g. through DHCP or PPP. In the latter case, a mobile node is said to have a co-located care-of address. At the endpoint of the tunnel, the outer IP header is removed to recover the original IP packet which is then delivered to the mobile node.

Here's a short article that describes Mobile IP in greater detail. The complete specification is available as RFC 2002.


About Solaris Mobile IP

The Solaris implementation of Mobile IP consists of two pieces: Do NOT use the agent and client code simultaneously on the same host.
]Instructions on obtaining and installing this software are included below.

The document Solaris Mobile IP: Design and Implementation (Postscript, PDF) describes the overall architecture and code organization. It also includes a section on setting up a Mobile IP testbed and manual pages. As such, the document should be useful for end users as well as developers interested in porting and/or enhancing this software.

Note: If you do not have a PDF viewer, you can download it for free from the Adobe website.

This implementation also supports firewall traversal as described in:


Using Solaris Mobile IP

Before you install

  1. The Solaris Mobile IP software is made available free of cost subject to the terms and conditions outlined on the license page. After you indicate your acceptance of these terms, you will be presented with the URLs containing the software.
  2. This software is an experimental prototype and using it may cause you to lose valuable information. Back up anything you consider important before installing this software.

  3. Make sure your system satisfies the following hardware and software requirements. You must have either a SPARC or x86 platform with atleast 16MB of RAM running Solaris 2.5.1 or 2.6. Do not attempt to use the software on an older release of Solaris. The software has not been tested on Solaris 7 (aka Solaris 2.7).
  4. Make sure you have root access to your system. You will need to be logged in as root to install and start this software. As such, a certain level of familiarity with Solaris system administration is assumed. If you do not have super-user privileges on your system, contact your system administrator.
  5. You can either use the pre-compiled binary packages or make your own from the source code. Various README files included with the source distribution contain the appropriate instructions. [NOTE: the pre-compiled x86 packages do not correspond to the latest source code. x86 users are advised to create new packages from source.]

Installation Steps for Mobility Agent Software

  1. Fetch the pre-compiled package appropriate for your hardware platform.
  2. Download these files and uncompress them using the uncompress command. If you use a web browser to download these files, the browser may or may not uncompress the file for you. Some browsers may incorrectly save a compressed file without the .Z extension. In this case, you will need to rename the file with a .Z extension before using uncompress.
  3. After you obtain the uncompressed file SUNWmipma-sparc or SUNWmipma-x86, become super-user for your machine.
  4. Use the pkgadd command to install this package

    pkgadd -d SUNWmipma-sparc or pkgadd -d SUNWmipma-x86 This will create a new directory /opt/SUNWmipma/ and subdirectories bin, doc and drv underneath it. The bin subdirectory contains binary executables (e.g. mipagent) and doc contains documentation. The README file in the doc sub-directory is a good place to start learning about the software. The tunneling driver vtunl (along with its configuration file vtunl.conf) is placed in drv and also copied to /kernel/drv/. A sample configuration file for the Mobile IP mobility agent, mipagent.conf-sample, is left in the /etc/opt/SUNWmipma/ directory. You can add /opt/SUNWmipma/bin to your UNIX path or make the executables and documentation available in whatever way you typically choose.
  5. Copy the sample configuration file to /etc/opt/SUNWmipma/mipagent.conf and edit it for your local environment. See the documentation on mipagent.conf or comments in the sample file for details. Once you have created the appropriate configuration file for your environment, execute the mipagent program to start the mobility agent.
  6. NOTE: The mipagent program manipulates kernel routing tables. You may have to kill other programs (like in.rdisc or routed) that also manipulate routing tables to prevent any adverse interaction.

Installation Steps for Mobile Node Software

  1. Fetch the pre-compiled package appropriate for your hardware platform.
  2. Download these files and uncompress them using the uncompress command. If you use a web browser to download these files, the browser may or may not uncompress the file for you. Some browsers may incorrectly save a compressed file without the .Z extension. In this case, you will need to rename the file with a .Z extension before using uncompress.
  3. After you obtain the uncompressed file SUNWmipmn-sparc or SUNWmipmn-x86, become super-user for your machine.
  4. Use the pkgadd command to install this package

    pkgadd -d SUNWmipmn-sparc or pkgadd -d SUNWmipmn-x86 This will create a new directory /opt/SUNWmipmn/ and subdirectories bin, doc and drv underneath it. The bin subdirectory contains binary executables (e.g. mn) and doc contains documentation. The README file in the doc sub-directory is a good place to start learning about the software. The tunneling driver vtunl (along with its configuration file vtunl.conf) is placed in drv and also copied to /kernel/drv/. A sample configuration file for the Mobile IP mobile node, mipmn.conf-sample, is left in the /etc/opt/SUNWmipmn/ directory. You can add /opt/SUNWmipmn/bin to your UNIX path or make the executables and documentation available in whatever way you typically choose.
  5. Copy the sample configuration file to /etc/opt/SUNWmipmn/mipmn.conf and edit it for your local environment. See the documentation on mipmn.conf or comments in the sample file for details. Once you have created the appropriate configuration file for your environment, execute the mipmn program to start the mobile node.
  6. NOTE: The mipmn program manipulates kernel routing tables. You may have to kill other programs (like in.rdisc or routed) that also manipulate routing tables to prevent any adverse interaction.


Contact Information

At this time, the Solaris Mobile IP software is an experimental, unsupported prototype. Feedback is welcome, however we cannot promise that we will be able to respond to your feedback.

 Send feedback to mobile-ip@lassie.Eng.Sun.COM

Check here from time to time for information regarding the status of current and future releases of the Solaris Mobile IP prototype.
 


Other things you should know

Solaris 2.5.1 does not process incoming gratuitous ARPs correctly (the problem has been fixed in Solaris 2.6). This may interfere with the operation of the agent software although we believe that there are enough workarounds in our code that this should not be a problem. The mobile node software is unaffected by this bug.

Solaris 2.6 is unable to set a host-specific local route unless a corresponding network route is also set (the problem has been fixed in Solaris 7). This ability to set a host specific route alone is an important requirement for the mobile node, e.g. when using a foreign agent as its default router, a visiting mobile node needs to set a local (zero metric) host route for the foreign agent but without creating a local route for the entire foreign network. The mobility agent software is unaffected by this bug. If you must run the mobile node software under Solaris 2.6, you can try the patched ip module included below. Be warned that these modules have not been tested thoroughly --- they are based on the FCS (First Customer Shipment) release of Solaris 2.6 and our testbed uses a pre-release version of Solaris 2.6 not available to the general public. This bug has been corrected in Solaris 7. In any case, the bug will not interfere with the operation of a mobility agent (i.e. only the mobile node code is affected).

To try the patched ip module for 2.6, follow these steps as root:

  1. In /kernel/drv, move the existing ip module to ip-original.
  2. Copy the appropriate patched module (ip-sparc or ip-x86) to /kernel/drv/ip and reboot.
If you are interested in Mobile IP software for Linux, grab the source distribution after accepting the license terms and follow instructions for Linux users in the README file.


Page Last Updated: Jan 14, 1999 -- vg