Re: [ovs-discuss] OVN: availability zones concept

2019-03-25 Thread Lucas Alvares Gomes
Hi,

Thanks all! I will start working on it pretty soon then.

> Lucas, I support you moving forward with 1), because:
> a) it is more simple and straightforward, yet the configuration on
> chassis won't (shouldn't) create compatibility issue
> b) it doesn't conflict with further optimization with 2) or 3) on top
> of it when needed in the future
>

That's very true. This work is about creating a logical separation for
Chassis and 2) and 3) is mostly about how the tunnels are formed.

> P.S. Just a comment on the troubleshooting concerns. It seems to me 2)
> doesn't necessarily increase difficulty of trouble-shooting: if lport
> A and lport B cannot communicate, the first step to check should
> always be making sure the logical datapath allows them to talk,
> regardless of the approaches, and if the answer is yes, you know the
> tunnel is expected between the chassises. For monitoring, tunnels do
> not have states unless BFD is enabled (for GW HA), so maybe checking
> on BFD failure status itself is sufficient.
>

Good points!

Cheers,
Lucas
___
discuss mailing list
disc...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss


Re: [ovs-discuss] OVN: availability zones concept

2019-03-22 Thread Han Zhou
On Fri, Mar 22, 2019 at 4:36 AM Daniel Alvarez  wrote:
>
>
>
>
> > On 22 Mar 2019, at 13:22, Lucas Alvares Gomes  wrote:
> >
> > Hi,
> >
> > Getting back to this topic because we do have people (read clients)
> > interested in this work for their Telco/Edge computing uses cases as a
> > way to preventing each edge site to try to create tunnels with every
> > node on every site.
> >
> > Also, another request we saw which this feature would help is related
> > to security where people want to create "trust zones" and prevent
> > computes in a more secure zone to communicate with a less secure zone.
> >
> > As Dan Sneddon pointed out in this thread, it's possible to use
> > firewalls to workaround these problems but the approach is not ideal
> > (and may result in negative consequences) because each Chassis in OVN
> > will still try again and again to form the tunnel mesh with every
> > other Chassis but it will fail/timeout over and over.
> >
> > Regarding to the approach to implement this I see we have a couple
> > ideas floating around:
> >
> > 1. Explicit setting the transport zone(s) in the OpenVSwitch table for
> > the Chassis.
> >
> > 2. Dynamically creating tunnels between Chassis that are logically
> > connected with each other.
> >
> > 3. Creating the tunnels on demand when the first packet is going
> > to/from a Chassis (although Ben has stated that he is not pushing for
> > this).
> >
> > So, while every approach has their pos/cons, personally (and also by
> > talking to some work colleagues), I think that 1. is probably the
> > best/most straight forward way to go with this because since it's
> > explicit it is also the easiest to troubleshoot/monitor what's going
> > on with the network. The approach 2. and 3., while very interesting
> > from an engineering point of view, might not be so interesting for
> > folks responsible for monitoring the network because it leaves the
> > compute nodes in some "unknown" state (is there a tunnel between
> > Chassis A and B ? no/yes/not yet ?).

Lucas, I support you moving forward with 1), because:
a) it is more simple and straightforward, yet the configuration on
chassis won't (shouldn't) create compatibility issue
b) it doesn't conflict with further optimization with 2) or 3) on top
of it when needed in the future

P.S. Just a comment on the troubleshooting concerns. It seems to me 2)
doesn't necessarily increase difficulty of trouble-shooting: if lport
A and lport B cannot communicate, the first step to check should
always be making sure the logical datapath allows them to talk,
regardless of the approaches, and if the answer is yes, you know the
tunnel is expected between the chassises. For monitoring, tunnels do
not have states unless BFD is enabled (for GW HA), so maybe checking
on BFD failure status itself is sufficient.

> >
> > If there's no objection from people in this thread (specially Han and
> > Ben) I would be more than happy in helping implementing this feature.
> My vote doesn’t count much because that’s the approach I originally proposed 
> in the first email of this thread but having thought about everything thrown 
> here, I’m inclined to go ahead with it. It doesn’t do any harm if not used 
> and brings the value we need for the commented use case.
>
> Thanks a lot Lucas for volunteering!
>
>
> >
> > Cheers,
> > Lucas
> >
> >> On Thu, Mar 7, 2019 at 6:54 PM Ben Pfaff  wrote:
> >>
> >>> On Wed, Mar 06, 2019 at 10:32:29PM -0800, Han Zhou wrote:
>  On Wed, Mar 6, 2019 at 9:06 AM Ben Pfaff  wrote:
> 
> > On Tue, Mar 05, 2019 at 09:39:37PM -0800, Han Zhou wrote:
> >> On Tue, Mar 5, 2019 at 7:24 PM Ben Pfaff  wrote:
> >> What's the effective difference between an OVN deployment with 3 zones,
> >> and a collection of 3 OVN deployments?  Is it simply that the 3-zone
> >> deployment shares databases?  Is that a significant advantage?
> >
> > Hi Ben, based on the discussions there are two cases:
> >
> > For completely separated zones (no overlapping) v.s. separate OVN
> > deployments, the difference is that separate OVN deployments requires
> > some sort of federation at a higher layer, so that a single CMS can
> > operate multiple OVN deployments. Of course separate zones in same OVN
> > still requires changes in CMS to operate but the change may be smaller
> > in some cases.
> >
> > For overlapping zones v.s. separate OVN deployments, the difference is
> > more obvious. Separate OVN deployments doesn't allow overlapping.
> > Overlapping zones allows sharing gateways between different groups of
> > hypervisors.
> 
>  OK.  The difference is obvious in the case where there is overlap.
> 
> > If the purpose is only reducing tunnel mesh size, I think it may be
> > better to avoid the zone concept but instead create tunnels (and bfd
> > sessions) on-demand, as discussed here:
> > https://mail.openvswitch.org/pipermail/ovs-discuss/2019-March/0

Re: [ovs-discuss] OVN: availability zones concept

2019-03-22 Thread Ben Pfaff
On Fri, Mar 22, 2019 at 11:22:50AM +, Lucas Alvares Gomes wrote:
> Hi,
> 
> Getting back to this topic because we do have people (read clients)
> interested in this work for their Telco/Edge computing uses cases as a
> way to preventing each edge site to try to create tunnels with every
> node on every site.
> 
> Also, another request we saw which this feature would help is related
> to security where people want to create "trust zones" and prevent
> computes in a more secure zone to communicate with a less secure zone.
> 
> As Dan Sneddon pointed out in this thread, it's possible to use
> firewalls to workaround these problems but the approach is not ideal
> (and may result in negative consequences) because each Chassis in OVN
> will still try again and again to form the tunnel mesh with every
> other Chassis but it will fail/timeout over and over.
> 
> Regarding to the approach to implement this I see we have a couple
> ideas floating around:
> 
> 1. Explicit setting the transport zone(s) in the OpenVSwitch table for
> the Chassis.
> 
> 2. Dynamically creating tunnels between Chassis that are logically
> connected with each other.
> 
> 3. Creating the tunnels on demand when the first packet is going
> to/from a Chassis (although Ben has stated that he is not pushing for
> this).
> 
> So, while every approach has their pos/cons, personally (and also by
> talking to some work colleagues), I think that 1. is probably the
> best/most straight forward way to go with this because since it's
> explicit it is also the easiest to troubleshoot/monitor what's going
> on with the network. The approach 2. and 3., while very interesting
> from an engineering point of view, might not be so interesting for
> folks responsible for monitoring the network because it leaves the
> compute nodes in some "unknown" state (is there a tunnel between
> Chassis A and B ? no/yes/not yet ?).
> 
> If there's no objection from people in this thread (specially Han and
> Ben) I would be more than happy in helping implementing this feature.

I don't object.  I'm happy to see OVN become appropriate for more use
cases.
___
discuss mailing list
disc...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss


Re: [ovs-discuss] OVN: availability zones concept

2019-03-22 Thread Daniel Alvarez



> On 22 Mar 2019, at 13:22, Lucas Alvares Gomes  wrote:
> 
> Hi,
> 
> Getting back to this topic because we do have people (read clients)
> interested in this work for their Telco/Edge computing uses cases as a
> way to preventing each edge site to try to create tunnels with every
> node on every site.
> 
> Also, another request we saw which this feature would help is related
> to security where people want to create "trust zones" and prevent
> computes in a more secure zone to communicate with a less secure zone.
> 
> As Dan Sneddon pointed out in this thread, it's possible to use
> firewalls to workaround these problems but the approach is not ideal
> (and may result in negative consequences) because each Chassis in OVN
> will still try again and again to form the tunnel mesh with every
> other Chassis but it will fail/timeout over and over.
> 
> Regarding to the approach to implement this I see we have a couple
> ideas floating around:
> 
> 1. Explicit setting the transport zone(s) in the OpenVSwitch table for
> the Chassis.
> 
> 2. Dynamically creating tunnels between Chassis that are logically
> connected with each other.
> 
> 3. Creating the tunnels on demand when the first packet is going
> to/from a Chassis (although Ben has stated that he is not pushing for
> this).
> 
> So, while every approach has their pos/cons, personally (and also by
> talking to some work colleagues), I think that 1. is probably the
> best/most straight forward way to go with this because since it's
> explicit it is also the easiest to troubleshoot/monitor what's going
> on with the network. The approach 2. and 3., while very interesting
> from an engineering point of view, might not be so interesting for
> folks responsible for monitoring the network because it leaves the
> compute nodes in some "unknown" state (is there a tunnel between
> Chassis A and B ? no/yes/not yet ?).
> 
> If there's no objection from people in this thread (specially Han and
> Ben) I would be more than happy in helping implementing this feature.
My vote doesn’t count much because that’s the approach I originally proposed in 
the first email of this thread but having thought about everything thrown here, 
I’m inclined to go ahead with it. It doesn’t do any harm if not used and brings 
the value we need for the commented use case.

Thanks a lot Lucas for volunteering!


> 
> Cheers,
> Lucas
> 
>> On Thu, Mar 7, 2019 at 6:54 PM Ben Pfaff  wrote:
>> 
>>> On Wed, Mar 06, 2019 at 10:32:29PM -0800, Han Zhou wrote:
 On Wed, Mar 6, 2019 at 9:06 AM Ben Pfaff  wrote:
 
> On Tue, Mar 05, 2019 at 09:39:37PM -0800, Han Zhou wrote:
>> On Tue, Mar 5, 2019 at 7:24 PM Ben Pfaff  wrote:
>> What's the effective difference between an OVN deployment with 3 zones,
>> and a collection of 3 OVN deployments?  Is it simply that the 3-zone
>> deployment shares databases?  Is that a significant advantage?
> 
> Hi Ben, based on the discussions there are two cases:
> 
> For completely separated zones (no overlapping) v.s. separate OVN
> deployments, the difference is that separate OVN deployments requires
> some sort of federation at a higher layer, so that a single CMS can
> operate multiple OVN deployments. Of course separate zones in same OVN
> still requires changes in CMS to operate but the change may be smaller
> in some cases.
> 
> For overlapping zones v.s. separate OVN deployments, the difference is
> more obvious. Separate OVN deployments doesn't allow overlapping.
> Overlapping zones allows sharing gateways between different groups of
> hypervisors.
 
 OK.  The difference is obvious in the case where there is overlap.
 
> If the purpose is only reducing tunnel mesh size, I think it may be
> better to avoid the zone concept but instead create tunnels (and bfd
> sessions) on-demand, as discussed here:
> https://mail.openvswitch.org/pipermail/ovs-discuss/2019-March/048281.html
 
 Except in cases where we have BFD sessions, it is possible to entirely
 avoid having explicitly defined tunnels, since the tunnels can be
 defined in the flow table.  The ovs-fields(7) manpage describes these
 under "flow-based tunnels" in the TUNNEL FIELDS section.  Naively, doing
 it this way would require, on each hypervisor, a few OpenFlow flows per
 remote chassis, as opposed to one port per remote chassis.  That
 probably scales better.  If necessary, it could be made to scale better
 than that by using send-to-controller actions to add flows for tunnels
 as packets arrive for them or as packets need to go through them.
