On Tue, Apr 12, 2016 at 2:17 PM, Han Zhou <zhou...@gmail.com> wrote:

>
>
> On Tue, Apr 12, 2016 at 11:02 AM, Russell Bryant <russ...@ovn.org> wrote:
> >
> > On Tue, Apr 12, 2016 at 1:35 PM, Mickey Spiegel <emspi...@us.ibm.com>
> wrote:
> >
> > > One comment below.
> > >
> > > -----"dev" <dev-boun...@openvswitch.org> wrote: -----
> > >
> > > >To: Ben Pfaff <b...@ovn.org>
> > > >From: Russell Bryant
> > > >Sent by: "dev"
> > > >Date: 04/12/2016 09:37AM
> > > >Cc: ovs dev <dev@openvswitch.org>
> > > >Subject: Re: [ovs-dev] [PATCH 3/3] ovn: Add address_set() support for
> > > >ACLs.
> > > >
> > >
> > > >On Mon, Apr 11, 2016 at 12:08 PM, Ben Pfaff <b...@ovn.org> wrote:
> > > >
> > > >> On Tue, Apr 05, 2016 at 05:24:19PM -0400, Russell Bryant wrote:
> > > >> > This feature was originally proposed here:
> > > >> >
> > > >> > http://openvswitch.org/pipermail/dev/2016-March/067440.html
> > > >> >
> > > >> > A common use case for OVN ACLs involves needing to match a set of
> IP
> > > >> > addresses.
> > > >> >
> > > >> > outport == "lp1" && ip4.src == {10.0.0.5, 10.0.0.25, 10.0.0.50}
> > > >> >
> > > >> > This example match only has 3 addresses, but it could easily have
> > > >> > hundreds of addresses. In some cases, the same large set of
> addresses
> > > >> > needs to be used in several ACLs.
> > > >> >
> > > >> > This patch adds a new Address_Set table to OVN_Northbound so that
> a
> > > set
> > > >> > of addresses can be specified once and then referred to by name in
> > > ACLs.
> > > >> > To recreate the above example, you would first create an address
> set:
> > > >> >
> > > >> > $ ovn-nbctl create Address_Set name=set1
> > > >> addresses=10.0.0.5,10.0.0.25,10.0.0.50
> > > >> >
> > > >> > Then you can refer to this address set by name in an ACL match:
> > > >> >
> > > >> > outport == "lp1" && ip4.src == address_set(set1)
> > > >> >
> > > >> > Signed-off-by: Russell Bryant <russ...@ovn.org>
> > > >>
> > > >> It might be worth making address sets scoped somehow. Otherwise it
> > > >> might eventually become a bottleneck if there are many address sets
> that
> > > >> a given hypervisor does not need to know about.
> > > >>
> > > >
> > > >Good point.
> > > >
> > > >The primary use case I have for this is to use in the match column of
> OVN
> > > >ACLs. ACLs are scoped to logical switches, so we could do the same for
> > > >address sets. Having them scoped equally makes sense to me.
> > > >
> > > >The only downside I can think of is that it will cause OpenStack to
> have
> > > to
> > > >duplicate the same address set across multiple logical switches in
> some
> > > >cases. I think that's probably OK though. It's still a huge
> improvement
> > > >over what it does today.
> > >
> > > Thinking of the use of remote_group_id in OpenStack security groups, I
> > > believe it would be common for the same address set to be used in all
> > > logical switches that are connected to the same logical router. Since
> there
> > > is no notion of project in OVN, it is not so obvious what to scope
> address
> > > sets to.
> > >
> >
> > Yes, that's right.  I was just assuming that the common case was not
> having
> > having that many networks, so that we still got a significant
> improvement.
> >
> > One option would be to skip trying to scope it for now and revisit if it
> > becomes a bottleneck.
> >
>
> Agree, it would be better not scope address set to lswitches.
>
> >
> > > Would it be good enough to have controllers check to see if the address
> > > set is used by any of the local logical switches?
> > >
> >
> > That's not easy to do.  That check means scanning all logical flows to
> see
> > if the address set is referenced.  We need to load all address sets
> before
> > processing logical flows so that we can actually make sense of the
> address
> > set reference when we hit one.
> >
>
> Since we will know which acls are using an address set, and acls are
> scoped to lswitches, then we can deduce the lswitches that uses an address
> set. How about storing this information in a new column of address set
> table in SB, so that ovn-controller can utilize this information for
> optimization? (Of course this is not required in the first version).
>

That's a clever idea.  I'll think about that some more when working on the
next revision.

-- 
Russell Bryant
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to