英特尔(R)以太网 10 千兆 PCI Express 适配器的 Linux 基本驱动程序¶
英特尔 10 千兆 Linux 驱动程序。版权所有(c) 1999-2018 英特尔公司。
目录¶
识别您的适配器
命令行参数
其他配置
已知问题
支持
识别您的适配器¶
该驱动程序与基于以下设备的设备兼容
英特尔(R)以太网控制器 82598
英特尔(R)以太网控制器 82599
英特尔(R)以太网控制器 X520
英特尔(R)以太网控制器 X540
英特尔(R)以太网控制器 x550
英特尔(R)以太网控制器 X552
英特尔(R)以太网控制器 X553
有关如何识别您的适配器以及最新的英特尔网络驱动程序的信息,请参阅英特尔支持网站: https://www.intel.com/support
带有可插拔光模块的 SFP+ 设备¶
基于 82599 的适配器¶
注意:- 如果您的基于 82599 的英特尔(R)网络适配器随附英特尔光模块,或者属于英特尔(R)以太网服务器适配器 X520-2,则它仅支持英特尔光模块和/或以下列出的直连电缆。- 当基于 82599 的 SFP+ 设备背靠背连接时,应通过 ethtool 将它们设置为相同的速度设置。如果混用速度设置,结果可能会有所不同。
供应商 |
类型 |
部件编号 |
---|---|---|
SR 模块 |
||
英特尔 |
双速率 1G/10G SFP+ SR(有耳) |
FTLX8571D3BCV-IT |
英特尔 |
双速率 1G/10G SFP+ SR(有耳) |
AFBR-703SDZ-IN2 |
英特尔 |
双速率 1G/10G SFP+ SR(有耳) |
AFBR-703SDDZ-IN1 |
LR 模块 |
||
英特尔 |
双速率 1G/10G SFP+ LR(有耳) |
FTLX1471D3BCV-IT |
英特尔 |
双速率 1G/10G SFP+ LR(有耳) |
AFCT-701SDZ-IN2 |
英特尔 |
双速率 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 的英特尔(R)网络适配器随附英特尔光模块,则它仅支持英特尔光模块。- 基于 82599 的 QSFP+ 适配器仅支持 4x10 Gbps 连接。不支持 1x40 Gbps 连接。QSFP+ 链路合作伙伴必须配置为 4x10 Gbps。- 基于 82599 的 QSFP+ 适配器不支持自动链路速度检测。必须将链路速度配置为 10 Gbps 或 1 Gbps 以匹配链路合作伙伴的速度功能。不正确的速度配置将导致无法链接。- 英特尔(R)以太网融合网络适配器 X520-Q1 仅支持以下列出的光模块和直连电缆。
供应商 |
类型 |
部件编号 |
---|---|---|
英特尔 |
双速率 1G/10G QSFP+ SRL(有耳) |
E10GQSFPSR |
基于 82599 的 QSFP+ 适配器支持所有符合 SFF-8436 v4.1 规范的无源和有源限制 QSFP+ 直连电缆。
基于 82598 的适配器¶
注意:- 支持可拆卸光模块的英特尔(r)以太网网络适配器仅支持其原始模块类型(例如,英特尔(R) 10 千兆 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 规范的无源直连电缆。不支持有源直连电缆。
上面提及的第三方光模块和电缆的列出仅用于突出第三方规范和潜在兼容性,并非英特尔对任何第三方产品的推荐、认可或赞助。英特尔不认可或推广任何第三方制造的产品,并且提供第三方参考仅是为了分享有关具有上述规范的某些光模块和电缆的信息。可能存在其他制造商或供应商,生产或供应具有类似或匹配描述的光模块和电缆。客户必须自行斟酌并勤勉地从其选择的任何第三方购买光模块和电缆。客户全权负责评估产品和/或设备的适用性,以及选择供应商来购买任何产品。上述提及的光模块和电缆不受英特尔的担保或支持。对于因销售和/或使用此类第三方产品或客户选择供应商而产生的任何责任,英特尔概不负责,并且英特尔不作任何明示或暗示的保证。
命令行参数¶
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
此参数调整系统日志中显示的调试消息级别。
其他功能和配置¶
流量控制¶
可以使用 ethtool 配置以太网流量控制 (IEEE 802.3x),以启用 ixgbe 的暂停帧接收和发送。启用发送时,当接收数据包缓冲区超过预定义阈值时,会生成暂停帧。启用接收时,当收到暂停帧时,发送单元将暂停指定的时间延迟。
注意:您必须具有支持流量控制的链路伙伴。
默认情况下启用流量控制。
使用 ethtool 更改流量控制设置。要启用或禁用 Rx 或 Tx 流量控制
ethtool -A eth? rx <on|off> tx <on|off>
注意:只有在禁用自动协商的情况下,此命令才会启用或禁用流量控制。如果启用自动协商,此命令将更改用于与链路伙伴进行自动协商的参数。
要启用或禁用自动协商
ethtool -s eth? autoneg <on|off>
注意:流量控制自动协商是链路自动协商的一部分。根据您的设备,您可能无法更改自动协商设置。
注意:对于进入 1 千兆模式的 82598 背板卡,流量控制默认行为会更改为关闭。在这些设备上,1 千兆模式下的流量控制可能会导致发送挂起。
英特尔(R) 以太网流导向器¶
英特尔以太网流导向器执行以下任务
根据其流将接收数据包定向到不同的队列。
可以严格控制平台中流的路由。
匹配流和 CPU 核心以实现流亲和性。
支持多个参数,以实现灵活的流分类和负载均衡(仅在 SFP 模式下)。
注意:英特尔以太网流导向器掩码的工作方式与子网掩码相反。在以下命令中
#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。
要启用或禁用英特尔以太网流导向器
# 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>
- 其中
<设备> - 要编程的以太网设备;<类型> - 可以是 ip4、tcp4、udp4 或 sctp4;<ip> - 要匹配的 IP 地址;<端口> - 要匹配的端口号;<队列> - 将流量定向到的队列(-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 驱动程序不支持匹配字段的子部分,因此不支持部分掩码字段。
要创建将流量定向到特定虚拟功能的过滤器,请使用“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 速度
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 代理仅在愿意模式下运行,并且可以接受来自支持 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 不在本自述文件的范围内。有关 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 Hypervisor/VMM 支持将 PCIe 设备直接分配给虚拟机。这包括传统的 PCIe 设备,以及基于 Intel Ethernet Controller XL710 的支持 SR-IOV 的设备。
支持¶
有关一般信息,请访问 Intel 支持网站:https://www.intel.com/support/
如果在受支持的内核上,使用受支持的适配器时,发布的源代码中发现了问题,请将与该问题相关的具体信息通过电子邮件发送至 intel-wired-lan@lists.osuosl.org。