Skip to content

Implement cheap routing optimizations #184

@GUVWAF

Description

@GUVWAF

I opened a PR for the Android app with some cheap routing optimizations: permissionlesstech/bitchat-android#57
I'll reiterate what's there:

  1. Don't relay a packet to the peripheral/central matching the senderID or the relayer (based on Bluetooth address) of this packet, as they already generated or received the packet.
  2. Send a packet with specific destination only to the peripheral/central matching the recipientID, if we’re directly connected, again using the Bluetooth address.
  3. Do not relay an ACK or read receipt coming from ourselves (same was already done for messages).

I believe it would be good to also implement them for iOS, but I’m not able to test this.

Also, based on Meshtastic experience another possible optimization I thought of was to not relay a private message (or cancel it if it was already queued) when you received the delivery ACK already. This is apart from stopping retries, as packets may be received out of order due to random delays and different routes.

Other routing improvements likely need (flooded) control packets to discover the network beyond the 1-hop neighborhood. When you assume moving devices, these need to be sent frequently, making it hard to balance overhead and routing efficiency.

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