simulation modelling practicenetwork-simulator-ns-2.7690.n7.nabble.com/attachment/... ·...

22
Simulation Modelling Practice and Theory 72 (2017) 1–22 Contents lists available at ScienceDirect Simulation Modelling Practice and Theory journal homepage: www.elsevier.com/locate/simpat Implementation and performance evaluation of a mobile IPv6 (MIPv6) simulation model for ns-3 Manoj Kumar Rana a,, Bhaskar Sardar b , Swarup Mandal c , Debashis Saha d a SMCC, Jadavpur University, Kolkata, India b Dept of IT, Jadavpur University, Kolkata, India c Practice Head, Wipro Limited, Kolkata, India d MIS Group, Indian Institute of Management (IIM), Calcutta, Kolkata, India a r t i c l e i n f o Article history: Received 14 March 2016 Revised 29 August 2016 Accepted 10 December 2016 Keywords: Network simulation Validation IP mobility management Mobile IPv6 Handoff management ns-3 Model development a b s t r a c t Mobile internet protocol version 6 (MIPv6) is the base standard from the Internet Engi- neering Task Force (IETF) for Internet Protocol (IP) based mobility management in wireless networks. The next generation mobility management schemes are mainly following the protocol stack of MIPv6. However, till date the widely-used network simulator version 3 (ns-3) – which aims to replace the aging ns-2 and its associated old-featured simulators – does not have even in its latest version an MIPv6 module that is fully compliant to the IETF specification. To fill this gap, we present in this work a novel MIPv6 simulation model which can be integrated into ns-3. We explain the complete design logic of the module, and also perform evaluation of the same in ns-3. To validate our proposition, we com- pare its handoff performance results with both numerical results, obtained analytically, and published results, based on Linux test bed, CNI-MIPv6 test bed and Objective modular network testbed (OMNET++) simulation. To show the usefulness of our contribution, we have exemplified how hierarchical MIPv6 (HMIPv6) can be implemented by extending the basic MIPv6 module proposed by us. © 2016 Elsevier B.V. All rights reserved. 1. Introduction With the tremendous growth of 3rd and 4th generation mobile wireless networks globally, managing IP mobility is becoming a serious concern for network managers [1,2]. Currently, the most stable solution for host-based IP mobility man- agement is MIPv6, standardized by the IETF [3] a few years back. However, MIPv6 suffers from two well-known major drawbacks viz. high signaling overhead and long handover latency (3.68 s [4]). To address this issue, IETF Working Group on Mobility for IP: Performance, Signaling, and Handoff Optimization has published two additional schemes, namely fast han- dover for MIPv6 (F-MIPv6) [5] and hierarchical MIPv6 (HMIPv6) [6]. Although these two protocols introduced new signaling messages and additional functionality to the existing network entities, they kept the MIPv6 protocol stack almost intact. So MIPv6 till date remains the fundamental protocol in the realm of IP-based mobility management. Consequently, the study of any mobile IP-based environment will warrant the implementation of the underlying MIPv6 protocol in the first place. Hence, today’s network simulators must contain built-in MIPv6 module to gain attraction among the researchers and imple- menters. Corresponding author. E-mail addresses: [email protected] (M.K. Rana), [email protected] (B. Sardar), [email protected] (S. Mandal), [email protected] (D. Saha). http://dx.doi.org/10.1016/j.simpat.2016.12.005 1569-190X/© 2016 Elsevier B.V. All rights reserved.

Upload: trandieu

Post on 17-Jul-2018

229 views

Category:

Documents


0 download

TRANSCRIPT

Simulation Modelling Practice and Theory 72 (2017) 1–22

Contents lists available at ScienceDirect

Simulation Modelling Practice and Theory

journal homepage: www.elsevier.com/locate/simpat

Implementation and performance evaluation of a mobile IPv6

(MIPv6) simulation model for ns-3

Manoj Kumar Rana

a , ∗, Bhaskar Sardar b , Swarup Mandal c , Debashis Saha

d

a SMCC, Jadavpur University, Kolkata, India b Dept of IT, Jadavpur University, Kolkata, India c Practice Head, Wipro Limited, Kolkata, India d MIS Group, Indian Institute of Management (IIM), Calcutta, Kolkata, India

a r t i c l e i n f o

Article history:

Received 14 March 2016

Revised 29 August 2016

Accepted 10 December 2016

Keywords:

Network simulation

Validation

IP mobility management

Mobile IPv6

Handoff management

ns-3

Model development

a b s t r a c t

Mobile internet protocol version 6 (MIPv6) is the base standard from the Internet Engi-

neering Task Force (IETF) for Internet Protocol (IP) based mobility management in wireless

networks. The next generation mobility management schemes are mainly following the

protocol stack of MIPv6. However, till date the widely-used network simulator version 3

(ns-3) – which aims to replace the aging ns-2 and its associated old-featured simulators

– does not have even in its latest version an MIPv6 module that is fully compliant to the

IETF specification. To fill this gap, we present in this work a novel MIPv6 simulation model

which can be integrated into ns-3. We explain the complete design logic of the module,

and also perform evaluation of the same in ns-3. To validate our proposition, we com-

pare its handoff performance results with both numerical results, obtained analytically,

and published results, based on Linux test bed, CNI-MIPv6 test bed and Objective modular

network testbed (OMNET ++ ) simulation. To show the usefulness of our contribution, we

have exemplified how hierarchical MIPv6 (HMIPv6) can be implemented by extending the

basic MIPv6 module proposed by us.

© 2016 Elsevier B.V. All rights reserved.

1. Introduction

With the tremendous growth of 3rd and 4th generation mobile wireless networks globally, managing IP mobility is

becoming a serious concern for network managers [1,2] . Currently, the most stable solution for host-based IP mobility man-

agement is MIPv6, standardized by the IETF [3] a few years back. However, MIPv6 suffers from two well-known major

drawbacks viz. high signaling overhead and long handover latency ( ∼3.68 s [4] ). To address this issue, IETF Working Group

on Mobility for IP: Performance, Signaling, and Handoff Optimization has published two additional schemes, namely fast han-

dover for MIPv6 (F-MIPv6) [5] and hierarchical MIPv6 (HMIPv6) [6] . Although these two protocols introduced new signaling

messages and additional functionality to the existing network entities, they kept the MIPv6 protocol stack almost intact. So

MIPv6 till date remains the fundamental protocol in the realm of IP-based mobility management. Consequently, the study

of any mobile IP-based environment will warrant the implementation of the underlying MIPv6 protocol in the first place.

Hence, today’s network simulators must contain built-in MIPv6 module to gain attraction among the researchers and imple-

menters.

∗ Corresponding author.

E-mail addresses: [email protected] (M.K. Rana), [email protected] (B. Sardar), [email protected] (S. Mandal), [email protected] (D.

Saha).

http://dx.doi.org/10.1016/j.simpat.2016.12.005

1569-190X/© 2016 Elsevier B.V. All rights reserved.

2 M.K. Rana et al. / Simulation Modelling Practice and Theory 72 (2017) 1–22

Table 1

SIGCOMM, MOBIWAC, CCNC, WCNC GLOBECOM, ICC and INFOCOM papers

in different implementation type categories.

Year Testbed Simulation Analytical Combination Total

2005 2 4 4 1 11

2006 2 8 5 1 16

2007 6 12 7 3 28

2008 7 4 7 2 20

2009 4 14 11 3 32

2010 3 6 8 2 19

2011 1 5 2 2 10

2012 2 8 6 4 20

2013 3 6 2 1 12

2014 0 0 0 0 0

2015 0 2 1 0 3

Total 30 69 53 19 171

Table 2

SIGCOMM, MOBIWAC, CCNC, WCNC GLOBECOM, ICC and IN-

FOCOM papers in different simulator type categories.

Year NS OMNET ++ OPNET Others Total

2005 3 0 0 1 4

2006 5 0 2 1 8

2007 5 2 2 3 12

2008 3 0 0 1 4

2009 6 2 1 5 14

2010 4 1 1 0 6

2011 2 1 1 1 5

2012 2 2 3 1 8

2013 3 2 0 1 6

2014 0 0 0 0 0

2015 1 0 0 1 2

Total 34 10 10 15 69

For the sake of understanding the recent use of MIPv6 model and its extensions in the realm of mobility management

in wireless network research and development, we made a survey of some esteemed ACM and IEEE conference papers,

published in last 11 years (2005–2015). We first categorize the papers in Table 1 according to the performance evaluation

methodology, which include testbed, simulation, theoretical analysis, and the combination of them. We note that a large

proportion of the works use simulation and theoretical analyses, whereas a few researchers attempt jointly either testbed

and analysis or, simulation and analysis. Generally, they first design an analytical model with comprehensive numerical

analysis to pre-estimate the mobility behavior of the network. Then, they resort to either testbed or simulation to determine

the complex nature of the protocol under various network conditions. There are numerous real testbeds of MIPv6 and its

extension, such as MIPv6 for Linux (MIPL) [7] , Communication Networks Institute MIPv6 (CNI-MIPv6) [8] , and Usagi-Patched

MIPv6 stack (UMIP) [9] , which are installed in lab machines, enterprise networks, and university networks to test real world

operations. However, researchers mostly prefer to rely on simulation than real testbeds, as indicated in Table 1 , due to

the unavailability of advanced mobility management schemes in testbed. For example, Network mobility (NEMO) protocol

was absent while MIPL project has been launched initially. It is worthwhile to mention here that MIPv6/NEMO has been

chosen by the International Organization for Standardization (ISO)/ European Telecommunications Standards Institute (ETSI)

for their Intelligent Transport Systems (ITS) communication architecture. Even when the testbed has the support, it does not

provide user friendly application programming interface (APIs) for further enhancement of the protocols. On the contrary,

recent network simulators, such as ns-2 [10] , ns-3 [11] , OMNET ++ and OPNET, have such APIs to do extensions, and hence,

they are very popular with the researchers naturally. So, presumably, simulation has a dominant capability over the other

evaluation tools.

Next, we specifically concentrate on simulation studies that use specific simulation tools in their experiments. In Table 2 ,

we have categorized the simulators extensively used by the researchers in the last 11 years. It includes ns , OMNET ++ and

OPNET. The other category consists of comparatively less used simulators, such as HIPSIM ++ , Ipref, JiST, and some C ++ /Java

based simulators. We observe that the use of ns accounts for a large proportion of the simulation works. The extensive use

