Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Aside from being an SDN OS, ONOS is a multi-module project whose modules are managed as OSGi bundles. 

Design Goals

ONOS is designed with a few points in mind:

  • Modularity : It should be possible to introduce new functionalities as self-contained units.
  • Configurability : It should be possible to load and unload various features, wether it be at startup or at runtime.
  • Protocol agnosticism : It, and its applications, should not be bound to specific protocol libraries.

We take a succinct look at each below.

Run-Time Extensibility

ONOS is written to leverage Apache Karaf as its OSGi framework. In addition to dependency resolution at startup and dynamic module loading at runtime, Karaf provides the following:

  • Enable use of standard JAX-RS API to develop our REST APIs and make them secure
  • The notion of features as a set of bundles allowing assembly of custom setups
  • Strict semantic versioning of code bundles, including third-party dependencies
  • Local and remote ssh console with easily extensible CLI
  • The notion of run-time log levels

Code Organization and Modularity

The project is This is predicated on having a project comprised of a set of sub-projects, each with their own source tree that can be built independently.

Code Organization and Modularity

The  To do this, the ONOS source tree is organized in a hierarchical fashion that takes advantage of Maven's notion of a hierarchical POM file organization. Each sub-project has its own pom.xml file, and intermediate directories have parent aggregate pom.xml files. The latter contains shared dependencies and configurations for those sub-projects, enabling them to be built independent of unrelated sub-projects. The ONOS root contains the top-level pom file used to build the full project and all of its modules. Refer

For implementation details of the source tree and POM file organization, refer to [Appendix C] of the Developer's Guide for details on the exact organization..

Protocol Agnosticism

While currently focused on OpenFlow, a southbound API shields the ONOS core layer and its platform-resident applications from the specifics of a particular protocol library.