本產品的文件集力求使用無偏見用語。針對本文件集的目的,無偏見係定義為未根據年齡、身心障礙、性別、種族身分、民族身分、性別傾向、社會經濟地位及交織性表示歧視的用語。由於本產品軟體使用者介面中硬式編碼的語言、根據 RFP 文件使用的語言,或引用第三方產品的語言,因此本文件中可能會出現例外狀況。深入瞭解思科如何使用包容性用語。
思科已使用電腦和人工技術翻譯本文件,讓全世界的使用者能夠以自己的語言理解支援內容。請注意,即使是最佳機器翻譯,也不如專業譯者翻譯的內容準確。Cisco Systems, Inc. 對這些翻譯的準確度概不負責,並建議一律查看原始英文文件(提供連結)。
本文檔介紹用於對Nexus SmartNIC(以前稱為ExaNIC)低延遲網路介面卡的硬體和軟體驅動程式安裝進行故障排除的步驟。
思科建議您瞭解Nexus SmartNIC系列低延遲網路介面卡的硬體安裝過程。思科還建議您對Linux命令列介面有基本的瞭解。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路正在作用,請確保您已瞭解任何指令可能造成的影響。
本文檔中涉及的步驟適用於以下硬體:
本文此節介紹用於診斷Nexus SmartNIC低延遲網絡卡硬體安裝問題的步驟。當主機作業系統(通常是Linux發行版或Windows Server)無法將Nexus SmartNIC識別為有效的PCI Express外圍裝置時,請按照文檔本節操作。
Nexus SmartNIC網路介面卡必須正確安裝在主機主機板或Riser/子卡上的PCI Express(PCIe)插槽中。有關如何安裝PCIe卡的其他資訊,請查閱製造商為您的主機提供的手冊。
有關在Cisco UCS伺服器上安裝PCIe卡的其他資訊,請參閱以下支援文檔:
所有Nexus SmartNIC網路介面卡必須安裝在PCIe 3.0相容的插槽中。此外,必須最少使用49針的PCIe x8插槽來連線所有Nexus SmartNIC網路介面卡。有關PCIe插槽是否滿足這些規範的更多資訊,請查閱製造商針對您的主機提供的手冊。
有關Cisco UCS伺服器上的PCIe插槽規範的其他資訊,請參閱下表和支援文檔:
Cisco UCS伺服器型號 | PCIe插槽相容性 | 支援檔案 |
---|---|---|
Cisco UCS C220 M5 | 所有PCIe插槽均相容 | Cisco UCS C220 M5伺服器安裝和服務指南 |
Cisco 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插槽 | 支援檔案 |
---|---|---|
Cisco UCS C220 M5 | PCIe Riser卡1,插槽1 | Cisco UCS C220 M5伺服器安裝和服務指南 |
Cisco UCS C240 M5 | PCIe Riser卡1,插槽1 PCIe Riser卡1,插槽2 PCIe Riser卡1B,插槽1 PCIe Riser卡1B,插槽2 PCIe Riser卡1B,插槽3 |
Cisco UCS C240 M5伺服器安裝和服務指南 |
每個Nexus SmartNIC網路介面卡都有多個位於PCIe支架上的LED(發光二極體)。這些LED通常從主機的外部可見。網路介面卡上的每個SFP+和QSFP連線埠都有一個與其相關的較大LED。這些LED統稱為端口LED。
在僅具有SFP+埠的網路介面卡上,存在與PPS聯結器關聯的另一個較小的紅色LED(Nexus SmartNIC X10-GM除外,其中小型紅色LED與Grand Master時鐘狀態關聯)。 此LED稱為PPS LED。
附註:配備QSFP埠的Nexus SmartNIC網路介面卡沒有PPS LED。
總而言之,請參閱下表:
Nexus SmartNIC型號 | 埠LED | PPS LED |
---|---|---|
X10 | 是 | 是 |
X10-HPT | 是 | 是 |
X10-GM | 是 | 是(GPS) |
X25 | 是 | 是 |
X40 | 是 | 否 |
X100 | 是 | 否 |
V5P | 是 | 否 |
V9P | 是 | 否 |
當Nexus SmartNIC網路介面卡與主機一起首次加電時,網路介面卡上的所有LED應立即閃爍。如果在主機通電後任何時間沒有LED發光,這表示Nexus SmartNIC網路介面卡不能正確從PCIe匯流排接收電源。使用以下步驟進一步解決此問題:
如果Nexus SmartNIC網路介面卡無法通電(無論使用PCIe插槽和主機),請聯絡Cisco TAC進行其他故障排除。
如步驟4中所述,每個Nexus SmartNIC網路介面卡可能具有兩種型別的LED:
當網路介面卡的連線埠中未插入SFP+/QSFP模組時,當網路介面卡初始通電時,這些LED應該在步驟4所述的短暫快閃記憶體後保持關閉。
在三種常見情況下,由於韌體損壞或丟失,情況並非如此:
如果在未插入SFP+/QSFP模組且主機作業系統未將網絡卡識別為有效的PCIe外圍裝置時(例如通過lspci命令),在瞬時快閃記憶體之後,埠和PPS LED仍然亮起,則可能需要恢復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進行其他疑難排解。
您可以使用lspci命令確認主機作業系統可以通過PCIe匯流排成功檢測Nexus SmartNIC網路介面卡。Exablaze的16位PCI供應商ID(VID)為0x1ce4,可用於探查Nexus SmartNIC PCIe裝置以獲取資訊。以下範例說明了這一點:
[root@host ~]# lspci -d 1ce4:
01:00.0 Ethernet controller: Exablaze ExaNIC X10
有關PCIe卡的更多詳細資訊,可通過將-v verbose標誌新增到lspci命令來檢視。以下範例說明了這一點:
[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
通過將 — vv詳細標誌新增到lspci命令,可以檢視更詳細的資訊。以下範例說明了這一點:
[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 Server)將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詳細標誌的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
最後,確保/lib/modules/'uname -r'/extra/目錄中存在exanic.ko.xz module文件。請注意,inline'uname -r'命令會自動將當前核心版本插入到目錄中。此命令周圍有重音符('),而不是單引號。如下面的示例所示:
[root@host ~]# ls /lib/modules/\`uname -r\`/extra/ | grep exanic exanic.ko.xz
如Nexus SmartNIC軟體安裝指南所述,Nexus SmartNIC軟體驅動程式可從原始碼構建和安裝。如果使用此方法安裝了Nexus SmartNIC軟體驅動程式,則可以驗證是否已正確安裝所有檔案,如以下示例所示。
確保/usr/local/lib/目錄中存在libexanic.a庫檔案。以下示例中顯示了該檔案:
[root@host ~]# ls /usr/local/lib/ | grep exanic libexanic.a
確保/usr/local/include/exanic/目錄中存在Nexus SmartNIC庫標頭檔案。以下示例中顯示了該檔案:
[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
最後,確保/lib/modules/'uname -r'/extra/目錄中存在exanic.ko模組文件。請注意,inline'uname -r'命令會自動將當前核心版本插入到目錄中。此命令周圍有重音符('),而不是單引號。如下面的示例所示:
[root@host ~]# ls /lib/modules/`uname -r`/extra | grep exanic exanic.ko
可以使用modprobe exanic命令手動載入Nexus SmartNIC軟體驅動程式。
如果已載入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核心模組後,可以使用modprobe exanic命令載入Nexus SmartNIC核心模組。
在配備啟用了安全引導協定的UEFI(統一可擴展韌體介面)韌體的主機上,可以觀察到此錯誤消息。安全啟動可防止載入未使用可接受數位簽章簽名的核心驅動程式。因此,當嘗試使用modprobe exanic命令載入Nexus SmartNIC核心驅動程式時,安全引導協定將阻止載入核心驅動程式。
要解決此問題,需要在主機的UEFI內禁用安全引導協定。有關如何在主機的UEFI內禁用安全引導協定的其他資訊,請參閱製造商提供的主機手冊。
將Nexus SmartNIC核心驅動程式載入到作業系統後,可以使用不帶引數的exanic-config命令顯示有關主機上安裝的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硬體和軟體驅動程式安裝成功。