Desativar agente Intel X710 LLDP interno

4

Fazemos configurações especiais de hardware que exigem o uso pesado do LLDP. Temos alguns novos racks de servidores que usam a placa de rede Intel X710 10Gb. LLDP de repente parou de funcionar. Nossa implementação do LLDP é simples. Ative o LLDP no switch TOR (parte superior do rack) usando TLVs padrão. Ative o LLDP na imagem do Linux usando o lldpad (CentOS 6.5) e use o lldptool para extrair informações do vizinho, o que funcionou para milhares de máquinas no passado. Só que, para essas máquinas com essas NICs, a coisa toda simplesmente parou de funcionar.

O uso de dumps de pacotes dos comutadores e do servidor mostrou que os quadros foram adequadamente enviados para o comutador dos servidores e, inversamente, os comutadores estavam recebendo quadros dos servidores e enviando TLV frames novamente para os servidores. Os servidores não estavam recebendo os TLVs do quadro de comutação, no entanto, nos deixando coçando nossas cabeças. Colocamos outras máquinas usando NICs diferentes no TOR e elas obtêm dados LLDP conforme o esperado.

Eu perguntei aos Googles ...

De acordo com este link , parece que esses X710s provavelmente estão executando um LLDP interno agente, que está interceptando quadros LLDP do comutador. O firmware nas máquinas afetadas que estamos vendo isso ocorrer é:

# 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

O método para desabilitar o agente LLDP interno na NIC não funciona. No entanto, ainda estou pesquisando, mas acho que tenho algumas opções:

  1. encontre a maneira correta de desabilitar o agente LLDP interno na NIC e use o método existente de extrair dados LLDP nessas máquinas - de preferência.
  2. Use o agente NIC LLDP e encontre uma maneira de extrair os TLVs vizinhos da NIC.

Alguém mais passou por problemas semelhantes ou semelhantes com esses cartões? Em caso afirmativo, como você contornou o problema?

Eu acho que, se eu quisesse usar os dados internos do agente, ele seria exposto via ethtool ou snmp , mas ainda não consegui encontrar uma maneira de revelar a informação.

TIA

EDITAR Para o registro, quando eu tentar as etapas descritas nos fóruns da Intel, recebo a seguinte saída:

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
    
por Jim 11.05.2016 / 00:32

3 respostas

6

OK. Então os Googles vieram através de mim. Veja como corrigir o problema.

Acontece que, para usar o sistema de arquivos de depuração, ele precisa ser montado primeiro. Estamos usando um sistema operacional memfs para executar comandos nas máquinas que estamos ajustando e, por padrão, não montamos debugfs. Então este script me deu a resposta I necessário.

... e os seguintes passos para o meu caso de uso funcionaram:

root@host (~)# mount -t debugfs none /sys/kernel/debug
root@host (~)# echo lldp stop > /sys/kernel/debug/i40e/0000:01:00.2/command

cedendo:

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

Outros links úteis:

link link link

E meu Google pesquisa

    
por 11.05.2016 / 18:30
3

Criado um script de inicialização para fazer isso na inicialização de uma máquina. Qualquer pedido de puxar apreciado.

Se alguém souber como saber o status do agente lldp incorporado, será bem-vindo. Isso pode ser adaptado para sistemas com alguns códigos de saída melhores.

link

    
por 01.09.2016 / 15:55
1

É um recurso de firmware que pode ser desativado

Desde 13 de outubro de 2017 , a Intel lançou uma versão de seu driver 2.3.6 que suporta alternar o manuseio de LLDP usando uma bandeira privada. Isso é feito executando o seguinte comando:

sudo ethtool --set-priv-flags <interface name> disable-fw-lldp on
  • substitua <interface name> pelo nome da sua interface. (exemplo - eth0 )

Baixe o driver da Intel i40e para X710 / XL710 versão 2.3.6

Instruções de instalação ( fonte )

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>

Isso é do compromisso da Intel :

From: Dave Ertman

Implement the private flag disable-fw-lldp for ethtool to disable the processing of LLDP packets by the FW. This will stop the FW from consuming LLDPDU and cause them to be sent up the stack.

The FW is also being configured to apply a default DCB configuration on link up.

Toggling the value of this flag will also cause a PF reset.

Disabling FW DCB will also disable DCBx.

    
por 07.11.2018 / 07:35