blob: a3e32d9ee09eeac33e67dec1dea661c25895ca23 [file] [log] [blame]
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07001<!--
2 ~ Copyright 2014 Open Networking Laboratory
3 ~
4 ~ Licensed under the Apache License, Version 2.0 (the "License");
5 ~ you may not use this file except in compliance with the License.
6 ~ You may obtain a copy of the License at
7 ~
8 ~
9 ~
10 ~ Unless required by applicable law or agreed to in writing, software
11 ~ distributed under the License is distributed on an "AS IS" BASIS,
12 ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 ~ See the License for the specific language governing permissions and
14 ~ limitations under the License.
15 -->
tomcfde0622014-09-09 11:02:42 -070016<html>
tom5717f392014-09-13 15:50:43 -070018<p>
19 ONOS architecture is strictly segmented into a <em>protocol-agnostic system
20 core</em> tier and the <em>protocol-aware providers</em> tier as shown in
21 the figure below:<br>
22 <img src="doc-files/onos-tiers.png" alt="ONOS architecture tiers">
tomcfde0622014-09-09 11:02:42 -070024
tom5717f392014-09-13 15:50:43 -070025<p>
26 The <em>ONOS core</em> is responsible for tracking information about the
27 network environment and distributing it to the applications either
28 synchronously via query or asynchronously via listener callbacks. The
29 core is also responsible for persisting select state and synchronizing state
30 among the cluster peers.
tomcfde0622014-09-09 11:02:42 -070032
tom5717f392014-09-13 15:50:43 -070033<p>
34 The <em>protocol-aware providers</em> are responsible for interacting with
35 the network environment using various control and configuration protocols
36 and supplying such sensory data to the core. Some providers may also need to
37 accept control edicts from the core and apply them to the environment
38 using the appropriate protocol-specific means.
42 The following diagram describes a general structure of each ONOS subsystem:
43 <br>
44 <img src="doc-files/onos-subsystem.png" alt="ONOS subsystem structure"><br>
45 For example, the device-subsystem comprises of a core
Brian O'Connorabafb502014-12-02 22:26:20 -080046 {@link},
tom5717f392014-09-13 15:50:43 -070047 which exposes a north-bound
Brian O'Connorabafb502014-12-02 22:26:20 -080048 {@link} through which applications or other core components
tom5717f392014-09-13 15:50:43 -070049 can learn about the global infrastructure device inventory and through
Brian O'Connorabafb502014-12-02 22:26:20 -080050 which they can also subscribe for asynchronous {@link}
51 notifications via the {@link} mechanism. A set of
52 administrative actions can be performed via {@link},
tom5717f392014-09-13 15:50:43 -070053 e.g. setting mastership role, removing a decommissioned device.
Brian O'Connorabafb502014-12-02 22:26:20 -080057 On the south-bound side, the core {@link}
58 exposes a {@link} through which any number of
59 {@link} entities can register and in turn obtain a
60 {@link}. Device and port information can then be
tom5717f392014-09-13 15:50:43 -070061 supplied to the core by each provider through the provider service issued
Brian O'Connorabafb502014-12-02 22:26:20 -080062 to them. When a provider unregisters, its {@link}
tom5717f392014-09-13 15:50:43 -070063 will be invalidated and can no longer be used for interacting with the
64 core.
68 Within the core, the tasks of indexing, persisting and synchronizing the
69 global device and port state with the cluster peers falls on the
Brian O'Connorabafb502014-12-02 22:26:20 -080070 {@link}.
tom5717f392014-09-13 15:50:43 -070071</p>
74 Similar structure applies to the link subsystem, host subsystem and others.
78 <em>More information to come later...</em>