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.
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
Configuration
Sample Topology
The configuration files proposed in this document are based on the below sample PMIPv6 testbed:
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
Changelog
- 2011/11/02: Added sample topology and startup scripts.
- 2011/10/24: Added sample configuration files for MAG and LMA.
- 2011/10/21: First version of this document.