此产品的文档集力求使用非歧视性语言。在本文档集中,非歧视性语言是指不隐含针对年龄、残障、性别、种族身份、族群身份、性取向、社会经济地位和交叉性的歧视的语言。由于产品软件的用户界面中使用的硬编码语言、基于 RFP 文档使用的语言或引用的第三方产品使用的语言,文档中可能无法确保完全使用非歧视性语言。 深入了解思科如何使用包容性语言。
思科采用人工翻译与机器翻译相结合的方式将此文档翻译成不同语言,希望全球的用户都能通过各自的语言得到支持性的内容。 请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。 Cisco Systems, Inc. 对于翻译的准确性不承担任何责任,并建议您总是参考英文原始文档(已提供链接)。
本文档介绍用于排除Nexus SmartNIC(以前称为Exablaze ExaNIC)低延迟网络接口卡硬件和软件驱动程序安装故障的步骤。
思科建议您了解Nexus SmartNIC系列低延迟网络接口卡的硬件安装过程。思科还建议您基本了解Linux命令行界面。
本文档中的信息在特定实验室环境设备上创建。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。
本文档中介绍的程序适用于此硬件:
本文档的此部分介绍用于排除Nexus SmartNIC低延迟网络接口卡硬件安装问题的步骤。当主机操作系统(通常为Linux发行版或Windows服务器)不将Nexus SmartNIC识别为有效的PCI Express外围设备时,请遵循本文档的此部分。
Nexus SmartNIC网络接口卡必须正确安装在主板或提升板/子卡的PCI Express(PCIe)插槽中。有关如何安装PCIe卡的其他信息,请参阅制造商提供的主机手册。
有关Cisco UCS服务器上PCIe卡安装的更多信息,请参阅以下支持文档:
所有Nexus SmartNIC网络接口卡必须安装在兼容PCIe 3.0的插槽中。此外,必须至少使用带49针的PCIe x8插槽来连接所有Nexus SmartNIC网络接口卡。有关PCIe插槽是否符合这些规格的其他信息,请参阅制造商提供的主机手册。
有关Cisco UCS服务器上PCIe插槽规格的其他信息,请参阅下表和支持文档:
Cisco UCS服务器型号 | PCIe插槽兼容性 | 支持文档 |
---|---|---|
思科UCS C220 M5 | 所有PCIe插槽均兼容 | Cisco UCS C220 M5服务器安装和服务指南 |
思科UCS C240 M5 | 所有PCIe插槽均兼容 | Cisco UCS C240 M5服务器安装和服务指南 |
必须将Nexus SmartNIC正确插入连接到主用安装CPU(中央处理单元)的PCI Express插槽中。 如果主机配备了多个CPU插槽,其中只有一个插槽安装了CPU(也称为“单CPU配置”),则并非所有PCIe插槽都可能处于活动状态且工作正常。有关在单CPU配置中激活哪些PCIe插槽的其他信息,请参阅制造商提供的主机手册。
有关单CPU配置中Cisco UCS服务器上活动PCIe插槽的其他信息,请参阅下表和支持文档:
Cisco UCS服务器型号 | 活动PCIe插槽 | 支持文档 |
---|---|---|
思科UCS C220 M5 | PCIe提升板1,插槽1 | Cisco UCS C220 M5服务器安装和服务指南 |
思科UCS C240 M5 | PCIe提升板1,插槽1 PCIe提升板1,插槽2 PCIe提升板1B,插槽1 PCIe提升板1B,插槽2 PCIe提升板1B,插槽3 |
Cisco UCS C240 M5服务器安装和服务指南 |
每个Nexus SmartNIC网络接口卡在PCIe支架上都有许多LED(发光二极管)。这些LED通常从主机外部可见。网络接口卡上的每个SFP+和QSFP端口都有一个与其关联的较大LED。这些LED统称为端口LED。
在仅带SFP+端口的网络接口卡上,存在与PPS连接器关联的额外较小的红色LED(Nexus SmartNIC X10-GM除外,其中小的红色LED与大主时钟状态关联)。 此LED称为PPS LED。
注意:配备QSFP端口的Nexus SmartNIC网络接口卡没有PPS LED。
总之,请参阅下表:
Nexus SmartNIC型号 | 端口发光二极管 | PPS LED |
---|---|---|
X10 | Yes | Yes |
X10-HPT | Yes | Yes |
X10-GM | Yes | 是(GPS) |
X25 | Yes | Yes |
X40 | Yes | 无 |
X100 | Yes | 无 |
V5P | Yes | 无 |
V9P | Yes | 无 |
当Nexus SmartNIC网络接口卡与主机一起首次通电时,网络接口卡上的所有LED应会短暂闪烁。如果主机通电后,LED不会随时发光,这表示Nexus SmartNIC网络接口卡未正确从PCIe总线接收电源。通过以下步骤进一步排除此问题:
如果Nexus SmartNIC网络接口卡无法接通电源,而不管使用的PCIe插槽和主机如何,请联系Cisco TAC以获得其他故障排除。
如第4步中所述,每个Nexus SmartNIC网络接口卡可能有两种LED:
当网络接口卡的端口中未插入SFP+/QSFP模块时,当网络接口卡初始通电时,这些LED应在步骤4中描述的瞬时闪存后保持熄灭状态。
有三种常见情形,其中并非由于固件损坏或丢失而导致的情况:
如果端口和PPS LED在未插入SFP+/QSFP模块时在短暂闪存后仍亮起,并且主机操作系统不将网络接口卡识别为有效的PCIe外围设备(如通过lspci命令),则可能需要恢复Nexus SmartNIC网络接口卡的固件。按照Nexus SmartNIC固件恢复流程,将新版本的固件加载到Nexus SmartNIC上。如果这无法解决问题,请联系Cisco TAC以获取其他故障排除。
如果Nexus SmartNIC网络接口卡配备了PPS LED且PPS LED持续亮起,则卡上加载的现有固件已损坏,并且卡已进入固件恢复模式。您必须按照Nexus SmartNIC固件更新过程正常使用网络接口卡。如果这无法解决问题,请联系Cisco TAC以获取其他故障排除。
如果Nexus SmartNIC网络接口卡未配备PPS LED且端口LED在熄灭和琥珀色之间连续交替,则卡上加载的现有固件已损坏,并且卡已进入固件恢复模式。您必须按照Nexus SmartNIC固件更新过程正常使用网络接口卡。如果这无法解决问题,请联系Cisco TAC以获取其他故障排除。
您可以确认主机操作系统可以通过PCIe总线使用lspci命令成功检测Nexus SmartNIC网络接口卡。Exablaze的16位PCI供应商ID(VID)为0x1ce4,可用于探测Nexus SmartNIC PCIe设备以获取信息。以下示例演示了这一点:
[root@host ~]# lspci -d 1ce4:
01:00.0 Ethernet controller: Exablaze ExaNIC X10
通过将 — v verbose标志添加到lspci命令,可以查看有关PCIe卡的更多详细信息。以下示例演示了这一点:
[root@host ~]# lspci -d 1ce4: -v
01:00.0 Ethernet controller: Exablaze ExaNIC X10
Subsystem: Exablaze ExaNIC X10
Flags: bus master, fast devsel, latency 0, IRQ 30
Memory at 92000000 (32-bit, non-prefetchable) [size=8M]
Memory at 92800000 (64-bit, non-prefetchable) [size=4M]
Capabilities: [80] Power Management version 3
Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [c0] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Capabilities: [1b8] Latency Tolerance Reporting
Capabilities: [300] #19
Capabilities: [340] Vendor Specific Information: ID=0001 Rev=0 Len=02c <?>
Kernel modules: exanic
通过向lspci命令添加 — vv详细标志,可以查看更详细的信息。以下示例演示了这一点:
[root@host ~]# lspci -d 1ce4: -vv 01:00.0 Ethernet controller: Exablaze ExaNIC X10 Subsystem: Exablaze ExaNIC X10 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 Interrupt: pin A routed to IRQ 30 Region 0: Memory at 92000000 (32-bit, non-prefetchable) [size=8M] Region 2: Memory at 92800000 (64-bit, non-prefetchable) [size=4M] Capabilities: [80] Power Management version 3 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-) Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME- Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit+ Address: 00000000fee003b8 Data: 0000 Capabilities: [c0] Express (v2) Endpoint, MSI 00 DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset- SlotPowerLimit 75.000W DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported- RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ MaxPayload 128 bytes, MaxReadReq 512 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend- LnkCap: Port #0, Speed 8GT/s, Width x8, ASPM not supported, Exit Latency L0s unlimited, L1 unlimited ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+ LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+ ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 8GT/s, Width x8, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- DevCap2: Completion Timeout: Range B, TimeoutDis+, LTR+, OBFF Not Supported DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis- Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS- Compliance De-emphasis: -6dB LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete+, EqualizationPhase1+ EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest- Capabilities: [100 v2] Advanced Error Reporting UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol- CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr- CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+ AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn- Capabilities: [1b8 v1] Latency Tolerance Reporting Max snoop latency: 0ns Max no snoop latency: 0ns Capabilities: [300 v1] #19 Capabilities: [340 v1] Vendor Specific Information: ID=0001 Rev=0 Len=02c <?> Kernel modules: exanic
如果lspci 命令显示有关Nexus SmartNIC网络接口卡的信息,则表明主机操作系统已通过PCIe总线成功检测到Nexus SmartNIC网络接口卡。今后,您可以安装Nexus SmartNIC软件驱动程序并开始使用卡。
本文档的本节介绍用于排除Nexus SmartNIC低延迟网络接口卡软件驱动程序安装问题的步骤。当主机操作系统(通常为Linux发行版或Windows服务器)将Nexus SmartNIC识别为有效的PCI Express外围设备,但主机操作系统不将Nexus SmartNIC的端口识别为有效的网络接口时,请遵循本文档的本节。以下输出中显示了此示例:
[root@host ~]# ls /dev/exanic* ls: cannot access /dev/exanic*: No such file or directory
本文档的此部分假定您在尝试安装Nexus SmartNIC软件驱动程序时遇到错误,如Nexus SmartNIC软件安装指南所述。
此过程中的所有命令都从根Linux帐户执行。如果您没有使用根Linux帐户执行此过程,则可能需要使用sudo命令将帐户的安全权限提升为超级用户的安全权限。
如果主机操作系统的内核已为Nexus SmartNIC网络接口卡加载软件驱动程序,则带有-v verbose标志的lspci命令将显示使用中的驱动程序。您可以查询使用Exablaze的PCI供应商ID(0x1ce4)的设备,以显示特定于Nexus SmartNIC PCIe设备的信息。以下输出中显示了此示例:
[root@host ~]# lspci -d 1ce4: -v | egrep Kernel.driver Kernel driver in use: exanic
如果主机操作系统的内核未加载软件驱动程序,则lspci -d 1ce4的输出将省略此“正在使用的内核驱动程序”行:-v命令。
如《Nexus SmartNIC软件安装指南》中所述,Nexus SmartNIC软件驱动程序可通过软件包管理器(如apt、yum或直接通过rpm)进行安装。 如果已使用此方法安装ExaNIC软件驱动程序,您可以验证是否已正确安装所有文件,如下所示。
根据主机的CPU体系结构,libexanic.a库文件可以在/usr/lib/或在/usr/lib64/中。以下是来自x86(32位)CPU架构的示例:
[root@host ~]# ls /usr/lib/ | grep exanic libexanic.a
以下是来自x86_64(64位)CPU架构的示例:
[root@host ~]# ls /usr/lib64/ | grep exanic libexanic.a
确保Nexus SmartNIC库头文件存在于/usr/include/exanic/目录中。以下示例所示:
[root@host ~]# ls /usr/include/exanic/ -1 config.h const.h exanic.h fifo_if.h fifo_rx.h fifo_tx.h filter.h firewall.h hw_info.h ioctl.h pcie_if.h port.h register.h time.h util.h
确保Nexus SmartNIC二进制实用程序位于/usr/bin/目录中。以下示例所示:
[root@host ~]# ls /usr/bin/ -1 | grep exanic- exanic-capture exanic-clock-check exanic-clock-sync exanic-config exanic-fwupdate
最后,确保exanic.ko.xz模块文件存在于/lib/modules/'uname -r'/extra/目录中。请注意,inline'uname -r'命令会自动将当前内核版本插入目录。此命令被重音符号(')包围,而不是单引号。此处的示例中显示:
[root@host ~]# ls /lib/modules/\`uname -r\`/extra/ | grep exanic exanic.ko.xz
如Nexus SmartNIC软件安装指南中所述,可以从源代码构建和安装Nexus SmartNIC软件驱动程序。如果已使用此方法安装了Nexus SmartNIC软件驱动程序,您可以验证所有文件是否已正确安装,如此处的示例所示。
确保libexanic.a库文件在/usr/local/lib/目录中存在。此示例如下所示:
[root@host ~]# ls /usr/local/lib/ | grep exanic libexanic.a
确保Nexus SmartNIC库头文件存在于/usr/local/include/exanic/目录中。此示例如下所示:
[root@host ~]# ls /usr/local/include/exanic/ -1 config.h const.h exanic.h fifo_if.h fifo_rx.h fifo_tx.h filter.h firewall.h hw_info.h ioctl.h pcie_if.h port.h register.h time.h util.h
确保Nexus SmartNIC二进制实用程序位于/usr/local/bin/目录中。此示例如下所示:
[root@host ~]# ls /usr/local/bin -1 | grep exanic- exanic-capture exanic-clock-check exanic-clock-sync exanic-config exanic-fwupdate
最后,确保exanic.ko模块文件存在于/lib/modules/'uname -r'/extra/目录。请注意,inline'uname -r'命令会自动将当前内核版本插入目录。此命令被重音符号(')包围,而不是单引号。此处的示例中显示:
[root@host ~]# ls /lib/modules/`uname -r`/extra | grep exanic exanic.ko
Nexus SmartNIC软件驱动程序可以手动加载modprobe exanic命令。
如果加载了Nexus SmartNIC驱动程序,则Linux内核将将其识别为设备。您可以使用ls /dev/exanic*命令验证这一点,该命令将显示所有已识别的Nexus SmartNIC设备。此示例如下所示:
[root@host ~]# ls /dev/exanic* /dev/exanic0
如果Nexus SmartNIC驱动程序未成功加载,则modprobe exanic命令可能返回错误,也可能不返回错误。以下子部分介绍如何排除此命令返回的错误。
此错误消息可能是由以下子部分中描述的两个不同问题引起的。
主机操作系统无法找到为当前运行内核构建的模块。因此,主机操作系统无法使用modprobe exanic命令将模块加载到系统中。这可以通过depmod -a命令来解决,该命令将创建内核模块依赖项的映射。然后,内核模块可以使用modprobe exanic命令加载。
DKMS(动态内核模块支持)允许在安装新操作系统内核时自动重建内核模块。如果DKMS尚未构建Nexus SmartNIC内核模块,则Nexus SmartNIC内核模块可能是之前针对不同的操作系统内核版本编译的。
为了使DKMS能按预期工作,需要使用主机操作系统的软件包管理器安装内核级别和内核报头软件包。如下输出所示,有关如何确认是否使用yum list命令安装此包的示例:
[root@host ~]$ yum list kernel-devel Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirror.internode.on.net * epel: ucmirror.canterbury.ac.nz * extras: mirror.internode.on.net * updates: centos.mirror.serversaustralia.com.au Installed Packages kernel-devel.x86_64 3.10.0-1062.el7 @base kernel-devel.x86_64 3.10.0-1062.12.1.el7 @updates [root@host ~]$ yum list kernel-headers Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirror.internode.on.net * epel: ucmirror.canterbury.ac.nz * extras: mirror.internode.on.net * updates: centos.mirror.serversaustralia.com.au Installed Packages kernel-headers.x86_64 3.10.0-1062.12.1.el7 @updates
请参阅主机操作系统软件包管理器的手册,验证如何确定是否安装了特定软件包。
您可以使用dkms status命令确认DKMS是否成功添加、构建和安装了Nexus SmartNIC内核模块。此命令在工作、预期状态下的输出示例如下所示:
[root@host ~]# dkms status exanic, 2.4.1-1.el8, 3.10.0-957.27.2.el7.x86_64, x86_64: installed
如果此输出显示Nexus SmartNIC内核模块处于“已安装”以外的状态,则需要使用DKMS构建或安装Nexus SmartNIC内核模块。
如果已添加但未构建Nexus SmartNIC内核模块,请使用dkms build -m exanic -v {version}命令来构建Nexus SmartNIC内核模块。此处显示了此命令的示例,其软件版本为2.4.1-1.el7:
[root@host ~]$ dkms build -m exanic -v 2.4.1-1.el7 Kernel preparation unnecessary for this kernel. Skipping... Building module: cleaning build area... make -j16 KERNELRELEASE=3.10.0-1062.el7.x86_64 -C modules KDIR=/lib/modules/3.10.0-1062.el7.x86_64/build... cleaning build area... DKMS: build completed.
如果Nexus SmartNIC内核模块已构建但未安装,请使用dkms install -m exanic -v {version}命令安装Nexus SmartNIC内核模块。此处显示了此命令的示例,其软件版本为2.4.1-1.el7:
[root@host ~]$ dkms install -m exanic -v 2.4.1-1.el7 exanic.ko.xz: Running module version sanity check. - Original module - No original module exists within this kernel - Installation - Installing to /lib/modules/3.10.0-1062.el7.x86_64/extra/ exasock.ko.xz: Running module version sanity check. - Original module - No original module exists within this kernel - Installation - Installing to /lib/modules/3.10.0-1062.el7.x86_64/extra/ Adding any weak-modules depmod... DKMS: install completed.
在使用DKMS构建和安装Nexus SmartNIC内核模块后,Nexus SmartNIC内核模块可以使用modprobe exanic命令加载。
在配备UEFI(统一可扩展固件接口)固件且启用了安全引导协议的主机上,可以观察到此错误消息。安全引导可防止加载未使用可接受数字签名签名的内核驱动程序。因此,当尝试使用modprobe exanic命令加载Nexus SmartNIC内核驱动程序时,安全引导协议会阻止加载内核驱动程序。
要解决此问题,需要在主机的UEFI中禁用安全引导协议。有关如何在主机的UEFI中禁用安全引导协议的其他信息,请参阅制造商提供的主机手册。
不带参数的exanic-config 命令可用于在将Nexus SmartNIC内核驱动程序加载到操作系统后显示有关安装在主机上的Nexus SmartNIC网络接口卡的基本信息。以下是此输出的示例:
[root@host ~]$ exanic-config
Device exanic1:
Hardware type: ExaNIC X10
Temperature: 38.8 C VCCint: 0.95 V VCCaux: 1.83 V
Function: network interface
Firmware date: 20180409 (Mon Apr 9 23:27:40 2018)
PPS port: input, termination disabled
Port 0:
Interface: enp175s0
Port speed: 10000 Mbps
Port status: enabled, SFP present, signal detected, link active
MAC address: 64:3f:5f:xx:xx:xx
RX packets: 11778 ignored: 0 error: 0 dropped: 0
TX packets: 11836
Port 1:
Interface: enp175s0d1
Port speed: 10000 Mbps
Port status: enabled, SFP present, signal detected, link active
MAC address: 64:3f:5f:xx:xx:xx
RX packets: 11836 ignored: 0 error: 0 dropped: 0
TX packets: 11778
如果exanic-config命令/实用程序返回有关已安装的Nexus SmartNIC网络接口卡的相关信息,则Nexus SmartNIC硬件和软件驱动程序安装成功。