A network communication system and method

By introducing an aggregation flag in the response to the RDMA READ request, the bandwidth waste and slow speed caused by repeated reading of SQE are resolved, achieving more efficient network communication.

CN119342001BActive Publication Date: 2026-03-03WUXI STARS MICRO SYSTEM TECHNOLOGIES CO LTD
View PDF 3 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2024-10-17
Publication Date
2026-03-03

AI Technical Summary

Technical Problem

In network communication, RDMA READ requests suffer from bandwidth waste and slow completion speed due to repeated reading of SQE.

Method used

Introducing an aggregation flag in the response to an RDMA READ request, and forming a completion queue entry only when the acknowledgment response sets the aggregation flag, reduces repeated access to SQE information and improves on-chip cache utilization.

Benefits of technology

By reducing repeated access to SQE information and optimizing the CQE generation process, the bandwidth utilization of network communication and the completion speed of READ requests are improved.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119342001B_ABST
    Figure CN119342001B_ABST
Patent Text Reader

Abstract

The application provides a network communication system and method, which comprises a request device and a response device; wherein the request device reads request queue entries from a request queue and forms corresponding data packets according to the read request queue entries, and sends the data packets to the response device in turn according to the reading order; the request device also receives response responses corresponding to the data packets from the response device, and if an aggregation mark is set in the response response, forms a completed queue entry for the response response and other response responses which have not been formed into completed queue entries; the response device forms corresponding response responses for the received data packets; wherein the response device sets an aggregation mark in part of the response responses. The application accelerates the speed of completing READ requests and improves the efficiency of generating CQE.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This application belongs to the field of network communication technology, and specifically relates to a network communication system and method. Background Technology

[0002] With the continuous development of computer network communication, traditional network communication protocols require the operating system software protocol stack and the copying and migration of processed data between memory and cache, making it increasingly difficult to improve the high bandwidth and low latency performance of network communication. Therefore, it is necessary to break the existing protocol framework and devise new network technologies to solve the network bandwidth and latency problems. Summary of the Invention

[0003] The purpose of this application is to provide a network communication system and method that aims to solve the problem of bandwidth waste and slow completion speed caused by repeated reading of SQE when RDMAREAD requests are completed in network communication.

[0004] According to a first aspect of this application, a network communication system is provided, comprising: a requesting device and a responding device; wherein...

[0005] The requesting device reads request queue entries from the request queue and assembles corresponding data packets according to the read request queue entries, and sends them to the response device in the order of reading. The requesting device also receives response responses corresponding to the data packets from the response device. If the response response is set with an aggregation flag, a completion queue entry is assembled for the response response and other response responses that have not yet been assembled into completion queue entries.

[0006] The response device assembles a corresponding response for the received data packet; wherein, the response device sets an aggregation flag in part of the response.

[0007] In an optional implementation, the request type of the request queue entry is a READ request; after the response device receives a set number of data packets, it sets an aggregation flag in the response corresponding to the last of the set number of data packets.

[0008] In an optional implementation, if the number of data packets received within a set time period is less than a set number, the response device sets an aggregation flag in the response corresponding to the last data packet.

[0009] In an optional implementation, the requesting device includes a requesting host and a requesting channel adapter; the requesting host converts received work requests into request queue entries and writes them into the request queue; the requesting channel adapter reads the request queue entries from the request queue; the requesting channel adapter also writes the completion queue entries corresponding to the request queue entries into the completion queue; the request queue and the completion queue are stored in the requesting host.

[0010] In an optional implementation, the request channel adapter includes an on-chip cache; after reading the request queue entry from the request queue, the request channel adapter parses the control information in the request queue entry and writes the control information into the on-chip cache;

[0011] After parsing the aggregation flag set in the response, the request channel adapter reads the control information from the on-chip cache and forms the corresponding completion queue entry according to the control information.

[0012] In an optional implementation, the request channel adapter further includes a sending engine and a receiving engine; the sending engine sends the data packet to the response device via the network, and the receiving engine receives the response from the response device.

[0013] In an optional implementation, if the response does not contain an aggregation flag, the requesting device processes the data carried in the response but does not construct a queue entry for the response.

[0014] According to a second aspect of this application, a network communication method is provided, comprising:

[0015] The requesting device reads a request queue entry from the request queue;

[0016] The requesting device assembles corresponding data packets based on the read request queue entries and sends them to the responding device in the order of reading.

