Versions Compared

Key

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

...

ONOS is a multi-module project whose modules are managed as OSGi bundles. ONOS is designed with a few points in mind:

  • Code 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.
  • Separation of Concern : There should be boundaries between different subsystems, in the form of APIs
  • Protocol agnosticism : It, and its applications, should not be bound to specific protocol libraries or implementations.

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

...

Modularity

The project is comprised of a set of sub-projects, each with their own source tree that can be built independently. 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 own pom.xml file file, and intermediate directories have parent aggregate aggregate pom.xml files 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. 


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

Configurability

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

Separation of Concern

ONOS is partitioned into :

...