[openstack-dev] [neutron][nova] some conflicts in bridge-mapping in linuxbridge

Li Ma skywalker.nick at gmail.com
Thu Jul 30 09:01:05 UTC 2015


Hi all,

Currently, I'm implementing this blueprint:
https://blueprints.launchpad.net/neutron/+spec/phy-net-bridge-mapping

This function enables a user-defined pre-existed bridge to connect
instances , rather than creating a new bridge that may break security
rule of some companies.

Neutron code has been done recently, but I find that it is really
difficult to implement due to Nova.

Nova hard-code 'brq' + net-id as bridge name in libvirt configuration.

In nova/network/neutronv2/api.py:

def _nw_info_build_network(self, port, networks, subnets):

1530 elif vif_type == network_model.VIF_TYPE_BRIDGE:
1531 bridge = "brq" + port['network_id']

For example, in flat network type, when Neutron loads a pre-existed
user-defined bridge called 'br-eth1' and would like to let it connect
the instances, it will fail because Nova writes 'brq-net-id' into
libvirt conf file.

I have several solutions for that.

(1) Add the same 'bridge-mapping' configuration in nova.conf for
nova-compute. It is almost the same implementation in OVS-agent.
When nova needs bridge name to process, it first reads that
configuration and then decide which bridge to use.

(2) Let Neutron decide interface name (tap-xxx) and bridge name
(brq-xxx), not Nova. As a result, when creating port, Neutron return
interface name and bridge name to Nova, so Nova has the right device
name to process. This helps Nova get rid of hard-code, but need lots
of work on it.

Pls give some advice. Thanks a lot.

Li Ma (Nick)



More information about the OpenStack-dev mailing list