Вопрос или проблема
Будет ли в режиме 6 трафик распределяться относительно интерфейсов слейвов?
ОС: ubuntu 18.04.6 LTS; драйвер объединения: v3.7.1; ядро: 4.15.0-213-generic
В режиме 6 я установил параметры bond_arp_interval 100
, arp_validate 3
и bond_arp_ip_target ip1,ip2
и перезапустил интерфейс, но получил только ip1 из файла /sys/class/net/bond6/bonding/arp_ip_target и 0 из файла /sys/class/net/bond6/bonding/arp_interval. Я протестировал трафик с помощью iperf3
, и весь трафик от различных хостов с разными ARP-записями (один и тот же IP-адрес назначения с разными апаратными адресами, принадлежащими слейвам режима 6) всегда получался на одном и том же слейв-интерфейсе на хосте назначения. Возможно, запись ARP не обновляется часто в подсети, поэтому не происходит балансировки нагрузки трафика.
Я протестировал bond_arp_interval 100
, arp_validate 3
и bond_arp_ip_target ip1
, что сработало в режиме 1, согласно этому решению redhat. Возможно, ARP-пробы не подходят для режима 6? Почему в режиме 6 говорится, что он может достигнуть балансировки трафика?
Как драйвер объединения инициирует ответ ARP для обновления записи ARP? Я не могу найти никакого другого параметра, который бы работал для этого.
Linux Ethernet Bonding Driver HOWTO :
Балансировка входящей нагрузки осуществляется через переговоры адресного разрешения (ARP) и отображение таблицы на соответствующий групповой интерфейс.
Таким образом, пиры узнают аппаратный адрес соединения, и балансировка входящего трафика сводится к текущему слейву. Это осуществляется путем отправки обновлений (ARP-ответов) всем пиркам с их индивидуально назначенным аппаратным адресом, чтобы трафик перераспределялся.
Ответ или решение
Режим 6 (mode 6) в драйвере объединения Ethernet (bonding) позволяет осуществлять балансировку входящего трафика через использование протокола ARP. Однако поведение в этом режиме может отличаться от ожидаемого, особенно если не все параметры настроены корректно или если среда сети не поддерживает частые обновления ARP.
Основные моменты, касающиеся режима 6
-
Балансировка нагрузки с использованием ARP: В режиме 6, как указано в документации, балансировка входящего трафика осуществляется с помощью ARP-опросов. Драйвер объединения должен отправлять ARP-ответы, чтобы обновлять запись ARP, показывающую различные адреса MAC слейвов (slave), доступные для получения трафика.
-
Параметры настройки:
bond_arp_interval
: Этот параметр задает интервал, с которым драйвер будет посылать ARP-опросы. Установка его на 100 мс должна влиять на частоту обновления ARP-таблиц, но если он не обновляется или возвращает значение 0, возможно, произошла ошибка в конфигурации или проблема на уровне ядра.arp_validate
: Опция 3 позволяет определять, как проверяются ARP-записи, но её неправильная настройка также может мешать обновлению ARP.
-
Проблемы с тестированием:
- Вы проводили тесты с использованием
iperf3
, но если Traffic Always Routed to the Same Slave (трафик всегда проходит через один и тот же слейв), это может означать, что ARP-записи не обновляются правильно, что и приводит к привязке трафика к конкретному слейву. Возможно, необходимо проверить, как часто другие хосты в сети обновляют свои ARP-кэши. - Вы также упомянули о тестировании режима 1, где параметры работали корректно. Это может свидетельствовать о том, что механизмы работы с ARP в режиме 6 имеют свои ограничения и могут зависеть от настроек сети.
- Вы проводили тесты с использованием
Рекомендации по решению проблемы
-
Проверка конфигурации:
- Убедитесь, что параметры
bond_arp_interval
,bond_arp_ip_target
иarp_validate
правильно прописаны и применены после перезапуска интерфейса. - Проверьте на других хостах в сети, как настроены ARP-записи и как быстро они обновляются.
- Убедитесь, что параметры
-
Мониторинг ARP:
- Используйте команды типа
arp -a
на других хостах, чтобы увидеть, корректно ли обновляются ARP-таблицы и какие MAC-адреса отображаются для данного IP. - Возможно, стоит провести тестирование с использованием других машин в том же диапазоне сети, чтобы проверить, как именно реагирует сеть на ARP-ответы.
- Используйте команды типа
-
Параметры ядра:
- Убедитесь, что версия ядра (4.15.0-213-generic) поддерживает все необходимые функции и параметры для режима 6. Если возможно, проведите тест на более новой версии ядра.
-
Логи и диагностика:
- Изучите системные логи (
dmesg
) для выявления возможных ошибок, связанных с драйвером объединения.
- Изучите системные логи (
Заключение
Режим 6 действительно может обеспечить балансировку входящего трафика, но для его правильной работы необходимо убедиться в корректной настройке всех параметров и в том, что сеть также настроена для поддержки этих механизмов. Возможно, будет полезно протестировать режимы с другими конфигурациями или в другом окружении, чтобы лучше понять ограничения и возможности режима 6.