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 | Access router connects the access nets to the network backbone |
GlobalObserver | global module that contains the bootstrapOracle and the globalStatistics module |
IPv4UnderlayConfigurator | Configurator of the IPv4Underlay |
OverlayAccessRouter | Access router that participates in the overlay |
OverlayRouter | Router in the overlay network |
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 (for overlayBackboneRouters) |
tier1Type | string | the application on top of the overlay used in the simulation (for overlayBackboneRouters) |
tier2Type | string | the module type on top of tier 1 (for overlayBackboneRouters) |
tier3Type | string | the module type on top of tier 2 (for overlayBackboneRouters) |
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.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.gracefulLeaveDelay | numeric | time between prekill and removal from overlay |
underlayConfigurator.gracefulLeaveProbability | numeric | probability of graceful leave |
underlayConfigurator.churnGeneratorTypes | string | a list of churn generators to be used |
underlayConfigurator.terminalTypes | string | list of terminal types |
underlayConfigurator.transitionTime | numeric | time to wait before measuring after init phase is finished |
underlayConfigurator.measurementTime | numeric | duration of the simulation after init and transition phase |
outRouter[*].parser | string | name of the PacketParser to use |
outRouter[*].routingFile | string | use predefined routing file if given |
outRouter[*].tunDev.mtu | numeric | maximum transmission unit of the underlaying network |
accessRouter[*].routingFile | string | use predefined routing file if given |
overlayAccessRouter[*].IPForward | bool | true if ip packets should be forwarded |
overlayAccessRouter[*].routingFile | string | use predefined routing file if given |
overlayAccessRouter[*].numTiers | numeric const | number of tiers |
overlayAccessRouter[*].neighborCache.enableNeighborCache | bool | |
overlayAccessRouter[*].neighborCache.rttExpirationTime | numeric | |
overlayAccessRouter[*].neighborCache.maxSize | numeric | |
overlayAccessRouter[*].bootstrapList.debugOutput | bool | enable debug output |
overlayAccessRouter[*].bootstrapList.mergeOverlayPartitions | bool | if true, detect and merge overlay partitions |
overlayAccessRouter[*].bootstrapList.maintainList | bool | maintain a list of bootstrap candidates and check them periodically |
overlayBackboneRouter[*].numTiers | numeric const | number of tiers |
overlayBackboneRouter[*].IPForward | bool | true if ip packets should be forwarded |
overlayBackboneRouter[*].routingFile | string | predefined routing |
overlayBackboneRouter[*].neighborCache.enableNeighborCache | bool | |
overlayBackboneRouter[*].neighborCache.rttExpirationTime | numeric | |
overlayBackboneRouter[*].neighborCache.maxSize | numeric | |
overlayBackboneRouter[*].bootstrapList.debugOutput | bool | enable debug output |
overlayBackboneRouter[*].bootstrapList.mergeOverlayPartitions | bool | if true, detect and merge overlay partitions |
overlayBackboneRouter[*].bootstrapList.maintainList | bool | maintain a list of bootstrap candidates and check them periodically |
globalObserver.useGlobalFunctions | numeric | are globalFunctions used? |
globalObserver.globalFunctionsType | string | type of globalFunctions |
globalObserver.bootstrapOracle.maliciousNodeProbability | numeric | probability for a node to be malicious on creation |
globalObserver.bootstrapOracle.maliciousNodeChange | bool | dynamically change number of malicious nodes |
globalObserver.bootstrapOracle.maliciousNodeChangeStartTime | numeric | simTime at which nodes begin to become malicious |
globalObserver.bootstrapOracle.maliciousNodeChangeRate | numeric | number of nodes to change to malicious compared to all nodes |
globalObserver.bootstrapOracle.maliciousNodeChangeInterval | numeric | time between two node changes to malicious |
globalObserver.bootstrapOracle.maliciousNodeChangeStartValue | numeric | minimum amount of malicious nodes in the peerSet |
globalObserver.bootstrapOracle.maliciousNodeChangeStopValue | numeric | maximum amount of malicious nodes in the peerSet |
globalObserver.bootstrapOracle.maxNumberOfKeys | numeric | maximum number of overlay keys the bootstrap oracle handles |
globalObserver.bootstrapOracle.keyProbability | numeric | probability of keys to be owned by nodes |
globalObserver.globalStatistics.outputMinMax | bool | enable output of minimum and maximum for scalars |
globalObserver.globalStatistics.outputStdDev | bool | enable output of standard deviation for scalars |
globalObserver.globalStatistics.measureNetwInitPhase | bool | fetch statistics in init phase? |
globalObserver.globalStatistics.globalStatTimerInterval | numeric | interval length of periodic statistic timer |
globalObserver.globalParameters.rpcUdpTimeout | numeric | default timeout value for direct RPCs |
globalObserver.globalParameters.rpcKeyTimeout | numeric | default timeout value for routed RPCs |
globalObserver.globalParameters.printStateToStdOut | bool | print overlay ready messages to std::cout |
globalObserver.globalParameters.topologyAdaptation | bool | turn on topologyAdaptation (for demonstrator) |
globalObserver.globalTraceManager.traceFile | string | file name of the trace file |
globalObserver.globalTraceManager.numTiers | numeric | number of tiers used |
globalObserver.globalTraceManager.overlayType | string | the overlay used in the simulation |
globalObserver.globalTraceManager.channelTypes | string | used access technologies |
globalObserver.globalTraceManager.tier1Type | string | the application on top of the overlay used in the simulation |
globalObserver.globalTraceManager.tier2Type | string | the module type on top of tier 1 |
globalObserver.globalTraceManager.tier3Type | string | the module type on top of tier 2 |
module IPv4Underlay parameters: overlayType: string, // the overlay used in the simulation (for overlayBackboneRouters) tier1Type: string, // the application on top of the overlay used in the simulation (for overlayBackboneRouters) tier2Type: string, // the module type on top of tier 1 (for overlayBackboneRouters) tier3Type: string, // the module type on top of tier 2 (for overlayBackboneRouters) 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, // the overlay used in the simulation tier1Type = tier1Type, // the application on top off the overly used in the simulation tier2Type = tier2Type, // tier 2 module to use tier3Type = tier3Type; // tier 3 module to use display: "i=device/server2,gray,30;i2=block/circle_s"; overlayBackboneRouter: OverlayRouter[overlayBackboneRouterNum] parameters: overlayType = overlayType, // the overlay used in the simulation tier1Type = tier1Type, // the application on top off the overly used in the simulation tier2Type = tier2Type, // tier 2 module to use tier3Type = tier3Type; // tier 3 module to use 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