Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ravel-net/ravel

A Database-Defined Network Controller
https://github.com/ravel-net/ravel

Last synced: about 1 month ago
JSON representation

A Database-Defined Network Controller

Awesome Lists containing this project

README

        

# Ravel

Ravel is a software-defined networking (SDN) controller that uses a standard SQL database to represent the network. _Why a database?_ SDN fundamentally revolves around data representation--representation of the network topology and forwarding, as well as the higher-level abstractions useful to applications.

In Ravel, the entire network control infrastructure is implemented within a SQL database. Abstractions of the network take the form of _SQL views_ expressed by SQL queries that can be instantiated and extended on the fly. To allow multiple simultaneous abstractions to collectively drive control, Ravel automatically _orchestrates_ the abstractions to merge multiple views into a coherent forwarding behavior.

For more information, see [http://ravel-net.org](http://ravel-net.org) or follow the [walkthrough](http://ravel-net.org/walkthrough).

### Installation

For installation instructions, see `INSTALL`.

### Ravel Command-Line Arguments

Ravel command-line arguments:

* `--help`, `-h`: show the help message and exit
* `--clean`, `-c`: cleanup Ravel and Mininet
* `--onlydb`, `-o`: start Ravel without Mininet
* `--reconnect`, `-r`: reconnect to an existing database, skipping reinit
* `--noctl`, `-n`: start without controller (Mininet will still attempt to connect to a remote controller)
* `--db`, `-d`: PostgreSQL database name
* `--user`, -`u`: PostgreSQL username
* `--password`, `-p`: force prompt for PostgreSQL password
* `--topo`, `-t`: specify a Mininet topology argument
* `--custom`, `-c`: specify custom classes or params for Mininet
* `--script`, `-s`: execute a Ravel script immediately after startup
* `--verbosity`, `-v`: set logging output verbosity (debug|info|warning|critical|error)

For example, to run Ravel with Mininet in the background, on a topology with a single switch and three hosts:

sudo ./ravel.py --topo=single,3

To run only the database component of Ravel (i.e., no Mininet) on the same topology, using database `mydb` and username `myuser`:

sudo ./ravel.py --topo=single,3 --onlydb --db=mydb --user=myuser

### Ravel CLI Commands

The Ravel CLI has a number of commands to monitor and control applications and the network:

* `help`: show list of commands
* `apps`: list discovered applications
* `stat`: show running configuration
* `m`: execute Mininet command
* `p`: execute SQL statement
* `time`: print execution time
* `profile`: print detailed execution time
* `reinit`: truncate all database tables except topology
* `watch`: spawn new xterm watching database tables
* `exec`: execute a Ravel script
* `orch load`: load a set of orchestrated applications (in ascending ordering of priority)
* `orch unload`: unload one or more applications from the orchestrated set
* `orch auto [on/off]`: auto-commit commands for orchestration
* `rt addflow [src] [dst]`: install a flow
* `rt delflow [src] [dst]`, `rt delflow [flow id]`: remove a flow