[0017] After receiving the data packet, the responding device assembles a corresponding response and returns the response to the requesting device; wherein, the responding device sets an aggregation flag in part of the response.

[0018] After the requesting device receives the response corresponding to the data packet, if the response contains an aggregation flag, it forms a completion queue entry for the response and other response entries that were not previously included in the completion queue entry.

[0019] In an optional implementation, the request type of the request queue entry is a READ request; the method further includes:

[0020] After receiving a set number of data packets, the response device sets an aggregation flag in the response corresponding to the last of the set number of data packets.

[0021] In an optional implementation, the method further includes:

[0022] If the number of data packets received within a set time period is less than the set number, the response device sets an aggregation flag in the response corresponding to the last data packet.

[0023] In an optional implementation, the requesting device includes a requesting host and a requesting channel adapter; the method further includes:

[0024] The requesting host will convert the received work requests into request queue entries and write them into the request queue.

[0025] The request channel adapter also writes the completion queue entry corresponding to the request queue entry into the completion queue; the request queue and the completion queue are stored in the request host.

[0026] In an optional implementation, the request channel adapter includes an on-chip cache; the method further includes:

[0027] After the request channel adapter reads the request queue entry from the request queue, it parses the control information in the request queue entry and writes the control information into the on-chip cache.

[0028] After receiving a response corresponding to the data packet, if the response contains an aggregation flag, the requesting device creates a completion queue entry for the response and other response entries that were not previously part of the completion queue entry, including:

[0029] After parsing the aggregation flag set in the response, the request channel adapter reads the control information from the on-chip cache and forms the corresponding completion queue entry according to the control information.

[0030] In an optional implementation, the method further includes:

[0031] If the response does not contain an aggregation flag, the requesting device processes the data carried in the response but does not create a queue entry for the response.

[0032] Compared with related technologies, the technical solution of this application has the following advantages:

[0033] On the one hand, by adopting the solution of this application, the repeated access to the SQE information can be avoided when sending a request and receiving a response to complete the request. The SQE information only needs to be read once when the request data packet is assembled, and the SQE control information is written to the on-chip cache. Subsequently, when a response is received to complete the request and a CQE is generated, the control information can be directly read from the on-chip cache. Furthermore, by caching only the SQE control information, the data utilization of the on-chip cache is improved.

[0034] On the other hand, the scheme of this application can accelerate the completion speed of READ requests. When a RESP without an aggregation tag is received, only data is transferred and no CQE is generated. Only when a RESP with an aggregation tag is received is the reading of SQE control information initiated. This reduces fragmented read SQE requests and write CQE requests, and improves the efficiency of generating CQE.

[0035] Other features and advantages of this application will be set forth in the description which follows, and will be apparent in part from the description, or may be learned by practicing the application. The objectives and other advantages of this application may be realized and obtained by means of the structures and processes shown in the description and the accompanying drawings. Attached Figure Description

[0036] To more clearly illustrate the technical solutions in the embodiments or related technologies of this application, the accompanying drawings used in the description of the embodiments or related technologies will be briefly introduced below. Obviously, the accompanying drawings described below are some embodiments of this application. For those skilled in the art, other drawings can be obtained based on these drawings without creative effort.

[0037] Figure 1 This is a flowchart illustrating the process completed based on the RDMA request of the relevant technology.

[0038] Figures 2(a) and 2(b) are schematic diagrams illustrating the request and response effects of RDMA RC service operation types according to relevant technologies.

[0039] Figure 3 This is a schematic diagram illustrating the effect of a READ request response according to an exemplary embodiment of this application.

[0040] Figure 4 This is a schematic diagram of the architecture of a network communication system according to an exemplary embodiment of this application.

[0041] Figure 5 This is a flowchart of a network communication method according to an exemplary embodiment of this application. Detailed Implementation

[0042] To make the objectives, technical solutions, and advantages of the embodiments of this application clearer, the technical solutions of the embodiments of this application will be clearly and completely described below with reference to the accompanying drawings. Obviously, the described embodiments are only some embodiments of this application, not all embodiments. Based on the embodiments of this application, all other embodiments obtained by those skilled in the art without creative effort are within the scope of protection of this application.

[0043] Even within the realm of computer systems, DMA technology has been used to directly access memory and move data, reducing the CPU's workload and improving data transfer speed. Based on this concept, RDMA (Remote Direct Memory Access) technology has been developed in the fields of HPC (High Performance Computing) and large data centers. RDMA supports zero-copy network technology and kernel bypass technology to achieve high-performance remote direct data access.

[0044] The InfiniBand protocol (IB protocol for short) is a network protocol that has supported RDMA technology since its inception and is currently a leading next-generation network protocol in the industry. The IB protocol reinterprets an entire network layer model, including the transport layer, network layer, and link layer, enabling common network interface cards (NICs), switches, and other devices to support RDMA technology. The IB protocol describes transmission service types through two aspects: "Reliable" and "Connection." "Reliable" ensures that information between the sender and receiver is transmitted at most once and received completely in the order it was sent through acknowledgments, order keeping, and verification mechanisms. The opposite is the "Unreliable" type. "Connection" is equivalent to a point-to-point communication channel, ensuring that the message from the requesting end reaches the connected destination through a defined path. The opposite is the "Datagram" type.

[0045] In RDMA technology, the commonly used RC (Reliable Connections) service type ensures that information is sent to the destination intact and without errors, and that the destination returns a response notifying the requesting end that the information has been received intact and without errors. The RC service type supports the following operation types:

[0046] SEND operation: The local end sends data to the remote end, which stores it in the receiving space. The remote host reads the data and processes it. After receiving the data, the remote end returns ACK (Acknowledge).

[0047] WRITE operation: The local end writes data to the remote end without the remote host's intervention. After completion, the remote end returns an ACK.

[0048] READ operation: The local end reads data from the remote end without the remote host side intervening. After completion, the remote end returns an RESP (Response) carrying the data to the local end.

[0049] The software issues a WR (Work Request), which is mapped by the driver to a corresponding SQE (Send Queue Entry) and sent to the SQ (Send Queue). The hardware HCA (Host Channel Adapter) parses the SQE, executes the corresponding operation, and returns a CQE (Completion Queue Entry) to inform the software of the SQE's completion status. Each time the hardware completes processing an SQE, it generates a CQE and places it in the CQ (Completion Queue), which is mapped by the driver to a WC (Work Completion) and reported to the user. The CQE contains the SQE's control information, including the SQN (Send Queue Number), SQE ID (SQE index), and OPCODE (SQE operation type code), etc. Figure 1 As shown in the diagram. In the RC service, the requesting end considers the SQE complete and generates the CQE only after receiving the response and completing the data transfer. The responding end generates the CQE only after receiving the request operation, verifying it, and completing the data transfer.

[0050] The RDMA transport service type in related technologies was proposed by the IB protocol. In RDMA service, request information is carried by the SQE (Signal Quantity Equipped), which is divided into control information and data information. The control information includes SQN, SQE ID, OPCODE, etc., recording the operation type of the request; the data information includes the data address, data length, and the key for accessing the memory address. Both sending a request and receiving a response require parsing the SQE. When sending a request, the control and data information within the SQE need to be parsed to construct the message header and data to send to the responding end. However, when receiving a response, only the control information within the SQE is needed to generate the corresponding CQE (Confirmation Quantity Equipped). Therefore, sending a request and receiving a response repeatedly accesses the SQE, and unnecessary SQE data information is obtained when receiving a response, wasting read bandwidth.

[0051] Furthermore, in RDMA RC service operations, the remote end returns ACKs without data for both SEND and WRITE operations. Due to the order-preserving nature of reliable services, ACKs from multiple requests can be aggregated; that is, an ACK with a larger sequence number can simultaneously respond to multiple requests with sequence numbers no greater than that ACK, as shown in Figure 2(a). However, for the READ operation, the remote end needs to return RESPs carrying data. Each RESP is independent and different, and it needs to be received completely one by one in order. Therefore, each RESP needs to be processed separately, as shown in Figure 2(b).

[0052] Therefore, in terms of message processing performance, the processing speed of RESP packets is lower than that of ACK packets, which limits the performance of READ request completion. In actual tests, the performance of small packet completion READ is much lower than that of WRITE and SEND operations.

[0053] Based on the above analysis, this application proposes a network communication scheme to address the problem of inability to aggregate responses to READ requests in relevant IB protocol implementations. This scheme extends the RESP packet with an aggregation flag. When the responding end receives a batch of incomplete READ requests, it sets the aggregation flag in the RESP packet of the last incomplete request in this batch. When the requesting end receives the RESP packets of these incomplete READ requests, it only executes the CQE processing logic on the RESP packets with the aggregation flag, thus completing the processing of multiple READ requests at once. Figure 3 As shown. Furthermore, the RESP of a READ request can also aggregate the responses to WRITE and SEND, improving the processing performance of all operations.

