Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: introduce clear purpose for newcomer

This section covers the details involved in getting, installing, and running ONOS. Both single- and multi-instance cases are described. 

Table of Contents
maxLevel3

Prerequisites

ONOS and its test scripts are developed and tested on OS X (Mavericks and later) and Ubuntu (14.04 64-bit), with focus on the latter. It is therefore recommended that one of these platforms be used. In the following examples, the build machine runs OS X. 

If using a VM, the following settings are recommended:

  • 2 GB Memory, 
  • 2 processors
  • 8 GB Storage

In order to build and run ONOS the following are required:

  • Java 8 JDK (Oracle Java; OpenJDK is not as thoroughly tested)
  • Maven 3.*
  • git
  • bash (for packaging & testing)
  • Apache Karaf (3.0.2)  

To take full advantage of the ONOS test suite and various developer conveniences, it is also recommended that developers have the following tools available on their machines:

  • IDE (IntelliJ, Eclipse, etc.)
  • VirtualBox (or other VM hosting software)

Getting ONOS

The ONOS source can be checked out using git:

Code Block
languagetext
$ git clone ssh://<user>@gerrit.onlab.us:29418/onos-next ~/onos

This clones the repository to your home directory, under a directory named 'onos'.

Environment Setup

To get the most from the tools and instructions discussed in the following sections,  it is highly recommended that the ONOS_ROOT environment variable is exported in your shell profile (.bash_aliases, .profile, etc.) to refer to the top of the ONOS source tree. For example:

Code Block
$ export ONOS_ROOT=~/onos
$ source $ONOS_ROOT/tools/dev/bash_profile

If this is not done, at the very minimum, one should make sure to adjust their path as follows:

Code Block
languagetext
$ export PATH=”$PATH:~/onos/dev/bin:~/onos/tools/build:~/onos/tools/test/bin”

...

part is to deploy a distribution version in production environment, not for development purpose. For developer, please read (Developer Quick Start), and other articles in the Developer Guide.

The following sections describe how to install, initially configure, and run ONOS:

...

ONOS uses Maven for managing the build process. To build the ONOS code-base from the top-most level, and from scratch, simply type the following:

 

Code Block
languagetext
$ cd ~/onos
$ mvn clean install

This triggers a full build, complete with unit testing. This may take several minutes, depending on the compute resources of the machine used. When complete, there should be an output similar to the following:

