MCTP协议栈

MCTP是一个管理组件传输协议,是一个用于管理控制器(BMC)和管理控制器之间及管理控制器和管理设备之间的通信协议。

BMC可以用这个协议在多种不同的总线类型通过发送和接受MCTP格式的消息去访问管理设备。系统中的管理设备需要提供一个消息格式定义的实施方案方便管理控制器的相关操作。这就意味着在管理系统中不同类型的设备可能会提供不同的实现MCTP的具体方案。

MCTP可通过多种媒介发送,例如PCIe、SMBus/I2C、UART、Host Interface、USB等。MCTP可以在公共传输层上传输多种类型的消息,例如NCSI、Ethernet、OEM defined(原始制造商自定义)、PLDM(Platform-Level Data model)。

一个系统可以包括多个MCTP网络,MCTP的网包括多个physical transports,用于多个MCTP Endpoint之间的MCTP报文传输,MCTP Endpoint就是MCTP通信的一个终点。一个物理设备可以支持多个MCTP Endpoint,Endpoint的寻址是逻辑地址称为EID,EID类似于互联网上的IP地址。

MCTP报文结构

字段名称

字段大小(bits)

说明

Medium-specific header

不固定

此域段代表物理地址和framing信息,用于一个某个物理媒质在设备间传输MCTP报文,此域段的size和类型与对应的媒质强相关,例如SMBus/12C,PCIE VDM等。

Medium-specific trailer

不固定

也是和对接的物理媒质相关,一般例如CRC,CHECKSUM等。

MCTP transport header

32

MCTP的传输头域提供了版本、寻址信息(EID)和Message TAG等基本信息。

RSVD

4

Reserved。

Hdr version

4

版本号,用于识别格式和物理framing等。

Destination endpoint ID

8

用于接收MCTP报文。

Source endpoint ID

8

原始发起MCTP报文的EID。

SOM

1

Start Of Message置1代表报文是Message的第一个报文。

EOM

1

End Of Message置1代表是Message的最后一个报文。

Pkt Seq #

2

Message可以分解为多个报文,代表序列。

TO

1

TAG Owner,此bit置位代表TAG是原始Message的TAG。

Msg tag

3

和源EID及TO域段相关联,用来识别Message的唯一性,一个Message会被分解为多个packets,所有的packets的TO和Message TAG都是一样的。

Message body

不固定

MCTP的payload。

IC

1

代表Message是否带integrity check。

  • 0b = No MCTP message integrity check
  • 1b = MCTP message integrity check is present

Message type

7

在MCTP Message中payload的类型。

Message header

0 to M bytes

某个Message类型的添加的头域信息,一般包含在Message的第一个packet中。

Message data

0 to N bytes

某个消息类型的数据。

MCTP packet payload

不固定

分组有效载荷根据控制分组有效载荷和传输单元大小的规则来限制。

Msg integrity Check

Message type-specific

可选项,如果存在,消息完整性检查字段必须在消息体的最后几个字节中携带。

MCTP控制消息结构

MCTP over PCIe VDM的报文结构