** Description changed: + === Begin SRU Template === + [Impact] + When the 'ip_gre' module is loaded, the kernel creates two network + devices 'gre0' and 'gretap0' that appear in all network namespaces. + (For example, if you create an lxd container, and then load the ip_gre + module from outside the container, the container will see 2 new + network devices). + The hardware address of these devices is 00:00:00:00:00 as seen below. + # ( cd /sys/class/net/ && grep . gre*/address ) + gre0/address:00:00:00:00 + gretap0/address:00:00:00:00:00:00 + + This "duplicate" mac address caused cloud-init to raise a RuntimeError. + + The overall impact is that cloudinit's network rendering code will + not work if the ip_gre module is loaded on the system. That will + happen in some nova-lxd environments, but also anywhere where a user + has loaded that module and is running lxc. + + [Test Case] + + 1.) load a module on your host + sudo modprobe ip_gre + + 2.) Launch an instance in lxd. + + $ rel=xenial + $ name=x1 + $ lxc launch ubuntu-daily:$rel $name + + 3.) see the stack trace by running 'get_interfaces_by_mac()' in the + guest. + + $ lxc exec $name -- \ + python3 -c 'from cloudinit import net; print(net.get_interfaces_by_mac())' + + 4.) upgrade instance to proposed cloud-init + $ lxc exec $name -- sh -c ' + mirror=http://archive.ubuntu.com/ubuntu + echo deb $mirror $(lsb_release -sc)-proposed main | + tee /etc/apt/sources.list.d/proposed.list + apt-get update -q + apt-get install -qy cloud-init' + $ lxc exec $name -- dpkg-query --show cloud-init + + 5.) see that get_interfaces_by_mac() no longer stack traces. + $ lxc exec $name -- \ + python3 -c 'from cloudinit import net; print(net.get_interfaces_by_mac())' + + A more complete test case is to load an image into nova-lxd with gre + tunneling loaded on the host, but that is much more involved setup. + + [Regression Potential] + Regression potential should be pretty low. We are simply ignoring + network interfaces not named 'lo' that have a mac address of '00:00:00:00:00' + + [Other Info] + Upstream commit at + https://git.launchpad.net/cloud-init/commit/?id=2c0655feb9 + + === End SRU Template === + Whilst testing the changes for nova-lxd to resolve issues with use of config-drive, I tripped over this issue; specifically the networking on a config-drive configured LXD instance never starts due to a duplicate MAC address on the lo and greptap0 devices. Cloud-init v. 0.7.9 running 'init' at Fri, 19 May 2017 13:41:00 +0000. Up 2.0 seconds. ci-info: ++++++++++++++++++++++++++++++++++++++++++++++++++++Net device info+++++++++++++++++++++++++++++++++++++++++++++++++++++ ci-info: +---------+-------+------------------------------+-----------+-------+-------------------------------------------------+ ci-info: | Device | Up | Address | Mask | Scope | Hw-Address | ci-info: +---------+-------+------------------------------+-----------+-------+-------------------------------------------------+ ci-info: | gretap0 | False | . | . | . | 00:00:00:00:00:00 | ci-info: | eth0 | True | . | . | . | fa:16:3e:1d:aa:ac | ci-info: | eth0 | True | fe80::f816:3eff:fe1d:aaac/64 | . | link | fa:16:3e:1d:aa:ac | ci-info: | lo | True | 127.0.0.1 | 255.0.0.0 | . | . | ci-info: | lo | True | ::1/128 | . | host | . | ci-info: | gre0 | False | . | . | . | 00-00-00-00-31-36-3a-33-00-00-00-00-00-00-00-00 | ci-info: +---------+-------+------------------------------+-----------+-------+-------------------------------------------------+ 2017-05-19 13:41:01,017 - util.py[WARNING]: failed stage init failed run of stage init ------------------------------------------------------------ Traceback (most recent call last): File "/usr/lib/python3/dist-packages/cloudinit/cmd/main.py", line 647, in status_wrapper ret = functor(name, args) File "/usr/lib/python3/dist-packages/cloudinit/cmd/main.py", line 365, in main_init init.apply_network_config(bring_up=bool(mode != sources.DSMODE_LOCAL)) File "/usr/lib/python3/dist-packages/cloudinit/stages.py", line 629, in apply_network_config netcfg, src = self._find_networking_config() File "/usr/lib/python3/dist-packages/cloudinit/stages.py", line 616, in _find_networking_config if self.datasource and hasattr(self.datasource, 'network_config'): File "/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceConfigDrive.py", line 150, in network_config self.network_json, known_macs=self.known_macs) File "/usr/lib/python3/dist-packages/cloudinit/sources/helpers/openstack.py", line 638, in convert_net_json known_macs = net.get_interfaces_by_mac() File "/usr/lib/python3/dist-packages/cloudinit/net/__init__.py", line 403, in get_interfaces_by_mac (name, ret[mac], mac)) RuntimeError: duplicate mac found! both 'gretap0' and 'lo' have mac '00:00:00:00:00:00' ------------------------------------------------------------ Cloud-init v. 0.7.9 running 'modules:config' at Fri, 19 May 2017 13:41:02 +0000. Up 4.0 seconds. Cloud-init v. 0.7.9 running 'modules:final' at Fri, 19 May 2017 13:41:04 +0000. Up 6.0 seconds. Cloud-init v. 0.7.9 finished at Fri, 19 May 2017 13:41:04 +0000. Datasource DataSourceConfigDrive [net,ver=2][source=/config-drive]. Up 6.0 seconds Related bugs: - * bug 1692545: guests have unexpected network devices gretap0 and gre0 + * bug 1692545: guests have unexpected network devices gretap0 and gre0
-- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1692028 Title: duplicate mac address during config-drive configuration with LXD container on openstack To manage notifications about this bug go to: https://bugs.launchpad.net/cloud-init/+bug/1692028/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs