Hi,
I copy here the answer from Maruti Haridas Kamat (part of the team which
originally designed networking-l2gw) to the question why this was
originally designed this way (no update is possible if there is an
active connection on the gw):
"
I understand your use case, and we thought about it when we were
designing the solution.
Consider you have an interface and a physical switch that is
present inside a neutron logical l2gw, and create a connection, then you
have already created VXLAN-to-VLAN bindings on that interface on the
physical switch or OVS. If you allow a user to update the gateway to
modify the interface or switch list, then we need to fiddle with the
VXLAN-to-VLAN bindings on the switch (es).
Steps:
1. The user creates a logical gateway gw1 comprising of switch s1 and
interface i1. No validation is performed here.
2. The user creates a connection VXLAN (1000) to physical VLAN (100)
binding. This performs all the validation inside the DB where the
specified switch s1 and interface i1 exist. Whether the specified
binding already exists or not. Finally, the plugin communicates to
the southbound (agent) that creates the binding 1000 <-> 100 on the
interface i1 on the switch (OVS).
3. Consider that the user tries to add another interface i2 now to the
same gateway gw1 using update gw1 command. It does not perform any
validation. The entire validation we do in step 2 has to be moved to
this step now. Also, the code (south bound) that makes changes on
the OVS has to be introduced.
4. We avoided this because the user may try to add and remove the
interfaces in one go in the same command. If we had to allow update
connection command, then internally we have to perform binding of
vxlan with vlan for interface i2 but we have to remove the binding
from i1 (considering i1 has been removed from the gw1) at the same time.
5. It is not that it is not possible, but for the first version of L2gw
in first six months, we thought of supporting basic framework of all
these CLIs/REST APIs and enhance them later.
"
It will not give too much extra, but perhaps good to see the reasoning
from another perspective.
Regards Lajos
On 2017-10-12 01:55, Dayavanti Gopal Kamath wrote:
Hi ricardo,
Since the l2gw connection semantics is applied on the l2gw object as a
whole, we could assume any connections applied on the l2gw object can
be retroactively applied to the ports that are affected by the the
l2gw update. so, if a port is added to an existing l2gw, all existing
l2gw connections get applied on that port, and if a port is deleted
from an l2gw, all existing l2gw connections get removed from this port.
Thanks,
daya
*From:*Ricardo Noriega De Soto [mailto:rnori...@redhat.com]
*Sent:* Tuesday, October 10, 2017 6:14 AM
*To:* OpenStack Development Mailing List (not for usage questions)
<openstack-dev@lists.openstack.org>
*Cc:* Gary Kotton <gkot...@vmware.com>; Ihar Hrachyshka
<ihrac...@redhat.com>; arma...@gmail.com; miguel.lava...@huawei.com;
Luis Tomas Bolivar <ltoma...@redhat.com>; maruti.ka...@radisys.com;
Lajos Katona <lajos.kat...@ericsson.com>; Dayavanti Gopal Kamath
<dayavanti.gopal.kam...@ericsson.com>; George Offord
<george.off...@ericsson.com>
*Subject:* Re: [openstack-dev] l2gw
I've been taking a look at the implementation and thinking about which
cases update should be allowed.
At a first glance, I would say that we should allow updates:
·Add a new interface (neutron l2-gateway-update gw1 --device
name=hwvtep,interface_names=eth0,*eth1*) being eth1 the new interface.
·Delete interface (neutron l2-gateway-update gw1 --device
name=hwvtep,interface_names=eth0) removing eth1. In this case, we
should check that the port has not any active connection.
However, in both cases there is a big issue, which is the granularity
of the segmentation-ids per port, right?? You cannot add or remove an
l2gw connection per port, which bring us to a dead end.
Let's say I add eth1 to an existing l2gw. How can I get a vlan tag to
that interface?? There is not l2gw-connection-update command... and
trying to create the same one will fail. Even if you try to update the
l2gw instance specifying the seg-id per port, it won't be active until
a new connection is created.
Folks, based on your experience, what's your take on this??
IMHO, there is no easy way of solving this but with a big re-architecture.
On Fri, Sep 29, 2017 at 1:46 PM, Lajos Katona
<lajos.kat...@ericsson.com <mailto:lajos.kat...@ericsson.com>> wrote:
Hi Ricardo,
That is the exception which gives us the trouble.
If you have ideas as you mentioned in which case a gw should be
updated, and in what not, that would be really nice.
Actually now we have a kind of development environment with
devstack and vtep emulator
(http://docs.openvswitch.org/en/latest/howto/vtep/) on the same
host, what do you think is that enough to go on with this problem?
I am not so sure if with vtep emulator we can cover all the good
and bad (I mean when we mustn't do the update for example) scenarios.
Regards
Lajos
On 2017-09-28 14:12, Ricardo Noriega De Soto wrote:
I see the exception now Lajos:
class L2GatewayInUse(exceptions.InUse):
message = _("L2 Gateway '%(gateway_id)s' still has active
mappings "
"with one or more neutron networks.")
:-)
On Wed, Sep 27, 2017 at 6:40 PM, Ricardo Noriega De Soto
<rnori...@redhat.com <mailto:rnori...@redhat.com>> wrote:
Hey Lajos,
Is this the exception you are encountering?
(neutron) l2-gateway-update --device
name=hwvtep,interface_names=eth0,eth1 gw1
L2 Gateway 'b8ef7f98-e901-4ef5-b159-df53364ca996' still
has active mappings with one or more neutron networks.
Neutron server returns request_ids:
['req-f231dc53-cb7d-4221-ab74-fa8715f85869']
I don't see the L2GatewayInUse exception you're talking
about, but I guess it's the same situation.
We should discuss in which case the l2gw instance could be
updated, and in which cases it shouldn't.
Please, let me know!
On Wed, Aug 16, 2017 at 11:14 AM, Lajos Katona
<lajos.kat...@ericsson.com
<mailto:lajos.kat...@ericsson.com>> wrote:
Hi,
We faced an issue with l2-gw-update, which means that
actually if there are connections for a gw the update
will throw an exception (L2GatewayInUse), and the
update is only possible after deleting first the
connections, do the update and add the connections back.
It is not exactly clear why this restriction is there
in the code (at least I can't find it in docs or
comments in the code, or review).
As I see the check for network connections was
introduced in this patch:
https://review.openstack.org/#/c/144097
(https://review.openstack.org/#/c/144097/21..22/networking_l2gw/db/l2gateway/l2gateway_db.py)
Could you please give me a little background why the
update operation is not allowed on an l2gw with
network connections?
Thanks in advance for the help.
Regards
Lajos
__________________________________________________________________________
OpenStack Development Mailing List (not for usage
questions)
Unsubscribe:
openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
<http://openstack-dev-requ...@lists.openstack.org?subject:unsubscribe>
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
--
Ricardo Noriega
Senior Software Engineer - NFV Partner Engineer | Office
of Technology | Red Hat
irc: rnoriega @freenode
--
Ricardo Noriega
Senior Software Engineer - NFV Partner Engineer | Office of
Technology | Red Hat
irc: rnoriega @freenode
__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe:openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
<mailto:openstack-dev-requ...@lists.openstack.org?subject:unsubscribe>
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe:
openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
<http://openstack-dev-requ...@lists.openstack.org?subject:unsubscribe>
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
--
Ricardo Noriega
Senior Software Engineer - NFV Partner Engineer | Office of Technology
| Red Hat
irc: rnoriega @freenode
__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev