[ovs-dev] [PATCH v5 0/5] Implement continuation (aka closure) support

Ben Pfaff blp at ovn.org
Sat Feb 20 00:40:14 UTC 2016


This series is also available at:
        https://github.com/blp/ovs-reviews/tree/l3-4
        git at github.com:blp/ovs-reviews.git l3-4

This is the fifth revision of my "closures" series.

The first version was:
http://openvswitch.org/pipermail/dev/2016-January/064607.html

The second version, unfortunately not marked v2, was:
https://patchwork.ozlabs.org/patch/574946/
and the v1->v2 changes were described at:
http://openvswitch.org/pipermail/dev/2016-January/064875.html

Changes v2->v3:
  - Patches 1 through 6 are new.
  - There's a terminology change starting in patch 6.  Now the process
    of pausing translation is called "freezing", and there are two users
    of freezing, which are recirculation and closures.
  - I added the ability to provide arbitrary user data on NXAST_PAUSE
    which is passed to the controller in a property on NXT_CLOSURE.
  - I made all the changes described in:
    http://openvswitch.org/pipermail/dev/2016-February/065984.html
  - I added a few more tests to ofp-print.at and ofp-actions.at.
  - Probably other refinements I've forgotten.

Changes v3->v4:
  - Several patches were applied and thus dropped from the series.
  - I added the previous L3 ARP patches at the end, revised (see below).
  - I had a major change of heart on the approach here.  Until now, I
    had an idea that "closures" were fundamentally different from
    OpenFlow "packet-ins" and thus deserved separate but parallel
    infrastructure.  Now that I started to use them for ARP, I realized
    that there in fact isn't that much difference.  Thus, this revision
    merges closures into packet-ins and drops the "closure" naming.
    Instead, what was previously a closure is just a packet-in that
    includes a "continuation", that is, the state that can be used to
    resume the pipeline.
  - The ARP series from before is tacked on the end here, but it is
    revised to use packet-ins instead of adding a specialized OpenFlow
    action for ARP.
  - The ARP patches (patches 8 and later) are not as mature as the rest of
    the series.  In particular, I haven't been able to figure out why the
    final patch is necessary; it may indicate a bug in my test for the ARP
    support.  In testing, I've definitely figured out that debugging is
    harder than it should be.

Changes v4->v5:
  - Several patches were applied and thus dropped from the series.
  - I fixed a bad test in the second-to-last patch (thanks Jarno).
  - I fixed a host endianness dependency in struct action_header,
    which affected patches 1 and 4.

Ben Pfaff (5):
  actions: Implement OVN "arp" action.
  ovn: Use callback function instead of simap for logical port number
    map.
  ovn-controller: Add data structure for indexing lports, multicast
    groups.
  ovn: Implement basic ARP support for L3 logical routers.
  [RFC] lflow: Disable egress table optimization.

 lib/ofp-actions.h               |  30 ++--
 lib/packets.c                   |  38 +++--
 lib/packets.h                   |   3 +-
 ovn/TODO                        |  55 ++-----
 ovn/controller/automake.mk      |   2 +
 ovn/controller/lflow.c          | 251 +++++++++++++++----------------
 ovn/controller/lflow.h          |  11 +-
 ovn/controller/lport.c          | 157 ++++++++++++++++++++
 ovn/controller/lport.h          |  67 +++++++++
 ovn/controller/ovn-controller.c |  47 +++---
 ovn/controller/pinctrl.c        | 321 ++++++++++++++++++++++++++++++++++++----
 ovn/controller/pinctrl.h        |   9 +-
 ovn/lib/actions.c               | 235 ++++++++++++++++++++++++++++-
 ovn/lib/actions.h               |  39 ++++-
 ovn/lib/expr.c                  | 141 +++++++++++++-----
 ovn/lib/expr.h                  |  16 +-
 ovn/northd/ovn-northd.8.xml     | 112 ++++++++------
 ovn/northd/ovn-northd.c         | 105 +++++++++----
 ovn/ovn-architecture.7.xml      |  78 +++++++---
 ovn/ovn-sb.ovsschema            |  15 +-
 ovn/ovn-sb.xml                  | 158 ++++++++++++++++++--
 ovn/utilities/ovn-sbctl.c       |   4 +
 tests/ovn.at                    | 190 ++++++++++++++++++++++--
 tests/test-ovn.c                |  20 ++-
 24 files changed, 1675 insertions(+), 429 deletions(-)
 create mode 100644 ovn/controller/lport.c
 create mode 100644 ovn/controller/lport.h

-- 
2.1.3




More information about the dev mailing list