Skip to main content

Crate jacquard_batman_classic

Crate jacquard_batman_classic 

Source
Expand description

Spec-faithful classic BATMAN next-hop routing engine.

This engine implements the BATMAN protocol as described in the BATMAN IV specification. The key behavioural properties:

  • TQ carried in OGM — each OriginatorAdvertisement encodes a tq field. Originators initialise it to 1000; re-broadcasting nodes apply tq_product(local_link_tq, received_tq) before forwarding. Downstream nodes read path quality directly from received OGMs.
  • Hop-limit-bounded propagation — OGMs carry a remaining_hop_limit field decremented at each hop. OGMs reaching zero are not re-broadcast, bounding propagation to DEFAULT_OGM_HOP_LIMIT hops.
  • No Bellman-Ford — path quality to remote originators is read from received OGM TQ values, not computed locally over a gossip-merged topology graph.
  • No TQ enrichment — quality is derived solely from ogm_equivalent_tq(LinkRuntimeState); Jacquard-specific link beliefs (delivery confidence, symmetry, transfer rate, stability horizon) are not incorporated.
  • Echo-only bidirectionality — a neighbor is confirmed bidirectional only by receiving a local OGM echoed back via that neighbor. There is no topology fallback.
  • No bootstrap shortcut — if no OGM receive-window data exists for a path, no route candidate is produced. The engine starts silent and becomes active only after OGMs have accumulated window data.

These properties make BatmanClassicEngine a faithful baseline for comparison against Babel (which was designed to fix exactly the weaknesses of classic DV-gossip protocols: asymmetric-link handling, loop-freedom under topology change, and triggered rather than periodic-only updates).

Structs§

BatmanClassicEngine
BatmanClassicPlannerModel
BatmanClassicPlannerSeed
BatmanClassicPlannerSnapshot
BestNextHop
DecayWindow
Per-engine staleness and refresh window configuration.

Constants§

BATMAN_CLASSIC_CAPABILITIES
BATMAN_CLASSIC_ENGINE_ID

Functions§

admit_route_from_snapshot
batman_classic_backend_route_id
candidate_routes_from_snapshot
selected_neighbor_from_backend_route_id