Packet transmission method and apparatus, and electronic device and medium

By comparing the bitmap between the source node and the destination node, the status of candidate logical paths is estimated, which solves the problems of data flow continuity and service availability in tunneling technology during network failures and achieves efficient message transmission.

WO2026045626A1PCT designated stage Publication Date: 2026-03-05TENCENT TECHNOLOGY (SHENZHEN) CO LTD
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
PCT/CN2025/105529
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2024-08-27
Filing Date
2025-06-30
Publication Date
2026-03-05

AI Technical Summary

Technical Problem

Existing tunneling technologies cannot detect and react to network failures in a timely manner, resulting in poor data flow continuity and service availability. Raw tunnel encapsulation incurs high computational and storage overhead, while multipath transmission protocol encapsulation also brings huge computational and storage overhead.

Method used

By comparing the bitmaps between the source and destination nodes, the status of candidate logical paths is estimated to avoid placing the target message on a potentially faulty path. The non-faulty path is determined for transmission by using the sending and receiving bitmaps.

Benefits of technology

It improves data flow continuity and business availability, reduces computing and storage overhead, and achieves efficient message transmission.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2025105529_05032026_PF_FP_ABST
    Figure CN2025105529_05032026_PF_FP_ABST
Patent Text Reader

Abstract

Provided in the present disclosure are a packet transmission method and apparatus, and an electronic device and a medium. The packet transmission method is executed by means of a source node, and comprises: on the basis of addressing information of a target packet, determining a destination node corresponding to the target packet, wherein there are a plurality of candidate logical paths between a source node and the destination node; acquiring a sending bitmap of the source node; sending a reception status request to the destination node, and receiving a reception bitmap of the destination node; by means of comparing the sending bitmap with the reception bitmap, determining a path status of each candidate logical path; and determining a non-faulty target logical path from among the plurality of candidate logical paths, and sending the target packet by means of the target logical path. The embodiments of the present disclosure can maintain low computational overheads and storage overheads, and also improve the continuity of data streams and the service availability during packet transmission. The embodiments of the present disclosure can be applied to various scenarios, such as large-model training data transmission.
Need to check novelty before this filing date? Find Prior Art

Description

Message transmission methods, devices, electronic equipment and media

[0001] This application claims priority to Chinese Patent Application No. 2024111880371, filed on August 27, 2024, entitled “Message Transmission Method, Apparatus, Electronic Equipment and Medium”, the entire contents of which are incorporated herein by reference. Technical Field

[0002] This disclosure relates to the field of data communication, and in particular to a message transmission method, apparatus, electronic device, and medium. Background Technology

[0003] Tunneling is a technology for transmitting data between networks. Data packets transmitted using tunneling can be data frames or packets using different transport protocols. During data transmission, the sending end uses tunneling to encapsulate a data packet from one network protocol within another. The receiving end, upon receiving the data, decouples the original data packet from the encapsulated header. Tunneling enables communication between different networks.

[0004] Currently, the most widely used tunneling technologies include bare tunnel encapsulation and multipath transport protocol encapsulation. Bare tunnel encapsulation simply encapsulates packet data statelessly; when network failures occur, it cannot detect or react to the faults. Faults can only be resolved through retransmission. Therefore, data flow continuity and service availability are poor. Multipath transport protocol encapsulation ensures reliable data packet transmission by referencing the complete transport protocol; however, this incurs significant computational and storage overhead. Summary of the Invention

[0005] This disclosure provides a message transmission method, apparatus, electronic device, and medium that can improve data flow continuity and service availability during message transmission while maintaining low computational and storage overhead.

[0006] According to one aspect of this disclosure, a message transmission method is provided, executed by a source node, the message transmission method comprising:

[0007] Based on the addressing information of the target message, the destination node corresponding to the target message is determined, and there are multiple candidate logical paths between the source node and the destination node;

[0008] Obtain the sending bitmap of the source node, wherein the sending bitmap indicates the message sending status of each of the plurality of candidate logical paths at the source node;

[0009] Send a reception status request to the destination node and receive a reception bitmap returned by the destination node in response to the reception status request. The reception bitmap indicates the message reception status of each of the multiple candidate logical paths at the destination node.

[0010] The path status of each of the plurality of candidate logical paths is determined by comparing the transmitted bitmap and the received bitmap.

[0011] Among the multiple candidate logical paths, a target logical path whose path status is not faulty is determined, and the target message is transmitted through the target logical path.

[0012] According to one aspect of this disclosure, a message transmission method is provided, performed by a destination node, the message transmission method comprising:

[0013] In the current cycle, receive the receive status request sent by the source node through the candidate logical path;

[0014] The current bitmap to be processed is saved as the received bitmap of the previous cycle of the current cycle. Multiple bits of the current bitmap to be processed correspond to multiple candidate logical paths. The current bitmap to be processed is used to indicate the candidate logical path that received the received status request.

[0015] Reset each bit of the current bitmap to be processed to a first value, and set the bit corresponding to the candidate logical path that received the receiving status request in the current bitmap to a second value;

[0016] The received bitmap of the previous cycle is sent to the source node so that the source node can determine the path status of each candidate logical path based on the received bitmap and the sent bitmap of the previous cycle, and determine the target logical path for sending the target message based on the path status of each candidate logical path.

[0017] According to one aspect of this disclosure, a message transmission method is provided, executed by a source node, the message transmission method comprising:

[0018] Based on the addressing information of the target message, the destination node corresponding to the target message is determined, and there are multiple candidate logical paths between the source node and the destination node;

[0019] Obtain the sending bitmap of the source node, wherein the sending bitmap indicates the message sending status of each of the plurality of candidate logical paths at the source node;

[0020] The sending bitmap is sent to the destination node so that the destination node can determine the path status of each of the plurality of candidate logical paths by comparing the sending bitmap with the destination node's receiving bitmap;

[0021] Receive the path status of each of the multiple candidate logical paths returned by the destination node;

[0022] Among the multiple candidate logical paths, a target logical path whose path status is not faulty is determined, and the target message is transmitted through the target logical path.

[0023] According to one aspect of this disclosure, a message transmission method is provided, performed by a destination node, the message transmission method comprising:

[0024] The source node sends a transmission bitmap, which indicates the message transmission status of multiple candidate logical paths at the source node, and the multiple candidate logical paths exist between the source node and the destination node.

[0025] Obtain the receive bitmap of the destination node, wherein the receive bitmap indicates the message reception status of each of the plurality of candidate logical paths at the destination node;

[0026] The path status of each of the plurality of candidate logical paths is determined by comparing the transmitted bitmap and the received bitmap.

[0027] The source node sends the path status of each of the multiple candidate logical paths to the source node, so that the source node can determine the target logical path for sending the target message based on the path status of each of the multiple candidate logical paths.

[0028] According to one aspect of this disclosure, a message transmission apparatus is provided, disposed in a source node, the message transmission apparatus comprising:

[0029] The first determining unit is used to determine the destination node corresponding to the target message based on the addressing information of the target message, wherein there are multiple candidate logical paths between the source node and the destination node;

[0030] The first acquisition unit is used to acquire the transmission bitmap of the source node, wherein the transmission bitmap indicates the message transmission status of each of the plurality of candidate logical paths at the source node.

[0031] The first sending unit is configured to send a reception status request to the destination node and receive a reception bitmap returned by the destination node in response to the reception status request, wherein the reception bitmap indicates the message reception status of each of the plurality of candidate logical paths at the destination node.

[0032] The first comparison unit is used to determine the path status of the plurality of candidate logical paths by comparing the transmitted bitmap and the received bitmap;

[0033] The first transfer unit is used to determine the target logical path whose path status is not faulty among the plurality of candidate logical paths, and to transmit the target message through the target logical path.

[0034] According to one aspect of this disclosure, a message transmission apparatus is provided, disposed in a destination node, the message transmission apparatus comprising:

[0035] The first receiving unit is used to receive the receiving status request sent by the source node through the candidate logical path in the current period.

[0036] The first storage unit is used to store the current bitmap to be processed as the received bitmap of the previous cycle of the current cycle, wherein multiple bits of the current bitmap to be processed correspond to multiple candidate logical paths, and the current bitmap to be processed is used to indicate the candidate logical path that received the receiving status request.

[0037] The first reset unit is used to reset each bit of the current bitmap to be processed to a first value, and set the bit corresponding to the candidate logical path that received the receiving status request in the current bitmap to a second value.

[0038] The second sending unit is used to send the received bitmap of the previous cycle to the source node, so that the source node can determine the path status of each candidate logical path based on the received bitmap and the sending bitmap of the previous cycle, and determine the target logical path for sending the target message based on the path status of each candidate logical path.

[0039] According to one aspect of this disclosure, a message transmission apparatus is provided, disposed in a source node, the message transmission apparatus comprising:

[0040] The second determining unit is used to determine the destination node corresponding to the target message based on the addressing information of the target message, wherein there are multiple candidate logical paths between the source node and the destination node;

[0041] The second acquisition unit is used to acquire the transmission bitmap of the source node, wherein the transmission bitmap indicates the message transmission status of each of the plurality of candidate logical paths at the source node.

[0042] The third sending unit is used to send the sending bitmap to the destination node, so that the destination node can determine the path status of each of the plurality of candidate logical paths by comparing the sending bitmap and the receiving bitmap of the destination node.

[0043] The second receiving unit is used to receive the path status of each of the plurality of candidate logical paths returned by the destination node;

[0044] The second transfer unit is used to determine the target logical path whose path status is not faulty among the plurality of candidate logical paths, and to transmit the target message through the target logical path.

[0045] According to one aspect of this disclosure, a message transmission apparatus is provided, disposed in a destination node, the message transmission apparatus comprising:

[0046] The third receiving unit is used to receive a transmission bitmap sent by the source node. The transmission bitmap indicates the message transmission status of each of the multiple candidate logical paths at the source node. The multiple candidate logical paths exist between the source node and the destination node.

[0047] The third acquisition unit is used to acquire the reception bitmap of the destination node, wherein the reception bitmap indicates the message reception status of each of the plurality of candidate logical paths at the destination node.

[0048] The third determining unit is used to determine the path status of each of the plurality of candidate logical paths by comparing the transmitted bitmap and the received bitmap;

[0049] The fourth sending unit is used to send the path status of each of the plurality of candidate logical paths to the source node, so that the source node can determine the target logical path for sending the target message based on the path status of each of the plurality of candidate logical paths.

[0050] According to one aspect of this disclosure, an electronic device is provided, including a memory and a processor, wherein the memory stores a computer program, and the processor executes the computer program to implement the above-described message transmission method.

[0051] According to one aspect of this disclosure, a computer-readable storage medium is provided, the storage medium storing a computer program, wherein the computer program, when executed by a processor, implements the above-described message transmission method.

[0052] According to one aspect of this disclosure, a computer program product is provided, the computer program product including a computer program that is read and executed by a processor of a computer device, causing the computer device to perform the above-described message transmission method.

[0053] In this embodiment, instead of relying solely on retransmission to resolve faults like bare tunnel encapsulation, a receiving status request is sent to the destination node. The destination node sends a receiving bitmap, and the sending bitmap from the source node is compared with the receiving bitmap from the destination node. This proactively avoids placing the target packet on potentially faulty logical paths. Since the sending bitmap indicates the packet transmission status of each candidate logical path at the source node, and the receiving bitmap indicates the packet reception status of each candidate logical path at the destination node, comparing the sending and receiving bitmaps yields the path status of each candidate logical path, thus allocating a non-faulty target logical path for the target packet. This method, by accurately predicting which candidate logical paths are likely to fail beforehand, avoids sending the target packet on faulty candidate logical paths, significantly improving data flow continuity and service availability compared to solutions that only retransmit afterward. This solution only requires adding a receive status request or receive bitmap to a small number of data packets. It has low transmission and storage overhead, and the processing of comparing the send bitmap and receive bitmap is relatively simple with low computational overhead. Therefore, while maintaining low computational and storage overhead, it improves the continuity of data flow and service availability in packet transmission. Attached Figure Description

[0054] Figure 1A is one of the system architecture diagrams of the message transmission method according to an embodiment of the present disclosure;

[0055] Figure 1B is a second architecture diagram of the system to which the message transmission method according to an embodiment of the present disclosure is applied;

[0056] Figure 1C is a third system architecture diagram of the system to which the message transmission method according to an embodiment of the present disclosure is applied;

[0057] Figure 2 is a software configuration diagram of a message transmission method according to an embodiment of the present disclosure;

[0058] Figure 3 is a schematic diagram of the topology of the data center network to which the message transmission method according to an embodiment of the present disclosure is applied;

[0059] Figure 4 is an overall flowchart of a message transmission method for determining the path status of each candidate logical path by the source node according to an embodiment of the present disclosure, applied to the source node side.

[0060] Figure 5 is a schematic diagram of a source node performing a message transmission method according to an embodiment of the present disclosure;

[0061] Figure 6 is a schematic diagram of a target message according to an embodiment of the present disclosure;

[0062] Figure 7 is a schematic diagram of determining the initial logical path based on the addressing information of the target message according to an embodiment of the present disclosure;

[0063] Figure 8 is a schematic diagram of determining the message reception status of each candidate logical path based on a comparison of a transmit bitmap and a receive bitmap according to an embodiment of the present disclosure.

[0064] Figure 9 is a schematic diagram of a source node sending a reception status request to a destination node and receiving a reception bitmap from the destination node according to an embodiment of the present disclosure.

[0065] Figure 10 is a schematic diagram of determining a non-faulty target logical path among multiple candidate logical paths according to an embodiment of the present disclosure;

[0066] Figure 11A is one of the comparative schematic diagrams of a message transmission method according to an embodiment of the present disclosure and a conventional message transmission method;

[0067] Figure 11B is a second comparative schematic diagram of a message transmission method according to an embodiment of the present disclosure and a conventional message transmission method;

[0068] Figure 12 is a flowchart of determining an initial logical path according to an embodiment of the present disclosure;

[0069] Figure 13 is a schematic diagram of the five-tuple information of a target message according to an embodiment of the present disclosure;

[0070] Figure 14 is a schematic diagram of determining the initial logical path according to an embodiment of the present disclosure;

[0071] Figure 15 is a schematic diagram of multiple candidate logical paths according to an embodiment of the present disclosure;

[0072] Figure 16 is a flowchart of determining the candidate logical path corresponding to the initial index as the initial logical path according to an embodiment of the present disclosure;

[0073] Figure 17 is a schematic diagram of repeating the index group a third time according to an embodiment of the present disclosure to obtain the original index queue;

[0074] Figure 18 is a flowchart of determining a third number according to an embodiment of the present disclosure;

[0075] Figure 19 is a flowchart of determining the number of multiple candidate logical paths according to an embodiment of the present disclosure;

[0076] Figure 20 is a flowchart of determining the number of multiple candidate logical paths based on unit time transmission traffic, path failure rate, and average transmission traffic variance according to an embodiment of the present disclosure.

[0077] Figure 21 is a flowchart of obtaining the transmission bitmap of the source node and sending a reception status request to the destination node according to an embodiment of the present disclosure, and receiving the reception bitmap of the destination node.

[0078] Figure 22 is a schematic diagram of a source node sending a reception status request to a destination node in the current cycle and receiving a reception bitmap from the destination node in the previous cycle, according to an embodiment of the present disclosure.

[0079] Figure 23 is a flowchart of obtaining the transmission bitmap of the source node of the previous period in the current period according to an embodiment of the present disclosure;

[0080] Figure 24 is a schematic diagram of obtaining the transmission bitmap of the source node of the previous period in the current period according to an embodiment of the present disclosure;

[0081] Figure 25 is a flowchart of sending a reception status request to the destination node in the current cycle and receiving the reception bitmap of the destination node in the previous cycle according to an embodiment of the present disclosure.

[0082] Figure 26 is a schematic diagram of adding a receive status request to a first tunnel encapsulation field of a first data packet according to an embodiment of the present disclosure;

[0083] Figure 27 is a schematic diagram of the received bitmap of the destination node in the previous cycle carried in the second tunneling encapsulation field of a second data packet according to an embodiment of the present disclosure.

[0084] Figure 28 is a flowchart of sending a first data packet to a destination node and generating a second data packet according to an embodiment of the present disclosure;

[0085] Figure 29 is a schematic diagram of a first tunnel encapsulation field including a first tag field and a receive status request field according to an embodiment of the present disclosure;

[0086] Figure 30 is a schematic diagram of a second tunnel encapsulation field according to an embodiment of the present disclosure, including a second marker field, a receive status response field, and a receive bitmap field;

[0087] Figure 31 is a flowchart of adding a received bitmap field to a second tunnel encapsulation field according to an embodiment of the present disclosure;

[0088] Figure 32 is a schematic diagram of determining the receiving bitmap according to an embodiment of the present disclosure;

[0089] Figure 33 is a flowchart of sending a first data packet to the destination node and generating a second data packet when a receive status request is added to the first tunnel encapsulation field of the first number of contention data packets according to an embodiment of the present disclosure.

[0090] Figure 34 is a schematic diagram of sending a first data packet to the destination node and generating a second data packet when a receive status request is added to the first tunnel encapsulation field of the first number of contention data packets according to an embodiment of the present disclosure.

[0091] Figure 35 is a flowchart of determining a first number according to an embodiment of the present disclosure;

[0092] Figure 36 is a flowchart of sending a first data packet to a destination node and receiving a second data packet sent by the destination node according to an embodiment of the present disclosure;

[0093] Figure 37 is a flowchart of determining the path state of each candidate logical path according to an embodiment of the present disclosure;

[0094] Figure 38 is a schematic diagram of determining the path state of each candidate logical path according to an embodiment of the present disclosure;

[0095] Figure 39 is a flowchart of determining the path state of a candidate logical path based on the path state of candidate logical paths in a series of consecutive cycles according to an embodiment of the present disclosure.

[0096] Figure 40 is a schematic diagram of determining the path state of a candidate logical path based on the path state of candidate logical paths in a series of consecutive cycles according to an embodiment of the present disclosure.

[0097] Figure 41 is a flowchart of determining the path state of a candidate logical path based on the path state of candidate logical paths over multiple consecutive periods after filtering noise caused by network latency and packet loss according to an embodiment of the present disclosure.

[0098] Figure 42 is a schematic diagram of determining the path state of a candidate logical path based on the path state of candidate logical paths over multiple consecutive periods after filtering noise caused by network latency and packet loss according to an embodiment of the present disclosure.

[0099] Figure 43 is a flowchart of determining a non-faulty target logical path among multiple candidate logical paths according to an embodiment of the present disclosure;

[0100] Figure 44 is a schematic diagram of replacing a first index with a second index of a non-faulty candidate logical path in the order of non-faulty candidate logical paths among a plurality of candidate logical paths, according to an embodiment of the present disclosure.

[0101] Figure 45 is a flowchart of switching the target message back to the initial logical path after the initial logical path fault is recovered, according to an embodiment of the present disclosure.

[0102] Figure 46 is a flowchart of determining the initial logical path fault recovery according to an embodiment of the present disclosure;

[0103] Figure 47 is a schematic diagram of a source node sending a probe request to a destination node and receiving reception status information of the destination node on the initial logical path according to an embodiment of the present disclosure.

[0104] Figure 48 is a flowchart of determining the initial logical path fault recovery based on received state information according to an embodiment of the present disclosure;

[0105] Figure 49 is a flowchart of switching the target message back to the initial logical path for transmission according to an embodiment of the present disclosure;

[0106] Figure 50A is a schematic diagram of determining the initial position of the first index in the original index queue according to an embodiment of the present disclosure;

[0107] Figure 50B is a schematic diagram of replacing the index of the initial position in the target index queue with the first index of the initial logical path according to an embodiment of the present disclosure;

[0108] Figure 51 is a flowchart of replacing the other indices that are not the first index with the first index of the initial logical path according to an embodiment of the present disclosure;

[0109] Figure 52 is a schematic diagram of determining the index queue in the presence of multiple candidate logical failure paths according to an embodiment of the present disclosure;

[0110] Figure 53 is an overall flowchart of a message transmission method according to an embodiment of the present disclosure, in which the source node determines the path status of each candidate logical path and applies it to the destination node side.

[0111] Figure 54 is an overall flowchart of a message transmission method according to an embodiment of the present disclosure, in which the destination node determines the path status of each candidate logical path and applies it to the source node side.

[0112] Figure 55 is a schematic diagram of a source node sending a bitmap to a destination node and receiving the path status of each candidate logical path returned by the destination node according to an embodiment of the present disclosure.

[0113] Figure 56 is an overall flowchart of a message transmission method for determining the path status of each candidate logical path by the destination node according to an embodiment of the present disclosure, applied to the destination node side.

[0114] Figure 57 is a block diagram of a message transmission apparatus applied to the source node side according to an embodiment of the present disclosure;

[0115] Figure 58 is a block diagram of a message transmission apparatus applied to the destination node side according to an embodiment of the present disclosure;

[0116] Figure 59 is a terminal structure diagram of performing a message transmission method according to an embodiment of the present disclosure;

[0117] Figure 60 is a server structure diagram of performing a message transmission method according to an embodiment of the present disclosure. Detailed Implementation

[0118] To make the objectives, technical solutions, and advantages of this disclosure clearer, the following detailed description is provided in conjunction with the accompanying drawings and embodiments. It should be understood that the specific embodiments described herein are merely illustrative and are not intended to limit the scope of this disclosure.

[0119] Before providing a further detailed description of the embodiments of this disclosure, the terms and concepts used in these embodiments are explained, and they are subject to the following interpretations:

[0120] A message is a data unit exchanged and transmitted in a network; it is a block of data that a node sends at one time. Messages are also the unit of network transmission. During transmission, they are continuously encapsulated into packets, frames, and groups. Encapsulation involves adding information segments, which are the data organized in a specific format as the message header. A message contains complete data information to be sent; its length varies and is unlimited.

[0121] Tunnel encapsulation: Tunnel encapsulation is a network protocol data packet encapsulation technique that encapsulates data packets from one network protocol within another network protocol for transmission. This technique is widely used in Virtual Private Networks (VPNs) and virtualized networks in data centers to achieve isolation between different tenants or applications, network interconnection, and free addressing and movement of virtual hosts.

[0122] Overlay networks are virtual networks built on top of existing physical networks (the underlying network). They connect nodes through logical or virtual links, forming a network structure independent of the underlying physical network. Overlay networks can achieve various functions, including network virtualization, isolation, and enhanced security. The basic principle of overlay networks is to use tunneling encapsulation technology to transparently transmit data packets within the underlying network and decapsulate them at the destination to obtain the original message. Common tunneling encapsulation technologies include Virtual Extensible Local Area Network (VXLAN), Network Virtualization using Generic Routing Encapsulation (NVGRE), and Internet Protocol Security (IPsec). For example, VXLAN is a widely used overlay technology that can build a virtual Layer 2 network on an existing Layer 3 physical network, enabling tenant Layer 2 packets to be transmitted across the Layer 3 network between different sites.

[0123] Tunneling is a technology for transmitting data between networks. Data packets transmitted using tunneling can be data frames or packets using different transport protocols. During data transmission, the sending end uses tunneling to encapsulate a data packet from one network protocol within another. The receiving end, upon receiving the data, decouples the original data packet from the encapsulated header. Tunneling enables communication between different networks. Currently, the most widely used tunneling technologies include bare tunneling encapsulation and multipath transport protocol encapsulation. Bare tunneling encapsulation simply encapsulates data packets statelessly; it cannot detect or react to network failures. Faults can only be resolved through retransmission. Therefore, data flow continuity and service availability are poor. Multipath transport protocol encapsulation ensures reliable data packet transmission by referencing the complete transport protocol, but this incurs significant computational and storage overhead.

[0124] Based on this, embodiments of this disclosure provide a message transmission method, apparatus, electronic device, and medium. It can send a reception status request to the destination node, receive a reception bitmap sent by the destination node, and accurately predict which candidate logical paths might be faulty in advance by comparing the source node's sending bitmap with the destination node's receiving bitmap, thereby preventing the target message from being placed on potentially faulty logical paths. Compared to solutions that only retransmit afterward, this significantly improves data flow continuity and service availability. Furthermore, embodiments of this disclosure only require adding a reception status request or receiving bitmap to a small number of data packets, resulting in low transmission and storage overhead. The processing of comparing sending and receiving bitmaps is relatively simple, with low computational overhead. Embodiments of this disclosure improve data flow continuity and service availability during message transmission while maintaining low computational and storage overhead.

[0125] System architecture and scenario description of the embodiments disclosed herein

[0126] Figures 1A-1C are system architecture diagrams applied to the message transmission method according to embodiments of the present disclosure. Figure 1A includes a terminal 140, an Internet 130, a gateway 120, a server 110, etc.

[0127] Terminal 140 can take various forms, including desktop computers, laptops, personal digital assistants (PDAs), mobile phones, in-vehicle terminals, home theater terminals, and dedicated terminals. Furthermore, it can be a single device or a collection of multiple devices. Terminal 140 can communicate with the Internet 130 via wired or wireless means to exchange data.

[0128] Server 110 refers to a computer system capable of providing certain services to terminal 140. Compared to terminal 140, server 110 has higher requirements in terms of stability, security, and performance. Server 110 can be a single high-performance computer in a network platform, a cluster of multiple high-performance computers, a portion of a single high-performance computer (e.g., a virtual machine), or a combination of portions of multiple high-performance computers (e.g., virtual machines). In a distributed system, multiple servers 110 are interconnected as computing and storage units to transmit data and coordinate task processing using shared communication lines.

[0129] Gateway 120, also known as an internetwork connector or protocol converter, is a computer system or device that acts as a translator, enabling network interconnection at the transport layer. It bridges the gap between two systems using different communication protocols, data formats, languages, or even completely different architectures. Gateways can also provide filtering and security functions. Messages sent from terminal 140 to server 110 are forwarded to the corresponding server 110 via gateway 120. Messages sent from server 110 to terminal 140 are also forwarded to the corresponding terminal 140 via gateway 120.

[0130] In the message transmission method of this embodiment, both the source node and the destination node are server 110. Referring to Figures 1B and 1C, assume the source node is server 1, the destination node 1 is server 2, and the destination node 2 is server 3. Server 1 is connected to server 2 and server 3 via the Internet 130, and there are multiple logical paths between server 1 and server 2, and multiple logical paths between server 1 and server 3. Each logical path maps to a physical transmission path, and messages can be transmitted between different servers through the transmission paths mapped by the logical paths. As shown in Figure 1B, each server has a private network service layer, which allows the server to build an isolated virtual network environment that can manage configurations and policies. The private network service layer contains multiple virtual machines, which are complete computer systems simulated by software, possessing full hardware system functions, and running in a completely isolated environment. The server can connect to external applications through the virtual machines, receive messages sent by external applications, and send the messages to their corresponding destination nodes. Different messages correspond to different source and destination nodes. Therefore, for messages with different source and destination nodes, a tunnel can be established between the source and destination nodes to transmit these messages. The endpoints of this tunnel are the source and destination nodes. Here, a tunnel is an abstract concept of a physical connection, allowing a direct, point-to-point relationship to be established between the source and destination nodes without considering physical layer details. Transmitting messages between source and destination nodes via tunnels enables isolation between different applications, network interconnection, and automatic addressing and movement of virtual machines.

[0131] Furthermore, a tunnel comprises multiple logical paths, through which packets received by the virtual machine at the source node reach the destination node. For example, referring to Figures 1B and 1C, assuming virtual machine 1 of server 1 receives packets 1 and 2, and both packets 1 and 2 are destined for server 2, it can be determined that packets 1 and 2 can be transmitted through the same tunnel. The tunnel between server 1 and server 2 comprises multiple logical paths; therefore, packets 1 and 2 can reach server 2 through the physical path mapped by any logical path within the tunnel.

[0132] Figure 2 is a schematic diagram of the software configuration of the server used in the message transmission method according to an embodiment of the present disclosure. Referring to Figure 2, in the software configuration, the embodiments of the present disclosure can be implemented within a software transmission protocol stack, and the message transmission method of the embodiments of the present disclosure is further equipped with a Transmission Control Protocol (TCP) and a connectionless transmission protocol (User Datagram Protocol, UDP) at the upper layer to achieve reliable message transmission.

[0133] This disclosure can be applied to data transmission scenarios. Referring to Figure 3, which is a schematic diagram of the topology of a data center network to which the message transmission method according to the embodiments of this disclosure is applied. In Figure 3, H0-H15 can represent multiple servers in a computer room. These servers can connect to external applications, receive message data sent by external applications, and transmit it to other servers in the data center network. LA0-LA31 and LC0-LC7 can represent multiple switches in a computer room, which are used for forwarding data.

[0134] Figure 3 shows a data center with three layers of switches: access layer, aggregation layer, and core layer. The access layer switches include LA16-LA31, the aggregation layer switches include LA0-LA15, and the core layer switches include LC0-LC7. Servers connect to the access layer switches. It's worth noting that in mainstream data center networks, to increase communication bandwidth and connection reliability between servers, servers typically use two links connected to two switches in the access layer (i.e., each of the server's two network ports is connected to one of two switches). For example, server H0 uses two links connected to access layer switches LA16 and LA17.

[0135] Furthermore, the network architecture of the data center in Figure 3 is explained here in conjunction with the process of the server sending message data: In Figure 3, when a server acting as the source node needs to send message data corresponding to a certain application to a server acting as the destination node, it first needs to send the message data to the access layer switch. The access layer switch forwards the message data to the aggregation layer switch, which then forwards it to the core layer switch. After the core layer receives the message data forwarded by the aggregation layer switch, it forwards the message data to the aggregation layer switch, which then forwards it to the access layer switch. Finally, the access layer switch forwards the received message data to the server acting as the destination node. Referring to Figure 3, it can be understood that there are multiple transmission paths composed of switches between the source node server and the destination node server, and each transmission path corresponds to a logical path. Message data received by the source node server can reach the destination node server through the corresponding logical path.

[0136] For example, if server H1, as the source node, needs to send message data to server H9, as the destination node, there are multiple transmission paths between server H1 and server H9, each corresponding to a logical path. Here, we describe the process of server H1 sending message data A to server H9 using one of these logical paths: Server H1 first sends message data A to the access layer switch LA16, which forwards it to the aggregation layer switch LA1. Switch LA1 then forwards message data A to the core layer switch LC2. Switch LC2 then forwards message data A to the aggregation layer switch LA9, which in turn forwards it to the access layer switch LA24. Finally, switch LA24 forwards message data A to server H9.

[0137] It should be understood that the above description only illustrates some application scenarios of this disclosure. The business scenarios to which this disclosure can be applied may include, but are not limited to, the specific embodiments described above.

[0138] General Description of Embodiments in this Disclosure

[0139] It should be emphasized that the embodiments disclosed herein are applicable to a variety of application scenarios, such as data transmission, Redis databases, high-speed clusters, and cloud storage.

[0140] The message transmission method of this embodiment is executed on the server 110 of the source node and the destination node. The server 110 of the source node transmits the target message from the external application to the server 110 of the destination node to achieve reliable transmission at the transmission layer.

[0141] As shown in Figure 4, according to an embodiment of this disclosure, applied to the source node, the message transmission method includes:

[0142] Step 410: Based on the addressing information of the target message, determine the destination node corresponding to the target message. There are multiple candidate logical paths between the source node and the destination node.

[0143] Step 420: Obtain the sending bitmap of the source node. The sending bitmap indicates the message sending status of each of the multiple candidate logical paths at the source node.

[0144] Step 430: Send a reception status request to the destination node and receive a reception bitmap returned by the destination node in response to the reception status request. The reception bitmap indicates the message reception status of each of the multiple candidate logical paths at the destination node.

[0145] Step 440: By comparing the sent bitmap and the received bitmap, determine the path status of each of the multiple candidate logical paths;

[0146] Step 450: Determine the target logical path that is not faulty among multiple candidate logical paths, and transmit the target message through the target logical path.

[0147] The following is a brief description of steps 410-450 above.

[0148] In step 410, the destination node corresponding to the target message is determined based on the addressing information of the target message.

[0149] According to embodiments of this disclosure, the source node can be a server sending messages, and the destination node can be a server receiving messages. The source and destination nodes correspond, and a tunnel is established between them. If multiple messages have the same source and destination nodes, these messages can be transmitted through the same tunnel; that is, the source and destination nodes of messages transmitted through each tunnel are identical. Here, a tunnel is an abstract concept of a physical connection, allowing a direct, point-to-point relationship to be established between the source and destination nodes without considering physical layer details. A tunnel includes multiple candidate logical paths, each mapping to a physical transmission path from the source node to the destination node. Therefore, messages can be transmitted from the source node to the destination node through the candidate logical paths.

[0150] Understandably, a target message refers to the message data that the source node will send to the destination node. The target message includes addressing information, which indicates the destination node corresponding to the target message. Based on the addressing information, the source node can determine the destination node corresponding to the target message. Referring to Figure 5, after receiving a target message sent by an external application, the source node first determines the destination node based on the addressing information of the target message, and then determines whether there is a tunnel connection between the source node and the destination node (i.e., whether the source node has sent a message to this destination node before). If there is no tunnel connection between the source node and the destination node, the source node first needs to establish a tunnel connection with the destination node. If a tunnel connection exists between the source node and the destination node, since the tunnel itself includes multiple candidate logical paths, the source node can choose one of the candidate logical paths to transmit the target message to the destination node.

[0151] Optionally, the source node can first select one of the multiple candidate logical paths included in the tunnel as the initial logical path based on the addressing information, and then use the initial logical path to transmit the message. The initial logical path is the candidate logical path initially determined by the source node for transmitting the target message.

[0152] According to embodiments of this disclosure, referring to FIG6, the addressing information is generally a field in the target message. The addressing information can be represented as a 5-tuple, which includes the source IP (the IP address of the source node), destination IP (the IP address of the destination node), protocol number (used to ensure the target message can be correctly sent and received), UDP source port number (UDP (User Datagram Protocol) is a connectionless transport layer protocol with a relatively simple message structure. In a UDP message, the source port number is an important field used to identify the port where the application sending the target message resides), and destination port number (the destination port number can be used to identify the port where the application receiving the target message resides). For a target message where the source and destination nodes are the same, the source IP, destination IP, protocol number, and destination port number are the same; only the UDP source port number is different. Therefore, a candidate logical path can be selected as the initial logical path based on the UDP source port number of the target message. On the other hand, since the source port number is 16 bits, only a portion of the source port number can be used to select a candidate logical path. For example, the lower 8 bits or higher 8 bits of the source port number can be used to select a candidate logical path. Furthermore, in networks supporting IPv6 (Next Generation Internet Protocol) routing, addressing information can also be represented as a flow field within the protocol number. Referring to Figure 7, it can be determined that the source node can select one of multiple candidate logical paths between the source node and the destination node as the initial logical path to transmit the target packet, based on the addressing information carried in the target packet.

[0153] In step 420, the sending bitmap of the source node is obtained. The sending bitmap indicates the message sending status of each of the multiple candidate logical paths at the source node.

[0154] According to embodiments of this disclosure, for each destination node corresponding to a target message, the source node maintains a corresponding transmission bitmap. The transmission bitmap is used to indicate the message transmission status of each candidate logical path between the source node and the destination node at the source node. The message transmission status of a candidate logical path can be used to indicate whether the source node uses that candidate logical path to transmit the target message to the destination node. For example, referring to Figure 8, assuming there are 8 candidate logical paths in the tunnel between the source node and the destination node for a certain target message, the transmission bitmap maintained by the source node can be used to indicate the message transmission status corresponding to each of these 8 candidate logical paths. For example, the message transmission status corresponding to candidate logical path 1 in the transmission bitmap is message transmission status 1.

[0155] In step 430, a reception status request is sent to the destination node, and a reception bitmap is received in response to the reception status request from the destination node. The reception bitmap indicates the message reception status of each of the multiple candidate logical paths at the destination node.

[0156] According to embodiments of this disclosure, referring to Figures 5 and 9, after obtaining the transmission bitmap, the source node sends a reception status request to the destination node. The reception status request can be used to request a reception bitmap from the destination node; that is, after receiving the reception status request sent by the source node, the destination node will return a reception bitmap to the source node, as shown in Figure 9.

[0157] It is understandable that for each source node corresponding to a target message, the destination node maintains a corresponding receive bitmap. The receive bitmap is used to indicate the message reception status of each candidate logical path between the source node and the destination node at the destination node. The message reception status of a candidate logical path can be used to indicate whether the destination node has received the target message transmitted using that candidate logical path. For example, referring to Figure 8, assuming that for a certain source node, there are 8 candidate logical paths in the tunnel between the destination node and that source node, the receive bitmap maintained by the destination node can be used to indicate the message reception status of these 8 candidate logical paths. For example, the message reception status corresponding to candidate logical path 1 in the receive bitmap is message reception status 1.

[0158] In step 440, the path status of each of the multiple candidate logical paths is determined by comparing the sent bitmap and the received bitmap.

[0159] According to embodiments of this disclosure, the path state of a candidate logical path is used to indicate the health and availability status of the candidate logical path, and the path state corresponding to each candidate logical path is different. Referring to FIG5, after receiving the receive bitmap of the destination node, the source node can compare the send bitmap maintained by the source node and the receive bitmap received by the source node to comprehensively determine the path state of each candidate logical path. Referring to FIG8, since the send bitmap indicates the message sending status of each candidate logical path at the source node, and the receive bitmap indicates the message receiving status of each candidate logical path at the destination node, the path state of a candidate logical path can be quickly obtained by comparing the message sending status and message receiving status of a candidate logical path. Referring to FIG8, for example, assuming that there are 8 candidate logical paths in the tunnel between a source node and a destination node. It can be seen that, for candidate logical path 1, the path state of candidate logical path 1 can be determined based on message sending status 1 and message receiving status 1, and the path state of candidate logical path 1 is path state 1.

[0160] It is understood that in the embodiments of this disclosure, the path status detection of each candidate logical path can be achieved by adding a receive status request or receive bitmap to a small number of data packets, resulting in low transmission and storage overhead. Moreover, the processing of comparing the send bitmap and receive bitmap is relatively simple and computationally inefficient.

[0161] In step 450, a target logical path with a non-faulty path status is determined from multiple candidate logical paths, and the target message is transmitted through the target logical path.

[0162] According to the embodiments of this disclosure, after determining the path status of each of the multiple candidate logical paths between the source node and the destination node, a candidate logical path with a non-faulty path status can be selected from the multiple candidate logical paths based on the health status and availability status of the candidate logical path indicated by the path status of each candidate logical path. This candidate logical path is then used as the target logical path for transmitting the target message, and the transmission of the target message is performed through this target logical path.

[0163] Optionally, if an initial logical path is determined from multiple candidate logical paths during step 410, and the path status of this initial logical path is faulty, it indicates that continuing to use the initial logical path to transmit the target message will risk packet loss. Therefore, a new logical path needs to be determined for the target message. The source node can determine a non-faulty target logical path from multiple candidate logical paths, as shown in Figure 10. Here, the target logical path refers to the candidate logical path re-determined for the target message when the initial logical path is faulty, and the path status of the target logical path is not faulty. Furthermore, after determining a non-faulty target logical path, to ensure the target message can reach the destination node, the target message needs to be transferred to the target logical path for transmission.

[0164] According to embodiments of this disclosure, referring to FIG11A, tests on existing message transmission methods and message transmission methods of this disclosure reveal that when a switching node fails at second 0, existing message transmission methods (i.e., bare tunnel encapsulation methods) will experience prolonged data flow interruptions because they cannot detect path failures in a timely manner. After multiple timeouts and retransmissions of the target message fail (at second 2), the transmission protocol notifies the source node's service layer of transmission failure, triggering a service error. However, even if the service re-attempts to establish a transmission connection, retransmission failures will still occur, leading to prolonged service unavailability until the network management layer detects a switching node failure at second 10, triggering a route change. Only after this point will the service successfully transmit if it re-initiates a transmission connection. In contrast, embodiments of this disclosure do not rely on changing switching nodes to bypass faulty paths. Instead, they determine the path status of each candidate logical path based on a comparison of the sent bitmap and received bitmap, thereby achieving rapid determination of the logical path's path status. As shown in FIG11A, embodiments of this disclosure can detect a faulty initial logical path within 40 milliseconds. Furthermore, even if the initial logical path is faulty, the target packet can be transferred to a non-faulty target logical path. In this case, even if the upper layer experiences short periods of packet loss and no response, the source node can restore the data flow after the first or second timeout retransmission. In this situation, the upper-layer service will not perceive a data flow interruption, nor will it experience service unavailability. Referring to Figure 11B, from a throughput perspective, when the switching node fails at the 10th second, the throughput of existing packet transmission methods will experience a prolonged decrease, only recovering at the 40th second. However, in the embodiments of this disclosure, although the throughput decreases after the switching node fails, it recovers quickly. Based on this, it can be determined that, compared to existing packet transmission methods, the embodiments of this disclosure can improve data flow continuity and service availability during packet transmission.

[0165] The embodiments of steps 410 to 450 described above do not rely solely on retransmission to resolve faults, as is the case with bare tunnel encapsulation. Instead, they send a receive status request to the destination node, receive the receive bitmap from the destination node, and compare the source node's send bitmap with the destination node's receive bitmap to prevent the target packet from being placed in a potentially faulty logical path beforehand. Since the send bitmap indicates the packet transmission status of each candidate logical path at the source node, and the receive bitmap indicates the packet reception status of each candidate logical path at the destination node, comparing the send and receive bitmaps yields the path status of each candidate logical path, thus allocating a non-faulty target logical path for the target packet. This method, by accurately predicting which candidate logical paths might be faulty beforehand, avoids sending the target packet in faulty candidate logical paths, significantly improving data flow continuity and service availability compared to solutions that only retransmit afterward. This solution only requires adding a receive status request or receive bitmap to a small number of data packets. It has low transmission and storage overhead, and the processing of comparing the send bitmap and receive bitmap is relatively simple with low computational overhead. Therefore, while maintaining low computational and storage overhead, it improves the continuity of data flow and service availability in packet transmission.

[0166] The above is a general description of steps 410 to 450. The specific implementation process of steps 410 to 450 is described in detail below.

[0167] Detailed description of step 410

[0168] In step 410, when determining the destination node corresponding to the target message based on the addressing information of the target message, the initial logical path can also be determined from multiple candidate logical paths from the source node to the destination node based on the addressing information of the target message.

[0169] In one embodiment, the addressing information is the five-tuple information of the target message;

[0170] Referring to Figure 12, step 410 includes:

[0171] Step 1210: Perform a hash operation on the quintuple information to obtain the target hash value;

[0172] Step 1220: Perform a modulo operation between the target hash value and the number of multiple candidate logical paths to obtain the target remainder;

[0173] Step 1230: Based on the target remainder, determine the initial logical path among multiple candidate logical paths.

[0174] Steps 1210 to 1230 are described in detail below:

[0175] In step 1210, a hash operation is performed on the quintuple information to obtain the target hash value.

[0176] As can be understood, referring to Figure 13, addressing information can be represented as a 5-tuple of the target packet. This 5-tuple is added as a field to the target packet, and the destination node and candidate logical path used for transmission can be determined through it. The 5-tuple includes the source IP, destination IP, protocol number, UDP source port number, and destination port number. For target packets with the same source and destination nodes, the source IP, destination IP, protocol number, and destination port number are the same; only the UDP source port number differs. This means that target packets with different UDP source port numbers will select different candidate logical paths. Therefore, candidate logical paths can be selected based on the 5-tuple information.

[0177] According to embodiments of this disclosure, hashing is a process of converting an input of arbitrary length into a fixed-length output using a hash function. Furthermore, hashing is a commonly used method to consider mapping balance when selecting candidate logical paths based on 5-tuple information. To minimize the impact on the target message when the initial logical path corresponding to the target message is in a faulty state, embodiments of this disclosure employ a consistent hashing method. First, a target hash value can be obtained by performing a hash operation on the 5-tuple information. The target hash value refers to the numerical value obtained after calculating the 5-tuple information using a hash function.

[0178] In step 1220, the target hash value is moduloed with the number of multiple candidate logical paths to obtain the target remainder.

[0179] According to embodiments of this disclosure, the number of candidate logical paths refers to the total number of candidate logical paths included in the tunnel from the source node to the destination node. Modulo operation can be used to calculate the remainder after dividing two numbers; that is, modulo operation can calculate the remainder after dividing the target hash value by the number of candidate logical paths, and the remainder after dividing the target hash value by the number of candidate logical paths is also the target remainder.

[0180] In step 1230, based on the target remainder, an initial logical path is determined from multiple candidate logical paths.

[0181] According to embodiments of this disclosure, the target remainder can be understood as an index that can be used to determine the initial logical path corresponding to the target message. For example, referring to FIG14, target message 1 and target message 2 are used as examples: the candidate logical path pointed to by the target remainder of target message 1 is candidate logical path 2, and the candidate logical path pointed to by the target remainder of target message 2 is candidate logical path 3. Therefore, it can be determined that the initial logical path corresponding to target message 1 is candidate logical path 2, and the initial logical path corresponding to target message 2 is candidate logical path 3. Referring to FIG15, since the destination nodes of target message 1 and target message 2 are the same, both being destination node 1, both target message 1 and target message 2 use tunnel 1 to be transmitted to destination node 1. Further, target message 1 uses candidate logical path 2 in tunnel 1 to be transmitted to destination node 1, and target message 2 uses candidate logical path 3 in tunnel 1 to be transmitted to destination node 2.

[0182] The specific method for "determining the initial logical path from multiple candidate logical paths based on the target remainder" will be described in detail below.

[0183] The embodiments of steps 1210 to 1230 above determine the initial logical path corresponding to the target message by performing a consistent hash operation on the five-tuple information of the target message. This can evenly select the corresponding initial logical path for each different target message, reducing the occurrence of candidate logical path congestion caused by too many messages using the same candidate logical path for transmission.

[0184] In one embodiment, referring to FIG16, step 1230 includes:

[0185] Step 1610: Assign an index to each candidate logical path;

[0186] Step 1620: Arrange the indices of each candidate logical path into an index group, and repeat the index group a third time to obtain the original index queue;

[0187] Step 1630: In the original index queue, select the index at the position of the target remainder as the initial index, and determine the candidate logical path corresponding to the initial index as the initial logical path.

[0188] Steps 1610 to 1630 are described in detail below:

[0189] In step 1610, an index is assigned to each candidate logical path.

[0190] According to embodiments of this disclosure, an index can be a pointer to a candidate logical path provided by the quintuple information. Each candidate logical path corresponds to an index, meaning that the corresponding candidate logical path can be determined subsequently based on this index. Therefore, it is first necessary to assign an index to each candidate logical path. For example, referring to FIG17, assuming there are candidate logical path 1, candidate logical path 2, candidate logical path 3, and candidate logical path 4, index 1 can be assigned to candidate logical path 1, index 2 to candidate logical path 2, index 3 to candidate logical path 3, and index 4 to candidate logical path 4.

[0191] In step 1620, the indices of each candidate logical path are arranged into index groups, and the index groups are repeated a third time to obtain the original index queue.

[0192] According to embodiments of this disclosure, an index group refers to a queue composed of the indexes of each candidate logical path. The third number refers to the number of times the index group is repeatedly cyclically arranged; the specific method for determining the third number will be described in detail below. The original index queue refers to a queue obtained by cyclically arranging the index group based on the third number. For example, referring to Figure 17, assume there are candidate logical paths 1, 2, 3, and 4. The indices corresponding to each candidate logical path are 1, 2, 3, and 4, respectively. Based on this, the indices of each candidate logical path are arranged into an index group, resulting in an index group including 1, 2, 3, and 4. Further, assuming the third number is 4, repeating the index group including 1, 2, 3, and 4 cyclically four times yields the original index queue shown in Figure 17.

[0193] In step 1630, the index at the position of the target remainder is selected from the original index queue as the initial index, and the candidate logical path corresponding to the initial index is determined as the initial logical path.

[0194] According to embodiments of this disclosure, the position refers to the order of the index in the original index queue, and different indices correspond to different positions. The initial index refers to the index at the position of the target remainder corresponding to the target packet in the original index queue. Based on the initial index of the target packet, the initial logical path of the target packet can be determined. For example, referring to FIG14, assuming that the target remainder of target packet 1 is determined to be 6 after hash operation and modulo operation, the position of the original index queue is searched based on the target remainder of target packet 1, and the index at the position of the original index queue is obtained as 2. Using 2 as the initial index of target packet 1, the candidate logical path corresponding to the initial index can be determined as candidate logical path 2. Therefore, candidate logical path 2 can be determined as the initial logical path of target packet 1.

[0195] The embodiments of steps 1610 to 1630 described above can arrange the indices of each candidate logical path into index groups, and then cyclically arrange the index groups according to the third number to obtain the original index queue. Based on this, uniform mapping of candidate logical paths is achieved. Moreover, in the original index queue, the initial logical path can be determined based on the index of the target remainder position of the target packet, uniformly selecting the corresponding initial logical path for each different packet, thus achieving load balancing on each candidate logical path.

[0196] In one embodiment, referring to FIG18, the third number in step 1620 is determined in the following manner:

[0197] Step 1810: Obtain the hash algorithm used for hash operations;

[0198] Step 1820: Determine the maximum hash value generated by the hash algorithm;

[0199] Step 1830: Obtain the storage space size of the source node;

[0200] Step 1840: Obtain the computing power of the source node;

[0201] Step 1850: Determine the third number based on the maximum hash value, storage space size, and computing power.

[0202] Steps 1810 to 1850 are described in detail below:

[0203] In step 1810, the hash algorithm used for hashing is obtained.

[0204] According to embodiments of this disclosure, there are many types of hash algorithms, each with its specific application scenarios and performance characteristics. Therefore, before performing hash operations on 5-tuple information, it is essential to first obtain the hash algorithm to be used.

[0205] In step 1820, the maximum hash value generated by the hash algorithm is determined.

[0206] According to embodiments of this disclosure, the maximum hash value refers to the largest target remainder that can be obtained after performing a hash operation on the 5-tuple information using a hash algorithm. A larger maximum hash value indicates a larger target remainder for the target packet. Since the target remainder is used to determine the initial logical path of the target packet in the original index queue, to ensure that the target remainder of each target packet does not exceed the number of indices in the original index queue, the maximum hash value and the third number are proportional; a larger maximum hash value results in a larger third number.

[0207] In step 1830, the storage space size of the source node is obtained.

[0208] According to embodiments of this disclosure, a larger storage space for the source node means that the source node can hold more data. While a larger third number increases the uniformity of candidate logical path selection, it also leads to a larger storage space occupied by the original index queue. To ensure a balance between the storage space occupied by the original index queue and the uniformity of candidate logical path selection, the size of the third number can be reasonably determined based on the storage space size of the source node. The storage space size of the source node is directly proportional to the third number; the larger the storage space of the source node, the larger the third number.

[0209] In step 1840, the computing power of the source node is obtained.

[0210] According to embodiments of this disclosure, the computing power of a source node refers to its ability to process packets. If the source node's computing power is poor, it indicates that the target remainder obtained after hashing the 5-tuple may not be accurate, thus reducing the uniformity of candidate logical path selection. Therefore, the third number can be set larger to improve the uniformity of candidate logical path selection. Thus, the computing power of the source node is inversely proportional to the third number; the stronger the source node's computing power, the smaller the third number.

[0211] In step 1850, a third number is determined based on the maximum hash value, storage space size, and computing power.

[0212] Understandably, methods for determining the third number based on the maximum hash value, storage space size, and computing power include: determining the first score based on the maximum hash value; determining the second score based on the storage space size; determining the third score based on computing power; determining the fourth score based on the first, second, and third scores; and determining the third number based on the fourth score.

[0213] Determining the first score based on the maximum hash value can be done using a lookup table. The table mapping maximum hash values ​​to first scores will provide the corresponding first score. Alternatively, a formula can be used. The maximum hash value will be substituted into a pre-defined formula for determining the first score based on the maximum hash value.

[0214] Determining the second score based on storage space size can be done using a lookup table. The table showing the correspondence between storage space size and the second score can be used to obtain the second score corresponding to that storage space size. Alternatively, the second score can be determined by substituting the storage space size into a pre-set formula.

[0215] Determining the third score based on calculation ability can be done using a lookup table. The table showing the correspondence between calculation ability and the third score can be used to obtain the third score corresponding to that calculation ability. Alternatively, a formula can be used. The calculation ability can be substituted into a pre-set formula for determining the third score based on calculation ability to obtain the corresponding third score.

[0216] The fourth score can be the sum of the first, second, and third scores, or the average of the first, second, and third scores. Furthermore, based on the importance of the maximum hash value, storage space size, and computing power to the decision of the third score, different weights can be assigned to the first, second, and third scores, thus determining the fourth score as a weighted sum of the first, second, and third scores.

[0217] To determine the third number based on the fourth fraction, one can use a lookup table. The table showing the correspondence between the fourth fraction and the third number will provide the corresponding third number. Alternatively, one can use a formula. Substituting the fourth fraction into a pre-defined formula for determining the third number based on the fourth fraction will yield the corresponding third number.

[0218] The embodiments of steps 1810 to 1850 described above can comprehensively determine the size of the third number based on the maximum hash value generated by the hash algorithm, the storage space size of the source node, and the computing power of the source node. Because the importance of the above three factors is taken into account, the original index queue obtained based on the third number can also be more suitable for the source node.

[0219] In one embodiment, referring to FIG19, the number of multiple candidate logical paths in step 410 is determined in the following manner:

[0220] Step 1910: Obtain the transmission traffic per unit time in the target tunnel from the source node to the destination node;

[0221] Step 1920: Obtain the path failure rate of the target tunnel;

[0222] Step 1930: Obtain the average transmission flow variance in the target tunnel;

[0223] Step 1940: Determine the number of multiple candidate logical paths based on the unit time transmission traffic, path failure rate, and average transmission traffic variance.

[0224] Steps 1910 to 1940 are described in detail below:

[0225] In step 1910, the unit time transmission traffic in the target tunnel from the source node to the destination node is obtained.

[0226] According to embodiments of this disclosure, a target tunnel refers to a tunnel between a source node and a destination node, and the tunnel includes multiple candidate logical paths. Transmission traffic per unit time refers to the number of packets sent from the source node to the destination node per unit time. The higher the transmission traffic per unit time in the target tunnel from the source node to the destination node, the more packets the tunnel needs to transmit. With the number of candidate logical paths remaining constant, the transmission burden of each candidate logical path in the target tunnel increases with the increase of the transmission traffic per unit time in the target tunnel. Therefore, to distribute the transmission traffic per unit time in the target tunnel, the transmission traffic per unit time in the target tunnel is proportional to the number of multiple candidate logical paths; the higher the transmission traffic per unit time in the target tunnel, the larger the number of candidate logical paths in the target tunnel.

[0227] In step 1920, the path failure rate of the target tunnel is obtained.

[0228] According to embodiments of this disclosure, the path failure rate of a target tunnel refers to the probability that candidate logical paths contained in the target tunnel will fail under normal circumstances. A higher path failure rate indicates that more candidate logical paths in the target tunnel are unavailable.

[0229] In step 1930, the average transmission flow variance in the target tunnel is obtained.

[0230] According to embodiments of this disclosure, the average transmission traffic variance of the target tunnel refers to the variance of the transmission traffic of each candidate logical path included in the target tunnel. A larger average transmission traffic variance indicates a more uneven transmission traffic distribution among the candidate logical paths. Generally, a smaller average transmission traffic variance in the target tunnel indicates a more balanced transmission traffic distribution among the candidate logical paths.

[0231] In step 1940, the number of candidate logical paths is determined based on the transmission traffic per unit time, path failure rate, and average transmission traffic variance.

[0232] According to embodiments of this disclosure, after determining the number of packets sent from the source node to the destination node per unit time, the probability of failure of the candidate logical paths included in the target tunnel, and the variance of the transmission traffic of each candidate logical path included in the target tunnel, the transmission capacity of multiple candidate logical paths in the target tunnel can be further deduced. Based on the transmission capacity of multiple candidate logical paths in the target tunnel, the number of multiple candidate logical paths can be reasonably determined.

[0233] The specific method for "determining the number of multiple candidate logical paths based on unit time transmission traffic, path failure rate, and average transmission traffic variance" will be described in detail below.

[0234] The embodiments described in steps 1910 to 1940 above can determine a reasonable number of candidate logical paths based on the unit-time transmission traffic in the target tunnel from the source node to the destination node, the path failure rate of the target tunnel, and the average transmission traffic variance in the target tunnel. Too few candidate logical paths in the tunnel can easily lead to congestion when there are too many packets, thus reducing transmission efficiency. Too many candidate logical paths in the tunnel can easily cause resource waste. Therefore, determining a reasonable number of candidate logical paths can improve transmission efficiency while reducing resource waste.

[0235] In one embodiment, referring to FIG20, step 1940 includes:

[0236] Step 2010: Based on the transmission traffic per unit time and the path failure rate, determine the expected transmission traffic per unit time of the target tunnel;

[0237] Step 2020: Determine the target adjustment coefficient based on the average transmission flow variance;

[0238] Step 2030: Determine the number of multiple candidate logical paths based on the expected transmission traffic per unit time and the target adjustment coefficient.

[0239] Steps 2010 to 2030 are described in detail below:

[0240] In step 2010, the expected transmission flow rate per unit time of the target tunnel is determined based on the transmission flow rate per unit time and the path failure rate.

[0241] According to embodiments of this disclosure, the expected transmission traffic per unit time of a target tunnel refers to the number of packets successfully transmitted by the target tunnel per unit time, assuming that the candidate logical paths included in the target tunnel may fail. The expected transmission traffic per unit time of a target tunnel can be obtained by multiplying the transmission traffic per unit time by the path availability rate. Here, the path availability rate refers to the probability that the path status of the candidate logical paths included in the target tunnel is normal; the path availability rate is 1 minus the path failure rate. For example, assuming the transmission traffic per unit time is 500MB and the path failure rate is 10%, the path availability rate can be determined to be 90%. Multiplying the path availability rate by the transmission traffic per unit time yields an expected transmission traffic per unit time of 450MB for the target tunnel.

[0242] Understandably, to distribute the expected transmission traffic per unit time in the target tunnel, the expected transmission traffic per unit time in the target tunnel is directly proportional to the number of candidate logical paths. The higher the expected transmission traffic per unit time in the target tunnel, the larger the number of candidate logical paths.

[0243] In step 2020, a target adjustment coefficient is determined based on the average transmission traffic variance.

[0244] According to an embodiment of the present disclosure, the larger the average transmission traffic variance is, the more uneven the transmission traffic of each candidate logical path of the target tunnel is. At this time, it is necessary to adjust the transmission traffic corresponding to each candidate logical path in the target tunnel, and the target adjustment coefficient corresponds to the adjustment intensity of the transmission traffic corresponding to each candidate logical path in the target tunnel. It can be determined that the average transmission traffic variance is proportional to the target adjustment coefficient, and the larger the average transmission traffic variance is, the larger the target adjustment coefficient is.

[0245] It can be understood that the larger the target adjustment coefficient is, the greater the adjustment intensity of each candidate logical path in the target tunnel is. Based on this, the number of candidate logical paths can be appropriately increased to balance the transmission traffic of each candidate logical path. Therefore, the target adjustment coefficient is proportional to the number of candidate logical paths, and the larger the target adjustment coefficient is, the larger the number of candidate logical paths is.

[0246] In step 2030, the number of multiple candidate logical paths is determined based on the expected transmission traffic per unit time and the target adjustment coefficient.

[0247] According to an embodiment of the present disclosure, the product of the expected transmission traffic per unit time and the target adjustment coefficient can be determined as the number of multiple candidate logical paths. Exemplarily, it is assumed that the expected transmission traffic per unit time has been determined to be 500 MB and the target adjustment coefficient is 0.1. The product of the expected transmission traffic per unit time and the target adjustment coefficient can be determined as the number of multiple candidate logical paths, that is, the number of candidate logical paths is 50.

[0248] The embodiments of the above steps 2010 to 2030 not only consider the number of packets successfully transmitted by the target tunnel per unit time in the case where the candidate logical paths included in the target tunnel may fail during the process of determining the candidate logical paths, but also consider the adjustment intensity of the transmission traffic corresponding to each candidate logical path in the target tunnel. Based on the above steps, a more reasonable number of candidate logical paths can be determined, which improves the transmission efficiency while reducing resource waste.

[0249] Detailed description of steps 420 and 430

[0250] Since steps 420 and 430 are inseparable, the following will describe these two steps jointly.

[0251] In step 420, a transmission bitmap of the source node is obtained, and the transmission bitmap indicates the packet transmission status of each of the multiple candidate logical paths at the source node end.

[0252] In step 430, a reception status request is sent to the destination node, and a reception bitmap is received in response to the reception status request from the destination node. The reception bitmap indicates the message reception status of each of the multiple candidate logical paths at the destination node.

[0253] In one embodiment, referring to FIG21, the transmit bitmap and receive bitmap are generated periodically, and step 420 includes:

[0254] Step 2110: In the current cycle, obtain the transmission bitmap of the source node in the previous cycle;

[0255] Step 430 includes:

[0256] Step 2120: Send a receive status request to the destination node in the current cycle, and receive the receive bitmap of the previous cycle returned by the destination node in response to the receive status request.

[0257] Steps 2110 and 2120 are described in detail below:

[0258] In step 2110, in the current cycle, the transmit bitmap of the source node in the previous cycle is obtained.

[0259] According to embodiments of this disclosure, the transmission bitmap maintained by the source node is generated periodically. Each period's corresponding transmission bitmap indicates the packet transmission status of each candidate logical path at the source node within that period. Before the current period ends, the source node cannot obtain the complete transmission bitmap for that period, but the transmission bitmaps of previous periods are complete. To more accurately determine the path status of multiple candidate logical paths, the source node selects the transmission bitmap from the previous period closest to the current period for comparison. The length of the period can be specifically determined based on the size of the data center network and the application scenario. For example, when the packet transmission method of this disclosure is applied to application scenarios with high timeliness requirements, the length of one period can be set to 4ms.

[0260] The specific method for "obtaining the send bitmap of the source node in the previous cycle in the current cycle" will be described in detail below.

[0261] In step 2120, a receive status request is sent to the destination node in the current cycle, and the receive bitmap of the previous cycle is returned by the destination node in response to the receive status request.

[0262] According to embodiments of this disclosure, the receive bitmap maintained by the destination node is generated periodically. Each period's receive bitmap indicates the message reception status of each candidate logical path at the destination node within that period. While the current period is not yet over, the destination node cannot obtain the complete receive bitmap for that period; however, the receive bitmaps for periods preceding the current period are complete. To more accurately determine the path status of multiple candidate logical paths, the destination node selects the receive bitmap from the previous period closest to the current period and sends it to the source node. For example, referring to FIG22, assuming the current period is the second period and the period preceding the second period is the first period, the source node sends a receive status request to the destination node in the second period. After receiving the receive status request, the destination node returns the receive bitmap of the first period to the source node.

[0263] It should be noted that, in order to accurately determine the path status of multiple candidate logical paths, the periods corresponding to the sending bitmap and receiving bitmap used for comparison are the same.

[0264] The specific method for “sending a receive status request to the destination node in the current cycle and receiving the receive bitmap of the destination node in the previous cycle” will be described in detail below.

[0265] In the embodiments of steps 2110 to 2120 described above, the source node sends a reception status request to the destination node in the current cycle and receives the reception bitmap of the previous cycle returned by the destination node. By determining the path status of multiple candidate logical paths based on the transmission bitmap and reception bitmap of the previous cycle closest to the current cycle, a more accurate and real-time path status of multiple candidate logical paths can be obtained.

[0266] In one embodiment, referring to FIG23, step 2110 includes:

[0267] Step 2310: Initialize each bit of the sending bitmap to the first value. The number of bits in the sending bitmap is equal to the number of multiple candidate logical paths.

[0268] Step 2320: If the source node sent a receive status request on the candidate logical path in the previous cycle, set the bit corresponding to the candidate logical path to the second value.

[0269] Steps 2310 and 2320 are described in detail below:

[0270] In step 2310, each bit of the transmit bitmap is initialized to a first value, and the number of bits in the transmit bitmap is equal to the number of multiple candidate logical paths.

[0271] According to embodiments of this disclosure, to facilitate the determination of the message transmission status of each candidate logical path, the transmission bitmap maintains the message transmission status corresponding to each candidate logical path. The number of bits in the transmission bitmap is equal to the number of candidate logical paths, and each bit in the transmission bitmap corresponds to the message transmission status of a candidate logical path. Further, in the transmission bitmap, the bit corresponding to a candidate logical path is set to a first value, which can be used to indicate that there is currently no receiving status request to use the candidate logical path to send to the destination node. At the beginning of each period, to facilitate the statistics of the transmission status of each candidate logical path, each bit of the transmission bitmap needs to be initialized to the first value. The first value can be set to 0 or any other value.

[0272] For example, referring to Figure 24, assuming there are currently 16 candidate logical paths, the number of bits in the transmission bitmap is equal to 16. With the first value being 0, at the beginning of each cycle, the bits corresponding to each of the 16 candidate logical paths in the transmission bitmap need to be set to 0.

[0273] In step 2320, if the source node sent a receive status request on the candidate logical path in the previous cycle, the bit corresponding to the candidate logical path is set to the second value.

[0274] According to embodiments of this disclosure, in the transmission bitmap, the bit corresponding to the candidate logical path is set to a second value, which can be used to indicate that a receive status request exists within a period and is intended to be sent to the destination node using the candidate logical path. Since the transmission bitmap obtained by the source node in step 2110 is from the previous period, if the source node sent a receive status request on the candidate logical path in the previous period, the bit corresponding to the candidate logical path in the transmission bitmap is set to the second value. The second value can be set to 1 or any other value, but it is a value different from the first value.

[0275] Understandably, in the previous cycle, the bit corresponding to the candidate logical path on the sending bitmap would only change from the first value to the second value if there was a request to use a certain candidate logical path for transmission in the receive state.

[0276] For example, referring to Figure 24, assume there are currently 16 candidate logical paths, with the first value being 0 and the second value being 1. At the beginning of the previous cycle, the bits corresponding to the 16 candidate logical paths in the transmission bitmap are all set to 0. If, in the previous cycle, the source node sent a receive status request on candidate logical path 2, the bit corresponding to candidate logical path 2 is set to 1.

[0277] In the embodiments of steps 2310 to 2320 described above, each bit of the transmission bitmap is initialized to a first value at the beginning of each cycle, and the bit corresponding to the candidate logical path is set to a second value when the source node sends a receive status request on the candidate logical path. This method allows for precise recording of the message transmission status of each candidate logical path in each cycle, facilitating subsequent determination of the path status of each candidate logical path based on its message transmission and receive status.

[0278] In one embodiment, referring to FIG25, step 2120 includes:

[0279] Step 2510: In the current period, add the receive status request to the first tunnel encapsulation field of the first data packet and send the first data packet to the destination node;

[0280] Step 2520: Receive the second data packet sent by the destination node in response to the first data packet. The second tunnel encapsulation field of the second data packet carries the received bitmap of the destination node in the previous cycle.

[0281] Steps 2510 and 2520 are described in detail below:

[0282] In step 2510, during the current period, a receive status request is added to the first tunnel encapsulation field of the first data packet, and the first data packet is sent to the destination node.

[0283] According to embodiments of this disclosure, the first tunnel encapsulation field refers to the field in which the source node encapsulates the target packet to be transmitted to the destination node, and the first tunnel encapsulation field encapsulates a receive status request. The first data packet refers to the packet obtained after the source node encapsulates the target packet to be transmitted to the destination node using the first tunnel encapsulation field, as shown in Figure 26. It is understood that embodiments of this disclosure reduce transmission overhead by adding a receive status request to the first tunnel encapsulation field of the first data packet, so that the packet sent by the source node to the destination node carries the receive status request, rather than sending a separate receive status request to the destination node.

[0284] In step 2520, a second data packet sent by the destination node in response to the first data packet is received. The second tunnel encapsulation field of the second data packet carries the received bitmap of the destination node in the previous cycle.

[0285] According to embodiments of this disclosure, the second tunnel encapsulation field refers to the field in which the destination node encapsulates the message to be transmitted to the source node, and the second tunnel encapsulation field encapsulates the received bitmap of the destination node in the previous cycle. The second data packet refers to the packet obtained after the destination node encapsulates the message to be transmitted to the source node using the second tunnel encapsulation field, as shown in FIG27. It can be understood that the embodiments of this disclosure reduce transmission overhead by adding the received bitmap of the previous cycle to the second tunnel encapsulation field of the second data packet, so that the message sent by the destination node to the source node carries the received bitmap of the previous cycle, instead of sending a data packet containing the received bitmap of the previous cycle separately to the source node.

[0286] In the embodiments of steps 2510 to 2520 described above, the source node adds a receive status request to the first tunnel encapsulation field of the first data packet, so that the packets sent by the source node to the destination node carry the receive status request, eliminating the need to send a separate receive status request to the destination node and reducing transmission overhead. Furthermore, the destination node adds the receive bitmap of the previous cycle to the second tunnel encapsulation field of the second data packet, so that the packets sent by the destination node to the source node carry the receive bitmap of the previous cycle, eliminating the need to send a separate data packet containing the receive bitmap of the previous cycle to the source node, further reducing transmission overhead.

[0287] In one embodiment, the first tunnel encapsulation field includes a first tag field and a receive status request field, and the second tunnel encapsulation field includes a second tag field, a receive status response field, and a receive bitmap field. The first tag field indicates that the first data packet carries a receive status request, and the second tag field indicates that the second data packet carries a receive status response.

[0288] In one embodiment, referring to FIG28, step 2510 includes:

[0289] Step 2810: Set the first flag field in the first tunnel encapsulation field; add the receive status request to the receive status request field in the first tunnel encapsulation field, and send the first data packet to the destination node;

[0290] The second data packet in step 2520 is generated in the following way:

[0291] Step 2820: Set the second flag field in the second tunnel encapsulation field; add the receive status acknowledgment to the receive status acknowledgment field in the second tunnel encapsulation field; add the receive bitmap to the receive bitmap field in the second tunnel encapsulation field.

[0292] Steps 2810 and 2820 are described in detail below.

[0293] In step 2810, the first flag field in the first tunnel encapsulation field is set; a receive status request is added to the receive status request field in the first tunnel encapsulation field, and a first data packet is sent to the destination node.

[0294] According to an embodiment of this disclosure, referring to FIG29, the first marker field is a field in the first tunnel encapsulation field, and the first marker field is used to indicate whether the first data packet carries a receive status request. The receive status request field is also a field in the first tunnel encapsulation field, and the receive status request field can be used to encapsulate the receive status request.

[0295] If the first data packet carries a receive status request, meaning its receive status request field is encapsulated, the first flag field of the first data packet can be set to a third value, which can be 1 or any other value. Furthermore, the first tunnel encapsulation field can also include a first cycle count field, which indicates the cycle corresponding to the receive bitmap requested by the source node. When the packet carries a receive status request, the first cycle count field will be filled with the number of cycles corresponding to the receive bitmap requested by the source node. If the packet does not carry a receive status request, its receive status request field is not filled with a receive status request, and the first cycle count field is also not filled with a cycle number. In this case, the first flag field of the first data packet can be set to a fourth value, which can be 0 or any other value, and this fourth value is different from the third value.

[0296] In step 2820, the second flag field in the second tunnel encapsulation field is set; the receive status acknowledgment is added to the receive status acknowledgment field in the second tunnel encapsulation field; and the receive bitmap is added to the receive bitmap field in the second tunnel encapsulation field.

[0297] According to embodiments of this disclosure, referring to FIG30, the second marker field is a field within the second tunnel encapsulation field, used to indicate whether the second data packet carries a receive status acknowledgment. The receive status acknowledgment refers to the confirmation response returned by the destination node to the source node after receiving a first data packet carrying a receive status request sent by the source node. The receive status acknowledgment field is also a field within the second tunnel encapsulation field, and can be used to encapsulate the receive status acknowledgment. The receive bitmap field is also a field within the second tunnel encapsulation field, and can be used to encapsulate the receive bitmap.

[0298] If the second datagram sent by the current destination node to the source node is an acknowledgment returned by the destination node after receiving the first datagram carrying a receive status request from the source node, the receive status acknowledgment can be added to the receive status acknowledgment field in the second tunnel encapsulation field. If the current destination node returns a receive bitmap to the source node, i.e., the receive bitmap field of the second datagram encapsulates a receive bitmap, the second flag field of the second datagram can be set to the fifth value, which can be 1 or any other value. Furthermore, the second tunnel encapsulation field can also include a second cycle count field, which indicates the cycle corresponding to the receive bitmap. When the receive bitmap field of the second datagram encapsulates a receive bitmap, the second cycle count field will be filled with the cycle number corresponding to the receive bitmap. If the message sent by the destination node to the source node does not carry the receive bitmap of the previous cycle, then the receive bitmap field of the second datagram does not encapsulate a receive bitmap, and the second cycle count field is not filled with the cycle number. In this case, the second flag field of the message can be set to the sixth value, which can be 0 or any other value, and the sixth value is different from the fifth value.

[0299] In the embodiments described above, steps 2810 to 2820, the source node sets the first flag field in the first tunnel encapsulation field and adds a receive status request to the receive status request field in the first tunnel encapsulation field, thus avoiding sending a separate receive status request to the destination node. This reduces both transmission and message overhead. Furthermore, the destination node further reduces transmission and message overhead by setting the second flag field in the second tunnel encapsulation field, adding a receive status response to the receive status response field in the second tunnel encapsulation field, and adding a receive bitmap to the receive bitmap field in the second tunnel encapsulation field.

[0300] In one embodiment, referring to FIG31, step 2820 includes:

[0301] Step 3110: Initialize each bit of the received bitmap to the first value. The number of bits in the received bitmap is equal to the number of multiple candidate logical paths.

[0302] Step 3120: If in the previous cycle, the destination node received a first data packet with a receive status request added to the first tunnel encapsulation field on the candidate logical path, set the bit corresponding to the candidate logical path to the second value.

[0303] Step 3130: Add the received bitmap to the received bitmap field in the second tunnel encapsulation field.

[0304] Steps 3110 to 3130 are described in detail below.

[0305] In step 3110, each bit of the received bitmap is initialized to a first value, and the number of bits in the received bitmap is equal to the number of multiple candidate logical paths.

[0306] According to embodiments of this disclosure, to facilitate the determination of the message reception status of each candidate logical path, the receive bitmap maintains the message reception status corresponding to each candidate logical path. The number of bits in the receive bitmap is equal to the number of candidate logical paths, and each bit in the receive bitmap corresponds to the message reception status of a candidate logical path. Further, in the receive bitmap, the bit corresponding to a candidate logical path is set to a first value, which can be used to indicate that the destination node has not received a message carrying a reception status request that uses that candidate logical path for transmission within the period. At the beginning of each period, to facilitate the statistical analysis of the message reception status of each candidate logical path, each bit of the receive bitmap needs to be initialized to the first value. The first value can be set to 0 or any other value.

[0307] For example, referring to Figure 32, assuming there are currently 16 candidate logical paths, the number of bits in the receive bitmap is equal to 16. With the first value being 0, at the beginning of each cycle, the bits corresponding to the 16 candidate logical paths in the receive bitmap need to be set to 0.

[0308] In step 3120, if in the previous cycle, the destination node received a first data packet with a receive status request added to the first tunnel encapsulation field on the candidate logical path, the bit corresponding to the candidate logical path is set to the second value.

[0309] According to embodiments of this disclosure, in the received bitmap, the bit corresponding to the candidate logical path is set to a second value, which can be used to indicate that the destination node has received a message carrying a reception status request that uses the candidate logical path for transmission within a period. Since the received bitmap encapsulated by the destination node in step 2820 is from the previous period, if the destination node receives a message carrying a reception status request that uses the candidate logical path for transmission in the previous period, the bit corresponding to the candidate logical path in the received bitmap is set to the second value. The second value can be set to 1 or any other value, but it is a value different from the first value.

[0310] Understandably, in the previous cycle, only when a candidate logical path receives a message carrying a receive status request will the bit corresponding to that candidate logical path on the receive bitmap change from the first value to the second value.

[0311] For example, referring to Figure 32, assume there are currently 16 candidate logical paths, with the first value being 0 and the second value being 1. At the beginning of the previous cycle, the bits corresponding to the 16 candidate logical paths in the receive bitmap are all set to 0. If, in the previous cycle, the destination node receives a message carrying a receive status request that uses candidate logical path 2 for transmission, the bits corresponding to candidate logical path 2 are set to 1.

[0312] In step 3130, the receive bitmap is added to the receive bitmap field in the second tunnel encapsulation field.

[0313] As is understandable, the detailed process of "adding the received bitmap to the received bitmap field in the second tunnel encapsulation field" has already been explained above, and will not be repeated here.

[0314] In the embodiments of steps 3110 to 3130 described above, each bit of the received bitmap is initialized to a first value at the beginning of each cycle, and when the destination node receives a message carrying a reception status request that uses a certain candidate logical path for transmission, the bit corresponding to that candidate logical path is set to a second value. This method allows for precise recording of the message reception status of each candidate logical path in each cycle, facilitating subsequent determination of the path status of each candidate logical path based on its message sending and receiving status.

[0315] In one embodiment, referring to FIG33, step 2510 includes:

[0316] Step 3310: Obtain the first number of positive data packets sent by the source node through the candidate logical path in the current period; add the receive status request to the first tunnel encapsulation field of the first number of positive data packets, generate the first data packet, and send the first data packet to the destination node;

[0317] The second data packet in step 2520 is generated in the following way:

[0318] Step 3320: Obtain the first number of reverse data packets sent by the destination node through the candidate logical path in the current period; add the received bitmap to the second tunnel encapsulation field of the first number of reverse data packets to generate the second data packet.

[0319] Steps 3310 and 3320 are described in detail below.

[0320] In step 3310, the first number of positive data packets sent by the source node through the candidate logical path in the current period are obtained; the receive status request is added to the first tunnel encapsulation field of the first number of positive data packets to generate a first data packet, and the first data packet is sent to the destination node.

[0321] According to embodiments of this disclosure, a forward data packet refers to a packet sent from a source node to a destination node. It is understood that in each cycle, the source node can send multiple forward data packets to the destination node through candidate logical paths. However, if each forward data packet carries a receive status request, it will result in significant packet overhead. To reduce packet overhead, the source node only encapsulates the receive status request in the first few forward data packets sent through the candidate logical path. The first number can be determined based on the actual packet transmission situation. Generally, to reduce packet overhead and achieve lightweight transmission, the first number is set to 1.

[0322] For example, step 3310 is described here with reference to Figure 34. Assuming the first number is 1, for period 1, the first positive data packet sent by the source node through the candidate logical path within period 1 is obtained, the receive status request is added to the first tunnel encapsulation field of the first positive data packet, the first data packet is generated, and the first data packet is sent to the destination node, as shown by the first arrow pointing from the source node to the destination node in period 1 of Figure 34.

[0323] In step 3320, the first number of reverse data packets sent by the destination node through the candidate logical path in the current period are obtained; the received bitmap is added to the second tunnel encapsulation field of the first number of reverse data packets to generate the second data packet.

[0324] According to embodiments of this disclosure, a reverse datagram refers to a message sent by a destination node to a source node. It is understood that in each cycle, the destination node can send multiple reverse datagrams to the source node through candidate logical paths. However, if each reverse datagram carries the destination node's receive bitmap from the previous cycle, it will result in significant message overhead. To reduce message overhead, the destination node only encapsulates the receive bitmap in the first few reverse datagrams sent through the candidate logical paths.

[0325] For example, step 3320 is described here with reference to Figure 34. Assuming the first number is 1, for period 1, the first reverse data packet sent by the destination node through the candidate logical path within period 1 is obtained, the received bitmap is added to the second tunnel encapsulation field of the first reverse data packet, a second data packet is generated, and the second data packet is sent to the source node, as shown by the first arrow pointing from the destination node to the source node in period 1 of Figure 34.

[0326] In the embodiments described in steps 3310 to 3320 above, the source node encapsulates the receive status request only in the first few forward data packets sent through the candidate logical path, eliminating the need to encapsulate the receive status request in every forward data packet, thus reducing message overhead. Similarly, the destination node encapsulates the receive bitmap only in the first few reverse data packets sent through the candidate logical path, eliminating the need to encapsulate the receive bitmap in every reverse data packet, further reducing message overhead.

[0327] In one embodiment, referring to FIG35, the first number of steps 3310 and 3320 can both be determined in the following manner:

[0328] Step 3510: Obtain the average number of positive data packets sent in the second number of periods prior to the current period;

[0329] Step 3520: Obtain the average packet loss rate of forward data packets sent in the second number of periods prior to the current period;

[0330] Step 3530: Obtain the message type of the first positive data message to be sent in the current period;

[0331] Step 3540: Determine the message sending priority based on the message type;

[0332] Step 3550: Determine the first number based on the average number, average packet loss rate, and message sending priority.

[0333] Steps 3510 and 3550 are described in detail below:

[0334] In step 3510, the average number of positive data packets sent in the second number of periods prior to the current period is obtained.

[0335] According to embodiments of this disclosure, the number of forward data packets sent by the source node through each candidate logical path in each cycle is not entirely the same. The average number of forward data packets sent in the second number of cycles preceding the current cycle refers to the average number of forward data packets sent by the source node through each candidate logical path in the second number of cycles preceding the current cycle. The second number can be determined based on the actual packet transmission situation, and the second number is proportional to the calculation precision of the average number of forward data packets sent. The larger the second number, the higher the accuracy of the calculated average number of forward data packets.

[0336] It is understandable that the higher the average number of positive data packets sent in the second number of periods preceding the current period, the greater the packet traffic transmitted by each candidate logical path. Accordingly, the first number can be set to a relatively large value. Therefore, it can be determined that the average number of positive data packets sent in the second number of periods preceding the current period is directly proportional to the first number.

[0337] In step 3520, the average packet loss rate of forward data packets sent in the second number of periods prior to the current period is obtained.

[0338] According to embodiments of this disclosure, the average packet loss rate of forward data packets sent in the second number of periods prior to the current period refers to the average packet loss rate of forward data packets sent by the source node through each candidate logical path in the second number of periods prior to the current period. It can be understood that the higher the average packet loss rate of forward data packets sent in the second number of periods prior to the current period, the higher the packet loss rate of the packets sent from the source node to the destination node, and correspondingly, the higher the packet loss rate of packets carrying reception status requests. Based on this, in order to ensure that the destination node can receive packets carrying reception status requests, the first number can be set to a large value. Therefore, it can be determined that the average packet loss rate of forward data packets sent in the second number of periods prior to the current period is proportional to the first number.

[0339] In step 3530, the message type of the first positive data message to be sent in the current period is obtained.

[0340] According to embodiments of this disclosure, the message type of a forward data packet refers to the type of application corresponding to that forward data packet. For example, referring to FIG1C, if the type of the external application connected to the source node is "Important Conference Live Streaming," the message type of the forward data packet is also "Important Conference Live Streaming." If the type of the external application connected to the source node is "Satellite Live Streaming," the message type of the forward data packet is also "Satellite Live Streaming."

[0341] In step 3540, the message sending priority is determined based on the message type.

[0342] According to embodiments of this disclosure, message transmission priority is used to indicate the allowable packet loss rate of the message; the higher the message transmission priority, the lower the allowable packet loss rate. Furthermore, different message types have different timeliness requirements, resulting in different message transmission priorities. Generally, the higher the timeliness of a message type, the higher its transmission priority. For example, if there are message 1 and message 2, where message 1 is a live broadcast of an important meeting and message 2 is an advertisement with low timeliness requirements, it can be determined that message 1 has higher timeliness than message 2, and therefore message 1 has a higher transmission priority than message 2.

[0343] Understandably, the higher the message sending priority of the current source node to the destination node, the more important the message type being processed is. In this case, the first number is also increased accordingly to improve resistance to packet loss and ensure that the destination node can receive the receive status request and the source node can receive the receive bitmap.

[0344] In step 3550, a first number is determined based on the average number, average packet loss rate, and message transmission priority.

[0345] Understandably, the methods for determining the first number based on the average number, average packet loss rate, and message sending priority include: determining the fifth score based on the average number; determining the sixth score based on the average packet loss rate; determining the seventh score based on the message sending priority; determining the eighth score based on the fifth, sixth, and seventh scores; and determining the first number based on the eighth score.

[0346] Determining the fifth score based on the mean can be done by looking up a table. The table showing the correspondence between the mean and the fifth score will provide the fifth score corresponding to the mean. Alternatively, the fifth score can be determined by substituting the mean into a pre-set formula.

[0347] Determining the sixth score based on the average packet loss rate can be done using a lookup table. The table showing the correspondence between the average packet loss rate and the sixth score will provide the corresponding sixth score. Alternatively, the sixth score can be determined by substituting the average packet loss rate into a pre-set formula.

[0348] Determining the seventh score based on message transmission priority can be done using a lookup table. The table mapping message transmission priority to seventh score is used to obtain the seventh score corresponding to each message transmission priority. Alternatively, the seventh score can be determined by substituting the message transmission priority into a pre-set formula for determining the seventh score based on message transmission priority.

[0349] The eighth score can be the sum of the fifth, sixth, and seventh scores, or the average of the fifth, sixth, and seventh scores. Furthermore, different weights can be assigned to the fifth, sixth, and seventh scores based on the average number of packets, the average packet loss rate, and the message sending priority, thus determining the eighth score as a weighted sum of the fifth, sixth, and seventh scores.

[0350] To determine the first number based on the eighth fraction, one can use a lookup table. The table showing the correspondence between the eighth fraction and the first number will provide the corresponding first number. Alternatively, one can use a formula substitution method. Substituting the eighth fraction into a pre-set formula for determining the first number based on the eighth fraction will yield the corresponding first number.

[0351] The embodiments of steps 3510 to 3550 described above can comprehensively determine the size of the first number based on the average number of forward data packets sent in the second number of previous periods, the average packet loss rate of forward data packets, and the packet sending priority of the first forward data packet to be sent in the current period. Because the importance of these three factors is considered, the determined first number is more reasonable. This not only reduces the possibility that the destination node may fail to receive the receive status request or the source node may fail to receive the receive bitmap due to an excessively small first number, but also avoids the problem of excessive packet overhead caused by an excessively large first number.

[0352] In one embodiment, referring to FIG36, step 3310 includes:

[0353] Step 3610: Send the first data packet corresponding to each candidate logical path to the destination node through each candidate logical path;

[0354] Step 3320 includes:

[0355] Step 3620: If a data packet carrying a receive bitmap is received from any of the multiple candidate logical paths, the data packet is treated as the received second data packet.

[0356] Steps 3610 to 3620 are described in detail below:

[0357] In step 3610, the first data packet corresponding to each candidate logical path is sent to the destination node through each candidate logical path.

[0358] According to embodiments of this disclosure, there are multiple candidate logical paths in the tunnel between the source node and the destination node. When the source node sends a first data packet carrying a reception status request to the destination node, it does not send it by selecting a specific candidate logical path, but rather by sending it through each candidate logical path in the tunnel. This means that as long as the path status of at least one candidate logical path in the tunnel is normal, the destination node can receive the first data packet carrying the reception status request.

[0359] In step 3620, if a data packet carrying a receive bitmap is received from any of the multiple candidate logical paths, the data packet is treated as the received second data packet.

[0360] According to embodiments of this disclosure, because there are multiple candidate logical paths in the tunnel between the source node and the destination node, when the destination node sends a data packet carrying a receive bitmap to the source node, it does not send it by selecting a single candidate logical path, but rather through each candidate logical path in the tunnel. This means that as long as the path status of at least one candidate logical path in the tunnel is normal, the source node can receive the data packet carrying the receive bitmap. Furthermore, as long as the path status of at least one candidate logical path in the tunnel is normal, the source node can determine the path status of each candidate logical path, thereby quickly detecting the faulty candidate logical path.

[0361] In the embodiments described in steps 3610 to 3620 above, the source node sends a first data packet carrying a reception status request through each candidate logical path in the tunnel. As long as the path status of one candidate logical path in the tunnel is normal, the destination node can receive the first data packet carrying the reception status request. Similarly, the destination node sends a data packet carrying a reception bitmap through each candidate logical path in the tunnel. As long as the path status of one candidate logical path in the tunnel is normal, the source node can determine the path status of each candidate logical path, thereby quickly detecting faulty candidate logical paths and transferring packets to non-faulty candidate logical paths, improving data flow continuity and service availability during packet transmission.

[0362] Detailed description of step 440

[0363] Step 440: By comparing the sent bitmap and the received bitmap, determine the path status of each of the multiple candidate logical paths.

[0364] In one embodiment, referring to FIG37, step 440 includes:

[0365] Step 3710: If the bit corresponding to a candidate logical path in the sending bitmap is the second value, and the bit corresponding to a candidate logical path in the receiving bitmap is the second value, determine that the path status of the candidate logical path is normal.

[0366] Step 3720: If the bit corresponding to a candidate logical path in the sending bitmap is the second value, but the bit corresponding to the candidate logical path in the receiving bitmap is the first value, determine that the path status of the candidate logical path is fault.

[0367] Step 3730: If the bit corresponding to a candidate logical path in the bitmap is the first value, determine that the path status of the candidate logical path is inactive.

[0368] It should be noted that steps 3710, 3720, and 3730 are not sequential but rather three parallel steps. The following is a detailed description of steps 3710, 3720, and 3730:

[0369] In step 3710, if the bit corresponding to a candidate logical path in the sending bitmap is the second value, and the bit corresponding to a candidate logical path in the receiving bitmap is the second value, the path status of the candidate logical path is determined to be normal.

[0370] According to embodiments of this disclosure, if a bit corresponding to a candidate logical path in the sending bitmap is a second value, it indicates that a message carrying a receive status request was sent to the destination node using that candidate logical path in the previous cycle. If the bit corresponding to the candidate logical path in the receiving bitmap is also a second value, it indicates that the destination node received a message carrying a receive status request that was transmitted using that candidate logical path in the previous cycle. Therefore, if a bit corresponding to a candidate logical path in the sending bitmap is a second value, and the bit corresponding to the candidate logical path in the receiving bitmap is also a second value, it can be determined that the path status of the candidate logical path is normal.

[0371] For example, referring to Figure 38, assume the first value is 0 and the second value is 1. For candidate logical path 1, the bit corresponding to candidate logical path 1 in the transmitting bit diagram is 1, and the bit corresponding to candidate logical path 1 in the receiving bit diagram is 1. It can be determined that the path status of candidate logical path 1 is normal. In Figure 38, a normal path status can be represented by 1, and a path status failure can be represented by 0.

[0372] In step 3720, if the bit corresponding to a candidate logical path in the transmitted bitmap is the second value, but the bit corresponding to the candidate logical path in the received bitmap is the first value, the path status of the candidate logical path is determined to be faulty.

[0373] According to embodiments of this disclosure, if a bit corresponding to a candidate logical path in the sending bitmap is a second value, it indicates that a message carrying a receive status request was sent to the destination node using that candidate logical path in the previous cycle. If a bit corresponding to a candidate logical path in the receiving bitmap is a first value, it indicates that the destination node did not receive a message carrying a receive status request that was transmitted using that candidate logical path in the previous cycle. It can be determined that packet loss occurred on that candidate logical path. Therefore, if a candidate logical path has a second value in the sending bitmap and a first value in the receiving bitmap, the path status of that candidate logical path can be determined to be faulty.

[0374] For example, referring to Figure 38, assume the first value is 0 and the second value is 1. For candidate logical path 4, the bit corresponding to candidate logical path 4 in the transmitting bit diagram is 1, and the bit corresponding to candidate logical path 4 in the receiving bit diagram is 0. It can be determined that the path state of candidate logical path 4 is faulty. In Figure 38, a normal path state can be represented by 1, and a faulty path state can be represented by 0.

[0375] It is understandable that in some edge cases, there may be a situation where the bit corresponding to a candidate logical path in the sending bitmap is the first value, but the bit corresponding to the candidate logical path in the receiving bitmap is the second value. In this case, the candidate logical path is considered normal by default.

[0376] According to embodiments of this disclosure, if a bit corresponding to a candidate logical path in the sending bitmap is a first value, it indicates that no message carrying a receive status request was sent to the destination node using this candidate logical path in the previous cycle. If a bit corresponding to a candidate logical path in the receiving bitmap is a second value, it indicates that the destination node received a message carrying a receive status request that was transmitted using this candidate logical path in the previous cycle. This situation may occur because the candidate logical path is congested, causing a message carrying a receive status request sent using this candidate logical path in the previous cycle to arrive at the destination node only in the previous cycle. Based on this, the candidate logical path can be assumed to be normal.

[0377] The specific method for determining the path status of a candidate logical path as faulty if the bit corresponding to a candidate logical path in the sending bitmap is the second value, but the bit corresponding to the candidate logical path in the receiving bitmap is the first value, will be described in detail below.

[0378] In step 3730, if the bit corresponding to a candidate logical path in the bitmap is the first value, the path state of the candidate logical path is determined to be inactive.

[0379] According to embodiments of this disclosure, if a bit corresponding to a candidate logical path in the transmit bitmap is a first value, it indicates that no message carrying a receive status request was sent to the destination node using that candidate logical path in the previous cycle. If a bit corresponding to a candidate logical path in the receive bitmap is a first value, it indicates that the destination node did not receive a message carrying a receive status request that was transmitted using that candidate logical path in the previous cycle.

[0380] It should be noted that if the source node sent messages to the destination node in the previous cycle, the first few messages among these messages will definitely carry a receive status request, and these messages will reach the destination node through various candidate logical paths from the source node to the destination node. Based on this, if no messages carrying a receive status request were sent to the destination node using a certain candidate logical path in the previous cycle, and the destination node did not receive any messages carrying a receive status request transmitted using that candidate logical path, it can be determined that the source node did not send any messages to the destination node in the previous cycle. Therefore, if the corresponding bit in the send bitmap of a candidate logical path is the first value, and the corresponding bit in the receive bitmap of the candidate logical path is also the first value, it can be determined that the path status of that candidate logical path is inactive. In this case, the path status of that candidate logical path can also be assumed to be normal.

[0381] For example, referring to Figure 38, assume the first value is 0 and the second value is 1. For candidate logical path 13, the bit corresponding to candidate logical path 13 in the transmitting bit diagram is 0, and the bit corresponding to candidate logical path 13 in the receiving bit diagram is 0. It can be determined that the path state of candidate logical path 13 is inactive (the default path state is inactive, which is the normal situation). In Figure 38, a normal path state can be represented by 1, and a path state failure can be represented by 0.

[0382] In the embodiments of steps 3710 to 3730 above, for a certain candidate logical path, the path status of the candidate logical path can be quickly determined by the bits corresponding to the candidate logical path in the sending bit map and the bits corresponding to the candidate logical path in the receiving bit map, without spending a lot of time detecting the status of the switching nodes in the candidate logical path, thus improving the speed of determining the path status of the candidate logical path.

[0383] In one embodiment, the bitmap is sent and the bitmap is received periodically;

[0384] Referring to Figure 39, step 3720 includes:

[0385] Step 3910: If the bit corresponding to a candidate logical path in the transmitted bit map acquired in multiple consecutive cycles is the second value, but the bit corresponding to the candidate logical path in the received bit map acquired in multiple consecutive cycles is the first value, determine that the path status of the candidate logical path is fault.

[0386] Step 3910 is described in detail below:

[0387] According to embodiments of this disclosure, the transmit bitmap and receive bitmap are transmitted periodically. The source node maintains transmit bitmaps for multiple consecutive periods, and the destination node maintains receive bitmaps for multiple consecutive periods. Each period, after receiving a message carrying a receive status request from the source node, the destination node returns the receive bitmap from the previous period to the source node. The source node, upon receiving the receive bitmap from the previous period, also saves the receive bitmap.

[0388] It is understandable that when the message transmission method of this embodiment is applied to a real network, due to factors such as the congestion level of switching nodes, if the path status of a candidate logical path is evaluated based solely on the sending bitmap and receiving bitmap of a single cycle, the error rate of the path status of the candidate logical path determined by the source node is relatively large. For example, there is a probability of packet loss in the candidate logical path. If, in the previous cycle, a packet carrying a receive status request was dropped in the candidate logical path, then the destination node corresponding to that candidate logical path will also be unable to receive the packet carrying the receive status request. Since the receiving bitmap maintained by the destination node only changes the bit corresponding to the candidate logical path from the first value to the second value when the destination node receives a packet carrying a receive status request that uses the candidate logical path for transmission, the candidate logical path will be determined to be faulty if the path status of the candidate logical path is evaluated solely based on the sending bitmap and receiving bitmap of a single cycle when the packet carrying the receive status request was dropped in the candidate logical path. However, the candidate logical path is actually in a normal state, which leads to a large error rate in the path state of the candidate logical path determined by the source node.

[0389] For the reasons stated above, in order to more accurately determine the path status of candidate logical paths, embodiments of this disclosure can comprehensively determine the path status of a candidate logical path based on the bits corresponding to the candidate logical path in the transmit bitmap obtained by the source node in multiple consecutive cycles, and the bits corresponding to the candidate logical path in the receive bitmap received by the source node in multiple consecutive cycles. The number of consecutive cycles can be determined based on the packet loss probability of each candidate logical path. Generally, the number of consecutive cycles can be set to 10.

[0390] Furthermore, for a candidate logical path, if the bit corresponding to the candidate logical path in the transmit bitmap acquired by the source node is the second value for multiple consecutive cycles, and the bit corresponding to the candidate logical path in the receive bitmap acquired by the source node is the first value for multiple consecutive cycles, the path state of the candidate logical path can be determined to be faulty. For example, referring to Figure 40, assuming the first value is 0, the second value is 1, and the number of consecutive cycles is 10. For candidate logical path 4, if the bit corresponding to candidate logical path 4 in the transmit bitmap acquired by the source node is 1 for 10 consecutive cycles, and the bit corresponding to candidate logical path 4 in the receive bitmap acquired by the source node is 0 for 10 consecutive cycles, the path state of candidate logical path 4 for 10 consecutive cycles can be determined to be faulty. Based on this, the path state of candidate logical path 4 can be determined to be faulty.

[0391] In the embodiment of step 3910 above, for a certain candidate logical path, the path status of the candidate logical path can be comprehensively judged based on the bits corresponding to the candidate logical path in the transmission bit map obtained by the source node in multiple consecutive cycles and the bits corresponding to the candidate logical path in the reception bit map received by the source node in multiple consecutive cycles. This reduces the impact of the packet loss probability of the candidate logical path on the determination of the path status and improves the accuracy of judging the path status of the candidate logical path.

[0392] In one embodiment, referring to FIG41, step 3910 includes:

[0393] Step 4110: Remove the first and last cycles of multiple consecutive cycles to obtain multiple intermediate cycles;

[0394] Step 4120: If the bit corresponding to a candidate logical path in the transmit bitmap transmitted in multiple consecutive intermediate cycles is the second value, but the bit corresponding to the candidate logical path in the receive bitmap received in multiple consecutive intermediate cycles is the first value, the path state of the candidate logical path is determined to be faulty.

[0395] Steps 4110 to 4120 are described in detail below:

[0396] In step 4110, the first and last cycles of multiple consecutive cycles are removed to obtain multiple intermediate cycles.

[0397] According to embodiments of this disclosure, to address certain boundary scenarios, before comprehensively judging the path status of each candidate logical path based on multiple consecutive transmission bitmaps and multiple consecutive reception bitmaps, it is first necessary to remove the first and last cycles of the multiple consecutive cycles, retaining only the intermediate cycles. An example is given to illustrate these boundary scenarios: when the congestion levels of each candidate logical path differ, even if the packets carrying reception status requests on each candidate logical path are sent by the source node at the same time, these packets may not arrive at the destination node simultaneously. Moreover, the arrival interval of these packets carrying reception status requests arriving at the destination node through different candidate logical paths may reach the millisecond level (typically, a cycle is only 4 milliseconds). In this case, the destination node may be unable to receive packets carrying reception status requests through certain candidate logical paths in the current cycle, leading to the path status of that candidate logical path being determined as faulty in the current cycle. Therefore, embodiments of this disclosure, by removing the first and last cycles of multiple consecutive cycles, reduce the impact of path status misjudgments caused by such boundary scenarios on the finally determined path status.

[0398] For example, referring to Figure 42, assume that the number of consecutive cycles is 10, including cycles 0 to 9. Based on this, to handle some boundary scenarios, cycles 0 and 9 need to be removed, resulting in multiple intermediate cycles, namely cycles 1 to 8. Furthermore, when comprehensively judging the path states of candidate logical paths 1 to 16, the determination is based on the transmit bitmap and receive bitmap of cycles 1 to 8.

[0399] In step 4120, if the bit corresponding to a candidate logical path in the transmitted bitmap acquired in multiple consecutive intermediate cycles is the second value, but the bit corresponding to the candidate logical path in the received bitmap acquired in multiple consecutive intermediate cycles is the first value, the path state of the candidate logical path is determined to be faulty.

[0400] It is understandable that the specific implementation of step 4210 is similar to the specific implementation of step 3910 above, which states that "if the bit corresponding to a candidate logical path in the transmitted bit map obtained in multiple consecutive cycles is the second value, but the bit corresponding to the candidate logical path in the received bit map obtained in multiple consecutive cycles is the first value, the path state of the candidate logical path is determined to be faulty". Therefore, it will not be described in detail here.

[0401] In the embodiments of steps 4110 to 4120 above, the path status of each candidate logical path can be comprehensively judged based on the sending bitmap and receiving bitmap of multiple intermediate cycles by removing the first and last cycles of multiple consecutive cycles. This reduces the impact of path status misjudgment caused by boundary scenarios on the final determined path status and improves the accuracy of judging the path status of candidate logical paths.

[0402] Detailed description of step 450

[0403] Step 450: Determine the target logical path whose path status is not faulty among multiple candidate logical paths, and transmit the target message through the target logical path. This may include: if the path status of the initial logical path is faulty, determine the target logical path whose path status is not faulty among multiple candidate logical paths, and transfer the target message from the initial logical path to the target logical path.

[0404] In one embodiment, referring to FIG43, step 450 includes:

[0405] Step 4310: If the path status of the initial logical path is faulty, find the first index of the initial logical path in the original index queue;

[0406] Step 4320: According to the order of the non-faulty candidate logical paths among the multiple candidate logical paths, replace the first index with the second index of the non-faulty candidate logical path, so that the original index queue becomes the target index queue.

[0407] Step 4330: In the target index queue, select the index at the position of the target remainder as the target index, and determine the candidate logical path corresponding to the target index as the target logical path.

[0408] Steps 4310 to 4330 are described in detail below:

[0409] In step 4310, if the path status of the initial logical path is faulty, the first index of the initial logical path in the original index queue is searched.

[0410] According to embodiments of this disclosure, the first index refers to the index corresponding to the initial logical path in the original index queue. If the path status of the initial logical path is faulty, to prevent subsequent source nodes from using the initial logical path to transmit other packets, the index corresponding to the initial logical path in the original index queue must first be replaced.

[0411] For example, referring to Figure 44, assuming the initial logical path is candidate logical path 4, and the index corresponding to candidate logical path 4 in the original index queue is 4, it can be determined that the first index of the initial logical path is 4.

[0412] In step 4320, the first index is replaced with the second index of the non-faulty candidate logical path in the order of the multiple candidate logical paths, so that the original index queue becomes the target index queue.

[0413] According to embodiments of this disclosure, a non-faulty candidate logical path refers to a candidate logical path whose path status is normal. The second index refers to the index corresponding to the candidate logical path whose path status is normal in the original index queue. The target index queue refers to the index queue determined after replacing the first index in the original index queue with the second index of the non-faulty candidate logical path. Specifically, the first index in the original index queue can be replaced sequentially based on the second index of the non-faulty candidate logical path in the order of the non-faulty candidate logical paths among multiple candidate logical paths, so as to achieve a uniform mapping of each candidate logical path with a normal path status in the target index queue.

[0414] For example, referring to Figure 44, assume the candidate logical paths include: candidate logical path 1, candidate logical path 2, candidate logical path 3, and candidate logical path 4. The initial logical path is candidate logical path 4, and the first index of candidate logical path 4 is 4. If the path status of the initial logical path is faulty, and the path statuses of candidate logical path 1, candidate logical path 2, and candidate logical path 3 are all normal, then the 4 in the original index queue can be replaced with 1, 2, and 3 in the order of candidate logical path 1, candidate logical path 2, and candidate logical path 3 to obtain the target index queue.

[0415] In step 4330, the index at the position of the target remainder is selected from the target index queue as the target index, and the candidate logical path corresponding to the target index is determined as the target logical path.

[0416] According to embodiments of this disclosure, the target index refers to the index corresponding to the position of the target remainder in the target index queue. After replacing the first index in the original index queue to obtain the target index queue, the source node can select the target logical path corresponding to each packet based on the target index queue. The target logical path is the candidate logical path reselected based on the target index queue.

[0417] It should be noted that if there is a target message on the current source node side that has a determined initial logical path but has not yet been sent, and the path status of the initial logical path is determined to be faulty, a candidate logical path can be reselected for the target message as the target logical path of the target message.

[0418] It is understandable that the specific implementation of step 4330 is similar to the specific implementation of step 1630 above, which is "in the original index queue, select the index at the position of the target remainder as the initial index, and determine the candidate logical path corresponding to the initial index as the initial logical path", and will not be described in detail here.

[0419] The embodiments of steps 4310 to 4330 above can replace the first index in the original index queue in the order of the non-faulty candidate logical paths among multiple candidate logical paths, based on the second index of the non-faulty candidate logical paths. This achieves a uniform mapping of candidate logical paths with normal status in each path in the target index queue, reducing the occurrence of candidate logical path congestion caused by too many packets using the same candidate logical path for transmission.

[0420] In one embodiment, referring to FIG45, after step 450, the method further includes:

[0421] Step 4510: Determine the initial logical path fault recovery;

[0422] Step 4520: If the target message has not yet been sent in the target logical path, switch the target message back to the initial logical path for sending.

[0423] Steps 4510 to 4520 are described in detail below:

[0424] In step 4510, the initial logical path fault recovery is determined.

[0425] According to embodiments of this disclosure, it can be determined from the above that if the initial logical path fails, the source node will no longer select the initial logical path to transmit packets. Conversely, if the initial logical path recovers, the source node can continue to select the initial logical path to transmit packets.

[0426] The specific methods for "determining the initial logical path for fault recovery" will be described in detail below.

[0427] In step 4520, if the target message has not yet been sent in the target logical path, the target message is switched back to the initial logical path for transmission.

[0428] According to the embodiments of this disclosure, steps 4310 to 4320 reveal that if a target packet with an determined initial logical path exists on the current source node side but has not yet been sent, and the path status of the initial logical path is determined to be faulty, a candidate logical path can be reselected for the target packet as its target logical path. If the initial logical path has been restored, and the target packet with the determined target logical path has not yet been sent, to reduce the transmission overhead of the target logical path, the target packet can be switched back to the initial logical path for transmission.

[0429] The specific method for "switching the target message back to the initial logical path for transmission if the target message has not yet been sent in the target logical path" will be described in detail below.

[0430] In the embodiments of steps 4510 to 4520 above, after determining that the initial logical path has recovered from the fault, the source node can switch the target packets that have not yet been sent in the target logical path back to the initial logical path for transmission, thereby reducing the transmission overhead of the target logical path and balancing the transmission overhead of each non-faulty candidate logical path.

[0431] In one embodiment, referring to FIG46, step 4510 includes:

[0432] Step 4610: Send a probe request to the destination node at predetermined intervals;

[0433] Step 4620: Receive the reception status information of the destination node on the initial logical path. The reception status information is sent by the destination node in response to the probe request.

[0434] Step 4630: Based on the received status information, determine the initial logical path fault recovery.

[0435] Steps 4610 to 4630 are described in detail below:

[0436] In step 4610, a probe request is sent to the destination node at predetermined intervals.

[0437] According to an embodiment of this disclosure, referring to FIG47, after a fault is detected in the path state of the initial logical path, in order to quickly detect whether the path state of the initial logical path has recovered, the source node sends a probe request to the destination node at predetermined intervals. The probe request is an independent data packet sent by the source node to the destination node to probe whether the path state of the initial logical path has recovered. When the destination node receives the probe request sent by the source node, it indicates that the path state of the initial logical path has returned to normal. The predetermined interval can be determined based on the actual message transmission situation; generally, the predetermined interval is longer than a period.

[0438] In step 4620, the destination node receives reception status information on the initial logical path. The reception status information is sent by the destination node in response to the probe request.

[0439] According to an embodiment of this disclosure, referring to FIG47, when the destination node can receive the probe request sent by the source node, it indicates that the path state of the initial logical path has been restored to normal. At this time, in order for the source node to know in real time that the path state of the initial logical path has been restored, the destination node will respond to the probe request by returning reception status information to the source node. The reception status information can be a separate data packet or encapsulated in a message and sent together with the source node.

[0440] In step 4630, the initial logical path fault recovery is determined based on the received status information.

[0441] According to an embodiment of this disclosure, referring to FIG47, when the source node receives the reception status information returned by the destination node in response to the probe request, it can determine that the path status of the initial logical path has been restored, that is, after this, the source node can choose to use the initial logical path to transmit packets.

[0442] In the embodiments described in steps 4610 to 4630 above, the source node sends a probe request to the destination node through the faulty initial logical path at predetermined intervals to detect whether the initial logical path has recovered. When the source node receives the reception status information returned by the destination node in response to the probe request, it can determine that the path status of the initial logical path has been restored. Through the above steps, the source node can quickly determine whether the faulty initial logical path has been restored, and after determining that the initial logical path has been restored, it can use the initial logical path to continue transmitting packets, thereby improving the continuity of the data stream.

[0443] In one embodiment, if the destination node receives a probe request, the received status information is a second value; referring to Figure 48, step 4630 includes:

[0444] Step 4810: If a predetermined number of consecutive received status messages are all of the second value, determine that the initial logical path fault has been recovered.

[0445] Step 4810 is described in detail below:

[0446] According to embodiments of this disclosure, the second value in the reception status information received by the source node means that the destination node has received the probe request sent by the source node using the initial logical path. The second value can be set to 1 or any other value.

[0447] It is understandable that in some cases, the destination node may receive a probe request from the source node not necessarily because the initial logical path has been fully restored, but because the probe request happens not to be the dropped data packet. To avoid this, in embodiments of this disclosure, the source node only determines that the initial logical path has been restored if a predetermined number of consecutive received status messages are all of the second value. The predetermined number can be determined based on the actual message transmission. For example, if the predetermined number is 8, and the source node sends 10 consecutive probe requests to the destination node, and the source node receives 8 consecutive received status messages of the second value, then the source node can determine that the initial logical path has been restored.

[0448] In the embodiment of step 4810 described above, the source node will only determine that the fault in the initial logical path has been recovered if the received status information received consecutively for a predetermined number of times is the second value. This step allows for a more rigorous determination of the path status of the faulty initial logical path, improving the accuracy of the path status assessment.

[0449] In one embodiment, referring to FIG49, step 4520 includes:

[0450] Step 4910: If the target message has not yet been sent in the target logical path, obtain the initial position of the first index of the initial logical path in the original index queue;

[0451] Step 4920: Replace the index of the initial position in the target index queue with the first index of the initial logical path to obtain the updated index queue;

[0452] Step 4930: In the updated index queue, select the index at the position of the target remainder as the updated index, and send the target message waiting to be sent on the target logical path in the initial logical path corresponding to the updated index.

[0453] Steps 4910 to 4930 are described in detail below:

[0454] In step 4910, if the target message has not yet been sent in the target logical path, the initial position of the first index of the initial logical path in the original index queue is obtained.

[0455] According to embodiments of this disclosure, if the source node determines that the initial logical path has recovered from the failure, and the target packet for the target logical path has not yet been sent, the target packet can be switched back to the initial logical path for transmission to reduce the transmission overhead of the target logical path. Since the source node selects candidate logical paths for the target packet based on the target index queue at this time, the target index queue needs to be modified to switch the target packet back to the initial logical path for transmission, so that the source node can select the initial logical path for transmission of the target packet based on the modified target index queue.

[0456] Understandably, before modifying the target index queue, it is first necessary to obtain the initial position of the first index of the initial logical path in the original index queue. For example, referring to Figure 50A, assuming the initial logical path is candidate logical path 4, and the path status of the initial logical path is determined to be faulty, the modified target index queue is shown in Figure 44. If it has been determined that the fault recovery of candidate logical path 4 has been achieved, it is first necessary to obtain the initial position of the first index of candidate logical path 4 in the original index queue. As shown in Figure 50A, the first index of candidate logical path 4 is 4, and the initial position of the first index of candidate logical path 4 in the original index queue is shown in the shaded area of ​​Figure 50A, with initial positions of 4, 8, 12, and 16.

[0457] In step 4920, the index of the initial position in the target index queue is replaced with the first index of the initial logical path to obtain the updated index queue.

[0458] Understandably, after obtaining the initial position of the first index of the initial logical path in the original index queue, the target index queue can be modified. The updated index queue is the index queue obtained after modifying the target index queue. For example, the process of "modifying the target index queue" is illustrated here with reference to Figure 50B: Assuming the initial logical path is candidate logical path 4, step 4910 determines that the first index of candidate logical path 4 is 4, and the initial positions of the first index of candidate logical path 4 in the original index queue are 4, 8, 12, and 16. Based on this, the indices with positions 4, 8, 12, and 16 in the target index queue can be replaced with the first index of candidate logical path 4, that is, replacing the indices with positions 4, 8, 12, and 16 in the target index queue with 4, to obtain the updated index queue, as shown in Figure 50B. After obtaining the updated index queue, the source node can select the initial logical path to transmit the target packet based on the updated index queue.

[0459] In step 4930, the index at the position of the target remainder is selected from the updated index queue as the updated index, and the target message waiting to be sent on the target logical path is sent in the initial logical path corresponding to the updated index.

[0460] According to embodiments of this disclosure, the updated index refers to the index corresponding to the position of the target remainder in the updated index queue.

[0461] It should be noted that if the initial logical path is determined to be faulty, a new candidate logical path can be selected for the target packet as its target logical path. If the target packet still has not been sent from the source node when the initial logical path recovers from the fault, the target packet waiting to be sent on the target logical path can be sent to the initial logical path corresponding to the updated index.

[0462] It is understandable that the specific implementation of step 4930 is similar to the specific implementation of step 1630 above, which is "in the original index queue, select the index at the position of the target remainder as the initial index, and determine the candidate logical path corresponding to the initial index as the initial logical path", and will not be described in detail here.

[0463] In the embodiments described in steps 4910 to 4930 above, after determining that the initial logical path has recovered from the fault, the source node can replace the index of the initial position in the target index queue with the first index of the initial logical path to obtain an updated index queue. Based on the updated index queue, target packets waiting to be sent on the target logical path are switched back to the initial logical path for transmission, reducing the transmission overhead of the target logical path and balancing the transmission overhead of each non-faulty candidate logical path.

[0464] In one embodiment, referring to FIG51, after step 4920, the message transmission method further includes:

[0465] Step 5110: For each non-faulty candidate logical path, obtain the number of indexes corresponding to the candidate logical paths in the updated index queue;

[0466] Step 5120: Determine the average index number of each non-faulty candidate logical path;

[0467] Step 5130: Determine the difference between the average value and the index number of the candidate logical path;

[0468] Step 5140: In the updated index queue, replace the other indices that are not the first index with the first index of the initial logical path.

[0469] Steps 5110 to 5140 are described in detail below:

[0470] In step 5110, for each non-faulty candidate logical path, the index number corresponding to the candidate logical path in the updated index queue is obtained.

[0471] According to embodiments of this disclosure, when multiple candidate logical paths fail in the tunnel from the source node to the destination node, simply replacing the initial index in the target index queue with the first index of the initial logical path after fault recovery may result in uneven index distribution among the non-faulty candidate logical paths in the index queue, leading to unbalanced transmission load across these paths. Therefore, embodiments of this disclosure, after replacing the initial index in the target index queue with the first index of the initial logical path after fault recovery, further obtain the index number corresponding to each non-faulty candidate logical path in the updated index queue. Here, the index number refers to the number of indices for each non-faulty candidate logical path in the updated index queue.

[0472] For example, referring to Figure 52, assume there are four candidate logical paths between the source node and the destination node: candidate logical path 1, candidate logical path 2, candidate logical path 3, and candidate logical path 4. The index corresponding to candidate logical path 1 is 1, the index corresponding to candidate logical path 2 is 2, the index corresponding to candidate logical path 3 is 3, and the index corresponding to candidate logical path 4 is 4. The original index queue is shown as the first index queue in Figure 52. After determining that candidate logical path 4 is faulty, the updated index queue is shown as the second index queue in Figure 52. If, before the fault of candidate logical path 4 is recovered, the fault of candidate logical path 1 is also determined, the updated index queue is shown as the third index queue in Figure 52. It can be seen that the third index queue in Figure 52 only contains the indices of candidate logical path 2 and candidate logical path 3. If, after determining that candidate logical path 1 is faulty, it is detected that candidate logical path 1 has recovered, then the 1st, 5th, 9th, and 13th indices in the third index queue of Figure 52 are first replaced with the index of candidate logical path 1. We can see that in the modified index queue, candidate logical path 1 has 4 indexes, candidate logical path 2 has 6 indexes, and candidate logical path 3 has 6 indexes. Therefore, for the three non-faulty candidate logical paths, the indexes of each candidate logical path in the modified index queue are not evenly distributed.

[0473] In step 5120, the average index number of each non-faulty candidate logical path is determined.

[0474] For example, referring to Figure 52, if after candidate logical path 1 and candidate logical path 4 are determined to be faulty, and then candidate logical path 1 is detected to have recovered, the number of non-faulty candidate logical paths is 3. After replacing the 1st, 5th, 9th, and 13th indices in the third index queue of Figure 52 with the index of candidate logical path 1, it is determined that the number of indices corresponding to candidate logical path 1 in the modified index queue is 4, the number of indices corresponding to candidate logical path 2 is 6, and the number of indices corresponding to candidate logical path 3 is 6. At this point, it can be determined that the average number of indices for each non-faulty candidate logical path is 16 / 3.

[0475] In step 5130, the difference between the average value and the index number of the candidate logical path is determined.

[0476] According to embodiments of this disclosure, the difference between the average value and the index number of candidate logical paths can be used to indicate the degree of balance in the index number of each candidate logical path in the current index queue. To ensure load balancing for each non-faulty candidate logical path, it is generally desirable that the difference between the average value and the index number of each candidate logical path is less than 1.

[0477] For example, referring to Figure 52, after replacing the 1st, 5th, 9th, and 13th indices in the third index queue of Figure 52 with the index of candidate logical path 1, it is determined that the modified index queue contains 4 indices corresponding to candidate logical path 1, 6 indices corresponding to candidate logical path 2, and 6 indices corresponding to candidate logical path 3. Correspondingly, the average number of indices for each non-faulty candidate logical path is 16 / 3. Therefore, it can be determined that the difference between the average and candidate logical path 1 is 4 / 3, the difference between the average and candidate logical path 2 is 2 / 3, and the difference between the average and candidate logical path 3 is 2 / 3.

[0478] In step 5140, in the updated index queue, all other indices that are not the first index are replaced with the first index of the initial logical path.

[0479] According to embodiments of this disclosure, other indexes besides the first index refer to the indexes in the updated index queue other than the first index of the initial logical path for fault recovery.

[0480] For example, step 5140 will be explained here with reference to Figure 52. Assume that after determining that candidate logical path 1 and candidate logical path 4 are faulty, candidate logical path 1 is then detected to have recovered. Through steps 5110 to 5130 above, it can be determined that the difference between the average value and the index number of candidate logical path 1 is 4 / 3, the difference between the average value and the index number of candidate logical path 2 is 2 / 3, and the difference between the average value and the index number of candidate logical path 3 is 2 / 3. At this time, the difference between the average value and the index number of candidate logical path 1 is the largest, meaning the index number of candidate logical path 1 is the most unbalanced. At this point, one index of candidate logical path 2 in the index queue can be replaced with an index of candidate logical path 1, or one index of candidate logical path 3 in the index queue can be replaced with an index of candidate logical path 1. Figure 52 shows the replacement of one index of candidate logical path 3 in the index queue with an index of candidate logical path 1, as shown in the fourth index queue of Figure 52.

[0481] In the embodiments of steps 5110 to 5140 described above, after replacing the index of the initial position in the target index queue with the first index of the initial logical path for fault recovery, the number of indexes corresponding to the candidate logical paths in the updated index queue is obtained for each non-faulty candidate logical path. Furthermore, the difference between the average number of indexes of each non-faulty candidate logical path and the total number of indexes of the candidate logical paths is determined, and the other indices that are not the first index in the updated index queue are replaced with the first index of the initial logical path. These steps ensure that the indexes of each non-faulty candidate logical path in the index queue remain relatively uniform, thereby maintaining a balanced transmission load on each non-faulty candidate logical path.

[0482] Description of the message transmission method in the above embodiments on the destination node side

