Skip to content

Commit 7fcfed7

Browse files
author
Larry Peterson
committed
wordsmithing
1 parent 435bc0d commit 7fcfed7

File tree

1 file changed

+28
-28
lines changed

1 file changed

+28
-28
lines changed

onos.rst

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -451,21 +451,22 @@ rest of this section.
451451
There are three types of flow objectives: *Filtering*, *Next*, and
452452
*Forwarding*. Filtering objectives determine whether or not traffic
453453
should be permitted to enter the pipeline, based on a traffic
454-
*Selector*. This selector abstracts the "match" part of a match-action
455-
rule. Next objectives indicate what kind of *Treatment* the traffic
456-
should receive. This treatment abstracts the "action" part of a
457-
match-action rule. Forwarding objectives determine which traffic is
458-
to be allowed to egress the pipeline, effectively adding a second
459-
opportunity apply a match rule to the traffic.
460-
461-
The challenge is to map these pipeline-agnostic objectives onto
462-
pipeline-dependent rules. In ONOS, this mapping is managed by the Flow
463-
Objective Service, as depicted in :numref:`Figure %s
464-
<fig-flowobj>`. For simplicity, the example focuses on the selector
454+
*Selector*. You can think of selectors as abstracting the "match" part
455+
of a match-action rule. Next objectives indicate what kind of
456+
*Treatment* the traffic should receive. You can think of treatments as
457+
abstracting the "action" part of a match-action rule. Forwarding
458+
objectives determine what traffic is to be allowed to egress the
459+
pipeline, effectively adding a second opportunity apply a match rule
460+
to the traffic.
461+
462+
The challenge is to map these pipeline-agnostic objectives onto the
463+
corresponding pipeline-dependent rules. In ONOS, this mapping is
464+
managed by the Flow Objective Service, as depicted in :numref:`Figure
465+
%s <fig-flowobj>`. For simplicity, the example focuses on the selector
465466
(match) specified by a Filtering objective, where the key is to
466-
express the fact that you want to match on a particular switch port,
467-
MAC address, VLAN tag, and IP address without regard for which
468-
sequence of pipeline tables implements such a combination.
467+
express the fact that you want to select a particular input port, MAC
468+
address, VLAN tag, and IP address combintation, without regard for
469+
the exact sequence of pipeline tables that implement that combination.
469470

470471
.. _fig-flowobj:
471472
.. figure:: figures/Slide39.png
@@ -475,24 +476,23 @@ sequence of pipeline tables implements such a combination.
475476
Flow Objective Service manages the mapping of pipeline-agnostic
476477
objectives onto pipeline-specific rules.
477478

478-
Internally, ONOS manages the binding between the pipeline-agnostic
479-
objectives and the device-specific handlers. These handlers are
480-
implemented using the ONOS device driver mechanism. The device driver
481-
behavior that abstracts the implementation of how flow objective
482-
directives should map to flow rule operations is called *Pipeliner*.
483-
:numref:`Figure %s <fig-flowobj>` shows Pipeliners for two example
484-
switch pipelines.
479+
Internally, the Flow Objective Service is organized as a collection of
480+
device-specific handlers, each of which is implemented using the ONOS
481+
device driver mechanism. The device driver behavior that abstracts the
482+
implementation of how flow objective directives should map to flow
483+
rule operations is called a *Pipeliner*. :numref:`Figure %s
484+
<fig-flowobj>` shows Pipeliners for two example switch pipelines.
485485

486-
Each Pipeliner is able to map Flow objectives onto both Flow Rules (in
486+
Pipeliners are able to map flow objectives onto both flow rules (in
487487
the case of fixed-function pipelines) and P4-programmed pipelines. The
488-
example given in :numref:`Figure %s <fig-flowobj>` assumes the former
489-
case, which implies a mapping to OpenFlow 1.3. In the latter case,
488+
example given in :numref:`Figure %s <fig-flowobj>` shows the former
489+
case, which includes a mapping to OpenFlow 1.3. In the latter case,
490490
Pipeliner leverages *Pipeconf*, a structure that maintains
491491
associations among the following elements:
492492

493493
1. A model of the pipeline for each target switch.
494494
2. A target-specific driver needed to to deploy flow instructions to the switch.
495-
3. A pipeline-specific translator to map Flow Objectives into the target pipeline.
495+
3. A pipeline-specific translator to map flow objectives into the target pipeline.
496496

497497
Pipeconf maintains these bindings using information extracted from the
498498
``.p4info`` file output by the P4 compiler, as described in Section
@@ -502,13 +502,13 @@ Today, the “model” identified in (1) is ONOS-defined, meaning the
502502
end-to-end workflow for a developer involves being aware of both a P4
503503
architecture model (e.g., ``v1model.p4``) when programming the data
504504
plane and this ONOS model when programming the control plane using
505-
Flow Objectives. Eventually, these various layers of pipeline models
505+
flow objectives. Eventually, these various layers of pipeline models
506506
will be unified, and in all likelihood, specified in P4.
507507

508-
Programmatically, Flow Objectives are a data structure, packaged with
508+
Programmatically, flow objectives are a data structure, packaged with
509509
associated constructor routines. The control application builds a list
510510
of objectives and passes them to ONOS to be executed. The following
511-
code example shows Flow Objectives being constructed to specify an
511+
code example shows flow objectives being constructed to specify an
512512
end-to-end flow through the network. The process of applying them to
513513
the underlying devices is done elsewhere, and not included in the
514514
example.

0 commit comments

Comments
 (0)