A data transmission method, device and system for three-level CLOS network
By detecting and selecting idle paths in a three-level CLOS network for multiple detours, the problems of transmission interruption and inefficiency caused by path blockage in traditional networks are solved, and more efficient packet transmission and node utilization are achieved.
Patent Information
- Application Number
- CN202411089402.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2024-08-09
- Publication Date
- 2025-01-03
- Estimated Expiration
- 2044-08-09
AI Technical Summary
Traditional three-level CLOS networks are prone to transmission interruption and inefficiency due to path blockage during packet transmission. Especially when the path of the data packet from the secondary node to the target primary node is blocked, it can only be done once. The bypass path is also blocked and cannot be transmitted, resulting in reduced transmission efficiency and execution efficiency.
In the third-level CLOS network, by detecting the occupation or idle state of the uplink path at the secondary node, selecting an idle uplink path for data detours, ensuring that the data packet can continue to be transmitted, and performing multiple detours when necessary to avoid Open blocking, thereby improving transmission efficiency. The specific method includes receiving a data packet, determining a target path, obtaining the status of the uplink path, selecting an idle path as the second target path, and sending a data packet through the path, and updating the path state to avoid reuse.
This method improves the system operation efficiency, avoids continuous blockage of secondary nodes, makes full use of the third-level nodes, ensures the fastest path transmission of data packets, reduces the packet blocking problem caused by traditional routing algorithms, and improves the Utilization of secondary and tertiary nodes.
Smart Images

Figure CN118612137B_ABST
Abstract
Description
Technical Field
[0001] The present invention relates to the field of network-on-chip technology, and in particular to a data transmission method, device and system for a three-level CLOS network. Background Art
[0002] With the development of computer networks, it is gradually discovered that the topological structure of computer networks has the "power-law distribution characteristics of node degrees". The power-law distribution characteristics of node degrees can lead to a huge change in the network topological model. It allows some models that are more in line with the properties of computer topology to automatically generate, grow and connect according to some simple evolutionary laws. New nodes are constantly added through this law of preferential connection growth. It is precisely because of this characteristic of the network topological structure that the development of the network has become more and more complex, and its performance has become more and more reliable, which has also led to the emergence of many network topological connection rules, that is, the construction of the network topological structure formation mechanism. The topological structure of a computer network refers to the abstract connection method displayed by various network devices (such as routers, switches, etc.) including computers in the network to achieve network interconnection. The most representative of these is the multi-level CLOS network, which is generally a two-level or three-level CLOS network structure.
[0003] In the current traditional three-level CLOS network topology, during the process of routing data packets from the input port to the output port, when the data packet is transmitted from the secondary node of the CLOS network to the target primary node, when the path to the target primary node is blocked, the data can only be detoured from the secondary node to the third-level node once. When the detour to the secondary node and the path from the secondary node to the target primary node is also blocked, the data packet will still be blocked and cannot be transmitted, resulting in interruption of data packet transmission and reduced transmission efficiency and execution efficiency. Summary of the invention
[0004] In view of this, the present invention provides a data transmission method, device and system for a three-level CLOS network to solve the problems of transmission interruption at intermediate routing nodes and low transmission execution efficiency.
[0005] In a first aspect, the present invention provides a data transmission method of a three-level CLOS network, which is applied to a three-level CLOS network, characterized in that each level in the three-level CLOS network includes at least one routing node, wherein each routing node of the upper level and each routing node of the lower level are connected to each other through a transmission path, and the method includes:
[0006] The first and second level nodes receive the data packet sent from the first and third level nodes after the first detour;
[0007] The first secondary node determines a target primary node corresponding to the data packet, and obtains a first target path between the first secondary node and the target primary node;
[0008] When detecting that the first target path is congested, the first level 2 node obtains N uplink paths from the first level 2 node to N level 3 nodes, and an occupied or idle state of each uplink path, where N≥1 and is a positive integer;
[0009] The first level 2 node determines an uplink path from the N uplink paths as a second target path according to an occupied or idle state of the N uplink paths, where the second target path is a path between the first level 2 node and a second level 3 node;
[0010] The first second-level node sends the data packet to the second third-level node through the second target path.
[0011] The method provided by this aspect realizes a routing transmission from a secondary node to a tertiary node. During this transmission process, when the downlink path is detected to be blocked, the uplink path is selected to bypass, thereby making full use of the idle third-level nodes for a data bypass, which can improve the system operation efficiency, avoid continuous data transmission blocking at the secondary node, and improve the utilization rate of the third-level node.
[0012] In combination with the first aspect, in a possible implementation manner, the first secondary node determines, according to an occupied or idle state of the N uplink paths, an uplink path from the N uplink paths as the second target path, including:
[0013] The first secondary node acquires a path state vector, wherein the path state vector includes a plurality of 0 / 1 characters, which are used to indicate the states of N uplink paths and downlink paths connected to the first secondary node, wherein character 1 indicates that the path is idle and available, and character 0 indicates that the path is occupied;
[0014] The first secondary node determines the first character from the path state vector according to the vector first-first search principle;
[0015] The first secondary node determines, according to the first character, an upstream path associated with the character as the second target path.
[0016] In combination with the first aspect, in another possible implementation manner, the first secondary node 0 determines a target primary node corresponding to the data packet, including:
[0017] The first secondary node 0 obtains a routing vector corresponding to a target output port and a routing vector corresponding to an input port, wherein the routing vector is composed of a number of 0 / 1 characters;
[0018] The first secondary node 0 compares the upper 3 bits of the routing vectors corresponding to the input port and the target output port;
[0019] If the upper 3 bits are not equal, the data is determined to be uplink, indicating that the target output port corresponding to the input data and its corresponding input port are not connected to the same first-level node, and the data packet needs to be transmitted through the previous-level node and then routed to the target output port;
[0020] If the upper 3 bits are equal, the data is determined to be downlink, indicating that the target output port corresponding to the input data and its corresponding input port are connected to the same primary node, and the data packet needs to be routed inside the primary node to output the target output port.
[0021] In combination with the first aspect, in another possible implementation manner, the first and second level nodes 0 obtain the path state vector, including:
[0022] The first secondary node 0 obtains states of N uplink paths and downlink paths connected to the first secondary node 0;
[0023] The first secondary node 0 determines the corresponding 0 / 1 character according to the status of the upstream path and the downstream path. If the status of the upstream path or the downstream path is idle and available, it is represented by character 1, and if the status is occupied, it is represented by character 0; and the 0 / 1 characters are sorted according to the principle that the path to the target primary node has a high priority and the path to N upstream paths has a low priority to generate the path state vector.
[0024] In combination with the first aspect, in another possible implementation manner, after determining an uplink path from the N uplink paths as the second target path, the method further includes: the first secondary node 0 updates the state of the second target path to an "occupied" state;
[0025] After sending the data packet to the second third-level node, the method further includes: when the data packet is completely sent through the second target path, the first second-level node 0 updates the second target path from an "occupied" state to an "idle" state.
[0026] In combination with the first aspect, in another possible implementation, after determining an uplink path from the N uplink paths as the second target path, the method further includes: the first secondary node 0 sets a flag bit of its own node, the flag bit being used to indicate whether a path from the current node to the upper-level node has been through data transmission in history; the first secondary node 0 generates accompanying information according to the flag bit, and adds the accompanying information to the data packet;
[0027] The sending the data packet to the second third-level node includes: the first second-level node 0 sends the data packet with the accompanying information added to the second third-level node.
[0028] In combination with the first aspect, in yet another possible implementation, the method further includes:
[0029] After receiving the data packet sent by the first second-level node 0, the second third-level node obtains at least one downlink path connecting it with at least one second-level node;
[0030] The second or third level node parses the data packet to obtain accompanying information;
[0031] The second third-level node determines a third target path and the second second-level node associated with the third target path according to the accompanying information and the path status of at least one downlink path;
[0032] The second third-level node sets the flag bit of the second third-level node, updates the accompanying information, and adds the updated accompanying information to the data packet;
[0033] The second third-level node transmits the data packet after the accompanying information is updated to the second second-level node through the third target path.
[0034] In this embodiment, the update mechanism of data accompanying information can prevent continuous node congestion caused by data returning to the secondary node that has already passed, thereby improving the execution efficiency of the system.
[0035] In combination with the first aspect, in yet another possible implementation, the method further includes:
[0036] After receiving the data packet for updating the accompanying information sent by the second third-level node, the second second-level node parses the data packet to obtain the updated accompanying information;
[0037] The second level 2 node determines a fourth target path according to the updated accompanying information and a path state vector corresponding to the second level 2 node;
[0038] The second second-level node transmits the data packet to the third third-level node or the target first-level node through the fourth target path.
[0039] In combination with the first aspect, in another possible implementation, the second level 2 node determines the fourth target path according to the updated accompanying information and the path state vector corresponding to the second level 2 node, including:
[0040] The second level 2 node determines at least one uplink or downlink path according to at least one level 3 node and at least one level 2 node connected thereto;
[0041] The second level 2 node determines a corresponding path state vector according to a state of the at least one uplink or downlink path;
[0042] The second level 2 node selects, according to the path state vector and the updated accompanying information, a path that is in an available state and has not been traveled in history from at least one uplink path and has accompanying information indicating that the path is congested, as the fourth target path;
[0043] Alternatively, the second level 2 node selects the downlink path as the fourth target path when determining that the downlink path connected to the second level 2 node is available based on the path state vector and the updated accompanying information.
[0044] In combination with the first aspect, in yet another possible implementation manner, when the data packet is transmitted to the third third-level node, the method further includes:
[0045] After receiving the data packet sent by the second second-level node, the third third-level node obtains at least one downlink path connecting it with at least one second-level node;
[0046] The third level-3 node parses the data packet to obtain accompanying information, and determines a fifth target path and the third level-2 node associated with the fifth target path according to the accompanying information and the path state of at least one downlink path;
[0047] The third third-level node sets a flag bit of the third third-level node, updates the accompanying information, and adds the updated accompanying information to the data packet;
[0048] The third third-level node transmits the data packet after updating the accompanying information to the third second-level node through the fifth target path.
[0049] In combination with the first aspect, in yet another possible implementation, the method further includes:
[0050] After receiving the data packet for updating the accompanying information sent by the third level-2 node, the third level-3 node parses the data packet to obtain the updated accompanying information;
[0051] The third level-2 node determines a sixth target path according to the updated accompanying information and the path state vector corresponding to the third level-2 node;
[0052] The third second-level node transmits the data packet to the target first-level node connected to the sixth target path through the sixth target path.
[0053] In combination with the first aspect, in yet another possible implementation, the method further includes:
[0054] After receiving the data packet transmitted from the third second-level node through the sixth target path, the target first-level node determines the output port connected to the target first-level node by judging through the lower 2 bits of the target port routing vector;
[0055] The target first-level node strips the accompanying information from the data packet and outputs it from the output port.
[0056] In a second aspect, the present invention further provides a data transmission device for a three-level CLOS network, the device comprising:
[0057] A receiving module, used for receiving a data packet sent from the first third-level node after the first detour;
[0058] A determination module, used to determine a target primary node corresponding to the data packet, and obtain a first target path between the target primary node and the data packet;
[0059] An acquisition module, configured to acquire N uplink paths of the first second-level node 0 to N third-level nodes, and an occupied or idle state of each uplink path when detecting that the first target path is congested, where N ≥ 1 and is a positive integer;
[0060] The determination module is further used to determine an uplink path from the N uplink paths as a second target path according to an occupied or idle state in the N uplink paths, wherein the second target path is a path between the first second-level node 0 and the second third-level node;
[0061] A sending module is used to send the data packet to the second third-level node through the second target path.
[0062] In combination with the second aspect, in a possible implementation, the determination module includes: a path selection vector generation module and a vector first 1 search module.
[0063] The path selection vector generation module is used to determine the corresponding 0 / 1 characters according to the states of the N upstream paths and the downstream paths, and to sort the 0 / 1 characters according to the principle that the path to the target primary node has a high priority and the path to the N upstream paths has a low priority, so as to generate a path state vector; if the state of the upstream path or the downstream path is idle and available, it is represented by character 1, and if the state is occupied, it is represented by character 0;
[0064] The vector first 1 search module is used to determine the first 1 character from the path state vector according to the vector first 1 search principle, and determine the uplink path associated with the character as the second target path according to the first 1 character.
[0065] In combination with the second aspect, in another possible implementation, the determination module further includes a routing accompanying information updating module;
[0066] The routing accompanying information updating module is used to set the flag bit of its own node, generate accompanying information according to the flag bit, and add the accompanying information to the data packet; the flag bit is used to indicate whether the path between the current node and the upper-level node has undergone data transmission in the history.
[0067] In combination with the second aspect, in another possible implementation, the determination module further includes: a data uplink and downlink selection module and a path status query and update module;
[0068] The data uplink and downlink selection module is used to select and determine the uplink path or the downlink path of the routing data according to the input port routing vector and the output target port routing vector;
[0069] The path status query and update module is used to provide the path selection vector generation module with the idle or occupied status of each candidate transmission path when performing routing path selection; and to update the status information corresponding to the target path when selecting the target path or releasing the target path.
[0070] In a third aspect, the present invention further provides a three-level CLOS network system, wherein the three-level CLOS network includes three levels, each level includes at least one routing node, wherein there is a transmission path between each routing node of the upper level and each routing node of the lower level;
[0071] A secondary node in a three-level CLOS network, used to execute the data transmission method according to the first aspect or any implementation manner of the first aspect;
[0072] A third-level node in a three-level CLOS network, used to execute the data transmission method of the first aspect or any implementation manner of the first aspect;
[0073] The target first-level node in the three-level CLOS network is used to execute the data transmission method of the first aspect or any implementation manner of the first aspect.
[0074] In a fourth aspect, the present invention provides a routing node, comprising a memory and a processor, wherein the memory and the processor are connected; the memory stores computer instructions, and the processor executes the data transmission method of the three-level CLOS network described in the first aspect or any embodiment of the first aspect by executing the computer instructions.
[0075] In a fifth aspect, the present invention further provides a computer-readable storage medium having computer instructions stored thereon, wherein the computer instructions are used to enable a computer to execute the data transmission method of a three-level CLOS network described in the first aspect or any embodiment of the first aspect.
[0076] In addition, the present invention also provides a computer program product, including computer instructions, wherein the computer instructions are used to enable a computer to execute the data transmission method of the three-level CLOS network described in the first aspect or any embodiment of the first aspect.
[0077] The present invention provides a data transmission method, device and system for a three-level CLOS network. The method can select multiple data detours according to the current blocking degree of the second-level node to avoid blocking, thereby transmitting data in the fastest path. The problem of data packet blocking caused by the traditional three-level CLOS network routing algorithm that only performs one data detour at most can be reduced, and the correctness of system data transmission can be ensured while improving the utilization rate of the second-level node and the third-level node.
[0078] In addition, the method can make path up / down judgments based on the routing vectors of the input port and the target output port. The introduction of the path selection vector and the vector first 1 search module can ensure multiple selections of the data path, ensure the highest priority of the output path to the target level 1 node, manage the status of all paths of the current node in real time, and ensure accuracy when applying for the routing channel. In addition, the update mechanism of the data accompanying information can prevent the node from being continuously congested due to the return of data to the secondary node that has already passed, thereby improving the execution efficiency of the system. BRIEF DESCRIPTION OF THE DRAWINGS
[0079] In order to more clearly illustrate the specific implementation methods of the present invention or the technical solutions in the prior art, the drawings required for use in the specific implementation methods or the description of the prior art will be briefly introduced below. Obviously, the drawings described below are some implementation methods of the present invention. For ordinary technicians in this field, other drawings can be obtained based on these drawings without paying creative work.
[0080] Figure 1 It is a three-level CLOS network topology diagram provided by an embodiment of the present invention;
[0081] Figure 2 is a schematic diagram of a three-level CLOS network routing algorithm provided by an embodiment of the present invention;
[0082] Figure 3 is a schematic diagram of a multi-data path routing algorithm for a bidirectional three-level CLOS network provided by an embodiment of the present invention;
[0083] Figure 4is a hardware structure block diagram of a routing node provided by an embodiment of the present invention;
[0084] Figure 5 It is a flow chart of a data transmission method of a three-level CLOS network provided by an embodiment of the present invention;
[0085] Figures 6a to 6f It is a schematic diagram of a process of routing from a primary node to a secondary node provided by an embodiment of the present invention;
[0086] Figures 7a to 7f is a schematic diagram of a process of routing from a secondary node to a tertiary node provided by an embodiment of the present invention;
[0087] Figures 8a to 8e It is a schematic diagram of a process of routing from a third-level node to a second-level node provided by an embodiment of the present invention;
[0088] Figures 9a to 9f is a schematic diagram of another process of routing from a secondary node to a tertiary node provided by an embodiment of the present invention;
[0089] Figures 10a to 10e is a schematic diagram of another process of routing from a third-level node to a second-level node provided by an embodiment of the present invention;
[0090] Figures 11a to 11f It is a schematic diagram of another process of routing from a secondary node to a tertiary node provided by an embodiment of the present invention;
[0091] Figures 12a to 12e It is a schematic diagram of another process of routing from a third-level node to a second-level node provided by an embodiment of the present invention;
[0092] Figures 13a to 13f It is a schematic diagram of a process of routing from a secondary node to a primary node provided by an embodiment of the present invention;
[0093] Figures 14a to 14c is a schematic diagram of a process of routing from a primary node to an output port provided by an embodiment of the present invention;
[0094] Fig.15 is a structural block diagram of a data transmission device provided by an embodiment of the present invention;
[0095] Fig.16 It is a schematic diagram of the hardware structure of a routing node provided by an embodiment of the present invention. DETAILED DESCRIPTION
[0096] In order to make the purpose, technical solution and advantages of the embodiments of the present invention clearer, the technical solution in the embodiments of the present invention will be clearly and completely described below in conjunction with the drawings in the embodiments of the present invention. Obviously, the described embodiments are part of the embodiments of the present invention, not all of the embodiments. Based on the embodiments of the present invention, all other embodiments obtained by those skilled in the art without creative work are within the scope of protection of the present invention.
[0097] First, in conjunction with the application scenario on which the execution of the data transmission method depends, the application scenario is described here.
[0098] The topology of a computer network refers to the abstract connection mode in which various network devices (such as routers, switches, etc.) including computers in the network realize network interconnection. Computer network topology is concerned with this connection relationship and its diagram, and does not care about the various details of the connected computers or devices. The nodes mainly refer to the various active devices connected in the network. Therefore, the topology of a computer network is composed of nodes and links.
[0099] Specifically, Figure 1 The figure shows a schematic diagram of a three-level CLOS network topology in a related data transmission scheme, wherein the three-level CLOS network topology is a binary tree routing topology. In the binary tree routing topology, the connection between each node is unique, that is, the data transmission path between any two input and output ports is fixed. Therefore, when the only path between nodes is occupied by a data transmission task, other data transmissions that need to pass through this path will be blocked. There is a serious mutual constraint relationship between the transmission of data packets, which will seriously affect the transmission efficiency of the system.
[0100] In addition, computer network topology is concerned with this connection relationship and its diagram, and does not care about the various details of the connected computers or devices. Through the topology diagram, we can clearly understand the line connection status of each node in the entire network and the appearance structure of the entire network. The nodes mainly refer to the various active devices connected in the network. Therefore, the computer network topology is composed of nodes and links.
[0101] Among them, the CLOS network is a classic strictly non-blocking multi-stage interconnection network proposed by Charles Clos. It aims to reduce the number of crosspoints through a multi-stage switching structure while achieving non-blocking data transmission. The CLOS network consists of multiple integrated units (also known as switching units), each of which contains a certain number of input ports and output ports. These integrated units form a multi-stage structure through a specific connection method to achieve data exchange and transmission.
[0102] See also Figure 1 As shown, a three-level CLOS network topology structure diagram is shown. The topology structure is divided into three levels, multiple first-level routing nodes, multiple second-level routing nodes, and multiple third-level routing nodes, wherein each first-level routing node is connected to four port nodes; the port node is bidirectionally connected to the first-level routing node, the first-level routing node is bidirectionally connected to the second-level routing node, and the second-level routing node is bidirectionally connected to the third-level routing node. That is, for two routing nodes or input / output ports, there are two round-trip routing channels between the routing nodes.
[0103] like Figure 1 In the topology shown, there are 8 first-level routing nodes, each of which is connected to 4 input / output port nodes, for a total of 32 port nodes; there are 4 second-level routing nodes, each of which has 8 data paths connected to the first-level routing nodes; there are 3 third-level routing nodes, each of which has 4 data paths connected to the second-level routing nodes.
[0104] like Figure 2 As shown in FIG. 1 , a schematic diagram of a three-level CLOS network routing algorithm is shown. The input port number corresponding to the input data (i.e., the routing vector of the input port) is compared with the high 3 bits corresponding to the target output port number (i.e., the routing vector of the output port) to determine whether the data is transmitted on the upstream path or completed at the same node.
[0105] For example, in Figure 1 In the network topology shown in the figure, when data goes up to the 2nd level routing node ( Figure 2 In the diagram, the example of Level 2 Node 0 is used. At this time, the data packet arriving at Level 2 Node 0 should be directly routed down and routed to the corresponding target Level 1 node. However, since the path to the target Level 1 node is blocked, the data cannot be transmitted. At this time, the data waiting at Level 2 Node 0 can be transmitted to Level 3 Node, and then routed down to another idle Level 2 node via Level 3 Node ( Figure 2 In the diagram, the second-level node 1 is used as an example. The second-level node 1 is an idle node, so after passing through the third-level node to go down to the second-level node 1, the data is finally routed from the second-level node 1 to the target first-level node. In other words, when the data reaches the second-level node from the first-level node, since the path to the target first-level node is blocked, the data can go through a detour of "second-level node 0~third-level node~second-level node 1" once, and finally output from the second-level node 1 to the target first-level node to avoid the blockage.
[0106] However, this routing algorithm has certain drawbacks, namely, the three-level CLOS routing algorithm only performs a detour to the level 3 node when the path from the level 2 node 0 to the target level 1 node is blocked. When the detour reaches the level 2 node 1, and the path from the level 2 node 1 to the target level 1 node is blocked, the data will still be blocked and cannot be transmitted.
[0107] When the packet length of the data packet is large, the level 2 node 1 and the level 2 node 0 will be blocked for a long time, and at this time, the level 2 node 2 and the level 2 node 3 are in an idle state and are not fully utilized. Since in the three-level CLOS network topology, it is assumed that there must be at least one idle data path to the level 1 node, that is, at this time, at least one of the level 2 nodes 2 and the level 2 node 3 has an idle path to the level 1 node. Therefore, in order to improve the efficiency of data packet transmission, alleviate the congestion of the level 2 node, and improve the utilization of the level 2 and level 3 nodes.
[0108] The embodiment of the present invention provides a data transmission method and hardware implementation scheme for a three-level CLOS network.
[0109] See also Figure 3 , is a schematic diagram of a multi-data path routing algorithm for a bidirectional three-level CLOS network provided by this embodiment. The improved routing algorithm is the same as the current three-level CLOS routing algorithm when selecting data uplink / downlink at the level 1 node (by comparing the routing vector of the input port with the corresponding high 3 bits of the routing vector of the target output port), when the data reaches the level 2 node 0 uplink. If the path from the level 2 node 0 to the target level 1 node is blocked at this time, the data can go up to the level 3 node after the first detour, and then go down to the level 2 node 1, wherein the further downlink to the level 2 node 1 is to select a level 2 node that the data has not passed through and the path is idle, and finally output from the level 2 node 1 to the target level 1 node.
[0110] According to the current three-level CLOS routing algorithm, all routing steps at level 2 / 3 nodes have been completed at this time. If the path from level 2 node 1 to the target level 1 node is also blocked at this time, then based on the current routing algorithm, the data can only queue at level 2 node 1, which takes a long time or the transmission is interrupted.
[0111] The method provided in the embodiment of the present invention can perform a second detour when the path is blocked, such as going up to the level 3 node for the second time and then down to the level 2 node 2 (a level 2 node that the data has not passed through and the path is idle can be selected), and finally output from the level 2 node 2 to the target level 1 node. If the path from the level 2 node 2 to the target level 1 node is also blocked at this time, the data can make a third detour, going up to the level 3 node and then down to the level 2 node 3 (a level 2 node that the data has not passed through and the path is idle can be selected), and finally output from the level 2 node 3 to the target level 1 node.
[0112] If there are more corresponding level 2 nodes in the three-level CLOS topology structure, the improved routing algorithm will have more detour routes to choose from. At the same time, the characteristic of the three-level CLOS network topology structure is that there must be at least one routing path from the level 2 node to the target level 1 node, that is, multiple data detours will inevitably find an idle path and route the routing data to the level 1 node.
[0113] Compared with the general routing algorithm that only detours once, the improved routing algorithm of this method can greatly improve the efficiency of data packet output and shorten its output delay, greatly alleviate the blocking problem of secondary nodes, and improve the utilization rate of secondary nodes.
[0114] In the hardware solution based on this improved routing algorithm, all the up / down paths of the secondary node are arranged according to their idle states to form a path selection vector, and the vector first 1 search module is introduced to start from the lowest bit of the path selection vector to find the first available idle channel for routing. At the same time, all path states of the current node are managed in real time, and the occupied ones are set to 1 and the released ones are cleared to 0 to ensure the accuracy of the routing channel application. Finally, a data accompanying information update mechanism is added to prevent data from returning to the secondary node that has already passed and causing continuous congestion at the node, thereby improving the execution efficiency of the system.
[0115] The technical solution provided in the embodiments of the present application is described in detail below.
[0116] See also Figure 4 , is a hardware structure diagram of a routing node provided by an embodiment of the present invention. The hardware structure diagram can be applied to any routing node in a three-level CLOS network topology.
[0117] Specifically, the routing node includes: a data uplink and downlink selection module, a path status query and update module, a path selection vector generation module, a routing accompanying information update module, a vector first 1 search module and a routing direction management module. The functions of each module in the multi-data path detour routing algorithm and the hardware architecture will be described in detail below.
[0118] (1) Data uplink / downlink selection module: This module is mainly responsible for selecting the uplink / downlink of routing data based on the input port routing vector and the output target port routing vector, such as Figure 1 In the topology shown, for a first-level routing node, the upper 3 bits of the routing vector corresponding to the input port are compared with the upper 3 bits of the routing vector of the target output port. If they are the same, it means that the routing data should go down through the routing node, otherwise the data should go up.
[0119] (2) Path status query and update module: This module is mainly responsible for providing the idle / occupied status of each candidate data path for query by each routing node when selecting a routing path; at the same time, this module is also responsible for setting the idle / occupied status corresponding to the data path to 1 or clearing it to 0 when selecting or releasing a data path. Among them, 1 means occupied and 0 means idle.
[0120] (3) Path selection vector generation module: This module is mainly responsible for combining the idle / occupied status of each alternative data path and the 2nd-level node flag information of the path in the data accompanying information. The flag information is required when the 2nd-level node data is bypassed to form a path selection vector. The element "1" in the vector indicates that the path can be selected, and "0" indicates that the path is occupied / abandoned. Therefore, the role of the path selection vector generation module can be summarized as: generating a path selection vector.
[0121] For level 1 nodes, there is no priority order for the paths to level 2 nodes; for level 2 nodes, the path to the target level 1 node has the highest priority and is arranged at the lowest position of the path selection vector, and the remaining paths to level 3 nodes have no priority order; for level 3 nodes, there is no priority order for the paths to level 2 nodes.
[0122] (4) Routing accompanying information update module: This module is mainly responsible for recording the status information of each level 2 node in the current routing data path. If the routing data has passed through a level 2 node for data transmission, the corresponding flag position in the data accompanying information is set to 1. When the data is blocked and bypassed at the level 2 node and the level 3 node, the level 2 node that has been passed is discarded in combination with the flag bit in the accompanying information. That is, the data will not return to the level 2 node that has been passed, so as to avoid aggravating the blocking degree of the level 2 node.
[0123] (5) Vector first 1 search module: This module is mainly responsible for finding the first valid element in the path selection vector, that is, selecting a valid data path.
[0124] (6) Routing direction management module: This module will combine the currently selected data routing direction to accurately route data to the target routing node / output port.
[0125] An embodiment of the present invention provides an embodiment of a data transmission method for a three-level CLOS network. It should be noted that the steps shown in the flowchart of the accompanying drawings can be executed in a computer system such as a set of computer executable instructions, and although a logical order is shown in the flowchart, in some cases, the steps shown or described can be executed in an order different from that shown here.
[0126] In this embodiment, a data transmission method for a three-level CLOS network is provided, which can be used for any node in the above-mentioned three-level CLOS network topology structure. Each level in the three-level CLOS network includes at least one routing node, wherein there is a transmission path between each routing node of the upper level and each routing node of the lower level.
[0127] like Figure 5 As shown, the method takes a secondary node as an example, such as secondary node 0 as the first secondary node. The method flow includes:
[0128] Step S101: The first level 2 node receives a data packet sent from the first level 3 node after a first detour.
[0129] The first third-level node is the third-level node that the data packet circulates for the first time, such as third-level node 0. Third-level node 0 sends the data packet to second-level node 0, and correspondingly, second-level node 0 receives the data packet from third-level node 0.
[0130] Step S102, determining a target first-level node corresponding to the data packet, and acquiring a first target path between the target first-level node and the data packet.
[0131] Specifically, in one implementation, the secondary node 0 obtains the routing vector corresponding to the target output port and the routing vector corresponding to the input port, wherein the routing vector is composed of a number of 0 / 1 characters, and then the secondary node 0 compares the high 3 bits of the routing vectors corresponding to the input port and the target output port.
[0132] If the upper 3 bits are not equal, the data is determined to be uplink, indicating that the target output port corresponding to the input data and its corresponding input port are not connected to the same first-level node, and the data packet needs to be transmitted through the upper-level node and then routed to the target output port; if the upper 3 bits are equal, the data is determined to be downlink, indicating that the target output port corresponding to the input data and its corresponding input port are connected to the same first-level node, and the data packet needs to be routed within the first-level node to output the target output port.
[0133] For example, this embodiment takes Figure 1 Take the three-level CLOS network topology as an example. There are 32 input / output ports in this topology, and the input port number and the output port number can be represented by a 5-bit routing vector.
[0134] In one example, for example, data is routed from input port number 0 to output port number 2, the routing vector corresponding to input port 0 is 00000, and the routing vector corresponding to output port 2 is 00010. The data uplink and downlink selection module compares the upper 3 bits of the two vectors and determines that the upper 3 bits of the two are equal, both 000, then the data is routed downlink at this time, that is, the data is directly routed and output from the first-level node 0. The routing transmission path is: input port 0→first-level node 0→output port 2.
[0135] In another example, for example, when input port 0 routes data to output port 31, the routing vector corresponding to input port 0 is 00000, and the routing vector corresponding to output port 31 is 11111. After comparison by the data uplink and downlink selection module, if the high 3 bits of the two are not equal, data uplink transmission is performed at this time, that is, output to the secondary node. The routing transmission path is: input port 0 → primary node 0 → secondary node → primary node 7 → output port 31.
[0136] In this step, the target first-level node is determined according to the output port. For example, the target first-level node corresponding to output port 2 is first-level node 0. If the output port is 31, the corresponding target first-level node is first-level node 7.
[0137] When the target first-level node is determined to be first-level node 0, the first target path is second-level node 0→first-level node 0. When the target first-level node is determined to be first-level node 7, the first target path is second-level node 0→first-level node 7.
[0138] Step S103, when the first target path is detected to be congested, obtain N uplink paths from the first level 2 node to N level 3 nodes, and the occupied or idle state of each uplink path, where N≥1 and is a positive integer.
[0139] Step S104: determining an uplink path from the N uplink paths as a second target path according to the occupied or idle status of the N uplink paths.
[0140] The second target path is a path between the first level 2 node and the second level 3 node.
[0141] Specifically, in one implementation, the secondary node 0 obtains a path state vector, which includes a number of 0 / 1 characters, which are used to indicate the status of N uplink paths and downlink paths connected to the secondary node 0, wherein character 1 indicates that the path is idle and available, and character 0 indicates that the path is occupied. Then, the secondary node 0 determines the first character from the path state vector according to the vector first 1 search principle; the secondary node 0 determines the uplink path associated with the character according to the first 1 character as the second target path.
[0142] For example, if the target output port is 31, its port number is 11111, and the high 3 bits correspond to 111. At this time, it can be determined that the secondary routing node should select the 8th connection, such as Figure 1 In the topology, each secondary node has 8 data paths to the primary node, numbered 0 to 7, and the target output port number is 31, corresponding to the high 3 bits of 111 (7), that is, the selected data path is the 8th path. The data path carries out data downlink to the target 1st-level node. At this time, the 8th path state of the secondary node downlink to the primary node and the 3 path states of the routing to the 3rd-level node form the secondary node path selection vector. Among them, the 8th path state of the secondary node downlink to the primary node is placed in the lowest bit to ensure its highest priority.
[0143] By searching the first 1 of the vector, from the low position to the high position of the secondary node path selection vector, find the first idle path for data routing. If the path from the secondary node to the target primary node is idle at this time, the data can be directly transmitted to the primary node. If the path from the secondary node to the target primary node is occupied at this time, select an idle path from the three paths to the third-level node for data detour. Once the routing path is determined, the status of the path is set to 1, indicating that it is occupied.
[0144] Step S105: sending the data packet to the second third-level node via the second target path.
[0145] For example, the second-level node 0 transmits the data packet to the third-level node 1 through the second target path. Assuming that the third-level node 1 is the second third-level node, the path between the second-level node 0 and the third-level node 1 is the second target path.
[0146] The data transmission method provided in this embodiment makes full use of idle secondary nodes and tertiary nodes to perform a data detour when the data packet reaches the secondary node after the first detour and the transmission path from the secondary node to the target level 1 node is blocked. That is, it detours upward to the level 3 node and then returns to other secondary nodes, thereby selecting the fastest output channel for data output. This method can not only improve the system operation efficiency and greatly alleviate the problem of secondary node blocking, but also make full use of idle secondary nodes for data routing, thereby improving the utilization rate of secondary nodes.
[0147] In addition, this method also makes path up / down judgment based on the routing vectors of the input port and the target output port. At the same time, the introduction of the path selection vector and the vector first 1 search module can ensure multiple selections of the data path, ensure the highest priority of the output path to the level 1 node target, manage all path states of the current node in real time, and ensure accuracy when applying for the routing channel.
[0148] Furthermore, in the above step S104, the first and second level nodes obtain the path state vector, including: the first and second level nodes obtain the states of the N uplink paths and downlink paths connected to the first second level node 0; the first and second level nodes determine the corresponding 0 / 1 characters according to the states of the uplink paths and the downlink paths, if the state of the uplink path or the downlink path is idle and available, it is represented by character 1, if the state is occupied, it is represented by character 0; and the 0 / 1 characters are sorted according to the principle that the path to the target first level node has a high priority and the path to the N uplink paths has a low priority, and a path state vector is generated. The path state vector is used to select an available transmission path for data routing.
[0149] In some implementations, after the above step S104: determining an uplink path from the N uplink paths as the second target path, further includes: the first and second level nodes updating the state of the second target path to an "occupied" state. Optionally, the "occupied" state is represented by the character "1".
[0150] After the first and second level nodes send the data packets to the second and third level nodes, the method further includes: when all data packets are sent through the second target path, the first and second level nodes 0 update the second target path from an "occupied" state to an "idle" state. Optionally, the "occupied" state is represented by the character "0".
[0151] Furthermore, the above step S104: after determining an uplink path from the N uplink paths as the second target path, further includes: the first and second level nodes setting a flag bit of their own nodes, the flag bit being used to indicate whether the path from the current node to the upper level node has been through data transmission in the past; generating accompanying information according to the flag bit, and adding the accompanying information to the data packet. The above first and second level nodes sending the data packet to the second and third level nodes specifically includes: the first and second level nodes sending the data packet with the accompanying information to the second and third level nodes.
[0152] The purpose of adding a flag bit in this embodiment is to prevent a path that has been traversed from being re-routed. The flag bit is sent to an uplink or downlink node in real time through accompanying information, so that the receiving uplink or downlink node selects an available path according to the flag bit indication in the accompanying information.
[0153] In some embodiments, the method also includes: after the second-level third node receives the data packet sent from the first-level second node, it obtains at least one downlink path connecting it to at least one level two node; the second-level third node parses the data packet to obtain accompanying information; based on the accompanying information and the path status of at least one downlink path, determines the third target path, and the second-level second node associated with the third target path; the second-level third node sets the flag bit of the second-level third node, updates the accompanying information, and adds the updated accompanying information to the data packet; and transmits the data packet with the updated accompanying information to the second-level second node through the third target path.
[0154] The specific process is the same as that of the aforementioned first and second level nodes, refer to the description of the aforementioned steps S101 to S105, and will not be repeated here.
[0155] The following is a specific example to illustrate the execution process of the hardware implementation of the multi-data path routing algorithm of the bidirectional three-level CLOS network topology structure.
[0156] In this embodiment, Figure 1 In the topology shown, routing from input port 1 to output port 20 is taken as an example for explanation.
[0157] like Figures 6a to 6f As shown, input port 1 is connected to level 1 node 0, such as Figure 6a As shown in the sub-topology diagram, the routing vector corresponding to the input port 1 obtained by the level 1 node 0 is 00001, and the routing vector corresponding to the output port 20 is 10100.
[0158] like Figure 6b As shown, the first-level node 0 compares the upper 3 bits of the routing vectors of the two ports, such as Figure 6b In the middle gray part, equality indicates data downlink, and inequality indicates data uplink. After judging that the upper 3 bits of the two routing vectors are different, 000 is different from 101, so it is determined that the data of input port 1 should be transmitted uplink via level 1 routing node 0.
[0159] There are currently 4 routing paths for uplink data, such as Figure 6c As shown in , these four paths correspond to: level 1 node 0 to level 2 node 0, level 1 node 0 to level 2 node 1, level 1 node 0 to level 2 node 2, and level 1 node 0 to level 2 node 3. The status of these four paths is as follows Figure 6d As shown in , it is assumed that among the current four paths, level 1 node 0 to level 2 node 0 are in an occupied state, and the remaining three paths are all available. At this time, the generated path state vector is 1110, as shown in Figure 6cAs shown in the figure, "1" indicates that the current path is free and available, and "0" indicates that the current path is occupied / abandoned. Level 1 node 0 searches the path state vector according to the vector first 1 search module, and selects the target path: level 1 node 0 to level 2 node 1, as shown in the figure. Figure 6a Arrow path shown.
[0160] At the same time, the corresponding state of the path is marked as occupied. Specifically, the state flag is updated to "1", where 1 indicates an occupied state. Figure 6d As shown in the gray part below, the update of the path occupancy information is completed.
[0161] Finally, the level 1 node 0 updates the routing data accompanying information and sets the path level 2 node 1 flag position to 1, such as Figure 6e As shown in the gray part, the update of this flag bit can prevent the data from avoiding the congestion and choosing to detour and return to the level 2 node that has already passed, causing the congestion of the level 2 node to increase.
[0162] In addition, the data transmission process of the level 1 node 0 also includes: when the tail data of the detected packet arrives at the level 2 node 1, because the data may be very long, it needs to be divided into multiple sub-data packets or data blocks to be sent. Therefore, when the last sub-data packet / data block, that is, the tail data packet is sent by the level 1 node 0, it can be determined that all current data packets have been sent, and the target path can be released, that is, the flag bit of the path from the level 1 node 0 to the level 2 node 1 is set to "1", indicating that the current path is idle and available. At this time, the status of the path is updated, such as Figure 6f As shown in the middle gray part, the path status flag bit of level 1 node 0 to level 2 node 1 is cleared to 0, indicating that the path is currently idle and subsequent data can re-apply for the data path for data transmission.
[0163] This embodiment implements routing transmission from input port 1 to level 1 node 0, and one routing transmission from level 1 node 0 to level 2 node 1.
[0164] In a possible implementation of this embodiment, the method further includes: when the data packet routing reaches the level 2 node 1, this implementation uses the level 2 node 1 as the execution subject to execute the data packet routing process. Figures 7a to 7f As shown in FIG. 1 , the routing process specifically includes:
[0165] Level 2 node 1 makes a judgment based on the high 3 bits of the target port routing vector (10100), such as Figure 7b As shown in the gray part, it can be determined that the target level 1 node number of the current data packet is 5. According to the high 3 bits of the routing vector being 101, it is determined that the corresponding level 1 node number is 5. At this time, there are 4 output paths corresponding to level 2 node 1, such as Figure 7cAs shown, they correspond to: level 2 node 1 to level 1 node 5 (downlink path), level 2 node 1 to level 3 node 0 (uplink path), level 2 node 1 to level 3 node 1 (uplink path) and level 2 node 1 to level 3 node 2 (uplink path).
[0166] In addition, the status of the above four paths is obtained according to Figure 7c As shown, the path status rankings from level 2 node 1 to level 3 node 2 to level 2 node 1 to level 1 node 5 are: 1110 respectively.
[0167] At the hardware implementation level, level 2 node 1 places the status of the five paths from level 2 node 1 to level 1 node, all of which go to the target level 1 node path, in the lowest bit of the path state vector (the vector first 1 search module will select this path as the highest priority), and the remaining three paths are arranged in the high three bits in sequence to generate a path state vector.
[0168] like Figure 7d As shown in the upper part, assuming that the path from level 2 node 1 to level 1 node 5 among the current 4 paths is in an occupied state, the corresponding path state vector is 1110, as shown in Figure 7e As shown, 1 indicates that the current path is free and available, and 0 indicates that the current path is occupied / abandoned. The path state vector is searched according to the vector first 1 search module, and the target path selected from the back to front order is: level 2 node 1 to level 3 node 0. Figure 7a Arrow path shown.
[0169] At the same time, the corresponding state of the path is marked as occupied, and the occupied state is marked as "1", such as Figure 7d The gray part shown in FIG. 1 is used to update the path occupancy information. At this time, there is no need to update the accompanying data information.
[0170] When the level 2 node 1 has sent the tail data and all the data packets have reached the level 3 node 0, the path from level 2 node 1 to level 3 node 0 is released, and the occupation status of the path is updated, such as Figure 7f As shown in the middle gray part, the path status flag of level 2 node 1 to level 3 node 0 is cleared to 0, indicating that the path is currently idle and subsequent data can re-apply for the data path for data transmission. This embodiment implements a routing transmission from level 2 node 1 to level 3 node 0.
[0171] In a possible implementation of this embodiment, the method further includes: when data arrives at level 3 node 0, this embodiment uses level 3 node 0 as the execution subject to execute the data packet routing process. Figures 8a to 8e As shown in FIG. 1 , the routing process specifically includes:
[0172] Level 3 node 0 obtains the 4 downstream paths associated with it and the status of each path, such as Figure 8b As shown, they correspond to level 3 node 0~level 2 node 0, level 3 node 0~level 2 node 1, level 3 node 0~level 2 node 2, and level 3 node 0~level 2 node 3 respectively.
[0173] For level 3 node 0, the four data paths have no priority order and are arranged in ascending order according to the level 2 node numbers. Figure 8c In the upper part shown, it is assumed that the current four paths are in an idle state, and the idle state is represented by 0. However, through the data accompanying information carried in the previous data packet, the level 3 node 0 can determine that the path level 2 node 1 flag is 1. At this time, the path: level 3 node 0~level 2 node 1 is discarded, and the corresponding path state vector generated is 1101. Figure 8b As shown, 1 indicates that the current path is idle and available, and 0 indicates that the current path is occupied / abandoned.
[0174] Level 3 node 0 searches the path state vector according to the vector first 1 search module and selects the target path: level 3 node 0 to level 2 node 0. Figure 8a The path of the arrow shown.
[0175] At the same time, the corresponding state of the path is marked as occupied, and the occupied state is marked as "1", such as Figure 8c As shown in the lower part, the path occupancy information update is completed. Finally, the level 3 node 0 updates the routing data accompanying information and sets the path level 2 node 0 flag position to 1, as shown in Figure 8d As shown in the gray part, the update of this flag bit can prevent the data from avoiding the congestion and choosing to return to the level 2 node that has been passed, causing the congestion of the level 2 node to increase.
[0176] In addition, the method further includes: when the packet tail data arrives at the level 2 node 0 from the level 3 node 0, the path from the level 3 node 0 to the level 2 node 0 is released, and the occupation status of the path is updated, such as Figure 8e As shown in the middle gray part, the path status flag bit from level 3 node 0 to level 2 node 0 is cleared to 0, indicating that the path is currently idle, so that subsequent data can re-apply for the data path for data transmission. This embodiment implements a routing transmission from level 3 node 0 to level 2 node 0.
[0177] In a possible implementation of this embodiment, the method further includes: when the data packet arrives at the level 2 node 0, this embodiment uses the level 2 node 0 as the execution subject to execute the data packet routing process. Figures 9a to 9f As shown, according to steps S101 to S105 of the aforementioned embodiment, the routing process specifically includes:
[0178] Level 2 node 0 receives a data packet sent by the first level 3 node (e.g., level 3 node 0), and determines the corresponding target level 1 node according to the data packet. For example, in this embodiment, the target level 1 node is level 1 node 5, because level 1 node 5 is connected to output port 20. At this time, the first target path is determined to be: level 2 node 0 to level 1 node 5. This corresponds to step S102 of the aforementioned embodiment.
[0179] In a specific implementation, the level 2 node 0 is used as the first level 2 node, and obtains the routing vector (10100) corresponding to the target output port 20, wherein the routing vector is composed of a plurality of 0 / 1 characters; the 0 / 1 characters (high 3 bits) in the routing vector are judged, such as Figure 9b As shown, it is determined that the data packet corresponds to the target level 1 node (the upper 3 bits of the routing vector are 101, and the corresponding level 1 node number is 5), and the first target path is obtained: level 2 node 0 to level 1 node 5.
[0180] Step S103: When the level 2 node 0 detects that the first target path is occupied / congested, N uplink paths from the level 2 node 0 to N level 3 nodes are obtained, where N≥1 and is a positive integer.
[0181] Step S104: Obtain the occupied / idle status of each of the N uplink paths; according to the occupied / idle status of the N uplink paths, determine an uplink path from the N uplink paths as the second target path, the second target path is the path between the level 2 node 0 and the level 3 target node, and the level 3 target node is one of the N level 3 nodes. N=3. At this time, there are 4 output paths corresponding to the level 2 node 0, such as Fig.9c As shown, the four paths and path states are: level 2 node 0~level 1 node 5 (downlink path) are occupied, level 2 node 0~level 3 node 0 (uplink path) are occupied, level 2 node 0~level 3 node 1 (uplink path) are idle, and level 2 node 0~level 3 node 2 (uplink path) are idle.
[0182] The specific process includes: the second-level node 0 generates a path state vector according to the occupied / idle status of three uplink paths and the status of one downlink path; Fig.9c As shown, a path state vector 1100 is obtained for representing the states of four paths.
[0183] When the hardware is implemented, the path status of level 2 node 0 to level 1 node 5 (the path to the target level 1 node) is placed in the lowest bit of the path status vector (the first 1 search module in the vector will select this path as the highest priority), and the remaining 3 paths are arranged in the upper 3 bits. Figure 9d The left half and Fig.9eAs shown, assuming that among the current four paths, level 2 node 0 to level 1 node 5 and level 2 node 0 to level 3 node 0 are in an occupied state, the corresponding path state vector is 1100, where 1 indicates that the current path is free and available, and 0 indicates that the current path is occupied / abandoned. The vector first 1 search module determines the first character of the path state vector 1100, and determines the uplink path associated with the character according to the first character as the second target path. The second target path is selected as: level 2 node 0 to level 3 node 1, Figure 9a The path of the arrow shown.
[0184] Step S105: Level 2 node 0 sends the data packet to level 3 node 1 according to the second target path, level 2 node 0 to level 3 node 1.
[0185] At the same time, the corresponding state of the path is marked as occupied, and the occupied state is marked as 1, such as Figure 9d As shown in the gray part of the right half, the path occupancy information update is completed. At this time, there is no need to update the data accompanying information.
[0186] In addition, the method further includes: when the packet tail data arrives at the level 3 node 1 from the level 2 node 0, the path between the level 2 node 0 and the level 3 node 1 is released, and the occupation status of the path is updated, such as Figure 9f As shown in the middle gray part, the path status flag bit of level 2 node 0 to level 3 node 1 is cleared to 0, indicating that the path is currently idle and subsequent data can re-apply for the data path for data transmission.
[0187] This embodiment implements a routing transmission from level 2 node 0 to level 3 node 1. In this transmission process, when the downlink path is detected to be blocked, the uplink path is selected for detour, thereby making full use of the idle level 3 nodes for data detour, which can improve the system operation efficiency, avoid continuous blocking of data transmission at level 2 node 0, and make full use of the idle level 3 nodes for data routing, thereby improving the utilization rate of level 3 nodes.
[0188] In addition, the update mechanism of data accompanied by information can prevent the continuous congestion of nodes caused by the return of data to the secondary nodes that have already passed, thereby improving the execution efficiency of the system.
[0189] In a possible implementation of this embodiment, the method further includes: when the data packet arrives at the level 3 node 1, the implementation uses the level 3 node 1 as the execution subject to execute the data packet routing process. Figures 10a to 10e As shown, according to steps S101 to S105 of the aforementioned embodiment, the routing process specifically includes:
[0190] After receiving the data packet sent from the first and second level nodes 0, the second and third level nodes obtain at least one downlink path connecting it to at least one second level node; parse the data packet to obtain accompanying information; determine the third target path and the second and second level nodes associated through the third target path according to the accompanying information and the path status of at least one downlink path; set the flag bit of the second and third level nodes, update the accompanying information, and add the updated accompanying information to the data packet; the second and third level nodes transmit the data packet with updated accompanying information to the second and second level nodes through the third target path.
[0191] For example, the second third-level node is level 3 node 1, and the output path corresponding to level 3 node 1 is obtained. There are 4 downlink transmission paths, such as Fig.10a and Fig.10b As shown, they correspond respectively to: level 3 node 1~level 2 node 0, level 3 node 1~level 2 node 1, level 3 node 1~level 2 node 2, and level 3 node 1~level 2 node 3.
[0192] For level 3 nodes, the four data paths have no priority order and are arranged in ascending order according to the level 2 node numbers. Fig.10c As shown in the left half, assume that the current four paths are all in an idle state, but through the parsed data accompanying information (moving with the data packet, parsing the data packet), the path level 2 node 0 flag bit is 1, and the path level 2 node 1 flag bit is 1. At this time, the path level 3 node 1~level 2 node 0, level 3 node 1~level 2 node 1 are discarded, and the corresponding path state vector is 1100, as shown in Fig.10b As shown, 1 indicates that the current path is available and 0 indicates that the current path is occupied / abandoned. The level 3 node searches the path state vector according to the vector first 1 search module and selects the third target path: level 3 node 1 to level 2 node 2, as shown in Fig.10a In the path of the arrow shown, level 2 node 2 is the second level 2 node.
[0193] At the same time, the corresponding state of the path is marked as occupied, and the occupied state is marked as 1, such as Fig.10c As shown in the gray part on the right, the path occupancy information update is completed. Finally, the level 3 node 1 updates the routing data accompanying information and sets the path level 2 node 2 flag position to 1, as shown in the figure below. Fig.10d As shown in the gray part on the right half, the update of this flag bit can prevent data from avoiding congestion and choosing to detour and return to the level 2 node that has already passed, causing the congestion of the level 2 node to increase.
[0194] In addition, the method further includes: when the packet tail data arrives at the level 2 node 2 from the level 3 node 1, releasing the path from the level 3 node 1 to the level 2 node 2, and updating the occupation status of the path, such as Fig.10eAs shown in the middle gray part, the path status flag bit of level 3 node 1 to level 2 node 2 is cleared to 0, indicating that the path is currently idle and subsequent data can re-apply for the data path for data transmission. This embodiment implements a routing transmission from level 3 node 1 to level 2 node 2.
[0195] In another possible implementation of this embodiment, the method also includes: after the second-level-2 node receives the data packet for updating the accompanying information sent by the second-level-3 node, the second-level-2 node parses the data packet to obtain the updated accompanying information; the second-level-2 node determines the fourth target path based on the updated accompanying information and the path state vector corresponding to the second-level-2 node; and transmits the data packet to the third-level-3 node or the target first-level node through the fourth target path.
[0196] Further, the second-second-level node determines the fourth target path according to the updated accompanying information and the path state vector corresponding to the second-second-level node, including: the second-second-level node determines at least one uplink or downlink path according to at least one third-level node and at least one second-level node connected to it; determines the corresponding path state vector according to the state of the at least one uplink or downlink path; the second-second-level node selects an available state from at least one uplink path and a path that has not been traveled historically indicated in the accompanying information as the fourth target path based on the path state vector and the updated accompanying information when it is determined that the downlink path connected to the second-second-level node is congested; or, the second-second-level node selects a downlink path as the fourth target path based on the path state vector and the updated accompanying information when it is determined that the downlink path connected to the second-second-level node is available.
[0197] For example, when a data packet arrives at level 2 node 2, this embodiment uses level 2 node 2 as the execution subject, that is, the second level 2 node, to execute the data packet routing process. Figures 11a to 11f As shown, according to steps S101 to S105 of the aforementioned embodiment, the routing process specifically includes:
[0198] When a data packet is transmitted from level 3 node 1 to level 2 node 2, the high 3 bits of the destination port routing vector are used for judgment, such as Fig.11b As shown in the gray part, it can be determined that the target level 1 node number of the current data packet is 5 (the upper 3 bits of the routing vector are 101, corresponding to the level 1 node number 5); at this time, there are 4 output paths corresponding to level 2 node 2, such as Fig.11c As shown, they correspond respectively to: level 2 node 2~level 1 node 5, level 2 node 2~level 3 node 0, level 2 node 2~level 3 node 1, level 2 node 2~level 3 node 2.
[0199] When the hardware is implemented, the path state from level 2 node 2 to level 1 node 5 (the path to the target level 1 node) is placed in the lowest bit of the path state vector (the first 1 search module in the vector will select this path as the highest priority), and the remaining 3 paths are arranged in the upper 3 bits. Fig.11d As shown in the left half, assuming that among the current four paths, level 2 nodes 2 to level 1 nodes 5, level 2 nodes 2 to level 3 nodes 0, and level 2 nodes 2 to level 3 nodes 1 are all in an occupied state, then the corresponding path state vector is 1000, as shown in Fig.11c As shown, 1 indicates that the current path is available and 0 indicates that the current path is occupied / abandoned. The path state vector is searched according to the vector first 1 search module, and the fourth target path is selected as: level 2 node 2 to level 3 node 2, such as Fig.11a The path of the arrow shown, at this time, level 3 node 2 is the third level 3 node.
[0200] At the same time, the state corresponding to the fourth target path is marked as occupied, and the occupied state is marked as 1. Fig.11d The gray part on the right shows Fig.11e As shown, the level 2 node 2 completes the path occupation information update. At this time, there is no need to update the data accompanying information.
[0201] When the packet tail data reaches level 3 node 2, the path from level 2 node 2 to level 3 node 2 is released, and the occupation status of the fourth target path is updated, such as Fig.11f As shown in the middle gray part, the path status flag bit of level 2 node 2 to level 3 node 2 is cleared to 0, indicating that the path is currently idle and subsequent data can re-apply for the data path for data transmission. This embodiment implements a routing transmission from level 2 node 2 to level 3 node 2.
[0202] Optionally, in a possible implementation of this embodiment, if Fig.11c The fourth target path shown in is from level 2 node 2 to level 1 node 5, provided that the path from level 2 node 2 to level 1 node 5 is available, then level 1 node 5 is used as the target level 1 node, and level 2 node 2 directly transmits the data packet downlink to the target level 1 node, i.e. level 1 node 5, without detouring through level 3 nodes, thereby improving transmission efficiency.
[0203] In another possible implementation of the present embodiment, when transmitting a data packet to a third-level node, such as level 3 node 2, the method further includes: after the third-level node receives the data packet sent from the second-level node, it obtains at least one downlink path connecting it to at least one level-2 node; the third-level node parses the data packet to obtain accompanying information, and determines a fifth target path and a third-level node associated with the fifth target path based on the accompanying information and the path status of at least one downlink path; the third-level node sets a flag bit of the third-level node, updates the accompanying information, and adds the updated accompanying information to the data packet; and transmits the data packet with the updated accompanying information to the third-level node through the fifth target path.
[0204] For example, when a data packet arrives at level 3 node 2, this embodiment uses level 3 node 2 as the execution subject to execute the data packet routing process. Figures 12a to 12e As shown, according to steps S101 to S105 of the aforementioned embodiment, the routing process specifically includes:
[0205] When a data packet is transmitted from level 2 node 2 to level 3 node 2, there are 4 output paths corresponding to level 3 node 2, such as Figure 12b As shown, they correspond to level 3 node 2 to level 2 node 0, level 3 node 2 to level 2 node 1, level 3 node 2 to level 2 node 2, and level 3 node 2 to level 2 node 3. The status of these four paths can be obtained from Figure 12b The character 1 or 0 is determined.
[0206] For level 3 nodes, the four data paths have no priority order and are arranged in ascending order according to the level 2 node numbers. Fig.12c As shown in the left half of , it is assumed that the current 4 paths are all in an idle state. However, according to the flag bit indication of the accompanying information of the data, the flag bit of the path 2-level node 0 is 1, the flag bit of the path 2-level node 1 is 1, and the flag bit of the path 2-level node 2 is 1. At this time, the 3-level node 2 abandons the path 3-level node 2~2-level node 0, 3-level node 2~2-level node 1, and 3-level node 2~2-level node 2, and the corresponding path state vector is 1000. Fig.12c As shown, 1 indicates that the current path is available and 0 indicates that the current path is occupied / abandoned. The path state vector is searched according to the vector first 1 search module, and the fifth target path is selected as: level 3 node 2 to level 2 node 3, such as Fig.12a In the path of the arrow shown, the level 2 node 3 serves as the third level 2 node.
[0207] At the same time, the corresponding state of the path is marked as occupied, and the occupied state is marked as 1, such as Fig.12cAs shown in the gray part on the right of , the path occupation information update is completed. Finally, the level 3 node 2 updates the routing data accompanying information and sets the flag position of the level 2 node 3 of the fifth target path to 1, as shown in FIG. Fig.12d As shown in the gray part on the right, the update of this flag bit can prevent data from avoiding congestion and choosing to detour and return to the level 2 node that has already passed, causing the congestion of the level 2 node to increase.
[0208] In addition, the method further includes: when the packet tail data arrives at the level 2 node 3 from the level 3 node 2, the path from the level 3 node 2 to the level 2 node 3 is released, and the occupation status of the path is updated, such as Fig.12e As shown in the middle gray part, the path status flag bit of level 3 node 2 to level 2 node 3 is cleared to 0, indicating that the path is currently idle and subsequent data can re-apply for the data path for data transmission. This embodiment implements a routing transmission from level 3 node 2 to level 2 node 3.
[0209] In another possible implementation of this embodiment, the method also includes: after the third-level-2 node receives the data packet for updating the accompanying information sent by the third-level-3 node, the third-level-2 node parses the data packet to obtain the updated accompanying information; the third-level-2 node determines the sixth target path based on the updated accompanying information and the path state vector corresponding to the third-level-2 node; and transmits the data packet to the target-level-1 node connected to the sixth target path through the sixth target path.
[0210] For example, when a data packet reaches the third level 2 node, namely level 2 node 3, this embodiment uses level 2 node 3 as the execution subject to execute the data packet routing process. Figures 13a to 13f As shown, according to steps S101 to S105 of the aforementioned embodiment, the routing process specifically includes:
[0211] When a data packet is transmitted from level 3 node 2 to level 2 node 3, it is judged by the high 3 bits of the destination port routing vector, such as Fig.13b The gray part shown in the figure shows that the target level 1 node number of the current data packet is 5, and the high 3 bits of the routing vector are 101, corresponding to the level 1 node number 5. At this time, there are 4 output paths corresponding to level 2 node 3, such as Fig.13c As shown, they correspond to level 2 node 3~level 1 node 5, level 2 node 3~level 3 node 0, level 2 node 3~level 3 node 1, and level 2 node 3~level 3 node 2 respectively.
[0212] When the hardware is implemented, the path state of level 2 node 3 to level 1 node 5 (the path to the target level 1 node) is placed in the lowest bit of the path state vector (the vector first 1 search module will select this path as the highest priority), and the remaining 3 paths are arranged in the upper 3 bits. Since the accompanying information carried in the data packet shows that the flag bit of the level 2 node 0 of the data packet path is 1, the flag bit of the level 2 node 1 of the path is 1, the flag bit of the level 2 node 2 of the path is 1, and the flag bit of the level 2 node 3 of the path is 1, it means that this data packet has completed data transmission through all level 2 routing nodes. At this time, the data packet no longer transmits data up to the level 3 node, that is, the path is abandoned: level 2 node 3 to level 3 node 0, level 2 node 3 to level 3 node 1, level 2 node 3 to level 3 node 2, such as Fig.13d As shown in the left half, assuming that at this time, the path from level 2 node 3 to level 1 node 5 is in an idle state, then the corresponding path state vector is 0001, as shown in Fig.13c As shown, 1 indicates that the current path is available and 0 indicates that the current path is occupied / abandoned. The second-level node 3 searches the path state vector according to the vector first 1 search module and selects the sixth target path: the second-level node 3 to the first-level node 5. Fig.13a The arrow path shown. At this time, the first-level node 5 is the target first-level node.
[0213] At the same time, the state corresponding to the sixth target path is marked as occupied, and the occupied state is marked as 1. Fig.13d The gray part on the right and Fig.13e As shown, the path occupancy information update is completed. At this time, there is no need to update the data accompanying information.
[0214] In addition, the method further includes: when the packet tail data reaches the level 1 node 5, releasing the path from the level 2 node 3 to the level 1 node 5, and updating the occupation status of the path, such as Fig.13f As shown in the middle gray part, the path status flag bit from level 2 node 3 to level 1 node 5 is cleared to 0, indicating that the path is currently idle, and subsequent data can re-apply for the data path for data transmission. This embodiment implements a routing transmission from level 2 node 3 to level 1 node 5. Since there must be at least one path available in the three-level CLOS network topology structure, in this embodiment, the path is the sixth target path.
[0215] In another possible implementation of this embodiment, the method also includes: after the target first-level node receives the data packet transmitted from the third second-level node through the sixth target path, the target first-level node determines the output port connected to the target first-level node through the lower 2 bits of the target port routing vector; the target first-level node strips the accompanying information from the data packet and outputs it from the output port.
[0216] For example, when a data packet reaches the target first-level node, that is, the first-level node 5, this embodiment uses the first-level node 5 as the execution subject to execute the data packet routing process. Figures 14a to 14c As shown in FIG. 1 , the routing process specifically includes:
[0217] When the data reaches level 1 node 5, Fig.14b As shown, the lower 2 bits of the destination port routing vector are used for judgment. In this example, the lower 2 bits of the routing vector are 00, indicating that the data packet is output from the first output node connected to the level 1 node and is output from the first output port of the node. Fig.14a As shown, finally, the level 1 node 5 filters out the accompanying information in the data packet, such as Fig.14c As shown, only the original data is transmitted to the output port 20 for output. This embodiment realizes one-time routing transmission from the level 1 node 5 to the output port 20.
[0218] At this point, the data transmission routing process from input port 1 to output port 20 is completed. In order to avoid congestion, the data packet made three data detours during the routing process and finally selected the idle level 2 node 3 for output.
[0219] It should be noted that the above embodiments take a three-level CLOS network as an example. Similarly, the method of this embodiment can also be used to transmit data to a four-level CLOS network or a higher-level network, and this embodiment does not limit this.
[0220] The embodiment of the present invention provides a method for transmitting data in multiple data paths in a bidirectional three-level CLOS network. The method can select multiple data detours according to the blocking degree of the current level 2 node to avoid blocking, thereby transmitting data in the fastest path. The problem of data packet blocking caused by the traditional three-level CLOS network routing algorithm that only performs one data detour at most can be reduced, and the correctness of system data transmission can be ensured while improving the utilization rate of the level 2 nodes and the level 3 nodes.
[0221] In addition, the method can make path up / down judgments based on the routing vectors of the input port and the target output port. The introduction of the path selection vector and the vector first 1 search module can ensure multiple selections of the data path, ensure the highest priority of the output path to the target level 1 node, manage the status of all paths of the current node in real time, and ensure accuracy when applying for the routing channel. In addition, the update mechanism of the data accompanying information can prevent the node from being continuously congested due to the return of data to the secondary node that has already passed, thereby improving the execution efficiency of the system.
[0222] In the present embodiment, a data transmission device for a three-level CLOS network is also provided, and the device is used to implement the above-mentioned embodiment and preferred implementation mode, and the descriptions that have been made are not repeated. As used below, the term "module" can implement a combination of software and / or hardware of a predetermined function. Although the device described in the following embodiments is preferably implemented in software, the implementation of hardware, or a combination of software and hardware is also possible and conceived.
[0223] This embodiment provides a data transmission device, such as Fig.15 As shown, the device includes: a receiving module 151, a determining module 152, an acquiring module 153, and a sending module 154. In addition, the device may also include other more or fewer modules, such as a storage module, etc., which is not limited in this embodiment.
[0224] The receiving module 151 is used to receive a data packet sent from the first third-level node after the first detour.
[0225] The determination module 152 is used to determine the target first-level node corresponding to the data packet and obtain a first target path between the target first-level node and the data packet.
[0226] The acquisition module 153 is used to acquire N uplink paths of the first second-level node 0 to N third-level nodes and the occupied or idle state of each uplink path when detecting congestion of the first target path, where N≥1 and is a positive integer.
[0227] The determination module 152 is further used to determine an uplink path from the N uplink paths as a second target path according to the occupied or idle status of the N uplink paths, where the second target path is a path between the first secondary node 0 and the second third-level node.
[0228] The sending module 154 is used to send the data packet to the second third-level node through the second target path.
[0229] Optionally, in a specific implementation of this embodiment, the determination module 152 includes: a path selection vector generation module and a vector first 1 search module.
[0230] Among them, the path selection vector generation module is used to determine the corresponding 0 / 1 characters according to the states of the N upstream paths and the downstream paths, and sort the 0 / 1 characters according to the principle that the path to the target first-level node has a high priority and the path to the N upstream paths has a low priority, so as to generate a path state vector; if the state of the upstream path or the downstream path is idle and available, it is represented by character 1, and if the state is occupied, it is represented by character 0.
[0231] The vector first 1 search module is used to determine the first 1 character from the path state vector according to the vector first 1 search principle, and determine the uplink path associated with the character as the second target path according to the first 1 character.
[0232] Optionally, in another specific implementation of the present embodiment, the determination module 152 also includes: a routing accompanying information update module; the routing accompanying information update module is used to set the flag bit of its own node, generate accompanying information based on the flag bit, and add the accompanying information to the data packet; the flag bit is used to indicate whether the path between the current node and the previous level node has undergone data transmission in history.
[0233] Optionally, in another specific implementation of this embodiment, the determination module 152 further includes: a data uplink and downlink selection module and a path status query and update module.
[0234] The data uplink and downlink selection module is used to select and determine the uplink path or the downlink path of the routing data according to the input port routing vector and the output target port routing vector.
[0235] The path status query and update module is used to provide the path selection vector generation module with the idle or occupied status of each candidate transmission path when performing routing path selection; and to update the status information corresponding to the target path when selecting the target path or releasing the displayed target path.
[0236] Further, the structure of the data transmission device and the functions of each module can be found in the above Figure 4 and Figure 4 The described embodiment can realize the aforementioned Figure 5 The method flow is shown.
[0237] In addition, further functional descriptions of the above modules are the same as those of the above corresponding embodiments and will not be repeated here.
[0238] The data transmission device in this embodiment is presented in the form of a functional unit, where the unit refers to an ASIC (Application Specific Integrated Circuit) circuit, a processor and memory that executes one or more software or fixed programs, and / or other devices that can provide the above functions.
[0239] The embodiment of the present invention also provides a data transmission system, such as Figure 1 The three-level CLOS network system shown includes three levels, each level includes at least one routing node, and there is a transmission path between each routing node of the upper level and each routing node of the lower level.
[0240] Each secondary node in the three-level CLOS network is used to perform the above Figure 5 The data transmission method shown.
[0241] Similarly, each third-level node and the target first-level node in the three-level CLOS network are also used to execute the data transmission method described in the above embodiment.
[0242] The data transmission system provided in the present embodiment makes full use of idle secondary nodes and tertiary nodes to perform a data detour after the data packet reaches the secondary node after the first detour and the transmission path from the secondary node to the target level 1 node is blocked, that is, detouring upward to the level 3 node and then returning to other secondary nodes, thereby selecting the fastest output channel for data output. This method can not only improve the system operation efficiency and greatly alleviate the problem of secondary node blocking, but also make full use of idle secondary nodes for data routing, thereby improving the utilization rate of secondary nodes.
[0243] In addition, the system also makes uplink / downlink judgments based on the routing vectors of the input port and the target output port. At the same time, the introduction of the path selection vector and the vector first 1 search module can ensure multiple choices for the data path, ensure the highest priority of the output path to the level 1 node target, manage the status of all paths of the current node in real time, and ensure accuracy when applying for the routing channel.
[0244] The embodiment of the present invention also provides a routing node having the above Fig.15 The data transmission device shown.
[0245] See also Fig.16 , is a schematic diagram of the structure of a routing node provided by an embodiment of the present invention, the routing node includes: one or more processors 161, a memory 162 and at least one communication interface 163, such as a high-speed interface and a low-speed interface. The various components are connected to each other by different buses and can be installed on a common motherboard or in other ways as needed. The processor can process instructions executed in the computer device, including instructions stored in or on the memory to display graphical information of the GUI on an external input / output device (such as a display device coupled to the interface).
[0246] In some optional embodiments, if necessary, multiple processors and / or multiple buses can be used together with multiple memories and multiple memories. Similarly, multiple computer devices can be connected, and each device provides part of the necessary operations (for example, as a server array, a group of blade servers, or a multi-processor system). Fig.16 A processor 161 is taken as an example.
[0247] The processor 161 may be a central processing unit, a network processor or a combination thereof. The processor 161 may further include a hardware chip. The hardware chip may be a dedicated integrated circuit, a programmable logic device or a combination thereof. The programmable logic device may be a complex programmable logic device, a field programmable gate array, a general purpose array logic or any combination thereof.
[0248] The memory 162 stores instructions executable by at least one processor 161, so that the at least one processor 161 executes the data transmission method of the three-level CLOS network shown in the above embodiment.
[0249] The memory 162 may include a program storage area and a data storage area, wherein the program storage area may store an operating system, an application required for at least one function; the data storage area may store data created according to the use of the computer device, etc. In addition, the memory 162 may include a high-speed random access memory, and may also include a non-transient memory, such as at least one disk storage device, a flash memory device, or other non-transient solid-state storage device. In some optional embodiments, the memory 162 may include a memory remotely arranged relative to the processor 161, and these remote memories may be connected to the computer device via a network. Examples of the above-mentioned network include, but are not limited to, the Internet, an intranet, a local area network, a mobile communication network, and combinations thereof.
[0250] The memory 162 may include a volatile memory, such as a random access memory; the memory may also include a non-volatile memory, such as a flash memory, a hard disk or a solid state drive; the memory 162 may also include a combination of the above types of memory.
[0251] The computer device also includes an input device and an output device, Fig.16 Not shown. The processor 161, the memory 162, and the input / output device can be connected via a bus or other means. Further, the input device can receive input digital or character information, and generate key signal input related to the user settings and function control of the computer device, such as a touch screen, a keypad, a mouse, a trackpad, a touchpad, an indicator rod, one or more mouse buttons, a trackball, a joystick, etc. The output device may include a display device, an auxiliary lighting device (e.g., an LED) and a tactile feedback device (e.g., a vibration motor), etc. The above-mentioned display device includes but is not limited to a liquid crystal display, a light emitting diode, a display and a plasma display. In some optional embodiments, the display device may be a touch screen.
[0252] In addition, the at least one communication interface 163 is used for the routing node to communicate with other nodes or network devices.
[0253] An embodiment of the present invention also provides a computer-readable storage medium, and the above-mentioned method according to the embodiment of the present invention can be implemented in hardware, firmware, or can be implemented as a computer code that can be recorded in a storage medium, or can be implemented by downloading through a network and originally stored in a remote storage medium or a non-temporary machine-readable storage medium and will be stored in a local storage medium, so that the method described herein can be stored in such software processing on a storage medium using a general-purpose computer, a dedicated processor, or programmable or dedicated hardware.
[0254] The storage medium may be a magnetic disk, an optical disk, a read-only storage memory, a random access memory, a flash memory, a hard disk or a solid state drive, etc.; further, the storage medium may also include a combination of the above-mentioned types of memories. It is understood that a computer, a processor, a microprocessor controller or programmable hardware includes a storage component that can store or receive software or computer code. When the software or computer code is accessed and executed by the computer, processor or hardware, the method shown in the above embodiment is implemented.
[0255] Embodiments of the present application may also provide a computer program product, including computer program instructions, which, when executed by a processor, cause the processor to perform the steps in the above method. Wherein, the computer program product may be written in any combination of one or more programming languages to perform program codes for performing the operations of the disclosed embodiments, wherein the programming languages include object-oriented programming languages, such as Java, C++, etc., and also include conventional procedural programming languages, such as "C" language or similar programming languages. The program code may be executed entirely on a user computing device, partially on a user device, as an independent software package, partially on a user computing device, partially on a remote computing device, or entirely on a remote computing device or server.
[0256] Although the embodiments of the present invention have been described in conjunction with the accompanying drawings, those skilled in the art may make various modifications and variations without departing from the spirit and scope of the present invention, and such modifications and variations are all within the scope defined by the appended claims.
Claims
1. A data transmission method for a three-level CLOS network, applied to a three-level CLOS network, characterized in that: Each level in the three-level CLOS network includes at least one routing node, wherein there is a transmission path between each routing node of the previous level and each routing node of the next level, and the method includes: The first and second level nodes receive the data packet sent from the first and third level nodes after the first detour; The first secondary node determines a target primary node corresponding to the data packet, and obtains a first target path between the first secondary node and the target primary node; When detecting that the first target path is congested, the first level 2 node obtains N uplink paths from the first level 2 node to N level 3 nodes, and an occupied or idle state of each uplink path, where N≥1 and is a positive integer; The first level 2 node determines an uplink path from the N uplink paths as a second target path according to an occupied or idle state of the N uplink paths, where the second target path is a path between the first level 2 node and the second level 3 node; The first secondary node sets a flag bit of its own node, where the flag bit is used to indicate whether the path between the current node and the previous node has been through data transmission in the history; The first secondary node generates accompanying information according to the flag bit, and adds the accompanying information to the data packet; The first second-level node sends the data packet with the accompanying information added to the second third-level node through the second target path; The method further comprises: After receiving the data packet sent by the first second-level node, the second third-level node obtains at least one downlink path connecting it with at least one second-level node; The second third level node parses the data packet to obtain accompanying information; The second third-level node determines a third target path and the second second-level node associated with the third target path according to the accompanying information and the path status of at least one downlink path; The second third-level node sets a flag bit of the second third-level node, updates the accompanying information, and adds the updated accompanying information to the data packet; The second third-level node transmits the data packet after the accompanying information is updated to the second second-level node through the third target path; After receiving the data packet for updating the accompanying information sent by the second third-level node, the second second-level node parses the data packet to obtain the updated accompanying information; The second level 2 node determines a fourth target path according to the updated accompanying information and a path state vector corresponding to the second level 2 node; The second second-level node transmits the data packet to a third third-level node or a target first-level node via the fourth target path.
2. The method according to claim 1, characterized in that The first secondary node determines, according to an occupied or idle state of the N uplink paths, an uplink path from the N uplink paths as a second target path, including: The first secondary node acquires a path state vector, wherein the path state vector includes a plurality of 0 / 1 characters, which are used to indicate the states of N uplink paths and downlink paths connected to the first secondary node, wherein character 1 indicates that the path is idle and available, and character 0 indicates that the path is occupied; The first secondary node determines the first character from the path state vector according to the vector first-first search principle; The first secondary node determines, according to the first character, an upstream path associated with the character as the second target path.
3. The method according to claim 1, characterized in that The first secondary node determines a target primary node corresponding to the data packet, including: The first secondary node obtains a routing vector corresponding to a target output port and a routing vector corresponding to an input port, wherein the routing vector is composed of a plurality of 0 / 1 characters; The first secondary node compares the upper 3 bits of the routing vectors corresponding to the input port and the target output port; If the upper 3 bits are not equal, the data is determined to be uplink, indicating that the target output port corresponding to the input data and its corresponding input port are not connected to the same first-level node, and the data packet needs to be transmitted through the previous-level node and then routed to the target output port; If the upper 3 bits are equal, the data is determined to be downlink, indicating that the target output port corresponding to the input data and its corresponding input port are connected to the same primary node, and the data packet needs to be routed inside the primary node to output the target output port.
4. The method according to claim 2, characterized in that: The first-level node obtains the path state vector, including: The first level 2 node acquires states of N uplink paths and downlink paths connected to the first level 2 node; The first secondary node determines the corresponding 0 / 1 character according to the status of the upstream path and the downstream path. If the status of the upstream path or the downstream path is idle and available, it is represented by character 1, and if the status is occupied, it is represented by character 0; and the 0 / 1 characters are sorted according to the principle that the path to the target primary node has a high priority and the path to N upstream paths has a low priority to generate the path state vector.
5. The method according to claim 1, characterized in that After determining an uplink path from the N uplink paths as the second target path, the method further includes: The first secondary node updates the state of the second target path to an "occupied" state; After sending the data packet with the accompanying information added to the second third-level node, the method further includes: When all the data packets are sent through the second target path, the first secondary node updates the second target path from an "occupied" state to an "idle" state.
6. The method according to claim 1, characterized in that The second level 2 node determines a fourth target path according to the updated accompanying information and a path state vector corresponding to the second level 2 node, including: The second level 2 node determines at least one uplink or downlink path according to at least one level 3 node and at least one level 2 node connected thereto; The second level 2 node determines a corresponding path state vector according to a state of the at least one uplink or downlink path; The second level 2 node selects, according to the path state vector and the updated accompanying information, a path that is in an available state and has not been traveled in history from at least one uplink path and has accompanying information indicating that the path is congested, as the fourth target path; Alternatively, the second level 2 node selects the downlink path as the fourth target path when determining that the downlink path connected to the second level 2 node is available based on the path state vector and the updated accompanying information.
7. The method according to claim 6, characterized in that In the case of transmitting the data packet to the third third-level node, the method further comprises: After receiving the data packet sent by the second second-level node, the third third-level node obtains at least one downlink path connecting it with at least one second-level node; The third level-3 node parses the data packet to obtain accompanying information, and determines a fifth target path and the third level-2 node associated with the fifth target path according to the accompanying information and the path state of at least one downlink path; The third third-level node sets a flag bit of the third third-level node, updates the accompanying information, and adds the updated accompanying information to the data packet; The third third-level node transmits the data packet after updating the accompanying information to the third second-level node through the fifth target path.
8. The method according to claim 7, characterized in that The method further comprises: After receiving the data packet for updating the accompanying information sent by the third level-2 node, the third level-3 node parses the data packet to obtain the updated accompanying information; The third level-2 node determines a sixth target path according to the updated accompanying information and the path state vector corresponding to the third level-2 node; The third second-level node transmits the data packet to the target first-level node connected to the sixth target path through the sixth target path.
9. The method according to claim 8, characterized in that The method further comprises: After receiving the data packet transmitted from the third second-level node through the sixth target path, the target first-level node determines the output port connected to the target first-level node by judging through the lower 2 bits of the target port routing vector; The target first-level node strips the accompanying information from the data packet and outputs it from the output port.
10. A three-level CLOS network system, characterized in that: The three-level CLOS network includes three levels, each level includes at least one routing node, wherein there is a transmission path between each routing node of the upper level and each routing node of the lower level; The primary nodes, secondary nodes and / or tertiary nodes in the three-level CLOS network are respectively used to execute the method steps of the corresponding nodes in any one of claims 1-9.
11. A computer-readable storage medium, characterized in that: The computer-readable storage medium stores computer instructions, and the computer instructions are used to enable a computer to execute the data transmission method for a three-level CLOS network according to any one of claims 1 to 9.
12. A computer program product, characterized in that The method comprises computer instructions, wherein the computer instructions are used to cause a computer to execute the data transmission method for a three-level CLOS network according to any one of claims 1 to 9.
