Bug 2215280 - Failed to apply DHCP along with static routes
Summary: Failed to apply DHCP along with static routes
Keywords:
Status: CLOSED NOTABUG
Alias: None
Product: Red Hat Enterprise Linux 9
Classification: Red Hat
Component: nmstate
Version: 9.3
Hardware: Unspecified
OS: Unspecified
medium
medium
Target Milestone: rc
: ---
Assignee: Gris Ge
QA Contact: Mingyu Shi
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2023-06-15 10:08 UTC by Mingyu Shi
Modified: 2023-07-12 07:34 UTC (History)
6 users (show)

Fixed In Version:
Doc Type: No Doc Update
Doc Text:
Clone Of:
Environment:
Last Closed: 2023-07-12 07:34:15 UTC
Type: Bug
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Issue Tracker NMT-618 0 None None None 2023-06-15 10:09:04 UTC
Red Hat Issue Tracker RHELPLAN-159968 0 None None None 2023-06-15 10:09:09 UTC

Description Mingyu Shi 2023-06-15 10:08:23 UTC
Description of problem:
This looks like a regression of https://bugzilla.redhat.com/show_bug.cgi?id=2169982
Nmstate cannot apply DHCP along with static routes(no matter "auto-routes=false" is set or not), while this works on RHEL 8 backport.

Version-Release number of selected component (if applicable):
nmstate-2.2.12-2.el9.x86_64
nispor-1.2.10-1.el9.x86_64
NetworkManager-1.43.9-1.el9.x86_64
DISTRO=RHEL-9.3.0-updates-20230611.28

How reproducible:
100%

Steps to Reproduce:
echo "
interfaces:
  - name: bond0
    type: bond
    state: up
    mtu: 9000
    mac-address: d4:ee:07:25:42:5a
    ipv4:
      enabled: true
      dhcp: true
    ipv6:
      enabled: true
      dhcp: true
      autoconf: true
    link-aggregation:
      mode: 802.3ad
      options:
        miimon: "150"
      port:
        - veth0
        - veth1
  - name: veth0
    type: veth
    state: up
    veth:
      peer: veth0_p
  - name: veth1
    type: veth
    state: up
    veth:
      peer: veth1_p
dns-resolver:
  config:
    server:
      - 8.8.8.8
      - 2400:3200:baba::1
routes:
  config:
    - destination: 0.0.0.0/0
      next-hop-address: 192.168.199.1
      next-hop-interface: bond0
      table-id: 200
    - destination: ::/0
      next-hop-address: 192:168:199::1
      next-hop-interface: bond0
      table-id: 200
" | nmstatectl apply

Actual results:
[2023-06-15T10:02:19Z INFO  nmstate::query_apply::net_state] Created checkpoint /org/freedesktop/NetworkManager/Checkpoint/88
[2023-06-15T10:02:20Z WARN  nmstate::nm::query_apply::apply] Cannot store DNS to NetworkManager interface connection: InvalidArgument: Failed to find suitable(IP enabled with DHCP off or auto-dns: false) interface for DNS server ["2400:3200:baba::1"]
[2023-06-15T10:02:20Z WARN  nmstate::nm::query_apply::dns] Storing DNS to NetworkManager via global dns API, this will cause __all__ interface level DNS settings been ignored
[2023-06-15T10:02:20Z INFO  nmstate::nm::settings::connection] Creating veth peer profile veth0_p for veth0
[2023-06-15T10:02:20Z INFO  nmstate::nm::profile] Skipping activation of veth0 as its controller bond0 will automatically activate it
[2023-06-15T10:02:20Z INFO  nmstate::nm::profile] Skipping activation of veth0 as its controller bond0 will automatically activate it
[2023-06-15T10:02:20Z INFO  nmstate::nm::settings::connection] Creating veth peer profile veth1_p for veth1
[2023-06-15T10:02:20Z INFO  nmstate::nm::profile] Skipping activation of veth1 as its controller bond0 will automatically activate it
[2023-06-15T10:02:20Z INFO  nmstate::nm::profile] Skipping activation of veth1 as its controller bond0 will automatically activate it
[2023-06-15T10:02:20Z INFO  nmstate::nm::query_apply::profile] Creating connection UUID Some("dd9146ed-84dc-4124-a22d-637dd2a98687"), ID Some("bond0"), type Some("bond") name Some("bond0")
[2023-06-15T10:02:20Z INFO  nmstate::nm::query_apply::profile] Creating connection UUID Some("654e6874-14cb-44ff-8b1c-6f3a6ebb5766"), ID Some("veth0"), type Some("veth") name Some("veth0")
[2023-06-15T10:02:20Z INFO  nmstate::nm::query_apply::profile] Creating connection UUID Some("3bfbc04a-631f-47e7-a8e9-7246b6a07ba8"), ID Some("veth0_p"), type Some("veth") name Some("veth0_p")
[2023-06-15T10:02:20Z INFO  nmstate::nm::query_apply::profile] Creating connection UUID Some("1e7c1a37-b9b8-457c-baaa-a95eb0909d2e"), ID Some("veth1"), type Some("veth") name Some("veth1")
[2023-06-15T10:02:20Z INFO  nmstate::nm::query_apply::profile] Creating connection UUID Some("8592169a-9f39-43c4-aff2-0e6b3944e486"), ID Some("veth1_p"), type Some("veth") name Some("veth1_p")
[2023-06-15T10:02:20Z INFO  nmstate::nm::query_apply::profile] Activating connection dd9146ed-84dc-4124-a22d-637dd2a98687: bond0/bond
[2023-06-15T10:02:20Z INFO  nmstate::query_apply::net_state] Retrying on: VerificationError: Verification failure: bond0.interface.link-aggregation.port desire '["veth0","veth1"]', current '[]'
[2023-06-15T10:02:21Z INFO  nmstate::query_apply::net_state] Retrying on: VerificationError: Desired route destination: ::/0 next-hop-interface: bond0 next-hop-address: 192:168:199::1 table-id: 200 not found after apply
[2023-06-15T10:02:22Z INFO  nmstate::query_apply::net_state] Retrying on: VerificationError: Desired route destination: ::/0 next-hop-interface: bond0 next-hop-address: 192:168:199::1 table-id: 200 not found after apply
[2023-06-15T10:02:23Z INFO  nmstate::query_apply::net_state] Retrying on: VerificationError: Desired route destination: ::/0 next-hop-interface: bond0 next-hop-address: 192:168:199::1 table-id: 200 not found after apply
[2023-06-15T10:02:24Z INFO  nmstate::query_apply::net_state] Retrying on: VerificationError: Desired route destination: ::/0 next-hop-interface: bond0 next-hop-address: 192:168:199::1 table-id: 200 not found after apply
[2023-06-15T10:02:26Z WARN  nmstate::nm::query_apply::apply] Cannot store DNS to NetworkManager interface connection: InvalidArgument: Failed to find suitable(IP enabled with DHCP off or auto-dns: false) interface for DNS server ["2400:3200:baba::1"]
[2023-06-15T10:02:26Z WARN  nmstate::nm::query_apply::dns] Storing DNS to NetworkManager via global dns API, this will cause __all__ interface level DNS settings been ignored
[2023-06-15T10:02:26Z INFO  nmstate::nm::settings::connection] Creating veth peer profile veth0_p for veth0
[2023-06-15T10:02:26Z INFO  nmstate::nm::settings::connection] Creating veth peer profile veth1_p for veth1
[2023-06-15T10:02:26Z INFO  nmstate::nm::query_apply::profile] Modifying connection UUID Some("dd9146ed-84dc-4124-a22d-637dd2a98687"), ID Some("bond0"), type Some("bond") name Some("bond0")
[2023-06-15T10:02:26Z INFO  nmstate::nm::query_apply::profile] Modifying connection UUID Some("654e6874-14cb-44ff-8b1c-6f3a6ebb5766"), ID Some("veth0"), type Some("veth") name Some("veth0")
[2023-06-15T10:02:26Z INFO  nmstate::nm::query_apply::profile] Modifying connection UUID Some("3bfbc04a-631f-47e7-a8e9-7246b6a07ba8"), ID Some("veth0_p"), type Some("veth") name Some("veth0_p")
[2023-06-15T10:02:26Z INFO  nmstate::nm::query_apply::profile] Modifying connection UUID Some("1e7c1a37-b9b8-457c-baaa-a95eb0909d2e"), ID Some("veth1"), type Some("veth") name Some("veth1")
[2023-06-15T10:02:26Z INFO  nmstate::nm::query_apply::profile] Modifying connection UUID Some("8592169a-9f39-43c4-aff2-0e6b3944e486"), ID Some("veth1_p"), type Some("veth") name Some("veth1_p")
[2023-06-15T10:02:26Z INFO  nmstate::nm::query_apply::profile] Activating connection dd9146ed-84dc-4124-a22d-637dd2a98687: bond0/bond
[2023-06-15T10:02:26Z INFO  nmstate::nm::query_apply::profile] Reapplying connection 654e6874-14cb-44ff-8b1c-6f3a6ebb5766: veth0/veth
[2023-06-15T10:02:26Z INFO  nmstate::nm::query_apply::profile] Activating connection 3bfbc04a-631f-47e7-a8e9-7246b6a07ba8: veth0_p/veth
[2023-06-15T10:02:26Z INFO  nmstate::nm::query_apply::profile] Reapplying connection 1e7c1a37-b9b8-457c-baaa-a95eb0909d2e: veth1/veth
[2023-06-15T10:02:26Z INFO  nmstate::nm::query_apply::profile] Activating connection 8592169a-9f39-43c4-aff2-0e6b3944e486: veth1_p/veth
[2023-06-15T10:02:26Z INFO  nmstate::query_apply::net_state] Retrying on: VerificationError: Desired route destination: 0.0.0.0/0 next-hop-interface: bond0 next-hop-address: 192.168.199.1 table-id: 200 not found after apply
[2023-06-15T10:02:27Z INFO  nmstate::query_apply::net_state] Retrying on: VerificationError: Desired route destination: 0.0.0.0/0 next-hop-interface: bond0 next-hop-address: 192.168.199.1 table-id: 200 not found after apply
[2023-06-15T10:02:28Z INFO  nmstate::query_apply::net_state] Retrying on: VerificationError: Desired route destination: 0.0.0.0/0 next-hop-interface: bond0 next-hop-address: 192.168.199.1 table-id: 200 not found after apply
[2023-06-15T10:02:29Z INFO  nmstate::query_apply::net_state] Retrying on: VerificationError: Desired route destination: 0.0.0.0/0 next-hop-interface: bond0 next-hop-address: 192.168.199.1 table-id: 200 not found after apply
[2023-06-15T10:02:31Z INFO  nmstate::query_apply::net_state] Rollbacked to checkpoint /org/freedesktop/NetworkManager/Checkpoint/88
NmstateError: VerificationError: Desired route destination: 0.0.0.0/0 next-hop-interface: bond0 next-hop-address: 192.168.199.1 table-id: 200 not found after apply

Expected results:
No failure

Additional info:

Comment 1 Gris Ge 2023-06-27 13:19:36 UTC
Tried in my VM with 2.2.12 , works well there.

Could you try again and prepare a server for debug?

Thank you!

Comment 4 Gris Ge 2023-07-12 07:01:57 UTC
In RHEL 8, route been applied to interface *before* DHCP finished. In RHEL 9, route only applied to interface *after* DHCP finished.

For this bug, nmstate noticed desired route is never applied to bond0 because there is no DHCP server.

Still waiting NM developer to confirm this as a bug or expected behavior.

Comment 5 Gris Ge 2023-07-12 07:07:45 UTC
Got confirmation from NM developer as this is expected behavior in RHEL 9.


The static route will only been applied to kernel *after* DHCP finished, please check the detail at https://bugzilla.redhat.com/show_bug.cgi?id=2102212

Comment 6 Gris Ge 2023-07-12 07:34:15 UTC
Closing as this is expected behavior and got consent from reporter.

The static route on DHCP interface required a working DHCP server.


Note You need to log in before you can comment on or make changes to this bug.