问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

NVMe-MI协议深度解析:实现原理与MI报文结构详解

创作时间:
作者:
@小白创作中心

NVMe-MI协议深度解析:实现原理与MI报文结构详解

引用
1
来源
1.
https://picture.iczhiku.com/weixin/message1599102053308.html

NVMe-MI(NVMe Management Interface)协议是NVMe协议的重要补充,它提供了一种独立于NVMe协议的管理接口,使得即使在SSD出现故障时,也能通过另一条路径获取SSD的状态信息。本文将从宏观角度解读NVMe-MI协议的实现原理,并详细解析MI报文的结构。

知道NVMe-MI的作用后,我们先从宏观角度看一下它是怎么实现的。与NVMe协议不同,NVMe-MI协议是通过MCTP协议进行传输,同时底层物理层支持PCIe或者SMBus/I2C,本文后续默认物理层都是SMBus/I2C。物理层使用I2C的好处就是和NVMe协议完全隔离,即使SSD在NVMe看来是故障的,还能有另外一条路径查看SSD状态。

从整个协议栈我们可以看出一次完整的MI命令执行过程:

  1. Host将想要发送的命令按照MI的协议规范组成MI报文;
  2. 将MI报文当作MCTP的数据封装为MCTP报文;
  3. 完整的MCTP报文通过I2C链路发给SSD;
  4. SSD收到MCTP报文后,解封MCTP报文得到MI报文;
  5. 解析MI报文后获取发送消息,然后将要回复的数据按照MI协议规范组成MI报文;
  6. 再将回复MI报文当作MCTP的数据封装为MCTP报文;
  7. 再将MCTP报文通过I2C链路发送给Host;
  8. Host解封MCTP报文,再解析MI报文获取回复消息。


图1:NVMe-MI协议执行流程示意图

在整个过程中,我们具体来看一下MI报文,这是属于MI协议范畴,过程中涉及的MCTP协议,I2C协议可自行查看相关协议文档。

一个完整MI报文分为3部分,Header,Data和IC(Integrity Check)

Header:总共4个字节,主要指明该MI消息的类型;

Data:MI消息的具体数据,数据格式和大小因Header里面指明的类型不同而不同;

IC:总4个字节,Header和Data的CRC校验值,使用的是CRC-32C算法。


图2:MI报文结构示意图

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号