Congestion control method, related device and medium
By obtaining the switching architecture and candidate path table in the RDMA network, selecting alternative paths and retransmitting messages, the problem of low bandwidth utilization caused by link congestion is solved, achieving fast congestion control and efficient bandwidth utilization.
Patent Information
- Application Number
- CN202410606088.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2024-05-15
- Publication Date
- 2025-11-18
AI Technical Summary
In complex RDMA networks, link congestion is inevitable. Traditional congestion control methods result in low bandwidth utilization and slow recovery speed.
By obtaining the switching architecture and candidate path table between the source and destination nodes, after determining that the target path is congested, an alternative path is selected based on the bandwidth utilization of the switching layer, and the next-hop switching node of the alternative path is encoded in the target packet. The target packet is then retransmitted to achieve routing.
It improves congestion control efficiency and bandwidth utilization, quickly eliminates congestion, and enhances network transmission efficiency.
Smart Images

Figure CN120980602A_ABST
Abstract
Description
TECHNICAL FIELD
[0001] The present disclosure relates to the field of data communication, and in particular to a congestion control method, related device and medium. BACKGROUND
[0002] Current remote direct memory access (RDMA) network networking is complex. The number of 4K card cluster network devices exceeds 150, and the number of network links exceeds 10K. The number of 16K card cluster network devices exceeds 1000, and the number of network links exceeds 50K. In such a complex network, it is impossible to achieve absolute network load balancing through planning, and local load imbalance and link congestion are almost inevitable. Currently, when link congestion occurs, the traditional data center quantization congestion notification (DCQCN) method is mainly used for congestion control. After the destination node side discovers packet loss, a congestion notification packet (CNP) is sent. After the source node receives the CNP, it performs DCQCN speed reduction, and the DCQCN bandwidth acceleration ratio is slow after congestion recovery, resulting in low bandwidth utilization. SUMMARY
[0003] The congestion control method, related device and medium provided by the embodiments of the present disclosure can improve the congestion control efficiency and improve the bandwidth utilization.
[0004] According to an aspect of the present disclosure, a congestion control method is provided, comprising:
[0005] obtaining an exchange architecture between a source node and a destination node, the exchange architecture comprising a plurality of exchange levels;
[0006] obtaining a candidate path table comprising a plurality of candidate paths between the source node and the destination node, wherein each of the candidate paths passes through an exchange node at each of the exchange levels of the exchange architecture;
[0007] sending a target packet through a target path in the plurality of candidate paths and determining that the target path is congested;
[0008] for each other candidate path in the candidate path table except the target path, obtaining a bandwidth usage rate of the exchange node at each of the exchange levels in the other candidate path;
[0009] based on the bandwidth usage rate, determining a replacement path in each of the other candidate paths, and encoding a next-hop exchange node at each of the exchange levels in the replacement path into a first extension field in the target packet;
[0010] resending the target packet so that the exchange node at each of the exchange levels routes to the next-hop exchange node encoded in the first extension field.
[0011] According to an aspect of the present disclosure, a congestion control apparatus is provided, comprising:
[0012] a first obtaining unit, configured to obtain a switching architecture between a source node and a destination node, the switching architecture comprising a plurality of switching levels;
[0013] a second obtaining unit, configured to obtain a candidate path table comprising a plurality of candidate paths between the source node and the destination node, wherein each of the candidate paths passes through one switching node at each of the switching levels of the switching architecture;
[0014] a first determining unit, configured to send a target packet through a target path in the plurality of candidate paths, and determine that the target path is congested;
[0015] a third obtaining unit, configured to, for each other candidate path in the candidate path table except the target path, obtain a bandwidth usage rate of the switching node at each of the switching levels in the other candidate path;
[0016] an encoding unit, configured to determine a replacement path in each of the other candidate paths based on the bandwidth usage rates, and encode a next-hop switching node at each of the switching levels in the replacement path into a first extension field in the target packet;
[0017] a re-sending unit, configured to resend the target packet so that the switching node at each of the switching levels routes to the next-hop switching node encoded in the first extension field.
[0018] Optionally, the encoding unit is specifically configured to:
[0019] obtain a bandwidth usage rate threshold of each of the switching levels;
[0020] filter out, in each of the other candidate paths, the other candidate path containing the switching level with the bandwidth usage rate greater than the bandwidth usage rate threshold, to obtain a filtered path;
[0021] determine, for each of the filtered paths, a first sum of the bandwidth usage rates of the switching nodes at each of the switching levels;
[0022] determine the replacement path in each of the filtered paths based on the first sum.
[0023] Optionally, the congestion control apparatus further comprises a second determining unit, and the second determining unit is specifically configured to:
[0024] For each other candidate path in the candidate path table besides the target path, determine the link overlap ratio between the other candidate path and the target path;
[0025] Other candidate paths with a link overlap ratio less than the first ratio are identified as pre-selected paths;
[0026] Generate fake messages;
[0027] The fake message is sent through multiple pre-selected paths, and for each pre-selected path, an out-of-order notification message and an Ethernet direct memory access response are received from the destination node.
[0028] Determine the reception frequency of the out-of-order notification message for each of the preselected paths, and the average time interval from sending the fake message to receiving the Ethernet direct memory access response;
[0029] Based on the receiving frequency and the average time interval, a multiple selection path is determined from the multiple pre-selected paths;
[0030] The encoding unit is specifically used for:
[0031] In each of the multiple selection paths, the multiple selection paths that contain the switching layer with a bandwidth utilization rate greater than the bandwidth utilization rate threshold are filtered out to obtain the filtered paths.
[0032] Optionally, the second determining unit is specifically used for:
[0033] A first score is determined based on the receiving frequency of the preselected path;
[0034] A second score is determined based on the average time interval of the pre-selected paths;
[0035] Based on the first score and the second score, determine the total score of the pre-selected path;
[0036] The selected path is determined from among the multiple pre-selected paths based on the total score of the multiple pre-selected paths.
[0037] Optionally, the third acquisition unit is specifically used for:
[0038] Obtain the first message corresponding to each of the other candidate paths, and send the first message on the other candidate path corresponding to the first message and at the same time period as the target message.
[0039] obtaining a second packet returned by the destination node, the second packet comprising the first packet and the bandwidth usage of the switching nodes of each of the switching levels in the other candidate paths, the bandwidth usage being added by the switching nodes of each of the switching levels when the first packet passes through the switching nodes.
[0040] Optionally, the third obtaining unit is specifically configured to:
[0041] sending a first query request to the switching nodes of each of the switching levels in the other candidate paths;
[0042] receiving a first response made by the switching nodes in response to the first query request, the first response containing the bandwidth usage.
[0043] Optionally, the first determining unit is specifically configured to:
[0044] receiving an out-of-order notification message of the destination node, the out-of-order notification message being sent in a case where a sequence number of a packet received by the destination node does not match a time slot number at which the packet is received;
[0045] determining a first number of the out-of-order notification messages received within a first time length;
[0046] determining that the target path is congested based on a comparison of the first number and a first threshold value.
[0047] Optionally, the first determining unit is specifically configured to:
[0048] initializing a first timer to 0 and starting timing;
[0049] if the first timer reaches the first time length, determining a number of the out-of-order notification messages received as the first number.
[0050] Optionally, the first determining unit is specifically configured to:
[0051] if the first number does not reach a first threshold value, resetting the first timer to 0 and clearing the number of the out-of-order notification messages received;
[0052] if the first number reaches the first threshold value, determining that the target path is congested.
[0053] Optionally, the congestion control apparatus further comprises a sending unit, the sending unit being specifically configured to:
[0054] sending a congestion message indicating that the target path is congested to a general controller, so as to update, by the general controller, the candidate path table of each of the source nodes according to the congestion message, wherein the general controller is located outside each of the source nodes.
[0055] Optionally, the first determining unit is specifically configured to:
[0056] receive an Ethernet direct memory access response of the destination node;
[0057] determine a round trip time between sending the target message and receiving the Ethernet direct memory access response;
[0058] determine that the target path is congested based on a comparison between the round trip time and a second threshold value.
[0059] Optionally, the first determining unit is specifically configured to:
[0060] read the round trip time from a second timer, wherein the second timer is initialized to 0 and starts timing when the target message is sent.
[0061] Optionally, the first determining unit is specifically configured to:
[0062] obtain a processing time of the destination node for processing the target message;
[0063] determine a time difference between the round trip time and the processing time;
[0064] if the time difference does not reach the second threshold value, reset the second timer to 0;
[0065] if the time difference reaches the second threshold value, determine that the target path is congested.
[0066] Optionally, the first determining unit is specifically configured to:
[0067] receive a congestion notification message of the destination node, wherein when the target message passes through the switching node, if the switching node is congested, the switching node sends a congestion marking message to the destination node, and the destination node sends the congestion notification message in response to the congestion marking message;
[0068] determine a second number of the congestion notification messages received within a second time length;
[0069] determine that the target path is congested based on a comparison between the second number and a third threshold value.
[0070] Optionally, the first determining unit is specifically configured to:
[0071] initialize a third timer to 0 and start timing;
[0072] If the third timer reaches the second time length, the number of the received congestion notification packets is determined as the second number.
[0073] Optionally, the first determining unit is specifically configured to:
[0074] If the second number does not reach a third threshold value, the third timer is reset to zero, and the number of the received congestion notification packets is cleared to zero.
[0075] If the second number reaches the third threshold value, it is determined that the target path is congested.
[0076] Optionally, the first determining unit is specifically configured to:
[0077] Obtain a packet queue group, the packet queue group comprising a plurality of packet queues, each of the packet queues corresponding to a candidate path;
[0078] Sort the plurality of packet queues in descending order of bandwidths of the candidate paths corresponding to the packet queues, wherein the target path is ranked first in the sorting, and the packet queue to which the target packet belongs corresponds to the target path.
[0079] Send the target packet through the target path.
[0080] Optionally, the first determining unit is specifically configured to:
[0081] Receive a priority flow control packet of the destination node, the priority flow control packet indicating that the target path ranked first in the sorting is congested;
[0082] Determine a third number of the received priority flow control packets within a third time length;
[0083] Determine, based on a comparison between the third number and a fourth threshold value, that the target path is congested.
[0084] Optionally, the first determining unit is specifically configured to:
[0085] Initialize a fourth timer to 0 and start timing;
[0086] If the fourth timer reaches the third time length, the number of the received priority flow control packets is determined as the third number.
[0087] Optionally, the first determining unit is specifically configured to:
[0088] If the third number does not reach a fourth threshold value, the fourth timer is reset to zero, and the number of the received priority flow control packets is cleared to zero.
[0089] determining that the target path is congested if the third number reaches the fourth threshold.
[0090] Optionally, the first determining unit is specifically configured to:
[0091] determining that the target path is congested if a candidate path table update message is received from a total controller, wherein the total controller is located outside the source node and the destination node; adding congestion metadata on the target message when the target message passes through each of the switching nodes of the switching levels; and sending the congestion metadata added by each of the switching nodes of the switching levels to the total controller if the destination node determines that the target path is congested according to the congestion metadata added by each of the switching nodes of the switching levels, and issuing the candidate path table update message based on the congestion metadata by the total controller.
[0092] Optionally, the congestion metadata comprises the bandwidth usage rate of the switching node.
[0093] The first determining unit is specifically configured to:
[0094] obtaining a bandwidth usage rate threshold of each of the switching levels;
[0095] determining that the target path is congested if the bandwidth usage rate of the switching node of any one of the switching levels is greater than the bandwidth usage rate threshold of the switching level.
[0096] Optionally, the first determining unit is specifically configured to:
[0097] sending a congestion probe request to the destination node;
[0098] determining that the target path is congested if a congestion probe response to the congestion probe request is not received within a fourth time length.
[0099] Optionally, the first determining unit is specifically configured to:
[0100] initializing a fifth timer to 0 and starting timing;
[0101] resetting the fifth timer to 0 if the congestion probe response to the congestion probe request is received before the fifth timer reaches the fourth time length;
[0102] determining that the target path is congested if the congestion probe response to the congestion probe request is not received when the fifth timer reaches the fourth time length.
[0103] Optionally, the plurality of switching levels comprises a first access layer and a first aggregation layer in a first source container where the source node is located, a core layer comprising a plurality of core planes corresponding to a plurality of source containers, the plurality of source containers comprising the first source container and a second source container, a second aggregation layer and a second access layer in the second source container where the destination node is located, wherein the switching node of the first access layer is connected to the plurality of switching nodes of the first aggregation layer, the switching node of the first aggregation layer is connected to the plurality of switching nodes in the first core plane corresponding to the first source container, the plurality of core planes comprises the first core plane, the switching node in the first core plane is connected to one of the switching nodes in the second aggregation layer, and the switching node in the second aggregation layer is connected to two of the switching nodes in the second access layer.
[0104] According to an aspect of the present disclosure, an electronic device is provided, comprising a memory and a processor, the memory storing a computer program, and the processor implementing the congestion control method as described above when executing the computer program.
[0105] According to an aspect of the present disclosure, a computer readable storage medium is provided, the storage medium storing a computer program, and the computer program implementing the congestion control method as described above when executed by a processor.
[0106] According to an aspect of the present disclosure, a computer program product is provided, the computer program product comprising a computer program, the computer program being read and executed by a processor of a computer device, so that the computer device executes the congestion control method as described above.
[0107] In the embodiment of the present disclosure, a candidate path table is maintained in the source node. Once the target path is congested, for each other candidate path in the candidate path table except the target path, the bandwidth usage of the switching nodes in each switching level of the other candidate path is obtained, and based on the bandwidth usage, a replacement path is determined in each other candidate path, and the next hop switching node of each switching level in the replacement path is encoded into a first extension field in the target packet, and then the target packet is retransmitted. In this way, the switching nodes in each switching level can route to the next hop switching node encoded in the first extension field. The candidate path with low bandwidth usage has relatively more bandwidth that has not been used, and therefore selecting the replacement path based on the bandwidth usage is conducive to quickly eliminating congestion and improving congestion control efficiency. The embodiment of the present disclosure makes full use of the extension information carrying capacity of the first extension field in the target packet, encodes the next hop switching node of each switching level in the determined replacement path into the field, so that the switching nodes can route according to the next hop switching node encoded in the field, thereby improving the congestion control efficiency and bandwidth utilization.
[0108] Other features and advantages of the present disclosure will be set forth in the description that follows, and in part will be apparent from the description, or can be learned by practice of the present disclosure. The purposes and other advantages of the present disclosure will be realized and attained by the structure particularly pointed out in the description, claims and drawings. BRIEF DESCRIPTION OF DRAWINGS
[0109] The accompanying drawings are included to provide a further understanding of the technical solutions of the present disclosure, and constitute a part of the specification, and are used to explain the technical solutions of the present disclosure together with the embodiments of the present disclosure, and do not constitute a limitation to the technical solutions of the present disclosure.
[0110] Figure 1 is a framework diagram of a system to which a congestion control method provided according to an embodiment of the present disclosure is applied;
[0111] Figure 2 is a schematic diagram of an application scenario of a congestion control method according to an embodiment of the present disclosure;
[0112] Figure 3 is a main flowchart of a congestion control method according to an embodiment of the present disclosure;
[0113] Figure 4 is a schematic diagram of a system environment of a congestion control method according to an embodiment of the present disclosure;
[0114] Figure 5 is a schematic diagram of a frame structure of a target packet of a congestion control method according to an embodiment of the present disclosure;
[0115] Figure 6 is a schematic diagram of a candidate path table of a congestion control method according to an embodiment of the present disclosure and a candidate path corresponding to the candidate path table;
[0116] Figure 7 is a flowchart of determining congestion of a target path based on an out-of-order notification message according to an embodiment of the present disclosure;
[0117] Figure 8 is a schematic diagram of determining congestion of a target path based on an out-of-order notification message according to an embodiment of the present disclosure;
[0118] Figure 9 is a flowchart of determining a first number of out-of-order notification messages received within a first time length according to an embodiment of the present disclosure;
[0119] Figure 10 is a flowchart of determining congestion of a target path based on a comparison of the first number and a first threshold according to an embodiment of the present disclosure;
[0120] Figure 11is a flowchart of determining congestion of a target path according to an Ethernet direct memory access response according to an embodiment of the present disclosure;
[0121] Figure 12 is a schematic diagram of determining congestion of a target path according to an Ethernet direct memory access response according to an embodiment of the present disclosure;
[0122] Figure 13 is a flowchart of determining a round trip time from sending a target packet to receiving an Ethernet direct memory access response according to an embodiment of the present disclosure;
[0123] Figure 14 is a flowchart of determining congestion of a target path based on a comparison of the round trip time with a second threshold according to an embodiment of the present disclosure;
[0124] Figure 15 is a flowchart of determining congestion of a target path according to a congestion notification packet according to an embodiment of the present disclosure;
[0125] Figure 16 is a schematic diagram of determining congestion of a target path according to a congestion notification packet according to an embodiment of the present disclosure;
[0126] Figure 17 is a flowchart of determining a second number of congestion notification packets received within a second time duration according to an embodiment of the present disclosure;
[0127] Figure 18 is a flowchart of determining congestion of a target path based on a comparison of the second number with a third threshold according to an embodiment of the present disclosure;
[0128] Figure 19 is a flowchart of sending a target packet through a target path in a plurality of candidate paths according to an embodiment of the present disclosure;
[0129] Figure 20 is a schematic diagram of sending a target packet through a target path in a plurality of candidate paths according to an embodiment of the present disclosure;
[0130] Figure 21 is a flowchart of determining congestion of a target path according to a priority flow control packet according to an embodiment of the present disclosure;
[0131] Figure 22 is a schematic diagram of determining congestion of a target path according to a priority flow control packet according to an embodiment of the present disclosure;
[0132] Figure 23 is a flowchart of determining a third number of priority flow control packets received within a third time duration according to an embodiment of the present disclosure;
[0133] Figure 24is a flowchart of determining target path congestion based on a comparison of the third number and the fourth threshold according to an embodiment of the present disclosure;
[0134] Figure 25 is a flowchart of determining target path congestion according to congestion metadata according to an embodiment of the present disclosure;
[0135] Figure 26 is a schematic diagram of determining target path congestion according to congestion metadata according to an embodiment of the present disclosure;
[0136] Figure 27 is a flowchart of determining target path congestion according to congestion metadata added by switching nodes of each switching level according to an embodiment of the present disclosure;
[0137] Figure 28 is a schematic diagram of determining target path congestion according to congestion metadata added by switching nodes of each switching level according to an embodiment of the present disclosure;
[0138] Figure 29 is a flowchart of determining target path congestion according to congestion probe responses according to an embodiment of the present disclosure;
[0139] Figure 30 is a schematic diagram of determining target path congestion according to congestion probe responses according to an embodiment of the present disclosure;
[0140] Figure 31 is a flowchart of determining target path congestion according to no congestion probe responses to congestion probe requests received within a fourth time length according to an embodiment of the present disclosure;
[0141] Figure 32 is a flowchart of obtaining bandwidth usage rates of switching nodes of each switching level in other candidate paths according to second packets according to an embodiment of the present disclosure;
[0142] Figure 33 is a schematic diagram of obtaining bandwidth usage rates of switching nodes of each switching level in other candidate paths according to an embodiment of the present disclosure;
[0143] Figure 34 is a flowchart of obtaining bandwidth usage rates of switching nodes of each switching level in other candidate paths according to first responses according to an embodiment of the present disclosure;
[0144] Figure 35 is a schematic diagram of obtaining bandwidth usage rates of switching nodes of each switching level in other candidate paths according to first responses according to an embodiment of the present disclosure;
[0145] Figure 36is a flowchart of determining a replacement path among various other candidate paths based on bandwidth usage according to an embodiment of the present disclosure;
[0146] Figure 37 is a schematic diagram of determining a replacement path among various other candidate paths based on bandwidth usage according to an embodiment of the present disclosure;
[0147] Figure 38 is a flowchart of determining a filtered path according to an embodiment of the present disclosure;
[0148] Figure 39 is a schematic diagram of determining a preselected path according to an embodiment of the present disclosure;
[0149] Figure 40 is a flowchart of determining a reselected path among multiple preselected paths based on a receiving frequency and an average time interval according to an embodiment of the present disclosure;
[0150] Figure 41 is a schematic diagram of determining a reselected path among multiple preselected paths based on a receiving frequency and an average time interval according to an embodiment of the present disclosure;
[0151] Figure 42 is one embodiment of a congestion control method according to an embodiment of the present disclosure;
[0152] Figure 43 is a block diagram of a congestion control device according to an embodiment of the present disclosure;
[0153] Figure 44 is a terminal structure diagram of performing a congestion control method according to an embodiment of the present disclosure;
[0154] Figure 45 is a server structure diagram of performing a congestion control method according to an embodiment of the present disclosure. DETAILED DESCRIPTION
[0155] In order to make the objectives, technical solutions, and advantages of the present disclosure clearer, the present disclosure will be further described in detail below with reference to the accompanying drawings and embodiments. It should be understood that the specific embodiments described herein are only used to explain the present disclosure and should not be used to limit the present disclosure.
[0156] Before the present disclosure is further described, the terms and terminology used in the present disclosure will be explained. The terms and terminology used in the present disclosure are applicable to the following explanations:
[0157] Remote Direct Memory Access (RDMA): an access technology generated to solve the delay of server-side data processing in network transmission. RDMA directly transmits data into the storage area of a computer through a network, and moves data from one system to the storage of a remote system quickly without affecting the operating system, so that the processing function of the computer is not needed. It eliminates the overhead of external memory copying and context switching, and thus can free up memory bandwidth and CPU cycles to improve application system performance.
[0158] Packet: a data unit exchanged and transmitted in a network, that is, a data block to be sent by a node at a time. The packet is also a unit of network transmission, which is continuously encapsulated into a group, a package, and a frame for transmission in the transmission process. The encapsulation method is to add some information segments, which are data organized in a certain format. The packet contains complete data information to be sent, and the length is very inconsistent, unlimited and variable.
[0159] The current Remote Direct Memory Access (RDMA) network is complex. The number of 4K card cluster network devices is more than 150, and the number of network links is more than 10K. The number of 16K card cluster network devices is more than 1000, and the number of network links is more than 50K. In such a complex network, it is impossible to achieve absolute network load balancing through planning, and local load imbalance and link congestion are almost inevitable. At present, when link congestion occurs, the traditional Data Center Quantized Congestion Notification (DCQCN) method is mainly used for congestion control. After the destination node side discovers packet loss, a congestion notification packet (CNP) is sent. After the source node receives the CNP, it performs DCQCN speed reduction, and the DCQCN bandwidth acceleration ratio is slow after congestion recovery, and the bandwidth utilization is low.
[0160] Based on this, the embodiments of the present disclosure provide a congestion control method, related devices and media. The congestion control method provided by the embodiments of the present disclosure can modify the forwarding path of the target packet when the target path is congested, so that the congestion of the target path does not affect the transmission of the target packet, and improves the congestion control efficiency and bandwidth utilization.
[0161] System architecture and scenario applied by the embodiments of the present disclosure
[0162] Figure 1 It is a system architecture diagram applied by the congestion control method according to the embodiments of the present disclosure. It includes a server 110 and a switch 120.
[0163] The server 110 refers to a computer system capable of providing a message sending service or a message receiving service. The server 110 can be a high-performance computer in a network platform, a cluster of multiple high-performance computers, a portion (for example, a virtual machine) of a high-performance computer, a combination of portions (for example, virtual machines) of multiple high-performance computers, and the like. In addition, the server 110 includes a message sending server and a message receiving server, which can communicate with the switch 120 through wired or wireless means, exchange data, and thus realize communication between the message sending server and the message receiving server.
[0164] The switch 120 can provide exclusive electrical signal paths for any accessed server 110. When the switch 120 receives message data transmitted by the server 110, the path information carried by the message data will be checked, and the message data will be forwarded according to the path information carried by the message data. The switch 120 can be an Ethernet switch, and the switch 120 has a high-bandwidth backplane bus and an internal switching matrix, and can realize data transmission between multiple pairs of ports at the same time.
[0165] The congestion control method of the embodiment of the present disclosure can be applied to the training of a model. A large number of training samples and labeled training data corresponding to the training samples are required as inputs of the model when training the model, so different servers need to forward data through the switch and receive data sent by other servers. However, due to the processing data capability of the switch and the processing data capability of the server, network congestion may occur when the server forwards data.
[0166] Referring to Figure 2 , Figure 2 is a schematic diagram of an application scenario of the congestion control method according to the embodiment of the present disclosure, Figure 2 may be represented as a network topology diagram of a data center. Figure 2 H0-H15 in can represent multiple servers in a computer room, and each server stores a large amount of data that can be used for model training, and the server is used to store and send data. For example, the server H0 stores data A for model training, and the server H1 stores data B for model training. LA0-LA31, LC0-LC7 can represent multiple switches in a computer room, and the switch is used to forward data.
[0167] Figure 2The data center uses five layers of switches: the first access layer, the first aggregation layer, the core layer, the second aggregation layer, and the second access layer. The switches in the first access layer include LA16-LA31, the switches in the first aggregation layer include LA0-LA15, and the switches in the core layer include LC0-LC7. Servers connect to the switches in the first and second access layers. It's important to note that in mainstream data center networks, to increase communication bandwidth and connection reliability between servers, the sending server typically uses two links to connect to two switches in the first access layer (i.e., each of the server's two network ports is connected to one of the two switches). Similarly, the receiving server typically uses two links to connect to two switches in the second access layer. For example, switch H0 uses two links to connect to switches LA16 and LA17 in the first access layer.
[0168] Furthermore, this section combines the processes of the server sending and receiving message data to... Figure 2 The network architecture of the data center will be explained: Figure 2 In this architecture, the sending servers include H0-H7, and the receiving servers include H9-H15. To send data packets to the receiving servers, the sending servers first send the data packets to the first access layer switch. The first access layer switch then forwards the data packets to the first aggregation layer switch, which in turn forwards them to the core layer switch. After receiving the data packets forwarded by the first aggregation layer switch, the core layer switch forwards them to the second aggregation layer switch, which then forwards them to the second access layer switch. Finally, the second access layer switch forwards the received data packets to the receiving servers.
[0169] For example, if the sending server H0 needs to send message data to the receiving server H8, there are multiple paths. Here, we describe the process of server H0 sending message data A to server H8 along one of these paths: Server H0 first sends message data A to the first access layer switch LA16. Switch LA16 forwards message data A to the first aggregation layer switch LA1, which then forwards it to the core layer switch LC2. Switch LC2 then forwards message data A to the second aggregation layer switch LA9, which in turn forwards it to the second access layer switch LA24. Finally, switch LA24 forwards message data A to the receiving server H8. Server H8 sends an acknowledgment message to the sending server H0, confirming that server H8 has received message data A.
[0170] It should be understood that the above only illustrates the description of part of the application scenarios of the present disclosure. The business scenarios to which the present disclosure can be applied can include, but are not limited to, the specific embodiments mentioned above.
[0171] General description of embodiments of the present disclosure
[0172] It should be emphasized that the embodiments of the present disclosure can be applied to various application scenarios, such as model training, distributed application, high-speed cluster, cloud storage, etc. In the related art, the network networking of the remote direct memory access network is complex, which inevitably leads to link congestion in network networking. In the traditional congestion control method, the source node will reduce the frequency of sending messages after confirming the link congestion, which reduces the bandwidth utilization. Some embodiments of the present disclosure provide a congestion control method, related device and medium, which can modify the transmission path of the message after confirming the link congestion, and resend the message through the modified transmission path, thereby improving the congestion control efficiency and bandwidth utilization.
[0173] Congestion control is a global process. In a data center, the congestion control method can refer to the cooperative action of the server of the sending end, the server of the receiving end, and the switch forwarding message data to adjust the flow of messages in the data center, so as to achieve the effect of relieving congestion and relieving congestion, so that the network of the data center can withstand the current network load.
[0174] The congestion control method of the embodiments of the present disclosure is executed in the servers 110 of the source node and the destination node. The server 110 of the source node transmits the message from the object terminal 110 to the server 110 of the destination node. After the transmission is completed, the received message is transmitted to the object terminal 110 through the gateway 130 and the Internet 120 by the destination node, and the object terminal 110 displays the information corresponding to the message to the target object 。
[0175] As shown in Figure 3 According to one embodiment of the present disclosure, the congestion control method comprises:
[0176] Step 310, obtaining the switching architecture between the source node and the destination node, the switching architecture comprising a plurality of switching levels;
[0177] Step 320, obtaining a candidate path table, the candidate path table comprising a plurality of candidate paths between the source node and the destination node, wherein each candidate path passes through a switching node at each switching level of the switching architecture;
[0178] Step 330, sending the target message through a target path in the plurality of candidate paths, and determining that the target path is congested;
[0179] Step 340, obtaining the bandwidth usage of each switching node in each other candidate path except the target path in the candidate path table;
[0180] Step 350, determining a replacement path in each other candidate path based on the bandwidth usage, and encoding the next hop switching node of each switching level in the replacement path into the first extension field in the target packet;
[0181] Step 360, retransmitting the target packet so that each switching node in each switching level routes to the next hop switching node encoded in the first extension field.
[0182] The steps 310-360 are described briefly as follows.
[0183] In step 310, obtaining a switching architecture between a source node and a destination node, the switching architecture including a plurality of switching levels.
[0184] For example, the source node refers to a server for sending a packet in a packet transmission process, and the destination node refers to a server for receiving a packet in the packet transmission process. Further, defining the server for sending a packet and the server for receiving a packet as a "source node" and a "destination node" respectively is only for more clearly explaining the embodiments of the present disclosure, and in actual cases, the server for sending a packet can also be used to receive a packet transmitted by other servers, and similarly, the server for receiving a packet can also be used to send a packet to other servers.
[0185] The switching architecture includes an input port, an output port, and a plurality of switching levels connecting the input and output ports, wherein the input port refers to a port accessed by the source node, and the output port refers to a port accessed by the destination node. The switching architecture is used to solve the problem of forwarding efficiency between a plurality of servers, and can provide at least one path for forwarding a packet for different servers. The switching architecture shows the relationship between the source node and the destination node, and the data center of the embodiments of the present disclosure is composed of the source node, the switching architecture, and the destination node.
[0186] Referring to Figure 2The switching architecture includes multiple switching levels, and the multiple switching levels include: a first access layer and a first aggregation layer in a first source container where the source node is located; a core layer including multiple core planes corresponding to multiple source containers, the multiple source containers including the first source container and a second source container; a second aggregation layer and a second access layer in a second source container where the destination node is located; wherein the switching nodes of the first access layer are connected to the multiple switching nodes of the first aggregation layer; the switching nodes of the first aggregation layer are connected to the multiple switching nodes in the first core plane corresponding to the first source container, and the multiple core planes include the first core plane; the switching nodes in the first core plane are connected to one switching node in the second aggregation layer; and the switching nodes in the second aggregation layer are connected to two switching nodes in the second access layer.
[0187] Exemplarily, the switching nodes in the embodiments of the present disclosure are used to perform packet forwarding operations, and the switching nodes can be switches or other devices that can provide packet forwarding services.
[0188] Exemplarily, Figure 2 The source nodes in the switching architecture include H0-H15, the first access layer includes switching nodes LA16-LA23, the first aggregation layer includes switching nodes LA0-LA7, the core layer includes switching nodes LC0-LC7, the second aggregation layer includes switching nodes LA8-LA15, and the second access layer includes switching nodes LA24-LA31. The switching nodes of the first access layer and the second access layer are respectively used to physically connect the servers of the source nodes and the servers of the destination nodes. The switching nodes of the first aggregation layer and the second aggregation layer are respectively connected to the switching nodes of the first access layer and the second access layer, and the first aggregation layer and the second aggregation layer can provide other services such as firewall, intrusion detection, network analysis, etc. while providing forwarding services. The core layer is an important forwarding node in the data center, and the core layer can provide high-speed forwarding for the data forwarded by the first aggregation layer and transmit the data forwarded by the first aggregation layer to the second aggregation layer.
[0189] In the switching architecture, the source node of the sending end can be connected to two switching nodes of the first access layer, two source nodes and the two switching nodes of the first access layer connected to the source node form a rack, and the switching nodes of the first access layer are also the first hop of the packets sent by the source node. For example: Figure 2 The source node H0, the source node H1 and the switching nodes LA16, LA17 of the first access layer in the switching architecture form a first rack, and the switching nodes LA16, LA17 can be the first hop of the packets sent by the source nodes H0, H1. Similarly, two destination nodes and two switching nodes of the second access layer connected to the destination nodes form a rack. Further, four switching nodes of the first access layer and the switching nodes connected to the switching nodes of the first aggregation layer and the source nodes connected to the switching nodes form a first source container. For example:Figure 2 The first source container in the first access layer includes source nodes H0, H1, H2, and H3, and the switching nodes LA16, LA17, LA18, and LA19 of the first access layer, and the switching nodes LA0, LA1, LA2, and LA3 of the first aggregation layer. Similarly, the four switching nodes of the second access layer and the switching nodes of the second aggregation layer connected to the switching nodes and the switching nodes connected to the destination node group form a second source container.
[0190] For example, the switching level refers to a module composed of multiple switching nodes, and the switching architecture refers to a structure composed of all switching levels in the data center. Figure 2 In the first access layer, the switching level can be the first access layer, the first aggregation layer, or the core layer. The switching architecture refers to a structure composed of all switching levels in the data center, for example, the switching architecture of the data center in FIG. 1. Figure 2 The switching architecture includes the first access layer, the first aggregation layer, the core layer, the second aggregation layer, and the second access layer.
[0191] Further, the acquisition process in the acquisition of the switching architecture between the source node and the destination node is described. The embodiments of the present disclosure can acquire the switching architecture between the source node and the destination node by detecting the transmission path of the message data in the network, or based on traffic analysis, or based on a routing protocol.
[0192] In step 320, a candidate path table is acquired, and the candidate path table includes multiple candidate paths between the source node and the destination node, wherein the candidate path passes through a switching node at each switching level of the switching architecture.
[0193] The candidate path refers to all paths between the source node and the destination node, that is, the transmission path of the message sent by the server of the source node to the server of the destination node. Further, a candidate path can include multiple links, which can be a link between the server of the source node and the switching node, a link between the switching nodes, or a link between the switching node and the server of the destination node.
[0194] The candidate path table refers to a table recording all candidate paths between the source node and the destination node.
[0195] For example, referring to FIG. 1, the candidate path table includes the candidate paths H0-LA16-LA0, H0-LA16-LA1, H0-LA16-LA2, H0-LA16-LA3, H0-LA17-LA0, H0-LA17-LA1, H0-LA17-LA2, H0-LA17-LA3, H1-LA16-LA0, H1-LA16-LA1, H1-LA16-LA2, H1-LA16-LA3, H1-LA17-LA0, H1-LA17-LA1, H1-LA17-LA2, H1-LA17-LA3, H2-LA16-LA0, H2-LA16-LA1, H2-LA16-LA2, H2-LA16-LA3, H2-LA17-LA0, H2-LA17-LA1, H2-LA17-LA2, H2-LA17-LA3, H3-LA16-LA0, H3-LA16-LA1, H3-LA16-LA2, H3-LA16-LA3, H3-LA17-LA0, H3-LA17-LA1, H3-LA17-LA2, and H3-LA17-LA3. Figure 4For example, the candidate path table records multiple candidate paths from the source node A to the destination node C. The first candidate path has the first hop LA1, the second hop LC1, the third hop LA9, and the fourth hop the destination node C. Thus, the first candidate path is: the source node A-LA1-LC1-LA9-destination node C. Similarly, the second candidate path has the first hop LA3, the second hop LC1, the third hop LA7, and the fourth hop the destination node C. Thus, the second candidate path is: the source node A-LA3-LC1-LA7-destination node C.
[0196] In step 330, the target packet is transmitted through the target path in the multiple candidate paths, and it is determined whether the target path is congested.
[0197] For example, the candidate path table includes the target path, which is the forwarding path followed by the target packet during transmission. The target path congestion means that the target packet sent by the source node is congested when it follows the target path for transmission, so that the destination node fails to receive the target packet sent by the source node in time, or the destination node cannot receive the target packet sent by the source node. During the transmission of the packet, the congestion detection device provided at the source node can be used to detect whether the target path is congested.
[0198] For example, each server in the data center is provided with a congestion detection device. When the server sends a target packet as a source node, the congestion detection device on the server side will detect in real time whether the target path is congested. There are many ways for the congestion detection device to determine the target path congestion. The method of "determining the target path congestion" will be described in detail below.
[0199] Referring to Figure 4 The candidate path table includes multiple candidate paths, and the target path can be selected from the candidate paths by a random selection method for transmission. For example, the starting point of the target path determined from the candidate path table is the source node A, the first hop is LA1, the second hop is LC1, the third hop is LA9, and the fourth hop is the destination node C. During the transmission of the target packet, the source node A transmits the packet data to the switching node LA1, the switching node LA1 forwards the packet data to the switching node LC1, the switching node LC1 forwards the received packet data to the switching node LA9, and the switching node LA9 forwards the packet data to the destination node C.
[0200] In step 340, for each other candidate path in the candidate path table except the target path, the bandwidth usage of the switching nodes at each switching level in the other candidate path is obtained.
[0201] The bandwidth usage rate is the proportion of the actually used bandwidth to the total bandwidth in a time period, and is usually expressed in percentage. The formula for calculating the bandwidth usage rate is: bandwidth usage rate = actually used bandwidth / total bandwidth*100%, wherein the actually used bandwidth is the amount of data actually transmitted in a time period, and the total bandwidth is the total amount of bandwidth possessed by the network. In the process of packet transmission, the bandwidth usage rate can be obtained by a network detection tool, a network performance test tool, or a traffic analysis tool.
[0202] In step 350, a replacement path is determined from the other candidate paths based on the bandwidth usage rate, and the next hop switching nodes of each switching level in the replacement path are encoded into the first extension field in the target packet.
[0203] For example, referring to Figure 5 , the frame structure of the target packet includes a target packet header, a first extension field, and a target packet payload. The conventional packet only includes the target packet header and the target packet payload. The target packet of the embodiment of the present disclosure adds the first extension field to the conventional packet, so that the target packet can rely on the first extension field to guide the forwarding path of the target packet when forwarding, and the switching nodes can perform forwarding operations according to the target packet.
[0204] It can be understood that the target path of the target packet is stored in the first extension field, and the target path is ordered in segments. Referring to Figure 4 and Figure 5 , for example: the source node A needs to transmit a target packet to the source node C, the first hop of the target path is LA1, the second hop is LC1, the third hop is LA9, and the fourth hop is the destination node C. In this case, the first extension field includes the first hop LA1, the second hop LC1, the third hop LA9, and the fourth hop destination node C.
[0205] In the embodiment of the present disclosure, the replacement path refers to any candidate path in the candidate path table except the target path. Referring to Figure 4 , if the first hop of the target path is LA1, the second hop is LC1, the third hop is LA9, and the fourth hop is the destination node C, the replacement path can be set to the first hop LA3, the second hop LC1, the third hop LA7, and the fourth hop destination node C. The embodiment of the present disclosure can modify the first extension field of the target packet according to the replacement path to modify the forwarding path of the target packet.
[0206] In step 360, the target packet is retransmitted so that the switching nodes in each switching level route to the next hop switching nodes encoded in the first extension field.
[0207] According to an embodiment of the present disclosure, when the target path is congested, the destination node can not receive the target packet sent by the source node, which will result in the server of the destination node missing part of the training data when training the model. Therefore, after the next hop switching nodes of each switching level in the replacement path are encoded into the first extension field of the target packet, the source node also needs to resend the target packet once again so that the destination node receives the target packet sent by the source node.
[0208] For example, the routing of the switching node in each switching level to the next hop switching node encoded in the first extension field is described as follows: Figure 6 According to the target path, the source node H0 sends the target packet to the destination node H4, and the target path is the candidate path p1 in the candidate path table, the first hop of the candidate path p1 is LA8, the second hop is LA1, the third hop is LC2, the fourth hop is LA5, the fifth hop is LA12, and the sixth hop is H4. Correspondingly, the first extension field of the target packet contains the first hop LA8, the second hop LA1, the third hop LC2, the fourth hop LA5, the fifth hop LA12, and the sixth hop H4. In the case of congestion of the candidate path p1, the replacement path is determined to be the candidate path p2 in the candidate path table, the first hop of the candidate path p2 is LA8, the second hop is LA0, the third hop is LC0, the fourth hop is LA4, the fifth hop is LA13, and the sixth hop is H4. After determining that the replacement path is the candidate path p2, the next hop switching nodes of each switching level in the candidate path p2 need to be encoded into the first extension field of the target packet. The first extension field of the modified target packet contains the first hop LA8, the second hop LA0, the third hop LC0, the fourth hop LA4, the fifth hop LA13, and the sixth hop H4. Finally, the source node H0 resends the target packet to the destination node H4. Further, the source node H0 first sends the target packet to the switching node LA8 of the first access layer according to the first hop encoded in the first extension field, sends the target packet to the switching node LA0 of the first aggregation layer according to the second hop encoded in the first extension field by the switching node LA8, and then sends the target packet to the switching node LC0 of the core layer according to the third hop encoded in the first extension field by the switching node LA0. Then, the switching node LC0 sends the target packet to the switching node LA4 of the second aggregation layer according to the fourth hop encoded in the first extension field, and then sends the target packet to the switching node LA13 of the second access layer according to the fifth hop encoded in the first extension field by the switching node LA4. Finally, the switching node LA13 sends the target packet to the destination node H4 according to the sixth hop encoded in the first extension field, so that the destination node H4 successfully receives the target packet.
[0209] The embodiments of steps 310 to 360 maintain a candidate path table in the source node. Once the target path is congested, for each other candidate path in the candidate path table except the target path, the bandwidth usage of the switching nodes in each switching level of the other candidate path is obtained, and based on the bandwidth usage, a replacement path is determined in each other candidate path, and the next-hop switching node of each switching level in the replacement path is encoded into the first extension field in the target packet, and then the target packet is retransmitted. In this way, the switching nodes in each switching level can route to the next-hop switching node encoded in the first extension field. The candidate path with low bandwidth usage has relatively more unused bandwidth, and therefore, selecting the replacement path based on the bandwidth usage is conducive to quickly eliminating congestion and improving congestion control efficiency. The embodiments of the present disclosure make full use of the extension information carrying capability of the first extension field in the target packet, encode the next-hop switching node of each switching level in the determined replacement path into the field, so that the switching nodes can route according to the next-hop switching node encoded in the field, and the congestion control efficiency and bandwidth utilization are improved.
[0210] The above is a general description of steps 310 to 360. Since steps 310 and 360 have been described in sufficient detail above, only the specific implementation process of steps 320 to 350 will be described in detail below.
[0211] Detailed description of step 320
[0212] In step 320, a candidate path table is obtained, and the candidate path table includes multiple candidate paths between the source node and the destination node, wherein the candidate paths pass through a switching node at each switching level of the switching architecture.
[0213] The step 320 is described in detail as follows:
[0214] In step 320, according to the embodiments of the present disclosure, the switching architecture and the candidate path table between the source node and the destination node can be obtained by analyzing the network traffic in the data center. Specifically, the communication relationship and the topology structure between the source node and the destination node can be inferred by detecting the flow direction of the packets sent by the source node and the port information of the packets sent by the source node in the data center, and then multiple candidate paths between the source node and the destination node are obtained.
[0215] Further, each candidate path in the candidate path table is a single-direction path, i.e., the candidate path only passes through one switching node at each switching level of the switching architecture, and does not pass through multiple switching nodes at one switching level in one transmission process. The advantage of such a setting is that when a certain link or a certain switching node in the switching architecture fails, the impact on the message transmission can be reduced. Because when the candidate path passes through multiple switching nodes at each switching level of the switching architecture, not only will the link coincidence rate of multiple candidate paths increase, but the data processed by each switching node at the switching level will also increase. In this case, the probability of failure or congestion of a certain link or a certain switching node in the switching architecture will also increase. Moreover, once a certain link or a certain switching node in the switching architecture fails or is congested, multiple candidate paths will be affected. However, by making the candidate path pass through only one switching node at each switching level of the switching architecture, the probability of failure or congestion of a certain link or a certain switching node in the switching architecture can be effectively reduced.
[0216] With reference to Figure 6 For example, the switching architecture between the source node and the destination node includes a first access layer, a first aggregation layer, a core layer, a second aggregation layer, and a second access layer, and each of the first access layer, the first aggregation layer, the core layer, the second aggregation layer, and the second access layer is a switching level. Figure 6 There are multiple candidate paths between the source node H0 and the destination node H4 in the switching architecture, and the candidate path p4 is taken as an example for description: the first hop of the candidate path p4 is LA9, the second hop is LA3, the third hop is LC6, the fourth hop is LA7, the fifth hop is LA12, and the sixth hop is H4. Assuming that the source node H0 currently transmits the target message according to the candidate path p4, the candidate path p4 passes through the switching node LA9 at the first access layer, the candidate path p4 passes through the switching node LA3 at the first aggregation layer, the candidate path p4 passes through the switching node LC6 at the core layer, the candidate path p4 passes through the switching node LA7 at the second aggregation layer, and the candidate path p4 passes through the switching node LA12 at the second access layer.
[0217] The step 320 reduces the link coincidence rate of different candidate paths by making the candidate path pass through only one switching node at each switching level of the switching architecture, and reduces the data processed by each switching node at the switching level. Moreover, in the case where a certain link or a certain switching node in the switching architecture fails or is congested, because the link coincidence rate of different candidate paths is relatively low, the candidate paths affected by the failure or congestion are also relatively few. Therefore, the embodiments of the present disclosure can also effectively reduce the impact of failure and congestion on message transmission.
[0218] Detailed description of step 330
[0219] Step 330, sending the target message through a target path in the plurality of candidate paths, and determining that the target path is congested;
[0220] In an embodiment, referring to Figure 7 , step 330 comprises:
[0221] Step 710, receiving an out-of-order notification message of the destination node, the out-of-order notification message being sent by the destination node in a case that a message sequence number of a message received by the destination node does not match a receiving time slot number of the message;
[0222] Step 720, determining a first number of out-of-order notification messages received in a first time duration;
[0223] Step 730, determining that the target path is congested based on a comparison of the first number and a first threshold.
[0224] The steps 710 to 730 are described in detail as follows:
[0225] In step 710, the out-of-order notification message of the destination node indicates that a message sequence number of a message received by the destination node does not match a receiving time slot number of the message. It can be understood that the target message sent by the source node carries a message sequence number and a receiving time slot number, the receiving time slot number indicating a time at which the destination node should receive the target message under normal circumstances. Correspondingly, the destination node records a current time when receiving the target message, and compares the receiving time slot number of the target message with the current time, so as to determine whether the target path is congested in the process of transmission of the target message. Further, when the receiving time slot number of the target message matches the time at which the destination node receives the target message, the destination node sends a message to the source node to confirm that the target message is received; when the receiving time slot number of the target message does not match the time at which the destination node receives the target message, the destination node sends the out-of-order notification message to the source node.
[0226] For example, when the number of target messages received by the switching node in a preset time period exceeds the number of messages that can be processed by the switching node, or the link of the forwarding path from the source node to the destination node is faulty, or the number of target messages received by the destination node in a preset time period exceeds the number of messages that can be processed by the destination node, the source node can receive the out-of-order notification message.
[0227] Referring to Figure 8, assuming that the source node can send five target messages to the destination node in the first clock cycle, the message serial numbers corresponding to the five target messages sent by the source node to the destination node in the first clock cycle are 1, 2, 3, 4, and 5 respectively, and correspondingly, the receiving time slot numbers corresponding to the five target messages are the first time period, the second time period, the third time period, the fourth time period, and the fifth time period respectively. If the destination node receives the No. 1 target message in the first time period, receives the No. 2 target message in the second time period, receives the No. 3 target message in the third time period, receives the No. 4 target message in the fourth time period, and receives the No. 5 target message in the fifth time period, the receiving time slot number of the target message matches the time at which the destination node receives the target message, and the destination node will send a message to the source node to confirm that the target message is received. If the destination node receives the No. 1 target message in the first time period, receives the No. 2 target message in the second time period, receives the No. 4 target message in the third time period, receives the No. 5 target message in the fourth time period, and receives the No. 3 target message in the fifth time period, the receiving time slot number of the target message does not match the time at which the destination node receives the target message, and the destination node will send an out-of-order notification message to the source node.
[0228] In step 720, the first duration refers to a time period set in advance, and the first duration can be 1 second, 0.1 second, or 0.01 second. The specific first duration can be determined according to the size of the target message and the frequency at which the source node sends the target message. The first number refers to the number of out-of-order notification messages sent by the destination node and received by the source node in the first duration.
[0229] It can be understood that the first duration is set only to more clearly count the number of out-of-order notification messages received by the source node, facilitating subsequent determination of whether the target path is congested.
[0230] The specific method of “determining the first number of out-of-order notification messages received in the first duration” will be described in detail below.
[0231] In step 730, the first threshold value can be a critical value of the out-of-order notification messages received by the source node under normal circumstances (without the occurrence of target path congestion), or the first threshold value can be a threshold value of the received out-of-order notification messages set in advance. The first threshold value can be 5 or 15. The specific first threshold value can be determined according to the size of the target message and the frequency at which the source node sends the target message. The first threshold value is set only to more clearly count the number of out-of-order notification messages received by the source node, facilitating subsequent determination of whether the target path is congested.
[0232] The specific method of “determining that the target path is congested based on the comparison between the first number and the first threshold value” will be described in detail below.
[0233] The embodiments of steps 710 to 730 can determine whether the message sequence number of the target message received by the destination node matches the receiving time slot number through the first number of the out-of-order notification messages received within the first time length, and further determine whether the target path is congested, thereby improving the detection efficiency of the congestion control and facilitating the subsequent control of the congestion.
[0234] The above is the general description of steps 710 to 730, and the specific implementation processes of step 720 and step 730 will be described in detail below.
[0235] In an embodiment, referring to Figure 9 , step 720 includes:
[0236] Step 910, initializing the first timer to 0 and starting timing;
[0237] Step 920, if the first timer reaches the first time length, determining the number of the received out-of-order notification messages as the first number.
[0238] The steps 910 and 920 will be described in detail as follows:
[0239] In step 910, the first timer is used to measure and record the time in the process of sending the target message from the source node to the destination node, so as to facilitate the subsequent determination of whether the target path is congested according to the time counted by the first timer. It can be understood that initializing the first timer to 0 can be performed when the data center starts to perform the transmission operation, or can be performed after the congestion control operation is performed and the source node starts to receive the first out-of-order notification message.
[0240] In step 920, for example, the source node side starts to count the number of the out-of-order notification messages sent by the destination node after the first timer starts timing, and when the first timer reaches the first time length, the number of the out-of-order notification messages received within the first time length is determined as the first number. For example, the first time length is 5 seconds, and the source node side starts to count the number of the out-of-order notification messages sent by the destination node after the first timer starts timing. When the first timer reaches 5 seconds, the number of the out-of-order notification messages sent by the destination node counted by the source node side is 3, and the first number is 3 at this time.
[0241] The embodiments of steps 910 to 920 determine the number of the received out-of-order notification messages as the first number when the first timer reaches the first time length, which facilitates the source node side to detect the number of the out-of-order notification messages sent by the destination node in real time, and thereby more accurately determines whether the target path is congested.
[0242] In an embodiment, referring to Figure 10 , step 730 includes:
[0243] Step 1010, if the first number does not reach the first threshold, resetting the first timer and clearing the number of received out-of-order notification messages;
[0244] Step 1020, if the first number reaches the first threshold, determining that the target path is congested.
[0245] The steps 1010 and 1020 are described in detail as follows:
[0246] In step 1010, if the first number does not reach the first threshold, it indicates that the current target path is not congested, and at this time, the first timer and the number of received out-of-order notification messages are reset, so as to facilitate the source node to count the number of received out-of-order notification messages in the subsequent transmission of target messages.
[0247] For example, the first duration is 2 seconds, and the source node starts to count the number of out-of-order notification messages sent by the destination node after the first timer starts timing. When the first timer reaches 2 seconds, the number of out-of-order notification messages sent by the destination node counted by the source node is 5, and at this time, the first number is 5. If the first threshold is 8, the current first number is less than the first threshold, which indicates that the current target path is not congested. At this time, the first timer is reset to zero, and the number of received out-of-order notification messages (the current number of received out-of-order notification messages is 5) is also reset to zero.
[0248] In step 1020, when the first number reaches the first threshold, it indicates that the number of currently received out-of-order notification messages exceeds the critical value of the out-of-order notification messages received by the source node under normal circumstances, and at this time, the target path is congested. For example, the first duration is 2 seconds, and the source node starts to count the number of out-of-order notification messages sent by the destination node after the first timer starts timing. When the first timer reaches 2 seconds, the number of out-of-order notification messages sent by the destination node counted by the source node is 5, and at this time, the first number is 5. If the first threshold is 3, the current first number is greater than the first threshold, and it is determined that the target path is congested, and the congestion control operation is started.
[0249] The embodiments of the above steps 1010 to 1020 can determine whether the target path is congested in real time by comparing the first number with the first threshold, thereby improving the efficiency of congestion detection. Meanwhile, the embodiments of the present disclosure reset the first timer and the number of received out-of-order notification messages when the first number does not reach the first threshold, which facilitates the source node to count the number of received out-of-order notification messages in the subsequent transmission of target messages.
[0250] In an embodiment, after step 730, further comprising: sending a congestion message indicating the congestion of the target path to a total controller, so as to update the candidate path table of each source node by the total controller according to the congestion message, wherein the total controller is located outside each source node.
[0251] According to an embodiment of the present disclosure, in a data center, a total controller is located outside each source node and each destination node, and the total controller is connected with the source nodes and the destination nodes. Since there are multiple source nodes and multiple destination nodes in the data center, there may be congestion in the target path of the target message sent by the source nodes at the current time, and the target path of the target message needs to be modified. However, in this case, each source node only stores its own congestion information and does not know the congestion information of other source nodes in the data center, which brings great inconvenience to congestion control. Therefore, in order to realize global management of the data center, the source node needs to send a congestion message of the target path to the total controller after determining the congestion of the target path, so that the total controller updates the candidate path table of each source node according to the congestion message, and realizes global control of the data center.
[0252] Further, the congestion control device on the source node side can also send the modified target path to the total controller after modifying the target path of the target message, so as to facilitate the total controller to obtain the number of target messages processed by each switching node at the current time.
[0253] For example, referring to Figure 8 , the target path of the target message sent by the source node to the destination node is candidate path 1, at this time, the candidate path 1 in the selected path table is in a use state, and the candidate path 2 and the candidate path 3 in the candidate path table are all in a standby state. However, during the transmission of the target message, the source node determines that the candidate path 1 is congested, at this time, the source node side modifies the target path of the target message from the candidate path 1 to the candidate path 2, and sends a congestion message indicating the congestion of the candidate path 1 to the total controller, so that the total controller modifies the state of the candidate path 1 in the candidate path table corresponding to the source node to a congestion state according to the congestion message, and modifies the path 2 in the candidate path table to a use state.
[0254] In the above embodiment, after determining the congestion of the target path, the source node can also send a congestion message indicating the congestion of the target path to the total controller, so that the total controller updates the candidate path table of each source node according to the congestion message. Through this operation, the embodiment of the present disclosure realizes global control of the source nodes, switching nodes and destination nodes in the data center, and improves the efficiency of congestion control.
[0255] The above steps describe the first method of determining the congestion of the target path, and the second method of determining the congestion of the target path is described as follows:
[0256] Step 330, sending the target packet through a target path in the plurality of candidate paths, and determining congestion of the target path;
[0257] In an embodiment, referring to Figure 11 , step 330 further comprises:
[0258] Step 1110, receiving an Ethernet direct memory access response from the destination node;
[0259] Step 1120, determining a round trip time between sending the target packet and receiving the Ethernet direct memory access response;
[0260] Step 1130, determining congestion of the target path based on a comparison of the round trip time and a second threshold value.
[0261] The steps 1110 to 1130 are described in detail as follows:
[0262] In step 1110, the received Ethernet direct memory access response from the destination node indicates that the destination node has received the target packet sent by the source node. For example, the source node sends the target packet to the destination node through the target path, and the destination node sends the Ethernet direct memory access response to the source node through the candidate path 1 after receiving the target packet.
[0263] Referring to Figure 12 , according to an embodiment of the present disclosure, the source node sends the target packet to the destination node through the candidate path 1, and the destination node sends the Ethernet direct memory access response to the source node through the candidate path 1 after receiving the target packet, so that the source node receives the Ethernet direct memory access response.
[0264] In step 1120, for example, the round trip time refers to the time used by the target packet in the transmission process, and the round trip time does not include the time for the destination node to process the target packet. Further, the embodiment of the present disclosure can determine whether the target path is congested by the round trip time between the time when the source node sends the target packet and the time when the source node receives the Ethernet direct memory access response sent by the destination node.
[0265] The specific method of "determining the round trip time between sending the target packet and receiving the Ethernet direct memory access response" is described in detail as follows.
[0266] In step 1130, the second threshold value can be a boundary value of a normal time used for sending the target message from the source node to receiving the Ethernet direct memory access response at the source node under normal circumstances, and the second threshold value can be a pre-set threshold value of the time used for sending the target message from the source node to receiving the Ethernet direct memory access response at the source node. The second threshold value can be 1 second or 5 seconds, and the specific second threshold value can be determined according to the size of the target message and the frequency of sending the target message by the source node. The second threshold value is set only to more clearly determine whether the target path is congested.
[0267] The specific method of "determining whether the target path is congested based on the comparison between the round-trip time and the second threshold value" will be described in detail below.
[0268] The embodiments of steps 1110 to 1130 can directly determine whether the target path is congested through the round-trip time between sending the target message from the source node and receiving the Ethernet direct memory access response at the source node, without the need for additional operations, which is efficient in detection and facilitates subsequent control of congestion.
[0269] The above is a general description of steps 1110 to 1130, and the specific implementation process of step 1120 and step 1130 will be described in detail below.
[0270] In an embodiment, referring to Figure 13 , step 1120 comprises:
[0271] Step 1310, reading the round-trip time from the second timer, wherein the second timer is initialized to 0 and starts timing when the target message is sent.
[0272] Step 1310 will be described in detail below:
[0273] In step 1310, the second timer is used to measure and record the time in real time during the process of sending the target message from the source node to the destination node, so as to facilitate subsequent determination of whether the target path is congested according to the time recorded by the second timer. It can be understood that initializing the second timer to 0 can be performed when the data center starts to perform the transmission operation, or can be performed when the source node sends the target message to the destination node.
[0274] Referring to Figure 12 , for example, when the source node sends the target message to the destination node through the candidate path 1, the second timer records the current time as the first time ts1. Similarly, when the source node receives the Ethernet direct memory access response sent by the destination node through the candidate path 1, the second timer records the current time as the fourth time ts4. The round-trip time can be the difference between the fourth time ts4 and the first time ts1.
[0275] The embodiment of step 1310 can determine the round-trip time based on the time at which the second timer reads the time at which the source node sends the target message to the destination node and the time at which the source node receives the Ethernet direct memory access response sent by the destination node, so as to facilitate the source node to more accurately measure the time used by the target message in the target path transmission, and improve the accuracy of congestion judgment.
[0276] In an embodiment, referring to Figure 14 , step 1130 comprises:
[0277] Step 1410, obtaining the processing time of the destination node in processing the target message;
[0278] Step 1420, determining the time difference of the round-trip time minus the processing time;
[0279] Step 1430, if the time difference does not reach the second threshold value, resetting the second timer to zero;
[0280] Step 1440, if the time difference reaches the second threshold value, determining that the target path is congested.
[0281] The steps 1410 to 1440 are described in detail as follows:
[0282] In step 1410, after receiving the target message sent by the source node, the destination node first processes the target message and then sends the Ethernet direct memory access response to the source node. Therefore, the processing time of the destination node in processing the target message can be the difference between the time at which the destination node sends the Ethernet direct memory access response and the time at which the destination node receives the target message.
[0283] Referring to Figure 12 , the source node sends the target message to the destination node through the candidate path 1, and the destination node receives the target message sent by the source node, and the second timer records the current time as the second time ts2. After processing the target message, the destination node sends the Ethernet direct memory access response to the source node, and the second timer records the current time as the third time ts3. The processing time can be the difference between the third time ts3 and the second time ts2.
[0284] In step 1420, after the round-trip time and the processing time are calculated, the round-trip delay can be determined by calculating the time difference of the round-trip time minus the processing time. The round-trip delay is usually determined by three parts: the propagation time of the multiple links included in the target path, the time of the destination node in processing the target message, and the cache time and queue time of the switching nodes in the target path. Under normal circumstances, the round-trip delay is relatively fixed, and in the case of target path congestion, the round-trip delay will fluctuate.
[0285] For example, referring to Figure 12 , the second timer records the current time as the first time ts1 when the source node sends the target message to the destination node through the candidate path 1. The second timer records the current time as the second time ts2 when the destination node receives the target message sent by the source node. The destination node sends the Ethernet direct memory access response to the source node after processing the target message, and the second timer records the current time as the third time ts3. The second timer records the current time as the fourth time ts4 when the source node receives the Ethernet direct memory access response sent by the destination node through the candidate path 1. The round-trip time can be the difference between the fourth time ts4 and the first time ts1. The processing time can be the difference between the third time ts3 and the second time ts2. Then the round-trip delay can be the difference between the round-trip time (ts4-ts1) and the processing time (ts3-ts2).
[0286] In step 1430, when the time difference does not reach the second threshold value, it indicates that the current target path is not congested, and at this time the second timer needs to be reset to zero to facilitate the source node to determine the round-trip delay in the subsequent transmission of the target message.
[0287] For example, referring to Figure 12 , the first time ts1 of the source node sending the target message to the destination node through the candidate path 1 is 8:40, the second time ts2 of the destination node receiving the target message sent by the source node is 8:41, the third time ts3 of the destination node sending the Ethernet direct memory access response to the source node is 8:42, and the fourth time ts4 of the source node receiving the Ethernet direct memory access response sent by the destination node through the candidate path 1 is 8:43. The round-trip delay can be the difference between the round-trip time (ts4-ts1) and the processing time (ts3-ts2), that is, the round-trip time is 1 minute. Assuming that the second threshold value is 2 minutes, the current time difference does not reach the second threshold value, indicating that the current target path is not congested, and at this time the second timer is reset to zero.
[0288] In step 1440, when the time difference reaches the second threshold value, it indicates that the current round-trip delay exceeds the boundary value of the normal time used from the source node sending the target message to the source node receiving the Ethernet direct memory access response under normal circumstances, and at this time the target path is congested. For example, referring to Figure 12For example, the first time ts1 when the source node sends the target message to the destination node through the candidate path 1 is 8:40, the second time ts2 when the destination node receives the target message sent by the source node is 8:41, the third time ts3 when the destination node sends the Ethernet direct memory access response to the source node is 8:42, and the fourth time ts4 when the source node receives the Ethernet direct memory access response sent by the destination node through the candidate path 1 is 8:43. The round-trip delay can be the difference between the round-trip time (ts4-ts1) and the processing time (ts3-ts2), that is, the round-trip time is 1 minute. Assuming that the second threshold is 30 seconds, the current time difference reaches the second threshold, indicating that the current target path is congested.
[0289] The embodiments of the above steps 1410 to 1440 determine the round-trip delay by calculating the time difference between the round-trip time and the processing time. The round-trip delay is one of important indicators for measuring the transmission performance of the data center and can reflect the transmission speed and stability of the target path from the source node to the destination node. The embodiments of the present disclosure determine whether the target path is congested by the round-trip delay, thereby improving the efficiency of congestion detection.
[0290] The above describes the second method for determining whether the target path is congested. The third method for determining whether the target path is congested is described as follows.
[0291] Step 330, sending the target message through the target path in the plurality of candidate paths and determining whether the target path is congested.
[0292] In an embodiment, referring to Figure 15 Step 330 further includes:
[0293] Step 1510, receiving a congestion notification message of the destination node, wherein when the target message passes through the switching node, if the switching node is congested internally, the switching node sends a congestion marking message to the destination node, and the destination node sends a congestion notification message in response to the congestion marking message;
[0294] Step 1520, determining a second number of congestion notification messages received in a second time length;
[0295] Step 1530, determining whether the target path is congested based on a comparison between the second number and a third threshold.
[0296] The steps 1510 to 1530 are described in detail as follows.
[0297] In step 1510, the congestion marking packet is sent by the switching node to the destination node corresponding to the target packet when the number of target packets received by the switching node exceeds the capacity of the switching node to process the target packets. Correspondingly, the congestion notification packet is sent by the destination node to the source node corresponding to the target packet after receiving the congestion marking packet, so that the source node determines that congestion occurs in a certain switching node in the target path.
[0298] With reference to Figure 16 The source node determines the candidate path 1 in the candidate path table as the target path, and sends the target packet to the destination node through the candidate path 1. At this time, if the number of target packets received by the switching node LC1 exceeds the capacity of the switching node LC1 to process the target packets, congestion occurs in the switching node LC1, and the switching node LC1 sends a congestion marking packet to the destination node. After receiving the congestion marking packet sent by the switching node LC1, the destination node sends a congestion notification packet to the source node, so that the source node determines that congestion occurs in the switching node LC1 in the candidate path 1.
[0299] In step 1520, the second duration is a time period set in advance, which can be 1 second, 0.1 second, or 0.01 second. The specific second duration can be determined according to the size of the target packet and the frequency of sending the target packet by the source node. The second number is the number of congestion notification packets received by the source node from the destination node within the second duration.
[0300] It can be understood that the second duration is set only to more clearly count the number of congestion notification packets received by the source node, so as to facilitate subsequent determination of whether congestion occurs in the target path.
[0301] The specific method of “determining the second number of congestion notification packets received within the second duration” will be described in detail below.
[0302] In step 1530, according to an embodiment of the present disclosure, under normal circumstances, the congestion occurring in the switching node can be temporary, that is, after the destination node sends the congestion notification packet to the source node, the switching node that occurs congestion restores the normal transmission of the target packet. The third threshold value can be understood as a critical value of the congestion notification packet received by the source node under normal circumstances. The third threshold value can also be a threshold value of the received congestion notification packet set in advance. The third threshold value can be 5 or 10. The specific third threshold value can be determined according to the size of the target packet and the frequency of sending the target packet by the source node. The third threshold value is set only to more clearly count the number of congestion notification packets received by the source node, so as to facilitate subsequent determination of whether congestion occurs in the target path.
[0303] The specific method of determining the congestion of the target path based on the comparison between the second number and the third threshold value will be described in detail below.
[0304] The embodiments of steps 1510 to 1530 can determine whether the internal congestion occurs in the switching nodes included in the target path by the second number of congestion notification messages received within the second time length, and further determine whether the congestion occurs in the target path, thereby improving the detection efficiency of the congestion and facilitating the subsequent control of the congestion.
[0305] The above is the general description of steps 1510 to 1530, and the specific implementation process of steps 1520 and 1530 will be described in detail below.
[0306] In an embodiment, with reference to Figure 17 , step 1520 comprises:
[0307] Step 1710, initializing the third timer to 0 and starting the timing;
[0308] Step 1720, if the third timer reaches the second time length, determining the number of received congestion notification messages as the second number.
[0309] The steps 1710 and 1720 will be described in detail below:
[0310] In step 1710, the third timer is used to measure and record the time in the process of sending the target message from the source node to the destination node, so as to facilitate the subsequent determination of whether the congestion occurs in the target path according to the time counted by the third timer. It can be understood that the initialization of the third timer to 0 can be performed when the data center starts to perform the transmission operation, or can be performed when the source node starts to perform after the congestion control operation is performed.
[0311] In step 1720, for example, the source node side starts to count the number of congestion notification messages sent by the destination node after the third timer starts to time, and when the third timer reaches the second time length, the number of congestion notification messages received within the second time length is determined as the second number. For example, the second time length is 6 seconds, and the source node side starts to count the number of congestion notification messages sent by the destination node after the third timer starts to time. When the third timer reaches 6 seconds, the number of congestion notification messages sent by the destination node counted by the source node side is 5, and the second number is 5 at this time.
[0312] The embodiment of steps 1710 to 1720 determines the number of received congestion notification packets as the second number when the third timer reaches the second time length, so as to facilitate the source node to detect the number of congestion notification packets sent by the destination node in real time, and determine that the switching node in the target path has internal congestion, thereby more accurately judging whether the target path has congestion.
[0313] In an embodiment, with reference to Figure 18 , step 1530 comprises:
[0314] Step 1810, if the second number does not reach the third threshold, resetting the third timer and the number of received congestion notification packets.
[0315] Step 1820, if the second number reaches the third threshold, determining that the target path is congested.
[0316] The steps 1810 and 1820 are described in detail as follows:
[0317] In step 1810, if the second number does not reach the third threshold, it indicates that the target path is not congested at present, and the third timer and the number of received congestion notification packets need to be reset, so as to facilitate the source node to count the number of received congestion notification packets in the subsequent process of transmitting target packets.
[0318] For example, the second time length is 6 seconds, and the source node starts to count the number of congestion notification packets sent by the destination node after the third timer starts timing. When the third timer reaches 6 seconds, the number of congestion notification packets sent by the destination node counted by the source node is 5, and the second number is 5 at this time. If the third threshold is 8, the current second number is less than the third threshold, which indicates that the target path is not congested at present. At this time, the third timer is reset, and the number of received congestion notification packets (the number of received congestion notification packets at present is 5) is reset.
[0319] In step 1820, if the second number reaches the third threshold, it indicates that the number of received congestion notification packets at present exceeds the critical value of the congestion notification packets received by the source node under normal circumstances, and the target path is congested at this time. For example, the second time length is 6 seconds, and the source node starts to count the number of congestion notification packets sent by the destination node after the third timer starts timing. When the third timer reaches 6 seconds, the number of congestion notification packets sent by the destination node counted by the source node is 5, and the second number is 5 at this time. If the third threshold is 4, the current second number is greater than the third threshold, which determines that the target path is congested, and starts to perform congestion control operation.
[0320] The embodiments of steps 1810 to 1820 can determine whether the target path is congested in real time by comparing the second number with the third threshold, thereby improving the efficiency of congestion detection. Moreover, the embodiments of the present disclosure set the third timer and the number of received congestion notification packets to zero when the second number does not reach the third threshold, thereby facilitating the source node to count the number of received congestion notification packets in the process of subsequent transmission of target packets.
[0321] The above steps describe the third method for determining congestion of the target path, and the fourth method for determining congestion of the target path is described as follows:
[0322] Step 330, sending the target packet through the target path in the plurality of candidate paths, and determining congestion of the target path;
[0323] In an embodiment, referring to Figure 19 , step 330 further includes:
[0324] Step 1910, obtaining a packet queue group, the packet queue group including a plurality of packet queues, each packet queue corresponding to a candidate path;
[0325] Step 1920, sorting the plurality of packet queues in descending order of bandwidths of the candidate paths corresponding to the packet queues, wherein the target path is ranked first in the sorting, and a packet queue to which the target packet belongs corresponds to the target path;
[0326] Step 1930, sending the target packet through the target path.
[0327] The steps 1910 to 1930 are described in detail as follows:
[0328] In step 1910, for example, when the source node needs to send a packet A to a destination node, but the data volume of the packet A exceeds a threshold of packet data that can be processed by any switching node of the data center, the packet A needs to be split into n packet queues for separate transmission, and the packet queue group includes the n packet queues after the packet A is split. Correspondingly, the source node sending interface is divided into n packet queues, and the destination node receiving interface has n receiving buffers corresponding to the packet queues. Moreover, each packet queue corresponds to a candidate path.
[0329] Referring to Figure 20Assume the message queue group that the source node needs to send to the destination node includes message queue 1, message queue 2, message queue 3, and message queue 4. Correspondingly, the source node's sending interface is divided into four message queues, and the destination node's receiving interface has four receive buffers corresponding to these message queues. Furthermore, message queue 1 corresponds to candidate path 1, message queue 2 corresponds to candidate path 2, message queue 3 corresponds to candidate path 3, and message queue 4 corresponds to candidate path 4.
[0330] In step 1920, bandwidth refers to the highest data rate that can pass from one node in the data center to another within a unit of time. To facilitate subsequent congestion control, after obtaining n message queues, the message queues need to be sorted in descending order according to the bandwidth of the candidate paths corresponding to the message queues. After obtaining the candidate paths corresponding to the message queues in descending order, the candidate path corresponding to the first-ranked message queue is determined as the target path, which is used to transmit the target message.
[0331] Reference Figure 20 For example, suppose the message queue group that the source node wants to send to the destination node includes message queue 1, message queue 2, message queue 3, and message queue 4. Message queue 1 corresponds to candidate path 1, message queue 2 corresponds to candidate path 2, message queue 3 corresponds to candidate path 3, and message queue 4 corresponds to candidate path 4. Figure 20 It is known that the bandwidth of candidate path 1 corresponding to message queue 1 is 80%, the bandwidth of candidate path 2 corresponding to message queue 2 is 65%, the bandwidth of candidate path 3 corresponding to message queue 3 is 50%, and the bandwidth of candidate path 4 corresponding to message queue 4 is 20%. After sorting the message queues in descending order according to the bandwidth of the candidate paths corresponding to the message queues, the resulting sorted list is message queue 1, message queue 2, message queue 3, and message queue 4. At this point, candidate path 1 corresponding to message queue 1, which is ranked first, is determined as the target path.
[0332] In step 1930, after determining the target path, the source node sends the target message to the destination node through the target path.
[0333] In the embodiments described above, steps 1910 to 1930 sort the multiple message queues in descending order according to the bandwidth of the candidate paths corresponding to the multiple message queues, and determine the candidate path corresponding to the first-ranked message queue as the target path, so that the target message is sent through the target path. This method quickly determines the target path even when there are multiple message queues and multiple candidate paths, facilitating subsequent assessment of whether congestion has occurred in the data center.
[0334] Step 330: Send the target message through the target path among multiple candidate paths, and determine that the target path is congested;
[0335] In an embodiment, referring to Figure 21 After step 1930, step 330 further comprises:
[0336] Step 2110, receiving a priority flow control packet of the destination node, the priority flow control packet indicating that a first target path in the order has congestion;
[0337] Step 2120, determining a third number of the priority flow control packets received within a third time length;
[0338] Step 2130, determining the congestion of the target path based on a comparison between the third number and a fourth threshold.
[0339] The steps 2110 to 2130 are described in detail as follows:
[0340] In step 2110, according to an embodiment of the present disclosure, normally, the destination node will return an acknowledgement information to the source node after receiving the target packet sent by the source node. If the source node receives the priority flow control packet of the destination node after sending the target packet, it indicates that the target path has congestion, and the source node needs to stop sending packets after receiving the priority flow control packet to alleviate the congestion of the target path.
[0341] Referring to Figure 22 , the source node determines the candidate path 1 in the candidate path table as the target path, and sends the target packet to the destination node through the candidate path 1. At this time, if the link from LC1 to LA3 has congestion, the destination node will send the priority flow control packet to the source node, so that the source node determines that the target path has congestion.
[0342] In step 2120, the third time length refers to a pre-set time period, which can be 1 second, 0.1 second or 0.01 second. The specific third time length can be determined according to the size of the target packet and the frequency of sending the target packet by the source node. The third number refers to the number of priority flow control packets sent by the destination node and received by the source node within the third time length.
[0343] It can be understood that the third time length is set only to more clearly count the number of priority flow control packets received by the source node, so as to facilitate subsequent determination of whether the target path has congestion.
[0344] The specific method of "determining the third number of the priority flow control packets received within the third time length" will be described in detail below.
[0345] In step 2130, according to an embodiment of the present disclosure, under normal circumstances, the congestion occurring at the target path can be temporary, that is, after the source node sends the priority flow control packet to the destination node, the link where the congestion occurs can restore the normal transmission of the target packet. The fourth threshold value can be understood as a critical value of the priority flow control packet received by the source node under normal circumstances, and the fourth threshold value can also be a pre-set threshold value of the received priority flow control packet. The fourth threshold value can be 5 or 10, and the specific fourth threshold value can be determined according to the size of the target packet and the frequency of the source node sending the target packet. The fourth threshold value is set only to more clearly count the number of priority flow control packets received by the source node, so as to facilitate subsequent determination of whether the target path is congested.
[0346] The specific method of “determining congestion of the target path based on the comparison between the third number and the fourth threshold value” will be described in detail below.
[0347] The embodiments of steps 2110 to 2130 can determine whether the link or switching node in the target path is congested by the third number of priority flow control packets received within the third time length, and further determine whether the target path is congested, thereby improving the detection efficiency of the congestion control and facilitating subsequent control of the congestion.
[0348] The above is a general description of steps 2110 to 2130, and the specific implementation process of steps 2120 and 2130 will be described in detail below.
[0349] In an embodiment, referring to Figure 23 , step 2120 comprises:
[0350] Step 2310, initializing the fourth timer to 0 and starting timing;
[0351] Step 2320, if the fourth timer reaches the third time length, determining the number of received priority flow control packets as the third number.
[0352] Steps 2310 and 2320 will be described in detail as follows:
[0353] In step 2310, the fourth timer is used to measure and record the time in the process of the source node sending the target packet to the destination node, so as to facilitate subsequent determination of whether the target path is congested according to the time counted by the fourth timer. It can be understood that initializing the fourth timer to 0 can be performed when the data center starts to perform the transmission operation, or can be performed when the source node receives the first priority flow control packet after performing the congestion control operation.
[0354] In step 2320, the source node side, for example, counts the number of priority flow control packets sent by the destination node after the fourth timer starts timing. When the fourth timer reaches the third time length, the number of priority flow control packets received within the third time length is determined as the third number. For example, the third time length is 4 seconds, and the source node side starts counting the number of priority flow control packets sent by the destination node after the fourth timer starts timing. When the fourth timer reaches 4 seconds, the number of priority flow control packets sent by the destination node counted by the source node side is 2, and the third number is 2 at this time.
[0355] The above embodiments of steps 2310 to 2320 determine the number of received priority flow control packets as the third number when the fourth timer reaches the third time length, which facilitates the source node side to detect the number of priority flow control packets sent by the destination node in real time and determine that there is congestion in the link or switching node in the target path, so as to more accurately judge whether the target path is congested.
[0356] In an embodiment, referring to Figure 24 Step 2130 includes:
[0357] Step 2410, if the third number does not reach the fourth threshold, the fourth timer is reset to zero, and the number of received priority flow control packets is cleared to zero.
[0358] Step 2420, if the third number reaches the fourth threshold, it is determined that the target path is congested.
[0359] The steps 2410 and 2420 are described in detail as follows:
[0360] In step 2410, when the third number does not reach the fourth threshold, it indicates that the current target path is not congested, and at this time the fourth timer and the number of received priority flow control packets need to be reset to zero, so as to facilitate the source node to count the number of received priority flow control packets in the subsequent process of transmitting target packets.
[0361] For example, the third time length is 3 seconds, and the source node side starts counting the number of priority flow control packets sent by the destination node after the fourth timer starts timing. When the fourth timer reaches 3 seconds, the number of priority flow control packets sent by the destination node counted by the source node side is 4, and the third number is 4 at this time. If the fourth threshold is 7, the current third number is less than the fourth threshold, which indicates that the current target path is not congested. At this time, the fourth timer is reset to zero, and the number of received priority flow control packets (the number of received priority flow control packets at this time is 4) is reset to zero.
[0362] In step 2420, when the third number reaches a fourth threshold, it indicates that the number of the currently received priority flow control packets exceeds the critical value of the priority flow control packets received by the source node under normal circumstances, and at this time, the target path is congested. For example, the third time length is 3 seconds, and the source node starts to count the number of the priority flow control packets sent by the destination node after the fourth timer starts timing. When the fourth timer reaches 3 seconds, the number of the priority flow control packets sent by the destination node counted by the source node is 4, and at this time, the third number is 4. If the fourth threshold is 4, the current third number is equal to the fourth threshold, it is determined that the target path is congested, and the congestion control operation is started.
[0363] The embodiments of the above steps 2410 to 2420 can determine whether the target path is congested in real time by comparing the third number with the fourth threshold, thereby improving the efficiency of congestion detection. Moreover, the embodiments of the present disclosure set the fourth timer and the number of the received priority flow control packets to zero when the third number does not reach the fourth threshold, thereby facilitating the source node to count the number of the received priority flow control packets in the subsequent process of transmitting the target packet.
[0364] The above steps describe the fourth method for determining the congestion of the target path, and the fifth method for determining the congestion of the target path is described as follows:
[0365] Step 330, transmitting the target packet through the target path in the plurality of candidate paths, and determining that the target path is congested.
[0366] In an embodiment, referring to Figure 25 , step 330 further includes:
[0367] Step 2510, if a candidate path table update message is received from a total controller, determining that the target path is congested, wherein the total controller is located outside the source node and the destination node; when the target packet passes through each switching node of each switching level, the switching node adds congestion metadata on the target packet; if the destination node determines that the target path is congested according to the congestion metadata added by each switching node of each switching level, the congestion metadata added by each switching node of each switching level is sent to the total controller, and the total controller sends a candidate path table update message based on the congestion metadata.
[0368] Step 2510 is described in detail as follows:
[0369] In step 2510, the congestion metadata is used to indicate the current state of the corresponding switching node. According to the embodiments of the present disclosure, referring to Figure 26After the candidate path table between the source node and the destination node is obtained and the target path is determined, the source node sends a target packet to the destination node through the target path. Moreover, when the target packet passes through each switching node of the target path, the switching node adds congestion metadata on the target packet, so that the destination node can determine whether the target path is congested according to the congestion metadata of each switching node in the target packet when the target packet is received.
[0370] For example, referring to FIG. 1, a source node and a destination node are connected through a candidate path table, and the candidate path table includes candidate paths 1, 2 and 3. Figure 26 After the target path is determined as the candidate path 1 in the candidate path table, the source node sends a target packet A to the destination node through the candidate path 1. When the target packet A passes through the switching node LA1 of the candidate path 1, the switching node LA1 adds congestion metadata 1 on the target packet A. When the target packet A passes through the switching node LC1 of the candidate path 1, the switching node LC1 adds congestion metadata 2 on the target packet A. When the target packet A passes through the switching node LA3 of the candidate path 1, the switching node LA3 adds congestion metadata 3 on the target packet A. Finally, when the destination node receives the target packet A, the target packet A contains the congestion metadata 1, the congestion metadata 2 and the congestion metadata 3, and the destination node determines whether the candidate path 1 is congested according to the congestion metadata 1, the congestion metadata 2 and the congestion metadata 3.
[0371] The specific method of “determining whether the target path is congested according to the congestion metadata of each switching node in the target packet” will be described in detail below.
[0372] Further, after the destination node determines that the target path is congested, the destination node sends the collected congestion metadata of each switching node to a general controller independent of the source node and the destination node, so that the general controller updates the candidate path table between the source node and the destination node corresponding to the congestion metadata based on the congestion metadata collected by the destination node.
[0373] For example, referring to FIG. 1, a source node and a destination node are connected through a candidate path table, and the candidate path table includes candidate paths 1, 2 and 3. Figure 26After determining the target path as the candidate path 1 in the candidate path table, the source node sends the target message A to the destination node through the candidate path 1, so that the destination node receives the target message A containing the congestion metadata 1, the congestion metadata 2 and the congestion metadata 3. After determining that the candidate path 1 is congested according to the congestion metadata 1, the congestion metadata 2 and the congestion metadata 3, the destination node sends the congestion metadata 1, the congestion metadata 2 and the congestion metadata 3 to the general controller, and the general controller updates the candidate path table based on the congestion metadata 1, the congestion metadata 2 and the congestion metadata 3. Specifically, after receiving the message of determining that the candidate path 1 is congested, the general controller changes the state of the candidate path 1 in the candidate path table, and changes the state of the candidate path 1 to congestion. At the same time, the general controller also determines a new target path in the candidate path table according to the congestion metadata 1, the congestion metadata 2 and the congestion metadata 3, and changes the state of the new target path in the candidate path table to in use. Finally, the general controller sends the updated candidate path table to the source node corresponding to the candidate path table.
[0374] The embodiment of the above step 2510 can obtain the congestion metadata of each switching node in the target path during the transmission of the target message, and determine whether the target path is congested according to the collected congestion metadata. The embodiment of the disclosure only needs to determine whether the target path is congested through the operation of transmitting the target message, which improves the detection efficiency. Moreover, the destination node sends the collected congestion metadata to the general controller after determining that the target path is congested, which facilitates the general controller to update the candidate path table and implement global control on the switching nodes in the data center.
[0375] The above is a general description of step 2510, and the specific implementation process of "determining that the target path is congested according to the congestion metadata added by each switching node in each switching level" in step 2510 is described in detail below.
[0376] In an embodiment, referring to Figure 27 , the congestion metadata includes the bandwidth usage of the switching node, and step 2510 includes:
[0377] Step 2710, obtaining the bandwidth usage threshold of each switching level;
[0378] Step 2720, if the bandwidth usage of the switching node in any switching level is greater than the bandwidth usage threshold of the switching level, determining that the target path is congested.
[0379] In step 2710, the bandwidth usage is an index to measure the data transmission capability of the links in the data center, and the bandwidth usage represents the proportion of the highest data rate that the switching node in each switching level can reach in actual use to the theoretical maximum processing rate. The bandwidth usage threshold is the critical value of the proportion of the highest data rate that the switching node can reach in actual use to the theoretical maximum processing rate, and once the bandwidth usage exceeds the bandwidth usage threshold, the switching node corresponding to the bandwidth usage can be congested.
[0380] With reference to Figure 2 For example, the bandwidth usage threshold of each switching level can be different values. For example, the core layer is an important forwarding node in the data center, and the core layer can provide high-speed forwarding for the data forwarded by the first aggregation layer, so the bandwidth usage threshold of the core layer is greater than the bandwidth usage threshold of the first aggregation layer. The number of switching nodes accessing the first aggregation layer is greater than the number of switching nodes accessing the first access layer, so the bandwidth usage threshold of the first aggregation layer is greater than the bandwidth usage threshold of the first access layer. Further, in the transmission live, the specific bandwidth usage threshold of each switching level should be determined according to the number of switching nodes accessing the switching level and the size of the target message to be transmitted.
[0381] In step 2720, if the bandwidth usage of the switching node of the target path is greater than the bandwidth usage threshold of the switching level, it indicates that the data rate passed by the current switching node exceeds the critical value of the proportion of the highest data rate that can be reached in actual use to the theoretical maximum processing rate, and at this time it can be determined that the target path is congested.
[0382] With reference to Figure 28According to one embodiment of the present disclosure, the bandwidth usage rate of the switching node of the first hop of the target path 1 corresponding to the source node A is 10%, the bandwidth usage rate of the switching node of the second hop is 80%, and the bandwidth usage rate of the switching node of the third hop is 20%. The bandwidth usage rate of the switching node of the first hop of the target path 2 corresponding to the source node B is 15%, the bandwidth usage rate of the switching node of the second hop is 30%, and the bandwidth usage rate of the switching node of the third hop is 50%. The bandwidth usage rate of the switching node of the first hop of the target path 3 corresponding to the source node C is 32%, the bandwidth usage rate of the switching node of the second hop is 41%, and the bandwidth usage rate of the switching node of the third hop is 67%. Assuming that the bandwidth usage rate threshold of each switching level is the same and is 60%, the switching node of the second hop of the target path 1 is congested, the switching node of the third hop of the target path 3 is congested, and it can be determined that the target path 1 and the target path 3 are congested. Assuming that the bandwidth usage rate threshold of the switching level to which the first hop of each target path belongs is 50%, the bandwidth usage rate threshold of the switching level to which the second hop of each target path belongs is 60%, and the bandwidth usage rate threshold of the switching level to which the third hop of each target path belongs is 40%. The switching node of the second hop of the target path 1 is congested, the switching node of the third hop of the target path 2 is congested, and the switching node of the third hop of the target path 3 is congested, and it can be determined that the target path 1, the target path 2, and the target path 3 are all congested.
[0383] It should be noted that the congestion metadata further includes the queue number to which the target message passing through the switching node belongs, the inlet of the switching node through which the target message flows, the outlet of the switching node through which the target message flows, and the like. The destination node can also send the congestion metadata to the general controller after determining that the target path is congested, so that the general controller can perform global control on the switching nodes in the data center according to the congestion metadata.
[0384] The embodiments of the above steps 2710 to 2720 can acquire the bandwidth usage rates of the switching nodes in each switching level in the target path during the transmission of the target message, compare the collected bandwidth usage rates of the switching nodes with the bandwidth usage rate thresholds corresponding to the switching nodes, and then determine whether the target path is congested, thereby improving the accuracy of congestion detection and facilitating subsequent congestion control on the target path with congestion.
[0385] The above steps describe the fifth method for determining the congestion of the target path, and the following describes the sixth method for determining the congestion of the target path:
[0386] Step 330, sending the target message through the target path in the plurality of candidate paths and determining that the target path is congested;
[0387] In one embodiment, referring to Figure 29, step 330 further comprises:
[0388] Step 2910, sending a congestion probe request to the destination node;
[0389] Step 2920, if no congestion probe response to the congestion probe request is received within a fourth time length, determining that the target path is congested.
[0390] The steps 2910 to 2930 are described in detail as follows:
[0391] In step 2910, the target path can also be detected for congestion by link probe. The congestion probe request is a packet sent by the source node to the destination node when performing link probe.
[0392] Further, the congestion probe request is initiated by the source node. The source node will construct a congestion probe request conforming to the corresponding protocol according to the test type of the test case corresponding to the link probe, and send it to the destination node with a time stamp. Specifically, the source node can also calculate various performance indicators of the target path such as connectivity, delay, packet loss rate, etc. by sending the congestion probe request and receiving the congestion probe response.
[0393] In step 2920, the fourth time length refers to a pre-set time period. The fourth time length can be 1 second, 0.1 second or 0.01 second. The specific fourth time length can be determined according to the size of the target packet and the frequency of sending the target packet by the source node. It can be understood that the fourth time length is set only to more clearly count the time when the destination node receives the congestion probe request, so as to facilitate subsequent judgment of whether the target path is congested.
[0394] When the target path is not congested, the destination node receiving the congestion probe request will return a congestion probe response to the source node corresponding to the congestion probe request. That is, the congestion probe response refers to the response of the destination node to the congestion probe request sent by the source node.
[0395] Referring to Figure 30The candidate path 1 in the candidate path table is determined as the target path, and the source node sends the congestion probe request 1 to the destination node according to the candidate path 1. However, the link failure of LC1-LA3 in the candidate path 1 causes the congestion probe request 1 to fail to reach the destination node. The destination node fails to receive the congestion probe request 1, and also fails to send the congestion probe response corresponding to the congestion probe request 1 to the source node within the fourth time length. Therefore, the source node side can determine that the candidate path 1 is congested. At this time, the candidate path state table is updated, the candidate path 2 is determined as the new target path, and the source node sends the congestion probe request 2 to the destination node according to the candidate path 2. After receiving the congestion probe request 2, the destination node returns the congestion probe response 2 corresponding to the congestion probe request 2 to the source node. If the source node receives the congestion probe response 2 within the fourth time length, it is determined that the candidate path 2 is not congested.
[0396] The specific method of “determining that the target path is congested if the congestion probe response to the congestion probe request is not received within the fourth time length” will be described in detail below.
[0397] The embodiments of the above steps 2910 to 2920 send the congestion probe request to the destination node and determine that the target path is congested if the congestion probe response to the congestion probe request is not received within the fourth time length. The detection steps are simple, which improves the convenience of congestion detection and facilitates subsequent control of congestion.
[0398] The above is a general description of steps 2910 to 2920. The specific implementation process of step 2920 will be described in detail below.
[0399] In an embodiment, referring to Figure 31 , step 2920 comprises:
[0400] Step 3110, initializing the fifth timer to 0 and starting timing;
[0401] Step 3120, if the congestion probe response to the congestion probe request is received before the fifth timer reaches the fourth time length, resetting the fifth timer to 0;
[0402] Step 3130, if the congestion probe response to the congestion probe request is not received when the fifth timer reaches the fourth time length, determining that the target path is congested.
[0403] The steps 3110 to 3130 will be described in detail below:
[0404] In step 3110, the fifth timer is used to measure the time and record the time in the process of sending the target message from the source node to the destination node, so as to facilitate subsequent judgment of whether the target path is congested according to the time counted by the fifth timer. It can be understood that the initialization of the fifth timer to 0 can be started when the source node sends the congestion detection request to the destination node.
[0405] In step 3120, for example, referring to Figure 30 , it is assumed that the target path is candidate path 2 in the candidate path table, and the fourth time length is 3 seconds. The fifth timer starts timing from the source node side sending the congestion detection request 2 to the destination node. When the fifth timer reaches 3 seconds before, the source node receives the congestion detection response 2 sent by the destination node to the congestion detection request 2, and the fifth timer is reset to zero at this time.
[0406] In step 3130, when the fifth timer reaches the fourth time length, the congestion detection response to the congestion detection request is still not received, which indicates that the switching nodes in the target path may be congested at this time, or the link in the target path fails, resulting in that the destination node fails to receive the congestion detection request within the preset time period. For example, referring to Figure 30 , it is assumed that the target path is candidate path 1 in the candidate path table, and the fourth time length is 3 seconds. The fifth timer starts timing from the source node side sending the congestion detection request 1 to the destination node. If the link between the switching node LC1 and the switching node LA2 in the candidate path 1 fails, the destination node cannot receive the congestion detection request 1. When the fifth timer reaches 3 seconds, the source node still does not receive the congestion detection response 1 to the congestion detection request 1, and it is determined that the candidate path 1 is congested at this time.
[0407] The embodiments of the above steps 3110 to 3130 can measure the time period from the source node sending the congestion detection request to the source node receiving the congestion detection response according to the fifth timer, which improves the detection accuracy. At the same time, the application can also determine whether the target path is congested based on the fourth time length, so as to facilitate the detection of the state of each switching node and link in the data center, and facilitate subsequent execution of the congestion control operation.
[0408] Detailed description of step 340
[0409] In step 340, for each other candidate path in the candidate path table except the target path, the bandwidth utilization rate of each switching node in the switching level in the other candidate path is obtained.
[0410] In an embodiment, referring to Figure 32 , step 340 includes:
[0411] Step 3210, obtaining a first packet corresponding to each other candidate path, the first packet being sent on the other candidate path corresponding to the first packet at the same time period as the target packet;
[0412] Step 3220, obtaining a second packet returned by the destination node, the second packet including the first packet and bandwidth usage rates of the switching nodes of each switching level in the other candidate path, the bandwidth usage rates being added by the switching nodes of each switching level when the first packet passes through the switching nodes.
[0413] The steps 3210 to 3220 are described in detail below.
[0414] In step 3210, according to an embodiment of the present disclosure, there are multiple candidate paths from the source node to the destination node, and the switching nodes and links passed through by each candidate path are different. In order to obtain the bandwidth usage rates of the switching nodes possibly passed through from the source node to the destination node, the source node needs to send the first packet through multiple different candidate paths, so that the first packet collects the bandwidth usage rates of the switching nodes passed through in the process of transmission following the candidate paths. Further, in order to determine a new target path in the candidate paths in time after the congestion of the target path is determined, the first packet and the target packet are sent at the same time period. Through this method, there is no need to additionally set other time to send the first packet to obtain the bandwidth usage rates, and the efficiency of the congestion control is improved.
[0415] With reference to Figure 33 For example, a candidate path is taken as an example for illustration: the target path is the source node-switching node LA1-switching node LC1-switching node LA3-destination node, and the candidate path 1 is the source node-switching node LA2-switching node LC2-switching node LA4-destination node. In the same time period when the source node sends the target packet through the target path, the source node sends the first packet to the destination node through the candidate path 1.
[0416] In step 3220, the source node sends the first packet to the destination node through the candidate path, and when the first packet passes through the switching nodes of each switching level in the candidate path, the switching nodes add the bandwidth usage rates of the switching nodes on the first packet. When the destination node receives the first packet, the first packet carries the bandwidth usage rates of all the switching nodes included in the candidate path. When the destination node receives the first packet sent by the source node and carrying the bandwidth usage rates of all the switching nodes included in the candidate path, the destination node returns a second packet to the source node. The second packet is the first packet received by the destination node and carrying the bandwidth usage rates of all the switching nodes included in the candidate path, and the second packet includes the first packet and the bandwidth usage rates of the switching nodes of each switching level in the candidate path.
[0417] For example, referring to Figure 33 Here, taking an example of a candidate path, the target path is source node-switch node LA1-switch node LC1-switch node LA3-destination node, and the candidate path 1 is source node-switch node LA2-switch node LC2-switch node LA4-destination node. The source node sends a first message to the destination node through the candidate path 1. After receiving the first message, the switch node LA2 adds the bandwidth usage rate 1 of the switch node LA2 on the first message, the switch node LC2 adds the bandwidth usage rate 2 of the switch node LC2 on the first message, and the switch node LA4 adds the bandwidth usage rate 3 of the switch node LA4 on the first message. Finally, the second message returned by the destination node to the source node includes the first message, the bandwidth usage rate 1, the bandwidth usage rate 2, and the bandwidth usage rate 3.
[0418] The embodiments of the steps 3210 to 3220 can send the first message on the candidate path, so that the first message collects the bandwidth usage rates of the switch nodes in the candidate path during transmission, thereby obtaining the bandwidth usage rates of all the switch nodes in the candidate path, which facilitates subsequent determination of a new target path according to the bandwidth usage rates of the switch nodes at each switch level. Moreover, the first message and the target message are sent at the same time period, without occupying an additional clock period, thereby saving the time for measuring the bandwidth usage rates of the switch nodes at each switch level.
[0419] The above steps describe a first method for obtaining the bandwidth usage rates of the switch nodes at each switch level in other candidate paths. A second method for obtaining the bandwidth usage rates of the switch nodes at each switch level in other candidate paths is described as follows:
[0420] In step 340, for each other candidate path in the candidate path table except the target path, the bandwidth usage rates of the switch nodes at each switch level in the other candidate path are obtained.
[0421] In an embodiment, referring to Figure 34 Step 340 includes:
[0422] Step 3410, sending a first query request to the switch nodes at each switch level in the other candidate path.
[0423] Step 3420, receiving a first response made by the switch nodes in response to the first query request, the first response containing the bandwidth usage rate.
[0424] The steps 3410 to 3420 are described in detail as follows.
[0425] In step 3410, there are multiple candidate paths from the source node to the destination node, and each candidate path passes through different switching nodes. To obtain the bandwidth utilization of each switching node in each switching level in the candidate paths, the source node sends a first query request to the switching nodes in the candidate paths, so that the switching nodes receiving the first query request return the corresponding bandwidth utilization to the source node. The first query request means that the source node requests to query the bandwidth utilization of the switching nodes receiving the first query request.
[0426] Referring to Figure 35 For example, assuming that the candidate path is the source node-switching node LA2-switching node LC2-switching node LA4-destination node, the source node sends a first query request to the switching node LA2 to query the bandwidth utilization of the switching node LA2, sends a first query request to the switching node LC2 to query the bandwidth utilization of the switching node LC2, and sends a first query request to the switching node LA4 to query the bandwidth utilization of the switching node LA4.
[0427] In step 3420, the first response contains the confirmation information of determining receiving the first query request and the bandwidth utilization of the switching node receiving the first query request. According to an embodiment of the present disclosure, the source node sends the first query request to the switching nodes in each switching level in the candidate paths through the candidate paths, and the switching nodes send the first response to the source node in response to the first query request after receiving the first query request sent by the source node, so that the source node collects the bandwidth utilization of each switching node in the candidate paths.
[0428] Referring to Figure 35 For example, assuming that the candidate path is the source node-switching node LA2-switching node LC2-switching node LA4-destination node. The source node sends a first query request to the switching node LA2, and the switching node LA2 returns a first response A to the source node in response to the first query request, the first response A including the bandwidth utilization 1. Similarly, the source node sends a first query request to the switching node LC2, and the switching node LC2 returns a first response B to the source node in response to the first query request, the first response B including the bandwidth utilization 2. The source node sends a first query request to the switching node LA4, and the switching node LA4 returns a first response C to the source node in response to the first query request, the first response C including the bandwidth utilization 3.
[0429] The embodiments of steps 3410 to 3420 can be implemented by sending a first query request to each switching node of the candidate path to obtain a first response returned by the switching node containing the bandwidth utilization, so as to collect the bandwidth utilization of the switching nodes in the candidate path. By obtaining the bandwidth utilization of each switching node of each switching level in the candidate path, the load of the switching nodes in the data center is obtained in real time, which facilitates subsequent selection of an appropriate target path for the target message according to the bandwidth utilization of the switching nodes in the candidate path.
[0430] Detailed description of step 350
[0431] In step 350, based on the bandwidth utilization, a replacement path is determined in each other candidate path, and the next-hop switching node of each switching level in the replacement path is encoded into the first extension field in the target message.
[0432] In an embodiment, referring to Figure 36 , step 350 includes:
[0433] Step 3610, obtaining a bandwidth utilization threshold of each switching level;
[0434] Step 3620, in each other candidate path, filtering out other candidate paths containing switching levels with bandwidth utilization greater than the bandwidth utilization threshold, to obtain filtered paths;
[0435] Step 3630, for each filtered path, determining a first sum of the bandwidth utilization of the switching nodes of each switching level.
[0436] Step 3640, based on the first sum, determining a replacement path in each filtered path.
[0437] The steps 3610 to 3640 are described in detail below.
[0438] In step 3610, the method of "obtaining a bandwidth utilization threshold of each switching level" has been explained above, and will not be repeated here.
[0439] In step 3620, according to an embodiment of the present disclosure, when the bandwidth utilization of a switching node is greater than the bandwidth utilization threshold, it means that the data rate passing through the current switching node exceeds the critical value of the proportion of the highest data rate that can be achieved in actual use to the theoretical maximum processing rate, and the switching node may be congested, so the candidate path with the switching level whose bandwidth utilization is greater than the bandwidth utilization threshold needs to be filtered out to reduce the risk of congestion of the re-determined target path.
[0440] For example, there are six candidate paths in the candidate path table, one of which is the target path. After the target path is determined to be congested, the remaining five candidate paths in the candidate path table need to be calculated one by one to filter out the candidate paths that are likely to be congested.
[0441] With reference to Figure 37 , it is assumed that after the target path is determined to be congested, candidate path 1, candidate path 2, and candidate path 3 are left in the candidate path table. Among them, the bandwidth usage rate of the first hop of candidate path 1 is 10%, the bandwidth usage rate of the second hop is 80%, and the bandwidth usage rate of the third hop is 20%. The bandwidth usage rate of the first hop of candidate path 2 is 10%, the bandwidth usage rate of the second hop is 60%, and the bandwidth usage rate of the third hop is 50%. The bandwidth usage rate of the first hop of candidate path 3 is 20%, the bandwidth usage rate of the second hop is 50%, and the bandwidth usage rate of the third hop is 30%. Since the bandwidth usage rate threshold of the first switching level in the data center is 80%, the bandwidth usage rate threshold of the second switching level is 70%, and the bandwidth usage rate threshold of the third switching level is 20%, it can be determined that the switching node of the second hop of candidate path 1 exceeds the bandwidth usage rate threshold, and candidate path 1 needs to be filtered out. Finally, the filtered paths obtained are candidate path 2 and candidate path 3.
[0442] In step 3630, after obtaining the filtered paths, it is further necessary to determine the first sum of the bandwidth usage rates of the switching nodes of each switching level in the candidate paths, so as to determine the candidate path with the smallest risk of congestion in the filtered paths.
[0443] For example, with reference to Figure 37 , the filtered paths include candidate path 2 and candidate path 3. The bandwidth usage rate of the first hop of candidate path 2 is 10%, the bandwidth usage rate of the second hop is 60%, and the bandwidth usage rate of the third hop is 50%, so the first sum of candidate path 2 is 120%. The bandwidth usage rate of the first hop of candidate path 3 is 20%, the bandwidth usage rate of the second hop is 50%, and the bandwidth usage rate of the third hop is 30%, so the first sum of candidate path 2 is 100%.
[0444] In step 3640, to determine the candidate path with the minimum risk of congestion in the filtered path, the first sum and the replacement path in the filtered path are determined based on the first sum obtained in the previous step, and the target packet is retransmitted through the replacement path. Further, there are two methods for determining the replacement path, which are described as follows:
[0445] The first method for determining the replacement path is to determine the first sum minimum filtered path as the replacement path. For example, referring to Figure 37 , the filtered paths include candidate path 2 and candidate path 3, where the first sum of candidate path 2 is 120%, and the first sum of candidate path 3 is 100%. Therefore, the first sum minimum candidate path 3 can be determined as the replacement path.
[0446] The second method for determining the replacement path is to set a threshold for the first sum of the bandwidth usage of each switching level in the candidate path in advance, and randomly select a candidate path as the replacement path from the filtered paths with the first sum less than the preset threshold. For example, the filtered paths include candidate path 1, candidate path 2, candidate path 3 and candidate path 4, where the first sum of candidate path 1 is 120%, the first sum of candidate path 2 is 130%, the first sum of candidate path 3 is 90%, and the first sum of candidate path 4 is 80%. Assuming that the threshold for the first sum of the bandwidth usage of each switching level in the candidate path is 100%, the filtered paths with the first sum less than the preset threshold include candidate path 3 and candidate path 4, and a path can be randomly selected from candidate path 3 and candidate path 4 as the replacement path.
[0447] The embodiments of steps 3610 to 3640 can filter the candidate paths according to the threshold of the bandwidth usage of each switching level in the candidate path, so as to reduce the risk of congestion of the re-determined target path. Moreover, the embodiments of the present disclosure can determine the first sum of the bandwidth usage of each switching node for each filtered path, so as to determine the replacement path in the filtered path based on the first sum, further reduce the risk of congestion of the re-determined target path, and improve the congestion control efficiency.
[0448] Process of determining the filtered path based on the link coincidence ratio in the embodiments of the present disclosure
[0449] Step 330, sending the target packet through the target path in the multiple candidate paths, and determining that the target path is congested;
[0450] In an embodiment, referring to Figure 38 , after step 330, the congestion control method further includes:
[0451] Step 3810, determining, for each other candidate path except the target path in the candidate path table, a link coincidence ratio of the other candidate path and the target path;
[0452] Step 3820, determining, as the pre-selected paths, the other candidate paths with the link coincidence ratio less than the first ratio;
[0453] Step 3830, generating a dummy packet;
[0454] Step 3840, sending the dummy packet through the pre-selected paths respectively, and receiving, for each pre-selected path, an out-of-order notification message and an Ethernet direct memory access response from the destination node;
[0455] Step 3850, determining, for each pre-selected path, a receiving frequency of the out-of-order notification message and an average time interval from sending the dummy packet to receiving the Ethernet direct memory access response;
[0456] Step 3860, determining, as the re-selected paths, the pre-selected paths based on the receiving frequency and the average time interval;
[0457] Corresponding to steps 3810-3860, step 3620 further comprises:
[0458] Step 3870, filtering out, in each re-selected path, the re-selected path containing a switching level with a bandwidth usage greater than a bandwidth usage threshold, to obtain a filtered path.
[0459] Embodiments of steps 3810-3870 are described in detail below.
[0460] In step 3810, a path contains multiple links. For example, referring to Figure 2 , assuming the target path is: source node H0-first access layer switching node LA16-first aggregation layer switching node LA0-core layer switching node LC0-second aggregation layer switching node LA8-second access layer switching node LA24-destination node H8, the target path contains six links. Further, the link coincidence ratio refers to the proportion of the same links in different paths to all links. For example: candidate path 1 is source node H0-first access layer switching node LA16-first aggregation layer switching node LA0-core layer switching node LC0-second aggregation layer switching node LA8-second access layer switching node LA24-destination node H8, and candidate path 2 is source node H0-first access layer switching node LA16-first aggregation layer switching node LA0-core layer switching node LC2-second aggregation layer switching node LA9-second access layer switching node LA25-destination node H8. The link coincidence ratio of candidate path 1 and candidate path 2 is 33.33%.
[0461] According to an embodiment of the present disclosure, when it is determined that the target path is congested, the higher the link coincidence ratio of the target path is, the greater the possibility of congestion is. Therefore, after it is determined that the target path is congested, it is preferred to determine the link coincidence ratio of other candidate paths in the candidate path table except the target path to the target path.
[0462] In step 3820, the first ratio is a threshold value set in advance. In actual cases, the first ratio can be determined according to the number of switching nodes contained in the target path and the number of candidate paths in the candidate path table except the target path.
[0463] According to an embodiment of the present disclosure, in order to reduce the risk of congestion of the updated target path, after the link coincidence ratio of the candidate path in the candidate path table except the target path to the target path is obtained, the candidate path needs to be further filtered, and other candidate paths with a link coincidence ratio less than the first ratio are determined as preselected paths.
[0464] For example, referring to Figure 39 , the candidate paths in the candidate path table except the target path include candidate path 1, candidate path 2, candidate path 3, and candidate path 4. The link coincidence ratio of the candidate path 1 to the target path is 50%, the link coincidence ratio of the candidate path 2 to the target path is 0%, the link coincidence ratio of the candidate path 3 to the target path is 25%, and the link coincidence ratio of the candidate path 4 to the target path is 25%. Assuming that the first ratio is 50%, the candidate path 1 is filtered, and the preselected paths are the candidate path 2, the candidate path 3, and the candidate path 4.
[0465] In step 3830, the dummy message refers to a message different from the target message, which is used to measure the performance of the candidate path. After the preselected paths are determined, the dummy message needs to be generated to measure the performance of the candidate path through the dummy message.
[0466] In step 3840, the dummy message is used to measure the performance of the candidate path by sending the dummy message through a plurality of preselected paths respectively, and receiving the out-of-order notification message and the Ethernet direct memory access response sent by the destination node to determine the performance of the candidate path according to the received out-of-order notification message and the Ethernet direct memory access response.
[0467] For example, referring to Figure 39, the pre-selected paths include candidate path 2, candidate path 3 and candidate path 4. The source node sends the dummy packet 1 through the candidate path 2, sends the dummy packet 2 through the candidate path 3, and sends the dummy packet 3 through the candidate path 4. After receiving the dummy packet 1, the destination node returns the out-of-order notification message 1 and the Ethernet direct memory access response 1 to the source node, after receiving the dummy packet 2, the destination node returns the out-of-order notification message 2 and the Ethernet direct memory access response 2 to the source node, and after receiving the dummy packet 3, the destination node returns the out-of-order notification message 3 and the Ethernet direct memory access response 3 to the source node. The source node can determine the performance of the candidate path 2 according to the received out-of-order notification message 1 and the Ethernet direct memory access response 1, determine the performance of the candidate path 3 according to the received out-of-order notification message 2 and the Ethernet direct memory access response 2, and determine the performance of the candidate path 4 according to the received out-of-order notification message 3 and the Ethernet direct memory access response 3.
[0468] In step 3850, in order to more accurately evaluate the performance of the candidate paths and reduce the possibility of congestion, the receiving frequency of the out-of-order notification message corresponding to each pre-selected path and the average time interval from sending the dummy packet to receiving the Ethernet direct memory access response corresponding to each pre-selected path need to be obtained.
[0469] For example, it is assumed that the pre-selected paths include candidate path 1 and candidate path 2. For the candidate path 1, the source node needs to obtain the receiving frequency of the out-of-order notification message 1 corresponding to the candidate path 1 and the average time interval from sending the dummy packet to receiving the Ethernet direct memory access response 1 corresponding to the candidate path 1. For the candidate path 2, the source node needs to obtain the receiving frequency of the out-of-order notification message 2 corresponding to the candidate path 2 and the average time interval from sending the dummy packet to receiving the Ethernet direct memory access response 2 corresponding to the candidate path 2.
[0470] In step 3560, it should be noted that the pre-selected paths are paths obtained after the first filtering of the candidate paths, and the re-selected paths refer to paths obtained after the second filtering of the candidate paths on the basis of the first filtering of the candidate paths.
[0471] The specific method of "determining the re-selected paths from the pre-selected paths based on the receiving frequency and the average time interval" will be described in detail below.
[0472] In step 3870, the re-selected paths refer to paths obtained after the second filtering of the candidate paths on the basis of the first filtering of the candidate paths, and the filtered paths refer to paths obtained after the third filtering of the candidate paths on the basis of the second filtering of the candidate paths.
[0473] According to an embodiment of the present disclosure, after the rechecked paths are determined, to further reduce the risk of congestion of the re-determined replacement path, the bandwidth usage threshold of the switching node of each switching level in each rechecked path is obtained, and the rechecked path containing the switching level with the bandwidth usage greater than the bandwidth usage threshold is filtered out to obtain the filtered path.
[0474] The embodiments of the above steps 3810 to 3870 first determine the other candidate paths with the link coincidence ratio less than the first ratio as the pre-selected paths, then determine the rechecked paths from the pre-selected paths based on the receiving frequency and the average time interval, and finally filter out the rechecked paths containing the switching level with the bandwidth usage greater than the bandwidth usage threshold to obtain the filtered path. The embodiments of the present disclosure reduce the risk of congestion of the re-determined replacement path by filtering out the candidate paths three times in turn, and improve the efficiency of congestion control.
[0475] The above is the general description of the steps 3810 to 3870, and the specific implementation process of the step 3860 is described in detail below.
[0476] In an embodiment, referring to Figure 40 , the step 3860 comprises:
[0477] Step 4010, determining a first score based on the receiving frequency of the pre-selected path;
[0478] Step 4020, determining a second score based on the average time interval of the pre-selected path;
[0479] Step 4030, determining a total score of the pre-selected path based on the first score and the second score;
[0480] Step 4040, determining the rechecked path from the pre-selected paths based on the total scores of the pre-selected paths.
[0481] The steps 4010 and 4040 are described in detail below:
[0482] In the step 4010, according to an embodiment of the present disclosure, the first score is determined based on the receiving frequency of the pre-selected path, which can be in the form of table lookup. The pre-selected path receiving frequency and the first score corresponding relationship table is looked up according to the receiving frequency of the pre-selected path to obtain the first score corresponding to the receiving frequency of the pre-selected path.
[0483] For example, referring to Figure 41For example, assuming that the first score corresponding to the receiving frequency of 5 Hz / s-15 Hz / s in the first score and receiving frequency correspondence table is 40, the first score corresponding to 15 Hz / s-25 Hz / s is 20, the first score corresponding to 25 Hz / s-35 Hz / s is 30, and the first score corresponding to 35 Hz / s-45 Hz / s is 10. The frequency of the candidate path 2 is 20 Hz / s, and the corresponding first score is 20; the frequency of the candidate path 3 is 10 Hz / s, and the corresponding first score is 40; and the frequency of the candidate path 4 is 40 Hz / s, and the corresponding first score is 10.
[0484] According to an embodiment of the present disclosure, the first score is determined based on the receiving frequency of the preselected path, and a method of substitution can also be used. The receiving frequency of the preselected path is substituted into a pre-set formula of the receiving frequency and the first score, to obtain the first score corresponding to the receiving frequency of the preselected path.
[0485] For example, assuming that the pre-set formula of the receiving frequency and the first score is: first score = 100 / receiving frequency of the preselected path. If the receiving frequency of the preselected path 1 is 10 Hz / s, the first score corresponding to the preselected path 1 is 10; and if the receiving frequency of the preselected path 2 is 20 Hz / s, the first score corresponding to the preselected path 1 is 5.
[0486] In step 4020, according to an embodiment of the present disclosure, the second score is determined based on the average time interval of the preselected path, and a method of looking up a table can be used. The average time interval of the preselected path is used to look up a pre-set average time interval and second score correspondence table, to obtain the second score corresponding to the average time interval of the preselected path.
[0487] For example, referring to Figure 41 , assuming that the average time interval and second score correspondence table is: the average time interval of 0.01 s corresponds to the second score of 12, the average time interval of 0.02 s corresponds to the second score of 10, the average time interval of 0.03 s corresponds to the second score of 8, the average time interval of 0.04 s corresponds to the second score of 5, and the average time interval of 0.05 s corresponds to the second score of 4. The average time interval of the candidate path 2 is 0.04 s, and the corresponding second score is 5; the average time interval of the candidate path 3 is 0.02 s, and the corresponding second score is 10; and the average time interval of the candidate path 4 is 0.05 s, and the corresponding second score is 4.
[0488] According to an embodiment of the present disclosure, the second score is determined based on the average time interval of the preselected path, and a method of substitution can also be used. The average time interval of the preselected path is substituted into a pre-set formula of the average time interval and the second score, to obtain the second score corresponding to the average time interval of the preselected path.
[0489] For example, assuming that the formula for substituting the pre-set average time interval and the second score is: second score = 1 / average time interval of pre-selected path. If the average time interval of pre-selected path 1 is 0.05 seconds, then the second score corresponding to pre-selected path 1 is 20; if the average time interval of pre-selected path 2 is 0.1 seconds, then the second score corresponding to pre-selected path 1 is 10.
[0490] In step 4030, according to an embodiment of the present disclosure, the sum of the first score and the second score can be determined as the total score of the pre-selected path. For example, referring to Figure 41 , the first score of candidate path 2 is 20, and the second score is 5, so the total score of candidate path 2 is 25. The first score of candidate path 3 is 40, and the second score is 10, so the total score of candidate path 3 is 50. The first score of candidate path 4 is 10, and the second score is 4, so the total score of candidate path 4 is 14.
[0491] According to an embodiment of the present disclosure, the average of the first score and the second score can be determined as the total score of the pre-selected path. For example, assuming that the first score of candidate path 1 is 20, and the second score is 10, then the total score is 15. Assuming that the first score of candidate path 2 is 8, and the second score is 12, then the total score is 10.
[0492] According to an embodiment of the present disclosure, different weights can be assigned to the first score and the second score respectively, so as to determine the weighted sum of the first score and the second score as the total score. By this method, the importance of the first score and the second score can be fully considered, and the accuracy of the calculated total score is improved. For example, assuming that the weight of the first score is 1.5, and the weight of the second score is 2. The first score of candidate path 1 is 20, and the second score is 10, so the total score of candidate path 1 is 50. The first score of candidate path 2 is 5, and the second score is 8, so the total score of candidate path 2 is 23.5.
[0493] In step 4040, according to an embodiment of the present disclosure, a score threshold can be set, and the candidate path corresponding to the total score greater than the score threshold is determined as the pre-selected path. For example, referring to Figure 41 , for example, the total score of candidate path 1 is 25, the total score of candidate path 2 is 50, and the total score of candidate path 3 is 14, assuming that the score threshold is 40, then candidate path 2 is determined as the pre-selected path.
[0494] According to an embodiment of the present disclosure, the candidate paths can be ranked in descending order according to the total scores, and the top 40% of the candidate paths are determined as the selected paths. For example, assuming that there are candidate path 1, candidate path 2, candidate path 3, candidate path 4 and candidate path 5, the total score of the candidate path 1 is 50, the total score of the candidate path 2 is 30, the total score of the candidate path 3 is 60, the total score of the candidate path 4 is 70, and the total score of the candidate path 5 is 40. Then, the candidate path 3 and the candidate path 4 are determined as the selected paths.
[0495] The embodiments of the above steps 4010 to 4040 can determine the total score of the preselected path by the receiving frequency of the preselected path and the average time interval of the preselected path, and then determine the selected path according to the total score of the preselected path, which considers both the receiving frequency of the preselected path in disorderly receiving the notification message and the average time interval of the preselected path in receiving the Ethernet direct memory access response, determines the selected path from multiple dimensions, and is more accurate than the determination result of a single dimension, thereby improving the accuracy of the congestion control.
[0496] Implementation details of the congestion control method of the embodiments of the present disclosure
[0497] The implementation details of the congestion control method of the embodiments of the present disclosure will be described in detail below with reference to Figure 42
[0498] In step 4210, an exchange architecture between the source node and the destination node is obtained, and the exchange architecture includes a plurality of exchange levels.
[0499] In an embodiment, the plurality of exchange levels includes a first access layer and a first aggregation layer in a first source container where the source node is located, a core layer including a plurality of core planes corresponding to a plurality of source containers, the plurality of source containers including the first source container and a second source container, a second aggregation layer and a second access layer in the second source container where the destination node is located, wherein the exchange nodes of the first access layer are connected to a plurality of exchange nodes of the first aggregation layer; the exchange nodes of the first aggregation layer are connected to a plurality of exchange nodes in a first core plane corresponding to the first source container, the plurality of core planes including the first core plane; the exchange nodes in the first core plane are connected to an exchange node in the second aggregation layer; and the exchange nodes in the second aggregation layer are connected to two exchange nodes in the second access layer.
[0500] In step 4220, a candidate path table is obtained, and the candidate path table includes a plurality of candidate paths between the source node and the destination node, wherein each candidate path passes through an exchange node at each exchange level of the exchange architecture.
[0501] In step 4231, the target message is sent through a target path in the plurality of candidate paths.
[0502] In step 4232, a de-sequencing notification message is received by the destination node, which is sent out by the destination node in case the sequence number of the packet received by the destination node does not match the time slot number at which it is received.
[0503] In step 4233, a first number of de-sequencing notification messages received within a first time duration is determined.
[0504] In an embodiment, the first timer is initialized to 0 and starts timing when the target packet is sent out.
[0505] If the first timer reaches the first time duration, the number of de-sequencing notification messages received is determined as the first number.
[0506] In step 4234, based on a comparison between the first number and a first threshold, it is determined whether the target path is congested.
[0507] In an embodiment, if the first number does not reach the first threshold, the first timer is reset to 0 and the number of de-sequencing notification messages received is cleared.
[0508] If the first number reaches the first threshold, it is determined that the target path is congested.
[0509] In an embodiment, after it is determined that the target path is congested based on the comparison between the first number and the first threshold, the congestion control method further comprises:
[0510] sending a congestion message indicating that the target path is congested to a global controller, so that the global controller updates the candidate path table of each source node according to the congestion message, wherein the global controller is located outside each source node.
[0511] In step 4241, the target packet is sent through the target path among the plurality of candidate paths.
[0512] In step 4242, an Ethernet direct memory access response of the destination node is received.
[0513] In step 4243, a round trip time between sending out the target packet and receiving the Ethernet direct memory access response is determined.
[0514] In an embodiment, the round trip time is read from a second timer, wherein the second timer is initialized to 0 and starts timing when the target packet is sent out.
[0515] In step 4244, based on a comparison between the round trip time and a second threshold, it is determined whether the target path is congested.
[0516] In an embodiment, a processing time of the destination node processing the target packet is obtained.
[0517] A time difference of the round trip time minus the processing time is determined.
[0518] if the time difference does not reach the second threshold, resetting the second timer to zero;
[0519] if the time difference reaches the second threshold, determining that the target path is congested.
[0520] In step 4251, sending the target packet through the target path in the plurality of candidate paths.
[0521] In step 4252, receiving a congestion notification packet from the destination node, wherein when the target packet passes through a switching node, if the switching node is congested internally, the switching node sends a congestion marked packet to the destination node, and the destination node sends out the congestion notification packet in response to the congestion marked packet.
[0522] In step 4253, determining a second number of congestion notification packets received within a second time length.
[0523] In an embodiment, initializing a third timer to 0 and starting timing;
[0524] if the third timer reaches the second time length, determining the number of received congestion notification packets as the second number.
[0525] In step 4254, determining that the target path is congested based on a comparison of the second number and a third threshold.
[0526] In an embodiment, if the second number does not reach the third threshold, resetting the third timer to zero and clearing the number of received congestion notification packets;
[0527] if the second number reaches the third threshold, determining that the target path is congested.
[0528] In step 4261, obtaining a packet queue group, the packet queue group including a plurality of packet queues, each packet queue corresponding to a candidate path;
[0529] sorting the plurality of packet queues in descending order of bandwidths of the candidate paths corresponding to the packet queues, wherein the target path is ranked first in the sorting, and the packet queue to which the target packet belongs corresponds to the target path.
[0530] In step 4262, sending the target packet through the target path in the plurality of candidate paths.
[0531] In step 4263, receiving a priority flow control packet from the destination node, the priority flow control packet indicating that the target path ranked first in the sorting is congested.
[0532] In step 4264, determining a third number of priority flow control packets received within a third time length.
[0533] In an embodiment, a fourth timer is initialized to 0 and started;
[0534] If the fourth timer reaches a third time length, a number of the received priority flow control packets is determined as a third number.
[0535] In step 4265, based on a comparison of the third number and a fourth threshold value, it is determined that the target path is congested.
[0536] In an embodiment, if the third number does not reach the fourth threshold value, the fourth timer is reset to 0 and the number of the received priority flow control packets is cleared to 0;
[0537] If the third number reaches the fourth threshold value, it is determined that the target path is congested.
[0538] In step 4271, the target packet is sent through the target path in the plurality of candidate paths.
[0539] In step 4272, a candidate path table update message is received from a total controller, wherein the total controller is located outside the source node and the destination node; when the target packet passes through each switching node of each switching level, the switching node adds congestion metadata on the target packet; if the destination node determines that the target path is congested according to the congestion metadata added by each switching node of each switching level, the congestion metadata added by each switching node of each switching level is sent to the total controller, and the total controller issues a candidate path table update message based on the congestion metadata.
[0540] In an embodiment, the congestion metadata includes a bandwidth usage rate of the switching node;
[0541] According to the congestion metadata added by each switching node of each switching level, determining that the target path is congested, comprises:
[0542] Obtaining a bandwidth usage rate threshold value of each switching level;
[0543] If the bandwidth usage rate of any switching node of any switching level is greater than the bandwidth usage rate threshold value of the switching level, it is determined that the target path is congested.
[0544] In step 4273, it is determined that the target path is congested.
[0545] In step 4281, a congestion probe request is sent to the destination node.
[0546] In step 4282, no congestion probe response to the congestion probe request is received within a fourth time length.
[0547] In step 4283, it is determined that the target path is congested.
[0548] In an embodiment, the fifth timer is initialized to 0 and started;
[0549] If a congestion probe response to the congestion probe request is received before the fifth timer reaches the fourth time length, the fifth timer is reset to 0;
[0550] If a congestion probe response to the congestion probe request is not received before the fifth timer reaches the fourth time length, it is determined that the target path is congested.
[0551] In step 4291, each other candidate path in the candidate path table except the target path is obtained.
[0552] In step 4292, a first message corresponding to each other candidate path is obtained, the first message being sent on the other candidate path corresponding to the first message at the same time period as the target message.
[0553] A second message returned by the destination node is obtained, the second message including the first message and bandwidth usage rates of the switching nodes at each switching level in the other candidate path, the bandwidth usage rates being added by the switching nodes at each switching level when the first message passes through the switching nodes.
[0554] In step 4293, a first query request is sent to the switching nodes at each switching level in the other candidate path.
[0555] In step 4294, a first response made by the switching nodes in response to the first query request is received, the first response including the bandwidth usage rates.
[0556] In step 4295, a bandwidth usage rate threshold of each switching level is obtained.
[0557] In each other candidate path, the other candidate path including the switching level with a bandwidth usage rate greater than the bandwidth usage rate threshold is filtered out, to obtain a filtered path.
[0558] In step 4296, for each filtered path, a first sum of the bandwidth usage rates of the switching nodes at each switching level is determined.
[0559] Based on the first sum, a replacement path is determined in each filtered path.
[0560] In step 4297, next-hop switching nodes at each switching level in the replacement path are encoded into a first extension field in the target message.
[0561] In step 4298, the target message is re-sent, so that the switching nodes at each switching level route to the next-hop switching nodes encoded in the first extension field.
[0562] Device and apparatus of the embodiments of the present disclosure
[0563] It can be understood that, although each step in each of the above flowcharts is displayed in sequence according to the representation of the arrow, these steps are not necessarily executed in the order represented by the arrow. Unless otherwise specified in the embodiments, the execution of these steps is not strictly limited in sequence, and these steps can be executed in other orders. Moreover, at least part of the steps in the above flowcharts can include multiple steps or multiple stages, which are not necessarily executed at the same time, but can be executed at different times, and the execution order of these steps or stages is not necessarily sequential, but can be alternately executed with at least part of other steps or steps or stages in other steps.
[0564] It should be noted that, in each specific embodiment of the present application, when relevant processing needs to be performed on data related to the characteristics of the object, such as object attribute information or attribute information set, the permission or consent of the object will be obtained first, and the collection, use and processing of the data will comply with relevant laws, regulations and standards. In addition, when the object attribute information needs to be obtained in the embodiments of the present application, the separate permission or separate consent of the object will be obtained through a pop-up window or by jumping to a confirmation page, and after the separate permission or separate consent of the object is obtained, the necessary object-related data for enabling the embodiments of the present application to operate normally will be obtained.
[0565] Figure 43 A structural schematic diagram of a congestion control apparatus 4300 provided by the embodiments of the present disclosure is shown. The congestion control apparatus 4300 includes:
[0566] A first obtaining unit 4310 is configured to obtain a switching architecture between a source node and a destination node, the switching architecture including a plurality of switching levels;
[0567] A second obtaining unit 4320 is configured to obtain a candidate path table, the candidate path table including a plurality of candidate paths between the source node and the destination node, wherein each candidate path passes through one switching node at each switching level of the switching architecture;
[0568] A first determining unit 4330 is configured to send a target message through a target path in the plurality of candidate paths, and determine that the target path is congested;
[0569] A third obtaining unit 4340 is configured to, for each other candidate path in the candidate path table except the target path, obtain a bandwidth usage rate of a switching node at each switching level in the other candidate path;
[0570] The encoding unit 4350 is configured to determine a replacement path from the other candidate paths based on the bandwidth usage, and encode the next hop switching node of each switching level in the replacement path into a first extension field in the target packet.
[0571] The retransmission unit 4360 is configured to retransmit the target packet so that the switching nodes in each switching level are routed to the next hop switching node encoded in the first extension field.
[0572] Optionally, the encoding unit 4350 is specifically configured to:
[0573] obtain a bandwidth usage threshold of each switching level;
[0574] from the other candidate paths, filter out the other candidate paths containing the switching level with the bandwidth usage greater than the bandwidth usage threshold, to obtain filtered paths;
[0575] for each filtered path, determine a first sum of the bandwidth usage of the switching nodes of each switching level;
[0576] determine a replacement path from the filtered paths based on the first sum.
[0577] Optionally, the congestion control apparatus further comprises a second determining unit, which is specifically configured to:
[0578] for each other candidate path in the candidate path table except the target path, determine a link coincidence ratio of the other candidate path with the target path;
[0579] determine the other candidate path with the link coincidence ratio less than a first ratio as a preselected path;
[0580] generate a dummy packet;
[0581] send the dummy packet through the plurality of preselected paths respectively, and for each preselected path, receive an out-of-order notification message and an Ethernet direct memory access response sent by a destination node;
[0582] determine, for each preselected path, a receiving frequency of the out-of-order notification message and an average time interval from sending the dummy packet to receiving the Ethernet direct memory access response;
[0583] determine a reselected path from the plurality of preselected paths based on the receiving frequency and the average time interval.
[0584] The encoding unit 4350 is specifically configured to:
[0585] from the reselected paths, filter out the reselected path containing the switching level with the bandwidth usage greater than the bandwidth usage threshold, to obtain filtered paths.
[0586] Optionally, the second determining unit is specifically configured to:
[0587] determine the first score based on a receiving frequency of the preselected path;
[0588] determine the second score based on an average time interval of the preselected path;
[0589] determine a total score of the preselected path based on the first score and the second score;
[0590] determine the reselected path from the plurality of preselected paths based on the total scores of the plurality of preselected paths.
[0591] Optionally, the third obtaining unit 4340 is specifically configured to:
[0592] obtain a first packet corresponding to each other candidate path, the first packet being sent in a same time period as the target packet on the other candidate path corresponding to the first packet;
[0593] obtain a second packet returned by the destination node, the second packet including the first packet and bandwidth usage rates of the switching nodes at each switching level in the other candidate path, the bandwidth usage rates being added by the switching nodes at each switching level when the first packet passes through the switching nodes.
[0594] Optionally, the third obtaining unit 4340 is specifically configured to:
[0595] send a first query request to the switching nodes at each switching level in the other candidate path;
[0596] receive a first response made by the switching nodes in response to the first query request, the first response containing the bandwidth usage rates.
[0597] Optionally, the first determining unit 4330 is specifically configured to:
[0598] receive an out-of-order notification message of the destination node, the out-of-order notification message being sent in a case where a sequence number of a packet received by the destination node does not match a time slot number at which the packet is received;
[0599] determine a first number of the out-of-order notification messages received within a first time length;
[0600] determine that the target path is congested based on a comparison between the first number and a first threshold.
[0601] Optionally, the first determining unit 4330 is specifically configured to:
[0602] initialize a first timer to 0 and start timing;
[0603] if the first timer reaches the first time length, determine a number of the out-of-order notification messages received as the first number.
[0604] Optionally, the first determining unit 4330 is specifically configured to:
[0605] if the first number does not reach the first threshold, resetting the first timer and clearing the number of received out-of-order notification messages;
[0606] if the first number reaches the first threshold, determining that the target path is congested.
[0607] Optionally, the congestion control device further comprises a sending unit, which is specifically configured to:
[0608] sending a congestion message indicating that the target path is congested to a general controller, so as to update the candidate path table of each source node by the general controller according to the congestion message, wherein the general controller is located outside each source node.
[0609] Optionally, the first determining unit 4330 is specifically configured to:
[0610] receiving an Ethernet direct memory access response of the destination node;
[0611] determining a round-trip time between sending the target message and receiving the Ethernet direct memory access response;
[0612] determining that the target path is congested based on a comparison between the round-trip time and a second threshold.
[0613] Optionally, the first determining unit 4330 is specifically configured to:
[0614] reading the round-trip time from the second timer, wherein the second timer is initialized to 0 and starts timing when the target message is sent.
[0615] Optionally, the first determining unit 4330 is specifically configured to:
[0616] obtaining a processing time of the destination node for processing the target message;
[0617] determining a time difference between the round-trip time and the processing time;
[0618] if the time difference does not reach the second threshold, resetting the second timer;
[0619] if the time difference reaches the second threshold, determining that the target path is congested.
[0620] Optionally, the first determining unit 4330 is specifically configured to:
[0621] receiving a congestion notification message of the destination node, wherein when the target message passes through a switching node, if the switching node is congested internally, the switching node sends a congestion marked message to the destination node, and the destination node sends the congestion notification message in response to the congestion marked message;
[0622] determine a second number of congestion notification messages received in a second time length;
[0623] determine that the target path is congested based on a comparison between the second number and a third threshold value.
[0624] Optionally, the first determining unit 4330 is specifically configured to:
[0625] initialize a third timer to 0 and start timing;
[0626] if the third timer reaches the second time length, determine the number of received congestion notification messages as the second number.
[0627] Optionally, the first determining unit 4330 is specifically configured to:
[0628] if the second number does not reach the third threshold value, reset the third timer to 0 and clear the number of received congestion notification messages;
[0629] if the second number reaches the third threshold value, determine that the target path is congested.
[0630] Optionally, the first determining unit 4330 is specifically configured to:
[0631] obtain a message queue group, the message queue group including a plurality of message queues, each message queue corresponding to a candidate path;
[0632] sort the plurality of message queues in descending order of bandwidths of the candidate paths corresponding to the message queues, wherein the target path is ranked first in the sorting, and the message queue to which the target message belongs corresponds to the target path;
[0633] send the target message through the target path.
[0634] Optionally, the first determining unit 4330 is specifically configured to:
[0635] receive a priority flow control message of the destination node, the priority flow control message indicating that the target path ranked first in the sorting has occurred congestion;
[0636] determine a third number of received priority flow control messages in a third time length;
[0637] determine that the target path is congested based on a comparison between the third number and a fourth threshold value.
[0638] Optionally, the first determining unit 4330 is specifically configured to:
[0639] initialize a fourth timer to 0 and start timing;
[0640] if the fourth timer reaches the third time length, determine the number of received priority flow control messages as the third number.
[0641] Optionally, the first determining unit 4330 is specifically configured to:
[0642] if the third number does not reach the fourth threshold, resetting the fourth timer and clearing the number of received priority flow control packets;
[0643] if the third number reaches the fourth threshold, determining that the target path is congested.
[0644] Optionally, the first determining unit 4330 is specifically configured to:
[0645] if a candidate path table update message is received from a total controller, determining that the target path is congested, wherein the total controller is located outside the source node and the destination node; when the target packet passes through each switching level of switching nodes, the switching nodes add congestion metadata on the target packet; if the destination node determines that the target path is congested according to the congestion metadata added by each switching level of switching nodes, the congestion metadata added by each switching level of switching nodes is sent to the total controller, and the total controller issues a candidate path table update message based on the congestion metadata.
[0646] Optionally, the congestion metadata includes a bandwidth usage rate of the switching node;
[0647] The first determining unit 4330 is specifically configured to:
[0648] obtain a bandwidth usage rate threshold of each switching level;
[0649] if the bandwidth usage rate of any switching node of any switching level is greater than the bandwidth usage rate threshold of the switching level, determining that the target path is congested.
[0650] Optionally, the first determining unit 4330 is specifically configured to:
[0651] sending a congestion probe request to the destination node;
[0652] if no congestion probe response to the congestion probe request is received within a fourth time length, determining that the target path is congested.
[0653] Optionally, the first determining unit 4330 is specifically configured to:
[0654] initializing a fifth timer to 0 and starting timing;
[0655] if a congestion probe response to the congestion probe request is received before the fifth timer reaches the fourth time length, resetting the fifth timer;
[0656] if no congestion probe response to the congestion probe request is received when the fifth timer reaches the fourth time length, determining that the target path is congested.
[0657] Optionally, the plurality of switching levels comprises: a first access layer and a first aggregation layer in a first source container where the source node is located; a core layer comprising a plurality of core planes corresponding to a plurality of source containers, the plurality of source containers comprising the first source container and a second source container; a second aggregation layer and a second access layer in a second source container where the destination node is located; wherein the switching nodes of the first access layer are connected to the plurality of switching nodes of the first aggregation layer; the switching nodes of the first aggregation layer are connected to the plurality of switching nodes in the first core plane corresponding to the first source container, the plurality of core planes comprising the first core plane; the switching nodes in the first core plane are connected to one switching node in the second aggregation layer; and the switching nodes in the second aggregation layer are connected to two switching nodes in the second access layer.
[0658] Referring to Figure 44 , Figure 44 A structure block diagram of a part of a terminal for implementing the congestion control method of the embodiments of the present disclosure, the terminal comprising: a Radio Frequency (RF) circuit 4410, a memory 4415, an input unit 4430, a display unit 4440, a sensor 4450, an audio circuit 4460, a wireless fidelity (WiFi) module 4470, a processor 4480, and a power supply 4490, and the like. Those skilled in the art can understand that the terminal structure shown does not constitute a limitation on mobile phones or computers, and can include more or fewer components than shown, or combine certain components, or different component arrangements. Figure 44 The terminal structure shown does not constitute a limitation on mobile phones or computers, and can include more or fewer components than shown, or combine certain components, or different component arrangements.
[0659] The RF circuit 4410 can be used for receiving and sending signals in the process of receiving or calling, and in particular, receiving downlink information from the base station and processing it by the processor 4480; in addition, sending uplink data to the base station.
[0660] The memory 4415 can be used to store software programs and modules, and the processor 4480 can execute various functions of the content terminal and data processing by running the software programs and modules stored in the memory 4415.
[0661] The input unit 4430 can be used to receive input digital or character information, and generate key signal input related to the setting and function control of the content terminal. Specifically, the input unit 4430 can include a touch panel 4431 and other input devices 4432.
[0662] The display unit 4440 can be used to display input information or provided information and various menus of the content terminal. The display unit 4440 can include a display panel 4441.
[0663] The audio circuit 4460, the speaker 4461, and the microphone 4462 can provide an audio interface.
[0664] In this embodiment, the processor 4480 included in the terminal can perform the congestion control method of the foregoing embodiments.
[0665] The terminal of the embodiments of the present disclosure includes but is not limited to a mobile phone, a computer, a smart voice interaction device, a smart home appliance, a vehicle-mounted terminal, an aircraft, and the like. The embodiments of the present disclosure can be applied to various scenarios, including but not limited to content recommendation, data screening, and the like.
[0666] Figure 45 A structural block diagram of a part of a server for implementing the congestion control method of the embodiments of the present disclosure. The server can have a large difference due to different configurations or performances, and can include one or more central processing units (CPUs) 4522 (for example, one or more processors) and a memory 4532, one or more storage media 4530 (for example, one or more mass storage devices) storing application programs 4542 or data 4544. Among them, the memory 4532 and the storage medium 4530 can be temporary storage or persistent storage. The programs stored in the storage medium 4530 can include one or more modules (not shown in the figure), each of which can include a series of instruction operations in the server. Further, the central processing unit 4522 can be configured to communicate with the storage medium 4530 and execute a series of instruction operations in the storage medium 4530 on the server.
[0667] The server can also include one or more power supplies 4526, one or more wired or wireless network interfaces 4550, one or more input / output interfaces 4558, and / or one or more operating systems 4541, such as Windows ServerTM, Mac OS XTM, UnixTM, LinuxTM, FreeBSDTM, and the like.
[0668] The central processing unit 4522 in the server can be used to execute the congestion control method of the embodiments of the present disclosure.
[0669] The embodiments of the present disclosure also provide a computer-readable storage medium for storing program code, the program code being used to execute the congestion control method of the foregoing embodiments.
[0670] The embodiments of the present disclosure also provide a computer program product including a computer program. The processor of the computer device reads the computer program and executes it, so that the computer device executes the congestion control method as described above.
[0671] The terms "first", "second", "third", "fourth" and the like in the description of the disclosure and the above drawings, if any, are used to distinguish similar objects, and do not necessarily have to be used to describe a particular order or sequence. It should be understood that the data thus used can be interchanged under appropriate circumstances, so that the embodiments of the disclosure described herein can be implemented in an order other than that illustrated or described herein. In addition, the terms "include" and "contain" and any variations thereof are intended to cover non-exclusive inclusion, for example, a process, method, system, product or device containing a series of steps or units does not necessarily have to be limited to those steps or units clearly listed, but can include other steps or units not clearly listed or inherent to these processes, methods, products or devices.
[0672] It should be understood that in the present disclosure, "at least one" refers to one or more, and "multiple" refers to two or more. "And / or" is used to describe the relationship between the associated content, which means that there can be three relationships, for example, "A and / or B" can represent three cases: only A exists, only B exists, and A and B exist at the same time, where A and B can be singular or plural. The character " / " generally represents an "or" relationship between the associated content. "At least one of the following" or similar expressions means any combination of these items, including any combination of single or multiple items. For example, at least one of a, b or c can mean a, b, c, "a and b", "a and c", "b and c", or "a and b and c", where a, b, and c can be single or multiple.
[0673] It should be understood that in the description of the embodiments of the present disclosure, the meaning of multiple (or multiple items) is two or more, greater than, less than, more than, etc. are not included in the number, above, below, etc. are understood to include the number.
[0674] In several embodiments provided by the present disclosure, it should be understood that the disclosed system, device and method can be implemented in other ways. For example, the device embodiments described above are only schematic. For example, the division of units is only a logical function division, and actual implementation can have another division manner, for example, multiple units or components can be combined or integrated into another system, or some features can be omitted or not executed. The coupling or direct coupling or communication connection between the displayed or discussed each other can be indirect coupling or communication connection through some interface, device or unit, which can be electrical, mechanical or other forms.
[0675] The units described as separate components may or may not be physically separate, and the components displayed as units may or may not be physical units, i.e., may be located in one place, or may be distributed to multiple network units. Part or all of the units can be selected according to actual needs to achieve the purpose of the embodiment scheme.
[0676] In addition, each functional unit in various embodiments of the present disclosure can be integrated into one processing unit, or each unit can exist physically, or two or more units can be integrated into one unit. The integrated unit can be realized in the form of hardware or in the form of a software functional unit.
[0677] If the integrated unit is realized 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 understanding, the technical solutions of the present disclosure essentially or the part that contributes to the prior art or the whole or part of the technical solutions can be embodied in the form of a software product. The computer software product is stored in a storage medium, and includes a number of instructions for causing a computer device (which can be a personal computer, a server 130, or a network device, etc.) to execute all or part of the steps of the various embodiments of the method of the present disclosure. The aforementioned storage medium includes: a U disk, a mobile hard disk, a read-only memory (ROM), a random access memory (RAM), a magnetic disk or an optical disk, and various media that can store program codes.
[0678] It should also be appreciated that the various embodiments provided by the present disclosure can be combined in any way to achieve different technical effects.
[0679] The above is a specific description of the embodiments of the present disclosure, but the present disclosure is not limited to the above embodiments. Those skilled in the art can make various equivalent modifications or replacements without departing from the spirit of the present disclosure, and these equivalent modifications or replacements are all included in the scope defined by the claims of the present disclosure.
Claims
1. A congestion control method, characterized in that, include: Obtain the exchange architecture between the source node and the destination node, wherein the exchange architecture includes multiple exchange layers; Obtain a candidate path table, which includes multiple candidate paths between the source node and the destination node, wherein the candidate paths pass through a switching node at each of the switching layers of the switching architecture; The target message is sent through the target path among the multiple candidate paths, and the target path is determined to be congested; For each other candidate path besides the target path in the candidate path table, obtain the bandwidth utilization of the switching nodes at each of the switching layers in the other candidate paths; Based on the bandwidth utilization, a replacement path is determined among the other candidate paths, and the next-hop switching node of each switching layer in the replacement path is encoded into the first extended field of the target packet. The target message is retransmitted so that the switching nodes in each of the switching layers can route to the next-hop switching node encoded in the first extended field.
2. The congestion control method according to claim 1, characterized in that, The step of determining a replacement path among the other candidate paths based on the bandwidth utilization includes: Obtain the bandwidth utilization threshold for each of the aforementioned switching layers; Among the other candidate paths, the other candidate paths that contain the switching layer with a bandwidth utilization rate greater than the bandwidth utilization rate threshold are filtered out to obtain the filtered paths; For each of the filtered paths, a first sum of the bandwidth utilization of the switching nodes at each of the switching layers is determined; Based on the first and the second, the replacement path is determined in each of the filtered paths.
3. The congestion control method according to claim 1, characterized in that, The step of obtaining the bandwidth utilization of the switching nodes at each of the other candidate paths includes: Obtain the first message corresponding to each of the other candidate paths, and send the first message on the other candidate path corresponding to the first message and at the same time period as the target message. Obtain the second message returned by the destination node. The second message includes the first message and the bandwidth utilization of the switching nodes at each of the other candidate paths. The bandwidth utilization is added by the switching nodes at each of the switching layers when the first message passes through the switching node.
4. The congestion control method according to claim 1, characterized in that, The step of obtaining the bandwidth utilization of the switching nodes at each of the other candidate paths includes: Send a first query request to the exchange node of each of the other candidate paths at each of the exchange levels; The exchange node receives a first response to the first query request, the first response including the bandwidth utilization rate.
5. The congestion control method according to claim 1, characterized in that, Determining that the target path is congested includes: Receive an out-of-order notification message from the destination node, the out-of-order notification message being sent when the sequence number of the message received by the destination node does not match the receiving timeslot number; Determine the first number of out-of-order notification messages received within the first time period; Based on the comparison between the first number and the first threshold, the target path is determined to be congested.
6. The congestion control method according to claim 5, characterized in that, Determining the first number of out-of-order notification messages received within the first time period includes: Initialize the first timer to 0 and start timing; If the first timer reaches the first duration, the number of out-of-order notification messages received is determined as the first number.
7. The congestion control method according to claim 6, characterized in that, Determining the target path congestion based on the comparison between the first number and the first threshold includes: If the first number does not reach the first threshold, the first timer is reset to zero, and the number of received out-of-order notification messages is cleared to zero. If the first number reaches the first threshold, the target path is determined to be congested.
8. The congestion control method according to claim 5, characterized in that, After determining that the target path is congested based on a comparison between the first number and a first threshold, the congestion control method further includes: A congestion message indicating congestion on the target path is sent to the central controller, which updates the candidate path table of each of the source nodes based on the congestion message, wherein the central controller is located outside of each of the source nodes.
9. The congestion control method according to claim 1, characterized in that, Determining that the target path is congested includes: Receive the Ethernet direct memory access response from the destination node; Determine the round-trip time from sending the target message to receiving the Ethernet direct memory access response; The target path is determined to be congested based on a comparison between the round-trip time and a second threshold.
10. The congestion control method according to claim 1, characterized in that, Determining that the target path is congested includes: The congestion notification message from the destination node is received. If the target message is congested when it passes through the switching node, the switching node sends a congestion marking message to the destination node, and the destination node sends the congestion notification message in response to the congestion marking message. Determine a second number of the congestion notification messages received within a second time period; The target path congestion is determined based on a comparison between the second number and the third threshold.
11. The congestion control method according to claim 1, characterized in that, Sending the target message through the target path among the multiple candidate paths includes: Obtain a message queue group, wherein the message queue group includes multiple message queues, and each message queue corresponds to one of the candidate paths; The multiple message queues are sorted in descending order of bandwidth of the candidate paths corresponding to the message queues, wherein the target path is ranked first in the sorting, and the message queue to which the target message belongs corresponds to the target path. The target message is sent through the target path.
12. The congestion control method according to claim 11, characterized in that, Determining that the target path is congested includes: Receive a priority flow control message from the destination node, the priority flow control message indicating that the first destination path in the order is congested; Determine the third number of the priority flow control messages received within the third time period; The target path congestion is determined based on the comparison between the third number and the fourth threshold.
13. The congestion control method according to claim 1, characterized in that, Determining that the target path is congested includes: If a candidate path table update message is received from the central controller, the target path is determined to be congested, wherein the central controller is located outside the source node and the destination node; when the target packet passes through the switching nodes of each of the switching layers, the switching nodes add congestion metadata to the target packet; if the destination node determines that the target path is congested based on the congestion metadata added by the switching nodes of each of the switching layers, it sends the congestion metadata added by the switching nodes of each of the switching layers to the central controller, and the central controller issues the candidate path table update message based on the congestion metadata.
14. The congestion control method according to claim 13, characterized in that, The congestion metadata includes the bandwidth utilization of the switching node; Determining target path congestion based on the congestion metadata added by the switching nodes at each of the switching layers includes: Obtain the bandwidth utilization threshold for each of the aforementioned switching layers; If the bandwidth utilization of any switching node in the switching layer is greater than the bandwidth utilization threshold of the switching layer, the target path is determined to be congested.
15. The congestion control method according to claim 1, characterized in that, Determining that the target path is congested includes: Send a congestion detection request to the destination node; If no congestion probe response is received for the congestion probe request within the fourth time period, the target path is determined to be congested.
16. A congestion control device, characterized in that, include: The first acquisition unit is used to acquire the exchange architecture between the source node and the destination node, the exchange architecture including multiple exchange layers; The second acquisition unit is used to acquire a candidate path table, which includes multiple candidate paths between the source node and the destination node, wherein the candidate paths pass through a switching node at each of the switching layers of the switching architecture; The first determining unit is configured to send the target message through the target path among the multiple candidate paths, and determine that the target path is congested; The third acquisition unit is used to acquire the bandwidth utilization rate of the switching nodes at each switching level in each of the other candidate paths besides the target path in the candidate path table. An encoding unit is configured to determine a replacement path among the other candidate paths based on the bandwidth utilization rate, and to encode the next-hop switching node of each switching layer in the replacement path into a first extended field in the target packet. The retransmission unit is used to retransmit the target message so that the switching nodes in each of the switching layers can route to the next-hop switching node encoded in the first extended field.
17. An electronic device comprising a memory and a processor, wherein the memory stores a computer program, characterized in that, When the processor executes the computer program, it implements the congestion control method according to any one of claims 1 to 15.
18. A computer-readable storage medium storing a computer program, characterized in that, When the computer program is executed by the processor, it implements the congestion control method according to any one of claims 1 to 15.
19. A computer program product comprising a computer program that is read and executed by a processor of a computer device, causing the computer device to perform the congestion control method according to any one of claims 1 to 15.