Simple Module WiseRoute

Package: org.mixim.modules.netw
File: modules/netw/WiseRoute.ned

C++ definition

Wiseroute is a simple loop-free routing algorithm that builds a routing tree from a central network point, designed for sensor networks and convergecast traffic.

The sink (the device at the center of the network) broadcasts a route building message. Each network node that receives it selects the sink as parent in the routing tree, and rebroadcasts the route building message. This procedure maximizes the probability that all network nodes can join the network, and avoids loops. Parameter sinkAddress gives the sink network address, rssiThreshold is a threshold to avoid using bad links (with too low RSSI values) for routing, and routeFloodsInterval should be set to zero for all nodes except the sink. Each routeFloodsInterval, the sink restarts the tree building procedure. Set it to a large value if you do not want the tree to be rebuilt.

WiseRoute

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:

BaseNetwLayer (simple module)

Base module for every network layer module

Parameters:

Name Type Default value Description
notAffectedByHostState bool false
coreDebug bool

debug switch for core framework

stats bool

stats switch

headerLength double

length of the network packet header (in bits)

debug bool false

debug switch

trace bool false
useSimTracer bool false
sinkAddress int 0

sink node address (integer)

rssiThreshold double -50 dBm

RSSI threshold for route selection

routeFloodsInterval double 0 s

If set to zero, this node does not initiates route tree building. If set to a value larger than zero, this nodes periodically initiates route tree building.

Properties:

Name Value Description
class WiseRoute
display i=block/fork

Gates:

Name Direction Size Description
upperGateIn input

from upper layer

upperGateOut output

to uppe layer

upperControlIn input

control from upper layer

upperControlOut output

control to upper layer

lowerGateIn input

from lower layer

lowerGateOut output

to lower layer

lowerControlIn input

control from lower layer

lowerControlOut output

control to lower layer

Source code:

// Wiseroute is a simple loop-free routing algorithm that
// builds a routing tree from a central network point, designed
// for sensor networks and convergecast traffic.
//
// The sink (the device at the center of the network) broadcasts
// a route building message. Each network node that receives it
// selects the sink as parent in the routing tree, and rebroadcasts
// the route building message. This procedure maximizes the probability
// that all network nodes can join the network, and avoids loops.
// Parameter sinkAddress gives the sink network address, 
// rssiThreshold is a threshold to avoid using bad links (with too low
// RSSI values) for routing, and routeFloodsInterval should be set to
// zero for all nodes except the sink. Each routeFloodsInterval, the
// sink restarts the tree building procedure. Set it to a large value
// if you do not want the tree to be rebuilt.
simple WiseRoute extends BaseNetwLayer
{
    parameters:
        // debug switch
        bool debug = default(false);
        bool trace = default(false);
        bool useSimTracer = default(false);

        // sink node address (integer)
        int sinkAddress = default(0);
        // the sink directs the tree building procedure with periodic floods.
        // iterationDelay is the period between two floods.


        // RSSI threshold for route selection
        double rssiThreshold @unit(dBm) = default(-50 dBm);

        // If set to zero, this node does not initiates route tree building.
        // If set to a value larger than zero, this nodes periodically initiates route tree building.
        double routeFloodsInterval @unit(s) = default(0 s);
        @display("i=block/fork");
        @class(WiseRoute);

}