Linux 10Gbe для оптических сетей, как диагностировать проблемы с производительностью?
У меня небольшой кластер, состоящий из 3 серверов. Каждый имеет две оптические сетевые карты 10Gbe SFP+. Есть два отдельных переключателя 10Gbe. На всех серверах один сетевой адаптер подключен к коммутатору 1, второй сетевой адаптер подключен к коммутатору 2 для обеспечения отказоустойчивости.
Физические интерфейсы связаны на уровне сервера с использованием LACP.
Все серверы могут пропинговать друг друга, но на одном происходит небольшая (4%) потеря пакетов (по сравнению со связным интерфейсом, что мне кажется подозрительным)
Когда я проверяю скорость передачи данных между двумя хорошими серверами iperf3, они показывают скорость передачи около 9,8 Гбит / с в обоих направлениях.
Эти два хороших сервера могут также загрузить с проблемного сервера также около 9,8 Гбит / с
Iperf3 показывает странную вещь при запуске в качестве клиента на проблемном сервере. Это начинается с нескольких сотен мегабит в первом повороте. В дальнейшем скорость падает до 0 бит / с (при этом все еще работает ICMP-пинг с вероятностью успеха ~96%). Только в одном направлении. Когда другие серверы скачивают с него, они получают полную скорость.
Он работает на одном и том же оборудовании, даже версия встроенного ПО одинакова (серверы Dell R620, сетевые карты Mellanox ConnextX-3-EN, модули Opton SPF+, коммутаторы Mikrotik CRS309-1G-8S). Также ОС - это тот же самый последний стабильный Debian со всеми обновлениями и точно установленными пакетами.
Брандмауэр отсутствует, все правила iptables очищаются на всех серверах.
На проблемном сервере я проверяю интерфейсы, оба NIC показывают UP и работают в полнодуплексном режиме 10 Гбит
Также cat /proc/net/bonding/bond0 показывает оба интерфейса ВВЕРХ, активный, нет ошибок физического соединения
Я проверил / заменил модули SFP +, использовал разные оптоволоконные патч-корды, пробовал разные порты коммутатора и ничего не менялось, тем не менее этот один проблемный сервер получал низкую скорость загрузки от других и небольшую потерю пакетов (по сравнению со связным интерфейсом!)
Я также пробовал сочетания патч-кордов с помощью: (оба включены, сначала выключены, сначала выключены, затем включены). Также без изменений
Любые идеи, как я могу диагностировать это лучше?
2 ответа
Если коммутаторы не поддерживают стекирование и поддержку LACP в шасси, LACP не может работать таким образом. Фактически, статический транкинг LAG также не будет работать.
Как правило, агрегация каналов работает только с одним противоположным коммутатором (или стеком, действующим как он).
С простой избыточностью L2 вы можете запускать NIC только в активных / пассивных парах с аварийным переключением. Использование нескольких каналов L3 с соответствующей балансировкой нагрузки и миграцией IP-адресов при отработке отказа или мониторинге с помощью внешнего балансировщика нагрузки также будет работать в вашем сценарии.
Пожалуйста, посмотрите мой ответ здесь (не забудьте поднять палец вверх, если это будет полезно в вашей ситуации):
Почему я достигаю только 2,5 Гбит / с при прямом соединении 10 Гбит между двумя компьютерами?
Скорее всего, это связано с LRO GRO со стойками для RECEIVE OFFLOAD, которые можно легко отключить. Есть также хорошее объяснение того, почему это происходит. Здесь: https://lwn.net/Articles/358910/
Настройка сетевых интерфейсов 10G - огромная тема.