>>> 
>>> Thanks Ben for the pointer. I have to admit I was not aware of these
>>> different ways of using tunnels. The documentation is very clear, and
>>> now I understand what OVN currently uses is "Intermediate models",
>>> i.e. partially flow-based - remote-ips are port based while keys are
>>> flow based.
>> 
>> Thank

Re: [ovs-discuss] OVN: availability zones concept

2019-03-22 Thread Lucas Alvares Gomes
Hi,

Getting back to this topic because we do have people (read clients)
interested in this work for their Telco/Edge computing uses cases as a
way to preventing each edge site to try to create tunnels with every
node on every site.

Also, another request we saw which this feature would help is related
to security where people want to create "trust zones" and prevent
computes in a more secure zone to communicate with a less secure zone.

As Dan Sneddon pointed out in this thread, it's possible to use
firewalls to workaround these problems but the approach is not ideal
(and may result in negative consequences) because each Chassis in OVN
will still try again and again to form the tunnel mesh with every
other Chassis but it will fail/timeout over and over.

Regarding to the approach to implement this I see we have a couple
ideas floating around:

1. Explicit setting the transport zone(s) in the OpenVSwitch table for
the Chassis.

2. Dynamically creating tunnels between Chassis that are logically
connected with each other.

3. Creating the tunnels on demand when the first packet is going
to/from a Chassis (although Ben has stated that he is not pushing for
this).

So, while every approach has their pos/cons, personally (and also by
talking to some work colleagues), I think that 1. is probably the
best/most straight forward way to go with this because since it's
explicit it is also the easiest to troubleshoot/monitor what's going
on with the network. The approach 2. and 3., while very interesting
from an engineering point of view, might not be so interesting for
folks responsible for monitoring the network because it leaves the
compute nodes in some "unknown" state (is there a tunnel between
Chassis A and B ? no/yes/not yet ?).

If there's no objection from people in this thread (specially Han and
Ben) I would be more than happy in helping implementing this feature.

Cheers,
Lucas

On Thu, Mar 7, 2019 at 6:54 PM Ben Pfaff  wrote:
>
> On Wed, Mar 06, 2019 at 10:32:29PM -0800, Han Zhou wrote:
> > On Wed, Mar 6, 2019 at 9:06 AM Ben Pfaff  wrote:
> > >
> > > On Tue, Mar 05, 2019 at 09:39:37PM -0800, Han Zhou wrote:
> > > > On Tue, Mar 5, 2019 at 7:24 PM Ben Pfaff  wrote:
> > > > > What's the effective difference between an OVN deployment with 3 
> > > > > zones,
> > > > > and a collection of 3 OVN deployments?  Is it simply that the 3-zone
> > > > > deployment shares databases?  Is that a significant advantage?
> > > >
> > > > Hi Ben, based on the discussions there are two cases:
> > > >
> > > > For completely separated zones (no overlapping) v.s. separate OVN
> > > > deployments, the difference is that separate OVN deployments requires
> > > > some sort of federation at a higher layer, so that a single CMS can
> > > > operate multiple OVN deployments. Of course separate zones in same OVN
> > > > still requires changes in CMS to operate but the change may be smaller
> > > > in some cases.
> > > >
> > > > For overlapping zones v.s. separate OVN deployments, the difference is
> > > > more obvious. Separate OVN deployments doesn't allow overlapping.
> > > > Overlapping zones allows sharing gateways between different groups of
> > > > hypervisors.
> > >
> > > OK.  The difference is obvious in the case where there is overlap.
> > >
> > > > If the purpose is only reducing tunnel mesh size, I think it may be
> > > > better to avoid the zone concept but instead create tunnels (and bfd
> > > > sessions) on-demand, as discussed here:
> > > > https://mail.openvswitch.org/pipermail/ovs-discuss/2019-March/048281.html
> > >
> > > Except in cases where we have BFD sessions, it is possible to entirely
> > > avoid having explicitly defined tunnels, since the tunnels can be
> > > defined in the flow table.  The ovs-fields(7) manpage describes these
> > > under "flow-based tunnels" in the TUNNEL FIELDS section.  Naively, doing
> > > it this way would require, on each hypervisor, a few OpenFlow flows per
> > > remote chassis, as opposed to one port per remote chassis.  That
> > > probably scales better.  If necessary, it could be made to scale better
> > > than that by using send-to-controller actions to add flows for tunnels
> > > as packets arrive for them or as packets need to go through them.
> >
> > Thanks Ben for the pointer. I have to admit I was not aware of these
> > different ways of using tunnels. The documentation is very clear, and
> > now I understand what OVN currently uses is "Intermediate models",
> > i.e. partially flow-based - remote-ips are port based while keys are
> > flow based.
>
> Thanks for the documentation fixes!
>
> > While purely flow-based tunnel is attractive in terms of flexibility,
> > it seems not fit very well for OVN use case because we do need BFD
> > sessions.
>
> I think that OVN only uses BFD for a few of its ports--only for gateways
> with HA, right?  Those could continue to have ports.
>
> > For the "send-to-controller", i.e. reactively set up flows when
> > packets arrives, I hope it is not

Re: [ovs-discuss] OVN: availability zones concept