[0054] For example, such as Figure 4 As shown, this application proposes a network communication system, including: a requesting device and a responding device; wherein,

[0055] The requesting device reads request queue entries from the request queue and assembles corresponding data packets according to the read request queue entries, and sends them to the response device in the order of reading. The requesting device also receives response responses corresponding to the data packets from the response device. If the response response is set with an aggregation flag, a completion queue entry is assembled for the response response and other response responses that have not yet been assembled into completion queue entries.

[0056] The response device assembles a corresponding response for the received data packet; wherein, the response device sets an aggregation flag in part of the response.

[0057] For example, the requesting device can read one or more Request Queue Entries (SQEs) from the request queue and assemble them into a data packet. Each request queue entry corresponds to one data packet, and multiple request queue entries correspond to multiple data packets. These data packets can be sent to the responding device sequentially according to the order in which the request queue entries are read. Figure 4 As shown, the requesting device sequentially reads eight request queue entries from the request queue. These eight request queue entries are READ requests, and after forming eight data packets (read), they are sent sequentially to the responding device. The responding device returns eight response responses (resp) for these eight data packets.

[0058] For example, the responding device can compose an acknowledgment response based on the received data packets. For some of these acknowledgment responses, an aggregation flag can be set, such as setting the aggregation flag bit in the acknowledgment response to 1. After the requesting device receives the acknowledgment response, if the aggregation flag bit in that acknowledgment response is set to 1, then a completion queue entry (CQE) is formed for that acknowledgment response and other acknowledgment responses preceding it. These other acknowledgment responses can be understood as those received sequentially before the current acknowledgment response, for which a completion queue entry has not yet been formed. For example... Figure 4 In the fourth and eighth response responses shown, the aggregation flag is set to 1. After receiving the fourth response, the requesting device creates corresponding completion queue entries for responses 1-4. Then, after receiving the eighth response, it creates corresponding completion queue entries for responses 5-8. In this way, the requesting device only creates completion queue entries when it receives a response with the aggregation flag set, instead of creating a completion queue entry for each received response. As mentioned above, creating a completion queue entry requires reading the control information corresponding to the request queue entry. This application only needs to read the control information once for multiple response responses, for example... Figure 4 For the first to fourth response responses, the control information of the first to fourth request queue entries corresponding to these four response responses is read in one go, and four completion queue entries are formed accordingly.

[0059] In some optional implementations, the request type of the request queue entry is a READ request; after the response device receives a set number of data packets, it sets an aggregation flag in the response corresponding to the last of the set number of data packets.

[0060] For example, when the request type of the request queue entry corresponding to the data packet sent by the requesting device is a READ request, the responding device returns a corresponding response to the requesting device. Furthermore, after receiving a certain number of responses, an aggregation flag is set in the last response. For example... Figure 4After receiving the first four response responses, the aggregation flag is set in the fourth response response. After receiving four more response responses, the aggregation flag is set in the last response response, which is the eighth response response.

[0061] In some optional implementations, if the number of data packets received within a set time period is less than a set number, the responding device sets an aggregation flag in the response corresponding to the last data packet.

[0062] For example, when a requesting device sends multiple data packets consecutively, the responding device can set an aggregation flag in the response generated for the last data packet after receiving a set number of data packets. If the number of data packets in the last group of multiple data packets sent consecutively by the requesting device is less than the set number, and it is determined that no new data packets have been received within the set time period, the responding device considers that the current batch of multiple consecutive data packets has been received. Therefore, regardless of whether the set number requirement is met, the response corresponding to the last data packet sets an aggregation flag.

[0063] It should be noted that if the request queue entries corresponding to multiple consecutively sent data packets by the requesting device include other request types besides READ request types, such as WRITE and / or SEND request types, then the data packets corresponding to the request queue entries of other request types will not be counted by the responding device. That is, after receiving data packets of other request types, the responding device will not count them in the set count, but will only count the number of READ request type data packets. For example, if the requesting device consecutively sends 5 data packets, where the request queue entry corresponding to the 4th data packet is a WRITE request and the others are READ requests, then after receiving the 4th data packet, the responding device will not set an aggregation flag in the response to that 4th data packet. Instead, it will set the aggregation flag in the 5th response formed after receiving the 5th READ request. After receiving this 4th response, the requesting device can determine that the responding device has received the 4th WRITE request, and can then generate 5 completion queue entries for the request queue entries corresponding to packets 1-5.

