OverSim and Churn
OverSim uses churn generators for simulating non-static networks. The different churn generators simulate different user behaviour and can be configured individually. Note: all churn generators use an "init phase" where nodes will be added to the network until targetOverlayTerminalNum is reached: On average every ".initPhaseCreationInterval" seconds, one node will be added. After all nodes have been added the so called transition phase starts, which is used to let the network stabilize before measurements begin. The duration of the transition phase is specified by the .transitionTime parameter. After the transition phase has ended, finally the measurement phase begins, in which statistics are collected. The duration of the measurement phase is specified by the .measurementTime parameter. At the end of the measurement phase the simulation ends.
- Node behaviour: No churn. Nodes will be added until targetOverlayTerminalNum is reached; after that, the network will remain static.
- Parameters: None
- Node behaviour: On creation of a node, his lifetime will be drawn randomly from a given probability function. When this time is reached, the node is removed. A new node will be created after a dead time drawn from the same probability function.
- lifetimeMean: The mean lifetime (in sec).
- lifetimeDistName: The function used for drawing the lifetimes (default: weibull)
- Node behaviour: Similar to LifetimeChurn, a node's lifetime is drawn on creation. However, this is done in a two-stepped process. For details, please read Yao, Z.; Leonard, D.; Wang, X. & Loguinov, D. "Modeling Heterogeneous User Churn and Local Resilience of Unstructured P2P Networks" Proceedings of the 2006 14th IEEE International Conference on Network Protocols, 2006. ICNP '06. 2006, pp. 32--41
- lifetimeMean: The mean lifetime (in sec).
- deadtimeMean: The mean deadtime (in sec).
- Notes: This churn generator results in heavy tailed session times similar to empirical results from P2P filesharing networks or MMOGs.
- Node behavior: In fixed intervals a random number is drawn. Depending on this number, a random node is either added, deleted or migrated.
- targetMobilityDelay: Timespan in seconds between two actions.
- creationProbability, migrationProbability, removalProbability: Changes the probability of the actions taken when a number is drawn. Example: creationProbability=0.5, removalProbability=0.5, migrationProbability=0. In this case, every targetMobilityDelay seconds a node is added or removed with a probability of 50%. Other example: creationProbability=0.6, removalProbability=0.4, migrationProbability=0. In this example, nodes are created with a probability of 60% and removed with a probability of 40%. This will result in a constantly growing network.
- Parameter restriction: The sum of all probabilities must not exceed 1.
Using multiple churn generators
In some simulation scenarios you might feel the need to use multiple churn generators in a single run, for example when you have two classes of nodes that act differently. You can do this by specifying multiple churn generators, separated by a single space. You can then configure each churn generator separately by using "-0[*]." as prefix for parameters valid for nodes controlled by the first churn generator, "-1[*]" for the second, and so on.
Example: We want to use PubSubMMOG, a protocol that relies on a central lobby server for some tasks, but uses peer-to-peer techniques for everything else. This lobby server is assumed to be fail save, all other clients will join or leave the network frequently. This implies we need two different churn generators: One for the lobby server, one for the rest of the network.
**.churnGeneratorTypes = "oversim.common.NoChurn oversim.common.LifetimeChurn" **-0[*].overlayType = "oversim.overlay.pubsubmmog.OverlayPubSubLobby" **-0[*].tier1Type = "oversim.common.TierDummy" **-0[*].targetOverlayTerminalNum = 1 **-1[*].overlayType = "oversim.overlay.pubsubmmog.OverlayPubSubMMOG" **-1[*].tier1Type = "oversim.applications.simplegameclient.SimpleGameClientModules" **-1[*].targetOverlayTerminalNum=10 **-1[*].lifetimeMean=1000s
Here "NoChurn" and "LifetimeChurn" are used. NoChurn creates one single static node (.targetOverlayTerminalNum=1). This node will use the "OverlayPubSubLobby" overlay module. The other nodes will be managend by LifetimeChurn. There will be an average of 10 these nodes (.targetOverlayTerminalNum=10). They will stay for average 1000 seconds (.lifetimeMean=1000s) and use "OverlayPubSubMMOG" as overlay module, and "SimpleGameClientModules" as tier 1 application.