适用于 Intel(R) 万兆以太网 PCI Express 网卡的 Linux 基本驱动程序

Intel 万兆 Linux 驱动程序。版权所有(c) 1999-2018 Intel Corporation。

目录

  • 识别您的适配器

  • 命令行参数

  • 附加配置

  • 已知问题

  • 支持

识别您的适配器

该驱动程序兼容基于以下设备的适配器:

  • Intel(R) 以太网控制器 82598

  • Intel(R) 以太网控制器 82599

  • Intel(R) 以太网控制器 X520

  • Intel(R) 以太网控制器 X540

  • Intel(R) 以太网控制器 X550

  • Intel(R) 以太网控制器 X552

  • Intel(R) 以太网控制器 X553

有关如何识别您的适配器以及最新的 Intel 网络驱动程序的信息,请参阅 Intel 支持网站:https://www.intel.com/support

带可插拔光模块的 SFP+ 设备

基于 82599 的适配器

注意:- 如果您的 82599 型 Intel(R) 网络适配器附带 Intel 光模块或为 Intel(R) 以太网服务器适配器 X520-2,则它仅支持 Intel 光模块和/或下列直连电缆。- 当 82599 型 SFP+ 设备背靠背连接时,应通过 ethtool 将其速度设置设为相同。如果混合速度设置,结果可能会有所不同。

供应商

类型

部件号

SR 模块

Intel

双速率 1G/10G SFP+ SR(带拉环)

FTLX8571D3BCV-IT

Intel

双速率 1G/10G SFP+ SR(带拉环)

AFBR-703SDZ-IN2

Intel

双速率 1G/10G SFP+ SR(带拉环)

AFBR-703SDDZ-IN1

LR 模块

Intel

双速率 1G/10G SFP+ LR(带拉环)

FTLX1471D3BCV-IT

Intel

双速率 1G/10G SFP+ LR(带拉环)

AFCT-701SDZ-IN2

Intel

双速率 1G/10G SFP+ LR(带拉环)

AFCT-701SDDZ-IN1

以下是经过部分测试的第三方 SFP+ 模块列表。并非所有模块都适用于所有设备。

供应商

类型

部件号

Finisar

SFP+ SR 带拉环,10G 单速率

FTLX8571D3BCL

Avago

SFP+ SR 带拉环,10G 单速率

AFBR-700SDZ

Finisar

SFP+ LR 带拉环,10G 单速率

FTLX1471D3BCL

Finisar

双速率 1G/10G SFP+ SR(不带拉环)

FTLX8571D3QCV-IT

Avago

双速率 1G/10G SFP+ SR(不带拉环)

AFBR-703SDZ-IN1

Finisar

双速率 1G/10G SFP+ LR(不带拉环)

FTLX1471D3QCV-IT

Avago

双速率 1G/10G SFP+ LR(不带拉环)

AFCT-701SDZ-IN1

Finisar

1000BASE-T SFP

FCLF8522P2BTL

Avago

1000BASE-T

ABCU-5710RZ

HP

1000BASE-SX SFP

453153-001

基于 82599 的适配器支持所有符合 SFF-8431 v4.1 和 SFF-8472 v10.4 规范的无源和有源限流直连电缆。

当 ifconfig ethX down 时 SFP+ 激光器关闭

“ifconfig ethX down” 会关闭基于 82599 的 SFP+ 光纤适配器的激光器。“ifconfig ethX up” 会打开激光器。或者,您可以使用 “ip link set [down/up] dev ethX” 来关闭和打开激光器。

基于 82599 的 QSFP+ 适配器

注意:- 如果您的 82599 型 Intel(R) 网络适配器附带 Intel 光模块,则它仅支持 Intel 光模块。- 基于 82599 的 QSFP+ 适配器仅支持 4x10 Gbps 连接。不支持 1x40 Gbps 连接。QSFP+ 链路伙伴必须配置为 4x10 Gbps。- 基于 82599 的 QSFP+ 适配器不支持自动链路速度检测。链路速度必须配置为 10 Gbps 或 1 Gbps,以匹配链路伙伴的速度能力。不正确的速度配置将导致链路失败。- Intel(R) 以太网融合网络适配器 X520-Q1 仅支持以下列出的光模块和直连电缆。

供应商

类型

部件号

Intel

