UnderlayConfigurator Class Reference

#include <UnderlayConfigurator.h>

Inheritance diagram for UnderlayConfigurator:

IPv4UnderlayConfigurator SimpleNetConfigurator SingleHostConfigurator List of all members.

Detailed Description

Base class for configurators of different underlay models.

Author:
Stephan Krause, Bernhard Heep


Public Member Functions

bool isInit ()
 still in initialization phase?

Public Attributes

timeval initFinishedTime
 timestamp at end of init phase

Protected Member Functions

int numInitStages () const
 OMNeT number of init stages.
virtual void initialize (int stage)
 OMNeT init methods.
virtual void initializeUnderlay (int stage)=0
 Init method for derived underlay configurators.
virtual int createRandomNode (bool initialize)=0
 Creates an overlay node.
virtual void killRandomNode ()=0
 Removes randomly chosen overlay nodes from a randomly chosen access net.
virtual void migrateRandomNode ()=0
 Migrates randomly chosen overlay nodes from on access net to another.
virtual void finish ()=0
 Cleans up configurator.
virtual void setDisplayString ()=0
 Sets display string.
void handleMessage (cMessage *msg)
 Node mobility simulation.

Protected Attributes

std::vector< std::string > channelTypes
 possible access types
bool init
 still in initialization phase?
int initialOverlayTerminalNum
 number of overlay terminals at beginning of simulation
int targetOverlayTerminalNum
 final number of overlay terminals
int overlayTerminalCount
 current number of overlay terminals
bool keepFirstNode
int firstNodeId

Private Attributes

double creationProbability
 probability of creating a new overlay terminal
double migrationProbability
 probability of migrating an overlay terminal
double removalProbability
 probability of removing an overlay terminal
double initialMean
 mean of update interval during initalization phase
double initialDeviation
 deviation of update interval during initalization phase
double targetMean
 mean of update interval after initalization phase
cMessage * churnMsg
bool churnIntervalChanged


Member Function Documentation

virtual int UnderlayConfigurator::createRandomNode ( bool  initialize  )  [protected, pure virtual]

Creates an overlay node.

Parameters:
initialize 

Implemented in IPv4UnderlayConfigurator, SimpleNetConfigurator, and SingleHostConfigurator.

virtual void UnderlayConfigurator::finish (  )  [protected, pure virtual]

Cleans up configurator.

Implemented in IPv4UnderlayConfigurator, SimpleNetConfigurator, and SingleHostConfigurator.

void UnderlayConfigurator::handleMessage ( cMessage *  msg  )  [protected]

Node mobility simulation.

Parameters:
msg timer-message
00063 {
00064     //schedule churnMsg
00065     if((double)(par("churnChangeInterval")) == 0) {
00066         targetMean = par("targetMobilityDelay");
00067         churnIntervalChanged = false;
00068     } else if(!churnMsg->isScheduled()) {
00069         scheduleAt(simulation.simTime() + (double)(par("churnChangeInterval")), churnMsg);
00070     }
00071 
00072     if(msg == churnMsg) {
00073         if(churnIntervalChanged) {
00074             targetMean = par("targetMobilityDelay");
00075             churnIntervalChanged = false;
00076         } else {
00077             targetMean = par("targetMobilityDelay2");
00078             churnIntervalChanged = true;
00079         }
00080         std::stringstream temp;
00081         temp << "Churn-rate changed to " << targetMean;
00082         bubble(temp.str().c_str());
00083     }
00084     else if ( init ) {
00085         // increase the number of nodes steadily during setup
00086 
00087         init = (overlayTerminalCount < (int)par("targetOverlayTerminalNum"));
00088 
00089         if (!init)
00090             gettimeofday(&initFinishedTime, NULL);
00091         else
00092             createRandomNode(false);
00093 
00094         scheduleAt(simulation.simTime()
00095                    + truncnormal(initialMean, initialDeviation), msg);
00096     } else {          
00097         double random = uniform(0, 1);
00098 
00099         // modify the number of nodes according to user parameters
00100         if (overlayTerminalCount != 0) {
00101             if(random < creationProbability) {
00102                 createRandomNode(false);
00103             } else if(creationProbability <= random &&
00104                       random < creationProbability + removalProbability &&
00105                       overlayTerminalCount > 1) {
00106                 killRandomNode();
00107             } else if ( creationProbability + removalProbability <= random &&
00108                         random < creationProbability + removalProbability
00109                         + migrationProbability) {
00110                 migrateRandomNode();
00111             }
00112         }
00113         scheduleAt(simulation.simTime() + truncnormal(targetMean, targetMean / 3), msg);
00114     }
00115     setDisplayString();
00116 }

void UnderlayConfigurator::initialize ( int  stage  )  [protected, virtual]

OMNeT init methods.

00035 {
00036     if(stage == MIN_STAGE_UNDERLAY) {
00037         initialOverlayTerminalNum = par("initialOverlayTerminalNum");
00038         targetOverlayTerminalNum = par("targetOverlayTerminalNum");
00039         creationProbability = par("creationProbability");
00040         migrationProbability = par("migrationProbability");
00041         removalProbability = par("removalProbability");
00042         initialMean = par("initialMobilityDelay");
00043         initialDeviation = initialMean / 3;
00044         targetMean = par("targetMobilityDelay");
00045         WATCH(targetMean);
00046         //targetDeviation = targetMean / 3;
00047         channelTypes = cStringTokenizer(par("channelTypes"), " ").asVector();
00048         init = true;
00049         gettimeofday(&initFinishedTime, NULL);
00050         keepFirstNode = par("keepFirstNode");
00051         firstNodeId = -1;
00052         WATCH(firstNodeId);
00053 
00054         churnMsg = new cMessage;
00055         churnIntervalChanged = false;
00056     }
00057 
00058     if(stage >= MIN_STAGE_UNDERLAY && stage <= MAX_STAGE_UNDERLAY)
00059         initializeUnderlay(stage);
00060 }

virtual void UnderlayConfigurator::initializeUnderlay ( int  stage  )  [protected, pure virtual]

Init method for derived underlay configurators.

Implemented in IPv4UnderlayConfigurator, SimpleNetConfigurator, and SingleHostConfigurator.

bool UnderlayConfigurator::isInit (  )  [inline]

still in initialization phase?

00049     {
00050         return init;
00051     };

virtual void UnderlayConfigurator::killRandomNode (  )  [protected, pure virtual]

Removes randomly chosen overlay nodes from a randomly chosen access net.

Implemented in IPv4UnderlayConfigurator, SimpleNetConfigurator, and SingleHostConfigurator.

virtual void UnderlayConfigurator::migrateRandomNode (  )  [protected, pure virtual]

Migrates randomly chosen overlay nodes from on access net to another.

Implemented in IPv4UnderlayConfigurator, SimpleNetConfigurator, and SingleHostConfigurator.

int UnderlayConfigurator::numInitStages (  )  const [protected]

OMNeT number of init stages.

00030 {
00031     return MAX_STAGE_UNDERLAY + 1;
00032 }

virtual void UnderlayConfigurator::setDisplayString (  )  [protected, pure virtual]

Sets display string.

Implemented in IPv4UnderlayConfigurator, SimpleNetConfigurator, and SingleHostConfigurator.


Member Data Documentation

std::vector<std::string> UnderlayConfigurator::channelTypes [protected]

possible access types

bool UnderlayConfigurator::churnIntervalChanged [private]

cMessage* UnderlayConfigurator::churnMsg [private]

double UnderlayConfigurator::creationProbability [private]

probability of creating a new overlay terminal

int UnderlayConfigurator::firstNodeId [protected]

bool UnderlayConfigurator::init [protected]

still in initialization phase?

struct timeval UnderlayConfigurator::initFinishedTime

timestamp at end of init phase

double UnderlayConfigurator::initialDeviation [private]

deviation of update interval during initalization phase

double UnderlayConfigurator::initialMean [private]

mean of update interval during initalization phase

int UnderlayConfigurator::initialOverlayTerminalNum [protected]

number of overlay terminals at beginning of simulation

bool UnderlayConfigurator::keepFirstNode [protected]

double UnderlayConfigurator::migrationProbability [private]

probability of migrating an overlay terminal

int UnderlayConfigurator::overlayTerminalCount [protected]

current number of overlay terminals

double UnderlayConfigurator::removalProbability [private]

probability of removing an overlay terminal

double UnderlayConfigurator::targetMean [private]

mean of update interval after initalization phase

int UnderlayConfigurator::targetOverlayTerminalNum [protected]

final number of overlay terminals


The documentation for this class was generated from the following files:
Generated on Wed Apr 4 13:37:07 2007 for ITM OverSim by  doxygen 1.4.7