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

FieldTypeOptionalDescriptionDefault Value
StreamsStreamsNoThe Raft streams representing incoming data streams to be transmitted.
CarriersCarriersNoThe Raft carriers responsible for transporting data from the stream, protected with FEC and ARQ.
Max Packet BytesUint32YesThe 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

FieldTypeOptionalDescriptionDefault Value
InputStringYes
OutputStringYes
Stream HandleUint32NoUnique identifier for the stream, must match the stream handle on the receiving end.
TimeoutUint32NoTimeout for the stream in milliseconds.100
Delivery PolicyDelivery PolicyYesDetermines how packets are delivered on the stream. 'on_timeout' delivers packets in-order after the specified timeout, favoring playout synchronization. 'on_ordered' delivers strictly in-order as soon as prior packets are handled, minimizing latency while preserving order.0
ExtensionExtensionYesOptional extensions to the Raft stream configuration.

Extension

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

Fixed Replication

FieldTypeOptionalDescriptionDefault Value

Carriers

FieldTypeOptionalDescriptionDefault Value
InputStringNo
OutputStringNo
Carrier HandleUint32NoUnique identifier for the carrier, must match the carrier handle on the receiving end.
Bandwidth PriorityUint32YesWhen 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 MbpsUint32YesMaximum bandwidth in megabits per second that this carrier can use. This is only used when the in bandwidth-driven operation.1
Force Max BandwidthBoolYesIf set to true, the carrier will use the specified max_bandwidth_mbps as the bandwidth estimate.false