How to use our set of OAI PMIPv6 patches

Back to index

Overview   Install   Configuration   Contact   Changelog


OpenAirInterface Proxy Mobile IPv6 (OAI PMIPv6) is a Proxy Mobile IPv6 implementation (PMIPv6, RFC5213). PMIPv6 is a network-based mobility management protocol for localized domains, which has been actively standardized by IETF. OAI PMIPv6 has been developped by EURECOM and is opensource under the GNU General Public License version 2.

Below is an overview of the OAI PMIPv6 implementation on UMIP:

OAI PMIPv6 Architecture

OAI PMIPv6 is originally available from This documentation briefly explains how to compile and configure OAI PMIPv6 for a LMA and a MAG. Additional information and documentation is available on the Doxygen documentation from

Overview   Install   Configuration   Contact   Changelog


Patching FreeRADIUS

The proposed FreeRADIUS patch enables IPv6 support for the FreeRADIUS client. First, you need to retrieve the FreeRADIUS client sources (v1.1.6), and unpack them:

$ wget
$ tar jxf freeradius-client-1.1.6.tar.bz2
$ cd freeradius-client-1.1.6/

Now, retrieve and apply the patch, then compile and install the FreeRADIUS client library:

$ wget
$ patch -p1 < freeradius-client-1.1.6-oai-pmipv6.patch
$ autoreconf -i
$ ./configure
$ make
# make install

In order to let UMIP find the Freeradius libraries, edit /etc/ and add at the bottom of the file:

include /usr/local/lib/

Then, execute:

# ldconfig

If you encounter the error "Error while loading shared libraries : cannot open shared object file : no such file or directory", you should indicate the library path with:

$ export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

To avoid this problem to occur once again, you can add the previous line into your .bashrc file.

Patching UMIP

The kernel does not require any additional modifications. You just need to compile it as usual, as explained in the UMIP installation document.

UMIP requires to be patched in order to add the support for PMIPv6. First, you need to retrieve the UMIP sources from our umip.git repository:

$ git clone git://

The OAI PMIPv6 patch applies on top of UMIP v1.0. You first need to checkout this tag, then you can retrieve and apply the patch directly in the umip/ directory:

$ cd umip/
$ git checkout v1.0
$ wget
$ patch -p1 < umip-1.0-oai-pmipv6.patch

You can now compile UMIP as usual:

$ autoreconf -i 
$ CPPFLAGS='-isystem /usr/src/linux/usr/include/' ./configure --enable-vt --with-pmip-use-radius
$ make
# make install

The --with-pmip-use-radius option requires the installation of the freeradius client library as explained previously.

Overview   Install   Configuration   Contact   Changelog


Access Points

With the OAI PMIPv6 implementation, the Mobile Node's attachment and detachment phases are done at layer 2 using SYSLOG messages exchanged between the Access Point and the MAG. Thus, each Access Point must have their SYSLOG client enabled and configured. For example on a CISCO SERIES 1100 ACCESS POINT web interface, you should go to EVENT LOG, then to CONFIGURATION and then add the MAG IP Address on which the syslog server is running.

Beside, your Access Points should not add their MAC Address to the IP Packets that they forward. To do this, you should put your Access Points in a MASQUERADING mode.


The below packages must be installed on all MAG and LMA:

# apt-get install libpcap-dev indent bison flex iproute-dev \
                  libc6-dev libssl-dev autoconf libtool \
                  macchanger python-netaddr

The Freeradius client as well as the OAI PMIPv6 implementation must also be installed on all the MAG and LMA. Follow the instructions from the previous section.

LMA only

A FreeRADIUS server must be installed on the LMA. We use the version 2.1.12 from the website:

$ wget 
$ tar xjf freeradius-server-2.1.12.tar.bz2
$ cd freeradius-server-2.1.12
$ ./configure
$ make
$ make install	

Now you need to copy the three configuration files that are located in the patched freeRADIUS client source code (under freeradiusclient-1.1.6/examples/) to the FreeRADIUS server in order to correctly connect the clients:

$ cd /path/to/freeradiusclient-1.1.6/examples/
# cp users /usr/local/etc/raddb/
# cp radiusd.conf /usr/local/etc/raddb/
# cp clients.conf /usr/local/etc/raddb/

The users file contains all the Mobile Node MAC addresses authorised in the PMIPv6 domain. Update it with your data. The radiusd.conf file contains all the information required for the connection, authentication between the server and clients (MAGs). The clients.conf file contains the list of authorised clients (MAGs). Please update this file with all your MAGs information.

MAG only

Each MAG machine has to run a SYSLOG Server on it. On each machine that you use as MAG, you have to install a SYSLOG server:

# apt-get install socklog sysklogd

Then, edit the syslog server configuration (/etc/syslog.conf), and look for the line containing Change it to the below (if the line does not exist, simply add it at the end of the file):   /var/log/pmip_syslog.log

Then, create the /var/log/pmip_syslog.log file:

# touch /var/log/pmip_syslog.log

Then, edit the /etc/default/syslogd file. You should have the -r option enabled for the SYSLOG Daemon:


Restart the syslog daemon to take into account the modifications:

# /etc/init.d/sysklogd restart

You also need to indicate what is the IPv6 address of the FreeRADIUS server. Edit the /etc/hosts file and add at the bottom of the file (2001:100::1 being your FreeRADIUS server IPv6 address):

2001:100::1 radius6server

One of the specificity of a PMIPv6 Domain is that the Mobile Node should not be aware of its mobility inside the domain. One of the way to achieve this is to copy the MAC Address of one of the MAG and duplicate it for all other MAGs. So in the configuration scripts we force the ingress MAG address to a predefined MAC address (00:11:22:33:44:55) with the help of the macchanger executable. In the UMIP source directory, if you have a look at the extras/ file, you will notice that we achieve this automatically via the configuration script.

Sample topology

Create a PMIPv6 domain composed of 3 nodes (one LMA and 2 MAGs) as depicted in the picture below:

OAI PMIPv6 Topology

The LMA, MAG1 and MAG2 are in the same network that uses the IPv6 prefix 2001:100::/64:

On each machine (LMA, MAG1, MAG2), go into the umip/extras/ directory and execute the corresponding script:

An unmodified Mobile Node, which does not have any specific software for mobility, uses its wireless card to attach to one of the two Access Points (APs), which support IEEE 802.11b/g specifications. Each AP is directly connected to a MAG. The implementation of MAG functionalities contains additional features and modifications of UMIP to handle Proxy-BU (PBU), Proxy-BA (PBA) messages and mobility options, as well as a modified Router Advertisement daemon (radvd), which unicasts RAs with a specific Home Network Prefix (HNP) per MN.

Each MAG is connected to the LMA. The LMA is configured as a modified HA in UMIP which stores the HNP in the BCE for each MN and it is able to handle PBU and PBA messages. Finally, an unmodified CN is connected to the LMA.

Below is one of the scenarios that could be achieved:

The whole sequence diagram of this scenario is available on this picture.

Overview   Install   Configuration   Contact   Changelog

Contact Information:

Openair Admin:
Mailing List:
Address:       Eurecom, 2229, route des cretes, 
               06560 Valbonne Sophia Antipolis, France

OAI PMIPv6 is originally available from

Overview   Install   Configuration   Contact   Changelog