[ovs-git] [openvswitch/ovs] a1d210: ovn-controller: Factor patch port management into ...

GitHub noreply at github.com
Sat Oct 17 06:52:52 UTC 2015


  Branch: refs/heads/master
  Home:   https://github.com/openvswitch/ovs
  Commit: a1d210a64f2b5a2661256aa50c200bf6ac1f3373
      https://github.com/openvswitch/ovs/commit/a1d210a64f2b5a2661256aa50c200bf6ac1f3373
  Author: Ben Pfaff <blp at nicira.com>
  Date:   2015-10-16 (Fri, 16 Oct 2015)

  Changed paths:
    M ovn/controller/automake.mk
    M ovn/controller/ovn-controller.c
    M ovn/controller/ovn-controller.h
    A ovn/controller/patch.c
    A ovn/controller/patch.h

  Log Message:
  -----------
  ovn-controller: Factor patch port management into new "patch" module.

Upcoming patches will introduce new extensive use of patch ports and it
seems reasonable to put it into its own file.

This is mostly code motion.  Code changes are limited to those necessary
to make the separated code compile, except for renaming
init_bridge_mappings() to patch_run().

Signed-off-by: Ben Pfaff <blp at nicira.com>
Acked-by: Justin Pettit <jpettit at nicira.com>


  Commit: cb08edc691d863dbac4327fc6c85c6fc2a408e1c
      https://github.com/openvswitch/ovs/commit/cb08edc691d863dbac4327fc6c85c6fc2a408e1c
  Author: Ben Pfaff <blp at nicira.com>
  Date:   2015-10-16 (Fri, 16 Oct 2015)

  Changed paths:
    M ovn/controller/patch.c

  Log Message:
  -----------
  patch: Bail out earlier if OVS IDL transactions cannot be executed.

The whole point of this module is side effects on the Open vSwitch
database, so the whole thing can be skipped if those are impossible.

Signed-off-by: Ben Pfaff <blp at nicira.com>
Acked-by: Justin Pettit <jpettit at nicira.com>


  Commit: 58bcc67cd136bd1734d108c50b2f91c530d2cb1b
      https://github.com/openvswitch/ovs/commit/58bcc67cd136bd1734d108c50b2f91c530d2cb1b
  Author: Ben Pfaff <blp at nicira.com>
  Date:   2015-10-16 (Fri, 16 Oct 2015)

  Changed paths:
    M ovn/controller/patch.c

  Log Message:
  -----------
  patch: Refactor to better support new kinds of patches.

Until now, the code here lumped together what was necessary to create and
destroy patch ports, with what was necessary to identify the patch ports
that were needed.  An upcoming patch will add new reasons to create patch
ports, so this commit more cleanly separates those two functions.

Signed-off-by: Ben Pfaff <blp at nicira.com>
Acked-by: Justin Pettit <jpettit at nicira.com>


  Commit: e51d619c27effc3f9b40c510c78eec44681b6077
      https://github.com/openvswitch/ovs/commit/e51d619c27effc3f9b40c510c78eec44681b6077
  Author: Ben Pfaff <blp at nicira.com>
  Date:   2015-10-16 (Fri, 16 Oct 2015)

  Changed paths:
    M ovn/controller/patch.c

  Log Message:
  -----------
  patch: Allow client to determine port names.

Calculating the patch port names from the bridge names makes sense when
there's only one pair of patch ports between a pair of bridges, but that
won't be the case for an upcoming use of patch ports.

This changes makes it easy to check for existing patch ports in
create_patch_port(), instead of in its caller, and since that seems like a
more sensible place this change also moves it there.

Signed-off-by: Ben Pfaff <blp at nicira.com>
Acked-by: Justin Pettit <jpettit at nicira.com>


  Commit: 14f82efde4592e8f062d00688978dc781b84f5d1
      https://github.com/openvswitch/ovs/commit/14f82efde4592e8f062d00688978dc781b84f5d1
  Author: Ben Pfaff <blp at nicira.com>
  Date:   2015-10-16 (Fri, 16 Oct 2015)

  Changed paths:
    M ovn/controller/ovn-controller.8.xml
    M ovn/controller/patch.c
    M ovn/controller/physical.c

  Log Message:
  -----------
  ovn-controller: Rename "ovn-patch-port" to "ovn-localnet-port".

An upcoming patch will introduce a different use for patch ports, so
ovn-patch-port would become an ambiguous name.

Signed-off-by: Ben Pfaff <blp at nicira.com>
Acked-by: Justin Pettit <jpettit at nicira.com>


  Commit: d387d24dca19988de1d8935c036a04fc2ed9a8c4
      https://github.com/openvswitch/ovs/commit/d387d24dca19988de1d8935c036a04fc2ed9a8c4
  Author: Ben Pfaff <blp at nicira.com>
  Date:   2015-10-16 (Fri, 16 Oct 2015)

  Changed paths:
    M ovn/TODO
    M ovn/controller/ovn-controller.8.xml
    M ovn/controller/patch.c
    M ovn/controller/physical.c
    M ovn/ovn-architecture.7.xml
    M ovn/ovn-sb.xml
    M tests/ovn-controller.at

  Log Message:
  -----------
  ovn: Implement logical patch ports.

This implementation is suboptimal for several reasons.  First, it
creates an OVS port for every OVN logical patch port, not just for the
ones that are actually useful on this hypervisor.  Second, it's
wasteful to create an OVS patch port per OVN logical patch port, when
really there's no benefit to them beyond a way to identify how a
packet ingressed into a logical datapath.

There are two obvious ways to improve the situation here, by modifying
OVS:

    1. Add a way to configure in OVS which fields are preserved on a
       hop across an OVS patch port.  If MFF_LOG_DATAPATH and
       MFF_LOG_INPORT were preserved, then only a single pair of OVS
       patch ports would be required regardless of the number of OVN
       logical patch ports.

    2. Add a new OpenFlow extension action modeled on "resubmit" that
       also saves and restores the packet data and metadata (the
       inability to do this is the only reason that "resubmit" can't
       be used already).  Or add OpenFlow extension actions to
       otherwise save and restore packet data and metadata.

We should probably choose one of those in the medium to long term, but
I don't know which one.

Signed-off-by: Ben Pfaff <blp at nicira.com>
Acked-by: Justin Pettit <jpettit at nicira.com>


  Commit: a20111174e368aba0e6d6869b8bbcd432cb38159
      https://github.com/openvswitch/ovs/commit/a20111174e368aba0e6d6869b8bbcd432cb38159
  Author: Ben Pfaff <blp at nicira.com>
  Date:   2015-10-16 (Fri, 16 Oct 2015)

  Changed paths:
    M ovn/controller/lflow.c
    M ovn/northd/ovn-northd.c
    M ovn/ovn-sb.xml

  Log Message:
  -----------
  ovn: Add new predicates for matching broadcast and multicast packets.

In my opinion, "eth.mcast" is a bit more readable than "eth.dst[40]", and
so on.

Signed-off-by: Ben Pfaff <blp at nicira.com>
Acked-by: Justin Pettit <jpettit at nicira.com>


  Commit: ae9ba6b2a869645b8c047beac48d742cf53e9c8f
      https://github.com/openvswitch/ovs/commit/ae9ba6b2a869645b8c047beac48d742cf53e9c8f
  Author: Ben Pfaff <blp at nicira.com>
  Date:   2015-10-16 (Fri, 16 Oct 2015)

  Changed paths:
    M ovn/TODO
    M ovn/ovn-nb.ovsschema
    M ovn/ovn-nb.xml

  Log Message:
  -----------
  ovn-nb: Extend schema to support networks of routers.

