Решил я ускорить тривиальную задачу в виде передачи файлов с одного компьютера на маленький домашний NAS. Раньше 10 гигабит были для меня чем-то заоблачным (с учётом цены на свичи, а также сетевые карты). Но благодаря апгрейду дата-центров, а также свежим чипам для свичей от Realtek, апгрейд оказался недорогим и безболезненным.
О выборе железа и тестах — под катом.
Фаза 1 — изучение рынка
▍ Ethernet, который не смог
10gbe возник в голове очень быстро. Раз 2,5 гбит пришли на рынок легко и недорого, то, может, с 10 гбит на ethernet-порте всё хорошо?
К сожалению, всё не так хорошо.
Свичи на рынке есть, но встречаются реже единорогов, а их стоимость приближается к обоим крьльям боинга (200$ за TL-SX1008 на 8 портов).
Кроме того, для 10 гигабит требуется такоой порт на ПК/сервере. Добавить его можно только сетевой картой, которые, мягко говоря, не дешёвые, а также очень много потребляют. Например, самая простая Intel x550-t2 обойдётся примерно в 100$ и потребует активного охлаждения!
Также неприятный бонус состоит в том, что для 10 гигабит потребуется кабель 6-й категории. Конечно, cat5e успешно сработает на небольших дистанциях, но если проводка уже протянута по квартире, то шансы завести стабильные 10 гигабит очень малы.
▍ SFP+
Второй вариант, который назвать домашним не совсем получится. К нам он приходит из телекома и дата-центров. Найти домашний компьютер с SFp+ портами будет буквально невозможно, роутеры редки, а свичи в основном энтерпрайз. Но всё оказалось не так страшно.
▍ Cетевые карты
В отличие от 10GB Ethernet стандарта, sfp+ уже далеко не новый и очень активно используется в серверной/провайдерской среде. Настолько активно и давно, что сетевые карты прошли много этапов обновления, и на рынке полно предложений БУ железа по небольшому прайсу, при этом есть выбор разных производителей, а также стабильные драйверы!
Основные представители рынка — это сетевые карты Intel X520-DA2 / X710 DA2, а также Mellanox ConnectX 2/3/4. Эти карты можно найти на барахолках по очень низким ценам, и почти всегда их визуальное состояние будет близкое к идеальному за счёт почти идеальных условий работы в дата-центрах.
После долгого изучения форумов и реддита я пришёл к таким выводам:
- У Mellanox чуть лучше драйверы и стабильность.
- Mellanox менее привередлив к Трансиверам и DAC-кабелям.
- Mellanox (3) чуть более производительный, чем X520.
- Mellanox имеет меньшее потребление как в idle, так и под нагрузкой.
- Mellanox имеет больше фишек (например, RDMA).
- Intel в целом дешевле.
Поэтому к покупке я решил рассматривать только карты Mellanox.
▍ Свичи
Первым делом я полностью отмёл старые Enterprise-свичи. Мне не очень импонировала идея иметь дома шумный и горячий свич с большим кол-вом портов, которые мне даже нечем занять.
Простое гугление приводит многих к такому варианту, как Mikrotik CRS305-1G-4S+IN. На момент выхода статьи этот свич всё ещё хорош для домашнего использования, он пассивный, с небольшим потреблением, а главное, Layer3 со всеми фишками SwOS. Но его цена не прошла проверку временем и сейчас очень не демократичная, а железо немного устарело.
Из дешёвых, но новых вариантов хочется отметить TP-Link TL-ST1008F, а также его управляемого собрата TL-ST5008F. Оба варианта обладают восемью портами SFP+, очень демократичной ценой и пассивным охлаждением.
На STH можно изучить обзор этого девайса. Стоит сказать, что это отличные варианты.
Продолжая тему «больших» 10g sfp+ свичей, Aliexpress может подкинуть много интересных «ноунейм» вариантов, например, такой или такой.
Но, как обычно, есть варианты ещё дешевле и проще. Для моих целей требуется всего лишь пара SFP+ портов, которые объединят сервер и рабочий ПК. И варианты с парой SFP+ существуют! О них я поговорю далее.
▍ Кабели
Тут вариантов три:
1. Трансиверы + патч. Хороший вариант в плане цены. На барахолках можно выцепить всё за копейки: как трансиверы, так и патч-кабели к ним. Проблема заключается в подборе компонентов, высоком потреблении энергии, а также в хрупкости кабелей. Плюсы можно найти в гибкости подбора компонентов, большом расстоянии, на котором могут работать эти кабели, а также в низкой цене на метр.
2. Готовый оптический кабель. Что Китай, что Озон уже завалены предложениями, цены местами ниже, чем собирать свой кабель по частям, но высокое энергопотребление и хрупкость также остаются в списке проблем.
3. DAC-кабель. Всё тот же кабель с SFP+ портами, но в этот раз это именно кабель с медными проводниками. Соответственно, он не конвертирует электрический сигнал в свет и обратно, отсюда меньшее потребление, а также низкая цена.
Их легко найти как на Али, так и с быстрой доставкой на Озоне (но чуть дороже).
В минусы можно записать толщину кабелей и максимальную длину в 7 метров.
Фаза 2 — закупка
▍ Свич
Отдельный обзор на свич писать нет смысла. Это буквально ноунейм балалаяка с Aliexpress. И вы можете не париться с поиском и покупой лучшего! Все эти свичи с четырьмя 2,5gbe портами, а также парой sfp+ портов под капотом имеют новый контроллер Realtek rtl8372.
Обзоров на свичи с этим чипсетом уже полно. Они буквально все одинаковые.
Разве что некоторые свичи имеют Web-интерфейс для настройки, но он очень банальный и нефункциональный.
Обзоры можно посмотреть в сети, например, на этот Hasivo.
В общем итоге Tagged Vlan работает даже на девайсах без веб-интерфейса, поэтому тратить сильно много денег не стоит.
Я купил свич Horaco, и, честно говоря, не могу его рекомендовать. Родной блок питания ужасен, поддержка продавца буквально нерабочая. Купил я его, так как он был самый дешёвый на тот момент.
Сейчас же стоит обратить внимание на вот такой вариант Hisource с OZON. Он также есть на AliExpress, но дороже на 700 рублей.
Чипсет и функционал идентичен моему horaco, поэтому буду считать его в итоговую таблицу цен.
▍ Сетевые карты
Как уже писал в изучении рынка, я долго смотрел разные варианты карт от mellanox. Но в общем выбор ограничен тремя вариантами.
▍ Mellanox connectx-2
Является самым старым, но при этом самым бюджетным вариантом. Китайские друзья предлагают их по цене в 1000 руб. + доставка 400 р.
Но этот вариант самый непредпочтительный. Да он даст честные 10 гигабит, но драйверы на неё уже устаревшие, rdma нет, а потребление вдвое выше, чем у 3 версии.
▍ Mellanox connectx-3
Вариант уже интересный. Карта также EOL, а её прошивка не обновляется с 2017 года, но уже есть rdama, низкое потребление и куча мелких фишек.
На рынке много вариантов исполнения карт под разных производителей, и если брать не generic-исполнение, то есть шанс нарваться на фирменную HP с ограниченной прошивкой. В таком случае вам придётся её прошивать в дженерик-карту, а это время и не 100%-ный шанс успеха.
На Али карт много, искать можно по модели CX311A, а я взял карты именно по этой ссылке.
▍ Mellanox connectx-4
Наверное, лучший вариант для домашней лабы в данный момент, но только если вы возьмёте более эффективную LX-версию.
Средняя цена на эти карты начинается от 4,5 тысяч рублей что +- в 2 раза выше, чем у 3-й серии, но при этом это не EOL-карта с большим кол-вом фишек, свежими драйверами, а также низким потреблением.
Если вы готовы немного расширить бюджет, то это лучший вариант. Ищется по модели CX4121A.
Для удобства приведу ссылку на сайт Nvidia, где описаны различия между адаптерами меланокс, 3-6-й серий.
Мои сетевые карты заказаны с Али. На вид идентичные, кроме цвета радиаторов.
Состояние заводское, ни единой пылинки даже в самых дальних углах.
Немного больше о картах
Ноунейм коробочки:
Карты 2015 года и 6-й ревизии, хотя у китайца на фото 7-я ревизия и 2014 год:
В комплекте и высокая и низкая планка:
А ещё на карте присутствует ядерный светодиод оранжевого/зелёного цвета:
▍ Кабели
В рисерче я уже описал краткие плюсы и минусы оптических, а также медных кабелей. В моём случае соединение будет в рамках одной стойки, поэтому я выбрал DAC-кабели.
Сами DAC-кабели имеют очень простую конструкцию, включающую в себя пару чипов памяти, а также проводники, по которым ходят данные.
Вот пример разборки с канала NFM:
Выбор кабеля иногда может быть сложен, ведь некоторые свичи (например, Cisco) не очень хорошо относятся к Dac-кабелям, прошитым на другой бренд. Но в нашем случае карты, как и свич, буквально всеядны и готовы к работе с любыми кабелями.
Изначально я выбрал недорогие кабели FIBO-TELECOM стоимостью 1400 рублей за 1 метр. Также на Али есть проверенные кабели ONTI по 1070руб/шт. (1 м).
Но случайно на барахолках нашей страны я нашёл комплект из трёх кабелей Mellanox, которые вместе стоили примерно ~1100 рублей за штуку с учётом доставки. Поэтому недолго думая я заказал брендовые, но б/у кабели.
Главное их проверять, так как б/у кабели могут иметь дефекты после хранения и транспортировки людьми, которые не знают о их хрупкости. Проблемы выражаются ошибками чтения EEPROM, а та же в виде нестабильной скорости в одну или обе стороны. Прочитать ошибки можно при помощи команды ethtool -m ‘ваш сетевой порт’, а также через ifconfig.
▍ Итоговая стоимость апгрейда
- Свич Hisource — 2925 руб.
- 2 dac-кабеля — 2236 руб. (не считая одного запасного).
- 2 сетевых карты — 5120руб.
Итоговая цена всего апгрейда сети: 10 281 руб.
Я считаю, что это очень небольшой бюджет для столь крупного апгрейда, включающего в себя как 10 гигабит соединение сервера и рабочего ПК, так и дополнительные 3 порта на скорости 2.5 гбит/сек, которые также позволяют в будущем быстро обращаться к серверу!
Если добавить сюда wifi7-точку (например, unifi u7 pro), то можно получить высокую скорость доступа к серверу даже по wifi!
Но что, если попробовать другие варианты? Давайте посчитаем!
Сетевые карты | Кабели | Свич | Итого | |
Мой | ConnectX 3 — 5120 руб./2шт. | Б/у — 2236 руб./2шт. | Hisource 2925 руб. | 10 281 руб. |
Минимум | ConnectX 2 — 2728 руб./2шт. | Б/у — 2236 руб./2шт. | Hisource 2925 руб. | 7889 руб. |
Идеальный | ConnectX 4 — 12 336 руб/2шт. | Fibo — 2800 руб./2шт. | TP-LINK 14912 руб. | 30 048 руб. |
Фаза 3 — установка и отладка
▍ Слабый сервер под Windows 10
Первым делом я установил карту в достаточно слабенький сервер, который уже был в одной из прошлых статей. Это всего лишь старенький и слабый Celeron на 2 ядра, но даже тогда он смог показать скорости под 2 гигабита по самбе, а что же он сможет, если дать ему канал 10 гигабит?
Установка простая. Вскрываем-ставим-закрываем. В комплекте с PCIE-карточкой нашёлся низкопрофильный переходник, тем самым карта без проблем установилась в тонкий 2U-корпус.
В моём случае карту удалось поставить в PCIE2-порт, а это судя по документации: «1 x PCI Express 2.0 x16 Slot (PCIE2 @ x1 mode)», что в теории до 4 гигабит/сек. Даже не половина пропускной способности, но всё ещё больше чем 2,5 гбит юсб адаптер, который был в прошлой статье.
После запуска обнаружилось сразу две проблемы. Первая — невозможность сохранять настройки сетевой карты из её же менеджмент-интерфейса (CTRL+B во время загрузки), но в целом её настройки подходили для моих задач, поэтому я решил не вдаваться в них и пойти в Windows.
В Windows карта запустилась с ошибкой CODE 12 «это устройство не может найти достаточное количество свободных ресурсов для использования…», но во время гугления ошибки система предложила перезагрузиться, и после перезагрузки линк сразу поднялся, а проблема исчезла. Чудеса. Устанавливаем драйверы и забываем про этот сервер до тестов.
▍ Рабочий ПК под Windows 11
После запуска системы с подключённым SFP+ DAC кабелем, я не имел сети, совсем. Сетевая карта сразу работала и была в диспетчере устройств. Драйверы я поставил заранее.
В списке сетевых соединений постоянно мигало новое соединение, но IP оно не получало и постоянно разрывалось.
В итоге данная проблема решилась простой перезагрузкой системы. После неё линк поднялся сразу и работал стабильно на скорости 10гбит/сек.
Карта установлена в PCIE GEN3 X4 порт от чипсета.
▍ Proxmox
Это в итоге оказалась самая долгая часть. Proxmox уже имеет модули для поддержки Mellanox connectX3, но после установки нового pcie-устройства, нейминг устройств уехал, а это значит, что пора идти править конфиги.
После подключения монитора я выполнил ip a | less
— последняя приписка нужна, дабы можно было листать огромный список интерфейсов, который не помещается в экран.
В моём случае теперь доступно 2 интерфейса, enp5s0 — это стандартный Ethernet, и enp7s0 — новый интерфейс.
Идём в nano /etc/network/interfaces
и правим бридж, дабы он использовал enp7s0 вместо старого пятого в моём случае.
Сразу тут же под sfp+ Интерфейсом можно прописать mtu 9000
для включения «jumbo frames».
Подключение монитора в итоге можно было пропустить, так как Pcie-карточка была подключена в порт от чипсета, и нейминг основного сетевого интерфейса не изменился.
Если вы при выборе порта поступите так же, как и я, то можно сменить порт прямо в веб-интерфейсе (pve-network-vmbr0).
Сразу же можно обновить сетевую карту, так как в Linux данный процесс максимально прост.
Обновление Mellanox ConnectX 3 под Linux
Проверка версии прошивки очень проста. Выполняем ethtool -i ПОРТ
и смотрим на firmware-version
, который был 2.32, когда на данный момент последняя прошивка имеет версию 2.42.5000. Прошивки можно взять отсюда.
Берём пакет, качаем пакет под свою систему через WGET и распаковываем через tar zcvf пакетнейм.tgz.
В папке пакета выполняем chmod +x install.sh
.
Для работы софта потребуется пакет dkms, ставим его через apt-get install dkms
Запускаем сервис через mst start
.
Теперь выполняем mst status
, который должен вывести список наших сетевых карт. Если там пустота, запускаем сервис так: mst start --with_unknown
(возможно, ваша карта в infiniband-прошивке) и выполняем mst status
.
Если всё прошло успешно, то появятся 2 девайса: dev/mst/mt4099_pciconf0 и /dev/mst/mt4099_pci_cr0. Нам понадобится второй.
Качаем и распаковываем BIN файл прошивки отсюда и прошиваем её через flint -d ПутьКдевайсу -i ФайлПрошивки.bin burn
, в моём случае вышло так: flint -d /dev/mst/mt4099_pci_cr0 -i fw-ConnectX3-rel-2_42_5000-MCX311A-XCA_Ax-FlexBoot-3.4.752.bin burn
.
После успешной прошивки, которая длится около 30 секунд, перезагружаемся и вызываем ethtool -i ПОРТ
. В результате версия прошивки должна смениться на ту, что мы зашивали.
▍ Свич
Подключение банальное — втыкаем пару SFP+ кабелей, куда нам нравится, и всё работает. Линк до роутера в моём случае через Ethernet и он гигабитный (ограничение портов роутера). Единственное, что заметил, так это меньший нагрев свича при подключении SFP+ вместо стандартного эзернета.
Также при возникновении проблем с линком/скоростью, можно заменить блок питания. Китайские продавцы кладут откровенно мусор, который не тянет заявленные токи под нагрузкой, а пульсации не радуют. Замена решает 90% возможных проблем. В моём случае я заменил блок со стокового (2А написано, но по факту после 0,5А вырубается) на mean well lrs 35-12, но подойдёт любой блок 12в и от 1A.
Фаза 4 — тестирование
Первый, но бесполезный тест в паре с сервером под J1800. iperf выдал скорости вплоть до 2,8гбит/сек и упёрся в производительность процессора. Было просто интересно, что может пара ядер старенькой архитектуры. Всё ещё неплохой результат.
Теперь более адекватный тест — виртуальная машина (6 ядер от i5 13600k + 10гб оперативной памяти), она находится на Proxmox хосте и делит кучу ресурсов с другими вируталками, коих ещё 8 штук. Система использует сетевой адаптер VirtIO, а также образ диска в формате RAW.
Скорость колеблется в районе 7,8 гбит — 9 гбит/сек. Кажется, эксперимент уже прошёл успешно.
Та же виртуальная машина, но попробуем тест CrystalDiksMark, при этом используем стандартную функцию windows — «поделиться» диском на сервере, и примонтируем его на основном ПК (smb шара в общем).
Результаты интересные. Запись крупных блоков логично упёрлась в сеть 10 гигабит, ну а мелкоблочная запись не особо интересная и находится на неплохом, но низком уровне, если сравнивать с nvme SSD Дисками.
Притом образ диска виртуальной машины лежит на ssd samsung PM9A3 объёмом 4тб, скорости которого по тестам в разы превосходят то, что мы получили даже при тесте диска в самой системе виртуальной машины.
Я пробовал разные варианты кэширования, но скорость мелкоблочки так и не выросла. Слева тест диска под системой, а справа тест папки по сети:
Теперь более стандартный тест на копирование файлов на сервер и обратно. Конечно же, копировать будем наши любимые linux ISO.
Честно говоря, не успевал делать скрины — копирование буквально пролетает за секунды!
Скорость копирования на сетевой диск колеблется от 6 до гигабит, а отправка может достигать 9гигабит/сек!
Работа достаточно затратная в плане нагрузки на процессор. 6 ядер от i5 13600k зачастую загружаются на 70%! Но если отказаться от виртуализации и использовать BareMetal NAS, то требования к процессору будут сильно снижены за счёт отсутствия оверхеда от виртуализации и доступности RDMA для карты ConnectX 3.
Обратный тест было решено провести на фильме объёмом 35 гигабайт, банально для того, чтобы успеть сделать скриншоты.
Скорость была в районе 8 гигабит с подъёмами до 9,5 и падениями до 3 гигабит. Результат, как я считаю, отличный.
Со скоростями разобрались, они вроде как неплохие, а что же по нагреву? Вся идея использования Sfp+ и dac-кабелей родилась из-за фактора цены и потребления. Замерить потребление самой карты не так просто, а вот посмотреть на нагрев не составит труда.
Китайский свич оказался вполне себе холодным девайсом. Стоя просто на столе вне серверной полки, он имел температуру корпуса в районе 29 градусов. Но для чистоты эксперимента я поставил его в 1U пространство на уже тёплый роутер и дал поработать iperf полчасика на максимальной скорости 8-9 гигабит/сек.
В итоге температура Свича составил 38.5 градуса, если смотреть снизу на чип, и 34 градуса, если смотреть на корпус сверху. Видно, что греется только чип, sfp-адаптеры холодные.
Забавный факт в том, что при подключении 2,5 гбит клиентов в ethernet-порты этот свитч разогревается вплоть до 45 градусов, даже если нагрузки нет.
Сетевые карты чуть более горячие, удалось найти температуру вплоть до 50 градусов, если смотреть на радиатор, и это в душном 2U-корпусе без активного обдува. Владельцы x520 и x710 всплакнули.
В рабочем ПК карта имела некрашеный радиатор, температуру которого замерить не удалось, но на ощупь он был еле тёплый, хорошее охлаждение в 4U-корпусе сделало своё дело.
Заключение
Я долго думал о целесообразности апгрейда на фоне старых представлений о ценах на 10 гбит оборудование, а также повышенного потребления энергии.
Но на практике апгрейд оказался очень бюджетным (а можно ещё бюджетнее, если смотреть на железо чуть старее и прожорливее), а интеграция и настройка буквально не сложнее, чем работа с обычными сетевыми картами.
Могу ли я рекомендовать такой апгрейд? Если у вас есть задачи, которые получат преимущества от таких скоростей, то однозначно рекомендую.
Telegram-канал со скидками, розыгрышами призов и новостями IT 💻