Method and device for sending routing request

By determining the number of common parent node layers and total number of historical routing requests in the fat tree network topology, the target parent node is selected, and the routing path is optimized, which solves the congestion hotspot problem caused by link load imbalance, and improves network throughput and stability.

CN120301818APending Publication Date: 2025-07-11SHANDONG YUNHAI GUOCHUANG CLOUD COMPUTING EQUIP IND INNOVATION CENT CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202510404832.8
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2025-04-01
Publication Date
2025-07-11

AI Technical Summary

Technical Problem

Traditional on-chip network routing algorithms lead to unbalanced link load, prone to congestion hotspots, and reduce network throughput.

Method used

The fat tree network topology is adopted, and the number of source routing nodes and target routing nodes is obtained, and the number of layers of the closest common parent node is determined by obtaining the number of source routing nodes and target routing paths are optimized.

Benefits of technology

Load balancing is achieved, network congestion is reduced, network throughput and stability is improved.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120301818A_ABST
    Figure CN120301818A_ABST
Patent Text Reader

Abstract

The embodiment of the invention provides a method and device for sending a routing request, and the method comprises the steps: obtaining the number of a source routing node and the number of a target routing node; determining the layer number of the nearest public father node in the fat tree network topology structure according to the serial numbers of the source routing node and the target routing node; determining a target father node according to the total number of the routing requests sent to the target routing node by the source routing node and the number of the public father nodes on the layer where the nearest public father node is located; and sending a target routing request sent by the source terminal to the target father node through the source routing node, and sending the target routing request to the target terminal through the target father node. Through application of the method and the device, the problem of congestion hotspots caused by unbalanced link load in related technologies is solved, and the effect of improving the network throughput rate is further achieved.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Embodiments of the present application relate to the field of computers, and more specifically, to a method and apparatus for sending routing requests. Background Technique

[0002] The on-chip network routing algorithm determines the routing path of data packets from the source routing node to the destination routing node in a given network topology. The routing algorithm and the topology are the two most important factors affecting the performance of the on-chip network system. A good routing algorithm can efficiently utilize on-chip link resources and node resources, improve system performance, and enable the network to perform well in terms of data transmission delay, network throughput, congestion control, and hardware overhead.

[0003] In the traditional routing method, the nearest common parent node of the source routing node and the target routing node is randomly selected for routing. However, this random selection of the parent node for routing easily leads to unbalanced link loads, resulting in congestion hotspots, and the network throughput will also decrease accordingly.

[0004] In response to the above problems, there is currently no effective solution. Summary of the Invention

[0005] Embodiments of the present application provide a method and apparatus for sending routing requests to at least solve the problem of congestion hotspots caused by unbalanced link loads in related technologies.

[0006] According to an embodiment of the present application, a method for sending a routing request is provided, which is applied to a fat-tree network topology. The relationship between the total number of layers l of the fat-tree network topology and the number of source nodes n is l = log2n. The relationship between the number of routing nodes k in each layer and the number of source nodes n is: k = n / 2. The routing node d in the i-th layer is connected to the routing node d in the i + 1-th layer. xor The d and d xor are the node numbers, n is an integer greater than 0, and i ∈ {0, 1,..., l - 1}; where:

[0007] d xor = bin(d)^bin(2 i )

[0008] The "bin" function converts an integer into a binary number, and "^" is a bitwise exclusive OR function in binary form; the method includes: obtaining the numbers of the source routing node and the target routing node, where the source routing node is the routing node where the source terminal is located, and the target routing node is the node where the target terminal is located; determining the layer where the nearest common parent node is located in the fat tree network topology according to the numbers of the source routing node and the target routing node, where the common parent node is the common parent node of the source routing node and the target routing node; determining the target parent node according to the total number of routing requests already sent from the source routing node to the target routing node and the number of the common parent nodes on the layer where the nearest common parent node is located; sending the target routing request sent by the source terminal to the target parent node through the source routing node, and sending the target routing request to the target terminal through the target parent node.

[0009] In an exemplary embodiment, determining the layer where the nearest common parent node is located in the fat tree network topology according to the numbers of the source routing node and the target routing node includes: performing a bitwise exclusive OR operation on the number of the source routing node and the number of the target routing node in binary form to obtain an exclusive OR result; in the case where the exclusive OR result has a non-zero value, determining the layer where the nearest common parent node is located according to the position of the non-zero value in the exclusive OR result.

[0010] In an exemplary embodiment, determining the layer where the nearest common parent node is located according to the position of the non-zero value in the exclusive OR result includes: determining the first non-zero value that appears in the exclusive OR result in descending order, and determining the first non-zero value that appears as the target non-zero value; determining the position of the bit where the target non-zero value is located in the exclusive OR result in ascending order, and determining the value of the position of the bit as the layer where the nearest common parent node is located.

[0011] In an exemplary embodiment, determining the target parent node according to the total number of routing requests already sent from the source routing node to the target routing node and the number of the common parent nodes on the layer where the nearest common parent node is located includes: determining the number of the nearest common parent nodes according to the number of the source routing node and the layer where the nearest common parent node is located; determining the target parent node through the total number of routing requests already sent from the source routing node to the target routing node and the number of the common parent nodes on the layer where the nearest common parent node is located.

[0012] ​In an exemplary embodiment, the total number of routing requests sent by the source routing node to the target routing node, and the number of common parent nodes at the layer where the nearest common parent node is located In determining the target parent node, including: the total number of routing requests sent by the source routing node to the target routing node and the to obtain the target location; the parent node at the target location among the nearest common parent nodes is determined as the target parent node.

[0013] In an exemplary embodiment, the total number of routing requests sent by the source routing node to the target routing node and the to obtain the target location, including:[[]]

[0014] The target location is obtained through the following formula:[[]]

[0015]

[0016] where f now is the target location, and % is the remainder function.

[0017] In an exemplary embodiment, determining the nearest common parent nodes according to the number of the source routing node and the layer where the nearest common parent node is located, including: when the nearest common parent node is at the j-th layer, where j is an integer greater than or equal to 1, obtaining the

[0018]

[0019] sequentially taking element values starting from binary zero, where the difference between two adjacent element values among the element values is one; obtaining the nearest common parent nodes through the

[0020] element values and the number of the source routing node. In an exemplary embodiment, obtaining the nearest common parent nodes through the element values and the number of the source routing node, including: performing a bitwise exclusive OR operation in binary form on the number of the source routing node and each of the element values to obtain the

[0021] In an exemplary embodiment, sending the target routing request sent by the source terminal to the target parent node through the source routing node and sending the target routing request to the target terminal through the target parent node includes: performing a bitwise exclusive OR operation on the number of the source routing node and the number of the target parent node in binary form to obtain a first target binary number; performing a bitwise exclusive OR operation on the number of the target parent node and the number of the target routing node in binary form to obtain a second target binary number; determining the routing nodes from the source routing node to the target parent node through the first target binary number to send the target routing request from the source routing node to the target parent node; and determining the routing nodes from the target parent node to the target routing node through the second target binary number to send the target routing request from the target parent node to the target routing node.

[0022] In an exemplary embodiment, determining the routing nodes from the source routing node to the target parent node through the first target binary number includes: when the nearest common parent node is at the j-th layer, taking the j significant bits from the lowest to the highest in the first target binary number, where j is an integer greater than or equal to 1; and determining the routing nodes on each layer from the first layer to the j-th layer according to the j significant bits, where the source node is at the 0-th layer and the first layer is the layer above the 0-th layer.

