WiseRoute

Package: inet.networklayer.wiseroute

simple module WiseRoute

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.

inet.networklayer.wiseroute.WiseRouteWiseRoutesimple

Usage diagram

Inheritance diagram

Used in compound modules

Name

Type

Description

WiseRouteNetworkLayer

compound module

Provides a simple network layer.

Extends

Name

Type

Description

NetworkProtocolBase

simple module

Module base for different network protocols.

Parameters

Name

Type

Default value

Description

displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

interfaceTableModule

string

headerLength

int

96b

Length of the network packet header (in bits)

debug

bool

false

debug switch

trace

bool

false

useSimTracer

bool

false

sinkAddress

string

sink node address

rssiThreshold

double

-50 dBm

RSSI threshold for route selection

routeFloodsInterval

double

0 s

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

arpModule

string

The path to the ARP module

Properties

Name

Value

Description

class

WiseRoute

display

i=block/fork

Gates

Name

Direction

Size

Description

transportIn

input

transportOut

output

queueIn

input

queueOut

output

Signals

Name

Type

Unit

Description

packetDropped

cPacket

packetReceivedFromLower

cPacket

packetReceivedFromUpper

cPacket

packetSentToLower

cPacket

packetSentToUpper

cPacket

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 NetworkProtocolBase like INetworkProtocol
{
    parameters:
        int headerLength @unit(b) = default(96b); // Length of the network packet header (in bits)

        // debug switch
        bool debug = default(false);
        bool trace = default(false);
        bool useSimTracer = default(false);

        // sink node address
        string sinkAddress;
        // 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 initiate route tree building.
        // If set to a value larger than zero, this node periodically initiates route tree building.
        double routeFloodsInterval @unit(s) = default(0 s);

        string arpModule; // The path to the ARP module

        @display("i=block/fork");
        @class(WiseRoute);
}

File: src/inet/networklayer/wiseroute/WiseRoute.ned