Отключить внутренний агент Intel X710 LLDP
Мы делаем специальные аппаратные конфигурации, которые требуют интенсивного использования LLDP. У нас есть несколько новых стоек серверов, которые используют сетевую карту Intel X710 10Gb. ЛЛДП внезапно перестала работать. Наша реализация LLDP проста. Включите LLDP на коммутаторе TOR (верх стойки), используя значения по умолчанию TLV. Включите LLDP в образе Linux с помощью lldpad (CentOS 6.5) и используйте lldptool для извлечения информации о соседях, которая в прошлом работала для тысяч машин. Только для этих машин с этими сетевыми картами все просто перестало работать.
Использование дампов пакетов от коммутаторов и сервера показало, что кадры были правильно отправлены на коммутатор с серверов, и наоборот, коммутаторы правильно получали кадры с серверов и отправляли кадры TLV обратно на серверы. Однако серверы не получали TLV с коммутационным фреймом, что заставляло нас ломать голову. Мы поместили другие машины с использованием разных сетевых карт в TOR, и они получили данные LLDP, как и ожидалось.
Я спросил Гугла...
Согласно этой ссылке кажется, что эти X710, вероятно, работают с внутренним агентом LLDP, который перехватывает кадры LLDP от коммутатора. Прошивка на зараженных машинах, которые мы видим, это происходит:
# ethtool -i eth2
driver: i40e
version: 1.3.47
firmware-version: 4.53 0x80001e5d 17.0.10
bus-info: 0000:01:00.2
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: yes
Метод отключения внутреннего агента LLDP на сетевой карте не работает. Тем не менее, я все еще копаюсь, но думаю, у меня есть несколько вариантов:
- найти правильный способ отключения внутреннего агента LLDP на сетевой карте и использовать существующий метод извлечения данных LLDP на этих машинах - предпочтительнее.
- Используйте агент LLDP NIC и найдите способ извлечь соседние значения TLV из NIC.
Кто-нибудь еще сталкивался с такими же или похожими проблемами с этими картами, и если да, то как вы справились с этой проблемой?
Я полагаю, что если я захочу использовать внутренние данные агента, они будут доступны через ethtool
или же snmp
, но мне пока не удалось найти способ раскрыть информацию.
ТИА
РЕДАКТИРОВАТЬ Для записи, когда я пытаюсь выполнить шаги, описанные на форумах Intel, я получаю следующий вывод:
root@host (~)# find /sys/kernel/debug/
/sys/kernel/debug/
root@host (~)# mkdir /sys/kernel/debug/i40e
mkdir: cannot create directory `/sys/kernel/debug/i40e': No such file or directory
4 ответа
ХОРОШО. Так что Гугл пришел ко мне. Вот как можно решить проблему.
Оказывается, для того, чтобы использовать отладочную файловую систему, ее нужно сначала смонтировать. Мы используем ОС memfs для запуска команд на машинах, которые мы настраиваем, и по умолчанию мы не монтируем debugfs. Таким образом, этот сценарий дал мне ответ, который мне был нужен.
... и следующие шаги для моего варианта использования работали:
root@host (~)# mount -t debugfs none /sys/kernel/debug
root@host (~)# echo lldp stop > /sys/kernel/debug/i40e/0000:01:00.2/command
получая:
root@host (~)# lldptool -i eth2 stat
Total Frames Transmitted = 1834
Total Discarded Frames Received = 0
Total Error Frames Received = 0
Total Frames Received = 1
Total Discarded TLVs = 0
Total Unrecognized TLVs = 0
Total Ageouts = 0
root@host (~)# lldptool -t -n -i eth2
Chassis ID TLV
MAC: ec:13:db:41:63:00
Port ID TLV
Local: 508
Time to Live TLV
120
System Name TLV
sw1
System Description TLV
Juniper Networks, Inc. qfx5100-48s-6q Ethernet Switch, kernel JUNOS 13.2X51-D38, Build date: 2015-06-12 02:33:47 UTC Copyright (c) 1996-2015 Juniper Networks, Inc.
System Capabilities TLV
System capabilities: Bridge, Router
Enabled capabilities: Bridge, Router
Port Description TLV
xe-0/0/0
MAC/PHY Configuration Status TLV
Auto-negotiation not supported and not enabled
PMD auto-negotiation capabilities: 0x8000
MAU type: Unknown [0x0000]
Link Aggregation TLV
Aggregation capable
Currently not aggregated
Aggregated Port ID: 0
Maximum Frame Size TLV
1514
Port VLAN ID TLV
PVID: 1
Unidentified Org Specific TLV
OUI: 0x009069, Subtype: 1, Info: 564633373136303530303437
VLAN Name TLV
VID 1: Name vlan-1
LLDP-MED Capabilities TLV
Device Type: netcon
Capabilities: LLDP-MED, Network Policy, Location Identification, Extended Power via MDI-PSE
End of LLDPDU TLV
Другие полезные ссылки:
http://comments.gmane.org/gmane.linux.network/408868 https://communities.intel.com/thread/87759 https://sourceforge.net/p/e1000/mailman/message/34129092/
И мой поиск в Google
Это функция прошивки, которую можно отключить
С 13 октября 2017 года Intel выпустила версию своего драйвера 2.3.6, которая поддерживает отключение обработки LLDP с помощью закрытого флага. Это делается с помощью следующей команды:
sudo ethtool --set-priv-flags <interface name> disable-fw-lldp on
- замещать
<interface name>
с вашим именем интерфейса. (пример -eth0
)
Скачать драйвер Intel i40e для X710/ XL710 версии 2.3.6
Инструкция по установке ( источник)
1. Move the base driver tar file to the directory of your choice. For
example, use '/home/username/i40e' or '/usr/local/src/i40e'.
2. Untar/unzip the archive, where <x.x.x> is the version number for the
driver tar file:
tar zxf i40e-<x.x.x>.tar.gz
3. Change to the driver src directory, where <x.x.x> is the version number
for the driver tar:
cd i40e-<x.x.x>/src/
4. Compile the driver module:
# make install
The binary will be installed as:
/lib/modules/<KERNEL VERSION>/updates/drivers/net/ethernet/intel/i40e/i40e.ko
The install location listed above is the default location. This may differ
for various Linux distributions.
NOTE:Â To compile the driver on some kernel/arch combinations, a
package with the development version of libelf (e.g. libelf-dev,
libelf-devel, elfutilsl-libelf-devel) may need to be installed.
NOTE: To gather and display additional statistics, use the
I40E_ADD_PROBES pre-processor macro:
#make CFLAGS_EXTRA=-DI40E_ADD_PROBES
Please note that this additional statistics gathering can impact
performance.
5. Load the module using the modprobe command:
modprobe <i40e> [parameter=port1_value,port2_value]
Make sure that any older i40e drivers are removed from the kernel before
loading the new module:
rmmod i40e; modprobe i40e
6. Assign an IP address to the interface by entering the following,
where ethX is the interface name that was shown in dmesg after modprobe:
ip address add <IP_address>/<netmask bits> dev ethX
7. Verify that the interface works. Enter the following, where IP_address
is the IP address for another machine on the same subnet as the interface
that is being tested:
ping <IP_address>
Это из коммитов Intel:
От: Дейв Эртман
Реализуйте закрытый флаг disable-fw-lldp для ethtool, чтобы отключить обработку пакетов LLDPFW. Это остановит FW от использования LLDPDU и заставит их отправляться в стек.
FW также настраивается для применения конфигурации DCB по умолчанию при подключении.
Переключение значения этого флага также приведет к сбросу PF.
Отключение FW DCB также отключит DCBx.
Поскольку переключатель ethtool не работает после перезагрузки, мы настроили его в соответствии с правилом udev.
/etc/udev/rules.d/10-disable-fw-lldp.rules:
ACTION=="add", SUBSYSTEM=="net", ENV{INTERFACE}=="*", DRIVERS=="i40e", PROGRAM="/usr/sbin/ethtool --set-priv-flags $name disable-fw-lldp on"
Создан скрипт инициализации, чтобы сделать это при запуске машины. Любые запросы тяги приветствуются.
Если кто-нибудь знает, как определить статус встроенного агента lldp, он будет признателен. Это может быть адаптировано для systemd с некоторыми лучшими кодами выхода.