Replies: 1 comment 3 replies
-
|
Answers This is all done through our binary running on every node called This new system is still being developed and there are a few edge cases I will address later, but it does work. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Discussion: Network Provisioning and Conflict Handling
Hey guys, I was reading through the networking docs and came across some questions about how IP allocation works in OpenMANET. I haven't actually deployed it yet, so maybe I'm missing something or this is already handled somehow. I discussed my concerns and potential solutions with Claude AI to help organize my thoughts, and the detailed write-up below is a result of that conversation.
Would love to hear from folks who've actually run this in production whether these are real issues or if I'm overthinking things.
Context
I've been reading through the OpenMANET networking documentation and trying to understand the design choices around IP allocation. I haven't physically deployed OpenMANET yet, so I might be missing something obvious or there may already be solutions to what I'm about to describe. Would appreciate feedback from folks who've actually run this in the field.
Potential Issue: IP Assignment Conflicts?
From the docs, it looks like each mesh point randomly selects a static address like 10.41.113.1, and then runs DHCP for clients starting around that address. My concern is about potential conflicts:
Scenario 1: Static IP collision
If two nodes happen to randomly pick 10.41.113.1, they'd conflict. Statistically rare with a /16, but possible.
Scenario 2: DHCP range overlap
If Node A picks 10.41.113.1 and hands out leases starting at .2, and Node B randomly picks 10.41.113.8, now Node B's static IP falls inside Node A's DHCP pool.
Questions:
Proposed Solution: API-Based Provisioning
If conflicts are indeed a concern worth addressing, here's an approach that might help. Again, this might already exist in some form or there might be good reasons why this wouldn't work:
Concept
Have the mesh gate act as a central coordinator for IP allocation:
Bootstrap Phase
Registration Phase
Configuration Phase
Benefits
Allocation Strategy
Could be simple sequential:
Trade-off: Gate Dependency
However, this approach introduces a new dependency: nodes now need the gate to be online during initial provisioning. The current random assignment has an advantage here - nodes can join the mesh even when the gate is completely offline.
So if we go with API-based provisioning, we'd need a fallback mechanism to maintain that resilience.
Complementary Solution: Emergency Provisioning Mode
This would only be needed if the API-based approach is adopted. The idea is to preserve the current system's ability to add nodes without the gate, while still getting the benefits of centralized coordination when the gate is available.
Reserve Emergency Range
Set aside something like 10.41.250-254.* for emergency operation (5 subnets, max 5 emergency nodes).
How It Works
When a node can't reach the gate API:
Scan for other emergency nodes
Grab next available slot
Run emergency API
Automatic recovery
Why This Combination Works
Questions for the Community
Are IP conflicts actually happening? Maybe the random assignment works fine in practice and this is overengineering?
Is there existing conflict detection? Something I'm missing from the docs that already handles this?
Worth the complexity? The API approach adds moving parts. Is the current "good enough is good enough" approach more appropriate for tactical scenarios?
Real-world deployments? For folks who've deployed 10+ nodes, what's your experience? Any conflicts? How'd you handle them?
Alternative approaches? Maybe there's a simpler way to prevent conflicts without the full API infrastructure?
I'm trying to figure out if these are edge cases worth addressing or if the current design philosophy (simple, stateless, accept occasional conflicts) is actually the right call for this use case.
Thanks for any insights!
Beta Was this translation helpful? Give feedback.
All reactions