Replies: 11 comments 50 replies
-
|
I believe that with increased prefix size, privacy conscious repeater operators are more likely to just not include a location in their repeater's adverts at all (or they will turn off adverts entirely), which has a similar impact on observability as not being able to correlate the path to individual repeaters in the first place. I'm still not a fan of the repeater's public key being used to determine the path prefix, as there's no real reason to use the same values, and because changing the repeater's keys is much more difficult than just changing a value in flash which is used for the repeater prefix. Mishandled key rotations have a chance of locking repeater operators out of remote control of their repeaters. Anyways, I feel that I've beat this drum enough at this point, and I'll leave it at that. |
Beta Was this translation helpful? Give feedback.
-
Unique IDs would make repeaters easier to locate, but that ship has already sailed. With noise floor and SNR data alone, which is readily available to anyone listening on the mesh, you can already pinpoint the approximate location of every repeater in an area quite easily. Mapping tools like MeshMapper have actually had to mask some of this signal data for exactly this reason. Keeping repeater IDs short and ambiguous doesn't meaningfully protect location privacy when the RF characteristics already give it away. Take a guess where the below repeater is actually, and that's just based on noise-floor :) |
Beta Was this translation helpful? Give feedback.
-
|
This change would functionally add a TTL to packets. Should we consider an explicit TTL so that the resolution would be able to decrease as the path fills up? Up to 64B for the first hop, 32B for the second, 16B for the third and fourth, etc. |
Beta Was this translation helpful? Give feedback.
-
|
What's the airtime utilization impact of this proposal. Sending 64 bytes for path data ever time seems like it's going to drasticlly impact our airtime utilization. I'm absolutely in favor of finding a way to address the uniqueness problem but I'm skeptical this is the answer due to airtime use. Have we thought about going to 2 bytes (because that's the minimum that needs to happen) and decoupling from the public key so if needed we can coordinate to avoid duplicates? You could designate some of the 2 byte pool to auto-generated addresses while reserving another portion for coordinated paths allowing for those of us running high level repeaters to ensure there isn't collision issues with other stations. |
Beta Was this translation helpful? Give feedback.
-
|
this has been an on-going discussion since just a couple months after the launch of meshcore almost a year ago. There are lots of good ideas on how to solve it. But at the end of the day, we need to hear what @ripplebiz' thinks about how he would like to solve this. Otherwise, we will just keep talking about this over and over again with no actionable solutions. |
Beta Was this translation helpful? Give feedback.
-
|
I'm in favour of whatever solution mitigates the id collision issue and also preserves the possibility of a 64 hop path. I've seen several people suggest that reducing the maximum to 32 hops is enough, but I'm seeing screenshots from the UK that are already reaching 32. I think one of the big strengths of MeshCore is that it does not rely on a small number of long distance repeaters (decentralization), but the tradeoff is more hops. |
Beta Was this translation helpful? Give feedback.
-
|
I think there's a pretty compelling "simple" argument for the new default to be atleast a 2 byte path. I'm also for having some reserved space for "backbone" or "core" repeaters could be extremely useful, and hopefully provide some saving grace from someone randomly setting up a repeater and overlapping a major repeater. In my case, I've spoken with folks from my local mesh (yyj) and the majority are fine for a hard cutover period of a few weeks where the mesh is a little broken as folks upgrade their software etc, in favour of resolving the duplicate issue more rapidly. In the PNW we've seen 16-17 hops hit spans of 800+kms, I am not certain hop count is as pressing for us as the routing prefix issue is. |
Beta Was this translation helpful? Give feedback.
-
|
I'm not familiar with the meshcore header. If we're proposing introducing a path-length field in the header, hopefully we're also going to keep it in 6 bits. If the plan was using 8 bits - well there's two more bits free in there for extended adresses (i.e. special-purpose addresses). Say, for example, we set the "I am a core repeater" bit - then there's no conflicts between |
Beta Was this translation helpful? Give feedback.
-
|
The only problem is this by default would limit us to 32 hops? |
Beta Was this translation helpful? Give feedback.
-
|
I agree we need more than one byte for route prefixes. I'd suggest using variable-length prefixes in practice, even though the proposal allows for up to 64-byte prefixes. My concern is that while the proposal dynamical reduces the used prefix size, all 64 bytes of the path are still transmitted with every packet, which significantly increases airtime usage. Instead, I'd recommend an adaptive approach with a maximum of 4 bytes per hop: The goal is to minimize packet size for the most common scenarios (routes under 10 hops) while effectively eliminating the risk of prefix collisions. A 4-byte prefix should allow for billions of unique prefixes, which is more than sufficient. This approach scales bandwidth usage with path length—keeping overhead minimal for typical short routes while still supporting up to 64 hops when needed. I would also support the concept of reserved address ranges for manually specified addresses so they won't conflict accidentally for autogenerated addresses. Additionally, companion devices should be able to specify their preferred prefix length when defining a path, allowing them to optimize based on their specific network topology and collision risk tolerance. Another approach worth considering is a UTF-8-style encoding scheme that uses continuation bits to indicate whether additional bytes follow. This would allow each hop in the path to use a different prefix length as needed. To enhance privacy, repeater operators could specify a maximum number of bytes they're willing to add to the path of repeated packets, giving them control over the routing information they expose. |
Beta Was this translation helpful? Give feedback.
-
|
I operate a bot and an observer in Warsaw, PL metro area, where there are some 250 active repeaters. Occasionally when radio propagation is good we get packets from other major metro areas in Poland, hundreds of km away, and obviously with conflicting 1-byte prefixes. I don't think I've ever spotted paths longer than 16 hops that would actually contribute in a meaningful way to discovery or communication - vast majority of them represent weird temporary pseudo-loops (packets bouncing around for so long that they are seen as "new" by the same repeaters), or contacts so far away that it's impossible to have any meaningful communication. This is my long-winded way of saying that IMHO it would be totally fine to have 2-3 byte IDs and max 28-16 hops. :) |
Beta Was this translation helpful? Give feedback.


Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Here goes nothing.
Problem
We currently have 256 available, 1 byte, prefixes. These are taken from the repeater public key and used in pathing and traces (traces can now be longer prefixes).
While this has no major impact on the functionality of the mesh, as long as two conflicting prefixes are not zero-hop neighbors, it does cause confusion about paths taken and also presents a problem with analytic data accuracy.
Existing Discussions
Liam on discord:
Proposal
Change to allow companion radios to configure their prefix resolution (in bytes), with a default of 2 and add a
path_lento packets to store that resolution. ref: #1083 (comment).This allows users to choose to use single byte but sets up new users to use a more robust prefix set.
Action Plan
There should be an intermediate firmware release early on that can handle and forward both packet formats, but not support to enable a different length at the companion level. This should be in the wild for a period of a few months at least (ideally more like 6). After this period we can release the changes to allow companions to set their resolution and have the default set at 2 bytes.
This should allow repeater owners enough time to get firmware updated before companions start trying to use new prefix resolutions.
The we can later phase out V1 support after we are relatively certain the majority of the meshes have updated.
Other Considerations
This should probably coincide with any changes to routing, if any, for V2. With a similar dual support early release.
78 votes ·
Beta Was this translation helpful? Give feedback.
All reactions