System and method of data tunneling between a source device and a sink device
A system and method of managing data communication over platform-level interconnect protocols may include receiving first and second requests from a source device, each optionally querying data from a destination device, encapsulating the requests as payload and tunnelling them as respective posted messages via a platform-level interconnect protocol. Embodiments may further include transmitting corresponding non-posted messages, triggered by the posted messages, obtaining queried data pertaining to the first request, and encapsulating the queried data as payload and tunnelling it to a sink device as a completion message associated with the second non-posted message. Embodiments may include a pro forma counter configured to increment upon transmission of each non-posted message and decrement upon reception of each completion message, thereby enabling retrieval of queried data while managing outstanding non-posted message limitations of the platform-level interconnect protocol.
1 . A method of managing data communication by at least one processor, the method comprising:
receiving a first request and a second request from a source device, each request querying data from a destination device;
encapsulating each of the first and second requests as payload and tunnelling the encapsulated requests from the source device to the destination device as respective first and second posted messages via a platform-level interconnect protocol;
transmitting a first non-posted message and a second non-posted message to the destination device via the platform-level interconnect protocol, wherein the first and second non-posted messages are respectively triggered by the first and second posted messages;
obtaining the queried data pertaining to the first request from the destination device; and
encapsulating the queried data as payload and tunnelling the encapsulated queried data from the destination device to a sink device via the platform-level interconnect protocol as a completion message, associated with the second non-posted message, thereby enabling retrieval of the queried data while managing outstanding non-posted message limitations of the platform-level interconnect protocol.
2 . The method of claim 1 , wherein the platform-level interconnect protocol is PCIe (Peripheral Component Interconnect Express).
3 . The method of claim 1 further comprising delaying the transmission of at least one non-posted message, pending reception of at least one completion message from the destination device, thus avoiding exceeding a predetermined number of outstanding non-posted messages between the source device and the destination device.
4 . The method of claim 1 , wherein the destination device is further configured to function as a source device, adapted to emit said requests, and wherein the source device is further configured to function as a destination device, adapted to tunnel encapsulated data via the platform-level interconnect protocol in a completion message.
5 . A system for data tunnelling, comprising a source device and a sink device,
wherein the source device comprises:
a processor configured to generate a plurality of requests, addressing a target destination device of a group of destination devices;
an encapsulation module configured to encapsulate each of the requests as payload; and
a transmission interface configured to:
tunnel the encapsulated requests to the target destination device by transmitting a respective plurality of posted messages via a platform-level interconnect protocol; and
transmit a plurality of non-posted messages to the target destination device via the platform-level interconnect protocol, wherein each non-posted message is triggered by a respective posted message of the plurality of posted messages, and
wherein the sink device comprises a reception interface configured to receive encapsulated retrieved data, pertaining to a specific request of the plurality of requests, from the target destination device via the platform-level interconnect protocol as a completion message,
and wherein said completion message is associated with any one of the plurality of non-posted messages.
6 . The system of claim 5 , wherein the source device and the sink device are implemented as the same device.
7 . The system of claim 5 , wherein the reception interface of said sink device is further configured to identify encapsulated retrieved data, of a completion message originating from a first request, as a response of the target destination device to at least one second request.
8 . The system of claim 5 wherein the processor of the source device is further configured to delay transmission of at least one non-posted message, pending reception of at least one completion message from the target destination device, thereby avoiding exceeding of a predetermined number of outstanding non-posted messages between the source device and the target destination device.
9 . The system of claim 5 further comprising at least request counter configured to (a) increment upon reception of a request, and (b) decrement upon reception of at least one completion message,
wherein the processor of the source device is further configured to delay transmission of at least one non-posted message based on a value of said request counter.
10 . The system of claim 5 further comprising at least one pro forma counter configured to (a) increment upon transmission of at least one non-posted message, and (b) decrement upon reception of at least one completion message.
11 . The system of claim 5 wherein the source device is configured to transmit said posted, and non-posted messages to a plurality of target destination devices of said group of destination devices via at least one connection fabric device.
12 . The source device of claim 10 , wherein the processor is further configured to:
compare the at least one pro forma counter against a predetermined limit; and
control the transmission interface to transmit the non-posted message based on said comparison.
13 . The system of claim 10 , wherein the source device is further configured to:
generate at least one access request that addresses the target destination device, but does not query data from the target destination device;
encapsulate the at least one access request as payload;
tunnel the encapsulated access request to the target destination device in a respective posted message via the platform-level interconnect protocol;
refrain from triggering a corresponding non-posted message to the destination device via the platform-level interconnect protocol; and
control the at least one pro forma counter to refrain from incrementing.
14 . The system of claim 10 , wherein the source device is further configured to:
receive at least one third-party request that addresses the target destination device;
analyze said third-party request, to determine whether a response is required from the target destination device;
encapsulate the at least one third party request as payload;
tunnel the encapsulated at least one third party request to the target destination device in a respective posted message via the platform-level interconnect protocol;
based on said analysis, refrain from triggering a corresponding non-posted message to the destination device via the platform-level interconnect protocol; and
based on said analysis, control the at least one pro forma counter to refrain from incrementing.
15 . The system of claim 10 , wherein the at least one pro forma counter is implemented on the sink device,
wherein the source device is configured to notify the sink device of transmission of at least one non-posted message,
and wherein the sink device is configured to increment the at least one pro forma counter based on said notification.
16 . The system of claim 10 wherein the at least one pro forma counter comprises:
a global pro forma counter, tracking an overall number of outstanding non-posted messages, sent to the group of destination devices; and
one or more dedicated pro forma counters, each tracking a number of outstanding non-posted messages, sent to a specific destination device of the group of destination devices.
17 . The system of claim 16 , wherein the source device is configured to:
identify the recipient sink device for each posted message;
collaborate with the recipient sink device to maintain an independent count of outstanding non-posted messages.
18 . The system of claim 17 , wherein the source device is further configured to:
identify a condition where the independent count pertaining to a first destination device has exceeded a predetermined threshold; and
redirecting a request from the first destination device to a second destination device of the group of destination devices, based on said identification.
19 . A destination device for managing data communication, the destination device comprising:
a reception interface configured to:
receive encapsulated first and second requests as payload from a source device via respective first and second posted messages transmitted through the platform-level interconnect protocol; and
receive a first non-posted message and a second non-posted message from the source device via a platform-level interconnect protocol, wherein the first and second non-posted messages are respectively triggered by with the first and second posted messages;
an extraction module configured to extract the first request;
a processor adapted to generate a response based on the extracted first request; and
a transmission interface configured to tunnel the response to a sink device via the platform-level interconnect protocol in a completion message associated with the second non-posted messages,
wherein the sink device is configured to identify the response, in the completion message associated with the second non-posted message as pertaining to the first data request.
20 . The destination device of claim 19 wherein the first request comprises a query of data from the destination device, and wherein said processor is configured to
obtain queried data based on the first data request; and
encapsulate the queried data as payload, to be sent via a completion message associated with either one of the first and second non-posted messages.