双速率 1G/10G QSFP+ SRL(带拉环)

E10GQSFPSR

基于 82599 的 QSFP+ 适配器支持所有符合 SFF-8436 v4.1 规范的无源和有源限流 QSFP+ 直连电缆。

基于 82598 的适配器

注意:- 支持可插拔光模块的 Intel(R) 以太网网络适配器仅支持其原始模块类型(例如,Intel(R) 万兆 SR 双端口 Express 模块仅支持 SR 光模块)。如果您插入不同类型的模块,驱动程序将无法加载。- 不支持光模块热插拔。- 仅支持单速 10 千兆模块。- 主板上的 LAN (LOM) 可能支持 DA、SR 或 LR 模块。不支持其他模块类型。请参阅您的系统文档以获取详细信息。

以下是经过部分测试的 SFP+ 模块和直连电缆列表。并非所有模块都适用于所有设备。

供应商

类型

部件号

Finisar

SFP+ SR 带拉环,10G 单速率

FTLX8571D3BCL

Avago

SFP+ SR 带拉环,10G 单速率

AFBR-700SDZ

Finisar

SFP+ LR 带拉环,10G 单速率

FTLX1471D3BCL

基于 82598 的适配器支持所有符合 SFF-8431 v4.1 和 SFF-8472 v10.4 规范的无源直连电缆。不支持有源直连电缆。

上述提及的第三方光模块和电缆仅为强调第三方规格和潜在兼容性而列出,并非 Intel 对任何第三方产品的推荐、认可或赞助。Intel 不认可或推广任何第三方制造的产品,提供第三方引用仅为分享关于具有上述规格的某些光模块和电缆的信息。可能存在生产或供应具有相似或匹配描述的光模块和电缆的其他制造商或供应商。客户必须自行判断并勤勉地从其选择的任何第三方购买光模块和电缆。客户全权负责评估产品和/或设备的适用性,并负责选择购买任何产品的供应商。上述提及的光模块和电缆不提供 Intel 的担保或支持。Intel 不承担任何责任,并否认与此类第三方产品的销售和/或使用或客户选择供应商相关的任何明示或暗示保证。

命令行参数

max_vfs

有效范围:

1-63

此参数添加了对 SR-IOV 的支持。它使驱动程序最多生成 max_vfs 个虚拟功能。如果值大于 0,它还将强制 VMDq 参数为 1 或更多。

注意:此参数仅在内核 3.7.x 及更低版本上使用。在内核 3.8.x 及更高版本上,请使用 sysfs 启用 VF。此外,对于 Red Hat 发行版,此参数仅在 6.6 版及更旧版本上使用。对于 6.7 版及更新版本,请使用 sysfs。例如

#echo $num_vf_enabled > /sys/class/net/$dev/device/sriov_numvfs // enable VFs
#echo 0 > /sys/class/net/$dev/device/sriov_numvfs               //disable VFs

驱动程序的参数按位置引用。因此,如果您的系统中有双端口适配器或多个适配器,并且希望每个端口有 N 个虚拟功能,则必须为每个端口指定一个数字,每个参数之间用逗号分隔。例如

modprobe ixgbe max_vfs=4

这将在第一个端口上生成 4 个 VF。

modprobe ixgbe max_vfs=2,4

这将在第一个端口上生成 2 个 VF,在第二个端口上生成 4 个 VF。

注意:使用这些参数加载驱动程序时必须小心。根据您的系统配置、插槽数量等,在所有情况下都无法预测命令行上的位置。

注意:设备和驱动程序都不控制 VF 如何映射到配置空间。总线布局会因操作系统而异。在支持此功能的操作系统上,您可以检查 sysfs 来查找映射。

注意:当启用 SR-IOV 模式或 VMDq 模式时,硬件 VLAN 过滤和 VLAN 标签剥离/插入将保持启用状态。请在添加新的 VLAN 过滤器之前移除旧的 VLAN 过滤器。例如,

ip link set eth0 vf 0 vlan 100 // set VLAN 100 for VF 0
ip link set eth0 vf 0 vlan 0   // Delete VLAN 100
ip link set eth0 vf 0 vlan 200 // set a new VLAN 200 for VF 0