[0023] In an exemplary embodiment, determining the routing nodes on each layer from the first layer to the j-th layer according to the j significant bits includes: obtaining the routing node on the k-th layer in the following manner, where k is greater than or equal to 1 and less than or equal to j: determining the k-th significant bit corresponding to the k-th layer in the j significant bits, where each significant bit in the j significant bits corresponds one-to-one to the first layer to the j-th layer; and determining the routing node on the k-th layer through the k-th significant bit.

[0024] In an exemplary embodiment, determining the routing node on the k-th layer through the k-th significant bit includes: when the value of the k-th significant bit is 1, inverting the value of the bit corresponding to the k-th significant bit in the number of the (k - 1)-th routing node to obtain the number of the routing node on the k-th layer, where the (k - 1)-th routing node is the node determined on the (k - 1)-th layer, and when k equals 1, the (k - 1)-th routing node is the source node.

[0025] In an exemplary embodiment, determining the routing node on the k-th layer based on the k-th significant bit further includes: when the value of the k-th significant bit is 0, determining the number of the (k - 1)-th routing node as the number of the routing node on the k-th layer, where the (k - 1)-th routing node is the node determined on the (k - 1)-th layer, and when k equals 1, the (k - 1)-th routing node is the source node.

[0026] In an exemplary embodiment, determining the routing node from the target parent node to the target routing node based on the second target binary number includes: when the nearest common parent node is on the j-th layer, taking the j significant bits from the lowest to the highest in the second target binary number, where j is an integer greater than or equal to 1; and determining the routing node on each layer from the (j - 1)-th layer to the 0-th layer based on the j significant bits.

[0027] In an exemplary embodiment, determining the routing node on each layer from the (j - 1)-th layer to the 0-th layer based on the j significant bits includes: obtaining the routing node on the r-th layer by the following method, where r is an integer greater than or equal to 0 and less than or equal to j - 1: determining the r-th significant bit corresponding to the r-th layer in the j significant bits, where each significant bit in the j significant bits corresponds one-to-one to the 0-th layer to the (j - 1)-th layer; and determining the routing node on the r-th layer based on the r-th significant bit.

[0028] In an exemplary embodiment, determining the routing node on the r-th layer based on the r-th significant bit includes: when the value of the r-th significant bit is 1, inverting the value of the bit corresponding to the r-th significant bit in the number of the (r + 1)-th routing node to obtain the number of the routing node on the r-th layer, where the (r + 1)-th routing node is the node determined on the (r + 1)-th layer.

[0029] In an exemplary embodiment, determining the routing node on the r-th layer based on the r-th significant bit further includes: when the value of the r-th significant bit is 0, determining the number of the (r + 1)-th routing node as the number of the routing node on the r-th layer, where the (r + 1)-th routing node is the node determined on the (r + 1)-th layer.

[0030] In an exemplary embodiment, the total number of routing requests already sent from the source routing node to the target routing node, the number of common parent nodes on the layer where the nearest common parent node is located Before determining the target parent node, the method further includes: obtaining the total number of routing requests that the source routing node has sent to the target routing node in the routing request summary table of the source routing node. After sending the target routing request sent by the source terminal to the target parent node through the source routing node, the method further includes: performing an increment operation on the total number of routing requests that the source routing node has sent to the target routing node in the routing request summary table of the source routing node.

[0031] According to another embodiment of the present application, there is provided an apparatus for sending a routing request, including: an obtaining module, configured to obtain the numbers of a source routing node and a target routing node, where the source routing node is the routing node where the source terminal is located, and the target routing node is the node where the target terminal is located; a first determining module, configured to determine, in the fat tree network topology, the layer where the nearest common parent node is located according to the numbers of the source routing node and the target routing node, where the common parent node is the common parent node of the source routing node and the target routing node; a second determining module, configured to determine a target parent node according to the total number of routing requests that the source routing node has sent to the target routing node and the number of the common parent nodes on the layer where the nearest common parent node is located; a sending module, configured to send the target routing request sent by the source terminal to the target parent node through the source routing node, and send the target routing request to the target terminal through the target parent node.

[0032] According to still another embodiment of the present application, there is further provided a computer-readable storage medium, in which a computer program is stored, where the computer program is configured to execute the steps in any one of the above method embodiments when running.

[0033] According to still another embodiment of the present application, there is further provided an electronic device, including a memory and a processor, where a computer program is stored in the memory, and the processor is configured to run the computer program to execute the steps in any one of the above method embodiments.

[0034] According to still another embodiment of the present application, there is further provided a computer program product, including a computer program, where the computer program, when executed by a processor, implements the steps in any one of the above method embodiments.

[0035] Through this application, obtain the numbers of the source routing node and the destination routing node, where the source routing node is the routing node where the source terminal is located, and the destination routing node is the node where the destination terminal is located; determine the layer where the nearest common parent node is located in the fat-tree network topology according to the numbers of the source routing node and the destination routing node, where the common parent node is the common parent of the source routing node and the destination routing node; determine the destination parent node according to the total number of routing requests already sent from the source node to the destination routing node and the number of common parent nodes on the layer where the nearest common parent node is located; send the destination routing request sent by the source terminal to the destination parent node through the source routing node, and send the destination routing request to the destination terminal through the destination parent node.

[0036] Since the layer where the nearest common parent node is located is determined according to the source routing node and the destination routing node, and the destination parent node is determined by combining the historical routing request quantity between the source routing node and the destination routing node, and the destination routing request is sent through the destination parent node to realize the transmission of the routing request. Therefore, the problem of congestion hotspots caused by unbalanced link load in the related art can be solved, and the effect of improving the network throughput rate can be achieved. Description of the Drawings

[0037] Figure 1 is a schematic diagram of the topology of the fat-tree network;

[0038] Figure 2 is a schematic diagram of a random routing path Figure 1 ;

[0039] Figure 3 is a schematic diagram of a random routing path Figure 2 ;

[0040] Figure 4 is a schematic diagram of the topology of the on-chip five-layer fat-tree network;

[0041] Figure 5 is a hardware structure block diagram of a server device for a method of sending a routing request according to an embodiment of the present application;

[0042] Figure 6 is a flowchart of a method of sending a routing request according to an embodiment of the present application;

[0043] Figure 7 is a structure block diagram of a device for sending a routing request according to an embodiment of the present application. Detailed Embodiments

[0044] In view of the defects of the system on a chip in terms of time delay, clock synchronization, scalability, energy consumption, reusability, etc., a new system-on-chip architecture, "network on chip", was proposed at the end of the century. It well overcomes the various limitations brought by the bus architecture and fully draws on relevant network technologies in existing computer networks. Compared with the traditional system on a chip, its advantages are as follows:

[0045] (1) The network on chip draws on the network architecture in computer networks. The entire network is connected by multiple point-to-point lines and will not interfere with each other, which can meet the communication requirements of multiple users.

[0046] (2) Different from the system on a chip, the network on chip adopts the method of "globally asynchronous, locally synchronous" to solve the clock synchronization problem. The local network works at its own clock frequency, avoiding the global clock synchronization problem, solving the clock offset problem, and greatly reducing the power consumption of the network.

[0047] (3) The network on chip has a relatively high bandwidth utilization rate. Since the network on chip supports multi-point parallel transmission, data transmission of multiple lines can be completed at the same time, and the communication efficiency is relatively high; moreover, the addressing of the network on chip is completed within the local network, and the expansion of the network scale has little impact on addressing, so the number of bits occupied by addressing in the bandwidth will not increase, and the bandwidth will not become a bottleneck for the expansion of the network scale.

[0048] (4) Since the bus architecture uses a central arbitration unit to uniformly manage the right to use the line, while the network on chip uses a random arbitration mechanism, there is no large time delay problem.

[0049] (5) When the system on a chip adopts the core idea, with the expansion of the network scale, the arbitration delay will become larger and larger, which has a greater impact on the performance of the system. However, the network on chip adopts a local arbitration strategy and distributes and completes an independent functional unit in the line, with good reusability. At the same time, the routing devices in the network can also be used in multiple environments, and the reusability is very high.

[0050] All in all, due to the good reusability of network components, the network on chip has the characteristics of high cohesion, high scalability and portability, greatly shortening the system development time and improving the development efficiency, which is particularly important in the current ultra-large-scale network design.

[0051] The on-chip network routing algorithm determines the routing path of data packets from the source routing node to the destination routing node in a given network topology. The routing algorithm and the topology are the two most important factors affecting the performance of the on-chip network system. A good routing algorithm can efficiently utilize the on-chip link resources and node resources, improve the system performance, and enable the network to perform well in terms of data transmission delay, network throughput, congestion control, and hardware overhead.

[0052] The fat tree network is one type of on-chip network. Due to its unique topology, it well solves the problem that the area near the root node in the tree network is prone to becoming a network bandwidth bottleneck. Figure 1 is a schematic diagram of the topology of the fat tree network, as Figure 1 shown. The circles in the topology represent routing nodes. Each routing node contains four link ports with two inputs and two outputs. The routing node itself does not generate network traffic but is responsible for the transmission, routing, and relaying of the traffic generated by the terminal nodes. The squares in the topology represent terminal nodes, and each terminal node has the need to send and receive traffic. Specifically, it has the following structural characteristics:

[0053] (1) The number of routing nodes in each layer is equal;

[0054] (2) The relationship between the number of routing nodes k in each layer and the number of source nodes n: k = n / 2;

[0055] (3) The relationship between the number of layers l of the topology and the number of source nodes n: l = log2n, where the source nodes are the terminals connected to the routing nodes in the 0th layer, and the source nodes include source terminals and destination terminals;

[0056] (4) The link relationship between the routing nodes d in the i-th layer and the routing nodes in the (i + 1)-th layer, i ∈ {0, 1,..., l - 1}: The routing node d in the i-th layer is connected to the routing node d in the (i + 1)-th layer; the routing node d in the i-th layer is connected to the routing node d xor in the (i + 1)-th layer, where: d xor = bin(d)^bin(2 i-1 ), bin is to convert an integer to binary form, and ^ is the bitwise exclusive OR function for binary form;

[0057] (5) Each routing node in the 0th layer is connected to two source nodes;

[0058] (6) Each line is bidirectional.

[0059] The routing algorithm affects the system performance mainly in two aspects: First, the routing algorithm determines the number of hops between the source node and the destination node. The fewer the number of hops, the smaller the transmission delay. A good routing algorithm can reduce the number of hops in the routing path. Second, the routing algorithm determines the network load distribution of each node in the on-chip network. The more balanced the load, the less likely the network is to have congestion hotspots, and thus the higher the network throughput. A good routing algorithm can provide good network load balancing characteristics.

[0060] The routing method of the traditional fat-tree network is to randomly select the nearest common parent node of the source routing node S and the destination routing node D for routing. The data transmission is realized by first routing from the source routing node S to the nearest common parent node F, and then routing from the nearest common parent node F to the destination routing node D.

[0061] For example Figure 2 As shown, the routing node S where the source terminal s is located is 0, and the routing node D where the target terminal is located is 2. Randomly select a nearest parent node F as 0 in the second layer, and determine the routing path: routing node 0 (layer 0) -> routing node 0 (layer 1) -> routing node 0 (layer 2) -> routing node 2 (layer 1) -> routing node 2 (layer 0), or as Figure 3 shown, the routing node S where the source terminal s is located is 2, and the routing node D where the target terminal d is located is 0. Randomly select a nearest parent node F as 0 in the second layer, and determine the routing path: routing node 2 (layer 0) -> routing node 2 (layer 1) -> routing node 0 (layer 2) -> routing node 0 (layer 1) -> routing node 0 (layer 0), etc.

[0062] There are four nearest common parent nodes F of the above routing node 0 and routing node 2, which are 0, 1, 2, and 3 in the second layer respectively. However, whether it is the routing request from routing node 0 to routing node 2 or the routing request from routing node 2 to routing node 0, if the 0 in the second layer is always selected as the nearest common parent node for routing each time, then the routing path passing through the second-layer parent node 0 is always in use, while the paths passing through other parent nodes are always idle, ultimately resulting in unbalanced load and the second-layer parent node 0 becoming a congestion hotspot.

[0063] Therefore, in view of the problem that the traditional way of randomly selecting the parent node for routing leads to unbalanced link load, thus easily causing congestion hotspots and the network throughput rate will decrease accordingly, based on Figure 4 the on-chip five-layer fat-tree network topology structure shown, a deterministic routing algorithm suitable for load balancing of the fat-tree network structure is proposed to at least solve the problem of congestion hotspots caused by unbalanced link load in the related technology and improve the network throughput rate.

[0064] In the following, embodiments of the present application will be described in detail with reference to the accompanying drawings and in conjunction with the embodiments.

[0065] It should be noted that the terms "first", "second", etc. in the description and claims of the present application and the above-mentioned drawings are used to distinguish similar objects, and do not necessarily have to be used to describe a specific order or sequence.

[0066] The method embodiments provided in the embodiments of the present application can be executed in a server device or a similar computing device. Taking the operation on a server device as an example, Figure 5 is a hardware structural block diagram of a server device for a method of sending a routing request according to an embodiment of the present application. As Figure 5 shown, the server device may include one or more ( Figure 5 only one is shown in the figure) processors 502 (the processor 502 may include, but is not limited to, a processing device such as a microprocessor MCU or a programmable logic device FPGA) and a memory 504 for storing data. Among them, the above-mentioned server device may further include a transmission device 506 for communication functions and an input / output device 508. Those of ordinary skill in the art can understand that Figure 5 the structure shown is only schematic and does not limit the structure of the above-mentioned server device. For example, the server device may further include more or fewer components than Figure 5 shown in the figure, or have a different configuration from Figure 5 shown in the figure.

[0067] The memory 504 can be used to store computer programs. For example, software programs and modules of application software, such as the computer program corresponding to the method of sending a routing request in the embodiments of the present application. The processor 502 executes various functional applications and data processing by running the computer program stored in the memory 504, that is, the above-mentioned method is implemented. The memory 504 may include a high-speed random access memory, and may also include a non-volatile memory, such as one or more magnetic storage devices, flash memories, or other non-volatile solid-state memories. In some instances, the memory 504 may further include a memory remotely disposed relative to the processor 502, and these remote memories can be connected to the server device through a network. Examples of the above-mentioned network include, but are not limited to, the Internet, an enterprise intranet, a local area network, a mobile communication network, and their combinations.

[0068] The transmission device 506 is used to receive or send data via a network. Specific examples of the above network may include a wireless network provided by a communication provider of a server device. In one example, the transmission device 506 includes a network adapter (Network Interface Controller, abbreviated as NIC), which can be connected to other network devices through a base station so as to communicate with the Internet. In one example, the transmission device 506 can be a Radio Frequency (RF) module, which is used to communicate with the Internet wirelessly.

[0069] In this embodiment, a method for sending a routing request is provided. Figure 6 It is a flowchart of the method for sending a routing request according to an embodiment of the present application, as Figure 6 shown, and the process includes the following steps:

