AdaptiveProbabilisticBroadcast

Package: inet.networklayer.probabilistic

AdaptiveProbabilisticBroadcast

simple module

Multi-hop ad-hoc data dissemination protocol based on probabilistic broadcast, with adaptive parameters.

This protocol performs network-level broadcast using a probabilistic mechanism. This method reduces the number of packets sent on the channel (reducing the broadcast storm problem) at the risk of some nodes not receiving the data. It is particularly interesting for mobile networks. This version of probabilistic broadcast automatically adapts transmission probabilities depending on the estimated number of neighbours. timeInNeighboursTable is its unique parameter, and sets the time during which the node remembers a neighbour. It is particularly important in mobile networks: in that case, the faster the nodes, the smaller the timeInNeighboursTable parameter.

Inheritance diagram

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

Extends

Name Type Description
ProbabilisticBroadcast simple module

Multi-hop ad-hoc data dissemination protocol based on probabilistic broadcast.

Parameters

Name Type Default value Description
interfaceTableModule string
headerLength int 96b

length of the network packet header (in bits)

bcperiod double 2 s

period between two probabilistic broadcast attempts

beta double 0.8

probability of broadcast for each attempt

maxNbBcast int 1

maximal number of broadcast attempts for each packet.

maxFirstBcastBackoff double 1 s

maximal back-off before first broadcast attempt [seconds]. if don't want to use this parameter, simply set it to a value that is greater than bcperiod.

timeToLive double 10 s
timeInQueueAfterDeath double 60 s

How many seconds the message should be kept in queue after its died. That way the message is known if the node receives one of its copy that isn't dead because of TTL de-synchronization due to MAC backoff, propagation delay and clock drift.

timeInNeighboursTable double 60 s

Properties

Name Value Description
display i=block/fork
class AdaptiveProbabilisticBroadcast

Gates

Name Direction Size Description
transportIn input
transportOut output
queueIn input
queueOut output

Signals

Name Type Unit
packetReceivedFromUpper cPacket
packetReceivedFromLower cPacket
packetDropped cPacket
packetSentToLower cPacket
packetSentToUpper cPacket

Scheduled messages (observed)

msgkindctrltagsmsgnamecontext
omnetpp::cMessage0broadcastTimer
omnetpp::cMessage2removeEventfilled

Direct method calls (observed)

call tofunctioninfo
MessageDispatcherinet::MessageDispatcher::arrivedarrived
MessageDispatcherinet::MessageDispatcher::handleRegisterProtocolhandleRegisterProtocol
MessageDispatcherinet::MessageDispatcher::handleRegisterServicehandleRegisterService
InterfaceTableinet::InterfaceTable::findFirstNonLoopbackInterfacefindFirstNonLoopbackInterface

Called methods (observed)

functioninfocall from
inet::AdaptiveProbabilisticBroadcast::handleRegisterProtocolhandleRegisterProtocolMessageDispatcher
inet::AdaptiveProbabilisticBroadcast::handleRegisterServicehandleRegisterServiceMessageDispatcher

Incoming messages (observed)

gatemsgkindctrlsrcModuletags
queueInPacket0EthernetEncapsulationDispatchProtocolReq, InterfaceInd, MacAddressInd, PacketProtocolTag
transportInPacket0PingAppDispatchProtocolReq, L3AddressReq, PacketProtocolTag, SocketReq
transportInPacket0EchoProtocolDispatchProtocolReq, L3AddressReq, PacketProtocolTag
transportInRequest1L3SocketBindCommandPingAppDispatchProtocolReq, SocketReq

Outgoing messages (observed)

gatemsgkindctrldestModuletags
queueOutPacket0EthernetEncapsulationDispatchProtocolInd, DispatchProtocolReq, InterfaceReq, MacAddressReq, PacketProtocolTag, InterfaceInd?, L3AddressReq?, MacAddressInd?, SocketReq?
transportOutPacket0PingAppDispatchProtocolInd, DispatchProtocolReq, InterfaceInd, L3AddressInd, MacAddressInd, MacAddressReq, NetworkProtocolInd, PacketProtocolTag, SocketInd
transportOutPacket0EchoProtocolDispatchProtocolInd, DispatchProtocolReq, InterfaceInd, L3AddressInd, MacAddressInd, MacAddressReq, NetworkProtocolInd, PacketProtocolTag

Packet operations (observed)

chunkTypepacketAction
trim
ProbabilisticBroadcastHeaderinsertAtFront, peekAtFront, popAtFront, removeAtFront

Shared Tagging operations (observed)

tagTypetagAction
DispatchProtocolIndaddTagIfAbsent
DispatchProtocolReqaddTagIfAbsent
InterfaceReqaddTagIfAbsent
L3AddressIndaddTagIfAbsent, getTag
MacAddressIndgetTag
MacAddressReqaddTagIfAbsent
NetworkProtocolIndaddTagIfAbsent
PacketProtocolTagaddTagIfAbsent, getTag
SocketIndaddTagIfAbsent
SocketReqgetTag

Tagging operations (observed)

tagTypetagAction
inet::Ipv4InterfaceDatafindTag
inet::Ipv6InterfaceDatafindTag
inet::NextHopInterfaceDatafindTag

Source code

//
// Multi-hop ad-hoc data dissemination protocol based on probabilistic broadcast, with adaptive parameters.
//
// This protocol performs network-level broadcast using a probabilistic mechanism.
// This method reduces the number of packets sent on the channel (reducing the
// broadcast storm problem) at the risk of some nodes not receiving the data.
// It is particularly interesting for mobile networks.
// This version of probabilistic broadcast automatically adapts transmission
// probabilities depending on the estimated number of neighbours.
// timeInNeighboursTable is its unique parameter, and sets the time
// during which the node remembers a neighbour. It is particularly important
// in mobile networks: in that case, the faster the nodes, the smaller the
// timeInNeighboursTable parameter.
//
simple AdaptiveProbabilisticBroadcast extends ProbabilisticBroadcast
{
    parameters:
        @class(AdaptiveProbabilisticBroadcast);
        double timeInNeighboursTable @unit(s) = default(60 s);
}

File: src/inet/networklayer/probabilistic/AdaptiveProbabilisticBroadcast.ned