This wiki aims to provide up-to-date information about the ONOS Project. This is a community effort - if you are interested in helping out, or would like to write about something, please refer to this page.

What is ONOS?

ONOS stands for Open Network Operating System. ONOS provides the control plane for a software-defined network (SDN), managing network components, such as switches and links, and running software programs or modules to provide communication services to end hosts and neighboring networks.

If you are familiar with server operating systems, you will find that ONOS provides some analogous types of functionality, including APIs and abstractions, resource allocation, and permissions, as well as user-facing software such as a CLI, a GUI, and system applications.

If you are familiar with traditional "inside the box" switch operating systems, you will find that ONOS manages your entire network rather than a single device, which can dramatically simplify management, configuration, and deployment of new software, hardware and services.

If you are familiar with SDN controllers, you should feel right at home because the ONOS platform and applications act as an extensible, modular, distributed SDN controller.

The most important benefit of an operating system is that it provides a useful and usable platform for software programs designed for a particular application or use case. ONOS applications and use cases often consist of customized communication routing, management, or monitoring services for software-defined networks. Some examples of things which you can do with ONOS, and software written to run on ONOS, may be found in Apps and Use Cases.

ONOS can run as a distributed system across multiple servers, allowing it to use the CPU and memory resources of multiple servers while providing fault tolerance in the face of server failure and potentially supporting live/rolling upgrades of hardware and software without interrupting network traffic.

The ONOS kernel and core services, as well as ONOS applications, are written in Java as bundles that are loaded into the Karaf OSGi container. OSGi is a component system for Java that allows modules to be installed and run dynamically in a single JVM. Since ONOS runs in the JVM, it can run on several underlying OS platforms. More information on the internal design of ONOS may be found in Architecture and Internals Guide, and information on developing ONOS applications may be found in the Developer Guide.

ONOS is an open source project backed by an expanding community of developers and users, and you are invited and encouraged to join in discussion, development, documentation, and improvement of the ONOS system. This document itself is part of the ONOS wiki, so please feel free to fix any errors, add clarifying comments, and improve it as you see fit.

Welcome to ONOS!

Overview

Guides - the core reference manuals for anyone who wants to use ONOS or develop ONOS applications or components

Tutorials - tutorials, videos, presentations, and a quick tour of this wiki for those interested in learning about ONOS.

Apps and Use Cases - various projects that have been built using ONOS as their SDN platform.