Configuration of mobility

De Ensiwiki
Révision de 2 mai 2016 à 13:40 par Rousfran (discussion | contributions)

(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)
Aller à : navigation, rechercher
Project schedule.png
Titre du projet VoIP et Mobilité IPv6
Cadre Projets de spécialité
Page principale Projet de spécialité VoIP et Mobilité IPv6


Experimental equipment

To set up our test bed, we used the following devices:

  • 5 computers ("DELL, DCNE model")
  • 1 laptop ("DELL, latitude E6400")
  • 1 switch ("hp procurve, switch 6108")
  • 2 access points ("Aironet 1130 ag" and "Linksys WRT54GL", both by Cisco Systems)

2 Ways to set up a MobileIPv6 Environment

We focused our attention on two methods which allowed us to use MIPv6 :

  1. From Nautilus distribution
  2. From new kernel


From Nautilus distribution

First of all, you need to upload the iso file from this site http://software.nautilus6.org/homeguy/index.php Next, you must burn a live cd or export it in a USB key (bootable of course). In Ubuntu, for example, you can use "k3b" which is a very good burning software. So, install packets with "sudo apt-get install k3b" or go to the following link. http://doc.ubuntu-fr.org/k3b If you want to use an USB key, you can follow this link. https://help.ubuntu.com/community/Installation/FromUSBStick Restart your computer and insert your cd or your usb key. Press F10 or F12 or something else for selecting the boot device. Finally, you install the operating system selecting " " in the boot menu of the live cd or usb key.

AttentionWe remarked that this distribution is not compatible with several hardware configuration. If you don't manage to install it on your computers, you would have better trying the 2nd way, by starting from a new kernel.

More precisely, we did not manage to install Nautilus on the DELL laptop or HP laptop. Hence we experimented the other way to use MIPv6 on our project.

From new kernel

If your graphic card or your hardware is not compatible with the "homeguy" distribution, you can follow this method. It consists in compile a core and modify some modules.

Firstly, upload the last stable kernel version in the following site (kernel sources) which corresponds to your active core system: http://www.kernel.org/. If you prefer to patch your actual system you can make it on this web site. In the following, we describe the method from "scratch", ie uploading kernel sources.

Now you can go to this new web site which explains very well how to obtain a mobility-ready kernel http://umip.org/docs/umip-install.html

Remark: Don't forget that if you want to boot on your new kernel, you must have an initrd file which can be in lz or gz format. For instance, with ubuntu 9.10 it's a lz format. In fact, this may cause problems with GRUB2. You can see the initrd file of the actual version (/lib/modules/kernel_version/initrd) and copy it in the appropriate directory (with some changements).

If these two methods fail, you can install a debian distribution like the 5.04th because by default, it is compatible with MIPv6. You can upload it thanks to this link: http://www.debian.org/CD/jigdo-cd/index.fr.html. Be careful with this distribution because we point out many problems with ethernet and wireless interfaces (driver issues).

Mobil Node and Home agent configurations

In this part, we begin with the IPv6 configuration which is explained in the following article: [[1]]

After that, you must upload the mipv6 daemon and packets which appear above in order to use it:

   - cd /usr/src/
   - git clone http://www.umip.org/git/umip.git
   - cd umip/

Then, "sudo apt-get install packets":

   - autoconf 
   - automake 
   - bison 
   - flex 
   - libssl-dev 
   - indent 
   - ipsec-tools 
   - radvd (only on the HA's)

Finally, compile and install "umip"

   - autoreconf -i 
   - CPPFLAGS='-isystem /usr/src/linux/include/' ./configure --enable-vt
   - make
   - make install

Remark: for further information, go to this web site http://umip.org/docs/umip-install.html#umip

Mobile Node

It would be more convenient to take a laptop for the mobile node because you'll need to move and move again it during the experimentations.

Now, you must define a mobile node file with its configuration in /usr/local/etc. You can see an example below:

    #Sample UMIP configuration file for a MIPv6 Mobile Node
    NodeConfig MN;
    #Set DebugLevel to 0 if you do not want debug messages
    DebugLevel 10;
    #Enable the optimistic handovers
    OptimisticHandoff disabled;
    #Disable RO with other MNs (it is not compatible 
    #with IPsec Tunnel Payload)
    DoRouteOptimizationMN disabled;
    MnDiscardHaParamProb enabled ;
    #The Binding Lifetime (in sec.)
    MnMaxHaBindingLife 60;
    #MnDiscardHaParamProb enabled ;
    #UseCnBuAck enabled ;
    #MnRouterProbes 1 ;

    # List here the interfaces that you will use 
    # on your mobile node. The available one with 
    # the smallest preference number will be used.
    Interface "eth0" {
      MnIfPreference 1;
    }
    Interface "eth1" {
      MnIfPreference 2;
    }

    # Replace eth0 with one of your interface used on
    # your mobile node
    MnHomeLink "eth0" {
 	   HomeAgentAddress 5f02::1;
    	   HomeAddress 5f02::221:70ff:feb4:ae95/32;
    }
    #MnHomeLink "eth1" {
 	#  HomeAgentAddress 5f02::1;
    #  	   HomeAddress 5f02::223:4dff:fe96:640e/32;
    }

