Network congestion control method, related equipment and storage medium

By introducing intermediate nodes and shadow node lists in high-performance computing and artificial intelligence networks, data packets are forwarded to alleviate network congestion, solving the problem of packet loss sensitivity of RDMA technology and reducing the risk of network deadlock and systemic risks.

CN120128538APending Publication Date: 2025-06-10HUAWEI TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202311683856.9
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2023-12-07
Publication Date
2025-06-10

AI Technical Summary

Technical Problem

In the fields of high-performance computing and artificial intelligence, RDMA technology is very sensitive to network packet loss, resulting in network congestion and degradation of throughput performance. The existing priority flow control technology is prone to trigger network deadlocks and increase systemic risks.

Method used

By introducing intermediate nodes into the network, using the shadow node list to determine nodes with high remaining capacity in the buffer, forwarding data packets from the congested node to the node, alleviating network congestion and reducing systemic risks.

Benefits of technology

It effectively reduces the transmission frequency of PFC backpressure frames, avoids traffic packet retransmission, and limits the impact of network congestion locally, thereby reducing the systemic risk of the network.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120128538A_ABST
    Figure CN120128538A_ABST
Patent Text Reader

Abstract

The embodiment of the invention discloses a network congestion control method, related equipment and a storage medium, which are applied to the technical field of network communication and are used for relieving network congestion flow. The method provided by the embodiment of the invention comprises the following steps: a first node sends first data to a second node, wherein the first data comprises a plurality of data packets; the first node receives a congestion notification from the second node, wherein the congestion notification is used for indicating that the number of data packets in a buffer area of the second node is greater than or equal to a trigger threshold value; and the first node sends second data to a third node, wherein the second data comprises a data packet which is not sent in the first data. According to the embodiment of the invention, the PFC back voltage frame sending frequency can be effectively reduced, flow packet retransmission is avoided, and the network congestion influence is limited locally, so that the network systematicness risk is reduced.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The embodiments of the present application relate to the field of network communication technologies, and in particular, to a network congestion control method, related devices, and storage media. Background Art

[0002] A cluster is a high-performance computing system that connects multiple computers in a local area network or the Internet and realizes resource sharing and task allocation through software and hardware to jointly complete a task. As a key technology in the current high-performance computing (HPC) and artificial intelligence (AI) fields, cluster interconnection technology has always received a great deal of attention. Due to the demand for high-speed bandwidth in these fields, remote direct memory access (RDMA) technology has become the primary choice. RDMA is extremely sensitive to network packet loss, and a large number of retransmissions caused by packet loss will lead to a sharp decline in throughput performance. Therefore, traffic control technology and congestion control technology are needed to improve the overall network throughput and reduce network latency.

[0003] Priority-based flow control (PFC) is a traffic control technology that supports creating 8 virtual channels on an Ethernet link and assigns corresponding priorities to each virtual channel. PFC allows any one virtual channel to be paused and restarted individually, while allowing the traffic of other virtual channels to pass through without interruption. When the buffer traffic of the receiving node exceeds the threshold, the receiving node will send a backpressure frame to the sending node to indicate that the sending node stops sending traffic. When the sending node receives the backpressure frame, it will stop sending packets in the corresponding priority queue according to the indication and store the data in the local cache. When the consumption of the node's local cache exceeds the threshold, a backpressure frame will continue to be sent upstream.

[0004] When a large number of PFC backpressure frames appear in the network, it may induce network deadlocks, resulting in permanent blockages in two or more queues. Each queue is waiting for resources occupied and blocked by other queues, ultimately leading to network systemic risks. Summary of the Invention

[0005] The present application provides a network congestion control method, related devices, and storage media, which are applied to the field of network communication technologies to relieve network congestion traffic, can effectively reduce the sending frequency of PFC backpressure frames, avoid retransmission of traffic packets, limit the impact of network congestion to a local area, and thus reduce network systemic risks.

[0006] The first aspect of the present application provides a network congestion control method. In this method, the first node is an intermediate node, which is responsible for transmitting data from one network segment to another in the network. Specifically, the first node can be a switch or a router.

[0007] The first node sends a data stream to the second node. The data stream includes multiple first data packets. The second node receives the first data packets and stores them in a buffer. During network transmission, there may be multiple first nodes sending data to a single second node. This phenomenon is called communication multi-to-one. Since the speed at which the second node processes data packets is less than the speed at which it receives data packets, there will be a situation where there are multiple first data packets in the buffer of the second node, that is, network congestion occurs at the second node. When network congestion occurs at the second node, the first node receives a congestion notification from the second node, which is used to indicate that the second node is in a congested state. After receiving the congestion notification, the first node determines a third node according to the shadow node list. The shadow node list includes the remaining capacity of the buffers corresponding to one or more nodes adjacent to the first node by N hops. The first node selects at least one node whose remaining buffer capacity is greater than a first threshold as the third node. The first node sends a second data packet to the third node. The second data packet is a first data packet in the data stream of the first node that has not been sent to the second node.

[0008] In the present application, after receiving the congestion notification, the first node determines a third node according to the shadow node list and sends the data packets that need to be sent to the second node to the third node, thereby alleviating the congestion in the buffer of the second node and reducing the systemic risk of the network.

[0009] In some optional embodiments, the shadow node list also includes the address of each node. Before the first node sends the second data packet to the third node, the first node modifies the unsent data packets in the data stream, changing the destination address from the address of the second node to the address of the third node to obtain the second data packet.

[0010] In some optional embodiments, the first node receives a message from the third node. The message includes the remaining capacity of the buffer of the third node. The first node updates the remaining capacity of the buffer of the third node in the shadow node list according to this message.

[0011] In some optional embodiments, when the congestion at the second node is alleviated, the first node receives a congestion release notification from the second node. The congestion release notification is used to indicate that the congested state of the second node has been released. The first node transfers the second data packet from the third node to the second node according to the congestion release notification.

[0012] In some alternative embodiments, the first node sends a transfer notice to the third node according to the congestion relief notice, and the transfer notice is used to instruct the third node to send the received second data packet back along the original path. The first node receives the second data packet from the third node and sends the second data packet to the second node.

[0013] In some alternative embodiments, the first node sends a transfer notice to the third node according to the congestion relief notice. The transfer notice includes the address of the second node, and the transfer notice is used to instruct the third node to send the second data packet to the second node.

[0014] The second aspect of this application provides a network congestion control method. In this method, the second node receives a data stream from the first node, and the data stream includes multiple first data packets. When the second node is in a congested state, the second node sends a congestion notice to the first node.

[0015] In some alternative embodiments, when the number of first data packets in the buffer of the second node is greater than or equal to the trigger threshold, the second node is in a congested state. Specifically, the trigger threshold is less than the PFC backpressure threshold.

[0016] In this embodiment, since the trigger threshold of the buffer of the second node is less than the PFC backpressure threshold, the second node can send a congestion notice to the first node before triggering a backpressure frame, thereby alleviating network congestion.

[0017] In some alternative embodiments, when the number of first data packets in the buffer of the second node is less than the trigger threshold, the second node relieves the congested state. At this time, the second node sends a congestion relief notice to the first node. The second node receives the second data packet from the first node, and the second data packet is the first data packet that the first node has not sent to the second node in the data stream.

[0018] The third aspect of this application provides a network congestion control method. In this method, the third node receives the second data packet from the first node. The remaining capacity of the buffer of the third node is stored in the shadow node list of the first node, and the remaining capacity of the buffer of the third node is greater than the first threshold. The shadow node list includes the remaining capacities of the buffers of at least one node adjacent to the first node by N hops. The second data packet is the first data packet that has not been sent to the second node in the data stream, and the second node is used to receive the data stream from the first node, and the data stream includes multiple first data packets.

[0019] In some alternative embodiments, before the third node receives the second data packet from the first node, the third node sends a message to the first node, and the message includes the remaining capacity of the buffer of the third node. The first node updates the shadow node list according to the message.

[0020] In some alternative embodiments, a third node receives a transfer notification from a first node and sends a second data packet to the first node according to the transfer notification.

[0021] In some alternative embodiments, a third node receives a transfer notification from a first node, where the transfer notification includes the address of a second node, and the third node may send a second data packet to the second node according to the transfer notification.

[0022] A fourth aspect of this application provides a network device, which may be a component or device applied to a network device (such as a processor, a chip, or a chip system, etc.), or may also be a logic module or software capable of implementing all or part of the functions of the network device. The network device includes a module or unit for executing the method described in the foregoing first aspect, or a module or unit for executing the method described in the foregoing second aspect, or a module or unit for executing the method described in the foregoing third aspect.

[0023] A fifth aspect of this application provides a network device, including:

[0024] A processor for executing a program to cause the communication device to execute the method described in the foregoing first aspect, second aspect, or third aspect and any possible implementation thereof.

[0025] Optionally, the communication device further includes a memory, and the processor is coupled to the memory; the memory is used for storing a program.

[0026] A sixth aspect of the embodiments of this application provides a chip or a chip system, which includes at least one processor and a communication interface. The communication interface and the at least one processor are interconnected by a line, and the at least one processor is used for running a computer program or instruction to perform the communication method described in any one of the possible implementations of the foregoing first aspect to third aspect.

[0027] Wherein, the communication interface in the chip may be an input / output interface, a pin, a circuit, etc.

