To try Ravel, download a virtual machine with all software pre-installed or download the code from GitHub and install from source.


Option 1: Pre-Packaged VM

  1. Download one of the VM images with Ravel pre-installed:
  2. Install virtualization software, such as VirtualBox or VMWare
  3. Extract the downloaded zip file containing the VM disk
  4. Create a new VM, using the extracted vmdk file (ravelvm32.vmdk or ravelvm32.vmdk) as the virtual disk

To set up a new virtual machine in VirtualBox:

  1. From the menu bar, select Machine –> New
  2. Create a VM with a unique name, such as ravelvm. Select type Linux and Ubuntu, with the architecture of the image (32-bit or 64-bit) you chose
  3. Set the memory to at least 512MB and click Next
  4. Select the bullet Use an existing virtual hard drive file
  5. Click the folder icon next to the drop down menu and navigate to the folder containing ravelvm32.vmdk (or ravelvm64.vmdk)
  6. Select ravelvm32.vmdk (or ravelvm64.vmdk) and press Open
  7. Click Next to complete the setup

Log in to the VM with the username ravel and password ravel. The sudo password is ravel. To keep the VM size small, the Ubuntu installation does not have a GUI installed. To install Unity, run sudo apt-get install ubuntu-desktop.


Option 2: Install from Source

  1. Check out a copy of Ravel’s source code:

    git clone http://github.com/ravel-net/ravel

  2. Run the Ravel install script:

    cd ravel
    git checkout v0.1
    util/install.sh [options]

  3. Update ravel.cfg with the absolute path to Pox. If installing Pox with install.sh, this will be Ravel’s parent directory.

Options for install.sh are:

  • -a: install all required packages, including Mininet, Pox, and PostgreSQL
  • -m: install only Mininet and Pox (i.e., Mininet install with options -kmnvp)
  • -p: install only PostgreSQL
  • -r: install Python libraries required by Ravel, configure PostgreSQL account and extensions

Configure PostgreSQL

By default, PostgreSQL uses peer authentication, in which the client’s username authenticates a connection to the database. Ravel requires either trust (any user can connect) or md5 (password-based) authentication. If using md5, you will need to start Ravel with the --password flag to force a prompt for the password (e.g., sudo ./ravel.py --topo single,3 --password).

To set the authentication method, edit /etc/postgresql/9.3/main/pg_hba.conf and set postgres and all users to trust or md5. Alternatively, when running install.sh with -a or -r, you will be prompted to make this change automatically.

install.sh will create a PostgreSQL user ravel and database ravel. To connect directly to this PostgreSQL database, use:

psql -Uravel
\c ravel

Optional: Configure ovs-ofctl

Ravel supports multiple protocols for database triggers to interact with the OpenFlow switches. This allows changes in the database to be propagated to the network. Supported protocols, configured in ravel.cfg, are: message queues (the default protocol), RPC, and ovs-ofctl. If using the ovs-ofctl command, you must set passwordless sudo so database triggers can run commands using sudo:

  1. Add the postgres user to sudoers

    sudo adduser postgres sudo

  2. Allow passwordless sudo by editing /etc/sudoers (e.g., using sudo visudo) and set the user specification to:

    postgres ALL=(ALL) NOPASSWD:ALL


VM Archive