Я использую Ubuntu 16.04.6 LTS и 2 связанных сетевых интерфейса со следующей конфигурацией:
auto eno0
iface eno0 inet manual
bond-master bond0
auto eno1
iface eno1 inet manual
bond-master bond0
auto bond0
iface bond0 inet static
bond-slaves none
bond-miimon 100
bond-mode balance-xor
address [IP]
netmask [IP]
network [IP]
broadcast [IP]
gateway [IP]
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 8.8.8.8 8.8.4.4
Сеть работает, но трафик идет почти исключительно только через один интерфейс:
eno0 eno1 bond0
KB/s in KB/s out KB/s in KB/s out KB/s in KB/s out
3436.42 100942.1 11.59 0.00 3447.97 100929.5
3450.31 98191.30 10.32 0.00 3461.29 98208.12
3426.57 94762.22 9.16 0.00 3436.65 94754.99
3579.97 101313.8 10.66 0.00 3588.80 101302.2
4029.16 97184.86 9.93 0.00 4038.42 97196.67
3225.66 90987.53 13.48 0.00 3239.43 90991.49
Когда я отключаю eno0, трафик переходит на eno1. Когда я подключаю его обратно, он возвращается к eno0. AFAIK, трафик должен более или менее равномерно распределяться между двумя интерфейсами, поскольку он генерируется тысячами пользователей.
Есть идеи, что может быть не так?
РЕДАКТИРОВАТЬ:
cat /sys/class/net/bond0/bonding/mode
balance-xor 2
Если и eno0, и eno1 подключены к одному и тому же коммутатору, или между двумя коммутаторами существует какая-то связь. Затем вам необходимо настроить на коммутаторе статическое агрегирование.
Это связано с тем, что коммутатор действует как устройство уровня 2, он автоматически записывает сопоставление между MAC-адресами и портами (по умолчанию каждый MAC-адрес может быть сопоставлен только с одним портом за раз). Но в режиме 2 все сетевые адаптеры под bond0 используют один и тот же MAC-адрес.
Если ваш коммутатор поддерживает LACP, рассмотрите возможность использования 802.3ad (режим 4). В противном случае, если нет разрешения на конфигурацию коммутатора, можно использовать только режим 1, 5 или 6.