libpcap icon indicating copy to clipboard operation
libpcap copied to clipboard

Request for New DLT_TYPE for PLDM Protocol

Open manojkiraneda opened this issue 11 months ago • 5 comments

Requesting the assignment of a new DLT_TYPE for the Platform Level Data Model (PLDM) protocol. Below, I have provided the necessary details for this request.

Background : PLDM is a family of standardized protocols defined by the Distributed Management Task Force (DMTF) to enable efficient communication between platform components. PLDM is not a single specification but a consortium of specifications, each addressing specific management domains, including:

  • PLDM Base specification 1
  • PLDM for BIOS Control and Configuration 2
  • PLDM for Firmware Update 3
  • PLDM for FRU Data 4
  • PLDM for Platform Monitoring and control 5
  • PLDM for SMBIOS Transfer 6
  • PLDM for File Transfer 7

These specifications enable the unified management of various platform functionalities such as firmware updates, hardware inventory, monitoring and diagnostics.

Encapsulation Details: PLDM packets are typically transmitted over Management Component Transport Protocol (MCTP), which itself can be encapsulated in various transport mechanisms such as SMBus, PCIe VDM or I2C. The encapsulation format for PLDM data follows the structure defined by the DMTF specifications.

PLDM Packet details: PLDM Message Header : Contains fields such as message type, instance ID, and header version details. Payload : This includes the command and its associated data.

For additional details , refer to the PLDM base specification 1

Use case for a new DLT_TYPE: Currently, there is no dedicated DLT_TYPE for capturing and analyzing PLDM data in tools like tcpdump or wireshark 8. Assigning a DLT_TYPE for PLDM would enable tools to differentiate PLDM packets from other protocols, and it also facilitates the development and use of protocol dissectors (without its underlying transport) enabling detailed parsing and display of PLDM packets.

Proposed Name: I propose naming the new DLT_TYPE as DLT_PLDM to reflect its purpose.

Please let me know if any additional technical details, packet capture examples or further clarification to process this request.

manojkiraneda avatar Jan 16 '25 05:01 manojkiraneda

PLDM packets are typically transmitted over Management Component Transport Protocol (MCTP), which itself can be encapsulated in various transport mechanisms such as SMBus, PCIe VDM or I2C.

So are there existing mechanisms to capture this traffic? If so, do they capture at one or more of the link layers over which it can be transported, at the MCTP layer, or at the PLDM layer?

guyharris avatar Jan 16 '25 06:01 guyharris

PLDM packets are typically transmitted over Management Component Transport Protocol (MCTP), which itself can be encapsulated in various transport mechanisms such as SMBus, PCIe VDM or I2C.

So are there existing mechanisms to capture this traffic? If so, do they capture at one or more of the link layers over which it can be transported, at the MCTP layer, or at the PLDM layer?

Yes, there are MCTP implementations like libmctp and its linux in-kernel implementation which supports packet capture at the MCTP layer. Yes, when mctp packet is captured , it would also have the PLDM packet as its payload.

manojkiraneda avatar Jan 17 '25 13:01 manojkiraneda

@guyharris do you have any more comments on this one ?

manojkiraneda avatar Mar 18 '25 15:03 manojkiraneda

@infrastation @guyharris can someone please take a look at this ? and provide some feedback.

manojkiraneda avatar Jul 16 '25 03:07 manojkiraneda

PLDM packets are typically transmitted over Management Component Transport Protocol (MCTP), which itself can be encapsulated in various transport mechanisms such as SMBus, PCIe VDM or I2C.

So are there existing mechanisms to capture this traffic? If so, do they capture at one or more of the link layers over which it can be transported, at the MCTP layer, or at the PLDM layer?

Yes, there are MCTP implementations like libmctp and its linux in-kernel implementation which supports packet capture at the MCTP layer. Yes, when mctp packet is captured , it would also have the PLDM packet as its payload.

That sounds as if the packets you get have MCTP, not PLDM, as the lowest-level protocol. Presumably that would require a link-layer type for MCTP, not PLDM, which would have the advantage that it could be used for more than just PLDM. The Platform Level Data Model (PLDM) over MCTP Binding Specification seems to indicate that the first octet of the payload of an MCTP message includes a Message Type field that, if equal to 1, indicates that the rest f the payload contains a PLDM message, so it's not as if a dissector of MCTP messages would need an out-of-band mechanism (e.g., a preference setting) to determine that a message is a PLDM message.

Note also that link-layer types for at least some protocols over which MCTP is transported already have link-layer types, e.g. I2C in Linux.

guyharris avatar Jul 16 '25 22:07 guyharris