Simple Module NeighborCache

Package: oversim.common
File: src/common/NeighborCache.ned

C++ definition

Module for collecting neighborhood information (rtt, coordinates, ...)

Author: Bernhard Heep

Author: Antonio Zea

NeighborCache

Usage diagram:

The following diagram shows usage relationships between types. Unresolved types are missing from the diagram. Click here to see the full picture.

Inheritance diagram:

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram. Click here to see the full picture.

Extends:

Name Type Description
BaseApp simple module

Base class for application implementations

Used in compound modules:

Name Type Description
InetOverlayHost compound module

Host that participates in the overlay

InetOverlayHost6 compound module

Host that participates in the overlay

OverlayAccessRouter compound module

Access router that participates in the overlay

OverlayAccessRouter6 compound module

Access router that participates in the overlay

OverlayRouter compound module

Router in the overlay network

OverlayRouter6 compound module

Router in the overlay network

ReaSEOverlayHost compound module

Host that participates in the overlay

SimpleMultiOverlayHost compound module

Host in the simple network that participates in the overlay

SimpleOverlayHost compound module

Host in the simple network that participates in the overlay

SingleHost compound module

simulates a single host to connect it to a real network

Parameters:

Name Type Default value Description
rpcUdpTimeout double

default timeout value for direct RPCs

rpcKeyTimeout double

default timeout value for routed RPCs

optimizeTimeouts bool

calculate timeouts from measured RTTs and network coordinates

rpcExponentialBackoff bool

if true, doubles the timeout for every retransmission

debugOutput bool

enable debug output

enableNeighborCache bool

use neighbor cache for reducing ping traffic?

rttExpirationTime double

expiration of the validity of the measured rtts

maxSize double

maximum size of the cache

rttHistory int
timeoutAccuracyLimit double
defaultQueryType string
defaultQueryTypeI string
defaultQueryTypeQ string
doDiscovery bool
collectClosestNodes int
ncsType string
useNcsForTimeout bool
ncsPiggybackOwnCoords bool
discoveryModeNumCloseNodes int

discovery mode settings

discoveryModeNumSpreadedNodes int
discoveryModeMaxSteps int
discoveryModeSpreadedSteps int
gnpDimensions int

gnp settings

gnpCoordCalcRuns int
gnpLandmarkTimeout double
npsMaxLayer int

nps settings

vivaldiShowPosition bool

vivaldi settings

vivaldiErrorConst double
vivaldiCoordConst double
vivaldiDimConst double
vivaldiEnableHeightVector bool
svivaldiLossConst double

svivaldi settings

svivaldiLossResetLimit double
simpleNcsDelayFaultType string

simpleNcs settings

treeMgmtEnableTreeManagement bool

Tree Management Settings

treeMgmtBuildInterval double

the interval to check the childNodeMap

treeMgmtChildrenTimeOut double

after this timeout an alive check ping is send

gvbEnableGlobalViewBuilder bool

Global View Builder Settings

gvbCoordSendInterval double

the interval to send the coordinates data

gvbOnlyAcceptCompleteCCD bool
gvbSendStrategy string

the send strategy to use. (sendAll|simplifyCoords|removeRandom|removeInaccurate|regions|treeTest)

gvbStrategyRemoveCoordsMode string

strategy mode (percentage|limitCoords|limitTraffic)

gvbStrategyRemoveCoordsPercentage int
gvbStrategyRemoveCoordsCoordsLimit int
gvbStrategyRemoveCoordsTrafficLimit int
gvbStrategyRegionsSizePerDimension int
gvbStrategyRegionsMaxSpread int
gvbStrategySimplifyCoordsFactor int
gvbC2AParameter string

parameterstring to append to c2a.rb call

gvbDistributeGlobalView bool

create areas and distribute the globalView to all nodes

Properties:

Name Value Description
class NeighborCache
display i=block/table

Gates:

Name Direction Size Description
udpIn input

gate from the UDP layer

from_lowerTier input

gate from the lower tier

from_upperTier input

gate from the upper tier

direct_in input

gate for sendDirect

trace_in input

gate for trace file commands

tcpIn input

gate from the TCP layer

tcpOut output

gate to the TCP layer

udpOut output

gate to the UDP layer

to_lowerTier output

gate to the lower tier

to_upperTier output

gate to the upper tier

Source code:

//
// Module for collecting neighborhood information (rtt, coordinates, ...)
// @author Bernhard Heep
// @author Antonio Zea
//
simple NeighborCache extends BaseApp
{
    parameters:
        @class(NeighborCache);
        bool enableNeighborCache;  // use neighbor cache for reducing ping traffic?
        double rttExpirationTime @unit(s); // expiration of the validity of the measured rtts
        double maxSize;           // maximum size of the cache

        int rttHistory;
        double timeoutAccuracyLimit;

        string defaultQueryType;
        string defaultQueryTypeI;
        string defaultQueryTypeQ;


        bool doDiscovery;
        int collectClosestNodes;

        string ncsType;
        bool useNcsForTimeout;
        bool ncsPiggybackOwnCoords;

        //discovery mode settings
        int discoveryModeNumCloseNodes;
        int discoveryModeNumSpreadedNodes;
        int discoveryModeMaxSteps;
        int discoveryModeSpreadedSteps;

        //gnp settings
        int gnpDimensions;
        int gnpCoordCalcRuns;
        double gnpLandmarkTimeout @unit(s);

        //nps settings
        int npsMaxLayer;

        //vivaldi settings
        bool vivaldiShowPosition;
        double vivaldiErrorConst;
        double vivaldiCoordConst;
        double vivaldiDimConst;
        bool vivaldiEnableHeightVector;

        //svivaldi settings
        double svivaldiLossConst;
        double svivaldiLossResetLimit;

        //simpleNcs settings
        string simpleNcsDelayFaultType;

        // Tree Management Settings
        bool treeMgmtEnableTreeManagement;       // enable the tree Management System
        double treeMgmtBuildInterval @unit(s);   // the interval to check the childNodeMap
        double treeMgmtChildrenTimeOut @unit(s); // after this timeout an alive check ping is send 

        // Global View Builder Settings
        bool gvbEnableGlobalViewBuilder;        // enable the Global View Builder
        double gvbCoordSendInterval @unit(s);   // the interval to send the coordinates data
        bool gvbOnlyAcceptCompleteCCD;

        string gvbSendStrategy;                 // the send strategy to use. (sendAll|simplifyCoords|removeRandom|removeInaccurate|regions|treeTest)
        string gvbStrategyRemoveCoordsMode;     // strategy mode (percentage|limitCoords|limitTraffic)
        int gvbStrategyRemoveCoordsPercentage;
        int gvbStrategyRemoveCoordsCoordsLimit;
        int gvbStrategyRemoveCoordsTrafficLimit;
        int gvbStrategyRegionsSizePerDimension;
        int gvbStrategyRegionsMaxSpread;
        int gvbStrategySimplifyCoordsFactor;

        string gvbC2AParameter;                 // parameterstring to append to c2a.rb call
        bool gvbDistributeGlobalView;           // create areas and distribute the globalView to all nodes 

        @display("i=block/table");
}