[0028] In a possible implementation, the chip or chip system described above in this application further includes at least one memory, and instructions are stored in the at least one memory. The memory may be an internal storage unit of the chip, such as a register, a cache, etc., or may also be a storage unit of the chip, such as a read-only memory, a random access memory, etc.

[0029] The seventh aspect of the embodiments of the present application provides a network congestion control system, including a network device that executes the network device described in the foregoing first aspect and any possible implementation manner thereof, a network device that executes the network device described in the foregoing second aspect and any possible implementation manner thereof, and a network device that executes the network device described in the foregoing third aspect and any possible implementation manner thereof.

[0030] The eighth aspect of the embodiments of the present application provides a computer-readable storage medium, including instructions that, when running on a computer, cause the computer to execute the method described in the foregoing first aspect, or cause the computer to execute the method described in the foregoing second aspect, or cause the computer to execute the method described in the foregoing third aspect.

[0031] The ninth aspect of the embodiments of the present application provides a computer program product containing instructions that, when running on a computer, cause the computer to execute the method described in the foregoing first aspect, or cause the computer to execute the method described in the foregoing second aspect, or cause the computer to execute the method described in the foregoing third aspect. Description of the Drawings

[0032] Figure 1 It is a network architecture diagram in the embodiments of the present application;

[0033] Figure 2 It is a schematic diagram of an embodiment of the network congestion control method in the embodiments of the present application;

[0034] Figure 3 It is a schematic diagram of an embodiment when network congestion occurs at the second node in the embodiments of the present application;

[0035] Figure 4 It is a schematic diagram of an embodiment of data transmission in the embodiments of the present application;

[0036] Figure 5 It is another schematic diagram of an embodiment of data transmission in the embodiments of the present application;

[0037] Figure 6 It is another schematic diagram of an embodiment of data transmission in the embodiments of the present application;

[0038] Figure 7 It is a schematic diagram of the shadow switch table in the embodiments of the present application;

[0039] Figure 8 It is another schematic diagram of an embodiment of the network congestion control method in the embodiments of the present application;

[0040] Figure 9 It is a schematic diagram of an embodiment when the network congestion at the second node is alleviated in the embodiments of the present application;

[0041] Figure 10Another schematic diagram of data transmission in the embodiment of the present application;

[0042] Figure 11 Another schematic diagram of data transmission in the embodiment of the present application;

[0043] Figure 12 A schematic diagram of an embodiment of a network device in the embodiment of the present application;

[0044] Figure 13 Another schematic diagram of a network device in the embodiment of the present application;

[0045] Figure 14 Another schematic diagram of a network device in the embodiment of the present application;

[0046] Figure 15 Another schematic diagram of a network device in the embodiment of the present application. Detailed implementation manners

[0047] The embodiment of the present application discloses a network congestion control method, related devices and a storage medium, which are applied to the field of network communication technology, are used to relieve network congestion traffic, can effectively reduce the sending frequency of PFC backpressure frames, avoid retransmission of traffic packets, limit the impact of network congestion to a local area, and thus reduce the systemic risk of the network.

[0048] The embodiments of the present application will be described below with reference to the accompanying drawings. Those of ordinary skill in the art can know that with the development of technology and the emergence of new scenarios, the technical solutions provided by the embodiments of the present application are also applicable to similar technical problems.

[0049] The terms "first", "second", etc. in the specification, claims and drawings of the present application are used to distinguish similar objects, and do not have to be used to describe a specific order or sequence. It should be understood that these terms can be interchanged under appropriate circumstances, which is only a way of distinguishing when describing objects with the same attributes in the embodiments of the present application. In addition, the terms "comprising" and "having" and any variations thereof are intended to cover non-exclusive inclusion, so that a process, method, system, product or device comprising a series of units does not have to be limited to those units, but may include other units that are not clearly listed or are inherent to these processes, methods, products or devices.

[0050] Please refer to Figure 1 , and the network architecture on which the network congestion control method in the embodiment of the present application is based will be briefly described below:

[0051] In this network architecture, multiple switch nodes are connected to form a cluster. Node 101 serves as the receiving node, and nodes 102, 103, and 104 send traffic to node 101. In this network architecture, each switch node stores information about the switch nodes that are N hops adjacent to it. These switch nodes are called the shadow switches of this node, where N is an integer greater than or equal to 1. Node 105 is the shadow switch of node 102, and node 106 is the shadow switch of nodes 102, 103, and 104. There is one node, i.e., node 107, between node 106 and node 104. Then node 106 is the switch node that is 2 hops adjacent to node 104. Among them, node 107 is also the shadow switch of node 104, and node 105 is the node adjacent to node 102 or the node that is 1 hop adjacent. It can be understood that any switch node can have multiple shadow switches, and multiple switch nodes can also share a shadow switch. In the embodiments of this application, traffic is used to represent multiple data packets sent by an upstream node to a downstream node.

[0052] The above-mentioned switch node can be a network device with data forwarding functions, such as a switch, a router, etc., or a component or device applied to a network device (such as a processor, a chip, or a chip system, etc.), or a logical module or software that can implement all or part of the functions of a network device.

[0053] Next, the embodiments of this application will separately describe the situations of network congestion occurrence and network congestion mitigation:

[0054] 1. Network congestion occurrence;

[0055] In this embodiment, the first node is responsible for sending multiple data packets to the second node, and the third node is the shadow switch of the first node.

[0056] Please refer to Figure 2 , a network congestion control method in the embodiments of this application includes:

[0057] 201. The first node sends a data stream to the second node;

[0058] Due to the current communication requirements, the first node sends a data stream to the second node, and the data stream includes multiple first data packets. It can be understood that the first node can be used to represent multiple switch nodes. For example, multiple switch nodes send data to the same switch node in the case of bcast set communication, forming a many-to-one communication traffic.

[0059] Figure 3 shows a schematic diagram of the data transmission method in an embodiment of the present application. As Figure 4 shown, the first node sends the first data to the second node. There is a receive queue in the buffer of the second node. The second node stores the first data in the receive queue for processing. When network congestion occurs at the second node, step 302 is executed.

[0060] Exemplarily, as Figure 4 shown, the first node sends a data stream to the second node. The data stream includes 6 data packets, namely data packet 1 to data packet 6. The first node sends data packet 1, data packet 2, and data packet 3 to the second node. The second node stores data packet 1 to data packet 3 in the receive queue of the buffer.

[0061] It should be understood that Figure 4 the scenario in Figure 4 is only an example. In practical applications, the first node may send more or fewer data packets, which are not specifically limited here.

[0062] 202. The second node sends a congestion notification to the first node;

[0063] When network congestion occurs at the second node due to the many-to-one communication traffic, the second node sends a congestion notification to the first node to indicate that a congestion event has occurred at the second node. In practical applications, the congestion notification may be a notify message. Among them, the second node sends a congestion notify message to the first node to indicate the occurrence of a congestion event. The congestion notification may also be other messages, which are not specifically limited here.

[0064] In practical applications, the second node can use a trigger threshold to determine whether network congestion has occurred. The trigger threshold may be the amount of data in the buffer of the second node. For example, when the amount of data in the buffer of the second node is greater than or equal to a certain preset value, the second node determines that network congestion has occurred and sends a congestion notification to the first node. This trigger threshold is less than the trigger threshold of the PFC backpressure frame, so that the second node can relieve the network congestion condition before sending the PFC backpressure frame, reduce the sending frequency of the PFC backpressure frame, and thus avoid network systemic risks.

[0065] The trigger threshold may also be the remaining capacity in the buffer, that is, when the remaining capacity in the buffer of the second node is less than or equal to a certain preset value, the second node determines that network congestion has occurred and sends a congestion notification to the first node. This trigger threshold is greater than the trigger threshold of the PFC backpressure frame.

[0066] Exemplarily, as Figure 5 shown, the receiving queue of the second node includes Packet 1, Packet 2, and Packet 3. At this time, the number of packets in the buffer of the second node is 3, which is greater than the trigger threshold of 2. Then, the second node sends a congestion notification to the first node. The sending queue of the first node also includes Packet 4, Packet 5, and Packet 6 that have not been sent, and this part of the packets is the second packet.

[0067] 203. The first node sends the second packet to the third node;

[0068] After receiving the congestion notification, the first node slows down or completely stops the traffic sent to the second node. The first node sends the packets that have not been sent to the second node to the third node according to the shadow switch table saved in the cache. Figure 4 In this case, the first node forwards the traffic sent to the second node to the third node based on the pre-cached shadow switch table and marks the forwarding action at positions such as the packet header. In the embodiment of the present application, after receiving the congestion notification, the first node sends the data that needs to be sent to the second node to the third node, so that the traffic on the second node is relieved, avoiding the buffer on the second node from being continuously occupied and triggering the PFC backpressure frame, resulting in backpressure. Therefore, network congestion is alleviated and the network systemic risk is reduced.

[0069] Exemplarily, as Figure 6 shown, when the first node receives the congestion notification sent by the second node, the first node slows down or stops sending data to the second node, reducing the processing pressure on the second node. Therefore, the second node can process the received data without receiving new data, thus alleviating network congestion. The first node determines the third node according to the cached shadow switch table. Among them, there are no packets in the buffer of the third node. The first node sends Packet 4, Packet 5, and Packet 6 to the third node, and the third node caches them.

[0070] In practical applications, before the first node sends packets to it, the third node sends a message to the first node, and the message includes the address of the third node and the remaining capacity of the buffer. The first node updates the local shadow switch table of the first node according to the message sent by the third node.

[0071] It can be understood that Figure 6 the scenario shown is only an example. In practical applications, the first node can send the second packet to multiple third nodes. For example, the first node sends Packet 4 to the third node 1 and sends Packet 5 and Packet 6 to the third node 2. Specifically, it is not limited here.

[0072] Figure 7 It shows a possible form of the shadow switch table saved by the first node. The first node stores information about multiple shadow switches, including switch0 (SW0), switch1 (SW1), switch2 (SW2), and switch3 (SW3). The shadow switch table includes the destination address (destId) of each shadow switch and the buffer usage situation (buffer_usage). This buffer usage situation can be filled into the network packet header during the normal packet receiving and sending interactions between each switch node or during the fixed heartbeat packet interaction for real-time synchronization. The first node can determine the third node that needs to send the second data based on the buffer usage situation of each shadow switch in the shadow switch table.

[0073] In practical applications, the first node can select one or more shadow switches with buffer usage lower than the preset value as the third node and send the second data to multiple third nodes simultaneously. The first node can also select the shadow switch with the lowest buffer usage among multiple shadow switches as the third node. When the buffer margin of this node is insufficient, select the next shadow switch to send, and specific details are not limited here. When multiple shadow switches are congested simultaneously, the traffic can be continued to be forwarded to its own shadow switch, and the maximum depth of this forwarding can be restricted through configuration.

[0074] It can be understood that the buffer remaining capacity can be used instead of the buffer usage situation in the shadow switch table, and specific details are not limited here. The information of the shadow switch can be stored not only in the form of a table but also in other forms, and specific details are not limited here.

[0075] II. Network congestion mitigation;

[0076] Please refer to Figure 8 , a network congestion control method in an embodiment of this application includes:

[0077] 801. The second node sends a congestion relief notice to the first node;

[0078] When the data volume in the buffer of the second node drops below the trigger threshold or the remaining capacity of the buffer of the second node is greater than a certain preset value, the second node sends a congestion relief notice to the first node, which is used to indicate that the second node can continue to receive data streams. The first node transfers the second data packet to the second node according to this congestion relief notice.

[0079] In practical applications, the congestion relief notification can be a notify message. For example, the second node sends a ready notify message to the first node to indicate that the network congestion on the second node has been alleviated.

[0080] Figure 9 The figure shows a schematic diagram of an embodiment when the network congestion of the second node is alleviated. As Figure 9 shown, when the data in the receive queue of the second node decreases and the data volume is lower than the trigger threshold, the second node sends a ready notify message to the first node to notify the first node that the network congestion of the second node has been alleviated and it can continue to receive the originally pending data.

[0081] Exemplarily, as Figure 10 shown, the second node processes the data packets in the receive queue. At this time, the number of data packets in the receive queue is 1, which is less than the trigger threshold of 2. Then the second node sends a congestion relief notification to the first node. According to the congestion relief notification, the first node determines the third node that has received the second data packet from the cached shadow switch table, and the first node sends a transfer notification to the third node, requesting the third node to transfer the second data packet.

[0082] 802. The third node sends the second data packet to the first node;

[0083] After receiving the congestion relief notification, the first node sends a transfer notification to the third node according to the shadow switch table cached by the first node. The third node returns the data packet sent by the first node in the buffer to the first node.

[0084] It can be understood that the third node can perform certain calculations on the data packets sent by the first node. For example, aggregating or summing multiple data packets, and the specific operations are not limited here.

[0085] The third node sends the data in the buffer to the first node along the original path. For example, as Figure 1 shown, node 106 is the shadow switch of node 104. Node 106 receives the data sent by node 104 through node 107. Then when the network congestion is alleviated, node 106 needs to send the data to node 104 through node 107.

[0086] In practical applications, the buffer of the third node includes multiple data sent by the first node, and these data are distinguished according to their sources. For example, as Figure 1As shown, node 106 may include data from node 103 and node 104. The packet header of the data from node 103 includes the forwarding action of node 103, and the packet header of the data from node 104 includes the forwarding action of node 104. The third node can send it back to the corresponding first node according to the source of the data. The forwarding action can also be included in other positions of the data, which is not specifically limited here.

[0087] Exemplarily, as Figure 11 shown, the third node sends the data packets in the receive queue, including data packet 4, data packet 5, and data packet 6, to the first node according to the forwarding information in the data packet. After receiving the second data packet, the first node forwards the second data packet to the second node.

[0088] In practical applications, the first node can include the destination address of the second node in the transfer notice, so that the third node can directly transfer the second data packet, that is, data packet 4, data packet 5, and data packet 6, to the second node, which is not specifically limited here.

[0089] In this embodiment, if the transfer notice includes the address of the second node, step 803 may not be executed, and step 802 is changed to the third node sending the second data packet to the second node.

[0090] 803. The first node sends the second data packet to the second node;

[0091] The first node takes the data packets temporarily stored in the third node and the data packets that have not occurred as the third data and sends them to the second node for the second node to continue processing.

[0092] In practical applications, if the network congestion of the second node has been alleviated during the process of the first node sending the second data to the third node, the first node integrates the second data that has not been sent yet and the data cached in the third node and sends them to the second node again. For scenarios with requirements for packet sequence preservation, the sequence preservation logic can be coordinated during the distributed forwarding of data packets to ensure that the data packets meet the sequence preservation requirements when sent end-to-end to the destination network device. This sequence preservation logic can be implemented during the distributed transfer or the original path return of network packets.

[0093] Exemplarily, as Figure 11 shown, after receiving the data packets from the third node, the first node sends data packet 4, data packet 5, and data packet 6 to the second node. It can be understood that Figure 11 the scenario shown is only an example. In practical applications, the third node can correspond to multiple first nodes. Then, the third node sends the data packets back to the first node according to the original sending path, and the first node also sends the data packets to the second node according to the original sending path.

[0094] The network congestion control method in the embodiments of the present application has been described above. Next, the network device in the embodiments of the present application will be described. Please refer to Figure 12 One embodiment of the network device in the embodiments of the present application includes:

[0095] A first sending unit 1201, configured to send a data stream to a second node, where the data stream includes a plurality of first data packets;

[0096] A receiving unit 1202, configured to receive a congestion notification from the second node, where the congestion notification is used to indicate that the second node is in a congested state;

[0097] A determining unit 1203, configured to determine a third node according to a shadow node list, where the shadow node list includes the remaining capacity of the buffers of the nodes adjacent to the first node by N hops, and the third node is at least one node in the shadow node list whose remaining capacity of the buffer is greater than a first threshold;

[0098] A second sending unit 1204, configured to send a second data packet to the third node, where the second data packet is the first data packet in the data stream that has not been sent to the second node.

[0099] Please refer to Figure 13 One embodiment of the network device in the embodiments of the present application includes:

[0100] A receiving unit 1301, configured to receive a data stream from a first node, where the data stream includes a plurality of first data packets;

[0101] A sending unit 1302, configured to send a congestion notification to the first node when the second node is in a congested state.

[0102] Please refer to Figure 14 One embodiment of the network device in the embodiments of the present application includes:

[0103] A receiving unit 1401, configured to receive a second data packet from a first node, where the remaining capacity of the buffer of the third node is stored in the shadow node list of the first node, and the remaining capacity of the buffer of the third node is greater than a first threshold. The shadow node list includes the remaining capacity of the buffers of at least one node adjacent to the first node by N hops. The second data packet is the first data packet in the data stream that has not been sent to the second node. The second node is configured to receive the data stream from the first node, and the data stream includes a plurality of first data packets.

[0104] Figure 15 It is a schematic structural diagram of a network device provided by an embodiment of the present application. The network device is implemented by a general bus architecture.

[0105] The network device includes at least one processor 1501, a communication bus 1502, a memory 1503, and at least one communication interface 1504.

[0106] Optionally, the processor 1501 is a general-purpose CPU, NP, microprocessor, or one or more integrated circuits for implementing the solution of this application. For example, an application-specific integrated circuit (ASIC), a programmable logic device (PLD), or a combination thereof. The above PLD is a complex programmable logic device (CPLD), a field-programmable gate array (FPGA), a generic array logic (GAL), or any combination thereof.

[0107] The communication bus 1502 is used to transfer information between the above components. The communication bus 1502 is divided into an address bus, a data bus, a control bus, etc. For the sake of simplicity, only a thick line is used in the figure to represent it, but it does not mean that there is only one bus or one type of bus.

[0108] Optionally, the memory 1503 is a read-only memory (ROM) or other types of static storage devices that can store static information and instructions. Alternatively, the memory 1503 is a random access memory (RAM) or other types of dynamic storage devices that can store information and instructions. Alternatively, the memory 1503 is an electrically erasable programmable read-only memory (EEPROM), a compact disc read-only memory (CD-ROM), or other optical disc storage, optical disc storage (including compact discs, laser discs, optical discs, digital versatile discs, Blu-ray discs, etc.), magnetic disk storage media, or other magnetic storage devices, or any other medium that can be used to carry or store the desired program code in the form of instructions or data structures and can be accessed by a computer, but is not limited thereto. Optionally, the memory 1503 exists independently and is connected to the processor 1501 through the communication bus 1502. Optionally, the memory 1503 and the processor 1501 are integrated together.

[0109] The communication interface 1504 uses any transceiver-like device for communicating with other devices or communication networks. The communication interface 1504 includes a wired communication interface. Optionally, the communication interface 1504 further includes a wireless communication interface. Among them, the wired communication interface is, for example, an Ethernet interface. The Ethernet interface is an optical interface, an electrical interface, or a combination thereof. The wireless communication interface is a wireless local area network (WLAN) interface, a cellular network communication interface, or a combination thereof, etc.

[0110] In a specific implementation, as an embodiment, the processor 1501 includes one or more CPUs, such as Figure 15 CPU0 and CPU1 shown in

[0111] In a specific implementation, as an embodiment, the network device includes multiple processors, such as Figure 15 the processor 1501 and the processor 1505 shown in

[0112] In some embodiments, the memory 1503 is used to store the program code 1506 for executing the solution of this application, and the processor 1501 executes the program code 1506 stored in the memory 1503. That is to say, the network device implements the above method embodiments through the processor 1501 and the program code 1506 in the memory 1503.

[0113] The embodiment of this application also provides a computer-readable storage medium, including instructions, when the instructions run on a computer, the computer is caused to execute the method in the foregoing embodiments.

[0114] The embodiment of this application also provides a computer program product containing instructions, when it runs on a computer, the computer is caused to execute the method in the foregoing embodiments.

[0115] Those skilled in the art can clearly understand that for the convenience and brevity of description, the specific working processes of the systems, devices, and units described above can refer to the corresponding processes in the foregoing method embodiments, and will not be repeated here.

[0116] In several embodiments provided in the present application, it should be understood that the disclosed systems, devices, and methods can be implemented in other ways. For example, the device embodiments described above are merely illustrative. For example, the division of the units is only a logical function division. In actual implementation, there may be other division methods. For example, multiple units or components can be combined or integrated into another system, or some features can be ignored or not executed. Another point is that the displayed or discussed coupling, direct coupling, or communication connection between each other can be through some interfaces, and the indirect coupling or communication connection of the device or unit can be in electrical, mechanical, or other forms.

[0117] The units described as separate components may or may not be physically separated. The components displayed as units may or may not be physical units, that is, they can be located in one place or distributed to multiple network units. Some or all of the units can be selected according to actual needs to achieve the purpose of the solution of this embodiment.

[0118] In addition, each functional unit in various embodiments of the present application can be integrated in a processing unit, or each unit can exist physically alone, or two or more units can be integrated in one unit. The above-mentioned integrated units can be implemented in the form of hardware or in the form of software functional units.

[0119] If the above-mentioned integrated unit is implemented in the form of a software functional unit and sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on such an understanding, the technical solution of the present application, in essence, or the part that contributes to the prior art, or all or part of this technical solution, can be embodied in the form of a software product. This computer software product is stored in a storage medium and includes several instructions to enable a computer device (which can be a personal computer, a server, or a network device, etc.) to execute all or part of the steps of the methods described in various embodiments of the present application. The foregoing storage medium includes: various media such as USB flash drives, mobile hard disks, ROM, RAM, magnetic disks, or optical discs that can store program codes.

Claims

1. A network congestion control method, characterized in that, the method includes: A first node sends a data stream to a second node, and the data stream includes a plurality of first data packets; The first node receives a congestion notification from the second node, and the congestion notification is used to indicate that the second node is in a congested state; The first node determines a third node according to a shadow node list, the shadow node list includes the remaining capacity of the buffers of at least one node adjacent to the first node by N hops, and the third node is a node among the at least one node whose remaining capacity of the buffer is greater than a first threshold; The first node sends a second data packet to the third node, and the second data packet is a first data packet in the data stream that has not been sent to the second node.

2. The method according to claim 1, characterized in that, the shadow node list further includes the address of each node, and before the first node sends the second data packet to the third node, the method further includes: The first node modifies the address of the second node in the first data packet that has not been sent to the second node to the address of the third node to obtain a second data packet.

3. The method according to claim 1 or 2, characterized in that, the method further includes: The first node receives a message from the third node, and the message includes the remaining capacity of the buffer of the third node; The first node updates the remaining capacity of the buffer of the third node in the shadow node list.

4. The method according to any one of claims 1 to 3, characterized in that, the method further includes: The first node receives a congestion relief notification from the second node, and the congestion relief notification is used to indicate that the congestion state of the second node has been relieved; The first node transfers the second data packet cached in the third node to the second node according to the congestion relief notification.

5. The method according to claim 4, characterized in that, the first node transfers the second data packet cached in the third node to the second node according to the congestion relief notification, including: The first node sends a transfer notification to the third node according to the congestion relief notification, and the transfer notification is used to indicate the transfer of the second data packet; The first node receives the second data packet from the third node; The first node sends the second data packet to the second node.

6. The method according to claim 4, characterized in that, the first node transfers the second data packet cached in the third node to the second node according to the congestion relief notification, including: The first node sends a transfer notification to the third node according to the congestion relief notification, and the transfer notification carries the address of the second node, and the transfer notification is used to indicate that the third node sends the second data packet to the second node according to the address of the second node.

7. A network congestion control method, characterized in that, the method includes: A second node receives a data stream from a first node, and the data stream includes a plurality of first data packets; When the second node is in a congested state, the second node sends a congestion notification to the first node.

8. The network congestion control method according to claim 7, wherein, when the number of first data packets in the buffer of the second node is greater than or equal to a trigger threshold, the second node is in a congested state, and the trigger threshold is less than the priority flow control (PFC) backpressure threshold.

9. The network congestion control method according to claim 7 or 8, wherein, when the number of first data packets in the buffer of the second node is less than the trigger threshold, the congestion state of the second node is lifted, and the method further includes: the second node sends a congestion release notification to the first node; the second node receives a second data packet from the first node, and the second data packet is the first data packet in the data stream that has not been sent to the second node.

10. A network congestion control method, wherein, the method includes: a third node receives a second data packet from a first node, the remaining capacity of the buffer of the third node is stored in the shadow node list of the first node, and the remaining capacity of the buffer of the third node is greater than a first threshold, the shadow node list includes the remaining capacity of the buffers of at least one node adjacent to the first node by N hops, the second data packet is the first data packet in the data stream that has not been sent to a second node, the second node is used to receive the data stream from the first node, and the data stream includes a plurality of first data packets.

11. The network congestion control method according to claim 10, wherein, before the third node receives the second data packet from the first node, the method further includes: the third node sends a message to the first node, and the message includes the remaining capacity of the buffer of the third node.

12. The network congestion control method according to claim 10 or 11, wherein, the method further includes: the third node receives a transfer notification from the first node; the third node sends the second data packet to the first node according to the transfer notification.

13. The network congestion control method according to claim 10 or 11, wherein, the method further includes: the third node receives a transfer notification from the first node; the third node sends the second data packet to the second node according to the transfer notification.

14. A network device, wherein, comprises: a first sending unit, configured to send a data stream to a second node, the data stream including a plurality of first data packets; a receiving unit, configured to receive a congestion notification from the second node, the congestion notification being used to indicate that the second node is in a congested state; a determining unit, configured to determine a third node according to a shadow node list, the shadow node list including the remaining capacity of the buffers of nodes adjacent to the first node by N hops, and the third node being at least one node in the shadow node list whose remaining capacity of the buffer is greater than a first threshold; A second sending unit, configured to send a second data packet to the third node, where the second data packet is a first data packet in the data stream that has not been sent to the second node.

15. A network device, characterized in that it includes: a receiving unit, configured to receive a data stream from a first node, where the data stream includes a plurality of first data packets; a sending unit, configured to send a congestion notification to the first node when a second node is in a congested state.

16. A network device, characterized in that it includes: a receiving unit, configured to receive a second data packet from a first node, where the remaining capacity of the buffer of the third node is stored in the shadow node list of the first node, and the remaining capacity of the buffer of the third node is greater than a first threshold, and the shadow node list includes the remaining capacities of the buffers of at least one node adjacent to the first node by N hops. The second data packet is a first data packet in the data stream that has not been sent to the second node, and the second node is configured to receive the data stream from the first node, where the data stream includes a plurality of first data packets.

17. A network congestion mitigation system, characterized in that it includes: a network device configured to execute the method according to any one of claims 1 to 6, a network device configured to execute the method according to any one of claims 7 to 9, and a network device configured to execute the method according to any one of claims 10 to 13.

18. A network device, characterized in that it includes: a processor, configured to execute a program to cause the network device to execute the method according to any one of claims 1 to 6, or to cause the network device to execute the method according to any one of claims 7 to 9, or to cause the network device to execute the method according to any one of claims 10 to 13.

19. A computer-readable storage medium, including instructions, which when running on a computer, cause the computer to execute the method according to any one of claims 1 to 6, or cause the computer to execute the method according to any one of claims 7 to 9, or cause the computer to execute the method according to any one of claims 10 to 13.

20. A computer program product including instructions, which when running on a computer, cause the computer to execute the method according to any one of claims 1 to 6, or cause the computer to execute the method according to any one of claims 7 to 9, or cause the computer to execute the method according to any one of claims 10 to 13.