在内核 3.6 中,驱动程序支持同时使用 max_vfs 和 DCB 功能,但受限于以下所述的限制。在内核 3.6 之前,驱动程序不支持 max_vfs 大于 0 和 DCB 功能(使用优先级流控制和扩展传输选择的多个流量类别)的同时操作。

当启用 DCB 时,网络流量通过多个流量类别(NIC 中的数据包缓冲区)传输和接收。流量根据优先级与特定类别关联,该优先级在 VLAN 标签中使用的值为 0 到 7。当未启用 SR-IOV 时,每个流量类别都与一组接收/传输描述符队列对相关联。给定流量类别的队列对数量取决于硬件配置。当启用 SR-IOV 时,描述符队列对被分组到池中。物理功能 (PF) 和每个虚拟功能 (VF) 都分配有一个接收/传输描述符队列对池。当配置多个流量类别(例如,DCB 启用时)时,每个池包含来自每个流量类别的一个队列对。当硬件中配置单个流量类别时,池包含来自单个流量类别的多个队列对。

可分配的 VF 数量取决于可启用的流量类别数量。每个已启用 VF 的可配置流量类别数量如下:0 - 15 个 VF = 最多 8 个流量类别,取决于设备支持;16 - 31 个 VF = 最多 4 个流量类别;32 - 63 个 VF = 1 个流量类别

当配置 VF 时,PF 也被分配一个池。PF 支持 DCB 功能,但限制是每个流量类别只使用一个队列对。当配置零个 VF 时,PF 可以支持每个流量类别的多个队列对。

allow_unsupported_sfp

有效范围:

0,1

默认值:

0(禁用)

此参数允许在基于 82599 的适配器上使用不受支持和未经测试的 SFP+ 模块,只要驱动程序知道模块类型即可。

debug

有效范围:

0-16(0=无,...,16=全部)

默认值:

0

此参数调整在系统日志中显示的调试消息级别。

附加功能和配置

流控制

以太网流控制 (IEEE 802.3x) 可以通过 ethtool 配置,以启用 ixgbe 的接收和传输暂停帧。当启用传输时,当接收数据包缓冲区超过预定义阈值时,会生成暂停帧。当启用接收时,接收到暂停帧时,传输单元将停止指定的延迟时间。

注意:您必须有一个支持流控制的链路伙伴。

流控制默认启用。

使用 ethtool 更改流控制设置。要启用或禁用 Rx 或 Tx 流控制

ethtool -A eth? rx <on|off> tx <on|off>

注意:此命令仅在禁用自动协商时启用或禁用流控制。如果启用自动协商,此命令会更改用于与链路伙伴进行自动协商的参数。

要启用或禁用自动协商

ethtool -s eth? autoneg <on|off>

注意:流控制自动协商是链路自动协商的一部分。根据您的设备,您可能无法更改自动协商设置。

注意:对于进入 1 千兆模式的 82598 背板卡,流控制默认行为更改为关闭。这些设备在 1 千兆模式下的流控制可能导致传输挂起。

Intel(R) 以太网流导向器

Intel 以太网流导向器执行以下任务:

  • 根据流将接收到的数据包导向不同的队列。

  • 严格控制平台中流的路由。

  • 匹配流和 CPU 核心以实现流亲和性。

  • 支持多个参数,用于灵活的流分类和负载均衡(仅在 SFP 模式下)。

注意:Intel 以太网流导向器掩码的工作方式与子网掩码相反。在以下命令中

#ethtool -N eth11 flow-type ip4 src-ip 172.4.1.2 m 255.0.0.0 dst-ip \
172.21.1.1 m 255.128.0.0 action 31

写入过滤器的 src-ip 值将是 0.4.1.2,而不是预期中的 172.0.0.0。类似地,写入过滤器的 dst-ip 值将是 0.21.1.1,而不是 172.0.0.0。

要启用或禁用 Intel 以太网流导向器

# ethtool -K ethX ntuple <on|off>

禁用 ntuple 过滤器时,所有用户编程的过滤器都会从驱动程序缓存和硬件中清除。重新启用 ntuple 时,必须重新添加所有需要的过滤器。

要添加将数据包导向队列 2 的过滤器,请使用 -U 或 -N 开关

# ethtool -N ethX flow-type tcp4 src-ip 192.168.10.1 dst-ip \
192.168.10.2 src-port 2000 dst-port 2001 action 2 [loc 1]

