Snowcap 🏔️

Synthesizing Network-Wide Configuration Updates


About

Snowcap is a prototype implementation of the SIGCOMM'21 paper Snowcap: Synthesizing Network-Wide Configuration Updates by Tibor Schneider, Rüdiger Birkner, and Laurent Vanbever from the Networked Systems Group at ETH Zürich.

Abstract

Large-scale reconfiguration campaigns tend to be nerve-racking for network operators as they can lead to significant network downtimes, decreased performance, and policy violations. Unfortunately, existing reconfiguration frameworks often fall short in practice as they either only support a small set of reconfiguration scenarios or simply do not scale.

We address these problems with Snowcap, the first network reconfiguration framework which can synthesize configuration updates that comply with arbitrary hard and soft specifications, and involve arbitrary routing protocols. Our key contribution is an efficient search procedure which leverages counter-examples to efficiently navigate the space of configuration updates. Given a reconfiguration ordering which violates the desired specifications, our algorithm automatically identifies the problematic commands so that it can avoid this particular order in the next iteration.

We fully implemented Snowcap and extensively evaluated its scalability and effectiveness on real-world topologies and typical, large-scale reconfiguration scenarios. Even for large topologies, Snowcap finds a valid reconfiguration ordering with minimal side-effects (i.e., traffic shifts) within a few seconds at most.

Setup and Usage

Snowcap is written in Rust, and can be used as an executable, or as a library. To install the rust toolchain, follow the instructions on installing rustup. Then, clone and build the project:

git clone git@github.com:nsg-ethz/snowcap.git
cd snowcap
cargo build --release

Then, you can run snowcap with:

cargo run --release -- --help