WO2022061783A1 - 路由方法及数据转发系统 - Google Patents

路由方法及数据转发系统 Download PDF

Info

Publication number
WO2022061783A1
WO2022061783A1 PCT/CN2020/117939 CN2020117939W WO2022061783A1 WO 2022061783 A1 WO2022061783 A1 WO 2022061783A1 CN 2020117939 W CN2020117939 W CN 2020117939W WO 2022061783 A1 WO2022061783 A1 WO 2022061783A1
Authority
WO
WIPO (PCT)
Prior art keywords
node
child
data
nodes
sending
Prior art date
Application number
PCT/CN2020/117939
Other languages
English (en)
French (fr)
Inventor
林云
明小勇
Original Assignee
华为技术有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 华为技术有限公司 filed Critical 华为技术有限公司
Priority to CN202080105269.XA priority Critical patent/CN116349208A/zh
Priority to PCT/CN2020/117939 priority patent/WO2022061783A1/zh
Publication of WO2022061783A1 publication Critical patent/WO2022061783A1/zh

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/42Loop networks

Definitions

  • the embodiments of the present application relate to the field of data processing, and in particular, to a routing method and a data forwarding system.
  • the interconnection between the four nodes is generally a ring interconnection.
  • a typical feature of ring interconnection is that the interconnection between two adjacent nodes that are directly interconnected is bidirectional. For example, for the four nodes of node A, node B, node C, and node D that are interconnected by ring, the specific connection relationship can be as follows: node A is interconnected with node B, node B is interconnected with node C, and node A is interconnected with node C.
  • node C is interconnected with node D
  • node D is interconnected with node A.
  • node A and node B there is a connection between node A and node B, and there is also a connection between node B and node A.
  • the existing routing rules for four nodes interconnected by a ring are generally as follows: data between two adjacent nodes that are directly interconnected are sent directly. For example, node A can send data to node B at R rate line speed. Data between two diagonal nodes that are indirectly interconnected (or called not directly interconnected) needs to be distributed (traffic distribution), or, it can also be called load balancing (LB). For example, when node A sends data to node C, 50% of the data can be forwarded to node C through node B, and the other 50% of the data can be forwarded to node C through node D.
  • LB load balancing
  • LB data between the diagonal nodes may cause the data received by the destination node to be out of order, and the destination node needs to perform LB on the received data.
  • the re-ordering process increases the implementation complexity.
  • the data sent by node A to node C includes two packets P1 and P2 whose order needs to be guaranteed, for example: P1 is before P2; and when LB is performed on the data, P1 is forwarded to node C through node B, and P2 If the data is forwarded to node C through node D, the processing delays of P1 and P2 may be different due to the different data traffic states within node B and node D, and node C may receive P2 first and then receive P1. , at this time, node C is required to reorder P1 and P2.
  • the embodiments of the present application provide a routing method and a data forwarding system.
  • the method can avoid interconnection bus congestion and simplify the use of The implementation complexity of the four nodes interconnected by the ring.
  • the method is also applicable to the forwarding of multicast data.
  • an embodiment of the present application provides a routing method, which is applied to a ring network composed of at least 4 nodes, wherein the at least 4 nodes include a first node and a second node, and the first node and the second node are adjacent,
  • the method includes: the first node obtains the first data to be sent, the destination node of the first data to be sent is the first destination node, and the first destination node is not adjacent to the first node.
  • the first node sends all the first data to be sent along the first direction in the ring network.
  • the second node obtains the second data to be sent, the destination node of the second data to be sent is the second destination node, and the second destination node is not adjacent to the second node; the second node sends all the second data to be sent along the ring network
  • the second direction is sent, and the first direction and the second direction are opposite.
  • the first node sends data to the first destination node along the first direction in the ring network; the second node sends data to the second destination node along the second direction in the ring network, and the first direction is the same as the second destination node.
  • the two directions are opposite; therefore, there is no interconnect bus congestion when data is transferred between nodes.
  • the node since LB does not need to be performed on the data, the node does not need to reorder the received data, so that the implementation complexity of the node can be simplified.
  • the ring network includes only 4 nodes, the first destination node is a diagonal node of the first node; the second destination node is a diagonal node of the second node.
  • I/O nodes in addition to the ring network, some other I/O nodes may also be included, which is not limited herein.
  • the method further includes: the first node obtains the third data to be sent, and the destination node of the third data to be sent is the second node; the first node directly sends all the third data to be sent to the third node Two nodes send.
  • the second node obtains the fourth data to be sent, and the destination node of the fourth data to be sent is the first node; the second node directly sends all the fourth data to be sent to the first node.
  • data between two adjacent nodes eg, the first node and the second node
  • data between two adjacent nodes eg, the first node and the second node
  • the first direction is clockwise and the second direction is counterclockwise.
  • the first direction is a counterclockwise direction
  • the second direction is a clockwise direction
  • the method further includes: when the first node sends data (such as the first data to be sent) to the diagonal nodes of the first node along the first direction, the first node is located in the first node.
  • the second node in the first direction copies the data.
  • the second node sends data (such as the above-mentioned second data to be sent) to the diagonal nodes of the second node along the second direction, the first node located in the second direction of the second node copies the data. stated data.
  • This design can be applied to multicast scenarios to realize the sending of multicast data.
  • each of the four nodes in the ring network includes a plurality of sub-nodes that are interconnected with each other, and the sub-nodes included in any two nodes are in one-to-one correspondence, And the child nodes included in two adjacent nodes are connected in a one-to-one correspondence.
  • the first node sends all the third data to be sent directly to the second node, including: when the sending sub-node in the first node corresponds to the receiving sub-node in the second node, the sending sub-node directly Send all the third data to be sent to the receiving child node.
  • the second node directly sends all the fourth data to be sent to the first node, including: when the sending child node in the second node corresponds to the receiving child node in the first node, the sending child node directly sends the receiving child node to the receiving child node. Send all the fourth data to be sent.
  • the first node directly sends all the third data to be sent to the second node, and further includes: if the second node is located in the first direction of the first node, and the sending sub-node in the first node is the same as the first node.
  • the transmitting sub-node sends all the third data to be sent to the receiving sub-node via the sub-node corresponding to the transmitting sub-node in the second node.
  • the second node directly sends all the fourth data to be sent to the first node, further comprising: if the second node is located in the first direction of the first node, and the sending child node in the second node is the same as the one in the first node When the receiving sub-nodes do not correspond, the transmitting sub-node sends all the fourth data to be sent to the receiving sub-node via the sub-node corresponding to the transmitting sub-node in the first node.
  • the first node sends all the third data to be sent directly to the second node, and further includes: if the second node is located in the second direction of the first node, and the sending sub-node in the first node is the same as the second node.
  • the sending child node sends all the third data to be sent to the receiving child node via the child node corresponding to the receiving child node in the first node.
  • the second node directly sends all the fourth data to be sent to the first node, further comprising: if the second node is located in the second direction of the first node, and the sending child node in the second node is the same as the one in the first node When the receiving sub-nodes do not correspond, the transmitting sub-node sends all the fourth data to be sent to the receiving sub-node via the sub-node corresponding to the receiving sub-node in the second node.
  • the first node sends all the first data to be sent along a first direction in the ring network, including: a sending child node in the first node, a second node in the first direction via the first node
  • the child node corresponding to the sending child node sends all the first data to be sent to the receiving child node in the diagonal nodes of the first node; wherein the receiving child node corresponds to the sending child node.
  • the sending sub-node in the first node sends the message to the first node through the sub-node corresponding to the sending sub-node and the sub-node corresponding to the receiving sub-node in the second node in the first direction of the first node in turn.
  • the receiving child nodes in the diagonal nodes of the node send all the first data to be sent; wherein, the receiving child nodes and the sending child nodes do not correspond.
  • the second node sends all the second data to be sent along the second direction in the ring network, including: the sending child node in the second node, the first node in the second direction via the second node
  • the child node corresponding to the sending child node in the middle node sends all the second data to be sent to the receiving child node in the diagonal node of the second node; wherein the receiving child node corresponds to the sending child node.
  • the sending child node in the second node sends the message to the second node via the child node corresponding to the sending child node and the child node corresponding to the receiving child node in the first node in the second direction of the second node.
  • the receiving sub-nodes in the diagonal nodes of the node transmit all the second data to be sent; wherein, the receiving sub-nodes and the transmitting sub-nodes do not correspond.
  • each node may actually be composed of multiple lower-bandwidth child nodes when four nodes are interconnected by ring.
  • an embodiment of the present application provides a data forwarding system, including at least 4 nodes, the at least 4 nodes form a ring network, and the at least 4 nodes include a first node and a second node, the first node and the second node adjacent.
  • the first node is used to obtain the first data to be sent
  • the destination node of the first data to be sent is the first destination node
  • the first destination node is not adjacent to the first node; all the first data to be sent are sent along the ring network. sent in the first direction.
  • the second node is used to obtain the second data to be sent, the destination node of the second data to be sent is the second destination node, and the second destination node is not adjacent to the second node; all the second data to be sent are sent along the ring network
  • the second direction is sent, and the first direction and the second direction are opposite.
  • the data forwarding system may be a CPU system composed of four CPUs, or a server system composed of four servers, or a larger computing system or a transmission system composed of four server systems.
  • the data forwarding system may also be a switching chip composed of multiple subunits, a chip system composed of different chips on a PCB, a system composed of different network devices, and the like.
  • the ring network includes only 4 nodes, the first destination node is a diagonal node of the first node; the second destination node is a diagonal node of the second node.
  • the first node is further configured to obtain the third data to be sent, and the destination node of the third data to be sent is the second node; all the third data to be sent are directly sent to the second node.
  • the second node is further configured to acquire the fourth data to be sent, and the destination node of the fourth data to be sent is the first node; all the fourth data to be sent are directly sent to the first node.
  • each of the four nodes in the ring network includes a plurality of sub-nodes that are interconnected with each other, the sub-nodes included in any two nodes are in one-to-one correspondence, and two adjacent nodes are in a one-to-one relationship.
  • the included child nodes are interconnected in a one-to-one correspondence.
  • the first node is specifically configured to directly send all the third data to be sent to the receiving child node through the sending child node when the sending child node in the first node corresponds to the receiving child node in the second node.
  • the second node is specifically configured to directly send all the fourth data to be sent to the receiving child node through the sending child node when the sending child node in the second node corresponds to the receiving child node in the first node.
  • the first node is specifically also used if the second node is located in the first direction of the first node, and the sending sub-node in the first node does not correspond to the receiving sub-node in the second node At the time, the sending child node sends all the third data to be sent to the receiving child node through the child node corresponding to the sending child node in the second node.
  • the second node is specifically also used for, if the second node is located in the first direction of the first node, and the sending sub-node in the second node does not correspond to the receiving sub-node in the first node, the The child node corresponding to the sending child node in the first node sends data to the receiving child node.
  • the first node is also specifically used if the second node is located in the second direction of the first node, and the sending sub-node in the first node does not correspond to the receiving sub-node in the second node At the time, the sending child node sends all the third data to be sent to the receiving child node through the child node corresponding to the receiving child node in the first node.
  • the second node is specifically also used for, if the second node is located in the second direction of the first node, and the sending child node in the second node does not correspond to the receiving child node in the first node, the sending child The child node corresponding to the receiving child node in the two nodes sends data to the receiving child node.
  • the first node is specifically configured to send a message to the first node through the sending child node in the first node through the child node corresponding to the sending child node in the second node in the first direction of the first node.
  • the receiving child nodes in the diagonal nodes of a node send all the first data to be sent; wherein the receiving child nodes correspond to the sending child nodes.
  • the receiving child nodes in the diagonal nodes of a node send all the first data to be sent; wherein, the receiving child nodes and the sending child nodes do not correspond.
  • the first node is specifically configured to send a message to the first node through the sending child node in the second node through the child node corresponding to the sending child node in the first node in the second direction of the second node.
  • the receiving child nodes in the diagonal nodes of the two nodes send all the second data to be sent; wherein, the receiving child nodes correspond to the sending child nodes.
  • the receiving child nodes in the diagonal nodes of the node send all the second data to be sent; wherein, the receiving child nodes and the sending child nodes do not correspond.
  • each node in the data forwarding system described in the second aspect routes data according to the routing method described in the first aspect. Therefore, for the beneficial effects of the second aspect, reference may be made to the above-mentioned first aspect, which will not be repeated here.
  • Figure 1 shows a schematic diagram of the interconnection of four node rings
  • Figure 2 shows a schematic diagram of four node mesh interconnection
  • FIG. 3 shows a schematic diagram of ring interconnection in a switch chip
  • Fig. 4 shows another schematic diagram of the interconnection of four node rings
  • FIG. 5 shows a schematic diagram of routing directions in the ring interconnection of four nodes provided by an embodiment of the present application
  • FIG. 6 shows another schematic diagram of routing directions in the ring interconnection of four nodes provided by an embodiment of the present application
  • Figure 7 shows yet another schematic diagram of the interconnection of four node rings
  • Figure 8 shows yet another schematic diagram of the interconnection of four node rings.
  • each die can be considered as a node.
  • each chip can be considered as a node.
  • each network device may be considered as a node or the like.
  • the interconnection between four nodes usually includes two interconnection modes: ring interconnection and mesh interconnection.
  • the following takes the interconnection of four nodes, node A, node B, node C, and node D as an example, to briefly introduce the two interconnection methods of ring interconnection and mesh interconnection.
  • Figure 1 shows a schematic diagram of the interconnection of four node rings.
  • two adjacent nodes can be interconnected in pairs, thereby forming a ring structure as a whole.
  • the specific connection relationship exemplarily given in FIG. 1 is: node A is interconnected with node B, node B is interconnected with node C, node C is interconnected with node D, and node D is interconnected with node A.
  • R represents the input/ouput (I/O) port rate.
  • node A and node B there is a connection between node A and node B, and there is also a connection between node B and node A. That is, among the four nodes using ring interconnection, the interconnection between two adjacent nodes that are directly interconnected is bidirectional.
  • Figure 2 shows a schematic diagram of four node mesh interconnections.
  • each of the nodes and the other three nodes are directly interconnected, for example: node A is respectively Interconnects with Node B, Node C, and Node D.
  • r represents the I/O port rate.
  • the interconnection between any two nodes is bidirectional.
  • the interconnection between the above nodes generally adopts a ring interconnection method similar to that shown in FIG. 1 .
  • FIG. 3 shows a schematic diagram of ring interconnection in a switch chip.
  • a large-capacity switch (switch) chip may be composed of four identical small-capacity subunits (chiplets), and chiplets may also be referred to as small pieces.
  • the switch chip may be composed of four chiplets with a capacity of 12.8Tbps, that is, the capacity of each chiplet is 12.8Tbps.
  • These 4 chiplets can be named A, B, C, D in turn.
  • the four chiplets can be interconnected by ring, that is, A is connected to B, B is connected to C, C is connected to D, and D is connected to A.
  • the routing mechanism between any two nodes is generally direct. For example, if node A wants to send data to node C, it can be sent directly through the direct-connected bus between node A and node C.
  • the bandwidth between two nodes is not less than the I/O bandwidth of the node (for example, as shown in Figure 2, each connection is r)
  • the direct connection bus is usually selected for transmission. But when the interconnection bus between two nodes is less than r, it may also need to be sent through other nodes to ensure line rate.
  • the two nodes that are directly interconnected can directly send data through the direct-connected bus, but the two nodes that are not directly interconnected (node A and node C as shown in Figure 1)
  • node A and node C When sending data, it must be forwarded through other intermediate nodes.
  • node A needs to send data to node C
  • node B Assume that when node A needs to send data to node C, it all forwards it to node C through node B.
  • node B also needs to send data to node C, there will be nodes on the path between node B and node C at the same time.
  • the avoidance of interconnection bus congestion means: when the ports of all nodes have no output contention (or, oversubscribed), after using the specified routing mechanism, any traffic distribution will not exceed the internal interconnection bus bandwidth. As a result, the data traffic to be sent accumulates in the node. Egress contention means that the sum of the ingress traffic to an egress port exceeds the bandwidth of the egress port. Traffic distribution refers to the traffic pattern in which any source node sends data traffic to any destination node.
  • the existing routing rules for four nodes interconnected by a ring are generally as follows: data between two adjacent nodes that are directly interconnected are sent directly. Data between two diagonal nodes that are indirectly interconnected (or called not directly interconnected) needs to be distributed (traffic distribution), or, it can also be called load balancing (LB).
  • traffic distribution traffic distribution
  • LB load balancing
  • FIG. 4 shows another schematic diagram of the interconnection of four node rings.
  • a possible connection method is that node A and node B are interconnected, and node B and node C are interconnected.
  • Interconnect, node C is interconnected with node D, and node D is interconnected with node A.
  • the interconnection bus between node A and node B includes: bus ab for node A to send data to node B, and bus ba for node B to send data to node A.
  • Other nodes are similar and will not be repeated here.
  • the direct transmission of data between two adjacent nodes that are directly interconnected refers to: node A and node B, or node B and node C, or node C Directly send data with node D, or between node D and node A, for example, node A can send data to node B at R rate line-speed.
  • LB is required for the data between two diagonal nodes that are indirectly interconnected, which means that the data between node A and node C, or between node B and node D, needs to be LB. For example, when node A sends data to node C, it can be 50% of the data is forwarded to node C through node B, and the other 50% of the data is forwarded to node C through node D.
  • the I/O port rate R of each node is 1, and the ports of all nodes have no egress competition.
  • node A needs to send data to node C
  • node B needs to send data to node D
  • node C needs to send data to node A
  • node D needs to send data to node B, that is, node A, node B
  • the data transmission mode may be as follows.
  • Node A forwards 50% of the data that needs to be sent to node C to node C through node B (the paths are buses ab and bc), and the other 50% is forwarded to node C through node D (the paths are buses ad and dc) .
  • Node B forwards 50% of the data that needs to be sent to node D to node D through node A (the paths are buses ba and ad), and the other 50% is forwarded to node D through node C (the paths are buses bc and cd) .
  • Node C forwards 50% of the data that needs to be sent to node A to node A through node D (the paths are buses cd and da), and the other 50% is forwarded to node A through node B (the paths are buses cb and ba) .
  • Node D forwards 50% of the data that needs to be sent to node B to node B through node A (the path is bus da and ab), and the other 50% is forwarded to node B through node C (the path is bus dc and cb) .
  • the data traffic occupancy in the connection bus of the aforementioned four nodes may be as shown in Table 1 below.
  • the four nodes interconnected by the ring perform data forwarding according to the above-mentioned routing rules of the LB.
  • the interconnection bus congestion can be avoided, in the above-mentioned existing routing rules for the four nodes interconnected by the ring, the diagonal node LB between the data may cause the data received by the destination node to be out of order, and the destination node needs to perform re-ordering processing on the received data, which increases the complexity of implementation.
  • the data sent by node A to node C includes two packets P1 and P2 whose order needs to be guaranteed, for example: P1 is before P2; and when LB is performed on the data, P1 is forwarded to node C through node B, and P2 If the data is forwarded to node C through node D, the processing delays of P1 and P2 may be different due to the different data traffic states within node B and node D, and node C may receive P2 first and then receive P1. , at this time, node C is required to reorder P1 and P2.
  • the reordering process often requires a certain buffer to store the first-come packets, such as P2, which also requires corresponding processing logic management, which will lead to a high implementation complexity of node C.
  • node A For the source node (for example, node A sends data to node C, node A is called the source node, and node C is called the destination node), because the data may be composed of large and small packets of different lengths, and the transmission of the packets
  • the time is uncertain, so how the source node distributes traffic evenly to adjacent nodes is also a problem, which will also increase the implementation complexity of node A.
  • the four nodes interconnected by the ring need to forward data according to the routing rules of the LB, which will increase the complexity of implementation.
  • the multicast data refers to: if node A needs to fan out the packet P3 to two destination nodes, node B and node C at the same time, the packet P3 can be understood as the multicast data of node A.
  • the unicast mechanism refers to the aforementioned data that a source node only sends to a certain destination node, for example, the packets P1 and P2 that node A needs to send to node C.
  • node A needs to fan out packet P3 to node B and node C at the same time.
  • node A can directly send packet P3 to node B.
  • the packet P3 will be forwarded by node B to node C shortly. That is to say, the message P3 that needs to be fanned out to node C will take the shortest path A ⁇ B ⁇ C, and cannot do LB, which will cause the bus congestion between node A and node B, which will interfere with node A's need for fanning Outgoing packets to Node B.
  • An embodiment of the present application provides a routing method, which is applied to a ring network composed of at least 4 nodes, where the at least 4 nodes include a first node and a second node, the first node and the second node are adjacent, and the The method includes: the first node obtains the first data to be sent, the destination node of the first data to be sent is the first destination node, and the first destination node is not adjacent to the first node; Sending in the first direction in the ring network; the second node obtains the second data to be sent, the destination node of the second data to be sent is the second destination node, and the second destination node is not adjacent to the second node; the second node will all The second data to be sent is sent along a second direction in the ring network, and the first direction and the second direction are opposite.
  • this method can be applied to a scenario when four nodes are connected in a ring interconnection mode, and the ports of all nodes have no egress competition.
  • the method can simplify the implementation complexity of the four nodes using ring interconnection while avoiding the interconnection bus congestion between nodes.
  • the method is also applicable to the forwarding of multicast data.
  • the ring network includes only 4 nodes, the first destination node is a diagonal node of the first node; the second destination node is a diagonal node of the second node.
  • the method is described below by taking the ring network including only 4 nodes as an example.
  • a ring interconnection is used between node A, node B, node C, and node D.
  • Node A and node C are diagonal nodes to each other, and node B and node D are diagonal nodes to each other.
  • the first node described in the routing method provided in the embodiment of the present application may be any one of node A, node B, node C, and node D.
  • the diagonal nodes of the first node are node C
  • the adjacent nodes of the first node are node B and node D.
  • the first node when the first node is node B, the diagonal nodes of the first node are node D, and the adjacent nodes of the first node are node A and node C.
  • the first node may also be node C and node D, which is similar to the above, and will not be listed one by one here.
  • A, B, C, D, etc. are only used to identify the node.
  • node and node C is connected, node C is connected with node B, node B is connected with node D, node D is connected with node A, and the names of the first node and the diagonal nodes of the first node and the adjacent nodes of the first node will change accordingly .
  • the first node is node A, the diagonal nodes of the first node become node B, and the adjacent nodes of the first node become node C and node D. That is to say, the ring interconnection of the four nodes shown in FIG.
  • the method is applied to four nodes connected in a ring. Since the first node is any one of the four nodes connected in a ring, in this routing method, the first node and the diagonal nodes of the first node send data to each other (for example, in the embodiment of the present application, the first node The diagonal node of the node may be called the first destination node, and the data sent by the first node to the first destination node may be called the first data to be sent), the routing direction of the data is all along the first direction.
  • the adjacent nodes of the first node that is, the second node and the diagonal nodes of the second node (which are also adjacent nodes of the first node) send data to each other (for example, in the embodiment of the present application, the diagonal nodes of the second node
  • the node may be referred to as the second destination node, and the data sent by the second node to the second destination node may be referred to as the second data to be sent), the routing directions of the data are all along the second direction. Since the first direction and the second direction are opposite, there is no interconnection bus congestion when the four nodes transmit data. In addition, since LB does not need to be performed on the data, the node does not need to reorder the received data, so that the implementation complexity of the node can be simplified.
  • the scenario of sending data between four nodes mainly includes sending data between two directly connected adjacent nodes, And two scenarios of sending data between two diagonal nodes that are not directly connected.
  • node A and node B node B and node C, node C and node D, and node D and node A, since the two nodes in any of the foregoing groups are directly connected adjacent nodes, so, Data between node A and node B, data between node B and node C, data between node C and node D, and data between node D and node A can all be sent directly.
  • the first node can directly send data to the second node (
  • the data sent by the first node to the second node may be referred to as the third data to be sent
  • the data sent by the second node to the first node may be referred to as the fourth data to be sent).
  • node A and node C that are diagonal nodes to each other, since node A and node C are not directly connected, data between node A and node C needs to be forwarded by an intermediate node.
  • Node B and Node D which are diagonal nodes to each other, since Node B and Node D are not directly connected, data between Node B and Node D also needs to be forwarded by an intermediate node.
  • node A when node A needs to send data to node C, node A needs to send data to node C along the first direction via an intermediate node located in the first direction of node A.
  • node C When node C needs to send data to node A, node C also needs to send data to node A along the first direction via an intermediate node located in the first direction of node C.
  • the node B When the node B needs to send data to the node D, the node B needs to send the data to the node D through the intermediate node located in the second direction of the node B along the second direction.
  • node D When node D needs to send data to node B, node D also needs to send data to node B along the second direction via an intermediate node located in the second direction of node D.
  • the first direction is opposite to the second direction.
  • the first node needs to move in the first direction to the first node.
  • the diagonal node of a node sends data; the second node adjacent to the first node needs to send data to the diagonal node of the second node along the second direction.
  • FIG. 5 shows a schematic diagram of routing directions in a ring interconnection of four nodes provided by an embodiment of the present application.
  • the first direction is a clockwise direction
  • the second direction is a counterclockwise direction opposite to the first direction
  • node A when node A needs to send data to node C, node A needs to send data to node C via node B located in the clockwise direction of node A in a clockwise direction. That is, the path for node A to send data to node C is: A ⁇ B ⁇ C.
  • node C When node C needs to send data to node A, node C also needs to send data to node A via node D located in the clockwise direction of node C in a clockwise direction. That is, the path for node C to send data to node A is: C ⁇ D ⁇ A.
  • node B When node B needs to send data to node D, node B needs to send data to node D via node A located in the counterclockwise direction of node B in a counterclockwise direction. That is, the path for node B to send data to node D is: B ⁇ A ⁇ D.
  • node D When node D needs to send data to node B, node D also needs to send data to node B via node C located in the counterclockwise direction of node D in a counterclockwise direction. That is, the path through which node D sends data to node B is: D ⁇ C ⁇ B.
  • FIG. 6 shows another schematic diagram of routing directions in the ring interconnection of four nodes provided by an embodiment of the present application.
  • the first direction is a counterclockwise direction
  • the second direction is a clockwise direction opposite to the first direction
  • node A when node A needs to send data to node C, node A needs to send data to node C via node D located in the counterclockwise direction of node A in a counterclockwise direction. That is, the path for node A to send data to node C is: A ⁇ D ⁇ C.
  • node C When node C needs to send data to node A, node C also needs to send data to node A via node B located in the counterclockwise direction of node C in a counterclockwise direction. That is, the path for node C to send data to node A is: C ⁇ B ⁇ A.
  • node B When node B needs to send data to node D, node B needs to send data to node D via node C located in the clockwise direction of node B in a clockwise direction. That is, the path for node B to send data to node D is: B ⁇ C ⁇ D.
  • node D When node D needs to send data to node B, node D also needs to send data to node B via node A located in the clockwise direction of node D in a clockwise direction. That is, the path through which node D sends data to node B is: D ⁇ A ⁇ B.
  • connection between node A and node B, and the connection between node C and node D among the nodes A, node B, node C, and node D of the ring interconnection shown in the aforementioned FIG. 5 are defined as rows
  • the connection between node A and node D, and the connection between node B and node C are defined as columns
  • the routing method can also be simplified or simply understood as: node A, node B, node C and node D follow the "phase”.
  • the data between adjacent nodes is sent directly or directly, and the data between diagonal nodes is first horizontal (horizontal refers to row) and then vertical (vertical refers to column)" routing rule.
  • node A sends data to node C: the first horizontal means that node A sends data to node B, and the latter vertical means that node B forwards data to node C.
  • node B sends data to node D horizontal first means that node B sends data to node A, and vertical means that node A forwards data to node D.
  • node D sends data to node B horizontal first means that node D sends data to node C, and vertical means that node C forwards data to node B.
  • the routing method can also be simplified or simply understood as: node A, node B, node C and node D:
  • node A sends data to node C
  • the first vertical means that node A sends data to node D
  • the latter horizontal means that node D forwards data to node C
  • node B sends data to node D
  • the first vertical means that node B sends data to node C
  • the latter horizontal means that node C forwards data to node D
  • node D sends data to node B the first vertical means that node D sends data to node A, and the latter horizontal means that node A forwards data to node B.
  • the next hop node of any column of the bus (for example, the next hop node of the bus ad is node D) must be all traffic on the column of the bus. end. Since there is no export competition, the bus bandwidth of this column will naturally not exceed.
  • the previous hop node of any row of bus (for example, the previous hop node of bus ab is node A) must be the source point of all traffic on the row of bus. Since the source traffic cannot exceed 1, the bus bandwidth of this line will naturally not exceed 1.
  • the routing method provided by the embodiment of the present application can avoid interconnection bus congestion without using LB. Since the nodes do not need to perform LB, there is also no need to perform reordering processing, which can simplify the implementation complexity of the four nodes interconnected by rings.
  • the foregoing embodiments mainly describe the scenario in which data is sent from a source node to a single target node, that is, a unicast scenario, and introduces the routing method provided by the embodiments of the present application.
  • the following describes the application of the routing method provided in the embodiment of the present application in a multicast scenario.
  • node A needs to fan out the multicast packet P to node B and node D at the same time, this When node B and node D are directly connected to node A and are adjacent nodes of node A, node A can directly fan out the multicast packet P to node B and node D at the same time.
  • node A needs to fan out the multicast packet P to node B and node C at the same time, node B is directly connected to node A, and node A can directly fan out the multicast packet P to node B.
  • node C is a diagonal node of node A. Therefore, node A needs to forward the multicast packet P to node C through an intermediate node. For example, when node A is the first node and the first direction is clockwise, node A needs to forward the multicast packet P to node C via node B located in the clockwise direction of node A. When node A is the first node and the first direction is counterclockwise, node A needs to forward the multicast packet P to node C via node D located in the counterclockwise direction of node A.
  • the source node when the destination node to which the multicast packet of the source node needs to be fanned out includes the adjacent nodes of the source node, the source node can directly fan out the multicast packet to the adjacent node.
  • the destination node to which the multicast packet of the source node needs to be fanned out includes the diagonal nodes of the source node
  • the source node can follow the routing method in the first node or the second node (depending on whether the source node is the first node or the second node). ) in the data routing direction, and fan out the multicast packets to the diagonal nodes through the intermediate nodes.
  • the destination node that needs to be fanned out for the multicast message of the source node includes the adjacent node of the source node and the diagonal node of the source node, and the source node forwards the multicast message to the diagonal node through the adjacent node.
  • the source node only needs to fan out the multicast packet to the adjacent node once, and the adjacent node can keep (eg copy) a copy of the multicast packet by itself before forwarding the multicast packet to the diagonal node of the source node.
  • the source node when the source node fans out the multicast packet to the adjacent node, it can add an indication information to the packet, indicating that the packet is sent to the adjacent node and the diagonal node of the source node at the same time, so that the Before forwarding the multicast packet to the diagonal node of the source node, the adjacent node can keep a copy of the multicast packet by itself.
  • node A needs to fan out the multicast packet P to node B and node C at the same time, At this time, node A can only send the multicast packet P to node B once, and node B can forward the multicast packet P to node C, but before forwarding, node B also retains a multicast packet P, so that node A can simultaneously Fan out multicast packet P to Node B and Node C.
  • the aforementioned routing rules are followed. That is, when the routing method provided in this embodiment of the present application is applied to a multicast scenario, it can be understood as: when the first node sends data to the diagonal nodes of the first node along the first direction, The second node in the first direction copies the data.
  • the first node when the first node needs to simultaneously send data to the second node located in the first direction of the first node and the diagonal node of the first node, the first node directly sends data to the second node located in the first direction of the first node.
  • the second node sends the data, the second node forwards the data to the diagonal nodes of the first node, and at the same time, the data is copied and retained before forwarding.
  • the path between any two nodes is uniquely fixed among the four nodes interconnected by the ring, some enhanced functions can also be easily implemented.
  • the four nodes are chiplets in the switching chip shown in FIG. 3, a cut-through operation can also be performed between the chiplets to reduce the switching delay.
  • the cut-through operation is complicated due to the existence of multiple paths. Therefore, the unique fixed path between nodes in this routing method also helps to simplify the complexity of the cut-through operation.
  • each node may actually be composed of multiple sub-nodes with lower bandwidth, for example, may be composed of N sub-nodes, N Can be a positive integer greater than 1, such as 2, 3, 4, etc.
  • Figure 7 shows yet another schematic diagram of the interconnection of four node rings.
  • node B consists of four child nodes: child node B0, child node B1, child node B2, and child node B3;
  • node C consists of four child nodes: child node C0, child node C1, child node C2, and child node C3;
  • node D It consists of four child nodes, such as child node D0, child node D1, child node D2, and child node D3 (the child nodes of node B, node C, and node D are not shown in the figure).
  • the child nodes included in each node may be a die in the chip.
  • the child nodes included in each node may be chips in the network device.
  • the sub-nodes included in each node may be processors in the servers or the like. More other scenarios will not be repeated here.
  • the bus between the two directly connected adjacent nodes may actually be composed of multiple sub-buses with lower bandwidth.
  • the bus ab may actually be composed of four sub-buses ab0, ab1, ab2, and ab4.
  • the bandwidth of each sub-bus is r
  • Each sub-node in node A corresponds to a sub-bus, for example: sub-node A0 corresponds to sub-bus ab0, sub-node A1 corresponds to sub-bus ab1, sub-node A2 corresponds to sub-bus ab2, and sub-node A3 corresponds to sub-bus ab3.
  • multiple sub-nodes in the node can be directly connected through an internal bus to realize traffic between sub-nodes Non-blocking exchange.
  • multiple sub-nodes in each node may also implement non-blocking traffic switching between sub-nodes through dedicated switching logic (eg, connected through a separate switching module).
  • connection relationship of the sub-nodes of other nodes and the corresponding sub-buses are similar to those of node A, and are not repeated here.
  • A0 is interconnected with B0
  • A1 is interconnected with B1
  • A2 is interconnected with B2
  • A3 is interconnected with B3.
  • A0 corresponds to C0.
  • node A, node B, node C, and node D shown in FIG. 7 using ring interconnection that is, when each of node A, node B, node C, and node D includes multiple
  • the data traffic is evenly distributed to each sub-bus.
  • the child node A0 has 3.2T data to send to node B
  • the child node A0 will first divide the 3.2T data into four sub-buses ab0, ab1, ab2, and ab4 through the internal exchange of the node.
  • the bus is allocated 0.8T and then sent to Node B through four sub-buses. The purpose of this is to avoid bus competition when 4 nodes are interconnected. But in fact, even if the flow of data is evenly distributed to each sub-bus, bus contention may occur.
  • the sub-node A0 needs to send data X with a traffic size of 2 to the sub-node D0, and send data Y with a traffic size of 2 to the sub-node C. Since the total traffic size of data X and data Y is equal to 4, it does not exceed the total bandwidth of the egress port of node A (the total bandwidth of the four sub-buses is equal to 4), and node A does not have egress competition.
  • data X from A0 ⁇ D0 will occupy four sub-buses from ad0-ad3
  • data Y from A0 ⁇ C2 will occupy four sub-buses from ad0-ad3 and four sub-buses from cd0-cd3 in turn.
  • node A balances the traffic of data X and data Y
  • data X occupies a bandwidth of 0.5 in each of the four sub-buses of ad0-ad3
  • data Y is also in ad0-ad3.
  • Each of the four sub-buses of ad3 occupies a bandwidth of 0.5, and each of the four sub-buses of ad0-ad3 does not exceed its bandwidth.
  • the load is unbalanced, for example, when data X and data Y occupy a bandwidth of 0.6 in a certain sub-bus, there will be data X and data Y in one of the four sub-buses ad0-ad3.
  • the occupied bandwidth exceeds 1, resulting in contention in the sub-bus, resulting in congestion.
  • node A may not be able to evenly distribute the traffic of data X and/or Y to each sub-bus, resulting in load imbalance.
  • each of the four nodes using ring interconnection is composed of N child nodes, the child nodes included in any two nodes are in one-to-one correspondence, and the child nodes included in two adjacent nodes are connected in a one-to-one correspondence.
  • the embodiment of the present application further provides a routing method, which can further ensure that the bus is free from congestion.
  • Figure 8 shows yet another schematic diagram of the interconnection of four node rings.
  • each of the four nodes using ring interconnection is composed of 4 sub-nodes as an example, the sub-nodes included in two adjacent nodes are connected in one-to-one correspondence, for example: the relationship between node A and node B Between, A0 and B0 are interconnected, A1 and B1 are interconnected, A2 and B2 are interconnected, and A3 and B3 are interconnected. Between node B and node C, B0 is interconnected with C0, B1 is interconnected with C1, B2 is interconnected with C2, and B3 is interconnected with C3. Between node C and node D, C0 is interconnected with D0, C1 is interconnected with D1, C2 is interconnected with D2, and C3 is interconnected with D3. Between node A and node D, A0 is interconnected with D0, A1 is interconnected with D1, A2 is interconnected with D2, and A3 is interconnected with D3.
  • the scenario in which a certain sending child node (also called a source child node) sends data to a certain receiving child node (also called a destination child node) mainly includes: sending child nodes and The receiving child nodes are respectively the child nodes of the two adjacent nodes, and the sending child node and the receiving child node are respectively the child nodes of the diagonal nodes.
  • the sending child node is a child node of node A
  • the receiving child node is a child node of node B or node D
  • the corresponding sending child node and receiving child node are child nodes of two adjacent nodes respectively.
  • the sending child node is a child node in node A
  • the receiving child node is a child node in node C
  • the sending child node is a child node in node B
  • the receiving child node is a child node in node D
  • the corresponding sending A scenario where the child node and the receiving child node are respectively the child nodes in the diagonal node.
  • the routing method can be as follows.
  • the sending child node directly sends data to the receiving child node.
  • the sending child node is A0 and the receiving child node is B0 corresponding to A0, then the child node A0 directly sends data to the child node B0.
  • the sending child node and the receiving child node includes: 2.1) The sending child node and the receiving child node do not correspond, and the sending child node and the receiving child node are in the same line (for the definition of the same line, please refer to the above-mentioned 2.2) The sending child node and the receiving child node do not correspond, and the sending child node and the receiving child node are in the same column (for the definition of the same column, please refer to the above-mentioned embodiment).
  • the sending child node If the sending child node does not correspond to the receiving child node, and the sending child node and the receiving child node are in the same row, the sending child node first sends the data to the child node corresponding to the sending child node in the node where the receiving child node is located, Then, the child node corresponding to the sending child node forwards it to the receiving child node. That is, operations across child nodes are completed within the node where the receiving child node is located.
  • the child node A0 first sends the data to B0 corresponding to A0, and then the child node B0 forwards the data to the child node B1.
  • the child node B0 when the sending child node is B0 and the receiving child node is A1, the child node B0 first sends the data to A0 corresponding to B0, and then the child node A0 forwards the data to the child node A1.
  • the sending child node If the sending child node does not correspond to the receiving child node, and the sending child node and the receiving child node are in the same column, the sending child node first sends the data to the child node corresponding to the receiving child node in the node where the sending child node is located, The child node corresponding to the receiving child node is then forwarded to the receiving child node. That is, operations across child nodes are completed within the node where the sending child node is located.
  • the child node A0 when the sending child node is A0 and the receiving child node is D1, the child node A0 first sends the data to A1 corresponding to D1, and then the child node A1 forwards the data to the child node D1.
  • the child node D0 when the sending child node is D0 and the receiving child node is A1, the child node D0 first sends the data to D1 corresponding to A1, and then the child node D1 forwards the data to the child node A1.
  • the routing method can also as follows.
  • the sending child node directly sends data to the receiving child node.
  • the scene described in the above 2) is directed to the scene that the sending child node and the receiving child node do not correspond, and specifically includes: 2.1) The sending child node and the receiving child node do not correspond, and the sending child node and the receiving child node do not correspond. Scenarios in which the child nodes are in the same row (for the definition of the same row, please refer to the description in the previous embodiment); 2.2) The sending child node and the receiving child node do not correspond, and the sending child node and the receiving child node are in the same column (the definition of the same column). Please refer to the scenario described in the previous embodiment).
  • the sending child node If the sending child node does not correspond to the receiving child node, and the sending child node and the receiving child node are in the same row, the sending child node first sends the data to the child node corresponding to the receiving child node in the node where the sending child node is located, The child node corresponding to the receiving child node is then forwarded to the receiving child node. That is, operations across child nodes are completed within the node where the sending child node is located.
  • the child node A0 when the sending child node is A0 and the receiving child node is B1, the child node A0 first sends the data to A1 corresponding to B1, and then the child node A1 forwards the data to the child node B1.
  • the sending child node If the sending child node does not correspond to the receiving child node, and the sending child node and the receiving child node are in the same column, the sending child node first sends the data to the child node corresponding to the sending child node in the node where the receiving child node is located, Then, the child node corresponding to the sending child node forwards it to the receiving child node. That is, operations across child nodes are completed within the node where the receiving child node is located.
  • the child node A0 first sends the data to D0 corresponding to A0, and then the child node D0 forwards the data to the child node D1.
  • the routing method can also be comprehensively described as follows.
  • the sending child node directly sends data to the receiving child node.
  • the sending child node in the first node corresponds to the receiving child node in the second node
  • the sending child node directly sends all the third data to be sent to the receiving child node.
  • the sending child node in the second node corresponds to the receiving child node in the first node
  • the sending child node directly sends all the fourth data to be sent to the receiving child node.
  • the sending child node does not correspond to the receiving child node, and the sending child node is a child node in the first node, and the receiving child node is a child node in the second node located in the first direction of the first node, send the The child node sends data (eg, all the third data to be sent) to the receiving child node via the child node corresponding to the sending child node in the second node.
  • data eg, all the third data to be sent
  • the sending child node If the sending child node does not correspond to the receiving child node, and the sending child node is a child node in the first node, and the receiving child node is a child node in the second node located in the second direction of the first node, the sending child node Send data (eg, all the third data to be sent) to the receiving child node via the child node corresponding to the receiving child node in the first node.
  • data eg, all the third data to be sent
  • the sending child node If the sending child node does not correspond to the receiving child node, and the sending child node is a child node in the second node located in the first direction of the first node, and the receiving child node is a child node in the first node, the sending child node Send data (for example, all fourth data to be sent) to the receiving child node via the child node corresponding to the sending child node in the first node.
  • the sending child node Send data (for example, all fourth data to be sent) to the receiving child node via the child node corresponding to the sending child node in the first node.
  • the sending child node does not correspond to the receiving child node, and the sending child node is a child node in the second node located in the second direction of the first node, and the receiving child node is a child node in the first node, the sending child node Send data (for example, all fourth data to be sent) to the receiving child node via the child node corresponding to the receiving child node in the second node.
  • data for example, all fourth data to be sent
  • the first node is any one of node A, node B, node C, and node D, and the second node is an adjacent node of the first node.
  • first direction when the first direction is the clockwise direction and the second direction is the counterclockwise direction, it refers to the scenario in which the aforementioned sending child node and receiving child node are respectively child nodes of two adjacent nodes. 2.1) and 2.2) in the first design method.
  • first direction is the counterclockwise direction and the second direction is the clockwise direction, it refers to the second design method in the scenario in which the aforementioned sending child node and receiving child node are child nodes of two adjacent nodes respectively. 2.1) and 2.2).
  • the following describes a scenario in which the sending child node and the receiving child node are respectively child nodes in the diagonal node.
  • the sending child node and the receiving child node are respectively child nodes in the diagonal nodes
  • the sending of data must first follow the routing rules of the routing method described in the foregoing embodiments of the present application. That is, in the embodiment of the present application, the routing method provided in the scenario where each node includes N child nodes is proposed on the basis of the routing method described in the foregoing embodiments.
  • the sending child node is a child node in node A
  • the receiving child node is a child node in node C
  • the data sent by the sending child node to the receiving child node must first follow the routing methods described in the foregoing embodiments.
  • the routing method may specifically be as follows.
  • the sending child node in the first node sends data to the receiving child node in the diagonal node of the first node via the child node corresponding to the sending child node in the second node in the first direction of the first node (such as all the first data to be sent).
  • the sending child node in the second node sends data to the receiving child node in the diagonal node of the second node via the child node corresponding to the sending child node in the first node on the second direction the second data to be sent).
  • node A shown in FIG. 8 is the first node, then node B and node D are second nodes.
  • the child node A0 first sends the data to B0 corresponding to A0, and the child node B0 then sends the data to B0 corresponding to A0. Forward the data to the child node C0.
  • the child node D0 first sends the data to C0 corresponding to D0, and then the child node C0 forwards the data to the child node B0.
  • the child node C0 first sends the data to D0 corresponding to C0, and then the child node D0 forwards the data to the child node A0.
  • the child node A0 first sends the data to D0 corresponding to A0, and the child node D0 then forwards the data to the child node C0.
  • the child node D0 first sends the data to A0 corresponding to D0, and then the child node A0 forwards the data to the child node B0.
  • the child node C0 first sends the data to the B0 corresponding to C0, and then the child node B0 forwards the data to the child node A0.
  • the sending child node in the first node goes to the opposite corner of the first node through the child node corresponding to the sending child node and the child node corresponding to the receiving child node in the second node in the first direction of the first node in turn.
  • the receiving child node in the node sends data (eg, all the first data to be sent).
  • the sending child node in the second node sends to the diagonal node of the second node via the child node corresponding to the sending child node and the child node corresponding to the receiving child node in the first node in the second direction of the second node.
  • the receiving sub-node in sends data (such as all the second data to be sent).
  • node A shown in FIG. 8 is the first node, then node B and node D are second nodes.
  • the sending child node is A0 and the receiving child node is C1
  • the child node A0 will first send the data to B0 corresponding to A0
  • the child node B0 will send the data to B0 corresponding to A0
  • the data is forwarded to B1 corresponding to C1
  • the child node B1 forwards the data to the child node C1.
  • the child node D0 first sends the data to C0 corresponding to D0, the child node C0 forwards the data to C1 corresponding to B1, and the child node C1 then forwards the data. to the child node B1.
  • the child node C0 first sends the data to D0 corresponding to C0, the child node D0 forwards the data to D1 corresponding to A1, and the child node D1 then forwards the data. to the child node A1.
  • the sending child node is A0 and the receiving child node is C1
  • the child node A0 first sends the data to D0 corresponding to A0
  • the child node D0 forwards the data to D1 corresponding to C1
  • the child node D1 forwards the data to the child node C1.
  • the child node D0 first sends the data to A0 corresponding to D0, the child node A0 forwards the data to A1 corresponding to B1, and the child node A1 then forwards the data. to the child node B1.
  • the child node C0 first sends the data to B0 corresponding to C0, the child node B0 forwards the data to B1 corresponding to A1, and the child node B1 then forwards the data. to the child node A1.
  • the next hop node of any sub-column bus (for example, the next hop of ad0 is D0) must be the traffic end point of all data on the sub-column bus. Since there is no export competition for D0, the bus bandwidth of this column will naturally not exceed.
  • the previous hop node of any sub-row bus (for example, the previous hop of ab0 is A0) must be the traffic source point of all data on the row bus. Since the source traffic cannot be exceeded, the bus bandwidth of this line will naturally not exceed.
  • the routing method provided by the embodiment of the present application for each node of the four nodes using ring interconnection, consists of N child nodes In a scenario where the child nodes included in any two nodes are in one-to-one correspondence, and the child nodes included in two adjacent nodes are connected in a one-to-one correspondence, it is also possible to avoid interconnection bus congestion.
  • child nodes namely child node A0, child node B0, and child node C0, respectively send data to child node D0, child node D1, and child node D2, when data routing is performed according to the routing method provided in the embodiment of the present application
  • the path of the child node A0 sending data to the child node D0 is A0 ⁇ D0
  • the occupied bus is ad0
  • the child node B0 sends data to the child node
  • the path of D1 is B0 ⁇ A0 ⁇ A1 ⁇ D1, and the occupied bus is ba0 and ad1
  • the path of the child node C0 sending data to the child node D2 is C0 ⁇ D0 ⁇ D2, and the occupied bus is cd0.
  • the data of B0 ⁇ D1 will not go to ad0, but ad1, so it will not conflict with the data of A0 ⁇ D0, thus avoiding the competition of
  • the foregoing embodiments of the present application provide a method for routing data between four nodes interconnected by a ring, and also provide a method for routing data between four nodes interconnected by a ring, and each node includes more When there are multiple child nodes, how to route data between child nodes.
  • the routing method provided by the embodiments of the present application can also be extended to scenarios of data routing between more nodes. For example, for a scenario of 8 nodes, every 2 nodes can be grouped into a group , so that the 8 nodes can be divided into 4 groups of nodes. When the 4 groups of nodes are connected to each other, the routing method provided by the embodiment of the present application can also be used.
  • nodes for other more or less number of nodes (such as: 7 nodes, 15 nodes, 20 nodes, etc.), if these nodes can be divided into 4 groups of nodes interconnected by ring, all of them can be used The routing method provided by the embodiment of the present application.
  • the number of nodes in each group of nodes may be the same or different, which is not limited.
  • an embodiment of the present application further provides a data forwarding system (for the structural composition of the system, reference may be made to FIG. 3 to FIG. 8 in the foregoing embodiment, and the drawings are not used for illustration here), including at least four node, the at least 4 nodes form a ring network, and the nodes in the ring network route data according to the methods described in the foregoing embodiments.
  • a data forwarding system for the structural composition of the system, reference may be made to FIG. 3 to FIG. 8 in the foregoing embodiment, and the drawings are not used for illustration here
  • At least four nodes include a first node and a second node, and the first node and the second node are adjacent; the first node is used to obtain the first data to be sent, and the destination node of the first data to be sent is the first node The destination node, the first destination node is not adjacent to the first node; all the first data to be sent is sent along the first direction in the ring network.
  • the second node is used to obtain the second data to be sent, the destination node of the second data to be sent is the second destination node, and the second destination node is not adjacent to the second node; all the second data to be sent are sent along the ring network
  • the second direction is sent, and the first direction and the second direction are opposite.
  • the data forwarding system may be a CPU system composed of four central processing units (central processing units, CPUs), or a server system composed of four servers, or a larger computing system composed of four server systems. system or transmission system, etc.
  • the data forwarding system may also be a switch chip as described in the foregoing embodiments, a chip system composed of different chips on a PCB, a system composed of different network devices, and the like.
  • the data forwarding system may be a system in different fields such as computing, data exchange, chip, communication, etc.
  • the routing methods provided in the foregoing embodiments of the present application are applicable.
  • the specific implementation of each node is not limited in this application.
  • the data forwarding system may further include other nodes other than the above at least four nodes, such as I/O nodes, which are not limited herein.
  • the ring network includes only 4 nodes, the first destination node is a diagonal node of the first node; the second destination node is a diagonal node of the second node.
  • the first node is further configured to obtain the third data to be sent, and the destination node of the third data to be sent is the second node; all the third data to be sent are directly sent to the second node.
  • the second node is further configured to acquire the fourth data to be sent, and the destination node of the fourth data to be sent is the first node; all the fourth data to be sent are directly sent to the first node.
  • each of the four nodes in the ring network includes a plurality of sub-nodes that are interconnected with each other, the sub-nodes included in any two nodes are in one-to-one correspondence, and two adjacent nodes are in a one-to-one relationship.
  • the included child nodes are interconnected in a one-to-one correspondence.
  • the first node is specifically configured to directly send all the third data to be sent to the receiving child node through the sending child node when the sending child node in the first node corresponds to the receiving child node in the second node.
  • the second node is specifically configured to directly send all the fourth data to be sent to the receiving child node through the sending child node when the sending child node in the second node corresponds to the receiving child node in the first node.
  • the first node is specifically also used if the second node is located in the first direction of the first node, and the sending sub-node in the first node does not correspond to the receiving sub-node in the second node At the time, the sending child node sends all the third data to be sent to the receiving child node through the child node corresponding to the sending child node in the second node.
  • the second node is specifically also used for, if the second node is located in the first direction of the first node, and the sending sub-node in the second node does not correspond to the receiving sub-node in the first node, the The child node corresponding to the sending child node in the first node sends data to the receiving child node.
  • the first node is also specifically used if the second node is located in the second direction of the first node, and the sending sub-node in the first node does not correspond to the receiving sub-node in the second node At the time, the sending child node sends all the third data to be sent to the receiving child node through the child node corresponding to the receiving child node in the first node.
  • the second node is specifically also used for, if the second node is located in the second direction of the first node, and the sending child node in the second node does not correspond to the receiving child node in the first node, the sending child The child node corresponding to the receiving child node in the two nodes sends data to the receiving child node.
  • the first node is specifically configured to send a message to the first node through the sending child node in the first node through the child node corresponding to the sending child node in the second node in the first direction of the first node.
  • the receiving child nodes in the diagonal nodes of a node send all the first data to be sent; wherein the receiving child nodes correspond to the sending child nodes.
  • the receiving child nodes in the diagonal nodes of a node send all the first data to be sent; wherein, the receiving child nodes and the sending child nodes do not correspond.
  • the first node is specifically configured to send a message to the first node through the sending child node in the second node through the child node corresponding to the sending child node in the first node in the second direction of the second node.
  • the receiving child nodes in the diagonal nodes of the two nodes send all the second data to be sent; wherein, the receiving child nodes correspond to the sending child nodes.
  • the receiving child nodes in the diagonal nodes of the node send all the second data to be sent; wherein, the receiving child nodes and the sending child nodes do not correspond.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Small-Scale Networks (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请公开了一种路由方法及数据转发系统,涉及数据处理领域。该方法应用于至少4个节点组成的环形网络中,至少4个节点中包括彼此相邻的第一节点和第二节点。该方法包括:第一节点获取第一待发送数据,第一待发送数据的目的节点为第一目的节点,第一目的节点与第一节点不相邻;第一节点将全部第一待发送数据沿环形网络中的第一方向发送;第二节点获取第二待发送数据,第二待发送数据的目的节点为第二目的节点,第二目的节点与第二节点不相邻;第二节点将全部第二待发送数据沿环形网络中的第二方向发送,第一方向和第二方向相反。通过该方法可以使得前述至少4个节点组成的环形网络在传输数据时,不会存在节点间互连总线拥塞的情况。

Description

路由方法及数据转发系统 技术领域
本申请实施例涉及数据处理领域,尤其涉及一种路由方法及数据转发系统。
背景技术
目前,在互连复杂度比较敏感的场景中,如:同一芯片封装(package)的不同晶元(die)之间的互连,或者,同一印制电路板(printed circuit board,PCB)上的不同芯片之间的互连等,四个节点之间的互连方式一般为环形(ring)互连。ring互连的典型特征是:直接互连的两个相邻节点之间的互连是双向的。例如,对于采用ring互连的节点A、节点B、节点C、以及节点D四个节点而言,其具体连接关系可以为:节点A与节点B互连,节点B与节点C互连,节点C与节点D互连,节点D与节点A互连。以节点A与节点B互连为例,既有节点A去往节点B的连接,也有节点B去往节点A的连接。
现有针对ring互连的四个节点之间的路由规则一般为:直接互连的两个相邻节点之间的数据直接发送。例如,节点A可以R速率线速发数据给节点B。间接互连(或称之为未直接互连)的两个对角节点之间的数据需要分流(traffic distribution),或者,也可以称为流量均衡(load balancing,LB)。例如,节点A向节点C发送数据时,可以将50%的数据通过节点B转发给节点C,将另外50%的数据通过节点D转发给节点C。通过前述路由规则,通常可以保证ring互连的四个节点之间的数据可以无阻塞(nonblocking)地通过各节点。
但是,上述现有针对ring互连的四个节点之间的路由规则中,对角节点之间的数据进行LB,可能会导致目的节点接收的数据乱序,需要目的节点对接收到的数据进行重排序(re-ordering)处理,增加了实现复杂度。例如,假设节点A向节点C发送的数据中包括需要保证顺序的两个报文P1和P2,如:P1在P2之前;而对数据进行LB时,P1通过节点B转发给了节点C,P2通过节点D转发给了节点C,则可能会由于节点B和节点D内部的数据流量状态不同,而导致P1和P2的处理时延不同,出现节点C先收到P2,后收到P1的情况,此时,需要节点C对P1和P2进行重排序处理。
发明内容
本申请实施例提供一种路由方法及数据转发系统,当四个节点采用ring互连方式连接,且所有节点的端口都没有出口竞争时,该方法可以在避免互连总线拥塞的同时,简化采用ring互连的四个节点的实现复杂度。另外,该方法还适用于多播数据的转发。
第一方面,本申请实施例提供一种路由方法,应用于至少4个节点组成的环形网络中,至少4个节点中包括第一节点和第二节点,第一节点和第二节点相邻,所述方法包括:第一节点获取第一待发送数据,第一待发送数据的目的节点为第一目的节点,第一目的节点与第一节点不相邻。第一节点将全部第一待发送数据沿环形网络中的第一方向发送。第二节点获取第二待发送数据,第二待发送数据的目的节点为第二目的节点,第二目的节点与第二节点不相邻;第二节点将全部第二待发送数据沿环形网络中的第二方向发送,第一方向和第二方向相反。
该方法中,第一节点沿环形网络中的第一方向,向第一目的节点发送数据;第二节 点沿环形网络中的第二方向,向第二目的节点发送数据,且第一方向与第二方向相反;所以,节点间传输数据时,不会存在互连总线拥塞的情况。另外,由于不需要对数据进行LB,所以也不需要节点对接收到的数据进行重排序处理,从而可以简化节点的实现复杂度。
在一种可能的设计中,环形网络只包括4个节点,第一目的节点是第一节点的对角节点;第二目的节点是第二节点的对角节点。
或者,也有一些实施例中,该方法的应用场景中,除该环形网络外,还可以包括其他一些I/O节点,在此不作限制。
在一种可能的设计中,所述方法还包括:第一节点获取第三待发送数据,第三待发送数据的目的节点为第二节点;第一节点将全部第三待发送数据直接向第二节点发送。第二节点获取第四待发送数据,第四待发送数据的目的节点为第一节点;第二节点将全部第四待发送数据直接向第一节点发送。
也即,该方法中,相邻两个节点(如第一节点和第二节点)间的数据可以直接发送。
在一种可能的设计中,第一方向为顺时针方向,第二方向为逆时针方向。
在另一种可能的设计中,第一方向为逆时针方向,第二方向为顺时针方向。
在一种可能的设计中,所述方法还包括:当第一节点沿第一方向,向第一节点的对角节点发送数据(如:上述第一待发送数据)时,位于第一节点的第一方向上的第二节点拷贝所述数据。和/或,当第二节点沿第二方向,向第二节点的对角节点发送数据(如:上述第二待发送数据)时,位于第二节点的第二方向上的第一节点拷贝所述数据。
本设计可以适用于多播场景,实现多播数据的发送。
考虑到可实现性,在一种可能的设计中,所述环形网络中的4个节点中的每个节点包括多个彼此互连的子节点,任意两个节点包括的子节点一一对应,且相邻两个节点包括的子节点一一对应互连。
本设计中,所述第一节点将全部第三待发送数据直接向第二节点发送,包括:当第一节点中的发送子节点与第二节点中的接收子节点对应时,发送子节点直接向接收子节点发送全部所述第三待发送数据。所述第二节点将全部第四待发送数据直接向第一节点发送,包括:当第二节点中的发送子节点与第一节点中的接收子节点对应时,发送子节点直接向接收子节点发送全部第四待发送数据。
可选地,所述第一节点将全部第三待发送数据直接向第二节点发送,还包括:若第二节点位于第一节点的第一方向上,且第一节点中的发送子节点与所述第二节点中的接收子节点不对应时,发送子节点经第二节点中与发送子节点对应的子节点,向接收子节点发送全部第三待发送数据。所述第二节点将全部第四待发送数据直接向第一节点发送,还包括:若第二节点位于第一节点的第一方向上,且第二节点中的发送子节点与第一节点中的接收子节点不对应时,发送子节点经第一节点中与发送子节点对应的子节点,向接收子节点发送全部第四待发送数据。
可选地,所述第一节点将全部第三待发送数据直接向第二节点发送,还包括:若第二节点位于第一节点的第二方向上,且第一节点中的发送子节点与第二节点中的接收子节点不对应时,发送子节点经第一节点中与接收子节点对应的子节点,向接收子节点发送全部第三待发送数据。所述第二节点将全部第四待发送数据直接向第一节点发送,还包括:若第二节点位于第一节点的第二方向上,且第二节点中的发送子节点与第一节点中的接收子节点不对应时,发送子节点经第二节点中与接收子节点对应的子节点,向接 收子节点发送全部第四待发送数据。
可选地,所述第一节点将全部第一待发送数据沿环形网络中的第一方向发送,包括:第一节点中的发送子节点,经第一节点的第一方向上的第二节点中与发送子节点对应的子节点,向第一节点的对角节点中的接收子节点发送全部第一待发送数据;其中,接收子节点和发送子节点对应。和/或,第一节点中的发送子节点,依次经第一节点的第一方向上的第二节点中与发送子节点对应的子节点、以及与接收子节点对应的子节点,向第一节点的对角节点中的接收子节点发送全部第一待发送数据;其中,接收子节点和发送子节点不对应。
可选地,所述第二节点将全部第二待发送数据沿环形网络中的第二方向发送,包括:第二节点中的发送子节点,经第二节点的第二方向上的第一节点中与发送子节点对应的子节点,向第二节点的对角节点中的接收子节点发送全部第二待发送数据;其中,接收子节点和发送子节点对应。和/或,第二节点中的发送子节点,经第二节点的第二方向上的第一节点中与发送子节点对应的子节点、以及与接收子节点对应的子节点,向第二节点的对角节点中的接收子节点发送全部第二待发送数据;其中,接收子节点和发送子节点不对应。
本设计可以适用于当采用ring互连的四个节点而言,每个节点实际上可能由多个带宽较低的子节点组成的场景。
第二方面,本申请实施例提供一种数据转发系统,包括至少4个节点,至少4个节点组成环形网络,至少4个节点中包括第一节点和第二节点,第一节点和第二节点相邻。第一节点,用于获取第一待发送数据,第一待发送数据的目的节点为第一目的节点,第一目的节点与第一节点不相邻;将全部第一待发送数据沿环形网络中的第一方向发送。第二节点,用于获取第二待发送数据,第二待发送数据的目的节点为第二目的节点,第二目的节点与第二节点不相邻;将全部第二待发送数据沿环形网络中的第二方向发送,第一方向和第二方向相反。
该数据转发系统可以是四个CPU组成的CPU系统,或者,四个服务器组成的服务器系统,又或者,四个服务器系统组成的更大的计算系统或传输系统等。又或者,该数据转发系统也可以是多个子单元组成的交换芯片,PCB上的不同芯片组成的芯片系统,不同网络设备组成的系统等。
在一种可能的设计中,所述环形网络只包括4个节点,第一目的节点是第一节点的对角节点;第二目的节点是第二节点的对角节点。
在一种可能的设计中,第一节点,还用于获取第三待发送数据,第三待发送数据的目的节点为第二节点;将全部第三待发送数据直接向第二节点发送。第二节点,还用于获取第四待发送数据,第四待发送数据的目的节点为第一节点;将全部第四待发送数据直接向第一节点发送。
在一种可能的设计中,所述环形网络中的4个节点中的每个节点包括多个彼此互连的子节点,任意两个节点包括的子节点一一对应,且相邻两个节点包括的子节点一一对应互连。第一节点,具体用于当第一节点中的发送子节点与第二节点中的接收子节点对应时,通过发送子节点直接向接收子节点发送全部第三待发送数据。第二节点,具体用于当第二节点中的发送子节点与第一节点中的接收子节点对应时,通过发送子节点直接向接收子节点发送全部第四待发送数据。
在一种可能的设计中,第一节点,具体还用于若第二节点位于第一节点的第一方向 上,且第一节点中的发送子节点与第二节点中的接收子节点不对应时,通过发送子节点经第二节点中与发送子节点对应的子节点,向接收子节点发送全部第三待发送数据。述第二节点,具体还用于若第二节点位于第一节点的第一方向上,且第二节点中的发送子节点与第一节点中的接收子节点不对应时,通过发送子节点经第一节点中与发送子节点对应的子节点,向接收子节点发送数据。
在一种可能的设计中,第一节点,具体还用于若第二节点位于第一节点的第二方向上,且第一节点中的发送子节点与第二节点中的接收子节点不对应时,通过发送子节点经第一节点中与接收子节点对应的子节点,向接收子节点发送全部第三待发送数据。第二节点,具体还用于若第二节点位于第一节点的第二方向上,且第二节点中的发送子节点与第一节点中的接收子节点不对应时,通过发送子节点经第二节点中与接收子节点对应的子节点,向接收子节点发送数据。
在一种可能的设计中,第一节点,具体用于通过第一节点中的发送子节点,经第一节点的第一方向上的第二节点中与发送子节点对应的子节点,向第一节点的对角节点中的接收子节点发送全部第一待发送数据;其中,接收子节点和发送子节点对应。和/或,通过第一节点中的发送子节点,依次经第一节点的第一方向上的第二节点中与发送子节点对应的子节点、以及与接收子节点对应的子节点,向第一节点的对角节点中的接收子节点发送全部第一待发送数据;其中,接收子节点和发送子节点不对应。
在一种可能的设计中,第一节点,具体用于通过第二节点中的发送子节点,经第二节点的第二方向上的第一节点中与发送子节点对应的子节点,向第二节点的对角节点中的接收子节点发送全部第二待发送数据;其中,接收子节点和发送子节点对应。和/或,通过第二节点中的发送子节点,经第二节点的第二方向上的第一节点中与发送子节点对应的子节点、以及与接收子节点对应的子节点,向第二节点的对角节点中的接收子节点发送全部第二待发送数据;其中,接收子节点和发送子节点不对应。
由上可知,第二方面所述的数据转发系统中的各节点,按照第一方面所述的路由方法,对数据进行路由。所以,第二方面所具备的有益效果可以参考上述第一方面中所述,在此不再赘述。
附图说明
图1示出了四个节点ring互连的示意图;
图2示出了四个节点mesh互连的示意图;
图3示出了一种交换芯片中ring互连的示意图;
图4示出了四个节点ring互连的另一示意图;
图5示出了本申请实施例提供的四个节点ring互连中路由方向的示意图;
图6示出了本申请实施例提供的四个节点ring互连中路由方向的另一示意图;
图7示出了四个节点ring互连的又一示意图;
图8示出了四个节点ring互连的又一示意图。
具体实施方式
在网络领域或者计算相关领域中,常常存在不同节点互连的场景。同一芯片封装(package)的不同晶元(die)之间的互连中,每个die可以认为是一个节点。或者,同一印制电路板(printed circuit board,PCB)上的不同芯片之间的互连中,每个芯片可以 认为是一个节点。又或者,网络中的不同网络设备互连进行交换数据时,每个网络设备可以认为是一个节点等。
在上述节点互连场景中,对于4个节点之间的互连,通常包括:环形(ring)互连和网格(mesh)互连两种互连方式。下面以节点A、节点B、节点C和节点D四个节点之间互连为例,分别对ring互连和mesh互连两种互连方式进行简单介绍。
图1示出了四个节点ring互连的示意图。如图1所示,对于采用ring互连的节点A、节点B、节点C、以及节点D四个节点而言,相邻两个节点之间可以两两互连,从而总体形成一个ring的结构。图1中示例性的给出的具体连接关系为:节点A与节点B互连,节点B与节点C互连,节点C与节点D互连,节点D与节点A互连。R表示输入输出(input/ouput,I/O)端口速率。以其中的节点A与节点B互连为例,既有节点A去往节点B的连接,也有节点B去往节点A的连接。也即,采用ring互连的四个节点中,直接互连的两个相邻节点之间的互连是双向的。
图2示出了四个节点mesh互连的示意图。如图2所示,对于采用mesh互连的节点A、节点B、节点C、以及节点D四个节点而言,其中的每个节点和其他3个节点都直接互连,如:节点A分别与节点B、节点C和节点D互连。r表示I/O端口速率。对于采用mesh互连的四个节点而言,任意两个节点之间的互连是双向的。
请同时参考图1和图2,通过比较图1和图2可以得知:图1所示的ring互连方式中,节点A和节点C,节点B和节点D等对角节点之间未直接互连,而图2所示的mesh互连方式中,节点A和节点C,节点B和节点D等对角节点是直接互连的。图1所示的ring互连方式中,互连复杂度更低一些。
因此,对于互连复杂度比较敏感的场景,如:上述提到的同一芯片package的不同die之间的互连,或者,同一PCB上的不同芯片之间的互连等,四个或四个以上节点之间的互连一般采用类似于图1所示的ring互连方式。
例如,图3示出了一种交换芯片中ring互连的示意图。如图3所示,一个大容量的交换(switch)芯片可以由4个相同的小容量的子单元(chiplet)构成,chiplet也可以称为小片。以图3中所示的容量为50太比特每秒(Tbps)的switch芯片为例,该switch芯片可以由4个容量均为12.8Tbps的chiplet构成,即,每个chiplet的容量是12.8Tbps。这4个chiplet可依次命名为A、B、C、D。这4个chiplet可以采用ring互连的方式,即A和B相连,B和C相连,C和D相连,D和A相连。
对于mesh互连而言,任意两个节点之间的路由(routing)机制一般都是直达。例如,若节点A要发送数据到节点C,则可以直接通过节点A和节点C之间的直连总线进行发送。当然,一些可能的实现方式中,视乎互连总线的带宽大小,如果两个节点之间的带宽不小于节点的I/O带宽(例如,如图2所示,每个连接都是r),则通常都是选择直连总线发送。但当两个节点间互连总线小于r时,则可能也需要经其他节点发送,以保证线速(line rate)。
而对于ring互连而言,直接互连的两个节点直接可以直接通过直连总线发送数据,但未直接互连的两个节点(如图1中所示的节点A和节点C)之间发送数据时,必须通过其他中间节点进行转发,如:节点A需要向节点C发送数据时,需要通过节点B和/或节点D转发给节点C。假设节点A需要向节点C发送数据时,全部通过节点B转发给节点C,此时,若节点B也需要向节点C发送数据,则节点B到节点C之间的路径上,会同时存在节点A需要发送给节点C的数据、以及节点B需要发送给节点C的数据,可 能会造成节点B和节点C之间的互连总线拥塞(congestion)。所以,当四个节点之间的互连采用ring互连方式时,需要考虑路由机制以避免互连总线拥塞。
其中,避免互连总线拥塞是指:在所有节点的端口都没有出口竞争(output contention,或者,oversubscribed)的时候,采用指定的路由机制之后,任何流量分布都不会因超过内部互连总线带宽而造成待发送数据流量在节点内堆积。出口竞争是指去往某个出端口的入口流量之和超过了该出端口的带宽。流量分布是指任意源节点往任意目的节点发送数据流量的流量模型(traffic pattern)。
现有针对ring互连的四个节点之间的路由规则一般为:直接互连的两个相邻节点之间的数据直接发送。间接互连(或称之为未直接互连)的两个对角节点之间的数据需要分流(traffic distribution),或者,也可以称为流量均衡(load balancing,LB)。通过前述路由规则,通常可以保证ring互连的四个节点之间的数据可以无阻塞(nonblocking)地通过各节点,也即,可以避免互连总线拥塞。
例如,图4示出了四个节点ring互连的另一示意图。如图4所示,对于采用ring互连的四个节点:节点A、节点B、节点C和节点D而言,一种可能的连接方式为节点A与节点B互连,节点B与节点C互连,节点C与节点D互连,节点D与节点A互连。节点A与节点B之间的互连总线包括:用于节点A向节点B发送数据的总线ab,以及用于节点B向节点A发送数据的总线ba。其他节点之间类似,在此不再赘述。
当图4中所示的四个节点采用前述路由规则时,直接互连的两个相邻节点之间的数据直接发送是指:节点A与节点B、或者节点B与节点C、或者节点C与节点D、又或者节点D与节点A之间的数据直接发送,如,节点A可以R速率线速发数据给节点B。间接互连的两个对角节点之间的数据需要LB是指:节点A与节点C、或者节点B与节点D之间的数据进行LB,如,节点A向节点C发送数据时,可以将50%的数据通过节点B转发给节点C,将另外50%的数据通过节点D转发给节点C。
举例说明,假设图4所示的四个节点中,每个节点的I/O端口速率R均为1,且所有节点的端口都没有出口竞争。当节点A需要发送数据给节点C,同时,节点B需要发送数据给节点D,节点C需要发送数据给节点A,以及节点D需要发送数据给节点B时,也即,节点A、节点B、节点C和节点D同时有数据的流量对应去往节点C、节点D、节点A和节点B时,数据发送方式可以如下。
1)节点A将需要发送给节点C的数据的50%通过节点B转发给节点C(路径为总线ab和bc),将另外50%通过节点D转发给节点C(路径为总线ad和dc)。
2)节点B将需要发送给节点D的数据的50%通过节点A转发给节点D(路径为总线ba和ad),将另外50%通过节点C转发给节点D(路径为总线bc和cd)。
3)节点C将需要发送给节点A的数据的50%通过节点D转发给节点A(路径为总线cd和da),将另外50%通过节点B转发给节点A(路径为总线cb和ba)。
4)节点D将需要发送给节点B的数据的50%通过节点A转发给节点B(路径为总线da和ab),将另外50%通过节点C转发给节点B(路径为总线dc和cb)。
此时,前述四个节点的连接总线中数据流量占用情况可以如下表1所示。
表1
Figure PCTCN2020117939-appb-000001
Figure PCTCN2020117939-appb-000002
表1中,空白或未填数字的单元格,表示该条总线没有数据(或流量)传输。填了数字的单元格中的数字表示该条总线中传输的数据所占的带宽。以A→C为例,由于A的I/O端口速率R为1,节点A将去往节点C的一半数据经ab发给节点B,由节点B经bc转发给节点C,所以,节点A发送给节点C的数据会在ab中占用大小为0.5的带宽。
由表1可知,当图4中所示的四个节点采用前述路由规则时,每条总线的总计(total)带宽均没有超过1,所以,节点A、节点B、节点C和节点D同时有数据的流量对应去往节点C、节点D、节点A和节点B时,数据可以无阻塞地通过各节点。
当然,上述以50%进行数据LB的方式为通常做法,也可以有其他划分方式,其原理类似,在此不再赘述。
采用ring互连的四个节点按照上述LB的路由规则进行数据转发,虽然可以避免互连总线拥塞,但是,上述现有针对ring互连的四个节点之间的路由规则中,对角节点之间的数据进行LB,可能会导致目的节点接收的数据乱序,需要目的节点对接收到的数据进行重排序(re-ordering)处理,增加了实现复杂度。
例如,假设节点A向节点C发送的数据中包括需要保证顺序的两个报文P1和P2,如:P1在P2之前;而对数据进行LB时,P1通过节点B转发给了节点C,P2通过节点D转发给了节点C,则可能会由于节点B和节点D内部的数据流量状态不同,而导致P1和P2的处理时延不同,出现节点C先收到P2,后收到P1的情况,此时,需要节点C对P1和P2进行重排序处理。重排序处理往往需要一定的缓存(buffer)来存储后发先至的报文,比如P2,也需要相应的处理逻辑管理,从而会导致节点C的实现复杂度较高。对于源节点(如节点A发送数据给节点C,则节点A称为源节点,节点C称为目的节点)而言,由于数据可能由不同长度的大、小报文组成,且报文的发送时间不确定,所以源节点如何均匀地将流量分给相邻节点也是个问题,这也会增加节点A的实现复杂度。总之,ring互连的四个节点按照上述LB的路由规则进行数据转发的需求,会增加实现复杂度。
另外,对于某个源节点而言,如果有多播(multicast)数据,或称为多播流量需要发送时,目前一般会采用类似于单播(unicast)机制进行数据转发,可能会干扰单播。其中,多播数据是指:假设节点A需要将报文P3,同时扇出到节点B和节点C两个目的节点,则报文P3可以理解为是节点A的多播数据。单播机制,即是指前述所述的某个源节点只向某个目的节点发送的数据,如:节点A需要向节点C发送的报文P1和P2。
以节点A需要将报文P3同时扇出到节点B和节点C为例,对于扇出到节点B的场景而言,节点A可以直接将报文P3发送给节点B,对于扇出到节点C的场景而言,报文P3一会由节点B再转发给节点C。也就是说,需要扇出至节点C的报文P3会走A→B→C这条最短路径,无法做LB,从而会造成节点A至节点B之间的总线拥塞,会干扰节点A需要扇出至节点B的报文。
本申请实施例提供了一种路由方法,应用于至少4个节点组成的环形网络中,至少4个节点中包括第一节点和第二节点,第一节点和所述第二节点相邻,该方法包括:第 一节点获取第一待发送数据,第一待发送数据的目的节点为第一目的节点,第一目的节点与第一节点不相邻;第一节点将全部第一待发送数据沿环形网络中的第一方向发送;第二节点获取第二待发送数据,第二待发送数据的目的节点为第二目的节点,第二目的节点与第二节点不相邻;第二节点将全部第二待发送数据沿环形网络中的第二方向发送,第一方向和第二方向相反。
例如,该方法可以适用于当四个节点采用ring互连方式连接,且所有节点的端口都没有出口竞争时的场景。通过该方法可以在避免节点之间互连总线拥塞的同时,简化采用ring互连的四个节点的实现复杂度。另外,该方法还适用于多播数据的转发。
在一种可能的设计中,环形网络只包括4个节点,第一目的节点是第一节点的对角节点;第二目的节点是第二节点的对角节点。
以下均以环形网络只包括4个节点为例,对该方法进行说明。
请参考图4所示,节点A、节点B、节点C和节点D之间采用了ring互连,节点A和节点C互为对角节点,节点B和节点D互为对角节点。本申请实施例提供的该路由方法中所述的第一节点,可以是节点A、节点B、节点C和节点D中的任意一个节点。例如,当第一节点是节点A时,第一节点的对角节点为节点C,第一节点的相邻节点为节点B和节点D。或者,当第一节点是节点B时,第一节点的对角节点为节点D,第一节点的相邻节点为节点A和节点C。又或者,第一节点也可以是节点C和节点D,与前述类似,在此不再一一举例。
另外,需要说明的是,A、B、C、D等仅仅是用于标识该节点,当节点A、节点B、节点C和节点D之间采用其他顺序ring互连时,如:节点与节点C连接,节点C与节点B连接,节点B与节点D连接,节点D与节点A连接,第一节点和第一节点的对角节点,以及第一节点的相邻节点的名称会发生相应变化。如:此时,若第一节点为节点A,则第一节点的对角节点变成了节点B,第一节点的相邻节点变成了节点C和节点D。也即,前述图4所示的四个节点的ring互连,仅仅为一种互连顺序,四个节点也可以采用其他顺序ring互连,但不论其采用何种顺序互连,均不影响本申请实施例中对第一节点和第一节点的对角节点、第二节点和第二节点的对角节点的定义。
容易理解,该方法应用于环形连接的四个节点。由于第一节点为环形连接的四个节点中的任意一个节点,所以,该路由方法中,第一节点及第一节点的对角节点彼此发送数据(如,本申请实施例中,第一节点的对角节点可称为第一目的节点,第一节点向第一目的节点发送的数据可称为第一待发送数据)时,数据的路由方向均沿着第一方向。而第一节点的相邻节点,即,第二节点与第二节点的对角节点(也是第一节点的相邻节点)彼此发送数据(如,本申请实施例中,第二节点的对角节点可称为第二目的节点,第二节点向第二目的节点发送的数据可称为第二待发送数据)时,数据的路由方向均沿着第二方向。由于第一方向和第二方向相反,所以,四个节点在传输数据时,不会存在互连总线拥塞的情况。另外,由于不需要对数据进行LB,所以也不需要节点对接收到的数据进行重排序处理,从而可以简化节点的实现复杂度。
以下结合附图对本申请实施例提供的路由方法进行示例性说明。
需要说明的是,在本申请的描述中,“第一”、“第二”等字样仅仅是为了区分描述,并不用于对某个特征的特别限定。本申请实施例的描述中,“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本 申请中所涉及的至少一个是指一个或多个;多个,是指两个或两个以上。
以图4中所示的采用ring互连的节点A、节点B、节点C和节点D为例,四个节点之间发送数据的场景主要包括直连的两个相邻节点之间发送数据、以及未直连的两个对角节点之间发送数据两个场景。
首先,对直连的两个相邻节点之间发送数据的场景下,该路由方法的具体应用作以说明。
对于节点A和节点B、节点B和节点C、节点C和节点D、以及节点D和节点A而言,由于前述任意一组中的两个节点之间为直连的相邻节点,所以,节点A和节点B之间的数据、节点B和节点C之间的数据、节点C和节点D之间的数据、以及节点D和节点A之间的数据都可以直接发送。以节点A、节点B、节点C和节点D中的任意一个节点为第一节点、其相邻的节点为第二节点为例,可以理解为,第一节点可以直接向第二节点发送数据(如,本申请实施例中,第一节点向第二节点发送的数据可称为第三待发送数据,第二节点向第一节点发送的数据可称为第四待发送数据)。
进一步,对未直连的两个对角节点之间发送数据的场景下,该路由方法的具体应用作以说明。
对于互为对角节点的节点A和节点C而言,由于节点A和节点C未直连,所以,节点A和节点C之间的数据需要中间节点进行转发。同样的,对于互为对角节点的节点B和节点D而言,由于节点B和节点D未直连,所以,节点B和节点D之间的数据也需要中间节点进行转发。
该路由方法中,当节点A需要向节点C发送数据的时候,节点A需要沿着第一方向,经位于节点A的第一方向上的中间节点向节点C发送数据。当节点C需要向节点A发送数据的时候,节点C也需要沿着第一方向,经位于节点C的第一方向上的中间节点向节点A发送数据。而当节点B需要向节点D发送数据的时候,节点B需要沿着第二方向,经位于节点B的第二方向上的中间节点向节点D发送数据。当节点D需要向节点B发送数据的时候,节点D也需要沿着第二方向,经位于节点D的第二方向上的中间节点向节点B发送数据。第一方向与第二方向相反。同样以节点A、节点B、节点C和节点D中的任意一个节点为第一节点、其相邻的节点为第二节点为例,可以理解为,第一节点需要沿第一方向,向第一节点的对角节点发送数据;与第一节点相邻的第二节点则需要沿第二方向,向第二节点的对角节点发送数据。
图5示出了本申请实施例提供的四个节点ring互连中路由方向的示意图。
如图5所示,在一种可能的设计中,第一方向为顺时针方向,第二方向为与第一方向相反的逆时针方向。
本设计中,当节点A需要向节点C发送数据的时候,节点A需要沿着顺时针方向,经位于节点A的顺时针方向上的节点B向节点C发送数据。也即,节点A向节点C发送数据的路径为:A→B→C。
当节点C需要向节点A发送数据的时候,节点C也需要沿着顺时针方向,经位于节点C的顺时针方向上的节点D向节点A发送数据。也即,节点C向节点A发送数据的路径为:C→D→A。
而当节点B需要向节点D发送数据的时候,节点B需要沿着逆时针方向,经位于节点B的逆时针方向上的节点A向节点D发送数据。也即,节点B向节点D发送数据的路径为:B→A→D。
当节点D需要向节点B发送数据的时候,节点D也需要沿着逆时针方向,经位于节点D的逆时针方向上的节点C向节点B发送数据。也即,节点D向节点B发送数据的路径为:D→C→B。
图6示出了本申请实施例提供的四个节点ring互连中路由方向的另一示意图。
如图6所示,在另一种可能的设计中,第一方向为逆时针方向,第二方向为与第一方向相反的顺时针方向。
本设计中,当节点A需要向节点C发送数据的时候,节点A需要沿着逆时针方向,经位于节点A的逆时针方向上的节点D向节点C发送数据。也即,节点A向节点C发送数据的路径为:A→D→C。
当节点C需要向节点A发送数据的时候,节点C也需要沿着逆时针方向,经位于节点C的逆时针方向上的节点B向节点A发送数据。也即,节点C向节点A发送数据的路径为:C→B→A。
而当节点B需要向节点D发送数据的时候,节点B需要沿着顺时针方向,经位于节点B的顺时针方向上的节点C向节点D发送数据。也即,节点B向节点D发送数据的路径为:B→C→D。
当节点D需要向节点B发送数据的时候,节点D也需要沿着顺时针方向,经位于节点D的顺时针方向上的节点A向节点B发送数据。也即,节点D向节点B发送数据的路径为:D→A→B。
假设将前述图5中所示的ring互连的节点A、节点B、节点C和节点D中,节点A和节点B之间的连接、以及节点C和节点D之间的连接定义为行,节点A和节点D之间的连接、以及节点B和节点C之间的连接定义为列,则该路由方法也可以简化或简单理解为:节点A、节点B、节点C和节点D遵循“相邻节点之间的数据直接发送或直达,对角节点之间的数据先横(横指行)后竖(竖指列)”的路由规则。
例如,节点A向节点C发送数据时:先横是指节点A发送给节点B,后竖是指节点B转发给节点C。或者,节点B向节点D发送数据时:先横是指节点B发送给节点A,后竖是指节点A转发给节点D。又或者,节点D向节点B发送数据时:先横是指节点D发送给节点C,后竖是指节点C转发给节点B。
类似地,假设将前述图6中所示的ring互连的节点A、节点B、节点C和节点D中,节点A和节点B之间的连接、以及节点C和节点D之间的连接定义为行,节点A和节点D之间的连接、以及节点B和节点C之间的连接定义为列,则该路由方法也可以简化或简单理解为:节点A、节点B、节点C和节点D遵循“相邻节点之间的数据直接发送或直达,对角节点之间的数据先竖(竖指列)后横(横指行)”的路由规则。
例如,节点A向节点C发送数据时:先竖是指节点A发送给节点D,后横是指节点D转发给节点C。或者,节点B向节点D发送数据时:先竖是指节点B发送给节点C,后横是指节点C转发给节点D。又或者,节点D向节点B发送数据时:先竖是指节点D发送给节点A,后横是指节点A转发给节点B。
当该路由方法采用上述图5或图6任一所示的路由方向时,任一列总线的下一跳节点(比如总线ad的下一跳节点是节点D)一定是该列总线上所有流量的终点。既然没有出口竞争,那么该列总线带宽自然不会超。任一行总线的上一跳节点(比如总线ab的上一跳节点是节点A)一定是该行总线上所有流量的源点。由于源点流量不可能超1,所以该行总线带宽自然不会超。
因此,对于采用ring互连的四个节点而言,在出端口没有出口竞争的情况下,本申请实施例提供的路由方法可以不用LB也能够避免互连总线拥塞。由于节点无需进行LB,所以,也不用做重排序处理,从而可以简化采用ring互连的四个节点的实现复杂度。
上述实施例主要从源节点向单个目标节点发送数据的场景,也即,单播场景,对本申请实施例提供的路由方法作了介绍。下面对本申请实施例提供的该路由方法在多播场景下的应用进行介绍。
以图4至图6中任一所示的采用ring互连的节点A、节点B、节点C和节点D为例,假设节点A需要同时扇出多播报文P至节点B和节点D,此时,由于节点B和节点D与节点A直连,是节点A的相邻节点,因此,节点A可以直接将多播报文P同时扇出至节点B和节点D。
而当节点A需要同时扇出多播报文P至节点B和节点C时,节点B与节点A直连,节点A可以直接将多播报文P扇出至节点B。但节点C为节点A的对角节点,因此,需要节点A将多播报文P经中间节点转发给节点C。例如,当节点A是第一节点时,第一方向是顺时针方向时,节点A需要将多播报文P,经位于节点A的顺时针方向上的节点B转发给节点C。当节点A是第一节点时,第一方向是逆时针方向时,节点A需要将多播报文P,经位于节点A的逆时针方向上的节点D转发给节点C。
也即,该路由方法中,当源节点的多播报文需要扇出的目的节点包含源节点的相邻节点时,源节点可以直接将多播报文扇出至相邻节点。当源节点的多播报文需要扇出的目的节点包含源节点的对角节点时,源节点可以按照该路由方法中第一节点或第二节点(取决于源节点是第一节点还是第二节点)的数据路由方向,将多播报文经中间节点扇出至对角节点。
可选地,对于源节点的多播报文需要扇出的目的节点包含源节点的相邻节点、以及源节点的对角节点,且源节点经该相邻节点向对角节点转发多播报文的场景,源节点只需要向相邻节点扇出一次多播报文即可,相邻节点在向源节点的对角节点转发该多播报文前,可以自己保留(如:拷贝)一份。例如,源节点向相邻节点扇出该多播报文时,可以在报文中添加一个指示信息,指示该报文是同时发送给该相邻节点和源节点的对角节点的,从而,该相邻节点在向源节点的对角节点转发该多播报文前,可以自己保留一份。
同样以图4至图6中任一所示的采用ring互连的节点A、节点B、节点C和节点D为例,假设节点A需要同时扇出多播报文P至节点B和节点C,此时节点A可以只向节点B发送一次多播报文P,节点B可以向节点C转发该多播报文P,但转发之前,节点B也会保留一份多播报文P,从而实现节点A同时扇出多播报文P至节点B和节点C。
类似地,对于节点A、节点B、节点C和节点D中的任意一个节点,均遵循前述路由规则。也即,当本申请实施例提供的该路由方法应用于多播场景时,可以理解为:当第一节点沿第一方向,向第一节点的对角节点发送数据时,位于第一节点的第一方向上的第二节点拷贝所述数据。
例如,第一节点需要将数据同时发送给位于第一节点的第一方向上的第二节点,以及第一节点的对角节点时,第一节点直接向位于第一节点的第一方向上的第二节点发送数据,第二节点将数据转发给第一节点的对角节点,同时,在转发之前拷贝保留了数据。
可选地,本申请实施例提供的该路由方法中,由于采用ring互连的四个节点中,任意两个节点之间的路径唯一固定,所以,还可以便于实施一些增强功能。例如,当四个 节点为前述图3所示的交换芯片中的chiplet时,还可以在chiplet之间做直通转发(cut-through)操作,以降低交换时延。传统的LB方式,由于存在多路径,所以cut-through操作会很复杂。因此,该路由方法中节点之间唯一固定路径,还有助于简化cut-through操作的复杂度。
一些实施例中,考虑到可实现性,对于采用ring互连的四个节点而言,每个节点实际上可能由多个带宽较低的子节点组成,如,可能由N个子节点组成,N可以是2、3、4等大于1的正整数。例如,图7示出了四个节点ring互连的又一示意图。
如图7所示,以采用ring互连的节点A、节点B、节点C、以及节点D中的节点A为例,节点A实际可能由子节点A0、子节点A1、子节点A2、以及子节点A3四个子节点组成。假设节点A的对外总宽为R,则组成节点A的每个子节点的带宽为r,且R=4r。例如,R为12.8Tbps时,r为3.2Tbps。类似地,节点B、节点C、节点D也由多个子节点组成。如:节点B由子节点B0、子节点B1、子节点B2、以及子节点B3四个子节点组成,节点C由子节点C0、子节点C1、子节点C2、以及子节点C3四个子节点组成,节点D由子节点D0、子节点D1、子节点D2、以及子节点D3四个子节点组成等(对于节点B、节点C、节点D的子节点,图中未示出)。
示例性地,当上述采用ring互连的四个节点为四个芯片时,每个节点包括的子节点可以是芯片中的die。或者,当上述采用ring互连的四个节点为四个网络设备时,每个节点包括的子节点可以是网络设备中的芯片。又或者,当上述采用ring互连的四个节点为数据转发系统中的四个服务器时,每个节点包括的子节点可以是服务器中的处理器等。其他更多场景在此不再一一赘述。
当采用ring互连的四个节点中,每个节点由多个子节点组成时,相邻直连的两个节点之间的总线实际上可能由多个带宽较低的子总线组成。请继续参考图7所示,以节点A向节点B发送数据的总线ab为例,总线ab实际可能由ab0、ab1、ab2、以及ab4四条子总线组成。假设每条子总线的带宽为r,则总线ab的总带宽:R=4r。例如,r为3.2Tbps,则R为12.8Tbps。节点A中的每个子节点对应一条子总线,如:子节点A0对应子总线ab0,子节点A1对应子总线ab1,子节点A2对应子总线ab2,子节点A3对应子总线ab3。
类似于图7中所示的节点A,对于采用ring互连的四个节点中任意一个节点而言,该节点中的多个子节点之间可通过内部总线直连,实现子节点之间的流量无阻塞交换。或者,其他一些实施方式中,每个节点中的多个子节点也可以通过专用的交换逻辑(如,通过一个单独的交换模块连接)等实现子节点之间的流量无阻塞交换。
其他节点的子节点的连接关系、以及对应的子总线与节点A类似,不再赘述。
可以理解,相邻两个节点包括的子节点之间一一对应互连。例如,A0与B0互连,A1与B1互连,A2与B2互连,A3与B3互连。任意两个节点之间的子节点也存在一一对应的关系,如:A0对应C0。
对于上述图7所示的采用ring互连的节点A、节点B、节点C、以及节点D而言,即,当节点A、节点B、节点C、以及节点D中的每个节点均包括多个子节点时,目前的路由机制中,各节点间在交换数据时,会将数据的流量平均分发到每个子总线上。例如,若子节点A0有3.2T的数据需要发送给节点B,则子节点A0会先将这3.2T数据通过节点内部的交换平均分到ab0、ab1、ab2、以及ab4四个子总线上,每个子总线分配0.8T,然后通过四个子总线发送给节点B。这样做的目的是为了避免4节点互连时候的,出现总线竞争的情况。但实际上即使将数据的流量平均分发到每个子总线,也可能会出 现总线竞争的情况。
例如,假设每条子总线的带宽为1,子节点A0需要发送流量大小为2的数据X给子节点D0,以及发送流量大小为2的数据Y给子节点C。由于数据X和数据Y的总流量大小等于4,没有超过节点A的出端口总带宽(四条子总线的总带宽等于4),节点A不存在出口竞争。此时,按照目前流量均衡的路由规则:A0→D0的数据X会占用ad0-ad3四条子总线,A0→C2的数据Y会依次占用ad0-ad3四条子总线、以及cd0-cd3四条子总线。则节点A在对数据X和数据Y的流量进行流量均衡时,若负载均衡,则数据X在ad0-ad3四条子总线中的每条子总线中占用大小为0.5的带宽,数据Y也在ad0-ad3四条子总线中的每条子总线中占用大小为0.5的带宽,对于ad0-ad3四条子总线中的每条子总线而言,均没有超过其带宽。但是,若负载不均衡,如:数据X和数据Y在某条子总线中分别占用大小为0.6的带宽时,则会存在ad0-ad3四条子总线中的某一条子总线中数据X和数据Y需要占用的带宽大小超出了1,导致该条子总线中出现竞争的情况,造成拥塞。例如:由于数据X和/或Y中的数据包的粒度大小问题,节点A可能无法将数据X和/或Y的流量平均的分配到每条子总线上,会导致负载不均衡。
基于此,针对采用ring互连的四个节点中每个节点由N个子节点组成,任意两个节点包括的子节点一一对应,且相邻两个节点包括的子节点一一对应互连的场景,本申请实施例还提供一种路由方法,可以进一步保证总线无拥塞。
以下结合图8对该路由方法进行具体说明。图8示出了四个节点ring互连的又一示意图。
如图8所示,以采用ring互连的四个节点中每个节点由4个子节点组成为例,相邻两个节点包括的子节点一一对应互连,如:节点A和节点B之间,A0与B0互连,A1与B1互连,A2与B2互连,A3与B3互连。节点B和节点C之间,B0与C0互连,B1与C1互连,B2与C2互连,B3与C3互连。节点C和节点D之间,C0与D0互连,C1与D1互连,C2与D2互连,C3与D3互连。节点A和节点D之间,A0与D0互连,A1与D1互连,A2与D2互连,A3与D3互连。
图8所示的多个子节点中,某个发送子节点(也可以叫作源子节点)向某个接收子节点(也可以叫作目的子节点)发送数据的场景主要包括:发送子节点和接收子节点分别为两个相邻节点中的子节点,以及发送子节点和接收子节点分别为对角节点中的子节点。
例如,若发送子节点为节点A中的子节点,接收子节点为节点B或节点D中的子节点,则对应发送子节点和接收子节点分别为两个相邻节点中的子节点的场景。若发送子节点为节点A中的子节点,接收子节点为节点C中的子节点,或者,发送子节点为节点B中的子节点,接收子节点为节点D中的子节点,则对应发送子节点和接收子节点分别为对角节点中的子节点的场景。
首先,对发送子节点和接收子节点分别为两个相邻节点中的子节点的场景进行说明。
在一种可能的设计中,当发送子节点和接收子节点分别为两个相邻节点中的子节点时,具体包括:1)发送子节点和接收子节点对应的场景;2)发送子节点和接收子节点不对应的场景。针对这两种场景,该路由方法可以如下。
1)针对发送子节点和接收子节点一一对应的场景:发送子节点直接向接收子节点发送数据。
例如,发送子节点为A0,接收子节点为与A0对应的B0,则子节点A0直接向子节 点B0发送数据。
2)针对发送子节点和接收子节点不对应的场景,具体又包括:2.1)发送子节点和接收子节点不对应,且发送子节点和接收子节点处于同一行(同一行的定义请参考前述实施例中所述)的场景;2.2)发送子节点和接收子节点不对应,且发送子节点和接收子节点处于同一列(同一列的定义请参考前述实施例中所述)的场景。
2.1)若发送子节点和接收子节点不对应,且发送子节点和接收子节点处于同一行时,发送子节点先将数据发送给接收子节点所在的节点中与发送子节点对应的子节点,然后由该与发送子节点对应的子节点,再转发给接收子节点。也即,跨子节点的操作是在接收子节点所在的节点内完成。
例如,发送子节点为A0,接收子节点为B1时,由子节点A0先将数据发送给与A0对应的B0,子节点B0再将数据转发给子节点B1。
又例如,发送子节点为B0,接收子节点为A1时,由子节点B0先将数据发送给与B0对应的A0,子节点A0再将数据转发给子节点A1。
2.2)若发送子节点和接收子节点不对应,且发送子节点和接收子节点处于同一列时,发送子节点先将数据发送给发送子节点所在的节点中与接收子节点对应的子节点,然后由该与接收子节点对应的子节点,再转发给接收子节点。也即,跨子节点的操作是在发送子节点所在的节点内完成。
例如,发送子节点为A0,接收子节点为D1时,由子节点A0先将数据发送给与D1对应的A1,子节点A1再将数据转发给子节点D1。
又例如,发送子节点为D0,接收子节点为A1时,由子节点D0先将数据发送给与A1对应的D1,子节点D1再将数据转发给子节点A1。
在另一种可能的设计中,当发送子节点和接收子节点分别为两个相邻节点中的子节点时,针对上述1)、2)中所述的两种场景,该路由方法也可以如下。
1)若发送子节点和接收子节点一一对应,则发送子节点直接向接收子节点发送数据。
2)如上所述,上述2)中所述的场景由针对发送子节点和接收子节点不对应的场景,具体又包括:2.1)发送子节点和接收子节点不对应,且发送子节点和接收子节点处于同一行(同一行的定义请参考前述实施例中所述)的场景;2.2)发送子节点和接收子节点不对应,且发送子节点和接收子节点处于同一列(同一列的定义请参考前述实施例中所述)的场景。
2.1)若发送子节点和接收子节点不对应,且发送子节点和接收子节点处于同一行时,发送子节点先将数据发送给发送子节点所在的节点中与接收子节点对应的子节点,然后由该与接收子节点对应的子节点,再转发给接收子节点。也即,跨子节点的操作是在发送子节点所在的节点内完成。
例如,发送子节点为A0,接收子节点为B1时,由子节点A0先将数据发送给与B1对应的A1,子节点A1再将数据转发给子节点B1。
2.2)若发送子节点和接收子节点不对应,且发送子节点和接收子节点处于同一列时,发送子节点先将数据发送给接收子节点所在的节点中与发送子节点对应的子节点,然后由该与发送子节点对应的子节点,再转发给接收子节点。也即,跨子节点的操作是在接收子节点所在的节点内完成。
例如,发送子节点为A0,接收子节点为D1时,由子节点A0先将数据发送给与A0对应的D0,子节点D0再将数据转发给子节点D1。
对于上述发送子节点和接收子节点分别为两个相邻节点中的子节点的场景下,两种不同的设计方式,该路由方法也可以综合描述如下。
1、若发送子节点和接收子节点一一对应,则发送子节点直接向接收子节点发送数据。
例如,当第一节点中的发送子节点与第二节点中的接收子节点对应时,发送子节点直接向接收子节点发送全部第三待发送数据。当第二节点中的发送子节点与第一节点中的接收子节点对应时,发送子节点直接向接收子节点发送全部第四待发送数据。
2、若发送子节点和接收子节点不对应,且发送子节点为第一节点中的子节点,接收子节点为位于第一节点的第一方向上的第二节点中的子节点时,发送子节点经第二节点中与发送子节点对应的子节点,向接收子节点发送数据(如全部第三待发送数据)。
若发送子节点和接收子节点不对应,且发送子节点为第一节点中的子节点,接收子节点为位于第一节点的第二方向上的第二节点中的子节点时,发送子节点经第一节点中与接收子节点对应的子节点,向接收子节点发送数据(如全部第三待发送数据)。
若发送子节点和接收子节点不对应,且发送子节点为位于第一节点的第一方向上的第二节点中的子节点,接收子节点为第一节点中的子节点时,发送子节点经第一节点中与发送子节点对应的子节点,向接收子节点发送数据(如全部第四待发送数据)。
若发送子节点和接收子节点不对应,且发送子节点为位于第一节点的第二方向上的第二节点中的子节点,接收子节点为第一节点中的子节点时,发送子节点经第二节点中与接收子节点对应的子节点,向接收子节点发送数据(如全部第四待发送数据)。
其中,第一节点是节点A、节点B、节点C、以及节点D中的任意一个节点,第二节点是第一节点的相邻节点。
上述综合描述2中,当第一方向为顺时针方向,第二方向为逆时针方向时,即是指前述发送子节点和接收子节点分别为两个相邻节点中的子节点的场景下的第一种设计方式中的2.1)和2.2)。当第一方向为逆时针方向,第二方向为顺时针方向时,即是指前述发送子节点和接收子节点分别为两个相邻节点中的子节点的场景下的第二种设计方式中的2.1)和2.2)。
下面对发送子节点和接收子节点分别为对角节点中的子节点的场景进行说明。
在发送子节点和接收子节点分别为对角节点中的子节点的场景中,数据的发送首先要遵循本申请前述实施例中所述的路由方法的路由规则。也即,本申请实施例中,针对每个节点包括N个子节点的场景下提供的路由方法,是在前述实施例所述的路由方法的基础上提出的。
例如,当发送子节点为节点A中的子节点,接收子节点为节点C中的子节点时,发送子节点发送给接收子节点的数据首先要遵循前述实施例所述的路由方法中,由节点A沿第一方向,向节点C发送数据的规则。
在遵循本申请前述实施例中所述的路由方法的路由规则的基础上,该路由方法具体可以如下。
1)对于发送子节点和接收子节点对应的场景。
第一节点中的发送子节点,经第一节点的第一方向上的第二节点中与发送子节点对应的子节点,向第一节点的对角节点中的接收子节点发送数据(如全部第一待发送数据)。
第二节点中的发送子节点,经第二节点的第二方向上的第一节点中与发送子节点对应的子节点,向第二节点的对角节点中的接收子节点发送数据(如全部第二待发送数据)。
例如,若图8中所示的节点A为第一节点,则节点B和节点D为第二节点。
假设第一方向为顺时针方向,第二方向为逆时针方向,则当发送子节点为A0,接收子节点为C0时,由子节点A0先将数据发送给与A0对应的B0,子节点B0再将数据转发给子节点C0。
又例如,发送子节点为D0,接收子节点为B0时,由子节点D0先将数据发送给与D0对应的C0,子节点C0再将数据转发给子节点B0。
又例如,发送子节点为C0,接收子节点为A0时,由子节点C0先将数据发送给与C0对应的D0,子节点D0再将数据转发给子节点A0。
或者,假设第一方向为逆时针方向,第二方向为顺时针方向,则当发送子节点为A0,接收子节点为C0时,由子节点A0先将数据发送给与A0对应的D0,子节点D0再将数据转发给子节点C0。
又例如,发送子节点为D0,接收子节点为B0时,由子节点D0先将数据发送给与D0对应的A0,子节点A0再将数据转发给子节点B0。
又例如,发送子节点为C0,接收子节点为A0时,由子节点C0先将数据发送给与C0对应的B0,子节点B0再将数据转发给子节点A0。
2)对于发送子节点和接收子节点不对应的场景。
第一节点中的发送子节点,依次经第一节点的第一方向上的第二节点中与发送子节点对应的子节点、以及与接收子节点对应的子节点,向第一节点的对角节点中的接收子节点发送数据(如全部第一待发送数据)。
第二节点中的发送子节点,经第二节点的第二方向上的第一节点中与发送子节点对应的子节点、以及与接收子节点对应的子节点,向第二节点的对角节点中的接收子节点发送数据(如全部第二待发送数据)。
例如,若图8中所示的节点A为第一节点,则节点B和节点D为第二节点。
假设第一方向为顺时针方向,第二方向为逆时针方向,则当发送子节点为A0,接收子节点为C1时,由子节点A0先将数据发送给与A0对应的B0,子节点B0将数据转发给与C1对应的B1,子节点B1再将数据转发给子节点C1。
又例如,发送子节点为D0,接收子节点为B1时,由子节点D0先将数据发送给与D0对应的C0,子节点C0将数据转发给与B1对应的C1,子节点C1再将数据转发给子节点B1。
又例如,发送子节点为C0,接收子节点为A1时,由子节点C0先将数据发送给与C0对应的D0,子节点D0将数据转发给与A1对应的D1,子节点D1再将数据转发给子节点A1。
或者,假设第一方向为逆时针方向,第二方向为顺时针方向,则当发送子节点为A0,接收子节点为C1时,由子节点A0先将数据发送给与A0对应的D0,子节点D0将数据转发给与C1对应的D1,子节点D1再将数据转发给子节点C1。
又例如,发送子节点为D0,接收子节点为B1时,由子节点D0先将数据发送给与D0对应的A0,子节点A0将数据转发给与B1对应的A1,子节点A1再将数据转发给子节点B1。
又例如,发送子节点为C0,接收子节点为A1时,由子节点C0先将数据发送给与C0对应的B0,子节点B0将数据转发给与A1对应的B1,子节点B1再将数据转发给子节点A1。
针对采用ring互连的四个节点中每个节点由N个子节点组成,任意两个节点包括的 子节点一一对应,且相邻两个节点包括的子节点一一对应互连的场景,本申请实施例提供的上述路由方法中,任一子列总线的下一跳节点(比如ad0的下一跳是D0)一定是该子列总线上所有数据的流量终点。既然D0没有出口竞争,那么该列总线带宽自然不会超。任一子行总线的上一跳节点(比如ab0的上一跳是A0)一定是该行总线上所有数据的流量源点。由于源点流量不可能超,所以该行总线带宽自然不会超。
因此,对于采用ring互连的四个节点而言,在出端口没有出口竞争的情况下,本申请实施例提供的路由方法,针对采用ring互连的四个节点中每个节点由N个子节点组成,任意两个节点包括的子节点一一对应,且相邻两个节点包括的子节点一一对应互连的场景,也可以保证避免互连总线拥塞。
例如,假设子节点A0、子节点B0、以及子节点C0这3个子节点,分别发数据给子节点D0、子节点D1、以及子节点D2,当按照本申请实施例提供的路由方法进行数据路由时,若第一方向为顺时针方向,第二方向为逆时针方向,则子节点A0发送数据给子节点D0的路径为A0→D0,占用的总线为ad0;子节点B0发送数据给子节点D1的路径为B0→A0→A1→D1,占用的总线为ba0、ad1;子节点C0发送数据给子节点D2的路径为C0→D0→D2,占用的总线为cd0。可以看到,B0→D1的数据,不会走ad0,而是走ad1,所以,不会和A0→D0的数据发生冲突,从而避免了节点间总线的竞争。
综上所述,本申请前述实施例给出了ring互连的四个节点之间的数据如何进行路由的方法,以及给出了当ring互连的四个节点中,每个节点包括更多个子节点时,子节点之间的数据如何进行路由的方法。在此基础上,本申请实施例提供的路由方法还可以扩展到更多个节点之间数据路由的场景中,例如,对于8个节点的场景而言,可以将每2个节点归为一组,这样8个节点可以划分为4组节点,当4组节点ring互连时,也可以采用本申请实施例提供的路由方法。类似地,对于其他更多或更少个数量的节点(如:7个节点、15个节点、20个节点等),如果能将这些节点划分为ring互连的4组节点,则均可以使用本申请实施例提供的路由方法。当然,每组节点中节点的数量可以相同,也可以不同,并不作限制。
可选地,本申请实施例还提供一种数据转发系统(该系统的结构组成可以参考前述实施例中图3至图8所示,在此不再用附图进行示意),包括至少4个节点,所述至少4个节点组成环形网络,该环形网络中的节点按照如前述实施例中所述的方法,对数据进行路由。例如,至少4个节点中包括第一节点和第二节点,第一节点和第二节点相邻;第一节点,用于获取第一待发送数据,第一待发送数据的目的节点为第一目的节点,第一目的节点与第一节点不相邻;将全部第一待发送数据沿所述环形网络中的第一方向发送。第二节点,用于获取第二待发送数据,第二待发送数据的目的节点为第二目的节点,第二目的节点与第二节点不相邻;将全部第二待发送数据沿环形网络中的第二方向发送,第一方向和第二方向相反。
可选地,该数据转发系统可以是四个中央处理器(central processing unit,CPU)组成的CPU系统,或者,四个服务器组成的服务器系统,又或者,四个服务器系统组成的更大的计算系统或传输系统等。又或者,该数据转发系统也可以是如前述实施例中所述的交换芯片,PCB上的不同芯片组成的芯片系统,不同网络设备组成的系统等。
换言之,该数据转发系统可以是计算、数据交换、芯片、通信等不同领域中的系统,只要该数据转发系统中包括环形连接的四个节点,则均适用本申请前述实施例提供的路由方法,对每个节点的具体实现,本申请并不作限制。
一些实施例中,该数据转发系统中,还可以包括除上述至少4个节点之外的其他节点,如:I/O节点,在此不作限制。
在一种可能的设计中,所述环形网络只包括4个节点,第一目的节点是第一节点的对角节点;第二目的节点是第二节点的对角节点。
在一种可能的设计中,第一节点,还用于获取第三待发送数据,第三待发送数据的目的节点为第二节点;将全部第三待发送数据直接向第二节点发送。第二节点,还用于获取第四待发送数据,第四待发送数据的目的节点为第一节点;将全部第四待发送数据直接向第一节点发送。
在一种可能的设计中,所述环形网络中的4个节点中的每个节点包括多个彼此互连的子节点,任意两个节点包括的子节点一一对应,且相邻两个节点包括的子节点一一对应互连。第一节点,具体用于当第一节点中的发送子节点与第二节点中的接收子节点对应时,通过发送子节点直接向接收子节点发送全部第三待发送数据。第二节点,具体用于当第二节点中的发送子节点与第一节点中的接收子节点对应时,通过发送子节点直接向接收子节点发送全部第四待发送数据。
在一种可能的设计中,第一节点,具体还用于若第二节点位于第一节点的第一方向上,且第一节点中的发送子节点与第二节点中的接收子节点不对应时,通过发送子节点经第二节点中与发送子节点对应的子节点,向接收子节点发送全部第三待发送数据。述第二节点,具体还用于若第二节点位于第一节点的第一方向上,且第二节点中的发送子节点与第一节点中的接收子节点不对应时,通过发送子节点经第一节点中与发送子节点对应的子节点,向接收子节点发送数据。
在一种可能的设计中,第一节点,具体还用于若第二节点位于第一节点的第二方向上,且第一节点中的发送子节点与第二节点中的接收子节点不对应时,通过发送子节点经第一节点中与接收子节点对应的子节点,向接收子节点发送全部第三待发送数据。第二节点,具体还用于若第二节点位于第一节点的第二方向上,且第二节点中的发送子节点与第一节点中的接收子节点不对应时,通过发送子节点经第二节点中与接收子节点对应的子节点,向接收子节点发送数据。
在一种可能的设计中,第一节点,具体用于通过第一节点中的发送子节点,经第一节点的第一方向上的第二节点中与发送子节点对应的子节点,向第一节点的对角节点中的接收子节点发送全部第一待发送数据;其中,接收子节点和发送子节点对应。和/或,通过第一节点中的发送子节点,依次经第一节点的第一方向上的第二节点中与发送子节点对应的子节点、以及与接收子节点对应的子节点,向第一节点的对角节点中的接收子节点发送全部第一待发送数据;其中,接收子节点和发送子节点不对应。
在一种可能的设计中,第一节点,具体用于通过第二节点中的发送子节点,经第二节点的第二方向上的第一节点中与发送子节点对应的子节点,向第二节点的对角节点中的接收子节点发送全部第二待发送数据;其中,接收子节点和发送子节点对应。和/或,通过第二节点中的发送子节点,经第二节点的第二方向上的第一节点中与发送子节点对应的子节点、以及与接收子节点对应的子节点,向第二节点的对角节点中的接收子节点发送全部第二待发送数据;其中,接收子节点和发送子节点不对应。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (16)

  1. 一种路由方法,其特征在于,应用于至少4个节点组成的环形网络中,所述至少4个节点中包括第一节点和第二节点,所述第一节点和所述第二节点相邻,所述方法包括:
    所述第一节点获取第一待发送数据,所述第一待发送数据的目的节点为第一目的节点,所述第一目的节点与所述第一节点不相邻;
    所述第一节点将全部所述第一待发送数据沿所述环形网络中的第一方向发送;
    所述第二节点获取第二待发送数据,所述第二待发送数据的目的节点为第二目的节点,所述第二目的节点与所述第二节点不相邻;
    所述第二节点将全部所述第二待发送数据沿所述环形网络中的第二方向发送,所述第一方向和所述第二方向相反。
  2. 根据权利要求1所述的方法,其特征在于,所述环形网络只包括4个节点,所述第一目的节点是所述第一节点的对角节点;所述第二目的节点是所述第二节点的对角节点。
  3. 根据权利要求2所述的方法,其特征在于,所述方法还包括:
    所述第一节点获取第三待发送数据,所述第三待发送数据的目的节点为所述第二节点;
    所述第一节点将全部所述第三待发送数据直接向所述第二节点发送;
    所述第二节点获取第四待发送数据,所述第四待发送数据的目的节点为所述第一节点;
    所述第二节点将全部所述第四待发送数据直接向所述第一节点发送。
  4. 根据权利要求3所述的方法,其特征在于,所述环形网络中的4个节点中的每个节点包括多个彼此互连的子节点,任意两个节点包括的子节点一一对应,且相邻两个节点包括的子节点一一对应互连;
    所述第一节点将全部所述第三待发送数据直接向所述第二节点发送,包括:
    当所述第一节点中的发送子节点与所述第二节点中的接收子节点对应时,所述发送子节点直接向所述接收子节点发送全部所述第三待发送数据;
    所述第二节点将全部所述第四待发送数据直接向所述第一节点发送,包括:
    当所述第二节点中的发送子节点与所述第一节点中的接收子节点对应时,所述发送子节点直接向所述接收子节点发送全部所述第四待发送数据。
  5. 根据权利要求4所述的方法,其特征在于,所述第一节点将全部所述第三待发送数据直接向所述第二节点发送,还包括:
    若所述第二节点位于所述第一节点的第一方向上,且所述第一节点中的发送子节点与所述第二节点中的接收子节点不对应时,所述发送子节点经所述第二节点中与所述发送子节点对应的子节点,向所述接收子节点发送全部所述第三待发送数据;
    所述第二节点将全部所述第四待发送数据直接向所述第一节点发送,还包括:
    若所述第二节点位于所述第一节点的第一方向上,且所述第二节点中的发送子节点与所述第一节点中的接收子节点不对应时,所述发送子节点经所述第一节点中与所述发送子节点对应的子节点,向所述接收子节点发送全部所述第四待发送数据。
  6. 根据权利要求4或5所述的方法,其特征在于,所述第一节点将全部所述第三待 发送数据直接向所述第二节点发送,还包括:
    若所述第二节点位于所述第一节点的第二方向上,且所述第一节点中的发送子节点与所述第二节点中的接收子节点不对应时,所述发送子节点经所述第一节点中与所述接收子节点对应的子节点,向所述接收子节点发送全部所述第三待发送数据;
    所述第二节点将全部所述第四待发送数据直接向所述第一节点发送,还包括:
    若所述第二节点位于所述第一节点的第二方向上,且所述第二节点中的发送子节点与所述第一节点中的接收子节点不对应时,所述发送子节点经所述第二节点中与所述接收子节点对应的子节点,向所述接收子节点发送全部所述第四待发送数据。
  7. 根据权利要求4-6任一项所述的方法,其特征在于,所述第一节点将全部所述第一待发送数据沿所述环形网络中的第一方向发送,包括:
    所述第一节点中的发送子节点,经所述第一节点的第一方向上的第二节点中与所述发送子节点对应的子节点,向所述第一节点的对角节点中的接收子节点发送全部所述第一待发送数据;其中,所述接收子节点和所述发送子节点对应;
    和/或,所述第一节点中的发送子节点,依次经所述第一节点的第一方向上的第二节点中与所述发送子节点对应的子节点、以及与接收子节点对应的子节点,向所述第一节点的对角节点中的所述接收子节点发送全部所述第一待发送数据;其中,所述接收子节点和所述发送子节点不对应。
  8. 根据权利要求7所述的方法,其特征在于,所述第二节点将全部所述第二待发送数据沿所述环形网络中的第二方向发送,包括:
    所述第二节点中的发送子节点,经所述第二节点的第二方向上的第一节点中与所述发送子节点对应的子节点,向所述第二节点的对角节点中的接收子节点发送全部所述第二待发送数据;其中,所述接收子节点和所述发送子节点对应;
    和/或,所述第二节点中的发送子节点,经所述第二节点的第二方向上的第一节点中与所述发送子节点对应的子节点、以及与接收子节点对应的子节点,向所述第二节点的对角节点中的所述接收子节点发送全部所述第二待发送数据;其中,所述接收子节点和所述发送子节点不对应。
  9. 一种数据转发系统,其特征在于,包括至少4个节点,所述至少4个节点组成环形网络,所述至少4个节点中包括第一节点和第二节点,所述第一节点和所述第二节点相邻;
    所述第一节点,用于获取第一待发送数据,所述第一待发送数据的目的节点为第一目的节点,所述第一目的节点与所述第一节点不相邻;将全部所述第一待发送数据沿所述环形网络中的第一方向发送;
    所述第二节点,用于获取第二待发送数据,所述第二待发送数据的目的节点为第二目的节点,所述第二目的节点与所述第二节点不相邻;将全部所述第二待发送数据沿所述环形网络中的第二方向发送,所述第一方向和所述第二方向相反。
  10. 根据权利要求9所述的系统,其特征在于,所述环形网络只包括4个节点,所述第一目的节点是所述第一节点的对角节点;所述第二目的节点是所述第二节点的对角节点。
  11. 根据权利要求10所述的系统,其特征在于,所述第一节点,还用于获取第三待发送数据,所述第三待发送数据的目的节点为所述第二节点;将全部所述第三待发送数据直接向所述第二节点发送;
    所述第二节点,还用于获取第四待发送数据,所述第四待发送数据的目的节点为所述第一节点;将全部所述第四待发送数据直接向所述第一节点发送。
  12. 根据权利要求11所述的系统,其特征在于,所述环形网络中的4个节点中的每个节点包括多个彼此互连的子节点,任意两个节点包括的子节点一一对应,且相邻两个节点包括的子节点一一对应互连;
    所述第一节点,具体用于当所述第一节点中的发送子节点与所述第二节点中的接收子节点对应时,通过所述发送子节点直接向所述接收子节点发送全部所述第三待发送数据;
    所述第二节点,具体用于当所述第二节点中的发送子节点与所述第一节点中的接收子节点对应时,通过所述发送子节点直接向所述接收子节点发送全部所述第四待发送数据。
  13. 根据权利要求12所述的系统,其特征在于,所述第一节点,具体还用于若所述第二节点位于所述第一节点的第一方向上,且所述第一节点中的发送子节点与所述第二节点中的接收子节点不对应时,通过所述发送子节点经所述第二节点中与所述发送子节点对应的子节点,向所述接收子节点发送全部所述第三待发送数据;
    所述第二节点,具体还用于若所述第二节点位于所述第一节点的第一方向上,且所述第二节点中的发送子节点与所述第一节点中的接收子节点不对应时,通过所述发送子节点经所述第一节点中与所述发送子节点对应的子节点,向所述接收子节点发送数据。
  14. 根据权利要求12或13所述的系统,其特征在于,所述第一节点,具体还用于若所述第二节点位于所述第一节点的第二方向上,且所述第一节点中的发送子节点与所述第二节点中的接收子节点不对应时,通过所述发送子节点经所述第一节点中与所述接收子节点对应的子节点,向所述接收子节点发送全部所述第三待发送数据;
    所述第二节点,具体还用于若所述第二节点位于所述第一节点的第二方向上,且所述第二节点中的发送子节点与所述第一节点中的接收子节点不对应时,通过所述发送子节点经所述第二节点中与所述接收子节点对应的子节点,向所述接收子节点发送数据。
  15. 根据权利要求12-14任一项所述的系统,其特征在于,所述第一节点,具体用于通过所述第一节点中的发送子节点,经所述第一节点的第一方向上的第二节点中与所述发送子节点对应的子节点,向所述第一节点的对角节点中的接收子节点发送全部所述第一待发送数据;其中,所述接收子节点和所述发送子节点对应;
    和/或,通过所述第一节点中的发送子节点,依次经所述第一节点的第一方向上的第二节点中与所述发送子节点对应的子节点、以及与接收子节点对应的子节点,向所述第一节点的对角节点中的所述接收子节点发送全部所述第一待发送数据;其中,所述接收子节点和所述发送子节点不对应。
  16. 根据权利要求15所述的系统,其特征在于,所述第一节点,具体用于通过所述第二节点中的发送子节点,经所述第二节点的第二方向上的第一节点中与所述发送子节点对应的子节点,向所述第二节点的对角节点中的接收子节点发送全部所述第二待发送数据;其中,所述接收子节点和所述发送子节点对应;
    和/或,通过所述第二节点中的发送子节点,经所述第二节点的第二方向上的第一节点中与所述发送子节点对应的子节点、以及与接收子节点对应的子节点,向所述第二节点的对角节点中的所述接收子节点发送全部所述第二待发送数据;其中,所述接收子节点和所述发送子节点不对应。
PCT/CN2020/117939 2020-09-25 2020-09-25 路由方法及数据转发系统 WO2022061783A1 (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202080105269.XA CN116349208A (zh) 2020-09-25 2020-09-25 路由方法及数据转发系统
PCT/CN2020/117939 WO2022061783A1 (zh) 2020-09-25 2020-09-25 路由方法及数据转发系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2020/117939 WO2022061783A1 (zh) 2020-09-25 2020-09-25 路由方法及数据转发系统

Publications (1)

Publication Number Publication Date
WO2022061783A1 true WO2022061783A1 (zh) 2022-03-31

Family

ID=80844790

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2020/117939 WO2022061783A1 (zh) 2020-09-25 2020-09-25 路由方法及数据转发系统

Country Status (2)

Country Link
CN (1) CN116349208A (zh)
WO (1) WO2022061783A1 (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1276262A1 (en) * 2001-07-10 2003-01-15 Lucent Technologies Inc. Communication network ring with data splitting in the nodes
CN1756222A (zh) * 2004-09-27 2006-04-05 华为技术有限公司 一种环网及其业务实现方法
CN103023771A (zh) * 2011-09-28 2013-04-03 华为技术有限公司 环形拓扑网络的故障处理方法、装置和一种路由设备
CN103117933A (zh) * 2013-03-04 2013-05-22 中国科学院高能物理研究所 在多点通信网络中传送数据的方法和系统
CN108028811A (zh) * 2015-09-23 2018-05-11 高通股份有限公司 用于多核多线程无线基带调制解调器架构的可配置且可伸缩的总线互连

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1276262A1 (en) * 2001-07-10 2003-01-15 Lucent Technologies Inc. Communication network ring with data splitting in the nodes
CN1756222A (zh) * 2004-09-27 2006-04-05 华为技术有限公司 一种环网及其业务实现方法
CN103023771A (zh) * 2011-09-28 2013-04-03 华为技术有限公司 环形拓扑网络的故障处理方法、装置和一种路由设备
CN103117933A (zh) * 2013-03-04 2013-05-22 中国科学院高能物理研究所 在多点通信网络中传送数据的方法和系统
CN108028811A (zh) * 2015-09-23 2018-05-11 高通股份有限公司 用于多核多线程无线基带调制解调器架构的可配置且可伸缩的总线互连

Also Published As

Publication number Publication date
CN116349208A (zh) 2023-06-27

Similar Documents

Publication Publication Date Title
US7039058B2 (en) Switched interconnection network with increased bandwidth and port count
US7046633B2 (en) Router implemented with a gamma graph interconnection network
US6947433B2 (en) System and method for implementing source based and egress based virtual networks in an interconnection network
US9742630B2 (en) Configurable router for a network on chip (NoC)
JP6093867B2 (ja) インターコネクトにおける不均一なチャネル容量
TWI390913B (zh) 使用一緩衝交叉式交換系統用於在資料模組之間傳輸資料的裝置、方法、以及機器可讀儲存媒體
US7385972B2 (en) Fibre channel arbitrated loop bufferless switch circuitry to increase bandwidth without significant increase in cost
JP2533223B2 (ja) 多段通信ネットワ―ク
US20030174721A1 (en) Fibre channel arbitrated loop bufferless switch circuitry to increase bandwidth without significant increase in cost
JP2005513827A (ja) インテリジェントな制御を備えるスケーラブルスイッチングシステム
JP2002510450A (ja) 高度統合多層スイッチ要素アーキテクチャ
GB2251356A (en) Adaptive message routing for multi dimensional networks
CN108337196B (zh) 一种通过交换芯片构建的交换系统及其路由算法
WO2015066367A1 (en) Network topology of hierarchical ring with recursive shortcuts
US20070140280A1 (en) Computer chip for connecting devices on the chip utilizing star-torus topology
US9185026B2 (en) Tagging and synchronization for fairness in NOC interconnects
WO2022061783A1 (zh) 路由方法及数据转发系统
US20060056424A1 (en) Packet transmission using output buffer
US10289598B2 (en) Non-blocking network
CN116915708A (zh) 路由数据包的方法、处理器及可读存储介质
US20210112019A1 (en) Method and apparatus for improved data transfer in big data graph analytics
JP4613296B2 (ja) スケーラブルな多重経路ワームホール相互接続網
CA3123224C (en) Method and apparatus for improved data transfer between processor cores
CN117135107B (zh) 一种网络通信拓扑系统、路由方法、设备及介质
JP5626763B2 (ja) パケット交換システム

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20954635

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20954635

Country of ref document: EP

Kind code of ref document: A1