An implementation of the Homa transport protocol as a C++ userspace library.
Homa is a new transport protocol for datacenter networks developed at the Stanford PlatformLab. Homa provides exceptionally low latency, especially for workloads with a high volume of very short messages, and it also supports large messages and high network utilization. A complete description of Homa can be found in this paper. A version of this was published in ACM SIGCOMM 2018.
This project aims to provide a implementation of the Homa transport protocol that can be included by applications as a C++ library and can run completely in userspace, bypassing the kernel for the best possible performance.
The implementation built in two layers:
- a "Packet Driver" which provides simple unreliable packet send/receive, and
- the Transport which implements the Homa protocol using packet send/receive.
This project provides a DPDK based implementation of a Driver which allows high performance packet processing for linux-based systems with a range of NICs. The Transport is Driver agnostic so other environments can be supported by building additional drivers.
This implementation is under active development but is currently incomplete.
Required:
- CMake (>= 3.11)
- DPDK (17.11)
Optional:
- Doxygen
- pthreads
git clone https://github.com/PlatformLab/Homa.git
From the Homa
project directory:
cmake -E make_directory build
cmake -E chdir build
cmake --build build
sudo cmake --build build --target install