2019-03-07 Thread Ben Pfaff
On Wed, Mar 06, 2019 at 10:32:29PM -0800, Han Zhou wrote:
> On Wed, Mar 6, 2019 at 9:06 AM Ben Pfaff  wrote:
> >
> > On Tue, Mar 05, 2019 at 09:39:37PM -0800, Han Zhou wrote:
> > > On Tue, Mar 5, 2019 at 7:24 PM Ben Pfaff  wrote:
> > > > What's the effective difference between an OVN deployment with 3 zones,
> > > > and a collection of 3 OVN deployments?  Is it simply that the 3-zone
> > > > deployment shares databases?  Is that a significant advantage?
> > >
> > > Hi Ben, based on the discussions there are two cases:
> > >
> > > For completely separated zones (no overlapping) v.s. separate OVN
> > > deployments, the difference is that separate OVN deployments requires
> > > some sort of federation at a higher layer, so that a single CMS can
> > > operate multiple OVN deployments. Of course separate zones in same OVN
> > > still requires changes in CMS to operate but the change may be smaller
> > > in some cases.
> > >
> > > For overlapping zones v.s. separate OVN deployments, the difference is
> > > more obvious. Separate OVN deployments doesn't allow overlapping.
> > > Overlapping zones allows sharing gateways between different groups of
> > > hypervisors.
> >
> > OK.  The difference is obvious in the case where there is overlap.
> >
> > > If the purpose is only reducing tunnel mesh size, I think it may be
> > > better to avoid the zone concept but instead create tunnels (and bfd
> > > sessions) on-demand, as discussed here:
> > > https://mail.openvswitch.org/pipermail/ovs-discuss/2019-March/048281.html
> >
> > Except in cases where we have BFD sessions, it is possible to entirely
> > avoid having explicitly defined tunnels, since the tunnels can be
> > defined in the flow table.  The ovs-fields(7) manpage describes these
> > under "flow-based tunnels" in the TUNNEL FIELDS section.  Naively, doing
> > it this way would require, on each hypervisor, a few OpenFlow flows per
> > remote chassis, as opposed to one port per remote chassis.  That
> > probably scales better.  If necessary, it could be made to scale better
> > than that by using send-to-controller actions to add flows for tunnels
> > as packets arrive for them or as packets need to go through them.
> 
> Thanks Ben for the pointer. I have to admit I was not aware of these
> different ways of using tunnels. The documentation is very clear, and
> now I understand what OVN currently uses is "Intermediate models",
> i.e. partially flow-based - remote-ips are port based while keys are
> flow based.

Thanks for the documentation fixes!

> While purely flow-based tunnel is attractive in terms of flexibility,
> it seems not fit very well for OVN use case because we do need BFD
> sessions. 

I think that OVN only uses BFD for a few of its ports--only for gateways
with HA, right?  Those could continue to have ports.

> For the "send-to-controller", i.e. reactively set up flows when
> packets arrives, I hope it is not really needed for solving the tunnel
> scaling problem, since it introduces data plane latency which could be
> a bigger problem. (But I am not sure if reactive mode in general is a
> good idea - it might be a reasonable trade-off for solving the scale
> problem of each HV pre-installing flows for all related datapaths in a
> full-mesh alike scenario. Anyway, not directly related to current
> topic).

It would introduce data plane latency for the first packet to go to or
from a particular hypervisor.  After that there would be no further
additional latency.  It would probably not be noticeable.

Let me be clear that I am not pushing this solution.  It will complicate
things, and I do not like unnecessary complication.  I am just pointing
out that is possible.

> So I would propose to keep the current partially flow-based tunnel
> usage in OVN and optimize the tunnel setup only between peers that are
> logically connected, if this satisfies the scaling goal of OVN users.
> Even with this optimization, we may need to make it as a configurable
> option, since in small scale use cases users may in practice prefer
> the original behavior to avoid the latency of tunnel setup.

OK.
___
discuss mailing list
disc...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss


Re: [ovs-discuss] OVN: availability zones concept

2019-03-06 Thread Han Zhou
On Wed, Mar 6, 2019 at 9:06 AM Ben Pfaff  wrote:
>
> On Tue, Mar 05, 2019 at 09:39:37PM -0800, Han Zhou wrote:
> > On Tue, Mar 5, 2019 at 7:24 PM Ben Pfaff  wrote:
> > > What's the effective difference between an OVN deployment with 3 zones,
> > > and a collection of 3 OVN deployments?  Is it simply that the 3-zone
> > > deployment shares databases?  Is that a significant advantage?
> >
> > Hi Ben, based on the discussions there are two cases:
> >
> > For completely separated zones (no overlapping) v.s. separate OVN
> > deployments, the difference is that separate OVN deployments requires
> > some sort of federation at a higher layer, so that a single CMS can
> > operate multiple OVN deployments. Of course separate zones in same OVN
> > still requires changes in CMS to operate but the change may be smaller
> > in some cases.
> >
> > For overlapping zones v.s. separate OVN deployments, the difference is
> > more obvious. Separate OVN deployments doesn't allow overlapping.
> > Overlapping zones allows sharing gateways between different groups of
> > hypervisors.
>
> OK.  The difference is obvious in the case where there is overlap.
>
> > If the purpose is only reducing tunnel mesh size, I think it may be
> > better to avoid the zone concept but instead create tunnels (and bfd
> > sessions) on-demand, as discussed here:
> > https://mail.openvswitch.org/pipermail/ovs-discuss/2019-March/048281.html
>
> Except in cases where we have BFD sessions, it is possible to entirely
> avoid having explicitly defined tunnels, since the tunnels can be
> defined in the flow table.  The ovs-fields(7) manpage describes these
> under "flow-based tunnels" in the TUNNEL FIELDS section.  Naively, doing
> it this way would require, on each hypervisor, a few OpenFlow flows per
> remote chassis, as opposed to one port per remote chassis.  That
> probably scales better.  If necessary, it could be made to scale better
> than that by using send-to-controller actions to add flows for tunnels
> as packets arrive for them or as packets need to go through them.

Thanks Ben for the pointer. I have to admit I was not aware of these
different ways of using tunnels. The documentation is very clear, and
now I understand what OVN currently uses is "Intermediate models",
i.e. partially flow-based - remote-ips are port based while keys are
flow based.
While purely flow-based tunnel is attractive in terms of flexibility,
it seems not fit very well for OVN use case because we do need BFD
sessions. For the "send-to-controller", i.e. reactively set up flows
when packets arrives, I hope it is not really needed for solving the
tunnel scaling problem, since it introduces data plane latency which
could be a bigger problem. (But I am not sure if reactive mode in
general is a good idea - it might be a reasonable trade-off for
solving the scale problem of each HV pre-installing flows for all
related datapaths in a full-mesh alike scenario. Anyway, not directly
related to current topic).

