Привет, ребята! Почти месяц назад я писал в поддержку Mikrotik, но ответа так и не получил, надеюсь, кто-то из форума сможет помочь! Мы купили CCR-1009 чуть больше месяца назад, чтобы снизить энергопотребление (до этого пользовались старым HP DL360G3!), когда переехали в новый дата-центр.
У нас такая конфигурация: два порта 1Gbps ethernet вверх по сети, объединённые в bond1 с помощью LACP. Эти порты подключены к ether3 и ether4. Ещё два порта 1Gbps — ether1 и ether2 — объединены в bond0 с использованием LACP и подключены к нашему коммутатору HP Procurve J4906A (3400cl-48g). На bond0 настроено около 8 VLAN, обеспечивающих разные подсети для наших внутренних и клиентских серверов.
У нашего провайдера были проблемы с пропускной способностью, поэтому они попросили нас поднять виртуалку, чтобы проверить скорость через iperf между нашей и их сетью. В итоге они выяснили, что у них возникла проблема с пропускной способностью по 1Gbps на ASIC их коммутатора ядра (вот же неприятность!), переставили порты в бонде на своём роутере и решили эту проблему.
После этого выяснилось, что мы не можем добиться скорости выше примерно 480Mbps до любого хоста вне нашей сети. Тогда я попробовал запускать iperf между хостами внутри нашей сети и обнаружил, что между VLAN максимум получается около 500Mbps.
Зашёл в Winbox, чтобы проверить загрузку портов, и увидел, что трафик с server1 на server2 идёт и возвращается по одному и тому же интерфейсу в бонде, а с server2 на server1 — по другому интерфейсу. Подключил другие серверы, подобрал правильные комбинации MAC-адресов (думаю, именно они), чтобы трафик шёл на вход по одному интерфейсу бонда, а на выход — по другому. Так скорость удалось поднять до 600Mbps.
Это заставило меня задуматься, не похожа ли проблема на ту, что была у провайдера с их ASIC, но потом я проверил: можно запускать несколько параллельных сессий iperf между разными серверами в одной VLAN — и все одновременно тянут по 1Gbps без проблем.
Тогда я попробовал одновременно запускать iperf на разных машинах, пересекающих VLAN (т.е. трафик идёт через CCR), но это просто в два раза снизило пропускную способность — вместо 480Mbps получалось около 240Mbps входящего и исходящего трафика на каждом порту.
Мы были на версии 6.10, обновились до 6.15 — разницы не заметил. В Winbox в разделе ресурсов вижу, что при одной сессии iperf один CPU загружен на 99%, при двух сессиях — два ядра загружены по 99%. Похоже, что каждый Ethernet-интерфейс обрабатывается одним ядром CPU, и они достигают предела примерно при 500Mbps входящего и исходящего трафика.
Есть ли способ сделать больше? Т.е. достичь линии 1Gbps? Может, я что-то не так настроил?
Обратил внимание, что ether1-4 подключены к коммутатору, а 5-8 — нет, поменял местами, чтобы наши бонды были на ether5/6 и ether7/8, но это не изменило ситуацию.
Буду очень признателен за любую помощь! Спасибо, Дэмиен.
У нас такая конфигурация: два порта 1Gbps ethernet вверх по сети, объединённые в bond1 с помощью LACP. Эти порты подключены к ether3 и ether4. Ещё два порта 1Gbps — ether1 и ether2 — объединены в bond0 с использованием LACP и подключены к нашему коммутатору HP Procurve J4906A (3400cl-48g). На bond0 настроено около 8 VLAN, обеспечивающих разные подсети для наших внутренних и клиентских серверов.
У нашего провайдера были проблемы с пропускной способностью, поэтому они попросили нас поднять виртуалку, чтобы проверить скорость через iperf между нашей и их сетью. В итоге они выяснили, что у них возникла проблема с пропускной способностью по 1Gbps на ASIC их коммутатора ядра (вот же неприятность!), переставили порты в бонде на своём роутере и решили эту проблему.
После этого выяснилось, что мы не можем добиться скорости выше примерно 480Mbps до любого хоста вне нашей сети. Тогда я попробовал запускать iperf между хостами внутри нашей сети и обнаружил, что между VLAN максимум получается около 500Mbps.
Зашёл в Winbox, чтобы проверить загрузку портов, и увидел, что трафик с server1 на server2 идёт и возвращается по одному и тому же интерфейсу в бонде, а с server2 на server1 — по другому интерфейсу. Подключил другие серверы, подобрал правильные комбинации MAC-адресов (думаю, именно они), чтобы трафик шёл на вход по одному интерфейсу бонда, а на выход — по другому. Так скорость удалось поднять до 600Mbps.
Это заставило меня задуматься, не похожа ли проблема на ту, что была у провайдера с их ASIC, но потом я проверил: можно запускать несколько параллельных сессий iperf между разными серверами в одной VLAN — и все одновременно тянут по 1Gbps без проблем.
Тогда я попробовал одновременно запускать iperf на разных машинах, пересекающих VLAN (т.е. трафик идёт через CCR), но это просто в два раза снизило пропускную способность — вместо 480Mbps получалось около 240Mbps входящего и исходящего трафика на каждом порту.
Мы были на версии 6.10, обновились до 6.15 — разницы не заметил. В Winbox в разделе ресурсов вижу, что при одной сессии iperf один CPU загружен на 99%, при двух сессиях — два ядра загружены по 99%. Похоже, что каждый Ethernet-интерфейс обрабатывается одним ядром CPU, и они достигают предела примерно при 500Mbps входящего и исходящего трафика.
Есть ли способ сделать больше? Т.е. достичь линии 1Gbps? Может, я что-то не так настроил?
Обратил внимание, что ether1-4 подключены к коммутатору, а 5-8 — нет, поменял местами, чтобы наши бонды были на ether5/6 и ether7/8, но это не изменило ситуацию.
Буду очень признателен за любую помощь! Спасибо, Дэмиен.