Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ravel-net/ravel
A Database-Defined Network Controller
https://github.com/ravel-net/ravel
Last synced: 3 months ago
JSON representation
A Database-Defined Network Controller
- Host: GitHub
- URL: https://github.com/ravel-net/ravel
- Owner: ravel-net
- License: apache-2.0
- Created: 2016-02-29T22:09:25.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2018-06-20T13:31:52.000Z (over 6 years ago)
- Last Synced: 2024-06-19T03:02:34.520Z (5 months ago)
- Language: Python
- Homepage: http://ravel-net.org/
- Size: 14.8 MB
- Stars: 9
- Watchers: 4
- Forks: 8
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-sdn - Ravel - A software-defined networking (SDN) controller that uses a standard SQL database to represent the network. (Software Projects / Controller)
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