Data transmission method, device and computer program product

By retransmitting and removing high-delay paths when the data packet is not received by the receiving end, the problems of link load imbalance and increased delay in traditional load balancing technology are solved, and the system throughput and data transmission efficiency are improved.

CN120567778APending Publication Date: 2025-08-29ZTE CORP
View PDF 0 Cites 1 Cited by

Patent Information

Application Number
CN202510870731.X
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2025-06-26
Publication Date
2025-08-29

AI Technical Summary

Technical Problem

Traditional load balancing technology cannot effectively utilize multipath resources, resulting in unbalanced link load, increasing congestion and delay. In addition, common packet spraying technology directly retransmission and occupying network bandwidth resources after detecting packet loss, reducing system throughput.

Method used

When the receiving end does not receive the target data packet with the expected serial number, a notification is sent to retransmit the data packet, and after repeated reception of the data packet, the data forwarding device is notified to remove the high-delay path, reducing the retransmission request by removing the high-delay path and optimizing the data transmission path.

Benefits of technology

By reducing the retransmission requests from the receiver to the sending end, the system's throughput is improved, and the reliability and efficiency of data transmission are ensured.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120567778A_ABST
    Figure CN120567778A_ABST
Patent Text Reader

Abstract

The invention discloses a data transmission method, device and equipment and a storage medium, and relates to the technical field of communication, and the method comprises the steps: transmitting a first notification to a transmitting end under the condition that a target data packet with an expected serial number is not received, so as to instruct the transmitting end to retransmit the target data packet; and under the condition that the target data packet is repeatedly received, sending a second notification to data forwarding equipment to indicate the data forwarding equipment to remove a target transmission path associated with the target data packet. According to the method and the device, the condition that the receiving end requests data retransmission from the sending end is effectively reduced by removing a high-delay transmission path, so that the throughput rate of the system is improved.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present application relates to the field of communication technology, and in particular to a data transmission method, device, and computer program product. Background Art

[0002] In modern data center networks, where large flows (flows with large data volumes and long durations) and small flows (flows with small data volumes and short durations) coexist, traditional load balancing technologies (such as ECMP) are unable to utilize multipath resources for transmission, resulting in unbalanced link loads, which in turn causes congestion and increased latency.

[0003] In order to solve the above problems, packet spraying technology came into being. Packet spraying is a packet-level load balancing strategy that can split the data stream into multiple data packets and distribute them to multiple paths for transmission. Since the data packets after packet spraying are forwarded to the receiving end from multiple paths, there are delay differences between multiple transmission paths, resulting in data packets with large sequence numbers arriving at the receiving end first through the path with short delay, while data packets with small sequence numbers arrive at the receiving end after passing the path with longer delay. At this time, the data packets with large sequence numbers need to be cached in the receiving end to wait for the data packets with small sequence numbers. However, when the cache space exceeds the cache upper limit, the subsequent data packets received by the receiving end will be discarded. The common packet spraying technology will directly notify the sender to retransmit the data packet after detecting packet loss, without taking into account the situation where packet loss is caused by the delay difference of multiple paths. Data retransmission will occupy a large amount of network bandwidth resources, thereby reducing the system throughput. Summary of the Invention

[0004] The main purpose of this application is to provide a data transmission method, device and computer program product, aiming to reduce the situation where the receiving end requests data retransmission from the sending end, thereby improving the system throughput.

[0005] To achieve the above objectives, the present application proposes a data transmission method, which is applied to a receiving end and includes:

[0006] When the target data packet with the expected sequence number is not received, sending a first notification to the sending end to instruct the sending end to retransmit the target data packet;

[0007] In the case that the target data packet is received repeatedly, a second notification is sent to the data forwarding device to instruct the data forwarding device to remove the target transmission path associated with the target data packet.

[0008] In one embodiment, the second notification is a path removal notification message; and sending the second notification to the data forwarding device includes:

[0009] Generate the path removal notification message according to a preset first message type, a flow identifier in the target data packet, and an entropy value; wherein the first message type is used to identify that the notification message is a message for performing a path removal operation, the flow identifier is used to identify the data flow to which the target data packet belongs; and the entropy value is used by the data forwarding device to determine the target transmission path;

[0010] The path removal notification message is sent to the data forwarding device.

[0011] In one embodiment, after sending the first notification to the sending end, the method further includes:

[0012] If the target data packet is not received within the preset timing time, a third notification is sent to the sending end to instruct the sending end to update the entropy value of the target data packet for data retransmission.

[0013] In one embodiment, the third notification is an entropy value change notification message;

[0014] The sending of the third notification to the sending end includes:

[0015] Generate the entropy value change notification message according to a preset second message type, the flow identifier and the expected sequence number of the target data packet; wherein the second message type is used to identify that the notification message is a message for changing the entropy value in the target data packet, and the flow identifier is used to identify the data flow to which the target data packet belongs;

[0016] The entropy value change notification message is sent to the sending end.

[0017] In one embodiment, when the target data packet with the expected sequence number is not received, sending the first notification to the sending end includes:

[0018] Determining a cache occupied space associated with a flow identifier in the target data packet;

[0019] When the target data packet with the expected sequence number is not received and the cache occupied space exceeds a preset cache threshold, the first notification is sent to the sending end.

[0020] In one embodiment, it further includes:

[0021] When a target data packet with an expected sequence number is received, the target data packet is reported to a preset application layer, and the expected sequence number is updated.

[0022] The present application also proposes a data transmission method, applied to a data forwarding device, the method comprising:

[0023] receiving a second notification sent by a receiving end, wherein the second notification is sent by the receiving end when the target data packet is repeatedly received after the receiving end notifies the sending end to retransmit the target data packet; the notifying the sending end to retransmit the target data packet is an operation performed by the receiving end when the target data packet with an expected sequence number is not received;

[0024] According to the second notification, the target transmission path associated with the target data packet is removed.

[0025] In one embodiment, the second notification is a path removal notification message; and removing the target transmission path associated with the target data packet according to the second notification includes:

[0026] Parsing the path removal notification message to obtain a first target message type, a flow identifier, and an entropy value;

[0027] determining, when the first target message type is a preset first message type, a total number of paths of all transmission paths associated with the flow identifier, wherein the first message type is used to identify that the notification message is a message for performing a path removal operation, and the flow identifier is used to identify a data flow to which the target data packet belongs;

[0028] Determining the target transmission path according to the entropy value and the total number of paths;

[0029] Remove the target transmission path.

[0030] The present application also proposes a data transmission method, applied to a sending end, the method comprising:

[0031] receiving a first notification sent by a receiving end when a target data packet with an expected sequence number is not received;

[0032] According to the first notification, the target data packet is retransmitted, so that when the receiving end repeatedly receives the target data packet, it sends a second notification to the data forwarding device to instruct the data forwarding device to remove the target transmission path associated with the target data packet.

[0033] In one embodiment, after retransmitting the target data packet according to the first notification, the method further includes:

[0034] receiving a third notification sent by the receiving end, wherein the third notification is sent by the receiving end after notifying the sending end to retransmit the target data packet and the receiving end does not receive the target data packet within a preset timer; notifying the sending end to retransmit the target data packet is an operation performed by the receiving end when the target data packet with an expected sequence number is not received;

[0035] According to the third notification, the entropy value in the target data packet is updated to retransmit the target data packet with the updated entropy value.

[0036] In one embodiment, the third notification is an entropy value change notification message; and updating the entropy value in the target data packet according to the third notification includes:

[0037] Parsing the entropy value change notification message to obtain a second target message type, a flow identifier, and an expected sequence number;

[0038] In a case where the second target message type is a preset second message type, determining a target data packet according to the flow identifier and the expected sequence number, wherein the second message type is used to identify that the notification message is a message that changes the entropy value in the target data packet;

[0039] Update the entropy value in the target data packet.

[0040] In addition, to achieve the above-mentioned purpose, the present application also proposes an electronic device, which includes: a memory, a processor, and a computer program stored on the memory and executable on the processor, wherein the computer program is configured to implement the steps of the data transmission method described above.

[0041] In addition, to achieve the above-mentioned purpose, the present application also proposes a storage medium, which is a computer-readable storage medium. A computer program is stored on the storage medium, and when the computer program is executed by the processor, the steps of the data transmission method described above are implemented.

[0042] In addition, to achieve the above-mentioned purpose, the present application also provides a computer program product, which includes a computer program, and when the computer program is executed by a processor, it implements the steps of the data transmission method described above.

[0043] The present application provides a data transmission method, device and computer program product, including: when a target data packet with an expected sequence number is not received, a first notification is sent to a sending end to instruct the sending end to retransmit the target data packet; when the target data packet is received repeatedly, a second notification is sent to a data forwarding device to instruct the data forwarding device to remove the target transmission path associated with the target data packet. The present application notifies the sending end to retransmit the target data packet when the target data packet with an expected sequence number is not received. Furthermore, when the target data packet is received repeatedly, it is explained that the repeated reception of the data packet is caused by the delay difference of the transmission path, and the data forwarding device is notified to remove the target transmission path associated with the target data packet, and the remaining transmission paths are subsequently used for data transmission. By removing the transmission path with high delay, the situation where the receiving end requests the sending end to retransmit data is effectively reduced, thereby improving the throughput of the system. BRIEF DESCRIPTION OF THE DRAWINGS

