Papers
Topics
Authors
Recent
Search
2000 character limit reached

Spritz-Spray: Adaptive Packet Spraying

Updated 5 July 2026
  • Spritz-Spray is a sender-based load-balancing algorithm that adaptively sprays packets across all bounded simple paths in low-diameter networks.
  • It leverages commodity Ethernet, dual ECMP tables, and a lightweight endpoint cache to dynamically choose paths based on latency and congestion feedback.
  • Simulations show that Spritz-Spray improves flow completion time up to 1.8× and handles link failures with performance gains up to 25.4× while minimizing packet drops.

Searching arXiv for the cited Spritz paper and closely related records to ground the article in current arXiv metadata. Spritz-Spray is a sender-based load-balancing algorithm within the Spritz framework for low-diameter networks, specifically Dragonfly and Slim Fly topologies. It shifts adaptive topology-aware routing to endpoints, uses only commodity Ethernet features, and performs fine-grained per-packet spraying across enumerated paths while reusing a lightweight cache of previously good routes. In the reported simulations on networks with over 1000 endpoints, it improves flow completion time relative to ECMP, UGAL-L, and prior sender-based approaches by up to 1.8×1.8\times, and under link failures it delivers performance improvements of up to 25.4×25.4\times, without additional hardware support (Bonato et al., 23 Feb 2026).

1. Position within the Spritz framework

Spritz comprises two sender-based algorithms, Spritz-Scout and Spritz-Spray. Scout is the exploration component; Spray is the high-throughput forwarding component. Spritz-Spray reuses the same send logic as Spritz-Scout but simplifies feedback handling, and it reuses the path cache that Scout has already populated with low-latency, low-congestion entropy values (EVs) (Bonato et al., 23 Feb 2026).

The algorithm is designed to exploit full path diversity in low-diameter topologies by letting endpoints pick among all bounded simple paths, with up to two non-minimal hops. Its design goals are fourfold: to exploit that path diversity, to rely only on standard Ethernet features, to adapt rapidly to congestion and failures while limiting packet reordering, and to fit in a few MiB of endpoint memory for path enumeration and lightweight per-path state. A plausible implication is that Spritz-Spray is best understood not as a stand-alone routing protocol, but as the data-plane execution phase of a sender-resident path-management system.

2. Path model and architectural assumptions

Spritz-Spray assumes that endpoints enumerate all bounded simple paths to each destination and store, for each path, an EV1,EV2EV_1,EV_2 pair. Switches are assumed to support two ECMP tables—ECMP 1 using EV1EV_1 and ECMP 2 using EV2EV_2—plus a default minimal-route table. Packet trimming is used to notify the sender immediately of severe congestion, and per-packet ACKs carry back the same EV. Path selection is therefore endpoint-driven, but the forwarding substrate remains commodity Ethernet (Bonato et al., 23 Feb 2026).

The algorithm is explicitly paired with a sender-based congestion-control scheme: an extended DCTCP controls congestion windows, while Spritz-Spray only drives path selection. This separation is operationally important. It means Spray does not replace end-to-end congestion control; instead, it determines which admissible path carries each packet.

Endpoint memory overhead is reported as up to 2.3\sim 2.3 MiB on Dragonfly and 8.5\sim 8.5 MiB on Slim Fly to store all EV entries per destination, often less than $10$ MiB in total. Coarse-grained variants using VLAN tags can reduce memory at the cost of less precise path control. These figures place the algorithm in a regime where per-endpoint path state is substantive but still bounded well below the scale usually associated with switch-resident path orchestration.

3. Transmission logic and feedback handling

Spritz-Spray maintains a circular buffer buf of “good” EVs with capacity $8$. For each outgoing packet, the sender first checks whether periodic exploration is due. Every explore_threshold packets, it samples a fresh path index via weighted sampling and sends using that EV. Otherwise, if buf is non-empty, it pops the front entry and sends the packet with that cached EV; if buf is empty, it falls back to weighted sampling over all paths (Bonato et al., 23 Feb 2026).

