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 | (no description) |
OverlayRouter | (no description) |
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 |
overlayAppType | string | the application on top off the overly used in the simulation |
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 |
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.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.channelTypes | string | used access technologies |
accessRouter[*].routingFile | string | |
overlayAccessRouter[*].IPForward | bool | |
overlayAccessRouter[*].routingFile | string | |
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 overlayAppType: string, // the application on top off the overly used in the simulation 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 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"; accessRouter: AccessRouter[accessRouterNum]; display: "i=device/server2,gray,30"; overlayAccessRouter: OverlayAccessRouter[overlayAccessRouterNum] parameters: overlayType = overlayType, overlayAppType = overlayAppType; display: "i=device/server2,gray,30;i2=block/circle_s"; overlayBackboneRouter: OverlayRouter[overlayBackboneRouterNum] parameters: overlayType = overlayType, overlayAppType = overlayAppType; display: "i=device/server2;i2=block/circle_s"; globalObserver: GlobalObserver; display: "i=block/control"; connections nocheck: // // BACKBONE ROUTER // // 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