Dsdv

Package: inet.routing.dsdv

Dsdv

simple module

Implements Destination-Sequenced Distance Vector.

The host using this routing algoritm is required to have a SINGLE interface which has "wlan" in its name.

NOTE:

  • This is a fairly incomplete implementation of the originally published DSDV algorithm. It does not implement full routing table dumps, hello message forwarding, there is no logic that sends out full updates if the size of the incremental update reaches the network unit size.

WARNING: This is a partial / unfinished implementation.

Inheritance diagram

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.

Used in compound modules

Name Type Description
DsdvRouter compound module

A DSDV router.

Parameters

Name Type Default value Description
interfaceTableModule string

The path to the InterfaceTable module

routingTableModule string
helloInterval double 5s

how often hello messages should be sent out

netmask string "255.255.0.0"

netmask for the ad-hoc network

maxVariance double 1

This is the maximum of a random value to determine when the first hello message will be sent out

routeLifetime double 5s

the expiry time of the routing entries

manetPurgeRoutingTables bool true
broadcastDelay double uniform(0s,0.01s)

Properties

Name Value Description
display i=block/routing

Gates

Name Direction Size Description
ipIn input
ipOut output

Scheduled messages (observed)

msgkindctrltagsmsgnamecontext
omnetpp::cMessage0event

Direct method calls (observed)

call tofunctioninfo
MessageDispatcherinet::MessageDispatcher::arrivedarrived
MessageDispatcherinet::MessageDispatcher::handleRegisterProtocolhandleRegisterProtocol
InterfaceTableinet::InterfaceTable::interfaceChangedinterfaceChanged
Igmpv2inet::Igmpv2::receiveSignalipv4MulticastGroupJoined
Ipv4RoutingTableinet::Ipv4RoutingTable::addRouteaddRoute(...)
Ipv4RoutingTableinet::Ipv4RoutingTable::deleteRoutedeleteRoute(...)
Ipv4RoutingTableinet::Ipv4RoutingTable::findBestMatchingRoutefindBestMatchingRoute(%u.%u.%u.%u)

Called methods (observed)

functioninfocall from
inet::Dsdv::handleOperationStagehandleOperationStageScenarioManager

Incoming messages (observed)

gatemsgkindctrlsrcModuletags
ipInPacket0Ipv4DispatchProtocolReq, DscpInd, EcnInd, ErrorRateInd, HopLimitInd, Ieee802SapInd, InterfaceInd, L3AddressInd, MacAddressInd, NetworkProtocolInd, PacketProtocolTag, SignalPowerInd, SignalTimeInd, SnirInd, TosInd, Ieee80211ChannelInd, Ieee80211ModeInd

Outgoing messages (observed)

gatemsgkindctrldestModuletags
ipOutPacket0Ipv4DispatchProtocolReq, InterfaceReq, L3AddressReq, PacketProtocolTag

Packet operations (observed)

chunkTypepacketAction
DsdvHelloPacket, insertAtBack, peekData

Shared Tagging operations (observed)

tagTypetagAction
DispatchProtocolReqaddTag
InterfaceReqaddTag
L3AddressReqaddTag
PacketProtocolTagaddTag, getTag

Tagging operations (observed)

tagTypetagAction
inet::Ipv4InterfaceDatagetTag, getTagForUpdate

Source code

//
// Implements Destination-Sequenced Distance Vector.
//
// The host using this routing algoritm is required to have a SINGLE interface
// which has "wlan" in its name.
//
// NOTE:
//  - This is a fairly incomplete implementation of the originally published DSDV
//    algorithm. It does not implement full routing table dumps, hello message forwarding,
//    there is no logic that sends out full updates if the size of the incremental update reaches
//    the network unit size.
//
// WARNING: This is a partial / unfinished implementation.
//
simple Dsdv like IManetRouting
{
    parameters:
        @display("i=block/routing");
        string interfaceTableModule;   // The path to the InterfaceTable module
        string routingTableModule;
        double helloInterval @unit(s) = default(5s);  // how often hello messages should be sent out
        string netmask = default("255.255.0.0");  // netmask for the ad-hoc network
        double maxVariance = default(1); // This is the maximum of a random value to determine when the first hello message will be sent out
        double routeLifetime @unit(s) = default(5s);  // the expiry time of the routing entries
        bool manetPurgeRoutingTables = default(true);
        volatile double broadcastDelay @unit(s) = default(uniform(0s,0.01s));
    gates:
        input ipIn;
        output ipOut;
}

File: src/inet/routing/dsdv/Dsdv.ned