Have questions? Stuck? Please check our FAQ for some common questions and answers.

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

This section provides a high-level view of ONOS, and its general design approach.

ONOS in a Sentence

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

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

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 ONOS source 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 to [Appendix C] of the Developer's Guide for details on the exact organization.

 

  • No labels