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 - огромная тема.

Другие вопросы по тегам