Skip to main content

Raft

Implements the Raft algorithm as a reliable transport protocol with integrated forward error correction and automatic repeat request (ARQ) mechanisms. This sophisticated transport layer provides guaranteed ordered delivery, fault tolerance, and data integrity through distributed consensus principles. Essential for mission-critical applications requiring guaranteed delivery, distributed system coordination, and reliable data replication across unreliable network infrastructures.

Tags: FEC, TRANSPORT_PROTOCOL, RELIABILITY

FieldTypeLabelDescriptionDefault Value
StreamsStreamsRepeatedThe Raft streams representing incoming data streams to be transmitted.
CarriersCarriersRepeatedThe Raft carriers responsible for transporting data from the stream, protected with FEC and ARQ.
Max Packet BytesUint32OptionalThe maximum packet size in bytes that can be produced by the Raft carrier outputs.This is required to be specified in the case where the carriers MTU cannot be automatically dededuced, e.g., if two raft components are connected back to back.

Streams

FieldTypeLabelDescriptionDefault Value
InputStringOptional
OutputStringOptional
Stream HandleUint32Unique identifier for the stream, must match the stream handle on the receiving end.
Realtime StreamRealtime StreamFor application-level, latency-sensitive data produced and consumed directly by Raft.
Transit StreamTransit StreamFor encapsulating other protocols (e.g. TCP or QUIC), where Raft acts as a forwarding or tunneling layer rather than the end-to-end protocol.

Realtime Stream

FieldTypeLabelDescriptionDefault Value
TimeoutUint32Timeout for the stream in milliseconds.100
Jitter BufferUint32OptionalDetermines how long the stream should wait before delivering a packet to the application. The jitter buffer is used to smooth out variations in packet arrival times. If the jitter buffer is zero, packets will be delivered to the application as soon as they are received, assuming they can be delivered in an in-order manner. If unset, the stream will use the symbol timeout as the jitter buffer. The jitter buffer should be any value between zero and the symbol timeout.
ExtensionExtensionOptionalOptional extensions to the Raft stream configuration.

Extension

FieldTypeLabelDescriptionDefault Value
Fixed ReplicationFixed ReplicationForce raft to used fixed replication repair mode. This will automatically force all packets to be replicated to all valid carriers.

Fixed Replication

FieldTypeLabelDescriptionDefault Value

Transit Stream

FieldTypeLabelDescriptionDefault Value
Bonding DelayUint32Bonding selection threshold (ms). When multiple carriers are available, only those with measured latency <= bonding_delay are used500

Carriers

FieldTypeLabelDescriptionDefault Value
InputString
OutputString
Carrier HandleUint32Unique identifier for the carrier, must match the carrier handle on the receiving end.
Bandwidth PriorityUint32OptionalWhen set, enables bandwidth-driven operation where Raft only accepts packets that can be transferred given the current carrier bandwidth estimates. Either none or all carriers must have a priority set. Raft selects the highest priority carrier(s) until their estimated bandwidth capacity is reached. Higher values indicate higher priority, and carriers with the same priority are selected in a round-robin fashion.0
Max Bandwidth MbpsUint32OptionalMaximum bandwidth in megabits per second that this carrier can use. This is only used when the in bandwidth-driven operation.1
Auto Bandwidth EstimationBoolOptionalIf set to false, the carrier will use the specified max_bandwidth_mbps as the bandwidth estimate.true