Русский
Русский
English
Статистика
Реклама

Использование недорогих 1040 Гбитс сетевых адаптеров с интерфейсом HP FlexibleLOM

Для соединения пары домашних серверов мне захотелось выйти за пределы привычных 1Гбит/с и при этом сильно не переплачивать за сетевое оборудование. На известном сайте были приобретены недорогие серверные адаптеры HP 764285-B21, по сути являющиеся ОЕМ аналогами Mellanox ConnectX-3 Pro, и QFSP+ медный кабель (DAC). Эти двухпортовые адаптеры могут работать на скоростях 10 и 40 Гбит/с в режиме Ethernet портов и до 56 Гбит/с в режиме InfiniBand. Низкая цена на вторичном рынке обусловлена нестандартным интерфейсом HP FlexibleLOM, разъем которого хотя и похож на стандартный PCIe x8, но имеет иное расположение линий PCIe и поэтому может использоваться только в совместимых серверах HP. Тем не менее выход есть - Tobias Schramm спроектировал специальный адаптер для установки карт HP FlexibleLOM в обычный слот PCIe. Я заказал платы адаптера на jlcpcb.com и 8х коннекторы на алиэкспресс. После монтажа коннектора на плату адаптера и установки всей конструкции в слот она успешно определилась как устройство на шине PCIe:

lspci | grep Mellanox23:00.0 Ethernet controller: Mellanox Technologies MT27520 Family [ConnectX-3 Pro]

Однако после установки Ethernet драйвера Mellanox (я использовал Ubuntu 16.04 и 20.04, предполагаю для других версий и для Windows порядок действий будет аналогичен) Ethernet интерфейсы не появились в системе. Это означало, что драйвер по какой-либо причине не смог распознать адаптер и скорее всего потребуется перешивка. Изучая вывод dmesg можно примерно установить причину ошибки, в моём случае в прошивке адаптеров была включена опция SR-IOV, несовместимая с используемой материнской платой.

Для перешивки адаптера скачиваем и распаковываем Mellanox firmware tools для вашей ОС. Установку производим с ключом --oem (sudo ./install --oem), это позволит сразу установить дополнительные утилиты для сборки новой прошивки.

После установки MFT определяем текущую версию прошивки:

mlxfwmanager -d 23:00.0Querying Mellanox devices firmware ...Device #1:----------  Device Type:      ConnectX3Pro  Part Number:      764285-B21_Ax  Description:      HP InfiniBand FDR/Ethernet 10Gb/40Gb 2-port 544+FLR-QSFP Adapter  PSID:             HP_1380110017  PCI Device Name:  23:00.0  Port1 MAC:        24be05c557c1  Port2 MAC:        24be05c557c2  Versions:         Current        Available          FW             2.42.5700      N/A             Status:           No matching image found

...и делаем бэкап текущей прошивки и конфигурации адаптера:

flint -d 23:00.0 ri original_firmware.binflint -d 23:00.0 dc original_config.ini

Изучив раздел [HCA] файла конфигурации находим требуемый параметр sriov_en и, предварительно скопировав конфигурацию в новый файл new_config.ini, выставляем ему нулевое значение. Также проверяем, что eth_xfi_en равен единице - это позволит активировать Ethernet режим портов:

[HCA]...eth_xfi_en = 1sriov_en = 0...

Далее нам потребуется исходный файл прошивки .mlx для нашего чипсета (в моём случае это ConnectX-3 Pro), как выяснилось раньше их можно было свободно скачать с сайта Mellanox, однако сейчас лавочку прикрыли, оставив только готовые бинарные прошивки, которые, к сожалению, нам не подходят. В результате поисков мне удалось найти прямую ссылку на скачивание исходной прошивки предыдущей версии 2.36:

wget http://www.mellanox.com/downloads/firmware/ConnectX3Pro-rel-2_36_5000-web.tgz

