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 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 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...

All Packages Network Model & Services Utilities App & Extensions 
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.bmp
Utility for decoding bmp options.
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.lacp
Utilities for decoding and encoding LACP packets.
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.
org.onosproject.alarm
Abstractions for interacting with alarms.
org.onosproject.app
Set of abstractions for managing network control applications.
org.onosproject.cfg
Set of abstractions for centrally managing component configurations.
org.onosproject.cli
Administrative console command-line extensions.
org.onosproject.cli.app
CLI commands for managing distributed inventory of applications.
org.onosproject.cli.cfg
CLI commands for managing centralized component and network configurations.
org.onosproject.cli.net
Administrative console command-line extensions for interacting with the network model & services.
org.onosproject.cli.net.completer
Completers for karaf CLI.
org.onosproject.cli.security
CLI commands for managing security permissions.
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.common
Miscellaneous common facilities used for construction of various core and app subsystems.
org.onosproject.common.app
Common facilities for construction of application management subsystem.
org.onosproject.common.net
Set of common network core facilities.
org.onosproject.component
Component management system.
org.onosproject.core
ONOS Core API definitions.
org.onosproject.cpman
An application that manages the control plane.
org.onosproject.cpman.message
Service for looking up control message stats.
org.onosproject.dhcp
Sample application that assigns and manages DHCP leases.
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
Constants for OSGi properties in the core/net components.
org.onosproject.net.behaviour
Abstractions of various device configuration or device adaptation behaviours; counterpart to the device driver subsystem.
org.onosproject.net.behaviour.inbandtelemetry
Behaviors abstracting devices supporting in-band network telemetry.
org.onosproject.net.behaviour.protection
Protection behaviour and related classes.
org.onosproject.net.behaviour.trafficcontrol
Traffic control behaviors and related classes.
org.onosproject.net.behaviour.upf
3GPP User Plane Function 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.packet.packetfilter
Packet filter classifier for various Packet types.
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.runtime.data
Classes abstracting data that can be used for runtime operations of a protocol-independent 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
API for routing libraries.
org.onosproject.routing.config
Routing configuration interfaces.
org.onosproject.security
Application security constructs.
org.onosproject.store
Stores used by the core of ONOS.
org.onosproject.store.app
Implementation of distributed application store.
org.onosproject.store.atomix
Subsystem for tracking controller cluster nodes.
org.onosproject.store.cfg
Implementation of distributed component configuration store.
org.onosproject.store.cluster.messaging
Cluster messaging APIs for the use by the various distributed stores.
org.onosproject.store.flow
Definitions of events and messages pertaining to replication of flow entries.
org.onosproject.store.primitives
Interfaces for creating various distributed primitives.
org.onosproject.store.serializers
Various Kryo serializers for use in distributed stores.
org.onosproject.store.serializers.custom
Distributed store serializers.
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.
org.onosproject.utils
Miscellaneous common facilities used for construction of various core and app subsystems.