This section describes how ONOS internally represents the infrastructure under its control.
ONOS maintains both protocol-agnostic and protocol-specific network element and state representations. The former are constructs of the core tier, referred to as Model Objects, and the latter are constructs of the appropriate provider. For example, DeviceStore
(and consequently the DeviceManager
and DeviceListeners
) sees a network device as a Device
, whereas the OpenFlowDeviceProvider
will see the device as an OpenFlowSwitch
. Recall that these two representations are bridged by the intermediate transcription into a DeviceDescription.
The term 'Model Object' refers more to the core's representations, which we focus on here.
The interface definitions and implementations of these objects can be found across several packages under [org.onlab.onos.net.*]. While not formal, implicit object classifications fall out of the organization of these packages.
Many of the model objects have graph analogues, as ONOS represents networks as directed graphs.
DeviceId
. Devices are interior vertices of the network graph.DeviceId
pair forms a ConnectPoint
, which represents an endpoint of a graph edge. ConnectPoint
. Hosts are exterior (leaf) vertices of the network graph.ConnectPoints
). Links are interior edges of the network graph.Network logic, such as high-level flow rules given as Criteria (Match) and Treatment (Action) pairs
Packets, such as from network traffic, and those to be injected into the network
Some entities rely on the existence of other entities, as in the case of Ports, which cannot exist without a Device. Similarly, Links, and by extension, Topologies, cannot exist without Ports serving as endpoints to the Link. We therefore consider Devices to be a first-class entity in ONOS's network representations.