of ns happens due to its popularity among researchers for supporting packet data networks as well as providing a simulation

engine for users to conduct various experiments. Also the simulation in ns can be implemented by using C ++ , while parts of

the simulation optionally can be realized using Python (in case of ns-3) and Object oriented Tool Command Language script

(in case of ns-2). Although ns-2 has a greater number of models included in its distribution, ns-3 is more attractive for the

inclusion of some new additional features (unavailable in ns-2), such as implementation code execution environment and

better alignment with real systems [12] . For example, Berkeley Sockets or POSIX threads are transparently mapped to the

M.K. Rana et al. / Simulation Modelling Practice and Theory 72 (2017) 1–22 3

simulation [11] in ns-3, which also demonstrates the best in overall performance in terms of scalability, low computational

overhead and less memory demands [12] .

Although, ns-3 has shown the potential to become the dominant network simulator gradually, the distribution of ns-3

till date is devoid of any core MIPv6 module. The only way out is the UMIP [13] support on Direct Code Execution (DCE)

framework, which enables the user to reuse the MIPv6 implementation of UMIP. But it is executable only on ns-3-dce

with Linux native stack [8] which, in turn, compels the users to touch the Linux protocol stack in case of any modification

proposed in MIPv6. For instance, an extension to any existing message format or an implementation of a new signaling

message or a modification of the functionality of a network entity necessitates corresponding change(s) in the protocol

stack of Linux system. Naturally, for a naive ns-3 user, it is quite cumbersome if she is unable to go to the depth of Linux

stack. This is preventing ns-3 from being used widely by the researchers/designers working in this domain.

To address the above problem, our work proposes an implementation, using ns-3 stack, of MIPv6 module in basic mode,

such that it can be easily added to ns-3. This will enable the common users, familiar with ns-3 alone, to easily modify or

extend the code in order to implement extended/advanced mobility management schemes 1 . For example, we have consid-

ered basic MIPv6 which implements hard handoff only. But one can extend this code to implement soft handoff as well.

Our implementation is guided by the following three approaches:

— Event driven triggering technique : an event requires triggering the corresponding function using ns-3 callback procedure

[11] . For example, MIPv6 binding update (BU) process starts just after the completion of the duplicate address detection

(DAD) mechanism of Internet Control Message Protocol for IPv6 (ICMPv6) [14] . For this, we have used a trigger in the

ICMPv6 protocol to invoke the binding process.

— Implementation of non-derived base classes : apart from using classes derived from ns-3 base classes, we have also de-

fined some new base classes, not provided in ns-3, and called them non-derived base classes . For instance, the binding

cache class (that stores handoff signaling information at home agent (HA)) is a non-derived base class, whereas the IPv6

mobility header class is derived from the ns-3 Header class.

— Helper class : it interconnects the low level APIs, used in the core MIPv6 module, to make the MIPv6 function installation

easier for naïve users. For example, the tedious and quiet long code for a mobile node (MN) can be installed on a network

entity by just using the install() method, defined in the MIPv6 MN helper class.

We have also presented extensive performance evaluation of the proposed module for validation purposes. The evaluation

part uses the tracing subsystem using tracehelper class. Tcpdump is used to see the pcap (packet capture) [15] files. We have

made about 100 test runs to measure the performance of our MIPv6 model. Finally, our proposed MIPv6 module is extended

to make a design framework of an IETF proposed protocol, hierarchical MIPv6 (HMIPv6). The existing MIPv6 features are

reused to develop this model quickly and easily. Further, extension of the base MIPv6 and HMIPv6 modules can assist

researchers to develop the fast handover schemes, such as F-MIPv6, fast HMIPv6 [16] , and optimized HMIPv6 [17] , which

are possibly better suited for the next generation networks.

The rest of the paper is organized as follows. In Section 2 , we discuss the related previous works on MIPv6 simula-

tion/emulation. A quick overview of MIPv6 and its handoff delay analysis are given in Section 3 for the sake of continuity in

reading. Section 4 begins with a brief discussion on the ns-3 components utilized by us to implement our MIPv6 module,

and then explains in detail the implementation of our proposed MIPv6 module. The simulation results to validate our im-

plementation are presented in Section 5 . Next, in Section 6 , we give a framework for simulating HMIPv6 in ns-3 using our

MIPv6 model with a view to showcasing the usability of our MIPv6 module. Finally, we conclude the paper in Section 7 .

2. Related works

Previously known simulations of MIPv6 may be broadly classified under four categories: (i) Linux based (e.g., CNI-MIPv6

Test Bed [8] ), (ii) OMNET ++ based (e.g., xMIPv6 [18,19] ), (iii) OPNET based (e.g., [20] ), and (iv) ns based (e.g., [21] ). We

discuss each of them briefly here.

2.1. Linux based implementations

Arguably the earliest implementation of MIPv6 in Linux was carried out in the Lancaster University in the UK [7] . How-

ever, since it supported only up to kernel 2.1.90, and was made compatible with IETF MIPv6 draft-v5 only (which is quite

older compared to the current revision), for all practical purposes we may consider it as obsolete now. Another similar im-

plementation, carried out under the Helsinki University of Technology’s MIPL project, is relatively better in the sense that it

supports kernel 2.4.22, and has patches for kernel 2.6 [22] . Still it is not up-to-date . CNI-MIPv6 [8] is a better-known Linux

based MIPv6 test bed established at the CNI, Dortmund University of Technology, with focuses on mobility management and

fast handovers in IPv6-based heterogeneous wireless access networks. However, its major limitation is the manual emula-

tion of MN movements. But its methodology to calculate the average delay by aggregating each of the delay components is

followed by other researchers too. We shall also do it in this paper while comparing our results with their results.

1 We are in the process of submitting our code to ns-3.

4 M.K. Rana et al. / Simulation Modelling Practice and Theory 72 (2017) 1–22

Other notable Linux implementations include – (a) USAGI Project of Japan, implementing IPv6 IPsec in MIPv6 stack [23] ,

(b) University of Southampton Project [24] , (c) UMIP (USAGI-patched Mobile IPv6) [9] , an open source MIPv6 released under

the GPLv2 license; it has patches for (NEMO) Basic Support [25] and F-MIPv6, and (d) Open Air Interface (OAI) Proxy MIPv6

(PMIPv6) implementation [26] by EURECOM [27] .

2.2. OMNET ++ based simulations

The most cited example under this category is extensible MIPv6 (xMIPv6) of Dortmund University of Technology [18,19] .

It is an INET20061020 based discrete event network simulator, which has its origin in an IPv6 framework [28] developed

in 2004. However, the beauty of xMIPv6 lies in its flexibility as it can be easily extended, with minimal modifications, to

other related modules, like IPv6 , keeping the base INET framework functionality unaffected. This group further enhanced

their OMNeT ++ based Mobility Management Simulation Engine for IPv6 networks to help users emulate other protocols,

such as MIPv6, F-MIPv6, and HMIPv6, and their possible combination on a single unified platform [29] . A similar effort is

conspicuously absent in the ns-3 domain, to the best of our knowledge, as per the published literature.

Nonetheless, the lack of support of MIPv6 for the OMNET ++ 3.2 platform necessitates a new collaborative project [30] to

enhance the INET20061020 framework, which will be an extension to the already existing IPv6 implementations of the INET

framework. It involves the two earlier players, namely Communication Networks Institute (CNI) and Dortmund University of

Technology, along with the Institute of Communications and Navigation, German Aerospace Centre (DLR) [30] . Though DLR

is focusing on the investigation of IP mobility protocols for aeronautical communication networks, they require a reliable

and accurate MIPv6 simulation model that would serve as a base below F-MIPv6 [5] , HMIPv6 [6] , NEMO [25] and PMIPv6

[26] . Recently, INET and xMIPv6 frameworks are extended in OMNET ++ 4.x version to support dynamic mobility anchor

point (MAP, described in Section 6 ) in HMIPv6 environment [31] .

Some more OMNET ++ based simulations of MIPv6 include [32–34] , albeit in different contexts. Later, the second imple-

mentation is extended to support HMIPv6 to evaluate the QoS-conditionalized BU procedure in both MIPv6 and HMIPv6.

2.3. OPNET based simulations

There are not many attempts under this category probably due to the fact that OPNET is not suitable for simulating

mobility management. In 2005, Le et. al. have presented an MIPv6 model of OPNET simulator for the test bed in the Institute

of Informatics of Goettingen University [20] . It includes the mobility configuration of the entities like MN, correspondent

node (CN) and HA. Then they have proposed an end-to-end tunneling extension [35] and a mobility aware transmission

control protocol extension [36] for MIPv6. This protocol solves the routing layer and transport layer problem of MIPv6. Later

the OPNET enterprise has launched HMIPv6 implementation model [37] , which is used sparingly now-a-days.

2.4. ns based simulations

The most common and popular network simulator being ns-2/3, definitely much attention is concentrated on this cat-

egory of works. Starting with numerous implementation of MIPv6 [38] , PMIPv6 [39] and HMIPv6 [40] in ns-2, now re-

searchers are experimenting with ns-3 for possible implementations of IPv6 and MIPv6 [13] . Our work falls under the latter

category.

Mauchle et al. [21] , as a part of their ongoing research work to implement PMIPv6, have given an MIPv6 implementation

framework consisting of three parts: (1) the support for mobility and tunnel set-up, (2) the tunneling framework, which

can implement a tunnel anywhere, using various protocols, and (3) the modification and extension of layer 2 (L2) related

protocols. Though their design framework shows us a way toward MIPv6 module implementation, it does not explore the

details of the core part.

The implementation details of PMIPv6 and its validation has been explored by Choi et al. [41] , who have given a nice

modular, class-based design framework for a mobility protocol simulation. We follow their design approach to some extent

only because PMIPv6 and MIPv6 have different functionality. First of all, being a network based approach, PMIPv6 operation

starts at an access router (AR) by a trigger, when a new MN attaches with an AR. On the contrary, MIPv6 is a host based

L3 triggered protocol. Second , PMIPv6 does not support route optimization. Third , a part of MIPv6 protocol stack with a

significant modification must be installed in CN. On contrary, PMIPv6 does not impose any modification on the CN.

3. Overview of MIPv6 and its handoff delay analysis

MIPv6 [3] is the basic host based mobility management protocol that guarantees session continuity to the MNs. The basic

system architecture for MIPv6 is shown in Fig. 1 . MIPv6 introduces a new principal functional entity named HA that typically

runs on a router. The main role of an HA is to create a binding cache entry for each currently registered and serving MNs.

On the other hand, the main role of an MN is to detect its movements and accordingly initiate mobility related signaling

with the HA and communicating entity such as CN. Subsequently, there are two possible communication modes between

the MN and the CN. First , bidirectional tunneling mode: The MN establishes a bidirectional tunnel with the HA. All packets

from the CN are routed to the HA, and the HA, in turn, tunnels the packets to the MN. Packets to the CN are first tunneled

M.K. Rana et al. / Simulation Modelling Practice and Theory 72 (2017) 1–22 5

AR1

MN

HA

CN

IP Tunnel

BU, BA with HA

Original IP Packet

HA Address MN CoA Original IP Packet

Encapsulated IP Packet

AR2RA

BU, BA with CN

Fig. 1. MIPv6 overview.

MN AR HA CN

2. RA

3. Neighbour Solicitation

Address Configured

Han

doff

Del

ay

4. BU

BA

5. Tunnel Setup6. Packet

7. RR Process

8. BU, BA

1. L2 Association

Fig. 2. MIPv6 handoff process.

(

(

from the MN to the HA and then routed normally to the CN. In the second mode, the MN performs route optimization with

the CN. All packets from the CN can now be routed directly to the MN bypassing the HA. The process of routing packets

directly to the MN utilizes the shortest communication path. The packets from the MN to the CN also follow some optimized

route.

3.1. Brief description of MIPv6

For the sake of continuity in reading, we show in Fig. 2 the signaling message flow of the whole handoff operation in

MIPv6. The steps are described as follows.

1) At first the MN associates with the AR’s wireless interface.

2) The MN receives router advertisement (RA) from the new AR and detects its movement using the prefix option included

in the RA message. Obviously, RA detection does not necessarily indicate a change in access network. A new RA implies

6 M.K. Rana et al. / Simulation Modelling Practice and Theory 72 (2017) 1–22

Table 3

Major MIPv6 components.

New Mobility Messages 1. BU type = 5 MN → HA, MN → CN

2. BA type = 6 HA → MN, CN → MN

3. Home Test Init (HoTI) type = 1 MN → HA → CN

4. Care-of Test Init (CoTI) type = 2 MN → CN

5. Home Test (HoT) type = 3 MN → HA → CN

6. Care-of Test (CoT) type = 4 MN → CN,

7. Binding Refresh Request type = 0 CN → MN,

8. Binding Error type = 7 CN → MN

Mobility Options 1. Pad1 type = 0 All

2. PadN type = 1 All

3. Binding Refresh Advice type = 2 BA (from HA)

4. Alternate CoA type = 3 BU (Both)

5. Nonce Indices type = 4 BU (to CN)

6. Binding Authorization Data type = 5 BU, BA (CN)

Data Structure 1. Binding Cache HA, CN

2. Binding Information List MN

Extension Header 1. Type2RoutingHeader CN → MN

Ipv6OptionHeader 1. Ipv6HomeAddressOptionHeader MN → CN

(

(

(

(

(

(

that source address and/or, advertised prefix and/or, RA parameters have changed. When an access network is changed

the afore-mentioned fields in the RA is changed at the same time. So, MIPv6 process starts, only if a new RA is received

by an MN with new advertised prefix.

3) Using the prefix option and its own Media access control (MAC) address, the MN configures a new care-of-address (CoA)

and performs DAD mechanism by multicasting neighbor solicitation message and waits to figure out if any other node is

using the same IP address. When DAD timeout occurs, the MN becomes sure that it may continue using the CoA.

4) The MN sends a BU to its HA and, in turn, receives a binding acknowledgement (BA) from the HA that confirms that the

BU is received and processed successfully.

5) Thus, a bidirectional tunnel is set up between the MN and the HA. The tunnel entry and exit point in the direction from

the HA to the MN are the HA address and MN’s CoA, respectively. In Fig. 1 , the original packet is encapsulated using

these two end points in the direction from the HA to the MN. In the opposite direction, the packet is encapsulated by

MN and the tunnel entry and exit points are MN’ CoA and HA address respectively.

6) Now, a packet can reach the MN from the CN via the HA using the tunnel.

7) The MN performs the return routability (RR) procedure with the CN. The RR procedure ensures the CN that the BU is

received from a correct MN.

8) Then, MN sends BU to the CN to send further packets in the optimized route.

Table 3 summarizes the new functional components of MIPv6, compared to IPv6. All new mobility messages use an

IPv6 extension header, called mobility header . The mobility header is identified by a “Next Header” value of 135 in the

immediately preceding header [3] . The mobility options are used in the “Mobility Option” field of the mobility messages.

Two new data structures, namely binding cache and BU list , are used to store the binding information with lifetime values.

The CN uses a Type2Routing header [3] to include MN’s Home Address (HoA), while sending packets directly to the MN.

Similarly, the MN uses a HoA Option header to include its HoA while sending packets directly to the CN. The HoA option

and Type2Routing header are also used for BU/BA messages between MN and HA. This allows the usage of IPSec to protect

the rest of the packets.

3.2. Handoff delay analysis

The handoff delay of MIPv6 can be defined as the time duration from L2 detachment of an MN from previous link to the

completion of BU process in the new link . So the handoff delay can be given as summation of movement detection delay ( t md ),

address configuration delay ( t ac ), and BU delay ( t bu ) [42,43] . Thus, the total handoff delay t handoff can be expressed as:

t handof f = t md + t ac + t bu (1)

The movement detection process starts after the detachment of MN from its previous link and finishes when it receives

first RA from the new link. Thus, t md consists of L2 handoff delay ( t l2 ) and RA delay ( t ra ). So, t md can be given as:

t md = t l2 + t ra (2)

In IEEE 802.11, the L2 handoff process involves three steps: probe request/reply, association request/reply, and authenti-

cation request/reply. When the MN switches access point (AP), it misses a bunch of beacons from the new AP and starts

probing introducing a delay of few milliseconds (say �). Let us denote by t β the one way message transfer delay in a

wireless link (link propagation delay and data transmission delay). Then t l2 can be found as follows:

t l2 = � + 2 t β + 2 t β = � + 4 t β (3)

M.K. Rana et al. / Simulation Modelling Practice and Theory 72 (2017) 1–22 7

HA

CN

AR1 AR2

MN MN

y

x x

echo request echo reply

echo reply echo request

echo request

echo reply

echo reply echo request

Fig. 3. Network scenario.

Table 4

Network parameters.

P d data packet size

P r Registration packet size

α wired link propagation delay

t β wireless link propagation and transmission delay

τ wired link data rate

λ traffic arrival rate

μ average service rate

x hop distance between AR and CN

y hop distance between CN and HA

The RA delay depends upon the RA intervals set by the AR and the timing of the MN to attach with the new link. As

given in [44] , t ra can be given as follows:

t ra =

R

2 max + R max R min + R

2 min

3 ( R max + R min ) (4)

In Eq. (4) , R max and R min are the MaxRtrAdvInterval and MinRtrAdvInterval , respectively. After receiving an RA message,

the MN configures a CoA and delays the DAD process randomly between zero and MAX_RTR_SOLICATION_DELAY . So, t ac is

given by [42] :

t ac = 0 . 5 ∗ MAX _ RT R _ SOLI CI T AT I ON _ DELAY + t DAD (5)

where t DAD is the DAD period. The BU process involves three phases: home registration, RR test, and correspondent registra-

tion. Let us denote the time required for these phases as t hr , t rr and t cr , respectively. Then t bu can be expressed as follows:

t bu = t hr + t rr + t cr (6)

To determine the round trip delay of the registration messages, we have assumed the network scenario, shown in Fig.

3 . In Table 4 , we have summarized network parameters which are required for our analysis. The round trip delay consists

of three delay components: link propagation delay, data transmission delay, and queuing delay at every intermediate node

[43] . To compute these delay components, we assume an echo request/reply application running between MN and CN. The

data transmission delay for registration message at each node is equal to P r / τ . Assuming M/M/1 queuing model [45] , the

queuing delay at each node would be 1/( μ- λ) . So, t hr , t rr and t cr can be calculated as follows:

t hr = 2 t β + 2(x + y ) α + 2

(P r

τ

)+

2 x

μ − λ(7)

t rr = 2 t β + 2(x + 2 y ) α + 2(x + 2 y ) P r

τ+

2(x + 1)

μ − λ+

2 y

μ − 2 λ(8)

t cr = 2 t β + 2(x + 2 y ) α + 2(x + 2 y ) P r

τ+

2(x + 1)

μ − λ+

2 y

μ − 2 λ(9)

8 M.K. Rana et al. / Simulation Modelling Practice and Theory 72 (2017) 1–22

helper protocols applications devices propagation ………

internet mobility network

core

Fig. 4. ns-3 model organisation.

It is to be noted that home registration occurs before the tunnel is set up between the HA and the MN via AR2 ( Fig. 3 ).

Hence, the home BU and BA packets face queuing delay only between the HA and the CN. So, in Eq. (7) , we do not consider

the queuing delay between the CN and the MN via AR2. On the other hand, the RR process includes round trip time for HoT

process only [3] . In HoT process, the home test init (HoTI) and its acknowledgement packet traverses the route between the

MN and CN via the HA. So the total hop distance for the HoT process is 2( x + 2 y ) which is accounted for computing total

transmission delay and link propagation delay in Eq. (8) . To compute queuing delay for HoT process, we note that two types

of traffic flows between the HA and the CN: (i) echo request packets generated by the CN are forwarded to the HA, and (ii)

echo reply packets generated by the MN are forwarded to the CN via the HA. So the traffic arrival rate between the CN and

the HA becomes 2 λ. Accordingly the queuing delay is computed in Eq. (8) . It is easy to observe that the above arguments

hold for Eq. (9) as well.

4. Implementation of MIPv6 module in ns-3

The ns-3 [11] is a discrete event network simulator which implements the simulation core and modules in C ++ . The

simulation core facilitates the ns-3 modules through the use of components, such as random numbers, attributes, default

values, and test frameworks. The ns-3 modules are abstract representation of real world objects, protocols, devices etc. It

is built as ns-3 library and may be statically or dynamically linked to C ++ main program, which defines the simulation

topology and starts the simulator.

4.1. Overview of relevant ns-3 modules

Fig. 4 shows the ns-3 module organization. For the sake of continuity, we have briefly discussed two of them next, which

are used in our design later.

4.1.1. Internet module

The ns-3 source code directory src/internet implements the IPv6 related components: IPv4, IPv6, ARP, ICMP, UDP, TCP,

List Routing, Source Routing and other related protocols. We can install a set of IPv6 functionalities to a wired/wireless

node by calling the proper method defined in the helper class of the module (details available in ns-3 doxygen

2 ). The

IPv6 protocol deals with routing and forwarding of packets up and down the stack, i.e., forwarding it from link layer to

application layer and vice versa. Several important classes are implemented to accomplish it. Among them, Ipv6L3Protocol

is the most important one that can process a packet at the time of forwarding. If IPv6 routing determines that the packet

is for its own, layer 3 forwards it up the stack to appropriate application, otherwise route it using the routing table. If

any further operation for a data or, control packet is needed after its reception and before sending it to application layer

(such as IP-in-IP de-capsulation for data packet or, processing for control packet), the abstract class: IpL4Protocol can be

extended as per requirement. Users are facilitated with the proper implementation of this class. In our case, we implement

an additional MIPv6 layer by implementing an abstract class. Also the header classes: Ipv6Header, Ipv6ExtensionHeader and

Ipv6OptionHeader exist in this module which can be extended to introduce any new type of header.

The IPv6 address assignment to an interface uses Icmpv6L4Protocol and Ipv6Interface classes which stores the state of

an address and also can add/remove it from the interface at anytime. Static assignment is done by calling the Assign()

function of the Ipv6AddressHelper class (examples available in ns-3 tutorial). Since, latest ns-3 version also supports address

auto-configuration mechanism which is accomplished by the RADVD

3 protocol in collaboration with the Icmpv6L4Protocol,

Ipv6Interface and Ipv6L3Protocol classes. RADVD module incorporates IPv6 prefix, prefix length, prefix lifetime, RA interval,

RA lifetime into the RA message, broadcasted by an AR. Before assigning an auto configured address, a node performs

DAD process which is handled by the ICMP protocol and so, it is embedded in the class Icmpv6L4Protocol of the module.

The inclusion of a valid IPv6 address to an interface is finished after setting the address state as ‘PREFERRED’ (done in

Ipv6Interface class).

2 ns-3 documentation is maintained using Doxygen. Doxygen is typically used for API documentation of ns-3, and organizes such documentation across

different modules. 3 RADVD means router advertisement. The application module contains this model. To implement RA function, RADVD application must be installed.

M.K. Rana et al. / Simulation Modelling Practice and Theory 72 (2017) 1–22 9

Class Packetpublic functions

add/remove/peek headersadd/remove/peek tagsfragmentation & reassembly

private data membersBuffer objectPacketMetaData objectlist of byte tagslist of packet tags

Class Bufferpublic functions

Iterator to move byte buffer pointerfunction to read and write data of various size private data membersBufferData

Class Tagspublic functions

template to add, remove or, peek tagsfunction to read and write data of various size

private data memberssingly linked list of tagged data structure

Fig. 5. Members of packet class.

4.1.2. Network module

Among the Packet, Error model, Node, NetDevice, Socket, and Queue models of network module, Packet and NetDevice

frameworks are of our interest. The overview of these models is given in the following.

Packet. Each packet consists of: (i) a buffer object to store the serialized contents of the headers and trailers of the packet,

(ii) a set of byte tags to tag a subset of the bytes in the packet buffer, (iii) a set of packet tags to tag the packet itself, and

(iv) a packet metadata to describe the types of the headers and trailers, serialized in the buffer (Interested reader may find

the details about packet components in ns-3 doxygen). The main data members of the class are shown in Fig. 5 . The class

Header is the fundamental class for inserting to and deleting from the buffer. If we need to insert to or remove from packet

instance any protocol header, it is to be derived from the abstract Header base class and it should implement the following

virtual functions:

— Serialize()

— Deserialize()

— GetSerializedSize()

— Print()

The first three functions are used to serialize and deserialize protocol information to/from a Buffer. The last function is

used to define how the Header object prints itself onto an output stream.

Node and NetDevice. In ns-3, nodes are instances of ns3::Node class. The conceptual model is that one can aggregate or

insert objects to it. So, NetDevice and other protocols and applications can be added to it through aggregation. The NetDevice

interface defines the API which IP and ARP protocols use to manage an instance of a network layer device. If a user wants to

implement a new device, he/she needs to develop subclass of the NetDevice base class and implement his/her own version,

implementing the pure virtual methods of this class. A node can send a packet from L3 into network device after the IPv6

routing has decided that the packet received from the upper layer has to be sent through this particular device.

4.2. Implementation details of MIPv6 module

In this section, we walk through the implementation process of MIPv6 module in ns-3. The implementation process uses

the core features of ns-3, mainly the object aggregation model, the attribute system, the callback mechanism, the event

scheduling process, and the ns-3 support for implementing a new module (included in ns-3 manual) [11] . We have started

with the ns-3 support by running the ‘create-module.py’ command, moving onto ‘/src’ directory. It creates MIPv6 directory

which contains sub-directories like ‘/model’, ‘/helper’ and so on. The main C ++ source files and header files of the MIPv6

module have to be placed inside the ‘/model’ and ‘/helper’ directories and further specified in the ‘wscript’ file for execution.

These set of source files use other ns-3 features like the attribute system, the callback mechanism etc. In the following, we

have briefly discussed the implementation of MIPv6. A more detail discussion can be found in [46] . In this Section, we have

mainly discussed the internal functionality of the classes. To illustrate the flow of their operations, the BU process and data

packet process are also depicted. It is to be noted that, our design approach avoids any dependency on IPv4.

4.2.1. Main MIPv6 classes and their functional relationship

The major MIPv6 classes and the relationships among them i.e. inheritance, composition, and aggregation/association are

illustrated in Fig. 6 . The white boxes represent the classes which already exist in ns-3 and the classes with colored boxes

are newly defined to implement MIPv6. These classes are divided into four modules: header, internetstack, netdevice and

helper. In the following, important operations and the design techniques of the modules are discussed.

Header. In Fig. 7 , we have shown the main data members of MIPv6 header class (as defined in RFC 6275 [3] ) and the

relationship among them. As the type field of the options are used by the MIPv6 mobility messages, we cannot extend the

existing ns-3 Ipv6OptionHeader for the MIPv6 specific option headers. Mobility header (BU, BA, HoT etc.) class inherits the

MIPv6OptionField class too. It manages all the options available in the MIPv6 header and also performs the necessary padding

to ensure that the whole header remains a multiple of 8 octets. The padding mechanism uses CalculatePad() method with

10 M.K. Rana et al. / Simulation Modelling Practice and Theory 72 (2017) 1–22

Ipv6ListRouting

NetDevice

Node

MIPv6MN

MIPv6HA

MIPv6Demux

BCache

MIPv6CN

MIPv6Mobility

Ipv6SourceRouting

MIpv6MobL4Protocol

MIpv6TunL4Protocol

BList

TunNetDevice

MNHelper

HAHelper

CNHelper

MIPv6OptionHeader

MIPv6Header

Ipv6HomeAddressOptionHeader

Type2RoutingHeader

Header Ipv6OptionHeader

Ipv6ExtensionHeader

Helper

InternetStack Node

Net-Device

Header

CsmaNetDevice

WifiNetDevice

Ipv6L3Protocol

MIPv6Agent

Fig. 6. MIPv6 main classes.

the help of GetAlignment() method in MIPv6OptionHeader , when Addoption() method includes an additional new option with

a header. The GetAlignment() function returns information about padding rule [3] .

Using these classes, it is easy to create a mobility message or, insert an option header in a packet. For example, to create a

BU message, containing an option of AlternateCoA, the Packet class is instantiated and the mobility header is inserted using

the AddHeader() method. The mobility header contains the main MIPv6BUHeader class instance. To Create an AlternetCoA

class instance, the AddOption() method of the header class is called to insert the option within the BU header. Thus the

header instantiation is completed and the mobility message is formed.

InternetStack and NetDevice. First, we have implemented MIPv6Demux class to handle mobility message classes ( MIPv6BU,

MIPv6BA etc.) which are inherited from MIPv6Mobility class. The functionality of MIPv6Demux class is similar as the

IPv6OptionDemux class which de-multiplexes IPv6 options. The recognition and forwarding of mobility messages with the

mobility header is done by the existing lower layer IPv6 class ( Ipv6L3Protocol ). In MIPv6 layer, the mobility message specific

operation starts after the recognition made by the MIPv6Demux class. It defines three functions:

— InsertMobility()

— GetMobility() and

— RemoveMobility()

At the time of MIPv6 installation to an entity (MN, HA and CN), MIPv6Demux class inserts all required mobility types (BU,

BA, HoTI, CoTI, HoT and CoT) for that node by calling InsertMobility () function. It is done in advance such that whenever it

has to send/receive such messages, it can recognize it through GetMobility() function and handle it appropriately. If there is

a need to define new mobility message (e.g., BU, BA), one must create a subclass (e.g. MIPv6BU, MIPv6BA ) of MIPv6Mobility

class and insert it into MIPv6Demux class. Alongside, MIPv6Mobility declares two abstract methods which are implemented

by its sub classes:

— GetMobilityNumber() and

— Process()

According to RFC 6275, each mobility message contains a mobility number, which is returned by the GetMobilityNumber()

function. If a mobility message is received from the lower layer, it is processed by the Process() function. It checks whether

M.K. Rana et al. / Simulation Modelling Practice and Theory 72 (2017) 1–22 11

Header

+Print () +Serialize () +GetSerializedSize () +Deserialize ()

MIPv6OptionField

+Serialize () +Deserialize () +AddOption () +CalculatedPad ()

-m_optionData -m_optionOffset

Type2RoutingHeader -m_nextHeader -m_headerLength -m_routingType -m_segLeft -m_reserved -m_homeAddress

Ipv6ExtensionHeader -m_nextHeader

Ipv6OptionHeader -m_type -m_length

Ipv6HomeAddressOptionHeader -m_homeAddress

MIPv6Header -m_payloadProto -m_headerLen -m_mhType -m_reserved -m_checksum

MIPv6BUHeader -m_sequence -m_flagA -m_flagH -m_flagL -m_flagK -m lifetime

MIPv6BAHeader -m_status -m_flagK -m_reserved2 -m_sequence -m lifetime

MIPv6OptionHeader

+GetAlignment ()

-m_type -m_len

M_Pad1

M_PadN

BindingRefreshAdvice -m_refInterval

AlternateCoA -m coa

BindingAuthorizationData -m_authenticator

NonceIndices -m_homeNonceIndices -m_careofNonceIndices

1 *

HoTIHeader -m_reserved2 -m_hiCookie

HoTHeader -m_hnonceIndex -m_hiCookie -m_hkeytoken

CoTIHeader -m_reserved2 -m_coiCookie

CoTHeader -m_cononceIndex -m_coiCookie -m ckeytoken

Fig. 7. MIPv6 header class diagram.

all fields of the message is correct or, not. If it finds all the fields are meaningful to process further, it calls the appropriate

Receive() function of the node (i.e., MN, HA, and CN) to handle it. For example, the Receive() function of MIPv6HA is called

to send a BA message to the MN.

Secondly, we have placed the MIPv6 layer above IP layer by two main classes:

— MIPv6MobL4Protocol and

— MIPv6TunL4Protocol

The MIPv6MobL4Protocol class handles mobility messages and the MIPv6TunL4Protocol class deals with data packets.

Whenever a packet is received by Ipv6L3Protocol from lower layer, it forwards it to MIPv6 layer. The encapsulated data packet

12 M.K. Rana et al. / Simulation Modelling Practice and Theory 72 (2017) 1–22

or, a mobility message contains a type value (MH type) in its header which is different from normal data packet. Based on

this value, the appropriate L4 protocol class is associated. Both of them derived the Receive() function of the base IpL4Protocol

class. After receiving a mobility message in MIPv6MobL4Protocol , it calls the Process() function of the MIPv6Demux class to

process all the fields. Then, it calls the appropriate handler of that message defined in the entity class (e.g., MIPv6MN ).

On the other hand, the Receive() function of the MIPv6TunL4Protocol class checks an encapsulated packet’s tunnel interface

which has been used to de-capsulate the packet. If there is no matching tunnel interface in its binding cache/list, it drops

the packet. MIPv6TunL4Protocol class can also add, remove and modify a tunnel to a node. A tunnel is created by a virtual

mac layer net device to a node using the TunNetDevice class, derived from the base NetDevice class. The TunNetDevice class

re-implements the Send() function of the base class. Receiving a packet from the upper layer, the Send() function performs

IPv6-in-IPv6 encapsulation by forming a new IPv6 header with new source and destination address. So, the instantiation of

the TunNetDevice class is the main functionality of the MIPv6TunL4Protocol class. All the tunnel related methods are triggered

at the time of sending/receiving BU/BA messages of the agent classes ( MIPv6MN/HA/CN ) as defined in RFC 6275.

Third, we have implemented a new Ipv6SourceRouting class, deriving the base Ipv6ListRouting class. It checks the source

address of a packet and returns the route. This class is used by MN (i.e., MIPv6MN class). When a packet with MN’s HoA as

source address is generated, the routing protocol selects the virtual tunnel net device interface to tunnel the packet to the

HA. So, the MN keeps a route entry for its HoA in the routing table while the tunnel set up process is going on.

After the implementation of the above header classes, MIPv6 layer specific classes and routing classes, we implement the

agent based classes:

— MIPv6MN and

— MIPv6HA/CN

All of them are derived from the base MIPv6Agent class, which implements two main methods:

— Receive() and

— HandleXX()

The Receive() function is called by the Process() function of MIPv6Mobility class, after receiving a message from the

MIPv6MobL4Protocol class. After receiving such mobility message, it calls the proper handler function such as HandleBU(),

HandleBA() etc. These handler functions actually handle the mobility messages and trigger the next event. For example,

after receiving BU message, HandleBU() forms a BA message and sends it. However MIPv6Agent class has not defined the

handler classes as its function is specific to the agent classes. MIPv6MN and MIPv6HA classes can also insert and delete tun-

nel functionalities by calling specific functions defined in MIPv6MobL4Protocol class. At the time of receiving BU at HA and

receiving BA at MN, an AddHostRouteTo() function is called to insert host route in the routing table. If MN detaches from its

current link, a RemoveRouteTo() function is also called that removes the host route from the routing table. How MIPv6MN

class sends BU after configuring IPv6 address and how MIPv6HA class receives BU and sends BA is discussed in the next sub

sections.

Lastly, two independent classes: BCache and BList are associated with the MIPv6HA/CN and MIPv6MN classes respectively

( Fig. 6 ). They contain data members: CoA, HoA, lifetime, HA address, tunnel interface index, sequence number, BU state, and

nonce indices as defined in [3] . To handle the information of multiple MNs and HAs, each entry in the BCache and BList

class is keyed by the HoA.

Helper. Helper is also a supporting implementation module as the Header module. It basically works above all the main

implemented classes. Three helper classes are created for three agent classes. Users who want to run MIPv6, uses the helper

classes to install the MIPv6 functionality to corresponding nodes. These classes implement an important function called

Install() . This method takes a node pointer or, a node container object and the required data member like HA address as

arguments and install over a node or, a set of node (in case of Nodecontainer object). It installs the MIPv6MobL4Protocol and

MIPv6TunL4Protocol following the CreateObject() and AggregateObject() functions, defined in the core part of ns-3. After that

it registers the corresponding mobility messages using MIPv6MobL4Protocol class.

4.2.2. BU process

The BU process starts after MN configures an IPv6 address in a new subnet. If the state reaches in “PREFERRED” state, the

address configuration is successfully completed. Fig. 8 shows the BU process of MIPv6 in ns-3. After the DAD timeout event,

it sets the state by calling the SetState() method of Ipv6Interface class. The MIPv6MN class has set a function prototype,

m_NewIpCallback at Ipv6Interface class at the time of initialization. It invokes the BU sending process at MIPv6MN after

address configuration. It passes the packet to the default WifiNetDevice . Once the Ipv6 packet arrives at the netdevice of the

HA, it is delivered to the Ipv6L3Protocol through ProtocolHandler in Node class. Then, Ipv6L3Protocol passes the packet to the

right transport handler, checking the Ipv6 next header field in the packet. So, the BU packet is received at the HA in the

MIPv6MobL4Protocol . It then demultiplexes the packet in the MIPv6BU , based on mobility header type in BU packet. MIPv6BU

passes the packet to the MIPv6HA which creates or updates the binding cache and sets up tunnel for this new source. A BA

is sent to the MN in the similar process. The MN now creates or updates the BU list and sets up the tunnel towards the HA.

Thus, the BU process is completed. The BU process with CN is similar, but the tunnel setup and routing setup at MN and

CN do not occur.

M.K. Rana et al. / Simulation Modelling Practice and Theory 72 (2017) 1–22 13

Icmpv6L4Protocol

Ipv6Interface

MIPv6MN

Ipv6L3Protocol

WifiNetDevice NetDevice

Node::ProtocolHandler

Ipv6L3Protocol

IPv6MobL4Protocol

MIPv6BU

MIPv6HA

Ipv6L3Protocol

NetDevice

WifiNetDevice

Node::ProtocolHandler

Ipv6L3Protocol

IPv6MobL4Protocol

MIPv6BA

MIPv6MN

SetState( )

m_NewIpCallback

Send( )

Send( )

BU Received by HA

m_ReceiveCallback

Receive( )

Receive( )

Process( )

BUHandle( )

Send( )

Send( )

BA Received by MN

m_ReceiveCallback

Receive( )

Receive( )

Process( )

BAHandle( )

MIPv6Demux

GetType( )

MIPv6Demux

GetType( )

Disconnection Message sent to CN, MN

Fig. 8. BU process.

4.2.3. Data packet processing

At the completion of BU process, a bidirectional tunnel is set up between the HA and the MN. In Fig. 9 , the data packet

processing through the tunnel in the direction for MN to the HA is shown. Fig. 10 shows the data packet processing path in

the direction from the HA to the MN.

When a data packet arrives from application layer, Ipv6L3Protocol performs routing query for incoming packet by calling

RouteInput() method of Ipv6ListRouting class. Ipv6SourceRouting is used to find the route using MN’s HoA. It gives the out-

going tunnel netdevice interface as output to forward the packet. In TunNetDevice , the packet is encapsulated with another

Ipv6 header and is passed to Ipv6L3Protocol which sends the packet through the WifiNetDevice .

At the HA, encapsulated data packet is forwarded to the MIPv6TunL4Protocol following the Ipv6L3Protocol . The routing

query calls the LocalDeliver() function as the tunnel end point is at the HA’s global address. The Receive() function of the

MIPv6TunL4Protocol de-capsulates the packet and sends to Ipv6L3Protocol to send it to the CN.

14 M.K. Rana et al. / Simulation Modelling Practice and Theory 72 (2017) 1–22

Ipv6L3Protocol

TunNetDevice

Ipv6L3Protocol

WifiNetDevice NetDevice

Node::ProtocolHandler

Ipv6L3Protocol

m_ReceiveCallback

Receive( )

Ipv6TunL4Protocol

Ipv6L3Protocol

NetDevice

Ipv6ListRouting

Ipv6SourceRouting

RouteInput( ) IpForward( )

RouteInput( )

IpForward( )

Send( )

Send( )

Send( )

Receive( )

Send( )

Send( )

Send encapsulated packet to HA

Send Packet to CN Packet from application

Fig. 9. Data packet processing from the MN to the HA direction.

NetDevice

Ipv6L3Protocol

TunNetDevice

Ipv6L3Protocol

NetDevice WifiNetDevice

Node::ProtocolHandler

Ipv6L3Protocol

m_ReceiveCallback

Receive( )

Ipv6TunL4Protocol

Send( )

Send( )

Send( )

Receive( )

Send encapsulated packet to MN

Node::ProtocolHandler

Receive( )

m_ReceiveCallback

Send Packet to Upper Layer

Fig. 10. Data packet processing from the HA to the MN direction.

M.K. Rana et al. / Simulation Modelling Practice and Theory 72 (2017) 1–22 15

IP handoff

3001:db80::6/64 fe80::200:ff:fe00:6

3001:db80::5/64 fe80::200:ff:fe00:5

5001:db80::4/64 fe80::200:ff:fe00:4

2001:db80::2/64 fe80::200:ff:fe00:2

2001:db80::1/64 fe80::200:ff:fe00:1

5001:db80::3/64 fe80::200:ff:fe00:3

8888:56ac::7/64 fe80::200:ff:fe00:7

9999:db80::8/64 fe80::200:ff:fe00:8

9999:db80::200:ff:fe00:9 fe80::200:ff:fe00:9

8888:56ac::200:ff:fe00:9 fe80::200:ff:fe00:9

HA

AR1 AR2

MN

CN

Home Network Prefix 1001:db80::/64

5 m/sec

Fig. 11. Simulation topology.

On the other hand, packets from the CN are received by the HA and passed to Ipv6L3Protocol . Following Ipv6StaticRouting ,

the IpForward() method sends the packet to TunNetDevice as the routing table already contains a route entry for the MN’s

HoA. After encapsulation, Ipv6L3Protocol sends the packet to the MN. The MN processes the packet similarly as the HA.

Instead of sending the packet again to Ipv6L3Protocol , the MIPv6TunL4Protocol forwards it to the upper layer. Thus, The IP

mobility remains transparent to the upper layer. The trigger to start BU process with the CN starts after the reception of

BA message from the HA. The BU process is initiated by exchanging HoTI, CoTI, HoT, CoT messages used by MIPv6MN and

MIPv6CN class.

In case of route optimization, the CN uses the MN’s CoA as destination address. The event is triggered at Ipv6L3Protocol

class that sends data packet. For this, we have used a function prototype, m_NewRouteCallback at Ipv6L3Protocol class. It

changes the destination address to MN’s CoA. The value of this variable becomes true while the CN gets BU from MN and

successfully accepts it. Hence, all further packets would use the changed destination address. The value of the variable

becomes false when the CN gets a disconnection message from the HA. The HA sends this message to the CN immediately

after sending BA to the MN.

5. Simulation of MIPv6 and validation testing

We have performed extensive ns-3 simulations to analyze MIPv6 performance, thereby validating our implementation.

The simulation uses ns-3 version 3.19 with the IEEE 802.11 network [47] environment.

5.1. Simulation setup

The network topology of our simulation model is shown in Fig. 11 . The MN acts as a host, where the CN acts as both

host and router. All other nodes, including the HA, act as router only. The CN connects with AR1 and AR2 through carrier

sensing multiple access (CSMA) interface, and the HA connects with the CN using a point-to-point interface. The MN has

only one Wi-Fi interface with active probing off and connects with AR1 and AR2 through that interface. Both AR1 and AR2

are equipped with IEEE 802.11 radio data link, generating beacon every 100 ms. AR1 and AR2 advertise IPv6 prefix in the

16 M.K. Rana et al. / Simulation Modelling Practice and Theory 72 (2017) 1–22

Table 5

Simulation parameter values.

Parameter � α t β λ t DAD MAX_RTR_SOLICITATION_DELAY

Values 6.6 ms 1 ms 0.09 ms 100 /s 10 0 0 ms 10 0 0 ms

Parameter τ x y P m P d

Values 2 Mbps 1 1 34 bytes 1024 bytes

Fig. 12. PCAP packet trace at MN during handoff.

prefix option of the RA message. All CSMA and point-to-point links use data rate of 2 Mbps and link delay of 1.0 ms. An UDP

echo server application is installed on the MN (say at port 9). Alongside, an UDP echo client application is running on the CN

with packet size of 1024 bytes and maximum 10,0 0 0 packets. In this topology, the home network prefix is 1001:db80::/64,

and MN’s HoA is defined from it. The MN uses constant velocity mobility model [11] and moves left to right with velocity

of 5 m/s. The rest of the parameters are assumed as given in Table 5.

The simulation is conducted for three sets of (R max , R min ) values: (3, 1) s (case 1), (1.5, 0.05) s (case 2), and (70, 30) ms

(case 3). From the PCAP file, shown in Fig. 12 , the values for handoff delay component are obtained. It is observed that at

t = 6.288 s the MN received the last packet from the CN in the old subnet. After that it waits for the RA from the newly

connected AR2 and received RA at t = 6.829 s. Hence t md is 0.541 s. After that the MN waits a random time between 0 s and

1 s ( MAX_RTR_SOLICITATION_DELAY ) and starts DAD process. Elapsing almost 1.48 s in this process, the MN sends BU to the

HA at t = 8.309 s. So t ac is nearly 1.48 s. The HA receives BU and sends BA immediately to the MN after setting up tunnel

M.K. Rana et al. / Simulation Modelling Practice and Theory 72 (2017) 1–22 17

Table 6

Simulation results for handoff delay (in seconds).

Case#: (R max , R min ) Evaluation method t md t ac t hr t rr t cr t handoff

Case 1 (3 s,1 s) Analysis 1.090 1.500 0.019 0.080 0.080 2.769

Simulation 1.100 1.472 0.022 0.067 0.067 2.728

CI 15% 27% 99% 98% 97% 11%

Variation + 0.917% −1.867% + 15.789% −16.250% −16.250% + 1.481%

Case 2 (1.5 s, 0.05 s) Analysis 0.507 1.500 0.019 0.080 0.080 2.186

Simulation 0.583 1.487 0.022 0.067 0.067 2.226

CI 17% 25% 97% 98% 98% 14%

Variation + 14.990% −0.867% + 15.789% −16.250% −16.250% + 1.830%

Case 3 (70 ms, 30 ms) Analysis 0.033 1.500 0.019 0.080 0.080 1.712

Simulation 0.039 1.491 0.022 0.067 0.067 1.686

CI 20% 26% 99% 98% 99% 19%

Variation + 18.181% −0.600% + 15.789% −16.250% −16.250% −1.519%

Table 7

Simulation results for handoff delay (in milliseconds).

Case: Components Linux Test bed Our Simulator CI Variation

Case 1 t md 398 583 17% + 46.482%

t ac 1498 1487 25% −0.734%

t handoff 1896 2070 14% + 9.177%

Case 2 t md 936 1100 17% + 17.521%

t ac 1533 1472 27% −3.979%

t handoff 2469 2572 11% + 4.172%

and routing. The MN received BA at t = 8.335 s and sets up the tunnel and routing. So t hr is 0.026 s. Similarly, t rr and t cr

are obtained from Fig. 12 as 0.054 s and 0.049 s respectively. Then, ultimately the MN starts receiving encapsulated packets

from 8.451 s in the new subnet. From these obtained values, t bu is calculated as 2.163 s.

5.2. Validation with numerical results

To justify the correctness of our proposed simulation model, we have performed two sets of validation. First, we compare

the numerical results with our simulation results. Secondly, we compare our simulation results with Linux testbed results,

CNI MIPv6 testbed results and OMNET ++ based xMIPv6 simulation results, as reported in the literature. The validation

process is discussed in the following.

We show the comparison between the simulation results and the numerical results (obtained in Section 3.2 ) in Table 6 ,

where we depict the confidence interval 4 (CI) of our results and also the variation between the simulation result and the

analytical result. We observe that the handoff delay obtained from simulation is very close to the value obtained analytically.

This validates our simulation model undoubtedly. In the simulation, we have assumed that the L2 delay is the time duration

between the reception of last packet by MN from AR1 and the reception of RA from AR2. In numerical analysis, however, we

have ignored the time interval between the last packet reception at AR1 and the detachment from AR1 as negligible. For this

reason, the values of t md in simulation are slightly higher than its numerically obtained results in case 1. In cases 2 and 3, the

other delay component of t md , namely the RA delay, decreases but L2 delay remains fixed. So, we observe higher variation

of t md for cases 2 and 3 ( Table 6 ). A very small variation of t ac is observed, and it happens due to the random nature of

MAX_RTR_SOLICITATION_DELAY . We also note that the queuing delay during RR and correspondent registration is little low

in the simulation compared to the numerical results. It is due to the fact that we assumed higher packet transmission rate

for the numerical analysis than the simulation that decreases t rr and t cr values a little in the simulation.

The CI gained for t md and t ac are low because the RA interval and MAX_RTR_SOLICITATION_DELAY have random nature.

On the other hand, the CI for t hr , t rr , and t cr components is very high as there is no randomness to determine these delay

components. Hence we almost get the same values in each run of our simulation. We have observed that the CI for t handoff

is influenced by the randomness of t md and t ac .

5.3. Validation against experimental results

Linux Testbed. In [43] , Lee et al. conducted simulations for MIPv6 using Linux based MIPL 1.0 [8] . They considered only

t md and t ac components of handoff delay in their simulations. In Table 7 , we have compared our simulation results with

their results for two cases, defining R max –R min values: 1.5–0.05 s (case 1), and 3.0–1.0 s (case 2). The results are not too

different except the t value. This can be explained in terms of the seed value used to generate the random value of

md

4 CI of a simulation parameter value ‘ v ’ is x% means x runs (out of total 100 runs) have produced ‘ v ’ as result.

18 M.K. Rana et al. / Simulation Modelling Practice and Theory 72 (2017) 1–22

Fig. 13. Handoff delay and events in terms of udp echo packets.

Table 8

Simulation results for handoff delay (in milliseconds).

Handoff Latency in Seconds Delay Components

T md t hr /T hr t rr /T rr t cr /T cr t ho /T HO

Test 1 CNI-MIPv6 3.288 1.040 0.005 0.003 4.336

xMIPv6 2.643 1.003 0.009 0.004 3.659

Our Simulator 2.600 1.022 0.009 0.004 3.635

CI 15% 98% 100% 99% 10%

Variation (from CNI-MIPv6) −20.924% −1.731% + 80% + 33.333% −16.259%

Variation (from xMIPv6) −1.627% + 1.894% 0% 0% −0.765%

Test 2 CNI-MIPv6 2.041 1.040 0.005 0.002 3.088

xMIPv6 2.131 1.003 0.009 0.004 3.147

Our Simulator 2.083 1.022 0.009 0.004 3.118

CI 17% 99% 98% 98% 12%

Variation (from CNI-MIPv6) + 2.058% −1.731% + 80% + 100% + 0.842%

Variation (from xMIPv6) −2.352% + 1.894% 0% 0% −1.049%

Test 3 CNI-MIPv6 1.558 1.041 0.005 0.002 2.606

xMIPv6 1.680 1.003 0.009 0.004 2.696

Our Simulator 1.539 1.022 0.009 0.004 2.574

CI 20% 100% 100% 99% 16%

Variation (from CNI-MIPv6) −1.219% −1.825% + 80% + 100% −1.381%

Variation (from xMIPv6) −8.393% + 1.894% 0% 0% −4.673%

MAX_RTR_SOLICITATION_DELAY and also the number of experiments carried out in the test bed (30 experimental runs) com-

pared to number of simulation runs (100 runs). Obviously, the seed in Linux based MIPL 1.0 generates lower values in small

number of runs compared to ns-3. Hence the difference is pronounced in Table 7 . The reason for low CI to determine t md ,

