Files
fips/docs/design/diagrams/fips-osi-mapping.svg
T
Johnathan Corgan 00e26765bd Design documentation illustration and review pass
Wire format diagrams:
- Add 24 SVG diagrams covering every FMP and FSP wire format: common
  prefix, established frame headers, Noise IK handshake messages,
  handshake flow, TreeAnnounce, AncestryEntry, FilterAnnounce,
  LookupRequest/Response, SessionDatagram, Disconnect, SenderReport,
  ReceiverReport, FSP complete message, SessionSetup/Ack/Msg3,
  PathMtuNotification, CoordsRequired, PathBroken, and MtuExceeded
- Replace ASCII art in fips-wire-formats.md with SVG references
- Apply text edits to fips-mesh-layer.md, fips-mesh-operation.md,
  fips-transport-layer.md, and fips-ipv6-adapter.md

Spanning tree dynamics:
- Add 12 topology SVG diagrams: node join (overview + 3-panel steps),
  three-node convergence (4-panel), link addition with depth labels,
  link removal, partition formation, and 6 real-world example diagrams
  (office, mixed-link, two-site WAN topologies)
- Rewrite all code blocks to narrative prose with diagram references
- Add inline prior art attributions distinguishing Yggdrasil-derived
  concepts from FIPS-novel contributions
- Add 3 new references (De Couto ETX, IEEE 802.1D, RFC 2328 OSPF) and
  Prior Art summary
- Remove outdated sections: indirect partition note, integration test
  gaps, DHT-based lookup reference
- Change "must elect a new root" to "must rediscover its new root"

Spanning tree design review (fips-spanning-tree.md):
- Rename "Root Election" to "Root Discovery" across docs
- Add "What Is a Spanning Tree?" introductory section
- Add parent selection intro explaining self-organization role
- Fix tree distance example: 4 hops, not 2
- Clarify timestamp field as advisory only
- Remove unimplemented ROOT_TIMEOUT and TREE_ENTRY_TTL from timing
  parameters and implementation status tables

Bloom filter design review (fips-bloom-filters.md):
- Add "What Is a Bloom Filter?" intro section
- Rewrite Purpose section to frame filters as routing path identification
- Correct FPR analysis (old values were 3-50x overstated)
- Add Filter Occupancy Model based on network size and tree position
- Fix filter expiration to describe actual MMP-based cleanup
- Combine Scale Considerations with Size Classes after Wire Format
- Fix stale FPR values in src/bloom/mod.rs comments

Session layer review (fips-session-layer.md):
- Add inline prior art attributions: Noise Protocol Framework, WireGuard,
  DTLS (RFC 6347), IKEv2 (RFC 7296), RFC 1191 PMTUD, Yggdrasil, NIP-44
- Replace warmup state machine ASCII art with SVG diagram
- Convert CoordsWarmup wire format code block to prose
- Add External References section with full citations

Level 5 implementation doc cleanup:
- Delete fips-software-architecture.md (redundant with protocol layer docs)
- Delete fips-state-machines.md (Rust tutorial, not protocol design)
- Add fipsctl command reference to README.md
- Update cross-references in fips-intro.md, docs/design/README.md,
  fips-transport-layer.md, fips-configuration.md

Fixes:
- Correct fd::/8 to fd00::/8 in fips-session-layer.md,
  fips-identity-derivation.svg, and fips-node-architecture.svg
- Fix config example MTU: 1197 → 1472 in fips-configuration.md

File organization:
- Move all SVG diagrams into docs/design/diagrams/ subdirectory
- Update all diagram references to use new paths
2026-02-24 17:32:37 +00:00

65 lines
2.8 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 820 400" font-family="monospace" font-size="15">
<style>
text { fill: #e0e0e0; }
text.header { font-size: 16px; font-weight: bold; fill: #e0e0e0; }
text.layer { font-size: 15px; fill: #e0e0e0; }
text.fips { font-size: 15px; fill: #80b0e0; }
text.diff { font-size: 14px; fill: #a0a0b0; }
line.rule { stroke: #404050; stroke-width: 1; }
line.top { stroke: #606070; stroke-width: 1.5; }
</style>
<!-- Background -->
<rect width="800" height="360" fill="#0d1117" rx="8"/>
<!-- Column headers -->
<text x="40" y="35" class="header">Traditional</text>
<text x="280" y="35" class="header">FIPS</text>
<text x="560" y="35" class="header">Key Difference</text>
<line x1="20" y1="48" x2="780" y2="48" class="top"/>
<!-- Application -->
<text x="40" y="75" class="layer">Application</text>
<text x="280" y="75" class="fips">Application</text>
<text x="560" y="75" class="diff">Same role</text>
<line x1="20" y1="90" x2="780" y2="90" class="rule"/>
<!-- Transport -->
<text x="40" y="117" class="layer">Transport</text>
<text x="280" y="117" class="fips">(not present)</text>
<text x="560" y="117" class="diff">Datagrams, not streams</text>
<line x1="20" y1="132" x2="780" y2="132" class="rule"/>
<!-- Session -->
<text x="40" y="159" class="layer">Session</text>
<text x="280" y="159" class="fips">FIPS Session Protocol</text>
<text x="560" y="159" class="diff">End-to-end encryption</text>
<text x="280" y="177" class="fips">(FSP)</text>
<text x="560" y="177" class="diff">and session management</text>
<line x1="20" y1="192" x2="780" y2="192" class="rule"/>
<!-- Network -->
<text x="40" y="219" class="layer">Network (IP)</text>
<text x="280" y="219" class="fips">FIPS Mesh Protocol</text>
<text x="560" y="219" class="diff">Self-organizing routing</text>
<text x="280" y="237" class="fips">(FMP)</text>
<text x="560" y="237" class="diff">and forwarding</text>
<line x1="20" y1="252" x2="780" y2="252" class="rule"/>
<!-- Link -->
<text x="40" y="279" class="layer">Link</text>
<text x="280" y="279" class="fips">FMP (link encryption)</text>
<text x="560" y="279" class="diff">Hop-by-hop crypto</text>
<line x1="20" y1="294" x2="780" y2="294" class="rule"/>
<!-- Physical -->
<text x="40" y="321" class="layer">Physical</text>
<text x="280" y="321" class="fips">Transport layer</text>
<text x="560" y="321" class="diff">Abstracted — all media</text>
<text x="280" y="339" class="fips">(UDP, radio, serial)</text>
<text x="560" y="339" class="diff">treated the same</text>
<!-- Caption -->
<text x="400" y="393" text-anchor="middle" font-size="14" fill="#808090" font-style="italic">Mapping FIPS protocol layers to the traditional networking model</text>
</svg>