In this blog post, I will be going through more about Open Network Operating System (ONOS) and how it works.

Open Network Operating System (ONOS)

The Open Network Operating System (ONOS) is an open source software defined network (SDN) controller for building SDN solutions.

It was designed to meet the needs of network operators who wish to build carrier-grade solutions using conventional equipment while having the flexibility to create and deploy dynamic networks.

Network Topology

The ONOS model is the open northbound API and a Specification Abstraction, allowing a controller to express the desired network behavior without implementing it.

The ONOS system is a distribution abstraction, shielding the SDN from the distributed states and making the distributed control logically centralized and highly available.

ONOS Architecture

The architecture of ONOS is similar to any other horizontally scalable distributed system.

It consists of the following a set of loosely coupled subsystems which:

  1. Each for an aspect of networking (EG: Topology, Host tracking, etc)
  2. Maintains its own service abstraction

It is often associated with a microservices architecture and includes a highly available key value store.

ONOS Architecture

The illustration aboves show a logical layering of the ONOS architecture. However, do note that the system is distributed.

It consists of the following main components:

  1. Northbound Interfaces (NBI)
    1. These are for the app to use to stay informed about the current network state
    2. This is also used to control the network data plane
    3. EG: Topology, Intercept packets, FlowRule, FlowObjective, etc
  2. Distributed Core
    1. This component is responsible for managing network state and notifying apps about the relevant changes in state
    2. It also consists of an internal distributed key-value store
  3. Southbound Interfaces (SBI)
    1. This is constructed from a set of plugins
    2. Including shared protocol libs and device specific drives
    3. This is the API that interfaces with the hardware itself
    4. EG: OpenFlow, P4Runtime, gNMI, etc

ONOS Abstractions

There are some new abstractions which are provided by ONOS. These include the following:

  1. Intent
  2. Flow Objectives
  3. Flow Rule

We will be going through them in detail


These are high-level abstractions which are implemented network wide. They are topology independent programming constructs.

It allows applications to specify their network control desires in the form of a policy rather than mechanism.

These intents are translated into installable intents, which are essentially actionable operations on the network environment, and are then installed on the network.

To view the full documentation, visit ONOS Project

Flow Objectives

These are finer grain control compared to intents. They are device centric programming constructs which are pipeline independent.

They are designed to make the application pipeline unaware while leveraging the scalability and flexibility of the multi-stage openflow pipeline.

Flow Rule

These are the lowest level abstractions. They are used to control various pipelines, both fixed function ones and programmable ones.