@@ -451,21 +451,22 @@ rest of this section.
451451There are three types of flow objectives: *Filtering *, *Next *, and
452452*Forwarding *. Filtering objectives determine whether or not traffic
453453should 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
487487the 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,
490490Pipeliner leverages *Pipeconf *, a structure that maintains
491491associations among the following elements:
492492
4934931. A model of the pipeline for each target switch.
4944942. 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
497497Pipeconf 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
502502end-to-end workflow for a developer involves being aware of both a P4
503503architecture model (e.g., ``v1model.p4 ``) when programming the data
504504plane 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
506506will 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
509509associated constructor routines. The control application builds a list
510510of 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
512512end-to-end flow through the network. The process of applying them to
513513the underlying devices is done elsewhere, and not included in the
514514example.
0 commit comments