mirror of
https://github.com/jmcorgan/fips.git
synced 2026-08-09 08:14:42 +00:00
Add the full next-hop routing algorithm to Node::find_next_hop(): - Local delivery, direct peer, bloom filter candidates, greedy tree routing fallback, with (link_cost, tree_distance, node_addr) ordering - select_best_candidate() scores by peer→dest distance (not us→peer) with self-distance check to prevent routing loops - TreeState::find_next_hop() for greedy tree routing with progress guarantee - ActivePeer::link_cost() placeholder (constant 1.0) for future link quality metrics Add routing tests including 100-node all-pairs reachability simulation (9900/9900 delivered, 0 loops, avg 4.0 hops, max 8). Update fips-routing.md to reflect bloom filter routing as the primary forwarding mechanism, with greedy tree routing as fallback during convergence windows.
FIPS Design Documents
Protocol design specifications and analysis for the Federated Interoperable Peering System.
Suggested Reading Order
Start with the high-level architecture, then work through session flow, routing concepts, and finally the wire-level protocol details.
1. Introduction and Overview
| Document | Description |
|---|---|
| fips-intro.md | Protocol introduction: goals, concepts, architecture |
2. Protocol Flow (How Traffic Works)
| Document | Description |
|---|---|
| fips-session-protocol.md | End-to-end session flow, Noise IK encryption, terminology |
3. Routing (How Packets Find Their Way)
| Document | Description |
|---|---|
| fips-routing.md | Routing concepts: bloom filters, discovery, greedy routing |
| spanning-tree-dynamics.md | Tree protocol behavior: convergence, partitions, recovery |
| fips-gossip-protocol.md | Wire formats: TreeAnnounce, FilterAnnounce, Lookup messages |
4. Link Layer (How Peer Connections Work)
| Document | Description |
|---|---|
| fips-wire-protocol.md | Transport layer: Noise IK, session indices, roaming, security |
| fips-transports.md | Transport-specific: UDP, Ethernet, Tor, radio characteristics |
Implementation
| Document | Description |
|---|---|
| fips-architecture.md | Software architecture: entities, state machines, configuration |
| fips-tun-driver.md | TUN interface driver: reader/writer threads, ICMPv6, packet flow |
| fips-state-machines.md | Phase-based state machine pattern: peer lifecycle, transitions |
Document Cross-References
fips-intro.md
│
┌────────────┴────────────┐
▼ ▼
fips-session-protocol.md fips-architecture.md
│ │
┌─────────┴─────────┐ ▼
▼ ▼ fips-transports.md
fips-routing.md fips-wire-protocol.md
│ │
▼ ▼
spanning-tree-dynamics.md ←→ fips-gossip-protocol.md