Versions Compared

Key

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

...

  • Device Subsystem - Manages the inventory of infrastructure devices.
  • Link Subsystem - Manages the inventory of infrastructure links.
  • Host Subsystem - Manages the inventory of end-station hosts and their locations on the network.
  • Topology Subsystem - Manages time-ordered snapshots of network graph views.
  • PathService - Computes/finds paths between infrastructure devices or between end-station hosts using the most recent topology graph snapshot.
  • FlowRule Subsystem - Manages inventory of the match/action flow rules installed on infrastructure devices and provides flow metrics.
  • Packet Subsystem - Allows applications to listen for data packets received from network devices and to emit data packets out onto the network via one or more network devices. 

The following figure illustrates the various subsystems that are part of ONOS today and a few that are planned in the near future:

Image Added

Subsystem Structure

Each of a subsystem's components resides in one of the three main tiers, and can be identified by one or more Java Interfaces that they implement. 

The figure below summarizes the relationships of the subsystem components. The top and bottom dotted lines in the figure represent the inter-tier boundaries created by the northbound and southbound APIs, respectively.

 

Image Modified

Provider

The lowest tier of the ONOS stack, Providers interface with the network via protocol-specific libraries, and with the core via the ProviderService interface. 

...

Some providers may also need to accept control edicts from the core and apply them to the network using the appropriate protocol-specific means. These are fed into the Provider via the ProviderService interfaceProvider interface

Provider ID

A Provider is associated with a ProviderId. The main purpose of the ProviderId is to provide an externalizable identity of a family of providers, which allows devices and other model entities to remain associated with the identity of the provider responsible for their existence even after the provider is uninstalled/unloaded.

...

A component residing in the core, the Manager receives information from Providers and serves it to applications and other services. It exposes several interfaces :

  • A northbound Service interface through which applications or other core components can learn about a particular aspect of the network state
  • An AdminService interface for taking administrative commands and applying them onto the network state or the system
  • A southbound ProviderRegistry interface through which Providers can register with the manager, so that it may interact with it
  • A southbound ProviderService interface presented to a registered Provider, through which it may send and receive information to and from the manager

The consumers of a Manager's service interface may receive information both synchronously by querying the service, and asynchronously as an event listener (e.g. by using a ListenerService interface that is part of each Service interface to register for events and implementing an EventListener interface for receiving the events).

Store

Also within the core and associated closely with the Manager, Stores have the task of indexing, persisting, and synchronizing the information received by the Manager. This includes ensuring consistency and robustness of information across multiple ONOS instances by directly communicating with stores on other ONOS instances. Further discussion of Stores in distributed settings is found in DistributionCluster Coordination.

Application

Applications consume and manipulate information aggregated by the managers via the AdminService and Service interfaces. Applications have a wide range of functionality, ranging from displaying network topologies in a web browser to setting up paths for network traffic.

...

Events are used by Managers to notify its listeners about changes in the network, and by Stores to notify their peers of events in a distributed setting. An Event is comprised of a an event type and a subject built of model objects. For example, a DeviceEvent can be used to notify DeviceListeners that a device (the subject) has been detected (DEVICE_ADDED), lost (DEVICE_REMOVED), or some aspect of it has changed (DEVICE_UPDATED), among others. 

...

Events are generated by the Store, based on input from the Manager. Once generated, an Event is dispatched to interested listeners via the StoreDelegate interface, which ultimately invokes the EventDeliveryService. Essentially, the StoreDelegate moves the event out of the store, and the EventDevliveryService EventDeliveryService ensures that the event only reaches interested listeners. Due to how they interact, these two components reside in the Manager, where the manager provides the implementation class of the StoreDelegate to the store.

...

Event listeners are any components that implement the EventListener interface. EventListener child interfaces are classified by the type of Event subclass they listen for. The typical mode of implementation is for an Event listener to be an inner class of a manager or an application, from which the appropriate services are invoked based on received event. This restricts the handling of events external to a subsystem to the subsystem's manager or an application, i.e. to the logical locations where they should be handled. 

The figure below elaborates on the previous figure to show the relationship between Descriptions, Events, and the components described here.

...

Further discussion about network representations can be found in Representing Networks.


 


 

...

Previous : ONOS : An Overview
Next : Representing Networks

...