Compound Module TunOutUnderlay

File: Underlay/TunOut/TunOutUnderlay.ned

(no description)

underlayConfigurator: IPv4UnderlayConfigurator backboneRouter: Router tunOutRouter: TunOutRouter accessRouter: AccessRouter overlayAccessRouter: OverlayAccessRouter overlayBackboneRouter: OverlayRouter bootstrapOracle: BootstrapOracle

Usage diagram:

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.

Contains the following modules:

If a module type shows up more than once, that means it has been defined in more than one NED file.

AccessRouter (no description)
BootstrapOracle (no description)
IPv4UnderlayConfigurator

Configurator of the IPv4Underlay

OverlayAccessRouter (no description)
OverlayRouter (no description)
TunOutRouter (no description)
Router (unknown -- not in documented files)

Contains the following channels:

fiberline (no description)

Networks:

TunOutNetwork (no description)

Parameters:

Name Type Description
overlayType string
overlayAppType string
backboneRouterNum numeric
accessRouterNum numeric
overlayBackboneRouterNum numeric
overlayAccessRouterNum numeric
connectivity numeric

Unassigned submodule parameters:

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

tunOutRouter.parser string
tunOutRouter.routingFile string
tunOutRouter.tunOut.mtu numeric
accessRouter[*].routingFile string
overlayAccessRouter[*].IPForward bool
overlayAccessRouter[*].routingFile string
overlayBackboneRouter[*].IPForward bool
overlayBackboneRouter[*].routingFile string
bootstrapOracle.maxNumberOfKeys numeric
bootstrapOracle.keyProbability numeric

Source code:

module TunOutUnderlay

    parameters:
	overlayType: string,
	overlayAppType: string,
        backboneRouterNum: numeric,
        accessRouterNum: numeric,
        overlayBackboneRouterNum: numeric,
        overlayAccessRouterNum: numeric,
        connectivity: numeric;

    submodules:
        underlayConfigurator: IPv4UnderlayConfigurator;
            display: "i=block/cogwheel";
        backboneRouter: Router[backboneRouterNum];
            display: "i=device/server2";
	tunOutRouter: TunOutRouter;
	    display: "i=misc/globe";
        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";
        bootstrapOracle: BootstrapOracle;
            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;

        //
        // TUNOUT ROUTER
        //
        // connect tunOutRouters with backboneRouters
        tunOutRouter.out++ --> fiberline --> backboneRouter[intuniform2(0, backboneRouterNum - 1, 0, 1)].in++ if uniform2(0, 1, 0, 1) > overlayBackboneRouterNum / (overlayBackboneRouterNum + backboneRouterNum);
        tunOutRouter.in++ <-- fiberline <-- backboneRouter[intuniform2(0, backboneRouterNum - 1, 0, 0)].out++ if uniform2(0, 1, 0, 0) > overlayBackboneRouterNum / (overlayBackboneRouterNum + backboneRouterNum);

        // connect tunOutRouters with overlayBackboneRouters
        tunOutRouter.out++ --> fiberline --> overlayBackboneRouter[intuniform2(0, overlayBackboneRouterNum - 1, 0, 1)].in++ if uniform2(0, 1, 0, 0) <= overlayBackboneRouterNum / (overlayBackboneRouterNum + backboneRouterNum);
        tunOutRouter.in++ <-- fiberline <-- overlayBackboneRouter[intuniform2(0, overlayBackboneRouterNum - 1, 0, 0)].out++ if uniform2(0, 1, 0, 0) <= overlayBackboneRouterNum / (overlayBackboneRouterNum + backboneRouterNum);

        //
        // 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