Open Network Operating System

Fresh Take

Other Controllers

Ryu [12] is a Python-based SDN controller that is very well suited for application development in proof-of-concept scenarios because of its decent documentation and a manageable API. However, the applications still depend on a special southbridge protocol that drives the network, whereas ONOS requires no such preference.

Floodlight [13] is another example of a well-known SDN controller. Its main disadvantage is that it does not activate applications dynamically at run time. Thanks to the Karaf container, ONOS controls this feature, which is designed to load or unload Java bundles as required. The ONOS project uses some of Floodlight's libraries to send, for example, OpenFlow messages. The imports look like this in ONOS code:

import org.projectfloodlight.*

Finally, ODL [4] is the SDN project most similar to ONOS. In fact, both are written in Java, use Karaf as a container, and share some other features: independence from protocols, scalability, a command line, a graphical user interface, a REST API, along with a few more capabilities. One of the major differences, however, is the architecture.

ODL is based on a generalized model-driven service abstraction layer (MD-SAL) [14], on which the developers plan and later implement their models in specific APIs using the YANG [15] data-modeling language. ONOS, on the other hand, comes with a pre-made subsystem architecture that is sufficiently generalized for all possible application types but can be extended as required. Some developers therefore find it easier to develop new applications for ONOS than for ODL, because they have to first develop the APIs for ODL, unlike ONOS, which already has these integrated.

Another difference is in coordinating projects: ODL is fed a diet of multiple projects with different project managers and dependencies. Integrators put these together before a release. ONOS, however, is one major project, directed by a group that takes care of integration.

Last but not least, some SDN experts believe that ODL is more suitable for the cloud and for universal systems (partly because it covers older protocols), whereas ONOS proves more useful for service providers and pure SDN deployments.

Getting Started

To get a first impression of ONOS, you can install the software from the sources. It requires Java 8, Apache Karaf, and Apache Maven [16] to translate the Java bundles. ONOS provides a download page [17] as a package or archive (.tar.gz, .zip, .deb, or .rpm), or as a VM tutorial, found in the Docker Hub. Mininet [18] is the simplest approach for emulating the SDN network.

To start an installed ONOS instance, simply enter ok clean. The ok command stands for "ONOS Karaf," which starts a compiled Karaf container in which ONOS runs. The clean option is typical of Karaf and enables you to start a new session without previous bundles and actions being loaded first.

You can set up a tree network with OpenFlow 1.3 switches using Mininet, as follows:

sudo mn --controller remote,ip=<IP address of ONOS> --topo tree,3,2 --switch ovsk, protocols=OpenFlow13 --mac

You have to match the <IP address of ONOS> with the instance on which ONOS is running. Thanks to the --mac parameter, MAC addresses can be set on the host to small, unique, and easy-to-read IDs after the last bytes of the IP address.

To check which applications are running, the apps command allows you to visualize them from the command line (Figure 3). The devices command shows the devices that ONOS recognizes by numbering the active switches with the aid of their IDs. Alternatively, they can be displayed in the GUI (Figure 4).

Figure 3: The apps -s -a command shows an abbreviated ( -s ) list of active ( -a ) ONOS applications.
Figure 4: The main display of the ONOS GUI shows the topology and general configuration of the platform in the browser.

The command line recognizes other ONOS commands, which you can list with:

help | grep ONOS

Karaf commands, such as log: display to view log data, are also available. For example, if the reactive forwarding application is active (org.onosproject.fwd), as is usually the case by default, a pingall in Mininet shows all hosts in the GUI, as neatly illustrated in Figure 4.

To (de)activate applications in the case of the reactive forwarding app, use either of:

app activate org.onosproject.fwd
app deactivate org.onosproject.fwd

You can see it in the GUI by typing

http://<IP address of ONOS>:8181/onos/ui/login.html

in the browser and entering karaf as the username and password.

You can also install intents from the command line. The add-host-intent command seeks a path between two hosts. For example, the

add-host-intent 00:00:00:00:00:01/-1 00:00:00:00:00:03/-1

command specifically connects the two instances with the MAC addresses 00:00:00:00:00:01 and 00:00:00:00:00:03. ONOS automatically seeks out the shortest connection between them. However, this does assume that the ONOS host subsystem has previously recognized and registered both hosts. If this is not the case, ONOS saves the intent until the hosts appear. Once installed, intents can be seen (Figure 5).

Figure 5: The dotted line symbolizes an intent installed between hosts (00:00:00:00:00:01) and (00:00:00:00:00:03). ONOS creates the connection on its own.

To close an ONOS instance, type a simple logout or system:shutdown at the command line.

Rich with Potential

ONOS is one of the youngest SDN projects, although the platform could have a very promising future ahead. As one of the two essential free SDN controllers, ONOS predominantly competes with ODL. ONOS does have some advantages. Thanks to the sophisticated APIs, you can build applications fairly simply. ONOS places a clear focus on professional use scenarios in the carrier market, offers significant community support, and is nicely documented.

However, the project started a year later than ODL and still needs some development effort to mature into a full-fledged platform. Only time will tell which of the competing frameworks will call the shots going forward. Perhaps the paths of both projects will cross at some point and merge into a great SDN empire.

The Author

Elisa Rojas works as a research director for Telcaria Ideas S.L. Her focus is on software-defined networking (SDN) and network functions virtualization (NFV) technologies. She has worked with SDN protocols and frameworks since 2010, and in 2013 she published a doctoral paper on the topic. She is a contributor to European SDN projects and works as a lecturer in the NFV and SDN fields at Charles III University of Madrid (UC3M).

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy ADMIN Magazine

Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

comments powered by Disqus