PBlaze5 520 系列特性——NVMe-MI接口的带外管理

48 篇文章 14 订阅
44 篇文章 16 订阅

这段故事源于PCIe产品的两个引脚SMClk和SMDat,实现规范是SMbus。

                                 图示1来源于《Enterprise SSD Form Factor Version1_a》里面SFF8639的引脚说明

图中左下角标注的颜色指示这对引脚是optional的,可以实现也可以不实现,但是对于企业级的产品这是有必要实现的(The Enterprise PCIe SSD should support SM-Bus operation)。

依据《Enterprise SSD Form Factor Version1_a》 (SFF Spec),SMbus提供了两个层面的功能,一种初级功能是对盘内vpd的读写,这个功能在3.3Vaux或主电源存在的时都可用。对于企业仓库管理,如果主板带电但是主机未开机,管理人员可以远程通过BMC检查盘的静态信息,如SN、MN、电源需求等;另一种高级功能是基于MCTP-over-SMbus协议之上的管理功能,(此spec未做更多解释),此功能在主电源存在时可用。

 

                                                         Server的BMC系统可以通过SMBus/I2C与NVMe SSD通信

依据另一份规范《NVM Express Management Interface 1_0a》(NVMe MI),利用SMbus可以来处理基础的管理命令(主要的一项就是对于Subsystem Management Data Structure的监控),还可以处理基于MCTP的相关请求。

可以看出两套协议都对MCTP有所涉及,那基于MCTP到底能做什么呢?

按照NVMe MI,它可以提供如下指令集合:

  • NVM Express Admin Command Set
  • Management Interface Command set
  • PCIe Command Set (optional)
  • NVM Express Management Enhancements

具体到每个命令集合里面又分为了mandatory和optional部分,举个例子,对于NVM Express Admin Command Set,mandatory的命令包括Get Feature、Get Log Page、Identify,optional的命令包括firmware activate、firmware image download、Format NVM、Namespace Management、Namespace Attachment、Security Send、Security Receive、Set Feature还有Vendor Specific部分。

利用这些admin命令,管理者就可以远程获取NVMe设备的信息、配置参数或者利用Vendor Specific部分实现特定功能的监控。比如主机开机的情况下,无需登录主机就可以升级固件, 再配合Activate firmware without reset就可以支持远程升级了。实现了这部分接口,可以做的事情还有很多,不过需要注意到很多optional命令有一些潜在的安全风险,实现起来可能需要配合一些措施保证数据的安全性,毕竟数据领域安全第一。

从企业IT系统运维的角度讲,带外管理提供了一套独立于主机系统的管理方案,能够配合服务器BMC系统,高效实现 NVMe设备监控、管理及升级等工作。

Ok,看起来实现这些功能是有必要的,那需要怎么实现呢?

                                                        图示2来自《NVM Express Management Interface 1_0a》

上图中可以看出NVMe MI 协议是可以基于SMBus/I2C或者PCIe VDM来实现的。

从左侧的SMBus/I2C这边路径来说,固件要实现DSP0237  MCTP over SMBus/I2C Binding、DSP0236 MCTP Base Specification和前面说到的NVMe MI  1.0a(或者最新版NVMe MI 1.1)。基于PCIe VDM这部分的实现略微有点复杂,不在此介绍。

结合上面两个原理图,我们模拟了一个BMC系统向一块Memblaze某系列NVMe SSD发了一条获取NVMe-MI数据结构的命令。我们节选了部分结果,首先是BMC和SSD之间传输的数据,如下图。

 整个过程有发数据和接收数据两个阶段,两者都可以根据协议解析出来。下面就是命令返回数据的解析:

 

上图可以看到返回数据又包含NVMe-MI的Header信息和NVMe-MI Data Structure信息(这部分是我们想要的返回结果)。

到这我们就从物理引脚、系统构成、技术原理及命令结果几个角度解读了NVMe-MI相关知识。那如果开发完相关功能怎么测试呢?

可以考虑三种方式:第一种是采购业内的SSD测试模组外包测试;第二种是跟Server厂商关系牢靠,Server厂商提供BMC的接口或者设备联合测试;第三种是自研相关的硬件设备并设计测试用例来验证。总体而言测试需要考虑上面的DSP0237、DSP0236、NVMe MI  三种规范来验证,最后放一张NVMe-MI 兼容性的测试大纲。

                                              图示3来自UNH-IOL_NVMe-MI_Conformance_Test_Suite_v12.0

 

本文作者:任玉峰   |   Memblaze 产品研发部测试开发经理

更多原创技术内容,请关注 Memblaze 微信公众号。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值