[0044] The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate embodiments consistent with the present application and, together with the description, serve to explain the principles of the present application.

[0045] In order to more clearly illustrate the embodiments of the present application or the technical solutions in the prior art, the following briefly introduces the drawings required for use in the embodiments or the description of the prior art. Obviously, for ordinary technicians in this field, other drawings can be obtained based on these drawings without any creative work.

[0046] Figure 1 A diagram showing the data transmission principle of the packet spraying technology provided in one embodiment of the present application;

[0047] Figure 2 A flowchart of the first embodiment of the data transmission method of the present application is provided;

[0048] Figure 3 A flowchart of the second embodiment of the data transmission method of the present application is provided;

[0049] Figure 4 This is one of the example diagrams of the message format of the path removal notification message provided in one embodiment of the present application;

[0050] Figure 5 Figure 2 is an example of the message format of a path removal notification message provided in an embodiment of the present application;

[0051] Figure 6 Figure 3 is an example of the message format of a path removal notification message provided in one embodiment of the present application;

[0052] Figure 7A flowchart of the third embodiment of the data transmission method of the present application is provided;

[0053] Figure 8 A flowchart of the fourth embodiment of the data transmission method of the present application is provided;

[0054] Figure 9 This is one of the example diagrams of the message format of the entropy value change notification message provided in one embodiment of the present application;

[0055] Figure 10 Figure 2 is an example of the message format of the entropy value change notification message provided in one embodiment of the present application;

[0056] Figure 11 Figure 3 is an example of the message format of the entropy value change notification message provided in one embodiment of the present application;

[0057] Figure 12 A flowchart of the fifth embodiment of the data transmission method of the present application is provided;

[0058] Figure 13 A flowchart of the sixth embodiment of the data transmission method of the present application is provided;

[0059] Figure 14 A flowchart of the seventh embodiment of the data transmission method of the present application is provided;

[0060] Figure 15 A flowchart of the eighth embodiment of the data transmission method of the present application is provided;

[0061] Figure 16 A flowchart of a ninth embodiment of the data transmission method of the present application is provided;

[0062] Figure 17 A flowchart of the tenth embodiment of the data transmission method of the present application is provided;

[0063] Figure 18 A network diagram of removing a transmission path provided in an embodiment of the present application;

[0064] Figure 19 A schematic diagram of a network for updating entropy values ​​according to an embodiment of the present application;

[0065] Figure 20 A communication interaction diagram for data transmission provided in an embodiment of the present application;

[0066] Figure 21 This is a schematic diagram of the module structure of the receiving end of an embodiment of the present application;

[0067] Figure 22 This is a schematic diagram of the module structure of the data forwarding device according to an embodiment of the present application;

[0068] Figure 23 This is a schematic diagram of the module structure of the transmitting end of an embodiment of the present application;

[0069] Figure 24 Schematic diagram of the device structure of the hardware operating environment involved in the data transmission method in the embodiment of the present application.

[0070] The purpose, features and advantages of this application will be further explained in conjunction with the embodiments and with reference to the accompanying drawings. DETAILED DESCRIPTION

[0071] It should be understood that the specific embodiments described herein are merely used to explain the technical solutions of the present application and are not intended to limit the present application.

[0072] In order to better understand the technical solution of the present application, a detailed description will be given below in conjunction with the accompanying drawings and specific implementation methods.

[0073] It should be noted that the execution subject of this embodiment may be a computing service device with data processing, network communication, and program execution functions, such as a tablet computer, personal computer, mobile phone, etc., or an electronic device, big data service platform, data transmission system, etc. that can implement the above functions. The data transmission system is used as an example to illustrate this embodiment and the following embodiments.

[0074] The data transmission principle of PacketSpraying technology can be referred to Figure 1 , Figure 1 The data transmission principle diagram of the packet spraying technology provided in one embodiment of the present application is as follows. Specifically, the implementation of the packet spraying technology requires the joint implementation of the sending end, the source spraying point (data forwarding device), and the receiving end. The data forwarding device can be a switch, router, or other device. The data transmission process is as follows: at the sending end, the same data stream is divided into multiple data packets, each corresponding to a different entropy value. The sending end encapsulates information such as the flow identifier and the entropy value into the data packet. The flow identifier is used to identify the data stream to which the data packet belongs, and then sends the data packet to the data forwarding device; the data forwarding device queries the routing table based on the flow identifier and destination address in the data packet to obtain the total number of paths associated with the flow identifier, and then performs a hash calculation on the total number of paths and the entropy value in the data packet to determine the transmission path of the data packet. For example, if the total number of paths is N, the entropy value in the data packet is hashed using the calculation formula: hash (hash value) = entropy (entropy value) % N (total number of paths). Based on the calculation result, the corresponding transmission path is selected from the N paths. Further, the data forwarding device uses the transmission path to send the data packet to the receiving end. The receiving end caches and sorts each received data packet, and the sorted data packets are sent to the application layer.

[0075] Based on this, the embodiment of the present application provides a data transmission method, referring to Figure 2 , Figure 2 This is a flowchart of the first embodiment of the data transmission method of the present application. In this embodiment, the data transmission method is applied to the receiving end, including steps S11 to S12:

[0076] Step S11, when the target data packet with the expected sequence number is not received, sending a first notification to the sending end to instruct the sending end to retransmit the target data packet;

[0077] It should be noted that the receiving end allocates a corresponding subqueue buffer space for each data flow. This buffer space is used to cache the packets associated with the data flow. After all packets for a data flow are received, the buffer space for that data flow is reclaimed to cache packets for other data flows.

[0078] It should be noted that the expected sequence number represents the sequence number corresponding to the data packet currently expected to be received, wherein the sequence number is the identity tag of the data packet. In one embodiment, the sequence numbers of each data packet of the same data stream are configured in a certain order. For example, the sequence numbers of the data packets increase in the order of 0, 1, 2...

[0079] It should be noted that the first notification may be a NACK message. The NACK mechanism is a negative acknowledgment mechanism in which the receiving end sends a NACK message to notify the sending end that certain data packets have not been received and need to be retransmitted. In other embodiments, the first notification may also be a pre-set notification message used to notify the sending end to retransmit the target data packet.

[0080] In one embodiment, if a target data packet with an expected sequence number is not received, the receiving end preliminarily determines that the target data packet has been lost and then generates a first notification based on information such as a flow identifier and the expected sequence number, where the flow identifier is used to identify the data stream to which the target data packet belongs. The first notification is then sent to the sending end for parsing the first notification and determining the target data packet based on the parsed flow identifier and expected sequence number. The target data packet is then sent to a data forwarding device for the data forwarding device to determine a transmission path for the target data packet based on the flow identifier and entropy value in the target data packet, and then forward the target data packet to the receiving end according to the transmission path.

[0081] In one embodiment, each data stream is assigned a corresponding cache threshold, which can be a specific cache capacity size or a proportion of the cache space. The cache thresholds of different data streams can be set to be the same, or they can be set to be different according to specific needs. When the cache occupied space of the receiving end exceeds the preset cache threshold, in order to prevent cache overflow, the receiving end will discard the remaining data packets that are not the target data packets received subsequently. Therefore, monitoring the cache occupied space is also crucial for determining whether the data packet needs to be retransmitted. Specifically, the cache occupied space associated with the flow identifier in the target data packet is determined, and then the cache occupied space is compared with the preset cache threshold; when the target data packet with the expected sequence number is not received and the cache occupied space exceeds the preset cache threshold, it is preliminarily determined that the target data packet has been lost, and a first notification is sent to the sending end to notify the sending end to retransmit the target data packet, thereby realizing timely notification of the sending end to retransmit the data packet when the cache space is insufficient, thereby ensuring reliable data transmission.

[0082] In other embodiments, a time threshold may be set in conjunction with the historical transmission time of each data stream. Optionally, the time threshold may be determined based on the average transmission time, the maximum transmission time, or other statistical indicators. In one embodiment, the timer may begin at the time the transmitting end sends the data packet. In another embodiment, the timer may begin at the time the data forwarding device begins multipath forwarding the data packet. In other embodiments, the timer may begin at the time the receiving end receives other data packets in the data stream to which the target data packet belongs. Specifically, if the timing exceeds the time threshold and the target data packet with the expected sequence number has not yet been received, a first notification is sent to the transmitting end to notify the transmitting end to retransmit the target data packet.

[0083] Step S12: When the target data packet is received repeatedly, a second notification is sent to the data forwarding device to instruct the data forwarding device to remove the target transmission path associated with the target data packet.

[0084] It should be noted that the second notification is a pre-set notification message used to notify the data forwarding device to remove the target transmission path associated with the target data packet. In one embodiment, the second notification also includes information such as the flow identifier and entropy value of the target data packet. The flow identifier is used to identify the data stream to which the target data packet belongs; the entropy value is used by the data forwarding device to determine the target transmission path. In addition, in order to enable the data forwarding device to identify that the notification message is a message for performing a path removal operation, a preset message type is also encapsulated in the second notification. This message type is used to identify that the notification message is a message for performing a path removal operation.

[0085] It should be noted that because the receiving end notifies the sending end to retransmit the target data packet, the receiving end may receive the target data packet twice. In one embodiment, if the receiving end receives the target data packet with the expected sequence number after a preset time period, the received target data packet may be a retransmitted data packet or a data packet that arrived at the receiving end later due to large multipath delay differences.

[0086] If the receiving end receives the target data packet with the expected sequence number again later, it means that the target data packet received previously was the data packet that arrived at the receiving end later during the first transmission, and the target data packet received for the second time was the data packet received after retransmission, which proves that the delay of the transmission path associated with the target data is greater than the delay of other transmission paths.

[0087] To reduce the number of cases where the receiving end requests data retransmission from the sending end, in this embodiment, high-latency transmission paths can be removed. Specifically, when a target data packet is repeatedly received, a second notification is generated based on information such as the flow identifier and entropy value in the target data packet, and then the second notification is sent to the data forwarding device. After receiving the second notification, the data forwarding device determines the total number of paths of all transmission paths associated with the flow identifier, and then determines the target transmission path associated with the target data packet based on the entropy value and the total number of paths. Further, the target transmission path is removed, and the total number of paths of all transmission paths associated with the flow identifier is reduced by 1.

[0088] This embodiment notifies the sender to retransmit the target data packet if the target data packet with the expected sequence number is not received. Furthermore, if the target data packet is received repeatedly, this indicates that the duplicate reception is due to latency differences in the transmission path. The data forwarding device is then notified to remove the target transmission path associated with the target data packet, and subsequently uses the remaining transmission paths for data transmission. By removing high-latency transmission paths, the number of requests for data retransmission from the sender by the receiver is effectively reduced, thereby improving system throughput.

[0089] In one possible embodiment, referring to Figure 3 , Figure 3 This is a flow chart of Embodiment 2 of the data transmission method of the present application, wherein the second notification is a path removal notification message; sending the second notification to the data forwarding device includes:

[0090] Step S21, generating the path removal notification message according to the preset first message type, the flow identifier and the entropy value in the target data packet;

[0091] Step S22: Send the path removal notification message to the data forwarding device.

[0092] It should be noted that the first message type is used to identify that the notification message is a message for performing a path removal operation, the flow identifier is used to identify the data flow to which the target data packet belongs; and the entropy value is used by the data forwarding device to determine the target transmission path.

[0093] It should be noted that the path removal notification message can be encapsulated in a RoCEv2 control message, a UEC control message, or a RoCEv2 EACK (exclude-ACK) message.

[0094] Optionally, the path removal notification message includes at least the following fields:

[0095] Type: The first message type, used to identify the type of notification message.

[0096] Entropy: Entropy value, used to identify the mapping transmission path.

[0097] streamId: Stream identifier, used to identify the data stream to which the target data packet belongs. Optionally, the stream identifier can be determined by combining several other fields, such as the quintuple of an IP packet or the QP pair (queue pair) of RoCEv2 (RDMA over Converged Ethernet v2). The QP pair is used to identify a RoCEv2 packet stream.

[0098] In a specific example, referring to Figure 4 , Figure 4 This is one of the example diagrams of the message format of the path removal notification message provided in one embodiment of the present application. The message format of the path removal notification message based on the RoCEv2 control message includes the following fields:

[0099] Ethernet Header: Ethernet packet header, including source MAC address and destination MAC address.

[0100] IP Header: IP packet header, including source IP address (source IP) and destination IP address (destination IP).

[0101] UDP Header: UDP packet header, including the source port number and destination port number.

[0102] IB Transport Header: The header field of the InfiniBand transport layer, containing key information.

[0103] ICRC and FCS: correspond to redundancy check and frame check respectively.

[0104] The following is a detailed explanation of the InfiniBand Base Transport Header (BTH) fields:

[0105] BTH is part of the InfiniBand transport layer header and is used to describe control information for packet transmission. Its key fields include:

[0106] Opcode: This is used to specify a RoCE control message. Opcode uses a reserved value, with bits 7-5 set to 110-111 and bits 4-0 set to 00000-11111. For example, you can select Opcode = 11000000 (binary) = 192 (decimal) to identify a path removal notification message. When the path removal notification message passes through a data forwarding device, the device truncates the notification message based on OpCode = 192 and the streamId stream identifier, and then parses the entropy value in the target data packet.

[0107] Destination QP: Destination QP number (Queue Pair Number), similar to the TCP port number, represents the destination of the connection.

[0108] Packet Sequence Number (PSN): The sequence number of the data packet.

[0109] Partition Key: A partition key can be used to divide an RDMA network into multiple logical partitions. It should be noted that in RoCEv2, RDMA technology is transmitted over Ethernet and uses the UDP protocol to encapsulate RDMA packets.

[0110] SE (Solicited Event): Solicited event flag. For example, when set to 1, it means that the receiver needs to send a response event after processing the message.

[0111] IE (Immediate Event): Immediate event flag. When set to 1, it indicates that the message needs to be processed immediately. It is usually used for high-priority control messages.

[0112] Tver (Transport Version): Transport version number. It is used to identify the transport protocol version used, ensuring that the sender and receiver use the same protocol version.

[0113] F (Fence): Fence flag. Used for memory access operations. When set to 1, it means that after the operation is completed, subsequent memory access operations cannot begin until the current operation is completed.

[0114] B (Bounce): Bounce flag. Used for memory access operations. When set to 1, it means that after the operation is completed, subsequent memory access operations can begin, but need to wait for the current operation to complete.

[0115] Reserved: Reserved fields. These fields are not used in the current protocol version and are reserved for future extensions.

[0116] A (Acknowledge): Acknowledgement flag. When set to 1, it indicates that the message requires the receiver to send an acknowledgment response (ACK).

[0117] Pad: Indicates how many extra bytes are added to the InfiniBand Payload.

[0118] The following is a detailed explanation of the fields in UDP (User Datagram Protocol):

[0119] Source port: source port.

[0120] Destination port: Destination port.

[0121] UDP Length: The length of the entire UDP packet, including the UDP header and data.

[0122] Checksum: This field is used to detect errors in UDP packet transmission. The checksum covers the UDP header, data, and pseudo header.

[0123] In addition, the stream identifier StreamId is determined according to the source IP (source IP address), destination IP (destination IP address), and QP triplet in the message.

[0124] In a specific example, referring to Figure 5 , Figure 5 FIG2 is an example of the message format of a path removal notification message provided in an embodiment of the present application. The message format of the path removal notification message based on the RoCEv2 ACK message includes the following fields:

[0125] Opcode: Specifies the RoCE ACK message, OpCode = 10001. The Reserved field after the B field in BTH is used as the Type field. When Reserved = 1, it indicates that the notification message is a path removal notification message.

[0126] It should be noted that the message format of the RoCEv2-based ACK message contains the same fields as the message format of the above-mentioned RoCEv2-based control message, and the meanings of the fields are basically the same, which will not be repeated here.

[0127] In addition, in the message format of the RoCEv2-based ACK message, BTH is followed by the AETH (ACK EXTENDED TRANSPORT HEADER) part, where MSN (Message Sequence Number) is the message sequence number that identifies the sequence number of the most recently completed message of the responder.

[0128] Syndrome: The Syndrome field indicates the type of ACK or NAK and its cause. It provides detailed information about the ACK or NAK, such as whether it was received successfully, whether an error occurred, and the type of error.

[0129] In addition, the stream identifier StreamId is determined according to the source IP (source IP address), destination IP (destination IP address), and QP triplet in the message.

[0130] In a specific example, referring to Figure 6 , Figure 6 FIG3 is an example of the message format of the path removal notification message provided in an embodiment of the present application. The message format of the path removal notification message based on the UEC control message includes the following fields:

[0131] Ethernet Header: Ethernet packet header, including source MAC address and destination MAC address.

[0132] IP Header: IP packet header, including source IP address (source IP) and destination IP address (destination IP).

[0133] SES (Session Extension Segment): Session extension segment, used to extend session information.

[0134] ICV (Integrity Check Value): Integrity check value, used to verify the integrity and security of the data packet.

[0135] FCS (Frame Check Sequence): Frame check sequence, used to detect errors in data packets during transmission.

[0136] UET PDS (UE Transport Packet Data Segment): It is a key component of the UEC (Unified Ethernet Communication) protocol and is used to define the transmission format and mode of data packets.

[0137] The following is an explanation of each field in the PDS Header:

[0138] Entropy: The entropy value of the target data packet.

[0139] Reserved: Reserved field for future expansion.

[0140] TYPE: identifies the type of data packet. For example, if it is a UEC control message, Type = 11.

[0141] CTL_TYPE: Type of control message.

[0142] FLAGS: Flag bits used to indicate specific attributes of the data packet.

[0143] PSN (Packet Sequence Number): The sequence number of a data packet, which can be used to detect the order and loss of data packets.

[0144] SPDCID (Source Packet Data Context ID): Context identifier of the source packet.

[0145] DPDCID (Destination Packet Data Context ID): Destination packet context identifier.

[0146] Payload: The payload of the data packet, including the actual data transmitted.

[0147] In addition, optionally, the stream identifier StreamId is determined according to the source IP address, destination IP address, and PDCID tuple in the message.

[0148] In this embodiment, a path removal notification message is encapsulated according to a corresponding message format based on a preset first message type, a flow identifier in a target data packet, and an entropy value. It should be noted that the source port in the target data packet is the port of the transmitting end, and the destination port in the target data packet is the port of the receiving end. When encapsulating the path removal notification message, the source port and destination port in the received target data packet are swapped. That is, the source port in the target data packet is used as the destination port of the path removal notification message, and the destination port in the target data packet is used as the source port of the path removal notification message. The entropy value is also encapsulated into the destination port of the path removal notification message. Furthermore, the path removal notification message is sent to a data forwarding device.

[0149] In this embodiment, the data forwarding device intercepts and processes the path removal notification message based on the message type and flow identifier. Specifically, when the returned path removal notification message passes through the data forwarding device, the data forwarding device parses the path removal notification message. If it is determined that the notification message is a message for performing a path removal operation, the notification message is truncated, that is, there is no need to send the path removal notification message to the sending end. Furthermore, based on the total number of paths of all transmission paths associated with the entropy value and the flow identifier, a hash value is calculated, and then based on the hash value, the target transmission path is determined, thereby removing the target transmission path. The calculation formula is as follows: hash = Entropy% N, Entropy represents the entropy value; N represents the total number of paths, and hash represents the hash value. For example, the transmission paths are path1, path2, and path3 respectively; the calculated hash value is 2; then the path 2 is removed, and the subsequent calculation formula becomes: hash = Entropy% (N-1).

[0150] After repeatedly receiving the target data packet, this embodiment generates a path removal notification message based on the first message type, the flow identifier and the entropy value in the target data packet and sends it to the data forwarding device to notify the data forwarding device to remove the target transmission path associated with the target data packet. By removing the transmission path with high latency, the situation in which the receiving end requests data retransmission from the sending end is effectively reduced, thereby improving the system throughput.

[0151] In one possible embodiment, referring to Figure 7 , Figure 7 A flowchart of Embodiment 3 of the data transmission method of the present application is provided; after sending the first notification to the sending end, the method further includes:

[0152] Step S31 : If the target data packet is not received within a preset timing time, a third notification is sent to the sending end to instruct the sending end to update the entropy value of the target data packet for data retransmission.

[0153] It should be noted that after the receiving end sends the first notification to the sending end, it sets a timeout timer (i.e., a preset timer in this embodiment). The preset timer can be set according to actual conditions, for example, 5ms. If the target data packet is not received after the preset timer expires, it indicates that there may be a problem with the transmission path associated with the target data packet, resulting in the target data packet being unable to reach the receiving end. Therefore, it is necessary to use another transmission path to retransmit the target data packet.

[0154] It should be noted that the third notification is used to instruct the sender to update the entropy value of the target data packet for data retransmission. The entropy value is used by the data forwarding device to determine the target transmission path. The third notification is a notification message set according to a preset message format. Optionally, the fields required to be carried in the notification message include:

[0155] Type: Message type, used to identify the type of notification message.

[0156] PSN: Expected sequence number.

[0157] streamId: Stream identifier, used to identify the data stream to which the target data packet belongs. The stream identifier can be determined by combining several other fields, such as the quintuple of an IP packet or the QP pair (queue pair) of a RoCEv2 (RDMA over Converged Ethernet v2) packet. The QP pair is used to identify a RoCEv2 packet flow.

[0158] In this embodiment, if the target data packet is not received within a preset timer, it is determined that there may be a problem with the transmission path, resulting in the loss of the target data packet. A third notification is then generated based on information such as the flow identifier and expected sequence number of the target data packet, and the third notification is further sent to the sending end. The sending end determines the data packet that needs to be retransmitted based on the flow identifier and expected sequence number, and then updates the entropy value of the target data packet. Furthermore, the sending end retransmits the target data packet with the updated entropy value, so that the data forwarding device determines a new transmission path based on the updated entropy value, and thus sends the target data packet to the receiving end along the new transmission path.

[0159] This embodiment determines that a transmission path problem may exist, leading to packet loss, if the target data packet is not received within a preset timer. It then notifies the sender to update the entropy value of the target data packet, determines a new transmission path based on the updated entropy value, and then transmits the target data packet using the new transmission path, thereby reducing packet loss during transmission and ensuring data transmission reliability.

[0160] In one possible embodiment, referring to Figure 8 , Figure 8A flowchart of the third embodiment of the data transmission method of the present application is provided; the third notification is an entropy value change notification message, and the third notification is sent to the sending end, including:

[0161] Step S41, generating the entropy value change notification message according to the preset second message type, the flow identifier and the expected sequence number of the target data packet;

[0162] Step S42: Send the entropy value change notification message to the sending end.

[0163] It should be noted that the second message type is used to identify that the notification message is a message for changing the entropy value in the target data packet, and the flow identifier is used to identify the data flow to which the target data packet belongs;

[0164] It should be noted that the third notification is an entropy value change notification message. Optionally, the entropy value change notification message can be encapsulated in a RoCEv2 control message, a UEC control message, or a RoCEv2 EACK (exclude-ACK) message, etc.

[0165] In a specific example, referring to Figure 9 , Figure 9 This is one of the example diagrams of the message format of the entropy value change notification message provided in one embodiment of the present application. The meanings of the fields of the message format of the entropy value change notification message based on the RoCEv2 control message are as follows:

[0166] Opcode: Operation code, used to specify the control message type Type of RoCE. Optionally, OpCode uses a reserved value, where bits 7-5 are 110-111 and bits 4-0 are 00000-11111. For example, Opcode = 11000001 (binary) = 193 (decimal) is selected to identify the message as an entropy change notification message.

[0167] PSN (Packet Sequence Number): the sequence number of the data packet (ie, the expected sequence number in this implementation).

[0168] In addition, the flow identifier is determined based on the source IP (source IP address), destination IP (destination IP address), and QP triplet in the message.

[0169] The other fields in the message format of the entropy value change notification message based on the RoCEv2 control message have basically the same meaning as the fields in the message format of the path removal notification message based on the RoCEv2 control message, and will not be repeated here.

[0170] In a specific example, referring to Figure 10 , Figure 10The second example of the message format of the entropy value change notification message provided in an embodiment of the present application is as follows:

[0171] Opcode: Specifies the RoCE ACK message, OpCode = 10001.

[0172] The Reserved field following the B field in BTH is used as the Type field. Type=2 indicates that the notification message is an entropy value change notification message.

[0173] PSN (Packet Sequence Number): the sequence number of the data packet (ie, the expected sequence number in this implementation).

[0174] In addition, the flow identifier is determined based on the source IP (source IP address), destination IP (destination IP address), and QP triplet in the message.

[0175] Among them, the other fields in the message format of the entropy value change notification message based on the RoCEv2 ACK message have basically the same meaning as the fields in the message format of the path removal notification message based on the RoCEv2 ACK message, and will not be repeated here.

[0176] In a specific example, referring to Figure 11 , Figure 11 FIG3 is an example of the message format of the entropy value change notification message provided in an embodiment of the present application. The meanings of the fields of the message format of the entropy value change notification message of the UEC control message are as follows:

[0177] Type: identifies the type of data packet, specified as a UEC control message, for example, Type = 11.

[0178] CTL_TYPE: type of control message, using any of the reserved values ​​9-15. For example, CTL_TYPE=10 indicates that the type is entropy change notification message.

[0179] PSN: Expected sequence number.

[0180] In addition, the flow identifier is determined based on the source IP address, destination IP address, and PDCID tuple in the message.

[0181] Among them, the meanings of other fields in the message format of the entropy value change notification message of the UEC-based control message are basically the same as the fields in the message format of the path removal notification message of the UEC-based control message, and are not repeated here.

[0182] In this embodiment, the entropy value change notification message is generated according to a preset second message type, the flow identifier and the expected sequence number of the target data packet, and in accordance with a preset message format. Furthermore, the entropy value change notification message is sent to the sending end so that the sending end can update the entropy value of the target data packet. The subsequent data forwarding device determines a new transmission path based on the updated entropy value, and then uses the new transmission path to transmit the target data packet. It should be noted that the source port in the target data packet is the port of the sending end, and the destination port in the target data packet is the port of the receiving end. In the process of encapsulating the entropy value change notification message, the source port and the destination port in the received target data packet are swapped, that is, the source port in the received target data packet is used as the destination port of the entropy value change notification message, and the destination port in the received target data packet is used as the source port of the path removal notification message.

[0183] This embodiment generates an entropy value change notification message based on a preset second message type, a flow identifier of a target data packet, and an expected sequence number, and sends the entropy value change notification message to a sending end to notify the sending end to update the entropy value of the target data packet, so that a subsequent data forwarding device determines a new transmission path based on the updated entropy value, and then uses the new transmission path to transmit the target data packet, thereby avoiding packet loss problems on the path and ensuring the reliability of data transmission.

[0184] In one possible embodiment, referring to Figure 12 , Figure 12 A flowchart of a fifth embodiment of the data transmission method of the present application is provided; when a target data packet with an expected sequence number is not received, a first notification is sent to a sending end, including:

[0185] Step S51, determining the cache occupied space associated with the flow identifier in the target data packet;

[0186] It should be noted that the receiving end allocates corresponding cache space for each data stream. When receiving packets with sequence numbers other than the expected sequence numbers, each packet is first cached in the cache space associated with the stream identifier in the packet. If the cache space exceeds the cache threshold, to prevent cache overflow, the receiving end will discard any subsequent packets that do not belong to the target packet. This causes the receiving end to frequently clear the cache and re-request data, thereby reducing overall system performance. Therefore, monitoring the cache space is crucial for determining whether data packets need to be retransmitted. In this embodiment, it is necessary to monitor the cache space associated with the stream identifier in the target packet.

[0187] Step S52: If the target data packet with the expected sequence number is not received and the cache occupied space exceeds a preset cache threshold, the first notification is sent to the sending end.

[0188] In this embodiment, the cache occupancy is compared with a preset cache threshold. If the target data packet with the expected sequence number is not received and the cache occupancy exceeds the preset cache threshold, it is preliminarily determined that the target data packet with the expected sequence number has been lost. Based on information such as the expected sequence number and the flow identifier, a first notification is generated. Optionally, the first notification may be a NACK message. As a specific example, the NACK message includes the following fields: Message Type: Identifies that this is a NACK message. Expected sequence number of the target data packet: Identifies the data packet that needs to be retransmitted. Flow identifier: Identifies the data stream to which the target data packet belongs. Other information: such as the identifier of the sender and the identifier of the receiver. The first notification may also be a pre-set notification message used to notify the sender to retransmit the target data packet. As a specific example, the notification message includes the following fields: Message Type: Identifies that the notification message is a retransmitted data packet. Expected sequence number of the target data packet: Identifies the data packet that needs to be retransmitted. Flow identifier: Identifies the data stream to which the target data packet belongs. Other information: such as the identifier of the sender and the identifier of the receiver.

[0189] Furthermore, the first notification is sent to the sending end, so that the sending end can determine the target data packet that needs to be retransmitted according to the flow identifier and expected sequence number in the first notification, and then retransmit the target data packet.

[0190] This embodiment sends a first notification to the sending end when a target data packet with an expected sequence number has not been received and the buffer space occupied exceeds a preset buffer threshold. The receiving end can promptly notify the sending end to retransmit the lost data packet when buffer space is insufficient, thereby ensuring the integrity and reliability of data transmission and avoiding system performance degradation caused by buffer overflow.

[0191] In a feasible embodiment, after sending the first notification to the sending end, the method further includes:

[0192] Step S61: When a target data packet with an expected sequence number is received, the target data packet is reported to a preset application layer, and the expected sequence number is updated.

[0193] In this embodiment, upon receiving a target data packet with an expected sequence number, the target data packet is directly reported to a preset application layer. It should be noted that in a communication system, the application layer is the layer responsible for processing specific application logic. The application layer refers to the application layer module that has been configured during system initialization and is used to process received data packets. After reporting the target data packet to the application layer, the receiving end will update the expected sequence number. For example, the expected sequence number will be increased by 1, indicating the sequence number of the next data packet expected to be received, and the execution step will be returned to: if the target data packet with the expected sequence number is not received, a first notification will be sent to the sending end until all data packets associated with the flow identifier in the target data packet are received.

[0194] The embodiment of the present invention reports the target data packet to a preset application layer and updates the expected sequence number when receiving the target data packet with the expected sequence number, so as to monitor the next data packet expected to be received. By cyclically monitoring whether the expected data packet arrives at the receiving end, packet loss can be discovered in time to ensure the integrity and reliability of data transmission.

[0195] In one embodiment, referring to Figure 13 , Figure 13 A flowchart of a sixth embodiment of the data transmission method of the present application is provided. In this embodiment, the data transmission method is applied to a data forwarding device, including:

[0196] Step S71, receiving a second notification sent by a receiving end, wherein the second notification is sent by the receiving end when the target data packet is repeatedly received after the receiving end notifies the sending end to retransmit the target data packet; the notifying the sending end to retransmit the target data packet is an operation performed by the receiving end when the target data packet with an expected sequence number is not received;

[0197] Step S72: Remove the target transmission path associated with the target data packet according to the second notification.

[0198] It should be noted that the second notification is a pre-configured notification message used to notify the data forwarding device to remove the target transmission path associated with the target data packet. The second notification includes the flow identifier and entropy value in the target data packet. The flow identifier is used to identify the data flow to which the target data packet belongs; the entropy value is used by the data forwarding device to determine the target transmission path. In addition, in order for the data forwarding device to recognize that the notification message is a message for a path removal operation, a preset message type is encapsulated in the second notification. This message type is used to identify the notification message as a message for a path removal operation.

[0199] In this embodiment, a second notification sent by the receiving end is received, and the second notification is parsed to obtain information such as the message type, entropy value, and flow identifier. In the case that the message type is a message type for performing a path removal operation, the target transmission path associated with the target data packet is determined based on the total number of paths of all transmission paths associated with the entropy value and the flow identifier. Further, the target transmission path is removed, and the remaining transmission paths are subsequently used for data transmission.

[0200] This embodiment receives a second notification from the receiving end and, based on the second notification, removes the target transmission path associated with the target data packet. Data is then transmitted using the remaining transmission paths. By removing high-latency transmission paths, the number of requests for data retransmission from the receiving end to the sending end is effectively reduced, thereby improving system throughput.

[0201] In one possible embodiment, referring to Figure 14 , Figure 14 A flowchart of Embodiment 7 of the data transmission method of the present application is provided; the second notification is a path removal notification message; and removing the target transmission path associated with the target data packet according to the second notification includes:

[0202] Step S81, parsing the path removal notification message to obtain a first target message type, a flow identifier, and an entropy value;

[0203] Step S82: When the first target message type is a preset first message type, determining the total number of paths of all transmission paths associated with the flow identifier;

[0204] It should be noted that the first message type is used to identify that the notification message is a message for performing a path removal operation, the flow identifier is used to identify the data flow to which the target data packet belongs; and the entropy value is used by the data forwarding device to determine the target transmission path.

[0205] It should be noted that the path removal notification message can be encapsulated in a RoCEv2 control message, a UEC control message, or a RoCEv2 EACK (exclude-ACK) message, etc. The fields of each message format have been specifically described in the above embodiments and will not be repeated here.

[0206] It should be noted that during the data transmission process, the data forwarding device often acts as a transit network node for data forwarding, that is, the data forwarding device forwards the message sent by the sender to the receiver, or forwards the message sent by the receiver to the sender, and does not perform related execution operations on the message. In this embodiment, the data forwarding device intercepts and processes the path removal notification message based on the message type. Specifically, when the returned path removal notification message passes through the data forwarding device, the data forwarding device parses the path removal notification message. When the first target message type obtained by the parsing is the preset first message type, the path removal notification message is intercepted, that is, there is no need to send the path removal notification message to the sender. Further, the total number of paths of all transmission paths associated with the flow identifier is determined. For example, the data forwarding device searches the pre-configured routing table based on the flow identifier and the destination port to determine the total number of paths that can reach the receiver.

[0207] Step S83, determining the target transmission path according to the entropy value and the total number of paths;

[0208] Step S84: remove the target transmission path.

[0209] In this embodiment, a hash calculation is performed on the total number of paths of all transmission paths associated with the entropy value and the flow identifier to obtain a hash value. Based on the hash value, a target transmission path is determined. Furthermore, the target transmission path is removed, and optionally, the target transmission path is deleted from a routing table in the data forwarding device. It should be noted that the hash value calculation formula is as follows: hash = Entropy % N, where Entropy represents the entropy value; N represents the total number of paths; and hash represents the hash value.

[0210] As a specific example, the transmission paths are path1, path2 and path3; the calculated hash value is 2; then path2 is removed, and the remaining transmission paths are used for data transmission, and the calculation formula for path determination becomes: hash = Entropy% (N-1).

[0211] This embodiment parses the received path removal notification message to determine the target transmission path for the target data packet based on the parsed information, and then removes the target transmission path. By removing high-latency transmission paths, the number of data retransmission requests from the receiving end to the sending end is effectively reduced, thereby improving system throughput.

[0212] In one possible embodiment, referring to Figure 15 , Figure 15 This is a flowchart of Embodiment 8 of the data transmission method of the present application. In this embodiment, the data transmission method is applied to the sending end, including:

[0213] Step S91, receiving a first notification sent by a receiving end when a target data packet with an expected sequence number is not received;

[0214] Step S91: retransmit the target data packet according to the first notification, so that when the receiving end repeatedly receives the target data packet, it sends a second notification to the data forwarding device to instruct the data forwarding device to remove the target transmission path associated with the target data packet.

[0215] It should be noted that the first notification can be a NACK message. The NACK mechanism is a negative acknowledgment mechanism in which the receiving end sends a NACK message to notify the sending end that certain data packets were not received and need to retransmit the data packets. Alternatively, the first notification can be a pre-set notification message used to notify the sending end to retransmit the target data packet. The first notification includes the stream identifier and expected sequence number of the target data packet. The stream identifier is used to identify the data stream to which the target data packet belongs.

