Skip to main content

Optimizing MeshCore for Large Networks

Deploying MeshCore at scale of 50 or more nodes requires deliberate planning of repeater placement, advertisement strategy, route cache parameters, and congestion avoidance.

Repeater Placement for Path Diversity

Path diversity is the single most important design principle for a resilient large-scale MeshCore network. Without path diversity, a single repeater failure can partition the network.

  • Place at least two independent elevated repeaters within mutual radio range for backbone redundancy. A backbone ring of 4-6 nodes each with at least 2 backbone neighbours provides 2-edge-connectivity.

  • Gateway repeaters bridging two disconnected clusters should always have a backup gateway repeater or a direct link if path loss permits.

  • Use a network graph tool to identify any repeater whose removal disconnects the graph. These cut vertices require remediation through additional repeater placement.

Minimum Viable Topology for 50 Nodes

  • 4-6 elevated backbone repeaters, each with at least 2 other backbone repeaters in range
  • 10-15 mid-tier repeaters, each within range of at least 2 backbone repeaters
  • 30+ client nodes connecting to the nearest mid-tier repeater or directly to backbone

Advertisement Flood Strategy

In large networks, poorly tuned advertisement intervals become a significant source of congestion. MeshCore supports flood advertise (propagated hop-by-hop to all reachable nodes) and local advertise (not forwarded beyond immediate neighbours).

Recommended: backbone repeaters use flood mode; mid-tier repeaters use flood with reduced interval; fixed client nodes use flood with long interval or local; mobile client nodes use local or flood with short TTL; temporary nodes use local to avoid polluting route tables.

Advertisement Interval Tuning

  • Backbone repeaters: 300-600 seconds
  • Mid-tier repeaters: 120-300 seconds
  • Fixed client nodes: 300-600 seconds
  • Mobile client nodes: 60-120 seconds

Route Cache Tuning

Fixed infrastructure: 30-60 minutes. Mixed fixed and mobile: 10-20 minutes. High mobility: 2-5 minutes. Emergency deployment: 1-3 minutes.

Congestion Avoidance

LoRa is half-duplex: no node can transmit and receive simultaneously. Congestion manifests as elevated packet loss, increased delivery latency, and packet collisions. MeshCore implements random backoff before transmission but does not implement full CSMA/CA.

Key mitigations: (1) reduce advertisement flood frequency -- the highest-leverage tuning parameter; (2) segment with frequency separation across two independent LoRa channels bridged by backbone repeaters; (3) increase spreading factor on long backbone links for better link budget; (4) extend route cache lifetimes to reduce path discovery packet flood frequency; (5) use local advertisement mode for high-density client clusters.

Monitoring Network Health with MeshCore Statistics Commands

show routes
show neighbors
show stats
show ads
show rerr

Key metrics to monitor: path discovery packet success rate (>95%), route cache hit rate (>80% for active pairs), RERR rate (<1 per hour per repeater), neighbour count for backbone repeaters (2-8), and average RSSI for backbone links (-100 to -115 dBm above noise floor).

For persistent monitoring, deploy a dedicated MeshCore node connected to a Raspberry Pi running the MeshCore Python API. The Python API polls statistics from all reachable repeaters via the companion protocol and feeds data into InfluxDB or Prometheus with a Grafana visualisation layer, enabling alert-based monitoring of RERR rate, route discovery success rate, and channel load before users report problems.