The defining behavioral distinction from Scout is that Spray removes a cached EV on use. In the paper’s phrasing, “popping from buf on each use forces continuous spraying; in Scout you’d leave buf untouched.” Before spraying, Scout fills the $8$-entry buf with low-latency, low-congestion EVs; Spray then uses that buffer as its initial “spray set.” Because entries are consumed as packets are sent, the connection is distributed across the best-known paths while still periodically re-exploring alternatives.

Feedback logic is deliberately sparse. On an ACK with no ECN, the sender caches the corresponding EV if the buffer is not full. On a timeout, it sets 25.4×25.4\times0 for that path, temporarily disabling future weighted sampling. Spray ignores ECN marks and NACKs in its per-path logic; only timeouts block a path. However, if the global ecn_rate exceeds 25.4×25.4\times1, the sender biases strongly back to the minimal path by scaling 25.4×25.4\times2 with min_bias_factor. This suggests a design that treats packet-level path liveness and recent ACK success as the primary control signals, with ECN entering only as a network-wide fallback bias rather than as a fine-grained per-path penalty.

4. Mathematical model and simulation parameterization

Each path 25.4×25.4\times3 is associated with a one-way latency 25.4×25.4\times4. The initial path weight is defined from 25.4×25.4\times5 and 25.4×25.4\times6 as

25.4×25.4\times7

In practice, all 25.4×25.4\times8 are scaled by 25.4×25.4\times9 to accentuate preference for shorter paths, while the longest path always has EV1,EV2EV_1,EV_20. Packet spraying then follows

EV1,EV2EV_1,EV_21

Timeout detection uses

EV1,EV2EV_1,EV_22

Switch ECN marking is RED-style, with linearly rising probability between

EV1,EV2EV_1,EV_23

These relations define the algorithm’s bias toward shorter paths, its probabilistic path selection, and its failure response (Bonato et al., 23 Feb 2026).

The reported packet-level simulations use the following principal parameters.

Parameter Value
Link speed EV1,EV2EV_1,EV_24 Gbps
Local link latency EV1,EV2EV_1,EV_25 ns
Global link latency EV1,EV2EV_1,EV_26 ns
Switch latency EV1,EV2EV_1,EV_27 ns
Queue size (per port) EV1,EV2EV_1,EV_28 (EV1,EV2EV_1,EV_29 pkts DF, EV1EV_10 pkts SF)
EV1EV_11 EV1EV_12 (EV1EV_13)
Packet size EV1EV_14 B header + EV1EV_15 B payload
Spritz-Spray buffer size EV1EV_16 entries
Explore threshold EV1EV_17 packets (EV1EV_18)
ECN threshold EV1EV_19 packets (EV2EV_20)
EV2EV_21 EV2EV_22

Although the ECN-threshold update rule is part of Scout rather than Spray, it is relevant because Spray explicitly leverages the path cache that Scout prepares. In Scout, ECN-marked ACKs increment ecn_counts_i; if the count exceeds ecn_threshold, the path is removed from buf. Spray then inherits a cache already filtered by Scout’s exploration logic.

5. Empirical performance

The paper reports results across microbenchmarks, structured traffic patterns, AI collectives, web-search datacenter traces, and failure scenarios. In the “motivation” EV2EV_23 MiB flow example, UGAL-L completes in EV2EV_24s, OPS(w) in EV2EV_25s, Spritz-Spray(u) in EV2EV_26s, and Spritz-Spray(w) in EV2EV_27s, corresponding to a EV2EV_28 speedup over UGAL-L (Bonato et al., 23 Feb 2026).

