mirror of
https://github.com/jmcorgan/fips.git
synced 2026-10-30 15:48:34 +00:00
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
65 lines
3.2 KiB
XML
65 lines
3.2 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 520 340" font-family="monospace" font-size="13">
|
|
<!-- Background -->
|
|
<rect width="520" height="340" fill="#0d1117" rx="8"/>
|
|
|
|
<!-- Title -->
|
|
<text x="260" y="28" fill="#e0e0e0" text-anchor="middle" font-size="15" font-weight="bold">Coordinate Warmup State Machine</text>
|
|
|
|
<!-- ======================== -->
|
|
<!-- WARMUP state (top) -->
|
|
<!-- ======================== -->
|
|
<rect x="160" y="50" width="200" height="40" rx="6" fill="#1a1a2e" stroke="#d0a040" stroke-width="2"/>
|
|
<text x="260" y="75" fill="#d0a040" text-anchor="middle" font-weight="bold">WARMUP</text>
|
|
|
|
<!-- Annotation right of WARMUP -->
|
|
<text x="375" y="75" fill="#909090" text-anchor="start" font-size="10">send coords via CP</text>
|
|
<text x="375" y="87" fill="#909090" text-anchor="start" font-size="10">or CoordsWarmup</text>
|
|
|
|
<!-- Arrow: WARMUP → MINIMAL -->
|
|
<line x1="260" y1="90" x2="260" y2="140" stroke="#e0e0e0" stroke-width="1.5"/>
|
|
<polygon points="260,148 254,138 266,138" fill="#e0e0e0"/>
|
|
|
|
<!-- Transition label -->
|
|
<text x="268" y="120" fill="#909090" text-anchor="start" font-size="10">N packets sent</text>
|
|
|
|
<!-- ======================== -->
|
|
<!-- MINIMAL state (middle) -->
|
|
<!-- ======================== -->
|
|
<rect x="160" y="148" width="200" height="40" rx="6" fill="#1a1a2e" stroke="#e0e0e0" stroke-width="2"/>
|
|
<text x="260" y="173" fill="#e0e0e0" text-anchor="middle" font-weight="bold">MINIMAL</text>
|
|
|
|
<!-- Annotation right of MINIMAL -->
|
|
<text x="375" y="173" fill="#909090" text-anchor="start" font-size="10">no coords attached</text>
|
|
|
|
<!-- Arrow: MINIMAL → RE-WARM -->
|
|
<line x1="260" y1="188" x2="260" y2="238" stroke="#e0e0e0" stroke-width="1.5"/>
|
|
<polygon points="260,246 254,236 266,236" fill="#e0e0e0"/>
|
|
|
|
<!-- Transition label -->
|
|
<text x="268" y="218" fill="#c04040" text-anchor="start" font-size="10">CoordsRequired</text>
|
|
<text x="268" y="230" fill="#c04040" text-anchor="start" font-size="10">or PathBroken</text>
|
|
|
|
<!-- ======================== -->
|
|
<!-- RE-WARM state (bottom) -->
|
|
<!-- ======================== -->
|
|
<rect x="110" y="246" width="300" height="40" rx="6" fill="#1a1a2e" stroke="#c04040" stroke-width="2"/>
|
|
<text x="260" y="271" fill="#e0e0e0" text-anchor="middle" font-weight="bold">SEND CoordsWarmup (0x14)</text>
|
|
|
|
<!-- Annotation right of RE-WARM -->
|
|
<text x="425" y="271" fill="#909090" text-anchor="start" font-size="10">rate-limited</text>
|
|
|
|
<!-- Arrow: RE-WARM → back to WARMUP (curved left side) -->
|
|
<path d="M 110,266 L 60,266 L 60,70 L 160,70" fill="none" stroke="#d0a040" stroke-width="1.5"/>
|
|
<polygon points="160,70 150,64 150,76" fill="#d0a040"/>
|
|
|
|
<!-- Transition label on return arrow -->
|
|
<text x="48" y="170" fill="#d0a040" text-anchor="end" font-size="10" transform="rotate(-90, 48, 170)">counter reset</text>
|
|
|
|
<!-- Entry arrow into WARMUP (from above) -->
|
|
<line x1="260" y1="38" x2="260" y2="50" stroke="#d0a040" stroke-width="1.5"/>
|
|
<text x="268" y="46" fill="#909090" text-anchor="start" font-size="10">session established</text>
|
|
|
|
<!-- LookupResponse annotation on return path -->
|
|
<text x="68" y="310" fill="#909090" text-anchor="start" font-size="10">also on LookupResponse</text>
|
|
</svg>
|