Skip to content

docs: add SVS v4 specification - #23

Open
Taranum01 wants to merge 1 commit into
named-data:mainfrom
Taranum01:svs-v4-spec
Open

docs: add SVS v4 specification#23
Taranum01 wants to merge 1 commit into
named-data:mainfrom
Taranum01:svs-v4-spec

Conversation

@Taranum01

Copy link
Copy Markdown

This PR adds the SVS v4 wire-format specification as Specification-v4.md, alongside the existing v3 Specification.md.

Summary

SVS v4 extends the v3 wire format to support large sync groups by introducing:

  • A 32-byte SHA-256 membership hash (mhash, TLV 0xCB) carried in every Sync Data.
  • A wire-level replacement of the v3 VectorType discriminator with three distinct TLVs:
    • FullStateVector (0xCD) — direct form carrying the complete State Vector.
    • PartialStateVector (0xCE) — direct form carrying a publication-time subset, used when the encoded FULL exceeds SyncVectorThreshold.
    • SvsDataRef (0x07) — publish-only form pointing to a retrievable full-vector Data.
  • A new publish + pull recovery mode triggered by mhash mismatch or when the local FULL exceeds SyncVectorThreshold. Producers publish full-vector Data at /<group>/<node>/<boot>/32=sv/<version> and send a publish-only Sync Data referencing it.
  • A bumped Sync Interest name version: /<sync-prefix>/v=4.

SyncVectorThreshold is a fixed library constant of 1200 bytes.

Reference implementation

The ndnd Go implementation in named-data/ndnd (std/sync, std/ndn/svs/v4) ships against this spec on the psvs branch.

File

  • New: Specification-v4.md (508 lines)
  • §9 ("Migration from Version 3") documents the wire-format deltas.

This is a non-breaking, additive contribution — Specification.md (v3) is left untouched. v3 and v4 deployments cannot interoperate on the same Sync Interest prefix (v=3 vs v=4), per the §9 migration note.

cc @yoursunny — addressing the request from named-data/ndnd#190.

Uploads the SVS v4 wire-format specification (mhash, distinct
FullStateVector / PartialStateVector / SvsDataRef TLVs, and the
publish + pull recovery mode) alongside the existing v3
Specification.md. A 'Migration from Version 3' section (§9) summarizes
the wire-format deltas.

Source: https://github.com/named-data/ndnd/blob/psvs/docs/svs-v4.md
Reference implementation: named-data/ndnd std/sync std/ndn/svs/v4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant