ovn: Implement logical patch ports.
authorBen Pfaff <blp@nicira.com>
Fri, 16 Oct 2015 20:32:03 +0000 (13:32 -0700)
committerBen Pfaff <blp@nicira.com>
Sat, 17 Oct 2015 06:52:40 +0000 (23:52 -0700)
commitd387d24dca19988de1d8935c036a04fc2ed9a8c4
tree97b3320dbb812fa3d25c0b2781d621b813dc3c88
parent14f82efde4592e8f062d00688978dc781b84f5d1
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@nicira.com>
Acked-by: Justin Pettit <jpettit@nicira.com>
ovn/TODO
ovn/controller/ovn-controller.8.xml
ovn/controller/patch.c
ovn/controller/physical.c
ovn/ovn-architecture.7.xml
ovn/ovn-sb.xml
tests/ovn-controller.at