Multi-hop ad-hoc data dissemination protocol based on probabilistic broadcast.
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. Parameter maxNbBcast sets the maximum number of broadcast transmissions of a packet, parameter beta gives the transmission probability for each attempt, parameter bcperiod sets the time between two transmission attempts. Parameter maxFirstBcastBackoff sets a backoff window before first transmission attempt, and parameter timeInQueueAfterDeath sets the time during which a node remembers a packet whose time to live (TTL) expired, avoiding retransmitting it in case it comes back in the network because of some problem.
The following diagram shows usage relationships between types. Unresolved types are missing from the diagram.
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
Name | Type | Description |
---|---|---|
NetworkProtocolBase | simple module |
Module base for different network protocols. |
Name | Type | Description |
---|---|---|
AdaptiveProbabilisticBroadcast | simple module |
Multi-hop ad-hoc data dissemination protocol based on probabilistic broadcast, with adaptive parameters. |
Name | Type | Default value | Description |
---|---|---|---|
interfaceTableModule | string | ||
headerLength | int | 100b |
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 | double | 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. |
Name | Value | Description |
---|---|---|
display | i=block/fork | |
class | ProbabilisticBroadcast |
Name | Direction | Size | Description |
---|---|---|---|
upperLayerIn [ ] | input | ||
upperLayerOut [ ] | output | ||
lowerLayerIn [ ] | input | ||
lowerLayerOut [ ] | output |
Name | Type | Unit |
---|---|---|
packetReceivedFromUpper | cPacket | |
packetReceivedFromLower | cPacket | |
packetFromLowerDropped | cPacket | |
packetFromUpperDropped | cPacket | |
packetSentToLower | cPacket | |
packetSentToUpper | cPacket |
// // Multi-hop ad-hoc data dissemination protocol based on probabilistic broadcast. // // 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. // Parameter maxNbBcast sets the maximum number of broadcast transmissions of a packet, // parameter beta gives the transmission probability for each attempt, // parameter bcperiod sets the time between two transmission attempts. // Parameter maxFirstBcastBackoff sets a backoff window before first transmission attempt, // and parameter timeInQueueAfterDeath sets the time during which a node remembers // a packet whose time to live (TTL) expired, avoiding retransmitting it in case it comes back // in the network because of some problem. // simple ProbabilisticBroadcast extends NetworkProtocolBase like INetworkProtocol { parameters: @class(ProbabilisticBroadcast); int headerLength @unit(bit) = default(100b); // length of the network packet header (in bits) // period between two probabilistic broadcast attempts double bcperiod @unit(s) = default(2 s); // probability of broadcast for each attempt double beta = default(0.8); // maximal number of broadcast attempts for each packet. double maxNbBcast = default(1); // 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. double maxFirstBcastBackoff @unit(s) = default(1 s); double timeToLive @unit(s) = default(10 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. double timeInQueueAfterDeath @unit(s) = default(60 s); }