CodingBox Q&A Ask question

对QSFP28和QSFP-DD编码:离开SFF-8472的A0h/A2h之后,识别信息块在哪里

Asked Active Viewed 74 AI translation from English
4

我平时给系统集成商做小批量的模块重新编码,到目前为止手头处理的都是SFP形态的:读A0h的256字节,序列信息在前半部分,读A2h拿诊断和阈值数据,写识别信息块,完事。现在来了个客户带着100G和400G的模块,我的设备明显不够用了。

  • 待重新编码的模块:一盘QSFP28、几个QSFP-DD和一个OSFP样品
  • 现有编程器:普通I2C,只能读写A0h和A2h,完全没有分页选择功能
  • 对端设备在点亮端口之前会校验厂商名称、型号和序列号

我整理的内存布局笔记,正是想请人帮忙核对一下:

SFP/SFP+/SFP28 (SFF-8472): A0h 256B, serial ID in first 128B; A2h 256B diagnostics + thresholds, optional 128B pages
QSFP+/QSFP28 (SFF-8636): single A0h, 128B pages selected by byte 7Fh, page 00h mandatory
XFP (INF-8077i): byte 7Fh picks the active table, with serial ID in table 01h and user EEPROM in 02h
OSFP/QSFP-DD/SFP-DD (CMIS 5.x): lower 128B fixed, upper memory by bank and page via 7Eh and 7Fh

我已经试过:

  • 用SFP的读取方案去导出一个QSFP28,结果只拿到低半区加上当时碰巧选中的那一页
  • 对同一个模块连续导出两次,看看哪些字节是自己在变的

这份笔记对吗?一旦内存变成分页加分组(bank)的结构,做厂商编码时我实际需要写哪些字段?

Comments 5

这份笔记在大方向上是对的。你的设备缺的是:在SFF-8636上只有一个地址,高128字节是一个窗口——把页码写入字节7Fh,再读高半区,拿到的就是那一页。页00h是必选页,里面就是识别信息块,所以做编码通常不需要去别的页。CMIS在此基础上又加了一层bank:7Eh选bank,7Fh选页,低128字节始终固定、始终可读。没有分页选择功能,你的工具只会一直把模块当时停在哪一页就返回哪一页,这正是你描述的现象。

厂商编码要关心的字段各种形态都一样:厂商名称、型号、版本号、序列号、OUI以及校验和。校验和写错了,挑剔的对端设备会直接拒绝这个模块,哪怕十六进制转储里每个字符串看起来都完美无缺。另外要有心理准备:有些模块会用制造商密码和主机密码把厂商功能保护起来,而普通读取始终是开放的,所以你完全可能顺利导出一个模块,却写不进去。

4 KazakhstanrackhubKZ Show original (English) AI translation

第一次尝试正是被校验和坑了——字符串和一个已知良好的模块逐字节对得上,对端设备还是拒收这个模块。知道页00h就够识别信息块用了,这下工作范围小多了。

老实说结论就是我这台编程器根本干不了这事,因为它没办法在读之前先写字节7Fh。为了一单活给自制设备硬加分页选择功能,我宁可直接买一块新板子。市面上有没有真正能处理CMIS分组(bank)的设备,还是这更多只是数据手册上写写的功能?

2 ChinasfpnodeCN Show original (English) AI translation

商用板卡确实是这么宣传的——SFPTotal Plus X、Reveltronics的设备(REVELPROG-IS)、EDGE系列编程器和Flexoptix,都把QSFP-DD和OSFP列在功能清单里,还附带一个厂商代码数据库。SFPTotal号称有超过25,000个代码,Cisco、华为、HPE都在里面。

这些宣传跟你手头具体型号是否真的对得上,是另一回事,我也不会就这么信了。如果条件允许,在下单之前先弄一个客户的QSFP-DD样品放到板卡前面实测一下。数据手册上写支持某个封装形态,和支持你手上这个具体模块不是一回事,分组(bank)结构的模块正是差距最容易暴露的地方。

3 South Koreawaverunner63KR Show original (English) AI translation

作为对比,普通SFP的活儿一直都这么粗糙:256字节的转储里真正有用的只有前128字节,剩下的都是厂商保留区,多年来一直有人把GLC-LX或GLC-BX-D/GLC-BX-U的镜像写进通用CWDM模块,好让Catalyst 3560、HP J8692A或EX4200-24F接受它们。这方面流传过自制编程器的电路图,我自己做的是serp-0.3那一版,常用的参照对象是Finisar FCMJ-8521-3、HP J4858C或J4859C,以及D-Link DEM-310GT的转储数据。

完全是另一码事,但如果你手头以后会碰到GPON光猫棒,这点值得知道:那种设备根本不是从外部编码的。以FS GPON-ONU-34-20BI为例,它和诺基亚G-010S-A算是近亲,接上光纤后它会在192.168.1.10上以ONTUSER身份响应,你可以直接在棒子本身上拿到一个shell——用uci设置序列号和MAC地址,再用sfp_i2c从内部改写EEPROM里的厂商字符串。

2 Türkiyelinknerd83TR Show original (English) AI translation
Log in to comment. Log in