[ovs-dev] [RFC 2/2] ovn: Add minimal software l2 gateway.

Russell Bryant russell at ovn.org
Fri Apr 1 15:26:10 UTC 2016


On Tue, Mar 29, 2016 at 9:47 PM, Russell Bryant <russell at ovn.org> wrote:

> This patch implements one approach to using ovn-controller to implement
> a software l2 gateway between logical and physical networks.
>
> A new logical port type called "gateway" is introduced here.  It is very
> close to how localnet ports work, with the following exception:
> A localnet port makes OVN use the physical network as the
> transport between hypervisors instead of tunnels. A gateway port still
> uses tunnels between all hypervisors, and packets only go to/from the
> specified physical network as needed via the chassis the gateway port
> is bound to.
>
> Signed-off-by: Russell Bryant <russell at ovn.org>
> ---
>  ovn/controller/binding.c            |   5 ++
>  ovn/controller/ovn-controller.8.xml |  15 ++--
>  ovn/controller/ovn-controller.c     |   2 +-
>  ovn/controller/patch.c              |  24 ++++--
>  ovn/controller/patch.h              |   2 +-
>  ovn/controller/physical.c           |  10 ++-
>  ovn/ovn-nb.xml                      |  19 +++++
>  ovn/ovn-sb.xml                      |  38 +++++++++
>  tests/ovn.at                        | 164
> ++++++++++++++++++++++++++++++++++++
>  9 files changed, 259 insertions(+), 20 deletions(-)
>
> diff --git a/ovn/controller/ovn-controller.8.xml
> b/ovn/controller/ovn-controller.8.xml
> index 69d4cc0..277d5b4 100644
> --- a/ovn/controller/ovn-controller.8.xml
> +++ b/ovn/controller/ovn-controller.8.xml
> @@ -169,18 +169,19 @@
>          <p>
>            The presence of this key identifies a patch port as one created
> by
>            <code>ovn-controller</code> to connect the integration bridge
> and
> -          another bridge to implement a <code>localnet</code> logical
> port.
> -          Its value is the name of the logical port with type=localnet
> that
> -          the port implements.
> +          another bridge to implement a <code>localnet</code> or
> +          <code>gateway</code> logical port.  Its value is the name of the
> +          logical port with <code>type</code> set to <code>localnet</code>
> +          or <code>gateway</code> that the port implements.
>            See <code>external_ids:ovn-bridge-mappings</code>, above,
>            for more information.
>          </p>
>
>          <p>
> -          Each <code>localnet</code> logical port is implemented as a
> pair of
> -          patch ports, one in the integration bridge, one in a different
> -          bridge, with the same
> <code>external-ids:ovn-localnet-port</code>
> -          value.
> +          Each <code>localnet</code> and <code>gateway</code> logical port
> +          is implemented as a pair of patch ports, one in the integration
> +          bridge, one in a different bridge, with the same
> +          <code>external-ids:ovn-localnet-port</code> value.
>          </p>
>        </dd>
>

Suggestion to self:

It probably makes sense to rename the "ovn-localnet-port" external-id to
something like "ovn-bridge-mapping".  That may help make it more clear that
the patch port connects br-int and another ovs bridge as defined by
ovn-bridge-mappings and that these patch ports are no longer specific to
"type=localnet" ports.

-- 
Russell Bryant



More information about the dev mailing list