Message processing method and device, related equipment, storage medium and computer program product

By adding path information identifiers to the messages, the problem of fast retransmission when messages are lost in traditional load balancing schemes is solved, and high network throughput is achieved.

CN119094450BActive Publication Date: 2026-01-06CHINA MOBILE COMM LTD RES INST +1
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202411178544.7
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2024-08-26
Publication Date
2026-01-06
Estimated Expiration
2044-08-26

AI Technical Summary

Technical Problem

Traditional flow-by-flow load balancing schemes struggle to achieve even distribution when the number of data flows is small and the bandwidth is large, resulting in the inability to quickly retransmit lost packets and reducing network throughput.

Method used

Adding path information identifiers to the messages enables the switch to perform multi-path load balancing at the message level and to quickly retransmit packets based on packet loss by the receiving device.

Benefits of technology

It enables rapid retransmission of messages, ensuring the effective throughput of the network.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119094450B_ABST
    Figure CN119094450B_ABST
Patent Text Reader

Abstract

The application discloses a message processing method, a first device, a second device, a third device, a storage medium and a computer program product. The method comprises the following steps: a first device determines first information corresponding to a first data stream, wherein the first information is used for indicating the number of one or more candidate paths corresponding to the first data stream, and the first data stream comprises a plurality of first messages; a plurality of second messages are generated by using the first information and the plurality of first messages, wherein each second message comprises at least second information, the second information is used for indicating a transmission path corresponding to the second message, and the second information is associated with a sequence number of a first message corresponding to the second message in the first data stream; and the plurality of second messages are sent out.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This application relates to the field of network transmission technology, and in particular to a message processing method, apparatus, related equipment, storage medium and computer program product. Background Technology

[0002] Traditional data centers typically employ flow-by-flow load balancing schemes based on the Equal-cost multi-path routing (ECMP) algorithm. This involves using a five-tuple flow as the granularity and employing a hash algorithm to distribute different data flows across multiple paths for transmission. However, in some scenarios (such as AI training traffic in intelligent computing centers), data flows may be characterized by a small number of data flows but high bandwidth. In such cases, flow-by-flow load balancing schemes struggle to achieve even distribution of data flows.

[0003] Therefore, related technologies have proposed finer-grained load balancing schemes, which distribute different packets across multiple paths for transmission at the packet level to achieve per-packet load balancing. However, in the event of packet loss, the above schemes cannot achieve fast retransmission of packets, which leads to a reduction in the effective throughput of the network. Summary of the Invention

[0004] To address the related technical issues, embodiments of this application provide a message processing method, apparatus, related equipment, storage medium, and computer program product.

[0005] The technical solution of this application embodiment is implemented as follows:

[0006] This application provides a message processing method applied to a first device, including:

[0007] Determine the first information corresponding to the first data stream, the first information being used to indicate the number of one or more candidate paths corresponding to the first data stream, the first data stream containing multiple first messages;

[0008] Using the first information and the plurality of first messages, a plurality of second messages are generated. Each second message contains at least second information, which is used to indicate the transmission path corresponding to the second message. The second information is associated with the sequence number of the first message corresponding to the second message in the first data stream.

[0009] Send the aforementioned multiple second messages.

[0010] In the above scheme, generating multiple second messages using the first information and the multiple first messages includes:

[0011] Using the first information, a corresponding transmission path is selected for each of the plurality of first messages;

[0012] The plurality of second messages are generated using the plurality of first messages and the transmission paths corresponding to the plurality of first messages.

[0013] In the above scheme, generating multiple second messages using the first information and the multiple first messages includes:

[0014] Using the first information, a corresponding transmission path is selected for each of the plurality of first messages;

[0015] The plurality of second messages are generated using the plurality of first messages and the transmission paths corresponding to the plurality of first messages.

[0016] In the above scheme, generating multiple second messages using the first information and the multiple first messages includes:

[0017] Using the first information, a corresponding transmission path is selected for each of the plurality of first messages;

[0018] The plurality of second messages are generated using the plurality of first messages and the transmission paths corresponding to the plurality of first messages.

[0019] In the above scheme, each second message also includes fifth information, which represents the sequence number of the first message corresponding to the second message in the first message group associated with the first message.

[0020] In the above scheme, each second message also includes sixth information, which is used to indicate the first data stream associated with the second message.

[0021] This application also provides a message processing method, applied to a second device, including:

[0022] Receive multiple second messages, each second message containing at least second information, the second information being used to indicate the transmission path corresponding to the second message, the second information being associated with the sequence number of the first message corresponding to the second message in the first data stream, the first data stream containing multiple first messages;

[0023] Using the second information corresponding to the plurality of second messages, it is determined whether one or more second messages have been lost;

[0024] In the event of packet loss of one or more second messages, a seventh message is sent to the first device, the seventh message being used to request the retransmission of the one or more second messages.

[0025] In the above scheme, determining whether one or more second messages have been lost using the second information corresponding to the plurality of second messages includes:

[0026] Obtain first information corresponding to the first data stream, wherein the first information is used to indicate the number of one or more candidate paths corresponding to the first data stream;

[0027] Using the second information corresponding to the plurality of second messages and the first information, the eighth information is determined, wherein the eighth information represents the message reception status corresponding to each candidate path in the one or more candidate paths;

[0028] Using the eighth information, it is determined whether one or more of the second messages have been lost.

[0029] In the above scheme, determining the eighth information using the second information corresponding to the plurality of second messages and the first information includes:

[0030] Obtain the third information corresponding to the first data stream, wherein the third information represents the length of the message group associated with the plurality of first messages;

[0031] The eighth information is determined by using the second information, the first information, and the third information corresponding to the plurality of second messages.

[0032] In the above scheme, each second message further includes ninth information, which represents the sequence number of the first message corresponding to the second message in the first data stream; the step of using the eighth information to determine whether one or more second messages have been lost includes:

[0033] Using the ninth information and the eighth information corresponding to the plurality of second messages, it is determined whether one or more of the second messages have been lost.

[0034] In the above scheme, each second message further includes fifth information, which represents the sequence number of the first message corresponding to the second message in the first message group associated with the first message, and the first message group includes one or more first messages; the step of using the second information corresponding to the plurality of second messages to determine whether one or more second messages have been lost includes:

[0035] By using the second and fifth information corresponding to the plurality of second messages, it is determined whether one or more of the second messages have been lost.

[0036] In the above scheme, each second message also includes sixth information, which is used to indicate the first data stream associated with the second message.

[0037] This application also provides a message processing method applied to a third device, including:

[0038] Receive multiple second messages, each second message containing at least second information, the second information being used to indicate the transmission path corresponding to the second message, the second information being associated with the sequence number of the first message corresponding to the second message in the first data stream, the first data stream containing multiple first messages;

[0039] Based on the second information corresponding to the plurality of second messages, the plurality of second messages are sent; wherein, second messages with the same second information are sent through the same transmission path, and second messages with different second information are sent through different transmission paths.

[0040] In the above scheme, each second message further includes sixth information, which is used to indicate the first data stream associated with the second message; the step of sending the plurality of second messages based on the second information corresponding to the plurality of second messages includes:

[0041] Based on the second information and the sixth information corresponding to the second message, the plurality of second messages are sent; wherein, second messages with the same second information and the same sixth information are sent through the same transmission path, and second messages with different second information and / or different sixth information are sent through different transmission paths.

[0042] This application also provides a message processing apparatus, including:

[0043] The first determining unit is used to determine the first information corresponding to the first data stream, wherein the first information is used to indicate the number of one or more candidate paths corresponding to the first data stream, and the first data stream contains multiple first messages.

[0044] The generation unit is configured to generate a plurality of second messages using the first information and the plurality of first messages, each second message containing at least second information, the second information being used to indicate the transmission path corresponding to the second message, and the second information being associated with the sequence number of the first message corresponding to the second message in the first data stream;

[0045] The first sending unit is used to send the plurality of second messages.

[0046] This application also provides a message processing apparatus, including:

[0047] A first receiving unit is configured to receive a plurality of second messages, each second message containing at least second information, the second information being used to indicate the transmission path corresponding to the second message, the second information being associated with the sequence number of the first message corresponding to the second message in a first data stream, the first data stream containing a plurality of first messages;

[0048] The second determining unit is used to determine, using the second information corresponding to the plurality of second messages, whether one or more second messages have been lost;

[0049] The second sending unit is configured to send a seventh message to the first device in the event of packet loss of one or more second messages, the seventh message being used to request retransmission of the one or more second messages.

[0050] This application also provides a message processing apparatus, including:

[0051] The second receiving unit is configured to receive a plurality of second messages, each second message containing at least second information, the second information being used to indicate the transmission path corresponding to the second message, the second information being associated with the sequence number of the first message corresponding to the second message in the first data stream, the first data stream containing a plurality of first messages;

[0052] The third sending unit is used to send the plurality of second messages based on the second information corresponding to the plurality of second messages; wherein, second messages with the same second information are sent through the same transmission path, and second messages with different second information are sent through different transmission paths.

[0053] This application embodiment also provides a first device, including: a first processor and a first communication interface; wherein,

[0054] The first processor is configured to determine first information corresponding to a first data stream, the first information indicating the number of one or more candidate paths corresponding to the first data stream, the first data stream containing multiple first packets; and to generate multiple second packets using the first information and the multiple first packets, each second packet containing at least second information, the second information indicating the transmission path corresponding to the second packet, the second information being associated with the sequence number of the first packet corresponding to the second packet in the first data stream;

[0055] The first communication interface is used to send the plurality of second messages.

[0056] This application also provides a second device, including: a second processor and a second communication interface; wherein,

[0057] The second communication interface is used to receive multiple second messages, each second message containing at least second information, the second information being used to indicate the transmission path corresponding to the second message, the second information being associated with the sequence number of the first message corresponding to the second message in the first data stream, the first data stream containing multiple first messages;

[0058] The second processor is configured to determine whether one or more second messages have been lost by using the second information corresponding to the plurality of second messages; and in the event that one or more second messages have been lost, to send seventh information to the first device through the second communication interface, the seventh information being used to request the retransmission of the one or more second messages.

[0059] This application embodiment also provides a third device, including: a third processor and a third communication interface; wherein,

[0060] The third communication interface is used to receive multiple second messages, each second message containing at least second information, the second information indicating the transmission path corresponding to the second message, the second information being associated with the sequence number of the first message corresponding to the second message in a first data stream, the first data stream containing multiple first messages; and to send the multiple second messages based on the second information corresponding to the multiple second messages; wherein, second messages with the same second information are sent through the same transmission path, and second messages with different second information are sent through different transmission paths.

[0061] This application also provides a first device, including: a first processor and a first memory for storing a computer program capable of running on the processor.

[0062] Wherein, when the first processor is used to run the computer program, it executes the steps of any of the methods described above on the first device side.

[0063] This application also provides a second device, including: a second processor and a second memory for storing a computer program capable of running on the processor.

[0064] Wherein, when the second processor is used to run the computer program, it executes the steps of any of the methods described above on the second device side.

[0065] This application also provides a third device, including: a third processor and a third memory for storing a computer program capable of running on the processor.

[0066] The third processor, when running the computer program, executes the steps of any of the methods described above on the third device side.

[0067] This application embodiment also provides a storage medium storing a computer program thereon, wherein when the computer program is executed by a processor, it implements the steps of any of the methods described above on the first device side, or implements the steps of any of the methods described above on the second device side, or implements the steps of any of the methods described above on the third device side.

[0068] This application also provides a computer program product, including a computer program that, when executed by a processor, implements the steps of any of the methods described above on the first device side, or the steps of any of the methods described above on the second device side, or the steps of any of the methods described above on the third device side.

[0069] The data transmission method, apparatus, related devices, storage media, and computer program products provided in this application embodiment include: a first device determining first information corresponding to a first data stream, the first information indicating the number of one or more candidate paths corresponding to the first data stream, the first data stream containing multiple first packets; generating multiple second packets using the first information and the multiple first packets, each second packet containing at least second information, the second information indicating the transmission path corresponding to the second packet, the second information being associated with the sequence number of the first packet corresponding to the second packet in the first data stream; and sending the multiple second packets; while a third device sends the multiple second packets based on the second information corresponding to the multiple second packets; wherein, second packets with the same second information are sent through the same transmission path, and second packets with different second information are sent through different transmission paths; a second device uses the second information corresponding to the multiple second packets to determine whether one or more second packets have been lost; and in the case of one or more second packets being lost, sending seventh information to the first device, the seventh information being used to request the retransmission of the one or more second packets. The technical solution provided in this application embodiment allows the first device to add second information associated with the transmission path to each message during message transmission between the first device and the second device. This enables the third device (such as a switch) to perform multi-path load balancing based on the second information, ensuring that messages with the same second information are transmitted to the second device through the same transmission path. The second device can determine the message transmission path based on the association between the second information and the message sequence number, thereby quickly judging packet loss. In this way, in the event of packet loss, the message can be quickly retransmitted, ensuring the effective throughput of the network. Attached Figure Description

[0070] Figure 1 This is a schematic diagram of a message load balancing scheme in related technologies.

[0071] Figure 2 This is a schematic diagram of another message load balancing scheme in related technologies;

[0072] Figure 3 This is a schematic flowchart of a first message processing method according to an embodiment of this application;

[0073] Figure 4This is a schematic diagram illustrating the structure for generating a second message according to an embodiment of this application;

[0074] Figure 5 This is a schematic diagram of the structure of the second message in an embodiment of this application;

[0075] Figure 6 This is a schematic flowchart of the second message processing method according to an embodiment of this application;

[0076] Figure 7 This is a schematic flowchart of a third message processing method according to an embodiment of this application;

[0077] Figure 8 This is a schematic diagram of the structure of a first message processing device according to an embodiment of this application;

[0078] Figure 9 This is a schematic diagram of the structure of a second message processing device according to an embodiment of this application;

[0079] Figure 10 This is a schematic diagram of the third type of message processing device according to an embodiment of this application;

[0080] Figure 11 This is a schematic diagram of the structure of the first device according to an embodiment of this application;

[0081] Figure 12 This is a schematic diagram of the structure of the second device according to an embodiment of this application;

[0082] Figure 13 This is a schematic diagram of the third device structure according to an embodiment of this application;

[0083] Figure 14 This is a schematic diagram of the message processing system structure according to an embodiment of this application. Detailed Implementation

[0084] The present application will now be described in further detail with reference to the accompanying drawings and embodiments.

[0085] In related technologies, based on the different roles in determining the message transmission path, per-packet load balancing schemes can be divided into network-side per-packet load balancing schemes and terminal-side per-packet load balancing schemes.

[0086] In per-packet load balancing schemes on the network side, such as Figure 1As shown, the switch selects a forwarding path for each packet from multiple available paths according to a preset strategy (such as a hash algorithm or round-robin method); while the sending server transmits packets to the switch based on relevant protocols (such as Remote Direct Memory Access (RDMA) or Transmission Control Protocol (TCP)). During this process, the sending server does not participate in the path selection, nor is it aware of the forwarding path of each packet.

[0087] In addition, in the per-packet load balancing scheme on the terminal side, such as Figure 2 As shown, the sending server changes the hash field (which can also be understood as a field affecting hash factors, such as in User Datagram Protocol (UDP)) in the header (also called the protocol header) of each packet, thereby changing the forwarding path (also called the hash path or transmission path) for different packets. The switch, based on the ECMP algorithm, selects the corresponding forwarding path for each packet sequentially. Because the hash field in each packet header is different, a balanced distribution effect is achieved packet-by-packet. In the above scheme, neither the sending nor receiving server can know the parameters of the switch executing the ECMP algorithm; therefore, they cannot know the forwarding path of the packets.

[0088] As described above, neither the sending nor receiving server can determine the forwarding path of each packet. This causes two main problems: First, in scenarios where packets are lost, both the sending and receiving servers can only determine packet loss by setting timers (which can be understood as timeout retransmission). Since the forwarding path is unclear, it's difficult to perform rapid retransmission, leading to a decrease in network throughput. Second, if transmission equipment malfunctions and cannot quickly self-heal, the unclear forwarding path makes it difficult to locate the transmission equipment causing packet loss, hindering rapid switching of forwarding paths and negatively impacting network maintenance.

[0089] Based on this, in various embodiments of this application, during the packet transmission process between the sending and receiving devices, by adding an identifier with path information (such as a container ID) to the packet, the switch can perform multi-path load balancing at the packet granularity. At the same time, the receiving device can determine the forwarding path of each packet based on the identifier with path information. This is beneficial for the receiving device to determine whether packet loss has occurred on each forwarding path in the case of packet-by-packet load balancing and out-of-order packet arrival, thereby performing fast retransmission and network maintenance.

[0090] This application provides a message processing method, such as... Figure 3 As shown, applied to a first device, the method includes:

[0091] Step 301: Determine the first information corresponding to the first data stream, wherein the first information is used to indicate the number of one or more candidate paths corresponding to the first data stream, and the first data stream contains multiple first messages;

[0092] Step 302: Using the first information and the plurality of first messages, generate a plurality of second messages, each second message containing at least second information, the second information being used to indicate the transmission path corresponding to the second message, and the second information being associated with the sequence number of the first message corresponding to the second message in the first data stream;

[0093] Step 303: Send the plurality of second messages.

[0094] In practical applications, the first device can be referred to as a sender, sender device, or sender server, etc., and has at least message processing and transmission functions. In this application embodiment, the name of the first device is not limited, as long as its functions are implemented.

[0095] In practical applications, before step 301, the first device can be pre-configured with a correspondence between different types of data streams and the number of corresponding candidate paths through centralized configuration, so that the first device can obtain the first information according to the configured correspondence; wherein, the one or more candidate paths (also known as available paths) can be understood as the available equivalent paths between the first device and the second device (also known as the receiving device or receiving end).

[0096] For example, when the first device and the second device transmit messages based on the RDMA protocol, the first device can determine a QP connection associated with RDMA (which can be understood as a connection in the RDMA protocol) to determine the first data stream; then, based on the configured correspondence, the first device can obtain the number of available equivalent multipaths (which can be represented as pnum) of the first data stream.

[0097] In practical applications, for the multiple first messages, the first device can select the corresponding transmission path for each first message at the message level, thereby achieving per-packet load balancing.

[0098] Specifically, in one embodiment, generating a plurality of second messages using the first information and the plurality of first messages includes:

[0099] Using the first information, a corresponding transmission path is selected for each of the plurality of first messages;

[0100] The plurality of second messages are generated using the plurality of first messages and the transmission paths corresponding to the plurality of first messages.

[0101] The second information can be understood as the path identifier of the second message (also known as the container identifier (e.g., container ID (CID))). Each path identifier can indicate the transmission path corresponding to the second message in one or more candidate paths. In addition, each path identifier is associated with the sequence number (also known as the native message sequence number, specifically represented as PSN) of the first message corresponding to the second message in the first data stream. The sequence number can reflect the order of the first message in the first data stream.

[0102] Here, for each first message, the first device can select a candidate path from one or more candidate paths in a polling manner, and use the selected candidate path as the transmission path (which can also be understood as loading or spraying the first message onto the transmission path).

[0103] For example, assuming the number of candidate paths corresponding to the first data stream is 3, and there are 6 first packets, namely first packet 1 (sequence number 1 in the first data stream, i.e., PSN 1), first packet 2 (sequence number 2 in the first data stream, i.e., PSN 2), first packet 3 (sequence number 3 in the first data stream, i.e., PSN 3), first packet 4 (sequence number 4 in the first data stream, i.e., PSN 4), first packet 5 (sequence number 5 in the first data stream, i.e. PSN 5), and first packet 6 (sequence number 6 in the first data stream, i.e., PSN 6), the first device can select a candidate path for the first packet in a round-robin manner, for example, select candidate path 1 for first packet 1, candidate path 2 for first packet 2, candidate path 3 for first packet 3, candidate path 1 for first packet 4, candidate path 2 for first packet 5, and candidate path 3 for first packet 6.

[0104] In practical applications, for each first message, the first device can generate corresponding second information for each first message based on the selected transmission path, and establish an association relationship (also known as a deterministic mapping relationship or pattern) between the second information and the sequence number of the first message in the first data stream.

[0105] For example, when candidate path 1 is selected for first message 1 and first message 4, the first device can generate second information (which can be represented as CID=0) for first message 1 and first message 4 respectively, and associate the generated second information with the sequence numbers corresponding to first message 1 and first message 4; when candidate path 2 is selected for first message 2 and first message 5, the first device can generate second information (which can be represented as CID=1) for first message 2 and first message 5, and associate the generated second information with the sequence numbers corresponding to first message 2 and first message 5; when candidate path 3 is selected for first message 3 and first message 6, the first device can generate second information (which can be represented as CID=2) for first message 3 and first message 6, and associate the generated second information with the sequence numbers corresponding to first message 1 and first message 4.

[0106] In practical applications, during the process of selecting a transmission path, the first device can also group the first message and select a transmission path for the first message in groups so that subsequent message transmission can be carried out in groups.

[0107] Specifically, in one embodiment, selecting a corresponding transmission path for each of the plurality of first messages using the first information includes:

[0108] Determine the third information corresponding to the first data stream, wherein the third information represents the length of the message group associated with the plurality of first messages;

[0109] Using the third information, the plurality of first messages are grouped to obtain a plurality of first message groups, each first message group containing one or more first messages;

[0110] Using the first information, a corresponding transmission path is selected for each of the plurality of first message groups.

[0111] In practical applications, the third information can be understood as the number of packets that are loaded into the first message each time on the transmission path. The third information can be called the container length (which can be represented as L), and can be preset as needed. This application embodiment does not limit this.

[0112] In practical applications, the third information can be pre-configured for the first device using a centralized configuration method, or it can be determined through negotiation with the second device. Then, the first device can select the corresponding transmission path for each first message group; the transmission path can be selected for the first message group based on an established correspondence (also known as a mathematical relationship).

[0113] Specifically, in one embodiment, selecting a corresponding transmission path for each of the plurality of first message groups using the first information includes:

[0114] Using the first information, the third information, and the fourth information, a corresponding transmission path is selected for each of the plurality of first message groups, wherein the fourth information represents the sequence number of one or more first messages associated with the first message group in the first data stream.

[0115] In practical applications, the fourth information can be understood as the sequence number of the first message in the first data stream contained in the first message group. For example, when the first device and the second device transmit messages based on the RDMA protocol, the fourth information can be the sequence number of the first message sent in a QP connection associated with RDMA, and set in the RDMA header of the first message.

[0116] In practical applications, the first device can obtain the fourth information from the header of one or more first messages associated with the first message group, and select a transmission path for the first message group based on the established correspondence; wherein, the correspondence can be represented as:

[0117]

[0118] Among them, CID is used to identify the transmission path, PSN represents the fourth information, L represents the third information, and pnum represents the first information.

[0119] Here, with L=1, formula (1) can be expressed as:

[0120] CID = PSN%pnum

[0121] For example, as shown in 4, assuming the container length is 4 (i.e., L=4), the number of candidate paths is 3 (i.e., pnum=3), and the first data stream contains 24 first messages, the first device can sequentially generate a first message group based on 4 first messages, and select a transmission path for the generated first message group. For example, it can select candidate path 1 for first message group 1 (containing first messages 1, 2, 3, and 4), candidate path 2 for first message group 2 (containing first messages 5, 6, 7, and 8), candidate path 3 for first message group 3 (containing first messages 9, 10, 11, and 12), candidate path 1 for first message group 4 (containing first messages 13, 14, 15, and 16), candidate path 2 for first message group 5 (containing first messages 17, 18, 19, and 20), and candidate path 3 for first message group 6 (containing first messages 21, 22, 23, and 24).

[0122] In addition, the first device can also determine the transmission path for the first message group through direct configuration, such as determining candidate path 2 for the first message group 1 and candidate path 3 for the first message group 2.

[0123] In practical applications, after the transmission path selection is completed, the first device can generate second information for each first message contained in the first message group based on the transmission path corresponding to each first message group, thereby generating the plurality of second messages; that is, the first device generates and encapsulates the second information to obtain the second message; wherein, the second information can be set in the message header of the second message.

[0124] For example, such as Figure 4 As shown, when candidate path 1 is selected for first message group 1 and first message group 4, the first device can generate second information (which can be represented as CID=0) for first message group 1 and first message group 4 respectively; when candidate path 2 is selected for first message group 2 and first message group 5, the first device can generate second information (which can be represented as CID=1) for first message group 2 and first message group 5; when candidate path 3 is selected for first message group 3 and first message group 6, the first device can generate second information (which can be represented as CID=2) for first message group 3 and first message group 6.

[0125] In practical applications, during the generation of the plurality of second messages, the first device can also generate fifth information for the first message associated with the first message group to indicate the order of the first message in the first message group, and encapsulate the fifth information to obtain the plurality of second messages; wherein, the fifth information can be set in the message header of the second message. That is, in one embodiment, each second message can also contain fifth information, which represents the sequence number of the first message corresponding to the second message in the first message group associated with the first message.

[0126] In practical applications, the fifth piece of information can be called the container sequence number (CSN, Container_SequenceNumber), which is used at least for the second device to determine packet loss.

[0127] It should be noted that within a first message group, the sequence number of the first message corresponding to the second message in the first message group can be continuously increasing; of course, for the same transmission path, the sequence number of the first message corresponding to the second message in different first message groups can also be continuously increasing.

[0128] For example, such as Figure 4As shown, for the first message group 2, the sequence number of the first message 5 in the first data stream is 5 (i.e., PSN = 5), and the sequence number in the first message group 2 is 1 (i.e., CSN = 1); the sequence number of the first message 6 in the first data stream is 6 (i.e., PSN = 6), and the sequence number in the first message group 2 is 6 (i.e., CSN = 2); the sequence number of the first message 7 in the first data stream is 7 (i.e., PSN = 7), and the sequence number in the first message group 2 is 3 (i.e., CSN = 3); the sequence number of the first message 8 (i.e., PSN = 8) in the first data stream is 5, and the sequence number in the first message group 2 is 4 (i.e., CSN = 4).

[0129] In one embodiment, each second message may also include sixth information, which is used to indicate the first data stream associated with the second message.

[0130] The sixth information can be understood as a data flow identifier (or Flow ID), which represents a data flow (specifically, a first data flow) transmitted between two endpoints (such as a first device and a second device). The sixth information can be represented by multiple fields as needed, and this application embodiment does not limit this. The sixth information can be set in the header of the second message.

[0131] For example, such as Figure 5 As shown, based on the second message containing the fourth information (represented as PSN) and Media Access Control (MAC) related information, the first device can add second information (represented as CID), fifth information (represented as CSN), and sixth information (represented as Flow ID) to the second message. Additionally, the first device can add a field (represented as R) to the second message and reserve the added field for later use as needed.

[0132] In practical applications, before step 303, the first device can communicate with the second device to inform the second device of the rule-related information of the message transmission. The rule-related information may include one or more of the following (or at least one) of the association between the first information, the third information, and the sequence number of the second information and the first message in the first data stream: the rule-related information. This enables the second device to determine the transmission path of the second message based on the rule-related information, thereby determining whether the second message has been lost.

[0133] Then, the first device can send the plurality of second messages to the third device, enabling the third device to perform load balancing of multiple transmission paths; wherein, the third device can be called a switch, such as a leaf switch in a leaf-spine topology, and has at least the function of multi-path load sharing. The embodiments of this application do not limit the type of the third device, as long as its function is implemented.

[0134] It should be noted that during message transmission, the first device can periodically detect one or more candidate paths and obtain detection results. These detection results characterize the quality of the candidate paths (e.g., whether a fault has occurred or if there are quality issues). If a candidate path has quality problems, the first device can reselect a transmission path for subsequent first messages based on the detection results, generate second information based on the reselected transmission path, and adjust (or update) the association between the second information and the sequence number of the first message in the first data stream. This allows subsequent message transmission to be based on the adjusted association between the second information and the sequence number of the first message in the first data stream. Alternatively, the second device can detect one or more candidate paths, obtain detection results, and send these results to the first device.

[0135] For example, assuming there are 3 candidate paths, the first device can detect the latency of each candidate path and obtain the detection result. If the first candidate path fails, the first device can select a transmission path for the subsequent transmission of the first message from the remaining two candidate paths by polling, and generate second information based on the reselected transmission path. At the same time, the association between the second information and the sequence number of the first message in the first data stream is adjusted.

[0136] Accordingly, embodiments of this application also provide a message processing method, such as... Figure 6 As shown, applied to a third device, the method includes:

[0137] Step 601: Receive multiple second messages, each second message containing at least second information, the second information being used to indicate the transmission path corresponding to the second message, the second information being associated with the sequence number of the first message corresponding to the second message in the first data stream, the first data stream containing multiple first messages;

[0138] Step 602: Based on the second information corresponding to the plurality of second messages, send the plurality of second messages; wherein, second messages with the same second information are sent through the same transmission path, and second messages with different second information are sent through different transmission paths.

[0139] In practical applications, after receiving the plurality of second messages, the third device can select the second message with the same second information from the plurality of second messages and send the second message with the same second information through the same transmission path, so that the second messages with the same second information can be transmitted to the second device in the order of transmission.

[0140] It should be noted that, from the perspective of the first device, setting the second information in the second message can indicate multiple second messages that need to be transmitted through the same transmission path, but it does not specify which specific transmission path (which can be understood as not specifying the port, protocol, etc. of the transmission path); while from the perspective of the third device, after determining the second messages that need to be transmitted through the same transmission path based on the second information, the third device can select the same physical layer transmission path for the determined second messages (for example, determine the transmission path of the port and protocol), and send the determined second messages through the selected transmission path.

[0141] In practical applications, when the second message also contains the sixth information, the third device can determine the second message that needs to be transmitted through the same transmission path based on the second information and the sixth information, and select a transmission path for the determined second message.

[0142] Specifically, in one embodiment, each second message further includes sixth information, the sixth information being used to indicate a first data stream associated with the second message; the step of sending the plurality of second messages based on the second information corresponding to the plurality of second messages includes:

[0143] Based on the second information and the sixth information corresponding to the second message, the plurality of second messages are sent; wherein, second messages with the same second information and the same sixth information are sent through the same transmission path, and second messages with different second information and / or different sixth information are sent through different transmission paths.

[0144] Here, for the plurality of second messages, the third device can identify a plurality of second messages with the same sixth information (which can be understood as second messages from the same first data stream). Based on this, the third device can further identify second messages with the same second information (which can be understood as second messages from the same first data stream and need to be transmitted through the same transmission path). Then, the third device can select the same transmission path for the second messages with the same sixth information and second information based on load balancing, and send the determined second messages through the selected transmission path.

[0145] Furthermore, for second packets with different second information (which can be understood as second packets from different first data streams), the third device can select different transmission paths based on load balancing and send second packets with different second information through the selected transmission paths. Similarly, for second packets with the same second information but different sixth information (which can be understood as second packets from the same first data stream but needing to be transmitted through different transmission paths), the third device can select different transmission paths based on load balancing and send second packets with the same second information but different sixth information through the selected transmission paths. In this way, packets from the same data stream with the same second information can travel along one path, while packets with different second information can travel along different paths.

[0146] Accordingly, embodiments of this application also provide a message processing method, such as... Figure 7 As shown, applied to a second device, the method includes:

[0147] Step 701: Receive multiple second messages, each second message containing at least second information, the second information being used to indicate the transmission path corresponding to the second message, the second information being associated with the sequence number of the first message corresponding to the second message in the first data stream, the first data stream containing multiple first messages;

[0148] Step 702: Using the second information corresponding to the plurality of second messages, determine whether one or more second messages have been lost;

[0149] Step 703: In the event of packet loss of one or more second messages, send a seventh message to the first device, the seventh message being used to request retransmission of the one or more second messages.

[0150] In practical applications, the second device should at least support packet loss detection and multipath quality monitoring. In this application embodiment, the name of the second device is not limited, as long as its functions are implemented.

[0151] In practical applications, during the reception of the multiple second messages, the second device can sequentially record the reception status information of each second message. This reception status information can include the transmission path and order of the second message, for example, using a bitmap to record the reception status information. Since the rules and related information for message transmission are predetermined, the second device can predict the reception status of the second messages based on the rule-related information and the reception status information, thereby determining whether packet loss has occurred.

[0152] Specifically, in one embodiment, determining whether one or more second messages have been lost using the second information corresponding to the plurality of second messages includes:

[0153] Obtain first information corresponding to the first data stream, wherein the first information is used to indicate the number of one or more candidate paths corresponding to the first data stream;

[0154] Using the second information corresponding to the plurality of second messages and the first information, the eighth information is determined, wherein the eighth information represents the message reception status corresponding to each candidate path in the one or more candidate paths;

[0155] Using the eighth information, it is determined whether one or more of the second messages have been lost.

[0156] In practical applications, the second device can obtain the first information from the first device. In other words, the rule-related information can include the first information and the association between the second information and the sequence number of the first message in the first data stream.

[0157] In practical applications, after obtaining the first information, the second device can predict the reception status of each candidate path in one or more candidate paths based on the correlation between the second information and the sequence number of the first message in the first data stream, thereby obtaining the eighth information.

[0158] For example, assuming the number of candidate paths corresponding to the first data stream is 3, when the first device selects the transmission path in a round-robin manner, the second device can determine, according to the round-robin rule, that the first message corresponding to the second message received on candidate path 1 should be first message 0 (i.e., PSN is 0), first message 3 (i.e., PSN is 3), first message 6 (i.e., PSN is 6), and first message 9 (i.e., PSN is 9), etc.; the first message corresponding to the second message received on candidate path 2 should be first message 1 (i.e., PSN is 1), first message 4 (i.e., PSN is 4), first message 7 (i.e., PSN is 7), etc.; and the first message corresponding to the second message received on candidate path 3 should be first message 2 (i.e., PSN is 2), first message 5 (i.e., PSN is 5), first message 8 (i.e., PSN is 8), etc.

[0159] In practical applications, after determining the eighth information, the second device can determine whether one or more second messages have been lost based on the sequence number of the first message corresponding to the multiple second messages actually received in the first data stream.

[0160] Specifically, in one embodiment, each second message further includes ninth information, wherein the ninth information represents the sequence number of the first message corresponding to the second message in the first data stream; the step of using the eighth information to determine whether one or more second messages have been lost includes:

[0161] Using the ninth information and the eighth information corresponding to the plurality of second messages, it is determined whether one or more of the second messages have been lost.

[0162] In practical applications, during the process of determining whether one or more second messages have been lost, if the ninth information corresponding to the multiple received second messages all satisfy the message reception status represented by the eighth information, then the second device can determine that no one or more second messages have been lost; if the ninth information corresponding to the multiple received second messages does not satisfy the message reception status represented by the eighth information, then the second device can determine that one or more second messages have been lost.

[0163] For example, for candidate path 1, if the first message corresponding to the currently received second message is the first message 0, the second device can determine, according to the eighth information, that the first message corresponding to the next received second message should be the first message 3; in this case, if the first message corresponding to the next received second message is the first message 6, the second device can determine that a second message has been lost.

[0164] In practical applications, when messages are transmitted in groups, the second device can predict the reception status of the second message based on the third information, the first information, and the reception status information; that is, the prediction rule-related information may also include the third information.

[0165] Specifically, in one embodiment, determining the eighth information using the second information corresponding to the plurality of second messages and the first information includes:

[0166] Obtain the third information corresponding to the first data stream, wherein the third information represents the length of the message group associated with the plurality of first messages;

[0167] The eighth information is determined by using the second information, the first information, and the third information corresponding to the plurality of second messages.

[0168] Here, when transmitting messages in units of the first message group, the second device can predict the reception status of the first message group corresponding to each candidate path based on the association between the second information and the sequence number of the first message in the first data stream, and determine whether any second messages have been lost by combining the ninth information corresponding to the multiple second messages.

[0169] For example, assuming the number of candidate paths corresponding to the first data stream is 3 and the length of the message group is 4, the second device can determine, according to the polling rule, that the first message group corresponding to the second message received on candidate path 1 should be the first message group 1 (containing first messages 1, 2, 3, 4) and the first message group 4 (containing first messages 13, 14, 15, 16), the first message group corresponding to the second message received on candidate path 2 should be the first message group 2 (containing first messages 5, 6, 7, 8) and the first message group 5 (containing first messages 17, 18, 19, 20), and the first message group corresponding to the second message received on candidate path 3 should be the first message group 3 (containing first messages 9, 10, 11, 12) and the first message group 6 (containing first messages 21, 22, 23, 24). For candidate path 1, if the first message group corresponding to the currently received second message is the first message group 1 and the corresponding first message is the first message 0, the second device can determine, according to the eighth information, that the first message corresponding to the next received second message in the first message group 1 should be the first message 2; in this case, if the first message corresponding to the next received second message is the first message 3, the second device can determine that a second message has been lost.

[0170] In practical applications, when the second message also contains fifth information, the second device can determine the continuity of second messages with the same second information based on the fifth information corresponding to multiple second messages, thereby determining whether any second messages have been lost.

[0171] Specifically, in one embodiment, each second message may further include fifth information, wherein the fifth information represents the sequence number of the first message corresponding to the second message in the first message group associated with the first message, and the first message group includes one or more first messages; the step of using the second information corresponding to the plurality of second messages to determine whether one or more second messages have been lost includes:

[0172] By using the second and fifth information corresponding to the plurality of second messages, it is determined whether one or more of the second messages have been lost.

[0173] Here, by utilizing the second information corresponding to the plurality of second messages, the second device can determine a plurality of second messages having the same second information; based on the fifth information corresponding to the determined plurality of second messages, the second device can determine whether packet loss has occurred on the transmission path corresponding to the second information.

[0174] For example, assuming the number of candidate paths corresponding to the first data stream is 3 and the length of the packet group is 2, for candidate path 1, the second device can determine that the first packet group corresponding to the second packet received on candidate path 1 should be first packet group 1 (containing first packets 1, 2, 3, 4) and first packet group 4 (containing first packets 13, 14, 15, 16). Since the sequence number of the first packet in different first packet groups on the same candidate path is increasing, the second device can predict that the sequence number of the first packet corresponding to the second packet received on candidate path 1 in the first packet group should be 1, 2, 3, 4, 5, 6, 7, 8. If the sequence number of the first packet corresponding to the currently received second packet in the first packet group is 2, and the sequence number of the first packet corresponding to the next received second packet in the first packet group is 4, then the second device can determine that a second packet has been lost.

[0175] In practical applications, when it is determined that the second message has been lost, the second device can determine the ninth information corresponding to the lost second message based on the correlation between the second information and the sequence number of the first message in the first data stream. For example, using a polling pattern, the corresponding ninth information can be determined based on the fifth and second information corresponding to the lost second message. The formula can be expressed as:

[0176]

[0177] Here, with L=1, formula (2) can be expressed as:

[0178] PSN = CSN × pnum + CID

[0179] In practical applications, if one or more second messages are lost, the second device can send tenth information to the first device. The tenth information is used to request the retransmission of the lost second message, and the tenth information includes the ninth information corresponding to the lost second message.

[0180] Furthermore, by utilizing the second information corresponding to the multiple second messages and the association between the second information and the sequence number of the first message in the first data stream, the second device can also perform multi-path status monitoring. Specifically, ideally, the number of second messages received on each candidate path should be similar. By maintaining the number of second messages received on each candidate path, the transmission latency of the candidate path can be quickly determined (e.g., a higher number of received messages indicates a lower transmission latency), and corresponding operation and maintenance strategies can be implemented accordingly.

[0181] The data transmission method provided in this application embodiment includes: a first device determining first information corresponding to a first data stream, the first information indicating the number of one or more candidate paths corresponding to the first data stream, the first data stream containing multiple first packets; generating multiple second packets using the first information and the multiple first packets, each second packet containing at least second information, the second information indicating the transmission path corresponding to the second packet, the second information being associated with the sequence number of the first packet corresponding to the second packet in the first data stream; and sending the multiple second packets; while a third device sends the multiple second packets based on the second information corresponding to the multiple second packets; wherein, second packets with the same second information are sent through the same transmission path, and second packets with different second information are sent through different transmission paths; a second device uses the second information corresponding to the multiple second packets to determine whether one or more second packets have been lost; and in the case of one or more second packets being lost, sending seventh information to the first device, the seventh information being used to request the retransmission of the one or more second packets. The technical solution provided in this application embodiment allows the first device to add second information associated with the transmission path to each message during message transmission between the first device and the second device. This enables the third device (such as a switch) to perform multi-path load balancing based on the second information, ensuring that messages with the same second information are transmitted to the second device through the same transmission path. The second device can determine the message transmission path based on the association between the second information and the message sequence number, thereby quickly judging packet loss. In this way, in the event of packet loss, the message can be quickly retransmitted, ensuring the effective throughput of the network.

[0182] To implement the method of the embodiments of this application, the embodiments of this application also provide a message processing apparatus, disposed on a first device, such as... Figure 8 As shown, the device includes:

[0183] The first determining unit 801 is used to determine the first information corresponding to the first data stream, wherein the first information is used to indicate the number of one or more candidate paths corresponding to the first data stream, and the first data stream contains multiple first messages.

[0184] The generation unit 802 is configured to generate a plurality of second messages using the first information and the plurality of first messages, each second message containing at least second information, the second information being used to indicate the transmission path corresponding to the second message, and the second information being associated with the sequence number of the first message corresponding to the second message in the first data stream;

[0185] The first sending unit 803 is used to send the plurality of second messages.

[0186] In one embodiment, the generation unit 802 is configured to:

[0187] Using the first information, a corresponding transmission path is selected for each of the plurality of first messages;

[0188] The plurality of second messages are generated using the plurality of first messages and the transmission paths corresponding to the plurality of first messages.

[0189] In one embodiment, the generation unit 802 is configured to:

[0190] Determine the third information corresponding to the first data stream, wherein the third information represents the length of the message group associated with the plurality of first messages;

[0191] Using the third information, the plurality of first messages are grouped to obtain a plurality of first message groups, each first message group containing one or more first messages;

[0192] Using the first information, a corresponding transmission path is selected for each of the plurality of first message groups.

[0193] In one embodiment, the generation unit 802 is configured to select a corresponding transmission path for each of the plurality of first message groups using the first information, the third information, and the fourth information, wherein the fourth information represents the sequence number of one or more first messages associated with the first message group in the first data stream.

[0194] In practical applications, the first determining unit 801 and the generating unit 802 can be implemented by the processor in the message processing device; the first sending unit 803 can be implemented by the communication interface in the message processing device.

[0195] To implement the method of the embodiments of this application, the embodiments of this application also provide a message processing apparatus, disposed on a second device, such as... Figure 9 As shown, the device includes:

[0196] The first receiving unit 901 is configured to receive a plurality of second messages, each second message containing at least second information, the second information being used to indicate the transmission path corresponding to the second message, the second information being associated with the sequence number of the first message corresponding to the second message in the first data stream, the first data stream containing a plurality of first messages;

[0197] The second determining unit 902 is used to determine whether one or more second messages have been lost by using the second information corresponding to the plurality of second messages;

[0198] The second sending unit 903 is configured to send a seventh message to the first device in the event of packet loss of one or more second messages, the seventh message being used to request retransmission of the one or more second messages.

[0199] In one embodiment, the first receiving unit 901 is used to obtain first information corresponding to the first data stream, wherein the first information is used to indicate the number of one or more candidate paths corresponding to the first data stream;

[0200] The second determining unit 902 is used to determine eighth information by using the second information corresponding to the plurality of second messages and the first information, wherein the eighth information represents the message reception status corresponding to each candidate path in the one or more candidate paths; and to determine whether one or more second messages have been lost by using the eighth information.

[0201] In one embodiment, the first receiving unit 901 is used to obtain third information corresponding to the first data stream, wherein the third information represents the length of the message group associated with the plurality of first messages;

[0202] The second determining unit 902 is used to determine the eighth information using the second information, the first information, and the third information corresponding to the plurality of second messages.

[0203] In one embodiment, each second message further includes ninth information, which represents the sequence number of the first message corresponding to the second message in the first data stream. The second determining unit 902 is used to determine whether one or more second messages have been lost by using the ninth information corresponding to the plurality of second messages and the eighth information.

[0204] In one embodiment, each second message further includes fifth information, which represents the sequence number of the first message corresponding to the second message in the first message group associated with the first message. The first message group includes one or more first messages. The second determining unit 902 is used to determine whether one or more second messages have been lost by using the second information and the fifth information corresponding to the plurality of second messages.

[0205] In practical applications, the first receiving unit 901 and the second sending unit 903 can be implemented by the communication interface in the message processing device; the second determining unit 902 can be implemented by the processor in the message processing device.

[0206] To implement the method of the embodiments of this application, the embodiments of this application also provide a message processing apparatus, which is disposed on a third device, such as... Figure 10 As shown, the device includes:

[0207] The second receiving unit 1001 is used to receive a plurality of second messages, each second message containing at least second information, the second information being used to indicate the transmission path corresponding to the second message, the second information being associated with the sequence number of the first message corresponding to the second message in the first data stream, the first data stream containing a plurality of first messages;

[0208] The third sending unit 1002 is used to send the plurality of second messages based on the second information corresponding to the plurality of second messages; wherein, second messages with the same second information are sent through the same transmission path, and second messages with different second information are sent through different transmission paths.

[0209] In one embodiment, each second message further includes sixth information, which is used to indicate a first data stream associated with the second message; the third sending unit 1002 is used to send the plurality of second messages based on the second information and the sixth information corresponding to the second message; wherein, second messages with the same second information and sixth information are sent through the same transmission path, and second messages with different second information and / or different sixth information are sent through different transmission paths.

[0210] In practical applications, the second receiving unit 1001 and the third sending unit 1002 can be implemented by the communication interface in the message processing device.

[0211] It should be noted that the message processing device provided in the above embodiments is only illustrated by the division of the above program modules. In actual applications, the above processing can be assigned to different program modules as needed, that is, the internal structure of the device can be divided into different program modules to complete all or part of the processing described above. In addition, the message processing device and message processing method embodiments provided in the above embodiments belong to the same concept, and their specific implementation process can be found in the method embodiments, which will not be repeated here.

[0212] Based on the hardware implementation of the above program modules, and in order to implement the method on the first device side of the embodiments of this application, the embodiments of this application also provide a first device, such as... Figure 11 As shown, the first device 1100 includes:

[0213] The first communication interface 1101 is capable of exchanging information with the second and third devices;

[0214] The first processor 1102 is connected to the first communication interface 1101 to enable information interaction with the second and third devices, and to execute the methods provided by one or more technical solutions on the first device side when running a computer program;

[0215] The computer program is stored in the first memory 1103.

[0216] Specifically, the first processor 1102 is configured to determine first information corresponding to a first data stream, the first information indicating the number of one or more candidate paths corresponding to the first data stream, the first data stream containing multiple first packets; and to generate multiple second packets using the first information and the multiple first packets, each second packet containing at least second information, the second information indicating the transmission path corresponding to the second packet, the second information being associated with the sequence number of the first packet corresponding to the second packet in the first data stream;

[0217] The first communication interface 1101 is used to send the plurality of second messages.

[0218] In one embodiment, the first processor 1102 is configured to:

[0219] Using the first information, a corresponding transmission path is selected for each of the plurality of first messages;

[0220] The plurality of second messages are generated using the plurality of first messages and the transmission paths corresponding to the plurality of first messages.

[0221] In one embodiment, the first processor 1102 is configured to:

[0222] Determine the third information corresponding to the first data stream, wherein the third information represents the length of the message group associated with the plurality of first messages;

[0223] Using the third information, the plurality of first messages are grouped to obtain a plurality of first message groups, each first message group containing one or more first messages;

[0224] Using the first information, a corresponding transmission path is selected for each of the plurality of first message groups.

[0225] In one embodiment, the first processor 1102 is configured to select a corresponding transmission path for each of the plurality of first message groups using the first information, the third information, and the fourth information, wherein the fourth information represents the sequence number of one or more first messages associated with the first message group in the first data stream.

[0226] It should be noted that the specific processing procedures of the first processor 1102 and the first communication interface 1101 can be understood by referring to the above method.

[0227] Of course, in practical applications, the various components in the first device 1100 are coupled together via a bus system 1104. It can be understood that the bus system 1104 is used to implement communication between these components. In addition to a data bus, the bus system 1104 also includes a power bus, a control bus, and a status signal bus. However, for clarity, in... Figure 11 The general designated all buses as Bus System 1104.

[0228] The first memory 1103 in this embodiment is used to store various types of data to support the operation of the first device 1100. Examples of such data include any computer program used to operate on the first device 1100.

[0229] The methods disclosed in the above embodiments of this application can be applied to the first processor 1102, or implemented by the first processor 1102. The first processor 1102 may 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 or by instructions in the form of software in the first processor 1102. The first processor 1102 may be a general-purpose processor, a digital signal processor (DSP), or other programmable logic devices, discrete gate or transistor logic devices, discrete hardware components, etc. The first processor 1102 can implement or execute the methods, steps, and logic block diagrams disclosed in the embodiments of this application. The general-purpose processor may be a microprocessor or any conventional processor, etc. The steps of the methods disclosed in the embodiments of this application can be directly reflected as being executed by a hardware decoding processor, or being executed by a combination of hardware and software modules in the decoding processor. The software modules may be located in a storage medium, which is located in the first memory 1103. The first processor 1102 reads the information in the first memory 1103 and completes the steps of the aforementioned method in combination with its hardware.

[0230] In an exemplary embodiment, the first device 1100 may be implemented by one or more application-specific integrated circuits (ASICs), DSPs, programmable logic devices (PLDs), complex programmable logic devices (CPLDs), field-programmable gate arrays (FPGAs), general-purpose processors, controllers, microcontrollers (MCUs), microprocessors, or other electronic components to perform the aforementioned method.

[0231] Based on the hardware implementation of the above program modules, and in order to implement the method on the second device side of the embodiments of this application, the embodiments of this application also provide a second device, such as... Figure 12 As shown, the second device 1200 includes:

[0232] The second communication interface 1201 is capable of exchanging information with the first device and the third device;

[0233] The second processor 1202 is connected to the second communication interface 1201 to enable information interaction with the first device and the third device, and to execute the methods provided by one or more technical solutions on the second device side when running a computer program;

[0234] The computer program is stored in the second memory 1203.

[0235] Specifically, the second communication interface 1201 is used to receive a plurality of second messages, each second message containing at least second information, the second information being used to indicate the transmission path corresponding to the second message, the second information being associated with the sequence number of the first message corresponding to the second message in the first data stream, the first data stream containing a plurality of first messages;

[0236] The second processor 1202 is configured to determine whether one or more second messages have been lost by using the second information corresponding to the plurality of second messages; and in the event that one or more second messages have been lost, to send seventh information to the first device through the second communication interface 1201, the seventh information being used to request the retransmission of the one or more second messages.

[0237] In one embodiment, the second processor 1202 is configured to:

[0238] The first information corresponding to the first data stream is obtained through the second communication interface 1201. The first information is used to indicate the number of one or more candidate paths corresponding to the first data stream.

[0239] Using the second information corresponding to the plurality of second messages and the first information, the eighth information is determined, wherein the eighth information represents the message reception status corresponding to each candidate path in the one or more candidate paths;

[0240] Using the eighth information, it is determined whether one or more of the second messages have been lost.

[0241] In one embodiment, the second processor 1202 is configured to:

[0242] The third information corresponding to the first data stream is obtained through the second communication interface 1201, and the third information represents the length of the message group associated with the plurality of first messages;

[0243] The eighth information is determined by using the second information, the first information, and the third information corresponding to the plurality of second messages.

[0244] In one embodiment, each second message further includes ninth information, the ninth information representing the sequence number of the first message corresponding to the second message in the first data stream, and the second processor 1202 is used to determine whether one or more second messages have been lost by using the ninth information corresponding to the plurality of second messages and the eighth information.

[0245] In one embodiment, each second message further includes fifth information, which represents the sequence number of the first message corresponding to the second message in a first message group associated with the first message. The first message group includes one or more first messages. The second processor 1202 is used to determine whether one or more second messages have been lost by using the second information and the fifth information corresponding to the plurality of second messages.

[0246] It should be noted that the specific processing procedures of the second communication interface 1201 and the second processor 1202 can be understood by referring to the above method.

[0247] Of course, in practical applications, the various components in the second device 1200 are coupled together via the bus system 1204. It can be understood that the bus system 1204 is used to implement communication between these components. In addition to a data bus, the bus system 1204 also includes a power bus, a control bus, and a status signal bus. However, for clarity, in... Figure 12 The general designated all buses as Bus System 1204.

[0248] The second memory 1203 in this embodiment is used to store various types of data to support the operation of the second device 1200. Examples of such data include any computer program used to operate on the second device 1200.

[0249] The methods disclosed in the embodiments of this application can be applied to the second processor 1202, or implemented by the second processor 1202. The second processor 1202 may 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 or by instructions in the form of software in the second processor 1202. The second processor 1202 may be a general-purpose processor, a DSP, or other programmable logic devices, discrete gate or transistor logic devices, discrete hardware components, etc. The second processor 1202 can implement or execute the methods, steps, and logic block diagrams disclosed in the embodiments of this application. The general-purpose processor may be a microprocessor or any conventional processor, etc. The steps of the methods disclosed in the embodiments of this application can be directly manifested as being executed by a hardware decoding processor, or being executed by a combination of hardware and software modules in the decoding processor. The software modules may be located in a storage medium, which is located in the second memory 1203. The second processor 1202 reads the information in the second memory 1203 and completes the steps of the aforementioned method in combination with its hardware.

[0250] In an exemplary embodiment, the second device 1200 may be implemented by one or more ASICs, DSPs, PLDs, CPLDs, FPGAs, general-purpose processors, controllers, MCUs, microprocessors, or other electronic components to perform the aforementioned method.

[0251] Based on the hardware implementation of the above program modules, and in order to implement the method on the third device side of the embodiments of this application, the embodiments of this application also provide a third device, such as... Figure 13 As shown, the third device 1300 includes:

[0252] The third communication interface 1301 is capable of exchanging information with the second device and the first device;

[0253] The third processor 1302 is connected to the third communication interface 1301 to enable information interaction with the second device and the first device, and to execute the methods provided by one or more technical solutions on the third device side when running a computer program;

[0254] The computer program is stored in the third memory 1303.

[0255] Specifically, the third communication interface 1301 is used to receive a plurality of second messages, each second message containing at least second information, the second information indicating the transmission path corresponding to the second message, the second information being associated with the sequence number of the first message corresponding to the second message in the first data stream, the first data stream containing a plurality of first messages; and to send the plurality of second messages based on the second information corresponding to the plurality of second messages; wherein, second messages with the same second information are sent through the same transmission path, and second messages with different second information are sent through different transmission paths.

[0256] In one embodiment, each second message further includes sixth information, which is used to indicate a first data stream associated with the second message. The third communication interface 1301 is used to send the plurality of second messages based on the second information and the sixth information corresponding to the second message. The second messages with the same second information and sixth information are sent through the same transmission path, and the second messages with different second information and / or different sixth information are sent through different transmission paths.

[0257] It should be noted that the specific processing procedure of the third communication interface 1301 can be understood by referring to the above method.

[0258] Of course, in practical applications, the various components in the third device 1300 are coupled together via the bus system 1304. It can be understood that the bus system 1304 is used to implement communication between these components. In addition to a data bus, the bus system 1304 also includes a power bus, a control bus, and a status signal bus. However, for clarity, in... Figure 13 The general designated all buses as Bus System 1304.

[0259] The third memory 1303 in this embodiment is used to store various types of data to support the operation of the third device 1300. Examples of such data include any computer program used to operate on the third device 1300.

[0260] The methods disclosed in the embodiments of this application can be applied to, or implemented by, the third processor 1302. The third processor 1302 may be an integrated circuit chip with signal processing capabilities. During implementation, each step of the above method can be completed by the integrated logic circuitry of the hardware or by instructions in the software form of the third processor 1302. The third processor 1302 may be a general-purpose processor, a DSP, or other programmable logic devices, discrete gate or transistor logic devices, discrete hardware components, etc. The third processor 1302 can implement or execute the methods, steps, and logic block diagrams disclosed in the embodiments of this application. The general-purpose processor may be a microprocessor or any conventional processor, etc. The steps of the methods disclosed in the embodiments of this application can be directly manifested as execution by a hardware decoding processor, or execution by a combination of hardware and software modules in the decoding processor. The software modules may be located in a storage medium, specifically a third memory 1303. The third processor 1302 reads information from the third memory 1303 and, in conjunction with its hardware, completes the steps of the aforementioned method.

[0261] In an exemplary embodiment, the third device 1300 may be implemented by one or more ASICs, DSPs, PLDs, CPLDs, FPGAs, general-purpose processors, controllers, MCUs, microprocessors, or other electronic components to perform the aforementioned method.

[0262] It is understood that the memories (first memory 1103, second memory 1203, and third memory 1303) in the embodiments of this application can be volatile memories or non-volatile memories, or both. Non-volatile memories can be read-only memories (ROM), programmable read-only memories (PROM), erasable programmable read-only memories (EPROM), electrically erasable programmable read-only memories (EEPROM), magnetic random access memories (FRAM), flash memories, magnetic surface memories, optical discs, or compact disc read-only memories (CD-ROM); magnetic surface memories can be disk storage or magnetic tape storage. Volatile memories can be random access memories (RAM), which are used as external caches.By way of example, but not limitation, many forms of RAM are available, such as Static Random Access Memory (SRAM), Synchronous Static Random Access Memory (SSRAM), Dynamic Random Access Memory (DRAM), Synchronous Dynamic Random Access Memory (SDRAM), Double Data Rate Synchronous Dynamic Random Access Memory (DDRSDRAM), Enhanced Synchronous Dynamic Random Access Memory (ESDRAM), SyncLink Dynamic Random Access Memory (SLDRAM), and Direct Rambus Random Access Memory (DRRAM). The memories described in the embodiments of this application are intended to include, but are not limited to, these and any other suitable types of memory.

[0263] To implement the method provided in the embodiments of this application, the embodiments of this application also provide a message processing system, such as... Figure 14 As shown, the system includes: a first device 1401, a second device 1402, and a third device 1403.

[0264] It should be noted that the specific processing procedures of the first device 1401, the second device 1402, and the third device 1403 have been detailed above and will not be repeated here.

[0265] In an exemplary embodiment, this application also provides a storage medium, namely a computer storage medium, specifically a computer-readable storage medium. For example, it may include a first memory 1103 storing a computer program, which can be executed by a first processor 1102 of a first device 1100 to complete the steps described in the aforementioned first device-side method. Another example is a second memory 1203 storing a computer program, which can be executed by a second processor 1202 of a second device 1200 to complete the steps described in the aforementioned second device-side method. Yet another example is a third memory 1303 storing a computer program, which can be executed by a third processor 1302 of a third device 1300 to complete the steps described in the aforementioned third device-side method. The computer-readable storage medium may be a memory such as FRAM, ROM, PROM, EPROM, EEPROM, Flash Memory, magnetic surface memory, optical disc, or CD-ROM.

[0266] In an exemplary embodiment, this application also provides a computer program product, including a computer program that can be executed by a first processor 1102 of a first device 1100 to complete the steps described in the aforementioned first device-side method; or, the computer program can be executed by a second processor 1202 of a second device 1200 to complete the steps described in the aforementioned second device-side method; or, the computer program can be executed by a third processor 1302 of a third device 1300 to complete the steps described in the aforementioned third device-side method.

[0267] It should be noted that terms such as "first" and "second" are used to distinguish similar objects, and are not necessarily used to describe a specific order or sequence.

[0268] Furthermore, the technical solutions described in the embodiments of this application can be combined arbitrarily without conflict.

[0269] The above description is merely a preferred embodiment of this application and is not intended to limit the scope of protection of this application.

Claims

1. A method of processing a packet, the method comprising: Applied to a first device, comprising: determining first information corresponding to a first data stream, the first information being used to indicate a number of one or more candidate paths corresponding to the first data stream, the first data stream containing a plurality of first packets; generating a plurality of second packets by using the first information and the plurality of first packets, each second packet containing at least second information, the second information being used to indicate a transmission path corresponding to the second packet, the second information being associated with a sequence number of a first packet corresponding to the second packet in the first data stream; sending the plurality of second packets.

2. The method of claim 1, wherein, The generating a plurality of second packets by using the first information and the plurality of first packets comprises: selecting a transmission path corresponding to each first packet in the plurality of first packets by using the first information; generating the plurality of second packets by using the plurality of first packets and the transmission paths corresponding to the plurality of first packets.

3. The method of claim 2, wherein, The selecting a transmission path corresponding to each first packet in the plurality of first packets by using the first information comprises: determining third information corresponding to the first data stream, the third information representing a length of a packet group associated with the plurality of first packets; grouping the plurality of first packets to obtain a plurality of first packet groups by using the third information, each first packet group containing one or more first packets; selecting a transmission path corresponding to each first packet group in the plurality of first packet groups by using the first information.

4. The method of claim 3, wherein, The selecting a transmission path corresponding to each first packet group in the plurality of first packet groups by using the first information comprises: selecting a transmission path corresponding to each first packet group in the plurality of first packet groups by using the first information, the third information and fourth information, the fourth information representing sequence numbers of one or more first packets associated with the first packet group in the first data stream.

5. The method of claim 3, wherein, Each second packet further contains fifth information, the fifth information representing a sequence number of a first packet corresponding to the second packet in a first packet group associated with the first packet.

6. The method according to any one of claims 1 to 5, characterized in that, Each second packet further contains sixth information, the sixth information being used to indicate a first data stream associated with the second packet.

7. A method of processing a packet, the method comprising: Applied to a second device, comprising: receiving a plurality of second packets, each second packet containing at least second information, the second information being used to indicate a transmission path corresponding to the second packet, the second information being associated with a sequence number of a first packet corresponding to the second packet in a first data stream, the first data stream containing a plurality of first packets; determining whether there is packet loss of one or more second packets by using the second information corresponding to the plurality of second packets; in the case of packet loss of the one or more second packets, sending seventh information to the first device, the seventh information being used to request retransmission of the one or more second packets.

8. The method of claim 7, wherein, The determining whether there is packet loss of one or more second packets by using the second information corresponding to the plurality of second packets comprises: obtaining first information corresponding to the first data stream, the first information being used to indicate a number of one or more candidate paths corresponding to the first data stream; determining eighth information by using the second information corresponding to the plurality of second packets and the first information, the eighth information representing a packet receiving condition corresponding to each of the one or more candidate paths; determining whether there is packet loss of the one or more second packets by using the eighth information.

9. The method of claim 8, wherein, The determining the eighth information by using the second information corresponding to the plurality of second packets and the first information comprises: obtaining third information corresponding to the first data stream, the third information representing a length of a packet group associated with the plurality of first packets; determining the eighth information by using the second information corresponding to the plurality of second packets, the first information and the third information.

10. The method of claim 8, wherein, Each second packet further comprises ninth information, the ninth information representing a sequence number of the first packet corresponding to the second packet in the first data stream; The determining whether there is packet loss of the one or more second packets by using the eighth information comprises: determining whether there is packet loss of the one or more second packets by using the ninth information corresponding to the plurality of second packets and the eighth information.

11. The method of claim 7, wherein, Each second packet further comprises fifth information, the fifth information representing a sequence number of the first packet corresponding to the second packet in a first packet group associated with the first packet, the first packet group comprising one or more first packets; The determining whether there is packet loss of the one or more second packets by using the second information corresponding to the plurality of second packets comprises: determining whether there is packet loss of the one or more second packets by using the second information corresponding to the plurality of second packets and the fifth information.

12. The method according to any one of claims 7 to 11, characterized in that, Each second packet further comprises sixth information, the sixth information being used to indicate a first data stream associated with the second packet.

13. A method of processing a packet, the method comprising: Applied to a third device, comprising: receiving a plurality of second packets, each second packet comprising at least second information, the second information being used to indicate a transmission path corresponding to the second packet, the second information being associated with a sequence number of a first packet corresponding to the second packet in a first data stream, the first data stream comprising a plurality of first packets; sending the plurality of second packets based on the second information corresponding to the plurality of second packets; wherein the second packets with the same second information are sent through the same transmission path, and the second packets with different second information are sent through different transmission paths.

14. The method of claim 13, wherein, Each second packet further comprises sixth information, the sixth information being used to indicate a first data stream associated with the second packet; the sending the plurality of second packets based on the second information corresponding to the plurality of second packets comprises: sending the plurality of second packets based on the second information corresponding to the plurality of second packets and the sixth information; wherein the second packets with the same second information and the same sixth information are sent through the same transmission path, and the second packets with different second information and / or different sixth information are sent through different transmission paths.

15. A packet processing device, characterized by comprising: a first determining unit, configured to determine first information corresponding to a first data stream, the first information being used to indicate a number of one or more candidate paths corresponding to the first data stream, the first data stream comprising a plurality of first packets; The generating unit is configured to generate a plurality of second packets by using the first information and the plurality of first packets, each second packet containing at least second information, the second information being used to indicate a transmission path corresponding to the second packet, and the second information being associated with a sequence number of a first packet corresponding to the second packet in the first data stream; The first sending unit is configured to send the plurality of second packets.

16. A packet processing device, comprising: The first receiving unit is configured to receive a plurality of second packets, each second packet containing at least second information, the second information being used to indicate a transmission path corresponding to the second packet, and the second information being associated with a sequence number of a first packet corresponding to the second packet in a first data stream, the first data stream containing a plurality of first packets; The second determining unit is configured to determine whether there is packet loss of one or more second packets by using the second information corresponding to the plurality of second packets; The second sending unit is configured to send seventh information to the first device in the case that there is packet loss of the one or more second packets, the seventh information being used to request retransmission of the one or more second packets. The second receiving unit is configured to receive a plurality of second packets, each second packet containing at least second information, the second information being used to indicate a transmission path corresponding to the second packet, and the second information being associated with a sequence number of a first packet corresponding to the second packet in a first data stream, the first data stream containing a plurality of first packets; 17. A packet processing device, comprising: The third sending unit is configured to send the plurality of second packets based on the second information corresponding to the plurality of second packets; wherein the second packets with the same second information are sent through the same transmission path, and the second packets with different second information are sent through different transmission paths. The first processor and the first communication interface; wherein The first processor is configured to determine first information corresponding to a first data stream, the first information being used to indicate a number of one or more candidate paths corresponding to the first data stream, the first data stream containing a plurality of first packets; and generate a plurality of second packets by using the first information and the plurality of first packets, each second packet containing at least second information, the second information being used to indicate a transmission path corresponding to the second packet, and the second information being associated with a sequence number of a first packet corresponding to the second packet in the first data stream; 18. A first device, comprising: The first communication interface is configured to send the plurality of second packets. The second processor and the second communication interface; wherein The second communication interface is configured to receive a plurality of second packets, each second packet containing at least second information, the second information being used to indicate a transmission path corresponding to the second packet, and the second information being associated with a sequence number of a first packet corresponding to the second packet in a first data stream, the first data stream containing a plurality of first packets; ​ 19. A second device, comprising: ​ ​ ​ The second processor is configured to determine, by using the second information corresponding to the plurality of second packets, whether one or more second packets are lost, and send, by using the second communication interface, seventh information to the first device in the case that the one or more second packets are lost, the seventh information being used to request retransmission of the one or more second packets.

20. A third device, comprising: The method comprises: The third processor and a third communication interface are provided, wherein The third communication interface is configured to receive a plurality of second packets, each second packet comprising at least second information, the second information being used to indicate a transmission path corresponding to the second packet, the second information being associated with a sequence number of a first packet corresponding to the second packet in a first data stream, the first data stream comprising a plurality of first packets, and send the plurality of second packets based on the second information corresponding to the plurality of second packets, wherein the second packets with the same second information are sent through the same transmission path, and the second packets with different second information are sent through different transmission paths.

21. A first device, comprising: The method comprises: The first processor and a first memory for storing a computer program capable of running on the processor, When the first processor runs the computer program, the first processor is configured to perform the steps of the method according to any one of claims 1 to 6.

22. A second device, comprising: The method comprises: The second processor and a second memory for storing a computer program capable of running on the processor, When the second processor runs the computer program, the second processor is configured to perform the steps of the method according to any one of claims 7 to 12.

23. A third device, comprising: The method comprises: The third processor and a third memory for storing a computer program capable of running on the processor, When the third processor runs the computer program, the third processor is configured to perform the steps of the method according to claim 13 or 14.

24. A storage medium having stored thereon a computer program, characterized in that The computer program is configured to enable a processor to perform the steps of the method according to any one of claims 1 to 6, or the steps of the method according to any one of claims 7 to 12, or the steps of the method according to claim 13 or 14.

25. A computer program product comprising a computer program, characterized in that, The computer program is configured to enable a processor to perform the steps of the method according to any one of claims 1 to 6, or the steps of the method according to any one of claims 7 to 12, or the steps of the method according to claim 13 or 14.

Citation Information

Patent Citations

  • Message processing method and device

    CN111082898A

  • Data transmission method and device

    CN114189474A