Long-distance rdma out-of-order reliable transmission method based on ud write immediate number
By adopting a long-distance RDMA out-of-order reliable transmission method based on UD write immediate values, the limitations of the number of incomplete packets per card and the head-of-line blocking problem of traditional RDMA in long-distance scenarios are solved, achieving efficient data transmission and improving network bandwidth and reliability.
Patent Information
- Application Number
- CN202611490473.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2026-09-23
- Publication Date
- 2026-11-06
AI Technical Summary
Traditional RDMA suffers from limitations on the number of incomplete packets per card and head-of-line congestion due to order-preserving retransmissions in long-distance scenarios, resulting in insufficient bandwidth and amplified retransmission delays.
A long-distance RDMA out-of-order reliable transmission method based on UD write immediate values is adopted. It utilizes the unreliable datagram UD and the UD write immediate value operation extended by non-standard hardware, combined with a dual half-zone cyclic multiplexing structure and a global bitmap to record the data packet status, and adopts a global acknowledgment and denial mechanism for data transmission.
It achieves full-speed parallel transmission in long-distance scenarios, solves the problem of incomplete packet count limit and head-of-line blocking, improves network bandwidth, reduces retransmission latency, and enhances data transmission reliability.
Smart Images

Figure CN123048466A_ABST
Abstract
Description
Technical Field
[0001] This invention relates to the field of RDMA technology, and in particular to a long-distance RDMA out-of-order reliable transmission method based on UD write immediate values. Background Technology
[0002] Traditional Remote Direct Memory Access (RDMA) primarily relies on reliable connections (RC). However, traditional RDMA RC suffers from two serious problems in long-distance scenarios: 1. Limitation on the number of outstanding packets per card: Under long-distance, high-bandwidth delay product (BDP), the number of in-flight packets on a reliable connection is hardware-limited, the pipeline cannot be fully filled, and the bandwidth cannot reach line speed. 2. Head-of-line blocking due to ordered retransmission: When a packet is lost, subsequent packets are blocked, and retransmission delay is amplified under long-distance round-trip time (RRT). Summary of the Invention
[0003] The purpose of this invention is to provide a long-distance RDMA out-of-order reliable transmission method based on UD write immediate values, so as to solve the problems of RDMA RC in long-distance scenarios.
[0004] According to the present invention, a long-distance RDMA out-of-order reliable transmission method based on UD write immediate values is provided, where UD stands for unreliable datagram and RDMA stands for remote direct memory access. The method includes the following steps:
[0005] S100, the sending end splits the application layer transmission request into multiple data packets of no more than the maximum transmission unit, constructs an immediate digital segment for each data packet, and sends the data packet carrying the corresponding immediate digital segment and access key to the receiving end in the form of an RDMA write operation carrying an immediate value through the UD data queue. The immediate digital segment includes a network sequence number and a generation flip flag. The sending end divides its local memory buffer area MR1 into two half-zones. If a data packet is the last data packet in the first half-zone, the generation flip flag in the immediate digital segment constructed by the sending end for that data packet is the first value representing the flip.
[0006] S200: The receiving end receives the data packet and determines whether to write the data packet into its own local memory buffer based on the network sequence number and access key in the immediate digital field carried by the data packet, and determines whether to start the key update process based on the generation flip flag in the immediate digital field carried by the data packet.
[0007] The receiving end divides its local memory buffer MR2 into two halves. The determination of whether to write a data packet into the receiving end's local memory buffer includes: if the network sequence number in the immediate number field of the received data packet indicates that the data packet needs to be written to the first half A, and the access key carried by the data packet is the key corresponding to A, then the received data packet is written to A; if the network sequence number in the immediate number field of the received data packet indicates that the data packet needs to be written to the first half A, and the access key carried by the data packet is not the key corresponding to A, then the received data packet is discarded and not written to A; MR1 and MR2 are of equal size.
[0008] Determining whether to initiate key update processing includes: if the generational reversal marker in the immediate digital field carried by the data packet is the first value representing the reversal, then key update processing is initiated; the key update processing includes: if the data packet is a data packet that needs to be written to A, then the key corresponding to A is updated after all data packets in A have been received.
[0009] Compared with the prior art, the present invention has at least the following beneficial effects:
[0010] This invention no longer uses the traditional RC (Reordered Retransmission) mechanism, but instead uses Unreliable Datagram (UD) and combines it with the UD Write Immediate operation extended by non-standard hardware. This enables data to be transmitted in parallel at full speed in long-distance scenarios, solving the problems of the number of incomplete packets per card and head-of-line blocking caused by ordered retransmission in the existing technology using RC. This improves network bandwidth and reduces retransmission latency.
[0011] Furthermore, this invention designs a dual-half-zone cyclic multiplexing structure, with each half-zone having an independent dynamic key space. When switching half-zones, the receiving end waits until all transmissions in the first half-zone have been completely received before updating the key of the old half-zone. This causes late data packets from the old half-zone that carry the old key to be discarded and no longer written to the old half-zone, preventing such late data packets from the old half-zone that carry the old key from corrupting the data and avoiding data overwriting and damage caused by memory reuse.
[0012] Furthermore, the receiver of this invention uses a global bitmap to record the arrival status of each data packet and maintains the receiver's global continuous leading edge. The software layer adopts a global acknowledgment mechanism and a denial mechanism decoupled from individual transmission requests, enabling the receiver to send an acknowledgment message ACK or a denial message NAK containing global hole information to the sender through a control queue. The sender can also realize the reception acknowledgment and retransmission scheduling of the entire link data based on the received ACK and NAK, thereby reducing the overhead of acknowledgment messages and reducing bandwidth. It can also realize the retransmission of locally lost data and improve the reliability of data transmission. Attached Figure Description
[0013] To more clearly illustrate the technical solutions in the embodiments of the present invention, the accompanying drawings used in the description of the embodiments will be briefly introduced below. Obviously, the accompanying drawings described below are only some embodiments of the present invention. For those skilled in the art, other drawings can be obtained based on these drawings without creative effort.
[0014] Figure 1 The flowchart illustrates a long-distance RDMA out-of-order reliable transmission method based on UD write immediate values, as provided in an embodiment of the present invention. Detailed Implementation
[0015] The technical solutions of the embodiments of the present invention will be clearly and completely described below with reference to the accompanying drawings. Obviously, the described embodiments are only some embodiments of the present invention, and not all embodiments. Based on the embodiments of the present invention, all other embodiments obtained by those skilled in the art without creative effort are within the scope of protection of the present invention.
[0016] According to this embodiment, a long-distance RDMA out-of-order reliable transmission method based on UD write immediate values is provided, where UD stands for Unreliable Datagram and RDMA stands for Remote Direct Memory Access. The method includes the following steps, as follows: Figure 1 As shown:
[0017] S100, the sending end splits the application layer transmission request into multiple data packets of no more than the maximum transmission unit, constructs an immediate digital segment for each data packet, and sends the data packet carrying the corresponding immediate digital segment and access key to the receiving end in the form of an RDMA write operation carrying an immediate value through the UD data queue. The immediate digital segment includes a network sequence number and a generation flip flag. The sending end divides its local memory buffer area MR1 into two half-zones. If a data packet is the last data packet in the first half-zone, the generation flip flag in the immediate digital segment constructed by the sending end for that data packet is the first value representing the flip.
[0018] This embodiment is based on Unreliable Datagram (UD). UD is connectionless and does not offer ordered retransmission, making it naturally suitable for out-of-order transmission. Furthermore, it avoids head-of-queue blocking and connection explosion issues, and its reliability is guaranteed by upper-layer software. However, in the standard RDMA specification, UD data queue pairs (QPs) only support Send operations and do not support operations such as RDMAWrite (remote direct memory write). This embodiment performs Write Immediate on UD QPs, which is not a standard RDMA capability and requires custom NIC firmware / hardware extension support. This is a hardware prerequisite for this embodiment, and the implementation is based on this hardware prerequisite.
[0019] In one specific implementation, the immediate number field is 32 bits. The first 24 bits of the immediate number field are the network sequence number, bits 25-28 are the slot index, bit 29 is the slot generation bit, bit 30 is a reserved bit, bit 31 is the generation flip flag, and bit 32 is the end flag. The end flag indicates whether the data packet is the last data packet in a transmission request. The value of the immediate number field is equal to the absolute sequence number (abs_seq) modulo 0xFFFFFF. The generation flip flag value is either a first value indicating a flip (e.g., 1) or a second value indicating no flip (e.g., 0). A flip indicates that the data packet being sent is the last data packet in the current half-segment, and data packets for the other half-segment are about to be sent.
[0020] In one specific implementation, the access key is written in the header of the data packet.
[0021] S200: The receiving end receives the data packet and determines whether to write the data packet into its own local memory buffer based on the network sequence number and access key in the immediate digital field carried by the data packet, and determines whether to start the key update process based on the generation flip flag in the immediate digital field carried by the data packet.
[0022] The receiving end divides its local memory buffer MR2 into two halves. The decision to write a data packet to its local memory buffer involves the following steps: if the network sequence number in the immediate field of the received data packet indicates that the packet needs to be written to the first half (A), and the access key carried by the data packet is the key corresponding to A, then the received data packet is written to A; if the network sequence number in the immediate field of the received data packet indicates that the packet needs to be written to the first half (A), and the access key carried by the data packet is not the key corresponding to A, then the received data packet is discarded and not written to A. MR1 and MR2 are of equal size. For example, MR1 and MR2 are both 128GB in size, and each half is 64GB in size.
[0023] In this embodiment, MR1 and MR2 are of equal size, and the front and rear halves of MR1 and MR2 are also equal. Therefore, the front half of MR1 equals the front half of MR2, and the rear half of MR2 equals the rear half of MR2. Data packets sent from the front half of MR1 are written to the front half of MR2, and data packets sent from the rear half of MR2 are written to the rear half of MR2. (It should be understood that the receiving end can determine the half of the data packet to be written and the offset within the half based on the first 24 bits of the data packet as the network sequence number.) After the data packets in the front half of MR1 are sent, the data packets in the rear half of MR1 are sent. After the data packets in the rear half of MR1 are sent, the process wraps back to sending the data packets in the front half of MR1 (at this time, the data packets in the front half of MR1 have been updated), and this cycle continues until all data packets are sent.
[0024] Determining whether to initiate key update processing includes: if the generational reversal marker in the immediate digital field carried by the data packet is the first value representing the reversal, then key update processing is initiated; the key update processing includes: if the data packet is a data packet that needs to be written to A, then the key corresponding to A is updated after all data packets in A have been received.
[0025] For example, updating the key corresponding to A includes incrementing the key by 1. In one specific implementation, the key consists of a fixed high 24-bit index and a dynamic low 8-bit tag. The high 24 bits are fixed during memory binding and are used to identify the physical memory region; the low 8 bits are a randomly generated initial tag that remains unchanged throughout the half-region's lifetime. The above-mentioned incrementing of the key by 1 prevents late data packets carrying old keys from being written, ensuring data integrity.
[0026] In one specific implementation, S200 further includes: after all data packets in A have been received, the receiving end sends a half-zone switching acknowledgment message to the sending end; upon receiving the half-zone switching acknowledgment message, the sending end synchronously updates the access key for the first half of its local cache. Therefore, when the first half of the sending end's local memory buffer is used again, the key carried by the sending end when sending data packets can be the same as the key for the first half of the receiving end's local memory buffer, ensuring that data packets are successfully written to A.
[0027] Similarly, if a data packet is the last data packet in the latter half of the sender's own local memory buffer, the generational flip marker in the immediate number segment constructed by the sender for that data packet is set to the first value representing the flip; after the receiver finishes receiving that data packet, it initiates the key update process. In this embodiment, the key update process further includes: if the data packet is a data packet that needs to be written into the latter half B of the receiver's own local memory buffer, then the key corresponding to B is updated after all data packets in B have been received. For example, updating the key corresponding to B includes: incrementing the key corresponding to B by 1.
[0028] After all data packets in B have been received, the receiving end sends a half-cell switch acknowledgment message to the sending end. Upon receiving the half-cell switch acknowledgment message, the sending end synchronously updates the access key for the second half of the local memory buffer. Therefore, when the second half of the sending end's local memory buffer is used again, the key carried by the sending end when sending data packets will be the same as the key for the second half of the receiving end's local memory buffer, ensuring that the data packets are successfully written to B.
[0029] In this embodiment, the key corresponding to A and the key corresponding to B are relatively independent and are used to verify the data packets in the first half and the second half of the data packets sent by the sending end, respectively. Only after the verification is successful can the corresponding half of the data packet be written.
[0030] In this embodiment, the application scenario of the above-mentioned dual half-zone mechanism is User-Buffer Multi-Transfer, that is, the application layer needs to bind a large block buffer (e.g., 128GB) and send it independently in multiple (one-to-many) high-concurrency scenarios; in order to solve the problems of data out-of-order and memory reuse and overwriting caused by high concurrency over long distances, this embodiment also introduces a 16-way concurrent slot mechanism in this application scenario.
[0031] Specifically, the system pre-allocates 16 concurrent slots, each corresponding to a transmission context. The sending end allocates slots based on the mapping relationship of the transmission sequence number (transfer_id) submitted by the application layer, with the mapping formula being slot = transfer_id & 0xF (i.e., taking the lower 4 bits). In the 32-bit immediate numeric field, the lower 4 bits of the 5-bit routing generation field (epoch) are the slot index, used for fast routing and regrouping of out-of-order packets at the receiving end; its highest bit is the slot generation bit (epoch_gen), used to distinguish old generation residual packets when the same slot is reused. Each slot maintains its own active count (active_count) and state machine. During half-cell handover, the receiving end must wait until all active slots have finished receiving data (i.e., all slot active_counts are zeroed and the pending queue is empty) before it can increment the old half-cell key (key++) and reply to the sending end with a half-cell handover confirmation message (SWITCH_ACK).
[0032] In this embodiment, in addition to the aforementioned application scenario of multiple transmissions via user buffers, a zero-copy application scenario is also included, namely, a scenario where the data transmission volume is large (e.g., MB to GB level) but the transmission frequency is low. In this scenario, the application layer binds a buffer to a single transmission, with a one-to-one relationship between the two. Each time the sending end performs a transmission, it needs to independently register the memory region (MR) and obtain the key (rkey), and then deregister after the transmission is completed. Since this mode is a single-transmission concurrent model, only one transmission is in transit at any given time. Therefore, this mode does not introduce the aforementioned slot mechanism and dual-half-zone mechanism, and only needs to complete the transmission based on UD Write Immediate on an independent queue pair (QP).
[0033] As a specific implementation, the hardware needs to support multipath functionality. Specifically, multiple UDP source ports are used to sequentially distribute packets to different paths using a round-robin (RR) scheduling algorithm. The software protocol layer does not need to maintain per-path queue pairs (per-path QP groups), path identifiers (path_id), or per-path round-trip time (per-path RTT).
[0034] In this embodiment, the method further includes: the receiving end uses a global bitmap to record the arrival status of each data packet and maintains the global continuous front edge of the receiving end; the software layer adopts a global acknowledgment and denial mechanism decoupled from individual transmission requests: the receiving end sends an acknowledgment message ACK for the global continuous front edge and a denial message NAK containing global hole information to the sending end through a control queue, so that the sending end can realize the reception acknowledgment and retransmission scheduling of the entire link data according to the received ACK and NAK.
[0035] In one specific implementation, the triggering conditions for ACK include: the receiver detecting that the number of bytes advancing in the global continuous leading edge exceeds a first preset threshold, or the number of advancing data packets exceeds a second preset threshold, or the current time reaches a preset time threshold. For example, the first preset threshold is one-quarter of the bandwidth-delay product (BDP); the second preset threshold is 4096; and the preset time threshold is 100μs-5ms. After sending ACK, the above triggering conditions are recalculated.
[0036] In this embodiment, the acknowledgment value (ack_value24) in the ACK packet indicates that the global contiguous edge (global_contig_edge_abs) at the receiving end has advanced to a certain absolute acknowledgment number (ack_abs). The cable only carries the lower 24 bits of this absolute acknowledgment number (ack_abs); and the ACK packet does not carry the specific transfer request identifier (transfer_id) and epoch field, thus achieving decoupling from individual transfer requests.
[0037] In one specific implementation, the ACK length is 6 bytes, sent by the sender via the control queue (ctrl_qp) using the UD Send operation. Its structure includes: a 1-byte type field (type) with the value MSG_ACK; a 1-byte flag field (flags), where bit 0 is the generation flip flag (mw_gen), used to filter control messages from the older 128G generation; bits 7 to 1 are reserved bits (rsv), set to 0 by the sender, ignored and counted by the receiver, and not used as a discard condition; and a 4-byte acknowledgment value field (ack_value), which reserves 32 bits on the cable, but only the lower 24 bits are valid, with the higher 8 bits set to 0 by the sender. If the receiver finds the higher 8 bits to be non-zero, it issues a warning or discards the message.
[0038] The sending end's verification and processing of the ACK on the receiving side: The sending end first determines whether the ACK is a remnant of an old generation based on the current generation (mw_gen) (the old generation signal is directly discarded). Then, it performs absolute sequence number restoration, that is, using the transmission period base address and the 24-bit low value to pad the 64-bit absolute sequence number. After restoration, the sending end performs three out-of-bounds checks (if it is less than the acknowledged header pointer, it is a duplicate / old packet; if it is greater than the transmitted tail pointer, it is an abnormal overshoot; if it exceeds the current generation base address plus 2^24, it is cross-generation information), filtering out all illegal and redundant signals. After the checks pass, the sending end clears the range in the global bitmap, advances the global acknowledged header pointer, and scans the active slots to trigger the completion event.
[0039] In one specific implementation, the receiving end is configured with a rejection acknowledgment (NAK) timer. When the timer expires, it traverses the holes in the global bitmap, constructs and sends a NAK. After receiving the NAK, the sending end locates the hole data packet and submits a retransmission request to a retransmission queue pair independent of the data queue pair for retransmission. For example, the timer is set to 20ms (configurable).
[0040] In one specific implementation, the total size of NAK is fixed at the Maximum Transmission Unit (MTU), with a 14-byte header. Its structure includes: a 1-byte type field (with the value MSG_NAK), a 1-byte flags field, and a 4-byte base sequence number field (base_seq24). Following the NAK header is a bitmap data area, the size of which dynamically changes according to the MTU to meet different network conditions. For example, when the MTU is 1KB, the bitmap length is 1010 bytes (covering 8080 bits); when the MTU is 8KB (the default value), the bitmap length can reach 8178 bytes (covering 65424 bits). The semantics of the flags field are consistent with the ACK mechanism: bit 0 is the generation flip flag (mw_gen), used to filter packets from older generations; bits 7 to 1 are reserved bits, set to 0 by the sender, ignored by the receiver but countable, and not used as a discard condition.
[0041] The base sequence number field (base_seq24) in the NAK message is the core of the NAK mechanism. The primary semantic of this base sequence number field (base_seq24) is to inform the sender that the receiver's global contiguous edge (global_contig_edge_abs) has advanced to a certain absolute sequence number (base_abs); and, to accommodate 24-bit cable limitations, this field only carries the lower 24 bits of that absolute sequence number (base_abs). Therefore, when the receiver sends a NAK, it effectively acts as an implicit cumulative ACK. Upon receiving a NAK, the sender first uses the same monotonic boosting (restoration) rule as the ACK mechanism to restore the lower 24 bits to a 64-bit absolute sequence number (base_abs), thereby advancing the sender's global acknowledgment header pointer (global_acked_head_abs) to confirm that all data up to that position has arrived safely. After advancing the implicit ACK, the bitmap data area in the NAK message further describes the arrival status of subsequent data packets starting from the base sequence number (base_abs). When the corresponding bit in the bitmap is 0, it indicates that the data packet at that offset position will have a hole at the receiving end.
[0042] In this embodiment, NAK is a global acknowledgment mechanism that does not go through epoch (generational) routing and never carries any specific transmission request identifier (transfer_id). After being generated by the receiving end control core, the NAK is sent directly through the control queue pair (ctrl_qp). After receiving the global NAK, the sending end control core does not need to maintain a complex connection state machine, but directly scans the holes indicated by the bitmap data area on the local global bitmap. Subsequently, the sending end control core traverses all active slots, locates which transmission request (transfer) the hole belongs to by using the absolute sequence number (abs_seq) corresponding to the hole, and directly submits its retransmission request to an independent retransmission queue pair (rexmit_qp) for retransmission. This global hole scanning mechanism, independent of the transport layer (decoupled), ensures that data retransmission will not block or affect the normal data flow.
[0043] This embodiment no longer uses the traditional RC (Recursive Read-In-Order) retransmission mechanism, but instead uses UD (Unreliable Datagram) and combines it with the UD Write Immediate operation extended by non-standard hardware. This enables data to be transmitted in parallel at full speed in long-distance scenarios, solving the problems of incomplete packet count limitations and head-of-line blocking caused by retransmission in existing technologies using RC. This improves network bandwidth and reduces retransmission latency.
[0044] Furthermore, this embodiment designs a dual-half-zone cyclic multiplexing structure, with each half-zone having an independent dynamic key space. When switching half-zones, the receiving end waits until all transmissions in the first half-zone have been completely received before updating the key of the old half-zone. This causes late data packets from the old half-zone that carry the old key to be discarded and no longer written to the old half-zone, preventing such late data packets from the old half-zone that carry the old key from corrupting the data and avoiding data overwriting and damage caused by memory reuse.
[0045] Furthermore, in this embodiment, the receiver uses a global bitmap to record the arrival status of each data packet and maintains the receiver's global continuous leading edge. The software layer adopts a global acknowledgment mechanism and a denial mechanism decoupled from individual transmission requests, enabling the receiver to send an acknowledgment message ACK or a denial message NAK containing global hole information to the sender through a control queue. The sender can also realize the reception acknowledgment and retransmission scheduling of the entire link data based on the received ACK and NAK, thereby reducing the overhead of acknowledgment messages and reducing bandwidth. It can also realize the retransmission of locally lost data and improve the reliability of data transmission.
[0046] While specific embodiments of the invention have been described in detail by way of examples, those skilled in the art should understand that the examples are for illustrative purposes only and are not intended to limit the scope of the invention. Those skilled in the art should also understand that various modifications can be made to the embodiments without departing from the scope and spirit of the invention.
Claims
1. A long-distance RDMA out-of-order reliable transmission method based on UD write immediate values, where UD stands for unreliable datagram and RDMA stands for remote direct memory access, characterized in that, The method includes the following steps: S100, the sending end splits the application layer transmission request into multiple data packets of no more than the maximum transmission unit, constructs an immediate digital segment for each data packet, and sends the data packets carrying the corresponding immediate digital segment and access key to the receiving end in the form of RDMA write operation carrying immediate values through the UD data queue in sequence; the immediate digital segment includes a network sequence number and a generation flip flag; wherein, the sending end divides its own local memory buffer area MR1 into two half-areas, if a data packet is the last data packet in the first half-area, the generation flip flag in the immediate digital segment constructed by the sending end for the data packet is the first value representing the flip; S200: The receiving end receives the data packet and determines whether to write the data packet into its own local memory buffer based on the network sequence number and access key in the immediate digital segment carried by the data packet, and determines whether to start the key update process based on the generation flip flag in the immediate digital segment carried by the data packet. The receiving end divides its local memory buffer MR2 into two halves. The decision to write a data packet to its local memory buffer includes: if the network sequence number in the immediate field of the received data packet indicates that the packet needs to be written to the first half A, and the access key carried by the data packet is the key corresponding to A, then the received data packet is written to A; if the network sequence number in the immediate field of the received data packet indicates that the packet needs to be written to the first half A, and the access key carried by the data packet is not the key corresponding to A, then the received data packet is discarded and not written to A; MR1 and MR2 are of equal size. Determining whether to initiate key update processing includes: if the generational reversal marker in the immediate digital field carried by the data packet is the first value representing the reversal, then key update processing is initiated; the key update processing includes: if the data packet is a data packet that needs to be written to A, then the key corresponding to A is updated after all data packets in A have been received.
2. The long-distance RDMA out-of-order reliable transmission method based on UD write immediate values according to claim 1, characterized in that, The immediate number field is 32 bits. The first 24 bits of the immediate number field are the network sequence number, the 25th to 28th bits are the slot index, the 29th bit is the slot generation bit, the 30th bit is the reserved bit, the 31st bit is the generation flip flag, and the 32nd bit is the end flag. The end flag is used to indicate whether the data packet is the last data packet of a transmission request.
3. The long-distance RDMA out-of-order reliable transmission method based on UD write immediate values according to claim 1, characterized in that, The method further includes: The receiver uses a global bitmap to record the arrival status of each data packet and maintains the receiver's global continuous leading edge. The software layer adopts a global acknowledgment and denial mechanism decoupled from individual transmission requests: the receiving end sends an acknowledgment message ACK for the global continuous leading edge and a denial message NAK containing global hole information to the sending end through a control queue, so that the sending end can realize the reception acknowledgment and retransmission scheduling of the entire link data based on the received ACK and NAK.
4. The long-distance RDMA out-of-order reliable transmission method based on UD write immediate values according to claim 3, characterized in that, The triggering conditions for ACK include: the receiver detecting that the number of bytes advancing the global continuous leading edge exceeds the first preset threshold, or the number of advancing data packets exceeds the second preset threshold, or the current time reaches the preset time threshold.
5. The long-distance RDMA out-of-order reliable transmission method based on UD write immediate values according to claim 3, characterized in that, The receiving end is configured with a rejection acknowledgment timer. When the timer expires, it traverses the holes on the global bitmap, constructs and sends a NAK. After receiving the NAK, the sending end locates the hole data packet and submits the retransmission request to a retransmission queue that is independent of the data queue for retransmission.
6. The long-distance RDMA out-of-order reliable transmission method based on UD write immediate values according to claim 1, characterized in that, The step of updating the key corresponding to A includes incrementing the key corresponding to A by 1.
7. The long-distance RDMA out-of-order reliable transmission method based on UD write immediate values according to claim 1, characterized in that, The key update process further includes: if the data packet is a data packet that needs to be written to the second half of the local memory buffer B of the receiving end, then the key corresponding to B is updated after all data packets in B have been received.
8. The long-distance RDMA out-of-order reliable transmission method based on UD write immediate values according to claim 1, characterized in that, Both MR1 and MR2 are 128G in size, and each half-region is 64G in size.
9. The long-distance RDMA out-of-order reliable transmission method based on UD write immediate values according to claim 1, characterized in that, S200 also includes: after all data packets in A have been received, the receiving end sends a half-zone switching confirmation message to the sending end. After receiving the half-zone switching confirmation message, the sending end synchronously updates the first half-zone access key in its local cache.
