Linkspeed-Konfiguration von Broadcom Netzwerkkarten

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen

Bei der Einbindung von Broadcom Netzwerkkarten in Linux Distributionen kann die Verbindungsgeschwindigkeit (Linkspeed) vom erwarteten Wert abweichen. Dieser lässt sich nachträglich mithilfe der Firmware Utility bnxtnvm konfigurieren.

Dieser Artikel beschreibt die Prüfung und Konfiguration der Linkspeeds mithilfe von bnxtnvm/NICCLI.


Bevor Sie beginnen, befolgen Sie diesen Artikel um den Maintenance Mode zu aktivieren.

Prüfung der Verbindungsgeschwindigkeit

Aufgrund des Mischbetriebs von unterschiedlichen Linkspeeds können einzelne Ports außer Funktion gesetzt sein. Im Produktivbetrieb macht sich das durch fehlende Verbindungen und/oder eine geringere Geschwindigkeit im Netzwerk bemerkbar, z.B. bei Betrieb eines Server-Clusters mit Mesh-Verkabelung. Entfernen Sie auch sämtliche Transceiver der zu konfigurierenden Netzwerkkarte.

Hinweis: Beachten Sie dazu die Kompatibilität der Linkspeeds. Bestimmte Broadcomkarten unterstützen keinen oder nur bestimmte Mischbetriebe.

Hier ein Beispiel für eine fehlerhafte Ausgabe:

root@PMX1:~# ethtool enp67s0f0np0 
Settings for enp67s0f0np0:
       Supported ports: [ FIBRE ]
       Supported link modes:   10000baseT/Full
                               25000baseCR/Full
       Supported pause frame use: Symmetric Receive-only
       Supports auto-negotiation: Yes
       Supported FEC modes: RS  BASER
       Advertised link modes:  10000baseT/Full
       Advertised pause frame use: No
       Advertised auto-negotiation: Yes
       Advertised FEC modes: RS         BASER
       Speed: 10000Mb/s
       Duplex: Full
       Auto-negotiation: on
       Port: Direct Attach Copper
       PHYAD: 0
       Transceiver: internal
       Supports Wake-on: g
       Wake-on: d
       Current message level: 0x00002081 (8321)
                              drv tx_err hw
       Link detected: yes

Unter "Advertised link modes" wird nur eine Geschwindigkeit angezeigt (10 Gb/s), obwohl die Netzwerkkarte auf 25 Gb/s laufen könnte.

Linkspeed Konfiguration mit bnxtnvm

Hinweis: Im Falle einer Mesh-Verkabelung ist es unter Umständen notwendig, dass Sie die Direktverkabelung der zu konfigurierenden Systeme vor Beginn der Konfiguration trennen. Die anderen Systeme können untereinander verkabelt bleiben.

Um die gewünschte und volle Funktionalität der Netzwerkkarten zu erreichen, müssen Sie die Netzwerkkarten mithilfe von bnxtnvm zur Nutzung der gewünschten Geschwindigkeit zwingen.

bnxtnvm können Sie im Thomas-Krenn Downloadsbereich für Ihre Windows-Systeme herunterladen oder durch folgende Befehle auf Ihren Linux-Systemen nutzen:

wget https://www.thomaskrenn.com/redx/tools/mb_download.php/ct.YuuHGw/mid.y9b3b4ba2bf7ab3b8/bnxtnvm.zip &&
unzip bnxtnvm.zip &&
chmod +x bnxtnvm

Anschließend müssen sie eine Reihe von Befehlen absetzen, um Ihr System auf die gewünschte Geschwindigkeit anzupassen:

Auslesen konfigurierbarer Geschwindigkeiten

Im ersten Schritt werden die Linkspeed-IDs des Treibers der Netzwerkkarte benötigt:

./bnxtnvm  -dev=enp67s0f0np0 optionhelp=drv_link_speed

Ausgabe:

