← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1355153] [NEW] Inefficient implementation of Linuxbridge agent get_bridge_for_tap_device

 

Public bug reported:

The implementation of LinuxBridgeManager.get_bridge_for_tap_device uses
an inefficient algorithm of repeatedly listing all bridges and their
interfaces for each call.

At scale, this implementation becomes very inefficient, causing the
agent to become unresponsive in reporting interfaces as up to nova,
leading to instance creation failure due to a timeout in
LibvirtDriver._create_domain_and_network.

This can be replaced with a constant-time implementation using the fact
that the tap device's 'brport' directory contains a 'bridge' symlink to
the bridge device, which carries the bridge name. The same symlink also
exists as 'master' on the same level as 'brport'.

The patch I propose also removes the single use of methods
get_all_neutron_bridges and interface_exists_on_bridge. I left these
methods in as their removal is not necessary for this bugfix.

** Affects: neutron
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1355153

Title:
  Inefficient implementation of Linuxbridge agent
  get_bridge_for_tap_device

Status in OpenStack Neutron (virtual network service):
  New

Bug description:
  The implementation of LinuxBridgeManager.get_bridge_for_tap_device
  uses an inefficient algorithm of repeatedly listing all bridges and
  their interfaces for each call.

  At scale, this implementation becomes very inefficient, causing the
  agent to become unresponsive in reporting interfaces as up to nova,
  leading to instance creation failure due to a timeout in
  LibvirtDriver._create_domain_and_network.

  This can be replaced with a constant-time implementation using the
  fact that the tap device's 'brport' directory contains a 'bridge'
  symlink to the bridge device, which carries the bridge name. The same
  symlink also exists as 'master' on the same level as 'brport'.

  The patch I propose also removes the single use of methods
  get_all_neutron_bridges and interface_exists_on_bridge. I left these
  methods in as their removal is not necessary for this bugfix.

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


Follow ups

References