Why
A GPU that waits is the most expensive idle resource in computing, and in a synchronized training or inference step every GPU waits for the slowest message. When compute cycles were seconds long, a millisecond of network jitter was noise. Now that cycles are milliseconds, that same millisecond is the cycle, and one delayed metadata message stalls the whole cluster. The protocols carrying that message, TCP and RDMA over Converged Ethernet, optimise the wrong thing: they move big streams efficiently and treat a short message as just more bytes in the queue. Ousterhout's claim is that this is a design mismatch, not a tuning problem, and that a transport built around messages and receiver control cuts short-message tail latency by an order of magnitude on the same hardware.
How it works
The workload changed underneath the protocol
Training traffic was dominated by gradient exchange (02:25): gigabytes per step, connection setup cost amortised over huge transfers, bandwidth the metric that mattered, and TCP or RoCE good enough (02:39). Inference and agentic workloads flip this (03:16). The traffic is small and frequent: a lookup in a distributed KV cache, a barrier synchronization at the end of a compute step, scheduler and metadata chatter (03:37). None of it needs bandwidth. All of it needs to arrive on time, because the step cannot proceed until the last message lands (04:42). So the metric moves from mean latency to p99 tail latency, and the tail sets the effective throughput of the cluster (04:10).
Where TCP and RDMA lose the tail
The talk names three mechanisms, all structural:
- Incast and queue build-up. Many senders fire at one receiver at once, packets pile up in the egress buffer of the top-of-rack switch (06:29), a short message lands behind that pile and either waits or is dropped and retransmitted (06:43). A retransmission timeout is milliseconds; the whole compute step was milliseconds.
- Sender-driven congestion control. TCP and DCQCN-style RDMA learn about congestion after the fact, through ECN marks or loss, and then slow down. The feedback loop has a control lag, so it never quite converges and the rate oscillates (08:16). The sender is the wrong party to decide: it cannot see the receiver's downlink, which is where the congestion actually is.
- Byte streams and head-of-line blocking. TCP and RDMA carry byte streams with no notion of where one message ends and the next begins (10:11). A transport that cannot see message boundaries cannot prioritise a short message, so it sits behind a long transfer in the same stream.
Homa's three design decisions
Homa was designed from scratch for datacenter traffic (11:16), originally at Stanford (SIGCOMM 2018), and the talk describes three choices:
- Messages and RPCs, not streams (12:30). Each request and each response is an independent message, and the first packet carries the total length. That lets the network run SRPT, shortest remaining processing time first: a short message can overtake a long one because everyone knows how much of each is left (13:02).
- Receiver-driven congestion control (13:37). The receiver owns its downlink, the one place congestion happens. A sender may transmit only the first part of a message immediately, the unscheduled packets; the rest, the scheduled packets, go out only as the receiver issues grant packets (14:10). The receiver hands out grants to the messages with the least remaining, so switch buffers never fill in the first place (14:36).
- Switch priority queues (15:01). Modern switches have several egress queues per port. Homa puts long-message traffic in low-priority queues and short messages in high-priority ones, so a short message is forwarded ahead of bulk traffic it would otherwise queue behind.
| Design axis | TCP / RDMA (RoCE) | Homa |
|---|---|---|
| Unit | byte stream | message / RPC with known length |
| Who controls rate | sender, after ECN or loss | receiver, by grant packets |
| Short vs long | first come, first served | SRPT, short overtakes long |
| Switch queues | one queue per port in practice | several priority queues used explicitly |
| Connections | long-lived, per pair | connectionless RPCs |
Numbers and status
On a mixed workload of 50-byte to 1 MB messages, the p99 latency of short messages fell from over 1 ms on TCP to under 100 µs on Homa, roughly 13 times (16:50); large messages also ran about twice as fast, which the talk credits to Homa's run-to-completion processing model (17:07). Homa exists as an open-source Linux kernel module on GitHub, and Ousterhout is working toward upstreaming it (12:09). His closing advice: if short-message latency is your cluster's bottleneck, try it (17:52).
Where it lands in Jayverse
- Verex: the matching path is a tail-latency problem, not a throughput one. Order placement, cancel and fill notifications are small messages; the user-visible failure is the slowest one, not the average. Measure p99 on the CLOB round trip and on the fill notification, and put it next to the mean in the metrics page.
- Rabbit relayer and devnet RPC: let the receiver pace the sender. The bridge relayer and the Anvil RPC both suffer incast when a burst of requests arrives; a receiver-side queue that serves short requests first (health checks, nonce reads) before long ones (log scans, traces) is Homa's SRPT idea at application level, and it needs no new protocol.
- Auditor: "which percentile" is part of the rule. A latency check that names only a mean is unverifiable in the sense that matters here; every latency rule the Auditor records should state the percentile and the window.
- Theory: SRPT and receiver-driven flow control are scheduling theory. SRPT is optimal for mean response time in a single queue; the item is a live example for the queueing and scheduling entries in Theory, and for the game-theory note on why a sender cannot be trusted to slow itself down.
Verified and unverified
Verified on 2026-09-19: Homa is a real receiver-driven, message-based datacenter transport from Ousterhout's group at Stanford (paper Homa: A Receiver-Driven Low-Latency Transport Protocol Using Network Priorities, SIGCOMM 2018), and an open-source Linux kernel module exists on GitHub under Stanford's PlatformLab; the design points above (SRPT, unscheduled and scheduled packets, grants, priority queues) match the published design. Taken from the talk summary and not independently checked: the 13-times p99 figure and the two-times large-message figure for this particular benchmark, the exact timestamps, and the current state of the upstreaming effort. The talk's date is not given in the summary.
Sources: YouTube — John Ousterhout on Homa and AI cluster networking · Montazeri, Li, Alizadeh, Ousterhout, Homa, SIGCOMM 2018 · PlatformLab/HomaModule on GitHub · related items: Tech #62 (agentic engineering writes the boundaries), Theory scheduling notes.
Key expressions
| Expression | 뜻 · 쓰이는 자리 |
|---|---|
| tail latency | 꼬리 지연(가장 느린 요청들의 지연) · 평균과 대비되는 성능 지표. "the slowest one percent matters" |
| p99 | 99번째 백분위수(요청 100개 중 느린 1개의 값) · 지연 SLO의 표준 단위. "measure p99 on the CLOB round trip" |
| throughput | 처리량(단위 시간당 처리한 양) · 대역폭·지연과 함께 세 가지 기본 지표. "bandwidth mattered" |
| clean-slate | 백지에서 새로 설계한 · 기존 프로토콜 호환을 버린 설계를 부르는 말. "a clean-slate protocol for the second" |
| RDMA / RoCE | Remote Direct Memory Access / RDMA over Converged Ethernet(이더넷 위의 RDMA) · 데이터센터 고속 전송의 표준 이름. "TCP or RoCE good enough" |
| incast | 인캐스트(다수 송신자가 한 수신자에게 동시에 보내는 패턴) · 데이터센터 혼잡의 대표 원인. "Incast and queue build-up" |
| top-of-rack (ToR) switch | 랙 상단 스위치(서버 랙마다 하나씩 있는 첫 홉 스위치) · 데이터센터 토폴로지 용어. "the egress buffer of the top-of-rack switch" |
| egress | 출구(나가는 방향) · ingress(입구)와 짝. "egress queues per port" |
| congestion control | 혼잡 제어(네트워크가 막힐 때 속도를 조절하는 규칙) · TCP의 핵심 메커니즘. "Sender-driven congestion control" |
| ECN | Explicit Congestion Notification(명시적 혼잡 알림, 패킷에 표시를 남기는 방식) · 손실 없이 혼잡을 알리는 신호. "through ECN marks or loss" |
| control lag | 제어 시차(신호와 반응 사이의 지연) · 제어 이론 용어, 진동의 원인. "The feedback loop has a control lag" |
| head-of-line (HOL) blocking | 선두 차단(앞의 것이 막혀 뒤가 못 나가는 현상) · 큐·스트림 설계의 고전적 병목. "Byte streams and head-of-line blocking" |
| message boundary | 메시지 경계(어디서 한 메시지가 끝나는지) · 스트림 프로토콜의 결함을 설명할 때. "no notion of where one message ends" |
| RPC | Remote Procedure Call(원격 함수 호출, 요청-응답 쌍) · 분산 시스템의 기본 통신 단위. "Messages and RPCs, not streams" |
| SRPT | Shortest Remaining Processing Time first(잔여 처리 시간이 짧은 것 먼저) · 스케줄링 이론의 최적 정책. "a short message can overtake a long one" |
| grant (packet) | 허가(수신자가 보내도 된다고 알리는 패킷) · Homa 고유 용어, 수신자 주도 제어의 도구. "the receiver issues grant packets" |
| unscheduled / scheduled packets | 허가 없이 보내는 앞부분 / 허가를 받아 보내는 나머지 · Homa의 두 패킷 종류. "the first part of a message immediately, the unscheduled packets" |
| barrier synchronization | 배리어 동기화(모든 노드가 한 지점에 모일 때까지 기다리는 것) · 병렬 계산의 기본 동기화. "a barrier synchronization at the end of a compute step" |
| KV cache | key-value 캐시(트랜스포머 추론에서 이전 토큰의 키·값을 저장) · LLM 추론 인프라 용어. "a lookup in a distributed KV cache" |
| run-to-completion | 완료까지 실행(작업을 중간에 끊지 않고 끝까지 처리하는 모델) · 커널·네트워크 스택 설계 용어. "Homa's run-to-completion processing model" |
| upstream (v.) | 업스트림에 병합하다(패치를 원 프로젝트, 여기서는 리눅스 커널에 넣다) · 오픈소스 관용어. "working toward upstreaming it" |
| an order of magnitude | 한 자릿수(10배) 규모 · 크기 비교의 관용구. "by an order of magnitude" |