• Stars
    star
    191
  • Rank 202,705 (Top 4 %)
  • Language
    C++
  • License
    ISC License
  • Created over 6 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Low-Latency Data Center Network Transport

Homa

An implementation of the Homa transport protocol as a C++ userspace library.

(Note: this repo is no longer under active development and the implementation is still at a relatively early stage (see below); for a more production-ready version of Homa, check out the Homa Linux kernel module: PlatformLab/HomaModule)

What is the Homa transport protocol?

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.

What is this implementation?

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:

  1. a "Packet Driver" which provides simple unreliable packet send/receive, and
  2. 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.

What is the current state of this implementation?

This implementation should be close to feature complete or at least runnable. The interface, however, is still in flux and thus not stable to develop against. Additionally, more testing needs to be done to ensure the implementation works as expected.

Quick Start

Dependencies

Required:

  • CMake (>= 3.11)
  • DPDK (18.11)

Optional:

  • Doxygen
  • pthreads

Download

git clone https://github.com/PlatformLab/Homa.git

Build

From the Homa project directory:

cmake -E make_directory build
cmake -E chdir build cmake ..
cmake --build build

Install (default install prefix)

sudo cmake --build build --target install

More Repositories

1

NanoLog

Nanolog is an extremely performant nanosecond scale logging system for C++ that exposes a simple printf-like API.
C++
2,987
star
2

RAMCloud

**No Longer Maintained** Official RAMCloud repo
C++
487
star
3

Arachne

Core aware thread management system
C++
228
star
4

HomaModule

A Linux kernel module that implements the Homa transport protocol.
C
175
star
5

PerfUtils

A collection of eclectic tools for measuring performance using the cycle counter and pinning threads.
C++
36
star
6

HomaSimulation

C++
34
star
7

grpc_homa

Allows Homa to be used as a transport with gRPC.
C++
25
star
8

ldbc-snb-impls

A collection of workload implementations for the LDBC SNB benchmark driver
Java
20
star
9

TorcDB

TorcDB: A Low-Latency Graph Database on RAMCloud
Java
17
star
10

mappy

Demo re-implementation of the Hadoop MapReduce scheduler in Python
Java
13
star
11

CoreArbiter

C++
11
star
12

memcached-A

The repo for both original memcached and memcached-A
C
8
star
13

CacheTools

Tools for measuring the speed of various CPU Caches
C++
8
star
14

Ramdis

A RAMCloud-based implementation of Redis
C
6
star
15

Log-Analyzer

Collection of scripts to statically analyze log statements in open-source software.
Python
5
star
16

arachne-all

Arachne thread management together with all dependencies and benchmarks.
Shell
5
star
17

memtier_skewsyn

Memcached skew and colocation workload benchmarking tool (modified from https://github.com/RedisLabs/memtier_benchmark).
C++
4
star
18

ramcloud-ycsb

Runs YCSB benchmarks using RAMCloud for storage
HTML
3
star
19

Roo

Multi-Hop Communication Framework
C++
3
star
20

homa-paper-artifact

Materials for the artifact evaluation of the SIGCOMM'18 Homa paper
R
3
star
21

koho

A robust multipath tunnel
C++
3
star
22

MPSCQueueBenchmarks

A framework for benchmarking multiple-consumer-single-producer queues
C++
2
star
23

consistentRedis

C
2
star
24

gtest

Mirror of gtest for use with RAMCloud
C++
2
star
25

ArachnePerfTests

Microbenchmarks for Arachne threading library.
C++
2
star
26

PlatformLab-Identity

Platform Lab logos, symbols, and design guidelines
2
star
27

x264

Mirror of the x264 repository by VLC.
C
1
star