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

升級家庭網路至 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.執行工具程式升級

ps: 2024/06
CX3 網卡請用
1. mft-4.20 版, ubuntu 中可支援版本為 22.04.4 但 kernel 要用 5.X 版, 勿升級至 6.5, mft-4.28 會找不到卡
2. mft 最新版可用 mft-4.22.1-406-LTS 可在 ubuntu 24.04 中執行

安裝好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. 拆機貨品質不定, 加上二岸收送件比較繁瑣, 售後服務要考慮, 手上有二片用沒多久就故障, 還好當初有多買

6 Comments

  1. 劉俊甫

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

發佈留言

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

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