Public bug reported:

Cloud instances that configure network over DHCP in initramfs, will go
through a "for ROUNDTTT in 30 60 90 120" loop inside
configure_networking().

If the DHCP server is only offering a IPv6 (no IPv4), the instance will
take more than 5 minutes to boot, because it will first go through a
loop trying to obtain IPv4 IP (dhcpcd -1KL -t $ROUNDTTT -4
${DEVICE:+"${DEVICE}"}) for 30+60+90+120 seconds (total 300 seconds - 5
minutes), which won't work, until it times out, and then resume the boot
process.

In https://bugs.launchpad.net/ubuntu/+source/initramfs-
tools/+bug/2091904 initramfs-tools improved this situation, looking for
IPv6 information in /sys/firmware/ibft/ethernet*/ip-addr to decide
whether to look for IPv6 or IPv4, however that assumes that IP
information will be available through ibft, which is not always true.

If no IP information is available through ibft, we still go through this
incorrect loop, delaying the boot process.

Example from an instance booting through virtual disks, with no ibft,
and IPv6-only on Oracle Cloud:

```
[    0.000000] Command line: BOOT_IMAGE=/vmlinuz-6.12.0-1001-oracle 
root=LABEL=cloudimg-rootfs ro console=tty1 console=ttyS0 
nvme.shutdown_timeout=10 libiscsi.debug_libiscsi_eh=1 crash_kexec_post_notifiers
[...]
Begin: Running /scripts/init-premount ... done.
Begin: Mounting root file system ... Begin: Running /scripts/local-top ... [    
2.863248] No iBFT detected.
Could not setup fw entries.
Begin: Waiting up to 180 secs for any network device to become available ... 
done.
dhcpcd-10.1.0 starting
dev: loaded udev
[    2.906793] 8021q: 802.1Q VLAN Support v1.8
[    2.917496] 8021q: adding VLAN 0 to HW filter on device enp0s5
DUID 00:03:00:01:02:00:17:36:95:6d
enp0s5: IAID 17:36:95:6d
enp0s5: carrier acquired
enp0s5: IAID 17:36:95:6d
[    2.983134] workqueue: drm_fb_helper_damage_work hogged CPU for >10000us 7 
times, consider switching to WQ_UNBOUND
enp0s5: soliciting a DHCP lease
timed out
exiting due to oneshot
dhcpcd exited
Sleeping 0 seconds before retrying getting a DHCP lease
dhcpcd-10.1.0 starting
dev: loaded udev
DUID 00:03:00:01:02:00:17:36:95:6d
enp0s5: IAID 17:36:95:6d
enp0s5: soliciting a DHCP lease
timed out
exiting due to oneshot
dhcpcd exited
Sleeping 0 seconds before retrying getting a DHCP lease
dhcpcd-10.1.0 starting
dev: loaded udev
DUID 00:03:00:01:02:00:17:36:95:6d
enp0s5: IAID 17:36:95:6d
enp0s5: soliciting a DHCP lease
timed out
exiting due to oneshot
dhcpcd exited
Sleeping 0 seconds before retrying getting a DHCP lease
dhcpcd-10.1.0 starting
dev: loaded udev
DUID 00:03:00:01:02:00:17:36:95:6d
enp0s5: IAID 17:36:95:6d
enp0s5: soliciting a DHCP lease
timed out
exiting due to oneshot
dhcpcd exited
Sleeping 0 seconds before retrying getting a DHCP lease
no search or nameservers found in /run/net-.conf /run/net-*.conf 
/run/net6-*.conf
[  303.057039] Loading iSCSI transport class v2.0-870.
[  303.069113] iscsi: registered transport (tcp)
Could not get boot entry.
done.
```

Full log: https://pastebin.ubuntu.com/p/Sk5dcvpPyY/

We can see such loop between lines 1136 and 1176.

** Affects: initramfs-tools (Ubuntu)
     Importance: Undecided
         Status: New

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

Title:
  IPv6-only (single stack) instances configuring network over dhcp in
  initramfs will take a long time to boot due to loop in dhcpcd -4

