CodingBox Q&A Ask question

ConnectX-4 MCX456A-ECAT 在 100GBASE-LR4 上连不上 Cisco NCS,而两端各自环回测试都能通过

Asked Active Viewed 43 AI translation from English
4

我们有一对机柜,对接一台面向运营商的 Cisco NCS,其中一条 100G 服务器上联口自建成以来就没起来过。把服务器挪到另一个机柜、换一个配线架之后结果一样,所以我不再把它当成个例看待。

  • Supermicro 服务器,NVIDIA/Mellanox ConnectX-4 MCX456A-ECAT,两个端口都是空的
  • 通用的 100GBASE-LR4 QSFP28,单模,10 公里传输距离,两端各一个
  • 对端是 Cisco NCS,两个机房之间是暗光纤

真正卡住我的地方是:每个模块单独在自己的设备上做环回都能通过。把光纤直接环回插到同一个 QSFP28 上,网卡报告一条干净的 100G 链路,NCS 那边自环也是一样。把真正的这段链路接上去,就什么都没有了。

# module looped back on the NIC itself
Speed: 100000Mb/s
Link detected: yes

# same module, real span to the NCS
Speed: Unknown!
Link detected: no

我们已经试过:

  • 把两个模块都换成同一批的备用件,没有变化
  • 挪动服务器,换了一个配线架重新接线
  • 找网卡厂商开了工单,得到的答复是指向固件发行说明里的已验证收发器列表,但这解释不了为什么环回是通的

ConnectX-4 上的 LR4 是不是有什么特性,会导致本地环回能通、跨真实链路却始终不通?还是说我一直在追错方向?

Comments 3

Accepted answer

这看起来像是链路本身脏了,不是兼容性问题。

你目前换过的所有东西,都在已经测试通过的那一侧,这就是为什么什么都没变——唯一没动过的就是这段链路本身。所以该查的是这条路径:

  • 检查并清洁两个 QSFP28 模块的端面、两根跳线,以及中间的每一个法兰盘,然后重新插好
  • 清洁之后重新读取两端的 Rx 功率;接上真实链路时数值低于低告警阈值,而环回时正常,这正是路径上有损耗的特征
  • 顺便看看端接类型——一根 PC 抛光的跳线插到只支持 UPC 的端口上,回损会比模块预期的大得多,大致是 -35 dB 对比 -55 dB

厂商指给你的那份已验证收发器列表值得看一眼,但一个能在环回里干净起链路的模块,说明网卡本身已经在正确驱动它了。兼容性列表能解释的是那些直接被拒绝的模块,解释不了本地能通、跨链路就断的模块。

如果清洁之后还不行,下一步就是在这条暗光纤上用光源加功率计测一下,如果能借到 OTDR 就更好,总比再买一块网卡或者再买一对光模块划算。

8 Egyptnethawk74EG Show original (English) AI translation

环回只能证明一个端口能听到自己——激光器、接收器、速率设置都没问题。它说明不了你两个机房之间那段玻璃纤维的状况,而那恰恰是你还没测过的那一段。所以在再次怪罪网卡之前,先在接上真实链路的情况下从两端读数字:NCS 端口的 Rx 功率是多少,网卡那边又是多少?接上真实链路后 Rx 低于 Low Warn 阈值,是典型的指向对端或路径本身、而不是本地端口的信号。Linux 那边用 ethtool -m 应该能拿到同样的读数,如果返回的是 Cannot get module EEPROM information: Input/output error,不要把这理解成模块坏了——在 mlx5 上这通常是固件侧的模块访问问题,依次执行 mst start、mst cable add,再用 mlxcables 照样能拿到数值。

4 United Statescoaxhawk46US Show original (English) AI translation

答案就是清洁。我们用显微镜看了端面,两个模块加两根跳线全都有污染;跨机房配线架那根跳线情况更严重。把路径上的所有东西都清洁了一遍,重新插好,到 NCS 的 100G 链路第一次尝试就起来了,一直保持到现在。

有点懊恼自己在兼容性这个方向上花了那么长时间,而环回结果其实一直在告诉我模块没问题、问题出在路径上。给后来遇到这个问题的人提个醒:环回证明的是端口,不是光纤。

4 GermanytxhubDE Show original (English) AI translation
Log in to comment. Log in