[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openvswitch-dev
Subject:    [ovs-dev] [RFC 2/2] ovn: Add minimal software l2 gateway.
From:       russell () ovn ! org (Russell Bryant)
Date:       2016-03-31 20:58:51
Message-ID: CA+0q_PhVxE+D0PskmFqQh2ewHgD7kNhQx8tF6SSWDRQkNcUybg () mail ! gmail ! com
[Download RAW message or body]

On Thu, Mar 31, 2016 at 4:14 PM, Ben Pfaff <blp at ovn.org> wrote:

> On Tue, Mar 29, 2016 at 06:47:43PM -0700, Russell Bryant 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>
>
> This isn't a full review yet but I have some comments.
>
> Below, I don't think it's guaranteed that 'chassis_id != NULL'.  There's
> a check for that just above the patch context, and I don't think that
> br_int != NULL implies that chassis_id != NULL.  Chasing the usage of
> chassis_id down a few levels, it appears to be used without a null test.


OK, I can fix that up.

It'd be a broken setup for it to be NULL, but we definitely shouldn't crash
in that case.  :-)


>
> > --- a/ovn/controller/ovn-controller.c
> > +++ b/ovn/controller/ovn-controller.c
> > @@ -293,7 +293,7 @@ main(int argc, char *argv[])
> >          }
> >
> >          if (br_int) {
> > -            patch_run(&ctx, br_int, &local_datapaths);
> > +            patch_run(&ctx, br_int, &local_datapaths, chassis_id);
> >
> >              struct lport_index lports;
> >              struct mcgroup_index mcgroups;
>
> When I apply the hunk below I get two <dt>s in a row about "localnet",
> which seems like a mistake.  Is the second one supposed to be about
> "gateway"?


It's a typo.  "localnet" should be "gateway" in the hunk of the patch
quoted below.  copy/paste error.

The two port types are *very* similar.  It's just that some external entity
will bind a gateway port to a single chassis.  OpenStack would do this
binding in that case.  Packets to/from the physical network use this
gateway port.  Otherwise, the overlay is used as usual.

> --- a/ovn/ovn-sb.xml
> > +++ b/ovn/ovn-sb.xml
> > @@ -1299,6 +1299,14 @@ tcp.flags = RST;
> >              to model direct connectivity to an existing network.
> >            </dd>
> >
> > +          <dt><code>localnet</code></dt>
> > +          <dd>
> > +            A connection to a physical network.  The chassis this
> > +            <ref table="Port_Binding"/> is bound to will serve as
> > +            an L2 gateway to the network named by
> > +            <ref column="options"
> table="Port_Binding"/>:<code>network_name</code>.
> > +          </dd>
> > +
> >            <dt><code>vtep</code></dt>
> >            <dd>
> >              A port to a logical switch on a VTEP gateway chassis.  In
> order to
>



-- 
Russell Bryant

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic