mirror of
https://github.com/jmcorgan/fips.git
synced 2026-08-09 00:04:54 +00:00
Design documentation illustration pass and FLP→FMP rename
Rename FIPS Link Protocol (FLP) to FIPS Mesh Protocol (FMP)
The "Link Protocol" name understated the layer's scope — spanning tree
construction, bloom filter routing, greedy forwarding, and mesh-wide
coordination go well beyond link-level concerns. Rename fips-link-layer.md
to fips-mesh-layer.md, update FLP→FMP throughout docs and source code
(FLP_VERSION→FMP_VERSION, wire.rs, rx_loop.rs, spanning_tree.rs).
New SVG illustrations
- Protocol stack: color-coded layer diagram replacing ASCII art
- OSI mapping: side-by-side comparison with traditional networking layers
- Bloom filter propagation: 6-node tree with sender-colored filter boxes
showing split-horizon computation per link
- Routing decision flowchart: 5-step priority chain with candidate ranking
by tree distance and link performance
- Coordinate discovery: sequence diagram showing LookupRequest propagation,
response caching, and SessionSetup cache warming
Redesigned existing SVGs
- Architecture overview: uniform node layout, U-shaped encrypted link
connectors, separate end-to-end session line
- Node architecture: split Router Core into FSP and FMP layers, reorganize
transports into Overlay/Shared Medium/Point-to-Point categories
- Identity derivation: wider boxes, visible encode arrow, dashed npub line
fips-intro.md revisions
- Add inline references to prior work: Yggdrasil/Ironwood for coordinate
routing, Noise Protocol Framework for IK handshakes, WireGuard for
index-based session dispatch, Wikipedia for bloom filters, split-horizon,
and greedy embedding
- Add explanatory paragraphs after bloom filter diagram describing
split-horizon filter computation and candidate selection behavior
- Simplify transport abstraction language, remove I2P/LoRa references
- Fix LookupRequest wording ("propagates" not "floods"), note intermediate
node coordinate caching on lookup responses
- Rewrite architecture overview prose to match redesigned diagrams
This commit is contained in:
+5
-5
@@ -69,22 +69,22 @@ const MAX_ORIGINAL_PACKET: usize = MIN_IPV6_MTU - IPV6_HEADER_LEN - ICMPV6_HEADE
|
||||
/// Breakdown (traced through the actual send path):
|
||||
///
|
||||
/// ```text
|
||||
/// FLP outer header (cleartext AAD) 16
|
||||
/// FMP outer header (cleartext AAD) 16
|
||||
/// common prefix (4) + receiver_idx (4) + counter (8)
|
||||
/// FLP AEAD ciphertext:
|
||||
/// timestamp (4) + msg_type (1) 5 [FLP inner header]
|
||||
/// FMP AEAD ciphertext:
|
||||
/// timestamp (4) + msg_type (1) 5 [FMP inner header]
|
||||
/// ttl (1) + path_mtu (2) + src (16) + dst (16) 35 [SessionDatagram body]
|
||||
/// FSP header (4 prefix + 8 counter) 12 [cleartext AAD]
|
||||
/// FSP AEAD ciphertext:
|
||||
/// timestamp (4) + msg_type (1) + flags (1) 6 [FSP inner header]
|
||||
/// <application data>
|
||||
/// Poly1305 tag 16 [FSP AEAD]
|
||||
/// FLP Poly1305 tag 16 [FLP AEAD]
|
||||
/// FMP Poly1305 tag 16 [FMP AEAD]
|
||||
/// ────
|
||||
/// 106
|
||||
/// ```
|
||||
///
|
||||
/// Note: the FLP inner header msg_type byte IS the SessionDatagram msg_type
|
||||
/// Note: the FMP inner header msg_type byte IS the SessionDatagram msg_type
|
||||
/// byte (shared, not double-counted). The "35 bytes" is the SessionDatagram
|
||||
/// body after msg_type is consumed by the dispatch layer.
|
||||
pub const FIPS_OVERHEAD: u16 = 16 + 16 + 5 + 35 + 12 + 6 + 16; // 106 bytes
|
||||
|
||||
Reference in New Issue
Block a user