MCTP base spec1-8

介绍

MCTP定义了一个通信模型,旨在促进以下之间的通信:

  • 管理控制器和其他管理控制器
  • 管理控制器和受管设备

通信模型包括消息格式、传输描述、消息交换模式以及配置和初始化消息

MCTP 经过精心设计,可以潜在地用于许多总线类型。该协议旨在用于计算机系统中使用的平台管理子系统组件之间的相互通信,适用于移动、桌面、工作站和服务器平台。管理控制器(如基板管理控制器 (BMC))可以使用此协议进行彼此之间的通信,以及访问平台内的所管设备。

管理控制器可以使用此协议在访问受管设备和其他管理控制器的不同总线类型之间发送和接收 MCTP 格式的消息。系统中的受管设备需要提供消息格式的实现,以便于管理控制器执行操作。

旨在管理系统中不同类型的设备可能需要实现此协议定义的完整功能的不同部分。在相关的情况下,这在个别要求中有所说明。

管理组件传输协议 (MCTP) 基本规范

1范围

图1

MCTP 基本规范描述了用于平台上的离散管理控制器之间以及管理控制器与其管理的设备之间进行通信的传输协议的命令协议、要求和用例。

本文档旨在实现以下目标:

  • 描述 MCTP 基本传输协议
  • 描述 MCTP 控制消息协议

MCTP 指定传输协议格式。该协议独立于底层物理总线属性,以及总线上使用的“数据链路”层消息传递。跨给定介质的 MCTP 通信的物理层和数据链路层方法由配套的“传输绑定”规范定义,例如 DSP0238、基于 PCIe® 供应商定义的消息传递的 MCTP 和 DSP0237 基于 SMBus/I2C 的 MCTP。这种方法可以定义未来的传输绑定,以支持其他总线,如 USB、RMII 等,而不会影响基本的 MCTP 规范。

2 规范性引用文件

以下引用文件对于本文件的适用是必不可少的。对于注明日期的引用文件,仅适用引用的版本。对于未注明日期的引用文件,适用引用文件的最新版本(包括任何修订)。

2.1 批准的参考资料

  • DMTF DSP4004, DMTF Release Process v2.7 
  • http://www.dmtf.org/standards/published_documents/DSP4004_2.7.pdf
  • DMTF DSP2016, Management Component Transport Protocol (MCTP) Overview White Paper
  • http://www.dmtf.org/standards/published_documents/DSP2016_1.0.pdf
  • DMTF, DSP0239, Management Component Transport Protocol (MCTP) IDs and Codes
  • http://www.dmtf.org/standards/published_documents/DSP0239_1.3.pdf
  • DMTF DSP0237, Management Component Transport Protocol SMBus/I2C Transport Binding Specification
  • http://www.dmtf.org/standards/published_documents/DSP0237_1.0.pdf
  • DMTF DSP0238, Management Component Transport Protocol (MCTP) PCIe VDM Transport Binding Specification
  • http://www.dmtf.org/standards/published_documents/DSP0238_1.0.pdf

2.2 其他参考资料

  • Hewlett-Packard, Intel, Microsoft, Phoenix, and Toshiba, Advanced Configuration and Power Interface Specification v5.0, ACPI, December 6, 2011
  • http://www.acpi.info/downloads/ACPIspec50.pdf
  • IETF, RFC20, ASCII format for Network Interchange, October 16, 1969
  • http://tools.ietf.org/html/rfc20
  • IETF, RFC4122, A Universally Unique Identifier (UUID) URN Namespace, July 2005
  • http://datatracker.ietf.org/doc/rfc4122/
  • IETF, RFC2119, Key Words for use in RFCs to Indicate Requirement Levels, March 1997
  • http://datatracker.ietf.org/doc/rfc2119/
  • Intel, Hewlett-Packard, NEC, and Dell, Intelligent Platform Management Interface Specification: Second  Generation v2.0, IPMI, 2004
  • http://www.intel.com/design/servers/ipmi
  • ISO/IEC Directives, Part 2, Rules for the structure and drafting of International Standards
  • http://isotc.iso.org/livelink/livelink?func=ll&objId=4230456&objAction=browse&sort=subtype
  • PCI-SIG, PCI Express™ Specifications
  • http://www.pcisig.com/specifications/pciexpress/
  • NXP Semiconductors, UM10204 I2C-bus specification and user manual, Rev. 5, October 9, 2012
  • http://www.nxp.com/documents/user_manual/UM10204.pdf
  • SMBus, System Management Bus (SMBus) Specification v2.0, SMBus, 2000
  • http://www.smbus.org/specs/smbus20.pdf

3 术语和定义

在本文件中,某些术语具有超出正常英语含义的特定含义。这些术语在本条款中定义。

本文件中的术语“shall”(“required”)、“shall not”、“should”(“recommended”)、“should not”(“not recommended”)、“may”、“need not”(“not required”)、“can”和“cannot”应按照 ISO/IEC 指令第 2 部分第 7 条中的说明进行解释。括号内的术语是前一个术语的替代项,用于由于语言原因不能使用前一个术语的特殊情况。请注意,ISO/IEC 指令第 2 部分第 7 条指定了其他替代方案。此类额外替代方案的出现应按其正常的英文含义进行解释。

本文件中的术语“条款clause”、“子条款subclause”、“段落paragraph”和“附件annex”应按照 ISO/IEC 指令第 2 部分第 6 条中的描述进行解释。

本文件中的术语“标准性normative”和“信息性informative”应按照 ISO/IEC 指令第 2 部分第 3 条中的描述进行解释。在本文件中,标有“(informative)”的条款、子条款或附件不包含规范性内容。注释和示例始终是信息元素。

3.1 需求术语定义

本条款定义了本规范中表示需求级别的关键短语和单词。这些定义与RFC2119中定义的术语一致。

3.2 MCTP 术语定义

就本文档而言,以下术语和定义适用。

3.2.1 Address Resolution Protocol

地址解析协议 ARP:指用于动态确定共享通信介质上设备地址的程序。

3.2.2 baseline transmission unit

基线传输单元:MCTP数据包中承载的数据包有效载荷所需的传输单元的公分母大小。基线传输单元大小的数据包保证在 MCTP 网络内是可路由的

3.2.3 baseboard management controller

基板管理控制器BMC:基于IPMI的平台管理子系统中,由IPMI规范创造的术语,用于主管理控制器。有时也用作主板驻留管理控制器的通用名称,该控制器为平台管理子系统提供特定于主板的硬件监视和控制功能。

3.2.4 binary-coded decimal

二进制编码的十进制BCD:表示对十进制数的一种特定的二进制编码,其中二进制数中的每四个位(半字节)用于表示单个十进制数字,二进制数的最低有效四位对应于最低有效十进制数字。二进制值 0000b 到 1001b 分别表示十进制值 0 到 9。例如,使用 BCD 编码时,字节可以表示两位数的十进制数,其中字节的最高有效半字节(位 7:4)包含最高有效十进制数字的编码,最低有效半字节(位 3:0)包含最低有效十进制数字的编码(例如,BCD 编码中的 0010_1001b对应于十进制数 29)。

3.2.5 bridge

桥接:一般是指将一个计算机总线连接到另一个计算机总线或内部连接电路和逻辑,允许一个上的代理访问另一个。在本文档中,除非另有说明,否则术语“桥接”应指 MCTP 桥接。

3.2.6 burst

突发:发射端点发送的连续多个基线传输单元数据包,这些基线传输单元数据包之间的延迟最小

3.2.7 bus

总线:在共享公共物理层地址空间的一个或多个平台组件之间共享的物理寻址域

3.2.8 bus owner

总线所有者:负责管理总线上的地址分配(可以是逻辑地址或物理地址)的一方(例如,在 MCTP 中,总线所有者是负责管理给定总线的 EID 分配的一方)。总线所有者可能还承担其他特定于介质的职责,例如分配实际地址

3.2.9 byte

字节:8 位字。也称为字节。注意:PMCI 规范应使用术语byte,而不是octet。

3.2.10 endpoint

端点:见MCTP 端点。

3.2.11 endpoint ID

端点ID(EID)见MCTP 端点ID。

3.2.12 Globally Unique Identifier

全局唯一标识符GUID:UUID

3.2.13 host interface

主机接口:一种硬件接口关联协议,由在主机处理器本地运行的软件使用,用于访问受管系统中管理子系统的硬件

3.2.14 Inter-Integrated Circuit

内部集成电路 I2C:一种多主机、两线制、串行总线,最初由飞利浦半导体开发;现在由NXP Semiconductors维护。

3.2.15 Intelligent Platform Management Bus

智能平台管理总线IPMB:I2C 总线架构、协议和实现的名称,该总线在基于 IPMI 的系统中提供“管理控制器”之间的通信路径。

3.2.16 Intelligent Platform Management Interface

智能平台管理接口IPMI:一组规范,定义了最初由IPMI发起人组织(Intel、Dell、HP和NEC)为服务器平台管理开发的接口和协议

3.2.17 managed entity

受管实体:通过管理参数进行管理物理或逻辑实体物理实体的示例包括风扇、处理器、电源、电路卡、机箱等逻辑实体的示例包括虚拟处理器、冷却域、系统安全状态等

3.2.18 Management Component Transport Protocol

管理组件传输协议MCTP:本规范中定义的协议。

3.2.19 management controller

管理控制器 :一种微控制器或处理器,它聚合来自一个或多个受管设备的管理参数,并通过一个或多个管理数据模型使本地或远程软件或其他管理控制器可以访问这些参数。管理控制器还可以解释和处理与管理相关的数据,并在受管设备上启动与管理相关的操作。虽然为 PMCI 定义了本机数据模型,但它旨在能够支持其他数据模型,例如 CIM、IPMI 和特定于供应商的数据模型。用作管理控制器的微控制器或处理器也可以包含管理设备的功能。

3.2.20 managed device

受管设备:在本规范中,受管设备是指通常使用微控制器实现并通过消息传递协议访问的设备,用于访问一个或多个管理参数。受管设备提供的管理参数访问通常是使用抽象的接口和数据模型来实现的,而不是通过直接的“寄存器级”访问来实现的。受管设备响应管理请求,但不启动或聚合管理操作,除非与管理控制器(即,它是一个或多个管理控制器的附属设备)结合使用。

3.2.21 management parameter

管理参数:表示与受管实体关联的特性、功能、状态或控制点的特定基准。管理参数示例包括温度、速度、电压、开/关、链路状态、不可纠正的错误计数、设备电源状态等。

3.2.22 MCTP bridge

MCTP 桥接 :一个 MCTP 端点,可以将在一个互连上接收的不是针对自身的 MCTP 消息路由到另一个互连上,而无需解释它们。网桥处的入口和出口介质可以是同质的,也可以是异构的。在本文档中也称为“桥”。

3.2.23 MCTP bus owner

MCTP总线所有者:负责MCTP的EID分配或所属总线的翻译工作。MCTP 总线所有者也可能负责实际物理地址分配。例如,对于 SMBus/I2C 总线段,MCTP 总线所有者也是 ARP 主设备。这意味着总线所有者为需要它的设备分配动态 SMBus/I2C 地址。

3.2.24 MCTP control command

MCTP控制命令:在MCTP控制消息类型下定义的命令,用于初始化和管理MCTP通信(例如,分配EID、发现设备MCTP功能等的命令)。

3.2.25 MCTP endpoint

MCTP端点:MCTP通信终端。MCTP端点是MCTP数据包或消息终点或起点。也就是说,物理设备内使用MCTP传输协议进行通信并处理MCTP控制命令的组合功能。这包括具有MCTP功能的管理控制器和受管设备。本文档中也称为“端点”。

3.2.26 MCTP endpoint ID

MCTP端点ID:用于将MCTP消息路由到特定MCTP端点的逻辑地址。一个数字句柄(逻辑地址),用于唯一标识系统内特定的MCTP端点,用于MCTP通信和消息路由。端点ID在系统内组成MCTP通信网络的MCTP端点中是唯一的。MCTP EID仅在特定的MCTP网络中是唯一的。也就是说,它们可以从一个MCTP网络复制或重叠到下一个。本文档中也称为“端点ID”,缩写为“EID”。

3.2.27 MCTP host interface

MCTP主机接口:使主机软件能够在受管系统本地访问MCTP网络的主机接口

3.2.28 MCTP management controller

MCTP管理控制器:作为MCTP端点的管理控制器。除非另有说明,否则本文件中的“管理控制器”一词是指“MCTP管理控制器”。

3.2.29 MCTP managed device

MCTP受管设备:作为MCTP端点的受管设备。除非另有说明,否则本文档中的“受管设备”一词是指“MCTP受管设备“。

3.2.30 MCTP message

MCTP消息:基于消息类型的通信单元,使用一个或多个MCTP数据包通过MCTP网络中继。

3.2.31 MCTP network

MCTP网络:使用MCTP通信并共享公共MCTP端点ID空间的MCTP端点集合

3.2.32 MCTP network ID

MCTP网络ID:用于区分平台内每个独立MCTP网络的唯一标识符。

3.2.33 MCTP packet

MCTP数据包:在给定物理介质上用于MCTP通信的数据传输单位

3.2.34 MCTP packet payload

MCTP包有效载荷:指单个MCTP包中携带的MCTP消息的消息体部分。

3.2.35 message

消息:请参阅MCTP消息。

3.2.36

消息组装:接收属于给定MCTP消息的两个或多个MCTP数据包并将其链接在一起,以提取整个消息头和消息数据(有效载荷)的过程。

3.2.37

消息体:MCTP消息中携带消息类型字段和与消息相关的任何消息类型特定数据的部分。当消息体所需的容量大于单个MCTP数据包所能容纳的容量时,MCTP消息会跨越多个MCTP数据包。因此,MCTP消息的消息体部分可以跨越多个MCTP数据包。

3.2.38

消息拆分:在单个MCTP数据包中无法携带消息的报头和数据(有效载荷)的情况下,对MCTP消息进行拆分,并生成在MCTP网络中传递该消息内容所需的两个或多个数据包的序列的过程。

3.2.39

消息发起者:针对特定消息终端的消息的原始发送者(源)。

3.2.40

信息终端:称为MCTP源端点ID、标签所有者位值TO和消息标签值Msg tag的三元组字段的名称。这些字段共同标识MCTP网络内MCTP消息的数据包,以便进行消息组装。消息端点本身可以被认为是标识接收方端点内处理特定消息组装的一组资源。

3.2.41

最高有效字节MSB:指由多个字节组成的数字中的最高位字节。

3.2.42

半字节nibble:计算机术语,表示四位聚合,或半字节。

3.2.43

数据包:见MCTP数据包。

3.2.44

数据包有效负载:请参阅MCTP数据包有效载荷。

3.2.45

直通流量/消息/数据包:通过网络控制器在外部网络和管理控制器之间传递的非控制数据包。

3.2.46

有效载荷:指消息的信息承载字段。这与用于将消息从一个点传输到另一个点的字段和元素是分开的,例如地址字段、帧位、校验和等。在某些情况下,给定的字段可能既是有效载荷字段又是传输字段。

3.2.47

物理传输绑定:指定义如何在特定物理传输类型和介质上实现MCTP基础协议和MCTP控制命令的规范,如SMBus/I2C、PCI Express™供应商定义消息传递等。

3.2.48

平台管理组件内部通信PMCI:分布式管理任务组操作系统前工作组下的一个工作组的名称,该工作组被授权定义标准化的通信协议、低级数据模型和传输定义,以支持与管理控制器和受管设备之间的通信,这些设备在受管计算机系统内形成平台管理子系统。

3.2.49

点对点:指只有两个物理通信设备通过物理通信介质互连的情况。这些设备可能处于主/从关系中,也可能是对等设备。

3.2.50

速率限制:一种限制从MCTP端点发送到另一个MCTP端点的数据速率的方法。

3.2.51

精简媒体独立接口RMII:基于IEEE媒体独立接口(MII)的精简信号计数MAC到PHY接口,由RMII联盟(3Com Corporation;AMD股份有限公司;Bay Networks,股份有限公司;Broadcom Corp.;National Semiconductor Corp.;和Texas Instruments股份有限公司)指定。

3.2.52

简单端点:与MCTP总线所有者或MCTP网桥的功能都不相关的MCTP端点。

3.2.53

传输单元:指MCTP包有效载荷部分的大小,即MCTP包中携带的消息体部分。

3.2.54

传输绑定:请参阅物理传输绑定。

3.2.55

通用唯一标识符UUID:指最初由开放软件基金会(OSF)标准化的标识符,作为分布式计算环境(DCE)的一部分。UUID是使用一组算法创建的,这些算法使它们能够由不同的各方独立生成,而不需要各方协调以确保生成的ID不会重叠。在本规范中,RFC4122用作描述UUID格式和生成的基本规范。有时也称为全局唯一标识符(GUID)。

4 符号和缩写术语

本文件使用以下符号和缩写。

4.1

ACPI:Advanced Configuration and Power Interface高级配置和电源接口

4.2

ARP:Address Resolution Protocol地址解析协议

4.3

BCD:binary-coded decimal二进制编码的十进制

4.4

BMC:baseboard management controller基板管理控制器

4.5

CIM :Common Information Model通用信息模型

4.6

EID :endpoint identifier端点标识符

4.7

FIFO:first-in first-out先进先出

4.8

GUID :Globally Unique Identifier全局唯一标识符

4.9

I2C:Inter-Integrated Circuit内部集成电路

4.10

IANA:Internet Assigned Numbers Authority互联网号码分配机构

4.11

IP:Internet Protocol网际协议

4.12

IPMB:Intelligent platform management bus智能平台管理总线

4.13

IPMI:Intelligent platform management interface智能平台管理界面

4.14

ISO/IEC:International Organization for Standardization/International Engineering Consortium国际标准化组织/国际工程联合会

4.15

KCS:Keyboard Controller Style键盘控制器样式

4.16

MCTP:Management Component Transport Protocol管理组件传输协议

4.17

MSB:most significant byte最高有效字节

4.18

PCIe:Peripheral Component Interconnect (PCI) Express外设组件互连 (PCI) Express

4.19

PMCI:Platform Management Component Intercommunications平台管理组件互通

4.20

RMII:Reduced Media Independent Interface减少与媒体无关的接口

4.21

SMBus:System Management Bus系统管理总线

4.22

TCP/IP:Transmission Control Protocol/Internet Protocol传输控制协议/互联网协议

4.23

USB:Universal Serial Bus通用串行总线

4.24

UUID:Universally Unique Identifier通用唯一标识符

4.25

VDM :Vendor Defined Message供应商定义的消息

5 公约

以下条款中描述的公约适用于本规范。

5.1 字节排序

除非另有说明,多字节数值字段或位字段的字节顺序为“大端序”(即,较低的字节偏移量持有最高有效字节,较高的偏移量持有较低有效字节)。

5.2 保留字段

除非另有说明,否则枚举或其他数值范围中的任何保留值、未指定值或未赋值均保留给 DMTF 将来定义。

除非另有说明,否则指定为保留的数值字段或位字段应写入为 0(零),并在读取时忽略。

6 管理组件关系

图 1 说明了设备、管理控制器、受管设备和受管实体之间的关系,这些关系在第 3.2 条中进行了描述。

图1-管理组件关系

7 MCTP 概述

本条款概述了 MCTP 的主要要素。MCTP 白皮书 DSP2016 中提供了其他概述信息。

MCTP 是一种独立于传输的协议,用于 MCTP 网络内的相互通信。MCTP网络由一个或多个物理传输组成,用于在MCTP端点之间传输MCTP数据包。MCTP传输绑定规范定义了如何在特定的物理传输介质上实现MCTP协议。例如,DMTF已经使用PCIe供应商定义消息(VDM)等为SMBus/I2C上的MCTP和PCIe上的MCTPs定义了传输绑定。

MCTP 端点是 MCTP 通信的终点。支持 MCTP 的物理设备可以提供一个或多个 MCTP 端点。端点使用称为端点 ID(EID) 的逻辑地址进行寻址。MCTP 中的 EID 类似于互联网协议网络中的 IP 地址。EID 可以静态或动态分配

一个系统实现可以包含多个 MCTP 网络。每个 MCTP 网络都有自己独立的 EID 空间。MCTP 网络之间没有 EID 协调。EID 可以在 MCTP 网络之间重叠。

当实体(如系统软件)可以访问多个 MCTP 网络时,MCTP 网络可能会提供 MCTP 网络 ID,该 ID 可用于区分不同的 MCTP 网络。 当实体对 MCTP 网络具有多个访问点时,也会使用网络 ID。在这种情况下,MCTP 网络 ID 使实体能够判断接入点是提供对同一 MCTP 网络还是对不同 MCTP 网络的访问

DMTF MCTP 规范还包括 MCTP 主机接口的传输绑定定义。MCTP 主机接口由在受管系统的主机处理器本地运行的软件使用,以访问 MCTP 网络。

图2

图 2 显示了 MCTP 网络在系统中存在的不同方式。在此示例中,网络 A 使用 MCTP over PCIe 供应商定义的消息将主板上的管理控制器(MC) 和受管设备(MD)与 PCIe 卡 1 上的设备连接起来。请注意,标准PCIe(主机软件可访问)上有两个主机接口(主机 i/f),主机软件可以使用它们来访问此特定网络。因此,此网络需要 MCTP 网络 ID,以便主机软件可以分辨出两个主机接口连接到同一 MCTP 网络

网络 B 表示仅用于互连 PCIe 卡 2 内设备的网络。此 MCTP 网络通常不需要 MCTP 网络 ID,因为受管软件或任何其他需要将网络 B 与系统中的另一个 MCTP 网络区分开来的实体看不到它。

网络 C 表示附加模块上的 MCTP 网络。该网络与网络 A 和 B 分开,但主机软件可以通过 PCIe 访问。因此,此网络需要网络 ID,以便主机软件可以区分网络 C 是与网络 A 不同的网络

