Module probe

Module probe 

Source
Expand description

SWIM direct and indirect liveness probe packets.

SWIM probes use standard NDN Interest/Data so they traverse the normal forwarding pipeline. The PIT handles rendezvous for indirect probes — no special routing is needed.

§Packet formats

Direct probe (node A → node B):

Interest: /ndn/local/nd/probe/direct/<B-name>/<nonce-u32>

Indirect probe (node A asks node C to probe node B):

Interest: /ndn/local/nd/probe/via/<C-name>/<B-name>/<nonce-u32>

Probe ACK (node B or C → node A via PIT reverse path):

Data: same name as the Interest
      Content: empty (the ACK is the Data itself)

§Usage pattern

  1. A detects B is STALE; sends build_direct_probe(b, nonce) on B’s face.
  2. If no ACK within probe_timeout, A sends build_indirect_probe(c, b, nonce) for K randomly chosen intermediaries.
  3. Only if all K indirect probes time out does A declare B ABSENT.

The SWIM fanout K is set by DiscoveryConfig::swim_indirect_fanout. K = 0 disables indirect probing entirely (use BackoffScheduler instead).

Structs§

DirectProbe
Parsed fields from a direct probe Interest.
IndirectProbe
Parsed fields from an indirect probe Interest.

Functions§

build_direct_probe
Build a direct probe Interest.
build_indirect_probe
Build an indirect probe Interest.
build_indirect_probe_encoded
Build an indirect probe with the length-prefix encoding.
build_probe_ack
Build a probe ACK Data packet.
is_probe_ack
Check whether the raw packet is a probe ACK Data (empty-content reply).
parse_direct_probe
Parse a direct probe Interest name.
parse_indirect_probe
Parse an indirect probe Interest name.