So I would propose to keep the current partially flow-based tunnel
usage in OVN and optimize the tunnel setup only between peers that are
logically connected, if this satisfies the scaling goal of OVN users.
Even with this optimization, we may need to make it as a configurable
option, since in small scale use cases users may in practice prefer
the original behavior to avoid the latency of tunnel setup.
___
discuss mailing list
disc...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss


Re: [ovs-discuss] OVN: availability zones concept

2019-03-06 Thread Ben Pfaff
On Tue, Mar 05, 2019 at 09:39:37PM -0800, Han Zhou wrote:
> On Tue, Mar 5, 2019 at 7:24 PM Ben Pfaff  wrote:
> > What's the effective difference between an OVN deployment with 3 zones,
> > and a collection of 3 OVN deployments?  Is it simply that the 3-zone
> > deployment shares databases?  Is that a significant advantage?
> 
> Hi Ben, based on the discussions there are two cases:
> 
> For completely separated zones (no overlapping) v.s. separate OVN
> deployments, the difference is that separate OVN deployments requires
> some sort of federation at a higher layer, so that a single CMS can
> operate multiple OVN deployments. Of course separate zones in same OVN
> still requires changes in CMS to operate but the change may be smaller
> in some cases.
> 
> For overlapping zones v.s. separate OVN deployments, the difference is
> more obvious. Separate OVN deployments doesn't allow overlapping.
> Overlapping zones allows sharing gateways between different groups of
> hypervisors.

OK.  The difference is obvious in the case where there is overlap.

> If the purpose is only reducing tunnel mesh size, I think it may be
> better to avoid the zone concept but instead create tunnels (and bfd
> sessions) on-demand, as discussed here:
> https://mail.openvswitch.org/pipermail/ovs-discuss/2019-March/048281.html

Except in cases where we have BFD sessions, it is possible to entirely
avoid having explicitly defined tunnels, since the tunnels can be
defined in the flow table.  The ovs-fields(7) manpage describes these
under "flow-based tunnels" in the TUNNEL FIELDS section.  Naively, doing
it this way would require, on each hypervisor, a few OpenFlow flows per
remote chassis, as opposed to one port per remote chassis.  That
probably scales better.  If necessary, it could be made to scale better
than that by using send-to-controller actions to add flows for tunnels
as packets arrive for them or as packets need to go through them.
___
discuss mailing list
disc...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss


Re: [ovs-discuss] OVN: availability zones concept

2019-03-06 Thread Daniel Alvarez Sanchez
Thanks Dan for chiming in and others as well for your feedback!

I also thought of having separate OVN deployments but that introduces
the drawbacks that Han pointed out adding - maybe a lot of - burden to
the CMS. Separate zones in the same OVN deployment will add minimal
changes (at deployment size to define the zones and when selecting the
nodes to schedule a gateway are the only ones I can think of).

For the particular case of OpenStack, the overlapping TZs won't be of
much help I guess as there's no notion of overlapping failure domains.
However, if you see value for OVN itself or other CMS's, I think it's
not too expensive to have (I'm possibly being naive here).

That said, I think that Han's suggestion of establishing tunnels
dynamically is *great*! It will improve scalability and will be more
efficient generally (even if OpenStack is not using Availability
Zones), reducing traffic and processing and avoiding deployer/ops to
configure each node. The Transport/Availability zone concept will be
then implemented at the CMS layer which makes sense to me (in the
OpenStack case, just scheduling gateways).

Only concern, as Han said, would be the latency between the time the
port gets bound and it becomes available from other hypervisors
(especially in the case of the encrypted tunnels). If we could have
some figures before making the decision, it'd be great but my vote
goes for this approach :) Han++

Thanks all,
Daniel


On Wed, Mar 6, 2019 at 11:27 AM Dan Sneddon  wrote:
>
>
>
> On Tue, Mar 5, 2019 at 9:40 PM Han Zhou  wrote:
>>
>> On Tue, Mar 5, 2019 at 7:24 PM Ben Pfaff  wrote:
>> > What's the effective difference between an OVN deployment with 3 zones,
>> > and a collection of 3 OVN deployments?  Is it simply that the 3-zone
>> > deployment shares databases?  Is that a significant advantage?
>>
>> Hi Ben, based on the discussions there are two cases:
>>
>> For completely separated zones (no overlapping) v.s. separate OVN
>> deployments, the difference is that separate OVN deployments requires
>> some sort of federation at a higher layer, so that a single CMS can
>> operate multiple OVN deployments. Of course separate zones in same OVN
>> still requires changes in CMS to operate but the change may be smaller
>> in some cases.
>>
>> For overlapping zones v.s. separate OVN deployments, the difference is
>> more obvious. Separate OVN deployments doesn't allow overlapping.
>> Overlapping zones allows sharing gateways between different groups of
>> hypervisors.
>>
>> If the purpose is only reducing tunnel mesh size, I think it may be
>> better to avoid the zone concept but instead create tunnels (and bfd
>> sessions) on-demand, as discussed here:
>> https://mail.openvswitch.org/pipermail/ovs-discuss/2019-March/048281.html
>>
>> Daniel or other folks please comment if there are other benefit of
>> creating zones.
>>
>> Thanks,
>> Han
>
>
> The original discussion came about when I was consulting with a very large 
> bank who were considering network designs for an application cloud. In that 
> case, all chassis were in a single site, and the desire was to be able to 
> separate groups of chassis into trust zones with no East-West communication 
> between zones. Of course this same result can be handled via network 
> segregation and firewalling, but zones would provide an additional layer of 
> security enforcement. In their case, the choice due to policy was to have 
> separate flow controllers and software routers in each zone rather than rely 
> on firewalls alone, but this increased the hardware footprint.
>
> When I discovered that there was no way to prevent tunnels from being formed 
> between all chassis, that became an obvious problem for edge scenarios. To me 
> that is the more pressing issue, which dynamic tunnels would solve. However, 
> the ability to have separate transit zones would also be a useful feature, in 
> my opinion.
>
> --
> Dan Sneddon
> ___
> discuss mailing list
> disc...@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-discuss
___
discuss mailing list
disc...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss


Re: [ovs-discuss] OVN: availability zones concept

2019-03-06 Thread Dan Sneddon
On Tue, Mar 5, 2019 at 9:40 PM Han Zhou  wrote:

