This repo contains the implementation of the paper FANcY: FAst In-Network GraY Failure Detection for ISPs by Edgar Costa Molero, Stefano Visicchio and Laurent Vanbever. This work will be presented at SIGCOMM '22
Avoiding packet loss is crucial for ISPs. Unfortunately, gray failures at ISP switches cause long-lasting packet drops which are undetectable by existing monitoring tools. In this paper, we describe the design and implementation of FANcY, an ISP-targeted system that detects and localize gray failures quickly and accurately. FANcY complements previous monitoring approaches, which do not work at the ISP scale. We experimentally confirm FANcY’s capability of accurately detecting gray failures in seconds, unless only tiny fractions of traffic experience losses. We also implement FANcY in an Intel Tofino switch, and demonstrate how it enables fine-grained fast rerouting.
-
Eval SIGCOMM 2022: contains a step-by-step guide to reproduce the main results from the SIGCOMM 2022 paper. You can also find a set of scripts to easily run all the simulation-based evaluations, pre-compute outputs and generate the paper plots.
-
Installation: few scripts that are used to install all the required dependencies for the
ns3
simulator and plotting. -
Simulation: git submodule to our modified
ns3
simulator. Among others, it includes all the scripts for the simulation-based evaluation. An implementation ofFANcY
, NetSeer and LossRadar inns3
. -
Experiments: python
fancy
package which is used to parse, orchestrate, and plot the simulation-based experiments. Make sure you install it withpip3
!. -
Tofino: contains the hardware-based implementation of
FANcY
, its controller and some helper scripts. Furthermore, it contains a guide to reproducing thecase study
andfigure 8
from the paper. You will find an implementation in P4_14 and P4_16.
In order to run the simulations, you have to install our fancy
python package
and the ns3
simulator with our custom code. You can easily achieve that with
very few commands:
- Create a folder called
fancy
at yourHOME
.
mkdir ~/fancy/
- Clone this repository there.
cd ~/fancy/
# get main repo
git clone https://github.com/nsg-ethz/FANcY.git fancy-code
# get submodules (simulator)
cd fancy-code
git submodule update --init
- Install our custom
ns3
. SelectYes
when prompted.
cd ~/fancy/fancy-code/installation
./install-ns3.sh
- Install the
fancy
python package and python dependencies.
cd ~/fancy/fancy-code/experiments/
pip3 install -e .
Alternatively, you can download the provided VM with the software installed and input files downloaded. You can find more info about how to add the VM here.
Feel free to drop us an email at cedgar at ethz dot ch
if you have any questions.