CodingBox Q&A Ask question

Intel X520 в R630 отклоняет медный SFP+ 10GBASE-T с comp_codes_10g=0x00, несмотря на allow_unsupported_sfp=1

Asked Active Viewed 200 AI translation from English
6

Мы переводим пару R630 на 10G, а кабель до верха стойки - медный, поэтому вместо прокладки оптики я поставил в карты X520 медные модули 10GBASE-T SFP+. На стороне коммутатора они принимаются без единого слова. Серверы отказываются их принимать.

  • Dell PowerEdge R630, Intel X520 (82599), два порта
  • FS SFP-10GM-T-30, закодирован под Dell, по одному модулю на сервер
  • ixgbe вне дерева ядра от Intel, собран через DKMS
  • /etc/modprobe.d/ixgbe.conf с переопределением, выставленным для обоих портов
# cat /etc/modprobe.d/ixgbe.conf
options ixgbe allow_unsupported_sfp=1,1

# dmesg
ixgbe: failed to load because an unsupported SFP+ module type was detected

# 10G compliance codes read back from the module
comp_codes_10g=0x00

Что я уже пробовал:

  • вручную выполнить modprobe ixgbe allow_unsupported_sfp=1, а не только через запись в modprobe.d
  • пересобрать initramfs и сделать холодную перезагрузку машины, а не просто перезагрузку модуля
  • переставить модуль во второй порт, а затем на второй сервер - результат тот же

Интересная деталь - этот байт compliance: модуль вообще ничего не сообщает про 10G. Проверяет ли драйвер это до того, как вообще посмотрит на override, и можно ли что-то сделать, кроме покупки оптики с правильной кодировкой?

Comments 6

Accepted answer

Вы боретесь не с белым списком, а с порядком проверок.

В SFF-8472 нет бита compliance для 10GBASE-T. Для него просто нет кодовой точки, поэтому честный медный SFP+ сообщает нулевые коды compliance для 10G - это как раз ваш comp_codes_10g=0x00. ixgbe читает этот байт, не находит там ничего, что распознаёт как модуль 10G, и сдаётся прямо там, даже не добравшись до проверки allow_unsupported_sfp. Поэтому этот флаг прекрасно работает для неквалифицированного оптического модуля или DAC и совершенно ничего не делает для ваших медных модулей.

Есть патч от сообщества к внедревному ixgbe от Intel, который сдвигает эту проверку compliance: когда администратор явно выставил allow_unsupported_sfp=1, модуль с нулевыми кодами compliance для 10G классифицируется как SR вместо того, чтобы быть отброшенным на раннем этапе. Патч был отправлен в апстрим и до сих пор не влит, так что применять его к исходникам DKMS придётся вручную и держать вместе со своей сборкой. Автор патча сообщал потом о полном дуплексе 10 Гбит/с на паре серверов, а кто-то ещё подтвердил, что тот же патч заставляет заработать медные модули HLX-SFPX в X520.

Две оговорки перед тем, как это делать. Оптика, не квалифицированная Intel, выходит за рамки их гарантии совместимости, так что это становится вашей проблемой, а не их. И PHY 10GBASE-T - горячая деталь: в серверной корзине без собственного обдува она будет заметно горячее любой оптики в соседнем слоте, так что следите за температурой модуля после того, как линк поднимется.

5 IndiagigopsIN Show original (English) AI translation

Прежде чем что-то патчить, стоит уточнить две вещи.

Во-первых, выведите параметр так, как его реально видит ядро - /sys/module/ixgbe/parameters/allow_unsupported_sfp - на машине, прошедшей холодную перезагрузку, а не просто перезагрузку модуля. Если там не то же самое значение, что в вашем конфиг-файле, значит драйвер загружается раньше, чем применяется ваша конфигурация, и остальная отладка бессмысленна.

Во-вторых, какой именно ixgbe загружен? ethtool -i вам не поможет, пока драйвер так и не заканчивает загрузку и интерфейсы отсутствуют, так что приведите вывод modinfo ixgbe и версию собранного вами пакета DKMS.

И откуда взялось это comp_codes_10g=0x00 - это сообщил драйвер, или вы сами считали EEPROM модуля?

1 South Koreawaverunner63KR Show original (English) AI translation

В файле стоит 1,1, и после холодной перезагрузки /sys/module/ixgbe/parameters/allow_unsupported_sfp возвращает 1,1, то есть параметр применяется, а не игнорируется молча. Initramfs пересобирался до перезагрузки. Строка в dmesg одна и та же в обоих случаях.

Коды compliance я считал сам из данных SFF-8472 модуля, а не от драйвера - байт compliance для 10G нулевой, остальные поля идентификации выглядят нормально. Тот же модуль в порту коммутатора линкуется на 10G, так что модуль не мёртвый.

4 Brazilopticnerd31BR Show original (English) AI translation

Стоит добавить с практической стороны: при DKMS каждое обновление ядра пересобирает модуль из исходников на диске, так что патч должен жить в этом дереве исходников, а не в каталоге сборки, который потом почистили. Проверьте, что порт возвращается после первого же обновления ядра, а не выясняйте это уже во время окна перезагрузки.

Более общий урок из этого класса проблем - версия драйвера решает больше, чем кодировка модуля. Похожая история на X710 с пассивным DAC: один кабель, один порт, всё в порядке под Ubuntu 24.04 и мертво под TrueNAS SCALE с Link detected: no и Speed: Unknown, потому что в той сборке i40e был взят из ядра 6.6.44-production. На 25.04-BETA.1, где i40e взят из 6.12.9-production, twinax поднялся сам собой - больше ничего не трогали, карта осталась на прошивке 9.20. Оптика на этом порту работала нормально в обеих системах, что и указало на то, что дело в том, как старый драйвер обрабатывает пассивную медь. ethtool -i с обеих сторон сравнения сэкономил бы немало времени на перестановке кабелей.

1 Italylambdapilot72IT Show original (English) AI translation

Другой тип модуля, тот же драйвер, и ловушка, которую стоит исключить, раз уж вы здесь. Dell R720 с дочерней картой X520, многомодовые модули Cisco 10G LC отклонялись, интерфейсы просто отсутствовали. Опция была прописана и в modprobe.d, и в GRUB, но ничего не менялось - потому что хост загружается через EFI, и эта командная строка GRUB вообще не использовалась.

На Proxmox с загрузкой через EFI параметр нужно прописывать в /etc/kernel/cmdline как ixgbe.allow_unsupported_sfp=1, а затем выполнить pve-efiboot-tool refresh. В том случае даже это не помогло, и в итоге купили модули под маркой Intel, так что относитесь к этому как к варианту, который стоит исключить, а не как к гарантированному решению.

Ещё один момент из той истории: обе стороны должны быть довольны оптикой независимо друг от друга. Модуль, который принимает коммутатор, всё равно может быть отклонён хостом - именно там вы сейчас и находитесь.

2 Franceedgenode83FR Show original (English) AI translation

Применил патч к исходникам DKMS и пересобрал. Оба порта поднялись на 10 Гбит/с в полном дуплексе и держатся под нагрузкой с тех пор.

Работает, но назвать это решённым я бы не сказал. Это невлитый патч, который теперь приходится переносить через каждое обновление ядра, а драйвер показывает порт как SR, что запутает всякого, кто посмотрит на эту машину после меня. Модуль также работает заметно горячее, чем оптика в соседней корзине, а в этом слоте обдува считай что нет. Для следующей партии серверов я просто протяну оптику и перестану спорить с драйвером.

4 Brazilopticnerd31BR Show original (English) AI translation
Log in to comment. Log in