HCSFQ is to the best of our knowledge, the first scalable practical solution to implement hierarchical fair queueing on commodity hardware at line rate with no per-flow state and no hierarchical queue management.
The details of the design are available in our NSDI'21 paper "Twenty Years After: Hierarchical Core-Stateless Fair Queueing". [Paper]
This repo contains our code for the hardware prototype and the large-scale simulations. Below we show how to configure the environment, how to run the system, and how to reproduce the results.
- simulation_code/: contains the Java-based implementation built on top of NetBench. Check this
- testbed_code/
- client_dpdk/: dpdk code to run on clients (for UDP experiments).
- hcsfq/
- controller_init/: control-plane module for HCSFQ.
- p4src/: data-plane module (p4 code) for HCSFQ.
- controller_init/: control-plane module for HCSFQ.
- simple_switch/
- controller_init/: control-plane module for simple switch.
- p4src/: data-plane module (p4 code) for simple switch.
- controller_init/: control-plane module for simple switch.
- console.py: A script to help config and run different set of evaluations.
- client_dpdk/: dpdk code to run on clients (for UDP experiments).
- README.md: This file.
- Hardware
- A Barefoot Tofino switch.
- Servers with a DPDK-compatible NIC (we used an Intel XL710 for 40GbE QSFP+) and multi-core CPU.
- A Barefoot Tofino switch.
- Software
The current version of HCSFQ is tested on:
- Tofino SDK (version after 8.2.2) on the switch.
- DPDK (16.11.1) on the servers.
You can either refer to the official guige or use the tools.sh script in dpdk_code/.cd dpdk_code ./tools.sh install_dpdk
- Python2.7, Paramiko at your endhost.
pip install paramiko
- Tofino SDK (version after 8.2.2) on the switch.
Please refer to testbed_code for testbed experiements and simulation_code for simulations.
You can email us at zhuolong at cs dot jhu dot edu
if you have any questions.