Signed-off-by: Ben Pfaff <blp at nicira.com>
Acked-by: Justin Pettit <jpettit at nicira.com>


  Commit: 2fa326a35201a01309c95060b64e6a063fb7f376
      https://github.com/openvswitch/ovs/commit/2fa326a35201a01309c95060b64e6a063fb7f376
  Author: Ben Pfaff <blp at nicira.com>
  Date:   2015-10-16 (Fri, 16 Oct 2015)

  Changed paths:
    M ovn/northd/ovn-northd.c
    M ovn/ovn-nb.ovsschema
    M ovn/ovn-nb.xml
    M ovn/utilities/ovn-nbctl.8.xml
    M ovn/utilities/ovn-nbctl.c
    M tests/ovn-controller-vtep.at
    M tests/ovn-nbctl.at
    M tests/ovn-sbctl.at
    M tests/ovn.at
    M tutorial/OVN-Tutorial.md
    M tutorial/ovn/env1/add-third-port.sh
    M tutorial/ovn/env1/setup.sh
    M tutorial/ovn/env2/setup.sh
    M tutorial/ovn/env3/setup.sh
    M tutorial/ovn/env4/setup2.sh
    M tutorial/ovn/env5/setup.sh
    M utilities/ovs-sim.1.xml

  Log Message:
  -----------
  ovn-nb: Rename Port_Bindings 'macs' column to 'addresses'.

In an upcoming commit this column will also support IP+MAC pairs.

Signed-off-by: Ben Pfaff <blp at nicira.com>
Acked-by: Justin Pettit <jpettit at nicira.com>


  Commit: 9834dcfe147990f52bd3fbd0fc75bd4eda189bcf
      https://github.com/openvswitch/ovs/commit/9834dcfe147990f52bd3fbd0fc75bd4eda189bcf
  Author: Ben Pfaff <blp at nicira.com>
  Date:   2015-10-16 (Fri, 16 Oct 2015)

  Changed paths:
    M ovn/TODO
    M ovn/ovn-nb.xml
    M ovn/utilities/ovn-nbctl.8.xml
    M ovn/utilities/ovn-nbctl.c

  Log Message:
  -----------
  ovn-nb: Add support for IP+MAC binding pairs in Port_Binding 'address'.

When a logical router can statically obtain the IP+MAC pairs for its
attached logical switches, it can avoid expensive ARP resolution.

Signed-off-by: Ben Pfaff <blp at nicira.com>
Acked-by: Justin Pettit <jpettit at nicira.com>


  Commit: 8351253cb9e767507bb7eec9cd0dbc4abc3e8cfd
      https://github.com/openvswitch/ovs/commit/8351253cb9e767507bb7eec9cd0dbc4abc3e8cfd
  Author: Ben Pfaff <blp at nicira.com>
  Date:   2015-10-16 (Fri, 16 Oct 2015)

  Changed paths:
    M ovn/ovn-nb.xml

  Log Message:
  -----------
  ovn-nb.xml: Reorganize documentation for Logical_Port table.

This uses the column grouping feature and the ability to document an
individual key within a column to better, in my opinion, organize the
documentation for the Logical_Port table.

This will make it easier to document a new port type that a future commit
will add.

Signed-off-by: Ben Pfaff <blp at nicira.com>
Acked-by: Justin Pettit <jpettit at nicira.com>


  Commit: 27e3e5b8968092a5c49919518c2e1083625ef241
      https://github.com/openvswitch/ovs/commit/27e3e5b8968092a5c49919518c2e1083625ef241
  Author: Ben Pfaff <blp at nicira.com>
  Date:   2015-10-16 (Fri, 16 Oct 2015)

  Changed paths:
    M ovn/TODO
    M ovn/ovn-nb.ovsschema
    M ovn/ovn-nb.xml

  Log Message:
  -----------
  ovn-nb: Change how router ports work.

This is for two reasons.  First, a router port is not really much of a
special case from a logical switch's point of view.  For switching
purposes, it works exactly the same as any other port.  Having a special
column for it just adds artificial special cases.

Second, the previous form of router ports specified that all of them use
the logical port name "ROUTER".  This seemed to make sense at the time but
now it is just adding more special cases.  Instead just giving them names
like any other port makes life easier.

Signed-off-by: Ben Pfaff <blp at nicira.com>
Acked-by: Justin Pettit <jpettit at nicira.com>


  Commit: 8e3eb50e93ce19bca9dc9331db061fcc9ac28420
      https://github.com/openvswitch/ovs/commit/8e3eb50e93ce19bca9dc9331db061fcc9ac28420
  Author: Ben Pfaff <blp at nicira.com>
  Date:   2015-10-16 (Fri, 16 Oct 2015)

  Changed paths:
    M ovn/ovn-nb.ovsschema
    M ovn/ovn-nb.xml

  Log Message:
  -----------
  ovn-nb: Add "enabled" column to Logical_Router_Port.

This is just for symmetry with Logical_Port, since it seems that if users
want to be able to disable switch ports they might want to disable router
ports as well.

There is no "up" column because a logical router port doesn't have the same
concept.

Signed-off-by: Ben Pfaff <blp at nicira.com>
Acked-by: Justin Pettit <jpettit at nicira.com>


  Commit: 614404518f67812dbf35d30aca2686ebfd8f6aaa
      https://github.com/openvswitch/ovs/commit/614404518f67812dbf35d30aca2686ebfd8f6aaa
  Author: Ben Pfaff <blp at nicira.com>
  Date:   2015-10-16 (Fri, 16 Oct 2015)

  Changed paths:
    M lib/meta-flow.c
    M lib/packets.c
    M lib/packets.h

  Log Message:
  -----------
  packets: New function ip_parse_masked().

Signed-off-by: Ben Pfaff <blp at nicira.com>
Acked-by: Justin Pettit <jpettit at nicira.com>


  Commit: 880fcd147e2321b6f215fa368e726d81edb1f054
      https://github.com/openvswitch/ovs/commit/880fcd147e2321b6f215fa368e726d81edb1f054
  Author: Ben Pfaff <blp at nicira.com>
  Date:   2015-10-16 (Fri, 16 Oct 2015)

  Changed paths:
    M ovn/northd/ovn-northd.c

  Log Message:
  -----------
  ovn-northd: Add stages for logical routers.

Until now, ovn-northd has only set up flows for logical switches.  With the
arrival of logical routers, it needs to set up flows for them too.  The
stages within logical routers are completely different from those for
logical switches, so this prepares for that by adding logic for identifying
those stages.

Signed-off-by: Ben Pfaff <blp at nicira.com>
Acked-by: Justin Pettit <jpettit at nicira.com>


  Commit: 9975d7beb36ab3aadfd07c9d566f8d3d1d340fc4
      https://github.com/openvswitch/ovs/commit/9975d7beb36ab3aadfd07c9d566f8d3d1d340fc4
  Author: Ben Pfaff <blp at nicira.com>
  Date:   2015-10-16 (Fri, 16 Oct 2015)

  Changed paths:
    M ovn/TODO
    M ovn/northd/ovn-northd.8.xml
    M ovn/northd/ovn-northd.c
    M ovn/ovn-sb.xml
    M tests/ovn.at

  Log Message:
  -----------
  ovn: Implement basic logical L3 routing.

This implements basic logical L3 routing.  It has a lot of caveats,
including the following regarding testing:

   * Only single-router hops have been tested.  Chains or trees of
     logical routers may work but definitely need testing and may
     need a little extra code.

   * No testing of logical router ARP replies.

   * Not enough testing in general.

ovn/TODO describes a lot of other caveats in terms of the work needed
to fix them.

Signed-off-by: Ben Pfaff <blp at nicira.com>
Acked-by: Justin Pettit <jpettit at nicira.com>


Compare: https://github.com/openvswitch/ovs/compare/69a832cfc033...9975d7beb36a


More information about the git mailing list