Name                   : drv_link_speed
Description            : Driver Link speed
Option Type            : Multi Instance Type
Max Instance Indexes   : 0 to 15
Valid values           :
  0 (Autoneg)
  1 (1G)
  2 (10G)
  3 (25G)
  4 (40G)
  5 (50G)
  6 (100G)
  7 (200G_PAM4)
  8 (50G_PAM4)
  9 (100G_PAM4)
  14 (5G)
  15 (100M)

Die Linkspeed-ID wird für die Erzwingung der gewünschten Verbindungsgeschwindigkeit benötigt.

Konfiguration des Linkspeeds

Die Verbindungsgeschwindigkeit wird jetzt mithilfe der Linkspeed-ID gesetzt:

./bnxtnvm -dev=enp67s0f0np0 setoption=drv_link_speed:0#3

./bnxtnvm -dev=enp67s0f0np0 setoption=firmware_link_speed_d0:0#3

./bnxtnvm -dev=enp67s0f0np0 setoption=firmware_link_speed_d3:0#3

Zur Erläuterung der Befehle:

Interface-ID Option Port Linkspeed-ID
enp67s0f0np0 drv_link_speed 0 3
enp67s0f0np0 firmware_link_speed_d0 0 3
enp67s0f0np0 firmware_link_speed_d3 0 3

Der drv_link_speed, firmware_link_speed_d0 & firmware_link_speed_d3 müssen für alle Ports gesetzt werden.

Die Werte entsprechen der Port-Anzahl der verwendeten Netzwerkkarte (z.B.: 0, 1, 2 und 3 bei einer Netzwerkkarte mit 4 Netzwerkports).

Mit der Linkspeed-ID "3" wird eine Geschwindigkeit von 25 Gb/s erzwungen.

Man erhält folgende Ausgabe nach Durchführung des Befehls:

root@PMX1:~# ./bnxtnvm  -dev=enp67s0f0np0 setoption=drv_link_speed:0#3
drv_link_speed is set successfully
Please reboot the system to apply the configuration

Nach Eingabe der Befehle für alle Ports ist ein Reboot des Systems notwendig.

Verifizierung der Änderungen

Führen Sie folgenden Befehl aus um den Status zu prüfen:

./bnxtnvm -dev=enp67s0f0np0 device_info

Die Konfiguration wurde korrekt durchgeführt, wenn der FW Image Status den Wert Operational ausgibt:

root@PMX1:~# ./bnxtnvm -dev=enp67s0f0np0 device_info

Device Interface Name       : enp67s0f0np0
MACAddress                  : bc:97:e1:da:92:a0
Base MACAddress             : BC:97:E1:DA:92:A0
Device Serial Number        : P425G214400143FV
Chip Number                 : BCM57504
Part Number                 : BCM957504-P425G
Description                 : Broadcom NetXtreme-E Quad-port 25Gb Ethernet PCIe Adapter
PCI Vendor Id               : 14e4
PCI Device Id               : 1750
PCI Subsys Vendor Id        : 14e4
PCI Subsys Device Id        : 2100
PCI Device Name             : 0000:01:00.0
Adapter Rev                 : 11
Active Package version      : 224.1.102.0
Package version on NVM      : 224.1.102.0
Firmware version            : 224.0.159.0
Active NVM config version   : 0.0.34
NVM config version          : 0.0.34
Firmware Reset Counter      : 0
Error Recovery Counter      : 0
Crash Dump Timestamp        : N/A
Reboot Required             : No
Secure Boot                 : Enabled
Secure Firmware Update      : Enabled
FW Image Status                              : Operational
Crash Dump Available in DDR : False

Ist das nicht der Fall, muss zusätzlich die Firmware der Netzwerkkarte synchronisiert werden.

Firmware Sync

Durch die Synchronisation der Firmware wird der eingetragene Linkspeed übernommen:

./bnxtnvm -dev=enp67s0f0np0 fw_sync

Kontrolle mithilfe von ethtool

Die erfolgreiche Konfiguration kann jetzt mit dem ethtool überprüft werden:

root@PMX1:~# ethtool enp67f0np0 
Settings for enp67f0np0:
       Supported ports: [ FIBRE ]
       Supported link modes:   10000baseT/Full
                               25000baseCR/Full
       Supported pause frame use: Symmetric Receive-only
       Supports auto-negotiation: Yes
       Supported FEC modes: RS  BASER
       Advertised link modes:  25000baseCR/Full
       Advertised pause frame use: No
       Advertised auto-negotiation: Yes
       Advertised FEC modes: RS         BASER
       Speed: 25000Mb/s
       Duplex: Full
       Auto-negotiation: on
       Port: Direct Attach Copper
       PHYAD: 0
       Transceiver: internal
       Supports Wake-on: g
       Wake-on: d
       Current message level: 0x00002081 (8321)
                              drv tx_err hw
       Link detected: yes

Zuletzt können Sie den Maintenance Mode wieder deaktivieren und wiederholen Sie gegebenenfalls dieses Vorgehen bei den restlichen Nodes.

Linkspeed Konfiguration mit NICCLI

Hinweis: Im Falle einer Mesh-Verkabelung ist es unter Umständen auch hier notwendig, dass Sie die Direktverkabelung der zu konfigurierenden Systeme vor Beginn der Konfiguration trennen. Die anderen Systeme können untereinander verkabelt bleiben. Entfernen Sie auch sämtliche Transceiver der zu konfigurierenden Netzwerkkarte.

Um die gewünschte und volle Funktionalität der Netzwerkkarten zu erreichen, müssen Sie die Netzwerkkarten mithilfe von NICCLI zur Nutzung der gewünschten Geschwindigkeit zwingen.

Installation NICCLI

Um NICCLI zu installieren befolgen Sie folgende Anleitung: Installation NICCLI

Zu Beginn führen Sie folgenden Befehl aus, um die Zuordnung der Interfacenamen und PCI-IDs herauszufinden:

root@PMX2:~# lshw -c network -businfo
Bus info          Device           Class          Description
pci@0000:01:00.0  enp1s0f0np0      network        BCM57508 NetXtreme-E 10Gb/25Gb/40Gb/50Gb/100Gb/200Gb Ethernet
pci@0000:01:00.1  enp1s0f1np1      network        BCM57508 NetXtreme-E 10Gb/25Gb/40Gb/50Gb/100Gb/200Gb Ethernet
pci@0000:06:00.0  enp6s0f0         network        I350 Gigabit Network Connection
pci@0000:06:00.1  enp6s0f1         network        I350 Gigabit Network Connection
pci@0000:41:00.0  enp65s0f0np0     network        BCM57416 NetXtreme-E Dual-Media 10G RDMA Ethernet Controller
pci@0000:41:00.1  enp65s0f1np1     network        BCM57416 NetXtreme-E Dual-Media 10G RDMA Ethernet Controller
pci@0000:81:00.0       ens17f0np0               network                 BCM57504 NetXtreme-E 10Gb/25Gb/40Gb/50Gb/100Gb/200Gb Ethernet
pci@0000:81:00.1  ens17f1np1       network        BCM57504 NetXtreme-E 10Gb/25Gb/40Gb/50Gb/100Gb/200Gb Ethernet
pci@0000:81:00.2  ens17f2np2       network        BCM57504 NetXtreme-E 10Gb/25Gb/40Gb/50Gb/100Gb/200Gb Ethernet
pci@0000:81:00.3  ens17f3np3       network        BCM57504 NetXtreme-E 10Gb/25Gb/40Gb/50Gb/100Gb/200Gb Ethernet
usb@1:1.3         enx42a65ce855c5  network        Ethernet interface


Anschließend geben Sie in dem CLI "niccli" ein. Sie müssen im Anschluss einen Port-Index auswählen, wählen Sie hier den Index, welcher die gleiche PCI-ID wie oben ausgewählt, besitzt:

root@PMX2:~# niccli
/opt/niccli/niccli.x86_64: /lib/x86_64-linux-gnu/libnl-3.so.200: no version information available (required by /opt/niccli/niccli.x86_64)