Status in initramfs-tools package in Ubuntu:
  New

Bug description:
  Cloud instances that configure network over DHCP in initramfs, will go
  through a "for ROUNDTTT in 30 60 90 120" loop inside
  configure_networking().

  If the DHCP server is only offering a IPv6 (no IPv4), the instance
  will take more than 5 minutes to boot, because it will first go
  through a loop trying to obtain IPv4 IP (dhcpcd -1KL -t $ROUNDTTT -4
  ${DEVICE:+"${DEVICE}"}) for 30+60+90+120 seconds (total 300 seconds -
  5 minutes), which won't work, until it times out, and then resume the
  boot process.

  In https://bugs.launchpad.net/ubuntu/+source/initramfs-
  tools/+bug/2091904 initramfs-tools improved this situation, looking
  for IPv6 information in /sys/firmware/ibft/ethernet*/ip-addr to decide
  whether to look for IPv6 or IPv4, however that assumes that IP
  information will be available through ibft, which is not always true.

  If no IP information is available through ibft, we still go through
  this incorrect loop, delaying the boot process.

  Example from an instance booting through virtual disks, with no ibft,
  and IPv6-only on Oracle Cloud:

  ```
  [    0.000000] Command line: BOOT_IMAGE=/vmlinuz-6.12.0-1001-oracle 
root=LABEL=cloudimg-rootfs ro console=tty1 console=ttyS0 
nvme.shutdown_timeout=10 libiscsi.debug_libiscsi_eh=1 crash_kexec_post_notifiers
  [...]
  Begin: Running /scripts/init-premount ... done.
  Begin: Mounting root file system ... Begin: Running /scripts/local-top ... [  
  2.863248] No iBFT detected.
  Could not setup fw entries.
  Begin: Waiting up to 180 secs for any network device to become available ... 
done.
  dhcpcd-10.1.0 starting
  dev: loaded udev
  [    2.906793] 8021q: 802.1Q VLAN Support v1.8
  [    2.917496] 8021q: adding VLAN 0 to HW filter on device enp0s5
  DUID 00:03:00:01:02:00:17:36:95:6d
  enp0s5: IAID 17:36:95:6d
  enp0s5: carrier acquired
  enp0s5: IAID 17:36:95:6d
  [    2.983134] workqueue: drm_fb_helper_damage_work hogged CPU for >10000us 7 
times, consider switching to WQ_UNBOUND
  enp0s5: soliciting a DHCP lease
  timed out
  exiting due to oneshot
  dhcpcd exited
  Sleeping 0 seconds before retrying getting a DHCP lease
  dhcpcd-10.1.0 starting
  dev: loaded udev
  DUID 00:03:00:01:02:00:17:36:95:6d
  enp0s5: IAID 17:36:95:6d
  enp0s5: soliciting a DHCP lease
  timed out
  exiting due to oneshot
  dhcpcd exited
  Sleeping 0 seconds before retrying getting a DHCP lease
  dhcpcd-10.1.0 starting
  dev: loaded udev
  DUID 00:03:00:01:02:00:17:36:95:6d
  enp0s5: IAID 17:36:95:6d
  enp0s5: soliciting a DHCP lease
  timed out
  exiting due to oneshot
  dhcpcd exited
  Sleeping 0 seconds before retrying getting a DHCP lease
  dhcpcd-10.1.0 starting
  dev: loaded udev
  DUID 00:03:00:01:02:00:17:36:95:6d
  enp0s5: IAID 17:36:95:6d
  enp0s5: soliciting a DHCP lease
  timed out
  exiting due to oneshot
  dhcpcd exited
  Sleeping 0 seconds before retrying getting a DHCP lease
  no search or nameservers found in /run/net-.conf /run/net-*.conf 
/run/net6-*.conf
  [  303.057039] Loading iSCSI transport class v2.0-870.
  [  303.069113] iscsi: registered transport (tcp)
  Could not get boot entry.
  done.
  ```

  Full log: https://pastebin.ubuntu.com/p/Sk5dcvpPyY/

  We can see such loop between lines 1136 and 1176.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/initramfs-tools/+bug/2098515/+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