** 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

Reply via email to