MCTP 消息由一个或多个 MCTP 数据包组成。MCTP 定义了支持将接收到的 MCTP 数据包组装成 MCTP 消息以及将 MCTP 消息分解为数据包进行传输的字段。

MCTP 旨在能够使用相同的协议以交织方式传输多种消息类型。使用消息类型编号标识的 MCTP 消息类型。消息类型号的使用类似于互联网协议中众所周知的端口号。它识别所有与特定规范关联的 MCTP 消息。此规范定义了用于初始化和维护 MCTP 网络的 MCTP 控制消息的消息类型。DMTF 还定义了 PMCI(平台管理通信互连)规范、MCTP 上的供应商特定消息传递等使用的消息类型,在DSP0239中提供了 MCTP 消息类型编号分配。DSP0239将随着将来定义的新消息类型而更新。

MCTP 控制消息使用请求/响应协议。需要注意的是,MCTP 定义的基本传输协议仅定义了 MCTP 消息传输的协议。消息内容是请求、响应还是其他内容都是特定消息类型定义的一部分。

在 MCTP 中,总线被定义为共享单个物理地址空间的物理介质。MCTP 包括一个称为 MCTP 总线所有者的函数的定义。总线所有者提供两个主要功能:当 MCTP 实现使用动态分配的 EID 时,它将 EID 分发到端点,并为端点提供将 EID 解析为向目标端点传递消息所需的物理地址的方法。

总线可以使用 MCTP 桥接器在 MCTP 网络内互连,以在总线之间转发 MCTP 数据包。网桥还处理管理将数据包从一种类型的物理介质移动到另一种类型的物理介质时的差异任务,例如在 SMBus/I2C 和 PCIe 供应商定义的消息传递之间移动 MCTP 数据包。

以下示例说明了如何在假设的平台管理子系统实现中使用 MCTP。MCTP可以根据需要轻松支持更复杂的拓扑结构,包括多级网桥以及更多的总线和设备。

图3

8 MCTP 基本协议

MCTP 基本协议定义了 MCTP 数据包和消息的公共字段及其用法。

尽管有特定于介质的数据包标头字段和尾部字段,但基本协议的字段对于所有媒体都是通用的。这些公共字段分别支持 MCTP 端点之间的消息路由和传输,以及从多个 MCTP 数据包中组装和拆卸大型消息。基本协议的通用字段包括一个消息类型字段,该字段标识使用 MCTP 基本协议传输的特定更高层类别的消息。

8.1 MCTP数据包字段

图4显示了构成通用MCTP数据包的字段。

图4——一般消息字段

表 1 定义了基本协议通用字段。

表 1 – MCTP 基本协议通用字段

特定于介质的标头:此字段表示用于在特定物理介质上的设备之间传输 MCTP 数据包的物理寻址和成帧信息。此字段中的任何子字段或数据的大小和类型给定介质上 MCTP 消息传递的相应传输绑定规范定义(例如,基于 SMBus/I2C 的 MCTP、基于 PCIe 供应商定义的消息传递的 MCTP 等)。

特定于介质的:此字段表示在特定物理介质上的设备之间传输 MCTP 数据包所需的任何其他特定于介质的尾部字段(如果有)。此字段的典型用途是保存将为特定介质指定的每个数据包的数据完整性字段(例如 CRC、校验和等)。

MCTP 传输标头:32bits,MCTP 传输标头是每个 MCTP 数据包的一部分,它提供数据包的版本和寻址信息,以及flag标志和“消息标记”字段,该消息标记字段与源 EID 一起用于识别构成 MCTP 消息的数据包。MCTP 传输标头字段是常见字段,无论使用 MCTP 的物理介质如何,这些字段始终存在。注意:MCTP 传输标头的子字段的位置可能因物理介质绑定而异

RSVD:4bits,(预留)保留给 MCTP 基本规范将来的定义。

Hdr版本:4bits,(标头版本)标识用于在给定物理介质上传输消息中的 MCTP 公共字段的格式、物理帧和数据完整性机制。该值在特定介质的规格中定义。注意:此字段中的值在不同的传输绑定之间可能会有所不同。

目的端点 ID:8bits,用于接收 MCTP 数据包的目的端点的 EID。为特定路由保留了一些 EID 值。请参阅表 2 – 特殊端点 ID。

源端点ID:8bits,MCTP 数据包的发起方的 EID。请参阅表 2 – 特殊端点 ID。

SOM:1bit,(Start Of Message)如果此数据包是消息的第一个数据包,则设置为 1b。

EOM:1bit,(End Of Message)如果此数据包是消息的最后一个数据包,则设置为 1b。

Pkt Seq #:2bits,(数据包序列号)对于跨多个数据包的消息,数据包序列号在每个连续的数据包上递增模4。这允许接收方在消息的开始和结束之间检测到最多三个连续丢失的数据包。尽管如果设置了 SOM 位,数据包序列号可以是任何值 (0-3),但建议它是设置了 EOM 位的上一个数据包的递增模4。在 SOM 数据包之后,对于属于给定消息的每个后续数据包,数据包序列号应向上递增模数 4,直至包含 EOM 标志的数据包。

TO:1bit,Tag Owner(标记所有者)位标识消息标记是由作为消息源的端点发起的还是由作为消息目标的端点发起的。Message Tag 字段是为 Tag Owner 位的每个值独立生成和跟踪的。MCTP 消息类型可能会将此位叠加其他含义,例如,使用它来区分“请求”消息和“响应”消息。设置为 1b 以指示消息的来源发出了该消息标记

Msg tag:3bits,(消息标签)该字段与源端点 ID 和标记所有者 (TO) 字段一起标识 MCTP 传输级别的唯一消息。其他元素(如 MCTP 消息数据字段的部分)是否也用于唯一标识实例或跟踪消息的重试,取决于消息类型。允许源端点将来自多个消息的数据包同时交错到同一目标端点,前提是每个消息都有一个唯一的消息标签。当使用请求/响应消息交换并且请求中的标签所有者 (TO) 位设置为 1 时,响应者应返回相同的消息标签,并在相应的响应消息中将消息标签所有者位清除为 0。对于拆分为多个数据包的消息,对于从 SOM 到 EOM 的所有数据包,标记所有者 (TO) 和消息标记位保持不变。

消息体:消息体表示 MCTP 消息的有效负载。消息体可以跨越多个 MCTP 数据包。

IC:1 bit,(MCTP 完整性检查位) 指示 MCTP 消息是否被整体 MCTP 消息有效负载完整性检查所覆盖。此字段必须是消息的第一个数据包中消息体的第一个字节的最高有效位,以及消息类型位。0b = 没有 MCTP 消息完整性检查;1b = 存在 MCTP 消息完整性检查。

消息类型:7bits,定义 MCTP 消息的消息数据部分中包含的有效负载类型。此字段必须包含在消息的第一个数据包中消息体的第一个字节的最低有效位中。与 MCTP 传输标头中的字段一样,消息类型字段是常见的 MCTP 字段之一,这些字段与使用 MCTP 的传输无关。但是,与 MCTP 传输标头不同,消息类型字段只需要存在于特定 MCTP 消息的第一个数据包中,而 MCTP 传输标头字段存在于每个 MCTP 数据包中。有关消息类型值的信息,请参阅 DSP0239 和表 3。

消息标头:0 到 M 字节,与特定消息类型关联的其他标头信息(如果有)。这通常仅包含在消息的第一个数据包中,但给定的消息类型定义可以根据任何数据包的需要定义标头字段。

消息数据:0 到 N 字节,与特定消息类型关联的数据。根据消息类型的规范定义。

MCTP 数据包有效载荷:数据包有效载荷是给定 MCTP 数据包中携带的消息正文部分。数据包负载根据管理数据包负载和传输单元大小的规则进行限制。有关更多信息,请参阅 8.3 数据包有效载荷和传输单元大小。

消息完整性检查特定于消息类型,(MCTP 消息完整性检查) 此字段表示对消息正文内容存在特定于消息类型的完整性检查的可选选项。如果存在,则 Message integrity check 字段应包含在消息正文的最后一个字节中。特定的消息类型定义将指定这是否是必需的、可选的或不要使用的、字段大小以及用于生成字段的算法。MCTP 基本协议也没有指定此字段是单个数据包消息的必填项(可能取决于传输单元大小)还是仅多个数据包的必填项。Msg integrity check 字段的使用特定于特定的消息类型规范。


8.2 特殊端点 ID

下表列出了为 MCTP 保留或分配给特定功能的 EID 值。

表 2 — 特殊端点 ID

目标端点 ID0: null目标 EID。此值表示将忽略目标 EID 值,并且仅使用物理寻址将消息路由到给定总线上的目标。这将允许与尚未分配 EID 的设备进行通信。由于不能保证总线之间的物理地址是唯一的,因此 MCTP 不支持在不同总线之间桥接目标 EID 为空的消息。

源端点 ID0:null源 EID。此值指示消息来自仅使用物理寻址的端点。这通常用于从尚未分配 EID 的端点传送的消息。由于不能保证总线之间的物理地址是唯一的,因此 MCTP 不支持在不同总线之间使用源 EID为空的桥接消息。

端点 ID 1 到 7 :保留供将来定义。

端点 ID 0xFF:广播 EID。保留用作给定总线上的广播 EID。不支持 MCTP 网络范围的广播。主要供 MCTP 控制消息类型使用

所有其他值:可用于对端点进行分配。


8.3 数据包有效载荷和传输单元大小

对于 MCTP,传输单元的大小定义为 MCTP 数据包中携带的数据包有效载荷的大小

8.3.1 基准传输单元

以下是有关基准传输单元的关键信息点:

  • MCTP 的基准传输单元(最小传输单元)大小为 64 字节
  • 支持 MCTP 控制消息的消息终端应始终接受传输单元等于或小于基准传输单元的有效数据包。消息终端也被允许支持更大的传输单元。
  • 给定消息中所有数据包的传输单元应具有相同的大小,但最后一个数据包中的传输单元(EOM 位 = 1b 的数据包)除外。除最后一个数据包外,此大小应至少为基准传输单元大小
  • 最后一个数据包中的传输单元大小应小于或等于用于其他数据包的传输单元大小(如果有)。
  • 如果协商的传输单元大小大于基线传输单元,则所有数据包的传输单元应小于或等于协商的传输单元大小。(端点之间较大传输单元的协商机制是特定于消息类型的,本规范中未涉及)。
  • 只要满足此子句的要求,给定的端点就可以协商与另一个端点通信的数据包大小的其他限制
  • 所有消息类型都应支持使用传输单元不大于基准传输单元的数据包进行传送。这是在存在仅支持基线传输单元的 MCTP 网桥的实施中支持桥接这些消息所必需的。

8.4 最大消息体大小

消息体可以跨越多个数据包。对消息体大小的限制是特定于消息类型的,并记录在每种消息类型的规范中。

8.5 消息组装

以下字段(并且仅这些字段)共同用于标识属于给定消息的数据包,以便在特定目标端点上进行消息组装。

  • msg 标签(消息标签)
  • TO (标签所有者)
  • 源端点 ID

如 3.2 中所述,这些值一起标识目标端点上的消息终端。对于给定的消息终端,一次只允许一个消息组装处于进程中。

8.6 丢弃的数据包

在以下情况下,端点会丢弃 (静默丢弃) 单个数据包。这些数据包在检查消息组装的接受或拒绝之前会被丢弃。因此,这些数据包不会导致消息组装的启动或终止。

  • 意外的“中间”数据包或“结束”数据包:对于给定的消息终端,会收到多数据包消息的“中间”数据包(SOM 标志 = 0 和 EOM 标志 = 0)或“结束”数据包(SOM 标志 = 0 和 EOM 标志 = 1),而没有首先收到消息的相应“开始”数据包(SOM 标志 = 1 和 EOM 标志 = 0)。
  • 数据包数据完整性不佳或其他物理层错误:由于对物理数据链路层的数据包的数据完整性检查无效,因此在物理数据链路层丢弃数据包。其他可能的物理层错误可能包括成帧错误字节对齐错误不满足物理层要求的数据包大小等。
  • 错误、意外或过期的消息标签 :收到 TO 位 = 0 的消息,表示目标端点是标签值的发起方,但目标端点不是该值的发起方,或者不再需要该值。(MCTP 网桥不会检查未发送到网桥的 EID 或网桥物理地址(如果使用 null-source 或 destination-EID 物理寻址)的消息的消息标签或 TO 位值)。
  • 未知目标 EID:在设备的物理地址收到数据包,但目标 EID 与设备的 EID 不匹配,或者 EID 不可路由。
  • 不可路由的 EID :MCTP 网桥收到网桥无法路由的 EID(例如,因为网桥没有给定端点的路由表条目)。
  • 错误的标头版本:MCTP 标头版本(Hdr 版本)值不是端点支持的值。
  • 不支持的传输单元:接收数据包的端点不支持传输单元大小。

8.7 开始消息组装

当与数据包中的目标 EID 对应的端点收到有效的“开始”数据包(SOM = 1b 且 EOM = 0b 的数据包)时,多数据包消息组装开始

SOM = 1b 和 EOM = 1b 的数据包被视为单数据包消息,其本身不是组合的。

多数据包和单数据包消息都可能根据以下条款中列出的条件被终止或丢弃。

8.8 终止消息组装/丢弃的消息

