Message transmission method and device, electronic equipment and medium
By using path virtual port numbers and lookup tables to bypass faulty switches, the data flow continuity problem caused by switch failures in existing technologies is solved, achieving higher data flow continuity.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- TENCENT TECHNOLOGY (SHENZHEN) CO LTD
- Filing Date
- 2024-11-15
- Publication Date
- 2026-05-15
AI Technical Summary
Existing message transmission methods cannot accurately bypass the faulty switch when the switch fails, resulting in reduced data flow continuity.
By defining a unique virtual port number for each path and establishing a lookup table between the virtual port numbers and the baseline path, the virtual port number can be changed to bypass the faulty switch when a fault is identified.
It improves the continuity of data flow during message transmission and reduces data loss caused by switch failure.
Smart Images

Figure CN122053479A_ABST
Abstract
Description
Technical Field
[0001] This disclosure relates to the field of data communication, and in particular to a message transmission method, apparatus, electronic device, and medium. Background Technology
[0002] A data center network is a network infrastructure composed of network devices such as servers and switches. In a data center network, different servers can transmit messages through switches to achieve reliable message transmission. However, with a large number of switches operating for extended periods, some switches will inevitably fail, causing them to be unable to perform normal message forwarding.
[0003] Currently, the most widely used network traffic availability enhancement schemes include Transmission Control Protocol (TCP) and Protective ReRoute (PRR). In the original TCP, if a packet's path encounters a switch failure, the source server will retransmit the packet through that path after a timeout. If the switch failure hasn't been resolved, the retransmitted packet will still be discarded. The source server will then perform multiple retransmissions until the maximum number of retransmissions is reached. At this point, the source server will randomly select a new path, but this new path may also pass through a failed switch. Compared to TCP, PRR avoids repeated retransmissions when a switch failure occurs. During the first retransmission, it modifies the flow label field in the packet header and participates in the hashing process during switch addressing, thereby changing the actual path of the packet and potentially bypassing the failed switch. However, the re-selected path by both methods is random and cannot accurately bypass the faulty switch. There is a high probability that the faulty switch still cannot be bypassed after re-routing, which reduces the continuity of data flow. Summary of the Invention
[0004] This disclosure provides a message transmission method, apparatus, electronic device, and medium that can increase the probability of bypassing a faulty switch after rerouting and improve the continuity of data flow during message transmission.
[0005] According to one aspect of this disclosure, a message transmission method is provided, executed by a source node, wherein the source node sends a target message to a destination node through multiple intermediate node layers, the message transmission method comprising:
[0006] Multiple reference paths are obtained between the source node and the destination node. Each reference path passes through at least one intermediate node at each intermediate node layer. The number of overlapping intermediate nodes between any two reference paths satisfies a predetermined condition.
[0007] Obtain a target lookup table, which indicates the correspondence between the base path and the path virtual port number. The path virtual port number is a virtual port number added to the target message when the source node sends the target message. Each base path corresponds to one or more path virtual port numbers.
[0008] In response to determining that the transmission of the target packet from the source node to the destination node has failed, the first path virtual port number in the target packet is obtained;
[0009] In the target lookup table, determine the second path virtual port number that corresponds to a different base path than the first path virtual port number;
[0010] The first path virtual port number in the target message is modified to the second path virtual port number so that the target message reaches the destination node along the base path corresponding to the second path virtual port number.
[0011] According to one aspect of this disclosure, a message transmission method is provided, executed by a destination node, wherein the destination node sends an acknowledgment response to a source node through multiple intermediate node layers, the message transmission method comprising:
[0012] Receive the target message sent by the source node;
[0013] Multiple response baseline paths are obtained between the destination node and the source node. Each response baseline path passes through at least one intermediate node at each intermediate node layer. The number of intermediate nodes that overlap between any two response baseline paths among the multiple response baseline paths meets a predetermined condition.
[0014] Obtain a target response lookup table, which indicates the correspondence between the response baseline path and the path virtual port number. The path virtual port number is a virtual port number added to the acknowledgment response when the destination node sends the acknowledgment response. Each response baseline path corresponds to one or more path virtual port numbers.
[0015] In response to determining that the transmission of the acknowledgment response from the destination node to the source node failed, the third path virtual port number in the acknowledgment response is obtained;
[0016] In the target response lookup table, determine the fourth path virtual port number that corresponds to a different response baseline path as the third path virtual port number;
[0017] The third path virtual port number in the confirmation response is modified to the fourth path virtual port number, so that the confirmation response reaches the source node along the response reference path corresponding to the fourth path virtual port number.
[0018] According to one aspect of this disclosure, a message transmission apparatus is provided, disposed in a source node, wherein the source node transmits a target message to a destination node through multiple intermediate node layers, the message transmission apparatus comprising:
[0019] The first acquisition unit is used to acquire multiple reference paths between the source node and the destination node. The reference paths pass through at least one intermediate node at each intermediate node layer, and the number of overlapping intermediate nodes between any two reference paths among the multiple reference paths satisfies a predetermined condition.
[0020] The second acquisition unit is used to acquire a target lookup table, which indicates the correspondence between the base path and the path virtual port number. The path virtual port number is a virtual port number added to the target message when the source node sends the target message. Each base path corresponds to one or more path virtual port numbers.
[0021] The first response unit is configured to, in response to determining that the transmission of the target packet from the source node to the destination node has failed, obtain the first path virtual port number in the target packet;
[0022] The first determining unit is configured to determine, in the target lookup table, a second path virtual port number that corresponds to a different reference path than the first path virtual port number;
[0023] The first modification unit is used to modify the first path virtual port number in the target message to the second path virtual port number, so that the target message reaches the destination node along the reference path corresponding to the second path virtual port number.
[0024] Optionally, the second acquisition unit is specifically used for:
[0025] Get the set of virtual port numbers for the path;
[0026] The set of virtual port numbers for the path is assigned to multiple first outgoing ports of the source node, and for each intermediate node layer, the set of virtual port numbers for the path is assigned to multiple second outgoing ports of the intermediate node layer.
[0027] Based on the path virtual port numbers assigned to the source node and each intermediate node on the baseline path, the path virtual port number corresponding to the baseline path is determined.
[0028] The baseline path and the corresponding virtual port number of the path are stored to generate the target lookup table.
[0029] Optionally, the second acquisition unit is specifically used for:
[0030] For each path virtual port number in the set of path virtual port numbers, a probe message is constructed. The probe message has a transport protocol number, the path virtual port number, a source address corresponding to the source node, a destination address corresponding to the destination node, and a destination port number corresponding to the destination node.
[0031] The probe message is sent from the source node;
[0032] Identify the first output port of the probe packet output by the source node and the second output port of the probe packet output by each intermediate node layer, and assign the path virtual port number to the first output port and the second output port.
[0033] Optionally, the second acquisition unit is specifically used for:
[0034] Based on the path virtual port number assigned to the source node or the intermediate node on the baseline path, a set of single-node path virtual port numbers is generated.
[0035] Take the intersection of the set of single-node path virtual port numbers corresponding to the source node and each intermediate node, and use each path virtual port number in the intersection as the path virtual port number corresponding to the base path.
[0036] Optionally, the second acquisition unit is specifically used for:
[0037] Identify the key node layers from each intermediate node layer;
[0038] For each critical node layer, the set of virtual port numbers for the path is allocated to the plurality of second outgoing ports of the critical node layer;
[0039] Based on the path virtual port numbers assigned to the source node and intermediate nodes in the critical node layer on the baseline path, the path virtual port number corresponding to the baseline path is determined.
[0040] Optionally, the first acquisition unit is specifically used for:
[0041] Obtain a set of candidate paths between the source node and the destination node. The set of candidate paths contains a first number of candidate paths, and the multiple reference paths contain a second number of reference paths. The first number is greater than the second number.
[0042] Each candidate path in the candidate path set is used as an anchor path in turn;
[0043] Calculate the number of intermediate nodes in the candidate path set that overlap with the anchor path, other than the anchor path.
[0044] If the number of overlapping intermediate nodes is greater than the third number, the other candidate paths are removed from the candidate path set;
[0045] After each candidate path has been used as the anchor path, the remaining candidate paths in the candidate path set are used as the multiple reference paths.
[0046] Optionally, the first acquisition unit is specifically used for:
[0047] Based on the total number of the first outgoing ports of the source node, determine the first number of routes from the source node to the intermediate node of the first intermediate node layer;
[0048] Based on the total number of second outgoing ports of a single intermediate node in the intermediate node layer, determine the second number of routes from the single intermediate node to the intermediate node in the next intermediate node layer;
[0049] Based on the first number of routes and the second number of routes corresponding to each intermediate node layer, a routing topology map is generated between the source node and the destination node.
[0050] On the routing topology graph, multiple candidate paths between the source node and the destination node are obtained to generate the candidate path set.
[0051] Optionally, the first acquisition unit is specifically used for:
[0052] Determine the total number of the first output ports of the source node;
[0053] Determine the total number of second output ports for a single intermediate node in each intermediate node layer;
[0054] Determine the maximum and minimum values of the total number of the first output ports and the total number of the second output ports corresponding to each intermediate node layer;
[0055] The difference between the maximum value and the minimum value is calculated as the third number.
[0056] Optionally, the second acquisition unit is specifically used for:
[0057] Configure the same hash algorithm and hash seed for multiple servers, wherein the source node and the destination node are any one of the multiple servers;
[0058] For each intermediate node layer, the same hash algorithm and hash seed are configured for each intermediate node in the intermediate node layer.
[0059] Optionally, the first response unit is specifically used for:
[0060] Add the first path virtual port number to the target message;
[0061] Transmit the target message from the source node to the destination node;
[0062] If no acknowledgment response is received from the destination node within a preset first time period, the transmission of the target message is deemed to have failed.
[0063] Optionally, the first response unit is specifically used for:
[0064] Get the current pointer corresponding to the destination node;
[0065] In the baseline path table, determine the baseline path that the current pointer points to;
[0066] In the target lookup table, find the virtual port number of the path corresponding to the baseline path and use it as the first path virtual port number.
[0067] Optionally, the first response unit is specifically used for:
[0068] The current pointer is incremented by 1, thereby determining the reference path pointed to by the next pointer of the current pointer in the reference path table when transmitting other packets after the target packet from the source node to the destination node.
[0069] Optionally, the first response unit is specifically used for:
[0070] Insert the first detection logic into the transmission control protocol processing code of the source node;
[0071] The first detection logic is enabled to detect that no acknowledgment response is received from the destination node within a preset first time period, thereby determining that the transmission of the target message has failed.
[0072] Optionally, the first response unit is specifically used for:
[0073] Place the source port number from the source port number field in the target message into the reserved field of the target message;
[0074] Add the first path virtual port number to the route source port number field.
[0075] Optionally, the first response unit is specifically used for:
[0076] Place the destination port number from the destination port number field in the target message into the reserved field of the target message;
[0077] Add the pre-selected destination port number to the route destination port number field;
[0078] Modify the length of the verification field and the length of the address header field of the target message.
[0079] Optionally, the first determining unit is specifically used for:
[0080] In the target lookup table, determine the first base path corresponding to the first path virtual port number;
[0081] In the baseline path table, determine the second baseline path that is located after the first baseline path;
[0082] In the target lookup table, determine the virtual port number of the second path corresponding to the second reference path.
[0083] Optionally, the first determining unit is specifically used for:
[0084] In the target lookup table, determine the virtual port numbers of multiple alternative paths corresponding to the second baseline path;
[0085] Obtain historical selection records of the multiple alternative path virtual port numbers that were selected as the second path virtual port number;
[0086] Based on the number of times the multiple alternative path virtual port numbers in the historical selection record were selected as the second path virtual port number, the second path virtual port number is determined from the multiple alternative path virtual port numbers.
[0087] According to one aspect of this disclosure, a message transmission apparatus is provided, disposed in a destination node, wherein the destination node sends an acknowledgment response to a source node through multiple intermediate node layers, the message transmission apparatus comprising:
[0088] The first receiving unit is used to receive the target message sent by the source node;
[0089] The third acquisition unit is used to acquire multiple response reference paths between the destination node and the source node. The response reference path passes through at least one intermediate node at each intermediate node layer. The number of intermediate nodes that overlap between any two response reference paths among the multiple response reference paths meets a predetermined condition.
[0090] The fourth acquisition unit is used to acquire a target response lookup table, which indicates the correspondence between the response baseline path and the path virtual port number. The path virtual port number is a virtual port number added to the confirmation response when the destination node sends the confirmation response. Each response baseline path corresponds to one or more path virtual port numbers.
[0091] The second response unit is configured to, in response to determining that the transmission of the acknowledgment response from the destination node to the source node has failed, obtain the third path virtual port number from the acknowledgment response;
[0092] The second determining unit is used to determine, in the target response lookup table, a fourth path virtual port number that corresponds to a different response baseline path as the third path virtual port number;
[0093] The second modification unit is used to modify the third path virtual port number in the confirmation response to the fourth path virtual port number, so that the confirmation response reaches the source node along the response reference path corresponding to the fourth path virtual port number.
[0094] Optionally, the second response unit is specifically used for:
[0095] Add the third path virtual port number to the confirmation response;
[0096] The acknowledgment response is transmitted from the destination node to the source node;
[0097] If a fourth identical target message is received from the source node, it is determined that the transmission of the acknowledgment response has failed.
[0098] Optionally, the second response unit is specifically used for:
[0099] Insert a second detection logic into the transmission control protocol processing code of the destination node;
[0100] The second detection logic is enabled to detect the receipt of a fourth number of identical target messages sent by the source node, thereby determining that the transmission of the acknowledgment response has failed.
[0101] Optionally, the message transmission device further includes a message recovery unit, which is specifically used for:
[0102] Delete the path virtual port number in the routing source port number field of the target packet and the destination port number in the routing destination port number field of the target packet;
[0103] Place the route source port number from the reserved field in the target message into the route source port number field, and place the route destination port number from the reserved field into the route destination port number field;
[0104] Modify the length of the verification field and the length of the address header field of the target message.
[0105] According to one aspect of this disclosure, an electronic device is provided, including a memory and a processor, the memory storing a computer program, the processor executing the computer program to implement the message transmission method as described above.
[0106] According to one aspect of this disclosure, a computer-readable storage medium is provided, the storage medium storing a computer program that, when executed by a processor, implements the message transmission method as described above.
[0107] 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 message transmission method as described above.
[0108] In this embodiment, routing is not performed using the source port number of each hop in the path. Instead, a unique path virtual port number is defined and used for routing. While the source port number of each hop in the path changes with each hop, the path virtual port number, used to indicate the baseline path between the source and destination nodes, is unique throughout the entire path and exhibits relative stability. This embodiment establishes a target lookup table between path virtual port numbers and baseline paths, where the number of overlapping intermediate nodes between any two baseline paths satisfies a predetermined condition. Fewer identical intermediate nodes between baseline paths mean that if a failure occurs when transmitting a target packet using one baseline path, using another baseline path is unlikely to result in a failure, as the number of identical intermediate nodes significantly reduces the probability of bypassing the faulty switch. When a failure occurs while transmitting a target packet through a baseline path, this embodiment identifies a first path virtual port number unique to this embodiment in the target packet, searches the target lookup table, and replaces it with a second path virtual port number corresponding to a different baseline path. Because the virtual port number of the path has been changed, a new base path has actually been established. Since the base path has the characteristics mentioned above, the faulty switch has been bypassed with a very high probability, thus improving the continuity of data flow in packet transmission.
[0109] Other features and advantages of this disclosure will be set forth in the following description and will be apparent in part from the description or may be learned by practicing the disclosure. The objectives and other advantages of this disclosure may be realized and obtained by means of the structures particularly pointed out in the description, claims and drawings. Attached Figure Description
[0110] The accompanying drawings are provided to further understand the technical solutions of this disclosure and constitute a part of the specification. They are used together with the embodiments of this disclosure to explain the technical solutions of this disclosure and do not constitute a limitation on the technical solutions of this disclosure.
[0111] Figures 1A-1B This is an architecture diagram of the system to which the message transmission method according to the embodiments of this disclosure is applied;
[0112] Figure 2 This is a schematic diagram of the topology of a data center network to which the message transmission method according to an embodiment of the present disclosure is applied;
[0113] Figure 3 This is a general flowchart of the message transmission method performed by the source node according to embodiments of the present disclosure;
[0114] Figure 4 This is a schematic diagram of a target lookup table according to an embodiment of the present disclosure;
[0115] Figure 5 This is a schematic diagram illustrating the steps of multiple components within a source node performing a message transmission method according to an embodiment of this disclosure;
[0116] Figure 6 This is a schematic diagram illustrating the modification of the first path virtual port number of the target packet to the second path virtual port number according to an embodiment of this disclosure;
[0117] Figure 7 This is a schematic diagram comparing the response time of a message transmission method according to an embodiment of the present disclosure and an existing message transmission method when facing intermediate node failures.
[0118] Figure 8 This is a schematic diagram comparing the throughput of a message transmission method according to an embodiment of the present disclosure and an existing message transmission method when facing intermediate node failures.
[0119] Figure 9 This is a flowchart illustrating the acquisition of multiple baseline paths between a source node and a destination node according to embodiments of the present disclosure;
[0120] Figure 10 This is a schematic diagram illustrating the acquisition of a set of candidate paths between a source node and a destination node according to an embodiment of the present disclosure;
[0121] Figure 11 This is a schematic diagram illustrating the calculation of the number of intermediate nodes in the candidate path set that overlap with the anchor path, other than the anchor path, according to an embodiment of the present disclosure.
[0122] Figure 12 This is a flowchart illustrating the process of obtaining a set of candidate paths between a source node and a destination node according to embodiments of the present disclosure.
[0123] Figure 13 This is a flowchart of determining a third number according to an embodiment of the present disclosure;
[0124] Figure 14 This is a flowchart of obtaining a target lookup table according to an embodiment of the present disclosure;
[0125] Figure 15 This is a schematic diagram illustrating the storage of a base path and the corresponding virtual port number of the path according to an embodiment of the present disclosure to generate a target lookup table.
[0126] Figure 16 This is a flowchart illustrating the configuration of a hash algorithm and a hash seed according to embodiments of this disclosure;
[0127] Figure 17 This is a schematic diagram illustrating the configuration of a hash algorithm and a hash seed according to an embodiment of this disclosure;
[0128] Figure 18 This is a flowchart illustrating how, according to an embodiment of the present disclosure, a set of path virtual port numbers is allocated to multiple first outgoing ports of a source node, and how, for each intermediate node layer, the set of path virtual port numbers is allocated to multiple second outgoing ports of the intermediate node layer.
[0129] Figure 19 This is a schematic diagram illustrating the internal operations performed when an intermediate node identifies the second output port of a probe message according to an embodiment of this disclosure;
[0130] Figure 20 This is a schematic diagram of the first output port of the identified source node outputting the probe message to the access layer according to an embodiment of the present disclosure;
[0131] Figure 21 This is a schematic diagram illustrating the process of identifying an intermediate node in the access layer and outputting a probe message to the second output port of the access layer according to an embodiment of this disclosure.
[0132] Figure 22 This is a schematic diagram illustrating how an intermediate node of the identification aggregation layer outputs a probe message to the second output port of the core layer according to an embodiment of this disclosure.
[0133] Figure 23 This is a schematic diagram illustrating how an intermediate node of the aggregation layer outputs a probe message to the second output port of the access layer according to an embodiment of this disclosure;
[0134] Figure 24 This is a flowchart illustrating the determination of the path virtual port number corresponding to the base path according to an embodiment of this disclosure;
[0135] Figure 25 This is a schematic diagram illustrating the generation of a single-node path virtual port number set according to an embodiment of the present disclosure;
[0136] Figure 26 This is a flowchart illustrating how to determine the path virtual port number corresponding to a baseline path based on the path virtual port numbers assigned to the source node and intermediate nodes in the critical node layer, according to embodiments of this disclosure.
[0137] Figure 27 This is a flowchart illustrating the process of determining failure to transmit a target message from a source node to a destination node according to embodiments of the present disclosure;
[0138] Figure 28 This is a flowchart illustrating the determination of a first path virtual port number according to an embodiment of the present disclosure;
[0139] Figure 29 This is a schematic diagram illustrating the determination of the reference path currently pointed to by the pointer in the reference path table according to an embodiment of the present disclosure;
[0140] Figure 30 This is a flowchart illustrating the addition of a first path virtual port number to a target message according to an embodiment of this disclosure;
[0141] Figure 31 This is a schematic diagram illustrating the addition of a first path virtual port number to a target message according to an embodiment of the present disclosure;
[0142] Figure 32 This is a flowchart illustrating how, according to an embodiment of the present disclosure, the reference path to which the next pointer of the current pointer points is determined in the reference path table;
[0143] Figure 33 This is a schematic diagram illustrating the incrementing of the current pointer by 1 according to an embodiment of the present disclosure;
[0144] Figure 34 This is a flowchart illustrating how, according to an embodiment of the present disclosure, if no acknowledgment response is received from the destination node within a preset first time period, the transmission of the target message is determined to have failed.
[0145] Figure 35 This is a schematic diagram of the transmission control protocol processing code of the source node according to an embodiment of the present disclosure;
[0146] Figure 36 This is a flowchart illustrating the determination of a second path virtual port number corresponding to a different base path than the first path virtual port number, according to embodiments of the present disclosure.
[0147] Figure 37 This is a flowchart illustrating the determination of the second path virtual port number corresponding to the second reference path according to an embodiment of this disclosure;
[0148] Figure 38 This is a schematic diagram illustrating the historical selection record of multiple alternative path virtual port numbers being selected as the second path virtual port number according to an embodiment of the present disclosure;
[0149] Figure 39 This is a general flowchart of the message transmission method performed by the destination node according to embodiments of the present disclosure;
[0150] Figure 40 This is a flowchart illustrating the process of determining failure to transmit an acknowledgment response from the destination node to the source node according to embodiments of this disclosure;
[0151] Figure 41 This is a flowchart illustrating how a transmission acknowledgment response failure is determined if a fourth number of identical target messages are received from the source node, according to an embodiment of this disclosure.
[0152] Figure 42 This is a flowchart illustrating the modification of a target message after receiving a target message sent by a source node, according to an embodiment of this disclosure.
[0153] Figure 43 This is a schematic diagram illustrating the modification of a target message after receiving a target message sent by a source node according to an embodiment of this disclosure;
[0154] Figure 44 This is an implementation detail diagram of a message transmission method performed by a source node according to an embodiment of the present disclosure;
[0155] Figure 45 This is a block diagram of a message transmission apparatus applied to the source node side according to an embodiment of the present disclosure;
[0156] Figure 46 This is a block diagram of a message transmission apparatus applied to the destination node side according to an embodiment of the present disclosure;
[0157] Figure 47 This is a terminal structure diagram illustrating the message transmission method performed according to embodiments of this disclosure;
[0158] Figure 48 This is a server structure diagram of performing a message transmission method according to an embodiment of the present disclosure. Detailed Implementation
[0159] 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.
[0160] 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:
[0161] 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, and its length varies considerably, being unlimited and variable.
[0162] The underlying physical network, composed of network devices such as switches and routers and physical links, is responsible for transmitting data packets across the network. The underlay network uses the traditional routing and switching equipment found in data centers, providing reliable network data transmission capabilities. In a data center environment, the underlay network guarantees routable reachability between any two points and incorporates traditional network technologies.
[0163] Transmission Control Protocol (TCP) is a connection-oriented, reliable, byte-stream-based transport layer communication protocol. To prevent packet loss, TCP assigns a sequence number to each byte, which also ensures that packets are received in the correct order at the destination node. The destination node then sends back an acknowledgment for each successfully received byte; if the source node does not receive an acknowledgment within a reasonable round-trip time, the corresponding data will be retransmitted. TCP uses a checksum function to verify data integrity; the checksum is calculated during both sending and receiving.
[0164] Protective ReRoute (PRR) is a TCP connection algorithm applied in IPv6 networks. PRR can be configured to include the flow label field in the IPv6 header in the hash source by configuring the switch's routing hash algorithm. On the endpoint server, TCP timeout retransmission events can be detected by modifying the TCP protocol stack code. Upon capturing a retransmission event, the IPv6 flow label field is modified. Because the flow label field participates in the switch's routing hash, modifying the flow label field changes the physical path of the TCP data stream in the network, potentially bypassing a faulty switch.
[0165] A data center network is a network infrastructure composed of network devices such as servers and switches. In a data center network, different servers can transmit messages through switches to achieve reliable message transmission. However, with a large number of switches operating for extended periods, some switches will inevitably fail, causing them to be unable to perform normal message forwarding.
[0166] Currently, the most widely used network traffic availability enhancement schemes include Transmission Control Protocol (TCP) and Protective ReRoute (PRR). In the original TCP, if a packet's path encounters a switch failure, the source server will retransmit the packet along that path after a timeout. If the switch failure hasn't been resolved, the retransmitted packet will still be discarded. The source server will then perform multiple retransmissions until the maximum number of retransmissions is reached. At this point, the source server will randomly select a new path, but this new path may also pass through a failed switch. Compared to TCP, PRR avoids repeated retransmissions when a switch failure occurs. During the first retransmission, it modifies the flow label field in the packet header and involves the flow label field in the switch's addressing hash process, thereby changing the actual path of the packet and potentially bypassing the failed switch. However, the re-selected path by both methods is random and cannot accurately bypass the faulty switch. There is a high probability that the faulty switch still cannot be bypassed after re-routing, which reduces the continuity of data flow.
[0167] Based on this, embodiments of this disclosure provide a message transmission method, apparatus, electronic device, and medium. The message transmission method provided in this disclosure does not use the source port number of each hop in the path for routing; instead, it defines a unique virtual port number for the path and uses this virtual port number for routing. While the source port number of each hop in the path changes with each hop, the virtual port number, used to indicate the baseline path between the source node and the destination node, is unique throughout the entire path and possesses relative stability. This disclosure establishes a target lookup table between virtual port numbers and baseline paths, wherein the number of overlapping intermediate nodes between any two baseline paths satisfies a predetermined condition. Fewer identical intermediate nodes between baseline paths mean that if a fault occurs when using one baseline path to transmit the target message, using another baseline path is unlikely to cause a fault because the two have fewer identical intermediate nodes, and using another baseline path greatly reduces the probability of bypassing the faulty switch. When a failure occurs during the transmission of a target packet via a reference path, this embodiment of the present disclosure identifies a first-path virtual port number unique to this embodiment within the target packet, searches a target lookup table, and replaces it with a second-path virtual port number corresponding to a different reference path than the first-path virtual port number. Since changing the path virtual port number effectively changes the reference path, and the reference path possesses the aforementioned characteristics, it greatly increases the probability of bypassing the faulty switch, thereby improving the continuity of data flow during packet transmission.
[0168] System architecture and scenario description of the embodiments disclosed herein
[0169] Figures 1A-1B This is a system architecture diagram of the message transmission method applied according to the embodiments of this disclosure. Figure 1A This includes terminal 140, Internet 130, gateway 120, server 110, etc.
[0170] Terminal 140 can take various forms, including desktop computers, laptops, PDAs (personal digital assistants), 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.
[0171] Server 110 refers to a computer system capable of providing certain services to terminal 140. Compared to ordinary 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.
[0172] 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.
[0173] In the message transmission method of this embodiment, both the source node and the destination node are server 110. (Refer to...) Figure 1B Assume the source node is server 1 and the destination node is server 2. Server 1 is connected to server 2 via Internet 130, and server 1, server 2, and Internet 130 all communicate with the central controller. It is understood that each server in this embodiment includes a kernel router, a communication connection component, and a proxy component that communicates with the central controller. The proxy component receives information transmitted by the central controller and includes an event processing unit and a path switching unit. The communication connection component manages all message data sent by the server and includes an event detection unit and a path control unit. The units within the communication connection component and the proxy component will be described in detail below:
[0174] The event detection unit is used to detect whether the server can receive the acknowledgment response corresponding to each sent message in a timely manner. For example, Figure 1B The event detection unit of connection 1 inside server 1 is used to detect whether server 1 has received an acknowledgment response corresponding to the message data sent to server 2 within the predetermined reception time.
[0175] The event handling unit is used to respond to an event detected by the event detection unit and notify the path switching unit to switch the transmission path of the message data. For example, if... Figure 1BIf the event detection unit of connection 1 inside server 1 detects that server 1 has not received the acknowledgment response corresponding to the message data sent to server 2 within the predetermined reception time, the event processing unit will notify the path switching unit to switch the transmission path of the message data sent to server 2 in response to this event.
[0176] The path switching unit is used to re-determine the transmission path of message data based on the information transmitted by the main controller after receiving a notification from the event processing unit. After the transmission path of the message data is determined, in order to transmit the message data according to the re-determined transmission path, the path switching unit sends the re-determined transmission path to the path control unit, so that the path control unit can modify the structure of the message data based on the re-determined transmission path.
[0177] The kernel routing within the server is used to calculate the next-hop switch for the packet data based on its structure, and then send the packet data to the server's next-hop switch.
[0178] The embodiments disclosed herein can be applied to large model training data transmission, see reference. Figure 2 , Figure 2 This is a schematic diagram of the topology of a data center network to which the message transmission method according to an embodiment of the present disclosure is applied. Figure 2 H0-H15 in the data center can represent multiple servers in a data center. These servers can connect to external applications, receive large model training data sent by external applications, and transmit it to other servers in the data center network.
[0179] Figure 2 The data center uses 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, switch H0 uses two links connected to access layer switches LA16 and LA17.
[0180] Furthermore, this section combines the process of the server sending large model training data to... Figure 2 The network architecture of the data center will be explained: Figure 2In this process, the source node server needs to send large model training data required for pre-training a large model to the destination node server. First, it sends this large model training data to the access layer switch, which then forwards it to the aggregation layer switch, which in turn forwards it to the core layer switch. After receiving the large model training data forwarded by the aggregation layer switch, the core layer forwards it to the aggregation layer switch, which then forwards it to the access layer switch. Finally, the access layer switch forwards the received large model training data to the destination node server.
[0181] It is understandable that there are multiple transmission paths consisting of switches between the source node server and the destination node server. For example, if the source node server H1 needs to send large model training data to the destination node server H9, there are multiple transmission paths. Here, we explain the process of server H1 sending large model training data A to server H9 using one of these transmission paths: Server H1 first sends the large model training data A to the access layer switch LA16, which forwards it to the aggregation layer switch LA1. Switch LA1 then forwards it to the core layer switch LC2. Switch LC2 then forwards it to the aggregation layer switch LA9, which in turn forwards it to the access layer switch LA24. Finally, switch LA24 forwards the large model training data A to server H9.
[0182] 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.
[0183] General Description of Embodiments in this Disclosure
[0184] In related technologies, during transmission using the original Transmission Control Protocol (TCP), if the path of a transmitted packet encounters a switch failure, the source node server will retransmit the packet through that path after a timeout. If the switch failure has not been resolved, the retransmitted packet will still be discarded. The source node server will then perform multiple retransmissions until the maximum number of retransmissions is reached. At this point, the source node server will randomly select a new path, but this new path may also pass through the failed switch. Compared to TCP, protective rerouting algorithms do not require repeated retransmissions when a switch failure occurs. During the first retransmission, the flow label field in the packet header is modified, and this flow label field participates in the hashing process during switch addressing, thereby changing the actual path of the packet and potentially bypassing the failed switch. However, both methods involve random rerouting paths, making it impossible to definitively bypass the failed switch. The probability of failing to bypass the failed switch after rerouting is high, reducing data flow continuity.
[0185] Some embodiments of this disclosure provide a message transmission method, apparatus, electronic device, and medium. The source node's server transmits target messages from external applications to the destination node's server to achieve reliable transmission at the sending layer.
[0186] According to one embodiment of this disclosure, a message transmission method is provided. This method can be applied to application data transmission, such as... Figure 2 Application scenarios include large-scale model training data transmission.
[0187] like Figure 3 As shown, a message transmission method according to an embodiment of this disclosure is executed by a source node, which sends a target message to a destination node through multiple intermediate node layers. The message transmission method includes:
[0188] Step 310: Obtain multiple reference paths between the source node and the destination node. Each reference path passes through at least one intermediate node at each intermediate node level. The number of intermediate nodes that overlap between any two reference paths among the multiple reference paths meets a predetermined condition.
[0189] Step 320: Obtain the target lookup table. The target lookup table indicates the correspondence between the base path and the path virtual port number. The path virtual port number is the virtual port number added to the target message when the source node sends the target message. Each base path corresponds to one or more path virtual port numbers.
[0190] Step 330: In response to the determination that the transmission of the target packet from the source node to the destination node failed, obtain the first path virtual port number in the target packet;
[0191] Step 340: In the target lookup table, determine the second path virtual port number that corresponds to a different base path than the first path virtual port number;
[0192] Step 350: Modify the first path virtual port number in the target packet to the second path virtual port number so that the target packet reaches the destination node along the base path corresponding to the second path virtual port number.
[0193] The following is a brief description of steps 310-350 above.
[0194] In step 310, multiple reference paths between the source node and the destination node are obtained. Each reference path passes through at least one intermediate node at each intermediate node level. The number of intermediate nodes that overlap between any two reference paths among the multiple reference paths meets a predetermined condition.
[0195] According to embodiments of this disclosure, the source node can be a server that sends message data, and the destination node can be a server that receives message data. For a single message, the source node and the destination node are two different servers. The target message refers to the message data that the source node will send to the destination node. When the source node sends the target message to the destination node, it needs to pass through multiple intermediate node layers. These intermediate nodes can be switches, used to forward target messages, and an intermediate node layer refers to a hierarchy composed of multiple intermediate nodes. For example, refer to... Figure 2 In a data center network, the intermediate node layer can be the access layer above the server, providing network connectivity. Alternatively, it can be the aggregation layer above the access layer, acting as the aggregation point for the intermediate nodes of the access layer and handling all traffic from those nodes. Finally, it can be the core layer above the aggregation layer, responsible for traffic control, forwarding, and routing throughout the data center network.
[0196] It is understood that multiple baseline paths exist between the source node and the destination node. Each baseline path passes through at least one and at most two intermediate nodes at each intermediate node layer, and the number of overlapping intermediate nodes between any two baseline paths satisfies a predetermined condition. The number of overlapping intermediate nodes between two baseline paths refers to the number of identical intermediate nodes traversed by both paths. This predetermined condition can be determined based on the actual transmission situation. If the data center network has few intermediate nodes, the number of available intermediate nodes for forwarding the target packet is also relatively small, so the predetermined condition can be a larger number. Conversely, if the data center network has many intermediate nodes, the number of available intermediate nodes for forwarding the target packet is also relatively large, so the predetermined condition can be a smaller number.
[0197] For example, this is combined with Figure 4The baseline path is described as follows: Figure 4 The source node is Figure 2 Server H0, destination node is Figure 2 Server H4. Multiple baseline paths exist between H0 and H4, including baseline path 1, baseline path 2, baseline path 3, and baseline path 4. Taking baseline path 1 and baseline path 2 as examples, the intermediate nodes traversed by baseline path 1 are LA16, LA0, LC0 / LC1 (which can be either LC0 or LC1), LA4, and LA20. The intermediate nodes traversed by baseline path 2 are LA16, LA1, LC2 / LC3 (which can be either LC2 or LC3), LA5, and LA20. LA16 and LA20 belong to the access layer, LA0, LA1, LA4, and LA5 belong to the aggregation layer, and LC0-1 and LC2-3 belong to the core layer. It can be deduced that the number of overlapping intermediate nodes between baseline path 1 and baseline path 2 is 2. Assuming the predetermined condition is that the number of overlapping intermediate nodes between any two baseline paths cannot exceed 3, then baseline path 1 and baseline path 2 satisfy the predetermined condition.
[0198] In step 320, a target lookup table is obtained. The target lookup table indicates the correspondence between the base path and the path virtual port number. The path virtual port number is the virtual port number added to the target message when the source node sends the target message. Each base path corresponds to one or more path virtual port numbers.
[0199] According to embodiments of this disclosure, a path virtual port number is a virtual port number added to the target packet when the source node sends the target packet. The path virtual port number can indicate the next hop of the target packet for either the source node or an intermediate node. That is, when an intermediate node receives a target packet, it can determine the next-hop intermediate node or the next-hop server based on the virtual port number in the target packet. Alternatively, the path virtual port number can be understood as an identifier of the baseline path from the source node to the destination node, with each baseline path corresponding to one or more path virtual port numbers.
[0200] For example, refer to Figure 4 As mentioned above, there are multiple baseline paths between H0 and H4, including baseline path 1, baseline path 2, baseline path 3, and baseline path 4. In the target lookup table maintained by the source node H0, the virtual port numbers corresponding to baseline path 1 are 1 and 2, those corresponding to baseline path 2 are 3 and 4, those corresponding to baseline path 3 are 5 and 6, and those corresponding to baseline path 4 are 7 and 8. Therefore, if a target message sent by H0 reaches H4 via baseline path 1, the virtual port number added by H0 to the target message can be either 1 or 2.
[0201] In step 330, in response to determining that the transmission of the target message from the source node to the destination node has failed, the first path virtual port number in the target message is obtained.
[0202] According to embodiments of this disclosure, the first path virtual port number refers to the path virtual port number added to the target packet that failed to be transmitted from the source node to the destination node. If the source node fails to transmit the target packet to the destination node, it indicates that there is a faulty intermediate node in the base path for transmitting the target packet. The faulty intermediate node cannot forward the target packet to the next-hop intermediate node, thereby causing the destination node to be unable to receive the target packet and also unable to send the corresponding acknowledgment response to the source node.
[0203] As mentioned above, the source node first needs to determine which base path is used to transmit the target packet. The process by which the source node determines the base path for transmitting the target packet is explained here: Figure 5 As shown, after the communication connection component of the source node determines that the source node has failed to transmit the target message to the destination, it will notify the event handling unit. This allows the event handling unit to respond to the failure notification path switching unit to promptly switch the base path. Switching the base path first requires determining which base path the faulty intermediate node belongs to. Based on this, the path switching unit can obtain the first path virtual port number from the target message and look it up in the target lookup table to determine the base path of the faulty intermediate node.
[0204] In step 340, in the target lookup table, a second path virtual port number is determined that corresponds to a different base path than the first path virtual port number.
[0205] According to embodiments of this disclosure, the second path virtual port number refers to the path virtual port number corresponding to a base path that is different from the base path identified by the first path virtual port number. For example, refer to... Figure 4 If the source node adds a first-path virtual port number of 1 to the target packet during the initial transmission, and the source node's first transmission of the target packet to the destination node fails, the source node will look up the first-path virtual port number in the target lookup table and determine that the base path of the faulty intermediate node is base path 1. When rerouting the target packet, the virtual port number corresponding to base path 2 can be designated as the second-path virtual port number. In other words, either path virtual port number 3 or path virtual port number 4 can be designated as the second-path virtual port number.
[0206] In step 350, the first path virtual port number in the target packet is modified to the second path virtual port number so that the target packet reaches the destination node along the base path corresponding to the second path virtual port number.
[0207] According to embodiments of this disclosure, referring to Figure 6 After determining the second path virtual port number, the base path used to transmit the target message can be switched by changing the first path virtual port number in the target message to the second path virtual port number, so that the target message arrives at the destination node according to the base path corresponding to the second path virtual port number.
[0208] It is understandable that, since the number of overlapping intermediate nodes between the base path corresponding to the second path virtual port number and the base path corresponding to the first path virtual port number is relatively small, when transmitting the target packet according to the base path corresponding to the second path virtual port number, the base path corresponding to the second path virtual port number is unlikely to pass through the faulty intermediate node, thereby achieving the goal of allowing the target packet to avoid the faulty intermediate node as much as possible and improving the continuity of data flow in packet transmission.
[0209] According to embodiments of this disclosure, referring to Figure 7 Testing of the original Transmission Control Protocol (TCP), the protective rerouting algorithm, and the message transmission method of this embodiment reveals the following: When an intermediate node fails at second 0, the original TCP will retransmit the message via the failed path after a timeout, and then perform multiple retransmissions until the maximum number of retransmissions is reached at second 20. Only then will the source node randomly select a new path. During the period from second 0 to second 20, the data center network will experience a prolonged data flow interruption. At second 21, the source node will randomly select the first path, but this newly selected path may also pass through the failed intermediate node, leading to a route switching failure and prolonged service unavailability. Even though the protective rerouting algorithm can change the transmission path of the message by modifying the flow label field in the message header during the first retransmission, the path switched by the protective rerouting algorithm still has a high probability of passing through the failed intermediate node, resulting in a first route switching failure at 200 milliseconds and a second route switching failure at 600 milliseconds. Even if the transmission path successfully bypasses the faulty intermediate node during the Kth retransmission, this still results in prolonged service unavailability. However, the embodiments of this disclosure can respond to the source node's failure to transmit the target packet to the destination node within 10 milliseconds by modifying the first path virtual port number in the target packet to the second path virtual port number, thus allowing the target packet to avoid the faulty intermediate node as much as possible. In this case, even if the upper layer experiences short periods of packet loss and no response, the source node can restore data flow after the first or second timeout retransmission. Under these circumstances, the upper-layer service will not perceive a data flow interruption, nor will it experience service unavailability. (Refer to...) Figure 8From a throughput perspective, when an intermediate node fails at the 10th second, the throughput of the original Transmission Control Protocol (TCP) will experience a prolonged decrease, only recovering at the 40th second. However, in the embodiments of this disclosure, although the throughput decreases after an intermediate node failure, it recovers quickly. Therefore, it can be determined that, compared to the original TCP and the protective rerouting algorithm, the embodiments of this disclosure can improve the continuity of data flow during message transmission.
[0210] In the embodiments of steps 310 to 350 above, routing is not performed using the source port number of each hop in the path. Instead, a unique path virtual port number is defined in the path, and routing is performed using the path virtual port number. The source port number of each hop in the path changes with each hop, but the path virtual port number is used to indicate the reference path between the source node and the destination node, and is unique throughout the entire path, exhibiting relative stability. This embodiment establishes a target lookup table between path virtual port numbers and reference paths, wherein the number of overlapping intermediate nodes between any two reference paths satisfies a predetermined condition. Fewer identical intermediate nodes between reference paths mean that if a failure occurs when transmitting a target packet using one reference path, it is highly likely that a failure will not occur using another reference path, as the number of identical intermediate nodes between the two is small, and using another reference path greatly bypasses the faulty switch. In this embodiment, when a failure occurs while transmitting a target packet through a reference path, the first path virtual port number, unique to this embodiment, is identified in the target packet. The target lookup table is searched, and the virtual port number is replaced with a second path virtual port number corresponding to a different reference path than the first path virtual port number. Because the virtual port number of the path has been changed, a new base path has actually been established. Since the base path has the characteristics mentioned above, the faulty switch has been bypassed with a very high probability, thus improving the continuity of data flow in packet transmission.
[0211] The above is a general description of steps 310 to 350. Since step 350 has been described in sufficient detail above, the specific implementation process of steps 310 to 340 will be described in detail below.
[0212] Detailed description of step 310
[0213] Step 310: Obtain multiple reference paths between the source node and the destination node. Each reference path passes through at least one intermediate node at each intermediate node level. The number of intermediate nodes that overlap between any two reference paths among the multiple reference paths meets a predetermined condition.
[0214] In one embodiment, reference is made to Figure 9 Step 310 includes:
[0215] Step 910: Obtain the candidate path set between the source node and the destination node. The candidate path set contains a first number of candidate paths, and multiple baseline paths contain a second number of baseline paths. The first number is greater than the second number.
[0216] Step 920: Use each candidate path in the candidate path set as an anchor path in turn;
[0217] Step 930: Calculate the number of intermediate nodes in the candidate path set that overlap with the anchor path, other than the anchor path.
[0218] Step 940: If the number of overlapping intermediate nodes is greater than the third number, remove other candidate paths from the candidate path set;
[0219] Step 950: After all candidate paths have been used as anchor paths, the remaining candidate paths in the candidate path set are used as multiple baseline paths.
[0220] Steps 910 to 950 are described in detail below:
[0221] In step 910, a set of candidate paths between the source node and the destination node is obtained. The set of candidate paths contains a first number of candidate paths, and multiple baseline paths contain a second number of baseline paths. The first number is greater than the second number.
[0222] According to embodiments of this disclosure, a candidate path can be any transmission path between a source node and a destination node, and the candidate path also passes through at least one intermediate node at each intermediate node layer. However, the number of overlapping intermediate nodes between any two candidate paths does not need to meet a predetermined condition. The candidate path set contains a first number of candidate paths, where the first number refers to the total number of candidate paths between the source node and the destination node. For example, referring to… Figure 10 If the source node is server H2 and the destination node is server H7, then the candidate path set contains all candidate paths between H2 and H7.
[0223] It is understandable that the candidate path set includes the baseline path, and the second number is the number of baseline paths in the candidate path set, and the second number is less than the first number. In other words, a baseline path is always a candidate path, but a candidate path is not necessarily a baseline path.
[0224] The specific method for "obtaining the set of candidate paths between the source node and the destination node" will be described in detail below.
[0225] In step 920, each candidate path in the candidate path set is used as an anchor path in turn.
[0226] According to embodiments of this disclosure, an anchor path can be understood as a candidate path used for reference. To select a baseline path from the candidate path set, it is necessary to calculate the number of overlapping intermediate nodes between any two candidate paths. Therefore, to traverse the candidate path set, each candidate path in the set can be used as an anchor path in turn to calculate the number of overlapping intermediate nodes between the anchor path and the candidate paths excluding the anchor path.
[0227] For example, if there exists a set of candidate paths between a source node and a destination node, including candidate path 1, candidate path 2, candidate path 3, and candidate path 4, candidate path 1 can be used as the anchor path first, then candidate path 2 as the anchor path, then candidate path 3 as the anchor path, and finally candidate path 4 as the anchor path.
[0228] In step 930, the number of intermediate nodes in the candidate path set that overlap with the anchor path and are other candidate paths besides the anchor path are calculated.
[0229] It is understandable that, in order to traverse the number of intermediate nodes that overlap between any two candidate paths in the candidate path set, for each anchor path, the number of intermediate nodes that overlap between the anchor path and other candidate paths in the candidate path set is calculated.
[0230] For example, refer to Figure 10 As mentioned above, the candidate path set contains all candidate paths between H2 and H7. Candidate path 1 is H2-LA18-LA0-LC0-LA4-LA22-H7, candidate path 2 is H2-LA18-LA1-LC2-LA5-LA22-H7, candidate path 3 is H2-LA18-LA0-LC1-LA4-LA23-H7, candidate path 4 is H2-LA19-LA2-LC4-LA6-LA23-H7, and candidate path 5 is H2-LA19-LA3-LC6-LA7-LA23-H7. Figure 11 As shown, if candidate path 1 in the candidate path set is taken as the anchor path, we can find that the number of overlapping intermediate nodes between candidate path 1 and candidate path 2 is 2, the number of overlapping intermediate nodes between candidate path 1 and candidate path 3 is 3, the number of overlapping intermediate nodes between candidate path 1 and candidate path 4 is 0, and the number of overlapping intermediate nodes between candidate path 1 and candidate path 5 is 0.
[0231] In step 940, if the number of overlapping intermediate nodes is greater than the third number, other candidate paths are removed from the candidate path set.
[0232] According to embodiments of this disclosure, the third number refers to the number of overlapping intermediate nodes between any two reference paths allowed by predetermined conditions. If the number of overlapping intermediate nodes is greater than the third number, it indicates that there are a large number of overlapping intermediate nodes between the candidate path and the anchor path. If a faulty intermediate node occurs in the anchor path, it is highly likely that the same faulty intermediate node will also exist in the candidate path. Switching the transmission path of the target message from the anchor path to this candidate path will likely still result in the target message transmission failure. To mitigate this risk, other candidate paths need to be removed from the candidate path set.
[0233] For example, refer to Figure 11 As mentioned above, the number of overlapping intermediate nodes between candidate path 1 and candidate path 2 is 2, and the number of overlapping intermediate nodes between candidate path 1 and candidate path 3 is 3. If the third number is 2, then candidate path 3 needs to be removed from the candidate path set.
[0234] The specific method for determining the third number will be described in detail below.
[0235] In step 950, after each candidate path has been used as an anchor path, the remaining candidate paths in the candidate path set are used as multiple baseline paths.
[0236] According to embodiments of this disclosure, after each candidate path has been used as an anchor path, it is stated that other candidate paths with more than a third number of intermediate nodes overlapping with the anchor path have been removed from the candidate path set. That is, at this point, there are no two candidate paths in the candidate path set that have more than a third number of overlapping intermediate nodes. Based on this, the candidate paths in the current candidate path set have met the requirements of a baseline path, and the remaining candidate paths in the candidate path set can be used as multiple baseline paths.
[0237] The embodiments of steps 910 to 950 described above can calculate the number of intermediate nodes that overlap with the anchor path in the candidate path set, other than the anchor path. Candidate paths with more than a third number of overlapping intermediate nodes are removed from the candidate path set, thus reducing the number of identical intermediate nodes between candidate paths. By using the remaining candidate paths in the candidate path set as multiple reference paths, the reference paths re-determined for the target message when the source node fails to transmit the target message to the destination node are more likely to bypass the failed intermediate nodes, improving the continuity of data flow during message transmission.
[0238] In one embodiment, reference is made to Figure 12 Step 910 includes:
[0239] Step 1210: Based on the total number of the first outgoing ports of the source node, determine the first route number from the source node to the intermediate node of the first intermediate node layer;
[0240] Step 1220: Based on the total number of second outgoing ports of a single intermediate node in the intermediate node layer, determine the second route number from a single intermediate node to the intermediate node in the next intermediate node layer;
[0241] Step 1230: Based on the first number of routes and the second number of routes corresponding to each intermediate node layer, generate a routing topology map between the source node and the destination node;
[0242] Step 1240: On the routing topology graph, obtain multiple candidate paths between the source node and the destination node to generate a candidate path set.
[0243] Steps 1210 and 1240 are described in detail below:
[0244] In step 1210, the first number of routes from the source node to the intermediate node of the first intermediate node layer is determined based on the total number of the first outgoing ports of the source node.
[0245] According to embodiments of this disclosure, the first outgoing port refers to the port connecting the source node and the intermediate node next hop of the source node; that is, the source node is connected to the intermediate node next hop of the source node through the first outgoing port. The total number of first outgoing ports refers to the number of first outgoing ports of the source node. The intermediate node next hop of the source node is the intermediate node connected to the source node in the first intermediate node layer, and the first route number refers to the number of intermediate nodes connected to the source node in the first intermediate node layer.
[0246] It is understandable that, since the source node is connected to the intermediate node of the next hop of the source node through the first outgoing port, the total number of the first outgoing ports can be determined as the first route number. For example, refer to... Figure 2 If the source node is server H0, H0 is connected to intermediate node LA16 through the first outgoing port A, and to intermediate node LA17 through the first outgoing port B. The total number of first outgoing ports of H0 is 2. Based on the total number of first outgoing ports of H0, the number of first routes from H0 to the intermediate nodes of the access layer can be determined to be 2.
[0247] In step 1220, the second number of routes from a single intermediate node to the intermediate node in the next intermediate node layer is determined based on the total number of second outgoing ports of a single intermediate node in the intermediate node layer.
[0248] According to embodiments of this disclosure, the second outgoing port refers to the port connecting the intermediate node and its next-hop intermediate / destination node (because the next hop of the intermediate node may be either an intermediate node or a destination node), that is, the intermediate node connects to its next-hop intermediate / destination node through the second outgoing port. The total number of second outgoing ports refers to the number of second outgoing ports of the intermediate node. The next-hop intermediate / destination node of the intermediate node is the intermediate / destination node connected to the intermediate node in the next intermediate node layer / server layer. The second route count refers to the number of intermediate / destination nodes connected to the intermediate node in the next intermediate node layer / server layer.
[0249] It is understandable that, since intermediate nodes are connected to the next-hop intermediate node / destination node via the second outgoing port, the total number of second outgoing ports can be determined as the second route count. For example, refer to... Figure 2 If the intermediate node is LA16 in the access layer, LA16 is connected to intermediate node LA0 through its second outgoing port A, to intermediate node LA1 through its second outgoing port B, to intermediate node LA2 through its second outgoing port C, and to intermediate node LA3 through its second outgoing port D. LA16 has a total of 4 second outgoing ports. Based on the total number of second outgoing ports of LA16, the number of second routes from LA16 to the intermediate nodes in the aggregation layer can be determined to be 4.
[0250] In step 1230, a routing topology map between the source node and the destination node is generated based on the first number of routes and the second number of routes corresponding to each intermediate node layer.
[0251] According to embodiments of this disclosure, a routing topology diagram refers to the physical layout of the connections between source nodes and destination nodes. The routing topology diagram shows the physical connection relationship between the source node and the destination node, as well as the data flow path.
[0252] It is understandable that the first routing count can be used to obtain the intermediate node that is the next hop from the source node, and the second routing count can be used to obtain the intermediate node / destination node that is the next hop from each individual intermediate node in each intermediate node layer. Therefore, based on the first routing count and the second routing count corresponding to each intermediate node layer, a complete routing topology map from the source node to the destination node can be generated.
[0253] For example, if the source node is server H0 and the destination node is server H4, the first route count for H0 is 2. In the access layer of the next hop from the source node, the second route count for intermediate node LA16 is 2, and the second route count for intermediate node LA17 is 2. In the aggregation layer of the next hop from the access layer, the second route count for intermediate node LA0 is 2, and the second route count for intermediate node LA1 is 2. In the core layer of the next hop from the aggregation layer, the second route count for intermediate node LC0-1 is 1, and the second route count for intermediate node LC2-3 is 1. In the aggregation layer of the next hop from the core layer, the second route count for intermediate node LA4 is 1, the second route count for intermediate node LA5 is 1, the second route count for intermediate node LA6 is 1, and the second route count for intermediate node LA7 is 1. In the access layer of the next hop from the aggregation layer, the second route count for intermediate node LA20 is 1, and the second route count for intermediate node LA21 is 1. Based on this, a routing topology diagram can be generated as follows: Figure 4 As shown.
[0254] In step 1240, multiple candidate paths between the source node and the destination node are obtained on the routing topology graph to generate a candidate path set.
[0255] According to embodiments of this disclosure, a routing topology diagram can be used to visualize all candidate paths between a source node and a destination node, presenting the routing and forwarding relationships. Based on this, all candidate paths between the source node and the destination node can be clearly obtained on the routing topology diagram, thereby constructing a candidate path set.
[0256] The embodiments of steps 1210 to 1240 described above can generate a routing topology map between the source node and the destination node based on the first number of routes and the second number of routes corresponding to each intermediate node layer. The routing topology map presents the routing and forwarding relationships between the source node and the destination node. Based on the routing topology map, the physical connection between the source node and the destination node can be clearly known, thereby quickly determining all candidate paths between the source node and the destination node.
[0257] In one embodiment, reference is made to Figure 13 The third number in step 940 is determined in the following way:
[0258] Step 1310: Determine the total number of first output ports of the source node;
[0259] Step 1320: Determine the total number of second output ports for a single intermediate node in each intermediate node layer;
[0260] Step 1330: Determine the maximum and minimum values of the total number of first output ports and the total number of second output ports corresponding to each intermediate node layer;
[0261] Step 1340: Calculate the difference between the maximum and minimum values, and use it as the third number.
[0262] Steps 1310 and 1340 are described in detail below:
[0263] In step 1310, the total number of first output ports of the source node is determined.
[0264] It's understandable that the total number of first outgoing ports for the source node can be determined by referring to the server's default ports. Alternatively, the total number of first outgoing ports for the source node can be determined by customizing the source node's port. Another approach is to determine the total number of first outgoing ports by referring to the intermediate nodes of the next hop in the routing topology diagram.
[0265] In step 1320, the total number of second output ports of a single intermediate node in each intermediate node layer is determined.
[0266] It is understandable that the total number of the second outgoing ports of an intermediate node can be determined by its LAN address, virtual LAN configuration, or the next-hop intermediate / destination node in the routing topology.
[0267] In step 1330, the maximum and minimum values of the total number of first output ports and the total number of second output ports corresponding to each intermediate node layer are determined.
[0268] According to embodiments of this disclosure, the total number of first outgoing ports reflects the number of intermediate nodes in the next hop of the source node. Since there is only one source node, there is only one total number of first outgoing ports. The total number of second outgoing ports corresponding to a certain intermediate node in each intermediate node layer reflects the number of intermediate / destination nodes in the next hop of that intermediate node. Because there are multiple intermediate nodes between the source node and the destination node, there are multiple total numbers of second outgoing ports. The intermediate node layer containing the intermediate node in the next hop of the intermediate node with the largest total number of second outgoing ports is the intermediate node layer with the most intermediate nodes among all intermediate node layers between the source node and the destination node. That is, in this intermediate node layer, there are more selectable intermediate nodes, and the probability of overlapping selected intermediate nodes is small. The intermediate node layer containing the intermediate node in the next hop of the intermediate node with the smallest total number of second outgoing ports is the intermediate node layer with the fewest intermediate nodes among all intermediate node layers between the source node and the destination node. That is, in this intermediate node layer, there are fewer selectable intermediate nodes, and the probability of overlapping selected intermediate nodes is large.
[0269] In step 1340, the difference between the maximum and minimum values is calculated as the third number.
[0270] According to embodiments of this disclosure, the difference between the maximum and minimum values indicates the difference between the number of intermediate nodes in the intermediate node layer with the most intermediate nodes and the number of intermediate nodes in the intermediate node layer with the fewest intermediate nodes. Because the more complex and larger the data center network, the larger the difference between the maximum and minimum values, and similarly, the simpler and smaller the data center network, the smaller the difference between the maximum and minimum values. By using the difference between the maximum and minimum values as a third number, the third number can be applied to different application scenarios, improving the applicability of the message transmission method of this disclosure.
[0271] For example, refer to Figure 4 You can get Figure 4 The total number of first outgoing ports for the source node is 2. The maximum total number of second outgoing ports for each intermediate node layer is 4, and the minimum total number of second outgoing ports for each intermediate node layer is 1. Therefore, 3 can be considered the third number. The number of identical intermediate nodes in any two baseline paths from source node H0 to destination node H4 must be less than 3.
[0272] In the embodiments of steps 1310 to 1340 above, the difference between the maximum and minimum values is larger for more complex and larger data center networks, and similarly, the difference is smaller for simpler and smaller data center networks. However, this disclosure improves the applicability of the message transmission method by determining the maximum and minimum values of the first total number of output ports and the total number of second output ports corresponding to each intermediate node layer, and using the difference between the maximum and minimum values as a third number. This makes the third number applicable to different application scenarios.
[0273] Detailed description of step 320
[0274] In step 320, a target lookup table is obtained. The target lookup table indicates the correspondence between the base path and the path virtual port number. The path virtual port number is the virtual port number added to the target message when the source node sends the target message. Each base path corresponds to one or more path virtual port numbers.
[0275] In one embodiment, reference is made to Figure 14 Step 320 includes:
[0276] Step 1410: Obtain the set of virtual port numbers for the path;
[0277] Step 1420: Assign the set of path virtual port numbers to multiple first outgoing ports of the source node, and assign the set of path virtual port numbers to multiple second outgoing ports of each intermediate node layer.
[0278] Step 1430: Determine the path virtual port number corresponding to the base path based on the path virtual port numbers assigned to the source node and each intermediate node on the base path.
[0279] Step 1440: Store the baseline path and the corresponding virtual port number of the path to generate a target lookup table.
[0280] Steps 1410 and 1440 are described in detail below:
[0281] In step 1410, the set of virtual port numbers for the path is obtained.
[0282] According to embodiments of this disclosure, a path virtual port number can be understood as an identifier of a base path, or it can be understood as a field in a destination packet. The length of the field indicates the number of path virtual port numbers, and the set of all path virtual port numbers contained in this field is the path virtual port number set.
[0283] For example, if the field related to the path virtual port number in the current target message is 8 bits, then the number of path virtual numbers is 2 to the power of 8, that is, the number of path virtual numbers is 256. The path virtual port number set contains 256 path virtual numbers, and the path virtual port number set can specifically be {1,2,3,4......256}.
[0284] In step 1420, the set of path virtual port numbers is assigned to multiple first outgoing ports of the source node, and for each intermediate node layer, the set of path virtual port numbers is assigned to multiple second outgoing ports of the intermediate node layer.
[0285] According to embodiments of this disclosure, "assigning the set of path virtual port numbers to the multiple first output ports of the source node" can also be understood as determining the path virtual port numbers corresponding to the multiple first output ports of the source node. For example, refer to... Figure 15 If the source node is server H0, H0's first outgoing port A is connected to LA16, and H0's first outgoing port B is connected to LA17. If the set of virtual port numbers for the path is...
[0286] From {1,2,3......12}, we can obtain that the path virtual port number corresponding to the first outgoing port A of the source node can be {1,2,3,4,5,6}, and the path virtual port number corresponding to the first outgoing port B of the source node can be {7,8,9,10,11,12}.
[0287] According to embodiments of this disclosure, "assigning the set of path virtual port numbers to multiple second output ports of each intermediate node layer" can also be understood as determining the path virtual port numbers corresponding to the multiple second output ports of the intermediate nodes in each intermediate node layer. For example, refer to... Figure 15 Intermediate nodes LA16 and LA17 are two of several intermediate nodes between the source node H0 and the destination node H4, and LA16 and LA17 are at the same intermediate node layer. LA16's second outgoing port A is connected to intermediate node LA0, and LA16's second outgoing port B is connected to intermediate node LA1. LA17's second outgoing port C is connected to intermediate node LA0, and LA17's second outgoing port D is connected to intermediate node LA1. If the set of path virtual port numbers is {1,2,3...12}, then the path virtual port number corresponding to LA16's second outgoing port A can be {1,5,9}, and the path virtual port number corresponding to LA16's second outgoing port B can be {2,6,10}. The path virtual port number corresponding to LA17's second outgoing port C can be {3,7,11}, and the path virtual port number corresponding to LA17's second outgoing port D can be {4,8,12}.
[0288] The specific method of "assigning the set of path virtual port numbers to multiple first outgoing ports of the source node, and assigning the set of path virtual port numbers to multiple second outgoing ports of the intermediate node layer for each intermediate node layer" will be described in detail below.
[0289] In step 1430, the path virtual port number corresponding to the base path is determined based on the path virtual port numbers assigned to the source node and each intermediate node on the base path.
[0290] According to embodiments of this disclosure, the baseline path from the source node to the destination node includes the source node, multiple intermediate nodes, and the destination node. Since the destination node is the last hop of the baseline path, it has no outgoing port or path virtual port number. Therefore, when determining the path virtual port number corresponding to the baseline path, it is only necessary to consider the path virtual port numbers assigned to the source node and each intermediate node along the baseline path. Furthermore, the path virtual port number corresponding to the baseline path refers to the path virtual port number assigned to each intermediate node traversed by the baseline path.
[0291] For example, refer to Figure 15 , Figure 15The baseline path 1 is H0-LA16-LA0-LC0-1-LA4-LA20-H4, and the baseline path 2 is H0-LA16-LA1-LC2-3-LA5-LA20-H4. To determine the virtual port number corresponding to baseline path 1, it can be based on the virtual port numbers assigned to H0, LA16, LA0, LC0-1, LA4, and LA20. Similarly, to determine the virtual port number corresponding to baseline path 2, it can be based on the virtual port numbers assigned to H0, LA16, LA1, LC2-3, LA5, and LA20.
[0292] The specific method for "determining the path virtual port number corresponding to the baseline path based on the path virtual port numbers assigned to the source node and each intermediate node on the baseline path" will be described in detail below.
[0293] In step 1440, the baseline path and the corresponding virtual port number of the path are stored to generate a target lookup table.
[0294] According to embodiments of this disclosure, after obtaining the path virtual port number corresponding to the base path, to facilitate quickly determining the path virtual port number corresponding to the base path for the target packet when routing the target packet, the base path and the path virtual port number corresponding to the base path can be stored accordingly. For example, refer to... Figure 15 The reference path 1 and its corresponding virtual port number {1,5} can be stored accordingly, the reference path 2 and its corresponding virtual port number {2,6} can be stored accordingly, the reference path 3 and its corresponding virtual port number {7,11} can be stored accordingly, and the reference path 4 and its corresponding virtual port number {8,12} can be stored accordingly to generate a target lookup table.
[0295] In the embodiments described in steps 1410 to 1440, the path virtual port number corresponding to the reference path can be determined based on the path virtual port numbers allocated to the source node and each intermediate node on the reference path. Based on this, only the path virtual port number corresponding to the reference path needs to be added to the target packet to perform deterministic routing of the target packet, reducing the uncertainty in the target packet transmission process. Furthermore, the embodiments of this disclosure can store the reference path and the corresponding path virtual port number, improving the efficiency of determining the path virtual port corresponding to the reference path for the target packet when routing the target packet subsequently.
[0296] In one embodiment, reference is made to Figure 16 Before step 1420, the following are also included:
[0297] Step 1610: Configure the same hash algorithm and hash seed for multiple servers, where the source node and destination node are any one of the multiple servers;
[0298] Step 1620: For each intermediate node layer, configure the same hash algorithm and hash seed for each intermediate node in the intermediate node layer.
[0299] Steps 1610 to 1620 are described in detail below:
[0300] In step 1610, the same hash algorithm and hash seed are configured for multiple servers, where the source node and the destination node are any one of the multiple servers.
[0301] It is understood that in the embodiments of this disclosure, the server can be a source node or a destination node. For example, refer to... Figure 2 The servers include H0-H15. A hash algorithm is an algorithm that converts input data of arbitrary length into output data of fixed length. During the transmission of a target packet, the source node and intermediate nodes can calculate the target packet based on the hash algorithm to obtain the first output port of the source node and the second output port of the intermediate node, thereby forwarding the target packet to the next hop through the first / second output port. The hash seed refers to the initial value or initial parameter used in the hash algorithm. By using a hash seed, the randomness and security of the hash function can be increased.
[0302] According to embodiments of this disclosure, by configuring multiple servers with the same hash algorithm and hash seed, multiple servers can achieve consistent routing results. That is, servers with the same hash algorithm and hash seed can use the same routing strategy for data transmission. For example, refer to... Figure 17You can configure the same hash algorithm H and the same hash seed H for multiple servers, so that each server can use the same hash algorithm H to route target packets.
[0303] For example, this is combined with Figure 2 To explain "multiple servers having consistent routing results": In a data center network, server H0 sends a target packet with path virtual port number A to server H4. In the base path corresponding to path virtual port number A, the next hop for server H0 is the access layer intermediate node LA16. If H0-H15 are configured with the same hash algorithm and hash seed, and server H8 sends a target packet with path virtual port number A to server H12, we can see that in the base path corresponding to path virtual port number A, the next hop for server H8 is the access layer intermediate node LA24. In other words, the first outgoing port of the target packet sent by server H0 is the same as the first outgoing port of the target packet sent by server H8. Specifically, when servers with the same hash algorithm and hash seed send target packets with the same path virtual port number, the first outgoing port of the target packet sent by multiple servers is consistent.
[0304] In step 1620, for each intermediate node layer, the same hash algorithm and hash seed are configured for each intermediate node in the intermediate node layer.
[0305] According to embodiments of this disclosure, by configuring the same hash algorithm and hash seed for multiple intermediate nodes in the intermediate node layer, the multiple intermediate nodes can have consistent routing behavior. That is, intermediate nodes with the same hash algorithm and hash seed follow the same rules and strategies for routing and forwarding. For example, refer to... Figure 17 Multiple intermediate nodes in the access layer can be configured with the same hash algorithm L and the same hash seed L, allowing each intermediate node in the access layer to use the same hash algorithm L to forward target packets. Similarly, multiple intermediate nodes in the aggregation layer can be configured with the same hash algorithm S and the same hash seed S, allowing each intermediate node in the aggregation layer to use the same hash algorithm S to forward target packets. Finally, multiple intermediate nodes in the core layer can be configured with the same hash algorithm C, allowing each intermediate node in the core layer to use the same hash algorithm C to forward target packets.
[0306] For example, this is combined with Figure 2To explain "multiple intermediate nodes exhibiting consistent routing behavior": As mentioned above, when H0 sends a target packet with path virtual port number A to H4, the next hop of the aggregation layer intermediate node LA4 in the base path corresponding to path virtual port number A is the access layer intermediate node LA20. If the same hash algorithm and hash seed are configured for all aggregation layer intermediate nodes LA0-LA15, and server H8 sends a target packet with path virtual port number A to server H12, we can see that the next hop of the aggregation layer intermediate node LA12 in the base path corresponding to path virtual port number A is the access layer intermediate node LA28. In other words, the second outgoing port of the target packet sent from intermediate node LA4 is the same as the second outgoing port of the target packet sent from intermediate node LA12. Specifically, when intermediate nodes with the same hash algorithm and hash seed send target packets with the same path virtual port number, the second outgoing port of the target packet sent by multiple intermediate nodes is consistent.
[0307] In the embodiments described in steps 1610 to 1620 above, configuring the same hash algorithm and hash seed for multiple servers ensures consistent routing results for the servers. By configuring the same hash algorithm and hash seed for each intermediate node in the intermediate node layer, consistent routing performance is ensured for each intermediate node in the intermediate node layer, reducing the uncertainty of the target packet during transmission.
[0308] In one embodiment, reference is made to Figure 18 Step 1420 includes:
[0309] Step 1810: For each path virtual port number in the path virtual port number set, construct a probe message. The probe message has a transmission protocol number, a path virtual port number, a source address corresponding to the source node, a destination address corresponding to the destination node, and a destination port number corresponding to the destination node.
[0310] Step 1820: Send a probe message from the source node;
[0311] Step 1830: Identify the first output port of the probe message output by the source node and the second output port of the probe message output by each intermediate node layer, and assign the path virtual port number to the first output port and the second output port.
[0312] Steps 1810 to 1830 are described in detail below:
[0313] In step 1810, for each path virtual port number in the path virtual port number set, a probe message is constructed. The probe message has a transmission protocol number, a path virtual port number, a source address corresponding to the source node, a destination address corresponding to the destination node, and a destination port number corresponding to the destination node.
[0314] According to embodiments of this disclosure, a probe message refers to a message sent by the source node to probe the first outgoing port of the source node and the second outgoing port of the intermediate node corresponding to the virtual port number of the path. For example... Figure 19 As shown, the probe message includes the transport protocol number, the path virtual port number, the source address corresponding to the source node, the destination address corresponding to the destination node, and the destination port number corresponding to the destination node. The source node / intermediate node typically uses a hash algorithm and a hash seed to perform hash calculations on the source address, destination address, transport protocol number, path virtual port number, and destination port number to determine the first / second outgoing port mapped by the calculation result. The target message is then forwarded to the next hop through the first / second outgoing port. This mapped first / second outgoing port corresponds to the path virtual port number.
[0315] Understandably, in order to determine the first outgoing port of the source node and the second outgoing port of the intermediate node corresponding to each path virtual port number, a probe message needs to be constructed for each path virtual port number in the set of path virtual port numbers. In order to ensure the accuracy of the routing results, the transport protocol number, source address, destination address, and destination port number are consistent in the multiple probe messages constructed, and only the path virtual port number is different.
[0316] For example, if there exists a set of path virtual port numbers {1,2,3,4......16}, a probe packet A with path virtual port number 1 can be constructed first, then a probe packet B with path virtual port number 2, a probe packet C with path virtual port number 3, and so on, until all path virtual port numbers in the set have been traversed. The transport protocol number, source address, destination address, and destination port number in probe packets A, B, C, etc., are consistent.
[0317] In step 1820, a probe message is sent from the source node.
[0318] According to embodiments of this disclosure, in order to detect the first outgoing port of the source node and the second outgoing port of the intermediate node corresponding to the virtual port number of the path, it is necessary to determine the multiple intermediate nodes that the probe message passes through during transmission. Based on this, a probe message is sent from the source node so that the multiple intermediate nodes between the source node and the destination node forward the probe message.
[0319] In step 1830, the first output port of the probe message output by the source node and the second output port of the probe message output by each intermediate node layer are identified, and the path virtual port number is assigned to the first output port and the second output port.
[0320] According to embodiments of this disclosure, each intermediate node traversed by a probe packet can be identified using a path probing tool on the source node, thereby determining the first output port of the probe packet from the source node and the second output port of the probe packet from each intermediate node layer. Based on this, the path virtual port number carried on the probe packet can be assigned to the first and second output ports, thereby determining the path virtual port number corresponding to each first output port of the source node and the path virtual port number corresponding to each second output port of the intermediate node.
[0321] For example, this is combined with Figure 20 The explanation of "assigning the path virtual port number to the first outgoing port" is as follows: When the source node sends a probe packet with a path virtual port number of 1, if the path probing tool set on the source node detects that the probe packet arrives at the intermediate node L0 of the access layer through the first outgoing port A of the source node, then the path virtual port number 1 can be assigned to the first outgoing port A. Similarly, if the path probing tool detects that the probe packet arrives at the intermediate node L1 of the access layer through the first outgoing port B of the source node, then the path virtual port number 1 can be assigned to the first outgoing port B.
[0322] For example, this is combined with Figure 21 The following explains the process of "assigning the path virtual port number to the second outgoing port": When the source node sends a probe packet with the path virtual port number 2, if the path probing tool set at the source node detects that the probe packet arrives at the aggregation layer intermediate node S0 via the second outgoing port A of the access layer intermediate node L1, then the path virtual port number 2 can be assigned to the second outgoing port A. Similarly, if the path probing tool detects that the probe packet arrives at the aggregation layer intermediate node S1 via the second outgoing port B of the access layer intermediate node L1, then the path virtual port number 2 can be assigned to the second outgoing port B. If the path probing tool detects that the probe packet arrives at the aggregation layer intermediate node S2 via the second outgoing port C of the access layer intermediate node L1, then the path virtual port number 2 can be assigned to the second outgoing port C. If the path probing tool detects that the probe packet arrives at the aggregation layer intermediate node S3 via the second outgoing port D of the access layer intermediate node L1, then the path virtual port number 2 can be assigned to the second outgoing port D.
[0323] For example, this is combined with Figure 22The following explains the process of "assigning the path virtual port number to the second outgoing port": If the source node sends a probe packet with a path virtual port number of 2, and the path probing tool set on the source node detects that the probe packet reaches the core layer intermediate node C0 through the second outgoing port E of the aggregation layer intermediate node S1, then the path virtual port number 2 can be assigned to the second outgoing port E. Similarly, if the path probing tool detects that the probe packet reaches the core layer intermediate node C1 through the second outgoing port F of the aggregation layer intermediate node S1, then the path virtual port number 2 can be assigned to the second outgoing port F.
[0324] For example, this is combined with Figure 23 The following explains the process of "assigning the path virtual port number to the second outgoing port": If the source node sends a probe packet with a path virtual port number of 2, and the path probing tool set at the source node detects that the probe packet reaches the access layer intermediate node L0 through the second outgoing port G of the aggregation layer intermediate node S1, then the path virtual port number 2 can be assigned to the second outgoing port G. Similarly, if the path probing tool detects that the probe packet reaches the access layer intermediate node L1 through the second outgoing port H of the aggregation layer intermediate node S1, then the path virtual port number 2 can be assigned to the second outgoing port H.
[0325] The embodiments of steps 1810 to 1830 described above can construct a probe packet for each path virtual port number in the path virtual port number set. Further, by identifying each intermediate node traversed by the probe packet carrying the path virtual port number, the first output port of the probe packet from the source node and the second output port of the probe packet from each intermediate node layer can be determined. This method allows for the rapid determination of the path virtual port number corresponding to each first output port and each second output port, facilitating subsequent precise routing of the target packet based on the path virtual port number.
[0326] In one embodiment, reference is made to Figure 24 Step 1430 includes:
[0327] Step 2410: Generate a set of single-node path virtual port numbers based on the path virtual port numbers assigned to the source node or intermediate node on the baseline path.
[0328] Step 2420: Take the intersection of the set of single-node path virtual port numbers corresponding to the source node and each intermediate node, and use each path virtual port number in the intersection as the path virtual port number corresponding to the base path.
[0329] Steps 2410 and 2420 are described in detail below:
[0330] In step 2410, a set of single-node path virtual port numbers is generated based on the path virtual port numbers assigned to the source node or intermediate node on the baseline path.
[0331] Understandably, each first outgoing port of a source node typically corresponds to multiple path virtual port numbers, and each second outgoing port of an intermediate node also corresponds to multiple path virtual port numbers. The set of path virtual port numbers for a single node can be the set of path virtual port numbers corresponding to the multiple first outgoing ports of the source node on the baseline path. The set of path virtual port numbers for a single node can also be the set of path virtual port numbers corresponding to the multiple second outgoing ports of the intermediate nodes on the baseline path.
[0332] Specifically, refer to Figure 25 When forwarding probe packets, the source / intermediate node performs a hash calculation on the transport protocol number, source address, destination address, destination port number, and path virtual port number in the probe packet to find the outgoing port of the probe packet based on the calculation result. Furthermore, for a source node or a single intermediate node, the path virtual port numbers added to probe packets exiting from multiple ports with the same outgoing port can be combined into an outgoing port path virtual port number set. The outgoing port path virtual port number sets corresponding to multiple outgoing ports of the source / intermediate node are combined into a single node path virtual port number set. For example... Figure 25 As shown, since each outgoing port has a corresponding set of virtual port numbers for its path, if the source node / intermediate node has K outgoing ports, then there are K sets of virtual port numbers for its path. These K sets of virtual port numbers for its path are combined to form the set of virtual port numbers for the single-node path of that source node / intermediate node.
[0333] In step 2420, the intersection of the single-node path virtual port number sets corresponding to the source node and each intermediate node is taken, and each path virtual port number in the intersection is used as the path virtual port number corresponding to the base path.
[0334] According to embodiments of this disclosure, "using the path virtual port numbers in the intersection as the path virtual port number corresponding to the base path" can be understood as: using the path virtual port number common to a certain output port path virtual number set of the single-node path virtual port number set of the source node and a certain output port path virtual number set of the single-node path virtual port number sets of the multiple intermediate nodes included in the base path as the path virtual port number corresponding to the base path. The set of output port path virtual numbers of the source node / intermediate node required to determine the path virtual port number corresponding to the base path can be determined based on the output port used by the source node / intermediate node in the base path to forward probe packets. For example, if the output port used by source node A to forward probe packets in the base path is output port B, then the set of output port path virtual numbers corresponding to output port B of source node A is used when determining the path virtual port number corresponding to the base path. If the output port used by intermediate node C to forward probe packets in the base path is output port D, then the set of output port path virtual numbers corresponding to output port D of intermediate node C is used when determining the path virtual port number corresponding to the base path.
[0335] For example, refer to Figure 15 There exists a baseline path from source node H0 to destination node H4: H0-LA16-LA0-LC0-1-LA4-LA20-H4. The intersection (1,5) of the set of virtual outgoing port paths corresponding to H4 (1,2,3,4,5,6), LA16 (1,5,9), and LA4 (1,2,5,6,9,10) can be used as the virtual port number for this baseline path. However, this embodiment does not consider the sets of virtual outgoing port paths for upstream intermediate nodes in the aggregation layer, downstream intermediate nodes in the core layer, or downstream intermediate nodes in the access layer. Therefore, when determining the virtual port number for the baseline path, the sets of virtual outgoing port paths corresponding to LA0, LC0-1, and LA20 are not considered.
[0336] The embodiments of steps 2410 and 2420 described above can determine the path virtual port number corresponding to the base path based on the path virtual port numbers in the intersection of the sets of single-node path virtual port numbers corresponding to the source node and each intermediate node. Through these steps, the path virtual port number corresponding to each base path can be quickly determined. Subsequently, after determining the base path used to transmit the target packet, the path virtual port number corresponding to the base path can be directly added to the target packet, reducing the uncertainty in the target packet transmission process and improving the continuity of the data flow during packet transmission.
[0337] In one embodiment, reference is made to Figure 26 Step 1420 includes:
[0338] Step 2610: Identify the key node layer from each intermediate node layer;
[0339] Step 2620: For each critical node layer, allocate the set of path virtual port numbers to multiple second outgoing ports of the critical node layer;
[0340] Step 1430 includes:
[0341] Step 2630: Determine the path virtual port number corresponding to the baseline path based on the path virtual port numbers assigned to the source node and intermediate nodes in the critical node layer on the baseline path.
[0342] Steps 2610 to 2630 are described in detail below:
[0343] In step 2610, the critical node layer is identified from each intermediate node layer.
[0344] It is understood that the critical node layer refers to the intermediate node layer containing the intermediate nodes corresponding to the path virtual port numbers used when determining the path virtual port numbers corresponding to the baseline path. In this embodiment of the disclosure, the critical node layer includes an uplink access layer and a downlink aggregation layer. This is because, in cases such as Figure 2 In a data center network, once a packet travels up from an intermediate node in the aggregation layer, it will always reach the same intermediate node in the aggregation layer of another network module, regardless of which intermediate node in the core layer it is connected to. This process is without uncertainty. Therefore, the critical node layer does not include the uplink aggregation layer or the downlink core layer. Secondly, since the next hop in the downlink access layer is always the destination node, this process is also without uncertainty. Therefore, the critical node layer does not include the downlink access layer.
[0345] For example, refer to Figure 15 As mentioned above, when determining the virtual port number corresponding to the baseline path H0-LA16-LA0-LC0-1-LA4-LA20-H4, the set of virtual port numbers corresponding to the outgoing port path of LA0 (corresponding to the intermediate node of the uplink aggregation layer), the set of virtual port numbers corresponding to the outgoing port path of LC0-1 (corresponding to the intermediate node of the downlink core layer), and the set of virtual port numbers corresponding to the outgoing port path of LA20 (corresponding to the intermediate node of the downlink access layer) were not considered.
[0346] In step 2620, for each critical node layer, the set of path virtual port numbers is allocated to multiple second outgoing ports of the critical node layer.
[0347] Understandably, step 2620 includes: constructing a probe packet for each path virtual port number in the path virtual port number set, the probe packet having a transport protocol number, a path virtual port number, a source address corresponding to the source node, a destination address corresponding to the destination node, and a destination port number corresponding to the destination node; sending the probe packet from the source node; identifying the first output port of the probe packet output by the source node and the second output port of the probe packet output by each intermediate node layer of the critical node layer, and assigning the routing virtual port number to the first output port and the second output port. This step is similar to the specific implementation of steps 1810 to 1830 above, and will not be described in detail here.
[0348] In step 2630, the path virtual port number corresponding to the baseline path is determined based on the path virtual port numbers assigned to the source node and intermediate nodes in the critical node layer on the baseline path.
[0349] It is understood that step 2630 includes: generating a set of single-node path virtual port numbers based on the path virtual port numbers assigned to the intermediate nodes of the source node or critical node layer on the baseline path; taking the intersection of the single-node path virtual port number sets corresponding to the source node and each intermediate node of the critical node layer, and using each path virtual port number in the intersection as the path virtual port number corresponding to the baseline path. This process is similar to the specific implementation of steps 2410 to 2420 above, and will not be described in detail here.
[0350] In the embodiments of steps 2610 to 2630 above, when determining the path virtual port number corresponding to the baseline path, in addition to the set of single-node path virtual port numbers corresponding to the source node, only the set of single-node path virtual port numbers corresponding to the intermediate nodes of the critical node layer is considered, without considering other intermediate node layers besides the critical node layer. This reduces the computational load when determining the path virtual port number corresponding to the baseline path and improves the efficiency of determining the path virtual port number corresponding to the baseline path.
[0351] Detailed description of step 330
[0352] In step 330, in response to determining that the transmission of the target message from the source node to the destination node has failed, the first path virtual port number in the target message is obtained.
[0353] In one embodiment, reference is made to Figure 27 Step 330 includes:
[0354] Step 2710: Add the first path virtual port number to the target message;
[0355] Step 2720: Transmit the target message from the source node to the destination node;
[0356] Step 2730: If no acknowledgment response is received from the destination node within the preset first time, it is determined that the transmission of the target message has failed.
[0357] Steps 2710 to 2730 are described in detail below:
[0358] In step 2710, the first path virtual port number is added to the target message.
[0359] It is understandable that, in this embodiment of the disclosure, the source node and intermediate nodes determine the first and second outgoing ports for forwarding the target packet based on the path virtual port number. Without the path virtual port number, the source node cannot know which first outgoing port to use when forwarding the target packet, and the destination node cannot know which second outgoing port to use. Therefore, after determining the baseline path for transmitting the target packet and obtaining the first path virtual port number corresponding to the baseline path, the first path virtual port number needs to be added to the target packet so that the source node and intermediate nodes can forward the target packet based on the first path virtual port number.
[0360] The specific method for "adding the first path virtual port number to the target message" will be described in detail below.
[0361] In step 2720, the target message is transmitted from the source node to the destination node.
[0362] According to embodiments of this disclosure, after adding a first path virtual port number to the target packet, the source node can transmit the target packet to the destination node, so that the intermediate nodes between the source node and the destination node forward the target packet according to the base path corresponding to the first path virtual port number.
[0363] In step 2730, if no acknowledgment response is received from the destination node within a preset first time period, it is determined that the transmission of the target message has failed.
[0364] According to embodiments of this disclosure, the first time refers to the sum of the time allowed by the source node to transmit the target message and the time taken by the destination node to return an acknowledgment response. The first time can be determined based on the actual message transmission situation. If the data center network used to transmit the target message is complex, the first time can be longer. If the data center network used to transmit the target message is simple, the first time can be shorter. If the application scenario has high requirements for the continuity of the data flow in message transmission, the first time can be shorter. If the application scenario does not have high requirements for the continuity of the data flow in message transmission, the first time can be longer.
[0365] Understandably, after successfully receiving the target message from the source node, the destination node will return an acknowledgment to the source node, informing it that the destination node has successfully received the target message. If the source node does not receive an acknowledgment from the destination node immediately, it means that the destination node has not successfully received the target message. In other words, there is a faulty intermediate node in the baseline path for transmitting the target message, causing the target message to accumulate or even be lost among the intermediate nodes.
[0366] For example, refer to Figure 15 If the virtual port number of the first path added in the target packet is 2, the source node H0 forwards the target packet to the destination node H4 according to the base path 2. The base path 2 is H0-LA16-LA1-LC2-3-LA5-LA20-H4. If H0 does not receive an acknowledgment from H4 within 10 milliseconds (assuming a first time interval of 10 milliseconds), it is determined that the transmission of the target packet has failed. At this point, it can be determined that there is a faulty intermediate node in the base path 2.
[0367] The specific method for determining that "if no acknowledgment response is received from the destination node within the preset first time, the transmission of the target message has failed" will be described in detail below.
[0368] In the embodiments of steps 2710 to 2730 above, if the source node does not receive an acknowledgment response from the destination node within a preset first time period, it is determined that the transmission of the target message has failed. This first time period can be determined based on the actual application scenario. If the application scenario has high requirements for the continuity of the data flow during message transmission, the first time period can be shorter. If the application scenario does not have high requirements for the continuity of the data flow during message transmission, the first time period can be longer. Based on this, the message transmission method of this disclosure embodiment can be applied to different application scenarios, increasing the adaptability of this disclosure embodiment.
[0369] In one embodiment, reference is made to Figure 28 Before step 2710, the message transmission method also includes:
[0370] Step 2810: Obtain the current pointer corresponding to the destination node;
[0371] Step 2820: In the base path table, determine the base path that the current pointer points to;
[0372] Step 2830: In the target lookup table, find the virtual port number corresponding to the baseline path and use it as the first path virtual port number.
[0373] Steps 2810 to 2830 are described in detail below:
[0374] In step 2810, the current pointer corresponding to the destination node is obtained.
[0375] According to embodiments of this disclosure, a pointer describes the position of data in a reference path table. The current pointer refers to the position of the reference path applicable to the target message transmitted from the current source node to the destination node in the reference path table. The source node maintains both a target lookup table and a reference path table. For a single destination node, the reference path table stores all reference paths from the source node to that destination node. For example, referring to… Figure 29 The source node maintains multiple baseline paths between the source node and different destination nodes.
[0376] In step 2820, the reference path currently pointed to by the pointer is determined in the reference path table.
[0377] Understandably, to reduce the probability of base path congestion, for a single destination node, the current pointer in the base path table maintained by the source node changes as the source node determines the base path for the target packet. Specifically, whenever the source node determines the base path for the target packet to be transmitted and uses the corresponding virtual port number as the first virtual port number, the current pointer changes in a predetermined order. This predetermined order will be explained later. These steps ensure that packet traffic is evenly distributed across multiple base paths, preventing packet traffic from concentrating on a single base path.
[0378] For example, refer to Figure 29 If the source node wants to transmit a target message to destination node 1, it first obtains the current pointer corresponding to destination node 1. Figure 29 From the reference path table from the source node to destination node 1, we can see that the current pointer of destination node 1 points to reference path 2. Based on this, reference path 2 can be used as the transmission path to transmit the target packet. Similarly, if the source node wants to transmit the target packet to destination node 2, it first obtains the current pointer corresponding to destination node 2. Figure 29 From the reference path table from the source node to the destination node 2, we can see that the current pointer of the destination node 2 points to reference path 11. Based on this, reference path 11 can be used as the transmission path to transmit the target message.
[0379] In step 2830, the virtual port number corresponding to the baseline path is found in the target lookup table and used as the first virtual port number.
[0380] According to embodiments of this disclosure, after determining the reference path pointed to by the current pointer in the reference path table, the path virtual port number corresponding to the reference path can be looked up in the target lookup table maintained on the source node side. For example... Figure 4 As shown in the target lookup table, a base path typically corresponds to multiple path virtual port numbers. In this case, a path virtual port number can be randomly selected from the multiple path virtual port numbers corresponding to the base path as the first path virtual port number.
[0381] For example, refer to Figure 29 As described above, if the source node wants to transmit a target message to the destination node 1, the current pointer of the destination node 1 points to the base path 2. If the base path 2 in the target lookup table corresponds to path virtual port number 3, path virtual port number 4, and path virtual port number 5, any one of these path virtual port numbers can be used as the first path virtual port number.
[0382] The embodiments of steps 2810 to 2830 described above determine the base path based on the current pointer corresponding to the destination node, and the current pointer changes as the source node determines the base path for the target packet. These steps ensure that packet traffic is evenly distributed across multiple base paths, achieving load balancing and preventing packet traffic from concentrating on a single base path.
[0383] In one embodiment, reference is made to Figure 30 Step 2710 includes:
[0384] Step 3010: Place the routing source port number from the routing source port number field in the target packet into the reserved field of the target packet;
[0385] Step 3020: Add the first path virtual port number to the route source port number field.
[0386] Steps 3010 and 3020 are described in detail below:
[0387] In step 3010, the routing source port number in the routing source port number field of the target packet is placed into the reserved field of the target packet.
[0388] It is understandable that adding the first path virtual port number to the target packet also includes: putting the route destination port number in the route destination port number field of the target packet into the reserved field of the target packet.
[0389] It should be noted that existing target packets generally include a source port number, a destination port number, a transport protocol number, a source address corresponding to the source node, and a destination address corresponding to the destination node. When forwarding a target packet, the source node and intermediate nodes also perform hash calculations on the source port number, destination port number, transport protocol number, source address, and destination address included in the target packet to determine the next hop based on the calculation result. However, in the embodiments of this disclosure, when forwarding a target packet, a hash calculation is performed on the path virtual port number, destination port number, transport protocol number, source address, and destination address to determine the next hop based on the calculation result. Based on this, the data structure of the target packet needs to be modified to add a path virtual port number and a destination port number to the existing target packet data structure. The destination port number and the path virtual port number are similar and both belong to the path attributes defined in the embodiments of this disclosure. The path virtual port number can be understood as an identifier of the base path, and the destination port number can be understood as an identifier of the destination node. Generally, when the destination nodes of the target packets are the same, the destination port numbers are also the same.
[0390] Furthermore, such as Figure 31 As shown, the source port number field stores the source port number, the destination port number field stores the destination port number, and the reserved field stores custom data. To include the first-path virtual port number and destination port number in the routing process, the source port number and destination port number must first be excluded from the routing process. Therefore, the source port number from the source port number field and the destination port number from the destination port number field in the destination packet can be placed into the reserved field of the destination packet.
[0391] In step 3020, the first path virtual port number is added to the route source port number field.
[0392] It is understandable that adding the first path virtual port number to the target packet also includes: adding the pre-selected destination port number to the route destination port number field; and modifying the length of the checksum field and the address header field of the target packet.
[0393] According to embodiments of this disclosure, when routing a target packet, the source node and intermediate nodes generally determine the next hop based on data in predetermined fields of the target packet (i.e., fields storing the source port number, destination port number, transport protocol number, source address, and destination address in the prior art). Therefore, after placing the source port number from the source port number field and the destination port number from the destination port number field into the reserved fields of the target packet, the first path virtual port number can be added to the source port number field, and the destination port number can be added to the destination port number field.
[0394] Furthermore, after adding the first path virtual port number to the routing source port number field and the destination port number to the routing destination port number field, the lengths of the routing source port number field and destination port number field change. Therefore, the lengths of the checksum field and address header field of the target packet need to be modified accordingly. The checksum field stores a Cyclic Redundancy Check (CRC) code. Upon receiving the target packet, the destination node can verify the CRC code to determine if the target packet contains errors. The address header field contains control and routing information to ensure that the target packet can be correctly transmitted from the source node to the destination node.
[0395] The embodiments of steps 3010 and 3020 described above exclude the routing source port number and routing destination port number from the routing process by placing both the routing source port number from the routing source port number field and the routing destination port number from the routing destination port number field in the reserved fields of the target packet. Furthermore, by adding the first path virtual port number to the routing source port number field and the destination port number to the routing destination port number field, the source node and intermediate nodes can perform routing based on the path virtual port number, destination port number, transport protocol number, source address, and destination address. Through these steps, the routing process of the source node and the intermediate node can be changed without interfering with the transmission of the target packet.
[0396] In one embodiment, reference is made to Figure 32 After step 2710, the message transmission method further includes:
[0397] Step 3210: Increment the current pointer by 1, so that when transmitting other packets after the target packet from the source node to the destination node, the reference path pointed to by the next pointer of the current pointer is determined in the reference path table.
[0398] Step 3210 will be described in detail below:
[0399] As explained in step 2820 above, to reduce the probability of base path congestion, whenever the source node determines a base path for the target packet to be transmitted and sets the corresponding virtual port number of the base path as the first virtual port number, the current pointer will change in a predetermined order. This predetermined order means that the current pointer in the base path table is incremented by 1, that is, the pointer used to determine the base path in the base path table changes from the current pointer to the next pointer. When transmitting other packets after the target packet from the source node to the destination node, the base path pointed to by the next pointer of the current pointer in the base path table is determined as the transmission path for the other packets.
[0400] For example, refer to Figure 33 If the source node wants to transmit a target message to destination node 1, the current pointer of destination node 1 points to the base path 2. After adding the virtual port number of the base path 2 (i.e., the first path virtual port number) to the target message, the current pointer is incremented by 1. When transmitting other messages after the target message from the source node to destination node 1, the base path 3 is determined as the transmission path for other messages in the base path table.
[0401] In the embodiment of step 3210 above, after adding the first path virtual port number to the target packet, the current pointer is incremented by 1. This allows the source node to use the reference path pointed to by the next pointer as the transmission path for other packets after the target packet when transmitting them to the destination node. These steps ensure that packet traffic is evenly distributed across multiple reference paths, achieving load balancing and preventing packet traffic from concentrating on a single reference path.
[0402] In one embodiment, reference is made to Figure 34 Step 2730 includes:
[0403] Step 3410: Insert the first detection logic into the transmission control protocol processing code of the source node;
[0404] Step 3420: Activate the first detection logic to detect if no acknowledgment response is received from the destination node within a preset first time period, thereby determining that the transmission of the target message has failed.
[0405] Steps 3410 and 3420 are described in detail below:
[0406] In step 3410, the first detection logic is inserted into the transmission control protocol processing code of the source node.
[0407] According to embodiments of this disclosure, Transmission Control Protocol (TCP) processing code refers to code written on the source node side to enable the transmission of the target packet. Only by writing TCP processing code on the source node side can the source node route the target packet and transmit it to the destination node. Figure 35 As shown, the first detection logic is a new piece of code added to the original processing logic in the transmission control protocol processing code. By inserting the first detection logic into the transmission control protocol processing code, the source node can actively detect whether it can receive the acknowledgment response returned by the destination node within a preset first time.
[0408] Understandably, referring to Figure 35 Similar to the first detection logic, the path switching logic, path control logic, and event handling logic are all added code based on the existing processing logic in the transmission control protocol processing code. Specifically, the event handling logic handles events detected by the first detection logic where no acknowledgment response is received from the destination node within a preset first time period. The path control logic determines the base path for transmitting the target packet. The path switching logic modifies the data structure of the target packet based on the virtual port number corresponding to the base path determined by the path control logic.
[0409] In step 3420, the first detection logic is enabled to detect that no acknowledgment response is received from the destination node within a preset first time period, thereby determining that the transmission of the target message has failed.
[0410] It is understood that the operation of the source node detecting whether it has received an acknowledgment response from the destination node in the first time frame in this embodiment of the disclosure relies on the first detection logic inserted in the transmission control protocol processing code. Therefore, the first detection logic needs to be enabled every time the source node sends a target packet in order to detect in real time whether the destination node has successfully received the target packet.
[0411] The embodiments of steps 3410 and 3420 above, by inserting first detection logic into the transmission control protocol processing code of the source node, actively detect whether the destination node has successfully received the target packet, based on the original processing logic. These steps can quickly capture events indicating failed transmission of the target packet, facilitating subsequent responses by modifying the first path virtual port number in the target packet to the second path virtual port number, thus improving the continuity of the data flow during packet transmission.
[0412] Detailed description of step 340
[0413] In step 340, the second path virtual port number, which corresponds to a different base path than the first path virtual port number, is determined in the target lookup table.
[0414] In one embodiment, reference is made to Figure 36 Step 340 includes:
[0415] Step 3610: In the target lookup table, determine the first baseline path corresponding to the first path virtual port number;
[0416] Step 3620: In the baseline path table, determine the second baseline path located after the first baseline path;
[0417] Step 3630: In the target lookup table, determine the virtual port number of the second path corresponding to the second baseline path.
[0418] Steps 3610 to 3630 are described in detail below:
[0419] In step 3610, the first base path corresponding to the first path virtual port number is determined in the target lookup table.
[0420] According to embodiments of this disclosure, in response to a failure to transmit a target packet from the source node to the destination node, the source node needs to retransmit the target packet. However, if the base path used for retransmission of the target packet remains unchanged, it may lead to retransmission failure. Therefore, it is necessary to change the base path used for target packet transmission. When modifying the base path used for target packet transmission, it is first necessary to determine the base path corresponding to the first path virtual port number, i.e., the first base path. In embodiments of this disclosure, the first base path can also be understood as the base path used by the source node when it first transmitted the target packet.
[0421] The specific method for "determining the first baseline path corresponding to the first path virtual port number in the target lookup table" will be described in detail below.
[0422] In step 3620, the second reference path located after the first reference path is determined in the reference path table.
[0423] According to embodiments of this disclosure, the second reference path refers to the reference path listed in the reference path table after the first reference path, and the number of overlapping intermediate nodes between the second reference path and the first reference path satisfies a predetermined condition. The second reference path can also be understood as the reference path used by the source node when retransmitting the target message.
[0424] For example, refer to Figure 15If source node H0 determines that the transmission of the target message from source node H0 to destination node H4 has failed, and the first path virtual port number in the obtained target message is 6, then based on the target lookup table, the first reference path corresponding to the first path virtual port number can be determined to be reference path 2. From the reference path table, the second reference path following reference path 2 can be determined to be reference path 3.
[0425] In step 3630, the virtual port number of the second path corresponding to the second reference path is determined in the target lookup table.
[0426] According to embodiments of this disclosure, the second path virtual port number refers to the path virtual port number corresponding to the second reference path in the target lookup table. The source node can modify the first path virtual port number in the target packet to the second path virtual port number, so that the target packet reaches the destination node along the second reference path.
[0427] For example, refer to Figure 15 As described above, if source node H0 determines that the transmission of the target message from source node H0 to destination node H4 has failed, it determines that the second reference path following reference path 2 is reference path 3. The path virtual port number 7 can be determined as the second path virtual port number corresponding to the second reference path, or the path virtual port number 11 can be determined as the second path virtual port number corresponding to the second reference path.
[0428] The embodiments of steps 3610 to 3630 described above can modify the virtual port number of the first path in the target packet to the virtual port number of the second path by determining a second reference path located after the first reference path and determining the virtual port number of the second path based on the second reference path, so that the target packet reaches the destination node along the second reference path. Since there are few common intermediate nodes between the first reference path and the second reference path, it means that if a failure occurs when the first reference path transmits the target packet, it is very likely that a failure will not occur when using the second reference path, because there are few common intermediate nodes between the two. Using another reference path greatly bypasses the faulty switch, improving the continuity of data flow in packet transmission.
[0429] In one embodiment, reference is made to Figure 37 Step 3610 includes:
[0430] Step 3710: In the target lookup table, determine the virtual port numbers of multiple alternative paths corresponding to the second baseline path;
[0431] Step 3720: Obtain historical selection records of multiple alternative path virtual port numbers that have been selected as the second path virtual port number;
[0432] Step 3730: Based on the number of times multiple candidate path virtual port numbers were selected as the second path virtual port number in the historical selection record, determine the second path virtual port number from the multiple candidate path virtual port numbers.
[0433] Steps 3710 to 3730 are described in detail below:
[0434] In step 3710, multiple alternative path virtual port numbers corresponding to the second baseline path are determined in the target lookup table.
[0435] It is understood that the alternative path virtual port numbers are multiple path virtual port numbers corresponding to the second baseline path in the target lookup table. For example, refer to... Figure 38 If the second baseline path is determined to be baseline path 3, then the virtual port numbers of the multiple alternative paths corresponding to the second baseline path are 7, 11, and 15.
[0436] In step 3720, the historical selection records of multiple alternative path virtual port numbers being selected as the second path virtual port number are obtained.
[0437] Understandably, the historical selection records of alternative path virtual port numbers as the second path virtual port number contain the number of times each alternative path virtual port number was selected as the second path virtual port number within a past time period. These historical selection records can be used to demonstrate the reliability of each alternative path virtual port number. The higher the number of times an alternative path virtual port number was selected as the second path virtual port number in the historical selection records, the higher its reliability. Conversely, the lower the number of times an alternative path virtual port number was selected as the second path virtual port number in the historical selection records, the lower its reliability.
[0438] For example, refer to Figure 38 As mentioned above, the virtual port numbers for the multiple alternative paths corresponding to the second baseline path are 7, 11, and 15. It can be seen that in the historical selection records, virtual port number 7 was selected as the second path virtual port number 66 times, virtual port number 11 was selected as the second path virtual port number 77 times, and virtual port number 15 was selected as the second path virtual port number 55 times. Based on this, it can be determined that virtual port number 15 has lower reliability, while virtual port number 11 has higher reliability.
[0439] In step 3730, the second path virtual port number is determined from among the multiple candidate path virtual port numbers based on the number of times each candidate path virtual port number has been selected as the second path virtual port number in the historical selection record.
[0440] According to embodiments of this disclosure, the higher the number of times a candidate path virtual port number is selected as the second path virtual port number in the historical selection record, the higher the reliability of that candidate path virtual port number. Therefore, the candidate path virtual port number that is selected as the second path virtual port number more times in the historical selection record can be used as the second path virtual port number to increase the reliability of target packet retransmission.
[0441] For example, refer to Figure 38 As mentioned above, the reliability of path virtual port number 15 is low, while the reliability of path virtual port number 11 is high. Therefore, path virtual port number 11 can be used as the second path virtual port number, and the first path virtual port number in the target packet can be modified to path virtual port number 11, so that the target packet reaches the destination node along the base path 3.
[0442] In the embodiments described in steps 3710 to 3730 above, the historical selection record can be used to reflect the reliability of each candidate path virtual port number. The higher the number of times a candidate path virtual port number is selected as the second path virtual port number in the historical selection record, the higher the reliability of that candidate path virtual port number. Conversely, the lower the number of times a candidate path virtual port number is selected as the second path virtual port number in the historical selection record, the lower the reliability of that candidate path virtual port number. The embodiments of this disclosure determine the second path virtual port number from among multiple candidate path virtual port numbers based on the number of times they are selected as the second path virtual port number in the historical selection record. This allows for the selection of highly reliable candidate path virtual port numbers as the second path virtual port number, increasing the reliability of target packet retransmission.
[0443] A detailed description of the message transmission method executed by the destination node.
[0444] In one embodiment, reference is made to Figure 39 The message transmission method is executed by the destination node. The destination node sends an acknowledgment response to the source node through multiple intermediate node layers. The message transmission method includes:
[0445] Step 3910: Receive the target message sent by the source node;
[0446] Step 3920: Obtain multiple response baseline paths between the destination node and the source node. Each response baseline path passes through at least one intermediate node at each intermediate node layer. The number of intermediate nodes that overlap between any two response baseline paths among the multiple response baseline paths meets a predetermined condition.
[0447] Step 3930: Obtain the target response lookup table. The target response lookup table indicates the correspondence between the response baseline path and the path virtual port number. The path virtual port number is the virtual port number added in the acknowledgment response when the destination node sends the acknowledgment response. Each response baseline path corresponds to one or more path virtual port numbers.
[0448] Step 3940: In response to the determination that the transmission of the acknowledgment response from the destination node to the source node failed, obtain the third path virtual port number from the acknowledgment response;
[0449] Step 3950: In the target response lookup table, determine the fourth path virtual port number that corresponds to a different response baseline path as the third path virtual port number;
[0450] Step 3960: Modify the third path virtual port number in the confirmation response to the fourth path virtual port number, so that the confirmation response reaches the source node along the response baseline path corresponding to the fourth path virtual port number.
[0451] Steps 3910 to 3960 are described in detail below:
[0452] In step 3910, the target message sent by the source node is received.
[0453] According to embodiments of this disclosure, the source node determines a reference path for transmitting the target packet based on multiple reference paths between the source node and the destination node. The virtual port number corresponding to this reference path is then added to the target packet, so that the target packet reaches the destination node along the reference path corresponding to the virtual port number, and the destination node receives the target packet sent by the source node.
[0454] In step 3920, multiple response reference paths between the destination node and the source node are obtained. Each response reference path passes through at least one intermediate node at each intermediate node layer. The number of intermediate nodes that overlap between any two response reference paths among the multiple response reference paths meets a predetermined condition.
[0455] According to embodiments of this disclosure, multiple acknowledgment reference paths are further established between the destination node and the source node. Similar to a reference path, an acknowledgment reference path refers to a transmission path maintained by the source node for transmitting the target message to the destination node, while an acknowledgment reference path refers to a transmission path maintained by the destination node for sending an acknowledgment response corresponding to the target message to the source node. Specifically, after successfully receiving the target message sent by the source node, the destination node returns an acknowledgment response to the target message to the source node, so that the source node is aware that the destination node has received the target message.
[0456] It is understood that the specific implementation of the embodiment of this disclosure of "obtaining multiple response reference paths between the destination node and the source node, wherein the response reference path passes through at least one intermediate node at each intermediate node layer, and the number of intermediate nodes overlapping between any two response reference paths in the multiple response reference paths satisfies a predetermined condition" is similar to the specific implementation of step 310 above, and will not be described in detail here.
[0457] In step 3930, a target response lookup table is obtained. The target response lookup table indicates the correspondence between the response baseline path and the path virtual port number. The path virtual port number is a virtual port number added in the acknowledgment response when the destination node sends an acknowledgment response. Each response baseline path corresponds to one or more path virtual port numbers.
[0458] According to embodiments of this disclosure, the destination node maintains a target-response lookup table. Similar to the target lookup table maintained by the source node, the target lookup table indicates the correspondence between the base path and the path virtual port number, while the target-response lookup table indicates the correspondence between the response base path and the path virtual port number.
[0459] It is understood that the specific implementation of the embodiment of this disclosure of "obtaining a target response lookup table, the target response lookup table indicating the correspondence between the response reference path and the path virtual port number, the path virtual port number being the virtual port number added in the acknowledgment response when the destination node sends an acknowledgment response, and each response reference path corresponding to one or more path virtual port numbers" is similar to the specific implementation of step 320 above, and will not be described in detail here.
[0460] In step 3940, in response to determining that the transmission of the acknowledgment response from the destination node to the source node failed, the third path virtual port number in the acknowledgment response is obtained.
[0461] According to embodiments of this disclosure, the third path virtual port number refers to the path virtual port number added in the acknowledgment response that the destination node fails to transmit to the source node. If the destination node fails to transmit the acknowledgment response to the source node, it indicates that there is a faulty intermediate node in the acknowledgment base path that transmits the acknowledgment response. The faulty intermediate node cannot forward the acknowledgment response to the next-hop intermediate node, thereby causing the source node to be unable to receive the acknowledgment response and also unable to confirm whether the destination node has successfully received the target packet.
[0462] In step 3950, in the target response lookup table, the fourth path virtual port number that corresponds to a different response baseline path as the third path virtual port number is determined.
[0463] According to embodiments of this disclosure, the fourth path virtual port number refers to the path virtual port number corresponding to a response reference path that is different from the response reference path identified by the third path virtual port number.
[0464] It is understood that the specific implementation of "determining the fourth path virtual port number in the target response lookup table that corresponds to a different response baseline path as the third path virtual port number" in this embodiment of the present disclosure is similar to the specific implementation of step 340 above, and will not be described in detail here.
[0465] In step 3960, the third path virtual port number in the acknowledgment response is modified to the fourth path virtual port number so that the acknowledgment response reaches the source node along the response reference path corresponding to the fourth path virtual port number.
[0466] It is understood that the specific implementation of "modifying the third path virtual port number in the confirmation response to the fourth path virtual port number so that the confirmation response reaches the source node along the response reference path corresponding to the fourth path virtual port number" in this embodiment of the present disclosure is similar to the specific implementation of step 350 above, and will not be described in detail here.
[0467] The embodiments described in steps 3910 to 3960 establish a target response lookup table between path virtual port numbers and response reference paths. The number of overlapping intermediate nodes between any two response reference paths among multiple response reference paths satisfies a predetermined condition. Fewer identical intermediate nodes between response reference paths mean that if a failure occurs when transmitting an acknowledgment response using one response reference path, it is highly likely that a failure will not occur using another response reference path, as the number of identical intermediate nodes significantly reduces the probability of bypassing the faulty switch. In this embodiment, when a failure occurs while transmitting an acknowledgment response through one response reference path, the third path virtual port number, unique to this embodiment, is identified in the acknowledgment response. The target response lookup table is searched, and the virtual port number is replaced with a fourth path virtual port number corresponding to a different response reference path than the third path virtual port number. Since changing the path virtual port number effectively changes the response reference path, and the response reference path possesses the aforementioned characteristics, the faulty switch is bypassed with a high probability, improving the continuity of data flow during message transmission.
[0468] In one embodiment, reference is made to Figure 40 Step 3940 includes:
[0469] Step 4010: Add the third path virtual port number to the confirmation response;
[0470] Step 4020: Transmit an acknowledgment response from the destination node to the source node;
[0471] Step 4030: If the fourth identical target message is received from the source node, determine that the transmission acknowledgment response has failed.
[0472] Steps 4010 to 4030 are described in detail below:
[0473] In step 4010, the third path virtual port number is added to the confirmation response.
[0474] It is understood that the specific implementation of "adding a third path virtual port number in the confirmation response" in this embodiment of the present disclosure is similar to the specific implementation of step 2710 above, and will not be described in detail here.
[0475] In step 4020, an acknowledgment response is transmitted from the destination node to the source node.
[0476] It is understood that the specific implementation of "transmitting an acknowledgment response from the destination node to the source node" in this embodiment of the present disclosure is similar to the specific implementation of step 2720 above, and will not be described in detail here.
[0477] In step 4030, if a fourth identical target message is received from the source node, it is determined that the transmission acknowledgment response has failed.
[0478] According to embodiments of this disclosure, the fourth number refers to the number of identical target packets sent by the source node that the destination node is allowed to receive if the source node has successfully received the acknowledgment response. The fourth number can be determined based on the actual acknowledgment response transmission situation. If the data center network used for transmitting the acknowledgment response is complex, the fourth number can be set larger. If the data center network used for transmitting the acknowledgment response is simple, the fourth number can be set smaller. If the application scenario has high requirements for the continuity of the data flow in packet transmission, the fourth number can be set smaller. If the application scenario does not have high requirements for the continuity of the data flow in packet transmission, the fourth number can be set larger.
[0479] Understandably, if the destination node receives the fourth identical target message sent by the source node, it means that the destination node has not successfully received the acknowledgment response. In other words, there is a faulty intermediate node in the acknowledgment response transmission path, causing the acknowledgment responses to accumulate or even be lost among the intermediate nodes.
[0480] The specific method for "determining that the transmission acknowledgment response has failed if a fourth identical target message is received from the source node" will be described in detail below.
[0481] In the embodiments of steps 4010 to 4030 above, if the destination node receives a fourth number of identical target messages sent by the source node, the transmission acknowledgment response fails. This fourth number can be determined based on the actual application scenario. If the application scenario has high requirements for the continuity of the data flow in message transmission, the fourth number can be set smaller. If the application scenario does not have high requirements for the continuity of the data flow in message transmission, the fourth number can be set larger. Based on this, the message transmission method of this disclosure embodiment can be applied to different application scenarios, increasing the adaptability of this disclosure embodiment.
[0482] In one embodiment, reference is made to Figure 41 Step 4030 includes:
[0483] Step 4110: Insert the second detection logic into the transmission control protocol processing code of the destination node;
[0484] Step 4120: Enable the second detection logic to detect the receipt of a fourth number of identical target packets sent by the source node, thereby determining that the transmission acknowledgment response has failed.
[0485] Steps 4110 and 4120 are described in detail below:
[0486] In step 4110, a second detection logic is inserted into the transmission control protocol processing code of the destination node.
[0487] According to embodiments of this disclosure, the second detection logic is added to the original processing logic in the transmission control protocol processing code. By inserting the second detection logic into the transmission control protocol processing code, the destination node can actively count the identical target packets received from the source node, and determine whether the transmission acknowledgment response has failed based on the number of identical target packets received.
[0488] In step 4120, the second detection logic is enabled to detect the receipt of a fourth number of identical target messages sent by the source node, thereby determining that the transmission acknowledgment response has failed.
[0489] It is understood that the operation of the destination node detecting the number of identical target packets received from the source node in this embodiment relies on the second detection logic inserted in the transmission control protocol processing code. Therefore, the second detection logic needs to be enabled every time the destination node sends an acknowledgment response to detect the number of identical target packets received from the source node in real time in order to determine whether the transmission acknowledgment response has failed.
[0490] The embodiments of steps 4110 and 4120 above, by inserting second detection logic into the transmission control protocol processing code of the destination node, actively count the received identical target packets sent by the source node, based on the original processing logic. These steps allow for rapid detection of transmission acknowledgment failure events, facilitating subsequent responses to transmission acknowledgment failures by modifying the third-path virtual port number in the acknowledgment to the fourth-path virtual port number, thus improving the continuity of the data flow during packet transmission.
[0491] In one embodiment, reference is made to Figure 42 After step 3910, the message transmission method includes:
[0492] Step 4210: Delete the path virtual port number in the route source port number field of the target packet and the destination port number in the route destination port number field of the target packet;
[0493] Step 4220: Put the route source port number from the reserved field in the target message into the route source port number field, and put the route destination port number from the reserved field into the route destination port number field.
[0494] Step 4230: Modify the length of the checksum field and the address header field of the target message.
[0495] Steps 4210 to 4230 are described in detail below:
[0496] In step 4210, the path virtual port number in the routing source port number field of the target packet and the destination port number in the routing destination port number field of the target packet are deleted.
[0497] It should be noted that after receiving the target packet sent by the source node, the destination node needs to restore the data structure of the target packet, which was modified by the source node, to its original data structure (the target packet includes the routing source port number, routing destination port number, transport protocol number, source address, and destination address). This ensures that the processing of the target packet in this embodiment is transparent to the transport control protocol layer. Furthermore, the reason for making the processing of the target packet transparent to the transport protocol layer is that the destination node needs to verify the data structure of the target packet upon receipt to determine if the data is erroneous. If the destination node does not restore the original data structure of the target packet, the data in the target packet will be deemed erroneous.
[0498] It is understandable that, since the first path virtual port number and the destination port number are path attributes defined in this embodiment of the disclosure and do not belong to the original data structure of the target packet, it is necessary to first delete the path virtual port number in the routing source port number field of the target packet and the destination port number in the routing destination port number field of the target packet.
[0499] In step 4220, the route source port number in the reserved field of the target message is placed into the route source port number field, and the route destination port number in the reserved field is placed into the route destination port number field.
[0500] Understandably, after deleting the path virtual port number from the source port number field and the destination port number from the destination port number field in the destination packet, the source port number and destination port number fields in the destination packet become empty. At this point, the source port number from the reserved field can be placed into the source port number field, and the destination port number from the reserved field can be placed into the destination port number field, as follows: Figure 43 As shown.
[0501] In step 4230, the length of the checksum field and the length of the address header field of the target message are modified.
[0502] Understandably, after placing the source port number from the reserved field in the destination packet into the source port number field and the destination port number from the reserved field into the destination port number field, since the lengths of the source and destination port number fields have been restored, it is necessary to correspondingly modify the lengths of the checksum field and the address header field in the destination packet to completely restore the data structure of the destination packet to its original state. In this case, after the destination node verifies the restored data structure of the destination packet, the data in the destination packet will be determined to be error-free.
[0503] The embodiments of steps 4210 to 4230 above, by deleting the path virtual port number in the routing source port number field and the destination port number in the routing destination port number field of the target packet, eliminate the path attribute defined in this embodiment of the disclosure, and initially restore the data structure of the target packet. Furthermore, by placing the routing source port number from the reserved field in the target packet into an empty routing source port number field, placing the routing destination port number into an empty routing destination port number field, and modifying the length of the checksum field and the address header field of the target packet, the data structure of the target packet is completely restored to its original structure. Through the above steps, the processing of the target packet can be made transparent to the transmission control protocol layer while changing the routing process of the source node and the intermediate node, avoiding interference with the transmission of the target packet.
[0504] Detailed implementation diagrams of the message transmission method according to the embodiments of this disclosure.
[0505] The following reference Figure 44 The following detailed and exemplary description of the message transmission method of this disclosure is provided, illustrating the implementation details of the central controller and the internal processing logic of the source node during execution by the source node.
[0506] In step 4411, the path control logic is used to obtain a set of candidate paths between the source node and the destination node. The set of candidate paths contains a first number of candidate paths, and multiple baseline paths contain a second number of baseline paths. The first number is greater than the second number.
[0507] In one embodiment, obtaining a set of candidate paths between a source node and a destination node includes: determining a first number of routes from the source node to intermediate nodes in the first intermediate node layer based on the total number of first outgoing ports of the source node; determining a second number of routes from a single intermediate node to intermediate nodes in the next intermediate node layer based on the total number of second outgoing ports of a single intermediate node in the intermediate node layer; generating a routing topology graph between the source node and the destination node based on the first number of routes and the second number of routes corresponding to each intermediate node layer; and obtaining multiple candidate paths between the source node and the destination node on the routing topology graph to generate a set of candidate paths.
[0508] In step 4412, the path control logic is used to take turns using each candidate path in the candidate path set as the anchor path; and to calculate the number of intermediate nodes that overlap with the anchor path in other candidate paths in the candidate path set.
[0509] In step 4413, if the number of overlapping intermediate nodes is greater than the third number, the path control logic is used to remove other candidate paths from the candidate path set.
[0510] In one embodiment, the third number is determined by: determining the total number of first output ports of the source node; determining the total number of second output ports of a single intermediate node in each intermediate node layer; determining the maximum and minimum values of the total number of first output ports and the total number of second output ports corresponding to each intermediate node layer; and calculating the difference between the maximum and the minimum values as the third number.
[0511] In step 4414, the path control logic is used to use the remaining candidate paths in the candidate path set as multiple baseline paths after each candidate path has been used as an anchor path.
[0512] In step 4421, the main controller is used to obtain the set of path virtual port numbers.
[0513] In one embodiment, the central controller is also configured to configure the same hash algorithm and hash seed for multiple servers, wherein the source node and the destination node are any one of the multiple servers; and for each intermediate node layer, the same hash algorithm and hash seed are configured for each intermediate node in the intermediate node layer.
[0514] In step 4422, the main controller is used to allocate the set of path virtual port numbers to multiple first output ports of the source node, and to allocate the set of path virtual port numbers to multiple second output ports of the intermediate node layer for each intermediate node layer.
[0515] In one embodiment, the set of path virtual port numbers is allocated to multiple first outgoing ports of the source node, and for each intermediate node layer, the set of path virtual port numbers is allocated to multiple second outgoing ports of the intermediate node layer. This includes: constructing a probe message for each path virtual port number in the set of path virtual port numbers, the probe message having a transport protocol number, a path virtual port number, a source address corresponding to the source node, a destination address corresponding to the destination node, and a destination port number corresponding to the destination node; sending the probe message from the source node; identifying the first outgoing port from which the source node outputs the probe message and the second outgoing ports from which each intermediate node layer outputs the probe message, and allocating the routing virtual port number to the first outgoing port and the second outgoing port.
[0516] In one embodiment, for each intermediate node layer, the set of path virtual port numbers is allocated to multiple second outgoing ports of the intermediate node layer, including: identifying key node layers from each intermediate node layer; and for each key node layer, the set of path virtual port numbers is allocated to multiple second outgoing ports of the key node layer.
[0517] In step 4423, the path control logic is used to determine the path virtual port number corresponding to the base path based on the path virtual port numbers assigned to the source node and each intermediate node on the base path.
[0518] In one embodiment, determining the path virtual port number corresponding to the reference path based on the path virtual port numbers assigned to the source node and each intermediate node on the reference path includes: generating a set of single-node path virtual port numbers based on the path virtual port numbers assigned to the source node or intermediate node on the reference path; taking the intersection of the set of single-node path virtual port numbers corresponding to the source node and each intermediate node, and using each path virtual port number in the intersection as the path virtual port number corresponding to the reference path.
[0519] In one embodiment, determining the path virtual port number corresponding to the baseline path based on the path virtual port numbers assigned to the source node and each intermediate node on the baseline path includes: determining the path virtual port number corresponding to the baseline path based on the path virtual port numbers assigned to the source node and the intermediate nodes in the critical node layer on the baseline path.
[0520] In step 4424, the path control logic is used to store the baseline path and the corresponding virtual port number of the path to generate a target lookup table.
[0521] In step 4431, the path control logic is used to obtain multiple reference paths between the source node and the destination node. Each reference path passes through at least one intermediate node at each intermediate node layer. The number of intermediate nodes that overlap between any two reference paths meets a predetermined condition. A target lookup table is obtained, which indicates the correspondence between reference paths and path virtual port numbers. The path virtual port number is a virtual port number added to the target message when the source node sends the target message. Each reference path corresponds to one or more path virtual port numbers.
[0522] In step 4432, the path switching logic is used to add the first path virtual port number to the target packet.
[0523] In one embodiment, before adding the first path virtual port number to the target message, the path control logic is used to: obtain the current pointer corresponding to the destination node; determine the base path pointed to by the current pointer in the base path table; and find the path virtual port number corresponding to the base path in the target lookup table, and use it as the first path virtual port number.
[0524] In one embodiment, after adding the first path virtual port number to the target packet, the path control logic is used to: increment the current pointer by 1, so that when transmitting other packets after the target packet from the source node to the destination node, the reference path pointed to by the next pointer of the current pointer is determined in the reference path table.
[0525] In one embodiment, the path switching logic is used to put the routing source port number in the routing source port number field of the target packet into the reserved field of the target packet; and to add the first path virtual port number to the routing source port number field.
[0526] In one embodiment, the path switching logic is further configured to: place the route destination port number in the route destination port number field of the target packet into the reserved field of the target packet; add the pre-selected destination port number to the route destination port number field; and modify the length of the checksum field and the length of the address header field of the target packet.
[0527] In step 4433, the path switching logic is used to transmit the target message from the source node to the destination node.
[0528] In step 4434, if no acknowledgment response is received from the destination node within a preset first time period, the first detection logic is used to determine that the transmission of the target message has failed.
[0529] In step 4435, the event handling logic is used to determine that the transmission of the target message has failed and to request the path control logic to switch routes.
[0530] In step 4441, the path control logic is used to determine the first base path corresponding to the first path virtual port number in the target lookup table.
[0531] In step 4442, the path control logic is used to determine the second reference path located after the first reference path in the reference path table.
[0532] In step 4443, the path control logic is used to determine the second path virtual port number corresponding to the second baseline path in the target lookup table.
[0533] In one embodiment, determining the second path virtual port number corresponding to the second baseline path in the target lookup table includes: determining multiple candidate path virtual port numbers corresponding to the second baseline path in the target lookup table; obtaining historical selection records of multiple candidate path virtual port numbers being selected as the second path virtual port number; and determining the second path virtual port number from the multiple candidate path virtual port numbers based on the number of times the multiple candidate path virtual port numbers were selected as the second path virtual port number in the historical selection records.
[0534] In step 4444, the path switching logic is used to modify the first path virtual port number in the target packet to the second path virtual port number, so that the target packet reaches the destination node along the base path corresponding to the second path virtual port number.
[0535] Description of apparatus and devices according to embodiments of this disclosure
[0536] It is understood that although the steps in the above flowcharts are shown sequentially according to the arrows, these steps are not necessarily executed in the order indicated by the arrows. Unless explicitly stated in this embodiment, there is no strict order restriction on the execution of these steps, and they can be executed in other orders. Moreover, at least some steps in the above flowcharts may include multiple steps or multiple stages. These steps or stages are not necessarily completed at the same time, but can be executed at different times. The execution order of these steps or stages is not necessarily sequential, but can be performed alternately or in turn with other steps or at least some of the steps or stages in other steps.
[0537] 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.
[0538] Figure 45 This is a schematic diagram of the structure of a message transmission device 4500 provided in an embodiment of this disclosure. The message transmission device 4500 is disposed in a source node, which sends a target message to a destination node through multiple intermediate node layers. The message transmission device 4500 includes:
[0539] The first acquisition unit 4510 is used to acquire multiple reference paths between the source node and the destination node. The reference path passes through at least one intermediate node at each intermediate node layer, and the number of overlapping intermediate nodes between any two reference paths in the multiple reference paths meets a predetermined condition.
[0540] The second acquisition unit 4520 is used to acquire a target lookup table. The target lookup table indicates the correspondence between the base path and the path virtual port number. The path virtual port number is the virtual port number added to the target message when the source node sends the target message. Each base path corresponds to one or more path virtual port numbers.
[0541] The first response unit 4530 is used to obtain the first path virtual port number in the target message in response to the determination that the transmission of the target message from the source node to the destination node has failed.
[0542] The first determining unit 4540 is used to determine, in the target lookup table, a second path virtual port number that corresponds to a different reference path than the first path virtual port number;
[0543] The first modification unit 4550 is used to modify the first path virtual port number in the target message to the second path virtual port number, so that the target message reaches the destination node along the base path corresponding to the second path virtual port number.
[0544] Optionally, the second acquisition unit 4520 is specifically used for:
[0545] Get the set of virtual port numbers for the path;
[0546] Assign the set of path virtual port numbers to multiple first outgoing ports of the source node, and for each intermediate node layer, assign the set of path virtual port numbers to multiple second outgoing ports of the intermediate node layer.
[0547] Based on the path virtual port numbers assigned to the source node and each intermediate node on the baseline path, determine the path virtual port number corresponding to the baseline path.
[0548] The baseline path and the corresponding virtual port number of the path are stored to generate a target lookup table.
[0549] Optionally, the second acquisition unit 4520 is specifically used for:
[0550] For each path virtual port number in the path virtual port number set, construct a probe message. The probe message has a transport protocol number, path virtual port number, source address corresponding to the source node, destination address corresponding to the destination node, and destination port number corresponding to the destination node.
[0551] Send a probe message from the source node;
[0552] Identify the first output port of the probe message output by the source node and the second output port of the probe message output by each intermediate node layer, and assign the path virtual port number to the first output port and the second output port.
[0553] Optionally, the second acquisition unit 4520 is specifically used for:
[0554] Based on the path virtual port numbers assigned to the source node or intermediate node on the baseline path, generate a set of single-node path virtual port numbers.
[0555] Take the intersection of the set of single-node path virtual port numbers corresponding to the source node and each intermediate node, and use each path virtual port number in the intersection as the path virtual port number corresponding to the base path.
[0556] Optionally, the second acquisition unit 4520 is specifically used for:
[0557] Identify the key node layers from each intermediate node layer;
[0558] For each critical node layer, the set of path virtual port numbers is allocated to multiple second outgoing ports of the critical node layer;
[0559] Based on the path virtual port numbers assigned to the source node and intermediate nodes in the critical node layer on the baseline path, the path virtual port number corresponding to the baseline path is determined.
[0560] Optionally, the first acquisition unit 4510 is specifically used for:
[0561] Obtain a set of candidate paths between the source node and the destination node. The set of candidate paths contains a first number of candidate paths, and multiple baseline paths contain a second number of baseline paths. The first number is greater than the second number.
[0562] Each candidate path in the candidate path set is used as the anchor path in turn.
[0563] Calculate the number of intermediate nodes in the candidate path set that overlap with the anchor path, other than the anchor path.
[0564] If the number of overlapping intermediate nodes is greater than the third number, remove other candidate paths from the candidate path set;
[0565] After all candidate paths have been used as anchor paths, the remaining candidate paths in the candidate path set are used as multiple baseline paths.
[0566] Optionally, the first acquisition unit 4510 is specifically used for:
[0567] Based on the total number of the first outgoing ports of the source node, determine the first route number from the source node to the intermediate node of the first intermediate node layer;
[0568] Based on the total number of second outgoing ports of a single intermediate node in the intermediate node layer, determine the second route number from a single intermediate node to the intermediate node in the next intermediate node layer;
[0569] Based on the first number of routes and the second number of routes corresponding to each intermediate node layer, a routing topology map between the source node and the destination node is generated.
[0570] On the routing topology graph, obtain multiple candidate paths between the source node and the destination node to generate a candidate path set.
[0571] Optionally, the first acquisition unit 4510 is specifically used for:
[0572] Determine the total number of the first output ports of the source node;
[0573] Determine the total number of second output ports for a single intermediate node in each intermediate node layer;
[0574] Determine the maximum and minimum values of the total number of first output ports and the total number of second output ports corresponding to each intermediate node layer;
[0575] Calculate the difference between the maximum and minimum values, and use it as the third number.
[0576] Optionally, the second acquisition unit 4520 is specifically used for:
[0577] Configure the same hash algorithm and hash seed for multiple servers, where the source node and destination node can be any one of the multiple servers;
[0578] For each intermediate node layer, configure the same hash algorithm and hash seed for each intermediate node in the intermediate node layer.
[0579] Optionally, the first response unit 4530 is specifically used for:
[0580] Add the first path virtual port number to the target message;
[0581] Transmit the target message from the source node to the destination node;
[0582] If no acknowledgment response is received from the destination node within the preset first time, the transmission of the target message is deemed to have failed.
[0583] Optionally, the first response unit 4530 is specifically used for:
[0584] Get the current pointer corresponding to the destination node;
[0585] In the base path table, determine the base path that the current pointer points to;
[0586] In the target lookup table, find the virtual port number corresponding to the baseline path and use it as the first path virtual port number.
[0587] Optionally, the first response unit 4530 is specifically used for:
[0588] Increment the current pointer by 1, so that when transmitting other packets after the target packet from the source node to the destination node, the reference path pointed to by the next pointer in the reference path table is determined.
[0589] Optionally, the first response unit 4530 is specifically used for:
[0590] Insert the first detection logic into the transmission control protocol processing code of the source node;
[0591] The first detection logic is enabled to detect if no acknowledgment response is received from the destination node within a preset first time period, thereby determining that the transmission of the target message has failed.
[0592] Optionally, the first response unit 4530 is specifically used for:
[0593] Place the source port number from the source port number field in the target packet into the reserved field of the target packet;
[0594] Add the first path virtual port number to the route source port number field.
[0595] Optionally, the first response unit 4530 is specifically used for:
[0596] Place the destination port number from the destination port number field in the destination packet into the reserved field of the destination packet;
[0597] Add the pre-selected destination port number to the route destination port number field;
[0598] Modify the length of the checksum field and the address header field of the target message.
[0599] Optionally, the first determining unit 4540 is specifically used for:
[0600] In the target lookup table, determine the first baseline path corresponding to the first path virtual port number;
[0601] In the baseline path table, determine the second baseline path that follows the first baseline path;
[0602] In the target lookup table, determine the virtual port number of the second path corresponding to the second baseline path.
[0603] Optionally, the first determining unit 4540 is specifically used for:
[0604] In the target lookup table, determine the virtual port numbers of multiple alternative paths corresponding to the second baseline path;
[0605] Retrieve historical selection records of multiple alternative path virtual port numbers that were selected as the second path virtual port number;
[0606] Based on the number of times multiple alternative path virtual port numbers were selected as the second path virtual port number in the historical selection record, the second path virtual port number is determined from multiple alternative path virtual port numbers.
[0607] Figure 46This is a schematic diagram of the structure of a message transmission device 4600 provided in an embodiment of this disclosure. The message transmission device 4600 is disposed in a destination node, and the destination node sends acknowledgment responses to the source node through multiple intermediate node layers. The message transmission device 4600 includes:
[0608] The first receiving unit 4610 is used to receive the target message sent by the source node;
[0609] The third acquisition unit 4620 is used to acquire multiple response reference paths between the destination node and the source node. Each response reference path passes through at least one intermediate node at each intermediate node layer. The number of intermediate nodes that overlap between any two response reference paths among the multiple response reference paths meets a predetermined condition.
[0610] The fourth acquisition unit 4630 is used to acquire the target response lookup table. The target response lookup table indicates the correspondence between the response baseline path and the path virtual port number. The path virtual port number is the virtual port number added in the acknowledgment response when the destination node sends the acknowledgment response. Each response baseline path corresponds to one or more path virtual port numbers.
[0611] The second response unit 4640 is used to obtain the third path virtual port number in the acknowledgment response in response to the determination that the transmission of the acknowledgment response from the destination node to the source node has failed.
[0612] The second determining unit 4650 is used to determine, in the target response lookup table, the fourth path virtual port number that corresponds to a different response baseline path as the third path virtual port number.
[0613] The second modification unit 4660 is used to modify the third path virtual port number in the acknowledgment response to the fourth path virtual port number, so that the acknowledgment response reaches the source node along the response reference path corresponding to the fourth path virtual port number.
[0614] Optionally, the second response unit 4640 is specifically used for:
[0615] Add the third-path virtual port number to the confirmation response;
[0616] Transmit an acknowledgment response from the destination node to the source node;
[0617] If a fourth identical target message is received from the source node, it is determined that the transmission acknowledgment response has failed.
[0618] Optionally, the second response unit 4640 is specifically used for:
[0619] Insert a second detection logic into the transmission control protocol processing code at the destination node;
[0620] A second detection logic is enabled to detect the receipt of a fourth number of identical target packets sent by the source node, thereby determining that the transmission acknowledgment response has failed.
[0621] Optionally, the message transmission device 4600 further includes a message recovery unit, which is specifically used for:
[0622] Delete the path virtual port number in the route source port number field of the target packet and the destination port number in the route destination port number field of the target packet;
[0623] Place the route source port number from the reserved field in the target message into the route source port number field, and place the route destination port number from the reserved field into the route destination port number field.
[0624] Modify the length of the checksum field and the address header field of the target message.
[0625] Reference Figure 47 , Figure 47 To implement the structural block diagram of the terminal portion of the message transmission method according to the embodiments of this disclosure, the terminal includes: a radio frequency (RF) circuit 4710, a memory 4715, an input unit 4730, a display unit 4740, a sensor 4750, an audio circuit 4760, a wireless fidelity (WiFi) module 4770, a processor 4780, and a power supply 4790, etc. Those skilled in the art will understand that... Figure 47 The terminal structure shown does not constitute a limitation on mobile phones or computers and may include more or fewer components than shown, or combine certain components, or have different component arrangements.
[0626] The RF circuit 4710 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 4780; in addition, it transmits uplink data to the base station.
[0627] The memory 4715 can be used to store software programs and modules, and the processor 4780 executes various functional applications and data processing of the content terminal by running the software programs and modules stored in the memory 4715.
[0628] The input unit 4730 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 4730 may include a touch panel 4731 and other input devices 4732.
[0629] Display unit 4740 can be used to display input or provided information, as well as various menus of the content terminal. Display unit 4740 may include display panel 4741.
[0630] Audio circuitry 4760, speaker 4761, and microphone 4762 provide an audio interface.
[0631] In this embodiment, the processor 4780 included in the terminal can execute the message transmission method of the previous embodiment.
[0632] 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 transmission.
[0633] Figure 48 This is a partial structural block diagram of a server for implementing the message transmission method of this disclosure embodiment. The server can vary significantly due to different configurations or performance characteristics, and may include one or more central processing units (CPUs) 4822 (e.g., one or more processors) and memory 4832, and one or more storage media 4830 (e.g., one or more mass storage devices) for storing application programs 4842 or data 4844. The memory 4832 and storage media 4830 may be temporary or persistent storage. The program stored in the storage media 4830 may include one or more modules (not shown in the diagram), each module including a series of instruction operations on the server. Furthermore, the CPU 4822 may be configured to communicate with the storage media 4830 and execute the series of instruction operations in the storage media 4830 on the server.
[0634] The server may also include one or more power supplies 4826, one or more wired or wireless network interfaces 4850, one or more input / output interfaces 4858, and / or one or more operating systems 4841, such as Windows Server™, Mac OS X™, Unix™, Linux™, FreeBSD™, etc.
[0635] The central processing unit 4822 in the server can be used to execute the message transmission method of the embodiments of this disclosure.
[0636] This disclosure also provides a computer-readable storage medium for storing program code for executing the message transmission methods of the foregoing embodiments.
[0637] 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.
[0638] The terms “first,” “second,” “third,” “fourth,” etc. (if present) in this disclosure and the foregoing drawings are used to distinguish similar terms and are not necessarily used to describe a particular order or sequence. It should be understood that such use of data can be interchanged where appropriate so that embodiments of this disclosure described herein can be implemented, for example, in orders other than those illustrated or described herein. Furthermore, the terms “comprising” and “including,” and any variations thereof, are intended to cover non-exclusive inclusion; for example, a process, method, system, product, or apparatus that includes a series of steps or units is not necessarily limited to those steps or units explicitly listed, but may include other steps or units not explicitly listed or inherent to such processes, methods, products, or apparatuses.
[0639] It should be understood that in this disclosure, "at least one item" refers to one or more items, and "more than one item" refers to two or more items. "And / or" is used to describe the relationship between related content, indicating that three relationships can exist. For example, "A and / or B" can represent three cases: only A exists, only B exists, and both A and B exist simultaneously, where A and B can be singular or plural. The character " / " generally indicates that the preceding and following related content are in an "or" relationship. "At least one of the following" or similar expressions refer to any combination of these items, including any combination of single or plural items. For example, at least one of a, b, or c can represent: a, b, c, "a and b", "a and c", "b and c", or "a and b and c", where a, b, and c can be single or multiple.
[0640] It should be understood that in the description of the embodiments disclosed herein, "multiple" means two or more, "greater than", "less than", "exceeding" etc. are understood to exclude the number itself, and "above", "below", "within" etc. are understood to include the number itself.
[0641] In the embodiments provided in this disclosure, it should be understood that the disclosed systems, apparatuses, and methods can be implemented in other ways. For example, the apparatus embodiments described above are merely illustrative; for instance, the division of units is only a logical functional division, and in actual implementation, there may be other division methods. For example, multiple units or components may be combined or integrated into another system, or some features may be ignored or not executed. The couplings or direct couplings or communication connections shown or discussed may be indirect couplings or communication connections between apparatuses or units through some interfaces, and may be electrical, mechanical, or other forms.
[0642] The units described as separate components may or may not be physically separate. The components shown as units may or may not be physical units; that is, they may be located in one place or distributed across multiple network units. Some or all of the units can be selected to achieve the purpose of this embodiment according to actual needs.
[0643] Furthermore, the functional units in the various embodiments of this disclosure can be integrated into one processing unit, or each unit can exist physically separately, or two or more units can be integrated into one unit. The integrated unit can be implemented in hardware or as a software functional unit.
[0644] If the integrated unit is implemented as a software functional unit and sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of this disclosure, in essence, or the part that contributes to the prior art, or all or part of the technical solution, can be embodied in the form of a software product. This computer software product is stored in a storage medium and includes several instructions to cause a computer device (which may be a personal computer, server 130, or network device, etc.) to execute all or part of the steps of the methods of the various embodiments of this disclosure. The aforementioned storage medium includes various media capable of storing program code, such as a USB flash drive, a portable hard drive, read-only memory (ROM), random access memory (RAM), magnetic disk, or optical disk.
[0645] It should also be understood that the various implementation methods provided in this disclosure can be combined arbitrarily to achieve different technical effects.
[0646] 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, characterized in that, The message transmission method, executed by the source node, involves sending the target message to the destination node through multiple intermediate node layers. Multiple reference paths are obtained between the source node and the destination node. Each reference path passes through at least one intermediate node at each intermediate node layer. The number of intermediate nodes that overlap between any two reference paths among the multiple reference paths satisfies a predetermined condition. Obtain a target lookup table, which indicates the correspondence between the base path and the path virtual port number. The path virtual port number is a virtual port number added to the target message when the source node sends the target message. Each base path corresponds to one or more path virtual port numbers. In response to determining that the transmission of the target packet from the source node to the destination node has failed, the first path virtual port number in the target packet is obtained; In the target lookup table, determine the second path virtual port number that corresponds to a different base path than the first path virtual port number; The first path virtual port number in the target message is modified to the second path virtual port number so that the target message reaches the destination node along the base path corresponding to the second path virtual port number.
2. The message transmission method according to claim 1, characterized in that, The acquisition of the target lookup table includes: Get the set of virtual port numbers for the path; The set of virtual port numbers for the path is assigned to multiple first outgoing ports of the source node, and for each intermediate node layer, the set of virtual port numbers for the path is assigned to multiple second outgoing ports of the intermediate node layer. Based on the path virtual port numbers assigned to the source node and each intermediate node on the baseline path, the path virtual port number corresponding to the baseline path is determined. The baseline path and the corresponding virtual port number of the path are stored to generate the target lookup table.
3. The message transmission method according to claim 2, characterized in that, The step of allocating the set of path virtual port numbers to multiple first outgoing ports of the source node, and allocating the set of path virtual port numbers to multiple second outgoing ports of each intermediate node layer, includes: For each path virtual port number in the set of path virtual port numbers, a probe message is constructed. The probe message has a transport protocol number, the path virtual port number, a source address corresponding to the source node, a destination address corresponding to the destination node, and a destination port number corresponding to the destination node. The probe message is sent from the source node; Identify the first output port of the probe packet output by the source node and the second output port of the probe packet output by each intermediate node layer, and assign the path virtual port number to the first output port and the second output port.
4. The message transmission method according to claim 2, characterized in that, The step of determining the path virtual port number corresponding to the base path based on the path virtual port numbers assigned to the source node and each intermediate node on the base path includes: Based on the path virtual port number assigned to the source node or the intermediate node on the baseline path, a set of single-node path virtual port numbers is generated. Take the intersection of the set of single-node path virtual port numbers corresponding to the source node and each intermediate node, and use each path virtual port number in the intersection as the path virtual port number corresponding to the base path.
5. The message transmission method according to claim 2, characterized in that, The step of allocating the set of virtual port numbers for each intermediate node layer to multiple second outgoing ports of the intermediate node layer includes: Identify the key node layers from each intermediate node layer; For each critical node layer, the set of virtual port numbers for the path is allocated to the plurality of second outgoing ports of the critical node layer; The step of determining the path virtual port number corresponding to the base path based on the path virtual port numbers assigned to the source node and each intermediate node on the base path includes: Based on the path virtual port numbers assigned to the source node and intermediate nodes in the critical node layer on the baseline path, the path virtual port number corresponding to the baseline path is determined.
6. The message transmission method according to claim 1, characterized in that, The process of obtaining multiple baseline paths between the source node and the destination node includes: Obtain a set of candidate paths between the source node and the destination node. The set of candidate paths contains a first number of candidate paths, and the multiple reference paths contain a second number of reference paths. The first number is greater than the second number. Each candidate path in the candidate path set is used as an anchor path in turn; Calculate the number of intermediate nodes in the candidate path set that overlap with the anchor path, other than the anchor path. If the number of overlapping intermediate nodes is greater than the third number, the other candidate paths are removed from the candidate path set; After each candidate path has been used as the anchor path, the remaining candidate paths in the candidate path set are used as the multiple reference paths.
7. The message transmission method according to claim 6, characterized in that, The step of obtaining the candidate path set between the source node and the destination node includes: Based on the total number of the first outgoing ports of the source node, determine the first number of routes from the source node to the intermediate node of the first intermediate node layer; Based on the total number of second outgoing ports of a single intermediate node in the intermediate node layer, determine the second number of routes from the single intermediate node to the intermediate node in the next intermediate node layer; Based on the first number of routes and the second number of routes corresponding to each intermediate node layer, a routing topology map is generated between the source node and the destination node. On the routing topology graph, multiple candidate paths between the source node and the destination node are obtained to generate the candidate path set.
8. The message transmission method according to claim 6, characterized in that, The third number is determined in the following manner: Determine the total number of the first output ports of the source node; Determine the total number of second output ports for a single intermediate node in each intermediate node layer; Determine the maximum and minimum values of the total number of the first output ports and the total number of the second output ports corresponding to each intermediate node layer; The difference between the maximum value and the minimum value is calculated as the third number.
9. The message transmission method according to claim 1, characterized in that, The determination that the transmission of the target message from the source node to the destination node failed includes: Add the first path virtual port number to the target message; Transmit the target message from the source node to the destination node; If no acknowledgment response is received from the destination node within a preset first time period, the transmission of the target message is deemed to have failed.
10. The message transmission method according to claim 9, characterized in that, Before adding the first path virtual port number to the target message, the message transmission method further includes: Get the current pointer corresponding to the destination node; In the baseline path table, determine the baseline path that the current pointer points to; In the target lookup table, find the virtual port number of the path corresponding to the baseline path and use it as the first path virtual port number.
11. The message transmission method according to claim 10, characterized in that, After adding the first path virtual port number to the target message, the message transmission method further includes: The current pointer is incremented by 1, thereby determining the reference path pointed to by the next pointer of the current pointer in the reference path table when transmitting other packets after the target packet from the source node to the destination node.
12. The message transmission method according to claim 9, characterized in that, The step of determining that the transmission of the target message has failed if no acknowledgment response is received from the destination node within a preset first time period includes: Insert the first detection logic into the transmission control protocol processing code of the source node; The first detection logic is enabled to detect that no acknowledgment response is received from the destination node within a preset first time period, thereby determining that the transmission of the target message has failed.
13. The message transmission method according to claim 9, characterized in that, Adding the first path virtual port number to the target message includes: Place the source port number from the source port number field in the target message into the reserved field of the target message; Add the first path virtual port number to the route source port number field.
14. The message transmission method according to claim 1, characterized in that, The step of determining the second path virtual port number in the target lookup table, which corresponds to a different base path than the first path virtual port number, includes: In the target lookup table, determine the first base path corresponding to the first path virtual port number; In the baseline path table, determine the second baseline path that is located after the first baseline path; In the target lookup table, determine the virtual port number of the second path corresponding to the second reference path.
15. The message transmission method according to claim 14, characterized in that, Determining the virtual port number of the second path corresponding to the second reference path in the target lookup table includes: In the target lookup table, determine the virtual port numbers of multiple alternative paths corresponding to the second baseline path; Obtain historical selection records of the multiple alternative path virtual port numbers that were selected as the second path virtual port number; Based on the number of times the multiple alternative path virtual port numbers in the historical selection record were selected as the second path virtual port number, the second path virtual port number is determined from the multiple alternative path virtual port numbers.
16. A message transmission method, characterized in that, The message transmission method is executed by the destination node, which sends an acknowledgment response to the source node through multiple intermediate node layers. Receive the target message sent by the source node; Multiple response baseline paths are obtained between the destination node and the source node. Each response baseline path passes through at least one intermediate node at each intermediate node layer. The number of intermediate nodes that overlap between any two response baseline paths among the multiple response baseline paths meets a predetermined condition. Obtain a target response lookup table, which indicates the correspondence between the response baseline path and the path virtual port number. The path virtual port number is a virtual port number added to the acknowledgment response when the destination node sends the acknowledgment response. Each response baseline path corresponds to one or more path virtual port numbers. In response to determining that the transmission of the acknowledgment response from the destination node to the source node failed, the third path virtual port number in the acknowledgment response is obtained; In the target response lookup table, determine the fourth path virtual port number that corresponds to a different response baseline path as the third path virtual port number; The third path virtual port number in the confirmation response is modified to the fourth path virtual port number, so that the confirmation response reaches the source node along the response reference path corresponding to the fourth path virtual port number.
17. A message transmission device, characterized in that, The packet transmission device is configured in the source node, which sends the target packet to the destination node through multiple intermediate node layers. The packet transmission device includes: The first acquisition unit is used to acquire multiple reference paths between the source node and the destination node. The reference paths pass through at least one intermediate node at each intermediate node layer, and the number of overlapping intermediate nodes between any two reference paths among the multiple reference paths satisfies a predetermined condition. The second acquisition unit is used to acquire a target lookup table, which indicates the correspondence between the base path and the path virtual port number. The path virtual port number is a virtual port number added to the target message when the source node sends the target message. Each base path corresponds to one or more path virtual port numbers. The first response unit is configured to, in response to determining that the transmission of the target packet from the source node to the destination node has failed, obtain the first path virtual port number in the target packet; The first determining unit is configured to determine, in the target lookup table, a second path virtual port number that corresponds to a different reference path than the first path virtual port number; The first modification unit is used to modify the first path virtual port number in the target message to the second path virtual port number, so that the target message reaches the destination node along the reference path corresponding to the second path virtual port number.
18. An electronic device comprising a memory and a processor, the memory storing a computer program, characterized in that, When the processor executes the computer program, it implements the message transmission method according to any one of claims 1 to 16.
19. A computer-readable storage medium storing a computer program, characterized in that, When the computer program is executed by the processor, it implements the message transmission method according to any one of claims 1 to 16.
20. 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 16.