> On Tue, Mar 5, 2019 at 7:24 PM Ben Pfaff  wrote:
> > What's the effective difference between an OVN deployment with 3 zones,
> > and a collection of 3 OVN deployments?  Is it simply that the 3-zone
> > deployment shares databases?  Is that a significant advantage?
>
> Hi Ben, based on the discussions there are two cases:
>
> For completely separated zones (no overlapping) v.s. separate OVN
> deployments, the difference is that separate OVN deployments requires
> some sort of federation at a higher layer, so that a single CMS can
> operate multiple OVN deployments. Of course separate zones in same OVN
> still requires changes in CMS to operate but the change may be smaller
> in some cases.
>
> For overlapping zones v.s. separate OVN deployments, the difference is
> more obvious. Separate OVN deployments doesn't allow overlapping.
> Overlapping zones allows sharing gateways between different groups of
> hypervisors.
>
> If the purpose is only reducing tunnel mesh size, I think it may be
> better to avoid the zone concept but instead create tunnels (and bfd
> sessions) on-demand, as discussed here:
> https://mail.openvswitch.org/pipermail/ovs-discuss/2019-March/048281.html
>
> Daniel or other folks please comment if there are other benefit of
> creating zones.
>
> Thanks,
> Han
>

The original discussion came about when I was consulting with a very large
bank who were considering network designs for an application cloud. In that
case, all chassis were in a single site, and the desire was to be able to
separate groups of chassis into trust zones with no East-West communication
between zones. Of course this same result can be handled via network
segregation and firewalling, but zones would provide an additional layer of
security enforcement. In their case, the choice due to policy was to have
separate flow controllers and software routers in each zone rather than
rely on firewalls alone, but this increased the hardware footprint.

When I discovered that there was no way to prevent tunnels from being
formed between all chassis, that became an obvious problem for edge
scenarios. To me that is the more pressing issue, which dynamic tunnels
would solve. However, the ability to have separate transit zones would also
be a useful feature, in my opinion.

-- 
Dan Sneddon
___
discuss mailing list
disc...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss


Re: [ovs-discuss] OVN: availability zones concept

2019-03-05 Thread Han Zhou
On Tue, Mar 5, 2019 at 7:24 PM Ben Pfaff  wrote:
> What's the effective difference between an OVN deployment with 3 zones,
> and a collection of 3 OVN deployments?  Is it simply that the 3-zone
> deployment shares databases?  Is that a significant advantage?

Hi Ben, based on the discussions there are two cases:

For completely separated zones (no overlapping) v.s. separate OVN
deployments, the difference is that separate OVN deployments requires
some sort of federation at a higher layer, so that a single CMS can
operate multiple OVN deployments. Of course separate zones in same OVN
still requires changes in CMS to operate but the change may be smaller
in some cases.

For overlapping zones v.s. separate OVN deployments, the difference is
more obvious. Separate OVN deployments doesn't allow overlapping.
Overlapping zones allows sharing gateways between different groups of
hypervisors.

If the purpose is only reducing tunnel mesh size, I think it may be
better to avoid the zone concept but instead create tunnels (and bfd
sessions) on-demand, as discussed here:
https://mail.openvswitch.org/pipermail/ovs-discuss/2019-March/048281.html

Daniel or other folks please comment if there are other benefit of
creating zones.

Thanks,
Han
___
discuss mailing list
disc...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss


Re: [ovs-discuss] OVN: availability zones concept

2019-03-05 Thread Ben Pfaff
On Thu, Feb 28, 2019 at 06:48:03PM +0100, Daniel Alvarez Sanchez wrote:
> Just wanted to throw an idea here about introducing availability zones
> (AZ) concept in OVN and get implementation ideas. From a CMS
> perspective, it makes sense to be able to implement some sort of
> logical division of resources into failure domains to maximize their
> availability.
> 
> In this sense, establishing a full mesh of Geneve tunnels is not
> needed (and possibly undesired when strict firewalls are used between
> AZs) as L2 connectivity will be constrained to the AZ boundaries.
> 
> A possibility would be to let the deployer of the CMS set a key on the
> OpenvSwitch table of the local OVS instance like
> 'external_ids:ovn_az=' and if it's set, ovn-controller will
> register itself as a Chassis with the same external ID and establish
> tunnels to those Chassis within the same AZ, otherwise it'll keep the
> current behavior.
> 
> It'll be responsibility of the CMS to schedule gateway ports in the
> right AZ as well to provide L3 AZ awareness.
> 
> Does that make sense? Thoughts?

What's the effective difference between an OVN deployment with 3 zones,
and a collection of 3 OVN deployments?  Is it simply that the 3-zone
deployment shares databases?  Is that a significant advantage?
___
discuss mailing list
disc...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss


Re: [ovs-discuss] OVN: availability zones concept