t ac , and t handoff is as discussed in Section 5.2 .

CNI-MIPv6 Testbed and xMIPv6 Simulation Model. In [19] , Yousaf et al., measured the MIPv6 handoff delay in both the

CNI-MIPv6 test bed and xMIPv6 simulation model. The parameters they used and defined slightly differs from our defini-

tions. To compute handoff delay they used movement detection delay ( T md ), home binding delay ( T hr ), RR delay ( T rr ) and

correspondent binding delay ( T cr ). Hence the overall delay ( T ho ) and T md can be expressed as follows:

T ho = T md + T hr + T rr + T cr (10)

T md = T l2 + T sd + T DAD (11)

In Eq. (11) , T l2 , T sd and T DAD are L2 handoff delay, subnet detection delay and DAD period respectively. We have used the

same simulation setup and same reference RA intervals as specified in [19] : 3.0–1.0 s (test 1), 1.5–0.05 s (test 2) and 0.03–

0.07 s (test 3) in our simulations. Fig. 13 illustrates the measured handoff delay (3.0 0 0 s) along with the handoff events

for the case of R max = 1.5 and R min = 0.05. The comparison between the results ( Table 8 ) clearly shows that the delay com-

ponents are almost same with their results. We have observed a significant variation of T md in case of CNI-MIPv6 testbed

in test1. It happens because of the high value of R max and R and also WLAN network setup in test bed and WLAN AP

min

M.K. Rana et al. / Simulation Modelling Practice and Theory 72 (2017) 1–22 19

MAP

Ipv6L3Protocol

HMIPMN

MIPv6Demux

BCache

HMIPLBU

HMIPLBA

HMIPTunL4Protocol

HMIPBList

HMIPMNHelper

HMIPMAPHelper

Helper InternetStack

Header

Icmpv6L4Protocol

Icmpv6OptionInformation Icmpv6OptionHeader

Common

HMIPIcmpv6L4Protocol

HMIPRadvdPrefix

HMIPRadvdInterface

HMIPRadvd

RADVD

Fig. 14. HMIPv6 class diagram.

configuration in ns-3 are different. So depending on ns-3 Wireless fidelity (wifi) specification, our obtained value for T md dif-

fers from their results. T hr is 1.0 s more in simulation results than the numerical results because HA runs DAD process (that

takes 1.0 s) before acknowledging home BU. In comparing T rr and T cr , there is a high variation between testbed, OMNET ++based simulator and our simulator results. It is due to the queuing delay considered in Section 3.2 . However, during home

registration, the queuing delay is not seen in between AR and HA, and so, there is no such variation in T hr . The reason for

low CI while computing T md and T HO is same as discussed in Section 5.2 .

6. A framework for HMIPv6 implementation

HMIPv6 [6] is an advanced mobility management scheme for the next generation all-IP networks. It replaces the distant

HA binding of MIPv6 by a quick registration process with a local host called MAP. For global roaming, however, it still

relies on MIPv6 process to provide a seamless IP handoff. Within a HMIPv6 domain, MN senses MAP’s presence through

AR’s advertisement that contains MAP option, and subsequently performs local BU (LBU) process with the MAP. Hence,

MAP option and LBU are the new objects in this scheme, which are to be actually reflected in our ns-3 implementation, as

discussed below.

In this section, we illustrate the new HMIPv6 components and the possible class diagram of HMIPv6 model. From the

given framework, the implementation of HMIPv6 will be easy for a naïve ns-3 user. Following the same process, other

similar IP mobility management protocols can also be implemented in ns-3 with little effort.

6.1. Additional components for HMIPv6

To simulate HMIPv6, we incorporate a new LBU mobility message, having the same type as that of BU message and with

an additional field. We also use the ICMP, but with a new option: option with type 23 [6] . The rest of the components

remain the same as those discussed in Table 3 of Section 3 .

6.2. Class diagram

The class diagram given in Fig. 6 in Section 4.2 is extended for HMIPv6 implementation as follows. The new and existing

classes with their relations are illustrated in Fig. 14 . For the new option type, the Icmpv6OptionHeader class is inherited. It

includes Icmpv6OptionInformation class, specifying the fields of the options and the corresponding operations. The option

20 M.K. Rana et al. / Simulation Modelling Practice and Theory 72 (2017) 1–22

Fig. 15. PCAP packet trace at MN using HMIPv6.

is included in the RA message by changing the RADVD application classes. In the RADVD sub module, the HMIPRadvdPrefix

class includes the option with the RA message as it includes other options. Consequently, the AddPrefix() and AddConfigu-

ration() functions of the RadvdInterface and Radvd classes are changed, and the classes are renamed as HMIPRadvdInterface

and HMIPRadvd classes, respectively.

HMIPv6MN acts quiet differently from MIPv6MN at the time of handling handoff signaling messages and processing the

data packet. It has to perform BU during its movement within the domain, which is different from HA binding process.

Also, doubly encapsulated packets are processed by the MN at the time of transmission/reception. Hence, MIPv6MN class is

changed into HMIPMN class to include the required functionalities. Similarly, MIPv6HA class is extended to HMIPHA class. To

store the new information such as address, distance and preference, the HMIPMN class has to constitute a new HMIPBList

class, instead of the existing BList class. To perform demultiplexing of the two additional BU messages (namely LBU and

LBA), the MIPv6Demux class is extended to accommodate HMIPLBU and HMIPLBA classes. The data packets are received and

processed accordingly in MIPv6TunL4Protocol class (Section 5.4). To process doubly encapsulated packets in HMIPv6, the

MIPv6TunL4Protocol class is changed to HMIPTunL4Protocol class.

6.3. Simulation

We have conducted simulation of our HMIPv6 model to test its handoff performance. From the IPv6 packet trace shown

in Fig. 15 , we have extracted the timing of the IPv6 packets at the time of inter-MAP handoff: the last packet through

the old AR and the first packet through the new AR are received at t = 24.617 s and t = 27.269 s, respectively. Hence, the

inter-MAP handoff delay is 2.652 s, which is almost equal to MIPv6 handoff delay obtained in [43] . In between these two

packet arrivals, MN performs in sequence RCoA request/reply, LBU with MAP and global BU (GBU) with the HA. The intra-

MAP handoff contains only LBU process after address configuration. Assuming that the same amount of time is involved

in movement detection and address configuration as shown in the packet trace file, the intra-MAP handoff delay can be

estimated as approximately 1.394 s, which tallies with the value reported in [48] . This vindicates the correctness of the

simulated HMIPv6 model, which, in turn, further validates our MIPv6 implementation in ns-3.

7. Conclusions

The network simulator ns-3 is yet to accommodate the MIPv6 module in its main tree. Unfortunately, this void is prevent-

ing the researchers from testing in ns-3 not only their novel mobility management techniques but also the next generation

protocols based on MIPv6. So, in this paper, we have proposed an MIPv6 simulation model for ns-3. Our results show the

consistent behavior of our simulation model in terms of the handoff delay. We have ensured the compliance of our model

M.K. Rana et al. / Simulation Modelling Practice and Theory 72 (2017) 1–22 21

by building the message/event timers and timeouts carefully in close conformance and strict adherence to the relevant IETF

standards.

Our proposed MIPv6 simulation model may be a useful groundwork for adding the new mobility management protocols

(like F-MIPv6, HMIPv6, F-HMIPv6 etc.) in ns-3 in near future. We have exhibited this potential through a simple simulation

of HMIPv6 using our MIPv6 model. The clear view of MIPv6 class inheritance, aggregation and operational modification of

existing MIPv6 model gives a very good understanding for the development of the new protocols. However, implementation

of dynamic HA address discovery, dual stack MIPv6 support, and HA multicasting membership control are missing in the

current implementation, and those are planned for our future work, which also includes experimenting the ns-3 develop-

ment in conjunction with simulation (emulation mode). This could be a way to test the conformity of the ns-3 simulation.

Acknowledgment

The authors would like to thank Dr. Tommaso Pecorella of University of Florence to fix the bug 2148 and push it in the

ns-3 change set.

References

[1] J.Jara Antonio, David Fernandez, Pablo Lopez, MiguelA. Zamora, AntonioF. Skarmeta, Lightweight mobile IPv6: a mobility protocol for enabling transpar-

ent IPv6 mobility in the Internet of Things, in: Proceedings of the IEEE Global Communications Conference (GLOBECOM, 2013), 2013, pp. 2791–2797,doi: 10.1109/GLOCOM.2013.6 8314 97 .

[2] Kuntz Romain, Julien Montavont, Thomas Noel, Multihoming in IPv6 mobile networks: progress, challenges, and solutions, Commun. Mag. IEEE 51 (1)(2013) 128–135, doi: 10.1109/MCOM.2013.6400449 .

[3] CharlesE. Perkins , DavidB. Johnson , Jari Arkko , Mobility support in IPv6, IETF, RFC, 6275, 2011 July . [4] Vasos Vassiliou , Zinon Zinonos , An analysis of the handover latency components in mobile IPv6, J. Internet Eng. 3 (2009) 230–240 .

[5] Rajeev Koodli , Fast handovers for mobile IPv6, IETF, RFC, 4068, 2008 June .

[6] Hesham Soliman , Claude Castelluccia , Karim ElMalki , Ludovic Bellier , Hierarchical mobile IPv6 (HMIPv6) mobility management, IETF, RFC, 5380, 2008October .

[7] Linux Mobile IPv6, Retrieved from http://www.cs-ipv6.lancs.ac.uk/MobileIP/ . [8] MIPL Mobile IPv6 for Linux, 2008. Retrieved from http://www.mobile-ipv6.org .

[9] Masafumi Aramoto, Masahide Nakamura, Shinta Sugimoto, Noriaki Takamiya. UMIP: USAGI-patched mobile IPv6 for Linux, 2008. Retrieved from http://umip.linux-ipv6.org/ .

[10] Lee Breslau, Deborah Estrin, Kevin Fall, Sally Floyd, John Heidemann, Ahmed Helmy, Polly Huang, Steven McCanne, Kannan Varadhan, Ya Xu, Haobo Yu,

Advances in network simulation, IEEE Comput. 33 (20 0 0) 5 59–67, doi: 10.1109/2.841785 . [11] Tom Henderson, George Riley, Sally Floyd, Sumit Roy. Network simulator 3, 2008. Retrieved from http://www.nsnam.org/ .

[12] Elias Weingartner, V.Lehn Hendrik, Klaus Wehrle, A performance comparison of recent network simulators, in: Proceedings of the IEEE InternationalConference on Communication (ICC 2009), 2009, doi: 10.1109/ICC.2009.5198657 .

[13] Hajime Tazaki, “Direct code execution”, 2013-2015, Retrieved from http://code.nsnam.org/ns- 3- dce and https://www.nsnam.org/docs/dce/manual-umip/html/index.html .

[14] Alex Conta , Stephen Deering , Mukesh Gupta , Internet control message protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) specification, IETF,RFC 4 4 43, March 2006 .

[15] The Tcpdump team. Library for packet capture version 4.7.4 April 2015. Retrieved from http://www.tcpdump.org/ .

[16] HeeY. Jung , Hesham Soliman , SeokJ. Koh , JaeYong Lee , Fast handover for hierarchical MIPv6 (F-HMIPv6), Internet Draft, IETF, 2005 , expires on April . [17] ManojK. Rana, Swarup Mandal, Bhaskar Sardar, Optimized HMIPv6 (O-HMIPv6): reducing handoff latency in HMIPv6 networks, in: Proceedings of

Application and Innovation in Mobile Communications (AiMoC 2015), 2015, pp. 18–24, doi: 10.1109/AIMOC.2015.7083824 . [18] Faqir Z. Yousaf, Christian Bauer, An accurate and extensible mobile IPv6 (xMIPV6) simulation model for OMNeT ++ , 2008. Retrieved from http://www.

kn.e- technik.tu- dortmund.de/en/forschung/ausstattung/xmipv6.html . [19] FaqirZ. Yousaf , Christian Bauer , Christian Wietfeld , An accurate and extensible mobile IPv6 (xMIPV6) simulation model for OMNeT ++ , in: Proceedings

of Simulation and Tools (Simutools ’08), ACM, 2008 Article No. 88. ISBN: 978-963-9799-20-2 .

[20] Deguang Le, Xiaoming Fu, Dieter Hogrefe, Evaluation of mobile IPv6 based on an OPNET model, in: Proceedings of 8th International Conference forYoung Computer Scientists (ICYCS’05), 2005 . doi: 10.1.1.474.7886 .

[21] Fabian Mauchle , Sandra Frei , Andreas Rinkel , Simulating mobile IPv6 with ns-3, in: Proceedings of the 3rd International ICST Conference on SimulationTools and Techniques (SIMUTools ’10). Institute for Computer Sciences, Social-Informatics and Telecommunications Engineering, Article 48, 2010, p. 2 .

[22] AnttiJ. Tuominen, Henrik Petander, MIPL mobile IPv6 for Linux in HUT campus network MediaPoli, in: Proceedings of Ottawa Linux Symposium, 2001JulyRetrieved from https://www.kernel.org/doc/ols/2001/mipl.pdf .

[23] Kazunori Miyazawa, Masahide Nakamura, IPv6 IPsec and mobile IPv6 implementation of Linux, in: Proceedings of Linux Symposium, 2, 2004, pp. 372–

380. https://www.kernel.org/doc/ols/20 04/ols20 04v2- pages- 85- 94.pdf . [24] David Tarrant and Toby Hunt, “IPv6 Linux kernel support – mobile IPv6”, Technical Documentation, University of Southampton, Retrieved from http:

//users.ecs.soton.ac.uk/dt302/guides/IPv6- Mobile- Part1.pdf [25] Vijay Devarapalli , Ryuji Wakikawa , Alexandru Petrescu , Pascal Thubert , Network mobility (NEMO) basic support protocol, IETF, RFC 3963, 2005 January .

[26] Sri Gundavelli , Kent Leung , Vijay Devarapalli , Kuntal Chowdhury , Basavaraj Patil , Proxy mobile IPv6, IETF, RFC 5213, 2008 August . [27] OpenAir3-EURECOM, “Proxy MobileIPv6 Daemon– OpenAirInterface (v 0.4.1)”, Retrieved from http://openairinterface.eurecom.fr/

openairinterface-proxy-mobile-ipv6-oai-pmipv6 .

[28] Eric Wu, Johnny Lai, AhmetS. ekercioglu, A simulation model of mobile IPv6 protocol, in: Proceedings of Australian Telecommunications Networks andApplications conference (ATNAC’04), 2004 Dec. doi: 10.1.1.460.6437 .

[29] Faqir Z. Yousaf, Christian Muller and Christian Wietfeld, “A comprehensive MIPv6 based mobility management simulation engine for the next gener-ation network”, In Proceedings of the 3rd International ICST Conference on Simulation Tools and Techniques (SIMUTools ’10), Institute for Computer

Sciences, Social-Informatics and Telecommunications Engineering, Article No. 16, Doi: 10.4108/ICST.SIMUTOOLS2010.8699 . [30] FaqirZ. Yousaf, Christian Bauer, Mobile IPv6 Implementation for the Omnet ++ INET framework, Dortmund University of Technology, 2008 Technical

Report ofRetrieved from http://www.dlr.de/kn/desktopdefault.aspx/tabid-4979/8336 _ read-14161/ .

[31] Esad Kadusic, Mirko Skrbic, Natasa Zivic, A. Zgalj, A. Hantalasevic, Implementation of a HMIPv6 extension in the INET and xMIPv6 simulationframework with dynamic discovery for OMNeT 4.x, in: Proceedings of Information and Communication Technology, Electronics and Microelectron-

ics (MIPRO’015), 2015 May, doi: 10.1109/MIPRO.2015.7160344 . [32] Johnny Lai, Ahmet Sekercioglu, Norbert Jordan, Andreas Pitsillides, Performance evaluation of mobile IPv6 handover extensions in an IEEE 802.11b

wireless network environment, in: Proceedings of 11th IEEE Symposium on Computers and Communications, 2006, pp. 161–166. http://doi.ieeecomputersociety.org/10.1109/ISCC.2006.125 .

22 M.K. Rana et al. / Simulation Modelling Practice and Theory 72 (2017) 1–22

[33] Javier Carmona-Murillo, José-Luis González-Sánchez, Isaac Guerrero-Robledo, Handover performance analysis in mobile IPv6: a contribution to fastdetection movement, in: Proceedings of International Conference Wireless Information and Systems, 2008 July Retrieved from http://gitaca.es/javiercg/

uploads/ES/WINSYS-C1 _ 052.pdf . [34] Steffen Sroka and Holger Karl, “Mobile IPv6 simulation in OMNeT ++ ”, Retrieved from https://www.tkn.tu-berlin.de/menue/softhardware _ components/

software/simulation _ models/mobile _ ipv6 _ simulation _ in _ omnet/ . [35] Xiaoming Fu , Dieter Hogrefe , Deguang Le , TCP-M6: Mobility Aware TCP Extensions for Mobile IPv6, Institute for Informatics, University of Gottingen,

2006 Technical Report No. IFI-TB-2006-04ISSN 1611-1044, March .

[36] Xiaoming Fu , Dieter Hogrefe , Deguang Le , Xiaoyuan Gu , E2T: End-to-End Tunneling Extension to Mobile IPv6, Institute for Informatics, University ofGottingen, 2005 Technical Report No. IFI-TB-2005-05ISSN 1611-1044, September .

[37] Sabine Kebreau , Oussama Souihli , Samuel Pierre , A new implementation of HMIPv6 protocol on OPNET modeler 11.5, Opnetwork, 2008 August . [38] Thierry Ernst, MobiWan: NS-2 Extensions to Study Mobility in Wide-Area IPv6 Networks, MOTOROLA Labs, Paris, 2002 Retrieved from http://www.

inrialpes.fr/planete/mobiwan/ . [39] FarhanaF. Liza, Wenbing Yao, Implementation architecture of proxy mobile IPv6 protocol for NS2 simulator software, in: Proceedings of Communication

Software and Networks (ICCSN’ 09), 2009, doi: 10.1109/ICCSN.2009.156 . [40] Yan Zhang and Hai Bi, “The simulation of hierarchical mobile IPv6 with fast handover using NS2”, In Proceedings of 2nd SREE Conference on Engi-

neering Modelling and Simulation (CEMS 2012), Procedia Engineering, pp. 214–217, Doi: 10.1016/j.proeng.2012.04.229 .

[41] HyonY. Choi, Sung G. Min, Youn H. Han, Jungsoo Park, Hyoungjun Kim, Implementation and evaluation of proxy mobile IPv6 in NS-3 network simulator,in: Proceedings of Ubiquitous Information Technologies and Applications (CUTE), 2010, doi: 10.1109/ICUT.2010.5677817 .

[42] JunS. Lee, SeokJ. Koh, SangH. Kim, Analysis of handoff delay for mobile IPv6, in: Proceedings of Vehicular Technology Conference (VTC’04), 4, IEEE,2004, pp. 2967–2969, doi: 10.1109/VETECF.2004.1400604 .

[43] Jiang Xie, Ivan Howitt, Izzeldin Shibeika, IEEE 802.11-based mobile IP fast handoff latency analysis, in: Proceedings of IEEE International Conferenceon Communications (ICC ’07), 2007, pp. 6055–6060, doi: 10.1109/ICC.2007.1003 .

[44] Youn H. Han, Seung H. Hwang, Movement detection analysis in mobile IPv6, IEEE Commun. Lett. 10 (1) (2006) 59–61 January, doi: 10.1109/LCOMM.

2006.1576570 . [45] J. Sztrik , Basic Queueing Theory, University of Debrecen, Faculty of Informatics, 2011 .

[46] M.K. Rana, S. Mandal, B. Sardar, D. Saha, An experimentation with simulating mobile IPv6 (MIPv6) in NS-3 to handle user mobility, Working PaperSeries. WPS No. 769, 2015 Retrieved from https://www.iimcal.ac.in/sites/all/files/pdfs/wps _ 769.pdf .

[47] IEEE, Standard for Information technology- telecommunications and information exchange between systems local and metropolitan area networks-specific requirements”, part 11: wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) specifications, IEEE Standard 802.11, 2012 (Revi-

sion of IEEE Std 802.11, 2007), March 2012, Retrieved from http://standards.ieee.org/about/get/802/802.11.html .

[48] S. Fu, M. Atiquzzaman, Handover latency comparison of SIGMA, FMIPv6, HMIPv6, and FHMIPv6, in: Proceedings of Global Telecommunication Confer-ence (GLOBECOM’05), IEEE, 2005 December, doi: 10.1109/GLOCOM.2005.1578483 .