[0070] Step S602, obtain the numbers of the source routing node and the destination routing node, where the source routing node is the routing node where the source terminal is located, and the destination routing node is the node where the target terminal is located;

[0071] The above source routing node S may be the node where the sending terminal of the routing request is located. Among them, the sending terminal of the routing request may be the source terminal, and the number of the source routing node may be represented by a binary number. For example, in a five-layer fat tree network topology, 0100 can be used to represent routing node 4; the above destination routing node D may be the node where the receiving terminal of the routing request is located. Among them, the receiving terminal of the routing request may be the target terminal, and the number of the destination routing node may be represented by a binary number. For example, in a five-layer fat tree network topology, 0110 can be used to represent routing node 6; obtain the binary representations of the source routing node and the destination routing node.

[0072] Step S604, determine the layer where the nearest common parent node is located in the fat tree network topology according to the numbers of the source routing node and the destination routing node, where the common parent node is the common parent node of the source routing node and the destination routing node;

[0073] The above parent node may be the routing node directly connected to the current routing node among the routing nodes in the upper layer of the layer where the current routing node is located in the tree structure. The above common parent node may be the common parent node of two routing nodes in the tree structure, that is, the lowest common ancestor node of the two nodes. For example Figure 4 in, the parent nodes of node 2 in layer 0 are node 2 and node 3 in layer 1, the parent nodes of node 6 in layer 0 are node 6 and node 7 in layer 1, and the common parent nodes of node 2 and node 6 in layer 0 are nodes 0 to 7 in layer 3.

[0074] Specifically, perform a bitwise exclusive OR operation on the number of the source routing node and the number of the target routing node in binary form to obtain an exclusive OR result; in the case where the exclusive OR result has a non-zero value, determine the layer where the nearest common parent node is located according to the position of the non-zero value in the exclusive OR result.

[0075] As an optional implementation manner, determining the layer where the nearest common parent node is located according to the position of the non-zero value in the exclusive OR result includes: determining the first non-zero value that appears in the exclusive OR result in descending order, and determining the first non-zero value that appears as the target non-zero value; determining the position of the bit where the target non-zero value is located in the exclusive OR result in ascending order, and determining the value of the position of the bit as the layer where the nearest common parent node is located.

[0076] For example, the source routing node S has a number of 2, that is, S = 0010, and the target routing node D has a number of 6, that is, D = 0110. Perform a bitwise exclusive OR operation on S and D to obtain a binary number I. The specific calculation method of the binary number I is as follows:

[0077] I = 0001 ^ 0110

[0078] = 0111

[0079] In the case where the binary number I has a non-zero value, view the position of the bit with the highest bit value of "1" from low to high. At the third bit, the layer where the nearest common parent node of the source routing node S and the target routing node D is located is the third layer.

[0080] Step S606, determine a target parent node according to the total number of routing requests already sent from the source routing node to the target routing node and the number of the common parent nodes at the layer where the nearest common parent node is located.

[0081] Establish a routing request summary table on each routing node at layer 0. The specific content information of the summary table is shown in Table 1 below. In the summary table, the routing node S represents the current routing node label; the routing node D represents the remaining routing nodes except the current routing node; the routing request count represents the total number of routing requests already sent from the current routing node S to the routing node D. Each time the current routing node S sends a routing request to the routing node D, the routing request count value is incremented by 1.

[0082] Table 1

[0083]

[0084] Specifically, determine according to the number of the source routing node and the layer where the nearest common parent node is located the number of the nearest common parent nodes; the total number of routing requests already sent from the source routing node to the target routing node, the number of common parent nodes on the layer where the nearest common parent node is located to determine the target parent node.

[0085] Determining the target parent node based on the historical request quantity between the source routing node and the target routing node, as well as the quantity of the nearest common parent nodes, is beneficial to helping the routing node more effectively select a suitable routing path, improving the decision-making accuracy of the routing node, reducing network congestion, reducing the transmission delay of data packets, and improving the stability and reliability of the network.

[0086] Step S608: Send the target routing request sent by the source terminal to the target parent node through the source routing node, and send the target routing request to the target terminal through the target parent node.

[0087] Through the above steps, obtain the numbers of the source routing node and the target routing node, where the source routing node is the routing node where the source terminal is located, and the target routing node is the node where the target terminal is located; determine the layer where the nearest common parent node is located in the fat tree network topology according to the numbers of the source routing node and the target routing node, where the common parent node is the common parent of the source routing node and the target routing node; determine the target parent node according to the total number of routing requests already sent from the source routing node to the target routing node and the number of common parent nodes on the layer where the nearest common parent node is located; send the target routing request sent by the source terminal to the target parent node through the source routing node, and send the target routing request to the target terminal through the target parent node. This solves the problem of congestion hotspots caused by unbalanced link load in the related art and improves the throughput rate of the network.

[0088] Among them, the execution subject of the above steps can be a server, a terminal, etc., but is not limited thereto.

[0089] As an optional implementation manner, determine according to the number of the source routing node and the layer where the nearest common parent node is located the number of the nearest common parent nodes, including: when the nearest common parent node is on the j-th layer, where j is an integer greater than or equal to 1, obtain the

[0090]

[0091] Take elements in order starting from binary zero quantity, where The difference between two adjacent element values among the element values is one; through the element values and the number of the source routing node, obtain the nearest common parent node.

[0092] The above can be the number of the nearest common parent nodes, and the value of this number can be determined according to the layer where the nearest common parent node is located. For example, if the layer where the nearest common parent node is located is the third layer, then the number of the nearest common parent nodes is According to the number of the nearest common parent nodes obtain all integers less than For example then the obtained integers are 0, 1, 2, 3, 4, 5, 6, 7 respectively. According to the binary representation of the obtained integers and the binary representation of the source routing node, determine the numbers of all the nearest common parent nodes. Determining the number of the nearest common parent nodes according to the layer where the nearest common parent node is located is beneficial to finding the nearest common parent node faster, thereby determining the relationship between two nodes faster and saving time and resources.

[0093] Specifically, perform a bitwise exclusive OR operation in binary form on the number of the source routing node and each of the element values to obtain the nearest common parent nodes.

[0094] For example, the number of the source routing node S is 2, that is, S = 0010, and the number of the target routing node D is 6, that is, D = 0110. Perform a bitwise exclusive OR operation on S and D to obtain a binary number I. Among them, the specific calculation method of the binary number I is as follows:

[0095] I = 0001 ^ 0110

[0096] = 0111

[0097] In the case where there is a non-zero value in the binary number I, view the position of the bit with the highest bit value of "1" from low to high. In the third bit, then the layer where the nearest common parent node of the source routing node S and the target routing node D is located is the third layer, and the number of the nearest common parent nodes is the binary representations of all integers less than 8 corresponding to {I father} = {0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111}. Perform a bitwise exclusive OR operation on the binary representation of the source routing node number and all I father to obtain all the nearest common parent nodes. The specific calculation is as follows:

[0098]

[0099] It can be seen from this that the binary representations of all the numbers of the nearest common parent nodes are 0010, 0011, 0000, 0001, 0110, 0111, 0100, 0101, and the corresponding numbers of the nearest common parent nodes are 2, 3, 0, 1, 6, 7, 4, 5. At the same time, the obtained nearest common parent nodes are sorted in ascending order of the numbers to obtain the nearest common parent node list List f =[0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111].

[0100] As an alternative embodiment, on the total number of routing requests already sent by the source routing node to the target routing node, the number of common parent nodes on the layer where the nearest common parent node is located Before determining the target parent node, the method further includes: obtaining, in the routing request summary table of the source routing node, the total number of routing requests already sent by the source routing node to the target routing node.

[0101] As an alternative embodiment, on the total number of routing requests already sent by the source routing node to the target routing node, the number of common parent nodes on the layer where the nearest common parent node is located When determining the target parent node, it includes: the total number of routing requests already sent by the source routing node to the target routing node and the obtain a target position; the parent node at the target position among the nearest common parent nodes is determined as the target parent node.

[0102] The above-mentioned total number of routing requests already sent can be obtained through the routing request summary table on each source routing node. According to the obtained total number of routing requests already sent and the number of nearest common parent nodes determine the target position of the target parent node in the nearest common parent node list List f and determine the common parent node at the target position in the nearest common parent node list List f as the target parent node. Determining the target common parent node through the source node number and the historical request quantity can help determine the relationship and path between two nodes, achieve load balancing, optimize resource allocation, optimize the data transmission path, reduce network communication latency and load, and improve data transmission efficiency.

[0103] Specifically, the target position is obtained through the following formula:

[0104]

[0105] where f now is the target position, and % is the modulo function.

[0106] As an optional implementation manner, after sending the target routing request sent by the source terminal to the target parent node through the source routing node, the method further includes: performing an increment operation on the total number of routing requests that the source routing node has sent to the target routing node in the routing request summary table of the source routing node.

[0107] As an optional implementation manner, sending the target routing request sent by the source terminal to the target parent node through the source routing node and sending the target routing request to the target terminal through the target parent node includes: performing a bitwise exclusive OR operation on the binary representation of the source routing node number and the binary representation of the target parent node number to obtain a first target binary number; performing a bitwise exclusive OR operation on the binary representation of the target parent node number and the binary representation of the target routing node number to obtain a second target binary number; determining the routing nodes from the source routing node to the target parent node through the first target binary number to send the target routing request from the source routing node to the target parent node; determining the routing nodes from the target parent node to the target routing node through the second target binary number to send the target routing request from the target parent node to the target routing node.

[0108] Performing a bitwise exclusive OR operation on the binary representation of the source routing node number and the binary representation of the target parent node to obtain a first target binary number, and determining the routing nodes for the routing nodes on each layer corresponding to each bit to route upward to the upper layer according to the value of each bit in the first target binary number; performing a bitwise exclusive OR operation on the binary representation of the target routing node number and the binary representation of the target parent node to obtain a second target binary number, and determining the routing nodes for the routing nodes on each layer corresponding to each bit to route downward to the lower layer according to the value of each bit in the second target binary number. By using the source routing node number, the target routing node number, and the number of the target parent node, the routing path can be determined, and the best path can be selected according to the network conditions and load conditions, avoiding network congestion and delay, while reasonably allocating network resources, improving the utilization rate and performance of the network, and enhancing the user's network experience.

[0109] As an alternative implementation, determining the routing nodes from the source routing node to the target parent node through the first target binary number includes: when the nearest common parent node is at the j-th layer, taking the j valid bits from the lowest to the highest in the first target binary number, where j is an integer greater than or equal to 1; determining the routing nodes on each layer from the first layer to the j-th layer according to the j valid bits, where the source node is at the 0-th layer and the first layer is the layer above the 0-th layer.

[0110] Each bit in the j bits of the first target binary number from the lowest to the highest can respectively correspond Figure 4 to the 0-th layer to the (j - 1)-th layer in the shown fat tree network structure. Determine the routing nodes that each layer of routing nodes route upward to the upper layer according to the values of the j valid bits, that is, the routing nodes on each layer from the first layer to the j-th layer.

[0111] Specifically, obtain the routing nodes on the k-th layer through the following method, where k is greater than or equal to 1 and less than or equal to j: determine the k-th valid bit corresponding to the k-th layer in the j valid bits, where each valid bit in the j valid bits corresponds one-to-one to the first layer to the j-th layer; determine the routing nodes on the k-th layer through the k-th valid bit.

[0112] According to the values of each bit, correspondingly select the routing nodes that each layer of routing nodes route upward to the upper layer. There are two ways to select routing nodes upward: it can be that the routing node directly jumps upward to the routing node with the same number in the higher layer; or the routing node routes to the routing node with a different number in the higher layer according to the routing algorithm.

[0113] As an alternative implementation, determining the routing nodes on the k-th layer through the k-th valid bit includes: when the value of the k-th valid bit is 1, invert the value of the bit corresponding to the k-th valid bit in the number of the (k - 1)-th routing node to obtain the number of the routing node on the k-th layer, where the (k - 1)-th routing node is the node determined on the (k - 1)-th layer, and when k is equal to 1, the (k - 1)-th routing node is the source node.

[0114] As an alternative implementation, determining the routing nodes on the k-th layer through the k-th valid bit further includes: when the value of the k-th valid bit is 0, determine the number of the (k - 1)-th routing node as the number of the routing node on the k-th layer, where the (k - 1)-th routing node is the node determined on the (k - 1)-th layer, and when k is equal to 1, the (k - 1)-th routing node is the source node.

[0115] For example, the source routing node is S = 0100 and the target parent node is f now = 0101. Then, the result of the bitwise exclusive OR operation between the binary representation of the source routing node number and the binary representation of the target parent node number is I f = 0001. Starting from the lowest significant bit of the valid bits of I f = 0001, at the position of "1", the corresponding bit of S is inverted to obtain the routing node for the upper layer. At the position of "0", directly jump to the routing node with the same number in the upper layer. The specific routing path is as follows:

[0116]

[0117] As an alternative implementation, determining the routing nodes from the target parent node to the target routing node through the second target binary number includes: when the nearest common parent node is at the j-th layer, the j least significant valid bits of the second target binary number, where j is an integer greater than or equal to 1; determining the routing nodes on each layer from the (j - 1)-th layer to the 0-th layer according to the j valid bits.

[0118] Each bit in the j least significant bits of the second target binary number from the lowest to the highest can respectively correspond to Figure 4 the first layer to the j-th layer in the shown fat tree network structure, and determining the routing nodes on each layer from the first layer to the j-th layer according to the values of the j valid bits.

[0119] Specifically, the routing nodes on the r-th layer are obtained through the following method, where r is an integer greater than or equal to 0 and less than or equal to j - 1: determining the r-th valid bit corresponding to the r-th layer in the j valid bits, where each valid bit in the j valid bits corresponds one-to-one to the 0-th layer to the (j - 1)-th layer; determining the routing nodes on the r-th layer through the r-th valid bit.

[0120] According to the values of each valid bit, the routing nodes for each layer of routing nodes to the next lower layer are correspondingly selected. There are two ways to select the routing nodes downward: it can be that the routing node directly jumps downward to the routing node with the same number in the higher layer; or the routing node is routed to a routing node with a different number in the lower layer according to the routing algorithm.

[0121] As an alternative implementation, determining the routing nodes on the r-th layer through the r-th valid bit includes: when the value of the r-th valid bit is 1, inverting the value of the bit corresponding to the r-th valid bit in the number of the (r + 1)-th routing node to obtain the number of the routing node on the r-th layer, where the (r + 1)-th routing node is the node determined on the (r + 1)-th layer.

[0122] As an alternative embodiment, determining the routing node on the r-th layer based on the r-th significant bit further includes: when the value of the r-th significant bit is 0, determining the number of the (r + 1)-th routing node as the number of the routing node on the r-th layer, where the (r + 1)-th routing node is a node determined on the (r + 1)-th layer.