2019-03-04 Thread Han Zhou
On Mon, Mar 4, 2019 at 4:48 PM Dan Sneddon  wrote:
>
>
>
> On Mon, Mar 4, 2019 at 5:34 AM Lucas Alvares Gomes  
> wrote:
>>
>> Hi,
>>
>> On Sat, Mar 2, 2019 at 1:52 AM Han Zhou  wrote:
>> >
>> > On Thu, Feb 28, 2019 at 9:58 AM Daniel Alvarez Sanchez
>> >  wrote:
>> > >
>> > > Hi folks,
>> > >
>> > > Just wanted to throw an idea here about introducing availability zones
>> > > (AZ) concept in OVN and get implementation ideas. From a CMS
>> > > perspective, it makes sense to be able to implement some sort of
>> > > logical division of resources into failure domains to maximize their
>> > > availability.
>> > >
>> > > In this sense, establishing a full mesh of Geneve tunnels is not
>> > > needed (and possibly undesired when strict firewalls are used between
>> > > AZs) as L2 connectivity will be constrained to the AZ boundaries.
>> > >
>> > > A possibility would be to let the deployer of the CMS set a key on the
>> > > OpenvSwitch table of the local OVS instance like
>> > > 'external_ids:ovn_az=' and if it's set, ovn-controller will
>> > > register itself as a Chassis with the same external ID and establish
>> > > tunnels to those Chassis within the same AZ, otherwise it'll keep the
>> > > current behavior.
>> > >
>> > > It'll be responsibility of the CMS to schedule gateway ports in the
>> > > right AZ as well to provide L3 AZ awareness.
>> > >
>> > > Does that make sense? Thoughts?
>> > >
>> > > Thanks a lot!!
>> > > Daniel
>> > > ___
>> > > discuss mailing list
>> > > disc...@openvswitch.org
>> > > https://mail.openvswitch.org/mailman/listinfo/ovs-discuss
>> >
>> > This sounds like a good idea to me. Just a concern for the name "AZ".
>> > The feature seems to be quite useful to optimize at scale when you
>> > know there are different groups of chassises (and gateways) would
>> > never need to communicate with each other. However, it doesn't sound
>> > like availability zone concept, since it is managed by a single
>> > control plane, which means they are not independently availability
>> > zones. I'd call it TZ (transport zone), or maybe just cell. However, I
>> > like the idea and it seems not hard to be implemented.
>> >
>>
>> I agree with Han here, the idea is sound but the name seems a bit off.
>> I specially liked the "transport zone" (TZs) suggested by Han here. So
>> +1 to that name :D
>>
>> Quick question. Should we have a default TZ for the chassis/gateways
>> that doesn't have that key set ? For example, if we have 9 chassis
>> where three of them have the TZ key set to 1, three others setting TZ
>> to 2 and remainder three left with no TZ key set. That should result
>> in 3 different zones right ? I wanna clarify that because I don't
>> think we should create a mash with all Chassis for those who doesn't
>> have the TZ set, instead, if it's omitted ovn-controller could
>> consider them to be part of a "default" TZ of some sort.
>>
>> What you think ? Is that aligned with your idea ?
>>
>> Cheers,
>> Lucas
>
>
> Hello, I'm chiming in here because I think Daniel was prompted to start this 
> thread based on a related feature request that I made against the OpenStack 
> OVN component. Transport Zones is a better name for this feature in my 
> opinion, and that is incidentally the name for this feature in VMWare NSX-T. 
> As far as I can tell, they are not claiming it to be a trademark, and it's a 
> fairly generic term.
>
> Having a default transport zone makes a lot of sense to me if we consider the 
> introduction of transport zones into an existing environment. If existing 
> chassis are not assigned to any transport zone, I think to most users it 
> would be expected behavior that chassis assigned to a new transport zone 
> would be separate.
>
> However, treating the default TZ as a separate TZ doesn't address a central 
> hub-and-spoke network where each chassis forms tunnels to other chassis in 
> the same TZ, and also forms tunnels with nodes at the central site, but 
> doesn't form tunnels with chassis in other specific TZs. In this alternative, 
> a chassis without a TZ forms tunnels with all other chassis. A chassis with a 
> specific TZ forms tunnels within that TZ and with chassis with no TZ 
> specified. That allows network functions such as gateways to be centralized 
> for all TZs.
>
> Perhaps an ideal solution would allow a chassis to be a member of more than 
> one TZ? That would allow flexibility, but may be more difficult to implement.
>
> --
> Dan Sneddon

Good points on the default TZ and hub-and-spoke use case! To support
that, I agree with the flexible way that a chassis is allowed to be a
member of more than one TZ. So if TZ is not set, the chassis belongs
to default TZ. If a chassis wants to join both default TZ and some
other TZs, it should explicitely set to "default" and the other TZs.

However, if our purpose here is just to avoid unnecessary tunnel mesh
and improve tunnel/bfd scalability, another approach would be
automatica

Re: [ovs-discuss] OVN: availability zones concept

2019-03-04 Thread Dan Sneddon
On Mon, Mar 4, 2019 at 5:34 AM Lucas Alvares Gomes 
wrote:

> Hi,
>
> On Sat, Mar 2, 2019 at 1:52 AM Han Zhou  wrote:
> >
> > On Thu, Feb 28, 2019 at 9:58 AM Daniel Alvarez Sanchez
> >  wrote:
> > >
> > > Hi folks,
> > >
> > > Just wanted to throw an idea here about introducing availability zones
> > > (AZ) concept in OVN and get implementation ideas. From a CMS
> > > perspective, it makes sense to be able to implement some sort of
> > > logical division of resources into failure domains to maximize their
> > > availability.
> > >
> > > In this sense, establishing a full mesh of Geneve tunnels is not
> > > needed (and possibly undesired when strict firewalls are used between
> > > AZs) as L2 connectivity will be constrained to the AZ boundaries.
> > >
> > > A possibility would be to let the deployer of the CMS set a key on the
> > > OpenvSwitch table of the local OVS instance like
> > > 'external_ids:ovn_az=' and if it's set, ovn-controller will
> > > register itself as a Chassis with the same external ID and establish
> > > tunnels to those Chassis within the same AZ, otherwise it'll keep the
> > > current behavior.
> > >
> > > It'll be responsibility of the CMS to schedule gateway ports in the
> > > right AZ as well to provide L3 AZ awareness.
> > >
> > > Does that make sense? Thoughts?
> > >
> > > Thanks a lot!!
> > > Daniel
> > > ___
> > > discuss mailing list
> > > disc...@openvswitch.org
> > > https://mail.openvswitch.org/mailman/listinfo/ovs-discuss
> >
> > This sounds like a good idea to me. Just a concern for the name "AZ".
> > The feature seems to be quite useful to optimize at scale when you
> > know there are different groups of chassises (and gateways) would
> > never need to communicate with each other. However, it doesn't sound
> > like availability zone concept, since it is managed by a single
> > control plane, which means they are not independently availability
> > zones. I'd call it TZ (transport zone), or maybe just cell. However, I
> > like the idea and it seems not hard to be implemented.
> >
>
> I agree with Han here, the idea is sound but the name seems a bit off.
> I specially liked the "transport zone" (TZs) suggested by Han here. So
> +1 to that name :D
>
> Quick question. Should we have a default TZ for the chassis/gateways
> that doesn't have that key set ? For example, if we have 9 chassis
> where three of them have the TZ key set to 1, three others setting TZ
> to 2 and remainder three left with no TZ key set. That should result
> in 3 different zones right ? I wanna clarify that because I don't
> think we should create a mash with all Chassis for those who doesn't
> have the TZ set, instead, if it's omitted ovn-controller could
> consider them to be part of a "default" TZ of some sort.
>
> What you think ? Is that aligned with your idea ?
>
> Cheers,
> Lucas
>

