Skip navigation links

ONOS Java API (1.12.0)

ONOS architecture is strictly segmented into a protocol-agnostic system core tier and the protocol-aware providers tier as shown in the figure below:
ONOS architecture tiers

See: Description

Network Model & Services 
Package Description
org.onosproject.app
Set of abstractions for managing network control applications.
org.onosproject.cfg
Set of abstractions for centrally managing component configurations.
org.onosproject.cluster
Set of abstractions for dealing with controller cluster related topics.
org.onosproject.codec
Base JSON codec abstraction and a service for tracking various JSON codecs.
org.onosproject.component
Component management system.
org.onosproject.core
ONOS Core API definitions.
org.onosproject.cpman.message
Service for looking up control message stats.
org.onosproject.event
Local event delivery subsystem interfaces & supporting abstractions.
org.onosproject.mastership
Set of abstractions for dealing with controller mastership related topics.
org.onosproject.net
Network model entities & service API definitions.
org.onosproject.net.behaviour
Abstractions of various device configuration or device adaptation behaviours; counterpart to the device driver subsystem.
org.onosproject.net.behaviour.protection
Protection behaviour and related classes.
org.onosproject.net.behaviour.trafficcontrol
Traffic control behaviors and related classes.
org.onosproject.net.config
Subsystem for tracking network environment configuration.
org.onosproject.net.config.basics
Various basic builtin network configurations.
org.onosproject.net.config.inject
Network configurations for "inject" provider.
org.onosproject.net.device
Infrastructure device model & related services API definitions.
org.onosproject.net.domain
Domain intent package.
org.onosproject.net.driver
Set of facilities to allow the platform to be extended with device specific behaviours and to allow modeling device (and other entity) behaviours while hiding details of specific driver implementations.
org.onosproject.net.edge
Service for interacting with network edge.
org.onosproject.net.flow
Flow rule model & related services API definitions.
org.onosproject.net.flow.criteria
Traffic selection criteria model.
org.onosproject.net.flow.instructions
Traffic treatment model.
org.onosproject.net.flow.oldbatch
Flow rule model & related services API definitions.
org.onosproject.net.flowobjective
Abstractions for objective-based flow programming of data plane without requiring device pipeline structure awareness.  This subsystem is experimental and its interfaces will change in the upcoming release.
org.onosproject.net.group
Abstractions for interacting with device port groups.
org.onosproject.net.host
End-station host model & related services API definitions.
org.onosproject.net.intent
Set of abstractions for conveying high-level intents for treatment of selected network traffic by allowing applications to express the what rather than the how.
org.onosproject.net.intent.constraint
Definitions of constraints used to refine intent specifications.
org.onosproject.net.intent.util
Package supports intent northbound apis providing utility classes.
org.onosproject.net.intf
Interface Service.
org.onosproject.net.key
Device key data model and services.
org.onosproject.net.link
Infrastructure link model & related services API definitions.
org.onosproject.net.mcast
External model entities of the multicast RIB.
org.onosproject.net.meter
Flow meter model and related services.
org.onosproject.net.neighbour
Neighbour message (ARP, NDP) handling.
org.onosproject.net.packet
Mechanism for processing inbound packets intercepted from the data plane and for emitting outbound packets onto the data plane.
org.onosproject.net.pi.model
Model abstractions of a protocol-independent packet processing pipeline.
org.onosproject.net.pi.runtime
Classes abstracting entities for runtime control of a protocol-independent packet processing pipeline.
org.onosproject.net.pi.service
Service abstractions for runtime control of a protocol-independent pipeline.
org.onosproject.net.provider
Base abstractions related to network entity providers and their brokers.
org.onosproject.net.proxyarp
Base abstractions related to the proxy arp service.
org.onosproject.net.region
Subsystem for tracking inventory of network control regions.
org.onosproject.net.resource
Generic network resource model and services for resource allocation and resource tracking.
org.onosproject.net.statistic
Service for looking up statistics on links.
org.onosproject.net.topology
Network topology model & related services API definitions.
org.onosproject.net.utils
Utility classes.
org.onosproject.persistence
Persistence service and builders.
org.onosproject.rest
Base abstractions and utilities for developing REST APIs.
org.onosproject.routing.config
Routing configuration interfaces.
org.onosproject.security
Application security constructs.
org.onosproject.store
Abstractions for creating and interacting with distributed stores.
org.onosproject.store.cluster.messaging
Cluster messaging APIs for the use by the various distributed stores.
org.onosproject.store.primitives
Interfaces for creating various distributed primitives.
org.onosproject.store.service
Distributed core state management services.
org.onosproject.ui
Mechanism for managing dynamically registered user interface extensions.
org.onosproject.ui.chart
Facilities for creating chart models of data for the Web UI.
org.onosproject.ui.lion
Facilities for handling localization of the UI.
org.onosproject.ui.model
Server-side modeling of UI entities.
org.onosproject.ui.model.topo
Server-side modeling of Topology View UI entities.
org.onosproject.ui.table
Facilities for creating tabular models of data for the GUI.
org.onosproject.ui.table.cell
Set of table cell renderers and comparators for use by GUI apps.
org.onosproject.ui.topo
Mechanism for dynamically extending topology view with information and behaviour overlays.
org.onosproject.upgrade
Abstractions for managing software upgrades.
Incubator for Network Model & Services 
Package Description
org.onosproject.incubator.elasticcfg
Abstractions for interacting with the elastic configuration subsystem.
org.onosproject.incubator.net
Incubating network model abstractions and APIs.
org.onosproject.incubator.net.config.basics
Various basic builtin network configurations.
org.onosproject.incubator.net.domain
Subsystem for network intent domains.
org.onosproject.incubator.net.dpi
Subsystem for dpi statistics service.
org.onosproject.incubator.net.faultmanagement.alarm
Abstractions for interacting with alarms.
org.onosproject.incubator.net.l2monitoring.cfm
Object model for Connectivity Fault Management functionality from IEEE 802.1Q Chapter 18.
org.onosproject.incubator.net.l2monitoring.cfm.identifier
Identifiers related to Connectivity Fault Management functionality from IEEE 802.1Q Chapter 18.
org.onosproject.incubator.net.l2monitoring.cfm.service
Interfaces related to the Service for Connectivity Fault Management.
org.onosproject.incubator.net.l2monitoring.soam
Implementation of MEF Service Operation and Maintenance.
org.onosproject.incubator.net.l2monitoring.soam.delay
Implementation of Service Operation and Maintenance related to Frame delay measurement.
org.onosproject.incubator.net.l2monitoring.soam.loss
Implementation of Service Operation and Maintenance related to Frame loss measurement.
org.onosproject.incubator.net.resource.label
Service for reserving labels as network resources.
org.onosproject.incubator.net.tunnel
Tunnel model related services and providers API definitions.
org.onosproject.incubator.net.virtual
Network virtualization data models and services.
org.onosproject.incubator.net.virtual.event
Virtual network event delivery subsystem interfaces & supporting abstractions.
org.onosproject.incubator.net.virtual.intent
Set of abstractions for conveying high-level intents for treatment of selected network traffic by allowing applications to express the what rather than the how for virtual networks.
org.onosproject.incubator.net.virtual.provider
Network virtualization provider interfaces and implementation.
org.onosproject.incubator.rpc
Incubating inter-cluster RPC APIs.
Utilities 
Package Description
org.onlab.graph
Graph abstractions and graph path finding algorithms.
org.onlab.junit
Utilities to assist in developing JUnit tests.
org.onlab.metrics
Misc utils for various performance metrics.
org.onlab.osgi
Facilities for building testable components in OSGi independent fashion.
org.onlab.packet
Utilities for decoding and encoding packets of various network protocols and encapsulations.
org.onlab.packet.dhcp
Utilities for decoding and encoding DHCP options.
org.onlab.packet.ipv6
Utilities for decoding and encoding IPv6 extension headers.
org.onlab.packet.ndp
Utilities for decoding and encoding packets of Neighbor Discovery Protocol for IPv6 (RFC 4861).
org.onlab.packet.pim
Utilities for managing PIM packets.
org.onlab.rest
Facilities for building JAX-RS web resources.
org.onlab.rest.exceptions
Various exception mappers to map errors to proper response status codes.
org.onlab.util
Miscellaneous domain-agnostic utilities.
App & Extensions 
Package Description
org.onosproject.cpman
An application that manages the control plane.
org.onosproject.dhcp
Sample application that assigns and manages DHCP leases.
org.onosproject.routing
API for routing libraries.

ONOS architecture is strictly segmented into a protocol-agnostic system core tier and the protocol-aware providers tier as shown in the figure below:
ONOS architecture tiers

The ONOS core is responsible for tracking information about the network environment and distributing it to the applications either synchronously via query or asynchronously via listener callbacks. The core is also responsible for persisting select state and synchronizing state among the cluster peers.

The protocol-aware providers are responsible for interacting with the network environment using various control and configuration protocols and supplying such sensory data to the core. Some providers may also need to accept control edicts from the core and apply them to the environment using the appropriate protocol-specific means.

The figure below provides a visual inventory of the various ONOS subsystems. The ones with the gray outline represent either work in progress features planned for release in 2015.
ONOS architecture tiers

The following diagram describes the general structure of each ONOS subsystem:
ONOS subsystem structure
For example, the device-subsystem comprises of a core org.onosproject.net.device.impl.DeviceManager, which exposes a north-bound DeviceService through which applications or other core components can learn about the global infrastructure device inventory and through which they can also subscribe for asynchronous DeviceEvent notifications via the DeviceListener mechanism. A set of administrative actions can be performed via DeviceAdminService, e.g. setting mastership role, removing a decommissioned device.

On the south-bound side, the core org.onosproject.net.device.impl.DeviceManager exposes a DeviceProviderRegistry through which any number of DeviceProvider entities can register and in turn obtain a DeviceProviderService. Device and port information can then be supplied to the core by each provider through the provider service issued to them. When a provider unregisters, its DeviceProviderService will be invalidated and can no longer be used for interacting with the core.

Within the core, the tasks of indexing, persisting and synchronizing the global device and port state with the cluster peers falls on the DeviceStore.

Similar structure applies to the link subsystem, host subsystem and others.

More information to come later...

Skip navigation links