Why isn't ethernet bridging working with OpenStack?

I'm trying to setup OpenStack with the nova.network.manager.FlatManager network manager which attaches (in my setting) every virtual machine to the br100 network bridge.

On my host, I'm using the following network setting:

auto lo
  iface lo inet loopback

auto eth0
  iface eth0 inet static
  address 192.168.0.50
  netmask 255.255.255.0
  broadcast 192.168.0.255
  gateway 192.168.0.1

auto eth0:0
iface eth0:0 inet static
  address 192.168.100.1
  netmask 255.255.255.0
  broadcast 192.168.100.255

which results in the following interface configuration:

eth0      Link encap:Ethernet  HWaddr 00:1a:92:08:15:43  
          inet addr:192.168.0.50  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::21a:92ff:fe08:1543/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5365 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5177 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:572855 (572.8 KB)  TX bytes:1812681 (1.8 MB)
          Interrupt:43 Base address:0x6000 

eth0:0    Link encap:Ethernet  HWaddr 00:1a:92:08:15:43  
          inet addr:192.168.100.1  Bcast:192.168.100.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:43 Base address:0x6000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:49079 errors:0 dropped:0 overruns:0 frame:0
          TX packets:49079 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:25157104 (25.1 MB)  TX bytes:25157104 (25.1 MB)

virbr0    Link encap:Ethernet  HWaddr c6:b2:4f:da:cd:ff  
          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

vnet1     Link encap:Ethernet  HWaddr fe:16:3e:3a:77:dc  
          inet6 addr: fe80::fc16:3eff:fe3a:77dc/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:153 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500 
          RX bytes:6642 (6.6 KB)  TX bytes:468 (468.0 B)

The bridge configuration (brctl show) looks like this:

bridge name     bridge id               STP enabled     interfaces
br100           8000.fe163e3a77dc       no              vnet1
virbr0          8000.000000000000       yes

I've created a virtual machine (using vnet1) that has been assigned the IP address 192.168.100.2.

For me, everything seem fines, except that eth0:0 is not attached to the bridge. When I try to change that by running brctl addif br100 eth0:0, networking breaks completely (I cannot ping other hosts on the 192.168.0.x subnet anymore), but still, I cannot ping the virtual machine attached to the bridge (using the vnet1 interface).

How can I attach eth0:0 to the bridge without breaking my eth0 LAN connection? Or is there a superior way for networking in an OpenStack test environment on a host with only one physical network adapter?


Solution 1:

First, forget virbr0 -- that's added by libvirt and is irrelevant.

For an "all-in-one" Openstack server with one NIC, there should be no need for another aliased virtual interface. As discussed in the Openstack guide, you should bridge br100 to your public IP address (eth0), and let Nova create instances and bridge them to br100.

e.g. add the below to /etc/network/interfaces, modify as appropriate for static:

auto br100
iface br100 inet dhcp
    bridge_ports        eth0
    bridge_stp           off
    bridge_maxwait   0
    bridge_fd            0

The allowable private IP subnet has to be configured via the --fixed-range option in nova.conf, and the --flat_network_bridge option set to br100.

Please paste your nova.conf in the question to help with further troubleshooting!