[0123] For example, the target routing node is D = 0110, and the target parent node is f now = 0101. Then the result of the bitwise exclusive OR operation between the binary representation of the source routing node number and the binary representation of the target parent node number is I d = 0011. Starting from the highest significant bit of I d = 0011, for the positions of "1", take the inverse of the corresponding bit of S to obtain the routing node for routing to the next layer. For the positions of "0", directly jump to the routing node with the same number on the next layer. The specific routing path is as follows:

[0124]

[0125] As an alternative embodiment, the number of the source routing node S of the target routing request is 4, S = 0100, and the number of the target routing node D is 6, D = 0110. Check the routing information summary table of the routing node S to obtain the total number of routing requests that have been sent The specific routing path selection is as follows:

[0126] Step S1: Perform a bitwise exclusive OR operation on the binary representation of the source routing node S and the binary representation of the target routing node D to obtain the exclusive OR result I = 0010;

[0127] Step S2: Check each bit of the significant bits in I:

[0128] Since not all the values of each bit of the significant bits in I are 0, it indicates that the source routing node S and the target routing node D are not the same routing node, and proceed to the next step;

[0129] Step S3: Determine the layer where the nearest common parent node of the source routing node S and the target routing node D is located:

[0130] Check the highest position of the bit with a value of "1" in I from low to high. It is in the 2nd bit. Then the nearest common parent node of S and D is in the 2nd layer.

[0131] Step S4: Determine the nearest common parent node of the source routing node S and the target routing node D:

[0132] Check the highest position of the bit with a value of "1" in I from low to high. It is in the 2nd bit. Obtain the set {f} of the nearest common parent nodes, where f satisfies the following conditions:

[0133] Condition 1: f is in the second layer;

[0134] Condition 2: {f} = {S^I father};

[0135] where I father is the binary representation of all integers less than 2 2 = 4;

[0136] {I father} = {0000, 0001, 0010, 0011}

[0137] {f} = {S^I father} = {0100^0000, 0100^0001, 0100^0010, 0100^0011}

[0138] = {0100, 0101, 0110, 0111}

[0139] Sort the elements in {f} in ascending order to get List f = [0100, 0101, 0110, 0111];

[0140] Step S5, determine the number of the nearest common parent nodes of the routing node S and the routing node D

[0141]

[0142] Step S6, determine the target parent node f of the current routing request path according to the total number of routing requests sent and the number of the nearest common parent nodes : now :

[0143]

[0144] And update the routing information summary table of the routing node S,

[0145] Step S7, route to the target parent node:

[0146] S701, the binary representation of the source routing node number S = 0100, the binary representation of the target parent node number f now = 0101, perform bitwise exclusive OR operation, and the result is I f = 0001, the valid bits are the 2 bits from low to high; f ;

[0147] S702, from I fStarting from the least significant bit of the valid bit "0001", the position of "1" flips the corresponding bit of S to obtain the routing node for the upper layer. For the position of "0", simply jump directly to the routing node with the same number in the upper layer. The specific routing path is as follows:

[0148]

[0149] Reach the target parent node f now ;

[0150] Step S8, route to the target routing node D:

[0151] S801, The bitwise XOR operation of the binary representation of the target routing node number D = 0110 and the binary representation of the target parent node number f now = 0101 results in I d = 0011, I d The valid bits are the 2 bits from low to high;

[0152] S802, Starting from the most significant bit of the valid bit of I d = 0011, the position of "1" flips the corresponding bit of S to obtain the routing node for the lower layer. For the position of "0", simply jump directly to the routing node with the same number in the lower layer. The specific routing path is as follows:

[0153]

[0154] Reach the target routing node D;

[0155] Step S8, routing ends.

[0156] Through the description of the above embodiments, those skilled in the art can clearly understand that the method according to the above embodiments can be implemented by means of software plus a necessary general hardware platform. Of course, it can also be implemented by hardware, but in many cases, the former is a better implementation method. Based on such an understanding, the technical solution of the present application, in essence, or the part that contributes to the prior art, can be embodied in the form of a software product. This computer software product is stored in a storage medium (such as ROM / RAM, magnetic disk, optical disk) and includes several instructions to enable a terminal device (which can be a mobile phone, computer, server, or network device, etc.) to execute the methods described in various embodiments of the present application.

[0157] In this embodiment, a device for sending a routing request is further provided. This device is used to implement the above-mentioned embodiments and preferred implementation manners, and those that have been described will not be repeated here. As used hereinafter, the term "module" can be a combination of software and / or hardware that realizes a predetermined function. Although the devices described in the following embodiments are preferably implemented in software, implementation in hardware, or a combination of software and hardware is also possible and contemplated.

[0158] Figure 7 is a structural block diagram of a device for sending a routing request according to an embodiment of the present application. As Figure 7 shown, the device includes: an obtaining module 702, configured to obtain the numbers of the source routing node and the target routing node, where the source routing node is the routing node where the source terminal is located, and the target routing node is the node where the target terminal is located; a first determining module 704, configured to determine the layer where the nearest common parent node is located in the fat tree network topology according to the numbers of the source routing node and the target routing node, where the common parent node is the common parent node of the source routing node and the target routing node; a second determining module 706, configured to determine a target parent node according to the total number of routing requests that have been sent from the source routing node to the target routing node and the number of the common parent nodes on the layer where the nearest common parent node is located; a sending module 708, configured to send the target routing request sent by the source terminal to the target parent node through the source routing node, and send the target routing request to the target terminal through the target parent node.

[0159] In an exemplary embodiment, the device is further configured to perform a bitwise exclusive OR operation on the numbers of the source routing node and the target routing node in binary form to obtain an exclusive OR result; in the case where the exclusive OR result has a non-zero value, determine the layer where the nearest common parent node is located according to the position of the non-zero value in the exclusive OR result.

[0160] In an exemplary embodiment, the device is further configured to determine the first non-zero value that appears in the exclusive OR result in descending order, and determine the first non-zero value as the target non-zero value; determine the position of the bit where the target non-zero value is located in the exclusive OR result in ascending order, and determine the value of the position of the bit as the layer where the nearest common parent node is located.

[0161] In an exemplary embodiment, the device is further configured to determine according to the number of the source routing node and the layer where the nearest common parent node is located the nearest common parent nodes; the total number of routing requests that have been sent from the source routing node to the target routing node, the number of the common parent nodes on the layer where the nearest common parent node is located Determining the target parent node.

[0162] In an exemplary embodiment, the apparatus is further configured to obtain the total number of routing requests that have been sent by the source routing node to the target routing node and the to obtain the target location; determine the parent node at the target location among the nearest common parent nodes as the target parent node.

[0163] In an exemplary embodiment, the apparatus is further configured to obtain the target location through the following formula:

[0164]

[0165] where f now is the target location, and % is the remainder function.

[0166] In an exemplary embodiment, when the nearest common parent node is at the j-th layer, where j is an integer greater than or equal to 1, the apparatus is further configured to obtain the

[0167]

[0168] Take the element values in order starting from binary zero, where the difference between two adjacent element values in the element values is one; obtain the element values and the number of the source routing node to obtain the nearest common parent nodes.

[0169] In an exemplary embodiment, the apparatus is further configured to perform a bitwise exclusive OR operation in binary form on the number of the source routing node and each of the element values to obtain the nearest common parent nodes.

[0170] In an exemplary embodiment, the device is further configured to perform a bitwise exclusive OR operation on the number of the source routing node and the number of the target parent node in binary form to obtain a first target binary number; perform a bitwise exclusive OR operation on the number of the target parent node and the number of the target routing node in binary form to obtain a second target binary number; determine the routing nodes from the source routing node to the target parent node through the first target binary number, so as to send the target routing request from the source routing node to the target parent node; and determine the routing nodes from the target parent node to the target routing node through the second target binary number, so as to send the target routing request from the target parent node to the target routing node.

[0171] In an exemplary embodiment, when the nearest common parent node is at the j-th layer, the device is further configured to take the j significant bits from the lowest to the highest in the first target binary number, where j is an integer greater than or equal to 1; and determine the routing nodes on each layer from the first layer to the j-th layer according to the j significant bits, where the source node is at the 0-th layer and the first layer is the layer above the 0-th layer.

[0172] In an exemplary embodiment, the device is further configured to obtain the routing node on the k-th layer through the following method, where k is greater than or equal to 1 and less than or equal to j: determine the k-th significant bit corresponding to the k-th layer in the j significant bits, where each significant bit in the j significant bits corresponds to one of the first layer to the j-th layer; and determine the routing node on the k-th layer through the k-th significant bit.

[0173] In an exemplary embodiment, when the value of the k-th significant bit is 1, the device is further configured to invert the value of the bit corresponding to the k-th significant bit in the number of the (k - 1)-th routing node to obtain the number of the routing node on the k-th layer, where the (k - 1)-th routing node is the node determined on the (k - 1)-th layer, and when k is equal to 1, the (k - 1)-th routing node is the source node.

[0174] In an exemplary embodiment, when the value of the k-th significant bit is 0, the device is further configured to determine the number of the routing node on the k-th layer as the number of the (k - 1)-th routing node, where the (k - 1)-th routing node is the node determined on the (k - 1)-th layer, and when k is equal to 1, the (k - 1)-th routing node is the source node.

[0175] In an exemplary embodiment, the apparatus is further configured to, when the nearest common parent node is at the j-th layer, take the j significant bits from the lowest to the highest in the second target binary number, where j is an integer greater than or equal to 1; and determine routing nodes on each layer from the (j - 1)-th layer to the 0-th layer according to the j significant bits.

[0176] In an exemplary embodiment, the apparatus is further configured to obtain the routing node on the r-th layer in the following manner, where r is an integer greater than or equal to 0 and less than or equal to j - 1: determine the r-th significant bit corresponding to the r-th layer in the j significant bits, where each significant bit in the j significant bits corresponds one-to-one to the 0-th layer to the (j - 1)-th layer; and determine the routing node on the r-th layer through the r-th significant bit.

[0177] In an exemplary embodiment, the apparatus is further configured to, when the value of the r-th significant bit is 1, invert the value of the bit corresponding to the r-th significant bit in the number of the (r + 1)-th routing node to obtain the number of the routing node on the r-th layer, where the (r + 1)-th routing node is the node determined on the (r + 1)-th layer.

[0178] In an exemplary embodiment, the apparatus is further configured to, when the value of the r-th significant bit is 0, determine the number of the (r + 1)-th routing node as the number of the routing node on the r-th layer, where the (r + 1)-th routing node is the node determined on the (r + 1)-th layer.

[0179] In an exemplary embodiment, the apparatus is further configured to obtain the total number of routing requests that the source routing node has sent to the target routing node in the routing request summary table of the source routing node; and perform an increment operation on the total number of routing requests that the source routing node has sent to the target routing node in the routing request summary table of the source routing node.

[0180] It should be noted that the above-mentioned various modules can be implemented by software or hardware. For the latter, it can be implemented in the following ways, but not limited thereto: all the above-mentioned modules are located in the same processor; or, the above-mentioned various modules are separately located in different processors in any combination form.

[0181] An embodiment of the present application further provides a computer-readable storage medium, in which a computer program is stored, and the computer program is configured to execute the steps in any one of the above method embodiments when running.

[0182] In an exemplary embodiment, the above computer-readable storage medium may include, but is not limited to: various media such as USB flash drives, read-only memory (ROM for short), random access memory (RAM for short), external hard drives, magnetic disks, or optical discs that can store computer programs.

[0183] An embodiment of the present application also provides an electronic device, including a memory and a processor. A computer program is stored in the memory, and the processor is configured to run the computer program to execute the steps in any one of the above method embodiments.

[0184] In an exemplary embodiment, the above electronic device may further include a transmission device and input / output devices. Among them, the transmission device is connected to the above processor, and the input / output devices are connected to the above processor.

[0185] An embodiment of the present application also provides a computer program product. The above computer program product includes a computer program, and when the computer program is executed by a processor, it implements the steps in any one of the above method embodiments.

[0186] For the specific examples in this embodiment, reference may be made to the examples described in the above embodiments and exemplary embodiments, and details are not repeated here.

[0187] Obviously, those skilled in the art should understand that the above modules or steps of the present application can be implemented by a general-purpose computing device. They can be concentrated on a single computing device or distributed on a network composed of multiple computing devices. They can be implemented by program codes executable by the computing device, so that they can be stored in a storage device and executed by the computing device. And in some cases, the steps shown or described can be executed in a different order than here, or they can be separately made into individual integrated circuit modules, or multiple modules or steps among them can be made into a single integrated circuit module to implement. In this way, the present application is not limited to any specific combination of hardware and software.

[0188] The above are only the preferred embodiments of the present application and are not used to limit the present application. For those skilled in the art, various changes and modifications can be made to the present application. Any modification, equivalent replacement, improvement, etc. made within the principle of the present application shall be included in the protection scope of the present application.

Claims

1. A method for sending a routing request, characterized in that Applied to a fat-tree network topology, the relationship between the total number of layers \(l\) of the fat-tree network topology and the number of source nodes \(n\) is \(l = \log_2n\). The relationship between the number of routing nodes \(k\) in each layer and the number of source nodes \(n\) is: \(k=n / 2\). The routing node \(d\) in the \(i\)-th layer is connected to the routing node \(d\) in the \((i + 1)\)-th layer. Here, \(d\) and \(d\) xor are the node numbers, \(n\) is an integer greater than 0, and \(i\in\{0, 1,\ldots l - 1\}\); where: xor ​ d xor = bin(d) ∧ bin(2 i ) The bin function converts an integer into a binary number, and ∧ is the bitwise exclusive OR function in binary form; The method includes: Obtaining the numbers of the source routing node and the destination routing node, where the source routing node is the routing node where the source terminal is located, and the destination routing node is the node where the destination terminal is located; Determining the layer where the nearest common parent node is located in the fat-tree network topology according to the numbers of the source routing node and the destination routing node, where the common parent node is the common parent node of the source routing node and the destination routing node; Determining the target parent node according to the total number of routing requests already sent from the source routing node to the destination routing node and the number of the common parent nodes on the layer where the nearest common parent node is located; Sending the target routing request sent by the source terminal to the target parent node through the source routing node, and sending the target routing request to the destination terminal through the target parent node.

2. The method according to claim 1, wherein Determining the layer where the nearest common parent node is located in the fat-tree network topology according to the numbers of the source routing node and the destination routing node includes: Performing a bitwise exclusive OR operation on the number of the source routing node and the number of the destination routing node in binary form to obtain an exclusive OR result; In the case where the exclusive OR result has a non-zero value, determining the layer where the nearest common parent node is located according to the position of the non-zero value in the exclusive OR result.

3. The method according to claim 2, wherein Determining the layer where the nearest common parent node is located according to the position of the non-zero value in the exclusive OR result includes: Determining the first non-zero value that appears in the exclusive OR result in descending order, and determining the first non-zero value as the target non-zero value; Determining the position of the bit where the target non-zero value is located in the exclusive OR result in ascending order, and determining the value of the position of the bit as the layer where the nearest common parent node is located.