[0064] In some optional implementations, the requesting device includes a request host and a request channel adapter; the request host converts received work requests into request queue entries and writes them into the request queue; the request channel adapter reads the request queue entries from the request queue; the request channel adapter also writes the corresponding completion queue entries of the request queue entries into the completion queue; the request queue and the completion queue are stored in the request host.

[0065] For example, the request queue is stored in the requesting host. In response to a user's work request (WC) sent via software, the requesting host maps the request request to a request queue entry via its driver and stores it in the request queue. The request channel adapter (HCA), which can be understood as an RDMA network card, reads request queue entries from the request queue, assembles data packets based on these entries, and sends them to the responding device. Upon receiving a response from the responding device, the request channel adapter performs the series of operations described above, ultimately generating a corresponding completion queue entry and storing it in the completion queue of the requesting host. The requesting host's driver then assembles the completion queue entries in the completion queue into work completion information (WR) and sends it back to the user via software.

[0066] In some optional implementations, the request channel adapter includes an on-chip cache; after reading the request queue entry from the request queue, the request channel adapter parses the control information in the request queue entry and writes the control information into the on-chip cache;

[0067] After parsing the aggregation flag set in the response, the request channel adapter reads the control information from the on-chip cache and forms the corresponding completion queue entry according to the control information.

[0068] For example, the request channel adapter also includes an on-chip cache. When a request queue entry is retrieved, control information and data information can be parsed from it. The control information can be cached in the on-chip cache and also stored in the host memory of the requesting host; the data information is not cached in the on-chip cache. Upon receiving a response corresponding to the request queue entry, the request channel adapter can directly read the corresponding control information from the on-chip cache without having to reread the request queue entry and parse the control information again. This further saves resources.

[0069] In some alternative implementations, the request channel adapter further includes a sending engine and a receiving engine; the sending engine sends the data packet to the response device via the network, and the receiving engine receives the response from the response device.

[0070] For example, the request channel adapter also includes a sending engine and a receiving engine. The sending engine is used to read request queue entries, parse request queue entries, assemble data packets and send them to the response device. The receiving engine is used to receive response responses from the response device, parse response responses, process response responses, assemble completion queue entries and store them in the completion queue.

[0071] In some alternative implementations, if the response does not contain an aggregation flag, the requesting device processes the data carried in the response but does not construct a queue entry for the response.

[0072] It should also be noted that for response responses without an aggregation flag, the requesting device, upon receiving such a response, will not create a completion queue entry, but will only process the response, such as transferring data. Since the response corresponds to a READ request, it will carry the data read from the responding device, and the requesting device can store the read data carried in the response to the appropriate location. The request queue entry corresponding to this response can then be combined with subsequent responses that have an aggregation flag to form the corresponding completion queue entry.

[0073] The following example illustrates the logic for completing a READ request in the network communication system proposed in this application.

[0074] This application adds an aggregation flag bit to the RESP packet, based on the existing RDMA READ response implementation scheme. See [link to relevant documentation]. Figure 4 The specific process can be implemented as follows:

[0075] ① The user software issues an RDMA READ WR, which is converted by the requesting host driver of the requesting device into an SQE write SQ, which includes information such as SQE ID and OPCODE.

[0076] ② The HCA sending engine of the requesting device accesses the SQ, reads the SQE from the SQ, parses the corresponding operation type according to the control information in the SQE, and generates a message header; it parses the address length according to the data information in the SQE, retrieves the data, and the message header and data can be combined to form a data packet.

[0077] ③ The control information in SQE is cached in the on-chip cache and host memory, so that when CQE is generated later, the control information such as OPCODE can be obtained by accessing the on-chip cache, without repeatedly accessing SQ.

