<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Networking on Charlie Chiang's blog</title><link>https://charlie0129.github.io/blog/categories/networking/</link><description>Recent content in Networking on Charlie Chiang's blog</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Sat, 13 Dec 2025 16:00:00 +0800</lastBuildDate><atom:link href="https://charlie0129.github.io/blog/categories/networking/index.xml" rel="self" type="application/rss+xml"/><item><title>(Chinese Only) 华为 AirEngine 5773-21 踩坑记录</title><link>https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/</link><pubDate>Sat, 13 Dec 2025 16:00:00 +0800</pubDate><guid>https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/</guid><description>&lt;h2 id="背景">背景
&lt;/h2>&lt;p>最近老家重建，家里需要重新布置无线网络。考虑到自建别墅面积比较大，单纯使用单个无线路由器覆盖不够，因此多个 AP 肯定是需要的。家里在装修的时候就每个房间吊顶中有留超六类线缆，这种情况对 AP 来说是非常友好的，因此决定使用企业级无线接入点（AP）来组建无线网络。由于华为系列的 AP 在国内使用量较大，闲鱼上非常好捡公司下架下来的二手设备，因此考虑华为系列的 AP。这些企业级 AP 并不需要担心二手问题，他们的质量是消费级产品无法比拟的，稳定性也是非常强。&lt;/p>
&lt;p>目前是 2025 年 12 月，虽然在国内 Wi-Fi 7 （802.11be）的 6 GHz 频段还没批准无法使用（损失不少性能），但是上一下 Wi-Fi 7 追一下新也没什么问题。华为 Wi-Fi 7 AP 是 AirEngine xx7x 产品，我闲鱼花了 500 多，激情下单了一台 AirEngine 5773-21 （有一个 2.5 Gbe PoE 口）。先买一台测测，为之后全屋部署积累经验，如果好用，再给每个房间买一台（后续更新）。&lt;/p>
&lt;p>&lt;img src="https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/ap.jpg"
width="4032"
height="3024"
srcset="https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/ap_hu_b14f786812e45791.webp 480w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/ap_hu_3795bb5d434c54b0.jpg 480w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/ap_hu_c37647f0c15c6bfa.webp 1024w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/ap_hu_659d44c48271545c.jpg 1024w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/ap_hu_9696bbcf2a4c39f0.webp 1536w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/ap_hu_2718ba35d7e51169.jpg 1536w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/ap_hu_36fb61f00091e8d4.webp 2048w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/ap_hu_2e5881c9f9792c.jpg 2048w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/ap_hu_73dbca4a0db777e9.webp 2560w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/ap_hu_7b88ec1defe6fdad.jpg 2560w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/ap_hu_69d650df99db1704.webp 4032w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/ap_hu_4e74f57c21f23815.jpg 4032w"
loading="lazy"
alt="AirEngine 5773-21"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="320px"
>
&lt;/p>
&lt;p>回来一查，这设备保修到 2028 年 3 月，现在才 2025 年 12 月，还有快 3 年的保修期，很新啊。&lt;/p>
&lt;p>&lt;img src="https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/coverage.png"
width="2350"
height="290"
srcset="https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/coverage_hu_16571f7808de217e.webp 480w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/coverage_hu_6d25512b31bbbe5a.jpg 480w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/coverage_hu_5871f286a08dda3c.webp 1024w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/coverage_hu_9eae67b12ffa303c.jpg 1024w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/coverage_hu_c4777a0cc3d924e5.webp 1536w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/coverage_hu_c17a9e9a7484cb5d.jpg 1536w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/coverage_hu_8da3523ba2246189.webp 2048w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/coverage_hu_281f5bc066139400.jpg 2048w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/coverage_hu_676bcd69687ad1a0.webp 2350w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/coverage_hu_79438dc774df4d75.jpg 2350w"
loading="lazy"
alt="AirEngine 5773-21 保修"
class="gallery-image"
data-flex-grow="810"
data-flex-basis="1944px"
>
&lt;/p>
&lt;p>我目前的打算是不购买单独的 AC 控制器（AC 用于统一管理其他 AP ），因为我没有几十上百个 AP 需要管理。对于只需管理十几台 AP 来说，AC 控制器的成本和复杂度都不划算。因此打算使用华为 AP 自带的 Leader AP 模式组网（按道理华为的 AirEngine 系列大部分都是支持的，但是对于我买的 AirEngine 5773-21 来说，这里是个大坑，后面会讲）。这种模式下，Leader AP 可以担任 AC 的角色，统一管理其他 FIT AP ，每个 Leader AP 具体能管理几台 FIT AP 可以上华为 Info-Finder 上查询（基本上都大于 16 台）。&lt;/p>
&lt;p>（组网方案后续更新，包括多 AP 的组网方案， VLAN 配置 IOT 设备隔离等）&lt;/p>
&lt;h2 id="首次启动">首次启动
&lt;/h2>&lt;p>插上网线（注意，如果使用 PoE 的话需要满足 802.3at ，否则可能降速，或者使用 DC 供电）&lt;/p>
&lt;p>&lt;img src="https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/ap-plugged-in.jpg"
width="4032"
height="3024"
srcset="https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/ap-plugged-in_hu_967afc15f6fb39a0.webp 480w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/ap-plugged-in_hu_7f537c013a7c9346.jpg 480w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/ap-plugged-in_hu_aa971d6c1a58150a.webp 1024w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/ap-plugged-in_hu_639b1745ec70b782.jpg 1024w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/ap-plugged-in_hu_ec8d627d850ac998.webp 1536w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/ap-plugged-in_hu_9fdaa233479e885a.jpg 1536w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/ap-plugged-in_hu_79c5eac46e7cea7c.webp 2048w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/ap-plugged-in_hu_f326ec59d3d0b998.jpg 2048w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/ap-plugged-in_hu_c60915b602be3238.webp 2560w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/ap-plugged-in_hu_bda31642a42e317b.jpg 2560w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/ap-plugged-in_hu_83f57340592ca1d2.webp 4032w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/ap-plugged-in_hu_66b4792641cfb88f.jpg 4032w"
loading="lazy"
alt="AP 插电"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="320px"
>
&lt;/p>
&lt;p>注意，开机过程中状态灯常亮，等到状态灯快速闪烁说明开机完成等待配置。&lt;/p>
&lt;p>现在华为的 AP 默认会用 DHCP 获取 IP 地址，因此只需根据 AP 的 MAC 地址（在 AP 背后会写）在 DHCP 服务器上找到对应的 IP 地址，就可以知道 AP 目前的 IP 地址了&lt;/p>
&lt;p>&lt;img src="https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/dhcp.png"
width="1890"
height="166"
srcset="https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/dhcp_hu_d8241ea7fd04c8dd.webp 480w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/dhcp_hu_997cdf3557a21165.jpg 480w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/dhcp_hu_e2cef2b70d0ac5b1.webp 1024w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/dhcp_hu_1f18538921ecada1.jpg 1024w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/dhcp_hu_429b6c90817b4f2f.webp 1536w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/dhcp_hu_de3dab1d0515d26f.jpg 1536w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/dhcp_hu_f1a8027132842368.webp 1890w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/dhcp_hu_4550bfe3cc46d5c2.jpg 1890w"
loading="lazy"
alt="DHCP"
class="gallery-image"
data-flex-grow="1138"
data-flex-basis="2732px"
>
&lt;/p>
&lt;p>然后浏览器打开该 IP 即可登录 Web 管理界面（并不）。&lt;/p>
&lt;h2 id="踩坑">踩坑
&lt;/h2>&lt;p>然后浏览器打开该 IP 即可登录 Web 管理界面（吗？？？？），我发现并不能。&lt;/p>
&lt;p>按道理华为 Wi-Fi 6 系列（比如 AirEngine 5761 ）都是可以直接登录 Web 管理页面的，Wi-Fi 7 更新不应该不行，而且官方 AirEngine 5773-21 的&lt;a class="link" href="https://e.huawei.com/cn/material/enterprise/5d5164cf207149b0b210988b1bb7996d" target="_blank" rel="noopener"
>彩页&lt;/a>中也说可以用做 FAT AP / Leader AP ，怎么回事？&lt;/p>
&lt;p>我后面用 SSH 登录设备（后面会说怎么登录），没有说当前是 FIT 还是 FAT 模式（老的 AP 会在 SSH 登录的时候就提示）。而且这个命令行看的我一脸懵，老的 Wi-Fi 6 AP 都是直接 &lt;code>system-view&lt;/code> 就能配置，然后命令也是传统的那一套。这新的 AP 一上来就是个 &lt;code>MDCLI&amp;gt;&lt;/code> 提示符（一看就是新搞的东西，里面的命令也完全变了，我根本没时间去学习这些新命令。（后面才知道，必须升级系统后，用 &lt;code>switch cli&lt;/code> 从 MC-CLI 切换到传统 CLI 模式，才能用老的命令行方式配置，但是建议还是用新的 MD-CLI ，因为传统 CLI 里面基本没啥功能了）&lt;/p>
&lt;p>看了一圈文档，说可以输入 &lt;code>edit-config&lt;/code> 修改配置，然后发现提示没有权限。WTF？我管理员还能没权限？后面才知道，原来没有权限其实代表当前 AP 在 FIT 模式下（这报错给用户带来多少困扰），必须切换到 FAT 模式才有权限修改配置。那么问题来了，我都没权限做任何配置，我怎么切换到 FAT 模式（况且我也没找到切换 FAT 模式的命令）？&lt;/p>
&lt;p>后面折腾一圈才发现（各种根据文档中的蛛丝马迹去猜），是我当前固件版本太老了（&lt;code>V600R023C10&lt;/code>），华为并没有在早期固件中实现 FAT AP / Leader AP 功能（设备都发布了，功能还没做好是吧），必须升级到 &lt;code>V600R024C10&lt;/code> 及以上版本才有该功能，写文章时最新版本 是 &lt;code>V600R025C00&lt;/code> 。OK，问题找到，接下来就是升级固件了。&lt;/p>
&lt;p>但是华为是出了名的不给资料，比如我想下载新版本固件，就算我注册了账号、也绑定了 AP 的序列号、也给了华为公司名称 + 设备序列号
也审核 &lt;strong>通过&lt;/strong> 了 AirEngine 5773-21 的资料和软件下载权限，但是你还是下不到 AirEngine 5773-21 的固件，华为官网上根本 &lt;strong>没有&lt;/strong> 提供任何一个版本固件的下载链接（截至 2025 年 12 月），你只能下到补丁（这还是从其他 AP 找的补丁，刚好能用到 AirEngine 5773-21 上）。&lt;/p>
&lt;p>最后我只能在闲鱼花钱上找有权限的人代下的固件，版本号 &lt;code>V600R024C10&lt;/code> ，也就是第一版支持 FAT AP / Leader AP 功能的固件。本来我想下载当前最新的 &lt;code>V600R025C00&lt;/code> ，但是我没找到人能下载这个版本，遂放弃， &lt;code>V600R024C10&lt;/code> 也不是不能用。&lt;/p>
&lt;h2 id="首次设备设置">首次设备设置
&lt;/h2>&lt;blockquote>
&lt;p>可以按住设备旁的 Default 按钮数十秒来重置设备。观察指示灯，变成常亮表示成功。重置成功后会重启，开机过程中状态灯常亮，等到状态灯快速闪烁说明开机完成等待配置。&lt;/p>&lt;/blockquote>
&lt;p>你需要 SSH 上去 &lt;code>ssh admin@&amp;lt;AP_IP_ADDRESS&amp;gt;&lt;/code> ，默认密码是 &lt;code>admin@huawei.com&lt;/code> 。首次登录会提示你修改密码，按照提示修改后会登出，下次使用新密码再登录即可。&lt;/p>
&lt;p>查看当前版本&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">[admin@HUAWEI]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">MDCLI&amp;gt; display system/system-info/software-name
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;#34;AirEngineX773_V600R023C10SPC200.cc&amp;#34; # 当前版本
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>我目前的版本是 &lt;code>V600R023C10SPC200&lt;/code> ，也就是 &lt;code>V600R023C10&lt;/code> （后面的 &lt;code>SPC200&lt;/code> 是补丁），需要升级到 &lt;code>V600R024C10&lt;/code> 及以上版本才有 FAT AP / Leader AP 功能。&lt;/p>
&lt;h2 id="固件升级">固件升级
&lt;/h2>&lt;p>首先需要找台机器开启 FTP 服务端，设置好用户名密码，打开读写权限（macOS App Store 中有个 QuickFTP 还是很好用的），到时候 AP 需要通过 FTP 上传和下载固件。&lt;/p>
&lt;p>然后你需要有一个 &lt;code>V600R024C10&lt;/code> 及以上版本的固件文件，放到 FTP 的根目录下面。&lt;/p>
&lt;p>需要使用的固件名称通常长这样，两者都行：&lt;/p>
&lt;ul>
&lt;li>&lt;code>AirEngineX773_V600R024C10.cc&lt;/code> （不带补丁的基础固件）&lt;/li>
&lt;li>&lt;code>AirEngineX773_V600R024C10SPC100.cc&lt;/code> （带补丁的完整固件）&lt;/li>
&lt;/ul>
&lt;p>其中：&lt;/p>
&lt;ul>
&lt;li>&lt;code>AirEngineX773&lt;/code>：设备型号，比如 AirEngine 5773&lt;/li>
&lt;li>&lt;code>V600R024C10&lt;/code>：版本号，R 或者 C 之后的数字越大，版本越新。&lt;/li>
&lt;li>&lt;code>SPC100&lt;/code>：补丁号，可选。注意，不要下成 &lt;code>SPH&lt;/code> 的热补丁了，补丁通常长这样 &lt;code>AirEngineX773_V600R024C10SPH150.pat&lt;/code>（有 &lt;code>SPH&lt;/code> 字样，且结尾是 &lt;code>.pat&lt;/code> ），需要完整的固件（&lt;code>.cc&lt;/code> 结尾）。&lt;/li>
&lt;/ul>
&lt;h3 id="备份当前固件">备份当前固件
&lt;/h3>&lt;p>SSH 登录设备操作&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;span class="lnt">46
&lt;/span>&lt;span class="lnt">47
&lt;/span>&lt;span class="lnt">48
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">[admin@HUAWEI]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">MDCLI&amp;gt; ftpc-transfer-file
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[(x)admin@HUAWEI]/ftpc-transfer-file
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">MDCLI&amp;gt; command-type put
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[*(x)admin@HUAWEI]/ftpc-transfer-file
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">MDCLI&amp;gt; local-file-name AirEngineX773_V600R023C10SPC200.cc # 文件名与当前 AP 版本一致，查询：display system/system-info/software-name
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[*(x)admin@HUAWEI]/ftpc-transfer-file
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">MDCLI&amp;gt; remote-file-name AirEngineX773_V600R023C10SPC200.cc # 与上面保持一致即可
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[*(x)admin@HUAWEI]/ftpc-transfer-file
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">MDCLI&amp;gt; server-ipv4-address 192.168.213.54 # FTP 服务器 IP 地址
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[*(x)admin@HUAWEI]/ftpc-transfer-file
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">MDCLI&amp;gt; server-port 2121 # FTP 服务器端口
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[*(x)admin@HUAWEI]/ftpc-transfer-file
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">MDCLI&amp;gt; user-name xxxx # FTP 用户名
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[*(x)admin@HUAWEI]/ftpc-transfer-file
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">MDCLI&amp;gt; password # FTP 密码
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Enter password:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Confirm password:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[*(x)admin@HUAWEI]/ftpc-transfer-file
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">MDCLI&amp;gt; emit # 提交上传任务
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">{
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;huawei-ftpc:transfer-id&amp;#34;: 3 # 可以用这个 ID 查看任务状态
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[admin@HUAWEI]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">MDCLI&amp;gt; display ftpc/transfer-tasks # 检查是否备份成功
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">{
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;transfer-task&amp;#34;: [
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;transfer-id&amp;#34;: 3,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;command-type&amp;#34;: &amp;#34;put&amp;#34;,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;server-address&amp;#34;: &amp;#34;192.168.213.54&amp;#34;,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;server-port&amp;#34;: 2121,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;local-file-name&amp;#34;: &amp;#34;AirEngineX773_V600R023C10SPC200.cc&amp;#34;,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;remote-file-name&amp;#34;: &amp;#34;AirEngineX773_V600R023C10SPC200.cc&amp;#34;,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;status&amp;#34;: &amp;#34;succeeded&amp;#34;, # 表示成功
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;percentage&amp;#34;: 100
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>你应该可以在 FTP 服务器上看到备份下来的固件文件了。&lt;/p>
&lt;h3 id="下载新固件">下载新固件
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;span class="lnt">46
&lt;/span>&lt;span class="lnt">47
&lt;/span>&lt;span class="lnt">48
&lt;/span>&lt;span class="lnt">49
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="n">admin&lt;/span>&lt;span class="err">@&lt;/span>&lt;span class="n">HUAWEI&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">MDCLI&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">download&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">upgrade&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">package&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="n">admin&lt;/span>&lt;span class="err">@&lt;/span>&lt;span class="n">HUAWEI&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">download&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">upgrade&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">package&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">MDCLI&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">base&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">software&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">directory&lt;/span> &lt;span class="n">AirEngineX773_V600R024C10SPC100&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">cc&lt;/span> &lt;span class="c1"># 新固件文件名，注意要和 FTP 服务器上一致&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="n">admin&lt;/span>&lt;span class="err">@&lt;/span>&lt;span class="n">HUAWEI&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">download&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">upgrade&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">package&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">MDCLI&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">server&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">ip&lt;/span> &lt;span class="mf">192.168&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mf">213.54&lt;/span> &lt;span class="c1"># FTP 服务器 IP 地址&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="n">admin&lt;/span>&lt;span class="err">@&lt;/span>&lt;span class="n">HUAWEI&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">download&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">upgrade&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">package&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">MDCLI&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">server&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">port&lt;/span> &lt;span class="mi">2121&lt;/span> &lt;span class="c1"># FTP 服务器端口&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="n">admin&lt;/span>&lt;span class="err">@&lt;/span>&lt;span class="n">HUAWEI&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">download&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">upgrade&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">package&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">MDCLI&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">transfer&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">protocol&lt;/span> &lt;span class="n">ftp&lt;/span> &lt;span class="c1"># 传输协议&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="n">admin&lt;/span>&lt;span class="err">@&lt;/span>&lt;span class="n">HUAWEI&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">download&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">upgrade&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">package&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">MDCLI&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">user&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">name&lt;/span> &lt;span class="n">xxxx&lt;/span> &lt;span class="c1"># FTP 用户名&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="n">admin&lt;/span>&lt;span class="err">@&lt;/span>&lt;span class="n">HUAWEI&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">download&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">upgrade&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">package&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">MDCLI&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">password&lt;/span> &lt;span class="c1"># FTP 密码&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Enter&lt;/span> &lt;span class="n">password&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Confirm&lt;/span> &lt;span class="n">password&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="n">admin&lt;/span>&lt;span class="err">@&lt;/span>&lt;span class="n">HUAWEI&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">download&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">upgrade&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">package&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">MDCLI&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">emit&lt;/span> &lt;span class="c1"># 提交下载任务&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="n">admin&lt;/span>&lt;span class="err">@&lt;/span>&lt;span class="n">HUAWEI&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">download&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">upgrade&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">package&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">MDCLI&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">display&lt;/span> &lt;span class="n">software&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">download&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">result&lt;/span>&lt;span class="o">/&lt;/span> &lt;span class="c1"># 查看下载状态&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;file-name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;AirEngineX773_V600R024C10SPC100.cc&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;status&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;succeeded&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="c1"># 表示下载成功&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;percentage&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">100&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="n">admin&lt;/span>&lt;span class="err">@&lt;/span>&lt;span class="n">HUAWEI&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">MDCLI&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">display&lt;/span> &lt;span class="n">file&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">operation&lt;/span>&lt;span class="o">/&lt;/span> &lt;span class="c1"># 查看文件列表，确认新固件在设备上&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;dir&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">...&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;file-name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;AirEngineX773_V600R024C10SPC100.cc&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="c1"># 新固件文件&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;dir-name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;backup:/&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;attribute&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;-rw-&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;modify-time&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;2024-11-12T12:05:04Z&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;size&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">52394852&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">...&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="设置新固件为启动固件">设置新固件为启动固件
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">[admin@HUAWEI]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">MDCLI&amp;gt; startup-by-mode name AirEngineX773_V600R024C10SPC100.cc # 设置启动固件，注意文件名要和上面一致
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[admin@HUAWEI]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">MDCLI&amp;gt; display cfg/startup-infos
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">{
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;startup-info&amp;#34;: [
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;position&amp;#34;: &amp;#34;0&amp;#34;,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;configed-system-software&amp;#34;: &amp;#34;AirEngineX773_V600R023C10SPC200.cc&amp;#34;,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;current-system-software&amp;#34;: &amp;#34;AirEngineX773_V600R023C10SPC200.cc&amp;#34;,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;next-system-software&amp;#34;: &amp;#34;AirEngineX773_V600R024C10SPC100.cc&amp;#34;, # 确认新固件已设置为下次启动固件
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;current-cfg-file&amp;#34;: &amp;#34;&amp;#34;,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;next-cfg-file&amp;#34;: &amp;#34;&amp;#34;,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;current-patch-file&amp;#34;: &amp;#34;NULL&amp;#34;,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;next-patch-file&amp;#34;: &amp;#34;NULL&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>注意，要是你之前安装了 patch ，可能会导致新系统安装不上，例如&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">[admin@HUAWEI]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">MDCLI&amp;gt; display cfg/startup-infos
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">{
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;startup-info&amp;#34;: [
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;position&amp;#34;: &amp;#34;0&amp;#34;,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;configed-system-software&amp;#34;: &amp;#34;AirEngineX773_V600R023C10SPC200.cc&amp;#34;, # 是的，华为拼错单词了
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;current-system-software&amp;#34;: &amp;#34;AirEngineX773_V600R023C10SPC200.cc&amp;#34;,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;next-system-software&amp;#34;: &amp;#34;AirEngineX773_V600R023C10SPC200.cc&amp;#34;, # 发现还是老的版本
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;current-cfg-file&amp;#34;: &amp;#34;&amp;#34;,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;next-cfg-file&amp;#34;: &amp;#34;&amp;#34;,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;current-patch-file&amp;#34;: &amp;#34;AirEngineX773_V600R023SPH151.pat&amp;#34;, # 已安装 patch
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;next-patch-file&amp;#34;: &amp;#34;AirEngineX773_V600R023SPH151.pat&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>这时候你需要把 patch 给清掉：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">[admin@HUAWEI]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">MDCLI&amp;gt; delete-patch delete-type all
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">......
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>然后再设置启动固件即可。&lt;/p>
&lt;h3 id="重启设备">重启设备
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">[admin@HUAWEI]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">MDCLI&amp;gt; reboot
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Warning: This operation will reboot the device.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Are you sure you want to continue? [Y(yes)/N(no)]:y
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>等设备起来，浏览器访问设备 IP 地址，应该就可以看到 Web 管理界面了。&lt;/p>
&lt;p>&lt;img src="https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/fit-webui.png"
width="3054"
height="1962"
srcset="https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/fit-webui_hu_2dc4cf129c52d0de.webp 480w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/fit-webui_hu_3ffb09a143dfe7c.jpg 480w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/fit-webui_hu_ac969082e605071e.webp 1024w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/fit-webui_hu_5d4367033d6aa459.jpg 1024w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/fit-webui_hu_79b592d4c6005975.webp 1536w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/fit-webui_hu_d1a2678628fd1de8.jpg 1536w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/fit-webui_hu_a759fa727b2062c5.webp 2048w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/fit-webui_hu_d504819ff47877e5.jpg 2048w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/fit-webui_hu_b7ee2d3e163c8fa8.webp 2560w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/fit-webui_hu_5d35b15e278adda8.jpg 2560w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/fit-webui_hu_17ead509063531c7.webp 3054w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/fit-webui_hu_bea6f46969aebeeb.jpg 3054w"
loading="lazy"
alt="FIT 模式 Web 管理界面"
class="gallery-image"
data-flex-grow="155"
data-flex-basis="373px"
>
&lt;/p>
&lt;p>选择右上角 FIT 按钮，改成 FAT 模式即可使用 Leader AP 功能，重启后即可变成 Leader AP ，可以管理其他 FIT AP 了。&lt;/p>
&lt;p>&lt;img src="https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/fat-webui.png"
width="3682"
height="2442"
srcset="https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/fat-webui_hu_6fc4b20daee84ad3.webp 480w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/fat-webui_hu_1d6c9be7c7495cd0.jpg 480w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/fat-webui_hu_728abe395b9542b8.webp 1024w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/fat-webui_hu_50aceb1373a9216b.jpg 1024w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/fat-webui_hu_57c461a47cff8acd.webp 1536w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/fat-webui_hu_92eee0f76b4d2a69.jpg 1536w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/fat-webui_hu_9a13584e537e0ec0.webp 2048w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/fat-webui_hu_a96509553461e7bd.jpg 2048w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/fat-webui_hu_5c505c5c3fd4443.webp 2560w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/fat-webui_hu_9ae3db4bee0b50c6.jpg 2560w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/fat-webui_hu_644252fa3fbe707e.webp 3682w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/fat-webui_hu_aeb84a12dfa0776c.jpg 3682w"
loading="lazy"
alt="FAT 模式 Web 管理界面"
class="gallery-image"
data-flex-grow="150"
data-flex-basis="361px"
>
&lt;/p>
&lt;h2 id="安装补丁patch">安装补丁（Patch）
&lt;/h2>&lt;p>补丁是在基础版本上修复 bug 或者增加小功能的。补丁一般靠自己注册完设备就能在官网下到，下载补丁的时候，注意产品型号不需要选择 AirEngine 5773-21 ，因为太新了，华为官网上甚至没有这个型号。直接选择全部，只要版本对的上即可，比如我当前基础版本是 &lt;code>V600R024C10&lt;/code> ，那么补丁就需要选择 &lt;code>V600R024C10SPH181&lt;/code> 这种补丁，表示在 &lt;code>V600R024C10&lt;/code> 基础版本上打的热补丁 &lt;code>SPH181&lt;/code> ，数字越大表示补丁越新。补丁文件名通常长这样 &lt;code>AirEngineX773_V600R024C10SPH181.pat&lt;/code> ，注意是 &lt;code>.pat&lt;/code> 结尾。&lt;/p>
&lt;p>&lt;img src="https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/download-patch.png"
width="2958"
height="1202"
srcset="https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/download-patch_hu_12ba1e5edc78d891.webp 480w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/download-patch_hu_ec90140dadee2d70.jpg 480w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/download-patch_hu_f853aa122e7b7c85.webp 1024w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/download-patch_hu_2af7fd32952da821.jpg 1024w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/download-patch_hu_4568abf538e7a47c.webp 1536w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/download-patch_hu_7ab9a788df6717fb.jpg 1536w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/download-patch_hu_3325f09ae9c671be.webp 2048w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/download-patch_hu_75e7a3a906927408.jpg 2048w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/download-patch_hu_2584ee31d5913ea3.webp 2560w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/download-patch_hu_7f805f5d3e4ee90b.jpg 2560w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/download-patch_hu_f4eef20388af5b87.webp 2958w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/download-patch_hu_34ea8adc52150cb2.jpg 2958w"
loading="lazy"
alt="下载补丁"
class="gallery-image"
data-flex-grow="246"
data-flex-basis="590px"
>
&lt;/p>
&lt;p>下载后，放到 FTP 服务器根目录下，然后 SSH 登录设备，执行以下命令安装补丁：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt"> 10
&lt;/span>&lt;span class="lnt"> 11
&lt;/span>&lt;span class="lnt"> 12
&lt;/span>&lt;span class="lnt"> 13
&lt;/span>&lt;span class="lnt"> 14
&lt;/span>&lt;span class="lnt"> 15
&lt;/span>&lt;span class="lnt"> 16
&lt;/span>&lt;span class="lnt"> 17
&lt;/span>&lt;span class="lnt"> 18
&lt;/span>&lt;span class="lnt"> 19
&lt;/span>&lt;span class="lnt"> 20
&lt;/span>&lt;span class="lnt"> 21
&lt;/span>&lt;span class="lnt"> 22
&lt;/span>&lt;span class="lnt"> 23
&lt;/span>&lt;span class="lnt"> 24
&lt;/span>&lt;span class="lnt"> 25
&lt;/span>&lt;span class="lnt"> 26
&lt;/span>&lt;span class="lnt"> 27
&lt;/span>&lt;span class="lnt"> 28
&lt;/span>&lt;span class="lnt"> 29
&lt;/span>&lt;span class="lnt"> 30
&lt;/span>&lt;span class="lnt"> 31
&lt;/span>&lt;span class="lnt"> 32
&lt;/span>&lt;span class="lnt"> 33
&lt;/span>&lt;span class="lnt"> 34
&lt;/span>&lt;span class="lnt"> 35
&lt;/span>&lt;span class="lnt"> 36
&lt;/span>&lt;span class="lnt"> 37
&lt;/span>&lt;span class="lnt"> 38
&lt;/span>&lt;span class="lnt"> 39
&lt;/span>&lt;span class="lnt"> 40
&lt;/span>&lt;span class="lnt"> 41
&lt;/span>&lt;span class="lnt"> 42
&lt;/span>&lt;span class="lnt"> 43
&lt;/span>&lt;span class="lnt"> 44
&lt;/span>&lt;span class="lnt"> 45
&lt;/span>&lt;span class="lnt"> 46
&lt;/span>&lt;span class="lnt"> 47
&lt;/span>&lt;span class="lnt"> 48
&lt;/span>&lt;span class="lnt"> 49
&lt;/span>&lt;span class="lnt"> 50
&lt;/span>&lt;span class="lnt"> 51
&lt;/span>&lt;span class="lnt"> 52
&lt;/span>&lt;span class="lnt"> 53
&lt;/span>&lt;span class="lnt"> 54
&lt;/span>&lt;span class="lnt"> 55
&lt;/span>&lt;span class="lnt"> 56
&lt;/span>&lt;span class="lnt"> 57
&lt;/span>&lt;span class="lnt"> 58
&lt;/span>&lt;span class="lnt"> 59
&lt;/span>&lt;span class="lnt"> 60
&lt;/span>&lt;span class="lnt"> 61
&lt;/span>&lt;span class="lnt"> 62
&lt;/span>&lt;span class="lnt"> 63
&lt;/span>&lt;span class="lnt"> 64
&lt;/span>&lt;span class="lnt"> 65
&lt;/span>&lt;span class="lnt"> 66
&lt;/span>&lt;span class="lnt"> 67
&lt;/span>&lt;span class="lnt"> 68
&lt;/span>&lt;span class="lnt"> 69
&lt;/span>&lt;span class="lnt"> 70
&lt;/span>&lt;span class="lnt"> 71
&lt;/span>&lt;span class="lnt"> 72
&lt;/span>&lt;span class="lnt"> 73
&lt;/span>&lt;span class="lnt"> 74
&lt;/span>&lt;span class="lnt"> 75
&lt;/span>&lt;span class="lnt"> 76
&lt;/span>&lt;span class="lnt"> 77
&lt;/span>&lt;span class="lnt"> 78
&lt;/span>&lt;span class="lnt"> 79
&lt;/span>&lt;span class="lnt"> 80
&lt;/span>&lt;span class="lnt"> 81
&lt;/span>&lt;span class="lnt"> 82
&lt;/span>&lt;span class="lnt"> 83
&lt;/span>&lt;span class="lnt"> 84
&lt;/span>&lt;span class="lnt"> 85
&lt;/span>&lt;span class="lnt"> 86
&lt;/span>&lt;span class="lnt"> 87
&lt;/span>&lt;span class="lnt"> 88
&lt;/span>&lt;span class="lnt"> 89
&lt;/span>&lt;span class="lnt"> 90
&lt;/span>&lt;span class="lnt"> 91
&lt;/span>&lt;span class="lnt"> 92
&lt;/span>&lt;span class="lnt"> 93
&lt;/span>&lt;span class="lnt"> 94
&lt;/span>&lt;span class="lnt"> 95
&lt;/span>&lt;span class="lnt"> 96
&lt;/span>&lt;span class="lnt"> 97
&lt;/span>&lt;span class="lnt"> 98
&lt;/span>&lt;span class="lnt"> 99
&lt;/span>&lt;span class="lnt">100
&lt;/span>&lt;span class="lnt">101
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="n">admin&lt;/span>&lt;span class="err">@&lt;/span>&lt;span class="n">HUAWEI&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">MDCLI&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">ftpc&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">transfer&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">file&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="n">admin&lt;/span>&lt;span class="err">@&lt;/span>&lt;span class="n">HUAWEI&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">ftpc&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">transfer&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">file&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">MDCLI&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">command&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">type&lt;/span> &lt;span class="n">get&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="n">admin&lt;/span>&lt;span class="err">@&lt;/span>&lt;span class="n">HUAWEI&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">ftpc&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">transfer&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">file&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">MDCLI&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">local&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">file&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">name&lt;/span> &lt;span class="n">AirEngineX773_V600R024C10SPH181&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pat&lt;/span> &lt;span class="c1"># 补丁文件名，注意和 FTP 服务器上一致&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="n">admin&lt;/span>&lt;span class="err">@&lt;/span>&lt;span class="n">HUAWEI&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">ftpc&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">transfer&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">file&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">MDCLI&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">remote&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">file&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">name&lt;/span> &lt;span class="n">AirEngineX773_V600R024C10SPH181&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pat&lt;/span> &lt;span class="c1"># 与上面保持一致即可&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="n">admin&lt;/span>&lt;span class="err">@&lt;/span>&lt;span class="n">HUAWEI&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">ftpc&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">transfer&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">file&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">MDCLI&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">server&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">ipv4&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">address&lt;/span> &lt;span class="mf">192.168&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mf">213.54&lt;/span> &lt;span class="c1"># FTP 服务器 IP 地址&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="n">admin&lt;/span>&lt;span class="err">@&lt;/span>&lt;span class="n">HUAWEI&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">ftpc&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">transfer&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">file&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">MDCLI&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">server&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">port&lt;/span> &lt;span class="mi">2121&lt;/span> &lt;span class="c1"># FTP 服务器端口&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="n">admin&lt;/span>&lt;span class="err">@&lt;/span>&lt;span class="n">HUAWEI&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">ftpc&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">transfer&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">file&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">MDCLI&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">user&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">name&lt;/span> &lt;span class="n">xxx&lt;/span> &lt;span class="c1"># FTP 用户名&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="n">admin&lt;/span>&lt;span class="err">@&lt;/span>&lt;span class="n">HUAWEI&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">ftpc&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">transfer&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">file&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">MDCLI&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">password&lt;/span> &lt;span class="c1"># FTP 密码&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Enter&lt;/span> &lt;span class="n">password&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Confirm&lt;/span> &lt;span class="n">password&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="n">admin&lt;/span>&lt;span class="err">@&lt;/span>&lt;span class="n">HUAWEI&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">ftpc&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">transfer&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">file&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">MDCLI&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">emit&lt;/span> &lt;span class="c1"># 提交下载任务&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;huawei-ftpc:transfer-id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="n">admin&lt;/span>&lt;span class="err">@&lt;/span>&lt;span class="n">HUAWEI&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">MDCLI&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">display&lt;/span> &lt;span class="n">ftpc&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">transfer&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">tasks&lt;/span>&lt;span class="o">/&lt;/span> &lt;span class="c1"># 查看任务状态&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;transfer-task&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;transfer-id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;command-type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;get&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;server-address&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;192.168.213.54&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;server-port&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">2121&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;local-file-name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;AirEngineX773_V600R024C10SPH181.pat&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;remote-file-name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;AirEngineX773_V600R024C10SPH181.pat&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;status&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;succeeded&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="c1"># 表示成功&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;percentage&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">100&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="n">admin&lt;/span>&lt;span class="err">@&lt;/span>&lt;span class="n">HUAWEI&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">MDCLI&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="nb">load&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">patch&lt;/span> &lt;span class="n">name&lt;/span> &lt;span class="n">AirEngineX773_V600R024C10SPH181&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pat&lt;/span> &lt;span class="nb">load&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">type&lt;/span> &lt;span class="n">run&lt;/span> &lt;span class="c1"># 安装补丁，注意文件名与需要安装的补丁一致&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="n">admin&lt;/span>&lt;span class="err">@&lt;/span>&lt;span class="n">HUAWEI&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">MDCLI&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">display&lt;/span> &lt;span class="n">patch&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">operation&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">schedules&lt;/span> &lt;span class="c1"># 查看安装进度&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;operation-schedule&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;phase&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;load-patch&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;status&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;successful&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;schedule&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">100&lt;/span> &lt;span class="c1"># 等待进度 100%&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;phase&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;delete-patch&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;status&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;not-started&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;schedule&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;phase&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;startup-next-patch&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;status&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;not-started&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;schedule&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;phase&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;reset-startup-patch&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;status&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;not-started&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;schedule&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="n">admin&lt;/span>&lt;span class="err">@&lt;/span>&lt;span class="n">HUAWEI&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">MDCLI&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">display&lt;/span> &lt;span class="n">patch&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">patch&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">infos&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;patch-info&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;AirEngineX773_V600R024C10SPH181.pat&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="c1"># 验证补丁安装成功&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;version&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;V600R024C10SPH181&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;state&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;running&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;runtime&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;2025-12-13T21:39:48+08:00&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;path&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;/&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;operations&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;operation&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;position&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;0&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;position-type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;MPU&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;upgrade-mode&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;reset-board&amp;#34;&lt;/span> &lt;span class="c1"># 某些补丁需要重启设备才能生效&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>你也可以在 Web 管理界面上查看补丁是否安装成功。&lt;/p>
&lt;p>&lt;img src="https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/patch-webui.png"
width="3022"
height="358"
srcset="https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/patch-webui_hu_8ddac104a9193297.webp 480w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/patch-webui_hu_c4ab380c254e0716.jpg 480w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/patch-webui_hu_4f92d18e8bc4b92a.webp 1024w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/patch-webui_hu_1728784cd89885af.jpg 1024w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/patch-webui_hu_d7d40e13c260db24.webp 1536w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/patch-webui_hu_e1e784ff870a4e1d.jpg 1536w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/patch-webui_hu_9eaab813304a2cf1.webp 2048w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/patch-webui_hu_b99443bb15eb4386.jpg 2048w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/patch-webui_hu_fbeb485cb3d1e5a3.webp 2560w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/patch-webui_hu_86721418d6a3bbe6.jpg 2560w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/patch-webui_hu_a5859c1dd4aabe21.webp 3022w, https://charlie0129.github.io/blog/p/huawei-airengine-5773-gotchas/images/patch-webui_hu_b1424983fba2cf30.jpg 3022w"
loading="lazy"
alt="补丁安装成功"
class="gallery-image"
data-flex-grow="844"
data-flex-basis="2025px"
>
&lt;/p>
&lt;h2 id="bonus-启用-ipv6">Bonus: 启用 IPv6
&lt;/h2>&lt;p>我发现 AP 下面的设备获取不到 IPv6 地址（我内网中 IPv6 配置都是正确的），基本上肯定是在 AP 导致的 IPv6 地址无法下发。&lt;/p>
&lt;p>后面了解华为 AP 默认不开 IPv6 报文转发。原因是：华为认为 IPv4 是主流，在 IPv4 网络中，如果存在较多 IPv6 协议报文，会影响无线网络性能，也会损耗设备的 CPU 处理能力。因此在纯 IPv4 网络中，可以通过不处理 IPv6 无线报文来提高 IPv4 网络性能。&lt;/p>
&lt;p>不过，我就是要用 IPv6 ，因此要去把 WLAN 处理 IPv6 报文的功能打开（ Web UI 没有，要命令行开），SSH 登录设备，执行以下命令：&lt;/p>
&lt;blockquote>
&lt;p>官方文档里面其实有这个，但是我找半天没找到，在：“参考-MD-CLI配置参考-WLAN配置-WLAN用户管理” 里面。不是，你把 IPv6 相关配置放在“用户管理”里面？这跟用户管理有啥关系？&lt;/p>&lt;/blockquote>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">[admin@HUAWEI]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">MDCLI&amp;gt; edit-config
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[(gl)admin@HUAWEI]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">MDCLI&amp;gt; wlan-sta-access
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[(gl)admin@HUAWEI]/wlan-sta-access
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">MDCLI&amp;gt; sta-ipv6-switch true
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[*(gl)admin@HUAWEI]/wlan-sta-access
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">MDCLI&amp;gt; commit
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>之后你的设备应该就能正确收发 IPv6 报文了。&lt;/p>
&lt;h2 id="结语">结语
&lt;/h2>&lt;p>这告诉我们， AirEngine 5773-21 这种 Wi-Fi 7 新设备，还是太新了，所有的坑都得自己踩。与 Wi-Fi 6 的设备比如 AirEngine 5761 相比网上大把教程还是差太远了。不过也算是积累了一些经验，后续再买多台 AP 的时候就不会再踩这些坑了。&lt;/p>
&lt;p>这次单台 AP 就放北京用了，年底回老家再配置多 AP 组网方案。&lt;/p></description></item><item><title>Set Up ZeroTier Moon on Non-Standard Ports</title><link>https://charlie0129.github.io/blog/p/set-up-zerotier-moon-on-non-standard-ports/</link><pubDate>Thu, 27 Nov 2025 10:20:00 +0800</pubDate><guid>https://charlie0129.github.io/blog/p/set-up-zerotier-moon-on-non-standard-ports/</guid><description>&lt;p>To install ZeroTier, one would typically allow port 9993/UDP on their firewall. However, in certain scenarios, you may need to run a ZeroTier moon on non-standard ports due to network restrictions (e.g. behind NAT) or conflicts with other services. This guide will walk you through the steps to set up a ZeroTier moon on non-standard ports.&lt;/p>
&lt;h2 id="setup-relays-moon-nodes-on-non-standard-ports">Setup Relays (Moon Nodes) on Non-Standard Ports
&lt;/h2>&lt;p>Install ZeroTier like usual:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -s https://install.zerotier.com &lt;span class="p">|&lt;/span> sudo bash
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># and join a network (if your moon also acts as a client)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">zerotier-cli join &amp;lt;network_id&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Setup moon:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">zerotier-idtool initmoon /var/lib/zerotier-one/identity.public &amp;gt;&amp;gt;/var/lib/zerotier-one/moon.json
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Here is the important part: edit the &lt;code>moon.json&lt;/code> file to specify the desired non-standard ports. Open the file with your preferred text editor:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">vim /var/lib/zerotier-one/moon.json
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Modify the &lt;code>stableEndpoints&lt;/code> section to include your public IP address along with the desired non-standard port. If you are behind a NAT, use your router&amp;rsquo;s public IP address and forward the same port from your server to your router. The format should be &lt;code>IP_ADDRESS/PORT&lt;/code>.&lt;/p>
&lt;p>For example, if you want to use port &lt;code>14999&lt;/code>, change the line to:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">&amp;#34;stableEndpoints&amp;#34;: [&amp;#34;xxx.xxx.xxx.xxx/14999&amp;#34;]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Generate the moon configuration (this is what clients will use to connect to your moon):&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">zerotier-idtool genmoon /var/lib/zerotier-one/moon.json
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>You should have one file that looks like &lt;code>*.moon&lt;/code> in your current dir. Move the generated moon file to the ZeroTier directory:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">mkdir -p /var/lib/zerotier-one/moons.d/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">mv *.moon /var/lib/zerotier-one/moons.d/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>If your moon also acts as a client, change the client configuration to use the non-standard port. Edit &lt;code>/var/lib/zerotier-one/local.conf&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;settings&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;primaryPort&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">14999&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Restart the ZeroTier service to apply the changes:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">systemctl restart zerotier-one
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="setup-clients-leaf-nodes">Setup Clients (Leaf Nodes)
&lt;/h2>&lt;p>On the client side, you have to change the default port as well. Yes, the client&amp;rsquo;s default port (9993) must match the moon&amp;rsquo;s port. Otherwise, they won&amp;rsquo;t be able to communicate in my tests.&lt;/p>
&lt;p>After you installed ZeroTier and joined the network, edit &lt;code>/var/lib/zerotier-one/local.conf&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;settings&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;primaryPort&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">14999&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Copy &lt;code>/var/lib/zerotier-one/moons.d/*.moon&lt;/code> from the moon server to the client machine&amp;rsquo;s &lt;code>/var/lib/zerotier-one/moons.d/&lt;/code> directory, so the client knows about the moon:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">scp &lt;span class="s2">&amp;#34;user@moon-server:/var/lib/zerotier-one/moons.d/*.moon&amp;#34;&lt;/span> /var/lib/zerotier-one/moons.d/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Restart the ZeroTier service on the client:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">systemctl restart zerotier-one
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="verification">Verification
&lt;/h2>&lt;p>You can verify that the moon is functioning correctly by checking &lt;code>zerotier-cli&lt;/code> command on the client to see if it can connect to the moon.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">zerotier-cli peers
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>You should see an entry for your moon with the correct non-standard port, similar to the example below (xxx.xxx.xxx.xxx/14999):&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">zerotier-cli peers
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">200 peers
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;lt;ztaddr&amp;gt; &amp;lt;ver&amp;gt; &amp;lt;role&amp;gt; &amp;lt;lat&amp;gt; &amp;lt;link&amp;gt; &amp;lt;lastTX&amp;gt; &amp;lt;lastRX&amp;gt; &amp;lt;path&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">35c192ce9b 1.15.3 LEAF 287 DIRECT 11575 11575 2001:19f0:6001:2c59:beef:3d:6767:df71/21006
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">3cdfac522d 1.16.0 MOON 66 DIRECT 3660 3660 xxx.xxx.xxx.xxx/14999
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">778cde7190 - PLANET 287 DIRECT 44090 43802 2605:9880:400:c3:254:f2bc:a1f7:19/9993
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">cafe04eba9 - PLANET 287 DIRECT 44090 43802 84.17.53.155/9993
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">cafe80ed74 - PLANET 261 DIRECT 269315 43837 2a02:6ea0:c87f::1/9993
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">cafefd6717 - PLANET 246 DIRECT 299345 43845 2a02:6ea0:d368::9993/9993
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>If your &lt;code>&amp;lt;lat&amp;gt;&lt;/code> is &lt;code>-1&lt;/code>, it means the client cannot reach the moon. Double-check your configuration and ensure that the specified ports are open and correctly forwarded if behind a NAT.&lt;/p></description></item><item><title>Rename RDMA NIC Interface Names</title><link>https://charlie0129.github.io/blog/p/rename-rnics/</link><pubDate>Fri, 09 Aug 2024 14:28:00 +0800</pubDate><guid>https://charlie0129.github.io/blog/p/rename-rnics/</guid><description>&lt;h2 id="background">Background
&lt;/h2>&lt;p>The RDMA NIC names (InfiniBand HCAs in this case) of our nodes are inconsistent. We want to rename them to a consistent naming scheme.&lt;/p>
&lt;p>One node:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;span class="lnt">46
&lt;/span>&lt;span class="lnt">47
&lt;/span>&lt;span class="lnt">48
&lt;/span>&lt;span class="lnt">49
&lt;/span>&lt;span class="lnt">50
&lt;/span>&lt;span class="lnt">51
&lt;/span>&lt;span class="lnt">52
&lt;/span>&lt;span class="lnt">53
&lt;/span>&lt;span class="lnt">54
&lt;/span>&lt;span class="lnt">55
&lt;/span>&lt;span class="lnt">56
&lt;/span>&lt;span class="lnt">57
&lt;/span>&lt;span class="lnt">58
&lt;/span>&lt;span class="lnt">59
&lt;/span>&lt;span class="lnt">60
&lt;/span>&lt;span class="lnt">61
&lt;/span>&lt;span class="lnt">62
&lt;/span>&lt;span class="lnt">63
&lt;/span>&lt;span class="lnt">64
&lt;/span>&lt;span class="lnt">65
&lt;/span>&lt;span class="lnt">66
&lt;/span>&lt;span class="lnt">67
&lt;/span>&lt;span class="lnt">68
&lt;/span>&lt;span class="lnt">69
&lt;/span>&lt;span class="lnt">70
&lt;/span>&lt;span class="lnt">71
&lt;/span>&lt;span class="lnt">72
&lt;/span>&lt;span class="lnt">73
&lt;/span>&lt;span class="lnt">74
&lt;/span>&lt;span class="lnt">75
&lt;/span>&lt;span class="lnt">76
&lt;/span>&lt;span class="lnt">77
&lt;/span>&lt;span class="lnt">78
&lt;/span>&lt;span class="lnt">79
&lt;/span>&lt;span class="lnt">80
&lt;/span>&lt;span class="lnt">81
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">root@tj01-h20-node139:/# ibstatus
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;ibp171s0&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x70
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;ibp187s0&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x6f
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;ibp203s0&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x29
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;ibp219s0&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x6a
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;ibp41s0&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x6c
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;ibp59s0&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x2b
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;ibp75s0&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x80
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;ibp93s0&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x6e
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;rocep22s0f0&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x0
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x0
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 25 Gb/sec (1X EDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: Ethernet
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Another node:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;span class="lnt">46
&lt;/span>&lt;span class="lnt">47
&lt;/span>&lt;span class="lnt">48
&lt;/span>&lt;span class="lnt">49
&lt;/span>&lt;span class="lnt">50
&lt;/span>&lt;span class="lnt">51
&lt;/span>&lt;span class="lnt">52
&lt;/span>&lt;span class="lnt">53
&lt;/span>&lt;span class="lnt">54
&lt;/span>&lt;span class="lnt">55
&lt;/span>&lt;span class="lnt">56
&lt;/span>&lt;span class="lnt">57
&lt;/span>&lt;span class="lnt">58
&lt;/span>&lt;span class="lnt">59
&lt;/span>&lt;span class="lnt">60
&lt;/span>&lt;span class="lnt">61
&lt;/span>&lt;span class="lnt">62
&lt;/span>&lt;span class="lnt">63
&lt;/span>&lt;span class="lnt">64
&lt;/span>&lt;span class="lnt">65
&lt;/span>&lt;span class="lnt">66
&lt;/span>&lt;span class="lnt">67
&lt;/span>&lt;span class="lnt">68
&lt;/span>&lt;span class="lnt">69
&lt;/span>&lt;span class="lnt">70
&lt;/span>&lt;span class="lnt">71
&lt;/span>&lt;span class="lnt">72
&lt;/span>&lt;span class="lnt">73
&lt;/span>&lt;span class="lnt">74
&lt;/span>&lt;span class="lnt">75
&lt;/span>&lt;span class="lnt">76
&lt;/span>&lt;span class="lnt">77
&lt;/span>&lt;span class="lnt">78
&lt;/span>&lt;span class="lnt">79
&lt;/span>&lt;span class="lnt">80
&lt;/span>&lt;span class="lnt">81
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">root@tj01-h20-node140:/# ibstatus
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;mlx5_2&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x68
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;mlx5_3&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x71
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;mlx5_4&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x27
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;mlx5_5&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x69
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;mlx5_6&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x6d
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;mlx5_7&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x6b
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;mlx5_8&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x2a
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;mlx5_9&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x2c
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Infiniband device &amp;#39;mlx5_bond_0&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> base lid: 0x0
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> sm lid: 0x0
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rate: 25 Gb/sec (1X EDR)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> link_layer: Ethernet
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Note that one node has the names &lt;code>ibp*&lt;/code> and the other has &lt;code>mlx5_*&lt;/code>. We want to make node 1 follow a same naming scheme as the other nodes.&lt;/p>
&lt;p>To be fair &lt;code>ibp*&lt;/code> is actually consistent (named using PCI location). &lt;code>mlx5_*&lt;/code> is not consistent, which depends on the card initialization order and can change after a reboot.&lt;/p>
&lt;p>Anyway, since all other nodes are using &lt;code>mlx5_*&lt;/code> naming scheme, we want to rename all of them to &lt;code>mlx5_*&lt;/code> for consistency with the other nodes.&lt;/p>
&lt;h2 id="solution">Solution
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">cp cp /lib/udev/rules.d/60-rdma-persistent-naming.rules /etc/udev/rules.d/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>This is all you need. Now reboot your server.&lt;/p>
&lt;p>If you are interested in the details, read on.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># SPDX-License-Identifier: (GPL-2.0 OR Linux-OpenIB)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Copyright (c) 2019, Mellanox Technologies. All rights reserved. See COPYING file&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Rename modes:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># NAME_FALLBACK - Try to name devices in the following order:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># by-pci -&amp;gt; by-guid -&amp;gt; kernel&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># NAME_KERNEL - leave name as kernel provided&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># NAME_PCI - based on PCI/slot/function location&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># NAME_GUID - based on system image GUID&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># NAME_FIXED - rename the device to the fixed named in the next argument&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># The stable names are combination of device type technology and rename mode.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Infiniband - ib*&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># RoCE - roce*&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># iWARP - iw*&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># OPA - opa*&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Default (unknown protocol) - rdma*&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Example:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># * NAME_PCI&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># pci = 0000:00:0c.4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Device type = IB&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># mlx5_0 -&amp;gt; ibp0s12f4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># * NAME_GUID&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># GUID = 5254:00c0:fe12:3455&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Device type = RoCE&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># mlx5_0 -&amp;gt; rocex525400c0fe123455&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">ACTION&lt;/span>&lt;span class="o">==&lt;/span>&lt;span class="s2">&amp;#34;add&amp;#34;&lt;/span>, &lt;span class="nv">SUBSYSTEM&lt;/span>&lt;span class="o">==&lt;/span>&lt;span class="s2">&amp;#34;infiniband&amp;#34;&lt;/span>, &lt;span class="nv">PROGRAM&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;rdma_rename %k NAME_KERNEL&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Example:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># * NAME_FIXED&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># fixed name for specific board_id&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#ACTION==&amp;#34;add&amp;#34;, ATTR{board_id}==&amp;#34;MSF0010110035&amp;#34;, SUBSYSTEM==&amp;#34;infiniband&amp;#34;, PROGRAM=&amp;#34;rdma_rename %k NAME_FIXED myib&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Look at the line contains &lt;code>PROGRAM=&amp;quot;rdma_rename %k NAME_KERNEL&amp;quot;&lt;/code>. So if you want to use &lt;code>mlx5_*&lt;/code> (called kernel names), you can use &lt;code>NAME_KERNEL&lt;/code> as the rename mode (default). If you want to use &lt;code>ibp*&lt;/code> (called PCI names), you can use &lt;code>NAME_PCI&lt;/code> as the rename mode or use &lt;code>NAME_FALLBACK&lt;/code>, which first tries &lt;code>NAME_PCI&lt;/code>.&lt;/p></description></item><item><title>NFS over RDMA Setup &amp; Benchmark</title><link>https://charlie0129.github.io/blog/p/nfs-over-rdma/</link><pubDate>Fri, 19 Jul 2024 22:36:00 +0800</pubDate><guid>https://charlie0129.github.io/blog/p/nfs-over-rdma/</guid><description>&lt;p>So I decided to test NFS over RDMA somehow.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Hostname&lt;/th>
&lt;th>&lt;code>ft2000&lt;/code> (Server)&lt;/th>
&lt;th>&lt;code>t3640&lt;/code> (Client)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>CPU&lt;/td>
&lt;td>Phytium FT-2000+/64&lt;/td>
&lt;td>Intel Core i9-10900K&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>RAM&lt;/td>
&lt;td>Quad Channel DDR4 128GB&lt;/td>
&lt;td>Dual Channel DDR4 64GB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>NIC&lt;/td>
&lt;td>Mellanox ConnextX-4 Lx 25GbE&lt;/td>
&lt;td>Mellanox ConnextX-4 Lx 25GbE&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>OS&lt;/td>
&lt;td>UOS Server 20 1070a&lt;/td>
&lt;td>Debian 12&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Two servers are connected using a 25GbE network. The goal is to set up NFS over RDMA and benchmark it to see the performance difference between NFS over TCP and NFS over RDMA.&lt;/p>
&lt;h2 id="rdma-link-verification">RDMA Link Verification
&lt;/h2>&lt;p>&lt;strong>Install RDMA/IB dependencies:&lt;/strong>&lt;/p>
&lt;p>Dependencies should be the same on both devices (no server and client differences). The difference is only the package manager (and OS).&lt;/p>
&lt;blockquote>
&lt;p>If you are using Mellanox OFED, you can skip this step. Be sure to install Mellanox OFED using &lt;code>--with-nfsrdma&lt;/code> flag. Otherwise, you will not be able to use NFS over RDMA.&lt;/p>&lt;/blockquote>
&lt;p>On UOS Server 20 1070a, which is Anolis8-based, which is again CentOS8-based:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@ft2000:/# yum install -y libibverbs librdmacm opensm-libs rdma-core rdma-core-devel \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> librdmacm-utils opensm-static srp_daemon ucx-devel ucx-rdmacm infiniband-diags ibacm \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> opensm-devel ucx ucx-ib libibumad opensm mstflint ucx-cma openmpi rshim libibverbs-utils \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> perftest rdma-core rdma-core-devel infiniband-diags rshim
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>On Debian 12:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# apt install -y infiniband-diags srptools perftest opensm-doc librdmacm-dev \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> rdmacm-utils librdmacm1 ibacm libibmad-dev libibmad5 libibumad-dev libibumad3 \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> ibverbs-utils libibverbs-dev libibverbs1 mstflint rdma-core opensm fio librbd1 \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> librados2 libibnetdisc5 ibverbs-providers
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Make sure link is up on both servers using &lt;code>ip&lt;/code> or &lt;code>ibstatus&lt;/code> command:&lt;/strong>&lt;/p>
&lt;p>Client:&lt;/p>
&lt;p>Use &lt;code>ip&lt;/code> (note &lt;code>state UP&lt;/code>):&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# ip l show dev enp1s0f1np1
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">6: enp1s0f1np1: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Or use &lt;code>ibstatis&lt;/code> (note &lt;code>phys state: 5: LinkUp&lt;/code>):&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# ibstatus
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">Infiniband device &amp;#39;mlx5_0&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> base lid: 0x0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> sm lid: 0x0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> rate: 10 Gb/sec (1X QDR)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> link_layer: Ethernet
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">&lt;/span>&lt;span class="err">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">&lt;/span>&lt;span class="go">Infiniband device &amp;#39;mlx5_1&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> base lid: 0x0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> sm lid: 0x0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> rate: 25 Gb/sec (1X EDR)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> link_layer: Ethernet
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Server:&lt;/p>
&lt;p>Use &lt;code>ip&lt;/code> (note &lt;code>state UP&lt;/code>):&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@ft2000:/# ip l show dev enp16s0f0np0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">4: enp16s0f0np0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Or use &lt;code>ibstatis&lt;/code> (note &lt;code>phys state: 5: LinkUp&lt;/code>):&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@ft2000:/# ibstatus
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">Infiniband device &amp;#39;mlx5_0&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> base lid: 0x0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> sm lid: 0x0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> rate: 25 Gb/sec (1X EDR)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> link_layer: Ethernet
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">&lt;/span>&lt;span class="err">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">&lt;/span>&lt;span class="go">Infiniband device &amp;#39;mlx5_1&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> base lid: 0x0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> sm lid: 0x0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> state: 1: DOWN
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> phys state: 3: Disabled
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> rate: 40 Gb/sec (4X QDR)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> link_layer: Ethernet
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Verify IP connectivity between the servers (ping the IP address of the other server):&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# ping 192.168.23.1
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">PING 192.168.23.1 (192.168.23.1) 56(84) bytes of data.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">64 bytes from 192.168.23.1: icmp_seq=1 ttl=64 time=0.199 ms
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">64 bytes from 192.168.23.1: icmp_seq=2 ttl=64 time=0.206 ms
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Make sure the the InfiniBand kernel modules are enabled.&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="gp">#&lt;/span> On both servers
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@ft2000:/# lsmod | grep ^ib
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">ib_srpt 262144 0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">ib_isert 262144 0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">ib_iser 262144 0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">ib_umad 262144 0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">ib_ipoib 327680 0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">ib_cm 262144 3 rdma_cm,ib_ipoib,ib_srpt
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">ib_uverbs 327680 2 rdma_ucm,mlx5_ib
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">ib_core 458752 12 rdma_cm,ib_ipoib,rpcrdma,ib_srpt,iw_cm,ib_iser,ib_umad,ib_isert,rdma_ucm,ib_uverbs,mlx5_ib,ib_cm
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Make sure you have a lossless network:&lt;/strong>&lt;/p>
&lt;p>In case the RDMA is running over Ethernet (RoCE) you need to make sure that the network is configured to be loss-less, which means that either flow control (FC) or priority flow control PFC is enabled on the adapter ports and the switch.&lt;/p>
&lt;p>In case of lab environment or small setup, you can use Global Pause Flow Control to create loss-less environment. To check what is the global pause configuration use the following command (by default it is enabled normally).&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# ethtool -a enp1s0f0np0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">Pause parameters for enp1s0f0np0:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">Autonegotiate: off
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">RX: on
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">TX: on
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>In case it is disabled, run:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# ethtool -A enp1s0f0np0 rx on tx on
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Test RDMA speed. Refer to my previous blog &lt;a class="link" href="https://charlie0129.github.io/blog/p/ib-perf-test/" >InfiniBand Performance Test&lt;/a> for details.&lt;/strong>&lt;/p>
&lt;p>Run the following command on client and server, respectively:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# ib_send_bw --report_gbit -F -d mlx5_1
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">&lt;/span>&lt;span class="gp">#&lt;/span> device name can be seen in &lt;span class="sb">`&lt;/span>ibstatus&lt;span class="sb">`&lt;/span> &lt;span class="nb">command&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@ft2000:/# ib_send_bw --report_gbit -a -F -d mlx5_0 192.168.23.2
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">---------------------------------------------------------------------------------------
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> Send BW Test
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> Dual-port : OFF Device : mlx5_0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> Number of qps : 1 Transport type : IB
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> Connection type : RC Using SRQ : OFF
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> PCIe relax order: ON
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> ibv_wr* API : ON
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> TX depth : 128
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> CQ Moderation : 100
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> Mtu : 1024[B]
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> Link type : Ethernet
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> GID index : 3
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> Max inline data : 0[B]
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> rdma_cm QPs : OFF
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> Data ex. method : Ethernet
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">---------------------------------------------------------------------------------------
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> local address: LID 0000 QPN 0x0087 PSN 0x176d37
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:23:01
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> remote address: LID 0000 QPN 0x0188 PSN 0x789e84
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:23:02
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">---------------------------------------------------------------------------------------
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> #bytes #iterations BW peak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps]
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> 65536 1000 23.14 23.13 0.044119
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">---------------------------------------------------------------------------------------
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>As you can see, the speed is around 23 Gb/sec. This is the maximum speed of the network (25G). If you see a lower speed, you need to check the network configuration and the switch configuration.&lt;/p>
&lt;h2 id="configure-nfs-without-rdma">Configure NFS without RDMA
&lt;/h2>&lt;p>Just to make sure NFS is working.&lt;/p>
&lt;p>&lt;strong>Install NFS on server:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@ft2000:/# yum -y install nfs-utils # On Debian: apt install nfs-kernel-server
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@ft2000:/# systemctl start nfs-server rpcbind
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@ft2000:/# systemctl enable nfs-server rpcbind
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Use &lt;code>/tmp&lt;/code> as a test dir and share it:&lt;/strong>&lt;/p>
&lt;blockquote>
&lt;p>Since I want to test the network performance (TCP and RDMA), I don&amp;rsquo;t want to be bottlenecked by the disk speed. So I will use &lt;code>/tmp&lt;/code>, which is backed by RAM (usually), as a reasonably fast directory to avoid bottlenecks.&lt;/p>
&lt;p>Make sure it is &lt;code>tmpfs&lt;/code>, otherwise IO will be limited by your disk speed.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@ft2000:/# mount | grep /tmp
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">tmpfs on /tmp type tmpfs (rw,nosuid,nodev)
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;/blockquote>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@ft2000:/# echo &amp;#39;/tmp *(rw,async,insecure,no_root_squash)&amp;#39; &amp;gt;&amp;gt;/etc/exports
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Make it available:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@ft2000:/# exportfs -a
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@ft2000:/# systemctl restart nfs-server
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Install NFS on client:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# apt install nfs-common
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Mount the NFS share temporarily:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# mkdir -p /mnt/nfs
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# mount -t nfs 192.168.23.1:/tmp /mnt/nfs
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Verify the mount:&lt;/strong>&lt;/p>
&lt;p>Should see the files in &lt;code>/tmp&lt;/code> on the server.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# ls -l /mnt/nfs
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="configure-nfs-with-rdma">Configure NFS with RDMA
&lt;/h2>&lt;p>&lt;strong>Load RDMA transport module on the server:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@ft2000:/# modprobe svcrdma
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">&lt;/span>&lt;span class="gp">#&lt;/span> To make it permanent: &lt;span class="nb">echo&lt;/span> &lt;span class="s1">&amp;#39;svcrdma&amp;#39;&lt;/span> &amp;gt;&amp;gt;/etc/modules
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@ft2000:/# systemctl restart nfs-server
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Instruct the server to listen on the RDMA transport port (20049 is the default port):&lt;/strong>&lt;/p>
&lt;p>Note: if you see &lt;code>echo: write error: protocol not supported&lt;/code>, it means that the NFSoRDMA is not supported in the Mellanox OFED. You need to use the inbox OS driver (refer to &lt;em>Install RDMA/IB dependencies&lt;/em> section in this blog) or re-install Mellanox OFED with &lt;code>--with-nfsrdma&lt;/code> flag. I was tripped by this issue.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@ft2000:/# echo rdma 20049 &amp;gt; /proc/fs/nfsd/portlist
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">&lt;/span>&lt;span class="gp">#&lt;/span> To make it permanent: &lt;span class="nb">echo&lt;/span> &lt;span class="s1">&amp;#39;rdma=nfsrdma&amp;#39;&lt;/span> &amp;gt;&amp;gt; /etc/nfs.conf
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Load the RDMA transport module on the client&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# modprobe xprtrdma
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">&lt;/span>&lt;span class="gp">#&lt;/span> To make it permanent: &lt;span class="nb">echo&lt;/span> &lt;span class="s1">&amp;#39;xprtrdma&amp;#39;&lt;/span> &amp;gt;&amp;gt;/etc/modules
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# systemctl restart nfs-utils.service
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Mount the NFS share with RDMA:&lt;/strong>&lt;/p>
&lt;p>Before running the mount command, unmount the NFS share if it is mounted (&lt;code>umount /mnt/nfs&lt;/code>).&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# mount -t nfs -o rdma,port=20049 192.168.23.1:/tmp /mnt/nfs
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">&lt;/span>&lt;span class="gp">#&lt;/span> To make it permanent: &lt;span class="nb">echo&lt;/span> &lt;span class="s1">&amp;#39;192.168.23.1:/tmp /mnt/nfs nfs defaults,proto=rdma,port=20049 0 0&amp;#39;&lt;/span> &amp;gt;&amp;gt; /etc/fstab
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Check the mount parameters:&lt;/strong>&lt;/p>
&lt;p>If you see &lt;code>proto=rdma&lt;/code>, it means the NFS is mounted using RDMA.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# nfsstat -m
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">/mnt/nfs from 192.168.23.1:/tmp
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> Flags: rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=rdma,port=20049,timeo=600,retrans=2,sec=sys,clientaddr=192.168.23.2,local_lock=none,addr=192.168.23.1
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Verify the mount:&lt;/strong>&lt;/p>
&lt;p>Should see the files in &lt;code>/tmp&lt;/code> on the server.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# ls -l /mnt/nfs
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="benchmark">Benchmark
&lt;/h2>&lt;p>Use &lt;code>fio&lt;/code> to benchmark the NFS performance. Parameters such as &lt;code>bs&lt;/code>, &lt;code>iodepth&lt;/code> will be changed to different values later to evaluate the performance in different scenarios.&lt;/p>
&lt;p>I will only test &lt;strong>random read&lt;/strong> performance since sequential read performance is not a main concern even using TCP let alone RDMA.&lt;/p>
&lt;p>The actual command will be:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@t3640:/# fio --rw=randread --bs=4k --numjobs=1 --iodepth=1 --runtime=10 --time_based --loops=1 \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> --ioengine=libaio --direct=1 --invalidate=1 --fsync_on_close=1 --randrepeat=1 --norandommap \
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> --exitall --name task1 --filename=/mnt/nfs/testfile --size=256M
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;blockquote>
&lt;p>The full log and related scripts can be found in the &lt;a class="link" href="#appendix" >Appendix&lt;/a>.&lt;/p>&lt;/blockquote>
&lt;p>Here are the results we have all been waiting for!&lt;/p>
&lt;p>For IO operations per second (IOPS), the average IOPS for NFS over RDMA is higher than NFS over TCP. The difference is more significant when the block size is larger and the most significant when &lt;code>iodepth=12&lt;/code>. We can also see that no matter the block size and iodepth, the IOPS for NFS over TCP is capped at around 47 KIOPS, while the one of RDMA is significantly higher at over 180 KIOPS.&lt;/p>
&lt;p>The reason why the difference is smaller with larger block sizes is that the network bandwidth is the bottleneck. For our 25GbE network, the maximum bandwidth is around 2800 MiB/s. We are hitting this limit with larger block sizes and this much IOPS. This is unrelated to the RDMA or TCP. If you have a faster network, you will see this difference for larger block sizes as well.&lt;/p>
&lt;p>For 4K block size:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>IO Depth&lt;/th>
&lt;th>KIOPS (RDMA)&lt;/th>
&lt;th>KIOPS (TCP)&lt;/th>
&lt;th>Ratio&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>8&lt;/td>
&lt;td>124.5&lt;/td>
&lt;td>36.1&lt;/td>
&lt;td>3.4&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>12&lt;/td>
&lt;td>156.0&lt;/td>
&lt;td>38.1&lt;/td>
&lt;td>4.1&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>16&lt;/td>
&lt;td>165.8&lt;/td>
&lt;td>41.4&lt;/td>
&lt;td>4.0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>24&lt;/td>
&lt;td>177.0&lt;/td>
&lt;td>45.8&lt;/td>
&lt;td>3.9&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>32&lt;/td>
&lt;td>179.4&lt;/td>
&lt;td>50.7&lt;/td>
&lt;td>3.5&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>&lt;img src="https://charlie0129.github.io/blog/p/nfs-over-rdma/plots/iops_avg.svg"
loading="lazy"
alt="IOPS vs Block Size for NFS over RDMA and TCP"
>
&lt;/p>
&lt;p>For bandwidth, the average bandwidth for NFS over RDMA is significantly higher (around 4x for small block sizes).&lt;/p>
&lt;p>The reason why the difference is more significant when the block size is small (4-16) is that we are limited by the network bandwidth. Since we have a 25GbE network, the maximum bandwidth is around 2800 MiB/s so you can see that the bandwidth is capped at 2800 MiB/s for large block sizes and deep IO depths. If you have a faster network, you will see this 4x difference for larger block sizes as well.&lt;/p>
&lt;p>&lt;img src="https://charlie0129.github.io/blog/p/nfs-over-rdma/plots/bw_avg.svg"
loading="lazy"
alt="Bandwidth vs Block Size for NFS over RDMA and TCP"
>
&lt;/p>
&lt;p>Latency-wise, the average latency for NFS over RDMA is slightly lower than NFS over TCP. The difference is more significant for small block size and large iodepths.&lt;/p>
&lt;p>&lt;img src="https://charlie0129.github.io/blog/p/nfs-over-rdma/plots/lat_avg.svg"
loading="lazy"
alt="Latency vs Block Size for NFS over RDMA and TCP"
>
&lt;/p>
&lt;h2 id="appendix">Appendix
&lt;/h2>&lt;ul>
&lt;li>Benchmark script &lt;a class="link" href="benchmark.sh" >benchmark.sh&lt;/a>: automatically run &lt;code>fio&lt;/code> with different &lt;code>bs&lt;/code> and &lt;code>iodepth&lt;/code> values and saves logs (it saves stdout, not the fio-generated log, e.g. &lt;code>--bandwidth-log&lt;/code>).&lt;/li>
&lt;li>Plotting script &lt;a class="link" href="plot.py" >plot.py&lt;/a>: parses the &lt;code>fio&lt;/code> logs (stdout) saved by &lt;code>benchmark.sh&lt;/code> and plots the results, which is the three figures you see above in the &lt;a class="link" href="#benchmark" >Benchmark&lt;/a> section.&lt;/li>
&lt;/ul>
&lt;details>
&lt;summary>Raw fio Logs (Click to Show)&lt;/summary>
&lt;ul>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs4k_iodepth1.log" >rdma_fio_bs4k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs4k_iodepth2.log" >rdma_fio_bs4k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs4k_iodepth3.log" >rdma_fio_bs4k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs4k_iodepth4.log" >rdma_fio_bs4k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs4k_iodepth6.log" >rdma_fio_bs4k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs4k_iodepth8.log" >rdma_fio_bs4k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs4k_iodepth12.log" >rdma_fio_bs4k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs4k_iodepth16.log" >rdma_fio_bs4k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs4k_iodepth24.log" >rdma_fio_bs4k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs4k_iodepth32.log" >rdma_fio_bs4k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs4k_iodepth64.log" >rdma_fio_bs4k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs4k_iodepth128.log" >rdma_fio_bs4k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs8k_iodepth1.log" >rdma_fio_bs8k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs8k_iodepth2.log" >rdma_fio_bs8k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs8k_iodepth3.log" >rdma_fio_bs8k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs8k_iodepth4.log" >rdma_fio_bs8k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs8k_iodepth6.log" >rdma_fio_bs8k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs8k_iodepth8.log" >rdma_fio_bs8k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs8k_iodepth12.log" >rdma_fio_bs8k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs8k_iodepth16.log" >rdma_fio_bs8k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs8k_iodepth24.log" >rdma_fio_bs8k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs8k_iodepth32.log" >rdma_fio_bs8k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs8k_iodepth64.log" >rdma_fio_bs8k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs8k_iodepth128.log" >rdma_fio_bs8k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs16k_iodepth1.log" >rdma_fio_bs16k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs16k_iodepth2.log" >rdma_fio_bs16k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs16k_iodepth3.log" >rdma_fio_bs16k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs16k_iodepth4.log" >rdma_fio_bs16k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs16k_iodepth6.log" >rdma_fio_bs16k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs16k_iodepth8.log" >rdma_fio_bs16k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs16k_iodepth12.log" >rdma_fio_bs16k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs16k_iodepth16.log" >rdma_fio_bs16k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs16k_iodepth24.log" >rdma_fio_bs16k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs16k_iodepth32.log" >rdma_fio_bs16k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs16k_iodepth64.log" >rdma_fio_bs16k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs16k_iodepth128.log" >rdma_fio_bs16k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs32k_iodepth1.log" >rdma_fio_bs32k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs32k_iodepth2.log" >rdma_fio_bs32k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs32k_iodepth3.log" >rdma_fio_bs32k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs32k_iodepth4.log" >rdma_fio_bs32k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs32k_iodepth6.log" >rdma_fio_bs32k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs32k_iodepth8.log" >rdma_fio_bs32k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs32k_iodepth12.log" >rdma_fio_bs32k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs32k_iodepth16.log" >rdma_fio_bs32k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs32k_iodepth24.log" >rdma_fio_bs32k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs32k_iodepth32.log" >rdma_fio_bs32k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs32k_iodepth64.log" >rdma_fio_bs32k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs32k_iodepth128.log" >rdma_fio_bs32k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs64k_iodepth1.log" >rdma_fio_bs64k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs64k_iodepth2.log" >rdma_fio_bs64k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs64k_iodepth3.log" >rdma_fio_bs64k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs64k_iodepth4.log" >rdma_fio_bs64k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs64k_iodepth6.log" >rdma_fio_bs64k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs64k_iodepth8.log" >rdma_fio_bs64k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs64k_iodepth12.log" >rdma_fio_bs64k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs64k_iodepth16.log" >rdma_fio_bs64k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs64k_iodepth24.log" >rdma_fio_bs64k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs64k_iodepth32.log" >rdma_fio_bs64k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs64k_iodepth64.log" >rdma_fio_bs64k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs64k_iodepth128.log" >rdma_fio_bs64k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs128k_iodepth1.log" >rdma_fio_bs128k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs128k_iodepth2.log" >rdma_fio_bs128k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs128k_iodepth3.log" >rdma_fio_bs128k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs128k_iodepth4.log" >rdma_fio_bs128k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs128k_iodepth6.log" >rdma_fio_bs128k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs128k_iodepth8.log" >rdma_fio_bs128k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs128k_iodepth12.log" >rdma_fio_bs128k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs128k_iodepth16.log" >rdma_fio_bs128k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs128k_iodepth24.log" >rdma_fio_bs128k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs128k_iodepth32.log" >rdma_fio_bs128k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs128k_iodepth64.log" >rdma_fio_bs128k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs128k_iodepth128.log" >rdma_fio_bs128k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs256k_iodepth1.log" >rdma_fio_bs256k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs256k_iodepth2.log" >rdma_fio_bs256k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs256k_iodepth3.log" >rdma_fio_bs256k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs256k_iodepth4.log" >rdma_fio_bs256k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs256k_iodepth6.log" >rdma_fio_bs256k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs256k_iodepth8.log" >rdma_fio_bs256k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs256k_iodepth12.log" >rdma_fio_bs256k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs256k_iodepth16.log" >rdma_fio_bs256k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs256k_iodepth24.log" >rdma_fio_bs256k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs256k_iodepth32.log" >rdma_fio_bs256k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs256k_iodepth64.log" >rdma_fio_bs256k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs256k_iodepth128.log" >rdma_fio_bs256k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs512k_iodepth1.log" >rdma_fio_bs512k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs512k_iodepth2.log" >rdma_fio_bs512k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs512k_iodepth3.log" >rdma_fio_bs512k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs512k_iodepth4.log" >rdma_fio_bs512k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs512k_iodepth6.log" >rdma_fio_bs512k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs512k_iodepth8.log" >rdma_fio_bs512k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs512k_iodepth12.log" >rdma_fio_bs512k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs512k_iodepth16.log" >rdma_fio_bs512k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs512k_iodepth24.log" >rdma_fio_bs512k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs512k_iodepth32.log" >rdma_fio_bs512k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs512k_iodepth64.log" >rdma_fio_bs512k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs512k_iodepth128.log" >rdma_fio_bs512k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs1024k_iodepth1.log" >rdma_fio_bs1024k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs1024k_iodepth2.log" >rdma_fio_bs1024k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs1024k_iodepth3.log" >rdma_fio_bs1024k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs1024k_iodepth4.log" >rdma_fio_bs1024k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs1024k_iodepth6.log" >rdma_fio_bs1024k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs1024k_iodepth8.log" >rdma_fio_bs1024k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs1024k_iodepth12.log" >rdma_fio_bs1024k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs1024k_iodepth16.log" >rdma_fio_bs1024k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs1024k_iodepth24.log" >rdma_fio_bs1024k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs1024k_iodepth32.log" >rdma_fio_bs1024k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs1024k_iodepth64.log" >rdma_fio_bs1024k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/rdma_fio_bs1024k_iodepth128.log" >rdma_fio_bs1024k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs4k_iodepth1.log" >tcp_fio_bs4k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs4k_iodepth2.log" >tcp_fio_bs4k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs4k_iodepth3.log" >tcp_fio_bs4k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs4k_iodepth4.log" >tcp_fio_bs4k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs4k_iodepth6.log" >tcp_fio_bs4k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs4k_iodepth8.log" >tcp_fio_bs4k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs4k_iodepth12.log" >tcp_fio_bs4k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs4k_iodepth16.log" >tcp_fio_bs4k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs4k_iodepth24.log" >tcp_fio_bs4k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs4k_iodepth32.log" >tcp_fio_bs4k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs4k_iodepth64.log" >tcp_fio_bs4k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs4k_iodepth128.log" >tcp_fio_bs4k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs8k_iodepth1.log" >tcp_fio_bs8k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs8k_iodepth2.log" >tcp_fio_bs8k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs8k_iodepth3.log" >tcp_fio_bs8k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs8k_iodepth4.log" >tcp_fio_bs8k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs8k_iodepth6.log" >tcp_fio_bs8k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs8k_iodepth8.log" >tcp_fio_bs8k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs8k_iodepth12.log" >tcp_fio_bs8k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs8k_iodepth16.log" >tcp_fio_bs8k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs8k_iodepth24.log" >tcp_fio_bs8k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs8k_iodepth32.log" >tcp_fio_bs8k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs8k_iodepth64.log" >tcp_fio_bs8k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs8k_iodepth128.log" >tcp_fio_bs8k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs16k_iodepth1.log" >tcp_fio_bs16k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs16k_iodepth2.log" >tcp_fio_bs16k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs16k_iodepth3.log" >tcp_fio_bs16k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs16k_iodepth4.log" >tcp_fio_bs16k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs16k_iodepth6.log" >tcp_fio_bs16k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs16k_iodepth8.log" >tcp_fio_bs16k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs16k_iodepth12.log" >tcp_fio_bs16k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs16k_iodepth16.log" >tcp_fio_bs16k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs16k_iodepth24.log" >tcp_fio_bs16k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs16k_iodepth32.log" >tcp_fio_bs16k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs16k_iodepth64.log" >tcp_fio_bs16k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs16k_iodepth128.log" >tcp_fio_bs16k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs32k_iodepth1.log" >tcp_fio_bs32k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs32k_iodepth2.log" >tcp_fio_bs32k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs32k_iodepth3.log" >tcp_fio_bs32k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs32k_iodepth4.log" >tcp_fio_bs32k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs32k_iodepth6.log" >tcp_fio_bs32k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs32k_iodepth8.log" >tcp_fio_bs32k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs32k_iodepth12.log" >tcp_fio_bs32k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs32k_iodepth16.log" >tcp_fio_bs32k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs32k_iodepth24.log" >tcp_fio_bs32k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs32k_iodepth32.log" >tcp_fio_bs32k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs32k_iodepth64.log" >tcp_fio_bs32k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs32k_iodepth128.log" >tcp_fio_bs32k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs64k_iodepth1.log" >tcp_fio_bs64k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs64k_iodepth2.log" >tcp_fio_bs64k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs64k_iodepth3.log" >tcp_fio_bs64k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs64k_iodepth4.log" >tcp_fio_bs64k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs64k_iodepth6.log" >tcp_fio_bs64k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs64k_iodepth8.log" >tcp_fio_bs64k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs64k_iodepth12.log" >tcp_fio_bs64k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs64k_iodepth16.log" >tcp_fio_bs64k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs64k_iodepth24.log" >tcp_fio_bs64k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs64k_iodepth32.log" >tcp_fio_bs64k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs64k_iodepth64.log" >tcp_fio_bs64k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs64k_iodepth128.log" >tcp_fio_bs64k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs128k_iodepth1.log" >tcp_fio_bs128k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs128k_iodepth2.log" >tcp_fio_bs128k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs128k_iodepth3.log" >tcp_fio_bs128k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs128k_iodepth4.log" >tcp_fio_bs128k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs128k_iodepth6.log" >tcp_fio_bs128k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs128k_iodepth8.log" >tcp_fio_bs128k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs128k_iodepth12.log" >tcp_fio_bs128k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs128k_iodepth16.log" >tcp_fio_bs128k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs128k_iodepth24.log" >tcp_fio_bs128k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs128k_iodepth32.log" >tcp_fio_bs128k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs128k_iodepth64.log" >tcp_fio_bs128k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs128k_iodepth128.log" >tcp_fio_bs128k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs256k_iodepth1.log" >tcp_fio_bs256k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs256k_iodepth2.log" >tcp_fio_bs256k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs256k_iodepth3.log" >tcp_fio_bs256k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs256k_iodepth4.log" >tcp_fio_bs256k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs256k_iodepth6.log" >tcp_fio_bs256k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs256k_iodepth8.log" >tcp_fio_bs256k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs256k_iodepth12.log" >tcp_fio_bs256k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs256k_iodepth16.log" >tcp_fio_bs256k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs256k_iodepth24.log" >tcp_fio_bs256k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs256k_iodepth32.log" >tcp_fio_bs256k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs256k_iodepth64.log" >tcp_fio_bs256k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs256k_iodepth128.log" >tcp_fio_bs256k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs512k_iodepth1.log" >tcp_fio_bs512k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs512k_iodepth2.log" >tcp_fio_bs512k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs512k_iodepth3.log" >tcp_fio_bs512k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs512k_iodepth4.log" >tcp_fio_bs512k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs512k_iodepth6.log" >tcp_fio_bs512k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs512k_iodepth8.log" >tcp_fio_bs512k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs512k_iodepth12.log" >tcp_fio_bs512k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs512k_iodepth16.log" >tcp_fio_bs512k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs512k_iodepth24.log" >tcp_fio_bs512k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs512k_iodepth32.log" >tcp_fio_bs512k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs512k_iodepth64.log" >tcp_fio_bs512k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs512k_iodepth128.log" >tcp_fio_bs512k_iodepth128.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs1024k_iodepth1.log" >tcp_fio_bs1024k_iodepth1.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs1024k_iodepth2.log" >tcp_fio_bs1024k_iodepth2.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs1024k_iodepth3.log" >tcp_fio_bs1024k_iodepth3.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs1024k_iodepth4.log" >tcp_fio_bs1024k_iodepth4.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs1024k_iodepth6.log" >tcp_fio_bs1024k_iodepth6.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs1024k_iodepth8.log" >tcp_fio_bs1024k_iodepth8.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs1024k_iodepth12.log" >tcp_fio_bs1024k_iodepth12.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs1024k_iodepth16.log" >tcp_fio_bs1024k_iodepth16.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs1024k_iodepth24.log" >tcp_fio_bs1024k_iodepth24.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs1024k_iodepth32.log" >tcp_fio_bs1024k_iodepth32.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs1024k_iodepth64.log" >tcp_fio_bs1024k_iodepth64.log&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="logs/tcp_fio_bs1024k_iodepth128.log" >tcp_fio_bs1024k_iodepth128.log&lt;/a>&lt;/li>
&lt;/ul>
&lt;/details></description></item><item><title>Flash 10G CX4121A to 25G</title><link>https://charlie0129.github.io/blog/p/mcx4121a-10g-to-25g/</link><pubDate>Fri, 19 Jul 2024 16:37:00 +0800</pubDate><guid>https://charlie0129.github.io/blog/p/mcx4121a-10g-to-25g/</guid><description>&lt;p>10G ConnectX-4 Lx NICs can be flashed to 25G with the right firmware. This is useful if you have a 10G NIC and want to upgrade to 25G without buying a new NIC. This article will guide you through the process of flashing a 10G Mellanox ConnectX-4 Lx NIC to 25G.&lt;/p>
&lt;p>&lt;img src="https://charlie0129.github.io/blog/p/mcx4121a-10g-to-25g/images/cx4121a-10g.jpg"
width="4032"
height="3024"
srcset="https://charlie0129.github.io/blog/p/mcx4121a-10g-to-25g/images/cx4121a-10g_hu_e67c9199f79997b.webp 480w, https://charlie0129.github.io/blog/p/mcx4121a-10g-to-25g/images/cx4121a-10g_hu_f473233eaea7608d.jpg 480w, https://charlie0129.github.io/blog/p/mcx4121a-10g-to-25g/images/cx4121a-10g_hu_c3aef0b072ec866.webp 1024w, https://charlie0129.github.io/blog/p/mcx4121a-10g-to-25g/images/cx4121a-10g_hu_dc742250568c7fee.jpg 1024w, https://charlie0129.github.io/blog/p/mcx4121a-10g-to-25g/images/cx4121a-10g_hu_f66edbb97499b063.webp 1536w, https://charlie0129.github.io/blog/p/mcx4121a-10g-to-25g/images/cx4121a-10g_hu_78d6e0bb25964f66.jpg 1536w, https://charlie0129.github.io/blog/p/mcx4121a-10g-to-25g/images/cx4121a-10g_hu_91d79469bdb58ec7.webp 2048w, https://charlie0129.github.io/blog/p/mcx4121a-10g-to-25g/images/cx4121a-10g_hu_30a548030205647.jpg 2048w, https://charlie0129.github.io/blog/p/mcx4121a-10g-to-25g/images/cx4121a-10g_hu_4a93a94a834c4b11.webp 2560w, https://charlie0129.github.io/blog/p/mcx4121a-10g-to-25g/images/cx4121a-10g_hu_da6e88a334cf467c.jpg 2560w, https://charlie0129.github.io/blog/p/mcx4121a-10g-to-25g/images/cx4121a-10g_hu_be28c42d38efe826.webp 4032w, https://charlie0129.github.io/blog/p/mcx4121a-10g-to-25g/images/cx4121a-10g_hu_b51529c87b4602cd.jpg 4032w"
loading="lazy"
alt="10G ConnectX-4 Lx"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="320px"
>
&lt;/p>
&lt;p>&lt;img src="https://charlie0129.github.io/blog/p/mcx4121a-10g-to-25g/images/cx4121a-25g.jpg"
width="3455"
height="2591"
srcset="https://charlie0129.github.io/blog/p/mcx4121a-10g-to-25g/images/cx4121a-25g_hu_56e8aacbea38e6dd.webp 480w, https://charlie0129.github.io/blog/p/mcx4121a-10g-to-25g/images/cx4121a-25g_hu_8e6b89cef8aee16d.jpg 480w, https://charlie0129.github.io/blog/p/mcx4121a-10g-to-25g/images/cx4121a-25g_hu_ed897d5a8fd11782.webp 1024w, https://charlie0129.github.io/blog/p/mcx4121a-10g-to-25g/images/cx4121a-25g_hu_25c0489be6304c6c.jpg 1024w, https://charlie0129.github.io/blog/p/mcx4121a-10g-to-25g/images/cx4121a-25g_hu_7763f81dd3853a26.webp 1536w, https://charlie0129.github.io/blog/p/mcx4121a-10g-to-25g/images/cx4121a-25g_hu_a70cb4540c546c23.jpg 1536w, https://charlie0129.github.io/blog/p/mcx4121a-10g-to-25g/images/cx4121a-25g_hu_39f701fb24c38667.webp 2048w, https://charlie0129.github.io/blog/p/mcx4121a-10g-to-25g/images/cx4121a-25g_hu_d0e4c3fbcae55987.jpg 2048w, https://charlie0129.github.io/blog/p/mcx4121a-10g-to-25g/images/cx4121a-25g_hu_244c2634c4e6d6e.webp 2560w, https://charlie0129.github.io/blog/p/mcx4121a-10g-to-25g/images/cx4121a-25g_hu_2b581b867a6ad0ea.jpg 2560w, https://charlie0129.github.io/blog/p/mcx4121a-10g-to-25g/images/cx4121a-25g_hu_fa581e091ddafd5b.webp 3455w, https://charlie0129.github.io/blog/p/mcx4121a-10g-to-25g/images/cx4121a-25g_hu_581adf59df5a6c23.jpg 3455w"
loading="lazy"
alt="25G ConnectX-4 Lx"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="320px"
>
&lt;/p>
&lt;p>Warning: Do not try this on MCX4121C. It will brick the NIC.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Download firmware from &lt;a class="link" href="https://network.nvidia.com/support/firmware/connectx4lxen/" target="_blank" rel="noopener"
>Firmware for ConnectX®-4 Lx EN&lt;/a>. Choose &lt;code>MCX4121A-ACUT&lt;/code>. I will assume the firmware file is named &lt;code>fw-ConnectX4Lx-rel-14_32_1010-MCX4121A-ACU_Ax-UEFI-14.25.17-FlexBoot-3.6.502.bin&lt;/code>.&lt;/p>
&lt;p>If you are wondering what&amp;rsquo;s the difference between models, here&amp;rsquo;s a table for ConnectX-4 Lx cards (&lt;a class="link" href="files/pb-connectx-4-lx-en-card.pdf" >original document&lt;/a>). You should choose 25G models to flash to.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Max Network Speed&lt;/th>
&lt;th>Interface Type&lt;/th>
&lt;th>Supported Ethernet Speeds (GbE)&lt;/th>
&lt;th>Host Interface&lt;/th>
&lt;th>Additional Features&lt;/th>
&lt;th>OPN&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>1x 10GbE&lt;/td>
&lt;td>SFP28&lt;/td>
&lt;td>10, 1&lt;/td>
&lt;td>PCIe 3.0 x8&lt;/td>
&lt;td>&lt;/td>
&lt;td>MCX4111A-XCAT&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2x 10GbE&lt;/td>
&lt;td>SFP28&lt;/td>
&lt;td>10, 1&lt;/td>
&lt;td>PCIe 3.0 x8&lt;/td>
&lt;td>&lt;/td>
&lt;td>MCX4121A-XCAT&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2x 10GbE&lt;/td>
&lt;td>SFP28&lt;/td>
&lt;td>10, 1&lt;/td>
&lt;td>PCIe 3.0 x8&lt;/td>
&lt;td>Host Management, UEFI Enabled&lt;/td>
&lt;td>MCX4121A-XCHT&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>1x 25GbE&lt;/td>
&lt;td>SFP28&lt;/td>
&lt;td>25, 10, 1&lt;/td>
&lt;td>PCIe 3.0 x8&lt;/td>
&lt;td>&lt;/td>
&lt;td>MCX4111A-ACAT&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>1x 25GbE&lt;/td>
&lt;td>SFP28&lt;/td>
&lt;td>25, 10, 1&lt;/td>
&lt;td>PCIe 3.0 x8&lt;/td>
&lt;td>UEFI Enabled&lt;/td>
&lt;td>MCX4111A-ACUT&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2x 25GbE&lt;/td>
&lt;td>SFP28&lt;/td>
&lt;td>25, 10, 1&lt;/td>
&lt;td>PCIe 3.0 x8&lt;/td>
&lt;td>&lt;/td>
&lt;td>MCX4121A-ACAT&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2x 25GbE&lt;/td>
&lt;td>SFP28&lt;/td>
&lt;td>25, 10, 1&lt;/td>
&lt;td>PCIe 3.0 x8&lt;/td>
&lt;td>UEFI Enabled&lt;/td>
&lt;td>MCX4121A-ACUT&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>1x 40GbE&lt;/td>
&lt;td>QSFP28&lt;/td>
&lt;td>40, 25, 10, 1&lt;/td>
&lt;td>PCIe 3.0 x8&lt;/td>
&lt;td>&lt;/td>
&lt;td>MCX4131A-BCAT&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>1x 50GbE&lt;/td>
&lt;td>QSFP28&lt;/td>
&lt;td>50, 40, 25, 10, 1&lt;/td>
&lt;td>PCIe 3.0 x8&lt;/td>
&lt;td>&lt;/td>
&lt;td>MCX4131A-GCAT&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/li>
&lt;li>
&lt;p>Download and install &lt;a class="link" href="https://network.nvidia.com/products/adapter-software/firmware-tools/" target="_blank" rel="noopener"
>NVIDIA Firmware Tools (MFT)&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;code>mst start&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;code>mst ststus&lt;/code> You will see you MST device, e.g. &lt;code>/dev/mst/mt4117_pciconf0&lt;/code>. I will use this device path in this article. If your path differs from this, please change it accordingly.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Save GUID, MAC: &lt;code>flint -d /dev/mst/mt4117_pciconf0 query full &amp;gt; flint_query.txt&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Save hardware info: &lt;code>flint -d /dev/mst/mt4117_pciconf0 hw query &amp;gt; flint_hwinfo.txt&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Save current firmware: &lt;code>flint -d /dev/mst/mt4117_pciconf0 ri orig_firmware.bin&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Save current firmware config: &lt;code>flint -d /dev/mst/mt4117_pciconf0 dc orig_firmware.ini&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Save current PXE ROM (if exists): &lt;code>flint -d /dev/mst/mt4117_pciconf0 rrom orig_rom.bin&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Save current PCI VPD: &lt;code>mlxburn -d /dev/mst/mt4117_pciconf0 -vpd &amp;gt; orig_vpd.txt&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;code>flint -i fw-ConnectX4Lx-rel-14_32_1010-MCX4121A-ACU_Ax-UEFI-14.25.17-FlexBoot-3.6.502.bin verify&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;code>flint -i fw-ConnectX4Lx-rel-14_32_1010-MCX4121A-ACU_Ax-UEFI-14.25.17-FlexBoot-3.6.502.bin -d /dev/mst/mt4117_pciconf0 -allow_psid_change burn&lt;/code>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>Reboot you machine. You should see your NIC is now have 25G speed.&lt;/p>
&lt;p>Bonus:&lt;/p>
&lt;ul>
&lt;li>To change MAC address: &lt;code>flint -d /dev/mst/mt4117_pciconf0 -mac 02c90abcdef0 sg&lt;/code>&lt;/li>
&lt;li>To change GUID: &lt;code>flint -d /dev/mst/mt4117_pciconf0 -guid 0002c9000abcdef0 sg&lt;/code>&lt;/li>
&lt;/ul></description></item><item><title>InfiniBand Performance Test</title><link>https://charlie0129.github.io/blog/p/ib-perf-test/</link><pubDate>Fri, 19 Jul 2024 11:10:00 +0800</pubDate><guid>https://charlie0129.github.io/blog/p/ib-perf-test/</guid><description>&lt;p>We have a 200Gbps InfiniBand network among about 100 nodes, connected using &lt;em>NVIDIA ConnectX-7 NICs (HDR200)&lt;/em> to a &lt;em>NVIDIA MQM9700&lt;/em> switch. Each OSFP twin port (2xNDR, 2x400Gbps) on &lt;em>QM9700&lt;/em> is splitted into 4xNDR200 ports to connect to 4x&lt;em>NVIDIA ConnectX-7 NICs&lt;/em> using 2xNDR to 4xNDR200 DAC/ACC (OSFP to 4x OSFP).&lt;/p>
&lt;p>&lt;img src="https://charlie0129.github.io/blog/p/ib-perf-test/images/topo.png"
width="2020"
height="1008"
srcset="https://charlie0129.github.io/blog/p/ib-perf-test/images/topo_hu_72e9afa7913190fb.webp 480w, https://charlie0129.github.io/blog/p/ib-perf-test/images/topo_hu_109f3449fa4d8720.jpg 480w, https://charlie0129.github.io/blog/p/ib-perf-test/images/topo_hu_ffa04b394bad063d.webp 1024w, https://charlie0129.github.io/blog/p/ib-perf-test/images/topo_hu_593e2cbffc5a91a6.jpg 1024w, https://charlie0129.github.io/blog/p/ib-perf-test/images/topo_hu_e2adfdb5ca88bf30.webp 1536w, https://charlie0129.github.io/blog/p/ib-perf-test/images/topo_hu_133ab95db94b548.jpg 1536w, https://charlie0129.github.io/blog/p/ib-perf-test/images/topo_hu_ca7e03894ccd3f51.webp 2020w, https://charlie0129.github.io/blog/p/ib-perf-test/images/topo_hu_552338335ed791f9.jpg 2020w"
loading="lazy"
alt="Topology"
class="gallery-image"
data-flex-grow="200"
data-flex-basis="480px"
>
&lt;/p>
&lt;p>We want to test the performance of the network between 2 nodes just to make sure it is working. We expect to see a bandwidth of around 200Gbps.&lt;/p>
&lt;p>Check the status of the Infiniband devices. Make sure at least one link is up (&lt;code>phys state: 5: LinkUp&lt;/code>) on both nodes.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@tj01-h20-node139:/# ibstatus
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">Infiniband device &amp;#39;mlx5_7&amp;#39; port 1 status:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> default gid: fe80:0000:0000:0000:&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> base lid: 0x6c
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> sm lid: 0x4
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> state: 4: ACTIVE
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> phys state: 5: LinkUp
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> rate: 200 Gb/sec (2X NDR)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go"> link_layer: InfiniBand
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Check if both nodes are connected to the Subnet Manager. You should see the name of both nodes appear on the list.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@tj01-h20-node139:/# ibnetdiscover
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">&lt;/span>&lt;span class="gp">#&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Topology file: generated on Fri Jul 19 02:49:25 2024&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gp">#&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Initiated from node &amp;lt;redacted&amp;gt; port &amp;lt;redacted&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">&lt;/span>&lt;span class="go">vendid=0x2c9
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">devid=0xd2f2
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">sysimgguid=0x9c05&amp;lt;redacted&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">switchguid=0x9c05&amp;lt;redacted&amp;gt;(9c05&amp;lt;redacted&amp;gt;)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">Switch 129 &amp;#34;S-9c05&amp;lt;redacted&amp;gt;&amp;#34; # &amp;#34;MF0;CNTSN-POD229-QM97-IB-02:MQM9700/U1&amp;#34; enhanced port 0 lid 1 lmc 0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">[1] &amp;#34;H-b83f&amp;lt;redacted&amp;gt;&amp;#34;[1](b83f&amp;lt;redacted&amp;gt;) # &amp;#34;tj01-4090-node005 mlx5_2&amp;#34; lid 22 2xNDR
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">[2] &amp;#34;H-946d&amp;lt;redacted&amp;gt;&amp;#34;[1](946d&amp;lt;redacted&amp;gt;) # &amp;#34;tj01-4090-node004 mlx5_2&amp;#34; lid 27 2xNDR
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">[3] &amp;#34;H-a088&amp;lt;redacted&amp;gt;&amp;#34;[1](a088&amp;lt;redacted&amp;gt;) # &amp;#34;tj01-4090-node006 mlx5_2&amp;#34; lid 10 2xNDR
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">[4] &amp;#34;H-946d&amp;lt;redacted&amp;gt;&amp;#34;[1](946d&amp;lt;redacted&amp;gt;) # &amp;#34;tj01-4090-node007 mlx5_2&amp;#34; lid 12 2xNDR
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">[6] &amp;#34;H-946d&amp;lt;redacted&amp;gt;&amp;#34;[1](946d&amp;lt;redacted&amp;gt;) # &amp;#34;tj01-4090-node009 mlx5_2&amp;#34; lid 11 2xNDR
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">...omitted
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Make sure &lt;code>perftest&lt;/code> is installed.&lt;/p>
&lt;p>On one node:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@tj01-4090-node099:/# ib_send_bw --report_gbit -a -F -d mlx5_2
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ul>
&lt;li>&lt;code>--report_gbit&lt;/code>: Show result in gigabit.&lt;/li>
&lt;li>&lt;code>-a&lt;/code>: Run sizes from 2 till 2^23.&lt;/li>
&lt;li>&lt;code>-F&lt;/code>: Do not show a warning even if cpufreq_ondemand module is loaded, and cpu-freq is not on max.&lt;/li>
&lt;li>&lt;code>-d&lt;/code>: Use IB device. To make sure you are using the device you want to test (if you have multiple IB devices like me).&lt;/li>
&lt;/ul>
&lt;p>On another node:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">root@tj01-h20-node139:/# ib_send_bw --report_gbit -a -F -d mlx5_2 tj01-4090-node099
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;code>tj01-4090-node099&lt;/code> is the IP address (hostname) of the other node.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">---------------------------------------------------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Send BW Test
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Dual-port : OFF Device : mlx5_2
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Number of qps : 1 Transport type : IB
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Connection type : RC Using SRQ : OFF
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> PCIe relax order: ON
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ibv_wr* API : ON
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> TX depth : 128
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> CQ Moderation : 100
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Mtu : 4096[B]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Link type : IB
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Max inline data : 0[B]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> rdma_cm QPs : OFF
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Data ex. method : Ethernet
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">---------------------------------------------------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> local address: LID 0x6c QPN 0x0050 PSN 0xddd611
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> remote address: LID 0x28 QPN 0x0050 PSN 0xa3c746
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">---------------------------------------------------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> #bytes #iterations BW peak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 2 1000 0.052812 0.050794 3.174618
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 4 1000 0.080899 0.080547 2.517093
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 8 1000 0.17 0.17 2.624748
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 16 1000 0.35 0.35 2.741373
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 32 1000 0.70 0.70 2.736427
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 64 1000 1.62 1.62 3.159528
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 128 1000 3.07 3.07 2.994503
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 256 1000 5.46 5.46 2.663988
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 512 1000 13.24 13.23 3.230121
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 1024 1000 26.58 26.56 3.241834
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 2048 1000 51.80 51.75 3.158744
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 4096 1000 82.15 82.11 2.505647
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 8192 1000 89.37 89.33 1.363014
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 16384 1000 89.01 87.24 0.665597
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 32768 1000 172.67 96.54 0.368268
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 65536 1000 181.95 108.83 0.207586
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 131072 1000 181.82 137.78 0.131399
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 262144 1000 187.32 163.15 0.077797
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 524288 1000 190.12 179.08 0.042696
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 1048576 1000 191.18 187.28 0.022326
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 2097152 1000 192.69 192.69 0.011485
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 4194304 1000 195.53 195.53 0.005827
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 8388608 1000 196.69 196.69 0.002931
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">---------------------------------------------------------------------------------------
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item></channel></rss>