スキップしてメイン コンテンツに移動

Mellanox ConnectX-2 の ethernet mac address を変更する(2025/01現在)

引き続きレガシーなサーバをメンテしているのですが、2025/01 現在では既にサポートのない EOL な ConnectX-2 を Ethernet Mode にしてみる機会がありました。
まず、OS を用意する必要があるのですが、ConnectX-2 を対象としたファームウェア更新ツールは、調べた所、2025/01現在では Ubuntu 1604 LTS で実行できそうだというのはわかりました。そこで USB SSD を用意してここに Ubuntu 1604 LTS をインストールし、kernelを 4.4.0-21-generic にしてから、以下の手順でファームウェア更新ツールのインストールとMac Addressの変更はできました。 )
cd /etc/apt/sources.list.d

wget https://linux.mellanox.com/public/repo/mlnx_ofed/4.1-1.0.2.0/ubuntu16.04/mellanox_mlnx_ofed.list

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C5ED83E26224C050
sudo apt-get update

(ofed version 4.1-1.0.2.0が最終のサポートバージョンかどうかわかりませんが、EOLになる直前の日付で最も新しいバージョンがこれでした。このバージョンでファームウェアの更新やパッケージのビルドはほぼ全部できています。ただし、一部カーネルモジュール(eth_ipoib.ko)が ubuntu 向けでビルドできていない様子なので、2025/01現在 ubuntu 向けでアクセスできるものの内、最も新しいのは、3.4-2.0.0.0の様ですが、面倒なのでusb disk を二台用意して両方クローンさせたほうが話が早そうです。)
#参考:
cd /etc/apt/sources.list.d
wget https://linux.mellanox.com/public/repo/mlnx_ofed/3.4-2.0.0.0/ubuntu16.04/mellanox_mlnx_ofed.list
つづいて必要なパッケージを導入します。
# Mellanox Firmware Tool のインストール
sudo apt-get install kernel-mft-dkms mft

sudo mst start

ls /dev/mst
mt26428_pci_cr0  mt26428_pciconf0

# ファームウェアの確認
sudo flint -d /dev/mst/mt26428_pci_cr0 -qq q

Image type:          FS2
FW Version:          2.9.8350
FW Release Date:     9.10.2011
Rom Info:            type=PXE version=3.3.400 devid=26428 proto=VPI
Device ID:           26428
Description:         Node             Port1            Port2            Sys image
GUIDs:               0002c903000XXXXX 0002c903000XXXXX 0002c903000XXXXX 0002c903000XXXXX 
MACs:                                     000000000000     000000000001
VSD:                 
PSID:                XX_XXXXXXXXXX
まずここまでで現在の設定を確認できました。つづいて guidを参考にして、mac address を変更します。
sudo flint -d /dev/mst/mt26428_pci_cr0 -mac 02c9000YYYY sg

-W- GUIDs are already set, re-burning image with the new GUIDs ...
    You are about to change the Guids/Macs/Uids on the device:

                        New Values              Current Values
        Node  GUID:     0002c90300XXXXXX        0002c90300XXXXXX
        Port1 GUID:     0002c90300XXXXXX        0002c90300XXXXXX
        Port2 GUID:     0002c90300XXXXXX        0002c90300XXXXXX
        Sys.Image GUID: 0002c90300XXXXXX        0002c90300XXXXXX
        Port1 MAC:          0002c9XXXXXX            000000000000
        Port2 MAC:          0002c9XXXXXX            000000000001

 Do you want to continue ? (y/n) [n] : y
Burning FS2 FW image without signatures - OK
Restoring signature                     - OK
20250201修正:Mellanox の Vendor ID は 00:02:c9 なのでそれに合わせました。
ConnectX-2に触れる機会は2025/01現在では既にレアだとは思いますが、備忘録として挙げてみました。USB SSDに1604を入れておいたので、今後1604そのものが unreachable になったときも使える環境は残せた上、USBから起動できれば今後も保守できるので良しとしています。また、既にEOLになっているConnectX-3の保守環境も同様の方法で保存しておけば良さそうです。ちなみに、ConnectX-3の最終パッケージは 5.0-2.1.8.0 の様です。
2025/01/14追記:全てのパッケージをインストールする場合は、以下のようにします。(なお、繰り返しますが、kernel version 4.4.0-21-generic でないと dkms パッケージ がビルドできません。)
mkdir -p /usr/lib/pkgconfig
apt-get install mlnx-ofed-all
参考までに、 此の頃のflint では lidを使った デバイスへのアクセスができるようです。
apt-get install tcl
mst start
mst ib add

-I- Discovering the fabric - Running: ibdiagnet -skip all
-I- Added 7 in-band devices

ls /dev/mst
CA_MT26428_sv106_ibp2s0_lid-0x0002  CA_MT26428_sv111_HCA-1_lid-0x001D
CA_MT26428_sv107_ibp2s0_lid-0x0017  SW_MT51000_sx6012_lid-0x0007
CA_MT26428_sv108_ibp2s0_lid-0x0013  mt26428_pci_cr0
CA_MT26428_sv109_ibp2s0_lid-0x0001  mt26428_pciconf0
CA_MT26428_sv110_ibp2s0_lid-0x0011

flint -d lid-7 q

Image type:            FS2
FW Version:            9.3.8170
FW Release Date:       6.6.2016
Device ID:             51000
Description:           Node             Sys image
GUIDs:                 XXXXXXXXXXXXXXXX YYYYYYYYYYYYYYYY
Description:           Base             Switch
MACs:                      yyyyyyyyyyyy     zzzzzzzzzzzz
VSD:                   n/a
PSID:                  MT_1270110020

追記:参考までに、firmware 2.9.8350 についてですが、2025/01 現在、以下のようにすると OK でした。
mst start

# 現在のファームウェアの確認
flint -d /dev/mst/mt26428_pci_cr0 q

# ファームウェアの取得
wget http://www.mellanox.com/downloads/firmware/fw-ConnectX2-rel-2_9_8350.zip

mkdir fw-ConnectX2-rel-2_9_8350
cd fw-ConnectX2-rel-2_9_8350
unzip ../fw-ConnectX2-rel-2_9_8350.zip
cd ..

# 現在のファムウエアおよびiniファイルのバックアップとベリファイ
flint -d /dev/mst/mt26428_pci_cr0 dc MHQH29B-XSR.ini
flint -d /dev/mst/mt26428_pci_cr0 ri MHQH29B-XSR.bin
flint -i verify MHQH29B-XSR.binbw
# 書き込み
cd fw-ConnectX2-rel-2_9_8350
mlxburn -d /dev/mst/mt26428_pci_cr0 -fw fw-ConnectX2-rel.mlx -conf MHQH29B-XSR_A1.ini -allow_psid_change
追記2025/02/02: Debian 12 で inbox driver を使って速度を計測した所、ipoib + connected mode に設定して、ib_read_bw(Data exchange method: rdma)で 28gbps 程、iperf (iperf2) ではバラツキがあるのですが最大で 26gbps 程でした。pcie-2.0 の x8 の実効速度が 32gbpsなので、30gbps を超えるといいのですが、後もう少しといった感じです。
# ib_read_bw (Data exchange method: rdma_cm)
i60:~$ sudo ib_read_bw -a -z -F --report_gbits 

************************************
* Waiting for client to connect... *
************************************
---------------------------------------------------------------------------------------
                    RDMA_Read BW Test
 Dual-port       : OFF		Device         : ibp1s0
 Number of qps   : 1		Transport type : IB
 Connection type : RC		Using SRQ      : OFF
 PCIe relax order: ON
 ibv_wr* API     : OFF
 CQ Moderation   : 100
 Mtu             : 4096[B]
 Link type       : IB
 Outstand reads  : 16
 rdma_cm QPs	 : OFF
 Data ex. method : rdma_cm
---------------------------------------------------------------------------------------
 local address: LID 0x06 QPN 0x0221 PSN 0xd3ad26
 remote address: LID 0x04 QPN 0x021b PSN 0xf6d596
---------------------------------------------------------------------------------------
 #bytes     #iterations    BW peak[Gb/sec]    BW average[Gb/sec]   MsgRate[Mpps]
 8388608    1000             28.11              28.11  		   0.000419
---------------------------------------------------------------------------------------

# iperf(iperf 2)
i60:~$ sudo iperf -c 10.1.40.61
------------------------------------------------------------
Client connecting to 10.1.40.61, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[  1] local 10.1.40.60 port 47852 connected with 10.1.40.61 port 5001 (icwnd/mss/irtt=319/32734/4602)
[ ID] Interval       Transfer     Bandwidth
[  1] 0.0000-10.0106 sec  31.0 GBytes  26.6 Gbits/sec
今回は以上です。それでは。

コメント

このブログの人気の投稿

wsdd を使ってSamba サーバをネットワークに表示

Windows 10のアップデートで、セキュリティー対応のため、smbv1がデフォルトではインストールされなくなり、Samba serverがエクスプローラーのネットワークに表示されなくなってしまいました。そこで、いくつか方法を調べたのですが、linuxでwsdの実装がないか探したところ、 https://github.com/christgau/wsdd が、見つかりましたので、さっそくインストールしてみました。まだパッケージにはないようですが、インストール自身は簡単です。wsdd自体は以下のように取得し、linkを張っておきます。 cd /usr/local/bin/ sudo wget https://raw.githubusercontent.com/christgau/wsdd/master/src/wsdd.py sudo chmod 755 wsdd.py sudo ln -sf wsdd.py wsdd こちらのsambaサーバはDebianなので、/etc/systemd/system/wsdd.serviceは以下のようにしました。 [Unit] Description=Web Services Dynamic Discovery host daemon Requires=network-online.target After=network.target network-online.target multi-user.target [Service] Type=simple ExecStart=/usr/local/bin/wsdd -d MYDOMAIN [Install] WantedBy=multi-user.target wsdd -d MYDOMAINのところを、環境にあわせて書き換えてください。 次に、systemdに登録・起動テストを行います。 systemctl enable wsdd systemctl start wsdd 起動に成功すると、エクスプローラーのネットワークに表示されます。  なおこのwsddはpython3が必要です。一度試してみてください。SMBv1/CIFSを停止していても、大丈夫です。 cで書かれたほかのwsddの実装もあるようなので、いずれパッケージになるかも...

Windows デバイス暗号化 のサポートで "許可されていない dma 対応バス/デバイスが検出されました"の対処

Windows でセキュリティー関係を見ているのですが、とあるPCでmsinfo32で確認すると"デバイス暗号化のサポート"で"許可されていない dma 対応バス/デバイスが検出されました"と出ていました。このPCの場合、それ以外はOK(なにも表示されない)だったのですが、ネットでしらべるとMSのドキュメントではハードウェアベンダーに問い合わせるなどと敷居が高く具体的にどこが引っかかっているかわかりません。そこでほかに方法はないかとしらべやってみたところ、"前提条件をみたしています"まで持って行けたので、本稿を挙げた次第です。 具体的には、以下のようにします。 1-a. 許可するDMA対応バス・デバイスを指定するレジストリの所有権と書き込み設定をおこなう。 以下のレジストリキーの所有者を自分自身(管理ユーザ)のものにし、フルコントロール権を付与する。 HKLM\SYSTEM\CurrentControlSet\Control\DmaSecurity\AllowedBuses もしくは 1-b. MicrosoftよりPsExecをダウンロードし、System権限でRegeditを立ち上げ編集する。 Microsoftより、https://docs.microsoft.com/en-us/sysinternals/downloads/psexec にある こちら をダウンロードし、解凍する。解凍すると、x64の場合、PsExec64.exeがあるので、管理者権限で以下を実行し、システム権限でregeditを立ち上げることが出来るようになる。 cd Downloads\PSTools .\PsExec64.exe -sid C:\Windows\regedit.exe 2-a. パワーシェルスクリプトを実行し、PnPデバイスのうちインスタンスがPCIで始まるものを"AllowedBuses"に追加する。 以下のパワーシェルスクリプトを作成する。たとえばDocuments\allow-dma-bus-device.ps1として作成する。( こちらの記事のものを使用させていただきました: Thank you! ) $tmpfile = "$($env:T...

フレッツ光クロス:MAP-E ROUTER by Debian Box (iptables)

フレッツ光クロスがようやく開通したので、Debianにてrouterを構成し接続してみました。なお、プロバイダーを選ぶにあたっては、IPoE方式がそれぞれ異なるため検討したところ、IPoEでは、MAP-Eでもv6plusとocnバーチャルコネクトがあり、前者がポート数240なのに対し、後者は約4倍のポート数が使えるようなネットの情報をみて、OCNバーチャルコネクトを選択しました。(プロバイダーとしてはぷららです。なおDS-LiteはCE側でのNATではないので今回は見送りました。)そこで、OCN バーチャルコネクトをDebian(iptables)で実現するとどうなるかと思い、ネットの情報を頼りにしつつ、設定した次第です。 実際に試した結果、とりあえず通信できていますが、MAP-Eは本来マッピングルールをマップサーバから取得するはずなので、今回のやり方が正解とはいえませんし、仕様変更されると通信できなくなる可能性があります。あくまでも参考程度ですが、本稿をUPしてみました。 2023/03/16追記: こちら にゲームコンソールNAT越え(Nintendo Switch ナットタイプ A判定)対応版を投稿しました。 2023/03/28追記:※1の記述および3行無効化によりNAT越え(Nintendo Switch ナットタイプ B判定)できるようになりました。 構成は以下の通りです。 ルーターがDebianで回線がOCNバーチャルコネクトであること以外はなにも特別なところはない構成です。 さて、いきなり設定ですが、まず、割り当てられたプレフィックスを確認します。 確認は、 dhclient -6 -d -P enp2s0 とします。出力の中に 前略 RCV: | | X-- IAPREFIX 2400:4050:5c71:af00::/56 後略 このようにプレフィックスが表示されるので、その確認したプレフィックスを書き留めておきます。これを こちらで 入力します。すると、 CE: 2400:4050:5c71:af00:99:f171:c600:2f00 IPv4 アドレス: 153.241.113.198 ポート番号:(1776-1791 2800-2815 3824-3839) 4848-4863 5872-5887 6896-...