Giter Club home page Giter Club logo

chameleon's Introduction

DOI

Chameleon: Taming the transient while reconfiguring BGP -- Sigcomm 2023

This is the implementation of the paper “Taming the transient while reconfiguring BGP”, published at SIGCOMM ’23. Please cite the following article:

@INPROCEEDINGS{schneider2023taming,
    year = {2023},
    booktitle = {Proceedings of the 2023 ACM Special Interest Group on Data Communication (SIGCOMM)},
    author = {Schneider, Tibor and Schmid, Roland and Vissicchio, Stefano and Vanbever, Laurent},
    title = {Taming the transient while reconfiguring BGP},
    Note = {37th ACM SiGCOMM Conference (SIGCOMM 2023); Conference Location: New York, NY, USA; Conference Date: September 10-14, 2023}
    doi = {10.1145/3603269.3604855}
    url = {https://doi.org/10.1145/3603269.3604855}
}

Abstract

BGP reconfigurations are a daily occurrence for most network operators, especially in large networks. Despite many recent efforts, performing safe and robust BGP reconfiguration changes is still an open problem. Existing techniques are indeed either (i) unsafe, because they ignore the impact of transient states which can easily lead to invariant violations; or (ii) impractical as they duplicate the entire routing and forwarding states and require hard- and software support.

This paper introduces Chameleon, the first BGP reconfiguration system capable of maintaining correctness throughout the entire reconfiguration process. Chameleon is akin to concurrency coordination in distributed systems. Specifically, we model the reconfiguration process with happens-before relations; show how to reason about (transient) violations; and how to avoid them by precisely controlling BGP route propagation and convergence during the reconfiguration.

We fully implement Chameleon and evaluate it in both testbeds and simulations, on real-world topologies and large-scale reconfiguration scenarios. In most experiments, our system computes reconfiguration plans within a minute, and performs them from start to finish in a few minutes, with minimal overhead and no impact on network resiliency.

Usage

You can use the library either using your native rust toolchain, or via Docker. For the artifact evaluation, please consider this document

Docker

The easiest way is to use the provided Docker file. Build the container using (this might take around 20 minutes):

docker build -t chameleon .

This command will setup the environment, all dependencies, and compile the executable. (See the Dockerfile for more info.)

You can generate the documentation using:

docker run -it -v $(pwd)/target:/chameleon/target chameleon cargo doc --all-features
firefox target/doc/chameleon/index.html

Then, you can run the program as follows:

docker run -it chameleon main --help

You can increase the log level (from err to info) by setting the RUST_LOG environment variable:

docker run -it -e RUST_LOG=info chameleon main --help

When running experiments, make sure to mount the folder results as a volume into the container:

docker run -it -v $(pwd)/results:/chameleon/results chameleon eval-overhead --help

Native Toolchain

Alternatively, you can setup your own toolchain. Make sure to install the rust toolchain (using rustup). Make sure you use the nightly toolchain:

rustup toolchain install nightly
rustup toolchain default nightly

Additionally, install coinor cbc (the library) under Ubuntu:

sudo apt-get install coinor-cbc coinor-libcbc-dev

To run the data analysis, install all python requirements listed in analysis/requirements.txt:

cd analysis
python -m venv ./.env
source ./.env/bin/activate
pip install --requirement requirements.txt

Web Application

This repository also contains the code for the web application to run the simulator. The simulator is built as a client-side WASM application, and thus does not require any special server to run it. The web application is hosted at bgpsim.github.io. If the website is down, you can build the web application from source:

To run the application locally (at http://127.0.0.1:8080/), do:

docker run -it -w /chameleon/bgpsim-web --network host chameleon trunk serve --all-features --release

To build the application to static HTML, CSS, JavaScript and WASM files, run the following command:

docker run -it -w /chameleon/bgpsim-web -v $(pwd)/bgpsim-web/dist:/chameleon/bgpsim-web/dist chameleon trunk build --all-features --release

This command will generate the folder bgpsim-web/dist with all needed files. You can simply serve those files from any simple HTTP server (static web server).

chameleon's People

Contributors

tiborschneider avatar

Stargazers

Renato Westphal avatar hexclover avatar  avatar  avatar Renaud R. avatar Papa John's avatar Radostin Stoyanov avatar Xin Zhe Khooi avatar Edgar Costa avatar

Watchers

Roland Schmid avatar Laurent Vanbever avatar Thomas Holterbach avatar Alexander Dietmüller avatar  avatar  avatar Edgar Costa avatar  avatar

chameleon's Issues

Encountered some problems with experimental reproduction

I am very interested in the Chameleon architecture, but I encountered some problems during the replication experiment:

  1. How was Figure 8 drawn? After following the instructions, the graph I obtained is a straight line: Docker run - it - v $(pwd)/results:/chameleon/results chameleon python3 analysis/plot_ Specification_ Complexy.py

Figure 8

  1. How were Figures 10, 11, and 12 obtained? Executing the relevant commands still did not yield the expected results.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.