#include <UnderlayConfigurator.h>
Inheritance diagram for UnderlayConfigurator:
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 |
virtual int UnderlayConfigurator::createRandomNode | ( | bool | initialize | ) | [protected, pure virtual] |
Creates an overlay node.
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.
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] |
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] |
virtual void UnderlayConfigurator::setDisplayString | ( | ) | [protected, pure virtual] |
Sets display string.
Implemented in IPv4UnderlayConfigurator, SimpleNetConfigurator, and SingleHostConfigurator.
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