title | excerpt | updated |
---|---|---|
Network - Fixing slow downloads problems inside containers and VMs running on Proxmox VE servers with Broadcom BCM57502 NICs |
Find out how to fix slow downloads problems inside containers and virtual machines running on Proxmox VE servers with a Broadcom BCM57502 network interface controller by disabling the generic-receive-offload parameter |
2025-01-16 |
Some Dedicated Servers equipped with Broadcom BCM57502 NICs may experience really slow (as low as 255 kb/s) download speeds inside VMs or containers running on Proxmox VE (Virtual Environment).
Find out how to fix slow downloads problems inside containers and VMs running on Proxmox VE with a Broadcom BCM57502 network interface controller by disabling the generic-receive-offload
parameter.
The issue is known to occur on bare metal servers of the ADVANCE ranges running Proxmox VE. Only servers equipped with a Broadcom BCM57502 network interface controller are affected.
SSH into the server and run the following command which lists all PCI devices of class 200 (Ethernet controllers):
lspci -nnd ::200
If the output shows devices with PCI ID 14e4:1752
, your server is affected. Example output:
02:00.0 Ethernet controller [0200]: Broadcom Inc. and subsidiaries BCM57502 NetXtreme-E 10Gb/25Gb/40Gb/50Gb Ethernet [14e4:1752] (rev 12)
02:00.1 Ethernet controller [0200]: Broadcom Inc. and subsidiaries BCM57502 NetXtreme-E 10Gb/25Gb/40Gb/50Gb Ethernet [14e4:1752] (rev 12)
List network interfaces with:
ip -brief link show
Example output:
lo UNKNOWN 00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP>
enp2s0f0np0 UP 9c:6b:00:12:34:56 <BROADCAST,MULTICAST,UP,LOWER_UP>
enp2s0f1np1 DOWN 9c:6b:00:12:34:57 <BROADCAST,MULTICAST>
vmbr0 UP 9c:6b:00:12:34:56 <BROADCAST,MULTICAST,UP,LOWER_UP>
To find the interfaces that correspond to the Broadcom controllers shown by lspci
, you can run:
ethtool -i enp2s0f0np0
Example output:
driver: bnxt_en
version: 6.8.12-5-pve
firmware-version: 229.0.121.0/pkg N/A
expansion-rom-version:
bus-info: 0000:02:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no
The bus-info
line matches the PCI address (02:00.0
shown by lspci
).
You can now check the status of the generic-receive-offload
parameter with the following command:
ethtool --show-offload enp2s0f0np0 | grep generic-receive-offload:
Example output:
generic-receive-offload: on
The slow downloads issue can be fixed by disabling generic-receive-offload
with the following command:
ethtool --offload enp2s0f0np0 generic-receive-offload off
Example output:
Actual changes:
rx-gro: off
rx-gro-hw: off [not requested]
In order to persist the change after the next reboot, the ethtool
command may be added to the appropriate interfaces in /etc/network/interfaces
as an up
command.
For instance:
auto lo
iface lo inet loopback
iface enp2s0f0np0 inet manual
up ethtool --offload $IFACE generic-receive-offload off
auto vmbr0
iface vmbr0 inet static
address <IPV4>/32
gateway 100.64.0.1
bridge-ports enp2s0f0np0
bridge-stp off
bridge-fd 0
hwaddress 9C:6B:00:12:34:56
iface vmbr0 inet6 static
address <IPV6>/56
gateway fe80::1
[!primary] The
$IFACE
placeholder will be replaced by the interface name on execution. You do not need to replace it with the actual interface name.Setting the
generic-receive-offload
parameter on thevmbr0
bridge has no effect, the change must be applied to the physical interfaces.
You can now restart the networking service to apply the configuration:
systemctl restart networking.service
Join our community of users.