#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
1.4.7