Skip to content

Proposal: Use re-transmission for direct messages for more reliability and less floods #1342

@usrflo

Description

@usrflo

Problem Definition / Motivation

My tests with repeated direct messages show an unreliability of approximately 45% from my location as soon as the path length is greater than or equal to 2. This means that almost half of the direct messages fail via a partially functioning path with more than 2 nodes.

Ultimately, my client too often resorts to flooding on the last attempt, generating a lot of traffic.

Problem solution 1, neighbours/repeater swarm

For greater resilience, I suggest including a repeater's neighbor list in direct messages: if there are two neighbors listed at positions 1 and 2 of the path, a repeater could repeat a packet.
Along the path, a "swarm of repeaters" would thus ensure more reliable delivery and reduce the final floods.

Currently:

  if (pkt->isRouteDirect() && pkt->path_len >= PATH_HASH_SIZE) {
    if (self_id.isHashMatch(pkt->path) && allowPacketForward(pkt)) {
...

Swarm approach modification to give an idea:

  if (pkt->isRouteDirect() && pkt->path_len >= PATH_HASH_SIZE) {
    if ((self_id.isHashMatch(pkt->path) || (pkt->path_len > PATH_HASH_SIZE && twoNeighboursMatch(pkt->path, $neigbours))) && allowPacketForward(pkt)) {
...

The function "removeSelfFromPath(pkt)" could still be used more common as "removeFirstFromPath(pkt)" to shorten the path.
As the neighbor list contains SNR information the noise ratio could be used in addition to decide about a valid neighbor match.

Visualization of the Swarm Approach

Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions