Remote direct memory access data retransmission method and related equipment
By dividing and optimizing the retransmission combination in the RDMA network and performing data retransmission according to preset rules, the network performance degradation caused by packet loss and out of order in large-scale networking is solved, and service quality and retransmission efficiency are improved.
Patent Information
- Application Number
- CN202311775361.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2023-12-21
- Publication Date
- 2024-12-27
- Estimated Expiration
- 2043-12-21
AI Technical Summary
In the large-scale networking scenario, frequent packet loss and out-of-order packet retransmission in the RDMA network lead to the occupation of transmission channel queues, affecting the timely delivery of small data packets and affecting service performance.
By obtaining the metadata of multiple tasks to be retransmitted, determining the data volume of the retransmission packet, dividing the retransmission combination, and performing data retransmission according to preset rules (such as the data volume from small to large or priority level), and dividing different The retransmission combination solves the problem of large and small packet transmission, improves service quality and retransmission efficiency.
It effectively alleviates the adverse impact of retransmission waiting on congestion, improves service quality and retransmission efficiency, and ensures timely transmission of small data packets.
Smart Images

Figure CN117692109B_ABST
Abstract
Description
Background Art
[0002] With the rapid development of technologies such as artificial intelligence, cloud computing, and distributed computing, intelligent computing centers for training and pushing large artificial models adopt high-performance networks based on remote direct memory access (RDMA). With the continuous growth of parameter volume of large models and the development of tenant-based intelligent computing services, the nodes of intelligent computing centers are also expanding in scale, which puts higher requirements on the large-scale networking capabilities of RDMA high-performance networks. How to avoid network message disorder and packet loss in large-scale networking is one of the key requirements.
[0003] In related technologies, the packet disorder and packet loss problems are solved through the message retransmission mechanism on the RDMA network card. However, when packet loss and disordered packet retransmission occur frequently, the continuous occupation of the transmission channel queue pair (Queue Pair, QP) by large data packets causes small data packets to be unable to be delivered in time, affecting the business.
[0004] It should be noted that the information disclosed in the above background technology section is only used to enhance the understanding of the background of the present disclosure, and therefore may include information that does not constitute the prior art known to ordinary technicians in the field. Summary of the invention
[0005] The present disclosure provides a remote direct memory access data retransmission method and related equipment, which at least to a certain extent overcomes the problem of network performance degradation caused by data retransmission in the related art.
[0006] Other features and advantages of the present disclosure will become apparent from the following detailed description, or may be learned in part by the practice of the present disclosure.
[0007] According to one aspect of the present disclosure, there is provided a data retransmission method for remote direct memory access, comprising: acquiring a plurality of tasks to be retransmitted, wherein metadata of the plurality of tasks to be retransmitted are stored in an uncompleted request table ORT; determining the data volume of a corresponding retransmission data packet according to the metadata of each task to be retransmitted; determining a retransmission combination according to the data volume of the plurality of retransmission data packets, wherein the retransmission combination comprises at least two retransmission subgroups, each retransmission subgroup comprises at least one retransmission data packet, and the data volume of the retransmission data packets in different retransmission subgroups meets a preset condition; and performing data retransmission on the retransmission data packets of the at least two retransmission subgroups according to a preset rule.
[0008] In one embodiment of the present disclosure, the preset rule includes performing data retransmission in an ascending order of data volume; wherein, performing data retransmission on the retransmission data packets of the at least two retransmission subgroups in accordance with the preset rule includes: for different retransmission subgroups, performing data retransmission in an ascending order of the total data volume of the retransmission data packets within the retransmission subgroup; for the same retransmission subgroup, performing data retransmission in an ascending order of the data volume of at least one retransmission data packet within the same retransmission subgroup.
[0009] In one embodiment of the present disclosure, the preset rules include performing data retransmission according to the priority level of the retransmitted data packets; wherein, performing data retransmission on the retransmitted data packets of the at least two retransmission subgroups according to the preset rules includes: allocating the same cache space address to each of the retransmission subgroups, and writing the cache space address into a combined multiplexing table; and arranging the priority level of each retransmitted data packet according to the sum of the data amounts of the retransmitted data packets in each retransmission subgroup in the combined multiplexing table.
[0010] In one embodiment of the present disclosure, data retransmission is performed on the retransmission data packets of the at least two retransmission subgroups according to preset rules, including: returning an acknowledgment character ACK retransmission response to the sending end according to the priority level of each retransmission data packet to instruct the sending end to retransmit the data packet; receiving the data packet from the sending end, writing the data packet into a retransmission buffer area corresponding to the cache space address, so that the retransmission buffer area writes the retransmission data packet into the application data cache; and sending a retransmission data completion message to the sending end.
[0011] In one embodiment of the present disclosure, before sending the retransmission data completion message to the transmitting end, the method further includes: releasing the buffer space of the retransmission buffer area, and updating the combination multiplexing table and the ORT.
[0012] In one embodiment of the present disclosure, before acquiring a plurality of tasks to be retransmitted, it includes: when packet loss or disorder is detected, storing metadata of the message with packet loss or disorder in the ORT to generate tasks to be retransmitted.
[0013] In one embodiment of the present disclosure, the acquiring of the plurality of tasks to be retransmitted includes: periodically scanning the ORT to acquire the plurality of tasks to be retransmitted.
[0014] In one embodiment of the present disclosure, determining the data volume of the corresponding retransmitted data packet based on the metadata of each task to be retransmitted includes: based on the metadata of the task to be retransmitted, searching for the corresponding work queue element WQE in the cache pool, parsing the found WEQ, and obtaining the data volume of the retransmitted data packet.
[0015] In one embodiment of the present disclosure, the retransmission combination includes at least two retransmission subgroups, each retransmission subgroup includes at least one retransmission data packet, and the data volume of the retransmission data packets in different retransmission subgroups meets a preset condition, including: taking the retransmission data packet with the largest data volume as a retransmission subgroup, and the sum of the data volumes of the retransmission data packets in each retransmission subgroup is less than or equal to the maximum data volume of the retransmission data packets.
[0016] According to another aspect of the present disclosure, there is provided a data retransmission device for remote direct memory access, comprising: a task acquisition module, used to acquire a plurality of tasks to be retransmitted, wherein metadata of the plurality of tasks to be retransmitted are stored in an uncompleted request table ORT; an information determination module, used to determine the data volume of a corresponding retransmission data packet according to the metadata of each task to be retransmitted; a retransmission grouping module, used to determine a retransmission combination according to the data volume of a plurality of retransmission data packets, wherein the retransmission combination comprises at least two retransmission subgroups, each retransmission subgroup comprises at least one retransmission data packet, and the data volume of retransmission data packets in different retransmission subgroups meets a preset condition; and a data retransmission module, used to perform data retransmission on the retransmission data packets of the at least two retransmission subgroups according to a preset rule.
[0017] According to another aspect of the present disclosure, there is provided an electronic device, comprising: a processor; and a memory for storing executable instructions of the processor; wherein the processor is configured to execute the above-mentioned remote direct memory access data retransmission method by executing the executable instructions.
[0018] According to another aspect of the present disclosure, a computer-readable storage medium is provided, on which a computer program is stored. When the computer program is executed by a processor, the above-mentioned remote direct memory access data retransmission method is implemented.
[0019] According to another aspect of the present disclosure, a computer program product is provided, the computer program product comprising a computer program or computer instructions, the computer program or the computer instructions being loaded and executed by a processor so that a computer implements the above-mentioned remote direct memory access data retransmission method.
[0020] In the disclosed embodiment, a plurality of tasks to be retransmitted are obtained, and metadata of the plurality of tasks to be retransmitted are stored in an unfinished request table; the data volume of the corresponding retransmitted data packet is determined according to the metadata of each task to be retransmitted; a retransmission combination is determined according to the data volume of the plurality of retransmitted data packets, the retransmission combination includes at least two retransmission subgroups, each retransmission subgroup includes at least one retransmission data packet, and the data volume of the retransmission data packets in different retransmission subgroups meets a preset condition; data retransmission is performed on the retransmission data packets of at least two retransmission subgroups according to preset rules, batch tasks to be retransmitted are obtained by scanning the unfinished request table, and different retransmission combinations are divided according to the size of the data packets, thereby solving the transmission problem of large and small packets, improving service quality, improving retransmission efficiency, and alleviating the adverse effects of retransmission waiting on congestion.
[0021] It is to be understood that the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the present disclosure. BRIEF DESCRIPTION OF THE DRAWINGS
[0022] The accompanying drawings herein are incorporated into the specification and constitute a part of the specification, illustrate embodiments consistent with the present disclosure, and together with the specification are used to explain the principles of the present disclosure. Obviously, the accompanying drawings described below are only some embodiments of the present disclosure, and for ordinary technicians in this field, other accompanying drawings can be obtained based on these accompanying drawings without creative work.
[0023] Figure 1 A schematic diagram showing an exemplary architecture of a data retransmission method for remote direct memory access according to an embodiment of the present disclosure.
[0024] Figure 2 A flow chart of a data retransmission method for remote direct memory access in an embodiment of the present disclosure is shown.
[0025] Figure 3 A flow chart of another remote direct memory access data retransmission method in an embodiment of the present disclosure is shown.
[0026] Figure 4 A flow chart of a method for determining the priority level of a retransmitted data packet in an embodiment of the present disclosure is shown.
[0027] Figure 5 A flow chart of another remote direct memory access data retransmission method in an embodiment of the present disclosure is shown.
[0028] Figure 6 A schematic structural diagram showing an example of a remote direct memory access data retransmission system in an embodiment of the present disclosure.
[0029] Figure 7 A schematic diagram showing the structure of another example of a remote direct memory access data transmission system in an embodiment of the present disclosure.
[0030] Figure 8 A flowchart showing an example of a remote direct memory access data transmission method in an embodiment of the present disclosure is shown.
[0031] Fig. 9 A schematic structural diagram of a remote direct memory access data retransmission device in an embodiment of the present disclosure is shown.
[0032] Fig.10 A structural block diagram of an electronic device in an embodiment of the present disclosure is shown. DETAILED DESCRIPTION
[0033] Example embodiments will now be described more fully with reference to the accompanying drawings. However, example embodiments can be implemented in a variety of forms and should not be construed as limited to the examples set forth herein; rather, these embodiments are provided so that the disclosure will be more comprehensive and complete and to fully convey the concepts of the example embodiments to those skilled in the art. The described features, structures, or characteristics may be combined in any suitable manner in one or more embodiments.
[0034] In addition, the accompanying drawings are only schematic illustrations of the present disclosure and are not necessarily drawn to scale. The same reference numerals in the figures represent the same or similar parts, and their repeated description will be omitted. Some of the block diagrams shown in the accompanying drawings are functional entities and do not necessarily correspond to physically or logically independent entities. These functional entities can be implemented in software form, or implemented in one or more hardware modules or integrated circuits, or implemented in different networks and / or processor devices and / or microcontroller devices.
[0035] Figure 1 A schematic diagram showing an exemplary system architecture of a data retransmission method for remote direct memory access that can be applied to an embodiment of the present disclosure is shown.
[0036] like Figure 1 As shown, the system architecture may include a connection topology diagram of two terminals with remote direct memory access (RDMA) function. RDMA requires a reliable transmission protocol to be implemented in hardware. The reliable service guarantees that messages are delivered from the requester to the responder in sequence, in order, and without damage. The RDMA function terminal may include a receiving end and a sending end.
[0037] The RDMA functional terminal includes an RDMA network card, a memory and a central processing unit CPU. The RDMA network card, the memory and the CPU exchange information through a bus BUS. The RDMA network card at the receiving end and the RDMA network card at the sending end interact through a network, which can be a wired network or a wireless network.
[0038] Optionally, the wireless access network or wired network described above uses standard communication technology and / or protocols. The network is typically the Internet, but may also be any network, including but not limited to a local area network (LAN), a metropolitan area network (MAN), a wide area network (WAN), a mobile, wired or wireless network, a dedicated network or any combination of a virtual private network). In some embodiments, technologies and / or formats including Hyper Text Mark-up Language (HTML), Extensible Markup Language (XML), etc. are used to represent data exchanged over the network. In addition, conventional encryption technologies such as Secure Socket Layer (SSL), Transport Layer Security (TLS), Virtual Private Network (VPN), Internet Protocol Security (IPsec), etc. may be used to encrypt all or some links. In other embodiments, customized and / or dedicated data communication technologies may also be used to replace or supplement the above data communication technologies.
[0039] It can be understood that for a wireless communication system, it is a network that provides wireless communication functions. The communication system can adopt different communication technologies, such as code division multiple access, bandwidth code division multiple access, time division multiple access, frequency division multiple access, orthogonal frequency division multiple access, single carrier frequency division multiple access, carrier sense multiple access / collision avoidance. According to the capacity, rate, delay and other factors of different networks, the network can be divided into 2G (generation) network, 3G network, 4G network or future evolution network, such as 5G network, 5G network is referred to as network or system. In the present disclosure, the wireless access network includes network equipment, which can be, for example, a wireless access network entity; the core network includes core network equipment. Among them, the wireless access network entity can also be called a base station. The wireless access network can provide network services for the terminal device 110 through the network equipment, and different operators can provide different network services for the terminal device 110. It can also be understood that different operators correspond to different operator networks.
[0040] The terminal device, also called terminal, user terminal, user equipment (UE), etc., can be various electronic devices, including but not limited to smart phones, tablet computers, laptop computers, desktop computers, etc.
[0041] Optionally, the client of the application installed in different terminal devices is the same, or the client of the same type of application based on different operating systems. Based on the different terminal platforms, the specific form of the client of the application can also be different, for example, the application client can be a mobile client, a PC client, etc.
[0042] RDMA network card is referred to as RNIC. Through RDMA, the receiving node can directly access the memory of the remote sending node, and the CPUs at both ends hardly need to participate in the data transmission process. The local network card directly copies data from the memory space to the internal storage space, and then the hardware assembles the messages at each layer and sends it to the peer network card through the physical link. After receiving the data packet, the peer RDMA network card strips off the message headers and checksums at each layer, and stores the data in the user space memory through direct memory access (DMA).
[0043] The back-off N retransmission scheme specified in the RDMA protocol requires retransmission of all data packets after the packet loss.
[0044] In large-scale networking scenarios, the core components of the message retransmission mechanism, such as the unfinished request table, reordering buffer, and tracking bit array, require more than several GB of cache. However, the on-chip static random access memory (SRAM) of a general network card cannot provide sufficient capacity and the host side memory needs to be used. Therefore, the message retransmission mechanism needs to frequently swap in and out between the network card and the host memory through PCIE (Peripheral Component Interconnect Express, a high-speed serial computer expansion bus standard) to access the retransmitted data, which is bound to affect the networking performance. In addition, the retransmission mechanism is not aware of the size of the business data flow packet and processes the retransmission tasks concurrently. Once the network is congested, as the retransmissions increase, it is easy for different business data flows to block each other and the retransmissions to increase dramatically, exacerbating the degradation of network performance.
[0045] In order to at least partially solve the above technical problems, the present disclosure adopts a method of storing data in a reordering buffer to solve the problem of insufficient on-chip memory.
[0046] Based on this, the data retransmission method of remote direct memory access provided by the present invention obtains multiple tasks to be retransmitted, and the metadata of the multiple tasks to be retransmitted are stored in an unfinished request table ORT; the data volume of the corresponding retransmission data packet is determined according to the metadata of each task to be retransmitted; a retransmission combination is determined according to the data volume of multiple retransmission data packets, the retransmission combination includes at least two retransmission subgroups, each retransmission subgroup includes at least one retransmission data packet, and the data volume of the retransmission data packets in different retransmission subgroups meets a preset condition; data retransmission is performed on the retransmission data packets of at least two retransmission subgroups according to preset rules, batch tasks to be retransmitted are obtained by scanning the ORT, and different retransmission combinations are divided according to the size of the data packets, thereby solving the transmission problem of large and small packets, improving service quality, improving retransmission efficiency, and alleviating the adverse effects of retransmission waiting on congestion.
[0047] The present exemplary implementation is described in detail below with reference to the accompanying drawings and embodiments.
[0048] First, a method for retransmitting data in remote direct memory access is provided in an embodiment of the present disclosure, and the method can be executed by any electronic device with computing processing capabilities. In some embodiments, the method can be executed by a terminal device, for example, by a receiving end RDMA function terminal, or by a sending end RDMA function terminal, or by information interaction between the receiving end and the sending end RDMA function terminal.
[0049] Figure 2 A flow chart of a data retransmission method for remote direct memory access in an embodiment of the present disclosure is shown as follows: Figure 2 As shown, the data retransmission method for remote direct memory access provided in the embodiment of the present disclosure includes the following steps:
[0050] S202: Acquire multiple tasks to be retransmitted, wherein metadata of the multiple tasks to be retransmitted are stored in an uncompleted request table.
[0051] The tasks to be retransmitted may be data packets corresponding to lost messages, data packets corresponding to out-of-order messages, or retransmission situations caused by other abnormal reasons.
[0052] In one embodiment, the RDMA network card can obtain the message to be sent and received in the memory buffer area according to the work queue element (WQE). Each WQE records the metadata information of the message to be sent and received. WQE is the basic component element of the queue pair (QP). QP is the basic unit of RDMA communication. Usually, a process or thread consumes a QP for sending and receiving messages. A QP is composed of a sending queue SQ and a receiving queue RQ.
[0053] When the sender initiates a QP connection request to the receiver through SQ, the WQE buffer pool generates a WQE, sends it to the buffer pool through SQ, and then sends the QP connection request to the transport module for data transmission. At this time, the receiver receives the QP connection request through RQ, generates a WQE and sends it to the WQE buffer pool through RQ.
[0054] In one embodiment, before acquiring a plurality of tasks to be retransmitted, it includes: when packet loss or disorder is detected, storing metadata of the message with packet loss or disorder in an outstanding request table (Outstanding Request, ORT) to generate tasks to be retransmitted.
[0055] In network communications, message transmission is a common way of exchanging data, which can be in the form of text, pictures, audio, etc. Message parsing is the process of analyzing and processing the received messages according to certain rules.
[0056] A message consists of a message header and a message body. The message header is used to store metadata related to the message, such as source address, destination address, message length, message type, message encoding method, and other information. The message body is the actual data content transmitted. The structure of the message can vary depending on the specific communication protocol and application requirements.
[0057] The metadata of a message is used to record key information of the message that is not related to the transmitted data. The metadata of the message can be stored in the message header.
[0058] The metadata of a message may include a source address and a destination address. The source address is the sender address of the message, and the destination address represents the receiver address of the message, which is used to determine the path of data transmission.
[0059] The metadata of a message may also include the transport protocol, which is the protocol used by the message during transmission, such as TCP, UDP, etc., which affects the reliability and speed of data transmission.
[0060] The metadata of the message may also include the message length, which indicates the length of the entire message, including the message header and data. During the transmission process, a message may be split into multiple small blocks for transmission.
[0061] The metadata of the message includes the checksum, which is a data integrity verification technology used to detect whether errors occur during transmission. The checksum is calculated by the sender and attached to the message header. The receiver can verify the message header and data based on the checksum to determine whether there is packet loss or disorder.
[0062] In addition, metadata may also include timestamp, sequence number, priority, etc., which are not specifically limited in the present disclosure.
[0063] In one embodiment, multiple tasks to be retransmitted can be obtained by periodically scanning the unfinished request table. The scanning period can be determined according to the actual situation. For example, when packet loss or out-of-order packets are detected, the unfinished request table is scanned every 5 minutes to obtain multiple tasks to be retransmitted. It should be noted that the scanning period can be determined according to the actual situation. Periodically scanning the unfinished request table to obtain tasks to be retransmitted can effectively prevent the amount of retransmitted data from being too large, resulting in congestion in the data streams of different services, thereby improving service transmission efficiency.
[0064] In some embodiments, the number of metadata items of the message in the unfinished request table can also be obtained to determine the timing of obtaining multiple tasks to be retransmitted. For example, when the number of metadata items of the message in the unfinished request table reaches a preset number threshold, a task to be retransmitted is obtained once. The preset number threshold is not specifically limited in this disclosure.
[0065] S204: Determine the data volume of the corresponding retransmitted data packet according to the metadata of each task to be retransmitted.
[0066] One task to be retransmitted corresponds to one message to be retransmitted, and one message to be retransmitted includes a corresponding retransmitted data packet. The data volume of the retransmitted data packet of one task to be retransmitted can be determined according to the metadata of the task to be retransmitted.
[0067] The data amount of the retransmitted data packet may be represented by bytes, which is used to determine the size of the retransmitted data packet.
[0068] In one embodiment, S204 determines the data volume of the corresponding retransmitted data packet according to the metadata of each task to be retransmitted, including: based on the metadata of the task to be retransmitted, searching for the corresponding work queue element WQE in the cache pool, parsing the found WEQ, and obtaining the data volume of the retransmitted data packet.
[0069] S206. Determine a retransmission combination according to the data volume of the multiple retransmission data packets, wherein the retransmission combination includes at least two retransmission subgroups, each retransmission subgroup includes at least one retransmission data packet, and the data volume of the retransmission data packets in different retransmission subgroups meets a preset condition.
[0070] In one embodiment, the retransmission data packet with the largest data volume is taken as a retransmission subgroup. The data volume of the retransmission data packets in different retransmission subgroups in S206 may satisfy the preset condition including: the sum of the data volume of the retransmission data packets in each retransmission subgroup is less than or equal to the maximum data volume of the retransmission data packets.
[0071] For multiple retransmission data packets, they are divided into multiple retransmission subgroups according to the size of the data volume. For example, multiple retransmission data packets can be sorted from large to small or from small to large according to the data volume, and after the retransmission data packet with the largest data volume is divided into a retransmission subgroup, it is calculated whether the sum of the data volumes of the remaining retransmission data packets is greater than the maximum data volume of the above retransmission data packets, thereby realizing the grouping of the remaining retransmission data packets to obtain multiple retransmission subgroups.
[0072] In one embodiment, the number of retransmission data packets in each retransmission subgroup may be determined according to actual conditions, as long as the sum of the data volumes of the retransmission data packets in each retransmission subgroup does not exceed the maximum data volume of the retransmission data packets.
[0073] In some cases, the data volumes of the retransmitted data packets are relatively close. In this case, the retransmitted data packets may be respectively divided into corresponding retransmitted subgroups.
[0074] For the transmission of video, audio and other data, the data volume of the retransmission data packet is much larger than the data volume of text, pictures and other data. At this time, at least one retransmission subgroup may include one retransmission data packet, and other retransmission subgroups may include multiple retransmission data packets.
[0075] S208: Perform data retransmission on the retransmission data packets of at least two retransmission subgroups according to a preset rule.
[0076] In one embodiment, the preset rules can be pre-configured in the receiving RDMA function terminal. The preset rules can include performing data retransmission in the order of the data volume of the retransmitted data packets from small to large; the preset rules can also include performing data retransmission according to the priority of each retransmission subgroup, which is not specifically limited in the present disclosure.
[0077] In the disclosed embodiment, a plurality of tasks to be retransmitted are obtained, and metadata of the plurality of tasks to be retransmitted are stored in an unfinished request table; the data volume of the corresponding retransmitted data packet is determined according to the metadata of each task to be retransmitted; a retransmission combination is determined according to the data volume of the plurality of retransmitted data packets, the retransmission combination includes at least two retransmission subgroups, each retransmission subgroup includes at least one retransmission data packet, and the data volume of the retransmission data packets in different retransmission subgroups meets a preset condition; data retransmission is performed on the retransmission data packets of at least two retransmission subgroups according to preset rules, batch tasks to be retransmitted are obtained by scanning the unfinished request table, and different retransmission combinations are divided according to the size of the data packets, thereby solving the transmission problem of large and small packets, improving service quality, improving retransmission efficiency, and alleviating the adverse effects of retransmission waiting on congestion.
[0078] In one embodiment, the preset rule includes performing data retransmission in an ascending order of data volume.
[0079] Figure 3A flow chart of another method for retransmitting data via remote direct memory access according to an embodiment of the present disclosure is shown. Figure 2 Based on the embodiment, S208 is further refined into S2082 to define the execution rules of data retransmission. Figure 3 As shown, in one embodiment, the above-mentioned data retransmission is performed on the retransmission data packets of at least two retransmission subgroups according to the preset rules, including: S2082, for different retransmission subgroups, data retransmission is performed in the order of the total data amount of the retransmission data packets in the retransmission subgroup from small to large; for the same retransmission subgroup, data retransmission is performed in the order of the data amount of at least one retransmission data packet in the same retransmission subgroup from small to large, thereby solving the priority problem of large and small packets and improving service quality by setting the retransmission order of different retransmission subgroups and the retransmission order of retransmission data packets in each retransmission subgroup.
[0080] In one embodiment, the preset rule includes performing data retransmission according to the priority level of the retransmission data packet; wherein S208 performs data retransmission on the retransmission data packets of at least two retransmission subgroups according to the preset rule, including:
[0081] S402, allocating the same buffer space address to each retransmission subgroup, and writing the buffer space address into a combination multiplexing table;
[0082] S404: Arrange the priority level of each retransmitted data packet according to the sum of the data amounts of the retransmitted data packets in each retransmitted subgroup in the combined multiplexing table.
[0083] The combined multiplexing table is used to record the information of each retransmission subgroup, store the first address, and record the relevant information of each retransmission data packet in each retransmission subgroup. For example, the relevant information of each retransmission data packet includes but is not limited to the WQE ID and the size of the WQE, etc., the information of each retransmission subgroup includes but is not limited to the ID of the retransmission subgroup, etc., and the storage first address is used to record each WQE data packet in order from small to large in terms of total data volume.
[0084] The cache space address is used to indicate that after receiving the retransmitted data, it can be stored in the multiplexing space of the corresponding address.
[0085] In one embodiment, according to different retransmission subgroups, multiplexing space, namely the above-mentioned buffer space address, can be opened in the retransmission buffer for multiplexing of multiple retransmission subgroups. Opening up the multiplexing space includes creating, reading, writing and destroying the multiplexing space.
[0086] It should be noted that the multiplexing space may be a storage space opened for the retransmission data packet with the largest data volume, and other WQE retransmission subgroups may reuse the storage space.
[0087] Each scan of the ORS generates a series of retransmission subgroups, and the retransmission priority can be arranged according to the sum of the data volume of each retransmission data packet in each retransmission subgroup to realize the priority arrangement function. The retransmission priority can be sorted from small to large according to the retransmission multiplexing table, and the storage space can be reused according to the storage first address and WQE size.
[0088] In the disclosed embodiment, the same cache space address is allocated to each retransmission subgroup, and the cache space address is written into a combined multiplexing table; the priority level of each retransmission data packet is arranged according to the sum of the data amounts of the retransmission data packets in each retransmission subgroup in the combined multiplexing table, thereby realizing the transmission of the retransmission data packets from small to large, saving the usage of on-chip memory through cache multiplexing, improving the retransmission efficiency, effectively alleviating the adverse effects of retransmission waiting on congestion, and improving the retransmission efficiency.
[0089] Figure 5 A flow chart of a data retransmission method for remote direct memory access in an embodiment of the present disclosure is shown. Figure 5 As shown, in one embodiment, the above S208 performs data retransmission on the retransmission data packets of the at least two retransmission subgroups according to a preset rule, including:
[0090] S502, returning an acknowledgment character (Acknowledge Character, ACK) retransmission response to the sending end according to the priority level of each retransmitted data packet, so as to instruct the sending end to retransmit the data packet;
[0091] S504, receiving a data packet from the transmitting end, and writing the data packet into a retransmission buffer area corresponding to the buffer space address, so that the retransmission buffer area writes the retransmission data packet into the application data buffer;
[0092] S506: Send a data retransmission completion message to the sending end.
[0093] In data communication, ACK is a transmission control character sent from the receiving end to the sending end.
[0094] In one case, ACK indicates the receiving end's confirmation response. When packet loss occurs, the confirmation response is sent in advance, which is the same as normal packet reception, indicating that the sender's data is delayed to avoid multiple ACK retransmission waits in the native retransmission method. At the same time, it ensures that the ORS can obtain the tasks to be retransmitted in time during scanning, thereby improving the retransmission buffer reuse rate.
[0095] In one scenario, ACK is used for retransmission control at the sender, taking over and removing the multiple retransmission ACK waits of the native retransmission method. When a confirmation response is received or after an ACK wait, the receiver is instructed to send the next WQE data. The WQE after an ACK wait will be processed by the receiver as a retransmission data packet and actively notified to the sender.
[0096] In another case, ACK is used for the receiver to retransmit the response. The sender no longer retransmits the data packet by delaying and waiting multiple times. Instead, it needs to actively send a retransmission ACK to notify the sender. The ACK carries the index number of the corresponding WQE.
[0097] In one embodiment, the receiving end returns an ACK retransmission response to the sending end according to the priority level of each retransmission data packet to instruct the sending end to retransmit the data packet; the sending end receives the ACK retransmission response and retransmits the retransmission data packet. The receiving end receives the data packet from the sending end, writes the data packet into the retransmission buffer area corresponding to the buffer space address, the retransmission buffer area obtains the retransmission data, and writes the completed data into the application data buffer. After all the retransmission data are received, the receiving end sends a retransmission data completion message to the sending end.
[0098] In one embodiment, before sending a retransmission data completion message to the transmitter, the method further includes: releasing cache space in the retransmission cache area, updating the combination multiplexing table and the unfinished request table, thereby realizing data retransmission and improving the effectiveness and reliability of data retransmission.
[0099] In the disclosed embodiment, the receiving end replaces the original delayed retransmission method of the sending end with a retransmission acknowledgment, and solves the network performance degradation caused by concurrent retransmission through a planned and proactive retransmission trigger mechanism.
[0100] In order to deepen the understanding of the implementation process of the present disclosure, the following Figure 6 and Figure 7 Provide detailed explanation.
[0101] Figure 6 FIG. 2 is a schematic diagram showing a structure of an example of a data retransmission system for remote direct memory access in an embodiment of the present disclosure. Figure 6 As shown, a remote direct memory access data retransmission system in an embodiment of the present disclosure includes a CPU and a network card RNIC, the CPU is used for QP connection control, and information is exchanged between the CPU and the network card RNIC through PCI-e.
[0102] RNIC includes a direct memory access device (DMA Engine), a transport device (Transport), and a physical network card layer. The DMA Engine is used as a WQE buffer pool to store WQEs to be sent and received. The Transport is used to store the unfinished request table, as a retransmission buffer area, and a tracking queue. The physical network card layer is used as a data transmission layer between the receiving end and the sending end.
[0103] In the present disclosure, an outstanding request scanning module (Outstanding Request Scan, ORS module), a cache multiplex control module (Cache Multiplex Control, CMC module) and a data transmission control module (Data Transmission Control, DTC module) are added to the RNIC.
[0104] like Figure 7 As shown, the ORS module is used to change the native first-in-first-out retransmission execution scheme. In the case of a large number of packet losses and retransmissions, the unfinished request table is scanned periodically on time to obtain batch retransmission tasks and realize the batch scanning function; the corresponding WQE is searched in the WQE cache pool through the metadata in the unfinished request table, and the WQE is parsed to obtain the data volume of the retransmitted data packet and the WQE index number to realize the WQE parsing function; the ORS module is also used to divide the retransmission combination according to the data volume of the data packet to be retransmitted obtained from the unfinished request table, obtain multiple retransmission subgroups, and transmit the multiple retransmission subgroups to the CMC module to realize the ORT grouping function. In the above retransmission combination, different WQEs have different data volumes. The WQE with the largest data volume is divided into a retransmission subgroup, and the WQEs with medium and small data volumes are grouped as needed. They can be a single retransmission subgroup or mixed into a retransmission subgroup. It should be noted that the total data volume of the mixed retransmission subgroup does not exceed the data volume of the retransmission subgroup with the largest data volume.
[0105] The CMC module opens up multiplexing space in the retransmission buffer according to different retransmission subgroups, including the creation, reading, writing and destruction of the multiplexing space, to implement the retransmission scheduling function. Cache multiplexing means that storage space is only opened up for the retransmission subgroup with the largest data volume, and other WQE retransmission subgroups reuse the above storage space.
[0106] The CMC module records the address of the combined multiplexed space into the multiplexed combination table, which is used to store the retransmitted data in the multiplexed space of the corresponding address after receiving it, thus realizing the multiplexed combination table function. The structure of the multiplexed combination table is: split flag + storage first address + [N number of WQEs + (ID of WQE + amount of data of WQE) × N], where N is the number of tasks or data packets to be retransmitted, the ID of WQE can be the sequence number of WQE, the split flag is used to divide different retransmission subgroups, and (ID of WQE + amount of data of WQE) × N is used to record the order of each WQE data packet in ascending order according to the total data volume.
[0107] Each scan of ORS generates a group of retransmission subgroups. The CMC module arranges the retransmission priority levels according to the level of combination multiplexing to implement the priority arrangement function. The retransmission priority levels are sorted from small to large according to the multiplexing combination table, and the storage space is reused in the manner of "storage first address + WQE size".
[0108] The CMC module sends a retransmission response request to the DTC side through the DTC module notification interface to implement the DTC control function.
[0109] For the DTC module, when packet loss occurs, a confirmation response is sent in advance, which is the same as normal packet reception, indicating that the sender should delay sending data, avoiding multiple retransmission ACK waits in the native retransmission solution. At the same time, it ensures that the tasks to be retransmitted can be obtained in time during ORS scanning, thereby improving the retransmission buffer multiplexing rate and realizing the confirmation response of the receiving end.
[0110] The DTC module is used for retransmission acknowledgment. The sender no longer retransmits data packets through multiple delayed waiting retransmissions. The receiver needs to actively send a retransmission ACK to notify the sender. The ACK carries the index number of the corresponding WQE.
[0111] The DTC module is used for data retransmission control. It takes over and removes the multiple retransmission ACK waits of the native retransmission solution. When a confirmation response is received or after an ACK wait, the next WQE data is sent. After an ACK wait, the receiving end will process the WQE as a retransmission packet and actively notify the sending end to implement retransmission control on the sending end.
[0112] Figure 8 A flowchart showing an example of a data transmission method for remote direct memory access in an embodiment of the present disclosure is shown. Figure 8 As shown, the exemplary flow chart of the data transmission method disclosed in the present invention includes:
[0113] The sender initiates a request through SQ, generates a WQE based on the request, sends it to the WQE buffer pool through SQ, and then sends it to Transport for data transmission.
[0114] The receiving end receives the request through RQ, generates WQE according to the request, and sends it to the WQE buffer pool through RQ.
[0115] When the DTC module detects that packet loss or out-of-order packets occur and cause normal reception failure, the metadata of the WQE corresponding to the lost or out-of-order packets is stored in the ORT table.
[0116] The ORS module periodically scans the ORT table and reads the unfinished WQE metadata in batches.
[0117] According to the unfinished WQE metadata, the corresponding WQE is found in the WQE buffer pool, and the message is parsed to obtain the data volume of the retransmitted data packet of the WQE.
[0118] The ORS module extracts the information required for multiplexing and groups it by size to obtain multiple retransmission subgroups, and transmits the multiple retransmission subgroups to the CMC module.
[0119] The CMC module arranges the retransmission order of the WQE combination (multiple retransmission subgroups) and stores the arrangement result in the multiplexing combination table.
[0120] A multiplexing buffer area space is opened in the retransmission buffer according to the multiplexing combination table to store the retransmitted retransmission data.
[0121] The CMC module notifies the DTC module according to the retransmission priority in the retransmission combination.
[0122] The DTC module returns ACK retransmission responses to different QP connections in sequence according to their priorities.
[0123] The sender receives an ACK retransmission response and resends the data packet.
[0124] The DTC module receives the data and writes it into the retransmission buffer, updates the tracking queue, and ensures that all data reception is complete.
[0125] Delete the WQE metadata of the completed retransmission request in the ORT table.
[0126] The retransmission buffer obtains the retransmission data, writes the completed data into the application data buffer, releases the reused buffer space, and the WQE buffer pool writes the data into the application buffer according to the address stored in the WQE. After the transmission is completed, the receiving end is notified through the CQ.
[0127] In the present disclosure, the ORS module periodically scans the retransmission request table to obtain batch request tasks, and divides different retransmission combinations according to the size of the data packet and then retransmits them in order to solve the priority problem of large and small packets. The CMC module can save the use of on-chip memory, improve retransmission efficiency, and alleviate the adverse effects of retransmission waiting on congestion by means of cache multiplexing. The DTC module enables the receiving end to replace the original sending end delayed retransmission method with a retransmission response, and solves the network performance degradation caused by concurrent retransmission through a planned and active retransmission trigger mechanism.
[0128] Based on the same inventive concept, the disclosed embodiment also provides a remote direct memory access data retransmission device, such as the following embodiment. Since the principle of solving the problem in the device embodiment is similar to that in the above method embodiment, the implementation of the device embodiment can refer to the implementation of the above method embodiment, and the repeated parts will not be repeated.
[0129] Fig. 9 A schematic diagram of a computing power routing node in an embodiment of the present disclosure is shown. Fig. 9 As shown, the computing power routing node includes: a task acquisition module 910, an information determination module 920, a retransmission grouping module 930 and a data retransmission module 940.
[0130] The task acquisition module 910 is used to acquire multiple tasks to be retransmitted, wherein metadata of the multiple tasks to be retransmitted are stored in the uncompleted request table ORT;
[0131] An information determination module 920, configured to determine the data volume of the corresponding retransmitted data packet according to the metadata of each task to be retransmitted;
[0132] A retransmission grouping module 930 is configured to determine a retransmission combination according to the data volume of multiple retransmission data packets, wherein the retransmission combination includes at least two retransmission subgroups, each retransmission subgroup includes at least one retransmission data packet, and the data volume of the retransmission data packets in different retransmission subgroups meets a preset condition;
[0133] The data retransmission module 940 is configured to perform data retransmission on retransmission data packets of at least two retransmission subgroups according to a preset rule.
[0134] In one embodiment, the preset rules include performing data retransmission in an ascending order of data volume; the data retransmission module 940 is used to perform data retransmission for different retransmission subgroups in an ascending order of the total data volume of the retransmission data packets in the retransmission subgroup; for the same retransmission subgroup, perform data retransmission in an ascending order of the data volume of at least one retransmission data packet in the same retransmission subgroup.
[0135] In one embodiment, the preset rules include performing data retransmission according to the priority level of the retransmitted data packets; the data retransmission module 940 is used to allocate the same cache space address to each retransmission subgroup and write the cache space address into a combination multiplexing table; and arrange the priority level of each retransmitted data packet according to the sum of the data volume of the retransmitted data packets in each retransmission subgroup in the combination multiplexing table.
[0136] In one embodiment, the data retransmission module 940 is also used to return a confirmation character ACK retransmission response to the sending end according to the priority level of each retransmitted data packet to instruct the sending end to retransmit the data packet; receive the data packet from the sending end, write the data packet into the retransmission buffer area corresponding to the cache space address, so that the retransmission buffer area writes the retransmitted data packet into the application data cache; and send a retransmission data completion message to the sending end.
[0137] In one embodiment, the data retransmission module 940 is further configured to release the buffer space in the retransmission buffer area and update the combination multiplexing table and the ORT before sending a retransmission data completion message to the transmitting end.
[0138] In one embodiment, the device also includes a task generation module not shown in the accompanying drawings. The task generation module is used to store the metadata of the message with packet loss or disorder in the ORT before acquiring multiple tasks to be retransmitted when packet loss or disorder is detected to generate tasks to be retransmitted.
[0139] In one embodiment, the task acquisition module 910 is used to periodically scan the ORT to obtain multiple tasks to be retransmitted.
[0140] In one embodiment, the information determination module 920 is used to search for a corresponding work queue element WQE in the buffer pool based on the metadata of the task to be retransmitted, parse the found WEQ, and obtain the data volume of the retransmitted data packet.
[0141] In one embodiment, the retransmission grouping module 930 is used to group the retransmission data packet with the largest data volume as a retransmission subgroup, and the sum of the data volumes of the retransmission data packets in each retransmission subgroup is less than or equal to the maximum data volume of the retransmission data packets.
[0142] In the disclosed embodiment, a plurality of tasks to be retransmitted are obtained, and metadata of the plurality of tasks to be retransmitted are stored in an unfinished request table ORT; the data volume of the corresponding retransmitted data packet is determined according to the metadata of each task to be retransmitted; a retransmission combination is determined according to the data volume of the plurality of retransmitted data packets, the retransmission combination includes at least two retransmission subgroups, each retransmission subgroup includes at least one retransmission data packet, and the data volume of the retransmission data packets in different retransmission subgroups meets a preset condition; data retransmission is performed on the retransmission data packets of at least two retransmission subgroups according to preset rules, batch tasks to be retransmitted are obtained by scanning the ORT, and different retransmission combinations are divided according to the size of the data packets, thereby solving the transmission problem of large and small packets, improving service quality, improving retransmission efficiency, and alleviating the adverse effects of retransmission waiting on congestion.
[0143] Those skilled in the art will appreciate that various aspects of the present disclosure may be implemented as systems, methods or program products. Therefore, various aspects of the present disclosure may be specifically implemented in the following forms, namely: complete hardware implementation, complete software implementation (including firmware, microcode, etc.), or a combination of hardware and software, which may be collectively referred to herein as "circuits", "modules" or "systems".
[0144] Refer to the following Fig.10 The electronic device 1000 according to this embodiment of the present disclosure is described. Fig.10 The electronic device 1000 shown is merely an example and should not bring any limitation to the functions and scope of use of the embodiments of the present disclosure.
[0145] like Fig.10 As shown, the electronic device 1000 is in the form of a general computing device. The components of the electronic device 1000 may include but are not limited to: the at least one processing unit 1010, the at least one storage unit 1020, and a bus 1030 connecting different system components (including the storage unit 1020 and the processing unit 1010).
[0146] The storage unit stores program codes, which can be executed by the processing unit 1010, so that the processing unit 1010 executes the steps described in the above “exemplary method” section of this specification according to various exemplary embodiments of the present disclosure.
[0147] For example, the processing unit 1010 may execute the following steps: Figure 2 The method embodiment in the present invention comprises the following steps: obtaining a plurality of tasks to be retransmitted, wherein the metadata of the plurality of tasks to be retransmitted are stored in an uncompleted request table ORT; determining the data volume of the corresponding retransmitted data packet according to the metadata of each task to be retransmitted; determining a retransmission combination according to the data volume of the plurality of retransmitted data packets, wherein the retransmission combination comprises at least two retransmission subgroups, each retransmission subgroup comprises at least one retransmission data packet, and the data volume of the retransmission data packets in different retransmission subgroups meets a preset condition; and performing data retransmission on the retransmission data packets of at least two retransmission subgroups according to a preset rule.
[0148] The storage unit 1020 may include a readable medium in the form of a volatile storage unit, such as a random access storage unit (RAM) 10201 and / or a cache storage unit 10202 , and may further include a read-only storage unit (ROM) 10203 .
[0149] The storage unit 1020 may also include a program / utility 10204 having a set (at least one) of program modules 10205, such program modules 10205 including but not limited to: an operating system, one or more application programs, other program modules, and program data, each of which or some combination may include an implementation of a network environment.
[0150] Bus 1030 may represent one or more of several types of bus structures, including a memory unit bus or memory unit controller, a peripheral bus, an accelerated graphics port, a processing unit, or a local bus using any of a variety of bus architectures.
[0151] The electronic device 1000 may also communicate with one or more external devices 1040 (e.g., keyboards, pointing devices, Bluetooth devices, etc.), one or more devices that enable a user to interact with the electronic device 1000, and / or any device that enables the electronic device 1000 to communicate with one or more other computing devices (e.g., routers, modems, etc.). Such communication may be performed through an input / output (I / O) interface 1050. Furthermore, the electronic device 1000 may also communicate with one or more networks (e.g., a local area network (LAN), a wide area network (WAN), and / or a public network, such as the Internet) through a network adapter 1060. Fig.10As shown, the network adapter 1060 communicates with other modules of the electronic device 1000 via the bus 1030. It should be understood that, although not shown in the figure, other hardware and / or software modules can be used in conjunction with the electronic device 1000, including but not limited to: microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data backup storage systems.
[0152] Through the description of the above implementation, it is easy for those skilled in the art to understand that the example implementation described here can be implemented by software, or by software combined with necessary hardware. Therefore, the technical solution according to the implementation of the present disclosure can be embodied in the form of a software product, which can be stored in a non-volatile storage medium (which can be a CD-ROM, a USB flash drive, a mobile hard disk, etc.) or on a network, including several instructions to enable a computing device (which can be a personal computer, a server, a terminal device, or a network device, etc.) to execute the method according to the implementation of the present disclosure.
[0153] In an exemplary embodiment of the present disclosure, a computer-readable storage medium is also provided, which may be a readable signal medium or a readable storage medium. A program product capable of implementing the above method of the present disclosure is stored on the computer-readable storage medium. In some possible implementations, various aspects of the present disclosure may also be implemented in the form of a program product, which includes a program code, and when the program product is run on a network device, the program code is used to cause the network device to execute the steps according to various exemplary implementations of the present disclosure described in the above “Exemplary Method” section of this specification.
[0154] More specific examples of computer-readable storage media in the present disclosure may include, but are not limited to, an electrical connection having one or more conductors, a portable computer disk, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), optical fiber, a portable compact disk read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing.
[0155] In the present disclosure, a computer readable storage medium may include a data signal propagated in baseband or as part of a carrier wave, wherein a readable program code is carried. Such propagated data signals may take a variety of forms, including but not limited to electromagnetic signals, optical signals, or any suitable combination of the above. A readable signal medium may also be any readable medium other than a readable storage medium, which may send, propagate, or transmit a program for use by or in conjunction with an instruction execution system, apparatus, or device.
[0156] Alternatively, the program code contained on the computer-readable storage medium may be transmitted using any appropriate medium, including but not limited to wireless, wired, optical cable, RF, etc., or any suitable combination of the foregoing.
[0157] In a specific implementation, the program code for performing the operations of the present disclosure may be written in any combination of one or more programming languages, including object-oriented programming languages such as Java, C++, etc., and conventional procedural programming languages such as "C" or similar programming languages. The program code may be executed entirely on the user computing device, partially on the user device, as a separate software package, partially on the user computing device and partially on a remote computing device, or entirely on a remote computing device or server. In the case of a remote computing device, the remote computing device may be connected to the user computing device through any type of network, including a local area network (LAN) or a wide area network (WAN), or may be connected to an external computing device (e.g., using an Internet service provider to connect through the Internet).
[0158] It should be noted that, although several modules or units of the device for action execution are mentioned in the above detailed description, this division is not mandatory. In fact, according to the embodiments of the present disclosure, the features and functions of two or more modules or units described above can be embodied in one module or unit. On the contrary, the features and functions of one module or unit described above can be further divided into multiple modules or units to be embodied.
[0159] In addition, although the steps of the method in the present disclosure are described in a specific order in the drawings, this does not require or imply that the steps must be performed in this specific order, or that all the steps shown must be performed to achieve the desired results. Additionally or alternatively, some steps may be omitted, multiple steps may be combined into one step, and / or one step may be decomposed into multiple steps, etc.
[0160] Through the description of the above implementation, it is easy for those skilled in the art to understand that the example implementation described here can be implemented by software, or by software combined with necessary hardware. Therefore, the technical solution according to the implementation of the present disclosure can be embodied in the form of a software product, which can be stored in a non-volatile storage medium (which can be a CD-ROM, a USB flash drive, a mobile hard disk, etc.) or on a network, including several instructions to enable a computing device (which can be a personal computer, a server, a mobile terminal, or a network device, etc.) to execute the method according to the implementation of the present disclosure.
[0161] Those skilled in the art will readily appreciate other embodiments of the present disclosure after considering the specification and practicing the invention disclosed herein. The present disclosure is intended to cover any variations, uses or adaptations of the present disclosure, which follow the general principles of the present disclosure and include common knowledge or customary techniques in the art that are not disclosed in the present disclosure. The description and examples are intended to be exemplary only, and the true scope and spirit of the present disclosure are indicated by the appended claims.
Claims
1. A data retransmission method for remote direct memory access, characterized in that: include: Acquire multiple tasks to be retransmitted, wherein metadata of the multiple tasks to be retransmitted are stored in an uncompleted request table; Determine the data volume of the corresponding retransmitted data packet according to the metadata of each task to be retransmitted; Determine a retransmission combination according to the data amounts of multiple retransmission data packets, wherein the retransmission combination includes at least two retransmission subgroups, each retransmission subgroup includes at least one retransmission data packet, and the data amounts of the retransmission data packets in different retransmission subgroups meet a preset condition, and the retransmission data packet with the largest data amount is taken as a retransmission subgroup, wherein the preset condition is met including: the sum of the data amounts of the retransmission data packets in each retransmission subgroup is less than or equal to the maximum data amount of the retransmission data packets; Data retransmission is performed on the retransmission data packets of the at least two retransmission subgroups according to a preset rule.
2. The remote direct memory access data retransmission method according to claim 1, characterized in that: The preset rule includes executing data retransmission in the order of small to large data volume; The performing data retransmission on the retransmission data packets of the at least two retransmission subgroups according to a preset rule includes: For different retransmission subgroups, data retransmission is performed in the order of the total data volume of the retransmission data packets in the retransmission subgroup from small to large; For the same retransmission subgroup, data retransmission is performed in an ascending order of the data volume of at least one retransmission data packet in the same retransmission subgroup.
3. The remote direct memory access data retransmission method according to claim 1 or 2, characterized in that: The preset rules include performing data retransmission according to the priority level of the retransmitted data packets; The performing data retransmission on the retransmission data packets of the at least two retransmission subgroups according to a preset rule includes: Allocating the same buffer space address to each retransmission subgroup, and writing the buffer space address into a combination multiplexing table; The priority level of each retransmission data packet is arranged according to the sum of the data amounts of the retransmission data packets in each retransmission subgroup in the combined multiplexing table.
4. The remote direct memory access data retransmission method according to claim 3, characterized in that: The performing data retransmission on the retransmission data packets of the at least two retransmission subgroups according to a preset rule comprises: The receiving end returns an ACK retransmission response to the sending end according to the priority level of each retransmitted data packet to instruct the sending end to retransmit the data packet; The receiving end receives the data packet from the sending end, and writes the data packet into a retransmission buffer area corresponding to the cache space address, so that the retransmission buffer area writes the retransmission data packet into the application data cache; The receiving end sends a data retransmission completion message to the sending end.
5. The remote direct memory access data retransmission method according to claim 4, characterized in that: Before the receiving end sends a retransmission data completion message to the sending end, the method further includes: The buffer space of the retransmission buffer area is released, and the combination multiplexing table and the outstanding request table are updated.
6. The remote direct memory access data retransmission method according to claim 1, characterized in that: Before obtaining the plurality of tasks to be retransmitted, the following steps are included: When packet loss or disorder is detected, metadata of the message with packet loss or disorder is stored in the uncompleted request table to generate a task to be retransmitted.
7. The remote direct memory access data retransmission method according to claim 1, characterized in that: The obtaining of multiple tasks to be retransmitted includes: The unfinished request table is scanned periodically to obtain the plurality of tasks to be retransmitted.
8. The remote direct memory access data retransmission method according to claim 1, characterized in that: The step of determining the data volume of the corresponding retransmitted data packet according to the metadata of each task to be retransmitted includes: Based on the metadata of the task to be retransmitted, the corresponding work queue element WQE is searched in the buffer pool, the found WQE is parsed, and the data volume of the retransmitted data packet is obtained.
9. A data retransmission device for remote direct memory access, characterized in that: include: A task acquisition module, used to acquire multiple tasks to be retransmitted, wherein metadata of the multiple tasks to be retransmitted are stored in an uncompleted request table; An information determination module, used to determine the data volume of the corresponding retransmitted data packet according to the metadata of each task to be retransmitted; a retransmission grouping module, configured to determine a retransmission combination according to the data volume of multiple retransmission data packets, wherein the retransmission combination includes at least two retransmission subgroups, each retransmission subgroup includes at least one retransmission data packet, and the data volume of the retransmission data packets in different retransmission subgroups meets a preset condition, and the retransmission data packet with the largest data volume is taken as a retransmission subgroup, wherein the preset condition is met, including: the sum of the data volume of the retransmission data packets in each retransmission subgroup is less than or equal to the maximum data volume of the retransmission data packets; The data retransmission module is used to perform data retransmission on the retransmission data packets of the at least two retransmission subgroups according to a preset rule.
10. An electronic device, characterized in that: include: processor; as well as A memory, configured to store executable instructions of the processor; The processor is configured to execute the remote direct memory access data retransmission method according to any one of claims 1 to 8 by executing the executable instructions.
11. A computer-readable storage medium having a computer program stored thereon, characterized in that: When the computer program is executed by a processor, the remote direct memory access data retransmission method according to any one of claims 1 to 8 is implemented.
Citation Information
Patent Citations
Data transmission and retransmission control method and system, storage medium and electronic equipment
CN113572582A
Out-of-order recombination and accurate retransmission request method, system and terminal for large packet data
CN114817082A
Data retransmission method and terminal for remote direct memory access
CN116455524A
Selective retransmission of packets
EP4002734A1