Hello, I'm chiming in here because I think Daniel was prompted to start
this thread based on a related feature request that I made against the
OpenStack OVN component. Transport Zones is a better name for this feature
in my opinion, and that is incidentally the name for this feature in VMWare
NSX-T. As far as I can tell, they are not claiming it to be a trademark,
and it's a fairly generic term.

Having a default transport zone makes a lot of sense to me if we consider
the introduction of transport zones into an existing environment. If
existing chassis are not assigned to any transport zone, I think to most
users it would be expected behavior that chassis assigned to a new
transport zone would be separate.

However, treating the default TZ as a separate TZ doesn't address a central
hub-and-spoke network where each chassis forms tunnels to other chassis in
the same TZ, and also forms tunnels with nodes at the central site, but
doesn't form tunnels with chassis in other specific TZs. In this
alternative, a chassis without a TZ forms tunnels with all other chassis. A
chassis with a specific TZ forms tunnels within that TZ and with chassis
with no TZ specified. That allows network functions such as gateways to be
centralized for all TZs.

Perhaps an ideal solution would allow a chassis to be a member of more than
one TZ? That would allow flexibility, but may be more difficult to
implement.

-- 
Dan Sneddon
___
discuss mailing list
disc...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss


Re: [ovs-discuss] OVN: availability zones concept

2019-03-04 Thread Lucas Alvares Gomes
Hi,

On Sat, Mar 2, 2019 at 1:52 AM Han Zhou  wrote:
>
> On Thu, Feb 28, 2019 at 9:58 AM Daniel Alvarez Sanchez
>  wrote:
> >
> > Hi folks,
> >
> > Just wanted to throw an idea here about introducing availability zones
> > (AZ) concept in OVN and get implementation ideas. From a CMS
> > perspective, it makes sense to be able to implement some sort of
> > logical division of resources into failure domains to maximize their
> > availability.
> >
> > In this sense, establishing a full mesh of Geneve tunnels is not
> > needed (and possibly undesired when strict firewalls are used between
> > AZs) as L2 connectivity will be constrained to the AZ boundaries.
> >
> > A possibility would be to let the deployer of the CMS set a key on the
> > OpenvSwitch table of the local OVS instance like
> > 'external_ids:ovn_az=' and if it's set, ovn-controller will
> > register itself as a Chassis with the same external ID and establish
> > tunnels to those Chassis within the same AZ, otherwise it'll keep the
> > current behavior.
> >
> > It'll be responsibility of the CMS to schedule gateway ports in the
> > right AZ as well to provide L3 AZ awareness.
> >
> > Does that make sense? Thoughts?
> >
> > Thanks a lot!!
> > Daniel
> > ___
> > discuss mailing list
> > disc...@openvswitch.org
> > https://mail.openvswitch.org/mailman/listinfo/ovs-discuss
>
> This sounds like a good idea to me. Just a concern for the name "AZ".
> The feature seems to be quite useful to optimize at scale when you
> know there are different groups of chassises (and gateways) would
> never need to communicate with each other. However, it doesn't sound
> like availability zone concept, since it is managed by a single
> control plane, which means they are not independently availability
> zones. I'd call it TZ (transport zone), or maybe just cell. However, I
> like the idea and it seems not hard to be implemented.
>

I agree with Han here, the idea is sound but the name seems a bit off.
I specially liked the "transport zone" (TZs) suggested by Han here. So
+1 to that name :D

Quick question. Should we have a default TZ for the chassis/gateways
that doesn't have that key set ? For example, if we have 9 chassis
where three of them have the TZ key set to 1, three others setting TZ
to 2 and remainder three left with no TZ key set. That should result
in 3 different zones right ? I wanna clarify that because I don't
think we should create a mash with all Chassis for those who doesn't
have the TZ set, instead, if it's omitted ovn-controller could
consider them to be part of a "default" TZ of some sort.

What you think ? Is that aligned with your idea ?

Cheers,
Lucas
___
discuss mailing list
disc...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss


Re: [ovs-discuss] OVN: availability zones concept

2019-03-01 Thread Han Zhou
On Thu, Feb 28, 2019 at 9:58 AM Daniel Alvarez Sanchez
 wrote:
>
> Hi folks,
>
> Just wanted to throw an idea here about introducing availability zones
> (AZ) concept in OVN and get implementation ideas. From a CMS
> perspective, it makes sense to be able to implement some sort of
> logical division of resources into failure domains to maximize their
> availability.
>
> In this sense, establishing a full mesh of Geneve tunnels is not
> needed (and possibly undesired when strict firewalls are used between
> AZs) as L2 connectivity will be constrained to the AZ boundaries.
>
> A possibility would be to let the deployer of the CMS set a key on the
> OpenvSwitch table of the local OVS instance like
> 'external_ids:ovn_az=' and if it's set, ovn-controller will
> register itself as a Chassis with the same external ID and establish
> tunnels to those Chassis within the same AZ, otherwise it'll keep the
> current behavior.
>
> It'll be responsibility of the CMS to schedule gateway ports in the
> right AZ as well to provide L3 AZ awareness.
>
> Does that make sense? Thoughts?
>
> Thanks a lot!!
> Daniel
> ___
> discuss mailing list
> disc...@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-discuss

This sounds like a good idea to me. Just a concern for the name "AZ".
The feature seems to be quite useful to optimize at scale when you
know there are different groups of chassises (and gateways) would
never need to communicate with each other. However, it doesn't sound
like availability zone concept, since it is managed by a single
control plane, which means they are not independently availability
zones. I'd call it TZ (transport zone), or maybe just cell. However, I
like the idea and it seems not hard to be implemented.

Thanks,
Han
___
discuss mailing list
disc...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss