A data transmission method and device for non-direct connection topology network

By using different search algorithms in the non -direct topology network to determine multiple routing paths, and select the path according to the encoding of the data packet, the obstruction problem that may occur in the certain routing algorithm is solved, the data transmission efficiency is improved, and the load balancing is achieved. Essence

CN116016330BActive Publication Date: 2025-01-24ZHEJIANG LAB
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
CN202310004859.9
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2023-01-03
Publication Date
2025-01-24
Estimated Expiration
2043-01-03

AI Technical Summary

Technical Problem

In non-direct-connected topological networks, when deterministic routing algorithm is used for data transmission, blockage may occur, reducing data transmission efficiency.

Method used

By determining the source nodes and destination nodes in the non -direct topology network, different search algorithms (such as sequential breadth and priority search and reverse sequence breadth) determine the search trees, and then determine multiple route paths, and based on the data package of the data package Code selection different route paths for transmission.

Benefits of technology

By using multiple routing paths for data transmission, congestion is reduced, data transmission efficiency is improved, and load balancing in the spatial distribution dimension and time distribution dimension is achieved.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116016330B_ABST
    Figure CN116016330B_ABST
Patent Text Reader

Abstract

The present specification discloses a data transmission method for a non-directly connected topology network. A source node and a destination node corresponding to the source node can be determined in the non-directly connected topology network, and the source node is used to send data to the destination node. The source node is used to be the root node of the tree, and different search algorithms are used to determine each search tree. Then, based on each search tree, each routing path used to transmit the data sent by the source node to the destination node can be determined, so that each data packet sent from the source node can be transmitted to the destination node through each routing path, wherein the routing paths used when transmitting different data packets are not completely the same, thereby achieving the effect of reducing congestion.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to the field of computer technology, and more particularly to a method and device for data transmission in a non-direct topology network. Background Art

[0002] In practical applications, the network can be divided into a directly connected topology network and an indirect topology network. The indirect topology network includes a source node and a destination node. The transmission of data packets between the source node and the destination node is transmitted through a switching node.

[0003] In a non-direct topology network, deterministic routing algorithms such as breadth-first-search (BFS), depth-first-search (DFS), and shortest path routing methods are usually used to find paths. The so-called deterministic path algorithm refers to using a path to transmit data sent by the source node to the destination node within a period of time.

[0004] However, when a deterministic routing algorithm is used for data transmission, since the same path is used for data transmission over a period of time, congestion may occur, thereby reducing the efficiency of data transmission.

[0005] Therefore, how to reduce the occurrence of blockages during data transmission and ensure the efficiency of data transmission is an urgent problem to be solved. Summary of the invention

[0006] This specification provides a data transmission method and device for a non-direct connection topology network to partially solve the above-mentioned problems existing in the prior art.

[0007] This manual adopts the following technical solutions:

[0008] This specification provides a data transmission method for a non-direct topology network, including:

[0009] Determining a source node and a destination node corresponding to the source node in the non-directly connected topology network, the source node being used to send data to the destination node;

[0010] Taking the source node as the root node of the tree, different search algorithms are used to determine various search trees;

[0011] Determine, according to each search tree, each routing path used to transmit the data sent by the source node to the destination node;

[0012] Each data packet sent from the source node is transmitted to the destination node through the routing paths, wherein the routing paths used when transmitting different data packets are not completely the same.

[0013] Optionally, the different search algorithms include: sequential breadth-first search and reverse breadth-first search.

[0014] Optionally, transmitting each data packet sent from the source node to the destination node through each routing path specifically includes:

[0015] For each data packet, determine a routing path corresponding to the data packet according to a code corresponding to the data packet, different codes correspond to different routing paths, and the code includes a binary code;

[0016] The data packet is transmitted from the source node to the destination node according to the routing path corresponding to the data packet.

[0017] Optionally, for each data packet, before determining a routing path corresponding to the data packet according to a code corresponding to the data packet, the method further includes:

[0018] The routing paths determined by different search trees are written into different routing tables;

[0019] Determine the routing path corresponding to the data packet according to the code corresponding to the data packet, specifically including:

[0020] According to the code corresponding to the data packet, the routing path corresponding to the data packet is determined from the corresponding routing table.

[0021] Optionally, the source node corresponds to multiple destination nodes. The routing paths used to send data packets from the source node to different destination nodes at the same time are determined by different search trees.

[0022] Optionally, before transmitting each data packet sent from the source node to the destination node through each routing path, the method further includes:

[0023] Create a number of routing tables that matches the number of search algorithms;

[0024] In the same routing table, for each destination node, according to the node address code corresponding to the destination node, the routing path corresponding to the destination node is selected and written into the routing table, wherein the routing paths corresponding to the destination nodes with different node address codes in the same routing table have different search algorithms;

[0025] Transmitting each data packet sent from the source node to the destination node through each routing path specifically includes:

[0026] For each destination node, a routing path is selected from each routing table according to the node address code of the destination node, and each data packet sent from the source node is transmitted to the destination node.

[0027] Optionally, taking the source node as the root node of the tree, different search algorithms are used to determine the search trees, specifically including:

[0028] Create an initially empty queue of nodes to be searched, a queue of visited nodes, and a queue of neighboring nodes.

[0029] The node is added to the queue of nodes to be searched and the queue of nodes that have been visited;

[0030] 0 Determine whether the queue of nodes to be searched is empty. If it is not empty, read the first node in the queue of nodes to be searched.

[0031] Nodes are found and deleted from the queue of nodes to be searched, and the adjacent nodes of the current node are added to the queue of neighbor nodes in the specified order according to the address of the destination node;

[0032] Determine whether the neighbor node queue is empty. If not, read the first node in the neighbor node queue.

[0033] Click and delete this node in the neighbor node queue. If it is empty, return to the previous step;

[0034] 5. Determine whether the current neighbor node exists in the visited node queue. If so, return to the previous step.

[0035] If it does not exist, add it to the queue of nodes to be searched and the queue of visited nodes, and specify the current node as the parent node of the current neighbor node, and read the first node in the queue of nodes to be searched again through the above steps until the queue of nodes to be searched is empty. When generating a sequential breadth-first spanning tree, sequential visits are performed.

[0036] Ask the neighbor nodes of the current node and add them to the neighbor node queue; when generating a reverse breadth-first tree, visit the neighbor nodes of the current node in reverse order and add them to the neighbor node queue.

[0037] Optionally, the network structure of the non-direct connection topology network includes but is not limited to one of a cross switch, a mesh network, a butterfly network, a CLOS network, a tree network, and an irregular network topology.

[0038] Optionally, the application scenario of the non-direct connection topology network includes but is not limited to one of an on-chip interconnection network, an on-die interconnection network and a macroscopic computer network.

[0039] 5 This specification provides a data transmission device for a non-direct connection topology network, including:

[0040] A network determination module, used to determine a source node and a destination node corresponding to the source node in the non-directly connected topology network, the source node being used to send data to the destination node;

[0041] A search tree determination module, used to determine each search tree using different search algorithms with the source node as the root node of the tree;

[0042] A path determination module, used to determine, based on each search tree, each routing path used to transmit the data sent by the source node to the destination node;

[0043] The transmission module is used to transmit each data packet sent from the source node to the destination node through the routing paths, wherein the routing paths used when transmitting different data packets are not completely the same.

[0044] The present specification provides a computer-readable storage medium, wherein the storage medium stores a computer program, and when the computer program is executed by a processor, the data transmission method for a non-directly connected topology network is implemented.

[0045] The present specification provides an electronic device, including a memory, a processor, and a computer program stored in the memory and executable on the processor, wherein the processor implements the above-mentioned data transmission method for a non-directly connected topology network when executing the program.

[0046] At least one of the above technical solutions adopted in this specification can achieve the following beneficial effects:

[0047] It can be seen from the above-mentioned data transmission method for a non-directly connected topology network that a source node and a destination node corresponding to the source node can be determined in the non-directly connected topology network, and the source node is used to send data to the destination node; with the source node as the root node of the tree, different search algorithms are used to determine each search tree, and then, based on each search tree, each routing path used to transmit the data sent by the source node to the destination node can be determined, so that each data packet sent from the source node can be transmitted to the destination node through each routing path, wherein the routing paths used when transmitting different data packets are not exactly the same.

[0048] In the above-mentioned data transmission method for non-direct topology networks, for data transmission between the same source node and the same destination node, multiple paths can be obtained through search trees determined by multiple search algorithms. Since the search algorithms used are different (for example, sequential breadth-first search and reverse breadth-first search), the determined routing paths are also different. In this way, different routing paths can be used when transmitting data packets, thereby reducing congestion. BRIEF DESCRIPTION OF THE DRAWINGS

[0049] The drawings described herein are used to provide a further understanding of this specification and constitute a part of this specification. The illustrative embodiments and descriptions of this specification are used to explain this specification and do not constitute an improper limitation on this specification. In the drawings:

[0050] Figure 1 A flowchart of a data transmission method for a non-direct topology network in this specification;

[0051] Figure 2 A schematic diagram of a tree-type network topology network structure provided in this specification;

[0052] Figure 3 A flow chart of generating a breadth-first spanning tree in a sequential / reverse order provided in this specification;

[0053] Figure 4 A schematic diagram of a sequential breadth-first spanning tree provided in this specification;

[0054] Figure 5 A schematic diagram of a reverse breadth-first spanning tree provided in this specification;

[0055] Figure 6 A schematic diagram of a routing table 1 provided for this specification;

[0056] Figure 7 A schematic diagram of routing table 2 provided for this specification;

[0057] Figure 8 This is a schematic diagram of the actual situation when the T1 node is used as the source node and the T8 node is used as the destination node for routing.

[0058] Fig. 9 A schematic diagram of the actual situation when a T1 node is used as a source node and a T3 node is used as a destination node for routing provided in this specification;

[0059] Fig.10 This is a schematic diagram of a data transmission device for a non-direct connection topology network in this specification;

[0060] Fig.11 The corresponding Figure 1 Schematic diagram of electronic equipment. DETAILED DESCRIPTION

[0061] In order to make the purpose, technical solutions and advantages of this specification more clear, the technical solutions of this specification will be clearly and completely described below in combination with the specific embodiments of this specification and the corresponding drawings. Obviously, the described embodiments are only part of the embodiments of this specification, not all of them. Based on the embodiments in this specification, all other embodiments obtained by ordinary technicians in this field without creative work are within the scope of protection of this specification.

[0062] The technical solutions provided by the embodiments of this specification are described in detail below in conjunction with the accompanying drawings.

[0063] Figure 1 A flowchart of a data transmission method for a non-direct topology network provided in this specification specifically includes the following steps:

[0064] S100: determining a source node and a destination node corresponding to the source node in the non-directly connected topology network, wherein the source node is used to send data to the destination node.

[0065] S102: Taking the source node as the root node of the tree, different search algorithms are used to determine various search trees.

[0066] S104: Determine, according to each search tree, each routing path used to transmit the data sent by the source node to the destination node.

[0067] S106: Transmitting each data packet sent from the source node to the destination node via the routing paths, wherein the routing paths used when transmitting different data packets are not completely the same.

[0068] The above-mentioned non-direct topology network includes a source node and a destination node. The non-direct topology network includes a terminal node and a switching node. The terminal node can be a source node or a destination node. In other words, routing can be performed between the source node and the destination node through the switching node. In the non-direct topology network, a source node and a destination node corresponding to the source node can be determined. The source node is used to send data to the destination node. Then, the source node can be used as the root node of the tree and different search algorithms can be used to determine each search tree. According to each search tree, each routing path used to transmit the data sent by the source node to the destination node can be determined. Finally, each data packet sent from the source node can be transmitted to the destination node through each routing path, wherein the routing paths used when transmitting different data packets are not completely the same.

[0069] Here, the use of two search algorithms is used as an example for explanation, that is, the above-mentioned different search algorithms can be two search algorithms, and these two search algorithms can be sequential breadth-first search and reverse breadth-first search. Among them, sequential breadth-first search and reverse breadth-first search are methods extended from breadth-first search in this specification. The sequential breadth-first search and reverse breadth-first search are opposite in order when searching for neighbor nodes, so that the determined routing path from the source node to the destination node is different. The search tree determined by the sequential breadth-first search is a sequential breadth-first spanning tree, and the search tree determined by the reverse breadth-first search is a reverse breadth-first spanning tree.

[0070] When a sequential breadth-first spanning tree is generated by a sequential breadth-first search, and a reverse breadth-first spanning tree is generated by a reverse breadth-first search, the following can be done: an initially empty queue of nodes to be searched, a queue of visited nodes, and a queue of neighboring nodes are established, and a source node is added to the queue of nodes to be searched and the queue of visited nodes; whether the queue of nodes to be searched is empty is determined, and if it is not empty, the first node in the queue of nodes to be searched is read and deleted from the queue of nodes to be searched, and the adjacent nodes of the current node are added to the queue of neighboring nodes in a specified order according to the address of the destination node; whether the queue of neighboring nodes is empty is determined, and if it is not empty, the first node in the queue of neighboring nodes is read and deleted from the queue of nodes to be searched Delete this node from the neighbor node queue. If it is empty, return to the previous step. Determine whether the current neighbor node exists in the visited node queue. If so, return to the previous step. If not, add it to the node queue to be searched and the visited node queue, and specify the current node as the parent node of the current neighbor node. Read the first node in the node queue to be searched again through the above steps until the node queue to be searched is empty. When generating a sequential breadth-first spanning tree, visit the neighbor nodes of the current node sequentially and add them to the neighbor node queue. When generating a reverse breadth-first spanning tree, visit the neighbor nodes of the current node in reverse order and add them to the neighbor node queue.

[0071] That is to say, the above process illustrates what the processes of generating sequential breadth-first spanning trees and reverse breadth-first spanning trees are respectively, that is, when generating sequential breadth-first spanning trees and reverse breadth-first spanning trees, the general processes are the same, but the sorting order of neighbor nodes in the neighbor node queue should be opposite, so that the routing path generated by the sequential breadth-first spanning tree and the routing path generated by the reverse breadth-first spanning tree can be different.

[0072] It should be noted that when sending data packets, routing paths determined by different search algorithms can be used for routing. Specifically, for each data packet, the routing path corresponding to the data packet can be determined according to the encoding corresponding to the data packet, and different encodings correspond to different routing paths; according to the routing path corresponding to the data packet, the data packet is transmitted from the source node to the destination node, and the encoding mentioned here includes binary encoding.

[0073] Among them, after the data packet is encoded, any one bit (such as the first bit or the last bit) can be taken as the code corresponding to the data packet. For example, if the data packet is binary-encoded, the code of the data packet is 1 or 0.

[0074] That is to say, the routing paths used by data packets transmitted at different times may be determined by different search algorithms. For example, routing paths determined by sequential breadth-first search and reverse breadth-first search may be used alternately, such as data packet 1 uses the routing path determined by sequential breadth-first search, and data packet 2 uses the routing path determined by reverse breadth-first search.

[0075] It should be noted that the routing paths determined by different search trees can be written into different routing tables, so that the routing path corresponding to the data packet can be determined from the corresponding routing table according to the encoding corresponding to the data packet.

[0076] In addition, a source node may correspond to multiple destination nodes. Among them, the routing paths used to send data packets from the source node to different destination nodes at the same time are determined by different search trees. For example, source node 1 corresponds to destination node 1 and destination node 2. At the same time, the routing path used to send data packets to destination node 1 can be determined by sequential breadth-first search, and the routing path used to send data packets to destination node 2 can be determined by reverse breadth-first search.

[0077] Specifically, a number of routing tables that is consistent with the number of search algorithms can be created. In the same routing table, for each destination node, the routing path corresponding to the destination node can be selected based on the node address code corresponding to the destination node and written into the routing table. The search algorithms corresponding to the routing paths of destination nodes with different node address codes in the same routing table may be different.

[0078] Then, for each destination node, a routing path may be selected from each routing table according to the node address code of the destination node, and each data packet sent from the source node may be transmitted to the destination node.

[0079] The node address code corresponding to the destination node mentioned here may refer to encoding the node address and taking a certain bit (such as the first bit or the last bit) as the node address code.

[0080] Still taking the two search algorithms as an example, the destination node address can be binary-encoded, and the sequential or reverse breadth-first spanning tree can be selected according to the last bit of the code, and the routing path can be generated and written into routing table 1. For example, if the code is 1, the sequential breadth-first spanning tree is selected, and if the code is 0, the reverse breadth-first spanning tree is selected. The destination node address is binary-encoded, and the reverse or sequential breadth-first spanning tree is selected according to the last bit of the code, and the routing path can be generated and written into routing table 2. For example, if the code is 1, the reverse breadth-first spanning tree is selected, and if the code is 0, the sequential breadth-first spanning tree is selected.

[0081] When choosing how to use a routing path, for a destination node, a routing path can be selected according to the encoding of the data packet that needs to be transmitted to the destination node. For example, if the last bit of the node address encoding of the destination node is 1, a routing path determined by sequential breadth-first search is stored in routing table 1 from the source node to the destination node, and a routing path determined by reverse breadth-first search is stored in routing table 2 from the source node to the destination node. The first data packet sent to the destination node can use the routing path of routing table 1, the second data packet can use the routing path of routing table 2, and so on, so that data packets can be transmitted by different routing paths.

[0082] An example of this specification is described in detail below by taking two search algorithms and alternately using routing paths determined by the two search algorithms when sending data packets as an example.

[0083] Figure 2 This is a schematic diagram of a tree-type network topology network structure provided in this specification.

[0084] like Figure 2 As shown, in the embodiment of the present invention, a tree-type network topology network structure is provided, wherein the terminal nodes are represented by circles and the switching nodes are represented by squares, and a total of 16 terminal nodes and 18 switching nodes are included, wherein the terminal nodes are divided into source nodes and destination nodes according to the functions they are responsible for during operation, and their physical entities are the same terminal node. Figure 2It can be seen that the terminal nodes T1-T16 are connected to the first-level switching nodes A1-A8 through interconnection lines, the first-level switching nodes A1-A8 are connected to the second-level switching nodes B1-B8 through interconnection lines, and the second-level switching nodes B1-B8 are connected to the third-level switching nodes C1-C2 through interconnection lines. In the topological structure, the transmission rate represented by each interconnection line is 10Gbps, so the transmission capacity between the terminal node and the first-level switching node is 160Gbps, the transmission capacity between the first-level switching node and the second-level switching node is 160Gbps, and the transmission capacity between the second-level switching node and the third-level switching node is 80Gbps.

[0085] The sequential / reverse breadth-first spanning tree generation flow chart is as follows Figure 3 As shown, according to this topology structure, the sequential and reverse breadth-first spanning trees generated with T1 node as the source node are as follows: Figure 4 and Figure 5 shown.

[0086] Figure 3 A flow chart of generating a breadth-first spanning tree in a sequential / reverse order is provided in this specification.

[0087] Figure 3 A process of generating a breadth-first spanning tree in a sequential / reverse order is shown, wherein S11: establish a queue of nodes to be searched, a queue of visited nodes, and a queue of neighboring nodes, and add the source node to the queue of nodes to be searched and the queue of visited nodes. S12: determine whether the queue of nodes to be searched is empty. If it is empty, the process ends; if it is not empty, read the first node in the queue of nodes to be searched and delete this node in the queue of nodes to be searched, and enter step S13.

[0088] S13: Add the neighboring nodes of the current node to the neighbor node queue in a specific order according to the destination node address. S14: Determine whether the neighbor node queue is empty. If it is empty, return to step S12; if it is not empty, read the first node in the neighbor node queue and delete this node in the neighbor node queue, and enter step S15. S15: Determine whether the current neighbor node exists in the visited node queue. If it does, return to step S14; if it does not exist, add it to the node queue to be searched and the visited node queue, and specify the current node as the parent node of the current neighbor node, and return to step S14.

[0089] Wherein, in step S13, when generating a sequential breadth-first spanning tree, the neighboring nodes of the current node are sequentially visited and added to the neighbor node queue; when generating a reverse breadth-first spanning tree, the neighboring nodes of the current node are reversely visited and added to the neighbor node queue. That is to say, the sequential breadth-first spanning tree can be determined by a conventional breadth-first search, while the reverse breadth-first spanning tree is the reverse order of visiting neighbor nodes when constructing the neighbor node queue in the conventional breadth-first search.

[0090] Figure 4 It is a sequential breadth-first spanning tree provided in this specification.

[0091] Figure 5 A reverse breadth-first spanning tree is provided in this specification.

[0092] Taking node A1 as an example, the order of the adjacent nodes of node A1 is (T1, T2, B1, B2), where T1 is a visited node. When generating a sequential breadth-first spanning tree, the order of accessing the adjacent nodes of node A1 is T2-B1-B2; when generating a reverse breadth-first spanning tree, the order of accessing the adjacent nodes of node A1 is B2-B1-T2. By analogy, we can get the following: Figure 4 , 5 In-order and reverse-order breadth-first spanning trees are shown.

[0093] Then, there can be two routing tables, and the paths from the source node to the destination node in the two routing tables can be determined by sequential and reverse breadth-first spanning trees, such as Figure 6 and Figure 7 shown.

[0094] Figure 6 A schematic diagram of the routing table 1 provided for this specification.

[0095] Figure 7 A schematic diagram of routing table 2 provided for this specification.

[0096] Taking the T3 node as an example, the last bit of the binary code of the T3 node address is 1, so according to the sequential breadth-first spanning tree, the routing path written into the routing table 1 is T1-A1-B1-A2-T3; taking the T4 node as an example, the last bit of the binary code of the T4 node address is 0, so according to the reverse breadth-first spanning tree, the routing path written into the routing table 1 is T1-A1-B2-A2-T4. By analogy, we can get the following: Figure 6 The routing table 1 shown has the T1 node as the source node.

[0097] When generating routing table 2, it is similar. When the last digit of the address code is 0, routing is performed according to the sequential breadth-first spanning tree. When the last digit of the address code is 1, routing is performed according to the reverse breadth-first spanning tree. Figure 7 The routing table 2 shown has the T1 node as the source node.

[0098] By traversing all destination nodes and source nodes, routing path tables 1 and 2 between all nodes can be generated. For the sake of clarity, only routing tables 1 and 2 with T1 node as the source node are shown in the embodiment of the present invention. Figure 8 shown.

[0099] Figure 8 This specification provides a schematic diagram of the actual situation when the T1 node is used as the source node and the T8 node is used as the destination node for routing.

[0100] Taking T8 node as the destination node as an example, when the first data packet is transmitted, according to the last bit of the binary code of the data packet is 1, it can be known that routing table 2 is selected for routing, that is, the routing path is: T1-A1-B1-C1-B3-A4-T8; when the second data packet is transmitted, according to the last bit of the binary code of the data packet is 0, it can be known that routing table 1 is selected for routing, that is, the routing path is: T1-A1-B2-C2-B4-A4-T8.

[0101] The routing method of the present invention has the following advantages:

[0102] Selecting a route based on the destination node address can perform load balancing in the spatial distribution dimension: In the embodiment of the present invention, if the traditional breadth-first search algorithm is used, the routing paths from the T1 node to the T7 node and from the T2 node to the T8 node are as follows: Figure 8 As shown by the solid arrows in the figure, they are T1-A1-B1-C1-B3-A4-T7 and T2-A1-B1-C1-B3-A4-T8, that is, the load flow is concentrated on the path A1-B1-C1-B3-A4.

[0103] When the total traffic injection rate of nodes T1 and T2 is greater than 10 Gbps, the A1-B1-C1-B3-A4 path will be blocked. Figure 8 As can be seen from the dotted arrow in the figure, the routing path A1-B2-C2-B4-A4 can also realize routing from the T1 node to the T7 node, but it is in an idle state. The routing method of the present invention can make full use of multiple paths from the source node to the destination node in the network topology to achieve load balancing in the spatial distribution dimension. When the throughput from the T1 node to the T7 node and from the T2 node to the T8 node are both 10 Gbps, the throughput on the A1-B1-C1-B3-A4 and A1-B2-C2-B4-A4 paths can be 10 Gbps to avoid blocking.

[0104] Selecting routes based on data packet numbers can perform load balancing in the traffic time distribution dimension: In supercomputer interconnection network applications, a large amount of data traffic is concentrated in the source node and its surrounding destination nodes, that is, the supercomputer interconnection network will work in a local hotspot mode.

[0105] Fig. 9 This specification provides a schematic diagram of the actual situation when the T1 node is used as the source node and the T3 node is used as the destination node for routing.

[0106] In the embodiment of the present invention, if the time distribution dimension load balancing is not adopted, the routing path with T1 node as the source node and T3 node as the destination node is as follows: Fig. 9 As shown by the solid arrows in the figure, the load traffic is concentrated on T1-A1-B1-A2-T3. When the injection rate between nodes T1 and T3 reaches 10 Gbps, if other traffic needs to use the A1-B1-A2 path, blocking will occur.

[0107] Depend on Fig. 9 As shown by the dotted arrow in the figure, the routing path A1-B2-A2 can also realize the routing from the T1 node to the T3 node, but it is in an idle state. The routing method of the present invention can make full use of multiple paths from the source node to the destination node in the network topology to achieve load balancing in the time distribution dimension. When the injection rate between the T1 node and the T3 node is 10Gbps, the throughput on the A1-B1-A2 and A1-B2-A2 paths can be 5Gbps.

[0108] The data transmission method for non-direct topology networks provided by the present invention performs load balancing in both the spatial distribution dimension of routing nodes and the temporal distribution dimension of network traffic, balancing the traffic in each bandwidth-limited node and link in any network topology, and significantly reducing the routing blocking rate. At the same time, the present invention is not constrained by network application scenarios and topological structures, and can be applied to networks of all scales from micro to macro, and is suitable for a variety of communication loads and communication modes, and has universal applicability.

[0109] Fig.10 A schematic diagram of a data transmission device for a non-direct topology network provided in this specification includes:

[0110] A network determination module 1001 is used to determine a source node and a destination node corresponding to the source node in the non-directly connected topology network, the source node being used to send data to the destination node;

[0111] A search tree determination module 1002 is used to determine various search trees using different search algorithms with the source node as the root node of the tree;

[0112] A path determination module 1003, used to determine, based on each search tree, each routing path used to transmit the data sent by the source node to the destination node;

[0113] The transmission module 1004 is used to transmit each data packet sent from the source node to the destination node through the routing paths, wherein the routing paths used when transmitting different data packets are not completely the same.

[0114] Optionally, the different search algorithms include: sequential breadth-first search and reverse breadth-first search.

[0115] Optionally, the transmission module 1004 is specifically used to determine, for each data packet, a routing path corresponding to the data packet according to the encoding corresponding to the data packet, different encodings corresponding to different routing paths, and the encoding includes binary encoding; according to the routing path corresponding to the data packet, the data packet is transmitted from the source node to the destination node.

[0116] Optionally, for each data packet, before determining the routing path corresponding to the data packet according to the code corresponding to the data packet, the path determination module 1003 is further used to write the routing paths determined by different search trees into different routing tables;

[0117] The path determination module 1003 is specifically used to determine the routing path corresponding to the data packet from the corresponding routing table according to the code corresponding to the data packet.

[0118] Optionally, the source node corresponds to multiple destination nodes. The routing paths used to send data packets from the source node to different destination nodes at the same time are determined by different search trees.

[0119] Optionally, before transmitting each data packet sent from the source node to the destination node through each routing path, the path determination module 1003 is further used to create a routing table whose number is consistent with the number of search algorithms; in the same routing table, for each destination node, according to the node address code corresponding to the destination node, a routing path corresponding to the destination node is selected and written into the routing table, wherein the search algorithms corresponding to the routing paths of the destination nodes with different node address codes in the same routing table are different;

[0120] The transmission module 1004 is specifically used to select a routing path from each routing table according to the node address code of each destination node, and transmit each data packet sent from the source node to the destination node.

[0121] Optionally, the search tree determination module 1002 is specifically used to establish an initially empty queue of nodes to be searched, a queue of visited nodes, and a queue of neighbor nodes, and add the source node to the queue of nodes to be searched and the queue of visited nodes; determine whether the queue of nodes to be searched is empty, and if not, read the first node in the queue of nodes to be searched and delete the node in the queue of nodes to be searched, and add the adjacent nodes of the current node to the neighbor node queue in a specified order according to the address of the destination node; determine whether the neighbor node queue is empty, and if not, read the first node in the queue of nodes to be searched and delete the node in the queue of nodes to be searched, and if is empty, return to the previous step; determine whether the current neighbor node exists in the visited node queue, if so, return to the previous step, if not, add it to the node queue to be searched and the visited node queue, and specify the current node as the parent node of the current neighbor node, and read the first node in the node queue to be searched again through the above steps until the node queue to be searched is empty, wherein, when generating a sequential breadth-first spanning tree, sequentially visit the neighbor nodes of the current node and add them to the neighbor node queue; when generating a reverse breadth-first spanning tree, reversely visit the neighbor nodes of the current node and add them to the neighbor node queue.

[0122] Optionally, the network structure of the non-direct connection topology network includes but is not limited to one of a cross switch, a mesh network, a butterfly network, a CLOS network, a tree network, and an irregular network topology.

[0123] Optionally, the application scenario of the non-direct connection topology network includes but is not limited to one of an on-chip interconnection network, an on-die interconnection network and a macroscopic computer network.

[0124] The present specification also provides a computer-readable storage medium, which stores a computer program. The computer program can be used to execute the above-mentioned data transmission method for a non-directly connected topology network.

[0125] This manual also provides Fig.11 The schematic structure diagram of the electronic device shown in FIG. Fig.11 As mentioned above, at the hardware level, the electronic device includes a processor, an internal bus, a network interface, a memory, and a non-volatile memory, and may also include hardware required for other services. The processor reads the corresponding computer program from the non-volatile memory into the memory and then runs it to implement the above-mentioned data transmission method for a non-direct topology network.

[0126] Of course, in addition to software implementation, this specification does not exclude other implementation methods, such as logic devices or a combination of software and hardware, etc., that is to say, the executor of the following processing flow is not limited to each logic unit, but can also be hardware or logic devices.

[0127] In the 1990s, improvements to a technology could be clearly distinguished as hardware improvements (for example, improvements to the circuit structure of diodes, transistors, switches, etc.) or software improvements (improvements to the method flow). However, with the development of technology, many improvements to the method flow today can be regarded as direct improvements to the hardware circuit structure. Designers almost always obtain the corresponding hardware circuit structure by programming the improved method flow into the hardware circuit. Therefore, it cannot be said that an improvement in a method flow cannot be implemented using a hardware entity module. For example, a programmable logic device (PLD) (such as a field programmable gate array (FPGA)) is such an integrated circuit whose logical function is determined by the user's programming of the device. Designers can "integrate" a digital system on a PLD by programming it themselves, without having to ask a chip manufacturer to design and produce a dedicated integrated circuit chip. Moreover, nowadays, instead of manually making integrated circuit chips, this kind of programming is mostly implemented by "logic compiler" software, which is similar to the software compiler used when developing and writing programs, and the original code before compilation must also be written in a specific programming language, which is called hardware description language (HDL). There is not only one HDL, but many kinds, such as ABEL (Advanced Boolean Expression Language), AHDL (Altera Hardware Description Language), Confluence, CUPL (Cornell University Programming Language), HDCal, JHDL (Java Hardware Description Language), Lava, Lola, MyHDL, PALASM, RHDL (Ruby Hardware Description Language), etc. The most commonly used ones are VHDL (Very-High-Speed ​​Integrated Circuit Hardware Description Language) and Verilog. Those skilled in the art should also know that it is only necessary to program the method flow slightly in the above-mentioned hardware description languages ​​and program it into the integrated circuit, and then it is easy to obtain the hardware circuit that implements the logic method flow.

[0128] The controller can be implemented in any appropriate manner, for example, the controller can take the form of a microprocessor or processor and a computer-readable medium storing a computer-readable program code (such as software or firmware) that can be executed by the (micro)processor, a logic gate, a switch, an application-specific integrated circuit (ASIC), a programmable logic controller, and an embedded microcontroller. Examples of controllers include, but are not limited to, the following microcontrollers: ARC 625D, Atmel AT91SAM, Microchip PIC18F26K20, and Silicone Labs C8051F320. The memory controller can also be implemented as part of the control logic of the memory. Those skilled in the art also know that in addition to implementing the controller in a purely computer-readable program code manner, the controller can be implemented in the form of a logic gate, a switch, an application-specific integrated circuit, a programmable logic controller, and an embedded microcontroller by logically programming the method steps. Therefore, this controller can be considered as a hardware component, and the devices included therein for implementing various functions can also be regarded as structures within the hardware component. Or even, the devices for implementing various functions can be regarded as both software modules for implementing the method and structures within the hardware component.

[0129] The systems, devices, modules or units described in the above embodiments may be implemented by computer chips or entities, or by products with certain functions. A typical implementation device is a computer. Specifically, the computer may be, for example, a personal computer, a laptop computer, a cellular phone, a camera phone, a smart phone, a personal digital assistant, a media player, a navigation device, an email device, a game console, a tablet computer, a wearable device, or a combination of any of these devices.

[0130] For the convenience of description, the above device is described in various units according to their functions. Of course, when implementing this specification, the functions of each unit can be implemented in the same or multiple software and / or hardware.

[0131] Those skilled in the art will appreciate that the embodiments of this specification may be provided as methods, systems, or computer program products. Therefore, this specification may take the form of a complete hardware embodiment, a complete software embodiment, or an embodiment combining software and hardware. Moreover, this specification may take the form of a computer program product implemented on one or more computer-usable storage media (including but not limited to disk storage, CD-ROM, optical storage, etc.) that contain computer-usable program code.

[0132] This specification is described with reference to the flowcharts and / or block diagrams of the methods, devices (systems), and computer program products according to the embodiments of this specification. It should be understood that each process and / or box in the flowchart and / or block diagram, as well as the combination of the processes and / or boxes in the flowchart and / or block diagram, can be implemented by computer program instructions. These computer program instructions can be provided to a processor of a general-purpose computer, a special-purpose computer, an embedded processor, or other programmable data processing device to produce a machine, so that the instructions executed by the processor of the computer or other programmable data processing device generate instructions for implementing the processes in the flowchart and / or block diagram. Figure 1 A process or multiple processes and / or boxes Figure 1 A device that provides the functions specified in a block or multiple blocks.

[0133] These computer program instructions may also be stored in a computer-readable memory capable of directing a computer or other programmable data processing device to operate in a specific manner, so that the instructions stored in the computer-readable memory produce an article of manufacture comprising an instruction device, which implements the process Figure 1 A process or multiple processes and / or boxes Figure 1 A function specified in one or more boxes.

[0134] These computer program instructions can also be loaded onto a computer or other programmable data processing device so that a series of operating steps are executed on the computer or other programmable device to produce a computer-implemented process, thereby providing instructions for implementing the process. Figure 1 A process or multiple processes and / or boxes Figure 1 The steps for the functions specified in one or more boxes.

[0135] In a typical configuration, a computing device includes one or more processors (CPU), input / output interfaces, network interfaces, and memory.

[0136] The memory may include non-permanent storage in a computer-readable medium, random access memory (RAM) and / or non-volatile memory in the form of read-only memory (ROM) or flash RAM. The memory is an example of a computer-readable medium.

[0137] Computer readable media include permanent and non-permanent, removable and non-removable media that can be implemented by any method or technology to store information. Information can be computer readable instructions, data structures, program modules or other data. Examples of computer storage media include, but are not limited to, phase change memory (PRAM), static random access memory (SRAM), dynamic random access memory (DRAM), other types of random access memory (RAM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), flash memory or other memory technology, compact disk read-only memory (CD-ROM), digital versatile disk (DVD) or other optical storage, magnetic cassettes, magnetic tape magnetic disk storage or other magnetic storage devices or any other non-transmission media that can be used to store information that can be accessed by a computing device. As defined herein, computer readable media does not include temporary computer readable media (transitory media), such as modulated data signals and carrier waves.

[0138] It should also be noted that the terms "include", "comprises" or any other variations thereof are intended to cover non-exclusive inclusion, so that a process, method, commodity or device including a series of elements includes not only those elements, but also other elements not explicitly listed, or also includes elements inherent to such process, method, commodity or device. In the absence of more restrictions, the elements defined by the sentence "comprises a ..." do not exclude the existence of other identical elements in the process, method, commodity or device including the elements.

[0139] Those skilled in the art will appreciate that the embodiments of this specification may be provided as methods, systems or computer program products. Therefore, this specification may take the form of a complete hardware embodiment, a complete software embodiment or an embodiment combining software and hardware. Moreover, this specification may take the form of a computer program product implemented on one or more computer-usable storage media (including but not limited to disk storage, CD-ROM, optical storage, etc.) containing computer-usable program code.

[0140] This specification may be described in the general context of computer-executable instructions executed by a computer, such as program modules. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform specific tasks or implement specific abstract data types. This specification may also be practiced in distributed computing environments where tasks are performed by remote processing devices connected through a communication network. In a distributed computing environment, program modules may be located in local and remote computer storage media, including storage devices.

[0141] Each embodiment in this specification is described in a progressive manner, and the same or similar parts between the embodiments can be referred to each other, and each embodiment focuses on the differences from other embodiments. In particular, for the system embodiment, since it is basically similar to the method embodiment, the description is relatively simple, and the relevant parts can be referred to the partial description of the method embodiment.

[0142] The above description is only an embodiment of the present specification and is not intended to limit the present specification. For those skilled in the art, the present specification may have various changes and variations. Any modification, equivalent replacement, improvement, etc. made within the spirit and principle of the present specification shall be included in the scope of the claims of the present specification.

Claims

1. A data transmission method for a non-direct topology network, characterized in that: include: Determining a source node and a destination node corresponding to the source node in the non-directly connected topology network, the source node being used to send data to the destination node; Taking the source node as the root node of the tree, different search algorithms are used to determine various search trees; Determine, according to each search tree, each routing path used to transmit the data sent by the source node to the destination node, the source node corresponds to multiple destination nodes, and the routing paths used to send data packets from the source node to different destination nodes at the same time are determined by different search trees; Create a number of routing tables that matches the number of search algorithms; In the same routing table, for each destination node, according to the node address code corresponding to the destination node, the routing path corresponding to the destination node is selected and written into the routing table, wherein the routing paths corresponding to the destination nodes with different node address codes in the same routing table have different search algorithms; For each destination node, a routing path is selected from each routing table according to the node address code of the destination node, and each data packet sent from the source node is transmitted to the destination node, wherein the routing paths used when transmitting different data packets are not completely the same.

2. The method according to claim 1, characterized in that The different search algorithms include: sequential breadth-first search and reverse breadth-first search.

3. The method according to claim 1, characterized in that Transmitting each data packet sent from the source node to the destination node through each routing path specifically includes: For each data packet, determine a routing path corresponding to the data packet according to a code corresponding to the data packet, different codes correspond to different routing paths, and the code includes a binary code; The data packet is transmitted from the source node to the destination node according to the routing path corresponding to the data packet.

4. The method according to claim 3, characterized in that For each data packet, before determining the routing path corresponding to the data packet according to the encoding corresponding to the data packet, the method further includes: The routing paths determined by different search trees are written into different routing tables; Determine the routing path corresponding to the data packet according to the code corresponding to the data packet, specifically including: According to the code corresponding to the data packet, the routing path corresponding to the data packet is determined from the corresponding routing table.

5. The method according to claim 2, characterized in that Taking the source node as the root node of the tree, different search algorithms are used to determine the search trees, including: Establish an initially empty queue of nodes to be searched, a queue of visited nodes, and a queue of neighboring nodes, and add the source node to the queue of nodes to be searched and the queue of visited nodes; Determine whether the queue of nodes to be searched is empty. If not, read the first node in the queue of nodes to be searched and delete the node from the queue of nodes to be searched, and add the adjacent nodes of the current node to the neighbor node queue in the specified order according to the destination node address; Determine whether the neighbor node queue is empty. If it is not empty, read the first node in the neighbor node queue and delete this node in the neighbor node queue. If it is empty, return to the previous step. Determine whether the current neighbor node exists in the visited node queue. If so, return to the previous step. If not, add it to the node queue to be searched and the visited node queue, and specify the current node as the parent node of the current neighbor node. Read the first node in the node queue to be searched again through the above steps until the node queue to be searched is empty. When generating a sequential breadth-first spanning tree, visit the neighbor nodes of the current node sequentially and add them to the neighbor node queue; when generating a reverse breadth-first spanning tree, visit the neighbor nodes of the current node in reverse order and add them to the neighbor node queue.

6. The method according to claim 1, characterized in that The network structure of the non-direct connection topology network includes: at least one of a cross switch, a mesh network, a butterfly network, a CLOS network, a tree network, and an irregular network topology.

7. The method according to claim 1, characterized in that The application scenarios of the non-direct connection topology network include: at least one of an on-chip interconnection network, an on-die interconnection network and a macroscopic computer network.

8. A load balancing routing device for a non-direct topology network, characterized in that: include: A network determination module, used to determine a source node and a destination node corresponding to the source node in the non-directly connected topology network, the source node being used to send data to the destination node; A search tree determination module, used to determine each search tree using different search algorithms with the source node as the root node of the tree; A path determination module, used to determine, based on each search tree, each routing path used to transmit the data sent by the source node to the destination node, wherein the source node corresponds to multiple destination nodes, and the routing paths used to send data packets from the source node to different destination nodes at the same time are determined by different search trees; A first creation module is used to create routing tables whose number is consistent with the number of search algorithms; The second creation module is used to select a routing path corresponding to each destination node in the same routing table according to the node address code corresponding to the destination node, and write it into the routing table, wherein the routing paths corresponding to the destination nodes with different node address codes in the same routing table have different search algorithms; The transmission module is used to select a routing path from each routing table according to the node address code of each destination node, and transmit each data packet sent from the source node to the destination node, wherein the routing paths used when transmitting different data packets are not completely the same.

9. A computer-readable storage medium, characterized in that: The storage medium stores a computer program, and when the computer program is executed by a processor, the method according to any one of claims 1 to 7 is implemented.

10. An electronic device comprising a memory, a processor, and a computer program stored in the memory and executable on the processor, characterized in that: When the processor executes the program, the method according to any one of claims 1 to 7 is implemented.

Citation Information

Patent Citations

  • Deadlock-free self-adaption routing method based on multiple spanning trees

    CN103095588A

  • Method and apparatus for calculating multi-path routing tree

    CN108965141A

  • Methods, apparatuses and computer program products for transmitting data

    US20190327175A1