DiskpipeSTORAGE / OPERATIONS

zcutils

FIPS gate tests Image build Reproducible build: verified at 75c89bd4 Offline build: verified at 75c89bd4 FIPS CMVP: 5314 SPDX: signed CycloneDX: signed License: MIT or Apache-2.0 or BSD-2-Clause

The FIPS gate-test badge reports checker regressions. CMVP #5314 applies to the cryptographic module; zccusan application and deployment conformance remain under review. The reproducible-build and offline-build badges cover compilation and the unsigned executable bundle at the named revision, with a signed project-run comparison across two workers. They do not cover the entire OCI image, online input preparation and signing, later revisions, or independent certification. The SBOM badges link to signature verification instructions for the exact image being deployed.

zcutils is an experimental Linux utility crate for zero-copy descriptor streams, lane-multiplexed TCP transfer, and low-level io_uring storage/network benchmarks. It builds one umbrella binary plus direct command binaries for the main pipeline tools.

Looking for Diskpipe? Visit the Diskpipe documentation for deployment with Kubernetes or without Kubernetes. The Zero Copy Cinematic Universe explains the project relationships.

Status

The current release is 1.0.0. This repository declares descriptor protocol version 1 as the initial descriptor stream format. Descriptor-native transport is specified in docs/zero-copy-descriptor.md, but the local pipeline tools still use byte-compatible stdin/stdout paths until Unix socket fd passing, credits, and release accounting are implemented. The TCP mux transfer path and AES-256-GCM frame format are implemented today.

Build

cargo build --release --bins

Both invocation styles are supported:

zcutils zcprobe
zcprobe
zcutils zc-tcpmux-xfer ./file nodeB:/tmp/file
zc-tcpmux-xfer ./file nodeB:/tmp/file

Main Commands

Examples

Run a local byte-compatible smoke test:

printf 'hello\n' | zcmap | zcsink --consume checksum

Transfer a file to a remote host:

zc-tcpmux-xfer ./payload.bin nodeB:/tmp/payload.bin

Pin TCP mux lanes to a CPU list on both sides:

zc-tcpmux-xfer ./payload.bin nodeB:/dev/null \
  --lanes 128 \
  --pin-cpus \
  --cpu-list 0-95

Descriptor Spec and Upgrade Path

The descriptor stream spec is versioned separately from the crate. This repository declares the initial descriptor protocol as protocol version 1, carried by a fixed ZcStreamHeader with protocol_version, min_reader_version, feature flags, and header_len. Compatible additions append length-delimited fields or frames and use optional feature bits. Incompatible wire changes must bump protocol_version, set min_reader_version to the oldest safe reader, and keep old readers from silently accepting streams they cannot interpret.

The implemented TCP mux lane header is currently V2. Receivers still accept the legacy V1 lane header, and V2-compatible extensions can append bytes behind the declared body length. See docs/zero-copy-descriptor.md for the exact stream, frame, and topology-header rules.

Documentation

For the smallest complete sample of the repo's intended style, start with zc-tcpmux-send and zc-tcpmux-receive: token-authenticated transport, lane-aware TCP muxing, AES framing, clear CLI shape, and direct command binaries without dragging in the SAN stack.

zccusan Docs

The SAN/Kubernetes storage-network material lives under zccusan/, separate from the main stream and pipeline documentation. Start with zccusan/README.md.

License

zcutils is multi-licensed under your choice of MIT, Apache-2.0, or BSD-2-Clause. See LICENSE.md.

Identity documentation website

Read the published guides. GitHub Actions validates and builds the Markdown with a small dependency-free Rust renderer, then publishes static HTML to the existing Pages site while preserving the Helm chart index and archives. Run bash scripts/check-docs-site.sh locally; see site build and publishing.

Built from Markdown with Rust. No client-side dependencies.