[0216] In this embodiment, a first notification is sent by a receiving end when a target data packet with an expected sequence number is not received; the first notification is parsed, and the target data packet is determined based on the flow identifier and expected sequence number obtained by the parsing, and then the target data packet is retransmitted. As a result, when the receiving end repeatedly receives the target data packet, it generates a second notification based on information such as the entropy value and flow identifier of the target data packet, and sends the second notification to the data forwarding device to instruct the data forwarding device to remove the target transmission path associated with the target data packet. It should be noted that the second notification is a pre-set notification message used to notify the data forwarding device to remove the target transmission path associated with the target data packet. The second notification includes information such as the flow identifier and entropy value in the target data packet. In addition, in order to enable the data forwarding device to identify that the notification message is a message for performing a path removal operation, a preset message type needs to be encapsulated in the second notification. The message type is used to identify that the notification message is a message for performing a path removal operation. The specific process of the data forwarding device removing the target transmission path has been specifically described in the above embodiment and will not be repeated here.

[0217] This embodiment retransmits the target data packet based on a first notification sent by the receiving end. If the receiving end receives the target data packet repeatedly, it then sends a second notification to the data forwarding device, instructing the data forwarding device to remove the target transmission path associated with the target data packet. Subsequently, data is transmitted over the remaining transmission paths. By removing high-latency transmission paths, the number of requests for data retransmission from the transmitting end by the receiving end is effectively reduced, thereby improving system throughput.

[0218] In one possible embodiment, referring to Figure 16, Figure 16 A flowchart of the ninth embodiment of the data transmission method of the present application is provided; after retransmitting the target data packet according to the first notification, the following steps are also included:

[0219] Step S101, receiving a third notification sent by the receiving end, wherein the third notification is sent by the receiving end after notifying the sending end to retransmit the target data packet and the receiving end does not receive the target data packet within a preset timer; notifying the sending end to retransmit the target data packet is an operation performed by the receiving end when the target data packet with an expected sequence number is not received;

[0220] Step S102: updating the entropy value in the target data packet according to the third notification, so as to retransmit the target data packet with the updated entropy value.

[0221] It should be noted that when the receiving end fails to receive the target data packet with the expected sequence number, the receiving end notifies the sending end to retransmit the target data packet. At this time, a timeout timer is set (that is, the preset timing time in this embodiment). When the receiving end still fails to receive the target data packet within the preset timing time, a third notification is sent to the sending end.

[0222] It should be noted that the third notification instructs the sender to update the entropy value of the target data packet for data retransmission. The entropy value is used by the data forwarding device to determine the target transmission path. The third notification includes information such as the message type, expected sequence number, and flow identifier. The message type identifies the notification message as a message that changes the entropy value of the target data packet, and the flow identifier identifies the data flow to which the target data packet belongs.

[0223] In this embodiment, upon receiving the third notification sent by the receiving end, the sending end determines the data packet that needs to be retransmitted based on the flow identifier and the expected sequence number, and then updates the entropy value of the target data packet, for example, by adding 1 to the entropy value of the target data packet. Furthermore, the sending end retransmits the target data packet with the updated entropy value, so that the data forwarding device determines a new transmission path based on the updated entropy value, and thus sends the target data packet to the receiving end along the new transmission path.

[0224] This embodiment updates the entropy value in the target data packet according to the third notification sent by the receiving end when it is determined that the target data packet is lost, and retransmits the target data packet with the updated entropy value, thereby utilizing a new transmission path to transmit the target data packet and reducing packet loss during the transmission process.

[0225] In one possible embodiment, referring to Figure 17 , Figure 17A flowchart of Embodiment 10 of the data transmission method of the present application is provided; the third notification is an entropy value change notification message; and updating the entropy value in the target data packet according to the third notification includes:

[0226] Step S201, parsing the entropy value change notification message to obtain a second target message type, a flow identifier, and an expected sequence number;

[0227] Step S202: determining a target data packet according to the flow identifier and the expected sequence number when the second target message type is a preset second message type, wherein the second message type is used to identify that the notification message is a message for changing the entropy value in the target data packet;

[0228] Step S203: Update the entropy value in the target data packet.

[0229] It should be noted that the entropy change notification message can be encapsulated in a RoCEv2 control message, a UEC control message, or a RoCEv2 EACK (exclude-ACK) message, etc. The specific message format of the entropy change notification message has been specifically described in the above embodiment and will not be repeated here.

[0230] In this embodiment, the entropy value change notification message is parsed to obtain a second target message type, a flow identifier, and an expected sequence number; when the second target message type is a preset second message type, it is determined that the received notification message is a message that changes the entropy value in the target data packet, and then the target data packet is determined based on the flow identifier and the expected sequence number, and further, the entropy value in the target data packet is updated to retransmit the target data packet with the updated entropy value.

[0231] This embodiment updates the entropy value in the target data packet according to the third notification sent by the receiving end when it is determined that the target data packet is lost, and retransmits the target data packet with the updated entropy value, thereby utilizing a new transmission path to transmit the target data packet and reducing packet loss during the transmission process.

[0232] Optionally, this application proposes a specific example. Figure 18 , Figure 18A network diagram for removing transmission paths provided in an embodiment of the present application, wherein a communication network includes a sending end, a source spraying point (a data forwarding device in this embodiment), a receiving end, and other network device nodes. Assume that a data stream is queried in the data forwarding device and obtains a total of three transmission paths that can reach the receiving end, namely path1, path2, and path3. The receiving end sets the space threshold to 50,000 bytes. The sending end sends multiple data packets of the data stream, which pass through the data forwarding device and arrive at the receiving end through path1, path2, and path3 respectively. The receiving end caches and sorts the received data packets. After a period of time, the target data packet with the expected sequence number of 4000 has not been received, and the cache occupied space has exceeded the space threshold of 50,000 bytes. The receiving end generates a NACK first notification and sends it to the sending end to instruct the sending end to retransmit the target data packet with the sequence number of 4000. After a period of time, the receiving end receives the target data packet with sequence number 4000 twice, proving that one of the times the path delay difference is large, causing the data packet to arrive late. Then the receiving end generates a path removal notification message, where the notification message includes the first message type Type, entropy value Entropy (assuming the value is 20) and flow identifier and other information, and sends the path removal notification message to the sending end. When the path removal notification message passes through the data forwarding device, it truncates the notification message according to the message type and flow identifier, and reads the entropy value. The data forwarding device searches for three transmission paths corresponding to the data flow. Assuming that the transmission path corresponding to Entropy is 20 is path2, path2 is removed. Subsequently, the remaining path1 and path3 transmission paths are used for data transmission.

[0233] Optionally, this application proposes a specific example. Figure 19 , Figure 19A network diagram for updating entropy values ​​provided in an embodiment of the present application, wherein a communication network includes a transmitter, a source spray point (a data forwarding device in this embodiment), a receiver, and other network device nodes. Assume that a data stream obtains a total of three transmission paths that can reach the receiver through a query in the data forwarding device, namely path1, path2, and path3. The receiving end sets the space threshold to 50,000 bytes. The transmitter sends multiple data packets of the data stream, which pass through the data forwarding device and reach the receiving end through path1, path2, and path3 respectively. The receiving end caches and sorts the received data packets. After a period of time, the target data packet with the expected sequence number of 4000 has not been received, and at this time the cache occupied space has exceeded the space threshold of 50,000 bytes. The receiving end generates a NACK first notification and sends it to the transmitter to instruct the transmitter to retransmit the target data packet with the sequence number of 4000, and sets the timeout timer to 5ms. If the target data packet is still not received after 5ms, an entropy change notification message is generated and sent to the sending end. The notification message includes information such as the second message type Type, sequence number PSN (value is 4000) and flow ID. After receiving the entropy change notification message, the sending end determines the target data packet to be retransmitted based on the message type, flow ID and sequence number, and then updates the entropy value of the target data packet for data retransmission. For example, the entropy value in the target data packet is increased by 1 and then forwarded.

[0234] Optionally, refer to Figure 20 , Figure 20A communication interaction diagram for data transmission provided in an embodiment of the present application, specifically, the sending end sends each data packet to the source spraying point (that is, the data forwarding device in this embodiment), and the data forwarding device sprays each data packet in multiple paths, that is, sends each data packet to the receiving end through multiple transmission paths. It should be noted that the receiving end is pre-configured with a cache queue (that is, the cache space in this embodiment) and a threshold (that is, the cache threshold in this embodiment) corresponding to each data stream. When the receiving end fails to receive the target data packet with the expected sequence number and the cache occupied space exceeds the preset cache threshold, the receiving end sends a NACK message (that is, the first notification in this embodiment) to the sending end. At this time, a timeout timer is set. After receiving the first notification, the sending end retransmits the target data packet. When the receiving end receives the target data packet with the expected sequence number after a preset time period, the target data packet is reported to the preset application layer. It should be noted that the received target data packet may be a retransmitted data packet, or it may be a data packet that arrives at the receiving end later in the first transmission due to the large delay difference of the multipath. If the receiving end subsequently receives the target data packet with the expected sequence number again, it means that the target data packet received previously was a data packet that arrived at the receiving end later during the first transmission, and the target data packet received the second time was a data packet received after retransmission. Then, based on information such as the flow identifier and entropy value of the target data packet, an exclusion path message (i.e., the second notification in this embodiment) is generated and sent to the data forwarding device. The data forwarding device determines the target transmission path associated with the target data packet based on the flow identifier and entropy value in the message, and then removes the target transmission path.

[0235] In addition, if the target data packet is not received within the preset timing time, it is determined that there may be an abnormality in the transmission path, and an entropy value change notification message (i.e., the third notification in this embodiment) is generated and sent to the sending end. After receiving the third notification, the sending end updates the entropy value of the target data packet, and then sends the target data packet with updated entropy value to the data forwarding device. The data forwarding device determines a new transmission path based on the updated entropy value, and then sends the target data packet to the receiving end according to the new transmission path.

[0236] For example, to help understand the implementation process of the data transmission method, please refer to Figure 4 , Figure 4 A brief flowchart of the data transmission method provided in this application.

[0237] It should be noted that the examples in the figure are only used to understand the present application and do not constitute a limitation on the data transmission method of the present application. More simple transformations based on this technical concept are all within the scope of protection of the present application.

[0238] It should be understood that the size of the serial numbers of the steps in the above embodiments does not mean the order of execution. The execution order of each process should be determined by its function and internal logic, and should not constitute any limitation on the implementation process of the embodiments of the present invention.

[0239] This application also provides a receiving end, please refer to Figure 21 , Figure 21 This is a schematic diagram of the module structure of the receiving end of an embodiment of the present application; it includes:

[0240] A first sending module 301 is configured to send a first notification to a sending end to instruct the sending end to retransmit the target data packet when the target data packet with the expected sequence number is not received;

[0241] The second sending module 302 is configured to send a second notification to the data forwarding device when the target data packet is repeatedly received, so as to instruct the data forwarding device to remove the target transmission path associated with the target data packet.

[0242] The second sending module is further configured to:

[0243] A first generating unit is configured to generate a path removal notification message based on a preset first message type, a flow identifier in the target data packet, and an entropy value; wherein the first message type is used to identify that the notification message is a message for performing a path removal operation, the flow identifier is used to identify the data flow to which the target data packet belongs; and the entropy value is used by the data forwarding device to determine a target transmission path;

[0244] The first sending unit is configured to send the path removal notification message to the data forwarding device.

[0245] The receiving end also includes:

[0246] The third sending module is used to send a third notification to the sending end when the target data packet is not received within a preset timing time, so as to instruct the sending end to update the entropy value of the target data packet for data retransmission.

[0247] The third sending module is further used for:

[0248] A second generating unit is configured to generate an entropy value change notification message according to a preset second message type, a flow identifier of the target data packet, and an expected sequence number; wherein the second message type is used to identify that the notification message is a message for changing the entropy value in the target data packet, and the flow identifier is used to identify the data flow to which the target data packet belongs;

[0249] The second sending unit is used to send the entropy value change notification message to the sending end.

[0250] The first sending module is further configured to:

[0251] a determining unit, configured to determine a buffer occupied space associated with a flow identifier in the target data packet;

[0252] The third sending unit is configured to send the first notification to the sending end if the target data packet with the expected sequence number is not received and the cache occupied space exceeds a preset cache threshold.

[0253] The receiving end also includes:

[0254] The first updating module is configured to, upon receiving a target data packet with an expected sequence number, report the target data packet to a preset application layer and update the expected sequence number.

[0255] This application also provides a data forwarding device, please refer to Figure 22 , Figure 22 This is a schematic diagram of the module structure of the data forwarding device according to an embodiment of the present application; the data forwarding device includes:

[0256] The first receiving module 401 is configured to receive a second notification sent by a receiving end, wherein the second notification is sent by the receiving end when the target data packet is repeatedly received after the receiving end notifies the sending end to retransmit the target data packet; the notifying the sending end to retransmit the target data packet is an operation performed by the receiving end when the target data packet with an expected sequence number is not received;

[0257] The removing module 402 is configured to remove the target transmission path associated with the target data packet according to the second notification.

[0258] The removal module is further configured to:

[0259] A first parsing unit, configured to parse the path removal notification message to obtain a first target message type, a flow identifier, and an entropy value;

[0260] a first determining unit, configured to determine, when the first target message type is a preset first message type, a total number of paths of all transmission paths associated with the flow identifier, wherein the first message type is used to identify that the notification message is a message for performing a path removal operation, and the flow identifier is used to identify a data flow to which the target data packet belongs;

[0261] a second determining unit, configured to determine the target transmission path according to the entropy value and the total number of paths;

[0262] A removing unit is configured to remove the target transmission path.

[0263] This application also provides a sending end, please refer to Figure 23 , Figure 23This is a schematic diagram of the module structure of the transmitting end of an embodiment of the present application; the transmitting end includes:

[0264] The second receiving module 501 is configured to receive a first notification sent by a receiving end when a target data packet with an expected sequence number is not received;

[0265] The retransmission module 502 is used to retransmit the target data packet according to the first notification, so that when the receiving end repeatedly receives the target data packet, it sends a second notification to the data forwarding device to instruct the data forwarding device to remove the target transmission path associated with the target data packet.

[0266] The transmitting end further includes:

[0267] a third receiving module, configured to receive a third notification sent by the receiving end, wherein the third notification is sent by the receiving end after notifying the sending end to retransmit the target data packet and the receiving end has not received the target data packet within a preset timer; notifying the sending end to retransmit the target data packet is an operation performed by the receiving end when the target data packet with an expected sequence number is not received;

[0268] The second updating module is used to update the entropy value in the target data packet according to the third notification, so as to retransmit the target data packet with the updated entropy value.

[0269] The second update module is further configured to:

[0270] A second parsing unit is used to parse the entropy value change notification message to obtain a second target message type, a flow identifier and an expected sequence number;

[0271] A third determining unit, configured to determine a target data packet according to the flow identifier and the expected sequence number when the second target message type is a preset second message type, wherein the second message type is used to identify that the notification message is a message that changes the entropy value in the target data packet;

[0272] An updating unit is used to update the entropy value in the target data packet.

[0273] The data transmission device provided in this application, using the data transmission method in the above-mentioned embodiment, can solve the technical problems described in the background art. Compared with the prior art, the beneficial effects of the data transmission device provided in this application are the same as those of the data transmission method provided in the above-mentioned embodiment, and the other technical features of the data transmission device are the same as those disclosed in the above-mentioned embodiment method, and are not further described here.

[0274] The present application provides an electronic device, which includes: at least one processor; and a memory communicatively connected to the at least one processor; wherein the memory stores instructions that can be executed by the at least one processor, and the instructions are executed by the at least one processor to enable the at least one processor to execute the data transmission method in the above-mentioned embodiment one.

[0275] Reference below Figure 24 , which shows a schematic diagram of the structure of an electronic device suitable for implementing the embodiments of the present application. The electronic devices in the embodiments of the present application may include, but are not limited to, mobile terminals such as mobile phones, laptop computers, digital broadcast receivers, PDAs (Personal Digital Assistants), PADs (Portable Application Descriptions), PMPs (Portable Media Players), in-vehicle terminals (such as in-vehicle navigation terminals), and fixed terminals such as digital TVs and desktop computers. Figure 24 The electronic device shown is merely an example and should not limit the functions and scope of use of the embodiments of the present application.

[0276] like Figure 24 As shown, the electronic device may include a processing device 1001 (e.g., a central processing unit, a graphics processing unit, etc.), which can perform various appropriate actions and processes based on programs stored in a read-only memory 1002 or programs loaded from a storage device 1003 into a random access memory 1004. The random access memory 1004 also stores various programs and data required for the operation of the electronic device. The processing device 1001, the read-only memory 1002, and the random access memory 1004 are connected to each other via a bus 1005. An input / output interface 1006 is also connected to the bus. Typically, the following systems may be connected to the input / output interface 1006: an input device 1007 including, for example, a touch screen, a touchpad, a keyboard, a mouse, an image sensor, a microphone, an accelerometer, a gyroscope, etc.; an output device 1008 including, for example, a liquid crystal display (LCD), a speaker, a vibrator, etc.; a storage device 1003 including, for example, a magnetic tape or a hard disk; and a communication device 1009. The communication device 1009 may allow the electronic device to communicate with other devices wirelessly or wired to exchange data. Although the figures show electronic devices with various systems, it should be understood that it is not required to implement or have all the systems shown. More or fewer systems may be implemented or have instead.

[0277] In particular, according to the embodiments disclosed in the present application, the processes described above with reference to the flowcharts can be implemented as computer software programs. For example, the embodiments disclosed in the present application include a computer program product comprising a computer program carried on a computer-readable medium, the computer program comprising program code for executing the method shown in the flowchart. In such an embodiment, the computer program can be downloaded and installed from a network via a communication device, or installed from a storage device 1003, or installed from a read-only memory 1002. When the computer program is executed by the processing device 1001, the above-mentioned functions defined in the method of the embodiment disclosed in the present application are performed.

[0278] The electronic device provided in this application, using the data transmission method in the above embodiment, can solve the technical problems described in the background art. Compared with the prior art, the beneficial effects of the electronic device provided in this application are the same as those of the data transmission method provided in the above embodiment, and the other technical features of the electronic device are the same as those disclosed in the method in the above embodiment, and are not further described here.

[0279] It should be understood that the various parts disclosed in this application can be implemented using hardware, software, firmware, or a combination thereof. In the description of the above embodiments, specific features, structures, materials, or characteristics can be combined in any one or more embodiments or examples in a suitable manner.

[0280] The above description is merely a specific embodiment of the present application, but the scope of protection of the present application is not limited thereto. Any changes or substitutions that can be easily conceived by a person skilled in the art within the technical scope disclosed in this application should be included in the scope of protection of this application. Therefore, the scope of protection of this application should be based on the scope of protection of the claims.

[0281] The present application provides a computer-readable storage medium having computer-readable program instructions (ie, computer program) stored thereon, wherein the computer-readable program instructions are used to execute the data transmission method in the above embodiment.

[0282] The computer-readable storage medium provided in this application may be, for example, a USB flash drive, but is not limited to electrical, magnetic, optical, electromagnetic, infrared, or semiconductor systems or devices, or any combination thereof. More specific examples of computer-readable storage media may include, but are not limited to: an electrical connection with one or more wires, 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), an optical fiber, a portable compact disk read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination thereof. In this embodiment, the computer-readable storage medium may be any tangible medium that contains or stores a program that can be used by or in conjunction with an instruction execution system or device. The program code contained on the computer-readable storage medium may be transmitted using any appropriate medium, including but not limited to: wires, optical cables, RF (Radio Frequency), etc., or any suitable combination thereof.

[0283] The computer-readable storage medium may be included in the electronic device, or may exist independently without being incorporated into the electronic device.

[0284] The computer-readable storage medium carries one or more programs. When the one or more programs are executed by an electronic device, the electronic device:

[0285] When the target data packet with the expected sequence number is not received, sending a first notification to the sending end to instruct the sending end to retransmit the target data packet;

[0286] In the case that the target data packet is received repeatedly, a second notification is sent to the data forwarding device to instruct the data forwarding device to remove the target transmission path associated with the target data packet.

[0287] Computer program code for performing the operations of the present application may be written in one or more programming languages, or a combination thereof, including object-oriented programming languages ​​such as Java, Smalltalk, C++, and conventional procedural programming languages ​​such as "C" or similar programming languages. The program code may be executed entirely on the user's computer, partially on the user's computer, as a stand-alone software package, partially on the user's computer and partially on a remote computer, or entirely on the remote computer or server. In cases involving a remote computer, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or may be connected to an external computer (e.g., through the Internet using an Internet service provider).

[0288] The flow charts and block diagrams in the accompanying drawings illustrate the possible architecture, functions and operations of the systems, methods and computer program products according to various embodiments of the present application. In this regard, each box in the flow chart or block diagram can represent a module, program segment or a part of code, and the module, program segment or a part of code contains one or more executable instructions for realizing the specified logical function. It should also be noted that in some alternative implementations, the functions marked in the box can also occur in a different order than that marked in the accompanying drawings. For example, two boxes represented in succession can actually be executed substantially in parallel, and they can sometimes be executed in the opposite order, depending on the functions involved. It should also be noted that each box in the block diagram and / or flow chart, and the combination of the boxes in the block diagram and / or flow chart can be implemented by a dedicated hardware-based system that performs the specified function or operation, or can be implemented by a combination of dedicated hardware and computer instructions.

[0289] The modules described in the embodiments of the present application may be implemented in software or hardware, wherein the name of a module does not necessarily limit the unit itself.

[0290] The computer-readable storage medium provided in this application is a computer-readable storage medium that stores computer-readable program instructions (i.e., a computer program) for executing the above-described data transmission method, and can solve the technical problems described in the background art. Compared with the prior art, the beneficial effects of the computer-readable storage medium provided in this application are the same as those of the data transmission method provided in the above-described embodiment, and are not further elaborated here.

[0291] An embodiment of the present application provides a computer program product, including a computer program, which implements the steps of the above-mentioned data transmission method when executed by a processor.

[0292] The computer program product provided in this application can solve the technical problems in the background technology. Compared with the prior art, the beneficial effects of the computer program product provided in the embodiment of this application are the same as the beneficial effects of the data transmission method provided in the above embodiment, which will not be repeated here.

[0293] The above description is only part of the embodiments of the present application and does not limit the patent scope of the present application. All equivalent structural transformations made by using the contents of the present application specification and drawings under the technical concept of the present application, or direct / indirect application in other related technical fields are included in the patent protection scope of the present application.

Claims

1. A data transmission method, characterized in that: Applied to the receiving end, including: When the target data packet with the expected sequence number is not received, sending a first notification to the sending end to instruct the sending end to retransmit the target data packet; In the case that the target data packet is received repeatedly, a second notification is sent to the data forwarding device to instruct the data forwarding device to remove the target transmission path associated with the target data packet.

2. The data transmission method according to claim 1, wherein: The second notification is a path removal notification message; The sending the second notification to the data forwarding device includes: Generate the path removal notification message according to a preset first message type, a flow identifier in the target data packet, and an entropy value; wherein the first message type is used to identify that the notification message is a message for performing a path removal operation, the flow identifier is used to identify the data flow to which the target data packet belongs; and the entropy value is used by the data forwarding device to determine the target transmission path; The path removal notification message is sent to the data forwarding device.

3. The data transmission method according to claim 1, wherein: After sending the first notification to the sending end, the method further includes: If the target data packet is not received within the preset timing time, a third notification is sent to the sending end to instruct the sending end to update the entropy value of the target data packet for data retransmission.

4. The data transmission method according to claim 3, wherein: The third notification is an entropy value change notification message; The sending of the third notification to the sending end includes: Generate the entropy value change notification message according to a preset second message type, the flow identifier and the expected sequence number of the target data packet; wherein the second message type is used to identify that the notification message is a message for changing the entropy value in the target data packet, and the flow identifier is used to identify the data flow to which the target data packet belongs; The entropy value change notification message is sent to the sending end.

5. The data transmission method according to claim 1, wherein: The sending of the first notification to the sending end when the target data packet with the expected sequence number is not received includes: Determining a cache occupied space associated with a flow identifier in the target data packet; When the target data packet with the expected sequence number is not received and the cache occupied space exceeds a preset cache threshold, the first notification is sent to the sending end.

6. The data transmission method according to any one of claims 1 to 5, characterized in that: Also includes: When a target data packet with an expected sequence number is received, the target data packet is reported to a preset application layer, and the expected sequence number is updated.

7. A data transmission method, characterized in that: Applicable to data forwarding equipment, including: receiving a second notification sent by a receiving end, wherein the second notification is sent by the receiving end when the target data packet is repeatedly received after the receiving end notifies the sending end to retransmit the target data packet; the notifying the sending end to retransmit the target data packet is an operation performed by the receiving end when the target data packet with an expected sequence number is not received; According to the second notification, the target transmission path associated with the target data packet is removed.

8. The data transmission method according to claim 7, wherein: The second notification is a path removal notification message; Removing the target transmission path associated with the target data packet according to the second notification includes: Parsing the path removal notification message to obtain a first target message type, a flow identifier, and an entropy value; determining, when the first target message type is a preset first message type, a total number of paths of all transmission paths associated with the flow identifier, wherein the first message type is used to identify that the notification message is a message for performing a path removal operation, and the flow identifier is used to identify a data flow to which the target data packet belongs; Determining the target transmission path according to the entropy value and the total number of paths; Remove the target transmission path.

9. A data transmission method, characterized in that: Applied to the sending end, including: receiving a first notification sent by a receiving end when a target data packet with an expected sequence number is not received; According to the first notification, the target data packet is retransmitted, so that when the receiving end repeatedly receives the target data packet, it sends a second notification to the data forwarding device to instruct the data forwarding device to remove the target transmission path associated with the target data packet.

10. The data transmission method according to claim 9, wherein: After retransmitting the target data packet according to the first notification, the method further includes: receiving a third notification sent by the receiving end, wherein the third notification is sent by the receiving end after notifying the sending end to retransmit the target data packet and the receiving end does not receive the target data packet within a preset timer; notifying the sending end to retransmit the target data packet is an operation performed by the receiving end when the target data packet with an expected sequence number is not received; According to the third notification, the entropy value in the target data packet is updated to retransmit the target data packet with the updated entropy value.

11. The data transmission method according to claim 10, wherein: The third notification is an entropy value change notification message; The updating of the entropy value in the target data packet according to the third notification includes: Parsing the entropy value change notification message to obtain a second target message type, a flow identifier, and an expected sequence number; In a case where the second target message type is a preset second message type, determining a target data packet according to the flow identifier and the expected sequence number, wherein the second message type is used to identify that the notification message is a message that changes the entropy value in the target data packet; Update the entropy value in the target data packet.

12. An electronic device, characterized in that: The electronic device includes: a memory, a processor, and a computer program stored in the memory and executable on the processor, wherein the computer program is configured to implement the steps of the data transmission method according to any one of claims 1 to 6, 7 to 8, or 9 to 11.

13. A computer program product, characterized in that The computer program product comprises a computer program, and when the computer program is executed by a processor, the data transmission method according to any one of claims 1 to 6, 7 to 8, or 9 to 11 is implemented.

Citation Information

Cited By

  • Multi-path routing method, device, system, equipment, medium and program product

    CN121357084A