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 or follow the walkthrough.
For installation instructions, see INSTALL
.
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
The Ravel CLI has a number of commands to monitor and control applications and the network:
help
: show list of commandsapps
: list discovered applicationsstat
: show running configurationm
: execute Mininet commandp
: execute SQL statementtime
: print execution timeprofile
: print detailed execution timereinit
: truncate all database tables except topologywatch
: spawn new xterm watching database tablesexec
: execute a Ravel scriptorch load
: load a set of orchestrated applications (in ascending ordering of priority)orch unload
: unload one or more applications from the orchestrated setorch auto [on/off]
: auto-commit commands for orchestrationrt addflow [src] [dst]
: install a flowrt delflow [src] [dst]
,rt delflow [flow id]
: remove a flow