CMIS——通用管理接口
CMIS(Common Management Interface Specification,通用管理接口规范)是所有新一代高速封装形式的管理模型:QSFP-DD、OSFP、OSFP-XD、QSFP112、SFP-DD 和 SFP112(作为 SFP+ with CMIS)、 DSFP、COBO 以及支持 CMIS 的 QSFP。它起源于 QSFP-DD MSA(CMIS 3.0,2018 年),被 OSFP 和 COBO 组织采纳,自 5.0 版(2021 年)起由 OIF 维护。与 SFF-8636 相比,它不是更大的存储器映射,而是另一种模型:面向最多 32 通道的分 bank 分页、模块与每条数据通路各自的 状态机、以 应用(application) 取代兼容性位字段、多样化诊断(VDM)以及用于固件和扩展功能的命令通道(CDB)。版本字节与历史:规范版本。
存储器模型
| 区域 | 寻址 | 内容 |
|---|---|---|
| 低页(字节 0–127) | 始终可见 | 标识符、版本、模块状态、标志位、模块监测量、全局控制、介质类型、应用描述符 1–8、密码、bank select 126、页选择 127 |
| 上页 00h(128–255) | 页 127 = 00h | 厂商信息块、功耗等级、连接器、线缆长度、介质技术、校验和 |
| 01h | 能力广播 | 固件/硬件版本、链路长度、波长、支持的页与 bank、各阶段耗时、信号完整性控制、描述符 9–15 |
| 02h | 阈值 | 模块与通道告警/预警阈值 |
| 04h | 激光器能力 | 可调谐激光器的频率网格与范围(SFF-TA-1004 谱系) |
| 10h(分 bank) | 通道控制 | 数据通路去初始化、Tx disable、极性、squelch、均衡、分级控制集(staged control set) |
| 11h(分 bank) | 通道状态 | 数据通路状态、逐通道标志位、通道监测量、配置状态、当前生效控制集 |
| 12h(分 bank) | 可调谐激光器控制 | 每通道的信道/波长 |
| 13h–14h(分 bank) | 诊断 | 环回、PRBS 发生器与检测器 |
| 20h–2Fh(分 bank) | VDM | 描述符、采样值、阈值、标志位 |
| 9Fh | CDB | 命令块:命令 ID、长度、校验和、本地负载 |
| A0h–AFh | CDB EPL | 用于大数据量传输(固件镜像)的扩展负载 |
| 80h–FFh(其他) | 厂商 | 自定义页 |
bank 寻址 8 条通道:bank 0 对应通道 1–8,bank 1 对应通道 9–16,依此类推;具体实现了多少个 bank 由 page 01h 广播。只有 page 00h 的模块会置位 flat memory 位(字节 2 bit 7)。总线:单一地址 A0h,最高 400 kHz,每个插槽一根 ModSelL — 双线接口。
低页 — 主机据以运行的字节
| 字节 | 字段 | 说明 |
|---|---|---|
| 0 | 标识符 | 18h QSFP-DD、19h OSFP、1Eh QSFP with CMIS…(SFF-8024) |
| 1 | CMIS 版本 | 高低半字节分别为主、次版本号:50h = 5.0,40h = 4.0,30h = 3.0 |
| 2 | 存储器特性 | bit 7 为 flat memory,另有仅支持分级配置等能力位 |
| 3 | 模块状态 | bit 3–1:1 LowPwr,2 PwrUp,3 Ready,4 PwrDn,5 Fault;bit 0 中断未置位 |
| 8–11 | 模块标志位 | 状态变化、温度/Vcc 告警、辅助告警、自定义;均为锁存,读取后清除 |
| 14–25 | 模块监测量 | 温度、Vcc、Aux1–Aux3(TEC 电流、激光器温度、附加电源),以及自定义项 |
| 26 | 全局控制 | 5.x:bit 6 LowPwrAllowRequestHW,bit 5 squelch method,bit 4 LowPwrRequestSW,bit 3 软件复位(4.x:bit 6 LowPwr,bit 4 ForceLowPwr) |
| 37–38 | CDB 状态 | 命令块 1 和 2 的 busy / success / fail |
| 39–40 | 当前固件 | 运行镜像的主、次版本号 |
| 85 | 介质类型 | 01h MMF,02h SMF,03h 无源铜缆,04h 有源电缆,05h BASE-T |
| 86–117 | 应用描述符 1–8 | 每个 4 字节:主机接口 ID、介质接口 ID、主机/介质通道数、主机通道分配选项 |
| 118–121 | 密码修改 | 由厂商定义 |
| 122–125 | 密码输入 | 由厂商定义 — 写保护密码存放于此 |
| 126 | Bank 选择 | — |
| 127 | 页选择 | — |
模块状态机
Reset ──► MgmtInit ──► ModuleLowPwr ──► ModulePwrUp ──► ModuleReady
▲ │
└──────── ModulePwrDn ◄────────┘
(发生致命错误时,任何状态都可能转入 ModuleFault)
- MgmtInit — 模块启动其控制器,此时尚不能读取身份信息(按硬件规范最长 2 s)。
- ModuleLowPwr — 可读取身份、能力广播和阈值;功耗限制在 class 1;主机在此阶段校验模块。
- ModulePwrUp → ModuleReady — 主机拉低 LPMode 引脚(或清除 LowPwrRequestSW),模块随即为光学部分上电;此后即可初始化数据通路。
- ModulePwrDn — LPMode 置位后的相反过程。
一直停留在 LowPwr 的模块是最典型的 CMIS 故障: CMIS 问题排查、功耗与热管理。
应用与数据通路
CMIS 模块不使用兼容性位,而是广播 应用(application) — 主机电接口与介质接口的搭配,并给出通道数:
| 描述符 | 主机接口 | 介质接口 | 主机通道 / 介质通道 | 示例 |
|---|---|---|---|---|
| App 1 | 12h 400GAUI-8 C2M | 1Ch 400GBASE-DR4 | 8 / 4 | 一条 400G 链路 |
| App 2 | 0Eh 100GAUI-2 C2M | 14h 100GBASE-DR | 2 / 1 | 4 × 100G 拆分 |
主机通过向 Staged Control Set 0(page 10h 字节 145–152)写入 AppSel(bit 7–4)、 DataPathID(bit 3–1)和显式控制位来为每条通道选择应用,随后置位 ApplyDPInit(page 10h 字节 143)。模块在 ConfigStatus(page 11h 字节 202–205:accepted、rejected、invalid AppSel、invalid lane combination…)中给出应答,并将被接受的值复制到 Active Control Set (page 11h 206–221)。此后每条数据通路各自运行自己的状态机:
DPDeactivated ──► DPInit ──► DPInitialized ──► DPTxTurnOn ──► DPActivated
▲ │
└────────── DPDeinit ◄───────── DPTxTurnOff ◄──────────────┘
各通道的状态记录在 page 11h 字节 128–131 中(每通道占一个半字节),每一步的最长耗时在 page 01h 中广播,供主机据此判断等待时间。逐通道的 Tx disable 位于 page 10h 字节 130。模块未列为应用的拆分方式一律不可用 — 速度与速率。
监测:标志位、监测量、VDM
- 模块监测量(低页 14–25)和 通道监测量(page 11h:Tx 功率 154–169,Tx 偏置电流 170–185,Rx 功率 186–201,每通道 2 字节)使用与 SFP/QSFP 相同的 16 位格式(单位)。
- 阈值 位于 page 02h;标志位 均为锁存,读取后清除,且每个标志位各有掩码;IntL 在任意未屏蔽的标志位置位时给出信号。
- VDM(page 20h–2Fh)新增了旧规范从未提供的观测量:pre-FEC BER、不可纠正的 FEC 帧数、每通道 SNR、激光器温度与老化、eSNR、PAM4 电平转换参数 — 每一项都有各自的描述符、阈值和标志位。这就是 400G 模块能在错误到达主机之前就报告链路质量的方式(监测)。
CDB — 命令数据块
page 9Fh 是一个邮箱区:主机写入 命令 ID(字节 128–129)、负载长度(130–132)、校验和(133),以及最多 120 字节的本地负载(136–255),必要时可在 EPL 页 A0h–AFh 中追加更多数据;模块执行命令后在状态字节 37–38 和应答负载中给出结果。标准命令包括:
| 命令 | 用途 |
|---|---|
| 0000h | 查询状态 |
| 0040h / 0041h | 模块特性 / 固件管理特性 |
| 0100h | 获取固件信息(运行中镜像与非活动镜像) |
| 0101h | 开始固件下载 |
| 0103h / 0104h | 通过 LPL / EPL 写入固件块 |
| 0107h | 完成下载 |
| 0109h / 010Ah | 运行镜像 / 提交镜像 |
| 0102h | 中止 |
CDB 是厂商工具在现场升级模块固件的途径,部分厂商也用它实现配置和解锁功能。支持情况与特性在 page 01h 中广播。
校验和与密码
page 00h 字节 222 是字节 128–221 的校验和;page 01h、02h 和 04h 在字节 255 中携带各自的页校验和(校验和)。密码(122–125)和厂商解锁方案不在规范范围内 — EEPROM 重编程。
主机支持情况
各家网络操作系统对 CMIS 4.0 和 5.x 的实现深度不一:有的会完整驱动应用/数据通路流程,有的只是释放 LPMode,指望模块自行完成上电。这一差异是大多数"已识别但始终未就绪"故障的根源 — CMIS 问题排查、主机做了什么。
在 CodingBox 中
CodingBox 通过标识符和版本字节识别 CMIS,读取低位存储器、page 00h、01h、02h 以及分 bank 的通道页,依据 SFF-8024 解码应用描述符,在 DDM 中显示模块与数据通路状态及逐通道监测量,并在 EEPROM editor 中编辑身份信息,同时重新计算页校验和。通过 CDB 进行的固件操作因厂商而异,不在编辑器功能范围内。
寄存器级别的表格:低页映射表、上页映射表 00h/01h/02h、通道页映射表 10h/11h、VDM、CDB。