Crate snowcap[][src]

Snowcap: Synthesizing NetwOrk-Wide ConfigurAtion uPdates

This is a library for comparing two network configurations and generating a sequence of small configuration updates, which can be applied without producing anomalies.

This library was created during the Master Thesis: “Synthesizing Network-Wide Configuration Updates” by Tibor Schneider, supervised by Laurent Vanbever and Rüdiker Birkener.

Problem Statement

Given

find an ordered set of configuration changes, such that the hard-constraints are satisfied throughout the entire reconfiguration process, and the soft-constraints are optimized.

Structure

This library is structured in the following way:

Features

Usage

To use this module, you need to do first prepare your network to include all routers, the initial configuration, and you need to make sure that all routes are advertised by some routers. Then, you need to prepare the final configuration. Next, express your hard policies as constraints, and choose your strategy. Finally, call the synthesize method on the strategy.

use snowcap::hard_policies::*;
use snowcap::synthesize;
use snowcap::Error;
use snowcap::netsim::Network;
use snowcap::netsim::config::Config;

fn main() -> Result<(), Error> {
    // prepare the network
    // let net = ...
    // let initial_config = ...
    // let final_config = ...

    // prepare the policies
    // let hard_policy = ...

    // synthesize the reconfiguration
    let sequence = synthesize(net, initial_config, final_config, hard_policy, None)?;

    // Do something with the result
    println!("{:#?}", sequence);

    Ok(())
}

Modules

example_networks

Networks for testing

hard_policies

Hard Policies

modifier_ordering

ModifierOrdering

netsim

NetSim

optimizers

Optimizer

permutators

Permutators

soft_policies

Soft Policies

strategies

Strategies

topology_zoo

Import functions for importing topology zoo graphml files

Structs

Stopper

Stopper, to check when to stop, or to send the stop command

Enums

Error

Main error type

Functions

optimize

Synthesize Configuration Updates while optimizing soft policies

synthesize

Synthesize Configuration Updates

synthesize_parallel

Synthesize Configuration Updates using multiple parallel threads