升級家庭網路至 10Gb [二] – SFP+連接介面的10Gb 網路卡

在國內的露天市場尋找10Gb網路卡時, 發現有些產品很便宜, 二手貨大概千元左右, 比近三千元的 RJ45新卡便宜許多. 就在考慮是否要下單時, 忽然想到許多二手貨都是來自對岸的淘寶, 不如來去找找. 不找還好, 一找還真嚇一跳, 同樣的卡片只需要80-90人民幣, 加上運費也比在露天買划算, 恰好妹婿也即將返台, 因此買了幾張請他帶回, 當然也順便買了幾條3公尺長的 DAC線(一條約 30-35人民幣). (補充*2)

這些便宜的拆機10Gb網路卡, 皆是採用 SFP+連接器的 Mellanox ConnectX-2, 雖是七、八年前的產品, 卻也划算. 這幾片網路卡預計用在幾台伺服器並與交換器將一起放在小機房中, 3公尺的直連線應該夠用, 不用煩惱佈線的問題, 畢竟 SFP+的連接頭不方便在管線中穿來穿去.

Mellanox ConnectX-2 採用 PCIe x8介面, 使用時要留意主機板插槽是否支援 x8或x16, 若是x16的插槽卻僅有 x4的電路, 網路卡就無線運作, 還好伺服器並不需要強大的顯示卡, 把主要的x16插槽給網路卡使用即可. 目前測試的結果, Ubuntu 16.04/18.04 LTS版皆內建支援此網路卡, 不需要額外安裝驅動程式即可使用. 至於Windows 10也內建支援, 若使用官方的驅動程式, 可以多一些設定功能. (補充*1)

由於這張網路卡稍有年紀, 韌體已經不再更新, 其中它採用iPXE修改而來的FlexBoot更是缺少許多功能, 還好有工具程式可以更新

********
以下動作請務必仔細小心, 不小心可能使得網卡變廢物, 有任何問題, 請自己想辦法處理.
手邊有一片卡就因更換韌體失敗, 沒注意到就關機, 結果現在無法使用
似乎是Windows 10中安裝了 Mellanox MFT韌體更新工具,開機時毀了卡片的韌體, 目前已經二片出問題, 請盡量使用Linux環境更新, 沒有必要盡量別去更動
********

更新官方韌體
到手的幾張卡, 有一張版本較舊, 因此花時間將它升級
升級方式如下:
a.自官方網站下載最新版韌體與工具程式

MNPA19-XSR/XTR Firmware — http://www.mellanox.com/page/firmware_table_ConnectX2EN
Firmware 更新程式 MFT — http://www.mellanox.com/page/management_tools
請依照自己的環境選擇, 個人是使用 Ubuntu Linux, 因此選擇 DEB 封裝下載再安裝, 以下的命令也是以 Linux 環境為主, Windows的命令也差不多.

b.執行工具程式升級
安裝好MFT之後, 先執行 MST 服務, 不論查詢或是更新韌體, 此程式一定要先執行
sudo mst start
出現以下畫面表示成功
Starting MST (Mellanox Software Tools) driver set
Loading MST PCI module – Success
Loading MST PCI configuration module – Success

查詢網卡系統裝置名稱
sudo mst status
MST modules:
————
MST PCI module loaded
MST PCI configuration module loaded

MST devices:
————
/dev/mst/mt26448_pciconf0 – PCI configuration cycles access.
domain:bus:dev.fn=0000:01:00.0 addr.reg=88 data.reg=92
Chip revision is: B0
/dev/mst/mt26448_pci_cr0 – PCI direct access.
domain:bus:dev.fn=0000:01:00.0 bar=0xf7200000 size=0x100000
Chip revision is: B0

可以看到這片卡在系統中的資訊, 最重要就是 device 名稱, 即 /dev/mst/mt26448_ 開頭

查詢網路卡的相關資訊
sudo flint -d /dev/mst/mt26448_pci_cr0 query
Image type: FS2
FW Version: 2.9.1200
Rom Info: type=PXE version=3.3.400 proto=VPI
Device ID: 26448
Description: Port1 Port2
MACs: 0002c952xxxx 0002c952xxxx
VSD:
PSID: MT_0F60110010

可以看到Firmware 版本(FW Version), PXE ROM版本(Rom Info), 以及 PSID (MT_0F60110010表示Mellanox自有品牌的ConnectX-2)

如果要更新或回復 Firmware 執行以下命令 (fw-ConnectX2-rel-2_9_1200-MNPA19_A1-A3-FlexBoot-3.3.400.bin為 Firmware檔案, 也是官方最新的一版)
sudo flint -d /dev/mst/mt26448_pciconf0 -i fw-ConnectX2-rel-2_9_1200-MNPA19_A1-A3-FlexBoot-3.3.400.bin burn

更新後可再用
sudo flint -d /dev/mst/mt26448_pci_cr0 query查詢看看

 

用HP驅動程式中升級韌體支援Windows Server RDMA
先到以下網站下載程式
Hewlett Packard Enterprise 支援中心

建議在沒有安裝過 Mellanox 驅動程式的電腦中執行, 若是使用Windows 10內建驅動程式, 執行後會被取代但網路變無法使用. 若安裝過Mellanox官方驅動程式, 安裝程式則無法執行.
執行程式後先留在安裝畫面, 然後到暫存目錄(通常是 Users->帳號名->AppData->Local->Temp->{4XXXX….)中找到二個檔案
fw-ConnectX2-rel.mlx
MNPA19_A1-A2.ini

複製到別的地方後就可以結束安裝程式, 再將二個檔案儲存至有網卡的伺服器中

到伺服器上先用工具程式合併二個檔案成一個 firmware 檔案
sudo mlxburn -fw ./fw-ConnectX2-rel.mlx -conf ./MNPA19_A1-A2.ini -wrimage firmware_image.bin

再將它寫入網卡中
sudo flint -d /dev/mst/mt26448_pci_cr0 -i firmware_image.bin burn
Current FW version on flash: 2.9.1200
New FW version: 2.10.0720
Burning FS2 FW image without signatures - OK
Restoring signature - OK

成功後韌體便會更新至 2.10.0720
sudo flint -d /dev/mst/mt26448_pci_cr0 query
Image type: FS2
FW Version: 2.10.0720
FW Version(Running): 2.9.1200
FW Release Date: 12.3.2012
Rom Info: N/A (-E- Cannot get ROM version. Signature not found.)
Device ID: 26448
Description: Port1 Port2
MACs: 0002c952xxxx 0002c952xxxx
VSD:
PSID: MT_0F60110010

升級FlexBoot

最新版韌體中包含 3.3.400 的FlexBoot, 在官網上可以找到 3.4.000版本, 不過還是比較舊版的iPXE, 執行現有的網路開機選單會有問題, 做為伺服器用網路開機的機會不大, 不一定要更新, 但是如果想要用 PXE網路開機, 建議更新

下載最新版的iPXE
git clone git://git.ipxe.org/ipxe.git
b.編譯專用的 ROM版(Linux系統請安裝必要程式gcc/make/lzma等), 請先確認網路卡的VID:DID, ConnectX-2為 15b3:6750
查詢 VID/DID 可用
sudo lspci -nn
找到網卡相關資訊
01:00.0 Ethernet controller [0200]: Mellanox Technologies MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] [15b3:6750] (rev b0)
[15b3:6750]即是網卡的 VID(15b3)與DID(6750)

接下來便是編譯iPXE ROM
cd ipxe/src
make bin/15b36750.mrom

沒問題的話便會在 ipxe/src/bin 目錄中產生 ROM檔[15b36750.mrom]

c.使用工具程式燒錄, 請在 ROM檔的目錄中執行, 不然就要在命令中寫上完整路徑
sudo flint -d /dev/mst/mt26448_pci_cr0 --allow_rom_change brom ./15b36750.mrom

再查詢網卡資訊
sudo flint -d /dev/mst/mt26448_pci_cr0 query
Image type: FS2
FW Version: 2.10.0720
FW Release Date: 12.3.2012
Rom Info: N/A (-E- Cannot get ROM version. Signature not found.)
Device ID: 26448
Description: Port1 Port2
MACs: 0002c952XXXX 0002c952XXXX
VSD:
PSID: MT_0F60110010

由於是自己編譯的 PXE ROM, 因此看不到版本名稱與簽署資訊

重新開機並選擇網路開機看是否正常
開機時可以看到PXE ROM已經成 iPXE, 而不是 FastBoot

可看到Server提供的開機選單表示執行無誤

補充:

1. Ubuntu Server 18.04.1 安裝程式未內建此卡驅動程式, 安裝的過程會找不到網路卡, 比較簡單的方法是啟用主機板內建網卡安裝完成, 等系統安裝好再改網路設定

2. 拆機貨品質不定, 加上二岸收送件比較繁瑣, 售後服務要考慮, 手上有二片用沒多久就故障, 還好當初有多買

4 Comments

  1. 劉俊甫

    想請問單純兩台電腦想互聯
    是否買兩張網卡用光纖互連即可建置區域網路交換檔案
    而不須買swtich或交換機
    感謝您
    謝謝

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料