-------------------------------------------------------------------------------
Scrutiny NIC CLI v229.0.150.0 - Broadcom Inc. (c) 2024 (Bld-79.52.33.102.16.0) 
-------------------------------------------------------------------------------

     BoardId     MAC Address        FwVersion    PCIAddr        Type   Mode  
  1) BCM57508    84:16:0C:6F:16:90  226.0.145.1  0000:01:00.0   NIC    PCI   
  2) BCM57508    84:16:0C:6F:16:90  226.0.145.1  0000:01:00.1   NIC    PCI   
  3) BCM57416    00:62:0B:31:4A:F0  226.0.145.0  0000:41:00.0   NIC    PCI   
  4) BCM57416    00:62:0B:31:4A:F1  226.0.145.0  0000:41:00.1   NIC    PCI   
  5)  BCM57504       00:62:0B:6F:00:8C        226.0.145.1       0000:81:00.0         NIC         PCI   
  6) BCM57504    00:62:0B:6F:00:8C  226.0.145.1  0000:81:00.1   NIC    PCI   
  7) BCM57504    00:62:0B:6F:00:8E  226.0.145.1  0000:81:00.2   NIC    PCI   
  8) BCM57504    00:62:0B:6F:00:8E  226.0.145.1  0000:81:00.3   NIC    PCI   

Enter the target index to connect with : 5

Auslesen konfigurierbarer Geschwindigkeiten

Nun können Sie die Linkspeed-ID für die gewünschte Portgeschwindigkeit auslesen:

BCM57504> setoption -name firmware_link_speed_d0 -value ? -scope 0 
ERROR: Invalid syntax.
Name                  : firmware_link_speed_d0
Description           : This per-port option configures the speed setting when the device is in D0 mode.
                        The default speed is set to Autoneg. A 10GBaseT board only allows Autoneg.
Option Type           : Multi Instance Type
Instance Indexes      : 0 to 15
Valid values          : 
     0 (Autoneg)
     1 (1G)
     2 (10G)
     3 (25G)
     4 (40G)
     5 (50G)
     6 (100G)
     7 (200G_PAM4)
     8 (50G_PAM4)
     9 (100G_PAM4)
     14 (2_5G)
     15 (100M)
BCM57504> 

Die Linkspeed-ID wird für die Erzwingung der gewünschten Verbindungsgeschwindigkeit benötigt.

Konfiguration des Linkspeeds

Diese Linkspeed-ID geben Sie in nachfolgendenden Befehl unter "-value " an:

BCM57504> setoption -name firmware_link_speed_d0 -value 3 -scope 0
BCM57504> setoption -name firmware_link_speed_d0 -value 3 -scope 1
BCM57504> setoption -name firmware_link_speed_d0 -value 3 -scope 2
BCM57504> setoption -name firmware_link_speed_d0 -value 3 -scope 3
firmware_link_speed_d0 is set successfully
Please reboot the system to apply the configuration

Das gleiche muss auch für "firmware_link_speed_d3" wiederholt werden:

BCM57504> setoption -name firmware_link_speed_d3 -value 3 -scope 0
BCM57504> setoption -name firmware_link_speed_d3 -value 3 -scope 1
BCM57504> setoption -name firmware_link_speed_d3 -value 3 -scope 2
BCM57504> setoption -name firmware_link_speed_d3 -value 3 -scope 3

Erklärung des Befehls:

Option Linkspeed-ID (value) Port (scope)
firmware_link_speed_d0 3 0-3
firmware_link_speed_d3 3 0-3

Die Optionen firmware_link_speed_d0 & firmware_link_speed_d3 müssen für alle Ports gesetzt werden.

Die Werte entsprechen der Port-Anzahl der verwendeten Netzwerkkarte (z.B.: 0, 1, 2 und 3 bei einer Netzwerkkarte mit 4 Netzwerkports).

Mit der Linkspeed-ID "3" wird eine Geschwindigkeit von 25 Gb/s erzwungen.

Nach Eingabe der Befehle für alle Ports, ist ein Reboot des Systems notwendig.

Verifizierung der Änderungen

