Network communication system and method
By introducing a polymerization marking mechanism in network communication, the RDMAREAD request was solved repeatedly reading the problem of bandwidth and slow speed caused by SQE, and achieved more efficient data processing and completing the purpose of the queue bar.
Patent Information
- Application Number
- CN202411455382.7
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2024-10-17
- Publication Date
- 2025-01-21
- Estimated Expiration
- 2044-10-17
AI Technical Summary
In network communication, RDMAREAD requests are wasted bandwidth and slow completion speed due to repeated reading of SQE when completed.
By setting a polymerization label in the response device, the request device is allowed to read only the SQE control information once when receiving the response to the aggregate marker, and form multiple queue bars according to the information to reduce the needs of repeated reading of SQE.
Effectively avoid the repeated access to the sending request and receiving response, improve the data utilization rate of the cache on the film, and accelerate the completion speed of the Read request.
Smart Images

Figure CN119342001A_ABST
Abstract
Description
Technical Field
[0001] The present application belongs to the field of network communication technology, and in particular, relates to a network communication system and method. Background Art
[0002] With the continuous development of computer network communication, it is becoming increasingly difficult to improve the high bandwidth and low latency performance of network communication because traditional network communication protocols need to go through the operating system software protocol stack and copy and migrate the processed data between memory and cache. Therefore, it is necessary to break the existing protocol framework and conceive new network technologies to solve the network bandwidth and latency problems. Summary of the invention
[0003] The purpose of the present application is to provide a network communication system and method, aiming to solve the problem of bandwidth waste and slow completion speed caused by repeated reading of SQE when completing RDMA READ requests in network communication.
[0004] According to a first aspect of the present application, a network communication system is provided, comprising: a request device and a response device; wherein:
[0005] The requesting device reads a request queue entry from the request queue, and forms a corresponding data packet according to the read request queue entry, and sends the corresponding data packet to the responding device in sequence according to the reading order; the requesting device also receives an acknowledgment response corresponding to the data packet from the responding device, and if an aggregation mark is set in the acknowledgment response, forms a completion queue entry for the acknowledgment response and other acknowledgments that have not previously formed a completion queue entry;
[0006] The responding device composes a corresponding acknowledgement response for the received data packet; wherein the responding device sets an aggregation mark in part of the acknowledgement response.
[0007] In an optional implementation, the request type of the request queue entry is a READ request; after the responding device receives a set number of the data packets, it sets an aggregation mark in the acknowledgment response corresponding to the last one of the set number of the data packets.
[0008] In an optional implementation, if the number of the data packets received within a set time period is less than a set number, the responding device sets an aggregation mark in the acknowledgement 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 a received work request into a request queue entry and writes the result into a request queue; the request channel adapter reads the request queue entry from the request queue; the request channel adapter also writes a completion queue entry corresponding to the request queue entry into a 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 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;
[0011] After parsing the aggregation flag set in the response, the request channel adapter reads the control information from the on-chip cache and composes 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 responding device through a network, and the receiving engine receives the acknowledgement response from the responding device.
[0013] In an optional implementation, if the aggregation flag is not set in the response, the requesting device processes the data carried by the response but does not form a completion queue entry for the response.
[0014] According to a second aspect of the present 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 composes corresponding data packets according to the read request queue entries, and sends them to the responding device in sequence according to the reading order;
[0017] After receiving the data packet, the responding device composes a corresponding response and returns the response to the requesting device; wherein the responding device sets an aggregation mark in part of the response;
[0018] After the requesting device receives the response corresponding to the data packet, if an aggregation mark is set in the response, a completion queue entry is formed for the response and other response that have not formed a completion queue entry before.
[0019] In an optional implementation manner, the request type of the request queue entry is a READ request; and the method further includes:
[0020] After receiving a set number of the data packets, the responding device sets an aggregation mark in the acknowledgement response corresponding to the last one of the set number of the data packets.
[0021] In an optional embodiment, the method further comprises:
[0022] If the number of the data packets received within the set time period is less than the set number, the responding device sets an aggregation mark in the acknowledgement response corresponding to the last data packet.
[0023] In an optional implementation manner, the requesting device includes a requesting host and a requesting channel adapter; the method further includes:
[0024] The request host converts the received work request into a request queue entry and writes the request queue into the request queue;
[0025] The request channel adapter also writes a completion queue entry corresponding to the request queue entry into a 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 the requesting device receives the response corresponding to the data packet, if the response has an aggregation flag set in it, forming a completion queue entry for the response and other response responses that have not previously formed a 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 composes the corresponding completion queue entry according to the control information.
[0030] In an optional embodiment, the method further comprises:
[0031] If the aggregation flag is not set in the response, the requesting device processes the data carried by the response but does not form a completion queue entry for the response.
[0032] Compared with the related art, the technical solution of this application has the following advantages:
[0033] On the one hand, the solution of the present application can avoid repeated access to SQ to read SQE information when sending a request and receiving a response to complete the request. It is only necessary to read the SQE information once when sending a request to form a data packet, and write the SQE control information into the on-chip cache. After receiving the response to complete the request and generate CQE, it is sufficient to directly read the on-chip cache to obtain the control information. In addition, only the SQE control information is cached, which improves the data utilization rate of the on-chip cache.
[0034] On the other hand, the solution of the present application can accelerate the completion speed of READ requests. When receiving RESP without aggregation mark, only data transfer is performed without generating CQE, and the reading of SQE control information is initiated only when RESP with aggregation mark is received, which reduces the fragmented requests for reading SQE and writing CQE, and improves the efficiency of generating CQE.
[0035] Other features and advantages of the present application will be described in the following description, and partly become apparent from the description, or be understood by practicing the present application. The purpose and other advantages of the present application can be realized and obtained through the structures and processes indicated in the description and the drawings. BRIEF DESCRIPTION OF THE DRAWINGS
[0036] In order to more clearly illustrate the technical solutions in the embodiments of the present application or the related technologies, the drawings required for use in the embodiments or the related technical descriptions are briefly introduced below. It is obvious that the drawings described below are certain embodiments of the present application. For ordinary technicians in this field, other drawings can be obtained based on these drawings without paying any creative work.
[0037] Figure 1 It is a flowchart of completing an RDMA request according to the related technology.
[0038] FIG. 2( a ) and FIG. 2( b ) are schematic diagrams of request-response effects of RDMA RC service operation types according to the related art.
[0039] Figure 3 It is a schematic diagram of a READ request response effect according to an exemplary embodiment of the present application.
[0040] Figure 4 Schematic diagram of the architecture of a network communication system according to an exemplary embodiment of the present application.
[0041] Figure 5 is a flow chart of a network communication method according to an exemplary embodiment of the present application. DETAILED DESCRIPTION
[0042] In order to make the purpose, technical solution and advantages of the embodiments of the present application clearer, the technical solution in the embodiments of the present application will be clearly and completely described below in conjunction with the drawings in the embodiments of the present application. Obviously, the described embodiments are part of the embodiments of the present application, not all of the embodiments. Based on the embodiments in the present application, all other embodiments obtained by ordinary technicians in this field without creative work are within the scope of protection of this application.
[0043] As early as in the field of computer systems, DMA technology was used to directly access memory and move data, which reduced the burden on the CPU and increased the data transmission speed. Based on this technical idea, RDMA (Remote Direct Memory Access) technology was also developed in the HPC (High Performance Computing) field and large data center field, which can support zero-copy network technology and kernel bypass technology to achieve high-performance remote data direct access.
[0044] The InfiniBand protocol (IB protocol for short) is a network protocol that has supported RDMA technology since its inception, and is also the industry's leading new generation network protocol. The IB protocol reinterprets a whole set of network layer models, including the transport layer, network layer, and link layer, so that common network cards, switches, and other devices in the network support RDMA technology. The IB protocol describes the transmission service type through the two aspects of "Reliable" and "Connection". "Reliable" means that the information between the sender and the receiver is guaranteed to be transmitted only once at most through the response, order preservation, and verification mechanisms, and is received in full in the order of sending. The corresponding type is "Unreliable". "Connection" is equivalent to a point-to-point communication pipeline, which ensures that the message from the requesting end can reach the destination end connected to it through a certain path. The corresponding type is "Datagram".
[0045] In RDMA technology, the commonly used RC (Reliable Connections) service type can ensure that the information is sent to the destination end completely and accurately, and the destination end returns a response to notify the requesting end that the information has been received completely and accurately. The RC service type supports the following types of operations:
[0046] SEND operation: The local end sends data to the remote end, which stores the data in the receiving space. The remote host reads the data and processes it. After receiving the data, the remote end returns an ACK (Acknowledgement).
[0047] WRITE operation: The local end writes data to the remote end without the intervention of the remote host side. After completion, the remote end returns ACK.
[0048] READ operation: The local end reads data from the remote end without the intervention of the remote host. After completion, the remote end returns RESP (Response) carrying the data to the local end.
[0049] The software sends a WR (Work Request), which is mapped by the driver to the corresponding SQE (Send Queue Entry), and sent to the SQ (Send Queue). The hardware HCA (Host Channel Adapter) parses the SQE, performs the corresponding operation, and returns a CQE (Completion Queue Entry) to tell the software the completion status of the corresponding SQE. Whenever the hardware processes an SQE, it generates a CQE and places it in the CQ (Completion Queue), which is mapped by the driver to WC (Work Completion) and reported to the user. The CQE contains the control information of the SQE, including SQN (Send Queue Number), SQE ID (SQE index), OPCODE (SQE operation type code), etc. Figure 1 As shown in the figure. In the RC service, the requesting end considers the SQE completed and generates CQE only after receiving the response and completing the data transfer. The responding end generates CQE after receiving the request operation, passing the verification and completing the data transfer.
[0050] The RDMA transmission service type in the related technology is proposed by the IB protocol. In the RDMA service, the request information is carried by the SQE and is divided into control information and data information: the control information includes SQN, SQE ID, OPCODE, etc., which records the operation type of the request, etc.; the data information includes the data address, data length, and the key for accessing the memory address. SQE needs to be parsed when sending a request and receiving a response. When sending a request, the control information and data information in the SQE need to be parsed to form the message header and data to send to the responding end, and when receiving a response, only the control information in the SQE is needed to generate the corresponding CQE. Therefore, sending a request and receiving a response will repeatedly access the SQ, and when receiving a response, unnecessary SQE data information will be obtained, wasting the information reading bandwidth.
[0051] In addition, in the operation of RDMA RC service, the remote end returns ACK without data for SEND and WRITE operations. Due to the order-preserving characteristics of reliable services, the ACKs of multiple requests have the property of aggregation, that is, an ACK with a larger sequence number can simultaneously respond to multiple requests with sequence numbers not greater than this ACK, as shown in Figure 2(a). For READ operation, the remote end needs to return RESP with data. Each RESP is independent and different, and 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, resulting in limited READ request completion performance. In actual tests, the small packet completion performance of READ is much lower than that of WRITE and SEND operations.
[0053] Based on the above analysis, this application proposes a network communication solution for the problem that responses to READ requests cannot be aggregated in the relevant technical implementation solutions of the IB protocol. This solution extends an aggregation flag in the RESP packet. When the responding end receives a batch of unfinished READ requests, the aggregation flag is set in the RESP packet of the last unfinished request in the batch. When the requesting end receives the RESP packets of the batch of unfinished READ requests, the CQE processing logic is only executed on the RESP packets with the aggregation flag, and multiple READ requests are completed at one time. Figure 3 In addition, the RESP of the READ request can also aggregate the responses of WRITE and SEND to improve the processing performance of all operations.
[0054] For example, Figure 4 As shown, the present application proposes a network communication system, including: a request device and a response device; wherein,
[0055] The requesting device reads a request queue entry from the request queue, and forms a corresponding data packet according to the read request queue entry, and sends the corresponding data packet to the responding device in sequence according to the reading order; the requesting device also receives an acknowledgment response corresponding to the data packet from the responding device, and if an aggregation mark is set in the acknowledgment response, forms a completion queue entry for the acknowledgment response and other acknowledgments that have not previously formed a completion queue entry;
[0056] The responding device composes a corresponding acknowledgement response for the received data packet; wherein the responding device sets an aggregation mark in part of the acknowledgement response.
[0057] Exemplarily, the requesting device may read one or more request queue entries (SQEs) from the request queue to form a data packet. Each request queue entry corresponds to a data packet, and multiple request queue entries correspond to multiple data packets. These data packets may be sent to the responding device in sequence according to the order in which the request queue entries are read. Figure 4 As shown, the requesting device sequentially reads 8 request queue entries from the request queue, the operation type of the 8 request queue entries is READ request, and after forming 8 data packets read, they are sequentially sent to the responding device. The responding device returns 8 response responses resp for the 8 data packets.
[0058] Exemplarily, the responding device may compose a response for the received data packet, and an aggregation mark may be set for some of the response responses, such as setting the aggregation mark bit in the response response to 1. After the requesting device receives the response response, if the aggregation mark bit in the response response is set to 1, a completion queue entry (CQE) is composed for the response response and other response responses before the response response. Other response responses can be understood as response responses received successively before the current response response and for which no completion queue entries are composed. For example Figure 4 The aggregation marks in the 4th and 8th response shown are set to 1. After the requesting device receives the 4th response, it composes corresponding completion queue entries for the 1st to 4th response responses. After receiving the 8th response, it composes corresponding completion queue entries for the 5th to 8th response responses. In this way, the requesting device composes a completion queue entry only when it receives a response with an aggregation mark, rather than composing a completion queue entry for each response received. As described above, the control information corresponding to the corresponding request queue entry needs to be read when composing a completion queue entry. The present application only needs to read the control information once for multiple response responses, for example Figure 4 For the 1st to 4th response, the control information of the 1st to 4th request queue entries corresponding to the four response are read once to form four corresponding completion queue entries.
[0059] In some optional implementations, the request type of the request queue entry is a READ request; after the responding device receives a set number of the data packets, it sets an aggregation mark in the acknowledgment response corresponding to the last one of the set number of the 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 forms a corresponding response and returns it to the requesting device. Moreover, after receiving a certain number of responses, an aggregation mark is set in the last response. For example Figure 4After receiving the first four response messages, the aggregation flag is set in the fourth response message, and after receiving four more response messages, the aggregation flag is set in the last response message, that is, the eighth response message.
[0061] In some optional implementations, if the number of the data packets received within a set time period is less than a set number, the responding device sets an aggregation mark in the acknowledgement response corresponding to the last data packet.
[0062] Exemplarily, for multiple data packets sent continuously by the requesting device, the responding device can set an aggregation mark 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 data packets sent continuously by the requesting device is less than the set number, if it is determined that no new data packet is received within the set time period, the responding device considers that the multiple consecutive data packets in this batch have been received. Regardless of whether the set number requirement is met, the responding device sets an aggregation mark in the response corresponding to the last data packet.
[0063] It should be noted that if the request queue entries corresponding to the multiple data packets continuously sent by the requesting device include other request types in addition to the READ request type, such as WRITE and / or SEND request types, then the data packets corresponding to the request queue entries of the other request types are not counted by the responding device, that is, after the responding device receives the data packets of the other request types, it does not count them in the set number, but only counts the number of data packets of the READ request type. For example, the requesting device sends 5 data packets continuously, of which the request queue entry corresponding to the 4th data packet is a WRITE request, and the others are READ requests. After receiving the 4th data packet, the responding device does not set the aggregation mark in the response of the 4th data packet, but sets the aggregation mark in the 5th response after receiving the 5th READ request. After the requesting device receives the 4th response, it can determine that the responding device has received the 4th WRITE request, and then 5 completion queue entries can be generated for the request queue entries corresponding to the 1-5 data packets.
[0064] In some optional implementations, the requesting device includes a requesting host and a requesting channel adapter; the requesting host converts the received work request into a request queue entry and writes the request queue into the request queue; the request channel adapter reads the request queue entry from the request queue; the request channel adapter also writes a completion queue entry corresponding to the request queue entry into a completion queue; the request queue and the completion queue are stored in the requesting host.
[0065] Exemplarily, the request queue is stored in the request host, and the request host responds to the work request information (WC) sent by the user through the software, maps it into a request queue entry through the driver, and then stores it in the request queue. The request channel adapter HCA can be understood as an RDMA network card, which is used to read the request queue entry from the request queue, and then compose a data packet based on the request queue entry and send it to the response device; after the request channel adapter receives the response from the response device, it performs a series of operations as described above, and finally generates the corresponding completion queue entry, and stores the completion queue entry in the completion queue of the request host. The driver of the request host then composes the completion queue entry in the completion queue into work completion information (WR), and then feeds it back to the user through the software.
[0066] In some optional implementations, the request channel adapter includes an on-chip cache; 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;
[0067] After parsing the aggregation flag set in the response, the request channel adapter reads the control information from the on-chip cache and composes the corresponding completion queue entry according to the control information.
[0068] Exemplarily, the request channel adapter also includes an on-chip cache. When the request queue entry is taken out, control information and data information can be parsed therefrom. The control information can be cached in the on-chip cache and can also be stored in the host memory of the requesting host. The data information is not cached in the on-chip cache. After receiving the 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 re-read the request queue entry from the request queue and then parse the control information. This can further save resources.
[0069] In some optional implementations, the request channel adapter further includes a sending engine and a receiving engine; the sending engine sends the data packet to the responding device through a network, and the receiving engine receives the acknowledgement response from the responding device.
[0070] Exemplarily, 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, compose data packets, and then send them to the response device, while the receiving engine is used to receive reply responses from the response device, parse the reply responses, process the reply responses, compose completion queue entries, and then store them in the completion queue.
[0071] In some optional implementations, if the aggregation flag is not set in the response, the requesting device processes the data carried by the response but does not form a completion queue entry for the response.
[0072] It should also be noted that for responses that do not have an aggregation mark set, the requesting device will not form a completion queue entry after receiving such a response, but will only process the response, such as moving data. Since the response corresponds to a READ request, the response will carry the data read from the responding device, and the requesting device can store the read data carried by the response to the corresponding location. The request queue entry corresponding to the response can form a corresponding completion queue entry together after receiving a response with an aggregation mark set later.
[0073] The following is an example of the completion logic of the READ request of 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 solution, see Figure 4 , the specific process can be implemented as follows:
[0075] ① The user software sends the WR of RDMA READ, which is converted by the driver of the requesting host of the requesting device to SQE and written to SQ, which contains information such as SQE ID and OPCODE.
[0076] ② The sending engine of the HCA 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; parses the address length according to the data information in the SQE, retrieves the data, and the message header and data can form a data packet.
[0077] ③ Cache the control information in SQE into 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] ④ After the message headers and data of multiple SQEs read continuously are combined into multiple RDMA READ request packets, they are sent in batches (such as Figure 4 As shown, requests 1 to 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 forms a RESP packet. When forming the message header of the RESP packet, the aggregation flag bit in the specified message header is set to 1. The number of aggregations can be configured (such as Figure 4As shown in the figure, the configuration is to set an aggregation flag of 1 for every 4 RESPs, and the internal aggregation flags of the message headers of resp4 and resp8 are set to 1). If the batch of READ requests is less than the aggregation number, the aggregation flag of 1 is set in the last RESP.
[0080] ⑥ The requesting end receives the returned RESP packet, initiates the reading of SQE control information according to the aggregation tag, and reads back the control information of multiple SQEs at one time.
[0081] ⑦ Based on the read-back SQE control information, generate a corresponding number of CQEs and write them into CQ.
[0082] ⑧The driver converts CQE into WC and reports it to the user.
[0083] Through this application, the following technical effects can be achieved:
[0084] On the one hand, the solution of the present application can avoid repeated access to SQ to read SQE information when sending a request and receiving a response to complete the request. It is only necessary to read the SQE information once when sending a request to form a data packet, and write the SQE control information into the on-chip cache. After receiving the response to complete the request and generate CQE, it is sufficient to directly read the on-chip cache to obtain the control information. In addition, only the SQE control information is cached, which improves the data utilization rate of the on-chip cache.
[0085] On the other hand, the solution of the present application can accelerate the completion speed of READ requests. When receiving RESP without aggregation mark, only data transfer is performed without generating CQE, and the reading of SQE control information is initiated only when RESP with aggregation mark is received, which reduces the fragmented requests for reading SQE and writing CQE, and improves the efficiency of generating CQE.
[0086] Accordingly, if Figure 5 As shown, the present application also exemplarily provides a network communication method, including:
[0087] In S501, the requesting device reads a request queue entry from a request queue;
[0088] In S502, the requesting device composes corresponding data packets according to the read request queue entries, and sends them to the responding devices in sequence according to the reading order;
[0089] In S503, after receiving the data packet, the responding device composes a corresponding response and returns the response to the requesting device; wherein the responding device sets an aggregation mark in part of the response;
[0090] In S504, after the requesting device receives the response corresponding to the data packet, if an aggregation mark is set in the response, a completion queue entry is formed for the response and other response that have not formed a completion queue entry before.
[0091] In some optional implementations, the request type of the request queue entry is a READ request; and the method further includes:
[0092] After receiving a set number of the data packets, the responding device sets an aggregation mark in the acknowledgement response corresponding to the last one of the set number of the data packets.
[0093] In some optional implementations, the method further includes:
[0094] If the number of the data packets received within the set time period is less than the set number, the responding device sets an aggregation mark in the acknowledgement 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 request host converts the received work request into a request queue entry and writes the request queue into the request queue;
[0097] The request channel adapter also writes a completion queue entry corresponding to the request queue entry into a completion queue; the request queue and the completion queue are stored in the request host.
[0098] In some optional implementations, the request channel adapter includes an on-chip cache; and 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 the requesting device receives the response corresponding to the data packet, if the response has an aggregation flag set in it, forming a completion queue entry for the response and other response responses that have not previously formed a 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 composes the corresponding completion queue entry according to the control information.
[0102] In some optional implementations, the method further includes:
[0103] If the aggregation flag is not set in the response, the requesting device processes the data carried by the response but does not form a completion queue entry for the response.
[0104] The above method can be implemented through the network communication system provided in the above embodiment. For specific implementation details, please refer to the description of the network communication system in the above embodiment, which will not be repeated here.
[0105] It is understood that the circuit structures, names and parameters described in the above embodiments are only examples. Those skilled in the art can also easily combine and adjust the structural features of the above embodiments according to the use requirements, and should not limit the concept of the present application to the specific details of the above examples.
[0106] Although the present application has been described in detail with reference to the aforementioned embodiments, a person skilled in the art should understand that he or she may still modify the technical solutions described in the aforementioned embodiments, or make equivalent substitutions for some of the technical features therein; 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 the present application.
Claims
1. A network communication system, characterized in that: include: A requesting device and a responding device; wherein, The requesting device reads a request queue entry from the request queue, and forms a corresponding data packet according to the read request queue entry, and sends the corresponding data packet to the responding device in sequence according to the reading order; the requesting device also receives an acknowledgment response corresponding to the data packet from the responding device, and if an aggregation mark is set in the acknowledgment response, forms a completion queue entry for the acknowledgment response and other acknowledgments that have not previously formed a completion queue entry; The responding device composes a corresponding acknowledgement response for the received data packet; wherein the responding device sets an aggregation mark in part of the acknowledgement response.
2. The network communication system according to claim 1, characterized in that: The request type of the request queue entry is a READ request; after the responding device receives a set number of the data packets, it sets an aggregation mark in the acknowledgment response corresponding to the last one of the set number of the data packets.
3. The network communication system according to claim 2, characterized in that: If the number of the data packets received within the set time period is less than the set number, the responding device sets an aggregation mark in the acknowledgement response corresponding to the last data packet.
4. The network communication system according to any one of claims 1 to 3, characterized in that: The request device comprises a request host and a request channel adapter; the request host converts the received work request into a request queue entry and writes the request queue into the request queue; the request channel adapter reads the request queue entry from the request queue; The request channel adapter also writes a completion queue entry corresponding to the request queue entry into a completion queue; The request queue and the completion queue are stored at 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 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 parsing the aggregation flag set in the response, the request channel adapter reads the control information from the on-chip cache and composes 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 comprises a sending engine and a receiving engine; the sending engine sends the data packet to the responding device through a network, and the receiving engine receives the reply response from the responding device.
7. The network communication system according to any one of claims 1-3, 5-6, characterized in that: If the aggregation flag is not set in the response, the requesting device processes the data carried by the response but does not form a completion queue entry for the response.
8. A network communication method, characterized in that: include: The requesting device reads a request queue entry from the request queue; The requesting device composes corresponding data packets according to the read request queue entries, and sends them to the responding device in sequence according to the reading order; After receiving the data packet, the responding device composes a corresponding response and returns the response to the requesting device; wherein the responding device sets an aggregation mark in part of the response; After the requesting device receives the response corresponding to the data packet, if an aggregation mark is set in the response, a completion queue entry is formed for the response and other response that have not formed a completion queue entry before.
9. The network communication method according to claim 8, characterized in that: The request type of the request queue entry is a READ request; the method further includes: After receiving a set number of the data packets, the responding device sets an aggregation mark in the acknowledgement response corresponding to the last one of the set number of the data packets.
10. The network communication method according to claim 9, characterized in that: The method further comprises: If the number of the data packets received within the set time period is less than the set number, the responding device sets an aggregation mark in the acknowledgement response corresponding to the last data packet.
11. The network communication method according to any one of claims 8 to 10, characterized in that: The requesting device includes a requesting host and a requesting channel adapter; the method further includes: The request host converts the received work request into a request queue entry and writes the request queue into the request queue; The request channel adapter also writes a completion queue entry corresponding to the request queue entry into a completion queue; the request queue and the completion queue are stored in the request host.
12. The network communication method according to claim 11, 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 the requesting device receives the response corresponding to the data packet, if the response has an aggregation flag set in it, forming a completion queue entry for the response and other response responses that have not previously formed a 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 composes the corresponding completion queue entry according to the control information.
13. The network communication method according to any one of claims 8 to 10 and 12, characterized in that: The method further comprises: If the aggregation flag is not set in the response, the requesting device processes the data carried by the response but does not form a completion queue entry for the response.
Citation Information
Patent Citations
Data sending method, receiving method, data sending device and receiving device
CN107346981A
Multi-channel received video transmission method and device
CN114422458A
Method, device and system for reducing RDMA engine on-chip cache and chip
CN116303173A
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