Remark: If you want to implement the IPsec method or to have more information, go to this web site http://umip.org/docs/umip-mip6.html

After this step, you should define a script in /usr/local/etc which allows to launch the mipv6 daemon. You can see an example below:

    #!/bin/sh
    set -e
    
    # Make sure below as your environment
    PATH=${PATH:+$PATH:}/usr/local/sbin:/usr/sbin:/sbin
    mip6d_conf=/usr/local/etc/mip6d-mn.conf
    setkey_conf=/usr/local/etc/setkey.conf
    #device used by mip6d.
    DEV=eth0 

    case "$1" in
    start)
        # invoke mip6d
        mip6d -c $mip6d_conf
        echo "Starting MIPv6 MN.";;
    stop)
  	killall mip6d
  	ifconfig $DEV down
        echo "Stopping MIPv6 MN.";;*)
        echo "Usage: ${0##*/} {start|stop}"
    exit 1;;
    esac
    exit 0

Home Agent

For the HA's, it's the same method as the mobile node but with differences in the ha.conf and the associated script. In the directory /usr/local/etc, you can use these examples:

ha.conf

    #mip6d Home Agent configuration file
    NodeConfig HA;

    ## If set to > 0, will not detach from tty
    DebugLevel 10;
    ## List of interfaces where we serve as Home Agent
    Interface "eth0.4";  ###interface du réseau dont HA1 est routeur

    DefaultBindingAclPolicy allow  ;
    BindingAclPolicy 5f02::221:70ff:feb4:ae95 allow;
    BindingAclPolicy 5f02::1 allow ;

mipv6-ha.sh

    #!/bin/sh
    set -e
    # Make sure below as your environment
    PATH=/usr/local/sbin:/usr/sbin:/sbin:${PATH}
    mip6d_conf=/usr/local/etc/mip6d-ha.conf
    setkey_conf=/usr/local/etc/setkey.conf
    radvd_conf=/etc/radvd.conf

    case "$1" in
      start)
        # Router
        echo 1 >/proc/sys/net/ipv6/conf/all/forwarding
        # Proxy ND
        echo 1 >/proc/sys/net/ipv6/conf/all/proxy_ndp

  	# RD  --> en 1er
        radvd -C $radvd_conf
        sleep 3
        # invoke mip6d
        mip6d -c $mip6d_conf
        # For low performance systems, you can add sleep here to make sure mip6d has started
	
        echo "Starting MIPv6 HA. Yepeeeeee";;
      stop)
        killall radvd
        killall mip6d
        echo "Stopping MIPv6 HA.";;*)
        echo "Usage: ${0##*/} {start|stop}"
        exit 1;;
    esac
    exit 0

Remark:

As the previous part, if you want to implement the IPsec protocol, go to this site http://umip.org/docs/umip-mip6.html

Important notice about the way to launch the daemons on HA -- status 132 (Not Home subnet) error

This section concerns you particularly if you get a BA with status 132 (Not Home subnet) : it means that the HA does not recognize the Home Address of the MN as an address it has to care of.

The source of this problem seems to be that the HA does not catch the routers advertisement from radvd, from which it is supposed to extract the prefix it has to care of.

To fix it, just follow carefully the following warning:

AttentionContrary to what the UMIP documentation says, we strongly advise you to start the daemons in this order:


First, start radvd by
radvd -C /path/to/radvd.conf
and next mip6d by
mip6d -c /path/to/mip6d-xx.conf