MCTP_USB_1.0.1
MCTP_USB_1.0.1
3 Date: 2024-05-21
4 Version: 1.0.1
8 Supersedes: 1.0.0
12 Copyright Notice
14 DMTF is a not-for-profit association of industry members dedicated to promoting enterprise and systems
15 management and interoperability. Members and non-members may reproduce DMTF specifications and
16 documents, provided that correct attribution is given. As DMTF specifications may be revised from time to
17 time, the particular version and release date should always be noted.
18 Implementation of certain elements of this standard or proposed standard may be subject to third-party
19 patent rights, including provisional patent rights (herein “patent rights”). DMTF makes no representations
20 to users of the standard as to the existence of such rights and is not responsible to recognize, disclose, or
21 identify any or all such third-party patent right owners or claimants, nor for any incomplete or inaccurate
22 identification or disclosure of such rights, owners, or claimants. DMTF shall have no liability to any party,
23 in any manner or circumstance, under any legal theory whatsoever, for failure to recognize, disclose, or
24 identify any such third-party patent rights, or for such party’s reliance on the standard or incorporation
25 thereof in its products, protocols, or testing procedures. DMTF shall have no liability to any party
26 implementing such standards, whether such implementation is foreseeable or not, nor to any patent
27 owner or claimant, and shall have no liability or responsibility for costs or losses incurred if a standard is
28 withdrawn or modified after publication, and shall be indemnified and held harmless by any party
29 implementing the standard from any and all claims of infringement by a patent owner for such
30 implementations.
31 For information about patents held by third-parties which have notified DMTF that, in their opinion, such
32 patents may relate to or impact implementations of DMTF standards, visit
33 https://www.dmtf.org/about/policies/disclosures.
34 This document’s normative language is English. Translation into other languages is permitted.
35 CONTENTS
36 1 Scope .................................................................................................................................................... 6
37 2 Normative references ............................................................................................................................ 6
38 3 Terms and definitions ............................................................................................................................ 6
39 4 Symbols and abbreviated terms ............................................................................................................ 7
40 5 Conventions .......................................................................................................................................... 7
41 6 MCTP over USB Transport ................................................................................................................... 7
42 ANNEX A (informative) Change log .......................................................................................................... 20
43
44 Figures
45 Figure 1 – Physical topology of USB bus ...................................................................................................... 8
46 Figure 2 – Separated USB host and USB Root devices ............................................................................... 9
47 Figure 3 – A USB Root as MCTP bus owner and MCTP bridge .................................................................. 9
48 Figure 4 – An MCTP over USB endpoint as an MCTP bridge .................................................................... 10
49 Figure 5 – MCTP 1.x over USB packet format............................................................................................ 12
50 Figure 6 – USB Bulk transfer principal sequence ....................................................................................... 13
51 Figure 7 – USB Packet with single MCTP packet payload ......................................................................... 13
52 Figure 8 – USB packet with 2 MCTP packets payload ............................................................................... 13
53 Figure 9 – Flow of Operations for Full MCTP Discovery over USB ............................................................ 15
54 Figure 10 – Flow of Operations for Partial Endpoint Discovery .................................................................. 16
55
56 Tables
57 Table 1 – MCTP over USB Header Fields .................................................................................................. 12
58 Table 2 – Physical Address Format ............................................................................................................ 17
59 Table 3 – Medium-specific information ....................................................................................................... 17
60 Table 4 – Timing specifications for MCTP control messages on USB ....................................................... 18
61
62 Foreword
63 The Management Component Transport Protocol (MCTP) Universal Serial Bus (USB) Transport Binding
64 Specification (DSP0283) was prepared by the PMCI working group.
65 DMTF is a not-for-profit association of industry members dedicated to promoting enterprise and systems
66 management and interoperability. For information about DMTF, see https://www.dmtf.org.
67 USB Implementers Forum, Inc. is a non-profit corporation founded by the group of companies that
68 developed the Universal Serial Bus specification. The USB-IF was formed to provide a support
69 organization and forum for the advancement and adoption of Universal Serial Bus technology. For
70 information about USB organization see https://www.usb.org.
71 Acknowledgments
72 DMTF acknowledges the following individuals for their contributions to this document:
73 Editor:
74 • Yuval Itkin – NVIDIA Corporation
75 Contributors:
76 • Patrick Caporale – Lenovo
77 • Samer El-Haj-Mahmoud – ARM Inc
78 • Michael Garner – Meta
79 • Jeff Hilland – Hewlett Packard Enterprise
80 • Eliel Louzoun – Intel Corporation
81 • Chandra Nelogal – Dell Technologies
82 • Edward Newman – Hewlett Packard Enterprise
83 • Stevens, Pierre-Philippe – Advanced Micro Devices
84 • Paul Sack – Marvell Ltd
85 • Hemal Shah – Broadcom Inc.
86 • Bob Stevens – Dell Technologies
87 Introduction
88 The Management Component Transport Protocol (MCTP) Universal Serial Bus (USB) transport binding
89 defines a transport binding for facilitating MCTP communication between platform management system
90 components (e.g. management controllers, management devices) over USB 2.0.
91 The MCTP Base Specification describes the protocol and commands used for communication within and
92 initialization of an MCTP network. The Management Component Transport Protocol (MCTP) Universal
93 Serial Bus (USB) transport binding definition in this specification includes a packet format, USB endpoint
94 descriptors, message routing, and discovery mechanisms for MCTP over USB 2.0 communications.
97 1 Scope
98 This document provides the specification for the Management Component Transport Protocol (MCTP)
99 transport binding using USB.
107 DMTF DSP0222, Network Controller Sideband Interface (NC-SI) Specification 1.1
108 https://www.dmtf.org/sites/default/files/standards/documents/DSP0222_1.1.pdf
111 DMTF DSP0236, Management Component Transport Protocol (MCTP) Base Specification 1.3
112 https://www.dmtf.org/sites/default/files/standards/documents/DSP0236_1.3.pdf
113 DMTF DSP0239, Management Component Transport Protocol (MCTP) IDs and Codes 1.8
114 https://www.dmtf.org/sites/default/files/standards/documents/DSP0239_1.8.pdf
115 DMTF DSP0256, Management Component Transport Protocol (MCTP) Host Interface Specification 1.0
116 https://www.dmtf.org/sites/default/files/standards/documents/DSP0256_1.0.pdf
119 ISO/IEC Directives, Part 2, Principles and rules for the structure and drafting of ISO and IEC documents,
120 https://www.iso.org/sites/directives/current/part2/index.xhtml
121 USB Implementers Forum, Inc. Universal Serial Bus Specification version 2.0
122 https://www.usb.org/document-library/usb-20-specification
126 The terms "shall" ("required"), "shall not", "should" ("recommended"), "should not" ("not recommended"),
127 "may", "need not" ("not required"), "can" and "cannot" in this document are to be interpreted as described
128 in ISO/IEC Directives, Part 2, Clause 7. The terms in parentheses are alternatives for the preceding term,
129 for use in exceptional cases when the preceding term cannot be used for linguistic reasons. Note that
130 ISO/IEC Directives, Part 2, Clause 7 specifies additional alternatives. Occurrences of such additional
131 alternatives shall be interpreted in their normal English meaning.
132 The terms "clause", "subclause", "paragraph", and "annex" in this document are to be interpreted as
133 described in ISO/IEC Directives, Part 2, Clause 6.
134 The terms "normative" and "informative" in this document are to be interpreted as described in ISO/IEC
135 Directives, Part 2, Clause 3. In this document, clauses, subclauses, or annexes labeled "(informative)" do
136 not contain normative content. Notes and examples are always informative elements.
137 The terms defined in DSP0004, DSP0223, and DSP1001 apply to this document. The following additional
138 terms are used in this document.
139
140 MCTP USB Endpoint
141 a USB interface on which MCTP over USB communication is supported
145 4.1
146 USB
147 Universal Serial Bus
148 5 Conventions
149 The conventions described in the following clauses apply to this specification.
153 Unless otherwise specified, numeric or bit fields that are designated as reserved shall be written as 0
154 (zero) and ignored when read.
161 A MCTP over USB compliant USB device shall support MCTP over USB communications on at least one
162 USB interface of the device. If a MCTP over USB compliant USB device supports MCTP over USB
163 communications on more than one USB interface, then MCTP over USB communication on each such
164 USB interface shall be independent from MCTP over USB communications on other USB interfaces.
Management controller
USB Root
Managed Host-
Device Interface
Endpoint Endpoint
USB Root
USB Hub
178 The USB host may also be separated from the USB root device. In such a case the USB root is controlled
179 by a separate interface as shown in Figure 2.
Platform CPU
Control bus
USB
Root
USB Hub
USB Root
MCTP Bus Owner &
MCTP bridge
USB Hub
187 Figure 3 – A USB Root as MCTP bus owner and MCTP bridge
188 A USB MCTP endpoint can also serve as an MCTP bridge to another MCTP bus as shown in Figure 4.
MCTP Bus #1
USB Root
MCTP Bus Owner
USB Hub
MCTP Bus #2
MCTP Bus Owner
189
191 6.1.4 Descriptors structure for MCTP endpoint for MCTP over USB
192 An MCTP over USB endpoint is composed of 2 USB Bulk endpoints:
193 • Out Bulk endpoint – used to send data from the USB root to the USB device
194 • In Bulk endpoint – used to send data from the USB device to the USB root
195 The set of these 2 endpoints is defined as a single USB MCTP interface which is declared by the
196 following USB descriptors. A device may have more than one MCTP endpoint. Each such MCTP
197 endpoint is an independent USB interface.
198 MCTP over USB is operating in high-speed mode, the endpoint buffer size shall be set to 512 Bytes.
200 For every MCTP endpoint there is a single interface descriptor. This USB interface descriptor defines
201 • Class code – A value of 0x14 defines an MCTP endpoint class
202 • Sub-Class code
203 • A value of 0x0 defines a Management-controller and Managed-Device endpoints
204 • A value of 0x1 defines an MCTP Host-Interface endpoint
205 • Number of endpoints on the USB MCTP endpoint interface, shall be set to 2
213 A descriptor is required for every USB Bulk endpoint. Given that there are 2 USB Bulk endpoints for every
214 MCTP interface there are 2 Bulk endpoint descriptors.
215 The 2 Bulk endpoints should use the same USB endpoint number.
217 This descriptor declares the USB Bulk endpoint that is used to send data from the USB Root to the USB
218 Device. The following attributes shall be defined in this descriptor:
219 • bEndpointAddress – set to the following 8 bits value:
220 [7:4] - 0000,
221 [3:0] - Bulk_Endpoint_Number_In_USB_Device
222 • bmAttributes – Set to 0x02 to declare a Bulk endpoint
223 • wMaxPacketSize
224 • Set to 512, declaring a 512 Bytes buffer size
225 • bInterval – set to 0x01
226 • High-speed devices, declaring that the host shall not try to access the endpoint again
227 during the same micro-frame after receiving a NAK response
228 Using this setting minimizes the system idle power by lowering the maximal NAK rate on
229 every USB endpoint to 8000 times per second. This sets the maximal additional response
230 latency in such a case to 125µsec
231 Implementation note: While USB specification defines bInterval as a method for setting the maximal
232 NAK rate, there are implementations which may not lower the polling rate based on this parameter.
234 This descriptor declares the USB Bulk endpoint that is used to send data from the USB Device to the
235 USB Root. The following attributes shall be defined in this descriptor
236 • bEndpointAddress – set to the following 8 bits value:
237 [7:4] - 1000,
238 [3:0] - Bulk_Endpoint_Number_In_USB_Device
239 • bmAttributes – Set to 0x02 to declare a Bulk endpoint
240 • wMaxPacketSize
241 • Set to 512, declaring a 512 Bytes buffer size
242 • bInterval – set to 0x01
243 • For high-speed devices, declaring that the host shall not try to access the endpoint again
244 during the same micro-frame after receiving a NAK response
245 Using this setting minimizes the system idle power by lowering the maximal NAK rate on
246 every USB endpoint to 8000 times per second. This sets the maximal additional response
247 latency in such a case to 125µsec
248 Implementation note: While USB specification defines bInterval as a method for setting the maximal
249 NAK rate, there are implementations which may not lower the polling rate based on this parameter.
+0 +1 +2 +3
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
Header S E Pkt
MCTP transport header Start+4 Destination Source O O seq T Msg
RSVD Version
endpoint ID endpoint ID M M # O tag
0001
Start+8 Message header Message body
I Message type-specific
Message type
C Header fields
MCTP packet payload
Message integrity check
253
255 The fields in the “MCTP over USB Header” are specific to carrying MCTP packets using USB Bulk
256 transfers. The fields labeled “MCTP transport header” and “MCTP packet payload” are common fields for
257 all MCTP packets and messages and are specified in MCTP. This document defines the location of those
258 fields when they are carried in a USB Bulk transfer.
259 Table 1 lists the MCTP over USB Header fields and values.
0 DMTF ID DMTF Identifier. Always set to 0x1AB4, matching DMTF Vendor ID as registered in PCI-Sig.
2 Reserved MCTP Reserved (8 bits). Shall always be set to 0 when generating a packet. Shall be
ignored on receive.
3 Length Length: Length of the MCTP over USB packet in Bytes, starting from the “MCTP over USB Header” to
the last byte in the “MCTP packet payload”, implementations shall support the baseline transmission
unit defined in DSP0236.
261 The MCTP packets are sent as the data to the designated USB Bulk endpoint. MCTP traffic over USB
262 shall use High-Speed (480M bits-per-second) mode.
263 Figure 6 illustrates HS Bulk data transfer. Every transfer starts with a Token which indicates the data
264 transfer direction and the addressed device and endpoint. Following the token, the data packet is
265 transferred (IN or OUT), and after the data packet transfer is complete, a handshake PID is used to
266 ACK/NACK the transfer. The Token and the Data packet include CRC as shown below.
IN – 0x96 7 bits 4 bits 5 bits DATA0 – 0x3C N ≤ 512 Bytes 16 bits ACK – 0x2D
NAK – 0xA5
267 Out – 0x1E DATA1 – 0xB4
269 USB specification does not require data payloads to always be exactly the endpoint buffer size.
270 Therefore, if a data payload is less than the endpoint buffer size, it does not need to be padded to the
271 endpoint buffer size.
272 The MCTP packet cannot be larger than the endpoint buffer size. The payload of the USB packet
273 contains any combination of one or more MCTP packets destined to or through the same Endpoint-ID
274 (EID). Refer to Figure 7 – USB Packet with single MCTP packet payload, Figure 8 – USB packet with 2
275 MCTP packets payload.
S S Data packet C S
Y Y PI Y PI
N Token ND MCTP packet
R ND
c c C c
276
S S Data packet C S
Y Y PI Y PI
N Token N D MCTP packet #1 MCTP packet #2
R N D
c c C c
278
292 2) Following its USB enumeration, an MCTP-capable device shall send the Discovery Notify
293 MCTP message , to request EID assignment. A USB interface of a composite device with more
294 than one MCTP endpoint shall send the Discovery Notify MCTP message for every MCTP
295 endpoint separately.
296 3) The MCTP bus owner issues a Prepare for Endpoint Discovery message for every MCTP-
297 capable device using the Broadcast EID as the destination EID. When addressing a composite
298 device with more than one MCTP endpoint, the MCTP bus owner shall issue a Prepare for
299 Endpoint Discovery message for every MCTP-endpoint on that MCTP-capable device using the
300 Broadcast EID as the destination EID.
301 This message causes each discoverable endpoint on the bus to set its USB endpoint
302 Discovered flag to undiscovered.
303 4) All MCTP-capable devices that have their Discovered flag set to undiscovered will respond with
304 an Endpoint Discovery response message.
305 5) The MCTP bus owner should wait for at least MT2 time interval to receive the response. This
306 helps ensure, that all endpoints that received the Prepare for Endpoint Discovery request have
307 processed the request.
308 6) The MCTP bus owner issues an Endpoint Discovery request message for every MCTP endpoint
309 on an MCTP-capable device using the Broadcast EID as the destination EID. When addressing
310 a composite device with more than one MCTP endpoint, the MCTP bus owner shall issue an
311 Endpoint Discovery message for every MCTP-capable interface using the Broadcast EID as the
312 destination EID.
313 7) For each response message received from an undiscovered MCTP interface of an MCTP-
314 capable USB device, the MCTP bus owner issues a Set Endpoint ID command to the physical
315 address for the endpoint. This causes the endpoint to set its Discovered flag to discovered.
316 From this point, the endpoint shall not respond to the Endpoint Discovery command until
317 another Prepare for Endpoint Discovery command is received, or some other condition causes
318 the Discovered flag to be set back to undiscovered.
319 8) If the MCTP bus owner received any responses to the Endpoint Discovery request issued in
320 Step 6, then it shall repeat steps 6 and 7 until it no longer gets any responses to the Endpoint
321 Discovery request. In this case, then the MCTP bus owner is allowed to send the next Endpoint
322 Discovery request without waiting for MT2 time interval. If no responses were received by the
323 MCTP bus owner to the Endpoint Discovery request within the MT2 time interval, then the
324 discovery process is completed.
325 After the initial endpoint enumeration, it is recommended that the MCTP bus owner maintains a list of the
326 unique IDs for the endpoints it has discovered and reassigns the same IDs to those endpoints if a USB
327 endpoint number changes during system operation.
328 Figure 9 provides an example flow of operations for full endpoint discovery.
Prepare for Endpoint Discovery Request Prepare for Endpoint Discovery Request
from USB Root
Discovered flag ‘undiscovered’
Destination EID = 0xFF
Prepare for Endpoint Discovery Response Source EID = Bus Owner EID
Prepare for Endpoint Discovery Response
Destination EID = Bus Owner EID
Source EID = Null
330 Figure 9 – Flow of Operations for Full MCTP Discovery over USB
337 The partial discovery process is the same as the full discovery process except that the MCTP bus owner
338 skips the step of broadcasting a Prepare for Endpoint Discovery command in order to avoid clearing the
339 Discovered flags of already discovered endpoints.
340 The partial discovery process may be initiated when a device that is added or enabled for MCTP sends a
341 Discovery Notify message to the MCTP bus owner. The MCTP bus owner may also elect to periodically
342 issue a broadcast Endpoint Discovery message to test for whether any undiscovered endpoints have
343 been missed. The Discovery Notify message provides the MCTP bus owner with the address/endpoint of
344 the MCTP USB endpoint. The MCTP bus owner can then send a directed Endpoint Discovery message
345 to the endpoint to confirm that the device has not been discovered. The MCTP bus owner then issues a
346 Set Endpoint ID command to the physical address for the endpoint which causes the endpoint to set its
347 Discovered flag to discovered.
348 It is recommended that the MCTP bus owner maintains a list of the unique MCTP EIDs for the endpoints
349 it has discovered and reassigns the same MCTP EIDs to those endpoints if an address changes during
350 system operation.
351 Figure 10 provides an example flow of operations for partial endpoint discovery.
372 The Device Address and Endpoint number are only used in the Bulk transfer token as shown in Figure 6.
373 As the MCTP over USB Header does not include the Device Address and does not include the Endpoint
374 number, there is no need for any MCTP endpoint other than the MCTP over USB bus owner to record the
375 endpoint address. The bus owner will always add the USB Device Address and Endpoint number of the
376 destination endpoint to the USB Bulk packet that is sent to that endpoint.
377 Note: an MCTP over USB endpoint uses 2 Bulk endpoints with the same endpoint number, as described in section
378 6.1.4
379 The address format shown in Table 2 is used for MCTP control commands that require a physical address parameter
380 to be returned for a bus that uses this transport binding. This includes commands such as the Resolve Endpoint ID,
381 Routing Information Update, and Get Routing Table Entries commands.
Byte 1 [7] – 0
[6:0] – USB Device Address
2 bytes
Byte 2 [7:4] – 0000
[3:0] – Endpoint Number
383
Description
[7:0] reserved
392
398 6.11 MCTP over USB packet and control message timing requirements
399 In USB, all traffic passes through the USB Root.
Endpoint ID reclaim TRECLAIM 5 sec - Minimum time that a bus owner shall
wait before reclaiming the EID for a
non-responsive hot-plug endpoint (i.e.,
not ACKing repeated GETSTATUS
CCCs).
Time-out waiting for a response MT2 MT1 max[1] MT4, min[1] This interval at the requester sets the
+ 2 * MT3 minimum amount of time that a
max requester should wait before retrying a
MCTP control request. This interval is
measured at the requester from the end
of the successful transmission of the
MCTP control request to the beginning
of the reception of the corresponding
MCTP control response.
NOTE: This specification does not preclude
an implementation from adjusting the
minimum time-out waiting for a response to a
smaller number than MT2 based on the
measured response times from responders.
The mechanism for doing so is outside the
scope of this specification.
Transmission Delay MT3 - 100 ms Allowed time between the end of the
transmission of an MCTP Control
Protocol message at the transmitter to
the beginning of the reception of the
MCTP Control Protocol message at the
receiver.
Inter-Packet delay for Multi- MT3a - 100 ms Allowed time between the end of the
Packet messages transmission of an MCTP packet with
EOM=0 to the beginning of the following
MCTP packet of the same Message
(see Message assembly in Management
Component Transport Protocol (MCTP) Base
Specification), measured at the
transmitter
Instance ID expiration interval MT4 5 sec [2] 6 sec Interval after which the instance ID for a
given response will expire and become
reusable if a response has not been
received for the request. This is also the
maximum time that a responder tracks
an instance ID for a given request from
a given requester.
NOTE 1: Unless otherwise specified, this timing applies to the mandatory and optional MCTP commands.
NOTE 2: If a requester is reset, it may produce the same sequence number for a request as one that was previously issued. To
guard against this, it is recommended that sequence number expiration be implemented. Any request from a given
requester that is received more than MT4 seconds after a previous, matching request should be treated as a new
request, not a retry.
401
402 ANNEX A
403 (informative)
404
405
406 Change log
407