Geben Sie nach dem Reboot in das CLI erneut "niccli" ein und führen sie folgenden Befehl aus:

BCM57504> device_info
Interface Name                      : ens17f0np0
MAC Address                         : 00:62:0B:6F:00:8C
Base MAC Address                    : 00:62:0B:6F:00:8C
Serial Number                       : N425G224200E5NFG
Part Number                         : BCM957504-N425G
PCI Address                         : 0000:81:00.0
Chip Number                         : BCM57504
Chip Name                           : THOR
Description                         : Broadcom NetXtreme E-Series Quad-port 25Gb SFP28 OCP 3.0 Ethernet Adapter
Active Package Name                 : 226.1.107.1
Firmware Name                       : PRIMATE_FW
Firmware Version                    : 226.0.145.1
RoCE Firmware Version               : 226.0.145.0
HWRM Interface Spec                 : 1.10.2
Kong mailbox channel                : Not Applicable
Active Package Version              : 226.1.107.1
Package Version on NVM              : 226.1.107.1
PCI Device ID                       : 0x1751
PCI Vendor ID                       : 0x14E4
PCI Revision ID                     : 0x11
PCI Component ID                    : 0x1751
PCI Subsys Device ID                : 0x5425
PCI Subsys Vendor ID                : 0x14E4
Active NVM config version           : 0.0.37
NVM config version                  : 0.0.37
Reboot Required                     : No
Firmware Reset Counter              : 0
Error Recovery Counter              : 0
Crash Dump Timestamp                : Not Available
Secure Boot                         : Enabled
Secure Firmware Update              : Enabled
FW Image Status                                               :  Operational
Crash Dump Available in DDR         : No

Überprüfen Sie hierbei, ob der Wert auf Operational steht. Wenn dies nicht gegeben ist müssen Sie noch einen Firmware Sync durchführen, ansonsten war die Konfiguration erfolgreich.

Firmware Sync

Durch die Synchronisation der Firmware wird der eingetragene Linkspeed übernommen:

BCM57504> fw_sync

Kontrolle mithilfe von ethtool

Nun können Sie zusätzlich die Konfiguration der Netzwerkkarte mit ethtool überprüfen:

root@PMX2:~# ethtool ens17f0np0 
Settings for ens17f0np0:
        Supported ports: [ FIBRE ]
        Supported link modes:   10000baseT/Full
                                10000baseKX4/Full
                                10000baseKR/Full
                                25000baseCR/Full
                                25000baseKR/Full
                                25000baseSR/Full
                                10000baseCR/Full
                                10000baseSR/Full
                                10000baseLR/Full
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: Yes
        Supported FEC modes: RS  BASER
        Advertised link modes:  25000baseCR/Full
        Advertised pause frame use: No
        Advertised auto-negotiation: No
        Advertised FEC modes: Not reported
        Speed: 25000Mb/s
        Duplex: Full
        Auto-negotiation: off
        Port: FIBRE
        PHYAD: 0
        Transceiver: internal
        Supports Wake-on: g
        Wake-on: d
        Current message level: 0x00002081 (8321)
                               drv tx_err hw
        Link detected: no

Zuletzt können Sie den Maintenance Mode wieder deaktivieren und wiederholen Sie gegebenenfalls dieses Vorgehen bei den restlichen Nodes.


Foto Niklas Pauli.jpg

Autor: Niklas Pauli

Niklas Pauli arbeitet im Product Management Team von Thomas-Krenn. Er absolvierte am Gymnasium Freyung seine Allgemeine Hochschulreife und ist seit 2021 als Azubi zum Fachinformatiker für Systemintegration bei Thomas-Krenn beschäftigt. Dabei beschäftigt sich Herr Pauli unter anderem mit Proxmox Virtualisierung oder dem Thomas-Krenn-Wiki.

Icon-LinkedIn.png

Das könnte Sie auch interessieren

Hostname ändern in einem produktiven Proxmox Ceph HCI Cluster
Proxmox Backup Server als Plugin nachinstallieren
Updates (Minor) in Proxmox VE installieren