Skip to content

Installation

This page describes the process to get YATES running. There are two options:


Pre-built Virtual Machine

To get started with YATES, download the YATES VM image (3.9 GB). Then proceed to import the VM on your machine:
  1. Start VirtualBox on your host machine.
  2. Import YATES VM by selecting "File" -> "Import Appliance", and selecting the downloaded VM image.
  3. Allocate the VM as much RAM as possible (at least 2GB). A single processor should suffice (recommended: 2).
  4. You may need to turn on virtualization extensions in your BIOS to enable 64-bit virtualization.
  5. When the VM starts up, the yates user should be automatically logged in. (username: yates, password: yates).
  6. Open a terminal and verify that YATES is installed:
    yates -h
    
  7. To get the latest version of YATES, perform the following:
    cd $HOME/yates/ && git pull && make && make install
    

Note: The VM doesn't include Gurobi which is required to run TE algorithms that rely on LP optimization. You will need to install Gurobi manually if you plan to use such TE systems. See instructions.

You can skip the rest of the instructions on this page and follow the tutorial to use YATES.


Build from source

Quickstart

Here's a list of commands to get you quickly started with a YATES installation. You will need a recent version of Ubuntu (≥16.04). For more details, read the following sections.

export OPAMYES=1
export OPAMVERBOSE=1
sudo apt update -qq
sudo apt install -qq git ocaml ocaml-native-compilers camlp4-extra opam m4
opam init
opam update
opam switch 4.06.0
eval `opam config env`
opam install dune
git clone https://github.com/cornell-netlab/yates.git
cd yates
opam pin add --yes --no-action yates .
opam install --yes --deps-only yates
make && make install

If there's an error with the above set of commands, please read the following step-by-step guide. Else, skip to verification.

Note: Gurobi is required to run TE algorithms that rely on LP optimization. You will need to install Gurobi manually if you plan to use such TE systems. See instructions.


Requirements

YATES requires the following to be installed on the system.

sudo apt update -qq
sudo apt install -qq ocaml ocaml-native-compilers camlp4-extra opam m4

and switch to the 4.06.0 compiler as:

opam init --auto-setup --compiler=4.06.0
eval `opam config env`

If you had a version of OCaml already installed, then make sure you are using the correct compiler version for YATES.

ocaml --version

If not, update the compiler version:

opam update
opam switch 4.06.0
eval `opam config env`
  • YATES uses the Dune build system. Install it using Opam:
opam install dune
  • [Optional but recommended] YATES uses the Gurobi Optimizer to solve linear programs (LP). So, if you are planning to use a TE system that needs to solve an LP, install Gurobi. Gurobi offers a free academic license. Follow the Software Installation Guide for instructions on installing Gurobi and setting up a license. Finally, make sure that gurobi_cl is in $PATH and you have a valid license.
gurobi_cl --license

Download

Get the latest source code for YATES from GitHub:

git clone https://github.com/cornell-netlab/yates.git

Setup and build

  • Go to newly created yates directory and run the following command to generate the list of dependencies for YATES:
cd yates
jbuilder external-lib-deps --missing @install

Install the dependencies these using opam. For instance, to install Frenetic, run:

opam install frenetic
  • You can also install the dependencies in a more automated way using opam as:
cd yates
opam pin add --yes --no-action yates .
opam install --yes --deps-only yates
  • Once the dependencies have been installed, build and install YATES as:
make && make install

This will generate and install two binaries:

  1. yates: the YATES simulator and
  2. yates.ctrl: the YATES SDN controller.

Verify

Finally, verify that YATES was successfully installed by running:

yates -h

and

yates.ctrl -h