4. The method according to claim 1, wherein Determining the target parent node according to the total number of routing requests already sent from the source routing node to the destination routing node and the number of the common parent nodes on the layer where the nearest common parent node is located includes: Determine the nearest common parent nodes according to the number of the source routing node and the layer where the nearest common parent node is located; The total number of routing requests sent by the source routing node to the target routing node, and the number of common parent nodes on the layer where the nearest common parent node is located When determining the target parent node.

5. The method according to claim 4, wherein The total number of routing requests sent from the source routing node to the target routing node, and the number of common parent nodes on the layer where the nearest common parent node is located Determining the target parent node includes: The total number of routing requests that have been sent from the source routing node to the target routing node and the obtain the target location; Determine the parent node at the target position among the nearest common parent nodes as the target parent node.

6. The method according to claim 5, wherein The total number of routing requests that have been sent from the source routing node to the target routing node and the obtain the target location, including: Obtaining the target position through the following formula: where f now is the target position, and % is the modulo function.

7. The method according to claim 4, characterized in that, Determine according to the number of the source routing node and the layer where the nearest common parent node is located the nearest common parent nodes, including: In the case where the most recent common parent node is at the j-th layer, where j is an integer greater than or equal to 1, the following formula is used to obtain the Take in sequence starting from binary zero element values, where the difference between two adjacent element values among the element values is one; Through the said element values and the number of the source routing node, obtain the said nearest common parent nodes.

8. The method according to claim 7, wherein Through the said element values and the number of the source routing node, obtain the said nearest common parent nodes, including: Perform a bitwise exclusive OR operation in binary form on the number of the source routing node and each of the element values to obtain the nearest common parent nodes.

9. The method according to claim 7, wherein Sending the target routing request sent by the source terminal to the target parent node through the source routing node, and sending the target routing request to the destination terminal through the target parent node includes: Performing a bitwise exclusive OR operation on the number of the source routing node and the number of the target parent node in binary form to obtain a first target binary number; Performing a bitwise exclusive OR operation on the number of the target parent node and the number of the destination routing node in binary form to obtain a second target binary number; Determining the routing node from the source routing node to the target parent node through the first target binary number to send the target routing request from the source routing node to the target parent node; Determining the routing node from the target parent node to the destination routing node through the second target binary number to send the target routing request from the target parent node to the destination routing node.

10. The method according to claim 9, characterized in that, Determining the routing node from the source routing node to the target parent node based on the first target binary number includes: In the case where the nearest common parent node is at the j-th layer, taking the j significant bits from the lowest to the highest in the first target binary number, where j is an integer greater than or equal to 1; Determining the routing nodes on each layer from the first layer to the j-th layer according to the j significant bits, where the source node is at the 0-th layer, and the first layer is the layer above the 0-th layer.

11. The method according to claim 10, wherein Determining the routing nodes on each layer from the first layer to the j-th layer according to the j significant bits includes: Obtaining the routing node on the k-th layer in the following way, where k is greater than or equal to 1 and less than or equal to j: Determining the k-th significant bit corresponding to the k-th layer in the j significant bits, where each significant bit in the j significant bits corresponds one-to-one to the first layer to the j-th layer; Determining the routing node on the k-th layer through the k-th significant bit.

12. The method according to claim 11, wherein The determining the routing node on the k-th layer through the k-th significant bit includes: In the case where the value of the k-th significant bit is 1, taking the inverse of the value of the bit corresponding to the k-th significant bit in the number of the (k - 1)-th routing node to obtain the number of the routing node on the k-th layer, where the (k - 1)-th routing node is the node determined on the (k - 1)-th layer, and when k equals 1, the (k - 1)-th routing node is the source node.

13. The method according to claim 11, wherein The determining the routing node on the k-th layer through the k-th significant bit further includes: In the case where the value of the k-th significant bit is 0, determining the number of the (k - 1)-th routing node as the number of the routing node on the k-th layer, where the (k - 1)-th routing node is the node determined on the (k - 1)-th layer, and when k equals 1, the (k - 1)-th routing node is the source node.

14. The method according to claim 9, characterized in that, Determining the routing node from the target parent node to the target routing node based on the second target binary number includes: In the case where the nearest common parent node is at the j-th layer, taking the j significant bits from the lowest to the highest in the second target binary number, where j is an integer greater than or equal to 1; Determining the routing nodes on each layer from the (j - 1)-th layer to the 0-th layer according to the j significant bits.

15. The method according to claim 14, wherein Determining the routing nodes on each layer from the (j - 1)-th layer to the 0-th layer according to the j significant bits includes: Obtaining the routing node on the r-th layer in the following way, where r is an integer greater than or equal to 0 and less than or equal to j - 1: Determining the r-th significant bit corresponding to the r-th layer in the j significant bits, where each significant bit in the j significant bits corresponds one-to-one to the 0-th layer to the (j - 1)-th layer; Determining the routing node on the r-th layer through the r-th significant bit.

16. The method according to claim 15, wherein The determining the routing node on the r-th layer through the r-th significant bit includes: When the value of the r-th significant bit is 1, invert the value of the bit corresponding to the r-th significant bit in the number of the (r + 1)-th routing node to obtain the number of the routing node on the r-th layer, where the (r + 1)-th routing node is a node determined on the (r + 1)-th layer.

17. The method according to claim 15, wherein Determining the routing node on the r-th layer through the r-th significant bit further includes: When the value of the r-th significant bit is 0, determine the number of the (r + 1)-th routing node as the number of the routing node on the r-th layer, where the (r + 1)-th routing node is a node determined on the (r + 1)-th layer.

18. The method according to claim 4, wherein: The total number of routing requests that have been sent from the source routing node to the target routing node, and the number of the common parent nodes at the layer where the nearest common parent node is located Before determining the target parent node, the method further includes: obtaining, from the routing request summary table of the source routing node, the total number of routing requests that have been sent from the source routing node to the target routing node; After sending the target routing request sent by the source terminal to the target parent node through the source routing node, the method further includes: performing an increment operation on the total number of routing requests that the source routing node has sent to the target routing node in the routing request summary table of the source routing node.

19. An apparatus for sending a routing request, characterized in that, Including: An acquisition module, configured to acquire the numbers of the source routing node and the target routing node, where the source routing node is the routing node where the source terminal is located, and the target routing node is the node where the target terminal is located; A first determination module, configured to determine the layer where the nearest common parent node is located in the fat tree network topology according to the numbers of the source routing node and the target routing node, where the common parent node is the common parent node of the source routing node and the target routing node; A second determination module, configured to determine the target parent node according to the total number of routing requests that the source routing node has sent to the target routing node and the number of the common parent nodes on the layer where the nearest common parent node is located; A sending module, configured to send the target routing request sent by the source terminal to the target parent node through the source routing node, and send the target routing request to the target terminal through the target parent node.

20. A computer-readable storage medium, wherein: A computer program is stored in the computer-readable storage medium, and when the computer program is executed by a processor, the steps of the method described in any one of claims 1 to 18 are implemented.

21. An electronic device, including a memory, a processor, and a computer program stored on the memory and executable on the processor, wherein: When the processor executes the computer program, the steps of the method described in any one of claims 1 to 18 are implemented.

22. A computer program product, including a computer program, wherein: When the computer program is executed by a processor, the steps of the method described in any one of claims 1 to 18 are implemented.