← RFC

Routing Options — Control Overhead Analysis

Scope: Each candidate routing approach for Loomwave, with the control-overhead math the brief requires: how much channel each spends on hellos / LSAs / adverts / route discovery, at the target network sizes, plus cold-start discovery, topology-change handling, INFRA-present vs absent behaviour, and convergence targets. The brief's hard line: a routing protocol that consumes 40% of channel for control is unacceptable. All airtime from the verified LoRa model in mac-layer-options.md (LongFast SF11/BW250, 32 B ToA = 0.477 s, 16 B = 0.354 s, 64 B = 0.723 s).


0. The one equation that governs everything: flooded control is O(N²)

Any control packet that is flooded costs ~N transmissions (one per rebroadcaster). If N nodes each originate such control traffic every period P, channel load is:

L_control ≈ N² · ToA_ctrl / P

The is the killer. It is the same pathology as data flooding (meshtastic-routing-analysis.md §8.1 — the derivation + "why N²" intuition), and it reappears in every flood-based control scheme below. The design conclusion, derived in §6, is that Loomwave control traffic must be O(N), which requires aggregating it through INFRA rather than flooding it peer-to-peer.


1. Flooding (Meshtastic) — "no routing," all data is control

State: none. Discovery: none (every packet floods). Topology change: irrelevant (stateless), but every change is "handled" by re-flooding everything.

Overhead: there is no separate control plane — the data plane is the flood, so the cost is the N² data load already quantified (mac-layer-options.md §2): collapses below ~11 nodes on LongFast. The only true control is unsigned NodeInfo/position broadcasts, which are themselves floods and add to the N² load.

INFRA present/absent: no distinction; an elevated node just floods harder and gathers more hidden-node collisions (hidden-node-analysis.md §1).

Convergence: a flood reaches all D-hop nodes in D · (ToA + mean back-off):

3 hops 5 hops 8 hops
LongFast per-hop ≈ 701 ms 2.1 s 3.5 s 5.6 s
MediumFast per-hop ≈ 244 ms 0.7 s 1.2 s 2.0 s

Fast convergence is flooding's only virtue, and it is bought at unacceptable overhead. Verdict: reject as routing; retain only as discovery-plane primitive, rate-capped.


State: each node holds the full topology. Discovery: flood Link-State Advertisements (LSAs) + periodic hellos. Topology change: flood a new LSA.

Overhead (each node floods one ~16 B LSA every H seconds, L = N²·ToA₁₆/H):

N H = 60 s H = 300 s
10 59% 12%
50 1475% 295%
100 5900% 1180%
500 147500% 29500%

Verdict: link-state's LSA flood is O(N²) and collapses past ~10 nodes even at a sluggish 5-minute refresh. Full link-state across the whole mesh is categorically disqualified on LoRa. However, its core idea — a topology view enabling optimal and spatial-reuse routing — is exactly what spatial-TDMA (mac-layer-options.md §5) needs. The resolution (§6): run link-state only among the few INFRA nodes (I ≈ 2–6), where I² is tiny, not among all N clients.


3. Path-vector / source routing (MeshCore) — cheap data, flooded discovery

State: per-destination source path (held at endpoints, not transit nodes). Discovery: first contact floods; destination returns the reverse path directly (meshcore-routing-analysis.md §4). Adverts flood for identity/presence.

Overhead. Two components: 1. Adverts (≥64 B, flooded every A seconds): L = N²·ToA₆₄/A:

N A = 600 s A = 1800 s A = 3600 s
10 12% 4% 2%
50 301% 100% 50%
100 1205% 402% 201%
500 30125% 10042% 5021%
  1. Per-path discovery floods — one ~N-transmission flood per new (src,dst) pair, paid on first contact and again after any path break (mobility/churn → re-flood, meshcore-routing-analysis.md §7.2).

Once paths exist, data is cheap: a D-hop DIRECT packet costs exactly D transmissions, and the path adds only D × (1–3) header bytes. This is path-vector's win and why MeshCore out-scales Meshtastic for steady traffic.

Topology change: brittle — a single moved relay kills the source route, forcing a fresh discovery flood. No repair, no alternates.

INFRA present/absent: no special role; INFRA is just another flooding node. (Loomwave should change this — see §6.)

Convergence: first-contact discovery = one flood (§1 table) + one direct return ≈ 2 × per-hop·D ≈ 4–11 s at LongFast for 3–8 hops.

Verdict: right data-plane idea (flood-once, then routed), wrong control-plane scaling (advert flood is O(N²); discovery re-floods on churn). Keep the source/next-hop routing, replace flooded adverts with capped + INFRA-aggregated discovery.


4. Reactive on-demand (AODV-like) — discovery cost moves to traffic rate

State: routes cached on demand. Discovery: flood a Route Request (RREQ); destination unicasts a Route Reply (RREP). Topology change: route error + re-discover.

Overhead (each discovery = one ~N-transmission RREQ flood):

N 1 disc/min 5 disc/min 10 disc/min
10 6% 30% 59%
50 30% 148% 295%
100 59% 295% 590%

Verdict: AODV trades proactive overhead for per-discovery overhead, so cost tracks the rate of new flows. For Loomwave's traffic profile — bursty, small, infrequent senders, many distinct (src,dst) pairs — discoveries are frequent relative to data, so AODV pays the flood cost constantly with little amortisation. The brief explicitly flags this ("poor for bursty small nets with infrequent senders"); the math confirms it: even 1 discovery/min at N=100 burns 59% of channel. Reject as primary; the on-demand idea survives only as the CSMA-fallback route-find when no INFRA is present.


5. Reticulum announce-driven distance-vector — the scalable model, capped

