Skip to content

v3.0.1

Choose a tag to compare

@yosebyte yosebyte released this 16 Oct 12:31
· 78 commits to main since this release

Nowhere 3.0.1

Nowhere 3.0.1 adds the Fade TCP Morph Prelude policy and improves QUIC Flow cancellation, shutdown, and buffer reuse.

Highlights

  • Fade TCP Morph Prelude by default. The 64-byte prelude transitions from printable ASCII to 7-bit random bytes, then to 8-bit random bytes, with independently randomized transition points.
  • Reliable QUIC cancellation and shutdown. Vector cancellation covers connection establishment and Flow setup, and shutdown respects its deadline when waiting for the connection cache.
  • FlowStart reserved-bit handling. Receivers determine TCP or UDP from Bit 0 and ignore reserved Bits 1–7. Senders continue to emit 00 or 01.
  • Less copying and allocation. UDP forwarding preserves payload slices, and telemetry decoding reuses its receive buffer.

TCP Morph Prelude

NOW_MORPH_TCP_PRELUDE accepts fade, full8, or low7, with fade used when the variable is unset.

Fade chooses boundary A from 8–12 and boundary B from 16–32, inclusive. Bytes before A are printable ASCII; bytes from A to B are 7-bit random values; the remaining bytes use all eight random bits. Boundary and printable-byte selection use rejection sampling to avoid modulo bias.

The prelude remains 64 bytes, followed by the existing 12-byte nonce. Receivers consume the prelude without interpreting its contents. Explicit full8 and low7 settings retain their behavior.

QUIC and UDP

  • Cancel pending QUIC connection and Flow setup work when Vector shuts down.
  • Bound the wait for the cached connection lock by the shutdown deadline and release the lock before waiting for endpoint closure.
  • Share Flow request encoding across Vector and Portal-to-Egress paths.
  • Represent stream and QUIC UDP transports explicitly and preserve received payload ranges without moving payload bytes to the start of the buffer.

Telemetry and Validation

  • Reuse the telemetry JSON frame buffer after decoding, including after malformed JSON.
  • Extend regression coverage for QUIC cancellation, bounded shutdown, UDP payload ranges, Flow request encoding, telemetry buffer reuse, and TCP Morph cipher exhaustion boundaries.
  • Correct the protocol reference to document 4 MiB QUIC DATAGRAM receive and send buffers for Portal, Vector, and Egress.

Upgrade Notes

  1. Unset NOW_MORPH_TCP_PRELUDE now selects fade. Set NOW_MORPH_TCP_PRELUDE=full8 explicitly if you need the previous default byte distribution.
  2. Existing explicit full8 and low7 settings remain valid. Prelude selection is a local setting and is not included in share links.
  3. No service URL, Shared Key, or telemetry schema migration is required for an existing Nowhere 3.0.0 deployment.

Compatibility

  • Nowhere 3.0.1 retains the NW3 transport and authentication formats used by Nowhere 3.0.0, including ALPN nw3.
  • Fade preserves the existing TCP Morph bootstrap length and is accepted by Nowhere 3.0.0 receivers.
  • Outgoing FlowStart values remain 00 and 01; reserved-bit tolerance applies to decoding.
  • The local telemetry contract remains nowhere.telemetry.

Full Changelog: v3.0.0...v3.0.1