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

[RFE] Add support to apply DCB based qos settings

Linking RHIVOS CVEs to...Migration: Automation ...Sync from "Extern...XMLWordPrintable

    • rhel-net-core
    • ssg_networking
    • 5
    • False
    • False
    • Hide

      None

      Show
      None
    • Yes
    • Red Hat Enterprise Linux
    • None
    • Hide

      User story:

      As a system administrator,

      I want to be able to apply DCB based QoS settings through NetworkManager,

      So that I can ensure consistent network performance across different Network Interface Cards (NICs) without using vendor-specific scripts or tools.

      Acceptance criteria:

      Given a system with NetworkManager installed,

      When they use the NetworkManager command-line interface (nmcli) to apply the DCB-based QoS settings (DSCP to Priority mapping setting, Set DCBX Mode to Firmware-controlled or OS controlled, Set the trust state to DSCP or PCP),

      Then, NetworkManager applies the DCB-based QoS settings to the kernel via netlink. 

       

      Given a system administrator uses NetworkManager to define DSCP to Priority mappings for a specific interface,

      When these configurations are applied,

      Then NetworkManager must process them, sending appropriate NETLINK messages to apply the mappings.

       

      Given a system administrator selects the DCBX mode (Firmware-controlled or OS-controlled) for an interface through NetworkManager,

      When this choice is executed,

      Then NetworkManager applies the selected mode to the NIC.

      (This is not to implement the Intel specific support - Only the netlink message support)

       

      Given a system administrator specifies the trust state (DSCP or PCP) for an interface using NetworkManager,

      When this setting is activated,

      Then NetworkManager ensures the setting is applied by sending the necessary NETLINK messages. 

      Definition of Done:

      • The implementation meets the acceptance criteria
      • Integration test is written and pass
      • The code is part of a downstream build attached to an errata
      • The release note text is filled

       

      Show
      User story: As a system administrator, I want to be able to apply DCB based QoS settings through NetworkManager, So that I can ensure consistent network performance across different Network Interface Cards (NICs) without using vendor-specific scripts or tools. Acceptance criteria: Given a system with NetworkManager installed, When they use the NetworkManager command-line interface (nmcli) to apply the DCB-based QoS settings (DSCP to Priority mapping setting, Set DCBX Mode to Firmware-controlled or OS controlled, Set the trust state to DSCP or PCP), Then, NetworkManager applies the DCB-based QoS settings to the kernel via netlink.    Given a system administrator uses NetworkManager to define DSCP to Priority mappings for a specific interface, When these configurations are applied, Then NetworkManager must process them, sending appropriate NETLINK messages to apply the mappings.   Given a system administrator selects the DCBX mode (Firmware-controlled or OS-controlled) for an interface through NetworkManager, When this choice is executed, Then NetworkManager applies the selected mode to the NIC. (This is not to implement the Intel specific support - Only the netlink message support)   Given a system administrator specifies the trust state (DSCP or PCP) for an interface using NetworkManager, When this setting is activated, Then NetworkManager ensures the setting is applied by sending the necessary NETLINK messages.   Definition of Done: The implementation meets the acceptance criteria Integration test is written and pass The code is part of a downstream build attached to an errata The release note text is filled  
    • None
    • None
    • Enhancement
    • Hide
      Feature, enhancement (describe the feature or enhancement from the user’s point of view):
      Reason (why has the feature or enhancement been implemented):
      Result (what is the current user experience):
      Show
      Feature, enhancement (describe the feature or enhancement from the user’s point of view): Reason (why has the feature or enhancement been implemented): Result (what is the current user experience):
    • Proposed
    • x86_64
    • None

      What were you trying to do that didn't work?

      Scripts attached here

      1) qos

      2) netlink.py

       
      Specific to port/interface DCB based qos settings can be applied per interface using NETLINK messages. To just verify the working of the NETLINK messages currently we have a script which does this (See attached file qos). But a generic/standard solution would be to be able to set it using NetworkManager common to different NICs.
       
      1) DSCP to Priority mapping setting
      2) Set DCBX Mode to Firmware-controlled or OS controlled
      3) Set the trust state to DSCP or PCP 
       
      Currently usage of each of the above case using the script is as below
       
      1) DSCP to Priority mapping
      ./qos -i <ethX> --dscp2prio=set,44,2
       
      Tried with Mellanox connect-x5 
      root@rhos-nfv-09:~# ./qos -i enp4s0f0np0 --dscp2prio=set,44,2
      DCBX mode: OS controlled
      Priority trust state: dscp
      dscp2prio mapping:
      prio:0 dscp:00,
      prio:2 dscp:44,
      default priority:
      Cable len: 7
      PFC configuration:
      priority    0   1   2   3   4   5   6   7
      enabled     0   1   1   0   0   0   0   0  
      tc: 0 , tsa: ets, bw: 20%
      priority:  3
      priority:  7
      tc: 1 , tsa: ets, bw: 20%
      priority:  0
      priority:  4
      tc: 2 , tsa: ets, bw: 60%
      priority:  1
      priority:  2
      priority:  5
      priority:  6
      root@rhos-nfv-09:~#
      root@rhos-nfv-09:~#
      root@rhos-nfv-09:~# ethtool -i enp4s0f0np0
      driver: mlx5_core
      version: 5.14.0-284.39.1.el9_2.x86_64
      firmware-version: 16.31.1014 (DEL0000000015)
      expansion-rom-version:
      bus-info: 0000:04:00.0
      supports-statistics: yes
      supports-test: yes
      supports-eeprom-access: no
      supports-register-dump: no
      supports-priv-flags: yes
      root@rhos-nfv-09:~# 
       
      Tried with Intel x710
      root@rhos-nfv-09:~# ./qos -i eno2 --dscp2prio=set,44,2
      DCBX mode: OS controlled
      Priority trust state: dscp
      dscp2prio mapping:
      prio:2 dscp:44,
      prio:3 dscp:24,
      default priority:
      prio:1
      Cable len: 1949
      PFC configuration:
      priority    0   1   2   3   4   5   6   7
      enabled     0   1   1   0   0   0   0   0  
      tc: 0 , tsa: ets, bw: 20%
      priority:  3
      priority:  7
      tc: 1 , tsa: ets, bw: 20%
      priority:  0
      priority:  4
      tc: 2 , tsa: ets, bw: 60%
      priority:  1
      priority:  2
      priority:  5
      priority:  6
      root@rhos-nfv-09:~# 
      root@rhos-nfv-09:~# ethtool -i eno2
      driver: i40e
      version: 5.14.0-284.39.1.el9_2.x86_64
      firmware-version: 9.20 0x8000d969 22.0.9
      expansion-rom-version:
      bus-info: 0000:01:00.1
      supports-statistics: yes
      supports-test: yes
      supports-eeprom-access: yes
      supports-register-dump: yes
      supports-priv-flags: yes
      root@rhos-nfv-09:~#
       
      2) Set DCBX Mode to Firmware controlled or OS controlled
       
      root@rhos-nfv-09:~# ./qos -i enp4s0f0np0 -d fw
      DCBX mode: Firmware controlled
       
      root@rhos-nfv-09:~# ./qos -i enp4s0f0np0 -d os
      DCBX mode: OS controlled
       
      But here for the Intel case it varies slightly as there is another ethtool command as below to set the firmware or non firmware mode 
      ethtool --set-priv-flags <ethX> disable-fw-lldp off
      ethtool --set-priv-flags <ethX> disable-fw-lldp on
       
      3) Set the trust state to DSCP or PCP 
       
      root@rhos-nfv-09:~# ./qos -i eno2 --trust pcp
      DCBX mode: Firmware controlled
      Priority trust state: pcp
       
      root@rhos-nfv-09:~# ./qos -i enp4s0f0np0 --trust dscp
      DCBX mode: OS controlled
      Priority trust state: dscp
       

        1. netlink.py
          9 kB
        2. qos
          14 kB

              nst-kernel-bugs nst-kernel-bugs
              arn1@redhat.com Abhiram R N
              nst-kernel-bugs nst-kernel-bugs
              Fei Liu Fei Liu
              Votes:
              0 Vote for this issue
              Watchers:
              20 Start watching this issue

                Created:
                Updated: