Problem
Currently, Direct Messages with an unknown or no longer valid path are discovered by flooding the message until the destination is reached and a usable path can be established.
When Regions are used to limit flood traffic, this also affects DM path discovery/recovery.
This can become problematic especially near region or country borders.
For example:
- Repeater A forwards region
ch
- Repeater B forwards region
de
- both repeaters have a perfectly usable RF link
- a sender in Switzerland wants to reach a known DM recipient in Germany
- no valid direct path to that recipient currently exists
If the initial DM flood is limited by the configured Region scope, path discovery may stop at the region boundary even though a valid radio path to the recipient exists.
This makes Regions serve two somewhat different purposes at the same time:
- limiting broadcast/group/channel flood traffic
- limiting discovery of a route to one specific unicast recipient
These two types of traffic may benefit from different policies.
This is becoming increasingly relevant in Switzerland. Within the Swiss MeshCore community, more and more repeater operators appear to be disabling flooding of unscoped (*) traffic in order to reduce unnecessary wide-area flooding and keep the mesh manageable.
While this is understandable and desirable for general flood traffic, it can have the side effect of breaking DM path discovery whenever there is no continuous matching Region configuration between sender and recipient.
Proposal
Could flood-routed unicast traffic used for DM path discovery/recovery be handled separately from general flood traffic?
For example, Regions could continue to limit:
- channel/group traffic
- public broadcast traffic
- adverts
- other normal flood traffic
while DM path discovery/recovery to a specific recipient could optionally use a limited region-independent flood.
The important part would be that this exception is still bounded, for example by a dedicated hop limit.
Conceptually:
Normal group/channel flood:
follow Region rules
DM with known route:
direct routing as today
DM with unknown/invalid route:
limited unicast discovery flood
independent of Region boundaries
maximum N hops
A possible configuration could be something conceptually similar to:
flood.max.unscoped.unicast = 8
The intention is not to allow unrestricted * flooding.
Instead, only traffic whose purpose is to reach a specific unicast recipient and establish/recover a route would be allowed to cross Region boundaries, with a strict TTL/hop limit.
Why this could be useful
Separating the two mechanisms could therefore provide:
- good flood containment for public/channel traffic
- reliable DM path discovery across Region boundaries
- less need to enable general
* flooding
- allow repeater operators to safely disable unscoped general flooding without unnecessarily affecting DM reachability
- better behaviour for mobile nodes
- better interoperability near country/Region borders
Relationship to previous discussions
There appear to be several related proposals, but I could not find one covering exactly this behaviour.
Related discussions/issues include:
This proposal is essentially about combining these ideas into one specific distinction:
Region scope should primarily control general flood distribution, while route discovery/recovery for a specific DM recipient could have its own separately bounded flood policy.
The main goal is simply to avoid requiring general cross-region flooding solely to make DM path discovery work across Region boundaries.
Problem
Currently, Direct Messages with an unknown or no longer valid path are discovered by flooding the message until the destination is reached and a usable path can be established.
When Regions are used to limit flood traffic, this also affects DM path discovery/recovery.
This can become problematic especially near region or country borders.
For example:
chdeIf the initial DM flood is limited by the configured Region scope, path discovery may stop at the region boundary even though a valid radio path to the recipient exists.
This makes Regions serve two somewhat different purposes at the same time:
These two types of traffic may benefit from different policies.
This is becoming increasingly relevant in Switzerland. Within the Swiss MeshCore community, more and more repeater operators appear to be disabling flooding of unscoped (
*) traffic in order to reduce unnecessary wide-area flooding and keep the mesh manageable.While this is understandable and desirable for general flood traffic, it can have the side effect of breaking DM path discovery whenever there is no continuous matching Region configuration between sender and recipient.
Proposal
Could flood-routed unicast traffic used for DM path discovery/recovery be handled separately from general flood traffic?
For example, Regions could continue to limit:
while DM path discovery/recovery to a specific recipient could optionally use a limited region-independent flood.
The important part would be that this exception is still bounded, for example by a dedicated hop limit.
Conceptually:
A possible configuration could be something conceptually similar to:
The intention is not to allow unrestricted
*flooding.Instead, only traffic whose purpose is to reach a specific unicast recipient and establish/recover a route would be allowed to cross Region boundaries, with a strict TTL/hop limit.
Why this could be useful
Separating the two mechanisms could therefore provide:
*floodingRelationship to previous discussions
There appear to be several related proposals, but I could not find one covering exactly this behaviour.
Related discussions/issues include:
flood.max.unscopedhandling for different traffic typesThis proposal is essentially about combining these ideas into one specific distinction:
The main goal is simply to avoid requiring general cross-region flooding solely to make DM path discovery work across Region boundaries.