[0483] Furthermore, as shown in Figure 53, the message transmission method provided in this embodiment is applied to the destination node, and the message transmission method includes:

[0484] Step 5310: In the current period, receive the reception status request sent by the source node through the candidate logical path;

[0485] Step 5320: Save the current bitmap to be processed as the receive bitmap of the previous cycle of the current cycle. Multiple bits of the current bitmap to be processed correspond to multiple candidate logical paths. The current bitmap to be processed is used to indicate the candidate logical path of receiving the receive status request.

[0486] Step 5330: Reset each bit of the current bitmap to be processed to the first value, and set the bit corresponding to the candidate logical path that received the receiving status request in the current bitmap to the second value.

[0487] Step 5340: Send the received bitmap of the previous cycle to the source node so that the source node can determine the path status of each candidate logical path based on the received bitmap and the sent bitmap of the previous cycle, and determine the target logical path for sending the target message based on the path status of each candidate logical path.

[0488] Steps 5310 to 5340 are described in detail below.

[0489] In step 5310, during the current period, the receiving source node sends a receiving status request through the candidate logical path.

[0490] According to embodiments of this disclosure, in each cycle, the source node determines an initial logical path from multiple candidate logical paths to the destination node based on the addressing information of the target message, and then sends a reception status request to the destination node through the initial logical path. Furthermore, in each cycle, if the source node has a message to send to the destination node, then the source node will definitely send a reception status request to the destination node. Moreover, the reception status request is carried in this message to reach the destination node.

[0491] In step 5320, the current bitmap to be processed is saved as the receive bitmap of the previous cycle of the current cycle. Multiple bits of the current bitmap to be processed correspond to multiple candidate logical paths. The current bitmap to be processed is used to indicate the candidate logical path for receiving a receive status request.

[0492] According to embodiments of this disclosure, the currently pending bitmap refers to the receive bitmap maintained by the destination node at the current time. If, when the current destination node receives a receive status request sent by the source node, the timestamp maintained by the destination node has reached the length of a preset period, it is determined that a new period has begun. In this case, the currently pending bitmap can be saved as the receive bitmap of the previous period.

[0493] On the other hand, in some scenarios, the source node might not send messages to the destination node for a long period (e.g., an hour). Since the receive status request is carried in the message, the destination node, not receiving the message from the source node, naturally won't receive the receive status request either. In this case, if the destination node updates its receive bitmap according to a preset cycle, it will waste computational and storage resources. Therefore, the receive status request can be set as the trigger condition for the destination node to update its receive bitmap. If the source node doesn't send messages to the destination node for a long time, the destination node's receive bitmap will remain within a single cycle. Only when the source node sends a message carrying the receive status request will the destination node determine that a new cycle has begun and save the currently pending bitmap as the receive bitmap from the previous cycle.

[0494] In step 5330, each bit of the current bitmap to be processed is reset to the first value, and the bit corresponding to the candidate logical path that received the receiving status request in the current bitmap to be processed is set to the second value.

[0495] It is understood that the specific implementation of step 5330 is similar to the specific implementation of steps 3110 to 3120 above, and will not be described in detail here.

[0496] In step 5340, the receive bitmap of the previous cycle is sent to the source node so that the source node can determine the path status of each candidate logical path based on the receive bitmap and send bitmap of the previous cycle, and determine the target logical path for sending the target message based on the path status of each candidate logical path.

[0497] It is understood that the specific implementation of step 5340 is similar to the specific implementation of steps 440 to 450 above, and will not be described in detail here.

[0498] In the embodiments described in steps 5310 to 5340 above, the destination node resets each bit of the received bitmap to a first value at the beginning of each cycle, and when it receives a message carrying a reception status request that uses a candidate logical path for transmission, it sets the bit corresponding to that candidate logical path to a second value. This method allows for precise recording of the message reception status of each candidate logical path in each cycle, facilitating the source node to quickly determine the path status of each candidate logical path based on its message transmission and reception status.

[0499] Description of an embodiment where the path state of each candidate logical path is determined by the destination node

[0500] In the above embodiments, the destination node sends a received bitmap to the source node, which then compares its sent bitmap with the destination node's received bitmap to determine the path status of each candidate logical path. In another embodiment, the destination node can also determine the path status of each candidate logical path. In this case, the source node sends a sent bitmap to the destination node, which then determines the path status of each candidate logical path based on the source node's sent bitmap and the destination node's received bitmap.

[0501] Furthermore, as shown in Figure 54, the message transmission method provided in this embodiment is applied to the source node, and the message transmission method includes:

[0502] Step 5410: Based on the addressing information of the target message, determine the destination node corresponding to the target message. There are multiple candidate logical paths between the source node and the destination node.

[0503] Step 5420: Obtain the sending bitmap of the source node. The sending bitmap indicates the message sending status of each of the multiple candidate logical paths at the source node.

[0504] Step 5430: Send the sending bitmap to the destination node so that the destination node can determine the path status of each of the multiple candidate logical paths by comparing the sending bitmap and the receiving bitmap of the destination node.

[0505] Step 5440: Receive the path status of each of the multiple candidate logical paths returned by the destination node;

[0506] Step 5450: Determine the target logical path that is not faulty among multiple candidate logical paths, and transmit the target message through the target logical path.

[0507] Steps 5410 to 5450 are described in detail below.

[0508] In step 5410, the destination node corresponding to the target message is determined based on the addressing information of the target message.

[0509] It is understood that the specific implementation of step 5410 is similar to the specific implementation of step 410 above, and will not be described in detail here.

[0510] In step 5420, the sending bitmap of the source node is obtained. The sending bitmap indicates the message sending status of each of the multiple candidate logical paths at the source node.

[0511] It is understood that the specific implementation of step 5420 is similar to the specific implementation of step 430 above, and will not be described in detail here.

[0512] In step 5430, the sending bitmap is sent to the destination node so that the destination node can determine the path status of each of the multiple candidate logical paths by comparing the sending bitmap and the destination node's receiving bitmap.

[0513] It is understood that in step 440, the source node can determine the path status of each candidate logical path by comparing the locally maintained sending bitmap with the receiving bitmap returned by the destination node. In some other embodiments, referring to FIG55, to reduce the computational overhead on the source node side, the source node can also send the sending bitmap to the destination node, and the destination node can determine the path status of each candidate logical path by comparing the sending bitmap with the receiving bitmap of the destination node. Furthermore, the specific implementation of "determining the path status of multiple candidate logical paths by comparing the sending bitmap with the receiving bitmap of the destination node" is similar to the specific implementation of step 440 above, and will not be repeated here.

[0514] In step 5440, the path status of each candidate logical path returned by the destination node is received.

[0515] According to an embodiment of this disclosure, referring to FIG55, after the destination node determines the path status of each candidate logical path, in order to facilitate the source node to select a candidate logical path for transmission of the target message based on the path status of each candidate logical path, the destination node also needs to return the path status of each candidate logical path to the source node.

[0516] In step 5450, a target logical path with a non-faulty path status is determined from multiple candidate logical paths, and the target message is transmitted through the target logical path.

[0517] It is understood that the specific implementation of step 5450 is similar to the specific implementation of step 450 above, and will not be described in detail here.

[0518] The embodiments of steps 5410 to 5450 described above do not rely solely on retransmission to resolve faults, as is the case with bare tunnel encapsulation. Instead, they determine the candidate logical paths for faults by receiving the path states of each candidate logical path returned by the destination node, thereby preventing the target packet from being placed on a potentially faulty logical path beforehand. Compared to solutions that only retransmit after the fact, this significantly improves data flow continuity and service availability. Moreover, this solution only requires adding a bitmap or the path states of each candidate logical path to a small number of data packets, resulting in low transmission and storage overhead.

[0519] Description of the above embodiments on the destination node side

[0520] Furthermore, as shown in Figure 56, the message transmission method provided in this embodiment can be applied to the destination node, and the message transmission method includes:

[0521] Step 5610: Receive the sending bitmap sent by the source node. The sending bitmap indicates the message sending status of each of the multiple candidate logical paths at the source node. The multiple candidate logical paths exist between the source node and the destination node.

[0522] Step 5620: Obtain the receive bitmap of the destination node. The receive bitmap indicates the message reception status of each of the multiple candidate logical paths at the destination node.

[0523] Step 5630: By comparing the sent bitmap and the received bitmap, determine the path status of each of the multiple candidate logical paths;

[0524] Step 5640: Send the path status of each of the multiple candidate logical paths to the source node so that the source node can determine the target logical path for sending the target message based on the path status of each of the multiple candidate logical paths.

[0525] Steps 5610 to 5640 are described in detail below.

[0526] In step 5610, a transmission bitmap sent by the source node is received. The transmission bitmap indicates the message transmission status of each candidate logical path between the source node and the destination node at the source node.

[0527] It is understood that in step 440, the source node can determine the path status of each candidate logical path by comparing the locally maintained transmit bitmap with the receive bitmap returned by the destination node. In some other embodiments, referring to FIG55, to reduce the computational overhead on the source node side, the source node can also send the transmit bitmap to the destination node, and the destination node can receive the transmit bitmap sent by the source node.

[0528] In step 5620, the receive bitmap of the destination node is obtained. The receive bitmap indicates the message reception status of each of the multiple candidate logical paths at the destination node.

[0529] Understandably, the "receive bitmap of the destination node" has been described clearly enough in step 430 above, so it will not be repeated here.

[0530] In step 5630, the path status of each of the multiple candidate logical paths is determined by comparing the sent bitmap and the received bitmap.

[0531] It is understood that the specific implementation of step 5630 is similar to the specific implementation of step 440 above, and will not be described in detail here.

[0532] In step 5640, the path status of each of the multiple candidate logical paths is sent to the source node so that the source node can determine the target logical path for sending the target message based on the path status of the multiple candidate logical paths.

[0533] According to an embodiment of this disclosure, referring to FIG55, after the destination node determines the path status of each candidate logical path, in order to facilitate the source node in selecting candidate logical paths for transmission of the target message based on the path status of each candidate logical path, the destination node also needs to return the path status of each candidate logical path to the source node. The destination node can reduce transmission overhead by encapsulating the path status of each candidate logical path in the message sent to the source node.

[0534] The embodiments of steps 5610 to 5640 described above do not rely solely on retransmission to resolve faults, as is the case with bare tunnel encapsulation. Instead, they compare the sending bitmap from the source node with the receiving bitmap from the destination node to prevent the source node from placing the target packet on a potentially faulty logical path beforehand. Since the sending bitmap indicates the packet transmission status of each candidate logical path at the source node, and the receiving bitmap indicates the packet reception status of each candidate logical path at the destination node, comparing the sending and receiving bitmaps yields the path status of each candidate logical path, thus allocating a non-faulty target logical path for the target packet. This method, by accurately predicting which candidate logical paths might be faulty beforehand, avoids the source node sending the target packet on faulty candidate logical paths, significantly improving data flow continuity and service availability compared to solutions that only retransmit afterward. This solution only requires adding a sending bitmap or the path status of each candidate logical path to a small number of data packets. It has low transmission and storage overhead, and the processing of comparing the sending bitmap and the receiving bitmap is relatively simple with low computational overhead. Therefore, while maintaining low computational and storage overhead, it improves the continuity of data flow and service availability in packet transmission.

[0535] Description of apparatus and devices according to embodiments of this disclosure

[0536] It should be noted that in various specific embodiments of this application, when processing data related to object characteristics, such as object attribute information or sets of attribute information, is required, the object's permission or consent will be obtained first. Furthermore, the collection, use, and processing of this data will comply with relevant laws, regulations, and standards. In addition, when embodiments of this application require obtaining object attribute information, separate permission or consent from the object will be obtained through pop-ups or redirection to a confirmation page. Only after obtaining the object's separate permission or consent will the necessary object-related data for the proper functioning of these embodiments be acquired.

[0537] Figure 57 is a schematic diagram of the structure of a message transmission device 5700 provided in an embodiment of this disclosure. The message transmission device 5700 is disposed in a source node and includes:

[0538] The first determining unit 5710 is used to determine the destination node corresponding to the target message based on the addressing information of the target message, where there are multiple candidate logical paths between the source node and the destination node.

[0539] The first acquisition unit 5720 is used to acquire the transmission bitmap of the source node, which indicates the message transmission status of each of the multiple candidate logical paths at the source node.

[0540] The first sending unit 5730 is used to send a reception status request to the destination node and receive a reception bitmap returned by the destination node in response to the reception status request. The reception bitmap indicates the message reception status of each of the multiple candidate logical paths at the destination node.

[0541] The first comparison unit 5740 is used to determine the path status of each of the multiple candidate logical paths by comparing the transmitted bitmap and the received bitmap.

[0542] The first transfer unit 5750 is used to determine the target logical path whose path status is not faulty among multiple candidate logical paths, and to transmit the target message through the target logical path.

[0543] Optionally, the first determining unit 5710 is specifically used for:

[0544] Based on the addressing information of the target message, the initial logical path is determined from multiple candidate logical paths;

[0545] The first transfer unit 5750 is specifically used for:

[0546] If the path status of the initial logical path is faulty, then a target logical path with a non-faulty path status is determined from multiple candidate logical paths, and the target message is transferred from the initial logical path to the target logical path.

[0547] Optionally, the addressing information is the five-tuple information of the target message;

[0548] The first determining unit 5710 is specifically used for:

[0549] Perform a hash operation on the quintuple information to obtain the target hash value;

[0550] Perform a modulo operation between the target hash value and the number of multiple candidate logical paths to obtain the target remainder;

[0551] Based on the target remainder, the initial logical path is determined from multiple candidate logical paths.

[0552] Optionally, the first determining unit 5710 is specifically used for:

[0553] Assign indexes to each candidate logical path;

[0554] Arrange the indices of each candidate logical path into an index group, and repeat the index group a third time to obtain the original index queue;

[0555] In the original index queue, select the index at the position of the target remainder as the initial index, and determine the candidate logical path corresponding to the initial index as the initial logical path.

[0556] Optionally, the first determining unit 5710 is specifically used for:

[0557] Obtain the hash algorithm used for hash operations;

[0558] Determine the maximum hash value generated by the hash algorithm;

[0559] Get the storage space size of the source node;

[0560] Obtain the computing power of the source node;

[0561] The third number is determined based on the maximum hash value, storage space size, and computing power.

[0562] Optionally, the first determining unit 5710 is specifically used for:

[0563] Obtain the transmission traffic per unit time in the target tunnel from the source node to the destination node;

[0564] Obtain the path failure rate of the target tunnel;

[0565] Obtain the average transmission flow variance in the target tunnel;

[0566] The number of candidate logical paths is determined based on the transmission traffic per unit time, path failure rate, and average transmission traffic variance.

[0567] Optionally, the first determining unit 5710 is specifically used for:

[0568] Based on the transmission traffic per unit time and the path failure rate, the expected transmission traffic per unit time of the target tunnel is determined.

[0569] The target adjustment coefficient is determined based on the average transmission flow variance.

[0570] The number of candidate logical paths is determined based on the expected transmission traffic per unit time and the target adjustment coefficient.

[0571] Optionally, the send bitmap and receive bitmap are generated periodically;

[0572] The first acquisition unit 5720 is specifically used for: in the current cycle, acquiring the transmission bitmap of the source node in the previous cycle;

[0573] The first sending unit 5730 is specifically used to: send a reception status request to the destination node in the current cycle, and receive the reception bitmap of the previous cycle returned by the destination node in response to the reception status request.

[0574] Optionally, the first acquisition unit 5720 is specifically used for:

[0575] Initialize each bit of the transmit bitmap to its first value. The number of bits in the transmit bitmap is equal to the number of multiple candidate logical paths.

[0576] If the source node sent a receive status request on the candidate logical path in the previous cycle, set the bit corresponding to the candidate logical path to the second value.

[0577] Optionally, the first transmitting unit 5730 is specifically used for:

[0578] In the current cycle, a receive status request is added to the first tunnel encapsulation field of the first data packet, and the first data packet is sent to the destination node;

[0579] The destination node sends a second data packet in response to the first data packet. The second tunnel encapsulation field of the second data packet carries the received bitmap of the destination node in the previous cycle.

[0580] Optionally, the first tunnel encapsulation field includes a first tag field and a receive status request field, and the second tunnel encapsulation field includes a second tag field, a receive status response field, and a receive bitmap field. The first tag field indicates that the first data packet carries a receive status request, and the second tag field indicates that the second data packet carries a receive status response.

[0581] The first sending unit 5730 is specifically used to: set the first flag field in the first tunnel encapsulation field; add a receive status request to the receive status request field in the first tunnel encapsulation field; and send a first data packet to the destination node.

[0582] The second data packet is generated by setting the second flag field in the second tunnel encapsulation field; adding the receive status acknowledgment field in the second tunnel encapsulation field; and adding the receive bitmap field in the second tunnel encapsulation field.

[0583] Optionally, adding the received bitmap to the received bitmap field in the second tunnel encapsulation field includes: initializing each bit of the received bitmap to a first value, wherein the number of bits in the received bitmap is equal to the number of multiple candidate logical paths; if in the previous cycle, the destination node received a first data packet with a receive status request added to the first tunnel encapsulation field on a candidate logical path, setting the bits corresponding to the candidate logical path to a second value; and adding the received bitmap to the received bitmap field in the second tunnel encapsulation field.

[0584] Optionally, the first sending unit 5730 is specifically used to: obtain the first number of positive data packets sent by the source node through the candidate logical path in the current period; add the receive status request to the first tunnel encapsulation field of the first number of positive data packets to generate a first data packet; and send the first data packet to the destination node.

[0585] The second data packet is generated as follows: the first number of reverse data packets sent by the destination node through the candidate logical path in the current period are obtained; the received bitmap is added to the second tunnel encapsulation field of the first number of reverse data packets to generate the second data packet.

[0586] Optionally, the first transmitting unit 5730 is specifically used for:

[0587] Get the average number of positive data packets sent in the second number of periods preceding the current period;

[0588] Get the average packet loss rate of positive data packets sent in the second number of periods before the current period;

[0589] Get the message type of the first positive data message to be sent in the current period;

[0590] Determine message sending priority based on message type;

[0591] The first number is determined based on the average number, average packet loss rate, and message transmission priority.

[0592] Optionally, the first sending unit 5730 is specifically used to: send the first data packet corresponding to each candidate logical path to the destination node through each candidate logical path;

[0593] The first transmitting unit 5730 is specifically used to: if a data packet carrying a receiving bitmap is received from any of the multiple candidate logical paths, treat the data packet as the received second data packet.

[0594] Optionally, the first comparison unit 5740 is specifically used for:

[0595] If the bit corresponding to a candidate logical path in the sending bitmap is the second value, and the bit corresponding to a candidate logical path in the receiving bitmap is the second value, the path status of the candidate logical path is determined to be normal.

[0596] If a bit corresponding to a candidate logical path in the sending bitmap is the second value, but a bit corresponding to a candidate logical path in the receiving bitmap is the first value, the path status of the candidate logical path is determined to be faulty.

[0597] If the bit corresponding to a candidate logical path in the bitmap is the first value, the path status of the candidate logical path is determined to be inactive.

[0598] Optionally, the bitmap to be sent and the bitmap to be received are sent periodically;

[0599] The first comparison unit 5740 is specifically used for:

[0600] If the bits corresponding to a candidate logical path in the transmitted bitmap acquired in multiple consecutive cycles are all of the second value, but the bits corresponding to the candidate logical path in the received bitmap acquired in multiple consecutive cycles are all of the first value, the path status of the candidate logical path is determined to be faulty.

[0601] Optionally, the first comparison unit 5740 is specifically used for:

[0602] By removing the first and last cycles from multiple consecutive cycles, multiple intermediate cycles are obtained.

[0603] If the bit corresponding to a candidate logical path in the transmitted bitmap acquired in multiple consecutive intermediate cycles is the second value, but the bit corresponding to the candidate logical path in the received bitmap acquired in multiple consecutive intermediate cycles is the first value, the path status of the candidate logical path is determined to be faulty.

[0604] Optionally, the first transfer unit 5750 is specifically used for:

[0605] If the path status of the initial logical path is faulty, find the first index of the initial logical path in the original index queue;

[0606] According to the order of the non-faulty candidate logical paths among multiple candidate logical paths, the first index is replaced with the second index of the non-faulty candidate logical path, so that the original index queue becomes the target index queue.

[0607] In the target index queue, select the index at the position of the target remainder as the target index, and determine the candidate logical path corresponding to the target index as the target logical path.

[0608] Optionally, the message transmission device 5700 further includes a switching unit, which is specifically used for:

[0609] Determine the initial logical path for fault recovery;

[0610] If the target message has not yet been sent in the target logical path, switch the target message back to the initial logical path for sending.

[0611] Optionally, the switching unit is specifically used for:

[0612] Send a probe request to the destination node at predetermined intervals;

[0613] Receive the reception status information of the destination node on the initial logical path. The reception status information is sent by the destination node in response to the probe request.

[0614] Based on the received status information, the initial logical path fault recovery is determined.

[0615] Optionally, if the destination node receives a probe request, the received status information is the second value;

[0616] The switching unit is specifically used to: determine the initial logical path fault recovery if a predetermined number of consecutive received status information are all of the second value.

[0617] Optionally, the switching unit is specifically used for:

[0618] If the target message has not yet been sent in the target logical path, obtain the initial position of the first index of the initial logical path in the original index queue;

[0619] Replace the index of the initial position in the target index queue with the first index of the initial logical path to obtain the updated index queue;

[0620] In the updated index queue, the index at the position of the target remainder is selected as the updated index, and the target message waiting to be sent on the target logical path is sent in the initial logical path corresponding to the updated index.

[0621] Optionally, the message transmission device 5700 further includes a replacement unit, which is specifically used for:

[0622] For each non-faulty candidate logical path, obtain the index number corresponding to the candidate logical path in the updated index queue;

[0623] Determine the average index number of each non-faulty candidate logical path;

[0624] Determine the difference between the average value and the index number of the candidate logical paths;

[0625] In the updated index queue, all other indices that are not the first index are replaced with the first index of the initial logical path.

[0626] Figure 58 is a schematic diagram of the structure of a message transmission device 5800 provided in an embodiment of this disclosure. The message transmission device 5800 is disposed in a destination node and includes:

[0627] The first receiving unit 5810 is used to receive a receiving status request sent by the source node through the candidate logical path in the current period.

[0628] The first storage unit 5820 is used to save the current bitmap to be processed as the received bitmap of the previous cycle of the current cycle. Multiple bits of the current bitmap to be processed correspond to multiple candidate logical paths. The current bitmap to be processed is used to indicate the candidate logical path of receiving the receiving status request.

[0629] The first reset unit 5830 is used to reset each bit of the current bitmap to be processed to a first value, and set the bit corresponding to the candidate logical path of the received receiving status request in the current bitmap to a second value.

[0630] The second sending unit 5840 is used to send the received bitmap of the previous cycle to the source node, so that the source node can determine the path status of each candidate logical path based on the received bitmap and the sending bitmap of the previous cycle, and determine the target logical path for sending the target message based on the path status of each candidate logical path.

[0631] This disclosure also provides another message transmission device. This message transmission device is disposed in the source node, and includes:

[0632] The second determining unit is used to determine the destination node corresponding to the target message based on the addressing information of the target message, and there are multiple candidate logical paths between the source node and the destination node.

[0633] The second acquisition unit is used to acquire the sending bitmap of the source node, which indicates the message sending status of each of the multiple candidate logical paths at the source node.

[0634] The third sending unit is used to send the sending bitmap to the destination node so that the destination node can determine the path status of each of the multiple candidate logical paths by comparing the sending bitmap and the receiving bitmap of the destination node.

[0635] The second receiving unit is used to receive the path status of each of the multiple candidate logical paths returned by the destination node;

[0636] The second transfer unit is used to determine the target logical path whose path status is not faulty among multiple candidate logical paths, and to transmit the target message through the target logical path.

[0637] This disclosure also provides another message transmission device. This message transmission device is located in the destination node and includes:

[0638] The third receiving unit is used to receive the sending bitmap sent by the source node. The sending bitmap indicates the message sending status of each of the multiple candidate logical paths at the source node. The multiple candidate logical paths exist between the source node and the destination node.

[0639] The third acquisition unit is used to acquire the receive bitmap of the destination node, which indicates the message reception status of each of the multiple candidate logical paths at the destination node.

[0640] The third determining unit is used to determine the path status of each of the multiple candidate logical paths by comparing the transmitted bitmap and the received bitmap;

[0641] The fourth sending unit is used to send the path status of each of the multiple candidate logical paths to the source node, so that the source node can determine the target logical path for sending the target message based on the path status of each of the multiple candidate logical paths.

[0642] Referring to Figure 59, which is a partial structural block diagram of a terminal implementing the message transmission method of this disclosure, the terminal includes: a radio frequency (RF) circuit 5910, a memory 5915, an input unit 5930, a display unit 5940, a sensor 5950, an audio circuit 5960, a wireless fidelity (WiFi) module 5970, a processor 5980, and a power supply 5990, etc. Those skilled in the art will understand that the terminal structure shown in Figure 59 does not constitute a limitation on a mobile phone or computer, and may include more or fewer components than shown, or combine certain components, or have different component arrangements.

[0643] The RF circuit 5910 can be used to receive and transmit signals during information transmission or calls. In particular, it receives downlink information from the base station and processes it with the processor 5980; in addition, it transmits uplink data to the base station.

[0644] The memory 5915 can be used to store software programs and modules, and the processor 5980 executes various functional applications and data processing of the content terminal by running the software programs and modules stored in the memory 5915.

[0645] The input unit 5930 can be used to receive input numeric or character information, and to generate key signal inputs related to the settings and function control of the content terminal. Specifically, the input unit 5930 may include a touch panel 5931 and other input devices 5932.

[0646] The display unit 5940 can be used to display input or provided information, as well as various menus of the content terminal. The display unit 5940 may include a display panel 5941.

[0647] Audio circuit 5960, speaker 5961, and microphone 5962 provide an audio interface.

[0648] In this embodiment, the processor 5980 included in the terminal can execute the message transmission method of the previous embodiment.

[0649] The terminals disclosed in this embodiment include, but are not limited to, mobile phones, computers, intelligent voice interaction devices, smart home appliances, vehicle terminals, and aircraft. The embodiments of this invention can be applied to various scenarios, including but not limited to cloud service transmission and large model training data storage.

[0650] Figure 60 is a partial structural block diagram of a server implementing the message transmission method of this disclosure. The server can vary significantly due to different configurations or performance, and may include one or more central processing units (CPUs) 6022 (e.g., one or more processors) and a memory 6032, and one or more storage media 6030 (e.g., one or more mass storage devices) storing application programs 6042 or data 6044. The memory 6032 and storage media 6030 may be temporary or persistent storage. The program stored in the storage media 6030 may include one or more modules (not shown in the figure), each module including a series of instruction operations on the server. Furthermore, the CPU 6022 may be configured to communicate with the storage media 6030 and execute the series of instruction operations in the storage media 6030 on the server.

[0651] The server may also include one or more power supplies 6026, one or more wired or wireless network interfaces 6050, one or more input / output interfaces 6058, and / or one or more operating systems 6041, such as Windows Server. TM Mac OS X TM Unix TM Linux TM FreeBSD TM etc.

[0652] The central processing unit 6022 in the server can be used to execute the message transmission method of the embodiments of this disclosure.

[0653] This disclosure also provides a computer-readable storage medium for storing program code for executing the message transmission methods of the foregoing embodiments.

[0654] This disclosure also provides a computer program product comprising a computer program. A processor of a computer device reads and executes the computer program, causing the computer device to perform the message transmission method described above.

[0655] The above is a detailed description of the embodiments of this disclosure. However, this disclosure is not limited to the above embodiments. Those skilled in the art can make various equivalent modifications or substitutions without departing from the spirit of this disclosure. All such equivalent modifications or substitutions are included within the scope defined by the claims of this disclosure.

Claims

1. A message transmission method, executed by a source node, the message transmission method comprising: Based on the addressing information of the target message, the destination node corresponding to the target message is determined, and there are multiple candidate logical paths between the source node and the destination node; Obtain the sending bitmap of the source node, wherein the sending bitmap indicates the message sending status of each of the plurality of candidate logical paths at the source node; Send a reception status request to the destination node and receive a reception bitmap returned by the destination node in response to the reception status request. The reception bitmap indicates the message reception status of each of the multiple candidate logical paths at the destination node. The path status of each of the plurality of candidate logical paths is determined by comparing the transmitted bitmap and the received bitmap. Among the multiple candidate logical paths, a target logical path whose path status is not faulty is determined, and the target message is transmitted through the target logical path.

2. The message transmission method according to claim 1, wherein, The transmit bitmap and the receive bitmap are generated periodically; The step of obtaining the transmission bitmap of the source node includes: In the current cycle, obtain the transmission bitmap of the source node from the previous cycle; The step of sending a reception status request to the destination node and receiving a reception bitmap returned by the destination node in response to the reception status request includes: In the current period, the receiving status request is sent to the destination node, and the receiving bitmap of the previous period is returned by the destination node in response to the receiving status request.

3. The message transmission method according to claim 2, wherein, The step of sending the reception status request to the destination node in the current period and receiving the reception bitmap of the previous period returned by the destination node in response to the reception status request includes: In the current period, the receive status request is added to the first tunnel encapsulation field of the first data packet, and the first data packet is sent to the destination node; The destination node receives a second data packet sent in response to the first data packet, wherein the second tunnel encapsulation field of the second data packet carries the received bitmap of the previous cycle of the destination node.

4. The message transmission method according to claim 3, wherein, Adding the receive status request to the first tunnel encapsulation field of the first data packet and sending the first data packet to the destination node includes: Obtain the first number of positive data packets sent by the source node through the candidate logical path in the current period; add the receive status request to the first tunnel encapsulation field of the first number of positive data packets to generate the first data packet; and send the first data packet to the destination node. The second data packet is generated in the following way: Obtain the first number of reverse data packets sent by the destination node through the candidate logical path in the current period; add the received bitmap to the second tunnel encapsulation field of the first number of reverse data packets to generate the second data packet.

5. The message transmission method according to any one of claims 1 to 4, wherein, The step of determining the path status of each of the plurality of candidate logical paths by comparing the transmitted bitmap and the received bitmap includes: If a bit corresponding to a candidate logical path in the transmitting bitmap is the second value, and a bit corresponding to the candidate logical path in the receiving bitmap is the second value, then the path status of the candidate logical path is determined to be normal. If a bit corresponding to a candidate logical path in the transmitting bitmap is the second value, but a bit corresponding to the candidate logical path in the receiving bitmap is the first value, the path state of the candidate logical path is determined to be faulty. If the bit corresponding to a candidate logical path in the transmission bitmap is the first value, the path state of the candidate logical path is determined to be inactive.

6. The message transmission method according to claim 5, wherein, The sending bitmap and the receiving bitmap are sent periodically; If the bit corresponding to a candidate logical path in the transmitting bitmap is the second value, but the bit corresponding to the candidate logical path in the receiving bitmap is the first value, determining the path state of the candidate logical path as faulty includes: If the bit corresponding to a candidate logical path in the transmitted bitmap acquired in multiple consecutive cycles is the second value, but the bit corresponding to the candidate logical path in the received bitmap received in multiple consecutive cycles is the first value, the path state of the candidate logical path is determined to be faulty.

7. The message transmission method according to any one of claims 1 to 6, wherein, The method further includes: Based on the addressing information of the target message, an initial logical path is determined from the plurality of candidate logical paths; The step of determining a target logical path whose path status is not faulty among the plurality of candidate logical paths, and transmitting the target message through the target logical path, includes: If the path status of the initial logical path is faulty, then a target logical path with a non-faulty path status is determined from the plurality of candidate logical paths, and the target message is transferred from the initial logical path to the target logical path.

8. The method according to claim 7, wherein, The addressing information is the five-tuple information of the target message; The determination of the initial logical path from the plurality of candidate logical paths based on the addressing information of the target message includes: Perform a hash operation on the quintuple information to obtain the target hash value; Perform a modulo operation between the target hash value and the number of the multiple candidate logical paths to obtain the target remainder; Based on the target remainder, the initial logical path is determined from the plurality of candidate logical paths.

9. The message transmission method according to claim 8, wherein, The step of determining the initial logical path from the plurality of candidate logical paths based on the target remainder includes: Assign an index to each of the candidate logical paths; Arrange the indices of each candidate logical path into an index group, and repeat the index group a third time to obtain the original index queue; In the original index queue, the index at the position of the target remainder is selected as the initial index, and the candidate logical path corresponding to the initial index is determined as the initial logical path.

10. The message transmission method according to claim 9, wherein, The third number is determined in the following manner: Obtain the hash algorithm used for the hash operation; Determine the maximum hash value generated by the hash algorithm; Obtain the storage space size of the source node; Obtain the computing power of the source node; The third number is determined based on the maximum hash value, the storage space size, and the computing power.

11. The message transmission method according to claim 9 or 10, wherein, If the path state of the initial logical path is faulty, then determining the target logical path whose path state is not faulty from the plurality of candidate logical paths includes: If the path status of the initial logical path is faulty, find the first index of the initial logical path in the original index queue; According to the order of the non-faulty candidate logical paths among the multiple candidate logical paths, the first index is replaced with the second index of the non-faulty candidate logical path, so that the original index queue becomes the target index queue. In the target index queue, the index at the position of the target remainder is selected as the target index, and the candidate logical path corresponding to the target index is determined as the target logical path.

12. The message transmission method according to any one of claims 7 to 11, wherein, After transferring the target message from the initial logical path to the target logical path, the message transmission method further includes: Determine the fault recovery of the initial logical path; If the target message has not yet been sent in the target logical path, the target message will be switched back to the initial logical path for transmission.

13. The message transmission method according to claim 12, wherein, Determining the initial logical path fault recovery includes: A probe request is sent to the destination node at predetermined intervals; Receive the reception status information of the destination node on the initial logical path, the reception status information being sent by the destination node in response to the probe request; Based on the received status information, the initial logical path fault recovery is determined.

14. The message transmission method according to claim 12 or 13, wherein, The step of switching the target message back to the initial logical path for transmission if the target message has not yet been sent in the target logical path includes: If the target message has not yet been sent in the target logical path, obtain the initial position of the first index of the initial logical path in the original index queue; Replace the index of the initial position in the target index queue with the first index of the initial logical path to obtain the updated index queue; In the updated index queue, the index at the position of the target remainder is selected as the updated index, and the target message waiting to be sent on the target logical path is sent in the initial logical path corresponding to the updated index.

15. A message transmission method, wherein, The message transmission is performed periodically by the destination node, and the message transmission method includes: In the current cycle, receive the receive status request sent by the source node through the candidate logical path; The current bitmap to be processed is saved as the received bitmap of the previous cycle of the current cycle. Multiple bits of the current bitmap to be processed correspond to multiple candidate logical paths. The current bitmap to be processed is used to indicate the candidate logical path that received the received status request. Reset each bit of the current bitmap to be processed to a first value, and set the bit corresponding to the candidate logical path that received the receiving status request in the current bitmap to a second value; The received bitmap of the previous cycle is sent to the source node so that the source node can determine the path status of each candidate logical path based on the received bitmap and the sent bitmap of the previous cycle, and determine the target logical path for sending the target message based on the path status of each candidate logical path.

16. A message transmission method, wherein, Executed by the source node, the message transmission method includes: Based on the addressing information of the target message, the destination node corresponding to the target message is determined, and there are multiple candidate logical paths between the source node and the destination node; Obtain the sending bitmap of the source node, wherein the sending bitmap indicates the message sending status of each of the plurality of candidate logical paths at the source node; The sending bitmap is sent to the destination node so that the destination node can determine the path status of each of the plurality of candidate logical paths by comparing the sending bitmap with the destination node's receiving bitmap; Receive the path status of each of the multiple candidate logical paths returned by the destination node; Among the multiple candidate logical paths, a target logical path whose path status is not faulty is determined, and the target message is transmitted through the target logical path.

17. A message transmission method, wherein, The message transmission method, executed by the destination node, includes: The source node sends a transmission bitmap, which indicates the message transmission status of multiple candidate logical paths at the source node, and the multiple candidate logical paths exist between the source node and the destination node. Obtain the receive bitmap of the destination node, wherein the receive bitmap indicates the message reception status of each of the plurality of candidate logical paths at the destination node; The path status of each of the plurality of candidate logical paths is determined by comparing the transmitted bitmap and the received bitmap. The source node sends the path status of each of the multiple candidate logical paths to the source node, so that the source node can determine the target logical path for sending the target message based on the path status of each of the multiple candidate logical paths.

18. A message transmission device, disposed in a source node, the message transmission device comprising: The first determining unit is used to determine the destination node corresponding to the target message based on the addressing information of the target message, wherein there are multiple candidate logical paths between the source node and the destination node; The first acquisition unit is used to acquire the transmission bitmap of the source node, wherein the transmission bitmap indicates the message transmission status of each of the plurality of candidate logical paths at the source node. The first sending unit is configured to send a reception status request to the destination node and receive a reception bitmap returned by the destination node in response to the reception status request, wherein the reception bitmap indicates the message reception status of each of the plurality of candidate logical paths at the destination node. The first comparison unit is used to determine the path status of each of the plurality of candidate logical paths by comparing the transmitted bitmap and the received bitmap; The first transfer unit is used to determine the target logical path whose path status is not faulty among the plurality of candidate logical paths, and to transmit the target message through the target logical path.

19. A message transmission device, disposed in a destination node, the message transmission device comprising: The first receiving unit is used to receive the receiving status request sent by the source node through the candidate logical path in the current period. The first storage unit is used to store the current bitmap to be processed as the received bitmap of the previous cycle of the current cycle, wherein multiple bits of the current bitmap to be processed correspond to multiple candidate logical paths, and the current bitmap to be processed is used to indicate the candidate logical path that received the receiving status request. The first reset unit is used to reset each bit of the current bitmap to be processed to a first value, and set the bit corresponding to the candidate logical path that received the receiving status request in the current bitmap to a second value. The second sending unit is used to send the received bitmap of the previous cycle to the source node, so that the source node can determine the path status of each candidate logical path based on the received bitmap and the sending bitmap of the previous cycle, and determine the target logical path for sending the target message based on the path status of each candidate logical path.

20. A message transmission device, disposed in a source node, the message transmission device comprising: The second determining unit is used to determine the destination node corresponding to the target message based on the addressing information of the target message, wherein there are multiple candidate logical paths between the source node and the destination node; The second acquisition unit is used to acquire the transmission bitmap of the source node, wherein the transmission bitmap indicates the message transmission status of each of the plurality of candidate logical paths at the source node. The third sending unit is used to send the sending bitmap to the destination node, so that the destination node can determine the path status of each of the plurality of candidate logical paths by comparing the sending bitmap and the receiving bitmap of the destination node. The second receiving unit is used to receive the path status of each of the multiple candidate logical paths returned by the destination node; The second transfer unit is used to determine the target logical path whose path status is not faulty among the plurality of candidate logical paths, and to transmit the target message through the target logical path.

21. A message transmission device, disposed in a destination node, the message transmission device comprising: The third receiving unit is used to receive a transmission bitmap sent by the source node. The transmission bitmap indicates the message transmission status of each of the multiple candidate logical paths at the source node. The multiple candidate logical paths exist between the source node and the destination node. The third acquisition unit is used to acquire the reception bitmap of the destination node, wherein the reception bitmap indicates the message reception status of each of the plurality of candidate logical paths at the destination node. The third determining unit is used to determine the path status of each of the plurality of candidate logical paths by comparing the transmitted bitmap and the received bitmap; The fourth sending unit is used to send the path status of each of the plurality of candidate logical paths to the source node, so that the source node can determine the target logical path for sending the target message based on the path status of each of the plurality of candidate logical paths.

22. An electronic device comprising a memory and a processor, wherein the memory stores a computer program, wherein, When the processor executes the computer program, it implements the message transmission method according to any one of claims 1 to 17.

23. A computer-readable storage medium storing a computer program, wherein, When the computer program is executed by the processor, it implements the message transmission method according to any one of claims 1 to 17.

24. A computer program product comprising a computer program that is read and executed by a processor of a computer device, causing the computer device to perform the message transmission method according to any one of claims 1 to 17.

Citation Information

Patent Citations

  • Network path selection method, network path selection device, network node transmission method and network node transmission device

    CN116264723A

  • Data packet transmission method and device, equipment, storage medium and program product

    CN116980344A

  • Message transmission method and device, electronic equipment and medium

    CN118900247A

  • Method and apparatus for determining packet transmission path fault

    WO2023050817A1