Repository navigation
v3.0.1
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
00or01. - 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
- Unset
NOW_MORPH_TCP_PRELUDEnow selectsfade. SetNOW_MORPH_TCP_PRELUDE=full8explicitly if you need the previous default byte distribution. - Existing explicit
full8andlow7settings remain valid. Prelude selection is a local setting and is not included in share links. - 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
00and01; reserved-bit tolerance applies to decoding. - The local telemetry contract remains
nowhere.telemetry.
Full Changelog: v3.0.0...v3.0.1