Data processing method, communication apparatus and data processing system

By independently sending data and control messages between the sender and receiver, the blocking problem caused by out-of-order processing at the receiver is solved, achieving non-blocking and efficient data transmission, improving data transmission efficiency and reducing resource consumption.

WO2026158184A1PCT designated stage Publication Date: 2026-07-30HUAWEI TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
HUAWEI TECH CO LTD
Filing Date
2026-01-16
Publication Date
2026-07-30

AI Technical Summary

Technical Problem

In AI-powered computing scenarios, the network interface card (NIC) at the receiving end has limited out-of-order processing capabilities, which means that data packets cannot be promptly acknowledged upon arrival at the receiving end. This necessitates the sending end to send control messages to confirm data integrity, resulting in blocking transmission, reduced data transmission efficiency, and increased resource consumption.

Method used

By sending data packets and control packets independently between the sender and receiver, the dependency of control packets on data packets is eliminated, allowing data packets and control packets to be sent without blocking on different paths. This ensures that the receiver can process out-of-order data packets and reorder them as needed, thus achieving non-blocking transmission.

Benefits of technology

It improves data transmission efficiency, reduces resource consumption, shortens data transmission completion time, and avoids delays caused by waiting for confirmation.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2026073148_30072026_PF_FP_ABST
    Figure CN2026073148_30072026_PF_FP_ABST
Patent Text Reader

Abstract

Disclosed in the embodiments of the present application are a data processing method, a communication apparatus and a data processing system, which are used for simplifying the process of sending a data packet and a control packet, so as to improve the data transmission efficiency and reduce the resource consumption of the communication apparatus. The data processing method provided in the embodiments of the present application comprises: acquiring a first data packet; acquiring a first control packet; and sending the first data packet to a first communication apparatus, and sending the first control packet to the first communication apparatus, wherein the first control packet is sent on the basis of the completion of the sending of the first data packet, or the first data packet and the first control packet are sent simultaneously, or the first data packet is sent after the sending of the first control packet, the first control packet being a packet processed after the first communication apparatus stores the first data packet in a memory of the first communication apparatus.
Need to check novelty before this filing date? Find Prior Art

Description

A data processing method, a communication device, and a data processing system

[0001] This application claims priority to Chinese Patent Application No. 202510125875.2, filed with the State Intellectual Property Office of China on January 26, 2025, entitled "A Data Processing Method, Communication Device and Data Processing System", the entire contents of which are incorporated herein by reference. Technical Field

[0002] This application relates to the field of computer technology, and more specifically to a data processing method, a communication device, and a data processing system. Background Technology

[0003] In artificial intelligence (AI) computing scenarios, when traffic selects a path within the network, selecting a path for each data packet can fully utilize bandwidth and achieve balanced bandwidth distribution for each data packet.

[0004] In a data packet equalization scenario, the out-of-order processing capability of the receiving end's network card is limited. After a data packet arrives at the receiving end, it is directly written into the corresponding memory of the receiving end. The central processing unit (CPU) of the receiving end cannot detect whether the data packet has been completely received. Therefore, the sending end needs to send a separate control message to instruct the data packet to be sent completely. Only after the CPU of the receiving end determines that the data packet has been completely received based on the control message can the sending end continue to send the next batch of data. This data synchronization method is called blocking transmission, which reduces the data transmission efficiency of the sending and receiving ends and increases the resource consumption of the sending and receiving ends. Summary of the Invention

[0005] This application provides a data processing method, a communication device, and a data processing system to simplify the sending process of data messages and control messages, improve data transmission efficiency, and reduce resource consumption of the communication device.

[0006] To address the aforementioned technical problems, this application provides the following technical solutions:

[0007] In a first aspect, embodiments of this application provide a data processing method applied to an application function device. The application function device may be a communication device (such as a network device or terminal device), including not only the communication device itself but also some components within it (e.g., circuits or chips responsible for communication functions (such as modem chips, also known as baseband chips, or system-on-chip (SoC) chips containing modem cores, or system-in-package (SIP) chips), etc.), or it may be a logic module or software capable of implementing all or part of the functions of the communication device. For example, the method is applied to a second communication device, and the method includes:

[0008] Acquire a first data packet; acquire a first control packet; send the first data packet to a first communication device, and send the first control packet to the first communication device, wherein the first control packet is sent after the first data packet has been sent; or, the first data packet and the first control packet are sent simultaneously; or, the first data packet is sent after the first control packet; wherein the first control packet is a packet processed by the first communication device after the first data packet has been stored in the memory of the first communication device.

[0009] In the above scheme, the second communication device acquires a first data packet and a first control packet, and then sends the first data packet and the first control packet to the first communication device. The first control packet is sent after the first data packet is sent; or, the first data packet and the first control packet are sent simultaneously; or, the first data packet is sent after the first control packet. The first control packet is a packet that the first communication device processes after storing the first data packet in its memory. In this embodiment, there is no dependency between sending the first data packet and sending the first control packet. The first control packet can be sent before, simultaneously, or after sending the first data packet. The second communication device can send the first data packet and send the first control packet without a sequential order. Therefore, this embodiment can achieve non-blocking sending of the first data packet and the first control packet, meaning the first control packet does not need to wait for the first data packet to be successfully sent, reducing data transmission completion time, improving data transmission efficiency, and reducing resource consumption of the second communication device.

[0010] In one possible implementation of the first aspect, the first data packet includes at least two data packets, at least one of which includes first indication information. This first indication information instructs the first communication device to receive the at least two data packets in a receiving order different from the sending order. In this scheme, the first indication information can instruct the first communication device to receive the at least two data packets out of order. Out-of-order reception means receiving packets in the order they arrive, which may be different from or the same as the sending order. When the first communication device receives out-of-order data packets, it can reorder these data packets in the correct order based on their sequence numbers, ensuring that the upper-layer application can receive data packets in the same order as when they were sent.

[0011] In one possible implementation of the first aspect, the first control message includes at least two control messages, and at least one of the at least two control messages includes second indication information. The second indication information is used to instruct the first communication device to receive the at least two control messages in the same receiving order as the sending order of the at least two control messages. In the above scheme, the second indication information can instruct the first communication device to perform ordered reception of the at least two control messages. Ordered reception means that when processing multiple arriving control messages, the first communication device reorders these control messages in the correct order.

[0012] In one possible implementation of the first aspect, the first data packet and the first control packet belong to the same data stream; sending the first data packet and the first control packet to the first communication device includes: sending the first data packet to the first communication device via a first network interface card (NIC); and sending the first control packet to the first communication device via a second NIC; wherein the first NIC and the second NIC are different. In the above scheme, the first data packet and the first control packet are sent independently via different NICs, enabling non-blocking transmission of the first data packet and the first control packet. The first control packet does not need to wait for the first data packet to be successfully sent, reducing data transmission completion time and improving data transmission efficiency.

[0013] In one possible implementation of the first aspect, the method is applied to a second communication device; the first control message includes at least two control messages; sending the first control message to the first communication device includes: sending the at least two control messages to the first communication device respectively via a single path between the second communication device and the first communication device. In the above scheme, the at least two control messages sent by the second communication device use the same single path. The use of a single path for sending at least two control messages is completely different from the multipath forwarding (i.e., spraying) of at least two data packets, thereby ensuring that the first communication device receives at least two control messages in the same receiving order as the sending order of the at least two control messages, thus achieving ordered reception of at least two control messages.

[0014] Secondly, embodiments of this application also provide a data processing method. This method is applied to an application function device, which may be a communication device (such as a network device or terminal device). It includes not only the communication device itself, but also some components within the communication device (e.g., circuits or chips responsible for communication functions (such as modem chips, also known as baseband chips, or system-on-a-chip or system-in-package chips containing modulation cores)). Alternatively, it may be a logic module or software capable of implementing all or part of the functions of the communication device. For example, this method is applied to a third communication device. The method includes: receiving a first data packet from a second communication device; receiving a first control message from the second communication device; sending the first data packet to a first communication device; buffering the first control message; and after receiving an acknowledgment message corresponding to the first data packet from the first communication device, sending the first control message to the first communication device. The first control message is a message processed by the first communication device after storing the first data packet in its memory. The acknowledgment message indicates that the first communication device has stored the first data packet in its memory. In the above scheme, there is no dependency between sending the first data packet and sending the first control packet. The first control packet can be sent before, simultaneously with, or after sending the first data packet. There is no sequential relationship between the second communication device sending the first data packet and sending the first control packet. Therefore, the embodiments of this application can achieve non-blocking sending of the first data packet and the first control packet. That is, the first control packet does not need to wait for the first data packet to be successfully sent, reducing the data transmission completion time, improving data transmission efficiency, and reducing the resource consumption of the second communication device.

[0015] In one possible implementation of the second aspect, the first control message includes at least two control messages; sending the first control message to the first communication device includes: sending the at least two control messages to the first communication device via a single path between the third communication device and the first communication device. In the above scheme, the at least two control messages sent by the third communication device use the same single path. The use of a single path for sending at least two control messages is completely different from the multipath forwarding (i.e., spraying) of at least two data packets, thereby ensuring that the first communication device receives at least two control messages in the same receiving order as the sending order of the at least two control messages, thus achieving ordered reception of at least two control messages.

[0016] In one possible implementation of the second aspect, the first control message is received earlier than the acknowledgment message. In the above scheme, the third communication device receives the first control message earlier than the acknowledgment message. After receiving the first control message, the third communication device can increase the delay for the first control message. For example, the first control message can be stored in the buffer of the third communication device, or the third communication device can perform local loopback operations on the first control message, which can also increase the delay.

[0017] In one possible implementation of the second aspect, the first control message is triggered by the second communication device after the first data message is sent; or, the first data message and the first control message are sent simultaneously by the second communication device; or, the first control message is sent by the second communication device before sending the first data message.

[0018] Thirdly, embodiments of this application also provide a data processing method, the method comprising: receiving a first data packet from a second communication device; caching the first data packet; and, based on the completion of caching the first data packet, notifying a processing device to process the first data packet.

[0019] In the above scheme, a first data packet is received from the second communication device, the first data packet is cached, and based on the completion of caching, the processing device is notified to process the first data packet. In this embodiment, the second communication device can achieve non-blocking transmission of the first data packet. The first communication device notifies the processing device to process the first data packet only after successfully caching it, reducing the data transmission completion time and improving data transmission efficiency.

[0020] In one possible implementation of the third aspect, the method is applied to an application function device, which may be a communication device (such as a network device or terminal device), including not only the communication device itself, but also some components within the communication device (e.g., circuits or chips responsible for communication functions (such as modem chips, also known as baseband chips, or system-on-a-chip or system-in-package chips containing modulation cores), or it may be a logic module or software capable of implementing all or part of the functions of the communication device. For example, the method is applied to a first communication device, and the method further includes: receiving a first control message from a second communication device; buffering the first control message; the method further includes: notifying the processing device to process the first control message based on the completion of buffering the first data message. In the above scheme, the second communication device can send the first control message in a non-blocking manner, because after the first control message is sent to the first communication device, the first communication device can buffer the first control message, or the first communication device can buffer at least two received control messages. The first communication device receives and caches the first control message. Based on the completion of caching the first data message, it notifies the processing device to process the first control message. The first control message can be received in order, which simplifies the way the second communication device sends the first control message and does not cause the first data message and the first control message to be out of order.

[0021] In one possible implementation of the third aspect, the first control message is triggered by the second communication device upon completion of sending the first data message; or, the first data message and the first control message are sent simultaneously by the second communication device; or, the first control message is sent by the second communication device before sending the first data message. In the above solutions, the first control message can be sent before, simultaneously with, or after sending the first data message. Therefore, the embodiments of this application can achieve non-blocking transmission of the first data message and the first control message. The first control message does not need to wait for the first data message to be successfully sent, reducing data transmission completion time and improving data transmission efficiency.

[0022] In one possible implementation of the third aspect, the method is applied to a first communication device. The step of notifying a processing device to process the first data packet upon completion of the first data packet buffering includes: notifying the processing device to process the first data packet by sending an acknowledgment message corresponding to the first data packet to the second communication device. The acknowledgment message indicates that the first communication device has stored the first data packet in its memory. In the above scheme, the second communication device can send the first data packet in a non-blocking manner, while the first communication device can still receive the first data packet out of order. This embodiment simplifies the way the second communication device sends the first data packet and does not cause out-of-order reception of the first data packet.

[0023] In one possible implementation of the third aspect, the first data packet includes at least two data packets, at least one of which includes first indication information. This first indication information instructs the first communication device to receive the at least two data packets in a receiving order different from the sending order of the at least two data packets. Receiving the first data packet from the second communication device includes: receiving the at least two data packets from the second communication device in a receiving order different from the sending order of the at least two data packets, according to the first indication information. In the above scheme, the first communication device receives at least two data packets from the second communication device in a receiving order different from the sending order of the at least two data packets, according to the first indication information. When the first communication device receives out-of-order data packets, it can reorder these data packets in the correct order according to their sequence numbers, ensuring that the upper-layer application can receive data packets in the same order as when they were sent.

[0024] In one possible implementation of the third aspect, the first control message includes at least two control messages, at least one of which includes second indication information. The second indication information instructs the first communication device to receive the at least two control messages in the same receiving order as their transmission order. Receiving the first control message from the second communication device includes: receiving the at least two control messages from the second communication device in the same receiving order as their transmission order, according to the second indication information. In the above scheme, the second indication information can instruct the first communication device to receive the at least two control messages in order-preserving manner. The first communication device receives the at least two control messages from the second communication device in the same receiving order as their transmission order, according to the second indication information. When processing multiple arriving control messages, the first communication device reorders these control messages in the correct order.

[0025] In one possible implementation of the third aspect, the method is applied to a first communication device; the first control message includes at least two control messages; receiving the first control message includes: receiving the at least two control messages from the second communication device via a single path between the second communication device and the first communication device. In the above scheme, the at least two control messages sent by the second communication device use the same single path. The use of a single path for sending at least two control messages is completely different from the multipath forwarding (i.e., spraying) of at least two data packets, thereby ensuring that the first communication device receives at least two control messages in the same receiving order as the sending order of the at least two control messages, thus achieving ordered reception of at least two control messages.

[0026] In one possible implementation of the third aspect, the first data packet includes at least two data packets; the method further includes:

[0027] The reception status corresponding to each of the at least two data packets is stored in a packet status set. This packet status set is used to determine whether all at least two data packets have been received completely. The reception status of at least one of the at least two data packets indicates whether the at least one data packet has been received completely. In the above scheme, the first communication device maintains the packet status set, therefore the second communication device does not need to send control messages. Specifically, the control message can be a memory synchronization message, meaning the second communication device does not need to send a memory synchronization message. The first communication device can record the packet status of each data packet itself. In this embodiment, the second communication device does not need to separately send control messages to inform the first communication device whether the data packets have been completely sent, saving the overhead of the second communication device sending control messages.

[0028] In one possible implementation of the third aspect, the message state set includes: the message sequence numbers of the at least two data packets and the reception status corresponding to each of the at least two data packets; or, the message state set includes: the reception status corresponding to each of the at least two data packets; wherein the reception status includes: data packet reception completed, or data packet reception failed. In the above scheme, the first communication device can simplify the content of the message state set and reduce the overhead of storing the message state set.

[0029] Fourthly, embodiments of this application also provide a communication device, wherein the communication device is a second communication device, and the second communication device includes:

[0030] The processing module is used to perform any of the processing-related operations in the first aspect;

[0031] The transceiver module is used to perform the operations related to receiving and / or sending in any of the items in the first aspect.

[0032] In the fourth aspect of this application, the constituent modules of the communication device may also perform the steps described in the first aspect and various possible implementations, as detailed in the foregoing description of the first aspect and various possible implementations.

[0033] Fifthly, embodiments of this application also provide a communication device, which is a third communication device, comprising:

[0034] The processing module is used to perform the processing-related operations in any of the second aspects;

[0035] The transceiver module is used to perform the operations related to receiving and / or sending in any of the second aspects.

[0036] In the fifth aspect of this application, the constituent modules of the communication device may also perform the steps described in the second aspect and various possible implementations, as detailed in the foregoing description of the second aspect and various possible implementations.

[0037] Sixthly, embodiments of this application also provide a communication device, wherein the communication device is a first communication device, and the first communication device includes:

[0038] The processing module is used to perform the processing-related operations in any of the third aspects;

[0039] The transceiver module is used to perform any of the operations related to receiving and / or sending in the third aspect.

[0040] In a sixth aspect of this application, the constituent modules of the communication device may also perform the steps described in the third aspect and various possible implementations, as detailed in the foregoing description of the third aspect and various possible implementations.

[0041] In a seventh aspect, embodiments of this application provide a computer-readable storage medium storing instructions that, when executed on a computer, cause the computer to perform the method described in any one of the first to third aspects.

[0042] Eighthly, embodiments of this application provide a computer program product including instructions, comprising computer program code, which, when run on a computer, causes the computer to perform the method described in any one of the first to third aspects.

[0043] In a ninth aspect, embodiments of this application also provide a data processing system, the system comprising: a communication device as described in any one of the fourth aspects and a communication device as described in any one of the fifth aspects.

[0044] In a tenth aspect, embodiments of this application provide a communication device, which may include entities such as terminal devices or chips. The communication device includes: a processor and a memory; the memory is used to store instructions; the processor is used to execute the instructions in the memory, causing the communication device to perform the method as described in any one of the first to third aspects above.

[0045] Eleventhly, this application provides a chip system including a processor for supporting a communication device in implementing the functions involved in the foregoing aspects, such as transmitting or processing data and / or information involved in the foregoing methods. In one possible design, the chip system further includes a memory for storing program instructions and data necessary for the communication device. This chip system may be composed of chips or may include chips and other discrete devices.

[0046] In a twelfth aspect, embodiments of this application provide a chip including one or more interface circuits and one or more processors; the interface circuits are configured to receive signals from the memory of an electronic device and send signals to the processors, the signals including computer instructions stored in the memory; when the processor executes the computer instructions, it causes the electronic device to perform the method in the first aspect or any possible implementation of the first aspect. Attached Figure Description

[0047] Figure 1 is a schematic diagram of multipath forwarding of data packets and control packets;

[0048] Figure 2 is a schematic diagram of data and control message transmission between a sending end and a receiving end;

[0049] Figure 3a is a schematic diagram of the components of a data processing system applicable to an embodiment of this application;

[0050] Figure 3b is a schematic diagram of the components of a data processing system applicable to an embodiment of this application;

[0051] Figure 4 is a schematic diagram of the system architecture of a data processing system applicable to an embodiment of this application;

[0052] Figure 5 is a flowchart illustrating a data processing method for interaction between a first communication device, a second communication device, and a third communication device according to an embodiment of this application.

[0053] Figure 6 is a flowchart illustrating another data processing method for interaction between a first communication device, a second communication device, and a third communication device provided in an embodiment of this application.

[0054] Figure 7 is a flowchart illustrating a data processing method for interaction between a first communication device and a second communication device according to an embodiment of this application.

[0055] Figure 8 is a flowchart illustrating a data processing method for interaction between a transmitter, a receiver, and a sequence-keeping device according to an embodiment of this application.

[0056] Figure 9 is a flowchart illustrating a data processing method for interaction between a transmitter, a receiver, and switches 1 and 2, according to an embodiment of this application.

[0057] Figure 10 is a schematic diagram of the composition structure of a third communication device provided in an embodiment of this application;

[0058] Figure 11 is a schematic diagram of the composition structure of a second communication device provided in an embodiment of this application;

[0059] Figure 12 is a schematic diagram of the composition structure of a first communication device provided in an embodiment of this application;

[0060] Figure 13 is a schematic diagram of the composition structure of a communication device provided in an embodiment of this application. Detailed Implementation

[0061] This application provides a data processing method, a communication device, and a data processing system to simplify the sending process of data messages and control messages, improve data transmission efficiency, and reduce resource consumption of the communication device.

[0062] The embodiments of this application will now be described with reference to the accompanying drawings.

[0063] The terms "first," "second," etc., used in the specification, claims, and accompanying drawings of this application are used to distinguish similar objects and are not necessarily used to describe a specific order or sequence. It should be understood that such terms are interchangeable where appropriate; this is merely a way of distinguishing objects with the same attributes in the embodiments of this application. Furthermore, the terms "comprising" and "having," and any variations thereof, are intended to cover non-exclusive inclusion, so that a process, method, system, product, or apparatus that comprises a series of elements is not necessarily limited to those elements, but may include other elements not explicitly listed or inherent to those processes, methods, products, or apparatuses.

[0064] In artificial intelligence (AI) computing scenarios, the number of data streams is small, but the data streams consume a lot of bandwidth. Hash collisions based on equal-cost multi-path (ECMP) are severe. When traffic selects a path within the network, selecting a path for each data packet can make full use of bandwidth and achieve data packet balance in the network.

[0065] In packet-by-packet equalization scenarios, the out-of-order processing capability of the receiving end's network card is limited. This allows data packets with memory addresses to arrive out of order at the receiving end. These packets are directly written to the receiving end's memory upon arrival, without the involvement of the Central Processing Unit (CPU). The CPU cannot detect whether all data packets have been received. Because data packets arrive out of order and the receiving end's CPU cannot detect whether all packets have been received, the sending end needs to send a separate control message to the receiving end. Specifically, any non-data packets can be called a control message. This control message instructs the sending end to send all data packets completely and ensure their arrival at the receiving end before the sending end can continue sending the next batch of data packets. This data synchronization method can be considered blocking transmission. One type of blocking transmission requires the sending end to send a memory synchronization message; control messages can include the aforementioned memory synchronization messages.

[0066] Figure 1 illustrates a multi-path forwarding method for data and control packets. The sending end can acquire data and control packets, which can be sent via multiple paths. For example, paths 1 and 2 can be used to send data packets and control packets one by one. For instance, the sending end sends data packets 1, 2, 3, 4, 5, 6, 7, 8 and control packets 9, 10. The receiving end allows out-of-order arrival of data packets. For example, the receiving order of data packets 1, 2, 3, 4, 5, 6, 7, 8, or other out-of-order sequences such as 1, 2, 3, 4, 5, 6, 8, 7, etc. These two receiving orders are just examples; other receiving orders are not limited in this embodiment. However, control packets require ordered arrival and order-keeping processing. For example, the receiving order of control packets must be 9 and 10. Failure to maintain order will trigger retransmission or timeout, degrading service performance.

[0067] The order preservation requirement for individual data packets can be one of two types. One type requires maintaining the overall order of data packets and control packets. The other type requires maintaining the order of transmission and arrival of multiple consecutively sent control packets. Specifically, order preservation means that the transmission order and reception order of packets are exactly the same. For example, if the transmission order is 1234, the reception order will also be 1234 if packets arrive in the correct order. Order preservation and out-of-order delivery have opposite meanings. Out-of-order delivery refers to a situation where the order in which messages are sent differs from the order in which they are received. If the sending order of messages is 1234, then in the case of out-of-order delivery, the receiving order of messages can be at least one of the following: 1243, 1324, 1342, 1423, 1432, 2134, 2143, 2314, 2341, 2413, 2431, 3124, 3142, 3241, 3214, 3412, 3421, 4123, 4132, 4231, 4213, 4312, or 4321. These can be referred to as out-of-order delivery situations.

[0068] Figure 2 illustrates a schematic diagram of data and control message transmission between a sending end and a receiving end. The sending end generates data packets 1, 2, 3, 4, and 5, and control packets 6 and 7. In the case of single-path forwarding, the sending end sequentially sends data packets 1, 2, 3, 4, 5, 6, and 7, while the receiving end receives them in sequence. Unlike single-path forwarding, this embodiment can also employ packet-by-packet multipath forwarding, also known as "spraying." In a packet-by-packet multipath forwarding scenario, the sender sequentially sends data packet 1, data packet 2, data packet 3, data packet 4, data packet 5, control packet 6, and control packet 7. The receiver receives data packet 4, control packet 7, data packet 5, control packet 6, data packet 3, data packet 1, and data packet 2 in that order. This does not meet the receiver's expectations. The receiver expects data packets to arrive in a different order than the sender's, but control packets need to arrive in the same order as the sender.

[0069] There is currently a data processing method using a collection of communication libraries. The sending end can send a batch of data packets to the receiving end. After all the data packets in the batch have arrived at the receiving end, the sending end needs to wait for the receiving end to reply with an acknowledgment (ACK) message before sending control messages such as memory synchronization messages to the receiving end. This avoids out-of-order situations such as control messages being sent in advance and arriving before data packets.

[0070] However, the above scheme has at least the following drawbacks: Waiting for the receiver to receive all data packets before the sender sends the memory synchronization message wastes a round-trip time (RTT) between the sender and receiver. That is, each batch of data packets completes within several RTTs, but each time it also needs to go through an additional RTT for a control message, thus increasing the data stream completion time and reducing data transmission efficiency. Secondly, because the sender needs to wait for an extra RTT, the sent data occupies memory for that extra RTT. In other words, the sender cannot release the previously sent data memory until the memory synchronization message is acknowledged, which also results in a large memory footprint for the sender.

[0071] To address the issue of control message blocking at the sending end, embodiments of this application provide a data processing method, a communication device, and a data processing system that can eliminate the bandwidth occupied by control messages (1 RTT) without causing data and control messages to be out of order.

[0072] The technical solutions of this application embodiment can be applied to various data processing systems. As shown in Figure 3a, the data processing system provided in this application embodiment includes at least: a first communication device, a second communication device, and a third communication device. The first, second, and third communication devices can be network devices, terminal devices, or components of network devices or terminal devices. These components may be, for example, a terminal's network interface card (NIC), an XPU, or a forwarding chip of the network device. The XPU can represent any type of scalable processor unit, including various processors such as a central processing unit (CPU), a graphics processing unit (GPU), and a neural network processing unit (NPU). Specifically, the second communication device can be a transmitting end, the first communication device is a receiving end, and the third communication device can be a switching device. Data packets and control messages sent by the second communication device are transmitted to the first communication device via the third communication device. The first communication device can receive data packets and control messages from the second communication device. In this embodiment, the second communication device can transmit data packets and control packets without blocking. Non-blocking transmission means that the transmission of a subsequent packet is independent of the status of the previous packet; for example, it does not need to wait for the success of the previous packet transmission. In this embodiment, the transmission of data packets and control packets are independent of each other; non-blocking transmission is the opposite of the aforementioned blocking transmission. In this embodiment, there is no RTT (Round-Trip Time) for control packets, reducing the data stream completion time and improving data transmission efficiency.

[0073] In this embodiment, the communication between the second and third communication devices can be direct communication (as shown in Figure 3a) or indirect communication, for example, the second communication device communicates with the third communication device through other communication devices. The communication between the third communication device and the first communication device can be direct communication (as shown in Figure 3a) or indirect communication, for example, the third communication device communicates with the first communication device through other communication devices.

[0074] As shown in Figure 3b, the data processing system provided in this application embodiment includes at least: a first communication device and a second communication device. The first and second communication devices can be network devices, terminal devices, or components of network devices or terminal devices. These components may be, for example, a network interface card (NIC) or an XPU (Extended Processing Unit) of the terminal, or a forwarding chip of the network device. The XPU can represent any type of scalable processor unit, including various processors such as CPUs, GPUs, and NPUs. Specifically, the second communication device can be a sending end, and the first communication device is a receiving end. The second communication device sends data packets, which are then sent to the first communication device. The first communication device can receive data packets from the second communication device. In this application embodiment, the second communication device can perform non-blocking data packet transmission, reducing data stream completion time and improving data transmission efficiency.

[0075] The data processing system provided in this application can be applied to data center network topologies, interconnections between multiple data centers, or wide area networks. The business scenarios can include distributed machine learning training, distributed storage, high-performance computing, containerization, and other high-performance business scenarios. Specifically, the data processing system provided in this application can be applied to Remote Direct Memory Access (RDMA) networks. For example, the RDMA network can be based on Infiniband or RDMA over Converged Ethernet (RoCE) v2, etc. Without limitation, the data processing system provided in this application can also be used in other protocol networks such as Transmission Control Protocol (TCP).

[0076] Figure 4 shows a schematic diagram of the system architecture of a data processing system applicable to an embodiment of this application. The data processing system may include: network device 1, network device 2, network device 3, and server 1, server 2, server 3, and server 4. Network device 1 includes multiple core switches, network device 2 may include multiple spine switches, and network device 3 may include multiple leaf switches. Each server includes multiple network interface cards (NICs). Server 1 includes NICs 11, 12, and 13; server 2 includes NICs 21, 22, and 23; server 3 includes NICs 31, 32, and 33; and server 4 includes NICs 41, 42, and 43. The servers primarily support high-performance services with different communication requirements, and can perform AI training, AI inference, storage, and other services. The NICs can be used to send and receive data and control packets, and have capabilities such as out-of-order packet reception and limited memory storage.

[0077] A switch can also be called a switching device or a network switching device. Communication data passes through a switch, which has the ability to identify link quality, generate or send or process announcement messages, modify message fields, and adjust the path of each packet.

[0078] The communication device provided in this application mainly relates to at least one of the following products: server network interface card, switch, router, etc. The communication device provided in this application can be implemented in hardware or software; for example, the communication device can be a switch chip, software library, etc.

[0079] This application proposes a data processing method applicable to scenarios involving data packet equalization. Referring to Figure 5, which illustrates an interaction flow between a first communication device, a second communication device, and a third communication device provided in this application embodiment, the first communication device can specifically be server 1 as shown in Figure 4, used to send first data packets and first control packets. The second communication device can be server 2 as shown in Figure 4, used to receive first data packets and first control packets through the third communication device. The third communication device can be network device 1, network device 2, or network device 3 as shown in Figure 4, used to forward the first data packets and first control packets from the first communication device.

[0080] The data processing method provided in this application embodiment, as shown in Figure 5, mainly includes the following steps:

[0081] 501. The second communication device acquires the first data packet.

[0082] 502. The second communication device acquires the first control message.

[0083] The second communication device can transmit data with the first communication device through the third communication device. The second communication device acquires the first data packet; for example, it can generate the first data packet or obtain it from other communication devices. The first data packet can be one or more data packets, and the number of data packets the second communication device can acquire is not limited. The first data packet can be a packet used to carry various types of data, such as AI training data and AI inference data.

[0084] In addition, the second communication device acquires the first control message, which can be one or more control messages, such as a memory synchronization message or an application status notification message. The number of control messages that the second communication device can acquire is not limited.

[0085] In this embodiment, the execution order of steps 501 and 502 is not limited. The second communication device may first obtain the first data packet and then obtain the first control packet, or the second communication device may first obtain the first control packet and then obtain the first data packet, or the second communication device may obtain the first data packet and the first control packet simultaneously.

[0086] In some embodiments of this application, the first data packet includes at least two data packets, and at least one of the at least two data packets includes first indication information. That is, at least one data packet in the first data packet includes first indication information. In the embodiments of this application, no limitation is made on which data packets(s) in the first data packet include first indication information.

[0087] The aforementioned first indication information is used to instruct the first communication device to receive at least two data packets in a receiving order that is different from the sending order of the at least two data packets.

[0088] The first data packet includes at least two data packets, and the second communication device sends at least two data packets in the sending order. As shown in Figure 2 above, the at least two data packets obtained by the second communication device are data packet 1, data packet 2, data packet 3, data packet 4, and data packet 5. Therefore, the second communication device can send five data packets in the sending order of data packet 1, data packet 2, data packet 3, data packet 4, and data packet 5.

[0089] In this embodiment, at least one data packet may include first indication information. This first indication information may indicate that the receiving order of at least two data packets may differ from the sending order of the at least two data packets; that is, the first indication information may instruct the first communication device to receive at least two data packets out of order. Out-of-order reception means receiving packets according to their arrival order, which may be different from or the same as the sending order. When the first communication device receives out-of-order data packets, it can reorder these data packets in the correct order based on their sequence numbers, ensuring that the upper-layer application can receive data packets in the same order as when they were sent.

[0090] In some other embodiments of this application, the first indication information may indicate that at least two data packets sent by the second communication device arrive out of order. Out-of-order arrival means that due to factors such as network delays and routing during transmission, the arrival order of data packets is inconsistent with the sending order. For example, the data packets sent by the second communication device are in the order of 1, 2, 3, but due to network delays, the first communication device may receive data packet 3 first, then data packet 1, and finally data packet 2.

[0091] Furthermore, the position of the first indication information in the first data packet and the bit width of the first indication information are not limited in the embodiments of this application.

[0092] In some embodiments of this application, the first indication information may be a marker added by the second communication device to the first data packet. For example, the second communication device may add a marker indicating out-of-order arrival or out-of-order reception to the first data packet. For instance, a value of 0 for the first indication information represents out-of-order reception of the packet, while a value of 1 indicates that the packet must be received in order. After receiving the first data packet, the first communication device can determine that it can receive the first data packet out of order based on the first indication information included in the first data packet.

[0093] In some embodiments of this application, the first control message includes at least two control messages, and at least one of the at least two control messages includes second indication information. That is, at least one control message in the first control message includes second indication information. In the embodiments of this application, no limitation is made on which one or more control messages in the first control message include second indication information.

[0094] The second instruction information is used to instruct the first communication device to receive at least two control messages in the same receiving order as the sending order of the at least two control messages. The at least two control messages cannot be received by the first communication device before the first data message.

[0095] In this embodiment, at least one control message may include second indication information. This second indication information may indicate that the receiving order of at least two control messages can be the same as the sending order of the at least two control messages. That is, the second indication information may instruct the first communication device to receive at least two control messages in the correct order. Receiving in the correct order means that when processing multiple arriving control messages, the first communication device reorders these control messages according to the correct sequence.

[0096] Furthermore, the position of the second indication information in the first control message and the bit width of the second indication information are not limited in the embodiments of this application.

[0097] In some embodiments of this application, the second indication information may be a flag added by the second communication device to the first control message, such as a flag indicating ordered reception added by the second communication device to the first control message. For example, a value of 0 for the second indication information represents out-of-order reception of the message, while a value of 1 indicates that the message must be received in order. After receiving the first control message, the first communication device can determine that it can receive the first control message in order by using the second indication information included in the first control message.

[0098] 503. The second communication device sends a first data message to the first communication device, and the second communication device sends a first control message to the first communication device, wherein the first control message is sent after the first data message has been sent; or, the first data message and the first control message are sent simultaneously; or, the first data message is sent after the first control message.

[0099] The first control message is a message processed by the first communication device after the first data message is stored in the memory of the first communication device.

[0100] After acquiring the first data packet, the second communication device can execute step 503 to send the first data packet. Similarly, after acquiring the first control packet, the second communication device can execute step 503 to send the first control packet. There is no dependency between the second communication device sending the first data packet and sending the first control packet. For example, the first control packet can be sent after the first data packet has been sent; that is, the second communication device can send the first control packet after the first data packet. Alternatively, the second communication device can send both the first data packet and the first control packet simultaneously. Or, the second communication device can send the first data packet after sending the first control packet. This embodiment of the application enables non-blocking transmission of the first data packet and the first control packet. The first control packet does not need to wait for the first data packet to be successfully sent before being sent, reducing data transmission completion time and improving data transmission efficiency.

[0101] In some embodiments of this application, the first data packet and the first control packet belong to the same data stream;

[0102] Step 503: The second communication device sends a first data message to the first communication device, and the second communication device sends a first control message to the first communication device, including:

[0103] A1. The second communication device sends a first data packet to the first communication device through the first network card;

[0104] A2. The second communication device sends a first control message to the first communication device through the second network card;

[0105] The first network card and the second network card are different.

[0106] The second communication device can acquire a data stream, which includes a first data packet and a first control packet. The second communication device may include multiple network interface cards (NICs), for example, it may include a first NIC and a second NIC, which are different NICs, as shown in Figure 4. The second communication device can be a server, which may include multiple NICs, and these NICs can send packets independently. In this embodiment, the second communication device can send the first data packet and the first control packet independently. The first data packet is sent to the first communication device through the first NIC, and the first control packet is sent to the first communication device through the second NIC. The order of sending the first data packet and the first control packet is not limited. In this embodiment, the first data packet and the first control packet are sent independently through different NICs, enabling non-blocking transmission of the first data packet and the first control packet. The first control packet does not need to wait for the first data packet to be successfully sent, reducing data transmission completion time and improving data transmission efficiency.

[0107] In some embodiments of this application, the first control message includes at least two control messages;

[0108] Step 503: The second communication device sends a first control message to the first communication device, including:

[0109] B1. The second communication device sends at least two control messages to the first communication device via a single path between the second communication device and the first communication device.

[0110] The first control message acquired by the second communication device includes at least two control messages. Multiple paths are configured between the second and first communication devices. The second communication device can determine a single path from the multiple paths and send at least two control messages to the first communication device through the single path. That is, the at least two control messages sent by the second communication device use the same single path. The sending of at least two control messages using a single path is completely different from the multi-path forwarding (i.e., spraying) of at least two data packets. This ensures that the first communication device receives at least two control messages in the same receiving order as the sending order of the at least two control messages, thus achieving the ordered reception of at least two control messages.

[0111] The third communication device is located between the second communication device and the first communication device. A single path between the second communication device and the first communication device can be a single path between the second communication device and the third communication device, or a single path between the third communication device and the first communication device.

[0112] 504. The third communication device receives a first data packet from the second communication device.

[0113] 505. The third communication device receives a first control message from the second communication device.

[0114] 506. The third communication device sends a first data packet to the first communication device.

[0115] In this process, after the third communication device receives the first data packet in step 504, the third communication device can send the first data packet to the first communication device, so that the first communication device can receive the first data packet from the second communication device through the third communication device. The first communication device can then execute subsequent steps 509 and 510.

[0116] 507. The third communication device buffers the first control message.

[0117] In this process, after the third communication device receives the first control message in step 505, it can first buffer the first control message. Since the second communication device can send the first control message in a non-blocking manner, after the first control message is sent to the third communication device, the third communication device can buffer the first control message, or the third communication device can buffer at least two received control messages.

[0118] 508. After receiving the acknowledgment message corresponding to the first data packet from the first communication device, the third communication device sends a first control message to the first communication device. The first control message is a message processed by the first communication device after it has stored the first data packet in its memory. The acknowledgment message is used to indicate that the first communication device has stored the first data packet in its memory. Specifically, the acknowledgment message is used to indicate that the first communication device has stored all data packets preceding the first data packet in its memory.

[0119] In this embodiment, after the third communication device sends a first data packet to the first communication device in step 506, the first communication device can receive the first data packet. Then, the first communication device can reply with an acknowledgment message to the second communication device via the third communication device. The acknowledgment message indicates that the first communication device has stored the first data packet in its memory. Upon receiving the acknowledgment message corresponding to the first data packet from the first communication device, the third communication device can forward the acknowledgment message to the second communication device. Based on the acknowledgment message sent by the first communication device, the third communication device can determine that the first communication device has received the first data packet. Therefore, after receiving the acknowledgment message corresponding to the first data packet from the first communication device, the third communication device sends a first control message to the first communication device. This first control message is processed after the first communication device stores the first data packet in its memory. Therefore, by first caching the first control message and then sending it based on the received acknowledgment message, the third communication device ensures that the first communication device receives the first control message in order. Therefore, in this embodiment, the second communication device can send the first control message in a non-blocking manner, and the first communication device can still receive the first control message in order. This embodiment simplifies the way the second communication device sends the first control message and will not cause the first data message and the first control message to be out of order.

[0120] For example, if the sequence number of the control message is psn_x and the preceding data messages are numbered psn_x-N, psn_x-N+1, ..., psn_x-1, then when the third communication device receives the acknowledgment message (ACK) corresponding to the psn_x-1 message, it means that the first communication device has received all the data messages before this control message, and the third communication device can then forward the control message.

[0121] In some embodiments of this application, the first control message includes at least two control messages;

[0122] Step 508: The third communication device sends a first control message to the first communication device, including:

[0123] Through a single path between the third communication device and the first communication device, the third communication device sends at least two control messages to the first communication device.

[0124] The first control message acquired by the third communication device includes at least two control messages. Multiple paths are configured between the third communication device and the first communication device. The third communication device can determine a single path from the multiple paths. The third communication device sends at least two control messages to the first communication device through the single path. That is, the at least two control messages sent by the third communication device use the same single path. The sending of at least two control messages using a single path is completely different from the multi-path forwarding (i.e., spraying) of at least two data packets. This ensures that the first communication device receives at least two control messages in the same receiving order as the sending order of the at least two control messages, thus achieving the ordered reception of at least two control messages.

[0125] In some embodiments of this application, the first control message is received earlier than the acknowledgment message.

[0126] In this embodiment, the third communication device receives the first control message earlier than it receives the acknowledgment message. After receiving the first control message, the third communication device can increase the delay for the first control message. For example, it can store the first control message in its buffer, or it can perform local loopback operations on the first control message, which can also increase the delay. This application does not limit the use of buffering or local loopback for the first control message; other control methods can also be used to control the timing of sending the received first control message.

[0127] Based on step 508 above, upon receiving the acknowledgment message corresponding to the first data packet, the third communication device can send a first control message. Alternatively, if the buffering time for the first control message exceeds a set buffering time threshold, and the acknowledgment message corresponding to the first data packet is still not received (this situation can be called a timeout), the buffered first control message can be sent out. The buffering time threshold can be 10 microseconds, 8 microseconds, etc., and is not limited here. This embodiment does not limit the two methods of sending the first control message based on the buffering time exceeding the buffering time threshold and / or sending the first control message based on the acknowledgment message. This allows the first communication device to receive the first control message in order after receiving the first data packet. In this embodiment, the time of receiving the first control message is earlier than the time of receiving the acknowledgment message. The third communication device avoids out-of-order reception of the first control message caused by directly sending it by buffering the first control message.

[0128] 509. The first communication device receives a first data packet from the second communication device.

[0129] The first data packet sent by the second communication device arrives at the third communication device first. The third communication device receives the first data packet from the second communication device. The third communication device can send the first data packet to the first communication device, and the first communication device can receive the first data packet from the second communication device.

[0130] 510. The first communication device buffers the first data packet.

[0131] After receiving the first data packet, the first communication device can cache the first data packet in its memory. After caching the first data packet, the first communication device can also send an acknowledgment message corresponding to the first data packet to the second communication device through the third communication device.

[0132] 511. The first communication device receives a first control message from the second communication device.

[0133] In this embodiment, after receiving an acknowledgment message corresponding to the first data packet from the first communication device, the third communication device sends a first control message to the first communication device. The first communication device receives the first control message from the second communication device. This first control message is a message processed by the first communication device after storing the first data packet in its memory. In this embodiment, the third communication device buffers the first control message before sending it to the first communication device, ensuring that the first communication device receives the first control message in order.

[0134] 512. The first communication device notifies the processing device to process the first data message and the first control message.

[0135] In this embodiment, after receiving the first control message, the first communication device can notify a processing device to process the first data message and the first control message. This processing device can be the processor of the first communication device, or it can be a processing device independent of the first communication device. The first communication device notifies the processing device to process the first data message and the first control message, thereby enabling the processing device to process the first data message and the first control message sent by the second communication device. In this embodiment, the first data message can be received out of order, while the first control message can be received in order, simplifying the way the second communication device sends the first control message and preventing out-of-order transmission of the first data message and the first control message.

[0136] As illustrated by the foregoing embodiments, in this application embodiment, a first data packet and a first control packet are obtained, and then the first data packet and the first control packet are sent to the first communication device. Specifically, the first control packet is sent after the first data packet is sent; or, the first data packet and the first control packet are sent simultaneously; or, the first data packet is sent after the first control packet. The first control packet is a packet processed by the first communication device after storing the first data packet in its memory. In this application embodiment, there is no dependency between sending the first data packet and sending the first control packet. The first control packet can be sent before, simultaneously, or after sending the first data packet. Therefore, this application embodiment can achieve non-blocking sending of the first data packet and the first control packet. The first control packet does not need to wait for the first data packet to be successfully sent, reducing data transmission completion time and improving data transmission efficiency.

[0137] This application also provides another data processing method, as shown in Figure 6, which mainly includes the following steps:

[0138] Steps 501 to 506 are detailed in Figure 5 and will not be repeated here. After step 506 is executed, steps 513 to 517 are executed.

[0139] 513. The third communication device sends a first control message to the first communication device.

[0140] 514. The first communication device receives a first data message from the third communication device.

[0141] 515. The first communication device buffers the first data packet.

[0142] 516. The first communication device receives a first control message from the third communication device.

[0143] 517. The first communication device buffers the first control message.

[0144] The first control message is a message processed by the first communication device after the first data message is stored in the memory of the first communication device.

[0145] In this process, after receiving the first control message in step 516, the first communication device can first buffer the first control message. Since the second communication device can send the first control message in a non-blocking manner, the first communication device can also buffer the first control message after it is sent to it.

[0146] 518. The first communication device completes the buffering of the first data message and notifies the processing device to process the first data message and the first control message.

[0147] In this embodiment, the first communication device receives the first control message, and the first data message is buffered. The first communication device can then notify the processing device to process the first data message and the first control message. Thus, the processing device can process the first data message and the first control message sent by the second communication device. In this embodiment, the first data message can be received out of order, while the first control message can be received in order, simplifying the way the second communication device sends the first control message and preventing out-of-order transmission of the first data message and the first control message.

[0148] The difference between 513 to 517 and the aforementioned 507 to 512 is that 513 to 517 requires the first communication device to cache the first control message, while 507 to 512 is cached by the third communication device. For the technical effects of 513 to 517, please refer to the embodiment shown in Figure 5, which will not be repeated here.

[0149] This application proposes a data processing method applicable to data packet load balancing scenarios. Referring to Figure 7, which illustrates an interaction flow between a first communication device and a second communication device provided in this application embodiment, the first communication device can specifically be server 1 as shown in Figure 4, used to send first data packets and first control packets. The second communication device can be server 2 as shown in Figure 4, used to receive the first data packets and first control packets. For example, server 1 and server 2 can communicate directly, completing data transmission without the need for network devices.

[0150] The data processing method provided in this application embodiment, as shown in Figure 7, mainly includes the following steps:

[0151] 601. The second communication device acquires the first data packet.

[0152] 602. The second communication device sends a first data packet to the first communication device.

[0153] As shown in Figure 3b, the second communication device can directly send the first data packet to the first communication device. Alternatively, as shown in Figure 3a, the second communication device sends the first data packet to the first communication device via a third communication device.

[0154] 603. The first communication device receives a first data message from the second communication device.

[0155] In this configuration, the first communication device acts as the receiving end and can receive a first data packet from the second communication device. Alternatively, a third communication device is positioned between the second and first communication devices. The first data packet sent by the second communication device arrives at the third communication device first, and the third communication device then sends a first data packet to the first communication device. The first communication device receives the first data packet through the third communication device.

[0156] 604. The first communication device buffers the first data packet.

[0157] After receiving the first data packet, the first communication device can cache the first data packet in its memory. After caching the first data packet, the first communication device can also send an acknowledgment message corresponding to the first data packet to the second communication device.

[0158] 605. The first communication device completes the buffering of the first data packet and notifies the processing device to process the first data packet.

[0159] In this embodiment, when the first communication device receives a first data packet, it first buffers the first data packet. Once the buffering of the first data packet is complete, it notifies a processing device to process the first data packet. This processing device can be the processor of the first communication device, or it can be a processing device independent of the first communication device. Specifically, the completion of buffering the first data packet can be achieved by the first communication device detecting that the buffering of the first data packet is complete. For example, if the first data packet includes at least two data packets, the first communication device can detect that the buffering of at least two first data packets is complete. The first communication device notifies the processing device to process the first data packet, thereby enabling the processing device to process the first data packet sent by the second communication device. In this embodiment, the first data packet can be received out of order, simplifying the way the second communication device sends the first data packet and preventing out-of-order delivery of the first data packet.

[0160] In some embodiments of this application, in addition to performing the aforementioned steps 604 and 605, the communication method performed by the first communication device further includes the following steps:

[0161] C1. The first communication device receives a first control message from the second communication device;

[0162] C2. The first communication device buffers the first control message.

[0163] In this embodiment, in addition to sending the first data message, the second communication device can also send a first control message. After receiving the first control message, the first communication device can cache it. Specifically, the first control message may include a memory synchronization message, or it may include an application status notification message, etc. This embodiment does not limit the implementation method of the first control message. Since the second communication device can send the first control message in a non-blocking manner, after the first control message is sent to the first communication device, the first communication device can cache the first control message, or the first communication device can cache at least two received control messages.

[0164] In the implementation scenarios of the aforementioned execution steps C1 and C2, the data processing method executed by the first communication device further includes:

[0165] D1. The first communication device completes the buffering of the first data message and notifies the processing device to process the first control message.

[0166] In this embodiment, the first communication device notifies the processing device to process the first control message. The processing device may be a processor of the first communication device, or it may be a processing device independent of the first communication device. By notifying the processing device to process the first control message, the processing device can then process the first control message sent by the second communication device. In this embodiment, since the first communication device receives and caches the first control message, and notifies the processing device to process the first control message after the first data message caching is complete, the first control message can be received in order, simplifying the way the second communication device sends the first control message and preventing out-of-order transmission of the first data message and the first control message.

[0167] In some embodiments of this application, the first control message is triggered by the second communication device based on the completion of sending the first data message;

[0168] or,

[0169] The first data message and the first control message are sent simultaneously by the second communication device;

[0170] or,

[0171] The first control message is sent by the second communication device before sending the first data message.

[0172] In this embodiment, the first control message can be sent before, simultaneously with, or after the first data message. Therefore, this embodiment can achieve non-blocking transmission of the first data message and the first control message. The first control message does not need to wait for the first data message to be successfully sent, reducing the data transmission completion time and improving data transmission efficiency.

[0173] In some embodiments of this application, step 605, whereby the first communication device completes buffering of the first data packet and notifies the processing device to process the first data packet, includes:

[0174] E1. The first communication device notifies the processing device to process the first data packet based on sending an acknowledgment message corresponding to the first data packet to the second communication device. The acknowledgment message is used to indicate that the first communication device has stored the first data packet in the memory of the first communication device.

[0175] In this embodiment, after the first communication device buffers the first data packet, it can reply with an acknowledgment message to the second communication device. The acknowledgment message indicates that the first communication device has stored the first data packet in its memory. Once the first communication device confirms that it has received the first data packet, it sends an acknowledgment message corresponding to the first data packet to the second communication device, notifying the processing device to process the first data packet. Therefore, in this embodiment, the second communication device can send the first data packet in a non-blocking manner, while the first communication device can still receive the first data packet out of order. This embodiment simplifies the way the second communication device sends the first data packet and does not cause out-of-order delivery of the first data packet.

[0176] In some embodiments of this application, the first data packet includes at least two data packets, and at least one of the at least two data packets includes first indication information, which is used to indicate that the first communication device can receive at least two data packets in a receiving order that is different from the sending order of the at least two data packets.

[0177] In this implementation scenario, step 603 involves the first communication device receiving a first data packet from the second communication device, including:

[0178] F1. The first communication device receives at least two data packets from the second communication device in a receiving order that is different from the sending order of the at least two data packets, according to the first instruction information.

[0179] At least one data packet may include first indication information, which indicates that the receiving order of at least two data packets may differ from the sending order of the at least two data packets; that is, the first indication information may instruct the first communication device to receive the at least two data packets out of order. The first communication device receives the at least two data packets from the second communication device in a receiving order different from the sending order, according to the first indication information. When the first communication device receives out-of-order data packets, it can reorder these data packets in the correct order based on their sequence numbers, ensuring that the upper-layer application can receive data packets in the same order as when they were sent.

[0180] In some embodiments of this application, the first control message includes at least two control messages, and at least one of the at least two control messages includes second indication information, which is used to indicate that the first communication device needs to receive at least two control messages in the same receiving order as the sending order of the at least two control messages.

[0181] In this implementation scenario, step C1 involves the first communication device receiving a first control message from the second communication device, including:

[0182] C11. The first communication device receives at least two control messages from the second communication device in the same receiving order as the sending order of the at least two control messages, according to the second instruction information.

[0183] In this embodiment of the application, at least one control message may include second indication information. The second indication information may indicate that the receiving order of at least two control messages may be the same as the sending order of the at least two control messages. That is, the second indication information may instruct the first communication device to receive at least two control messages in order. The first communication device receives at least two control messages from the second communication device in the same receiving order as the sending order of the at least two control messages according to the second indication information. When processing multiple arriving control messages, the first communication device reorders these control messages in the correct order.

[0184] In some embodiments of this application, the first control message includes at least two control messages;

[0185] Step C1: The first communication device receives the first control message, including:

[0186] C12. The first communication device receives at least two control messages from the second communication device through a single path between the second communication device and the first communication device.

[0187] The first control message acquired by the second communication device includes at least two control messages. Multiple paths are configured between the second and first communication devices. The second communication device can determine a single path from the multiple paths and send at least two control messages to the first communication device through the single path. That is, the at least two control messages sent by the second communication device use the same single path. The sending of at least two control messages using a single path is completely different from the multi-path forwarding (i.e., spraying) of at least two data packets. This ensures that the first communication device receives at least two control messages in the same receiving order as the sending order of the at least two control messages, thus achieving the ordered reception of at least two control messages.

[0188] In some embodiments of this application, the first data packet includes at least two data packets; in addition to performing the aforementioned steps 604 and 605, the communication method performed by the first communication device further includes the following steps:

[0189] G1. The first communication device stores the reception status corresponding to at least two data packets into a message status set. The message status set is used to determine whether at least two data packets have been fully received. The reception status of at least one of the at least two data packets indicates whether at least one data packet has been fully received.

[0190] The first communication device can set a message status set to determine whether at least two data packets have been fully received. The reception status of at least one data packet indicates whether at least one data packet has been received. The first communication device can maintain the message status set, storing whether each data packet in the first data packet has been received. For example, the message status set can be a message statistics bitmap. The specific implementation of the message status set is not limited in this embodiment. Since the first communication device maintains the message status set in this embodiment, the second communication device does not need to send control messages. Specifically, the control message can be a memory synchronization message, meaning the second communication device does not need to send memory synchronization messages. The first communication device can record the message status of each data packet itself. In this embodiment, the second communication device does not need to separately send control messages to inform the first communication device whether the data packets have been completely sent, saving the overhead of the second communication device sending control messages.

[0191] Furthermore, in some embodiments of this application, the message state set includes: the message sequence numbers of at least two data packets and the reception status corresponding to each of the at least two data packets;

[0192] Alternatively, a set of message states, including: the reception states corresponding to at least two data packets;

[0193] The receiving status includes: data packet reception completed, or data packet reception failed.

[0194] Specifically, the message state set can store the message sequence number of a data packet and its corresponding reception status. For example, the reception status value can be 1, indicating that the data packet has been received, or 0, indicating that the data packet has not been received. Alternatively, the message state set can store the reception status corresponding to a data packet. This message state set does not include the message sequence number; instead, the sequence number is mapped to a position in the message state set, for example, by taking the modulo of the sequence number. The corresponding reception status of the data packet is then stored at that position. In this embodiment, the first communication device can simplify the content of the message state set and reduce the overhead of storing the message state set.

[0195] As illustrated by the foregoing embodiments, in this application embodiment, a first data packet is received from a second communication device, the first data packet is cached, and based on the completion of caching, a processing device is notified to process the first data packet. In this application embodiment, the second communication device can achieve non-blocking transmission of the first data packet. The first communication device notifies the processing device to process the first data packet only after successfully caching it, reducing the data transmission completion time and improving data transmission efficiency.

[0196] To facilitate a better understanding and implementation of the above-described solutions in the embodiments of this application, specific examples of corresponding application scenarios are provided below.

[0197] This application provides a remote memory synchronization method that eliminates the bandwidth occupied by control messages (1 RTT) and does not cause out-of-order issues for data and control messages. The method provided in this application is applicable to packet-by-packet load balancing scenarios, or can be used in scenarios such as flow-level forwarding, sub-flow-level forwarding, and cell switching.

[0198] In this embodiment, the first communication device is used as the receiving end, the third communication device as the order-keeping device, and the second communication device as the sending end for illustration. In one implementation, the order-keeping device can block control messages; in another implementation, the receiving end can block control messages.

[0199] In the scheme provided in this application embodiment, the sending end first marks each sent message to indicate whether it can arrive or be received out of order. The sending end sends any message (data message and control message) in a non-blocking manner. After the message is sent, it arrives at the switching network. For switches with multiple paths (including one), the message mark is identified, and the switch selects whether to spray the message one by one (i.e., take multiple paths) based on the message mark. The ordering device identifies the message mark. The ordering device can be any hop switch between the sending end and the receiving end. For example, the ordering device can be the last hop switch in a multi-hop switch, or the ordering device can be the network card of the receiving end. For data messages that can be received out of order, the memory is written directly according to the memory address in the data message. For control messages, the switch blocks and waits for the previous out-of-order data messages to be received completely before forwarding (to the last hop switch) or submitting them to the application (network card).

[0200] The communication device provided in this application has the following functions: the sending end sends data packets and control packets together without blocking transmission. In one embodiment, after the control packet reaches the last-hop switch, it waits for the acknowledgment (ACK) packet corresponding to the preceding data packet to arrive before forwarding the control packet; that is, the switch blocks the control packet. In another embodiment, it obtains communication messages between network interface card components, CPUs, and other components, and delays submitting the control packet to the CPU after all out-of-order data packets have arrived.

[0201] Please refer to Figure 8, which is a flowchart illustrating a data processing method for interaction between a transmitter, a receiver, and a sequence-preserving device provided in an embodiment of this application. The method may include:

[0202] S01. The sending end sends a data packet to the receiving end.

[0203] Step S01 can refer to step 503 in Figure 5, which shows the process of the second communication device sending a first data packet to the first communication device.

[0204] S02. The sending end selects a single path to forward control messages.

[0205] The sending end can continuously send data packets, such as sending the first data packet, the second data packet, ..., the last data packet, and control packets are sent after the data packets.

[0206] Step S02 can refer to the process shown in Figure 5, where step 503 involves the second communication device sending a first control message to the first communication device.

[0207] The sending end sends data and control packets in a non-blocking manner. If the packets are sent from a single network interface card (NIC), they can be sent sequentially. If multiple NICs can send packets, they may be sent simultaneously.

[0208] S03. Sequence-keeping device buffer control message.

[0209] Step S03 can refer to step 507 in Figure 5, which shows the process of the third communication device caching the first control message.

[0210] When a sequence-keeping device receives a data packet that may arrive out of order, it can choose to forward it via multiple paths. When a sequence-keeping device receives a control packet that arrives in order, it buffers the control packet. The sequence-keeping device can directly analyze the packet type to determine whether the flag carried by the packet indicates out-of-order or order-keeping reception.

[0211] S04. The receiving end sends an acknowledgment message for the last data packet.

[0212] When a switch receives a control message, it buffers the message. If the last-hop switch, such as the switch connecting to the receiving end, has only one path to the receiver, then that switch is called a sequence-preserving device. For example, this sequence-preserving device could be any hop switch between the sender and receiver.

[0213] S05. Sequence-preserving devices forward control messages.

[0214] Step S05 can be referred to as step 508 in Figure 5, which shows the process of the third communication device sending a first control message to the first communication device.

[0215] Once the sequence-keeping device waits for the arrival of the acknowledgment (ACK) message corresponding to the preceding data packet, it indicates that all preceding data packets have reached the receiving end. At this point, the control message is released and forwarded to the receiving end.

[0216] Among them, control messages can be memory synchronization messages, for example, because they generally have no payload and have low requirements for the buffer of the communication device.

[0217] The switch determines the conditions under which a control message can be forwarded based on the message sequence number psn_x, the preceding data message numbers psn_x-N, psn_x-N+1, ..., psn_x-1 in the control message. When the sequence-keeping device receives the ACK corresponding to the psn_x-1 message, it means that the receiving end has received all the data messages preceding this control message, and can then forward the control message.

[0218] The last hop is closer to the receiver, reducing the wasted time from 1 RTT to the last hop latency. In a Layer 2 network scenario, this is reduced to 1 / 3 of an RTT, and in a Layer 3 network scenario, it is reduced to 1 / 5 of an RTT.

[0219] Figure 9 shows a flowchart illustrating a data processing method for interaction between a transmitter, receiver, and switches 1 and 2 according to an embodiment of this application. The method mainly includes the following steps:

[0220] S11. The sending end sends a data packet to the receiving end.

[0221] Step S11 can refer to the process shown in Figure 5, step 503, in which the second communication device sends a first data packet to the first communication device.

[0222] S12. The sending end selects a single path to forward control messages.

[0223] Step S12 can refer to the process shown in Figure 5, where step 503 involves the second communication device sending a first control message to the first communication device.

[0224] The sending end can continuously send data packets, such as sending the first data packet, the second data packet, ..., the last data packet, and control packets are sent after the data packets.

[0225] The sending end sends data and control packets in a non-blocking manner. If the packets are sent from a single network interface card (NIC), they can be sent sequentially. If multiple NICs can send packets, they may be sent simultaneously.

[0226] When a switch receives out-of-order data packets or ordered control packets, it can use any forwarding mode, i.e., multi-path forwarding or single-path forwarding. A packet flag of 0 indicates out-of-order reception, and 1 indicates ordered reception. However, other flags can also be used; for example, a flag with the first value indicates out-of-order reception, and a flag with the second value indicates ordered reception.

[0227] S13. The receiving end can write data packets into the buffer out of order.

[0228] Step S13 can refer to step 513, which describes the process of the first communication device caching the first data packet.

[0229] S14. The receiving end's network card waits for all data packets to be received and then delays submission.

[0230] The receiving end's network card buffers control messages, that is, it buffers them in the network card or CPU main memory, and does not directly notify the CPU.

[0231] S15. The CPU application notification processing device at the receiving end reads the data packets in the buffer.

[0232] Step S15 can refer to step 515, which is the process of notifying the processing device to process the first data packet and the first control packet after the third communication device sends the acknowledgment message corresponding to the first data packet.

[0233] S16. The CPU application at the receiving end sends an acknowledgment message for the last data packet.

[0234] After the network card records and counts all preceding data packets received, or after the acknowledgment message corresponding to the last preceding data packet of the control message is sent, it submits the control message to the CPU to notify that the preceding data has been received.

[0235] In other embodiments of this application, a data processing method without memory synchronization messages is adopted. The sending end only sends data packets and does not need to send memory synchronization control messages. Other control messages are sent normally in the original way, such as application status announcement messages. The receiving end maintains a packet statistics bit chart. Each position in this packet statistics bit chart corresponds to a packet and is used to record which data packets have been received. The received data packets are marked in the packet statistics bit chart. When the packet statistics bit chart shows that all data packets have been received consecutively, an ACK can be replied to for this cluster of packets, and a notification message can be directly generated to the CPU. For example, only a final ACK can be replied to for this cluster of data packets, or ACKs can be replied to for some or more data packets in this cluster.

[0236] Optionally, the data packet carries a flag bit, which distinguishes it from other normal data packets. Normal data packets do not notify upon successful transmission, but this flag bit is used to ensure that the receiving end notifies the CPU upon receiving the data packet. The flag bit triggers the recording of packet statistics in a bit chart and the notification to the CPU.

[0237] Table 1 below shows a message statistics bitmap provided in an embodiment of this application:

[0238] In the example above, message 3 was not received, but message 4 was received first. Message 2 can reply with an ACK, but message 4 cannot reply with an ACK even if it is received. It needs to wait until message 3 is received, that is, until all messages before message 4 are received, before it can send an ACK for message 4.

[0239] Table 2 below shows a message statistics bitmap provided in an embodiment of this application:

[0240] Specifically, the message sequence number is mapped to a specific position in the message statistics bitmap. For example, the position in the message statistics bitmap is obtained by taking the sequence number modulo the position. If the length of the message statistics bitmap is 4, then the bitmap position = sequence number % 4. The message statistics bitmap is updated to record the position of the latest ACK sequence number that has been replied to.

[0241] As illustrated by the foregoing examples, in this embodiment, the sending end can simultaneously send data packets and control packets, and mark both types of packets, simplifying the data processing flow and resources of the sending end, without needing to block the transmission of control packets. Furthermore, the method of blocking and maintaining the order of control packets by the order-keeping node (last-hop device or receiving end network card) can approximately eliminate the waste of one RTT for memory synchronization packets (acknowledgment packets), significantly improving network bandwidth utilization and enhancing the communication performance of large AI models. Previously, the sending end had to wait for the ACK confirmation packet to be sent before sending the content synchronization packet, resulting in a wasted round-trip time (RTT). The memory usage time of the sending end for sent data packets is reduced, eliminating the need to wait for one RTT. Additionally, this embodiment employs a data processing method without memory synchronization packets, reducing the logic and complexity of memory control packets.

[0242] It should be noted that, for the sake of simplicity, the foregoing method embodiments are all described as a series of actions. However, those skilled in the art should understand that this application is not limited to the described order of actions, as some steps may be performed in other orders or simultaneously according to this application. Furthermore, those skilled in the art should also understand that the embodiments described in the specification are preferred embodiments, and the actions and modules involved are not necessarily essential to this application.

[0243] To facilitate better implementation of the above-described solutions in the embodiments of this application, related apparatus for implementing the above-described solutions is also provided below.

[0244] Please refer to Figure 10. An embodiment of this application provides a second communication device 1000, which may include: a processing module 1001 and a transmitting module 1002, wherein...

[0245] The processing module is used to acquire the first data packet;

[0246] The processing module is also used to acquire the first control message;

[0247] The sending module is configured to send the first data packet to the first communication device and send the first control packet to the first communication device, wherein the first control packet is sent after the first data packet is sent; or, the first data packet and the first control packet are sent simultaneously; or, the first data packet is sent after the first control packet.

[0248] The first control message is a message processed by the first communication device after the first data message is stored in the memory of the first communication device.

[0249] In some embodiments of this application, the sending module is used to send the first data packet to the first communication device through a first network interface card (NIC); and to send the first control packet to the first communication device through a second NIC; wherein the first NIC and the second NIC are different.

[0250] In some embodiments of this application, the sending module is configured to send the at least two control messages to the first communication device via a single path between the second communication device and the first communication device.

[0251] Please refer to Figure 11. An embodiment of this application provides a third communication device 1100, which may include a transceiver module and a processing module 1102. For example, the transceiver module includes a receiving module 1101 and a sending module 1103.

[0252] The receiving module is used to receive a first data packet from the second communication device;

[0253] The receiving module is further configured to receive a first control message from the second communication device;

[0254] The sending module is used to send the first data packet to the first communication device;

[0255] The processing module is used to cache the first control message;

[0256] The sending module is configured to send the first control message to the first communication device after receiving the acknowledgment message corresponding to the first data packet from the first communication device. The first control message is a message processed by the first communication device after storing the first data packet in the memory of the first communication device. The acknowledgment message is used to indicate that the first communication device has stored the first data packet in the memory of the first communication device.

[0257] In some embodiments of this application, the first control message includes at least two control messages;

[0258] The sending module is configured to send the at least two control messages to the first communication device via a single path between the third communication device and the first communication device.

[0259] Please refer to Figure 12. An embodiment of this application provides a first communication device 1200, which may include a transceiver module and a processing module 1202. For example, the transceiver module includes a receiving module 1201 and a sending module 1203.

[0260] The receiving module is used to receive a first data packet from the second communication device;

[0261] The processing module is used to cache the first data packet;

[0262] The sending module is used to notify the processing device to process the first data packet after the first data packet has been cached.

[0263] In some embodiments of this application, the receiving module is configured to receive a first control message from the second communication device;

[0264] The processing module is used to cache the first control message;

[0265] The sending module is used to notify the processing device to process the first control message after the first data message has been cached.

[0266] In some embodiments of this application, the sending module is configured to notify the processing device to process the first data packet by sending an acknowledgment message corresponding to the first data packet to the second communication device. The acknowledgment message is used to indicate that the first communication device has stored the first data packet in the memory of the first communication device.

[0267] In some embodiments of this application, the first data packet includes at least two data packets, and at least one of the at least two data packets includes first indication information, which is used to indicate that the first communication device can receive the at least two data packets in a receiving order that is different from the sending order of the at least two data packets;

[0268] The receiving module is configured to receive the at least two data packets from the second communication device in a receiving order that is different from the sending order of the at least two data packets, according to the first indication information.

[0269] In some embodiments of this application, the first control message includes at least two control messages, and at least one of the at least two control messages includes second indication information, which is used to indicate that the first communication device needs to receive the at least two control messages in the same receiving order as the sending order of the at least two control messages;

[0270] The receiving module is configured to receive the at least two control messages from the second communication device in the same receiving order as the sending order of the at least two control messages, according to the second indication information.

[0271] In some embodiments of this application, the first control message includes at least two control messages;

[0272] A receiving module is configured to receive the at least two control messages from the second communication device via a single path between the second communication device and the first communication device.

[0273] In some embodiments of this application, the first data packet includes at least two data packets;

[0274] The processing module is used to store the reception status corresponding to the at least two data packets to a message status set. The message status set is used to determine whether all at least two data packets have been received. The reception status of at least one of the at least two data packets indicates whether the at least one data packet has been received.

[0275] It should be noted that the information interaction and execution process between the modules / units of the above-mentioned device are based on the same concept as the method embodiments of this application, and the resulting technical effects are the same as those of the method embodiments of this application. For details, please refer to the description in the method embodiments shown above in this application, and will not be repeated here.

[0276] This application also provides a computer storage medium storing a program that performs some or all of the steps described in the above method embodiments.

[0277] Next, another communication device provided in the embodiments of this application will be introduced. This communication device can specifically be a first communication device, a second communication device, or a third communication device. Referring to Figure 13, the communication device 1300 includes:

[0278] The communication device 1300 includes a receiver 1301, a transmitter 1302, a processor 1303, and a memory 1304 (the number of processors 1303 in the communication device 1300 can be one or more; Figure 13 shows an example of one processor). In some embodiments of this application, the receiver 1301, transmitter 1302, processor 1303, and memory 1304 can be connected via a bus or other means; Figure 13 shows an example of connection via a bus.

[0279] Memory 1304 may include read-only memory and random access memory, and provides instructions and data to processor 1303. A portion of memory 1304 may also include non-volatile random access memory (NVRAM). Memory 1304 stores operating system and operation instructions, executable modules or data structures, or subsets thereof, or extended sets thereof, wherein the operation instructions may include various operation instructions for implementing various operations. The operating system may include various system programs for implementing various basic business functions and handling hardware-based tasks.

[0280] Processor 1303 controls the operation of the communication device; processor 1303 can also be called a central processing unit (CPU). In specific applications, the various components of the communication device are coupled together through a bus system, which includes not only a data bus but also a power bus, control bus, and status signal bus, etc. However, for clarity, all buses are referred to as the bus system in the diagram.

[0281] The methods disclosed in the embodiments of this application can be applied to or implemented by the processor 1303. The processor 1303 can be an integrated circuit chip with signal processing capabilities. In the implementation process, each step of the above method can be completed by the integrated logic circuit of the hardware in the processor 1303 or by instructions in the form of software. The processor 1303 can be a general-purpose processor, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), or other programmable logic devices, discrete gate or transistor logic devices, or discrete hardware components. It can implement or execute the methods, steps, and logic block diagrams disclosed in the embodiments of this application. The general-purpose processor can be a microprocessor or any conventional processor. The steps of the methods disclosed in the embodiments of this application can be directly embodied in the execution of a hardware decoding processor, or can be executed by a combination of hardware and software modules in the decoding processor. The software modules can be located in random access memory, flash memory, read-only memory, programmable read-only memory, electrically erasable programmable memory, registers, or other mature storage media in the art. The storage medium is located in memory 1304. Processor 1303 reads the information in memory 1304 and, in conjunction with its hardware, completes the steps of the above method.

[0282] The receiver 1301 can be used to receive input digital or character information and generate signal inputs related to the settings and function control of the communication device. The transmitter 1302 may include a display device such as a display screen and can be used to output digital or character information through an external interface.

[0283] In this embodiment of the application, the processor 1303 is used to execute the data processing method shown in Figure 5, 6, 7, 8, or 9.

[0284] In another possible design, when the communication device is a chip, the chip includes a processing unit and a communication unit. The processing unit may be, for example, a processor, and the communication unit may be, for example, an input / output interface, pins, or circuitry. The processing unit can execute computer-executable instructions stored in a storage unit to cause the chip within the communication device to perform any of the methods described in the first to third aspects above. Optionally, the storage unit can be an internal storage unit within the chip, such as a register or cache. Alternatively, the storage unit can be an external storage unit within the terminal, such as read-only memory (ROM) or other types of static storage devices capable of storing static information and instructions, such as random access memory (RAM).

[0285] The processor mentioned above can be a general-purpose central processing unit, a microprocessor, an ASIC, or one or more integrated circuits used to control the execution of programs for the data processing methods described in the first to third aspects.

[0286] This application also provides a data processing system, the system including: the communication device shown in FIG10 and the communication device shown in FIG11.

[0287] This application also provides a data processing system, which includes: the communication device shown in FIG10 and the communication device shown in FIG12.

[0288] It should also be noted that the device embodiments described above are merely illustrative. The units described as separate components may or may not be physically separate, and the components shown as units may or may not be physical units; that is, they may be located in one place or distributed across multiple network units. Some or all of the modules can be selected to achieve the purpose of this embodiment according to actual needs. In addition, in the device embodiment drawings provided in this application, the connection relationship between modules indicates that they have a communication connection, which can be implemented as one or more communication buses or signal lines.

[0289] Through the above description of the embodiments, those skilled in the art can clearly understand that this application can be implemented by means of software plus necessary general-purpose hardware, or it can be implemented by special-purpose hardware including application-specific integrated circuits, special-purpose CPUs, special-purpose memory, special-purpose components, etc. Generally, any function performed by a computer program can be easily implemented by corresponding hardware, and the specific hardware structure used to implement the same function can also be diverse, such as analog circuits, digital circuits, or special-purpose circuits. However, for this application, software program implementation is more often the preferred implementation method. Based on this understanding, the technical solution of this application, in essence, or the part that contributes to the prior art, can be embodied in the form of a software product. This computer software product is stored in a readable storage medium, such as a computer floppy disk, USB flash drive, mobile hard disk, ROM, RAM, magnetic disk, or optical disk, etc., and includes several instructions to cause a computer device (which may be a personal computer, server, or network device, etc.) to execute the methods described in the various embodiments of this application.

[0290] In the above embodiments, implementation can be achieved, in whole or in part, through software, hardware, firmware, or any combination thereof. When implemented in software, it can be implemented, in whole or in part, as a computer program product.

[0291] The computer program product includes one or more computer instructions. When the computer program instructions are loaded and executed on a computer, all or part of the processes or functions described in the embodiments of this application are generated. The computer may be a general-purpose computer, a special-purpose computer, a computer network, or other programmable device. The computer instructions may be stored in a computer-readable storage medium or transmitted from one computer-readable storage medium to another. For example, the computer instructions may be transmitted from one website, computer, server, or data center to another website, computer, server, or data center via wired (e.g., coaxial cable, fiber optic, digital subscriber line (DSL)) or wireless (e.g., infrared, wireless, microwave, etc.) means. The computer-readable storage medium may be any available medium that a computer can store or a data storage device such as a server or data center that integrates one or more available media. The available medium may be a magnetic medium (e.g., floppy disk, hard disk, magnetic tape), an optical medium (e.g., DVD), or a semiconductor medium (e.g., solid-state disk (SSD)).

Claims

1. A data processing method, characterized in that, The method includes: Obtain the first data packet; Obtain the first control message; The first data packet is sent to the first communication device, and the first control message is sent to the first communication device, wherein the first control message is sent after the first data packet is sent; or, the first data packet and the first control message are sent simultaneously; or, the first data packet is sent after the first control message. The first control message is a message processed by the first communication device after the first data message is stored in the memory of the first communication device.

2. The method of claim 1, wherein, The first data packet includes at least two data packets, and at least one of the at least two data packets includes first indication information. The first indication information is used to indicate that the first communication device can receive the at least two data packets in a receiving order that is different from the sending order of the at least two data packets.

3. The method according to claim 1 or 2, characterized in that, The first control message includes at least two control messages, and at least one of the at least two control messages includes second indication information. The second indication information is used to indicate that the first communication device needs to receive the at least two control messages in the same receiving order as the sending order of the at least two control messages.

4. The method according to any one of claims 1 to 3, characterized in that, The first data message and the first control message belong to the same data stream; Sending the first data message to the first communication device and sending the first control message to the first communication device includes: The first data packet is sent to the first communication device via the first network card; The first control message is sent to the first communication device via the second network card; The first network card and the second network card are different.

5. The method according to any one of claims 1 to 4, characterized in that, The method is applied to a second communication device; The first control message includes at least two control messages; Sending the first control message to the first communication device includes: The at least two control messages are sent to the first communication device via a single path between the second communication device and the first communication device.

6. A data processing method, characterized in that, The method is applied to a third communication device, and the method includes: Receive the first data packet from the second communication device; Receive a first control message from the second communication device; Send the first data packet to the first communication device; Cache the first control message; After receiving the acknowledgment message corresponding to the first data packet from the first communication device, the first control message is sent to the first communication device. The first control message is a message processed by the first communication device after it has saved the first data packet in the memory of the first communication device. The acknowledgment message is used to indicate that the first communication device has saved the first data packet in the memory of the first communication device.

7. The method according to claim 6, characterized in that, The first control message includes at least two control messages; Sending the first control message to the first communication device includes: The at least two control messages are sent to the first communication device via a single path between the third communication device and the first communication device.

8. The method according to claim 6 or 7, characterized in that, The first control message was received earlier than the acknowledgment message was received.

9. The method according to any one of claims 6 to 8, characterized in that, The first control message is triggered by the second communication device based on the completion of sending the first data message; or, The first data message and the first control message are sent simultaneously by the second communication device; or, The first control message is sent by the second communication device before sending the first data message.

10. A data processing method, characterized in that, The method includes: Receive the first data packet from the second communication device; Cache the first data packet; Once the first data packet caching is complete, the processing device is notified to process the first data packet.

11. The method according to claim 10, characterized in that, The method further includes: receiving a first control message from the second communication device; and buffering the first control message; The method further includes: Once the first data message caching is complete, the processing device is notified to process the first control message.

12. The method according to claim 11, characterized in that, The first control message is triggered by the second communication device after the first data message is sent; or, The first data message and the first control message are sent simultaneously by the second communication device; or, The first control message is sent by the second communication device before sending the first data message.

13. The method according to any one of claims 10 to 12, characterized in that, The method is applied to the first communication device. The step of notifying the processing device to process the first data packet after the first data packet caching is completed includes: Based on sending an acknowledgment message corresponding to the first data packet to the second communication device, the processing device is notified to process the first data packet. The acknowledgment message is used to indicate that the first communication device has stored the first data packet in the memory of the first communication device.

14. The method according to any one of claims 10 to 13, characterized in that, The first data packet includes at least two data packets, and at least one of the at least two data packets includes first indication information. The first indication information is used to indicate that the first communication device can receive the at least two data packets in a receiving order that is different from the sending order of the at least two data packets. The receiving of the first data packet from the second communication device includes: According to the first instruction information, the at least two data packets from the second communication device are received in a receiving order that is different from the sending order of the at least two data packets.

15. The method according to claim 11 or 12, characterized in that, The first control message includes at least two control messages, and at least one of the at least two control messages includes second indication information. The second indication information is used to indicate that the first communication device needs to receive the at least two control messages in the same receiving order as the sending order of the at least two control messages. Receiving the first control message from the second communication device includes: According to the second instruction information, the at least two control messages from the second communication device are received in the same receiving order as the sending order of the at least two control messages.

16. The method according to any one of claims 11, 12, or 15, characterized in that, The method is applied to a first communication device; The first control message includes at least two control messages; The receiving of the first control message includes: The at least two control messages from the second communication device are received via a single path between the second communication device and the first communication device.

17. The method according to any one of claims 10 to 16, characterized in that, The first data packet includes at least two data packets; The method further includes: The reception status corresponding to the at least two data packets is stored in a message status set. The message status set is used to determine whether the at least two data packets have been fully received. The reception status of at least one of the at least two data packets indicates whether the at least one data packet has been fully received.

18. The method according to claim 17, characterized in that, The message status set includes: the message sequence number of the at least two data packets and the reception status corresponding to the at least two data packets respectively; Alternatively, the message state set includes: the reception state corresponding to each of the at least two data packets; The receiving status includes: data packet reception completed, or data packet reception failed.

19. A communication device, characterized in that, The communication device is a second communication device, and the second communication device includes: The processing module is configured to perform the processing-related operations as described in any one of claims 1 to 5; A transceiver module for performing the operations related to receiving and / or sending as described in any one of claims 1 to 5.

20. A communication device, characterized in that, The communication device is a third communication device, which includes: The processing module is configured to perform the processing-related operations as described in any one of claims 6 to 9; A transceiver module for performing the operations related to receiving and / or sending as described in any one of claims 6 to 9.

21. A communication device, characterized in that, The communication device is a first communication device, and the first communication device includes: The processing module is configured to perform the processing-related operations as described in any one of claims 10 to 18; A transceiver module for performing the operations related to receiving and / or transmitting as described in any one of claims 10 to 18.

22. A data processing system, characterized in that, The system includes: the communication device as described in claim 19 and the communication device as described in claim 20.

23. A communication device comprising a processor and a memory coupled to the processor, the memory being configured to store a program or instructions, the processor being configured to execute the program or instructions such that the communication device implements the method of any one of claims 1 to 18.

24. A computer-readable storage medium comprising instructions which, when executed on a computer, cause the computer to perform the method of any one of claims 1 to 18.

25. A computer program product comprising instructions, including computer program code, which, when run on a computer, causes the computer to perform the method as described in any one of claims 1 to 18.

26. A chip, characterized in that, The device includes one or more interface circuits and one or more processors; the interface circuits are configured to receive signals from the memory of the electronic device and send the signals to the processors, the signals including computer instructions stored in the memory; when the processor executes the computer instructions, the electronic device performs the method of any one of claims 1 to 18.