Difference between revisions of "MIH implementation"

From Nsnam
Jump to: navigation, search
(Where is what?)
(Use of smart pointers)
Line 38: Line 38:
  
 
==== Use of smart pointers ====
 
==== Use of smart pointers ====
 +
Most of the data structures used in the MIH framework can be accessed via the native smart pointer (Ptr<>) API. This is done by adding the macro definitions '''PTR_HELPER_HEADER (MyClass)''' and '''PTR_HELPER_IMPLEM (MyClass)''' in the files my-class.h and my-class.cc respectively.
 +
 
==== Designing choice structures ====
 
==== Designing choice structures ====
  

Revision as of 12:32, 1 November 2008

The goal of this article is to describe the ongoing implementation framework of the emerging 802.21 standard in ns-3. If you arrived here following your high curiosity line, that's great but assure that you have first read a few documents regarding that draft standard.

Main Page - Current Development - Developer FAQ - Tools - Related Projects - Project Ideas - Summer Projects

Installation - Troubleshooting - User FAQ - HOWTOs - Samples - Models - Education - Contributed Code - Papers

Overview

MIH framework in NS-3

In MIH, the main blocks are:

  • MIH Function
  • MIH User
  • Link -- called NetDevice in ns-3
  • SAP -- interfaces between them.

In ns-3, the MIH framework is being implemented by taking profit of the native "Object Aggregation" mechanism. You have to consider the following classes if you want to make any interaction with the MIH framework:

  • MihLinkSap -- a generic class exposing the MIH_LINK_SAP interface to NetDevice
  • MihSap -- a generic class exposing the media independent MIH_SAP to MIH_USER
  • MihFunction -- defined as a final class

For each technology type you want to have support from the MIH framework, you need to subclass the MihLinkSap and "add" (AggregateObject) such an implementation as an interface to your NetDevice. This makes it possible for the MihFunction to query your NetDevice for the generic MihLinkSap interface.

The same applies when defining an MIH USER application. You will need to subclass the MihSap and aggregate it to your MIH USER entity so that the MihFunction can query for its generic MihSap interface.

API description

Where is what?

Several data types come shipped within the MIH framework. Specially, you will find some in the related files:

  • General data types -- src/mih/mih-define.h
    • Status -- the status of the primitive execution
  • Data types for addresses -- use the native Address class
  • Data types for links manipulation -- src/mih/mih-link.h
    • BattLevel -- percentage of battery charge remaining
    • ChannelId -- channels identifier
    • DevStatesReq -- list of device state requests
    • DevStatesRsp -- a device status
    • ...
  • QoS-related data types -- src/mih/mih-qos.h
  • DIP configuration related data types -- src/mih/mih-ip-configuration.h
  • Information Element related data types -- src/mih/mih-information-element.h
  • MIHF identification related data -- src/mih/mihf-id.h
  • MIHF registration related data -- src/mih/mih-registration.h
  • ...

Use of smart pointers

Most of the data structures used in the MIH framework can be accessed via the native smart pointer (Ptr<>) API. This is done by adding the macro definitions PTR_HELPER_HEADER (MyClass) and PTR_HELPER_IMPLEM (MyClass) in the files my-class.h and my-class.cc respectively.

Designing choice structures

Tasks completed so far

By now, the following MIH blocks are defined:

  • An abstract MIH_LINK_SAP class and its primitives
  • An abstract MIH_SAP class and its primitives (except those related to remote communication)

Ongoing development

The following tasks are being held currently:

  • Implementation of the MIH_FUNCTION for local MIH events and commands exchanges:
    • Link events delivery from MIH_LINK_SAPs to MIH_USERs (through MIH_SAPs)
    • Command delivery from MIH_USERs to MIH_LINK_SAPs

Foresights

In this section, you will find various components that are still needed to have start some MIH framework tests.

They are presented in their order of priority:

Local MIH exchanges

  • Integration with WifiNetDevice and WimaxNetDevice
    • WifiMihLinkSap -- ready to be done
    • WimaxMihLinkSap -- until Wimax is validated
  • Examples of MIH Users entities:
    • A simple application is to be defined later.

Remote MIH exchanges

  • The MIH Protocol including:
    • Packet TLV formats
    • MIH message header format
    • Transport of MIH messages over L3+ plane
  • MIIS
    • RDF schemas