Jay,

The good news is that, with 0.130ubuntu3.11, initramfs-tools is now able
to render a correct netplan YAML file:

# cat /run/netplan/ens3.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    ens3:
      set-name: ens3
      dhcp4: true
      dhcp-identifier: mac
      critical: true
      nameservers:
        addresses: ["100.100.100.60", "100.100.100.160"]
        search: ["domainname.com"]

However, net_failover 3-netdev interfaces are still showing incorrect
names:

# ip l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode 
DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens3: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT 
group default qlen 1000
    link/ether 12:3f:bd:fd:bb:1e brd ff:ff:ff:ff:ff:ff
3: rename3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master 
ens3 state UP mode DEFAULT group default qlen 1000
    link/ether 12:3f:bd:fd:bb:1e brd ff:ff:ff:ff:ff:ff
4: rename4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master ens3 
state UP mode DEFAULT group default qlen 1000
    link/ether 12:3f:bd:fd:bb:1e brd ff:ff:ff:ff:ff:ff

while we should expect to see something like:

# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode 
DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens3: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT 
group default qlen 1000
    link/ether 12:3f:bd:fd:bb:1e brd ff:ff:ff:ff:ff:ff
3: ens3nsby: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master 
ens3 state UP mode DEFAULT group default qlen 1000
    link/ether 12:3f:bd:fd:bb:1e brd ff:ff:ff:ff:ff:ff
4: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master ens3 state 
UP mode DEFAULT group default qlen 1000
    link/ether 12:3f:bd:fd:bb:1e brd ff:ff:ff:ff:ff:ff

The culprit, as I ever indicated before, is that even with the seemingly
correct netplan config provided, the netplan tool itself still doesn't
recognize the 3-netdev failover interface, ending up with below udev
rules renderred that runs conflict with the 3-netdev model:

# cat /run/systemd/network/10-netplan-ens3.link
[Match]
MACAddress=12:3f:bd:fd:bb:1e

[Link]
Name=ens3
WakeOnLan=off

# cat /run/udev/rules.d/99-netplan-ens3.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", 
ATTR{address}=="12:3f:bd:fd:bb:1e", NAME="ens3"

I understand that the solution we agreed upon has to rely on cloud-init
providing supplemental udev rules for naming the ens3nsby (failover
standby) and the ens4 (failover primary) interface. But, I don't see how
the resulted 99-netplan-ens3.rules would work, given that all the 3
netdevs share a same MAC address, and there's no other udev attribute to
differentiate? What's in your mind that needs to be fixed next, netplan
or udevd?

Thanks,
-Siwei

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to systemd in Ubuntu.
https://bugs.launchpad.net/bugs/1820929

Title:
  netplan should consider adding more udev attribute for exact matching
  of failover 3-netdev interfaces

Status in netplan:
  Triaged
Status in initramfs-tools package in Ubuntu:
  New
Status in netplan.io package in Ubuntu:
  Triaged
Status in systemd package in Ubuntu:
  Incomplete
Status in initramfs-tools source package in Bionic:
  Fix Released
Status in netplan.io source package in Bionic:
  New
Status in systemd source package in Bionic:
  New

Bug description:
  [Impact]

  * At present, virtual machines utilizing net_failover network
  interface configurations are incorrectly configured due to the
  reliance on the MAC address to identify specific network interfaces.
  When net_failover is utilized, multiple interfaces will bear the same
  MAC address (the net_failover master itself, as well as the interfaces
  subordinate to it), rendering the MAC address ineffective for unique
  identification of the interface.  This results in incorrect naming of
  network interfaces from the "set-name" directive in the netplan
  configuration.

  * The solution here is to use the interface name instead of the MAC
  address when the interface is a net_failover master device.  Logic is
  added on initramfs-tools to check the device type and virtio flags to
  apply this change only to net_failover master devices.

  [Test Case]

  * The change can be tested by configuring a virtual machine with a
  virtio_net network device with the "failover=on" option to the
  "-device" option to qemu, e.g.,

  -device virtio-net-
  
pci,netdev=hostnet0,id=net0,bus=pci.0,addr=0x3,mac=00:00:17:00:18:04,failover=on

  * This will set the virtio device "standby" feature bit (bit 62,
  counting from 0).  This requires a version of qemu with support for
  this feature.

  * When so configured, the netplan configuration generated by initramfs
  will not contain a "macaddress:" match directive for the network
  interface in question.

  [Regression Potential]

  * Erroneous identification of a network interface as a net_failover
  master device could lead to omission of a macaddress directive,
  causing interfaces to be incorrectly named.

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

-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to