要查看当前存在的过滤器列表

# ethtool <-u|-n> ethX

旁带精确过滤器

旁带精确过滤器用于引导匹配指定特征的流量。它们通过 ethtool 的 ntuple 接口启用。要添加新过滤器,请使用以下命令

ethtool -U <device> flow-type <type> src-ip <ip> dst-ip <ip> src-port <port> \
dst-port <port> action <queue>
其中

<device> - 要编程的以太网设备 <type> - 可以是 ip4、tcp4、udp4 或 sctp4 <ip> - 要匹配的 IP 地址 <port> - 要匹配的端口号 <queue> - 流量导向的队列(-1 丢弃匹配的流量)

使用以下命令删除过滤器

ethtool -U <device> delete <N>

其中 <N> 是打印所有活动过滤器时显示的过滤器 ID,在添加过滤器时也可以使用 “loc <N>” 指定。

以下示例匹配从 192.168.0.1 端口 5300 发送,导向 192.168.0.5 端口 80 的 TCP 流量,并将其发送到队列 7

ethtool -U enp130s0 flow-type tcp4 src-ip 192.168.0.1 dst-ip 192.168.0.5 \
src-port 5300 dst-port 80 action 7

对于每种流类型,编程的过滤器必须都具有相同的匹配输入集。例如,发出以下两个命令是可接受的

ethtool -U enp130s0 flow-type ip4 src-ip 192.168.0.1 src-port 5300 action 7
ethtool -U enp130s0 flow-type ip4 src-ip 192.168.0.5 src-port 55 action 10

然而,发出接下来的两个命令是不可接受的,因为第一个指定了 src-ip,第二个指定了 dst-ip

ethtool -U enp130s0 flow-type ip4 src-ip 192.168.0.1 src-port 5300 action 7
ethtool -U enp130s0 flow-type ip4 dst-ip 192.168.0.5 src-port 55 action 10

第二个命令将失败并报错。您可以编程多个具有相同字段但值不同的过滤器,但是,在同一设备上,您不能编程两个具有不同匹配字段的 TCP4 过滤器。

ixgbe 驱动程序不支持字段子部分的匹配,因此不支持部分掩码字段。

要创建将流量导向特定虚拟功能 (Virtual Function) 的过滤器,请使用 “user-def” 参数。将 user-def 指定为一个 64 位值,其中低 32 位表示队列号,接下来的 8 位表示是哪个 VF。请注意,0 是 PF,因此 VF 标识符偏移量为 1。例如

... user-def 0x800000002 ...

指定将流量导向虚拟功能 7(8 减 1)的队列 2。

请注意,这些过滤器不会破坏内部路由规则,并且不会路由原本不会发送到指定虚拟功能的流量。

巨型帧

通过将最大传输单元 (MTU) 更改为大于默认值 1500 的值来启用巨型帧支持。

使用 ifconfig 命令增加 MTU 大小。例如,输入以下内容,其中 <x> 是接口号

ifconfig eth<x> mtu 9000 up

或者,您可以使用 ip 命令,如下所示

ip link set mtu 9000 dev eth<x>
ip link set up dev eth<x>

此设置不会在重启后保留。可以通过将 ‘MTU=9000’ 添加到文件来使设置更改永久生效

/etc/sysconfig/network-scripts/ifcfg-eth<x> // for RHEL
/etc/sysconfig/network/<config_file> // for SLES

注意:巨型帧的最大 MTU 设置为 9710。此值与最大巨型帧大小 9728 字节相符。

注意:此驱动程序将尝试使用多个页面大小的缓冲区来接收每个巨型数据包。这应有助于避免在分配接收数据包时出现缓冲区饥饿问题。

注意:对于基于 82599 的网络连接,如果您在虚拟功能 (VF) 中启用巨型帧,则必须首先在物理功能 (PF) 中启用巨型帧。VF MTU 设置不能大于 PF MTU。

NBASE-T 支持

ixgbe 驱动程序在某些设备上支持 NBASE-T。然而,NBASE-T 速度的通告默认被抑制,以适应无法处理通告的 NBASE-T 速度的损坏网络交换机。使用 ethtool 命令在支持 NBASE-T 的设备上启用 NBASE-T 速度的通告

ethtool -s eth? advertise 0x1800000001028

