How to use our set of PMIPv6 patches

Back to index

Overview   Patches   Configuration   Changelog

Overview

Our repository of PMIPv6 patches contains patches to enable the Proxy Mobile IPv6 feature to UMIP. These patches will eventually find their way into the UMIP source repository once they have proved to be stable. This documentation describes how to retrieve and use this set of patches.

Overview   Patches   Configuration   Changelog

Getting the patch repository

First, you need to retrieve the UMIP sources from our umip.git repository:

$ cd /usr/src/
$ git clone git://git.umip.org/umip.git

You can then retrieve our set of experimental patches in the umip/ directory:

$ cd umip/
$ git clone git://git.umip.org/umip-pmipv6-patches.git patches

Patches are located in the patches directory.

Patching UMIP using Quilt

You have to install the quilt package. On a Debian operating system, you can install it with:

# apt-get install quilt

The available patches can now be seen using quilt in the umip/ directory. The following command will display the list of patches that can be applied to the UMIP sources:

$ quilt series
umip-pmipv6-base.patch

The patches are listed in a specific order. The quilt push command applies the first unapplied patch of the list. Let's try to apply the first patch:

$ quilt push
Applying patch umip-pmipv6-base.patch
patching file README
patching file configure.ac
patching file include/netinet/ip6mh.h
patching file src/bcache.c
patching file src/bcache.h
[...]

Now at patch umip-pmipv6-base.patch

The quilt applied command shows the list of applied patches:

$ quilt applied
umip-pmipv6-base.patch

The quilt pop command will un-apply the last applied patch:

$ quilt pop    
Removing patch umip-pmipv6-base.patch
Restoring configure.ac
Restoring README
Restoring src/mh.c
Restoring src/tunnelctl.c
Restoring src/movement.c
[...]

No patches applied

Note that if you are interested in a specific patch, you need apply all of the patches that are located before it in the list (or apply the patch by yourself, but you should be aware that some of the patches depends on other ones).

Compiling UMIP

Once you have applied the patches you wished, you can compile UMIP as usual (check this documentation for more details). One difference with PMIPv6 is that you have to specify the --enable-pmipv6 flag at configure time:

$ autoreconf -i 
$ CPPFLAGS='-isystem /usr/src/linux/include/' ./configure --enable-vt --enable-pmipv6
$ make
# make install
Overview   Patches   Configuration   Changelog

Configuration

Sample Topology

The configuration files proposed in this document are based on the below sample PMIPv6 testbed:

PMIPv6 Topology

Mobile Access Gateway (MAG)

Below is a sample MAG configuration file:

  # This is an example of mip6d PMIPv6 enable Mobile Access Gateway configuration file
  NodeConfig MN; 
  DebugLevel 10;
  DoRouteOptimizationCN disabled;
  DoRouteOptimizationMN disabled;
  UseCnBuAck disabled;

  # Enable Optimistic Handovers
  OptimisticHandoff enabled;

  # The Binding Lifetime, for exampe 60 seconds
  MnMaxHaBindingLife 60;

  # The global address of the MAG
  MAGEgressGlobalAddress 2001:a:b:0::a/64;
  
  # The link-local addresses of the MAG on the 
  # interface connected to the mobile node
  MAGInterfaceLMA "eth1";
  FixedMAGLinkLocalAddressOnAllAccessLinks fe80::a;
  FixedMAGLinkLayerAddressOnAllAccessLinks fe80::210:f3ff:fe0e:8b87;

  MNIdentifier "00:1d:72:80:c2:1b" {
   	PMIPEnabled 1;
   	LMAAddress 2001:a:b:0::1;
   	HomeNetworkPrefix1 2001:a:b:1::/64;
   	PMIPInterface1 "eth0";
   	HomePrefixLifetime 460.0;
  }
  
  # IPsec configration - NO IPSEC AT THE MOMENT
  UseMnHaIPsec disabled;
  KeyMngMobCapability disabled;

Below is a sample MAG startup script:

  #!/bin/bash
  # Mobile Access Gateway MAG - Startup script
  # Interface definition
  IF1=eth0
  IF2=eth1

  # Put here the path to your mip6d binary
  PMIP=/usr/local/sbin/mip6d
  
  # Deny RA and setup forwarding
  echo 0 > /proc/sys/net/ipv6/conf/all/accept_ra
  echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
  
  # IF1 is the interface, connected to the PMIPv6 domain.
  ifconfig $IF1 up
  ifconfig $IF1 inet6 add 2001:a:b:0::a/64

  # IF2 is the interface, connected to the Mobile Node. 
  # Do not configure any address on it.
  ifconfig $IF2 up
  ifconfig $IF2 promisc
  
  # Execute the PMIP daemon
  $PMIP -c /etc/pmip6d.conf -l /var/log/pmip6d.log

Local Mobility Anchor (LMA)

Below is a sample LMA configuration file:

  # PMIPv6 LMA configuration file
  NodeConfig HA;
  # Set DebugLevel to 0 if you do not want debug message 
  DebugLevel 10;
  # Replace eth1 with the ingress interface connected to the PMIPv6 Domain
  LMAInterfaceMAG "eth1";

  # IPsec configration - NO IPSEC AT THE MOMENT
  UseMnHaIPsec disabled;
  KeyMngMobCapability disabled;

Below is a sample LMA startup script:

  #!/bin/bash
  # Local Mobility Anchor LMA - Startup script
  # Interface definition
  IF1=eth0
  IF2=eth1

  # Put here the path to your mip6d binary
  PMIP=/usr/local/sbin/mip6d

  # Deny RA and setup forwarding
  echo 0 > /proc/sys/net/ipv6/conf/all/accept_ra
  echo 1 > /proc/sys/net/ipv6/conf/all/forwarding

  # Configure the interface connected to the Internet
  ifconfig $IF1 up
  ifconfig $IF1 inet6 add 2001:a:a:0::1/64
  
  # Configure the interface connected to the PMIPv6 Domain
  ifconfig $IF2 up
  ifconfig $IF2 promisc
  ifconfig $IF2 inet6 add 2001:a:b:0::1/64

  # Execute the PMIP daemon
  $PMIP -c /etc/pmip6d.conf -l /var/log/pmip6d.log
Overview   Patches   Configuration   Changelog

Changelog