State: per-destination next-hop + hops + expiry (distance-vector, small header regardless of path length — reticulum-routing-analysis.md §4,§6). Discovery: signed announces, flooded but hard-capped at ANNOUNCE_CAP = 2% of channel, fewer-hops-first.

The crucial subtlety the cap exposes. Capping control at 2% does not make flooded announces scale — it converts the overhead problem into a latency problem. At 2% of a LongFast channel, only 0.02 / 0.723 s = 0.0277 announce-transmissions/s ≈ 99.6/hour can propagate. Each announce needs ~N rebroadcasts, so the minimum sustainable per-node announce interval is:

min_announce_interval ≈ N / (ANNOUNCE_CAP / ToA_announce)
N full announce-propagations/hour (channel-wide) min per-node announce interval
10 10.0 ~6 min
50 2.0 ~30 min
100 1.0 ~60 min
500 0.2 ~5 hours

Verdict: Reticulum's cap keeps the channel alive (overhead bounded at 2%, never collapses) — a decisive improvement over §1–4 — but the price is convergence latency that grows with N²: at 100 nodes a node's presence/route refreshes only ~hourly; at 500 nodes, every few hours. That is acceptable for Reticulum's internet-bridged use but too slow for Loomwave's high-churn event scenario, where a node must become reachable within seconds-to- minutes. The distance-vector next-hop table and the cap are keepers; flat flooded announces across all N are not.


Every flooded-control scheme above is O(N²) and therefore either collapses (overhead) or crawls (capped latency). The escape is structural, not parametric: make control O(N) by aggregating it through INFRA, exploiting the asymmetric-role mandate.

Design (to be validated in Stage 2 sim):

  1. Client → INFRA registration is unicast/scheduled, not flooded. A CLIENT announces its identity to its local INFRA/REPEATER over the scheduled MAC (mac-layer-options.md §3), not to the whole mesh. Cost per registration = 1 transmission, not N. Total client control load = N · ToA / P_reg (linear), e.g. N=100, 32 B, every 300 s ⇒ 100·0.477/300 = 15.9%… still high if every client refreshes often, so registration cadence is itself scheduled and slow (presence is also implicit from data slots).
  2. INFRA ↔ INFRA backbone runs link-state among the few INFRA nodes (I ≈ 2–6). LSA cost = I²·ToA/H — at I=6, H=60 s: 36·0.354/60 = 21% of channel on the backbone link; if INFRA use a separate SF/slot allocation or higher airtime budget (their role allows), this is affordable and gives the full topology view that link-state (§2) wanted but couldn't have mesh-wide. This is also what spatial-TDMA (mac-layer-options.md §5) needs.
  3. Distance-vector next-hop table (Reticulum model, §5) for forwarding: small headers, path-length-independent, INFRA as the "transport nodes."
  4. Signed announces with ANNOUNCE_CAP (§5) as the discovery plane only, for cold-start and INFRA-absent operation — bounded at ≤2%, never collapses.
  5. INFRA-absent fallback: with no coordinator, degrade to capped flood discovery + on-demand (AODV-style) routing (§4) over CSMA, accepting slower convergence and the hidden-node losses of hidden-node-analysis.md §3. The protocol must detect coordinator presence and switch (the key MAC/routing interlock).

Control-overhead budget of the recommended design (LongFast, dense-event N=100, 4 INFRA):

Control element Size ToA Rate Mechanism Channel util
Client registration 32 B 477 ms 1 / 600 s · 100 scheduled unicast (O(N)) 8.0%
INFRA backbone LSA 16 B 354 ms 1 / 60 s · 4² link-state among INFRA 8.3%
Slot beacon 32 B 477 ms 1 / 30 s coordination 1.6%
Discovery announces 32 B 477 ms ANNOUNCE_CAP flood, capped ≤2.0%
Total control ≈ 20%

~20% control overhead at 100 nodes — under the 40% red line — vs link-state's 5900% or uncapped adverts' 1205% for the same network. Registration cadence is the dominant term and the main tuning knob; slowing it (or leaning on implicit presence from data slots) drops total control toward ~12%. The O(N²) schemes cannot reach the red line at this N at all.


7. Convergence targets per scenario class

Scenario N / INFRA Cold-start route discovery Topology-change recovery Mechanism
Sparse-rural 10 / 2 < 5 s (flood, §1) < 5 s capped flood + DV
Dense-event 100 / 4 < 30 s (register + backbone LSA) < 15 s (INFRA re-route) INFRA-aggregated DV
Neighbourhood 50 / 6 < 20 s < 10 s (spatial reuse, more INFRA) INFRA link-state + spatial-TDMA
INFRA-absent (any) minutes (AODV on-demand) slow / best-effort CSMA fallback

These are targets to validate in sim, derived from the per-hop convergence math (§1) plus registration/backbone cadence; they are not yet measured.


8. Summary comparison

Approach Control overhead @ N=100 Scales to 500? Topology-change Cold-start Verdict
Flooding data-plane collapse re-flood all instant discovery only
Link-state (mesh-wide) 1180–5900% LSA flood fast reject mesh-wide; use INFRA-only
Path-vector (MeshCore) 201–1205% adverts ✗ (advert flood) brittle, re-discover medium keep data routing, fix control
Reactive AODV 59%/disc-min ✗ at flow rate re-discover per-flow INFRA-absent fallback only
Reticulum capped DV ≤2% (but ~1 h convergence) overhead yes / latency no DV update slow at scale keep DV + cap, not flat-flood
INFRA-aggregated (rec.) ~20% (→~12%) yes (O(N)) INFRA re-route, fast < 30 s recommended

The throughline matching all three codebase analyses: confine flooding to a rate-capped discovery plane, route data via a small distance-vector/next-hop table, and aggregate control through INFRA to convert O(N²) into O(N). Final selection awaits Stage-2 sim measurement of convergence and delivery under realistic churn.