规范版本与版本字节
规范是不断演进的文档。模块会声明其存储器映射遵循哪个版本,主机则按自己已知 的版本来解析该映射。多数情况下两者足够一致;不一致时,某个字节就会被读成并非其本意的内容。本页列出版本字节、解码方法,以及每一代大致新增了什么,以便你判断眼前这个字段对当前模块而言是否存在。
版本声明位置
| 系列 | 字节 | 编码 |
|---|---|---|
| SFF-8472(SFP) | A0h 字节 94 | 枚举代码(见下表) |
| SFF-8636(QSFP) | 字节 1 | 枚举代码(见下表) |
| CMIS | 字节 1 | 主版本半字节.次版本半字节(50h = 5.0) |
| MIS(SFP-DD) | 字节 1 | 与 CMIS 相同 |
| INF-8077i(XFP) | 无 | 标识符 06h 即隐含 INF-8077i rev 4.x |
SFF-8472 — 字节 94
| 值 | 版本 | 主要新增内容(大致) |
|---|---|---|
| 00h | 未指定 | 诊断功能出现之前的模块;仅有身份信息 |
| 01h | 9.3 | 首次引入数字诊断:A2h 阈值、监测值、标志 |
| 02h | 9.5 | 澄清说明,可选的激光器温度/TEC 监测值 |
| 03h | 10.2 | SFP+ 时代:速率选择、线性接收机选项、字节 93 增强选项 |
| 04h | 10.4 | 按 SFF-8431 的软件速率选择、功率等级 2、按 SFF-8079 的应用选择 |
| 05h | 11.0 | 10G 铜缆(DAC)编码 — 线缆技术位,60–61 中的衰减 |
| 06h | 11.3 | 扩展选项、可调谐发射机选项、16GFC 速率代码 |
| 07h | 11.4 | 分页 A2h 存储器(字节 64 位 4)、SFF-8690 可调谐 02h 页 |
| 08h | 12.0 | 通过 SFF-8024 实现的字节 36 扩展规范合规性;25G/100G 时代的代码 |
| 09h | 12.4 | 功率等级 3(2.0 W)、字节 62 中的 FC 速率 2、PAM4 编码代码、与 SFF-8024 对齐 |
经验法则:声明为 08h 或 09h 的模块,其字节 36 必须有意义(或为零),并且当字节 12 = FFh 时字节 66 必须是 ×250 Mb/s 的速率;声明为 03h 或更低版本的模块,字节 36 完全没有语义,主机会忽略它。
SFF-8636 — 字节 1
| 值 | 遵循的映射 | 主要新增内容 |
|---|---|---|
| 00h | 未指定(SFF-8436 rev 4.8 或更早) | 最初的 QSFP+ 映射 |
| 01h | SFF-8436 rev 4.8 或更早 | — |
| 02h | SFF-8436 rev 4.8,字节 186–189 按 SFF-8636 | 波长和容差字段 |
| 03h | SFF-8636 rev 1.3 或更早 | 首个 SFF-8636 版本 |
| 04h | rev 1.4 | — |
| 05h | rev 1.5 | — |
| 06h | rev 2.0 | QSFP28/100G:字节 192 扩展合规性、功率等级 5–7、CDR 控制和 LOL 标志 |
| 07h | rev 2.5、2.6、2.7 | 20h–21h 页、Tx 禁用快速模式、更多表 4-4 代码 |
| 08h | rev 2.8、2.9、2.10 | 功率等级 8 和字节 107 最大功率、200G(QSFP56)代码、PAM4 编码 |
早于 rev 2.0 的主机不会读取字节 192:仅凭这一点,插在 40G 时代交换机上的 100G 模块就会被判定为“未知”,无论厂商块中写了什么。
CMIS — 字节 1
| 值 | 版本 | 主要变更 |
|---|---|---|
| 30h | 3.0(2018,QSFP-DD MSA) | 首个统一模型:下层/上层页、应用、模块和数据通路状态机、CDB |
| 40h | 4.0(2019) | 分阶段控制集、VDM 20h–2Fh 页、扩展应用描述符、更清晰的时长定义 |
| 41h | 4.1 | 勘误和澄清 |
| 50h | 5.0(2021,OIF) | 最多 32 通道的存储体、更完善的数据通路和通道标志模型、扩展的 VDM 可观测量、13h–14h 诊断页 |
| 51h–53h | 5.1、5.2、5.3 | 增量更新:新增 VDM 类型、相干(ZR)监测接口、固件管理方面的改进 |
在只实现了 4.0 的主机上使用 CMIS 5.x 模块,基本流程(状态机、应用选择)通常可以工作,但主机不会读取更新的 VDM 页;仅支持 3.0 的主机甚至可能完全无法激活 5.x 模块,参见CMIS 问题。MIS 版本与 CMIS 保持同步:MIS。
兼容性规则
- 更新的模块,更旧的主机:未知代码会被解码为未知;更高的字节 94/字节 1 数值通常可以容忍。问题出现在主机需要一个只存在于新版本中的字段时(字节 192、应用)。
- 更旧的模块,更新的主机:没有问题;主机会保持向后兼容的解析方式。
- 声明版本与实际内容不一致:这才是真正的陷阱。字节 12 = FFh 时若声明 12.x 但字节 66 为空,主机会得到“0 Gb/s”;声明 rev 2.0+ 但字节 192 是无意义数据,会得到未知类型。编码时应让版本字节与实际使用的字段保持一致。
- SFF-8024 在模块中没有版本字节;主机所用表格的版本决定了它能识别哪些代码。
其他文档及其更新节奏
| 文档 | 当前代际 | 说明 |
|---|---|---|
| SFF-8024 | rev 4.x,每年修订多次 | 新的标识符、连接器和接口 ID 最先出现在这里 |
| INF-8077i | rev 4.5(2005) | XFP;已稳定,预计不会再修订,参见 XFP |
| SFF-8690/SFF-TA-1004 | 1.x | 可调谐映射,参见可调谐映射 |
| SFF-8079/SFF-8089 | 1.x | 速率/应用选择,参见速率选择 |
| 硬件规范(SFF-8431、SFF-8679、QSFP-DD HW、OSFP) | 见目录 | SFP、QSFP 硬件系列 |
文档编号和标题:MSA 规范目录。
在 CodingBox 中
CodingBox 会先读取版本字节,再应用与之匹配的字段定义,因此在所声明版本中不存在的字段会显示为保留字段,而不会被错误标注。 EEPROM editor可以让你同时设置版本字节及其所支配的字段。