Распаковываем архив и извлекаем искомый fw-ConnectX3Pro-rel.mlx, затем собираем новую прошивку с помощью mlxburn:

mlxburn -fw fw-ConnectX3Pro-rel.mlx -conf new_config.ini -wrimage new_firmware.bin

На всякий случай проверяем новую прошивку:

flint -i new_firmware.bin verify     FS2 failsafe image. Start address: 0x0. Chunk size 0x80000:     NOTE: The addresses below are contiguous logical addresses. Physical addresses on           flash may be different, based on the image start address and chunk size     /0x00000038-0x0000065b (0x000624)/ (BOOT2) - OK     /0x0000065c-0x00002b9b (0x002540)/ (BOOT2) - OK     /0x00002b9c-0x00003b27 (0x000f8c)/ (Configuration) - OK     /0x00003b28-0x00003b6b (0x000044)/ (GUID) - OK     /0x00003b6c-0x00003cc3 (0x000158)/ (Image Info) - OK     /0x00003cc4-0x00010fc3 (0x00d300)/ (DDR) - OK     /0x00010fc4-0x00012027 (0x001064)/ (DDR) - OK     /0x00012028-0x000123f7 (0x0003d0)/ (DDR) - OK     /0x000123f8-0x0005008b (0x03dc94)/ (DDR) - OK     /0x0005008c-0x00054f0f (0x004e84)/ (DDR) - OK     /0x00054f10-0x00059103 (0x0041f4)/ (DDR) - OK     /0x00059104-0x00059bfb (0x000af8)/ (DDR) - OK     /0x00059bfc-0x0008915f (0x02f564)/ (DDR) - OK     /0x00089160-0x0008cd0b (0x003bac)/ (DDR) - OK     /0x0008cd0c-0x000a1d7f (0x015074)/ (DDR) - OK     /0x000a1d80-0x000a1e87 (0x000108)/ (DDR) - OK     /0x000a1e88-0x000a6a8b (0x004c04)/ (DDR) - OK     /0x000a6a8c-0x000a827b (0x0017f0)/ (Configuration) - OK     /0x000a827c-0x000a82ef (0x000074)/ (Jump addresses) - OK     /0x000a82f0-0x000a8e03 (0x000b14)/ (FW Configuration) - OK     /0x00000000-0x000a8e03 (0x0a8e04)/ (Full Image) - OK-I- FW image verification succeeded. Image is bootable.

...и затем прошиваем в адаптер:

flint -d 23:00.0 -i new_firmware.bin -allow_psid_change burn    Current FW version on flash:  2.42.5700    New FW version:               2.36.5000    Note: The new FW version is older than the current FW version on flash. Do you want to continue ? (y/n) [n] : yBurning FS2 FW image without signatures - OK  Restoring signature                     - OK

После перешивки адаптера обязательно перезагружаем сервер.

В моём случае после всех вышеперечисленных манипуляций драйвер mlx4_core успешно распознал адаптер и сетевые интерфейсы появились в системе. Для ускорения процесса загрузки я дополнительно отключил boot options:

mlxconfig -d 23:00.0 set BOOT_OPTION_ROM_EN_P1=falsemlxconfig -d 23:00.0 set BOOT_OPTION_ROM_EN_P2=falsemlxconfig -d 23:00.0 set LEGACY_BOOT_PROTOCOL_P1=0mlxconfig -d 23:00.0 set LEGACY_BOOT_PROTOCOL_P2=0

...и удалил BootROM:

flint -d 23:00.0 --allow_rom_change drom

Кроме того, если не планируется использование интерфейсов InfiniBand, можно принудительно перевести оба порта в режим Ethernet:

mlxconfig -d 23:00.0 set LINK_TYPE_P1=2mlxconfig -d 23:00.0 set LINK_TYPE_P2=2
Источник: habr.com
К списку статей
Опубликовано: 25.11.2020 10:14:05
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Сетевые технологии

Старое железо

Сетевое оборудование

Mellanox

Hpe

Home server

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru