|
| 1 | +--- |
| 2 | +title: 'Network - Fixing slow downloads problems inside containers and VMs running on Proxmox VE servers with Broadcom BCM57502 NICs' |
| 3 | +excerpt: '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' |
| 4 | +updated: 2025-01-16 |
| 5 | +--- |
| 6 | + |
| 7 | +## Objective |
| 8 | + |
| 9 | +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). |
| 10 | + |
| 11 | +**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.** |
| 12 | + |
| 13 | +## Requirements |
| 14 | + |
| 15 | +The issue is known to occur on bare metal servers of the ADVANCE ranges running Proxmox VE. |
| 16 | +Only servers equipped with a Broadcom BCM57502 network interface controller are affected. |
| 17 | + |
| 18 | +## Instructions |
| 19 | + |
| 20 | +### Step 1 - Identifying your network interface controller |
| 21 | + |
| 22 | +SSH into the server and run the following command which lists all PCI devices of class 200 (Ethernet controllers): |
| 23 | + |
| 24 | +```sh |
| 25 | +lspci -nnd ::200 |
| 26 | +``` |
| 27 | + |
| 28 | +If the output shows devices with PCI ID `14e4:1752`, your server is affected. Example output: |
| 29 | + |
| 30 | +```text |
| 31 | +02:00.0 Ethernet controller [0200]: Broadcom Inc. and subsidiaries BCM57502 NetXtreme-E 10Gb/25Gb/40Gb/50Gb Ethernet [14e4:1752] (rev 12) |
| 32 | +02:00.1 Ethernet controller [0200]: Broadcom Inc. and subsidiaries BCM57502 NetXtreme-E 10Gb/25Gb/40Gb/50Gb Ethernet [14e4:1752] (rev 12) |
| 33 | +``` |
| 34 | + |
| 35 | +### Step 2 - Obtaining the network interface names |
| 36 | + |
| 37 | +List network interfaces with: |
| 38 | + |
| 39 | +```sh |
| 40 | +ip -brief link show |
| 41 | +``` |
| 42 | + |
| 43 | +Example output: |
| 44 | + |
| 45 | +```text |
| 46 | +lo UNKNOWN 00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> |
| 47 | +enp2s0f0np0 UP 9c:6b:00:12:34:56 <BROADCAST,MULTICAST,UP,LOWER_UP> |
| 48 | +enp2s0f1np1 DOWN 9c:6b:00:12:34:57 <BROADCAST,MULTICAST> |
| 49 | +vmbr0 UP 9c:6b:00:12:34:56 <BROADCAST,MULTICAST,UP,LOWER_UP> |
| 50 | +``` |
| 51 | + |
| 52 | +To find the interfaces that correspond to the Broadcom controllers shown by `lspci`, you can run: |
| 53 | + |
| 54 | +```sh |
| 55 | +ethtool -i enp2s0f0np0 |
| 56 | +``` |
| 57 | + |
| 58 | +Example output: |
| 59 | + |
| 60 | +```txt |
| 61 | +driver: bnxt_en |
| 62 | +version: 6.8.12-5-pve |
| 63 | +firmware-version: 229.0.121.0/pkg N/A |
| 64 | +expansion-rom-version: |
| 65 | +bus-info: 0000:02:00.0 |
| 66 | +supports-statistics: yes |
| 67 | +supports-test: yes |
| 68 | +supports-eeprom-access: yes |
| 69 | +supports-register-dump: yes |
| 70 | +supports-priv-flags: no |
| 71 | +``` |
| 72 | + |
| 73 | +The `bus-info` line matches the PCI address (`02:00.0` shown by `lspci`). |
| 74 | + |
| 75 | +### Step 3 - Disabling the `generic-receive-offload` parameter |
| 76 | + |
| 77 | +You can now check the status of the `generic-receive-offload` parameter with the following command: |
| 78 | + |
| 79 | +```sh |
| 80 | +ethtool --show-offload enp2s0f0np0 | grep generic-receive-offload: |
| 81 | +``` |
| 82 | + |
| 83 | +Example output: |
| 84 | + |
| 85 | +```text |
| 86 | +generic-receive-offload: on |
| 87 | +``` |
| 88 | + |
| 89 | +The slow downloads issue can be fixed by disabling `generic-receive-offload` with the following command: |
| 90 | + |
| 91 | +```sh |
| 92 | +ethtool --offload enp2s0f0np0 generic-receive-offload off |
| 93 | +``` |
| 94 | + |
| 95 | +Example output: |
| 96 | + |
| 97 | +```text |
| 98 | +Actual changes: |
| 99 | +rx-gro: off |
| 100 | +rx-gro-hw: off [not requested] |
| 101 | +``` |
| 102 | + |
| 103 | +### Step 4 - Persisting the change across reboots |
| 104 | + |
| 105 | +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. |
| 106 | + |
| 107 | +For instance: |
| 108 | + |
| 109 | +```text |
| 110 | +auto lo |
| 111 | +iface lo inet loopback |
| 112 | +
|
| 113 | +iface enp2s0f0np0 inet manual |
| 114 | + up ethtool --offload $IFACE generic-receive-offload off |
| 115 | +
|
| 116 | +auto vmbr0 |
| 117 | +iface vmbr0 inet static |
| 118 | + address <IPV4>/32 |
| 119 | + gateway 100.64.0.1 |
| 120 | + bridge-ports enp2s0f0np0 |
| 121 | + bridge-stp off |
| 122 | + bridge-fd 0 |
| 123 | + hwaddress 9C:6B:00:12:34:56 |
| 124 | +
|
| 125 | +iface vmbr0 inet6 static |
| 126 | + address <IPV6>/56 |
| 127 | + gateway fe80::1 |
| 128 | +``` |
| 129 | + |
| 130 | +> [!primary] |
| 131 | +> The `$IFACE` placeholder will be replaced by the interface name on execution. You do not need to replace it with the actual interface name. |
| 132 | +> |
| 133 | +> Setting the `generic-receive-offload` parameter on the `vmbr0` bridge has no effect, the change must be applied to the physical interfaces. |
| 134 | +
|
| 135 | +You can now restart the networking service to apply the configuration: |
| 136 | + |
| 137 | +```sh |
| 138 | +systemctl restart networking.service |
| 139 | +``` |
| 140 | + |
| 141 | +## Go further |
| 142 | + |
| 143 | +Join our [community of users](/links/community). |
0 commit comments