Compound Module SimpleOverlayHost

File: Underlay/SimpleUnderlay/SimpleOverlayHost.ned

Host in the simple network that participates in the overlay

Author: Stephan Krause, Bernhard Heep

notificationBoard: NotificationBoard tier3: tier3Type like Tier tier2: tier2Type like Tier tier1: tier1Type like Tier overlay: overlayType like Overlay udp: SimpleUDP interfaceTable: InterfaceTable

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.

Overlay (no description)
SimpleUDP

UDP protocol implementation, for IPv4 and IPv6.

Tier

A template for Tier1-3 modules

NotificationBoard (unknown -- not in documented files)
InterfaceTable (unknown -- not in documented files)

Parameters:

Name Type Description
IPForward bool

?

overlayType string

overlay protocol compound module to use

tier1Type string

tier 1 application to use

tier2Type string

tier 2 module to use

tier3Type string

tier 3 module to use

numTiers numeric const

number of tiers

routingFile string

?

Gates:

Name Direction Description
overlayNeighborArrowIn [ ] input

incoming gate for visualizing overlay neighborship with connection arrows

overlayNeighborArrowOut [ ] output

incoming gate for visualizing overlay neighborship with connection arrows

out output

Dummy gate for storing channel informations

Unassigned submodule parameters:

Name Type Description
udp.constantDelay numeric

constant delay between two peers

udp.useCoordinateBasedDelay bool

delay should be calculated from euklidean distance between two peers

Source code:

module SimpleOverlayHost
    parameters:
        IPForward: bool, // ?
        overlayType: string, // overlay protocol compound module to use
	tier1Type : string, // tier 1 application to use
        tier2Type: string,// tier 2 module to use
        tier3Type: string, // tier 3 module to use
        numTiers: numeric const, // number of tiers
        routingFile: string; // ?

    gates:
        in: overlayNeighborArrowIn[]; // incoming gate for visualizing overlay neighborship with connection arrows
        out: overlayNeighborArrowOut[], // incoming gate for visualizing overlay neighborship with connection arrows
             out; // Dummy gate for storing channel informations

    submodules:
        notificationBoard: NotificationBoard;
            display: "p=212,296;i=block/control";
        tier3: tier3Type like Tier;
            display: "p=64,64;i=block/segm";
        tier2: tier2Type like Tier;
            display: "p=179,104;i=block/segm";
        tier1: tier1Type like Tier;
            display: "p=290,162;i=block/segm";
        overlay: overlayType like Overlay;
            display: "p=370,216;i=block/network2";
        udp: SimpleUDP;
            display: "p=370,342;i=block/transport";
        interfaceTable: InterfaceTable;
            display: "p=108,294;i=block/table";

    connections nocheck:
        tier1.to_lowerTier --> overlay.from_app if numTiers > 0;
        tier1.from_lowerTier <-- overlay.to_app if numTiers > 0;
        tier1.to_udp --> udp.from_app++ if numTiers > 0;
        udp.to_app++ --> tier1.from_udp if numTiers > 0;

        tier2.to_lowerTier --> tier1.from_upperTier if numTiers > 1;
        tier2.from_lowerTier <-- tier1.to_upperTier if numTiers > 1;
        tier2.to_udp --> udp.from_app++ if numTiers > 1;
        udp.to_app++ --> tier2.from_udp if numTiers > 1;

        tier3.to_lowerTier --> tier2.from_upperTier if numTiers > 2;
        tier3.from_lowerTier <-- tier2.to_upperTier if numTiers > 2;
        tier3.to_udp --> udp.from_app++ if numTiers > 2;
        udp.to_app++ --> tier3.from_udp if numTiers > 2;

        overlay.to_udp --> udp.from_app++;
        overlay.from_udp <-- udp.to_app++;

    display: "b=433,386";
endmodule