Back to Rustfs

Internode Transport Capabilities

crates/ecstore/docs/internode-transport/transport-capabilities.md

1.0.0-beta.53.0 KB
Original Source

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

FieldMeaning
streaming_readThe backend can open a remote disk reader for read_file_stream.
streaming_writeThe backend can open a remote disk writer for create_file or append_file.
streaming_walk_dirThe backend can stream walk_dir responses.
ordered_deliveryBytes for each opened transfer are delivered in order.
max_transfer_sizeOptional RustFS-level cap for a single transfer. None means no additional cap beyond the backend/protocol/runtime limits.
fallback_supportedThe backend can participate in the behavior-preserving TCP fallback path.

TCP/HTTP Backend

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

FieldTCP/HTTP valueReason
streaming_readtrueHttpReader streams /rustfs/rpc/read_file_stream responses.
streaming_writetrueHttpWriter streams /rustfs/rpc/put_file_stream request bodies.
streaming_walk_dirtrueHttpReader streams /rustfs/rpc/walk_dir responses.
ordered_deliverytrueEach HTTP request body or response body is consumed as an ordered byte stream.
max_transfer_sizeNoneRustFS does not impose an extra per-transfer cap at the capability layer.
fallback_supportedtrueTCP/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 shapeInterpretation
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=falseThe 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.