File: Underlay/IPv4Underlay/IPv4Underlay.ned
The IPv4Underlay ned-file
See also: IPv4UnderlayConfigurator
The following diagram shows usage relationships between modules, networks and channels. Unresolved module (and channel) types are missing from the diagram. Click here to see the full picture.
If a module type shows up more than once, that means it has been defined in more than one NED file.
AccessRouter | (no description) |
GlobalObserver | (no description) |
IPv4UnderlayConfigurator | Configurator of the IPv4Underlay |
OverlayAccessRouter | Access router that participates in the overlay |
OverlayRouter | (no description) |
TunOutRouter | TunOut router. |
Router | (unknown -- not in documented files) |
fiberline | (no description) |
IPv4Network | The IPv4Underlay network definition |
Name | Type | Description |
---|---|---|
overlayType | string | the overlay used in the simulation |
tier1Type | string | the application on top off the overly used in the simulation |
tier2Type | string | |
tier3Type | string | |
backboneRouterNum | numeric | number of backbone routers in the network |
accessRouterNum | numeric | number of access routers in the network |
overlayBackboneRouterNum | numeric | number of backbone routers in the network that participate the overlay |
overlayAccessRouterNum | numeric | number of access routers in the network that participate the overlay |
outRouterNum | numeric | set to 1 if you want to use a TunOutRouter as connection to a real network |
connectivity | numeric | degree of connectivity of backbone routers (1 = every backbone router is connected to all the others) |
Name | Type | Description |
---|---|---|
underlayConfigurator.simulateMobility | bool | add/remove nodes in and after init phase? |
underlayConfigurator.initialOverlayTerminalNum | numeric | number of nodes created before init phase |
underlayConfigurator.targetOverlayTerminalNum | numeric | number of nodes after init phase |
underlayConfigurator.initialMobilityDelay | numeric | node creation interval in init phase |
underlayConfigurator.targetMobilityDelay | numeric | node creation/removal/migration interval after init phase |
underlayConfigurator.targetMobilityDelay2 | numeric | |
underlayConfigurator.creationProbability | numeric | probability that a new node gets created |
underlayConfigurator.migrationProbability | numeric | probability that a node migrates |
underlayConfigurator.removalProbability | numeric | probability that a node gets removed |
underlayConfigurator.startIP | string | IP configuration starts with this IP |
underlayConfigurator.gatewayIP | string | IP of the gateway (if an outRouter is used) |
underlayConfigurator.channelTypes | string | used access technologies |
underlayConfigurator.keepFirstNode | bool | |
underlayConfigurator.churnChangeInterval | numeric | |
outRouter[*].parser | string | |
outRouter[*].routingFile | string | |
outRouter[*].tunDev.mtu | numeric | |
accessRouter[*].routingFile | string | |
overlayAccessRouter[*].IPForward | bool | |
overlayAccessRouter[*].routingFile | string | |
overlayAccessRouter[*].numTiers | numeric const | number of tiers |
overlayBackboneRouter[*].numTiers | numeric const | number of tiers |
overlayBackboneRouter[*].IPForward | bool | |
overlayBackboneRouter[*].routingFile | string | |
globalObserver.useGlobalFunctions | numeric | |
globalObserver.globalFunctionsType | string | |
globalObserver.bootstrapOracle.maxNumberOfKeys | numeric | |
globalObserver.bootstrapOracle.keyProbability | numeric |
module IPv4Underlay parameters: overlayType: string, // the overlay used in the simulation tier1Type: string, // the application on top off the overly used in the simulation tier2Type: string, tier3Type: string, backboneRouterNum: numeric, // number of backbone routers in the network accessRouterNum: numeric, // number of access routers in the network overlayBackboneRouterNum: numeric, // number of backbone routers in the network that participate the overlay overlayAccessRouterNum: numeric, // number of access routers in the network that participate the overlay outRouterNum: numeric, // set to 1 if you want to use a TunOutRouter as connection to a real network connectivity: numeric; // degree of connectivity of backbone routers (1 = every backbone router is connected to all the others) submodules: underlayConfigurator: IPv4UnderlayConfigurator; display: "i=block/cogwheel"; backboneRouter: Router[backboneRouterNum]; display: "i=device/server2"; outRouter: TunOutRouter[min(1, outRouterNum)]; display: "i=misc/globe"; accessRouter: AccessRouter[accessRouterNum]; display: "i=device/server2,gray,30"; overlayAccessRouter: OverlayAccessRouter[overlayAccessRouterNum] parameters: overlayType = overlayType, tier1Type = tier1Type, tier2Type = tier2Type, tier3Type = tier3Type; display: "i=device/server2,gray,30;i2=block/circle_s"; overlayBackboneRouter: OverlayRouter[overlayBackboneRouterNum] parameters: overlayType = overlayType, tier1Type = tier1Type, tier2Type = tier2Type, tier3Type = tier3Type; display: "i=device/server2;i2=block/circle_s"; globalObserver: GlobalObserver; display: "i=block/control"; connections nocheck: // // BACKBONE ROUTER // // connect outRouter to a backboneRouter backboneRouter[0].out++ --> fiberline --> outRouter[0].in++ if outRouterNum > 0; backboneRouter[0].in++ <-- fiberline <-- outRouter[0].out++ if outRouterNum > 0; // connect backboneRouters with other backboneRouters for i=0..backboneRouterNum - 1, j=0..backboneRouterNum - 1 do backboneRouter[i].out++ --> fiberline --> backboneRouter[j].in++ if i < j && uniform2(0, 1, i, 1) <= connectivity; backboneRouter[i].in++ <-- fiberline <-- backboneRouter[j].out++ if i < j && uniform2(0, 1, i, 0) <= connectivity; endfor; // connect backboneRouters with overlayBackboneRouters for i=0..backboneRouterNum - 1, j=0..overlayBackboneRouterNum - 1 do backboneRouter[i].out++ --> fiberline --> overlayBackboneRouter[j].in++ if i <= j && uniform2(0, 1, i, 0) <= connectivity; backboneRouter[i].in++ <-- fiberline <-- overlayBackboneRouter[j].out++ if i <= j && uniform2(0, 1, i, 0) <= connectivity; endfor; // connect overlayBackboneRouters with backboneRouters for i=0..overlayBackboneRouterNum - 1, j=0..backboneRouterNum - 1 do overlayBackboneRouter[i].out++ --> fiberline --> backboneRouter[j].in++ if i < j && uniform2(0, 1, i, 1) <= connectivity; overlayBackboneRouter[i].in++ <-- fiberline <-- backboneRouter[j].out++ if i < j && uniform2(0, 1, i, 0) <= connectivity; endfor; // connect overlayBackboneRouters with other overlayBackboneRouters for i=0..overlayBackboneRouterNum - 1, j=0..overlayBackboneRouterNum - 1 do overlayBackboneRouter[i].out++ --> fiberline --> overlayBackboneRouter[j].in++ if i < j && uniform2(0, 1, i, 0) <= connectivity; overlayBackboneRouter[i].in++ <-- fiberline <-- overlayBackboneRouter[j].out++ if i < j && uniform2(0, 1, i, 0) <= connectivity; endfor; // // ACCESS ROUTER // // connect accessRouters with backboneRouters for i=0..accessRouterNum - 1 do accessRouter[i].out++ --> fiberline --> backboneRouter[intuniform2(0, backboneRouterNum - 1, 0, 1)].in++ if uniform2(0, 1, i, 1) > overlayBackboneRouterNum / (overlayBackboneRouterNum + backboneRouterNum); accessRouter[i].in++ <-- fiberline <-- backboneRouter[intuniform2(0, backboneRouterNum - 1, 0, 0)].out++ if uniform2(0, 1, i, 0) > overlayBackboneRouterNum / (overlayBackboneRouterNum + backboneRouterNum); endfor; // connect accessRouters with overlayBackboneRouters for i=0..accessRouterNum - 1 do accessRouter[i].out++ --> fiberline --> overlayBackboneRouter[intuniform2(0, overlayBackboneRouterNum - 1, 0, 1)].in++ if uniform2(0, 1, i, 0) <= overlayBackboneRouterNum / (overlayBackboneRouterNum + backboneRouterNum); accessRouter[i].in++ <-- fiberline <-- overlayBackboneRouter[intuniform2(0, overlayBackboneRouterNum - 1, 0, 0)].out++ if uniform2(0, 1, i, 0) <= overlayBackboneRouterNum / (overlayBackboneRouterNum + backboneRouterNum); endfor; // connect overlayAccessRouters with backboneRouters for i=0..overlayAccessRouterNum - 1 do overlayAccessRouter[i].out++ --> fiberline --> backboneRouter[intuniform2(0, backboneRouterNum - 1, 0, 1)].in++ if uniform2(0, 1, i, 1) > overlayBackboneRouterNum / (overlayBackboneRouterNum + backboneRouterNum); overlayAccessRouter[i].in++ <-- fiberline <-- backboneRouter[intuniform2(0, backboneRouterNum - 1, 0, 0)].out++ if uniform2(0, 1, i, 0) > overlayBackboneRouterNum / (overlayBackboneRouterNum + backboneRouterNum); endfor; // connect overlayAccessRouters with overlayBackboneRouters for i=0..overlayAccessRouterNum - 1 do overlayAccessRouter[i].out++ --> fiberline --> overlayBackboneRouter[intuniform2(0, overlayBackboneRouterNum - 1, 0, 1)].in++ if uniform2(0, 1, i, 0) <= overlayBackboneRouterNum / (overlayBackboneRouterNum + backboneRouterNum); overlayAccessRouter[i].in++ <-- fiberline <-- overlayBackboneRouter[intuniform2(0, overlayBackboneRouterNum - 1, 0, 0)].out++ if uniform2(0, 1, i, 0) <= overlayBackboneRouterNum / (overlayBackboneRouterNum + backboneRouterNum); endfor; endmodule