Nvme-MI 协议理解-overview

最近工作涉及到做一些MI 协议测试用例编写。 看起来MI 协议很繁杂,看了两个多月了,想边学习理解,边进行总结。

MI 协议主要涉及物理层smbus/I2C, 中间传输层的MCTP,和最上层封装起来的MI 层。
在这里插入图片描述
这里主要着重在out of band, in band 后期深入在总结。
在这里插入图片描述
先总结下MI协议大致的执行过程:

  1. Host 发MI报文消息给 device(slave)
  2. 先将MI 报文封装成MCTP报文
  3. 将完整MCTP报文通过I2C/smbus 链路发给device
  4. device 收到MCTP报文,解封MCTP报文得到MI报文
  5. 解析MI 报文发送消息,slave device 会回复的消息数据以MI 格式封装成MI 报文
  6. 再将MI报文封装成MCTP数据封装
  7. 再将MCTP报文通过I2C链路发给host
  8. Host 解封chengMCTP,再回到step 1,形成闭环。

写到这里,好像之前搞混了一个知识点,又混论吞枣了, 到底MI 格式和MCTP 格式,谁封装了谁,谁被解封,谁被解析。
两个报文消息格式有啥不一样来着。 我们仔细探究下协议吧。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
从MI 协议这句话,我们可以看出MI 消息报文payload 是MCTP 消息组包的过程,MI消息报文长度不能超过4224 bytes,即MDTS。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

从上述协议解析就可以看出来,MCTP报文格式和MI 报文格式差别,及MI 报文怎么组包MCTP packets。

从二者header也可以看出来,tag owner bit 可以设置为1 或0, 用来区别消息request和response互换。在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值