# Homa: A Receiver-Driven Low-Latency Transport Protocol Using Network Priorities

### Abstract&#x20;

* Homa: new transport protocol for DC networks&#x20;
* Provides low latency, especially for workloads with a high volume of very short messages, and it also supports large messages and high network utilization&#x20;

### Introduction&#x20;

* Existing transport protocols are ill-suited to these conditions, so the latency they provide for short messages is far higher than the hardware potential, particularly under high network loads&#x20;
* Homo&#x20;
  * Favors small messages
  * But also improves the performance of large messages in comparison to TCP-like approaches based on fair sharing&#x20;
* Two innovations&#x20;
  * Aggressive use of priority queues provided by modern network switches&#x20;
    * Assigns priorities dynamically on receivers, and it integrates the priorities with a receiver-driven flow control mechanism&#x20;
  * Controller over-commitment: a receiver allows a few senders to transmit simultaneously&#x20;
    * Utilizing the bandwidth efficiently&#x20;
* Unusual features&#x20;
  * Message-based architecture rather than a streaming approach
    * Eliminates head-of-line blocking at senders and reduces tail latency&#x20;
  * Connectionless&#x20;
  * No explicit ack&#x20;
  * At-least-once semantics&#x20;
* Metric: tail message latency (99th percentile): most important metric for datacenter application&#x20;

### Motivation and Key ideas&#x20;

Motivation&#x20;

* NIC and software stack advances&#x20;
* All prior work has focused on workloads with very large messages&#x20;
* Existing DC transport design cannot achieve the lowest possible latency for tiny messages at high network load&#x20;

Design space&#x20;

* Key design principles&#x20;
  * Transmit short messages blindly&#x20;
  * Using in-network priorities&#x20;
  * Allocate priorities dynamically at receivers in conjunction with receiver-driven rate control
  * Controlled over-commitments of receiver downlinks&#x20;
* Focus on message latency (instead of packet latency), since it reflects application performance&#x20;
* Key
  * There is no time to schedule every packet
    * Short messages are transmitted blindly, without considering potential congestion&#x20;
  * Buffering is a necessary evil&#x20;
    * Latency penalty of buffering&#x20;
  * In-network priorities are a must&#x20;
    * Assign packet priorities so that short messages bypass queued packets for longer messages&#x20;
  * Making best use of limited priorities requires receiver control&#x20;
    * In order to produce the best approximation of SRPT with only a small number of priority levels&#x20;
  * Receivers must allocate priorities dynamically
    * Two mechanisms:&#x20;
      * For messages larger than RTTbytes, the receiver communicates a priority for each packet to its sender dynamically based on the exact set of inbound messages&#x20;
      * For short messages that sent blindly, the sender cannot know about other messages inbound for the receiver&#x20;
  * Receivers must overcommit their downlink in a controlled manner&#x20;
    * Intentionally overcimmit their downlinks by granting simultaneously to a small number of senders&#x20;
  * Senders need SRPT also&#x20;


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://sliu583.gitbook.io/blog/specific-work/seminar-and-talk/reading-groups/network-reading-group/homa-a-receiver-driven-low-latency-transport-protocol-using-network-priorities.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
