Skip to content

[protocol] decide the reactive route-setup design on measurement: thesis single-route (A) vs source-parameterised band (B) vs the repo bound (C, shipped) #177

Description

@danieljoppi

Why this is open

#173 is fixed and shipped (PR #174), but with a bound that has no basis in either primary source. That was a deliberate, time-boxed choice: main was worse than v1.0.0 on large and loaded networks (large-scale 21.7% PDR, NRL 3071) and un-breaking it was separable from the fidelity question. This issue is the fidelity question, and it should be settled by measurement rather than by reading.

The trigger is that the 2007 thesis records the authors abandoning the mechanism #174 patches, for exactly the symptom #173 measured:

"…through experiments we experienced that it is hard to get a good balance between the number of routes that are obtained and the overhead that is created. High levels of overhead were often experienced. Therefore, we decided to restrict reactive route setup to the creation of just one single route, and to rely on proactive route maintenance to obtain multiple routes."
— 2007 thesis, lines 4676-4681

The three arms

design how the flood is bounded source
A enableMultipath = false: reactive setup lays one route; multipath comes from proactive maintenance strict (src,seq) duplicate suppression 2007 thesis (the final design) — lines 3773-3778, 3785-3791
B band-multipath parameterised as the authors ran it: a1 = 0.9 base, plus a2 = 2 for first-hop-disjoint ants the band itself — at 0.9 it admits only ants better than the incumbent, so it is self-limiting 2007 thesis describing the older version — lines 4650-4671
C band at factor 1.5 + per-(node, generation) broadcast bound the repo-invented per-node bound none1.5 is [1] §3.1; the bound is ours

C is what ships today. Note that we do not implement B's a2 first-hop-disjoint rule at all, and our single factor of 1.5 is looser than the authors' base 0.9 — that gap is the root of #173.

Evidence so far

Core testbench, one discovery on an 8-connected grid, reactive ants on the medium:

grid nodes A (multipath=off) B (a1=0.9) band at 1.5, unbounded C (shipped)
5×5 25 28 28 420 94
7×7 49 54 54 30,090 236

Delivery was 17/17 in every arm, so none of these bounds costs reach at this scale.

ns-3 discrete taxonomy for C (30165318267), PDR / NRL:

scenario v1.0.0 broken main C (shipped) AODV
paper-base 81.7 / 59.1 82.2 / 84.8 83.4 / 56.6 80.5 / 56.6
sparse-static 83.8 / 48.3 93.0 / 46.5 90.7 / 40.7 81.9 / 42.9
heavy-load 85.0 / 6.1 51.4 / 28.6 80.1 / 8.7 86.6 / 5.5
large-scale 75.8 / 99.9 21.7 / 3071.1 77.9 / 167.8 67.4 / 163.4

heavy-load is the open residual: C sits 4.9 pp below v1.0.0 and 6.5 pp below AODV. It is the scenario most sensitive to control overhead, so it is the one most likely to separate the three arms.

What to do

  1. Implement A behind the existing gate (it is just the default flip) and B (needs a1/a2 and the first-hop-disjoint tracking — GenerationTracker already keys per generation, so this is where it goes).
  2. Run the discrete taxonomy at runs=5 — not --quick's 2 — for A, B and C on identical seeds. The 2-run numbers above carry pdr_sd up to 6.43, which is wider than several of the differences being argued about.
  3. Compare with sweep_summary.py --vs, whose baseline control will confirm the harness held still across arms.
  4. Pick the shipped default on that evidence and record it in an ADR, since it supersedes #96.

Also blocked on this

Sources: 2007-ducatelle-thesis.pdf and 2004-ppsn-anthocnet.pdf in the private papers repo, read with the pdf-extract skill; line numbers index its extracted text.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions