[Bug 1799737] Re: l3 agent external_network_bridge broken with ovs

Edward Hope-Morley edward.hope-morley at canonical.com
Fri Mar 27 11:18:35 UTC 2020


@axino I assume the environment you have that is using
external_network_bridge/external_network_id is quite old and was
originally deployed with a version older than Queens? Using these option
to configure external networks is really deprecated and since at least
Juno we have used bridge_mappings for this purpose (and to allow > 1
external network). There is an annoying quirk here though (and perhaps
this is why you have not switched) which is that with the old way the
network will likely not have a provider name (in the db) and therefore
migrating it as-is to a bridge_mappings type config will break the
network (unless perhaps one can be set manually in the database).

-- 
You received this bug notification because you are a member of Ubuntu
OpenStack, which is subscribed to neutron in Ubuntu.
https://bugs.launchpad.net/bugs/1799737

Title:
  l3 agent external_network_bridge broken with ovs

Status in neutron:
  Confirmed
Status in neutron package in Ubuntu:
  Confirmed

Bug description:
  Hi,

  I'm running queens on xenial. The following commit introduced a
  regression :
  https://git.openstack.org/cgit/openstack/neutron/commit/?id=2b1d413ee90dfe2e9ae41c35ab37253df53fc6cd
  (fixing bug 1767422)

  The following call is wrong (in router_info.py) :

  self.driver.remove_vlan_tag(self.agent_conf.external_network_bridge,
  interface_name)

  In this call, interface_name is something like "qg-abcdefg-12", but
  remove_vlan_tag() expects a tap interface. This results in the
  following log :

  2018-10-24 00:28:40.880 23623 DEBUG ovsdbapp.backend.ovs_idl.transaction [-] Running txn command(idx=0): DbClearCommand(column=tag, table=Port, record=qg-0410dbf1-51) do_commit /usr/lib/python2.7/dist-packages/ovsdbapp/backend/ovs_idl/transaction.py:84
  2018-10-24 00:28:40.881 23623 DEBUG ovsdbapp.backend.ovs_idl.transaction [-] Transaction aborted do_commit /usr/lib/python2.7/dist-packages/ovsdbapp/backend/ovs_idl/transaction.py:112

  
  Sadly, the cause of the "Transaction aborted" is hidden (in https://github.com/openstack/ovsdbapp/blob/master/ovsdbapp/backend/ovs_idl/transaction.py#L87). If I print the exception, I get the following :

  2018-10-24 00:28:40.881 23623 DEBUG
  ovsdbapp.backend.ovs_idl.transaction [-] EXCEPTION Cannot find Port
  with name=qg-0410dbf1-51 do_commit /usr/lib/python2.7/dist-
  packages/ovsdbapp/backend/ovs_idl/transaction.py:88

  
  Checking the ovs database reveals that Port "names" are the tap interfaces, not the qg- interfaces. The ports staying the VLAN 4095 will basically make the network unusable. Using the following call fixes my problem :

  self.driver.remove_vlan_tag(self.agent_conf.external_network_bridge,
  self.driver._get_tap_name(interface_name,prefix=EXTERNAL_DEV_PREFIX))

  It would be nice to print the exception caught in
  https://github.com/openstack/ovsdbapp/blob/master/ovsdbapp/backend/ovs_idl/transaction.py#L87
  by the way...

  Thanks !

  For reference :

  $ dpkg -l|grep neutron
  ii  neutron-common                   2:12.0.3-0ubuntu1~cloud0                     all          Neutron is a virtual network service for Openstack - common
  ii  neutron-dhcp-agent               2:12.0.3-0ubuntu1~cloud0                     all          Neutron is a virtual network service for Openstack - DHCP agent
  ii  neutron-l3-agent                 2:12.0.3-0ubuntu1~cloud0                     all          Neutron is a virtual network service for Openstack - l3 agent
  ii  neutron-lbaas-common             2:12.0.0-0ubuntu1~cloud0                     all          Neutron is a virtual network service for Openstack - common
  ii  neutron-lbaasv2-agent            2:12.0.0-0ubuntu1~cloud0                     all          Neutron is a virtual network service for Openstack - LBaaSv2 agent
  ii  neutron-metadata-agent           2:12.0.3-0ubuntu1~cloud0                     all          Neutron is a virtual network service for Openstack - metadata agent
  ii  neutron-metering-agent           2:12.0.3-0ubuntu1~cloud0                     all          Neutron is a virtual network service for Openstack - metering agent
  ii  neutron-openvswitch-agent        2:12.0.3-0ubuntu1~cloud0                     all          Neutron is a virtual network service for Openstack - Open vSwitch plugin agent
  ii  python-neutron                   2:12.0.3-0ubuntu1~cloud0                     all          Neutron is a virtual network service for Openstack - Python library
  ii  python-neutron-fwaas             1:12.0.0-0ubuntu1~cloud0                     all          Firewall-as-a-Service driver for OpenStack Neutron
  ii  python-neutron-lbaas             2:12.0.0-0ubuntu1~cloud0                     all          Loadbalancer-as-a-Service driver for OpenStack Neutron
  ii  python-neutron-lib               1.13.0-0ubuntu1~cloud0                       all          Neutron shared routines and utilities - Python 2.7
  ii  python-neutronclient             1:6.7.0-0ubuntu1~cloud0                      all          client API library for Neutron - Python 2.7

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1799737/+subscriptions



More information about the Ubuntu-openstack-bugs mailing list