消息组装在目标端点终止,并在以下条件下接受或删除消息:

  • 收到给定消息的“结束”数据包 :接收正在给定消息终端上组装消息的“结束”数据包(EOM = 1b 的数据包)将导致消息组装完成(前提是该消息未因下面列出的任何原因而终止)。这是正常的终止。该消息被视为在 MCTP 基本协议级别被接受。
  • 收到新的“开始”数据包 :收到与正在进行的消息组装相同消息终端的消息的新“开始”数据包(SOM = 1b 的数据包)将导致正在进行的消息组装终止。将删除正在进行的消息组装的所有数据。新收到的开始数据包不会被丢弃,而是开始新的消息组装。这被视为错误情况
  • 等待数据包超时 :给定的多数据包消息的数据包之间的时间过长。正在进行的消息组装的所有数据都将被删除。这被视为错误情况。超时间隔(如果指定)特定于传输绑定规范。(绑定规范可以选择不定义此超时的值。
  • 乱序数据包序列号 :对于包含给定多数据包消息的数据包,最近接收的数据包的数据包序列号不是以前接收的数据包序列号的 mod 4 增量。将删除正在进行的消息组装的所有数据。这被视为错误情况
  • 传输单元不正确 :如果实现收到“中间”数据包(SOM = 0b 和 EOM = 0b),其中 MCTP 数据包有效负载大小与起始数据包的 MCTP 数据包有效负载大小不匹配(SOM = 1b 和 EOM 位 = 0b),则可能会终止消息组装。这被视为错误情况
  • 错误消息完整性检查:对于使用消息完整性检查的单包或多包消息,与消息完整性检查值不匹配可能会导致消息组装被终止并丢弃整个消息,除非它被特定消息类型的规范覆盖。注意:消息完整性检查被视为消息类型级别的错误情况,而不是 MCTP 基本协议级别的错误。

8.9 丢弃的消息

如果端点不支持消息类型,则端点可能会丢弃消息。这可以通过以下任何一种方式发生:

  • 端点可以选择在检测到第一个数据包中的无效消息类型时不启动消息汇编。
  • 端点可以选择终止正在进行的消息组装
  • 端点可以选择在组装消息后删除消息

8.10 MCTP 版本控制和消息类型支持

使用 MCTP 控制消息可以检索三种类型的版本控制信息:

  • MCTP 基本规范版本信息
  • MCTP 数据包标头版本信息
  • 消息类型版本信息

给定端点支持的 MCTP 基本规范版本是通过 Get MCTP Version Support 命令获取的。此命令还可用于发现端点是否支持特定消息类型,如果支持,则支持该消息类型的哪些版本。

MCTP 数据包中的 Header Version 字段标识用于 MCTP 数据包的特定于介质的格式。它还可以指示当前级别和与基本规范版本的向后兼容性级别,如每个特定于媒体的传输绑定规范中的标头版本定义所指定。

8.10.1 与 MCTP 未来版本的兼容性

端点可以选择仅支持某些版本的 MCTP。命令结构以及 Get MCTP Version Support 命令允许终端检测和限制其他通信终端使用的 MCTP 版本。为了支持这一点,给定介质上的所有端点都需要实施 MCTP 版本 1.0.x 控制命令或更高版本的 1.x 版本,以进行初始化和版本支持发现。

8.11 MCTP 消息类型

表 3 定义了通过 MCTP 传输的不同消息类型的“消息类型”字段的值。本文档中指定了 MCTP 控制消息类型。本文档中还指定了供应商定义的 PCI 和供应商定义的 – IANA 消息类型的基准要求。所有其他消息类型在本规范的 DSP0239 配套文档中指定。

注意: 支持给定消息类型的设备可能无法在连接到该设备的所有总线上平等地支持该消息类型。

表 3 – 本规范中使用的 MCTP 消息类型

消息类型消息类型编码描述
MCTP 控制0x00用于支持在 MCTP 网络内初始化和配置 MCTP 通信的消息。此消息类型的消息和函数在此规范中定义。
供应商定义 — PCI0x7E用于支持 VDM 的消息类型,其中供应商使用基于 PCI 的供应商 ID 进行标识。此规范中提供了此消息类型的初始消息标头字节的规范。否则,消息正文内容由给定供应商 ID 标识的供应商、公司或组织指定。
供应商定义 – IANA0x7F用于支持 VDM 的消息类型,其中使用基于 IANA 的供应商 ID 标识供应商。(此格式使用由 Internet 号码分配机构 (www.iana.org) 分配和维护的“企业编号”作为标识特定供应商、公司或组织的方式。此规范中提供了此消息类型的初始消息标头字节的规范。否则,消息正文内容由给定供应商 ID 标识的供应商、公司或组织指定。

8.12 安全性

MCTP 的基本前提是更高层协议将满足管理数据通信的安全要求(例如,机密性和身份验证)。这意味着 MCTP 承载的数据模型应满足给定管理事务的安全要求。MCTP 协议本身不会定义任何其他安全机制。

8.13 限制

MCTP 已针对在单个计算机系统平台内进行的通信进行了优化。它不是为处理在更通用的系统间网络环境中通常可能发生的问题而设计的。特别是,与 IP 和 TCP/IP 等网络协议相比,MCTP 具有以下限制:

  • MCTP 具有有限的逻辑寻址。MCTP 针对预期在平台内使用的少量端点进行了优化。与 IP 地址的可用范围相比,EID 的 8 位范围是有限的。
  • MCTP 假定 MCTP 网络实现不包含循环。MCTP 中没有定义任何机制来检测或协调具有形成路由循环的连接的实现。
  • MCTP 假定一种网络拓扑,其中属于给定消息的所有数据包都将通过同一路由传送(也就是说,MCTP 通常不支持通过一个路由到达的消息的某些数据包,而消息的其他数据包通过不同的路由到达)。
  • MCTP 不支持用于消息组装的无序数据包。
  • MCTP 基本协议不处理流量控制或拥塞控制。如果需要,这些行为在物理传输绑定级别或消息类型或更高级别指定。
  • 未指定 MCTP 来处理基本协议消息组装级别的重复数据包。如果接收到重复的数据包并将其传递给 MCTP 消息组装,则可能导致整个消息组装终止。注意:不排除传输绑定包括用于在物理传输级别处理重复数据包的机制。

8.14 MCTP 发现和寻址

本条款描述了 MCTP 端点如何相互发现及其功能,以及如何为 MCTP 端点提供 MCTP 通信所需的地址。

MCTP 发现发生在几个离散的有序步骤中:

  • 总线枚举
  • 总线地址分配
  • MCTP 能力发现
  • 端点 ID 分配
  • 路由信息的分发和使用

本条概述了在各种操作场景中用于完成每个步骤的方法。第 12 条提供了有关用于实现这些操作的消息的详细信息。

8.14.1 总线枚举

此步骤表示现有的总线枚举。(此步骤中执行的操作特定于给定媒介。)由于物理总线上的设备枚举是特定于介质的,因此在介质的传输绑定规范中提供此信息。

8.14.2 总线地址分配

MCTP 端点需要一个对给定总线段唯一的总线地址。此步骤处理这些地址的分配。某些总线类型(例如 PCIe)具有内置机制来有效处理此问题。其他 (例如 SMBus/I2C) 需要一些额外的考虑。由于总线地址分配是特定于介质的,因此此信息在介质的传输绑定规范中提供。

8.14.3 MCTP 功能发现

功能发现涉及发现各个 MCTP 端点的特征。 可发现的功能包括端点支持的消息类型以及支持的消息类型版本。有关用于完成功能发现的方法的说明,请参见 8.10。

8.14.4 端点 ID 分配

端点 ID 是用于标识特定 MCTP 端点的系统范围的唯一 ID。它们可以在系统启动或热插拔插入时动态分配。有关用于完成 EID 分配的方法的说明,请参见 8.17。

8.14.5 路由信息的分发和使用

具有桥接功能的 MCTP 端点需要路由信息来识别将消息转发到其最终目的地的下一跃点。有关如何在 MCTP 端点之间传递路由信息的说明,请参阅 9。

8.15 具有多个媒介接口的设备

MCTP 完全支持在多个类型的总线上具有接口的管理控制器或受管设备。例如,设备可以同时具有 PCI Express (PCIe) 和 SMBus/I2C 接口。在这种情况下,设备通常每个接口都有不同的 EID。(网桥可以包含在多个接口之间共享端点的实例化;有关更多信息,请参阅 9.1.2。

此概念在受管系统的不同操作场景中非常有用。例如,通常在 ACPI“S0”电源状态(当系统完全通电时)使用 PCIe 接口,这将提供更高的带宽,而 SMBus/I2C 接口用于“S3–S5”低功耗睡眠状态。

基准传输单元被指定为在所有介质中通用,使数据包能够在不同介质之间路由,而无需桥接器执行中间组装和反汇编操作来处理不同介质之间数据包有效负载大小的差异。

支持多个媒体接口的设备应满足本规范的命令要求以及每个已启用接口的相关传输绑定规范。对于给定的消息类型,设备可以在所有 MCTP 接口上实现相同的消息类型特定命令,而不管介质如何,除非消息类型规范另有规定。

8.16 对等事务

端点可以使用给定总线上的物理寻址以点对点方式进行互通

当物理地址已知但 EID 未知时,使用 EID 的特殊值。此功能主要用于支持设备发现和 EID 分配。尚未分配 EID 的设备不会使用 EID 进行寻址。相反,设备使用 MCTP 控制命令 Set Endpoint ID 分配其 EID,该命令仅使用物理寻址。

同样,根据传输绑定,设备还可以通过向总线所有者的已知物理地址发送 MCTP 消息来宣布其存在(例如,对于 PCIe VDM,这将是根复合体;对于 SMBus/I2C,则为主机从地址,依此类推)。

需要注意的是,如果两个端点位于同一总线上,则它们不需要通过网桥来相互通信。设备使用 Resolve Endpoint ID 命令询问总线所有者应该使用什么物理地址将消息路由到给定的 EID。根据总线实现,总线所有者可以返回消息应传递到的桥的物理地址,也可以返回总线上对等节点的物理地址。

8.17 端点 ID 分配和端点 ID 池

MCTP EID 是 MCTP 基础设施用于寻址端点和在系统中的多条总线之间路由消息的系统范围的唯一 ID。有一个 EID 分配给给定的物理地址。大多数受管设备或管理控制器将仅连接到单个总线,并且具有单个 EID。连接到多个不同总线的非桥接设备将为其连接的每条总线提供一个 EID。

总线所有者是 MCTP 设备负责向总线段上的设备颁发 EID。这些 EID 来自总线所有者维护的 EID 池。

除了最顶层的总线所有者(8.17.1) 之外,给定总线所有者的 EID 池在运行时由层次结构中位于其上方总线的总线所有者动态分配。热插拔设备的 EID 池应动态分配。

将 EID 分配给 MCTP 端点后,事务中涉及的 MCTP 设备必须了解给定消息将遍历的路由。第 9 条描述了如何在消息路由的参与者之间共享此路由信息。

8.17.1 最顶层的总线所有者

最顶层的总线所有者是 EID 池的最终来源,给定 MCTP 网络的所有 EID 都从该池中提取。

1. 如图 5 所示,其中箭头用于标识总线所有权的作用。箭头从特定总线的总线所有者向外指向外部,向内指向总线上“拥有”的设备。

在图 5 中,图 A 中的设备 X 和图 B 中的网桥 X 是最顶层总线所有者的示例。图 A 显示了一个连接到单个总线的设备,并且是整个 MCTP 网络最顶层的总线所有者。图 B 显示,一个网桥可以同时是最顶层的总线所有者,也可以是多条总线的总线所有者。不同的颜色代表不同媒介的示例。

图 5 – 最顶层的总线所有者

图6-拆分桥

一个实现可能需要在两个物理设备上拆分一个总线所有者或桥接器。这样的实现应包括一种机制(例如,图 6 中所示的链接),使两个部分能够共享一个公共路由表,或者具有保持同步的路由表的单个副本。此机制的定义超出了本规范的范围。

8.17.2 使用静态 EID 和静态 EID 池

通常,唯一需要静态 (预配置默认分配的非零值) EID 分配的设备将是最顶层的总线所有者。它需要一个静态 EID,因为没有其他方可以通过 MCTP 为其分配 EID。否则,所有其他设备的 EID 将由总线所有者分配给它们

如果设备用作 MCTP 网桥,则相同的原则也适用。如果器件是 MCTP 总线层次结构中最高的器件,则需要在系统设计中为其分配一个静态 EID 池。否则,将从较高总线所有者动态分配设备 EID 池

允许 MCTP 网络实现对最顶层总线所有者以外的设备使用静态 EID。通常,这只会对非常简单的 MCTP 网络进行。其他关键的 EID 分配注意事项如下:

  • 支持为一个或多个静态 EID 配置的端点也应支持配置为动态分配的 EID
  • MCTP 基本规范中没有为网桥或总线所有者定义任何机制来发现静态 EID 并将其合并到其路由信息中。因此,配置了静态 EID 的简单端点也应与配置为支持端点静态 EID 的总线所有者一起使用。
  • 层次结构中的所有总线所有者/网桥从最顶层的总线所有者到端点都应配置其路由以支持静态 EID 路由信息
  • 尽管使用静态 EID 的端点应与支持静态 EID 的总线所有者一起使用,但反之则不然。使用静态 EID 的总线所有者不需要要求其拥有的总线上的设备配置静态 EID
  • 静态 EID 默认值的配置方式超出了本规范的范围。
  • 不存在指定的机制来“强制”覆盖网桥或总线所有者的静态 EID 的路由表条目。即 Allocate Endpoint ID 和 Routing Information Update 等命令仅影响与动态 EID 关联的条目
  • MCTP 未定义在静态 EID 与动态物理地址一起使用时保持路由表更新的机制。也就是说,不支持将静态 EID 与动态物理地址一起使用
  • 网桥可以混合使用静态和动态 EID 池。也就是说,路由表可以同时具有静态和动态条目,并且可以从静态和动态 EID 池分配。总线所有者使用 Allocate Endpoint IDs 命令仅将动态 EID 池提供给网桥。没有关于如何配置静态 EID 池或网桥如何决定是从静态或动态获取的 EID 池为端点提供 EID 的规范。也没有 MCTP 定义的机制来从网桥读取静态 EID 池设置。
  • MCTP 网桥和总线所有者(最顶层的总线所有者除外)不需要包含对静态 EID 的支持。
  • MCTP 未定义考虑静态 EID 分配的分配 EID 池的机制。也就是说,网桥无法请求为其分配一组特定的 EID。
  • MCTP 网桥/总线所有者可以配置为仅使用静态 EID
8.17.3 静态物理地址的使用

在许多简单的拓扑中,最好使用具有静态配置物理地址的设备。这可以简化设备的实现。例如,未在热插拔应用中使用的 SMBus/I2C 器件不需要支持 SMBus 地址分配 (SMBus ARP) 协议。固定地址还有助于识别 MCTP 设备在系统中的位置和使用情况。例如,如果一个系统有两个其他方面相同的 MCTP 设备,系统供应商将知道地址为“X”的设备是主板前面的设备,而地址为“Y”的设备位于后面的设备,因为这是他们在设计系统时分配地址的方式。

因此,MCTP 传输绑定(例如用于 SMBus/I2C)可以支持位于静态物理地址的设备,而无需绑定定义一种机制,使总线所有者能够发现使用静态地址的 MCTP 设备。

在这种情况下,网桥或总线所有者应事先了解这些设备的地址,以便能够将 EID 分配给这些设备并支持这些设备的路由服务。为了支持此要求,我们向设备供应商提供了以下要求和建议:

  • 充当总线所有者或网桥并旨在支持使用静态物理地址的 MCTP 设备应提供非易失性配置选项,使系统集成商能够配置哪些设备地址用于网桥/总线所有者拥有的每条总线上的设备
  • 发生这种非易失性配置的机制特定于设备供应商。在许多情况下,物理地址信息将保存在与设备关联的某种类型的非易失性存储器中,并在制造设备或将设备集成到系统中时加载。在其他情况下,此信息可能会编码到设备的固件版本中。
8.17.4 总线所有者/网桥的端点 ID 分配流程

总线所有者/网桥应获得自己的 EID 分配和 EID 池,如下所示。这些步骤仅适用于不是最顶层总线所有者的总线所有者/桥接设备。

  • 总线所有者/网桥应预先配置非易失性信息,以识别他们拥有的总线。(如何完成此配置是特定于设备/供应商的,超出了本规范的范围。)
  • 总线所有者/网桥宣布其出现在其不拥有的任何总线上,以获取该总线的 EID 分配。发生此公告的机制取决于特定的物理传输绑定,并被定义为绑定规范的一部分。
  • 总线所有者/网桥会等待,直到它通过 Set Endpoint ID 命令为其中一条总线获得自己的 EID 分配。
  • 总线所有者/网桥通过在对 Set Endpoint ID 命令的响应返回该信息来指示它所需的 EID 池的大小
  • 对于总线所有者/网桥本身是“拥有”设备的每条总线,总线所有者/网桥将通过从总线所有者那里发送 Allocate Endpoint IDs 命令获得一个 EID 池
  • 总线所有者/网桥仅接受来自为其提供分配“第一个”总线所有者的总线的分配,如 8.10 中的 Allocate Endpoint IDs 命令描述中所述。如果它从其他总线获取分配,则它们将被拒绝。

总线所有者现在可以开始为其拥有的每条总线构建路由表,并接受路由信息更新信息。有关更多信息,请参阅 9。

8.17.5 终端 ID 保留

只要设备处于正常运行状态,就应保留其 EID 分配异步情况(例如设备错误、意外断电、电源状态更改、重置、固件更新)可能会导致设备需要重新分配其 EID。设备应在可能暂时停止响应 MCTP 命令的情况下保留其 EID 分配,例如在内部重置、错误情况或配置更新期间。

8.17.6 从热插拔设备中回收 EID

网桥通常具有有限的 EID 池,可从中分配给设备。(当单个总线所有者支持热插拔设备时,这也适用。网桥必须回收 EID,这样当设备被移除时,稍后可以在插入设备时重新分配 EID。否则, EID 池可能会随着设备的连续删除和添加而耗尽。

使用静态地址的端点的 EID 不会被回收。

MCTP 基本协议中未指定用于检测设备删除的机制。 因此,检测设备是否已删除的一般方法是在添加新设备并将 EID 或 EID 池分配给该设备时重新枚举总线

以下方法可用于检测已删除的热插拔设备:总线所有者/网桥可以通过验证当前分配给直接位于总线上的端点的 EID 并确定缺少哪些 EID 来检测已删除的设备。它可以通过尝试访问网桥在其路由表中列出的每个端点来实现此目的,这些端点是直接位于特定总线上的设备。尝试访问每个端点可以通过向每个设备的物理地址发出 Get Endpoint ID 命令并将返回的结果与路由表中的现有条目进行比较来完成。如果命令没有响应,或者与现有路由信息不匹配,则应清除该条目,并将相应的 EID 或 EID 范围返回到“池”重新分配。然后,总线所有者/网桥可以完成 EID 分配的正常步骤。

此方法应该适用于所有物理传输绑定,因为它将“已删除的 EID”检测处理与总线的地址分配过程分开。

在某些情况下,热插拔端点可能会暂时进入不响应 MCTP 控制消息的状态。根据介质的不同,当端点重新联机时,它可能不会请求新的 EID 分配,而是继续使用最初分配的 EID。如果在总线所有者验证 EID 以查看是否有任何端点不再可访问时发生这种情况,则总线所有者可能会认为该端点已被删除,并将其 EID 重新分配给新插入的端点,除非采取其他步骤:

  • 总线所有者应至少等待 TRECLAIM 秒,然后再重新分配给定的 EID(其中 TRECLAIM 在用于访问端点的介质的物理传输绑定规范中指定)。
  • 只有在将 EID 池中所有未使用的 EID 分配给终端节点后,才能重新分配回收的 EID。或者,如果总线所有者维护一个回收的 EID(及其关联的物理地址)的简短 FIFO 列表并首先分配较旧的 EID,则可以实现额外的稳健性。
  • 总线所有者应在 TRECLAIM 到期后尝试访问端点,以确认该端点已被删除。它可以通过向端点发出 Get Endpoint ID 命令来验证端点是否仍然没有响应。建议至少执行 3 次,如果可能,在两次尝试之间至少延迟 1/2 * TRECLAIM。如果端点仍然没有响应,则可以假定将其 EID 返回到可用于分配的 EID 池是安全的。
8.17.7 热插拔端点的其他要求

热插拔设备应支持 Get Endpoint UUID 命令。此要求的目的是提供一种通用机制来识别设备何时已更改。

如果端点进入暂时不响应 MCTP 控制消息的状态,则如果它们处于“离线”状态超过 TRECLAIM 秒,则应重新通知自身并请求新的 EID 分配,其中 TRECLAIM 在用于访问端点的介质的物理传输绑定规范中指定。

8.17.8 具有多个端点的设备的其他要求

非桥接设备连接到的每个 MCTP 总线都使用单独的 EID。在许多情况下,希望能够识别同一设备可通过多个 EID 访问。

如果端点具有多个物理接口(端口),则可以使用 MCTP Get Endpoint UUID 命令(请参阅 12.5)检索唯一的系统范围标识符,从而将这些接口与设备相关联。

连接到多条总线的设备应支持每个端点的 Get Endpoint UUID 命令,并返回所有端点的通用 UUID 值。这是为了能够将 EID 识别为属于同一物理设备。

8.18 处理重新分配的 EID

尽管可能性不大,但在 MCTP 网络运行过程中,仍有可能将特定的 EID 从一个端点重新分配到另一个端点。例如,如果为新热插拔插入的终端节点设备分配了 EID,而该 EID 之前分配给后来被删除的设备,则可能会发生这种情况。

在这种情况下,端点可能会收到针对以前安装的设备的消息。对于 MCTP 控制消息,这不被视为问题,因为控制消息通常仅由总线所有者和网桥用于初始化和维护 MCTP 网络。总线所有者和网桥知道他们已分配给端点的 EID,因此本质上知道任何 EID 重新分配。

但是,其他端点未明确通知 EID 的重新分配。因此,从一个端点直接发生的通信可能会在 EID 通信过程中被分配给其他设备。这应由特定于用于通信的消息类型的协议进行保护

通常,防止这种情况的方法是,其他消息类型将需要在相互通信的端点之间建立某种 “会话”。默认情况下,设备不会使用活跃会话启动。因此,如果添加了新设备并获取重新分配的 EID,则它不会与其他设备进行活跃会话,并且其他设备将在尝试通信时检测到这一点。

将新 EID 分配给现有设备的行为应具有相同的效果。也就是说,如果设备获得新的 EID 分配,它将 “关闭” 其他消息类型的任何活跃会话

本文档未指定其他消息类型在设备之间建立和跟踪通信会话的机制。这取决于特定消息类型的规范。

协议:DMTF Template

  • 9
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值