[0078] ④ Combine the headers and data of the multiple SQE messages read consecutively into multiple RDMA READ request data packets, and then send them in batches (e.g., Figure 4 As shown, requests 1 through 8 were issued.

[0079] ⑤ After receiving the batch of RDMA READ requests, the HCA of the responding device reads the host memory data of the responding device and assembles it into an RESP packet. When assembling the header of the RESP packet, the aggregation flag bit inside the specified header is set to 1. The number of aggregations is configurable (e.g., ...). Figure 4As shown, the configuration sets an aggregation flag of 1 for every 4 RESPs (the aggregation flags inside the headers of resp4 and resp8 are set to 1). If the number of aggregations in the batch of READ requests is insufficient, the aggregation flag is set to 1 for the last RESP.

[0080] ⑥ Upon receiving the returned RESP packet, the requesting end initiates the reading of SQE control information based on the aggregation flag, reading back control information for multiple SQEs at once.

[0081] ⑦ Based on the read-back SQE control information, generate the corresponding number of CQEs and write them into the CQ.

[0082] ⑧ The driver converts CQE to WC and reports it to the user.

[0083] The following technical effects can be achieved through this application:

[0084] On the one hand, by adopting the solution of this application, the repeated access to the SQE information can be avoided when sending a request and receiving a response to complete the request. The SQE information only needs to be read once when the request data packet is assembled, and the SQE control information is written to the on-chip cache. Subsequently, when a response is received to complete the request and a CQE is generated, the control information can be directly read from the on-chip cache. Furthermore, by caching only the SQE control information, the data utilization of the on-chip cache is improved.

[0085] On the other hand, the scheme of this application can accelerate the completion speed of READ requests. When a RESP without an aggregation tag is received, only data is transferred and no CQE is generated. Only when a RESP with an aggregation tag is received is the reading of SQE control information initiated. This reduces fragmented read SQE requests and write CQE requests, and improves the efficiency of generating CQE.

[0086] Accordingly, such as Figure 5 As shown, this application also provides an exemplary network communication method, including:

[0087] In S501, the requesting device reads a request queue entry from the request queue;

[0088] In S502, the requesting device assembles a corresponding data packet based on the read request queue entries and sends it to the responding device in the order of reading.

[0089] In S503, after receiving the data packet, the responding device assembles a corresponding response and returns the response to the requesting device; wherein, the responding device sets an aggregation flag in part of the response.

[0090] In S504, after the requesting device receives the response corresponding to the data packet, if the response contains an aggregation flag, a completion queue entry is formed for the response and other response responses that have not yet formed a completion queue entry.

[0091] In some optional implementations, the request type of the request queue entry is a READ request; the method further includes:

[0092] After receiving a set number of data packets, the response device sets an aggregation flag in the response corresponding to the last of the set number of data packets.

[0093] In some alternative implementations, the method further includes:

[0094] If the number of data packets received within a set time period is less than the set number, the response device sets an aggregation flag in the response corresponding to the last data packet.

[0095] In some optional implementations, the requesting device includes a requesting host and a requesting channel adapter; the method further includes:

[0096] The requesting host will convert the received work requests into request queue entries and write them into the request queue.

[0097] The request channel adapter also writes the completion queue entry corresponding to the request queue entry into the completion queue; the request queue and the completion queue are stored in the request host.

[0098] In some alternative implementations, the request channel adapter includes an on-chip cache; the method further includes:

[0099] After the request channel adapter reads the request queue entry from the request queue, it parses the control information in the request queue entry and writes the control information into the on-chip cache.

[0100] After receiving a response corresponding to the data packet, if the response contains an aggregation flag, the requesting device creates a completion queue entry for the response and other response entries that were not previously part of the completion queue entry, including:

[0101] After parsing the aggregation flag set in the response, the request channel adapter reads the control information from the on-chip cache and forms the corresponding completion queue entry according to the control information.

[0102] In some alternative implementations, the method further includes:

[0103] If the response does not contain an aggregation flag, the requesting device processes the data carried in the response but does not create a queue entry for the response.

[0104] The above method can be implemented using the network communication system provided in the above embodiments. For specific implementation details, please refer to the description of the network communication system in the above embodiments, which will not be repeated here.

[0105] It is understood that the circuit structures, names, and parameters described in the above embodiments are merely examples. Those skilled in the art can also make readily conceived combinations and adjustments to the structural features of the above embodiments according to their needs, and the concept of this application should not be limited to the specific details of the above examples.

[0106] Although this application has been described in detail with reference to the foregoing embodiments, those skilled in the art should understand that modifications can still be made to the technical solutions described in the foregoing embodiments, or equivalent substitutions can be made to some of the technical features; and these modifications or substitutions do not cause the essence of the corresponding technical solutions to deviate from the spirit and scope of the technical solutions of the embodiments of this application.

Claims

1. A network communication system, characterized in that, include: Request and response devices are used to implement remote direct memory access; among which, The requesting device reads request queue entries from the request queue and assembles corresponding data packets based on the read request queue entries, sending them sequentially to the response device in the order of reading. The requesting device also receives response messages corresponding to the data packets from the response device. If the response message contains an aggregation flag, a completion queue entry is formed for the response message and other response messages that have not yet been assembled into completion queue entries, and stored in the completion queue of the requesting device. If the response message does not contain an aggregation flag, the requesting device processes the data carried by the response message but does not assemble a completion queue entry for the response message. The request type of the request queue entry is a READ request in the reliable connection service, and the completion queue entry written to the completion queue is used to inform the software that the corresponding request queue entry has been completed. Each time the response device receives a data packet, it assembles a corresponding response and returns it to the requesting device; wherein, the response device sets an aggregation flag in part of the response.

2. The network communication system according to claim 1, characterized in that, After receiving a set number of data packets, the response device sets an aggregation flag in the response corresponding to the last of the set number of data packets.

3. The network communication system according to claim 2, characterized in that, If the number of data packets received within a set time period is less than the set number, the response device sets an aggregation flag in the response corresponding to the last data packet.

4. The network communication system according to any one of claims 1-3, characterized in that, The requesting device includes a request host and a request channel adapter; the request host converts received work requests into request queue entries and writes them into the request queue; the request channel adapter reads the request queue entries from the request queue. The request channel adapter also writes the completion queue entry corresponding to the request queue entry into the completion queue; The request queue and the completion queue are stored on the request host.

5. The network communication system according to claim 4, characterized in that, The request channel adapter includes an on-chip cache; after reading the request queue entry from the request queue, the request channel adapter parses the control information in the request queue entry and writes the control information into the on-chip cache; After parsing the aggregation flag set in the response, the request channel adapter reads the control information from the on-chip cache and forms the corresponding completion queue entry according to the control information.

6. The network communication system according to claim 4, characterized in that, The request channel adapter further includes a sending engine and a receiving engine; the sending engine sends the data packet to the response device via the network, and the receiving engine receives the response from the response device.

7. A network communication method, characterized in that, include: The requesting device reads a request queue entry from the request queue; The requesting device assembles corresponding data packets based on the read request queue entries and sends them to the responding device in the order of reading; the requesting device and the responding device are used to implement remote direct memory access. After receiving the data packet, the response device assembles a response corresponding to the data packet and returns the response to the requesting device; wherein, the response device sets an aggregation flag in part of the response. After receiving a response corresponding to the data packet, if the response contains an aggregation flag, the requesting device creates a completion queue entry for the response and other response entries that were not previously included in the completion queue entry, and stores it in the completion queue of the requesting device. If the response does not contain an aggregation flag, the requesting device processes the data carried by the response but does not create a completion queue entry for the response. The request type of the request queue entry is a READ request in the reliable connection service, and the completion queue entry written to the completion queue is used to inform the software that the corresponding request queue entry has been completed.

8. The network communication method according to claim 7, characterized in that, The method further includes: After receiving a set number of data packets, the response device sets an aggregation flag in the response corresponding to the last of the set number of data packets.

9. The network communication method according to claim 8, characterized in that, The method further includes: If the number of data packets received within a set time period is less than the set number, the response device sets an aggregation flag in the response corresponding to the last data packet.

10. The network communication method according to any one of claims 7-9, characterized in that, The requesting device includes a requesting host and a requesting channel adapter; the method further includes: The requesting host will convert the received work requests into request queue entries and write them into the request queue. The request channel adapter also writes the completion queue entry corresponding to the request queue entry into the completion queue; the request queue and the completion queue are stored in the request host.

11. The network communication method according to claim 10, characterized in that, The request channel adapter includes an on-chip cache; the method further includes: After the request channel adapter reads the request queue entry from the request queue, it parses the control information in the request queue entry and writes the control information into the on-chip cache. After receiving a response corresponding to the data packet, if the response contains an aggregation flag, the requesting device creates a completion queue entry for the response and other response entries that were not previously part of the completion queue entry, including: After parsing the aggregation flag set in the response, the request channel adapter reads the control information from the on-chip cache and forms the corresponding completion queue entry according to the control information.

Citation Information

Patent Citations

  • Data sending method, receiving method, data sending device and receiving device

    CN107346981A

  • Congestion control method and system for remote direct memory access reading and storage medium

    CN116566921A

  • Congestion control method and system for optimizing RDMA reading and storage medium

    CN116582492A