AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 775980
Accepted
Jim
Jim
Asked: 2016-05-11 14:32:51 +0800 CST2016-05-11 14:32:51 +0800 CST 2016-05-11 14:32:51 +0800 CST

禁用内部 Intel X710 LLDP 代理

  • 772

我们进行需要大量使用 LLDP 的特殊硬件配置。我们有一些新的服务器机架,它们都使用 Intel X710 10Gb 网卡。LLDP 突然停止工作。我们的 LLDP 实现很简单。使用默认 TLV 在 TOR(机架顶部)交换机上启用 LLDP。使用 lldpad (CentOS 6.5) 在 Linux 映像上启用 LLDP,并使用 lldptool 提取邻居信息,这在过去已在数千台机器上运行。只是,对于这些带有这些 NIC 的机器,整个事情就停止了工作。

使用来自交换机和服务器的数据包转储表明,帧已从服务器正确发送到交换机,相反,交换机正在正确接收来自服务器的帧并将 TLV 帧发送回服务器。但是,服务器没有收到交换帧 TLV,这让我们摸不着头脑。我们在 TOR 上放置了使用不同 NIC 的其他机器,它们按预期获取 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

在 NIC 上禁用内部 LLDP 代理的方法不起作用。尽管如此,我仍在挖掘,但我想我有几个选择:

  1. 找到正确的方法来禁用 NIC 上的内部 LLDP 代理,并使用现有方法在这些机器上提取 LLDP 数据 - 首选。
  2. 使用 NIC LLDP 代理并找到一种从 NIC 中提取邻居 TLV 的方法。

是否有其他人在使用这些卡时遇到过相同或类似的问题,如果有,您是如何解决这个问题的?

我想如果我想使用内部代理数据,它将通过ethtoolor公开snmp,但我还没有找到一种方法来显示信息。

TIA

编辑 作为记录,当我尝试英特尔论坛中概述的步骤时,我得到以下输出:

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
dell intel centos6 lldp
  • 4 4 个回答
  • 11171 Views

4 个回答

  • Voted
  1. Best Answer
    Jim
    2016-05-12T08:30:45+08:002016-05-12T08:30:45+08:00

    好的。所以谷歌帮我解决了。以下是解决问题的方法。

    事实证明,为了使用调试文件系统,需要先挂载它。我们使用 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/

    还有我的谷歌搜索

    • 9
  2. Tim Hughes
    2016-09-02T05:55:21+08:002016-09-02T05:55:21+08:00

    创建了一个初始化脚本来在机器启动时执行此操作。任何拉取请求表示赞赏。

    如果有人知道如何判断嵌入式 lldp 代理的状态,将不胜感激。这可以适用于具有更好退出代码的 systemd。

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

    • 4
  3. Jossef Harush Kadouri
    2018-11-07T22:35:46+08:002018-11-07T22:35:46+08:00

    这是一个可以关闭的固件功能

    自 2017 年 10 月 13 日以来,英特尔发布了他们的驱动程序2.3.6版本,支持使用私有标志切换 LLDP 处理。这是通过执行以下命令来完成的:

    sudo ethtool --set-priv-flags <interface name> disable-fw-lldp on
    
    • 替换<interface name>为您的接口名称。(示例 - eth0)

    下载适用于 X710/ XL710 版本 2.3.6 的 Intel 驱动程序 i40e


    安装说明(来源)

    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>
    

    这是来自英特尔的承诺:

    来自:戴夫·厄特曼

    为 ethtool 实现私有标志 disable-fw-lldp 以禁用 FW 对 LLDP 数据包的处理。这将阻止 FW 使用 LLDPDU 并导致它们向上发送到堆栈。

    FW 也被配置为在链接时应用默认 DCB 配置。

    切换此标志的值也会导致 PF 复位。

    禁用 FW DCB 也会禁用 DCBx。

    • 4
  4. NrY
    2021-05-18T02:34:01+08:002021-05-18T02:34:01+08:00

    由于 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"
    
    • 3

相关问题

  • 初学者 SAS 和服务器问题

  • 远程更改 DELL PE2950 Bios 设置

  • Dell R200 服务器上的最大支持硬盘驱动器。可以增加吗?

  • MS Small Business Server 2003 全新安装蓝屏?

  • 戴尔错误代码 0141 - 未检测到驱动器

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve