Pmipv6

Package: inet.networklayer.pmipv6

simple module Pmipv6

Implements Proxy Mobile IPv6 (RFC 5213): network-based mobility management. Unlike Mobile IPv6 (Mipv6), the mobile node runs no mobility software; the network handles mobility through two entities, both implemented by this module and selected by the isLocalMobilityAnchor / isMobileAccessGateway parameters:

  • the Local Mobility Anchor (LMA), the home-prefix anchor and tunnel endpoint,

    analogous to a Mobile IPv6 home agent; and

  • the Mobile Access Gateway (MAG), the access router that detects mobile-node

    attachment, sends Proxy Binding Updates to the LMA on the mobile node’s behalf, sets up the tunnel to the LMA, and advertises the mobile node’s home network prefix on the access link.

It is a submodule of Ipv6NetworkLayer (enabled by its hasPmipv6 parameter).

See also: LocalMobilityAnchor, MobileAccessGateway

inet.networklayer.pmipv6.Pmipv6Pmipv6simple

Usage diagram

Inheritance diagram

Used in compound modules

Name

Type

Description

Ipv6NetworkLayer

compound module

Represents a complete IPv6 network layer (L3), to be used within hosts and routers. It connects to higher-layer protocols (TCP, UDP, …) on top and to the network interfaces below, and bundles the modules that together implement IPv6:

Extends

Name

Type

Description

SimpleModule

simple module

Base module for all INET simple modules.

Parameters

Name

Type

Default value

Description

displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

interfaceTableModule

string

path to the InterfaceTable module

ipv6NeighbourDiscoveryModule

string

path to the Ipv6NeighbourDiscovery module

isLocalMobilityAnchor

bool

false

(the IPv6 routing table is resolved automatically)

isMobileAccessGateway

bool

false

localMobilityAnchorAddress

string

“”

MAG: the address of the LMA to register mobile nodes with

mobileNodeProfiles

xml

xml(“<mobileNodes/>”)

MAG: mobile-node policy profiles, one per access interface, e.g. <mobileNodes> <mobileNode accessInterface=”wlan0” id=”mn1@example.com” homeNetworkPrefix=”2001:db8:1::” prefixLength=”64”/> </mobileNodes> (accessInterface may be omitted to match any access interface)

bindingLifetime

double

3600s

lifetime requested in Proxy Binding Updates

homeNetworkPrefixAdvValidLifetime

double

3600s

MAG: valid lifetime of the advertised home network prefix

homeNetworkPrefixAdvPreferredLifetime

double

1800s

MAG: preferred lifetime of the advertised home network prefix

Properties

Name

Value

Description

class

Pmipv6

display

i=block/network2

Gates

Name

Direction

Size

Description

fromIPv6

input

toIPv6

output

Signals

Name

Type

Unit

Description

packetDropped

cPacket

Source code

//
// Implements Proxy Mobile IPv6 (RFC 5213): network-based mobility management.
// Unlike Mobile IPv6 (~Mipv6), the mobile node runs no mobility software; the
// network handles mobility through two entities, both implemented by this module
// and selected by the `isLocalMobilityAnchor` / `isMobileAccessGateway` parameters:
//
//  - the Local Mobility Anchor (LMA), the home-prefix anchor and tunnel endpoint,
//    analogous to a Mobile IPv6 home agent; and
//  - the Mobile Access Gateway (MAG), the access router that detects mobile-node
//    attachment, sends Proxy Binding Updates to the LMA on the mobile node's behalf,
//    sets up the tunnel to the LMA, and advertises the mobile node's home network
//    prefix on the access link.
//
// It is a submodule of ~Ipv6NetworkLayer (enabled by its `hasPmipv6` parameter).
//
// @see ~LocalMobilityAnchor, ~MobileAccessGateway
//
simple Pmipv6 extends SimpleModule
{
    parameters:
        @class(Pmipv6);
        string interfaceTableModule;          // path to the InterfaceTable module
        string ipv6NeighbourDiscoveryModule;  // path to the Ipv6NeighbourDiscovery module
                                              // (the IPv6 routing table is resolved automatically)
        bool isLocalMobilityAnchor = default(false);
        bool isMobileAccessGateway = default(false);

        // MAG: the address of the LMA to register mobile nodes with
        string localMobilityAnchorAddress = default("");

        // MAG: mobile-node policy profiles, one per access interface, e.g.
        //   <mobileNodes>
        //     <mobileNode accessInterface="wlan0" id="[email protected]"
        //                 homeNetworkPrefix="2001:db8:1::" prefixLength="64"/>
        //   </mobileNodes>
        // (accessInterface may be omitted to match any access interface)
        xml mobileNodeProfiles = default(xml("<mobileNodes/>"));

        double bindingLifetime @unit(s) = default(3600s);                    // lifetime requested in Proxy Binding Updates
        double homeNetworkPrefixAdvValidLifetime @unit(s) = default(3600s);  // MAG: valid lifetime of the advertised home network prefix
        double homeNetworkPrefixAdvPreferredLifetime @unit(s) = default(1800s); // MAG: preferred lifetime of the advertised home network prefix
        @display("i=block/network2");
        @signal[packetDropped](type=cPacket);
    gates:
        input fromIPv6;
        output toIPv6;
}

File: src/inet/networklayer/pmipv6/Pmipv6.ned