Code Block
languagetext
[INFO] --- maven-bundle-plugin:2.5.3:install (default-install) @ onos-branding ---
[INFO] Installing org/onlab/onos/onos-branding/1.0.0-SNAPSHOT/onos-branding-1.0.0-SNAPSHOT.jar
[INFO] Writing OBR metadata
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] onos-build-conf ................................... SUCCESS [0.697s]
[INFO] onos .............................................. SUCCESS [2.549s]
[INFO] onlab-utils ....................................... SUCCESS [1.521s]
[INFO] onlab-junit ....................................... SUCCESS [4.707s]
[INFO] onlab-misc ........................................ SUCCESS [8.002s]
[INFO] onlab-netty ....................................... SUCCESS [3.119s]
[INFO] onlab-nio ......................................... SUCCESS [2.048s]
[INFO] onlab-osgi ........................................ SUCCESS [0.635s]
[INFO] onlab-rest ........................................ SUCCESS [0.637s]
[INFO] onlab-thirdparty .................................. SUCCESS [2.212s]
[INFO] onos-core ......................................... SUCCESS [0.481s]
[INFO] onos-api .......................................... SUCCESS [6.186s]
[INFO] onos-core-store ................................... SUCCESS [0.641s]
[INFO] onos-core-trivial ................................. SUCCESS [3.002s]
[INFO] onos-core-net ..................................... SUCCESS [5.778s]
[INFO] onos-core-serializers ............................. SUCCESS [2.788s]
[INFO] onos-core-dist .................................... SUCCESS [8.149s]
[INFO] onos-json ......................................... SUCCESS [0.615s]
[INFO] onos-web .......................................... SUCCESS [0.533s]
[INFO] onos-gui .......................................... SUCCESS [0.888s]
[INFO] onos-rest ......................................... SUCCESS [1.886s]
[INFO] onos-cli .......................................... SUCCESS [1.163s]
[INFO] onos-of ........................................... SUCCESS [0.457s]
[INFO] onos-of-api ....................................... SUCCESS [8.798s]
[INFO] onos-providers .................................... SUCCESS [0.431s]
[INFO] onos-of-providers ................................. SUCCESS [0.473s]
[INFO] onos-of-provider-device ........................... SUCCESS [1.940s]
[INFO] onos-of-provider-link ............................. SUCCESS [2.042s]
[INFO] onos-of-provider-host ............................. SUCCESS [1.562s]
[INFO] onos-of-provider-packet ........................... SUCCESS [1.946s]
[INFO] onos-of-provider-flow ............................. SUCCESS [0.821s]
[INFO] onos-lldp-provider ................................ SUCCESS [1.824s]
[INFO] onos-host-provider ................................ SUCCESS [1.672s]
[INFO] onos-of-ctl ....................................... SUCCESS [2.213s]
[INFO] onos-of-drivers ................................... SUCCESS [0.560s]
[INFO] onos-apps ......................................... SUCCESS [0.436s]
[INFO] onos-app-tvue ..................................... SUCCESS [0.625s]
[INFO] onos-app-fwd ...................................... SUCCESS [0.618s]
[INFO] onos-app-ifwd ..................................... SUCCESS [0.592s]
[INFO] onos-app-foo ...................................... SUCCESS [0.814s]
[INFO] onos-app-mobility ................................. SUCCESS [0.611s]
[INFO] onos-app-proxyarp ................................. SUCCESS [0.579s]
[INFO] onos-app-config ................................... SUCCESS [0.626s]
[INFO] onos-app-sdnip .................................... SUCCESS [5.847s]
[INFO] onos-app-calendar ................................. SUCCESS [0.631s]
[INFO] onos-app-optical .................................. SUCCESS [0.732s]
[INFO] onos-app-metrics .................................. SUCCESS [0.435s]
[INFO] onos-app-metrics-intent ........................... SUCCESS [0.639s]
[INFO] onos-app-metrics-topology ......................... SUCCESS [0.681s]
[INFO] onos-app-oecfg .................................... SUCCESS [1.282s]
[INFO] onos-features ..................................... SUCCESS [0.442s]
[INFO] onos-branding ..................................... SUCCESS [0.486s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1:40.113s
[INFO] Finished at: Sat Nov 08 13:49:43 PST 2014
[INFO] Final Memory: 120M/1453M
[INFO] ------------------------------------------------------------------------
$ 

Running ONOS

ONOS may be run on the build machine directly, or packaged and launched on remote machines. 

Launching locally

After running maven as described in Building ONOS, karaf can be used to start ONOS and attach to its CLI:

Code Block
languagetext
$ karaf
Welcome to Open Networking Operating System (ONOS)!
     ____  _  ______  ____   
    / __ \/ |/ / __ \/ __/    
   / /_/ /    / /_/ /\ \       
   \____/_/|_/\____/___/      

                             
Hit '<tab>' for a list of available commands
and '[cmd] --help' for help on a specific command.
Hit '<ctrl-d>' or type 'system:shutdown' or 'logout' to shutdown ONOS.

onos>
Tip

Launching karaf may bring up the default karaf prompt, without the 'ONOS' ASCII art. This is purely cosmetic, and shouldn't affect functionality; help onos should still bring up a list of available commands.

If the branding is desired, one can move the branding bundle created during the build process to karaf's lib directory:

Code Block
languagetext
$ cp ${ONOS_ROOT}/tools/package/branding/target/onos-branding-1.0.0-SNAPSHOT.jar ~/Applications/apache-karaf-3.0.2/lib/

And relaunch karaf.

Launching Remotely

 

...