« Previous 1 2
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).
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).
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.
Infos
- ONOS: http://onosproject.org
- ON.Lab: http://onlab.us
- Cooperation with the Linux Foundation: https://www.linuxfoundation.org/news-media/announcements/2015/10/onos-project-joins-linux-foundation-strategic-partnership
- OpenDaylight: https://www.opendaylight.org
- Apache Karaf: http://karaf.apache.org
- OpenFlow: https://www.opennetworking.org
- NETCONF: https://tools.ietf.org/html/rfc6241
- OVSDB: https://tools.ietf.org/html/rfc7047
- ONOS wiki: https://wiki.ONOSproject.org
- ONOS system components: https://wiki.onosproject.org/display/ONOS/System+Components
- CORD: http://opencord.org
- Ryu: https://osrg.github.io/ryu/
- Floodlight: http://www.projectfloodlight.org
- MD-SAL: https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL
- YANG: https://en.wikipedia.org/wiki/YANG
- Apache Maven: https://maven.apache.org
- ONOS download: http://onosproject.org/software/
- Mininet: http://mininet.org
« Previous 1 2
Buy this article as PDF
(incl. VAT)