Under permutation traffic, Spritz-Spray(w) reduces median FCT by EV2EV_29–2.3\sim 2.30 versus OPS(w) and cuts packet drops by 2.3\sim 2.31–2.3\sim 2.32. Under adversarial targeted-congestion overload, it cuts median FCT by 2.3\sim 2.33–2.3\sim 2.34 and 2.3\sim 2.35 FCT by 2.3\sim 2.36–2.3\sim 2.37 versus UGAL-L. In a 2.3\sim 2.38 MiB incast plus 2.3\sim 2.39-flow bystander permutation, incast 8.5\sim 8.50 remains approximately 8.5\sim 8.51 ms for all schemes because the bottleneck is DCTCP, but bystander 8.5\sim 8.52 falls from 8.5\sim 8.53s with Valiant to 8.5\sim 8.54s with Spritz-Spray(w), a tail-latency improvement of 8.5\sim 8.55, and retransmissions drop from 8.5\sim 8.56 to 8.5\sim 8.57.

For AI collectives on 8.5\sim 8.58 endpoints with ECMP background traffic, Spritz-Spray(w) is 8.5\sim 8.59–$10$0 faster than the next best method, OPS(w), on butterfly allreduce, while dropping $10$1–$10$2 fewer packets. On alltoall, it remains within $10$3–$10$4 of OPS(w) on Slim Fly and is best on Dragonfly. On a full-load $10$5 ms web-search trace with uniform small flows, minimal routing and UGAL-L are slightly favored on mean FCT, but Spritz-Spray(w) still yields the fewest drops; with stronger minimal bias, it matches or outperforms UGAL-L even on tiny-flow workloads.

Failure handling is one of the strongest reported results. With $10$6 random link kills, Spritz-Spray(w) outperforms Valiant and OPS(w) by $10$7–$10$8 in median FCT across permutation, allreduce, and trace workloads, while reducing lost packets by up to two orders of magnitude. These data indicate that the algorithm’s timeout-driven path suppression is especially effective when path availability changes abruptly.

6. Implementation requirements and limitations

Spritz-Spray requires only standard ECMP, multiple ECMP tables or VLAN-selectable tables, per-port ECN with RED behavior, packet trimming support, and per-packet ACKs. The paper explicitly states that it needs no custom ASICs or proprietary switch logic (Bonato et al., 23 Feb 2026).

The principal trade-off is packet reordering. Spritz-Spray incurs more reordering than flowlet schemes, but far less than uniform OPS. Modern transports such as UE, SRD, and Falcon are identified as reordering-tolerant; for legacy transports, increasing minimal-path bias is suggested. The tuning parameters explore_threshold and ecn_threshold depend on BDP, and the reported defaults are calibrated to $10$9 Gbps and $8$0 ns global-link latency.

Several limitations are explicit. Tabula-rasa workloads of tiny flows may temporarily lose to minimal routing. Timeout recovery depends on accurate RTT measurement, so very volatile RTTs can mis-block paths. Per-packet ACK support adds approximately $8$1 overhead. These caveats constrain the settings in which per-packet spraying is unambiguously beneficial, particularly when workloads are dominated by very short flows or transport stacks are less tolerant of reordering.

7. Terminological disambiguation

The term “Spritz-Spray” in this context denotes the packet-spraying algorithm introduced in “Spritz: Path-Aware Load Balancing in Low-Diameter Networks” (Bonato et al., 23 Feb 2026). It should not be conflated with unrelated spray-physics usages of similar wording in other arXiv records, including intranasal droplet-delivery optimization (Basu et al., 2019), agricultural droplet impaction on leaves (Dorr et al., 2015), underwater bubble-collision aerosol production (Jiang et al., 2023), and flash freeze–thaw in two-fluid atomizing sprays (Wang et al., 20 Jan 2026).

That distinction matters because the networking algorithm uses “spray” in the established packet-routing sense: distributing packets across multiple admissible paths. The other cited works use spray to denote physical atomization, impaction, aerosol generation, or droplet thermodynamics. The shared vocabulary is therefore homonymous rather than methodological.

Topic to Video (Beta)

No one has generated a video about this topic yet.

Whiteboard

No one has generated a whiteboard explanation for this topic yet.

Follow Topic

Get notified by email when new papers are published related to Spritz-Spray.