Отключить внутренний агент Intel X710 LLDP

Мы создаем специальные конфигурации оборудования, которые требуют интенсивного использования LLDP. У нас есть несколько новых стоек серверов, использующих сетевую карту Intel X710 10Gb. LLDP внезапно перестал работать. Наша реализация LLDP проста. Включите LLDP на переключателе TOR (верх стойки), используя значения TLV по умолчанию. Включите LLDP в образе Linux с помощью lldpad (CentOS 6.5) и используйте lldptool для извлечения информации о соседях, что раньше работало на тысячах машин. Только на этих машинах с этими сетевыми картами все это просто перестало работать.

Использование дампов пакетов от коммутаторов и сервера показало, что кадры были правильно отправлены на коммутатор с серверов, и, наоборот, коммутаторы правильно получали кадры от серверов и отправляли кадры TLV обратно на серверы. Однако серверы не получали TLV кадров коммутатора, что заставляло нас ломать голову. Мы разместили другие машины, использующие другие сетевые адаптеры, в TOR, и они, как и ожидалось, получают данные LLDP.

Я спросил у Googles ...

Согласно этой ссылке кажется, что эти X710s, вероятно, используют внутренний агент 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 на сетевой карте не работает. Тем не менее я все еще копаюсь, Для записи, когда я пытаюсь выполнить шаги, описанные на форумах 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
задан 11 May 2016 в 19:19
4 ответа

Хорошо. Так что Google попал за меня. Вот как исправить эту проблему.

Оказывается, чтобы использовать файловую систему отладки, ее необходимо сначала смонтировать. Мы используем ОС 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[12101 impressionhttps://communities.intel.com/thread/87759 https://sourceforge.net/p/e1000/mailman/message/34129092 /

И мой Google поиск

6
ответ дан 3 December 2019 в 02:32

Создал сценарий инициализации, чтобы сделать это при запуске машины. Любые запросы на вытягивание приветствуются.

Если кто-нибудь знает, как узнать статус встроенного агента lldp, он будет признателен. Это может быть адаптировано для systemd с некоторыми лучшими кодами выхода.

https://github.com/timhughes/i40e-lldp-agent/

3
ответ дан 3 December 2019 в 02:32

Это функция микропрограммы, которую можно отключить

С 13 октября 2017 г. Intel выпустила версию своего драйвера 2.3.6 , поддерживающую , отключение обработки LLDP с помощью частного флага. Это делается путем выполнения следующей команды:

sudo ethtool --set-priv-flags <interface name> disable-fw-lldp on
  • замените <имя интерфейса> на имя вашего интерфейса. (пример - 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 commit :

От: Дэйв Эртман

Реализуйте частный флаг disable-fw-lldp для ethtool, чтобы отключить обработка пакетов LLDP FW. Это остановит FW от потребляют LLDPDU и вызывают их отправку вверх по стеку.

FW также настраивается для применения конфигурации DCB по умолчанию при подключении.

Переключение значения этого флага также вызовет сброс PF.

Отключение FW DCB также отключит DCBx.

2
ответ дан 3 December 2019 в 02:32

Поскольку переключатель 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"
2
ответ дан 17 May 2021 в 10:34

Теги

Похожие вопросы