在具有 INTERFACES(5) 的 Linux 系统上,这可以作为 /etc/network/interfaces 中的 pre-up 命令指定,以便接口始终在 NBASE-T 支持下启动,例如:

iface eth? inet dhcp
     pre-up ethtool -s eth? advertise 0x1800000001028 || true

通用接收卸载,又称 GRO

该驱动程序支持 GRO 的内核内软件实现。GRO 已表明,通过将 Rx 流量合并成更大的数据块,在大量 Rx 负载下可以显著降低 CPU 利用率。GRO 是先前使用的 LRO 接口的演进。GRO 能够合并除 TCP 之外的其他协议。它也可以安全地用于对 LRO 有问题的配置,即桥接和 iSCSI。

数据中心桥接 (DCB)

注意:内核假定 TC0 可用,如果 TC0 不可用,将禁用设备上的优先级流控制 (PFC)。要解决此问题,请确保在您的交换机上设置 DCB 时启用 TC0。

DCB 是硬件中服务质量的一种配置实现。它使用 VLAN 优先级标签 (802.1p) 来过滤流量。这意味着流量可以被过滤到 8 个不同的优先级。它还支持优先级流控制 (802.1Qbb),可以在网络压力下限制或消除丢包数量。带宽可以分配给这些优先级中的每一个,这在硬件层面执行 (802.1Qaz)。

适配器固件分别按照 802.1AB 和 802.1Qaz 实现了 LLDP 和 DCBX 协议代理。基于固件的 DCBX 代理仅在 Willing 模式下运行,可以接受来自支持 DCBX 的对等体的设置。不支持通过 dcbtool/lldptool 进行 DCBX 参数的软件配置。

ixgbe 驱动程序实现了 DCB netlink 接口层,允许用户空间与驱动程序通信并查询端口的 DCB 配置。

ethtool

该驱动程序利用 ethtool 接口进行驱动程序配置和诊断,以及显示统计信息。此功能需要最新的 ethtool 版本。请在此处下载:https://linuxkernel.org.cn/pub/software/network/ethtool/

FCoE

ixgbe 驱动程序支持以太网光纤通道 (FCoE) 和数据中心桥接 (DCB)。此代码对常规驱动程序操作没有默认影响。配置 DCB 和 FCoE 超出了本 README 的范围。有关 FCoE 项目信息,请参阅 http://www.open-fcoe.org/;有关 DCB 信息,请联系 ixgbe-eedc@lists.sourceforge.net

MAC 和 VLAN 防欺骗功能

当恶意驱动程序尝试发送欺骗性数据包时,它会被硬件丢弃而不会被传输。

中断会发送到 PF 驱动程序,通知它欺骗尝试。当检测到欺骗性数据包时,PF 驱动程序会将以下消息发送到系统日志(通过 “dmesg” 命令显示)

ixgbe ethX: ixgbe_spoof_check: n spoofed packets detected

其中 “x” 是 PF 接口号;“n” 是欺骗性数据包的数量。注意:此功能可以针对特定的虚拟功能 (VF) 禁用

ip link set <pf dev> vf <vf id> spoofchk {off|on}

IPsec 卸载

ixgbe 驱动程序支持 IPsec 硬件卸载。在使用 “ip xfrm ...” 创建安全关联时,可以使用 ‘offload’ 标签选项将 IPsec SA 注册到驱动程序,以便在安全通信中获得更高的吞吐量。

ixgbe 的 VF 也支持卸载,但 VF 必须设置为 ‘trusted’,并且必须通过以下方式启用支持:

ethtool --set-priv-flags eth<x> vf-ipsec on
ip link set eth<x> vf <y> trust on

已知问题/故障排除

在 64 位 Microsoft Windows Server 2012/R2 客户操作系统中启用 SR-IOV

Linux KVM 虚拟机管理器/VMM 支持将 PCIe 设备直接分配给虚拟机。这包括传统的 PCIe 设备,以及基于 Intel 以太网控制器 XL710 的支持 SR-IOV 的设备。

支持

有关一般信息,请访问 Intel 支持网站:https://www.intel.com/support/

如果在支持的内核上使用支持的适配器发现了已发布源代码的问题,请将与该问题相关的具体信息发送电子邮件至 intel-wired-lan@lists.osuosl.org