Uploaded image for project: 'RHEL'
  1. RHEL
  2. RHEL-118575

[RFE] nmcli: Show bonding runtime status like /proc/net/bonding

Linking RHIVOS CVEs to...Migration: Automation ...SWIFT: POC ConversionSync from "Extern...XMLWordPrintable

    • Icon: Story Story
    • Resolution: Won't Do
    • Icon: Normal Normal
    • None
    • None
    • NetworkManager
    • None
    • rhel-net-mgmt
    • None
    • False
    • False
    • Hide

      None

      Show
      None
    • None
    • None
    • Hide

      Definition of Done:

      Please mark each item below with ( / ) if completed or ( x ) if incomplete:

      ( ) The acceptance criteria defined below are met.

      Given a bond interface managed by NetworkManager with multiple slaves,

      When a sysadmin queries its status via D-Bus or `nmcli bond status <iface>`,

      Then the output includes active slave, per-slave link state, failure counts, and overall bond health derived from sysfs.


      ( ) Integration test case is available upstream.


      ( ) Code is reviewed and merged upstream.


      ( ) Preliminary testing is done.


      ( ) Upstream documentation is written in the upstream MR.


      ( ) Release notes text is written in the RHEL issue.


      ( ) A demo is recorded

      Show
      Definition of Done: Please mark each item below with ( / ) if completed or ( x ) if incomplete: ( ) The acceptance criteria defined below are met. Given a bond interface managed by NetworkManager with multiple slaves, When a sysadmin queries its status via D-Bus or `nmcli bond status <iface>`, Then the output includes active slave, per-slave link state, failure counts, and overall bond health derived from sysfs. ( ) Integration test case is available upstream. ( ) Code is reviewed and merged upstream. ( ) Preliminary testing is done. ( ) Upstream documentation is written in the upstream MR. ( ) Release notes text is written in the RHEL issue. ( ) A demo is recorded
    • None
    • None
    • Unspecified
    • Unspecified
    • Unspecified
    • None

      Problem statement / current behavior:

      Currently, nmcli and NetworkManager expose only configuration-level information about bonding interfaces (mode, slaves, options, connection status). Runtime status information — such as which slave is active, per-slave MII link state, failover events, and counters — is only available by reading /proc/net/bonding/<bond> or the corresponding sysfs files.

      Operators and monitoring systems therefore need to parse /proc directly or write custom scripts. This creates inconsistency: all other link/device state is available via NetworkManager’s D-Bus API, except bonding runtime internals.

      Requested enhancement / desired behaviour:

      Add support in NetworkManager to expose runtime bonding internals through its D-Bus API and surface them in nmcli.

      At a minimum, include fields such as:

      • Active slave interface name
      • MII link state of each slave (up/down)
      • Link failure counters (per slave)
      • Up/Down delay timers
      • {{Bonding Mode and }}Transmit hash policy and currently selected slave (for active-backup, XOR, etc.)
      • Slave link speed and duplex (as reported by ethtool)
      • Aggregator ID
      •  {{Permanent HW }}
      • Bond configuration status: It would be helpful to display the bond mode status, like 'good' or 'degraded', depending on the bond mode conditions. For instance, in "active-backup' mode, there should be at least two interfaces. If one interface goes down, the bond status should reflect 'degraded".

      Proposed CLI extensions:

      • A new subcommand, such as:

                  nmcli bond status <bond>

           D-Bus API additions: expose /sys/class/net/<bond>/bonding/* values in NMDeviceBond objects.

      Use cases / justification:

      • Unified monitoring and diagnostics through NetworkManager API instead of relying on /proc.
      • Easier integration with automation, monitoring systems 
      • Faster operator troubleshooting: no need to correlate nmcli and /proc/net/bonding.
      • Aligns bonding with other device types where runtime state is already exposed by NetworkManager.

      Impact of not fixing:

      • Operators must use two tools (nmcli + manual /proc parsing) to get complete bond status.
      • Monitoring cannot rely solely on NetworkManager D-Bus API.
      • Inconsistency with other device types managed by NetworkManager.

      Suggested implementation approach:

      • Read runtime attributes from /sys/class/net/<bond>/bonding/* (preferred over parsing /proc).
      • Extend NMDeviceBond object in D-Bus to carry these values.
      • Update nmcli to display them in a human-friendly format.

      KCS: The following KCS is an example where we see many cases created because the customer was unsure whether the bond was functioning correctly or not. During bond configuration, it was working; however, later the customer faced a bond network flipping because the bond was in a degraded mode. The customer was unaware of the bond's actual status, and we did not have an easy command to check it https://access.redhat.com/solutions/631283 

              nm-team Network Management Team
              rhn-support-bas Balakrishnan S
              Network Management Team Network Management Team
              Vladimir Benes Vladimir Benes
              Votes:
              0 Vote for this issue
              Watchers:
              8 Start watching this issue

                Created:
                Updated:
                Resolved: