Files
rustfs/crates/ecstore/docs/internode-transport/transport-capabilities.md
T
Henry Guo 53b608c089 docs(internode): keep transport adapter OSS scoped (#3067)
docs(internode): keep transport adapter oss scoped

Co-authored-by: Henry Guo <marshawcoco@users.noreply.github.com>
2026-05-23 13:00:36 +08:00

3.0 KiB

Internode Transport Capabilities

Status: design note for backend-neutral capability reporting. This document does not add a backend or transport crate.

Open-source Scope

The OSS scope is:

  • define honest capability reporting for the InternodeDataTransport adapter;
  • keep tcp-http as the default backend;
  • keep existing TCP/HTTP behavior unchanged;
  • document the capability fields needed for maintainable transport code;
  • avoid adding dependencies or backend implementations.

The OSS scope is not:

  • adding another transport backend;
  • replacing the current TCP/HTTP path;
  • adding benchmark plans for another transport;
  • changing object correctness semantics.

Purpose

InternodeDataTransportCapabilities describes what a backend can honestly do for RustFS internode data-plane transfers. The fields describe observable adapter behavior without naming a specific transport implementation.

The capability report is descriptive. It does not select a backend, negotiate with peers, or weaken object correctness semantics.

Capability Fields

Field Meaning
streaming_read The backend can open a remote disk reader for read_file_stream.
streaming_write The backend can open a remote disk writer for create_file or append_file.
streaming_walk_dir The backend can stream walk_dir responses.
ordered_delivery Bytes for each opened transfer are delivered in order.
max_transfer_size Optional RustFS-level cap for a single transfer. None means no additional cap beyond the backend/protocol/runtime limits.
fallback_supported The backend can participate in the behavior-preserving TCP fallback path.

TCP/HTTP Backend

The default TCP/HTTP backend reports only capabilities it actually provides:

Field TCP/HTTP value Reason
streaming_read true HttpReader streams /rustfs/rpc/read_file_stream responses.
streaming_write true HttpWriter streams /rustfs/rpc/put_file_stream request bodies.
streaming_walk_dir true HttpReader streams /rustfs/rpc/walk_dir responses.
ordered_delivery true Each HTTP request body or response body is consumed as an ordered byte stream.
max_transfer_size None RustFS does not impose an extra per-transfer cap at the capability layer.
fallback_supported true TCP/HTTP is the behavior-preserving default and fallback path.

Capability Compatibility

Any new capability field should describe observable RustFS behavior without assuming a specific transport implementation:

Capability shape Interpretation
max_transfer_size=Some(n) The backend has a RustFS-visible transfer size ceiling and callers must split larger transfers or use fallback behavior.
ordered_delivery=false The backend cannot be used behind the current stream API without an ordering or reassembly layer.

Unsupported or mismatched capabilities must not silently change quorum, integrity verification, retry, or timeout semantics.