Skip to content

Commit d22831b

Browse files
author
Larry Peterson
committed
microservices
1 parent 7fcfed7 commit d22831b

File tree

1 file changed

+29
-17
lines changed

1 file changed

+29
-17
lines changed

onos.rst

Lines changed: 29 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -160,13 +160,16 @@ algorithm to provide a rich set of programming primitives that ONOS
160160
uses to manage the distributed state and make it easy for control apps
161161
to access.
162162

163-
This is a common design paradigm. What’s unique about ONOS—or any
164-
Network OS, for that matter—is the set of maps it defines: the
165-
semantics of the keys it stores and the types of the values associated
166-
with those keys. It is this data model that makes a Network OS a
167-
Network OS (and not a ride-share application or a social network).
168-
This section mostly focuses on this set of data models and the
169-
corresponding services built around them, although we start with a
163+
This is a common design paradigm, which results in a system that is
164+
both scalable (runs on enough virtualized instances to handle the
165+
request workload) and highly available (run on enough instances to
166+
continue offering service in the face of failure). What’s unique about
167+
ONOS—or any Network OS, for that matter—is the set of maps it defines:
168+
the semantics of the keys it stores and the types of the values
169+
associated with those keys. It is this data model that makes a Network
170+
OS a Network OS (and not a ride-share application or a social
171+
network). This section mostly focuses on this set of data models and
172+
the corresponding services built around them, although we start with a
170173
brief introduction to the primitives that Atomix supports.
171174

172175
6.2.1 Atomix Primitives
@@ -196,8 +199,13 @@ map.
196199

197200
Maps are the workhorse primitive used by ONOS, as we will see in the
198201
next subsection. We conclude this section by looking at another role
199-
that Atomix plays in ONOS: coordinating all the ONOS instances. There
200-
are two aspects to this coordination.
202+
that Atomix plays in ONOS: coordinating all the ONOS instances.\ [#]_
203+
There are two aspects to this coordination.
204+
205+
.. [#] For the purpose of this discussion, assume ONOS is packaged as
206+
a whole, and then scaled across multiple virtualized instances.
207+
An alternative partitioning of ONOS functionality into
208+
independently scaled microservices is discussed in Section 6.5.
201209
202210
First, as a horizontally scalable service, the number of ONOS
203211
instances running at any given time depends on the workload and the
@@ -656,11 +664,15 @@ rest of ONOS.
656664
A refactoring of ONOS to more closely adhere to a microservice
657665
architecture is also underway. The new version, called µONOS,
658666
leverages ONOS’s existing modularity, but packages and scales
659-
different subsystems independently. This includes encapsulating Atomix
660-
in its own microservice, as well as running each control application
661-
and southbound adaptor as a separate microservice. It also means
662-
partitioning the core into distinct microservices corresponding to
663-
Topology Management (exporting a Network Graph API), Control
664-
Management (exporting a P4Runtime API), Configuration Management
665-
(exporting a gNMI API), and Operations Management (exporting a gNOI
666-
API).
667+
different subsystems independently. Although in principle each ONOS
668+
service introduced in this chapter could be packaged as an independent
669+
microservice, doing so is much too fine-grain to be
670+
practical. Instead, µONOS adopts the following approach. First, it
671+
encapsulates Atomix in its own microservice. Second, it runs each each
672+
control application and southbound adaptor as a separate
673+
microservice. Third, it partitions the core into four distinct
674+
microservices: (1) a *Topology Management* microservice that exports a
675+
Network Graph API; (2) a *Control Management* microservice that
676+
exports a P4Runtime API; (3) a *Configuration Management* microservice
677+
that exports a gNMI API; and (4) an *Operations Management*
678+
microservice that exports a gNOI API.

0 commit comments

Comments
 (0)