Congestion control method and apparatus, and electronic device, computer-readable storage medium and computer program product
By updating the congestion sliding window based on the overload rate of switching nodes in the data center network and utilizing the acknowledgment and response flags of switching nodes, the accuracy and deployment challenges of congestion control in existing technologies are solved, and efficient congestion management is achieved.
Patent Information
- Application Number
- PCT/CN2025/092609
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2024-05-29
- Filing Date
- 2025-04-30
- Publication Date
- 2025-12-04
AI Technical Summary
In existing technologies, congestion control methods for data center networks, such as DCQCN and HPCC, are difficult to execute precisely. DCQCN has coarse-grained speed regulation, while HPCC has excessively high requirements for switch customization, making it difficult to deploy in actual production.
By interacting with the exchange nodes between the source and destination nodes, the first congestion sliding window is updated based on the overload rate of the exchange nodes. The number of congestion and unobstructed flags in the acknowledgment response returned by the destination node is used to precisely control the number of packets sent.
It enables precise congestion control of data center networks, reduces the customization requirements for destination nodes, is easy to deploy, and improves the utilization efficiency of network bandwidth.
Smart Images

Figure CN2025092609_04122025_PF_FP_ABST
Abstract
Description
Congestion control methods, apparatus, electronic devices, computer-readable media, and computer program products
[0001] Cross-references to related applications
[0002] This application is based on Chinese Patent Application No. 202410684955.7, filed on May 29, 2024, and claims priority to that Chinese Patent Application, the entire contents of which are incorporated herein by reference. Technical Field
[0003] This disclosure relates to the field of data communications, and in particular to a congestion control method, apparatus, electronic device, computer-readable medium, and computer program product. Background Technology
[0004] Since data center network links are shared, congestion typically occurs when more than one data stream flows through a link. When congestion occurs, multiple data streams entering the switch from different ports may be routed to the same output port. Because the receiving bandwidth of multiple receiving ports exceeds the sending bandwidth of a single output port, data packets accumulate in the output port's buffer queue, causing queue backlog. This not only reduces the efficiency of data transmission but also consumes the switch's buffer resources.
[0005] In related technologies, congestion control is achieved through Data Center Quantitative Congestion Notification (DCQCN) or High-Precision Congestion Control (HPCC). However, DCQCN's rate-deceleration and rate-increase algorithms have relatively coarse granularity, making it difficult to accurately execute congestion control. HPCC, on the other hand, relies on acquiring the status information of the switches through which the data flow passes, which places excessive demands on switch customization, making it difficult to apply to actual production and deployment. Summary of the Invention
[0006] This disclosure provides a congestion control method, apparatus, electronic device, computer-readable medium, and computer program product capable of accurately performing congestion control.
[0007] This disclosure provides a congestion control method applied to a source node, including:
[0008] A message is sent to the destination node based on a first congestion window, wherein the first congestion window is a window that moves in the queue of messages to be sent. The first congestion window is used to indicate a first number of messages to be sent to the destination node. When a message in the first number of messages is acknowledged, the first congestion window is slid to accommodate the message to be sent and the message to be sent that is accommodated in the first congestion window is sent.
[0009] The acknowledgment response returned by the destination node is received. The acknowledgment response includes a first number of packets carrying congestion flags and a second number of packets carrying unobstructed flags. A switching node is provided between the source node and the destination node. Both the congestion flag and the unobstructed flag are obtained by the switching node by marking the packets received by the switching node based on the buffer queue within the switching node.
[0010] The overload rate of the switching node is determined based on the first quantity and the second quantity;
[0011] The first congestion window is updated based on the overload rate, wherein the number of packets to be sent that are accommodated in the updated first congestion window is controlled.
[0012] This disclosure provides a congestion control method applied to a destination node, the congestion control method comprising:
[0013] Receive messages sent by the source node;
[0014] When it is determined that a predetermined time period has elapsed since the last acknowledgment was sent, based on the packets received within the predetermined time period, a first number of packets carrying congestion flags and a second number of packets carrying unobstructed flags are determined, and an acknowledgment is generated based on the first number and the second number and returned to the source node. Here, a switching node is provided between the source node and the destination node, and the congestion flag and the unobstructed flag are both obtained by the switching node by marking the packets received by the switching node based on the buffer queue within the switching node.
[0015] When a predetermined time period has not elapsed since the last acknowledgment was sent, and a predetermined number of messages have been received, the first quantity and the second quantity are determined based on the predetermined number of messages, and an acknowledgment is generated based on the first quantity and the second quantity, and the acknowledgment is returned to the source node.
[0016] This disclosure provides a congestion control method applied to a source node, the congestion control method further comprising:
[0017] A message is sent to the destination node based on a first congestion window, wherein the first congestion window is a window that moves in the queue of messages to be sent. The first congestion window is used to indicate a first number of messages to be sent to the destination node. When a message in the first number of messages is acknowledged, the first congestion window is slid to accommodate the message to be sent and the message to be sent that is accommodated in the first congestion window is sent.
[0018] The system receives the acknowledgment response returned by the destination node. The acknowledgment response includes the overload rate of the switching node. A switching node is provided between the source node and the destination node. The switching node marks the packets based on the buffer queue within the switching node to obtain congestion tags and unobstructed tags. The overload rate is determined by the destination node based on a first number of packets with congestion tags and a second number of packets carrying unobstructed tags.
[0019] The first congestion window is updated based on the overload rate, wherein the number of packets to be sent that are accommodated in the updated first congestion window is controlled.
[0020] This disclosure provides a congestion control method applied to a destination node, the congestion control method further comprising:
[0021] Receive messages sent by the source node;
[0022] When a predetermined time period has elapsed since the last acknowledgment was sent, based on the packets received within the predetermined time period, a first number of packets carrying congestion flags and a second number of packets carrying unobstructed flags are determined. Based on the first number and the second number, the overload rate of the switching node is determined. An acknowledgment is generated based on the overload rate and returned to the source node. Here, a switching node is provided between the source node and the destination node. The congestion flag and the unobstructed flag are both obtained by the switching node by marking the packets received by the switching node based on the buffer queue within the switching node.
[0023] When a predetermined time period has elapsed since the last acknowledgment was sent and a predetermined number of messages have been received, the first quantity and the second quantity are determined based on the predetermined number of messages, and the overload rate of the switching node is determined based on the first quantity and the second quantity. An acknowledgment is generated based on the overload rate and returned to the source node.
[0024] This disclosure provides a congestion control device disposed in a source node, the congestion control device comprising:
[0025] The first sending unit is configured to send a message to a destination node based on a first congestion window, wherein the first congestion window is a window that moves in a queue of messages to be sent, and the first congestion window is used to indicate a first number of messages to be sent to the destination node. When a message in the first number of messages is acknowledged, the first congestion window is slid to accommodate the message to be sent, and the message to be sent that is accommodated in the first congestion window is sent.
[0026] The first receiving unit is configured to receive the acknowledgment response returned by the destination node. The acknowledgment response includes a first number of packets carrying congestion flags and a second number of packets carrying unobstructed flags. A switching node is provided between the source node and the destination node. Both the congestion flag and the unobstructed flag are obtained by the switching node by marking the packets received by the switching node based on the buffer queue within the switching node.
[0027] The first determining unit is configured to determine the overload rate of the switching node based on the first quantity and the second quantity;
[0028] The update unit is configured to update the first congestion window based on the overload rate, wherein the number of packets to be sent that are accommodated in the updated first congestion window is controlled.
[0029] This disclosure provides a congestion control device, disposed in a destination node, the device comprising:
[0030] The second receiving unit is configured to receive messages sent by the source node;
[0031] The second determining unit is configured to, when a predetermined time period has elapsed since the last acknowledgment was sent, determine a first number of packets carrying congestion flags and a second number of packets carrying unobstructed flags based on the packets received within the predetermined time period, and generate an acknowledgment based on the first number and the second number, and return the acknowledgment to the source node. The source node and the destination node are connected by a switching node, and both the congestion flag and the unobstructed flag are obtained by the switching node marking the packets received by the switching node based on a buffer queue within the switching node.
[0032] The third determining unit is configured to, when a predetermined time period has not elapsed since the last acknowledgment was sent and a predetermined number of messages have been received, determine the first quantity and the second quantity based on the predetermined number of messages, generate an acknowledgment based on the first quantity and the second quantity, and return the acknowledgment to the source node.
[0033] This disclosure provides an electronic device, including a memory and a processor, wherein the memory stores a computer program, and the processor executes the computer program to implement the congestion control method described above.
[0034] This disclosure provides a computer-readable storage medium storing a computer program that, when executed by a processor, implements the congestion control method described above.
[0035] This disclosure provides 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 as described above.
[0036] In this embodiment, an acknowledgment response is received from the destination node, and the overload rate of the switching node is determined based on a first number of packets carrying congestion flags and a second number of packets carrying unobstructed flags contained in the acknowledgment response. The overload rate accurately reflects the current congestion status of the switching nodes in the link. Thus, by updating the first congestion window based on the overload rate, the number of target packets sent can be precisely controlled, thereby achieving precise congestion control. Once a packet in the first congestion window receives an acknowledgment response, the first congestion window is slid to accommodate more unsent packets, which are then sent. This way, when the load status of the switching node reflected by the overload rate is heavy, the length of the first congestion window is not increased, thus preventing the transmission of new packets and alleviating network congestion. When the load status of the switching node reflected by the overload rate is light, the length of the first congestion window is increased to accommodate new packets for transmission, fully utilizing network bandwidth and achieving precise congestion control. Meanwhile, the method used in this embodiment only needs to insert a first number of target packets carrying congestion flags and a second number of target packets carrying unobstructed flags into the acknowledgment response returned by the destination node to accurately perform congestion control. It has low customization requirements for the destination node and does not require additional customization of the switching node, making it easy to deploy.
[0037] Other features and advantages of this disclosure will be set forth in the following description and will be apparent in part from the description or may be learned by practicing the disclosure. The objectives and other advantages of this disclosure may be realized and obtained by means of the structures particularly pointed out in the description, claims and drawings. Attached Figure Description
[0038] The accompanying drawings are provided to further understand the technical solutions of this disclosure and constitute a part of the specification. They are used together with the embodiments of this disclosure to explain the technical solutions of this disclosure and do not constitute a limitation on the technical solutions of this disclosure.
[0039] Figures 1A and 1B are system architecture diagrams of a congestion control method according to embodiments of the present disclosure;
[0040] Figure 2A is a schematic diagram of the software configuration of a congestion control method according to an embodiment of the present disclosure;
[0041] Figure 2B is a schematic diagram of the hardware configuration of a congestion control method according to an embodiment of the present disclosure.
[0042] Figure 3 is a schematic diagram of the topology of a data center network to which the congestion control method according to an embodiment of the present disclosure is applied;
[0043] Figure 4 is an overall flowchart of the congestion control method for calculating overload rate from the source node according to an embodiment of the present disclosure, applied to the source node side.
[0044] Figure 5 is a schematic diagram of a first congestion sliding window according to an embodiment of the present disclosure;
[0045] Figure 6 is a schematic diagram of a scheme model of the congestion control method according to an embodiment of the present disclosure applied to the source node side;
[0046] Figure 7A is a schematic diagram of a system model of a congestion control method applied to the source node side according to an embodiment of the present disclosure;
[0047] Figure 7B is an interactive schematic diagram of the congestion control method according to an embodiment of the present disclosure applied to the source node side;
[0048] Figure 8 is a flowchart of the destination node sending an acknowledgment response according to an embodiment of the present disclosure;
[0049] Figure 9 is a schematic diagram of the queue length within an exchange node according to an embodiment of the present disclosure;
[0050] Figure 10 is a schematic diagram of a switching node marking packets based on the queue length within the switching node according to an embodiment of the present disclosure;
[0051] Figure 11 is a flowchart illustrating the determination of the overload rate of a switching node based on a first quantity and a second quantity according to an embodiment of the present disclosure.
[0052] Figure 12 is a schematic diagram of determining the first cycle based on the number of confirmed responses and the degree of real-time performance according to an embodiment of the present disclosure;
[0053] Figure 13 is a flowchart illustrating the determination of the statistical label probability of the exchange node in the first period based on the first quantity and the second quantity according to an embodiment of the present disclosure.
[0054] Figure 14 is a schematic diagram of obtaining a first sequence of acknowledgment responses received in a first period according to an embodiment of the present disclosure;
[0055] Figure 15 is a detailed flowchart of updating the statistical marker probability based on the first and second quantities in the confirmation response to be examined, according to an embodiment of the present disclosure;
[0056] Figure 16 is a flowchart illustrating the specific process of increasing the statistical label probability using the first label probability increasing method according to an embodiment of the present disclosure;
[0057] Figure 17 is a flowchart illustrating the reduction of statistical label probability using a first label probability reduction algorithm according to an embodiment of the present disclosure.
[0058] Figure 18 is a flowchart illustrating the determination of the statistical queue length of the exchange node in the first period based on the statistical label probability according to an embodiment of the present disclosure.
[0059] Figure 19 is a detailed flowchart of obtaining the length of the first queue and the length of the second queue according to an embodiment of the present disclosure;
[0060] Figure 20 is a detailed flowchart of obtaining the critical marker probability corresponding to the second queue length according to an embodiment of the present disclosure;
[0061] Figure 21 is a flowchart illustrating the determination of the overload rate of the switching node in the first cycle based on the statistical queue length according to an embodiment of the present disclosure.
[0062] Figure 22 is a flowchart illustrating the determination of the load of the switching node in the first cycle based on the statistical queue length according to an embodiment of the present disclosure.
[0063] Figure 23 is a flowchart illustrating the determination of the overload rate of a switching node in a first period based on load, port bandwidth, and a first period, according to an embodiment of the present disclosure.
[0064] Figure 24 is a detailed flowchart of updating the first congestion sliding window based on the overload rate according to an embodiment of the present disclosure;
[0065] Figure 25A is a schematic diagram of increasing the length of the first congestion sliding window according to an embodiment of the present disclosure;
[0066] Figure 25B is a schematic diagram of reducing the length of the first congestion sliding window according to an embodiment of the present disclosure;
[0067] Figure 26 is a detailed flowchart of reducing the length of the first congestion sliding window based on the overload rate according to an embodiment of the present disclosure;
[0068] Figure 27 is a detailed flowchart of increasing the length of the first congestion sliding window according to an embodiment of the present disclosure;
[0069] Figure 28 is a flowchart illustrating the determination of the length of the extended first congestion window based on a first rule according to an embodiment of the present disclosure.
[0070] Figure 29 is a detailed flowchart of determining the length of the extended first congestion sliding window based on the second rule according to an embodiment of the present disclosure;
[0071] Figure 30 is a flowchart illustrating the determination of the overload rate of the switching node based on a first quantity and a second quantity, and the updating of the first congestion window based on the overload rate, according to an embodiment of the present disclosure.
[0072] Figure 31 is a schematic diagram of a message according to an embodiment of the present disclosure being sent to the destination node through one of a plurality of switching nodes;
[0073] Figure 32 is a schematic diagram of simulation data of DCQCN according to an embodiment of the present disclosure;
[0074] Figure 33 is a schematic diagram of simulation data of HPCC according to an embodiment of the present disclosure;
[0075] Figure 34 is a schematic diagram of simulation data of the congestion control method according to an embodiment of the present disclosure;
[0076] Figure 35 is a schematic diagram of the interaction of the destination node sending an acknowledgment response according to an embodiment of the present disclosure;
[0077] Figure 36 is an overall flowchart of the congestion control method for calculating overload rate from the source node according to an embodiment of the present disclosure, applied to the destination node side;
[0078] Figure 37 is an overall flowchart of the congestion control method for calculating overload rate from the destination node according to an embodiment of the present disclosure, applied to the source node side;
[0079] Figure 38A is a schematic diagram of a congestion control method for calculating overload rate from a destination node according to an embodiment of the present disclosure.
[0080] Figure 38B is an interactive schematic diagram of the congestion control method for calculating overload rate by the destination node according to an embodiment of the present disclosure applied to the source node side;
[0081] Figure 39 is an overall flowchart of the congestion control method for calculating overload rate from the destination node according to an embodiment of the present disclosure, applied to the destination node side;
[0082] Figure 40 is an interactive schematic diagram of the congestion control method for calculating overload rate by the destination node according to an embodiment of the present disclosure applied to the destination node side;
[0083] Figure 41 is a detailed implementation diagram of a congestion control method according to an embodiment of the present disclosure;
[0084] Figure 42 is a block diagram of a congestion control device applied to the source node side according to an embodiment of the present disclosure;
[0085] Figure 43 is a block diagram of a congestion control device applied to the destination node side according to an embodiment of the present disclosure;
[0086] Figure 44 is a terminal structure diagram of performing a congestion control method according to an embodiment of the present disclosure;
[0087] Figure 45 is a server structure diagram of performing a congestion control method according to an embodiment of the present disclosure. Detailed Implementation
[0088] To make the objectives, technical solutions, and advantages of this disclosure clearer, the following detailed description is provided in conjunction with the accompanying drawings and embodiments. It should be understood that the specific embodiments described herein are merely illustrative and are not intended to limit the scope of this disclosure.
[0089] Before providing a further detailed description of the embodiments of this disclosure, the terms and concepts used in these embodiments are explained, and they are subject to the following interpretations:
[0090] Data center network: It is a complex arrangement of network devices such as routers, switches, and interfaces. These network devices cooperate and work together to provide faster and more reliable network services.
[0091] A message is a data unit exchanged and transmitted in a network; it is a block of data that a node sends at one time. As the basic unit of network transmission, messages are encapsulated into packets, frames, or groups during transmission. Encapsulation is achieved by adding information segments such as message headers and organizing the data according to a specific format. A message contains complete data information to be transmitted, and its length is variable and has no fixed limit.
[0092] Explicit Congestion Notification (ECN): Normally, when data center networks experience congestion, the Transmission Control Protocol / Internet Protocol (TCP / IP) actively drops data packets. Upon detecting packet loss, the source reduces the congestion window and lowers the transmission rate. However, if end-to-end ECN negotiation is successful, routers supporting ECN can set an explicit congestion flag (ECN flag) in the IP header upon detecting congestion, sending a congestion signal to the receiving end without directly dropping packets. This reduces the number of TCP packet losses, avoids unnecessary retransmissions, lowers network latency (especially jitter), and improves overall application performance.
[0093] Since data center network links are shared, congestion typically occurs when more than one data stream passes through a link. When congestion occurs, multiple data streams entering the switch from different ports are routed to the same output port. Because the receiving bandwidth of multiple receiving ports exceeds the sending bandwidth of a single output port, data packets accumulate in the output port's buffer queue, causing queue congestion. This not only reduces the efficiency of data transmission but also consumes the switch's buffer resources. Related technologies use Data Center Quantitative Congestion Notification (DCQCN) or High-Precision Congestion Control (HPCC) methods for congestion control. However, DCQCN's rate-deceleration and rate-increase algorithms have coarse-grained adjustments, making precise congestion control difficult. HPCC relies on obtaining the status information of the switches through which the data stream passes, which places excessive demands on switch customization, making it difficult to apply in actual production and deployment.
[0094] Based on this, embodiments of this disclosure provide a congestion control method, apparatus, electronic device, computer-readable medium, and computer program product, which can update a first congestion window based on the overload rate of the switching node, thereby precisely controlling the number of target packets sent and achieving accurate congestion control. Furthermore, the method used in these embodiments only requires inserting a first number of target packets carrying congestion markers and a second number of target packets carrying unobstructed markers into the acknowledgment response returned by the destination node to accurately perform congestion control. This method has low customization requirements for the destination node and does not require additional customization of the switching node, making it easy to deploy.
[0095] The system architecture and scenarios in which this disclosure is applied are described below.
[0096] Figures 1A and 1B are system architecture diagrams of the congestion control method applied according to embodiments of the present disclosure. The system architecture diagrams include: object terminal 110, Internet 120, gateway 130, and server 140.
[0097] Object terminal 110 is a device used by an object to send or receive messages corresponding to messages. Object terminal 110 can take various forms, such as desktop computers, laptops, personal digital assistants (PDAs), mobile phones, in-vehicle terminals, home theater terminals, and dedicated terminals. Furthermore, object terminal 110 can be a single device or a collection of multiple devices. For example, multiple devices can be connected via a local area network, sharing a single display device to work collaboratively, forming a single terminal. Object terminal 110 can also communicate with the Internet 120 via wired or wireless means to exchange data.
[0098] Gateway 130, also known as an internetwork connector or protocol converter, is a computer system or device that enables network interconnection at the transport layer and acts as a translator. It bridges the gap between two systems using different communication protocols, data formats, languages, or even completely different architectures. Gateway 130 also provides filtering and security functions. Messages sent from target terminal 110 to server 140 are forwarded to the corresponding server 140 via gateway 130. Messages sent from server 140 to target terminal 110 are also forwarded to the corresponding target terminal 110 via gateway 130.
[0099] Server 140 refers to a computer system capable of providing congestion control services. Compared to the target terminal 110, server 140 has higher requirements in terms of stability, security, and performance. Server 140 can be a single high-performance computer in a network platform, a cluster of multiple high-performance computers, a portion of a single high-performance computer (e.g., a virtual machine), or a combination of portions of multiple high-performance computers (e.g., virtual machines). Furthermore, server 140 includes a connection sending unit that can provide congestion control, reliable reception, and reliable delivery functions. This connection sending unit can communicate with the Internet 120 via wired or wireless means to exchange data, thereby achieving congestion control.
[0100] As shown in Figure 1A, the target terminal 110 sends a message to the server 140 via the Internet 120 and the gateway 130. The server 140 receives the message and executes a congestion control method. Based on a first congestion window, it sends a message to the destination node and receives the acknowledgment response returned by the destination node. Based on the acknowledgment response, which includes a first number of messages carrying congestion markers and a second number of messages carrying unobstructed markers, the server determines the overload rate of the switching node and updates the first congestion window based on the overload rate to control the number of unsent messages accommodated, thereby adjusting the sending rate to the destination node and achieving congestion control.
[0101] As shown in Figure 1B, server 140 can receive messages sent by target terminal 110 through the reliable receiving function of the connected sending unit, and then implement a congestion control method through the congestion control function of the connected sending unit to control the number of unsent messages to be accommodated, thereby adjusting the sending rate to the destination node and thus achieving congestion control.
[0102] Figure 2A is a schematic diagram of the software configuration of the server to which the congestion control method according to an embodiment of the present disclosure is applied. Figure 2B is a schematic diagram of the hardware configuration of the server to which the congestion control method according to an embodiment of the present disclosure is applied. According to embodiments of the present disclosure, the source node can be implemented as a technical component for data transmission within the transport protocol stack. Referring to Figure 2A, in software configuration, embodiments of the present disclosure can be implemented within a software transport protocol stack. For example, embodiments of the present disclosure can be implemented as a congestion control component similar to that within the TCP protocol stack, within the software transport protocol stack. Referring to Figure 2B, embodiments of the present disclosure can be implemented using a smart network interface card (NIC), i.e., implemented in the form of hardware circuitry or CPU microcode.
[0103] In addition, referring to Figures 2A and 2B, the congestion control method provided in this disclosure can provide data transmission and congestion control services for artificial intelligence (AI) training, cloud storage, virtual private cloud (VPC), remote dictionary server (Redis) databases, etc.
[0104] This disclosure can be applied to data transmission scenarios. Referring to Figure 3, which is a schematic diagram of the topology of a data center network to which the congestion control method according to an embodiment of this disclosure is applied. In Figure 3, H0-H15 can represent multiple servers in a data center, used to store and send message data. For example, server H0 stores message data A, and server H1 stores message data B. LA0-LA31 and LC0-LC7 can represent multiple switches in a data center, used to forward data. Furthermore, servers H0-H15 can also connect to external applications to receive message data corresponding to that application and transmit it to other servers in the data center network.
[0105] Figure 3 shows a data center network with three layers of switches: access layer, aggregation layer, and core layer. The access layer switches include LA16-LA31, the aggregation layer switches include LA0-LA15, and the core layer switches include LC0-LC7. Servers are connected to the access layer switches. It's important to note that in mainstream data center networks, to increase communication bandwidth and connection reliability between servers, the source node server typically uses two links to connect to two switches in the access layer (i.e., each of the server's two network ports is connected to one of the two switches). Similarly, the destination node server typically uses two links to connect to two switches in the access layer. For example, switch H0 uses two links to connect to access layer switches LA16 and LA17.
[0106] The network architecture of the data center in Figure 3 is explained here by combining the processes of sending and receiving message data by the server: In Figure 3, the source node servers at the sending end include H0-H7, and the destination node servers at the receiving end include H9-H15. When a source node server at the sending end needs to send message data corresponding to a certain application to the destination node server at the receiving end, it first needs to send the message data to the access layer switch. The access layer switch forwards the message data to the aggregation layer switch, which then forwards it to the core layer switch. After receiving the message data forwarded by the aggregation layer switch, the core layer forwards the message data to the aggregation layer switch, which then forwards it to the access layer switch. Finally, the access layer switch forwards the received message data to the destination node server at the receiving end.
[0107] For example, if the source node server H1 at the sending end needs to send packet data to the destination node server H9 at the receiving end, there are multiple forwarding paths. Here, we describe the process of source node server H1 sending packet data A to destination node server H9 using one of these forwarding paths: Source node server H1 first sends packet data A to the access layer switch LA16, which forwards packet data A to the aggregation layer switch LA1, which then forwards it to the core layer switch LC2. Next, switch LC2 forwards packet data A to the aggregation layer switch LA9, which then forwards it to the access layer switch LA24. Finally, switch LA24 forwards packet data A to the destination node server H9, which sends an acknowledgment to the source node server H1, confirming that the destination node server H9 has received packet data A.
[0108] It should be understood that the above description only illustrates some application scenarios of this disclosure. The business scenarios to which this disclosure can be applied may include, but are not limited to, the specific embodiments described above.
[0109] The following is a general description of the embodiments disclosed herein.
[0110] It is important to emphasize that the embodiments of this disclosure are applicable to various application scenarios, such as data transmission, distributed applications, high-speed clusters, and cloud storage. In related technologies, congestion control is achieved through Data Center Quantitative Congestion Notification (DCQCN) or High-Precision Congestion Control (HPCC). However, the rate-adjusting granularity of DCQCN's deceleration and acceleration algorithms is relatively coarse, making it difficult to accurately execute congestion control. HPCC relies on obtaining the status information of the switches through which the data flow passes, which places excessive demands on switch customization, making it difficult to apply to actual production and deployment. The embodiments of this disclosure provide a congestion control method, apparatus, electronic device, computer-readable medium, and computer program product that can update a first congestion sliding window based on the overload rate, accurately executing congestion control. Furthermore, the embodiments of this disclosure only require inserting a first number of target packets carrying congestion markers and a second number of target packets carrying unobstructed flow markers into the acknowledgment response returned by the destination node. This reduces the customization requirements for the destination node and eliminates the need for additional customization of the switching node, making it easy to deploy.
[0111] Congestion control is a global process. In a data center, congestion control methods refer to the coordinated action of the source node server at the sending end, the destination node server at the receiving end, and the switching nodes that forward packet data to regulate the packet flow in the data center, thereby alleviating or relieving congestion and enabling the data center network to withstand the current network load.
[0112] The congestion control method of this embodiment is executed on the server 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 destination node transmits the received message to the object terminal 110 through the gateway 130 and the Internet 120. The object terminal 110 then displays the information corresponding to the message to the target object.
[0113] As shown in Figure 4, according to an embodiment of this disclosure, the congestion control method applied to the source node includes:
[0114] Step 410: Send a message to the destination node based on the first congestion window, wherein the first congestion window is a window that moves in the queue of messages to be sent. The first congestion window is used to indicate the first number of messages to be sent to the destination node. When a message in the first number of messages is acknowledged, the first congestion window is slid to accommodate the messages to be sent and the messages to be sent that are accommodated in the first congestion window are sent.
[0115] Step 420: Receive the acknowledgment response returned by the destination node. The acknowledgment response includes a first number of packets carrying congestion flags and a second number of packets carrying unobstructed flags. There is a switching node between the source node and the destination node. Both the congestion flag and the unobstructed flag are obtained by the switching node marking the packets received by the switching node based on the buffer queue within the switching node.
[0116] Step 430: Determine the overload rate of the switching node based on the first quantity and the second quantity;
[0117] Step 440: Update the first congestion window based on the overload rate, wherein the number of packets to be sent that can be accommodated is controlled by the updated first congestion window.
[0118] The following is a brief description of steps 410-440 above.
[0119] In step 410, a message is sent to the destination node based on the first congestion window. The first congestion window is a window that moves in the queue of messages to be sent. The first congestion window is used to indicate a first number of messages to be sent to the destination node. When a message in the first number of messages is acknowledged, the first congestion window is slid to accommodate the message to be sent and the message to be sent that has been accommodated in the first congestion window is sent.
[0120] According to embodiments of this disclosure, the source node can be a server sending messages, and the destination node can be a server receiving messages. The source node and the destination node correspond to each other, and a connection is established between the source node and the destination node. Moreover, when the source node sends a message to the destination node, after receiving the message sent by the source node, the destination node needs to return an acknowledgment response to the source node that sent the message, so that the source node knows that the destination node has received the message.
[0121] The pending message queue refers to a queue of messages that the source node has not yet sent; that is, a queue of messages to be sent (referred to as pending messages). For example, if the source node has messages 1, 2, 3, 4, and 5 that have not yet been sent, then the queue consisting of these messages can be considered the pending message queue.
[0122] The first congestion window is a dynamic state variable maintained by the source node. Based on a dynamically adjusted window length, it limits the number of packets the source node can send, thereby preventing overload of the switching node and achieving congestion control. In embodiments of this disclosure, the first congestion window can dynamically change according to the congestion level of the data center network. For example, the first congestion window refers to a window moving within the source node's pending packet queue, and it can be used to indicate the first number of packets sent to the destination node. This first number of packets refers to packets that the source node has sent but has not yet received an acknowledgment from the destination node. The first number is the window size (i.e., window length) of the first congestion window. Referring to Figure 5, if packets 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, and 13 are present in the first congestion window, then the first number is 12.
[0123] During data transmission, once the source node receives an acknowledgment for one of the first number of packets, it slides the first congestion window to accommodate more unsent packets, and then sends the accommodated unsent packets. Referring to Figure 5, for example, the source node has already received an acknowledgment for packet 1. The source node sends a packet to the destination node based on the first congestion window. The first congestion window contains packets 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, and 13. These packets are all packets that the source node has sent but has not yet received an acknowledgment for. After receiving the acknowledgment for packet 2, the first congestion window slides to accommodate the unsent packet 14, and then sends packet 14 to the destination node.
[0124] In step 420, an acknowledgment response is received from the destination node. The acknowledgment response includes a first number of packets carrying congestion tags and a second number of packets carrying unobstructed tags. An exchange node is provided between the source node and the destination node. Both the congestion tag and the unobstructed tag are obtained by the exchange node marking the packets received by the exchange node based on the buffer queue within the exchange node.
[0125] According to embodiments of this disclosure, a switching node refers to a device used to forward messages sent by a source node to a destination node; for example, a switching node can be a switch. In a data center network topology, at least one switching node is provided between the source node and the destination node.
[0126] For example, when multiple packets entering a switching node from different ports are routed to the same outgoing port, due to the mismatch in transmit and receive bandwidth (i.e., the receive bandwidth of the two receiving ports is greater than the transmit bandwidth of one outgoing port), the packets will accumulate in the buffer of the switching node's outgoing port, forming a buffer queue. The queue length refers to the size of the buffer queue. Referring to Figure 3, suppose switching nodes LA8 and LA9 simultaneously forward packets to switching node LA24, and switching node LA24 forwards both packets to the destination node H8. At this time, the packets forwarded by switching nodes LA8 and LA9 to switching node LA24 will accumulate in the buffer of switching node LA24's outgoing port, forming a buffer queue. Referring to Figure 9, the packets forwarded by switching node LA8 to switching node LA24 enter from port 1, and the packets forwarded by switching node LA9 to switching node LA24 enter from port 2. These two packets accumulate in the buffer of port 3. The shaded area in Figure 9 represents the buffer queue, and the size of the shaded area is the length of the buffer queue.
[0127] Both congestion and unobstructed states are generated by the switching node based on its internal buffer queue. A message carrying a congestion flag indicates that the switching node is in a congested state when the message passes through it, while a message carrying an unobstructed state indicates that the switching node is in an unobstructed state when the message passes through it. For example, when a source node sends a message, it first sets the explicit congestion flag field in the message to 0b10 or 0b01 to enable the explicit congestion flag function. After receiving a message with an explicit congestion flag field, the switching node, before sending the message through its output port, decides whether to modify the explicit congestion flag field based on the current queue length. For example, a congestion flag means that the switching node modifies the explicit congestion flag field in the message to 0b11 based on the current queue length; a message carrying a congestion flag refers to a message with an explicit congestion flag field of 0b11. The unobstructed flag refers to an explicit congestion flag field in a packet that the switching node has not modified. A packet carrying the unobstructed flag is a packet whose explicit congestion flag field is 0b10 or 0b01.
[0128] Referring to Figure 6, exemplarily, assume a switching node exists between the source node and the destination node. The source node sends a message to the destination node based on a first congestion window. Upon receiving the message, the switching node marks it based on the queue length within the switching node, identifying either a message carrying a congestion mark or a message carrying a free-flowing mark, and forwards the message to the destination node. Upon receiving the forwarded message, the destination node counts the marks carried in the message and inserts the first number of messages carrying congestion marks and the second number of messages carrying free-flowing marks into an acknowledgment response. The destination node then sends the acknowledgment response to the source node, allowing the source node to understand the current congestion status of the data center network based on the first and second counts.
[0129] In step 430, the overload rate of the switching node is determined based on the first quantity and the second quantity.
[0130] According to embodiments of this disclosure, the overload rate is used to characterize the current congestion state of a switching node. The overload rate can be used to indicate whether the queue length of the buffer queue inside the switching node exceeds the threshold of packets that the switching node can process. Embodiments of this disclosure can intuitively understand the status of the buffer queue inside the switching node through the overload rate, thereby determining the current level of congestion and achieving precise congestion control.
[0131] In step 440, the first congestion window is updated based on the overload rate, wherein the number of packets to be sent that can be accommodated is controlled by the updated first congestion window.
[0132] According to embodiments of this disclosure, if the updated size of the first congestion window is smaller than the original size, since the source node sends packets based on the first congestion window, a decrease in the size of the first congestion window means the source node can send fewer packets than before the update. This reduces the transmission rate of packets from the source node to the destination node. Similarly, if the updated size of the first congestion window is larger than the original size, an increase in the size of the first congestion window means the source node can send more packets, thus increasing the transmission rate of packets from the source node to the destination node.
[0133] Referring to Figures 7A and 7B, assume there is an exchange node 1 between the source node and the destination node, and the source node returns an acknowledgment response after receiving two messages. As shown in Figure 7B, the process of updating the first congestion window is illustrated here: In step 710, the source node sends message 1 to the destination node based on the current first congestion window. If there is no congestion in the current data center network, in step 720, after receiving message 1, exchange node 1 marks message 1 based on the current queue length to obtain message 1 carrying the unobstructed status, and forwards message 1 carrying the unobstructed status to the destination node. In step 730, the destination node receives message 1 carrying the unobstructed status. Following this, in step 740, the source node sends message 2 to the destination node based on the first congestion window. If congestion exists in the current data center network, in step 750, after receiving message 2, switching node 1 marks message 2 based on the current queue length, obtaining message 2 carrying a congestion mark, and forwards message 2 carrying the congestion mark to the destination node. In step 760, the destination node receives message 2 carrying the congestion mark. At this point, the destination node has received two messages. In step 770, the first number of messages carrying the congestion mark and the second number of messages carrying the unobstructed mark are written into the acknowledgment response, where the first number is 1 and the second number is 1. The destination node returns an acknowledgment response to the source node. After receiving the acknowledgment response, in step 780, the source node determines the overload rate of switching node 1 based on the first and second numbers in the acknowledgment response. In step 790, the first congestion window is updated based on the overload rate to adjust the sending rate of messages from the source node to the destination node. It should be noted that the embodiments of this disclosure achieve precise congestion control by updating the first congestion window based on the overload rate, thereby adjusting the transmission rate of packets sent from the source node to the destination node.
[0134] The embodiments of steps 410 to 440 described above can receive an acknowledgment response returned by the destination node and determine the overload rate of the switching node based on the first number of packets carrying congestion flags and the second number of packets carrying unobstructed flags contained in the acknowledgment response. The overload rate can accurately reflect the current congestion status of the switching nodes in the link. Thus, by updating the first congestion window based on the overload rate, the number of target packets sent can be precisely controlled, thereby achieving precise congestion control. Once a packet in the first congestion window receives an acknowledgment response, the first congestion window is slid to accommodate more unsent packets, which are then sent. This way, when the load status of the switching node reflected by the overload rate is heavy, the length of the first congestion window is not increased, thus preventing the transmission of new packets and alleviating network congestion. When the load status of the switching node reflected by the overload rate is light, the length of the first congestion window is increased to accommodate new packets for transmission, fully utilizing network bandwidth and achieving precise congestion control. Meanwhile, the method used in this embodiment only needs to insert a first number of target packets carrying congestion flags and a second number of target packets carrying unobstructed flags into the acknowledgment response returned by the destination node to accurately perform congestion control. It has low customization requirements for the destination node and does not require additional customization of the switching node, making it easy to deploy.
[0135] The above is a general description of steps 410 to 440. Since step 410 has been described in sufficient detail above, the specific implementation process of steps 420 to 440 will be described in detail below.
[0136] Step 420 will be described in detail below.
[0137] In step 420, an acknowledgment response is received from the destination node. The acknowledgment response includes a first number of packets carrying congestion flags and a second number of packets carrying unobstructed flags. An exchange node is provided between the source node and the destination node. Both the congestion flag and the unobstructed flag are obtained by the exchange node marking the packets received by the exchange node based on the buffer queue within the exchange node.
[0138] In some embodiments, the congestion mark and the unobstructed mark in step 420 are obtained by the switching node marking packets based on the buffer queues within the switching node in the following manner: when the length of the buffer queue within the switching node is less than or equal to the length of a first queue, an unobstructed mark is added to the packet; when the length of the buffer queue within the switching node is greater than or equal to the length of a second queue, a congestion mark is added to the packet, wherein the length of the second queue is greater than the length of the first queue; when the length of the buffer queue within the switching node is greater than the length of the first queue and less than the length of the second queue, a congestion mark is added to the packet with a first probability, and an unobstructed mark is added to the packet with the complement of the first probability, wherein the complement of the first probability is the difference between 1 and the first probability, and the first probability changes linearly with the queue length between the length of the first queue and the length of the second queue. For example, assuming the first probability is 30%, the switching node adds a congestion mark to the packet with a 30% probability, and simultaneously adds an unobstructed mark to the packet with a 70% probability.
[0139] According to embodiments of this disclosure, the first queue length refers to the queue length of the switching node corresponding to the lower limit for marking packets. Referring to Figure 10, when the queue length of the switching node's buffer queue exceeds the first queue length, it indicates that congestion may exist, and the switching node begins to probabilistically add a congestion mark to the packet. The second queue length refers to the queue length of the switching node corresponding to the upper limit for marking packets. Referring to Figure 10, when the queue length of the switching node's buffer queue exceeds the second queue length, it indicates that congestion definitely exists, and the probability of the switching node adding a congestion mark to the packet is 100%. When the queue length of the switching node's buffer queue is between the first and second queue lengths, the probability of adding a congestion mark to the packet increases linearly with the increase of the queue length of the switching node's buffer queue. That is, the longer the queue length of the switching node's buffer queue, the greater the probability of adding a congestion mark to the packet. The first probability refers to the probability of adding a congestion mark to the packet.
[0140] Referring to Figure 10, for example, assume the first queue length is 5 and the second queue length is 15. If the queue length of the buffer queue within the current switching node is less than 5, it indicates that the current switching node is not congested, and a clear flag is added to the packet (i.e., the explicit congestion field of the packet is not modified). If the queue length of the buffer queue within the current switching node is 10, which is between 5 and 15, it indicates that congestion may occur within the current switching node. In this case, the first probability is 50%, and a congestion flag is added to the packet with the first probability, and a clear flag is added to the packet with a 50% probability. If the queue length of the buffer queue within the current switching node is 20, it indicates that congestion definitely occurs within the current switching node, and the probability of adding a congestion flag to the packet is 100%.
[0141] The above embodiments can probabilistically mark packets based on the queue length of the buffer queue within the switching node, which makes it easier for the source node to understand the current congestion situation within the switching node more accurately after receiving a first number of packets carrying congestion marks and a second number of packets carrying unobstructed marks.
[0142] Thus, this embodiment of the present disclosure achieves refined congestion control through multi-level thresholds (i.e., the first queue length and the second queue length) and a probabilistic marking mechanism, specifically: (1) setting dual queue length thresholds (first queue length < second queue length), marking smooth flow when lightly loaded (≤ first queue length) and forcibly marking congestion when heavily loaded (≥ second queue length), ensuring rapid response in extreme scenarios; (2) in intermediate load states (first queue length < queue length < second queue length), adopting a linearly changing probabilistic marking strategy, so that the congestion marking probability increases smoothly with the queue length, avoiding the "jumping" response of traditional binary ECN, and gradually adjusting the traffic, effectively balancing throughput and latency; (3) automatically maintaining the mathematical completeness of the marking behavior through a probability complement mechanism (1 - first probability), reducing implementation complexity. This design significantly improves the stability of data center networks under high load fluctuation scenarios.
[0143] The above is a detailed description of the specific implementation process of the switching node marking packets based on the queue length within the switching node. The following is a detailed description of the specific implementation process of the destination node sending an acknowledgment response.
[0144] In one embodiment, referring to FIG8, the acknowledgment response in step 420 is sent by the destination node in the following manner:
[0145] Step 810: When it is determined that a predetermined time period has elapsed since the last acknowledgment was sent, a first quantity and a second quantity are determined based on the messages received within the predetermined time period, and an acknowledgment is generated and sent based on the first quantity and the second quantity.
[0146] Step 820: When a predetermined time period has not elapsed since the last acknowledgment was sent and a predetermined number of messages have been received, determine a first quantity and a second quantity based on the predetermined number of messages, and generate and send an acknowledgment based on the first quantity and the second quantity.
[0147] Steps 810 to 820 are described in detail below.
[0148] In step 810, when it is determined that a predetermined time period has elapsed since the last acknowledgment was sent, a first quantity and a second quantity are determined based on the messages received within the predetermined time period, and an acknowledgment is generated and sent based on the first quantity and the second quantity.
[0149] According to embodiments of this disclosure, the predetermined time period can be a pre-set time period, and the predetermined time period can be set according to the forwarding capability of the switching node and the processing capability of the destination node. The predetermined time period can be one second or one minute. For example, assuming the predetermined time period is one minute, if the destination node determines that one minute has passed since sending the previous acknowledgment, it determines a first number of packets carrying congestion flags and a second number of packets carrying unobstructed flags based on the packets received within this minute. After determining the first and second numbers, the destination node inserts the first and second numbers into the acknowledgment and returns the acknowledgment to the source node. After one minute has passed, the destination node will generate and send an acknowledgment again based on the first and second numbers counted in the next minute.
[0150] During periods of data center network idleness, destination nodes may experience long intervals between receiving packets, leading to wasted data center network resources. This disclosure addresses this issue by setting a predetermined time period, determining a first and second quantity of packets received within that period, and generating and issuing an acknowledgment response based on these quantities.
[0151] In step 820, when a predetermined time period has not elapsed since the last acknowledgment was sent and a predetermined number of messages have been received, a first quantity and a second quantity are determined based on the predetermined number of messages, and an acknowledgment is generated and sent based on the first quantity and the second quantity.
[0152] It should be noted that when the data center network is busy, the source node will send multiple packets to the destination node within a predetermined time period. This may result in the destination node receiving too many packets within that time period. In this situation, determining a first number and a second number based on the packets received within the predetermined time period, and generating and sending an acknowledgment response based on these numbers, will lead to poor real-time performance of the data center network. Therefore, the embodiments of this disclosure, in addition to setting a predetermined time period, also set a predetermined number to improve the real-time performance of the data center network. The predetermined number is a pre-set value, and it can be set according to the packet forwarding capacity of the switching node and the packet processing capacity of the destination node. The predetermined number can be 1, 5, or 10.
[0153] For example, assuming a predetermined time period of one minute and a predetermined number of packets of 5, if less than one minute has passed since the last acknowledgment was sent, but the destination node has already received 5 packets, then the destination node determines a first number of packets carrying congestion flags and a second number of packets carrying unobstructed flags based on these 5 packets. After determining the first and second numbers, the destination node inserts these numbers into the acknowledgment and returns the acknowledgment to the source node. If another minute has passed, or if less than one minute has passed but the destination node has already received 5 packets, the destination will return another acknowledgment to the source node.
[0154] The embodiments of steps 810 to 820 described above, by setting a predetermined time period and determining a first quantity and a second quantity based on the messages received within that predetermined time period, and generating and sending an acknowledgment response based on the first quantity and the second quantity, avoid the resource waste caused by idle data center networks. Furthermore, in addition to setting a predetermined time period, a predetermined number is also set to prevent the destination node from receiving too many messages within the predetermined time period before generating an acknowledgment response, thus increasing the real-time performance of the data center network.
[0155] Step 430 will be described in detail below.
[0156] Step 430: Determine the overload rate of the switching node based on the first quantity and the second quantity.
[0157] In one embodiment, referring to FIG11, step 430 includes:
[0158] Step 1110: When the first cycle is reached, determine the statistical labeling probability of the exchange nodes in the first cycle based on the first quantity and the second quantity;
[0159] Step 1120: Determine the statistical queue length of the swapping nodes in the first period based on the statistical label probability;
[0160] Step 1130: Based on the statistical queue length, determine the overload rate of the exchange nodes in the first cycle.
[0161] Steps 1110 to 1130 are described in detail below:
[0162] In step 1110, when the first period is reached, the statistical labeling probability of the exchange nodes in the first period is determined based on the first quantity and the second quantity.
[0163] According to embodiments of this disclosure, although a switching node can probabilistically mark packets based on queue length and forward them to the destination node, neither the source nor the destination node knows the probability of the switching node marking the packets. Therefore, in embodiments of this disclosure, each time the source node reaches the first period, it can determine the statistical marking probability of the switching node in the first period based on a first number of packets carrying congestion markings and a second number of packets carrying unobstructed markings. This allows for estimating the probability of the switching node marking packets based on queue length in the first period, thereby accurately obtaining the congestion situation within the switching node. It should be noted that the statistical marking probability is not updated every first period, but rather updated after each received acknowledgment. In this case, the statistical marking probability determined every first period is the statistical marking probability obtained from the last update in the first period. Furthermore, the statistical marking probability does not refer to the probability of the switching node marking a particular packet, but rather to the average probability of the switching node marking all received packets within the first period.
[0164] The statistical labeling probability is a quantitative indicator dynamically calculated by the source node through continuous monitoring of received acknowledgments, reflecting the overall congestion behavior of the switching node within the first period (as a statistical observation window). The statistical labeling probability characterizes the average labeling probability of a switching node for all passing packets within the first period, rather than the instantaneous labeling probability for a single packet. For example, if a switching node labels 1000 packets in the first period, and 300 packets are labeled as congested, the statistical labeling probability is 30%. By explicitly transforming the implicit probabilistic labeling behavior into a continuously observable indicator (statistical labeling probability), the source node can accurately infer the queue status of the switching node, providing fine-grained input for congestion control.
[0165] In some embodiments, the first period can be determined by: obtaining the number of acknowledgment responses received per unit time; obtaining the real-time performance of the service to which the message belongs; and determining the first period based on the number of acknowledgment responses and the real-time performance.
[0166] According to embodiments of this disclosure, it is assumed that the source node receives only one acknowledgment response every two unit time intervals, and the first period is one unit time interval. Since the overload rate is updated every first period, a change in the overload rate may only occur every two first periods, which would waste the source node's computing resources. To conserve the source node's computing resources, the number of acknowledgment responses received per unit time interval needs to be considered when determining the first period.
[0167] According to embodiments of this disclosure, it is assumed that the service to which the message belongs has a high degree of real-time performance, and the first period is relatively long. In this case, if there is no congestion within the switching node in the previous first period and the overload rate is low, the source node will send the message with a large first congestion sliding window within the first period. If the switching node becomes congested during this process, but is limited by the overload rate being updated every first period, the switching node will remain in a congested state for a long time before the next first period arrives, thereby greatly reducing the message transmission speed. This is detrimental to the real-time performance of the service. Therefore, the degree of real-time performance needs to be considered when determining the first period. The degree of real-time performance can be represented by a percentage; the higher the percentage corresponding to the degree of real-time performance, the stronger the real-time performance of the service to which the message belongs.
[0168] According to embodiments of this disclosure, a first score can be determined based on the number of acknowledgment responses received per unit time, a second score can be determined based on the real-time performance of the service to which the message belongs, a third score can be determined based on the first and second scores, and a first period can be determined based on the third score. Specifically, determining the first score based on the number of acknowledgment responses received per unit time can be done using a lookup table, for example, by using a table showing the correspondence between the number of acknowledgment responses received per unit time and the first score. Alternatively, determining the first score can be done using a substitution method, for example, by substituting the number of acknowledgment responses received per unit time into a pre-set formula for the number of acknowledgment responses received per unit time and the first score. Similarly, determining the second score based on the real-time performance of the service to which the message belongs can be done using a lookup table, for example, by using a table showing the correspondence between the real-time performance of the service to which the message belongs and the second score. The second score can be determined based on the real-time performance of the service to which the message belongs. Alternatively, a substitution method can be used, for example, by substituting the real-time performance of the service to which the message belongs into a pre-set formula for the real-time performance of the service to which the message belongs and the second score, to obtain the second score corresponding to the real-time performance of the service to which the message belongs.
[0169] Continuing with the example above, the third score can be the sum of the first and second scores. Alternatively, different weights can be assigned to the first and second scores based on the real-time importance of the service to which the message belongs and the importance of the number of acknowledgments received per unit time, thus determining the third score as a weighted sum of the first and second scores. The first period can be determined based on the third score using a lookup table, for example, by using a table showing the correspondence between the third score and the first period. Another method is substitution, for example, by substituting the third score into a pre-set formula for the third score and the first period to obtain the corresponding first period.
[0170] Referring to Figure 12, assuming the first score, second score, and first period are all obtained by looking up a table, and the third score is the sum of the first and second scores. If the number of acknowledgment responses received in the current unit is 13, and the real-time performance of the service to which the message belongs is 65%, then the first score corresponding to the number of acknowledgment responses received in the current unit can be determined to be 10, and the second score corresponding to the real-time performance of the service to which the message belongs can be determined to be 12. The sum of the first and second scores is 22, which corresponds to determining the first period as 1 unit of time.
[0171] The specific method for "determining the statistical labeling probability of the exchange nodes in the first cycle based on the first and second quantities when the first cycle is reached" will be described in detail below.
[0172] In step 1120, the statistical queue length of the swapping nodes in the first period is determined based on the statistical label probability.
[0173] According to embodiments of this disclosure, the statistical queue length does not refer to the queue length of the switching node at a certain moment, but rather to the average queue length of the switching node in the first period. For example, after calculating the statistical labeling probability, embodiments of this disclosure can also calculate the average queue length of the switching node in the first period based on the statistical labeling probability, thereby gaining a more accurate understanding of the congestion situation within the switching node.
[0174] Statistical queue length is a quantitative indicator calculated by the source node based on statistical label probabilities, reflecting the average congestion level of the switching node within a complete statistical period (i.e., the first period). Statistical queue length represents the average queue length of the switching node at all times within the first period, rather than an instantaneous value, thus avoiding misjudgments caused by short-term fluctuations. By mapping discrete label probabilities to continuous queue length estimates, statistical queue length enables the source node to perceive congestion status more stably and accurately, thereby optimizing flow control decisions.
[0175] The specific method for "determining the statistical queue length of the exchange nodes in the first cycle based on the statistical label probability" will be described in detail below.
[0176] In step 1130, the overload rate of the switching nodes in the first cycle is determined based on the statistical queue length.
[0177] According to embodiments of this disclosure, the overload rate can also reflect the degree of overload of the switching node in the first period, and the magnitude of the overload rate reflects the current congestion status of the switching node's ports. Embodiments of this disclosure can determine the overload rate of the switching node in the first period based on the statistical queue length, thereby determining the degree of overload of the switching node in the first period, facilitating a more accurate understanding of the congestion status of the switching node's ports.
[0178] The specific method for "determining the overload rate of the exchange node in the first cycle based on the statistical queue length" will be described in detail below.
[0179] In the embodiments of steps 1110 to 1130 above, each time the first cycle is reached, the average probability of the switching node marking all received packets in the first cycle can be determined based on the first and second quantities. Based on this, the average queue length of the buffer queue of the switching node in the first cycle is calculated, thereby determining the degree of overload of the switching node in the first cycle. This facilitates accurate knowledge of the congestion situation within the switching node, thereby achieving precise congestion control. In summary, steps 1110 to 1130 achieve accurate perception and dynamic control of congestion within the switching node through an innovative three-level quantitative analysis mechanism, specifically reflected in: 1) Multi-dimensional congestion perception: By periodically (in the first cycle) statistically analyzing congested / unobstructed packets, the statistical marking probability reflecting the overall behavior of the switching node is calculated. Then, the statistical queue length is derived from the statistical marking probability, and finally, the overload rate is deduced, forming a complete analysis chain from packet marking to queue status to overload degree; 2) Anti-interference precise control: Decisions are made based on periodic averages rather than instantaneous values, effectively smoothing out misjudgments caused by sudden traffic.
[0180] The above is a general description of steps 1110 to 1130. The specific implementation process of steps 1110, 1120 and 1130 will be described in detail below.
[0181] In one embodiment, referring to FIG13, step 1110 includes:
[0182] Step 1310: Obtain the first sequence of acknowledgment responses received within the first period;
[0183] Step 1320: Take the first confirmed response in the first sequence as the confirmed response to be examined, and initialize the statistical label probability;
[0184] Step 1330: Update the statistical label probability based on the first and second quantities in the confirmed responses to be examined;
[0185] Step 1340: Update the confirmed response to be examined based on the next confirmed response in the first sequence, and return to the step of updating the statistical label probability based on the first and second quantities in the confirmed responses to be examined, until the first sequence does not contain the next confirmed response to be examined.
[0186] Steps 1310 to 1340 are described in detail below:
[0187] In step 1310, a first sequence consisting of acknowledgments received within the first period is obtained.
[0188] According to embodiments of this disclosure, the first sequence refers to the sequence of acknowledgment responses received within a first period. Referring to FIG14, exemplarily, acknowledgment responses 1, 2, 3, 4, and 5 are received within the first period, and the first sequence is the sequence of acknowledgment responses 1, 2, 3, 4, and 5.
[0189] In step 1320, the first confirmed response in the first sequence is taken as the confirmed response to be examined, and the statistical label probability is initialized.
[0190] According to embodiments of this disclosure, the confirmation response to be examined refers to the confirmation response used in calculating the statistical label probability. The source node needs to calculate the statistical label probability once after receiving a confirmation response from the destination node; that is, the statistical label probability is updated once for each confirmation response received. Following chronological order, the first confirmation response in the first sequence refers to the first confirmation response received within the current first period. Therefore, the first confirmation response in the first sequence is first considered the confirmation response to be examined. Referring to Figure 14, exemplarily, the first sequence is a sequence consisting of confirmation response 1, confirmation response 2, confirmation response 3, confirmation response 4, and confirmation response 5. In this case, confirmation response 1 in the first sequence is considered the confirmation response to be examined.
[0191] The initialized statistical label probability (referring to the statistical label probability that has not yet been updated) can be the statistical label probability calculated in the previous first cycle, or it can be a preset probability.
[0192] In step 1330, the statistical label probability is updated based on the first and second quantities in the confirmed responses to be examined.
[0193] According to embodiments of this disclosure, the acknowledgment response to be examined includes a first number of packets carrying congestion tags and a second number of packets carrying unobstructed access tags. After determining the acknowledgment response to be examined, the statistical marking probability can be updated based on the first and second numbers to obtain the updated statistical marking probability. The updated statistical marking probability refers to a quantitative indicator reflecting the overall marking behavior of the switching nodes within the latest time period, dynamically calculated by the source node after receiving the acknowledgment response to be examined, based on the number of congestion-tagged packets (first number) and unobstructed access tags (second number) carried in the acknowledgment response to be examined. In other words, the updated statistical marking probability reflects the average probability that the switching nodes mark all received packets within the time period corresponding to the acknowledgment response to be examined. The time period corresponding to the acknowledgment response to be examined refers to the time period from the previous acknowledgment response received by the source node to the time period when the source node receives the acknowledgment response to be examined. The updated statistical labeling probability has temporal locality, that is, it specifically represents the labeling probability within a specific time period from the time of receiving the previous acknowledgment to the time of receiving the current acknowledgment, rather than the global average; (3) Statistical completeness: The calculation result is essentially the average labeling probability of the switching node for all flowing packets within this time period. For example, if the switching node labels 200 packets within the time period corresponding to a certain acknowledgment, of which 40 are labeled as congested, the updated statistical labeling probability is 20%, which directly reflects the average queue load level of the switching node within this time period.
[0194] The specific method for "updating the statistical label probability based on the first and second quantities in the confirmed responses to be examined" will be described in detail below.
[0195] In step 1340, the confirmed response to be examined is updated based on the next confirmed response to be examined in the first sequence, and the step of updating the statistical marker probability based on the first quantity and the second quantity in the confirmed responses to be examined is returned until the first sequence does not contain the next confirmed response to be examined.
[0196] According to embodiments of this disclosure, when multiple acknowledgment responses exist in the first sequence, there is a corresponding relationship between the number of times the statistical label probability is updated and the number of acknowledgment responses; that is, the statistical label probability is updated as many times as there are acknowledgment responses in the first sequence. For example, suppose acknowledgment responses 1, 2, and 3 are received in the first period, forming the first sequence. During the update of the statistical label probability, acknowledgment response 1 in the first sequence is first taken as the acknowledgment response to be examined, and its statistical label probability is initialized. Then, the statistical label probability is updated based on the first and second quantities in acknowledgment response 1, resulting in statistical label probability 1. After this, acknowledgment response 2, which follows acknowledgment response 1, is used to update the acknowledgment response to be examined, and the statistical label probability 1 is updated based on the first and second quantities in acknowledgment response 2, resulting in statistical label probability 2. Finally, acknowledgment response 3, which follows acknowledgment response 2, is used to update the acknowledgment response to be examined, and the statistical label probability 2 is updated based on the first and second quantities in acknowledgment response 3, resulting in statistical label probability 3. At this point, there is no next acknowledgment response in the first sequence, so statistical label probability 3 is used as the statistical label probability of the exchange node in this first period.
[0197] The embodiments of steps 1310 to 1340 above obtain the first sequence of acknowledgment responses received in the first period, and take the first acknowledgment response in the first sequence as the response to be examined. The statistical marking probability is updated based on the first and second quantities in the responses to be examined, and the statistical marking probability is iteratively updated according to the number of acknowledgment responses in the first sequence. This facilitates the subsequent calculation of the statistical queue length and the overload rate of the switching node based on the statistical marking probability, thereby achieving more accurate congestion control through a dynamic iterative update mechanism. Specifically, this is reflected in: 1) Incremental probability statistics: By processing all acknowledgment responses received in the first period (first sequence) in sequence, the number of congestion-marked packets (first quantity) and the number of unobstructed packets (second quantity) carried by each acknowledgment response to be examined are calculated successively to continuously update the statistical marking probability and ensure that the result always reflects the latest network status; 2) Time sequence integrity guarantee: Iterative processing is strictly carried out according to the arrival order of acknowledgment responses to avoid statistical deviations caused by out-of-order packets.
[0198] The above is a general description of steps 1310 to 1340. The following is a detailed description of the specific implementation process of step 1330.
[0199] In one embodiment, referring to FIG15, step 1330 includes:
[0200] Step 1510: Initialize the first count value and the second count value to 1 respectively;
[0201] Step 1520: When the first count value is less than or equal to the first quantity, increase the statistical mark probability and increase the first count value using the first mark probability increase method.
[0202] Step 1530: Return to the step of increasing the statistical label probability using the first label probability increase method when the first count value is less than or equal to the first quantity, until the first count value is greater than the first quantity;
[0203] Step 1540: When the second count value is less than or equal to the second quantity, use the first mark probability reduction method to reduce the statistical mark probability and increase the second count value;
[0204] Step 1550: Return to the step of reducing the statistical label probability using the first label probability reduction method when the second count value is less than or equal to the second quantity, until the second count value is greater than the second quantity.
[0205] Steps 1510 to 1550 are described in detail below:
[0206] In step 1510, the first count value and the second count value are initialized to 1, respectively.
[0207] According to embodiments of this disclosure, a first count value is used to indicate the number of times the step of increasing the statistical label probability is performed. In practical applications, the first count value is similar to a register, used to count the number of times the step of increasing the statistical label probability is currently performed. A second count value is used to indicate the number of times the step of decreasing the statistical label probability is performed. In practical applications, the second count value is similar to a register, used to count the number of times the step of decreasing the statistical label probability is currently performed.
[0208] Since the source node needs to update the statistical label probability after receiving each acknowledgment, the number of times the statistical label probability is increased and decreased during this update is determined by the first and second counts in the acknowledgment. Because the first and second counts may differ in each acknowledgment, the number of times the statistical label probability is increased and decreased also needs to be adjusted. Therefore, the source node needs to initialize the first and second count values each time it receives an acknowledgment.
[0209] In step 1520, when the first count value is less than or equal to the first quantity, the statistical mark probability is increased using the first mark probability increase method, and the first count value is increased.
[0210] According to embodiments of this disclosure, the first label probability increasing method refers to an algorithm used to increase the statistical label probability when updating the statistical label probability. Each execution of the step to increase the statistical label probability means increasing the statistical label probability by one time using the first label probability increasing method. The number of times the step to increase the statistical label probability is executed each time an acknowledgment response is received and the statistical label probability is updated is the same as the first number in the acknowledgment response.
[0211] It's important to note that since the first and second counts are initialized to 1 upon receiving each acknowledgment, the first count is only incremented after each step of increasing the statistical probability. This means that the actual number of times the step of increasing the statistical probability is executed is the first count minus one. Therefore, if the first count is less than or equal to the first quantity, a step of increasing the statistical probability must be executed. Furthermore, after each step of increasing the statistical probability is executed, the first count is incremented by 1 to indicate that another step of increasing the statistical probability has been performed.
[0212] For example, if the first count in acknowledgment A is 5, after receiving acknowledgment A, the source node first initializes the first count value and the second count value to 1. At this time, the first count value is less than 5, so it is necessary to use the first mark probability increment method to increase the statistical mark probability and increment the first count value by 1, indicating that a step of increasing the statistical probability has been performed.
[0213] The specific method of "when the first count value is less than or equal to the first quantity, using the first mark probability increase method to increase the statistical mark probability and increase the first count value" will be described in detail below.
[0214] In step 1530, the step of increasing the statistical label probability using the first label probability increase method when the first count value is less than or equal to the first quantity is returned until the first count value is greater than the first quantity.
[0215] According to embodiments of this disclosure, since the first quantity in the acknowledgment response refers to the number of packets carrying congestion tags, the first quantity is proportional to the statistical labeling probability; that is, as the first quantity increases, the statistical labeling probability must also increase. To more accurately estimate the statistical labeling probability, the source node executes a first labeling probability increase method based on the first quantity in the acknowledgment response each time it receives one, and the number of times the first labeling probability increase method is executed iteratively is consistent with the first quantity. Because embodiments of this disclosure use a first count value to count the number of times the first labeling probability increase method is executed, the step of increasing the statistical labeling probability will only stop when the first count value is greater than the first quantity.
[0216] For example, if the first quantity in acknowledgment A is 5, after receiving acknowledgment A, the source node first initializes the first and second count values to 1. At this point, the first count value is less than 5, so it needs to increase the statistical marking probability using the first marking probability increment method, incrementing the first count value by 1, resulting in a first count value of 2. However, the first count value is still less than 5, so it will again increase the statistical marking probability using the first marking probability increment method, incrementing the first count value by 1, resulting in a first count value of 3. This process continues iteratively, increasing the statistical marking probability using the first marking probability increment method, until the first count value is greater than the first quantity.
[0217] In step 1540, when the second count value is less than or equal to the second quantity, the statistical mark probability is reduced and the second count value is increased using the first mark probability reduction method.
[0218] According to embodiments of this disclosure, the first label probability reduction method refers to an algorithm used to reduce the statistical label probability when updating the statistical label probability. Each execution of the step to reduce the statistical label probability means using the first label probability reduction method to reduce the statistical label probability by one. The number of times the step to reduce the statistical label probability is executed each time an acknowledgment response is received and the statistical label probability is updated is the same as the second number in the acknowledgment response.
[0219] It's important to note that since the first and second counts are initialized to 1 upon receiving each acknowledgment, the second count is incremented only after each step of reducing the statistical probability is executed. This means that the actual number of times the step of reducing the statistical probability is executed is the second count minus one. Therefore, if the second count is less than or equal to the second quantity, a step of reducing the statistical probability must be executed. Furthermore, each time a step of reducing the statistical probability is executed, the second count is incremented by 1 to indicate that another step of reducing the statistical probability has been executed.
[0220] For example, if the second count in acknowledgment A is 4, after receiving acknowledgment A, the source node first initializes the first and second count values to 1. At this time, the second count value is less than 4, so the statistical mark probability needs to be reduced using the first mark probability reduction method, and the second count value is incremented by 1, indicating that a step of reducing the statistical probability has been performed.
[0221] The specific method of "when the second count value is less than or equal to the second quantity, using the first mark probability reduction method to reduce the statistical mark probability and increase the second count value" will be described in detail below.
[0222] In step 1550, the step of reducing the statistical label probability using the first label probability reduction method is returned when the second count value is less than or equal to the second quantity, until the second count value is greater than the second quantity.
[0223] According to embodiments of this disclosure, since the second quantity in the acknowledgment response refers to the number of messages carrying the passability flag, the second quantity is inversely proportional to the statistical marking probability; that is, as the second quantity increases, the statistical marking probability decreases. To more accurately estimate the statistical marking probability, the source node executes a first marking probability reduction method based on the second quantity in each acknowledgment response received, and the number of iterations of the first marking probability reduction method is consistent with the second quantity. Because embodiments of this disclosure use a second count value to count the number of times the first marking probability reduction method is executed, the step of reducing the statistical marking probability will not stop until the second count value is greater than the second quantity.
[0224] For example, if the first quantity in acknowledgment A is 5 and the second quantity is 3, after receiving acknowledgment A, the source node first initializes the first and second count values to 1. At this point, the first count value is less than 5, so it needs to increase the statistical marking probability using the first marking probability increment method, incrementing the first count value by 1, resulting in a first count value of 2. However, the first count value is still less than 5, so it continues to increase the statistical marking probability using the first marking probability increment method, incrementing the first count value by 1, resulting in a first count value of 3. This process is repeated iteratively until the first count value is greater than the first quantity. After this, since the second count value is less than 3, it needs to decrease the statistical marking probability using the first marking probability decrement method, incrementing the second count value by 1, resulting in a second count value of 2. However, the second count value is still less than 3, so it continues to decrease the statistical marking probability using the first marking probability decrement method, incrementing the second count value by 1, resulting in a second count value of 3. However, the second count value is not greater than 3, so it continues to decrease the statistical marking probability using the first marking probability decrement method, incrementing the second count value by 1, resulting in a second count value of 4. At this point, the second count value is already greater than 3, so the step of statistically marking the probability is stopped.
[0225] In the embodiments of steps 1510 to 1550 described above, a first count value is used to count the number of times the first marking probability increase method is executed. The execution of the step of increasing the statistical marking probability stops only when the first count value exceeds a first quantity. Similarly, a second count value is used to count the number of times the first marking probability decrease method is executed. The execution of the step of decreasing the statistical marking probability stops only when the second count value exceeds a second quantity. The embodiments of this disclosure accurately estimate the statistical marking probability using the above method, thereby improving the accuracy of congestion control.
[0226] The above is a general description of steps 1510 to 1550. The specific implementation processes of steps 1520 and 1540 are described in detail below.
[0227] In one embodiment, referring to FIG16, step 1520, "when the first count value is less than or equal to the first quantity, increase the statistical mark probability using the first mark probability increase method," includes:
[0228] Step 1610: When the first count value is less than or equal to the first quantity, obtain the first parameter, which is a value between 0 and 1;
[0229] Step 1620: Use the difference between 1 and the first parameter as the second parameter;
[0230] Step 1630: Add the product of the statistical label probability and the second parameter to the first parameter to obtain the increased statistical label probability.
[0231] Steps 1610 to 1630 are described in detail below:
[0232] In step 1610, when the first count value is less than or equal to the first quantity, the first parameter is obtained, and the first parameter is between 0 and 1.
[0233] According to embodiments of this disclosure, the first parameter refers to the weight of updating the statistical label probability. The first parameter controls the increasing trend and decreasing trend of the statistical label probability, and the magnitude of the first parameter is directly proportional to the updating trend of the statistical label probability. For example, the larger the first parameter, the greater the difference between the statistical label probability before and after the update; similarly, the smaller the first parameter, the smaller the difference between the statistical label probability before and after the update.
[0234] In step 1620, the difference between 1 and the first parameter is used as the second parameter.
[0235] In one implementation, a second parameter is also used when updating the weights of the statistical label probability. This second parameter is the difference between 1 and the first parameter. The second parameter is also used to control the increasing and decreasing trends of the statistical label probability.
[0236] Here, we will explain step 1620 in conjunction with the formula: First, obtain the first parameter w, and use the difference between 1 and the first parameter (1-w) as the second parameter.
[0237] In step 1630, the product of the statistical label probability and the second parameter is added to the first parameter to obtain the increased statistical label probability.
[0238] According to embodiments of this disclosure, the statistical label probability in "product of statistical label probability and second parameter" refers to the statistical label probability obtained in the last update. Specifically, if the current first count value is equal to 1, it means that the last update of the statistical label probability was the last time an acknowledgment response was received, and the current update of the statistical label probability needs to use the statistical label probability obtained in the last update corresponding to the last acknowledgment response. If the current first count value is less than or equal to the first quantity and is not 1, the current update of the statistical label probability needs to use the statistical label probability obtained when the first count value was last updated.
[0239] Here, step 1630 is explained using the formula: First, obtain the first parameter w, and use the difference between 1 and the first parameter (1-w) as the second parameter. Then, add the product er1(1-w) of the statistical label probability er1 obtained from the previous update and the second parameter (1-w) to the first parameter w to obtain the increased statistical label probability er. Specifically, the increased statistical label probability er can be expressed as formula (1): er=er1(1-w)+w (1)
[0240] Where w represents the first parameter; (1-w) represents the second parameter; er1 represents the statistical label probability obtained from the last update; and er represents the statistical label probability after the addition.
[0241] In the embodiments of steps 1610 to 1630 above, a first parameter is obtained, a second parameter is determined by the difference between 1 and the first parameter, and the product of the statistical label probability obtained from the previous update and the second parameter is added to the first parameter to obtain the increased statistical label probability. By accurately calculating the updated statistical label probability through the above steps, the accuracy of congestion control is improved.
[0242] In some embodiments, referring to FIG17, step 1540, "when the second count value is less than or equal to the second quantity, reduce the statistical mark probability using the first mark probability reduction method," includes:
[0243] Step 1710: When the second count value is less than or equal to the second quantity, obtain the first parameter, which is a value between 0 and 1;
[0244] Step 1720: Use the difference between 1 and the first parameter as the second parameter;
[0245] Step 1730: The product of the statistical label probability and the second parameter is used as the reduced statistical label probability.
[0246] Steps 1710 to 1730 are described in detail below:
[0247] In step 1710, when the second count value is less than or equal to the second quantity, the first parameter is obtained, which is a value between 0 and 1.
[0248] The specific implementation of this disclosure is similar to the specific implementation of step 1610 above, which states that "when the first count value is less than or equal to the first quantity, the first parameter is obtained, and the first parameter is between 0 and 1", and will not be described in detail here.
[0249] In step 1720, the difference between 1 and the first parameter is used as the second parameter.
[0250] The specific implementation of this disclosure is similar to the specific implementation of step 1620 above, which involves "using the difference between 1 and the first parameter as the second parameter", and will not be described in detail here.
[0251] In step 1730, the product of the statistical label probability and the second parameter is used as the reduced statistical label probability.
[0252] According to embodiments of this disclosure, the statistical label probability in "product of statistical label probability and second parameter" refers to the statistical label probability obtained in the previous update. Specifically, if the current second count value is equal to 1 and the first quantity in the current received confirmation response is 0, it indicates that the previous update of the statistical label probability was performed after the previous confirmation response was received, and the current update of the statistical label probability needs to use the statistical label probability obtained in the last update corresponding to the previous confirmation response. If the current second count value is equal to 1 and the first quantity in the current received confirmation response is not 0, it indicates that the previous update of the statistical label probability was performed after the statistical label probability increment step was executed after receiving the current confirmation response, and the current update of the statistical label probability needs to use the statistical label probability obtained when the first count value was updated in the previous update. If the current second count value is less than or equal to the first quantity and is not 1, the current update of the statistical label probability needs to use the statistical label probability obtained when the second count value was updated in the previous update.
[0253] Here, we will explain step 1730 using the formula: First, obtain the first parameter w, and use the difference between 1 and the first parameter (1-w) as the second parameter. Then, use the product er1(1-w) of the statistical label probability er1 obtained from the previous update and the second parameter (1-w) as the reduced statistical label probability er. Specifically, the reduced statistical label probability er can be expressed as formula (2): er=er1(1-w) (2)
[0254] Where w represents the first parameter; (1-w) represents the second parameter; er1 represents the statistical label probability obtained from the last update; and er represents the reduced statistical label probability.
[0255] In the embodiments of steps 1710 to 1730 above, a first parameter is obtained, a second parameter is determined by the difference between 1 and the first parameter, and the product of the statistical label probability obtained in the previous update and the second parameter is used as the reduced statistical label probability. By accurately calculating the updated statistical label probability through the above steps, the accuracy of congestion control is improved.
[0256] In some embodiments, referring to FIG18, step 1120 includes:
[0257] Step 1810: Obtain the length of the first queue and the length of the second queue;
[0258] Step 1820: Obtain the critical marker probability corresponding to the length of the second queue;
[0259] Step 1830: Determine the statistical queue length based on the statistical labeling probability, the length of the first queue, the length of the second queue, and the critical labeling probability.
[0260] Steps 1810 to 1830 are described in detail below:
[0261] In step 1810, the length of the first queue and the length of the second queue are obtained.
[0262] In one embodiment, the first queue length refers to the queue length of the switching node corresponding to the lower limit of the packet marking. For example, in the embodiments of this disclosure, the first queue length is between 0 and 10KB.
[0263] It should be noted that in the data center network topologies of related technologies, the configuration of the first queue length is relatively conservative, typically set to 200KB. In the embodiments of this disclosure, the setting of the first queue length can be more aggressive compared to the configuration in related technologies. By configuring the first queue length in this way, the source node can more accurately understand the congestion situation within the switching node, thereby achieving more precise congestion control.
[0264] For example, the effectiveness of current congestion control is generally reflected through the queue length of the switching node, bandwidth utilization, and the fairness of bandwidth among different data streams to which different packets belong. The embodiments of this disclosure demonstrate through multiple sets of experiments that setting the first queue length between 0 and 10KB can achieve more precise congestion control. Table 1 shows the queue length of the switching node, bandwidth utilization, and the fairness of bandwidth among different data streams to which different packets belong for different first queue lengths:
[0265] Table 1
[0266] As shown in Table 1, when the first queue length is set to 5KB and 10KB, the queue length of the switching node is lower, and the bandwidth utilization is higher. The bandwidth fairness of different packets belonging to different data streams is also higher than that of different packets belonging to different data streams corresponding to other first queue lengths. Therefore, it can be seen that setting the first queue length between 0 and 10KB can achieve more precise congestion control.
[0267] According to embodiments of this disclosure, the value of the second queue length is related to the performance target of the service to which the packet belongs. If the service prioritizes extreme latency, then a slight contribution to throughput can be made by setting the second queue length to a smaller value. Conversely, if the service prioritizes maximum throughput, then a slight latency can be tolerated by setting the second queue length to a larger value.
[0268] The specific method for "obtaining the length of the second queue" will be described in detail below.
[0269] In step 1820, the critical marker probability corresponding to the second queue length is obtained.
[0270] According to embodiments of this disclosure, the critical marking probability refers to the first probability corresponding to the second queue length. Referring to Figure 10, assuming that the y-axis coordinate corresponding to the distance from the first queue length to the second queue length is a linear interval of the first probability increase, then the critical marking probability is the largest first probability within this linear interval.
[0271] For example, the critical labeling probability can be 100% or other values. In order to facilitate a more accurate calculation of the statistical labeling probability in the future, the embodiments of this disclosure determine the critical labeling probability to a relatively high value, such as 100%.
[0272] In step 1830, the statistical queue length is determined based on the statistical labeling probability, the first queue length, the second queue length, and the critical labeling probability.
[0273] According to embodiments of this disclosure, the statistical queue length refers to the average queue length of the buffer queues of the switching node in the first period. Since the statistical marking probability is the average probability that the switching node marks all received packets in the first period, and the switching node marks packets based on its internal queue length, as well as the first queue length, second queue length, and critical marking probability, the statistical queue length can be inferred from the statistical marking probability, the first queue length, the second queue length, and the critical marking probability.
[0274] The specific method for "determining the statistical queue length based on the statistical labeling probability, the length of the first queue, the length of the second queue, and the critical labeling probability" will be described in detail below.
[0275] The embodiments of steps 1810 to 1830 described above can infer the statistical queue length based on the statistical labeling probability, the first queue length, the second queue length, and the critical labeling probability, which facilitates the subsequent calculation of the overload rate based on the statistical queue length. The updated statistical labeling probability is accurately calculated through the above steps, thereby improving the accuracy of congestion control.
[0276] In some embodiments, referring to FIG19, step 1810, "obtaining the first queue length and the second queue length", includes:
[0277] Step 1910: Obtain the bandwidth and idle latency of the switching node;
[0278] Step 1920: Determine the delay-bandwidth product of the switching nodes based on bandwidth and idle latency;
[0279] Step 1930: Determine the first coefficient based on the maximum latency of the service to which the message belongs;
[0280] Step 1940: Determine the length of the second queue based on the first coefficient and the delay-bandwidth product.
[0281] Steps 1910 to 1940 are described in detail below:
[0282] In step 1910, the bandwidth and idle latency of the switching node are obtained.
[0283] According to embodiments of this disclosure, the bandwidth of a switching node refers to the amount of data transmitted per second by the switching node, which can be used to represent the data transmission capacity of the link to which the switching node belongs. Idle latency can be expressed as the communication time in a data center network. For example, assuming that message A takes 6 milliseconds to travel from the source node to the destination node when the data center network is idle, then the idle latency is 6 milliseconds.
[0284] In real-world transmission scenarios, the performance of data center network services can be evaluated by measuring the bandwidth and idle latency of switching nodes.
[0285] In step 1920, the delay-bandwidth product of the switching node is determined based on bandwidth and idle delay.
[0286] According to embodiments of this disclosure, the delay-bandwidth product is a network performance metric, and it is the product of bandwidth and idle delay. Since bandwidth represents the data transmission capacity of the link to which the switching node belongs, and idle delay represents the communication time in the data center network, the delay-bandwidth product can be expressed as the maximum amount of data that the data center network can transmit within any given time period. Furthermore, the delay-bandwidth product can be equivalent to the maximum amount of data packets that the source node has sent but has not yet received an acknowledgment of.
[0287] For example, assuming the bandwidth is 100 gigabits per second (Gbps) and the idle latency is 10 microseconds (µs), the bandwidth product of the switching node is 100Gbps * 10µs = 125 kilobytes (KB).
[0288] In step 1930, a first coefficient is determined based on the maximum delay of the service to which the message belongs.
[0289] According to embodiments of this disclosure, the value of the first coefficient is related to the performance target of the service to which the message belongs, and the range of the first coefficient can be between 0.5 and 2.
[0290] For example, if the service to which the message belongs requires higher latency, the first coefficient can be set between 0.5 and 1.5. Conversely, if the service to which the message belongs requires the highest throughput, then a slight latency can be tolerated, and the first coefficient can be set between 1.5 and 2.
[0291] In step 1940, the second queue length is determined based on the first coefficient and the delay-bandwidth product.
[0292] According to embodiments of this disclosure, the second queue length can be the product of a first coefficient and a delay-bandwidth product. Embodiments of this disclosure determine the second queue length by using the first coefficient and the delay-bandwidth product, taking into account the maximum amount of data that the data center network can transmit at any given time, thus improving the accuracy of congestion control.
[0293] For example, assuming the service to which the message belongs seeks the highest throughput, then a slight delay is acceptable, and the first coefficient is set to 2. With a delay-bandwidth product of 100KB, the second queue length is the product of the first coefficient and the delay-bandwidth product, i.e., the second queue length is 200KB.
[0294] The embodiments of steps 1910 to 1940 above determine the second queue length based on the product of the first coefficient and the delay bandwidth. This not only takes into account the maximum amount of data that the data center network can transmit at any given time, but also the performance indicators pursued by the service to which the message belongs, thus improving the accuracy of congestion control.
[0295] In one embodiment, referring to FIG20, step 1830, "determining the statistical queue length based on the statistical labeling probability, the first queue length, the second queue length, and the critical labeling probability," includes:
[0296] Step 2010: Determine the first length difference between the second queue length and the first queue length;
[0297] Step 2020: Determine the first ratio of the statistical label probability to the critical label probability;
[0298] Step 2030: Determine the statistical queue length based on the first queue length, the first length difference, and the first ratio.
[0299] Steps 2010 to 2030 are described in detail below:
[0300] In step 2010, a first length difference between the second queue length and the first queue length is determined.
[0301] According to an embodiment of this disclosure, referring to FIG9, the first length difference between the second queue length and the first queue length corresponds to a linear interval of the queue length for which the switching node adds a congestion marker.
[0302] For example, step 2010 is explained here with reference to the formula: First, the length of the first queue is obtained as K. min Second queue length K max Then determine the length K of the second queue. max and the length K of the first queue min The first length difference between them is (K) max -K min ).
[0303] In step 2020, a first ratio of the statistical labeling probability to the critical labeling probability is determined.
[0304] According to embodiments of this disclosure, the first ratio refers to the ratio of the statistical labeling probability to the critical labeling probability. Furthermore, the first ratio is calculated to more accurately estimate the queue length corresponding to the statistical labeling probability later.
[0305] For example, step 2020 is explained here with reference to the formula: The statistical labeling probability er and the critical labeling probability P have already been determined above. max Therefore, the statistical labeling probability er and the critical labeling probability P can be determined. max The first ratio is
[0306] In step 2030, the statistical queue length is determined based on the first queue length, the first length difference, and the first ratio.
[0307] According to embodiments of this disclosure, the first queue length is the lower limit for a switching node to add a congestion mark to a packet. A switching node will only add a congestion mark to a packet when its queue length exceeds the first queue length. The first height difference corresponds to a linear interval of the queue length for which the switching node adds a congestion mark, and the first ratio corresponds to the ratio of the statistical marking probability to the critical marking probability. The amount by which the switching node's queue exceeds the first queue length can be calculated by multiplying the first length difference and the first ratio. The statistical queue length can be deduced by adding the first queue length to the product of the first length difference and the first ratio.
[0308] For example, step 2030 is explained here with reference to the formula: the length of the first queue has been determined to be K as described above. min The length of the second queue is K. max The first ratio is The first length difference is (K) max -K min This indicates that the length of the first queue, K, is used as a reference. min First length difference (K) max -K min ) and the first ratio The formula for determining the length q of the statistical queue is formula (3):
[0309] Among them, K min K represents the length of the first queue; max Indicates the length of the second queue; (K) max -K min ) represents the first length difference; er represents the statistical label probability; P max Represents the critical label probability; q represents the first ratio; q represents the length of the statistical queue.
[0310] The embodiments of steps 2010 to 2030 described above can deduce the statistical queue length based on the first length difference between the second queue length and the first queue length, the first ratio of the statistical labeling probability to the critical labeling probability, and the first queue length. By accurately calculating the updated statistical labeling probability through the above steps, the accuracy of congestion control is improved.
[0311] In one embodiment, referring to FIG21, step 1130, "determining the overload rate of the switching nodes in the first period based on the statistical queue length," includes:
[0312] Step 2110: Based on the statistical queue length, determine the load of the switching nodes in the first cycle;
[0313] Step 2120: Obtain the port bandwidth of the switching node;
[0314] Step 2130: Based on the load and port bandwidth, determine the overload rate of the switching nodes in the first cycle.
[0315] Steps 2110 to 2130 are described in detail below:
[0316] In step 2110, the load of the switching nodes in the first cycle is determined based on the statistical queue length.
[0317] According to embodiments of this disclosure, the load is the amount of data corresponding to the packets processed by the switching node in the first cycle. Excessive load may prevent the switching node from processing requests for other packets, or even cause the switching node to malfunction. Since the statistical queue length refers to the average queue length of the switching node's buffer queue in the first cycle, embodiments of this disclosure can calculate the load of the switching node in the first cycle based on the statistical queue length.
[0318] The specific method for "determining the load of the exchange node in the first cycle based on the statistical queue length" will be described in detail below.
[0319] In step 2120, the port bandwidth of the switching node is obtained.
[0320] According to embodiments of this disclosure, port bandwidth determines the maximum data transmission speed that a switching node's port can handle. For example, a switching node with higher port bandwidth can support higher data transmission speeds, thereby meeting the needs of network applications with high bandwidth requirements. Therefore, to facilitate subsequent estimation of the load corresponding to a switching node under overload conditions, the maximum data transmission speed that the switching node's port can handle, i.e., the switching node's port bandwidth, is first obtained.
[0321] In step 2130, the overload rate of the switching node in the first cycle is determined based on the load and port bandwidth.
[0322] According to embodiments of this disclosure, the load is the amount of data corresponding to the packets processed by the switching node in the first period, the port bandwidth determines the maximum data transmission speed that the switching node's port can handle, and the first period determines the period for updating the overload rate. After determining the load, port bandwidth, and first period, the overload rate of the switching node in the first period can be calculated based on the load, port bandwidth, and first period. This facilitates subsequent assessment of whether the switching node is congested based on the overload rate of the switching node in the first period, improving the accuracy of congestion detection.
[0323] The specific method for "determining the overload rate of the switching node in the first cycle based on load, port bandwidth, and the first cycle" will be described in detail below.
[0324] The embodiments of steps 2110 to 2130 above can calculate the overload rate of the switching node in the first period based on the load, port bandwidth and the first period, which facilitates subsequent assessment of whether the switching node is congested based on the overload rate of the switching node in the first period, and improves the accuracy of congestion detection.
[0325] The above is a general description of steps 2110 to 2130. The specific implementation process of steps 2110 and 2130 will be described in detail below.
[0326] In one embodiment, referring to FIG22, step 2110, "determining the load of the switching nodes in the first period based on the statistical queue length," includes:
[0327] Step 2210: Obtain the queue weight coefficient and queue fluctuation damping coefficient;
[0328] Step 2220: Determine the second length difference between the current first period's statistical queue length and the previous first period's statistical queue length;
[0329] Step 2230: Based on the queue weight coefficient, the statistical queue length, the queue fluctuation damping coefficient, and the difference between the second length, determine the load of the switching node in the first cycle.
[0330] Steps 2210 to 2230 are described in detail below:
[0331] In step 2210, the queue weight coefficient and the queue fluctuation damping coefficient are obtained.
[0332] According to embodiments of this disclosure, the queue weight coefficient is a weight assigned to the queue length (hereinafter referred to as internal queue length) of the buffer queue of the switching node in each first cycle, and under normal circumstances, the queue weight coefficient is 1. The queue fluctuation damping coefficient is a weight assigned to the changing trend of the queue length of the buffer queue of the switching node in each first cycle, and under normal circumstances, the queue fluctuation damping coefficient is 0.5-1.0.
[0333] In step 2220, the second length difference between the current first period's statistical queue length and the previous first period's statistical queue length is determined.
[0334] According to embodiments of this disclosure, the second length difference is the difference between the statistical queue length of the current first period and the statistical queue length of the previous first period. The second length difference reflects the changing trend of the buffer queue length of the switching node. Embodiments of this disclosure, when calculating the load of the switching node, consider not only the buffer queue length of the switching node in the current first period but also the buffer queue length of the switching node in the previous first period, thus improving the accuracy of congestion detection.
[0335] In step 2230, the load of the switching node in the first cycle is determined based on the queue weight coefficient, the statistical queue length, the queue fluctuation damping coefficient, and the difference between the second length.
[0336] According to embodiments of this disclosure, the queue weight coefficient is a weight assigned to the queue length of the swap node's cache queue in each first cycle, and the statistical queue length refers to the average queue length of the swap node's cache queue in the first cycle. The queue fluctuation damping coefficient is a weight assigned to the changing trend of the swap node's cache queue length in each first cycle, and the second length difference reflects the changing trend of the swap node's cache queue length. The load corresponding to the queue length of the swap node's cache queue in the first cycle can be calculated using the queue weight coefficient and the statistical queue length. The load consumed by the change in the internal queue length of the swap node can be calculated using the queue fluctuation damping coefficient and the second length difference. By combining the load corresponding to the queue length of the swap node's cache queue in the first cycle and the load consumed by the change in the queue length of the swap node's cache queue, the load of the swap node in the first cycle can be determined.
[0337] For example, step 2230 is explained here with reference to the formula: First, the queue weight coefficient α and the queue fluctuation damping coefficient β are obtained. Then, the statistical queue length q of the current first cycle and the statistical queue length q of the previous first cycle are determined. l The second length difference (qq) l Finally, based on the queue weight coefficient α and the statistical queue length q, l The queue wave damping coefficient β and the difference between the second length (qq) l The load of the switching nodes in the first cycle is determined. The formula for calculating the load of the switching nodes in the first cycle, based on the queue weight coefficient, statistical queue length, queue fluctuation damping coefficient, and the difference between the queue weight coefficient and the second queue length, is shown in formula (4): s=α.q+β.(qq) l (4)
[0338] Where α represents the queue weight coefficient; β represents the queue fluctuation damping coefficient; q represents the statistical queue length for the current first period; q l This indicates the length of the statistical queue in the previous first period; (qq) l ) represents the second length difference; s represents the load of the exchange node in the first cycle.
[0339] In the embodiments of steps 2210 to 2230 above, a second length difference between the statistical queue length of the current first period and the statistical queue length of the previous first period is determined. Based on the queue weight coefficient, the statistical queue length, the queue fluctuation damping coefficient, and the second length difference, the load of the switching node in the first period is determined. The steps in this embodiment of the disclosure consider not only the queue length of the switching node's buffer queue in the current first period but also the queue length of the buffer queue when calculating the load of the switching node, thus improving the accuracy of congestion detection.
[0340] In one embodiment, referring to FIG23, step 2130, "determining the overload rate of the switching node in the first period based on the load, port bandwidth, and the first period," includes:
[0341] Step 2310: Determine the port bandwidth and the first product of the first cycle;
[0342] Step 2320: Determine the overload rate as the ratio of the load to the first product.
[0343] Steps 2310 to 2320 are described in detail below:
[0344] In step 2310, the port bandwidth and the first product of the first cycle are determined.
[0345] According to embodiments of this disclosure, the first product is the product of the port bandwidth and the first cycle. The first product can indicate the maximum amount of data that the switching node port can process in the first cycle.
[0346] Here, step 2310 is explained in conjunction with the formula: First, obtain the port bandwidth B and the first period T, and then determine that the first product of the port bandwidth B and the first period T is BT.
[0347] In step 2320, the ratio of the load amount to the first product is determined as the overload rate.
[0348] According to embodiments of this disclosure, the first product indicates the maximum amount of data that the switching node port can process in the first cycle, and the load indicates the amount of data corresponding to the packets processed by the switching node in the first cycle. By calculating the ratio of the load to the first product, the overload rate of the switching node in the first cycle can be determined.
[0349] Here, we will explain step 2320 using the formula: First, obtain the port bandwidth B and the first period T, then determine the first product of the port bandwidth B and the first period T as BT. Since the load s has already been determined above, the ratio of the load s to the first product BT can be determined as the overload rate. The formula for determining the overload rate is formula (5):
[0350] Where s represents the load; B represents the port bandwidth; T represents the first cycle; BT represents the first product; and o represents the overload rate.
[0351] In the embodiments of steps 2310 to 2320 above, the maximum amount of data that the switching node port can process in the first cycle is first determined based on the port bandwidth and the first cycle. Then, the overload rate of the switching node in the first cycle is determined by calculating the ratio of the load to the maximum amount of data that the switching node port can process in the first cycle. The embodiments of this disclosure, through the above steps, facilitate subsequent assessment of whether the switching node is congested based on the overload rate of the switching node in the first cycle, thus improving the accuracy of congestion detection.
[0352] Step 440 will be described in detail below.
[0353] Step 440: Update the first congestion window based on the overload rate, wherein the number of packets to be sent that can be accommodated is controlled by the updated first congestion window.
[0354] In one embodiment, referring to FIG24, step 440 includes:
[0355] Step 2410: When the overload rate of the previous first cycle is greater than the preset value, when the confirmation response is received for the first time in the current first cycle, shorten the sliding window length of the first congestion sliding window based on the overload rate.
[0356] Step 2420: When the overload rate of the previous first cycle is less than or equal to the preset value, extend the sliding window length of the first congestion sliding window each time an acknowledgment response is received in the current first cycle.
[0357] Steps 2410 to 2420 are described in detail below:
[0358] In step 2410, when the overload rate of the previous first cycle is greater than a preset value, when the confirmation response is received for the first time in the current first cycle, the sliding window length of the first congestion sliding window is shortened based on the overload rate.
[0359] According to embodiments of this disclosure, the overload rate and a preset value (such as 0) can be compared to determine whether the switching node is overloaded in the first cycle corresponding to the overload rate. If the overload rate of the previous first cycle is greater than 0, it indicates that the switching node was overloaded in the previous first cycle. Overload means that the amount of data in the switching node's cache has exceeded the maximum amount of data that the switching node can handle. The overload of the switching node in the previous first cycle indicates that the switching node experienced congestion in the previous first cycle, and some measures need to be taken to alleviate the congestion in the switching node. Based on this, if the overload rate of the previous first cycle is greater than 0, embodiments of this disclosure will reduce the length of the first congestion window based on the overload rate when the first acknowledgment response is received in the current first cycle. For example, by reducing the length of the first congestion window, the number of packets in the subsequent data center network (i.e., packets that the source node has sent but the destination node has not yet received) can be reduced accordingly, thereby achieving the purpose of alleviating the congestion in the switching node.
[0360] For example, referring to Figure 25A, the first congestion window before the update is used to indicate 12 messages sent to the destination node (messages 2-13 in Figure 25A). Once a message among the 12 messages is acknowledged, the first congestion window slides to accommodate more unsent messages (i.e., messages to be sent), thereby sending the accommodated unsent messages to the destination node. If the overload rate of the previous cycle is greater than 0, the length of the first congestion window is reduced based on the overload rate when the first acknowledgment is received in the current first cycle. The reduced first congestion window is used to indicate 10 messages sent to the destination node (messages 2-11 in Figure 25A), which correspondingly reduces the number of messages in the subsequent data center network, achieving precise congestion control.
[0361] The specific method for "shortening the sliding window length of the first congestion window based on the overload rate when the overload rate of the previous first cycle is greater than the preset value and the first confirmation response is received in the current first cycle" will be described in detail below.
[0362] In step 2420, when the overload rate of the previous first cycle is less than or equal to a preset value, the sliding window length of the first congestion sliding window is extended each time an acknowledgment response is received in the current first cycle.
[0363] According to embodiments of this disclosure, steps 2420 and 2410 are actually different branch steps. If the overload rate of the previous first cycle is greater than a preset value (e.g., 0), it indicates that the switching node was overloaded in the previous first cycle, and step 2410 is executed. If the overload rate of the previous first cycle is less than or equal to the preset value (e.g., 0), it indicates that the switching node was underloaded in the previous first cycle, and step 2420 is executed. Underload indicates that the amount of data in the switching node's cache is less than the maximum amount of data that the switching node can handle. Underload in the previous first cycle indicates that the switching node did not experience congestion in the previous first cycle, or the congestion situation of the switching node was alleviated, but in this case, the resources of the switching node may not be fully utilized. Therefore, some measures need to be taken to ensure that the resources of the switching node can be fully utilized.
[0364] Based on this, if the overload rate of the previous first cycle is less than a preset value (e.g., 0), the embodiments of this disclosure will increase the length of the first congestion window based on the overload rate when the acknowledgment response is received for the first time in the current first cycle. By increasing the length of the first congestion window, the number of packets in the subsequent data center network (i.e., packets that the source node has sent but the destination node has not yet received) can be increased accordingly, thereby making full use of the switching node's resources.
[0365] For example, referring to Figure 25B, the initial congestion window before the update indicates 12 packets sent to the destination node (packets 2-13 in Figure 25B). Once one of the 12 packets is acknowledged, the initial congestion window slides to accommodate more unsent packets, which are then sent. If the overload rate of the previous cycle is less than 0, the length of the initial congestion window is increased based on the overload rate when the first acknowledgment is received in the current first cycle. The increased initial congestion window indicates 15 packets sent to the destination node (packets 2-16 in Figure 25B). Correspondingly, this also increases the number of packets in the subsequent data center network, making full use of the switching node's resources.
[0366] The specific method for "extending the sliding window length of the first congestion window each time an acknowledgment is received in the current first cycle when the overload rate of the previous first cycle is less than or equal to a preset value" will be described in detail below.
[0367] In the embodiments of steps 2410 to 2420 above, when the overload rate of the previous first cycle is greater than a preset value, the length of the first congestion window is reduced each time an acknowledgment is received in the current first cycle, thereby reducing the number of packets in the subsequent data center network and achieving precise congestion control. Conversely, when the overload rate of the previous first cycle is less than or equal to the preset value, the length of the first congestion window is increased each time an acknowledgment is received in the current first cycle, thereby increasing the number of packets in the subsequent data center network to fully utilize the resources of the switching node.
[0368] The above is a general description of steps 2410 and 2420. The specific implementation process of steps 2410 and 2420 will be described in detail below.
[0369] In one embodiment, referring to FIG26, step 2410 includes:
[0370] Step 2610: When the confirmation response is received for the first time in the current first cycle, determine the first sum of the first value and the overload rate;
[0371] Step 2620: Use the ratio of the length of the first congestion window to the length of the first sum as the shortened length of the first congestion window.
[0372] Steps 2610 to 2620 are described in detail below:
[0373] In step 2610, when the confirmation response is received for the first time in the current first cycle, the first value and the first sum of the overload rate are determined.
[0374] According to embodiments of this disclosure, the first sum refers to the sum of a first value (e.g., 1) and the overload rate. If the overload rate of the previous first cycle is greater than 0, it indicates that the switching node was in an overloaded state in the previous first cycle. Therefore, when the acknowledgment response is received for the first time in the current first cycle, the congestion situation in the switching node is alleviated by reducing the length of the first congestion window. First, the first sum of the first value (e.g., 1) and the overload rate is determined so that the window length of the first congestion window can be shortened subsequently based on the first sum of the first value (e.g., 1) and the overload rate.
[0375] Here, step 2610 is explained in conjunction with the formula: First, obtain the overload rate o, and then determine the first sum of 1 and the overload rate o, which is (1+o).
[0376] In step 2620, the ratio of the length of the first congestion window to the first sum is used as the shortened length of the first congestion window.
[0377] According to embodiments of this disclosure, the "first congestion window" in the phrase "the ratio of the window length of the first congestion window to the first sum" refers to the first congestion window calculated after the last acknowledgment received in the previous first cycle. By using the ratio of the window length of the first congestion window to the first sum as the length of the shortened first congestion window, congestion in the switching node can be alleviated, achieving precise congestion control.
[0378] Here, step 2620 is explained using the formula: First, obtain the overload rate o, determine the first sum (1+o) of 1 and the overload rate o, and then divide the length wc of the first congestion window by the first sum (1+o) as the shortened length cwnd of the first congestion window. The formula for dividing the length of the first congestion window by the first sum as the shortened length of the first congestion window is formula (6):
[0379] Where cwnd represents the length of the first congestion window after reduction; wc represents the first congestion window calculated after the last acknowledgment received in the previous first cycle; o represents the overload rate; and (1+o) represents the first sum.
[0380] For example, if the first congestion window wc calculated after the last acknowledgment received in the previous first cycle is 10 and the overload rate o is 1, then the length of the shortened first congestion window cwnd is 5.
[0381] The embodiments of steps 2610 to 2620 above, by determining the first sum of the first value (e.g., 1) and the overload rate, and using the ratio of the window length of the first congestion window to the first sum as the window length of the shortened first congestion window, can alleviate congestion in the switching node and achieve precise congestion control.
[0382] In one embodiment, referring to FIG27, after step 2410, the congestion control method further includes:
[0383] Step 2710: When the overload rate of the previous first cycle is greater than the preset value, the cumulative confirmation response value will be reset to zero.
[0384] Step 2420 includes:
[0385] Step 2720: When the overload rate of the previous first cycle is less than or equal to the preset value, increase the cumulative value of the confirmation response each time a confirmation response is received in the current first cycle.
[0386] Step 2730: When the cumulative confirmation response value has not reached the predetermined cumulative value, determine the extended length of the first congestion sliding window based on the first extension method;
[0387] Step 2740: When the cumulative value of the confirmed response reaches the predetermined cumulative value, determine the extended length of the first congestion sliding window based on the second extension method.
[0388] Steps 2710 to 2740 are described in detail below:
[0389] In step 2710, when the overload rate of the previous first cycle is greater than a preset value, the cumulative value of the confirmation response will be reset to zero.
[0390] According to embodiments of this disclosure, the cumulative confirmation response value refers to the number of consecutive first-cycle periods in which the switching node was underloaded prior to the previous first-cycle period. When the overload rate is less than or equal to a preset value (e.g., 0), the switching node is determined to be in an underloaded state. For example, if the overload rate of the previous first-cycle period is greater than 0, but prior to the previous first-cycle period there were 5 consecutive first-cycle periods in which the overload rate of the switching node was less than or equal to 0, then the cumulative confirmation response value is 5.
[0391] Since the cumulative acknowledgment value indicates the number of consecutive first cycles before the previous first cycle, if the overload rate of the previous first cycle is greater than 0, the cumulative acknowledgment value can be set to zero.
[0392] In step 2720, when the overload rate of the previous first cycle is less than or equal to a preset value, the cumulative value of the confirmation response is increased each time a confirmation response is received in the current first cycle.
[0393] According to the embodiments of this disclosure, since the cumulative confirmation response value indicates the number of consecutive underloaded first cycles of the switching node before the previous first cycle, if the overload rate of the previous first cycle is less than or equal to 0, it means that the switching node was still underloaded in the previous first cycle. At this time, the cumulative confirmation response value can be incremented by 1 to count the number of consecutive underloaded first cycles of the switching node.
[0394] In step 2730, when the confirmed response accumulation value has not reached the predetermined accumulation value, the extended length of the first congestion sliding window is determined based on the first extension method.
[0395] According to embodiments of this disclosure, the predetermined cumulative value refers to a threshold for the number of consecutive first periods of underload, typically set to 5. The first extension method refers to a technical means for increasing the first congestion window. When the confirmed response cumulative value has not reached the predetermined cumulative value, it indicates that the switching node experienced overload in the previous few first periods, and congestion control measures, such as reducing the first congestion window, have been implemented. Furthermore, the congestion control of the switching node has shown initial effectiveness after the previous first period, and the internal cache resources of the switching node have been alleviated. To reduce the risk of wasting internal cache resources, the extended window length of the first congestion window can be further determined based on the first extension method, thereby reducing congestion within the switching node while fully utilizing its internal cache resources.
[0396] The specific method for "determining the length of the extended first congestion window based on the first extension method" will be described in detail below.
[0397] In step 2740, when the cumulative confirmation value reaches the predetermined cumulative value, the extended length of the first congestion sliding window is determined based on the second extension method.
[0398] According to embodiments of this disclosure, the second extension method refers to a technical means for increasing the first congestion window. The second extension method is more aggressive than the first extension method; that is, the growth trend of the first congestion window corresponding to the increase through the second extension method is faster than the growth trend of the first congestion window corresponding to the increase through the first extension method. When the cumulative confirmation response value reaches a predetermined cumulative value, it indicates that the switching node was in an underloaded state for multiple first cycles prior to the previous first cycle. At this time, the cache resources inside the switching node have not been fully utilized for a long time, and some aggressive measures can be taken to fully utilize the cache resources inside the switching node. To fully utilize the cache resources inside the switching node, it is necessary to further determine the extended window length of the first congestion window based on the second extension method to improve the utilization rate of the cache resources inside the switching node. For example, because the cumulative value of the confirmation response in step 2740 is greater than the cumulative value of the confirmation response in step 2730, in order to make full use of the cache resources inside the switching node, the second extension method is more aggressive than the first extension method. That is, the growth trend of the first congestion window corresponding to the first congestion window is increased by the second extension method than the growth trend of the first congestion window corresponding to the first congestion window is increased by the first extension method.
[0399] For example, assuming the predetermined cumulative value is 5, if the cumulative value of confirmed responses is 3 in the current first cycle, the length of the extended first congestion window needs to be determined based on the first extension method. If the cumulative value of confirmed responses is 6 in the current first cycle, the length of the extended first congestion window needs to be determined based on the second extension method.
[0400] The specific method for "determining the length of the extended first congestion sliding window based on the second extension method" will be described in detail below.
[0401] The embodiments of steps 2710 to 2740 described above can, when the confirmed response accumulation value has not reached a predetermined accumulation value, further determine the extended window length of the first congestion window based on the first extension method, so as to reduce congestion within the switching node while making full use of the internal cache resources of the switching node. Moreover, when the confirmed response accumulation value has reached the predetermined accumulation value, the extended window length of the first congestion window is further determined based on a more aggressive second extension method than the first extension method, so as to improve the utilization rate of the internal cache resources of the switching node.
[0402] The above is a general description of steps 2710 to 2740. The specific implementation processes of steps 2730 and 2740 are described in detail below.
[0403] In one embodiment, referring to FIG28, step 2730, "when the cumulative value of the confirmation response has not reached the predetermined cumulative value, determining the extended length of the first congestion sliding window based on the first extension method," includes:
[0404] Step 2810: When the cumulative value of the confirmed response has not reached the predetermined cumulative value, obtain the second quantity in the confirmed response;
[0405] Step 2820: Initialize the third counter value to 1;
[0406] Step 2830: When the third count value is less than or equal to the second quantity, the ratio of the additive windowing coefficient to the length of the first congestion window is used as the window length increment, and the length of the first congestion window is added to the window length increment to obtain the extended window length of the first congestion window.
[0407] Step 2840: Increment the third count value by 1, and return to the step of using the ratio of the additive windowing coefficient to the length of the first congestion window as the window length increment when the third count value is less than or equal to the second quantity, until the third count value is greater than the second quantity.
[0408] Steps 2810 to 2840 are described in detail below:
[0409] In step 2810, when the cumulative value of the confirmed response has not reached the predetermined cumulative value, the second quantity in the confirmed response is obtained.
[0410] According to embodiments of this disclosure, if the cumulative acknowledgment value does not reach a predetermined cumulative value, it indicates that the cache resources within the current switching node are not being fully utilized. In this case, whenever an acknowledgment is received from a destination node, the second number of packets carrying the unobstructed flag in the acknowledgment is obtained to estimate the status of the cache resources within the current switching node, so as to subsequently increase the window length of the first congestion window based on the status of the cache resources within the current switching node.
[0411] In step 2820, the third count value is initialized to 1.
[0412] According to embodiments of this disclosure, a third count value is used to indicate the number of times the step of increasing the first congestion window has been performed. In practical applications, the third count value is similar to a register, used to count the current number of times the step of increasing the first congestion window has been performed.
[0413] When the overload rate is less than or equal to 0, the source node needs to increase the length of the first congestion window after receiving each acknowledgment. The number of times the first congestion window is increased is determined by the second count in the acknowledgment. Since the second count may be different in each acknowledgment, the number of times the first congestion window is increased also needs to be adjusted. Therefore, the source node needs to initialize the third count value after receiving each acknowledgment.
[0414] In step 2830, when the third count value is less than or equal to the second quantity, the ratio of the additive windowing coefficient to the length of the first congestion window is used as the window length increment, and the length of the first congestion window is added to the window length increment to obtain the extended window length of the first congestion window.
[0415] According to embodiments of this disclosure, the additive windowing coefficient refers to a coefficient that adjusts the value of the first congestion sliding window.
[0416] If the overload rate in the previous first cycle was less than or equal to 0, when each acknowledgment is received and the first congestion window is increased, the number of times the step of increasing the first congestion window is executed is the same as the second number in the acknowledgment. Because the third count is initialized to 1 after each acknowledgment, and is incremented only after each step of increasing the first congestion window is executed, this means that the actual number of times the step of increasing the first congestion window is executed is the third count minus one. Therefore, if the third count is less than the second number, the step of increasing the first congestion window needs to be executed. Specifically, when executing the step of increasing the first congestion window, the ratio of the additive windowing coefficient to the length of the first congestion window before the update is used as the window length increment. The window length increment refers to the increase in the first congestion window. After obtaining the window length increment, the length of the first congestion window is added to the window length increment to obtain the length of the extended first congestion window.
[0417] Here, step 2830 is explained using the formula: If the third count value is less than or equal to the second count, the ratio of the additive windowing coefficient θ to the length cwnd1 of the first congestion sliding window is... As the window length increment, the length cwnd1 of the first congested window is compared with the window length increment. Adding these together, we obtain the extended length of the first congestion window. The formula for calculating the extended length of the first congestion window is shown in Formula (7):
[0418] Where cwnd1 represents the first congestion sliding window before the update; θ represents the additive windowing coefficient; represents the ratio of the additive windowing coefficient to the length of the first congestion window, and cwnd represents the extended first congestion window.
[0419] When the overload rate is less than or equal to 0, and the currently received acknowledgment is the first acknowledgment corresponding to the current first cycle, and the third count value is 1, the first congestion window before the update is the first congestion window corresponding to the last acknowledgment received in the previous first cycle. When the currently received acknowledgment is not the first acknowledgment corresponding to the current first cycle, and the third count value is 1, the first congestion window before the update is the first congestion window calculated when the acknowledgment was received last time. When the third count value is greater than 1 and less than or equal to the second quantity, the first congestion window before the update is the first congestion window obtained when the first congestion window increment step was performed last time.
[0420] In step 2840, the third count value is incremented by 1, and the step of incrementing the window length by the ratio of the additive windowing coefficient to the length of the first congestion window is returned when the third count value is less than or equal to the second quantity, until the third count value is greater than the second quantity.
[0421] According to embodiments of this disclosure, since the third count value is used to indicate the number of times the step of increasing the first congestion window is performed, the third count value needs to be incremented by one each time the step of increasing the first congestion window is performed.
[0422] To more accurately calculate the extended first congestion window for congestion control, the source node, upon receiving an acknowledgment, performs a step to increase the first congestion window once, based on a second quantity in the acknowledgment. The number of times the step to increase the first congestion window is performed iteratively is consistent with the second quantity. Because embodiments of this disclosure use a third count value to count the number of times the step to increase the first congestion window is performed, the step to increase the first congestion window will not stop until the third count value is greater than the second quantity.
[0423] For example, if the second count in acknowledgment A is 3, the source node, upon receiving acknowledgment A, first initializes the third count to 1. At this point, the third count is less than 3, so the ratio of the additive windowing coefficient to the length of the first congestion window is used as the window length increment. The length of the first congestion window is then added to this increment to obtain the extended length of the first congestion window, and the third count is incremented by one, resulting in a third count of 2. However, the third count is still less than 3, so another step of increasing the first congestion window is performed to update it, and the third count is incremented by 1, resulting in a third count of 3. However, the third count is still not greater than 3, so another step of increasing the first congestion window is performed to update it, and the third count is incremented by 1, resulting in a third count of 4. At this point, the third count is greater than 3, so the step of increasing the first congestion window is stopped.
[0424] In the embodiments of steps 2810 to 2840 above, when the overload rate is less than or equal to 0 and the cumulative acknowledgment value has not reached a predetermined cumulative value, the number of times the first congestion window is increased is counted using a third count value. The process of increasing the first congestion window stops only when the third count value exceeds a second count value. The embodiments of this disclosure accurately obtain the extended first congestion window using the above method and send messages based on the extended first congestion window, thus fully utilizing the cache resources in the switching node.
[0425] In some embodiments, referring to FIG29, step 2740, "when the cumulative value of the acknowledgment response reaches a predetermined cumulative value, determining the extended window length of the first congestion window based on the second extension method," includes:
[0426] Step 2910: When the cumulative value of the confirmed responses reaches the predetermined cumulative value, obtain the second quantity in the confirmed responses;
[0427] Step 2920: Initialize the third counter value to 1;
[0428] Step 2930: When the third count value is less than or equal to the second quantity, the product of the predetermined multiple and the length of the first congestion window is used as the extended length of the first congestion window.
[0429] Step 2940: Increment the third count value by 1, and return to the step of using the product of the predetermined multiple and the window length of the first congestion window as the extended window length when the third count value is less than or equal to the second quantity, until the third count value is greater than the second quantity.
[0430] Steps 2910 to 2940 are described in detail below:
[0431] In step 2910, when the cumulative value of the confirmed response reaches a predetermined cumulative value, the second quantity of the confirmed response is obtained.
[0432] According to embodiments of this disclosure, if the cumulative value of confirmed responses reaches a predetermined cumulative value, it indicates that the switching node was in an underloaded state for multiple first cycles prior to the previous first cycle. In this case, the internal cache resources of the switching node have not been fully utilized for a long time, and some aggressive measures can be taken to fully utilize the internal cache resources of the switching node. At this time, whenever an confirmed response is received from a destination node, the second number of packets carrying the smooth flow flag in the confirmed response will be obtained to estimate the current state of the internal cache resources of the switching node, facilitating the subsequent increase of the length of the first congestion window based on the current state of the internal cache resources of the switching node.
[0433] In step 2920, the third count value is initialized to 1.
[0434] The specific implementation of this embodiment is similar to the specific implementation of "initializing the third count value to 1" in step 2820 above, and will not be described in detail here.
[0435] In step 2930, when the third count value is less than or equal to the second quantity, the product of the predetermined multiple and the length of the first congestion window is used as the extended length of the first congestion window.
[0436] According to embodiments of this disclosure, the predetermined multiple refers to the multiplier by which the value of the first congestion window is increased. By adjusting the size of the predetermined multiple, the increasing trend of the value of the first congestion window can be adjusted. Generally, the predetermined multiple is set to 1.1. For example, assuming the predetermined multiple is set to 1.1, step 2930 is explained here with reference to the formula: When the third count value is less than or equal to the second quantity, the product of the predetermined multiple and the length of the first congestion window is used as the length of the extended first congestion window. The formula for using the product of the predetermined multiple and the length of the first congestion window as the length of the extended first congestion window is formula (8): cwnd=cwnd1.1.1 (8)
[0437] Where cwnd represents the extended first congestion window; cwnd1 represents the original first congestion window.
[0438] In step 2940, the third count value is incremented by 1, and the process of using the product of a predetermined multiple and the window length of the first congestion window as the extended window length is returned when the third count value is less than or equal to the second quantity, until the third count value is greater than the second quantity.
[0439] It should be noted that the iterative execution of increasing the first congestion window in step 2940 is similar to that in step 2840. Both involve performing the step of increasing the first congestion window once based on the second quantity in the acknowledgment responses, and the number of iterations of increasing the first congestion window once is consistent with the second quantity. However, the steps for increasing the first congestion window in step 2940 are not the same as those in step 2840. This is because step 2940 corresponds to the situation where the accumulated value of acknowledgment responses reaches a predetermined accumulated value, and the method for increasing the first congestion window is the second extension method, while step 2840 corresponds to the situation where the accumulated value of acknowledgment responses has not reached the predetermined accumulated value, and the method for increasing the first congestion window is the first extension method. Therefore, step 2940 is more aggressive than step 2840.
[0440] In the embodiments of steps 2910 to 2940 described above, when the overload rate is less than or equal to 0 and the cumulative value of confirmed responses reaches a predetermined cumulative value, the number of times the first congestion window is increased is counted using a third count value. The process of increasing the first congestion window stops only when the third count value exceeds a second count value. Furthermore, the embodiments of this disclosure use a more aggressive second extension method than the first extension method to iteratively determine the window length of the extended first congestion window, thus precisely improving the utilization rate of cache resources within the switching node.
[0441] The following describes another embodiment of determining the overload rate of the switching nodes based on a first quantity and a second quantity, and updating the first congestion window based on the overload rate.
[0442] In some embodiments, referring to FIG30, when there are multiple switching nodes, the message is sent to the destination node through one of the multiple switching nodes; the acknowledgment response includes a first number and a second number corresponding to each switching node.
[0443] Step 430 includes:
[0444] Step 3010: Determine the overload rate of each switching node based on the first quantity and the second quantity corresponding to each switching node;
[0445] Step 440 includes:
[0446] Step 3020: Update the first congestion window corresponding to each switching node based on the overload rate of each switching node.
[0447] Steps 3010 and 3020 are described in detail below:
[0448] In step 3010, the overload rate of each switching node is determined based on the first quantity and the second quantity corresponding to each switching node.
[0449] According to embodiments of this disclosure, when multiple switching nodes exist between the source node and the destination node, a packet sent by the source node passes through only one of these switching nodes. To obtain the congestion status among the multiple switching nodes between the source and destination nodes, the source node can send multiple packets to the destination node, causing the packets to travel through different forwarding paths (each forwarding path corresponding to a switching node) to reach the destination node. Through the above steps, the destination node can receive packets carrying congestion flags and packets carrying unobstructed flags corresponding to each switching node. Then, a first quantity and a second quantity corresponding to each switching node are inserted into the acknowledgment response, and the acknowledgment response is returned to the source node, allowing the source node to determine the overload rate of each switching node based on the first and second quantities. Finally, the congestion status within each switching node is obtained based on its overload rate.
[0450] For example, referring to Figure 31, there are four switching nodes between the source node and the destination node, namely switching node 1, switching node 2, switching node 3, and switching node 4. To obtain the congestion status of these four switching nodes, the source node sends multiple packets to each of the four switching nodes, so that the destination node receives a packet carrying a congestion flag and a packet carrying a free-flow flag corresponding to each switching node. The source node receives the packets carrying congestion flags and free-flow flags forwarded by the four switching nodes, counts the packets carrying congestion flags and free-flow flags forwarded by each switching node, and returns acknowledgment response 1 (corresponding to switching node 1) to the source node, acknowledgment response 2 (corresponding to switching node 2) to the source node, acknowledgment response 3 (corresponding to switching node 3) to the source node, and acknowledgment response 4 (corresponding to switching node 4) to the source node. Upon receiving acknowledgment responses 1, 2, 3, and 4, the source node calculates the overload rate corresponding to switching node 1 based on acknowledgment response 1, the overload rate corresponding to switching node 2 based on acknowledgment response 2, the overload rate corresponding to switching node 3 based on acknowledgment response 3, and the overload rate corresponding to switching node 4 based on acknowledgment response 4.
[0451] Congestion or unobstructed status is recorded in the message corresponding to the switching node identifier. The first and second counts are generated by the destination node in the following way: the fourth and fifth counts corresponding to each switching node identifier are initialized to 0, where the fourth count indicates the number of messages for which the switching node corresponding to the switching node identifier has added the congestion mark, and the fifth count indicates the number of messages for which the switching node corresponding to the switching node identifier has added the unobstructed status. When a message is received, if the message contains the congestion mark corresponding to the switching node identifier, the fourth count corresponding to the switching node identifier is incremented by 1. When a message is received, if the message contains the unobstructed status corresponding to the switching node identifier, the fifth count corresponding to the switching node identifier is incremented by 1. When a predetermined condition is met, the fourth count is determined as the first count, and the fifth count is determined as the second count.
[0452] When multiple switching nodes exist between the source node and the destination node, to obtain the congestion status among these switching nodes, it is necessary for the source node to send multiple packets to the destination node, so that the packets reach the destination node through different forwarding paths. To enable the source node to distinguish between different packets carrying congestion / unobstructed flags forwarded by different switching nodes, the switching nodes in this embodiment of the disclosure will also add a switching node identifier to the packet when adding the congestion / unobstructed flag, so that the destination node can identify the switching node that added the congestion / unobstructed flag when it receives the packet.
[0453] According to embodiments of this disclosure, a fourth count value is used to indicate the number of packets whose corresponding switching nodes have added congestion tags. In practical applications, the fourth count value is similar to a register, used to count the number of packets received by the current destination node whose corresponding switching nodes have added congestion tags. A fifth count value is used to indicate the number of packets whose corresponding switching nodes have added unobstructed tags. In practical applications, the fifth count value is similar to a register, used to count the number of packets received by the current destination node whose corresponding switching nodes have added unobstructed tags.
[0454] Because the source node needs to re-initialize the number of packets with congestion flags added to the corresponding switching node in the packets received by the destination node, and the number of packets with unobstructed flags added to the corresponding switching node in the packets received by the destination node, after sending an acknowledgment to the source node, the destination node first needs to initialize the fourth and fifth count values corresponding to each switching node identifier to 0.
[0455] For example, referring to Figure 35, assuming there are multiple switching nodes between the current source node and the destination node, the message sent by the source node only passes through one of the multiple switching nodes (such as switching node 1). After the destination node sends an acknowledgment to the source node, and the current source node has not yet sent a message, in step 3510, the destination node initializes the fourth and fifth count values corresponding to each switching node identifier to 0. The fourth count value indicates the number of messages for which the switching node identifier has added a congestion flag, and the fifth count value indicates the number of messages for which the switching node identifier has added a smooth flow flag. In step 3520, when the destination node receives a message sent by a source node, if the message contains the congestion flag corresponding to switching node 1, the fourth count value corresponding to the switching node identifier is incremented by 1, indicating that a message carrying a congestion flag has been received forwarded by switching node 1. Similarly, in step 3530, when the destination node receives a message sent by the source node, if the message contains a passability flag corresponding to exchange node 1 with the exchange node identifier, the fifth count value corresponding to the exchange node identifier is incremented by 1, indicating that a message carrying a passability flag forwarded by exchange node 1 has been received. In step 3540, when a predetermined condition is met (i.e., a predetermined time period has elapsed since the destination node sent the previous acknowledgment), the current fourth count value is determined as the first quantity, and the fifth count value is determined as the second quantity. Furthermore, if the predetermined time period has not elapsed since the destination node sent the previous acknowledgment, but the total number of messages forwarded by exchange node 1 received by the destination node reaches a predetermined number, the current fourth count value is determined as the first quantity corresponding to exchange node 1, and the fifth count value is determined as the second quantity corresponding to exchange node 1. After determining the first and second quantities corresponding to exchange node 1, the first and second quantities corresponding to exchange node 1 are inserted into acknowledgment 1, and acknowledgment 1 is returned to the source node, so that the source node can determine the overload rate of exchange node 1 based on the first and second quantities in acknowledgment 1.
[0456] In step 3020, the first congestion window corresponding to each switching node is updated based on the overload rate of each switching node.
[0457] According to embodiments of this disclosure, when multiple switching nodes exist between the source node and the destination node, after receiving acknowledgment responses from each switching node, the source node determines the overload rate of each switching node based on a first quantity and a second quantity in the acknowledgment responses. Subsequently, the first congestion window corresponding to the packets sent by the source node to each switching node is updated based on the overload rate of each switching node, thereby controlling the number of packets sent by the source node to each switching node and achieving precise control of congestion at each switching node.
[0458] For example, referring to Figure 31, after calculating the overload rates of the four switching nodes based on the received acknowledgment responses, the source node will also update the first congestion window corresponding to the message sent by the source node to switching node 1 based on the overload rate corresponding to switching node 1. Similarly, the source node will also update the first congestion window corresponding to the message sent by the source node to switching node 2 based on the overload rate corresponding to switching node 2, the first congestion window corresponding to the message sent by the source node to switching node 3 based on the overload rate corresponding to switching node 3, and the first congestion window corresponding to the message sent by the source node to switching node 4 based on the overload rate corresponding to switching node 4.
[0459] For example, congestion control effectiveness is currently generally evaluated using three performance metrics: bandwidth utilization of switching nodes, queue backlog at switching nodes, and fairness of the data stream to which the packet belongs. Referring to Figures 32 to 34, embodiments of this disclosure employ multiple sets of comparative experiments to test the three performance metrics of DCQCN, HPCC, and the congestion control method of this disclosure embodiment, respectively, to verify that the congestion control effect of this disclosure embodiment is superior to DCQCN and HPCC. Furthermore, the first graph in Figures 32 to 34 is a graph showing the packet transmission rate when four source nodes send packets to the same destination node through different switching nodes, used to evaluate the fairness of the data stream to which the packet belongs. The second graph in Figures 32 to 34 shows the bandwidth change of the switching node's port when a source node sends a packet to the destination node through a switching node, used to evaluate the bandwidth utilization of the switching node. The third graph in Figures 32 to 34 shows the queue length within the switching node when a source node sends a packet to the destination node through a switching node, used to evaluate the queue backlog at the switching node.
[0460] Referring to Figure 32, which is a schematic diagram of simulation data for DCQCN according to an embodiment of the present disclosure, it can be seen from Figure 32 that when using DCQCN, the transmission rate of the corresponding messages sent from the source node to the destination node varies greatly, and the rate allocated to the data streams to which different messages belong is not fair. Moreover, near the end of the transmission, the switching node is slow in grabbing idle bandwidth, and the queue length of the switching node fluctuates between 100KB and 500KB.
[0461] Referring to Figure 33, which is a schematic diagram of simulation data for HPCC according to an embodiment of the present disclosure, it can be seen that when using HPCC, although the rate allocated to the data streams to which different packets belong is relatively fair, the bandwidth of the switching node fluctuates significantly, which may lead to a loss of throughput for the switching node. Moreover, the queue length of the switching node initially remains above 250KB for a long period of time, which may indicate congestion.
[0462] Referring to Figure 34, which is a schematic diagram of simulation data for the congestion control method according to an embodiment of the present disclosure, it can be seen from Figure 34 that when using the congestion control method of the present disclosure, the rate allocated to the data streams to which different packets belong is relatively fair, and the bandwidth of the switching node is always maintained at 100%. The final transmission completion time is 7000us, which is nearly 12.5% less than the 8000us of DCQCN in Figure 32 and HPCC in Figure 33. Moreover, the queue length of the switching node in this scheme fluctuates around 10KB, which is significantly lower than that of DCQCN in Figure 32 and HPCC in Figure 33, indicating that the switching node can maintain a smooth flow.
[0463] The embodiments of steps 3010 to 3020 described above can determine the overload rate of each switching node based on the first and second quantities corresponding to each switching node, and update the first congestion window of each switching node based on the overload rate of each switching node. By updating the first congestion window of each switching node, precise congestion control can be achieved for multiple switching nodes from the source node to the destination node.
[0464] The following is a description of the congestion control method of calculating overload rate from the source node, according to an embodiment of this disclosure, applied to the destination node side.
[0465] Furthermore, as shown in Figure 36, the congestion control method provided in this embodiment is applied to the destination node, and the congestion control method includes:
[0466] Step 3610: Receive the message sent by the source node;
[0467] Step 3620: When it is determined that a predetermined time period has elapsed since the last acknowledgment was sent, based on the messages received within the predetermined time period, determine the first number of messages carrying congestion flags and the second number of messages carrying unobstructed flags, and determine the overload rate of the switching node based on the first and second numbers, generate an acknowledgment based on the overload rate, and return the acknowledgment to the source node. Here, there is a switching node between the source node and the destination node, and both the congestion flag and the unobstructed flag are obtained by the switching node marking the messages received by the switching node based on the buffer queue within the switching node.
[0468] Step 3630: When a predetermined time period has not elapsed since the last acknowledgment was sent and a predetermined number of messages have been received, determine a first quantity and a second quantity based on the predetermined number of messages, determine the overload rate of the switching node based on the first quantity and the second quantity, generate an acknowledgment based on the overload rate, and return the acknowledgment to the source node.
[0469] Steps 3610 to 3630 are described in detail below.
[0470] In step 3610, a message sent by the source node is received.
[0471] According to embodiments of this disclosure, the source node sends a message to the destination node based on a first congestion window, and the source node and the destination node have at least one switching node. After receiving the message sent by the source node, the switching node forwards the message to the destination node, enabling the destination node to receive the message sent by the source node.
[0472] In step 3620, when it is determined that a predetermined time period has elapsed since the last acknowledgment was sent, based on the messages received within the predetermined time period, a first number of messages carrying congestion flags and a second number of messages carrying unobstructed flags are determined, and the overload rate of the switching node is determined based on the first and second numbers. An acknowledgment is generated based on the overload rate and returned to the source node. Here, a switching node is provided between the source node and the destination node, and both the congestion flag and the unobstructed flag are obtained by the switching node marking the messages received by the switching node based on the buffer queue within the switching node.
[0473] The specific implementation of the embodiment of this disclosure, which states that "when it is determined that a predetermined time period has elapsed since the last acknowledgment was sent, a first number of packets carrying congestion markers and a second number of packets carrying unobstructed status markers are determined based on the packets received within the predetermined time period, and the overload rate of the switching node is determined based on the first number and the second number, and an acknowledgment is generated based on the overload rate", is similar to the specific implementation of step 810 above, and will not be described in detail here.
[0474] The specific implementation of the embodiment of this disclosure, which states that "a switching node is provided between the source node and the destination node, and both the congestion mark and the smooth flow mark are obtained by the switching node marking the packets received by the switching node based on the buffer queue within the switching node", is similar to the specific implementation in step 420 above, and will not be described in detail here.
[0475] After the destination node obtains the first and second counts and generates an acknowledgment response based on these counts, it also needs to return the acknowledgment response to the source node to facilitate the source node's understanding of the switching node's congestion status. Upon receiving the acknowledgment response, the source node calculates the overload rate based on the first count of packets carrying congestion flags and the second count of packets carrying unobstructed flags in the acknowledgment response. Based on the overload rate, it adjusts the first congestion window, thereby achieving precise congestion control.
[0476] In step 3630, when a predetermined time period has not elapsed since the last acknowledgment was sent and a predetermined number of messages have been received, a first quantity and a second quantity are determined based on the predetermined number of messages, and the overload rate of the switching node is determined based on the first quantity and the second quantity. An acknowledgment is generated based on the overload rate and returned to the source node.
[0477] The specific implementation of the embodiment of this disclosure, which states that "when a predetermined time period has not elapsed since the last acknowledgment response was sent and a predetermined number of messages have been received, a first quantity and a second quantity are determined based on the predetermined number of messages, and the overload rate of the switching node is determined based on the first quantity and the second quantity, and an acknowledgment response is generated based on the overload rate", is similar to the specific implementation of step 820 above, and will not be described in detail here.
[0478] After the destination node obtains the first and second quantities and generates an acknowledgment response based on the first and second quantities, it also needs to return the acknowledgment response to the source node.
[0479] In the embodiments of steps 3610 and 3630 above, the destination node can count the first number of packets carrying congestion markers and the second number of packets carrying unobstructed access markers, inserting the first and second numbers into the acknowledgment response so that the source node can receive the acknowledgment response returned by the destination node. Furthermore, the overload rate of the switching node is determined based on the first number of packets carrying congestion markers and the second number of packets carrying unobstructed access markers contained in the acknowledgment response. The overload rate can accurately reflect the current congestion status of the switching nodes in the link. Thus, by updating the first congestion window based on the overload rate, the number of target packets sent can be precisely controlled, thereby achieving precise congestion control. The first congestion window is a window that moves in the queue of packets to be sent, used to indicate the first number of packets to be sent to the destination node. Once a packet in the first congestion window is acknowledged, the first congestion window is slid to accommodate more unsent packets, thereby sending the accommodated unsent packets. In this way, when the load status of the switching node, as reflected by the overload rate, is heavy, the length of the first congestion window is not increased, thus preventing the transmission of new packets and alleviating network congestion. When the load status of the switching node, as reflected by the overload rate, is light, the length of the first congestion window is increased to accommodate new packets for transmission, fully utilizing network bandwidth and accurately controlling congestion. Furthermore, the method used in this embodiment only requires inserting a first number of target packets carrying congestion markers and a second number of target packets carrying unobstructed markers into the acknowledgment response returned by the destination node to accurately control congestion. This method has low customization requirements for the destination node and requires no additional customization of the switching node, making it easy to deploy.
[0480] The following is a description of the congestion control method of calculating overload rate from the destination node, according to an embodiment of this disclosure, applied to the source node side.
[0481] Furthermore, as shown in Figure 37, the congestion control method provided in this embodiment is applied to the source node, and the congestion control method includes:
[0482] Step 3710: Send a message to the destination node based on the first congestion window, wherein the first congestion window is a window that moves in the queue of messages to be sent. The first congestion window is used to indicate the first number of messages to be sent to the destination node. When a message in the first number of messages is acknowledged, the first congestion window is slid to accommodate the messages to be sent and the messages to be sent that are accommodated in the first congestion window are sent.
[0483] Step 3720: Receive the acknowledgment response returned by the destination node. The acknowledgment response includes the overload rate of the switching node. There is a switching node between the source node and the destination node. The switching node marks the packets based on the buffer queue in the switching node to obtain congestion mark and smooth flow mark. The overload rate is determined by the destination node based on the first number of packets with congestion mark and the second number of packets with smooth flow mark.
[0484] Step 3730: Update the first congestion window based on the overload rate, wherein the number of packets to be sent that can be accommodated is controlled by the updated first congestion window.
[0485] Steps 3710 to 3730 are described in detail below.
[0486] In step 3710, a message is sent to the destination node based on the first congestion window. The first congestion window is a window that moves in the queue of messages to be sent. The first congestion window is used to indicate a first number of messages to be sent to the destination node. When a message in the first number of messages is acknowledged, the first congestion window is slid to accommodate the message to be sent, and the message to be sent that has been accommodated in the first congestion window is sent.
[0487] The specific implementation methods of this disclosure are similar to those in step 410 above, and will not be described in detail here.
[0488] In step 3720, an acknowledgment response is received from the destination node. The acknowledgment response includes the overload rate of the switching node. There is a switching node between the source node and the destination node. The switching node marks packets based on the buffer queue within the switching node to obtain congestion tags and unobstructed tags. The overload rate is determined by the destination node based on a first number of packets with congestion tags and a second number of packets with unobstructed tags.
[0489] According to embodiments of this disclosure, in steps 420-430, the destination node returns an acknowledgment message carrying a first quantity and a second quantity to the source node, enabling the source node to determine the overload rate based on the first and second quantities in the acknowledgment message. Unlike steps 420-430, in embodiments of this disclosure, the destination node may also calculate the overload rate of the switching node based on a first quantity of packets directly carrying congestion markers and a second quantity of packets carrying unobstructed access markers, and generate an acknowledgment message based on the overload rate, returning it to the source node with the overload rate acknowledgment message. In this step, the destination node calculates the overload rate, and the source node does not need to calculate the overload rate.
[0490] Referring to Figures 38A and 38B, after calculating the overload rate of the switching nodes, the destination node generates an acknowledgment response based on the overload rate and returns the acknowledgment response to the source node. Based on this, the source node does not need to recalculate the overload rate; it only needs to update the first congestion window based on the overload rate in the acknowledgment response, thus achieving precise congestion control.
[0491] The specific implementation of "the switching node marks packets based on the buffer queue within the switching node to obtain congestion marks and unobstructed marks" in this embodiment of the present disclosure is similar to the specific implementation of step 420 above. The specific implementation of "the overload rate is determined by the destination node based on the first number of packets with congestion marks and the second number of packets carrying unobstructed marks" in this embodiment of the present disclosure is similar to the specific implementation of step 430 above, and will not be described in detail here.
[0492] In step 3730, the first congestion window is updated based on the overload rate, wherein the number of packets to be sent that can be accommodated is controlled by the updated first congestion window.
[0493] The specific implementation methods of this disclosure are similar to those in step 440 above, and will not be described in detail here.
[0494] In the embodiments of steps 3710 and 3730 described above, the source node can receive the acknowledgment response returned by the destination node and update the first congestion window based on the overload rate of the switching nodes in the acknowledgment response. The overload rate can accurately reflect the current congestion status of the switching nodes in the link. Thus, by updating the first congestion window based on the overload rate, the number of target packets sent can be precisely controlled, thereby achieving precise congestion control. The first congestion window is a window that moves in the queue of packets to be sent, used to indicate the first number of packets to be sent to the destination node. Once a packet in the first congestion window receives an acknowledgment response, the first congestion window is slid to accommodate more unsent packets, thereby sending the accommodated unsent packets. In this way, when the load status of the switching nodes reflected by the overload rate is heavy, the length of the first congestion window is not increased, thus preventing the sending of new packets and alleviating network congestion. When the load on the switching node, as reflected by the overload rate, is relatively light, the length of the first congestion window is increased to accommodate new packets for transmission, fully utilizing network bandwidth and accurately controlling congestion. Furthermore, the method used in this embodiment only requires inserting a first number of target packets carrying congestion markers and a second number of target packets carrying unobstructed access markers into the acknowledgment response returned by the destination node to accurately control congestion. This method has low customization requirements for the destination node and requires no additional customization of the switching node, making it easy to deploy.
[0495] The following is a description of the congestion control method of calculating overload rate by the destination node according to an embodiment of this disclosure, applied to the destination node side.
[0496] Furthermore, as shown in Figure 39, the congestion control method provided in this embodiment is applied to the destination node, and the congestion control method includes:
[0497] Step 3910: Receive the message sent by the source node;
[0498] Step 3920: When it is determined that a predetermined time period has elapsed since the last acknowledgment was sent, based on the messages received within the predetermined time period, determine the first number of messages carrying congestion flags and the second number of messages carrying unobstructed flags, and determine the overload rate of the switching node based on the first and second numbers, generate an acknowledgment based on the overload rate, and return the acknowledgment to the source node. Here, there is a switching node between the source node and the destination node, and both the congestion flag and the unobstructed flag are obtained by the switching node marking the messages received by the switching node based on the buffer queue within the switching node.
[0499] Step 3930: When a predetermined time period has not elapsed since the last acknowledgment was sent and a predetermined number of messages have been received, determine a first quantity and a second quantity based on the predetermined number of messages, determine the overload rate of the switching node based on the first quantity and the second quantity, generate an acknowledgment based on the overload rate, and return the acknowledgment to the source node.
[0500] Steps 3910 to 3930 are described in detail below.
[0501] In step 3910, a message sent by the source node is received.
[0502] The specific implementation methods of this disclosure are similar to those in step 3610 above, and will not be described in detail here.
[0503] In step 3920, when it is determined that a predetermined time period has elapsed since the last acknowledgment was sent, based on the messages received within the predetermined time period, a first number of messages carrying congestion flags and a second number of messages carrying unobstructed flags are determined, and the overload rate of the switching node is determined based on the first and second numbers. An acknowledgment is generated based on the overload rate and returned to the source node. Here, a switching node is provided between the source node and the destination node, and both the congestion flag and the unobstructed flag are obtained by the switching node marking the messages received by the switching node based on the buffer queue within the switching node.
[0504] Referring to Figure 40, in this embodiment of the present disclosure, after determining the first quantity and the second quantity, the destination node does not generate an acknowledgment response and return it to the source node based on the first and second quantities. Instead, the destination node first determines the overload rate of the switching node based on the first and second quantities, then generates an acknowledgment response based on the overload rate and returns it to the source node. Based on this, the source node does not need to calculate the overload rate of the switching node again and can directly adjust the first congestion window based on the overload rate, thereby achieving precise congestion control. Furthermore, "generating an acknowledgment response based on the overload rate" means including the overload rate in the field of the acknowledgment response, so that the acknowledgment response can carry the overload rate, allowing the source node to receive an acknowledgment response including the overload rate.
[0505] The specific implementation of the embodiment of this disclosure, which states that "when it is determined that a predetermined time period has elapsed since the last acknowledgment was sent, a first number of packets carrying congestion flags and a second number of packets carrying unobstructed flags are determined based on the packets received within the predetermined time period," is similar to the specific implementation of step 810 above, and will not be described in detail here.
[0506] The specific implementation method of "determining the overload rate of the switching node based on the first quantity and the second quantity" in this disclosure is similar to the specific implementation method in step 430 above, and will not be described in detail here.
[0507] The specific implementation of the embodiment of this disclosure, which states that "a switching node is provided between the source node and the destination node, and both the congestion mark and the smooth flow mark are obtained by the switching node marking the packets received by the switching node based on the buffer queue within the switching node", is similar to the specific implementation in step 420 above, and will not be described in detail here.
[0508] In step 3930, when a predetermined time period has not elapsed since the last acknowledgment was sent and a predetermined number of messages have been received, a first quantity and a second quantity are determined based on the predetermined number of messages, and the overload rate of the switching node is determined based on the first quantity and the second quantity. An acknowledgment is generated based on the overload rate and returned to the source node.
[0509] The specific implementation of the embodiment of this disclosure, which states that "when a predetermined time period has not elapsed since the last acknowledgment response was sent and a predetermined number of messages have been received, the first quantity and the second quantity are determined based on the predetermined number of messages", is similar to the specific implementation of step 820 above, and will not be described in detail here.
[0510] The specific implementation method of "determining the overload rate of the switching node based on the first quantity and the second quantity" in this disclosure is similar to the specific implementation method in step 430 above, and will not be described in detail here.
[0511] In the embodiments of steps 3910 and 3930 described above, the destination node can determine the overload rate of the switching node based on a first number of packets carrying congestion flags and a second number of packets carrying unobstructed flags. The overload rate accurately reflects the current congestion status of the switching nodes in the link. Afterward, the destination node generates an acknowledgment response based on the overload rate and returns it to the source node, enabling the source node to update the first congestion window based on the overload rate. Thus, updating the first congestion window based on the overload rate allows for precise control of the number of target packets sent, achieving accurate congestion control. The first congestion window is a moving window in the queue of packets to be sent, indicating the first number of packets to be sent to the destination node. Once a packet in the first congestion window receives an acknowledgment response, the first congestion window slides to accommodate more unsent packets, which are then sent. In this way, when the load status of the switching node, as reflected by the overload rate, is heavy, the length of the first congestion window is not increased, thus preventing the transmission of new packets and alleviating network congestion. When the load status of the switching node, as reflected by the overload rate, is light, the length of the first congestion window is increased to accommodate new packets for transmission, fully utilizing network bandwidth and accurately controlling congestion. Furthermore, the method used in this embodiment only requires inserting a first number of target packets carrying congestion markers and a second number of target packets carrying unobstructed markers into the acknowledgment response returned by the destination node to accurately control congestion. This method has low customization requirements for the destination node and requires no additional customization of the switching node, making it easy to deploy.
[0512] The implementation details of the congestion control method according to embodiments of this disclosure are described below.
[0513] The implementation details of the congestion control method according to embodiments of this disclosure will now be described in detail with reference to FIG41.
[0514] In step 4110, the source node sends a message to the destination node based on the first congestion window, wherein the first congestion window is a window that moves in the queue of messages to be sent. The first congestion window is used to indicate a first number of messages to be sent to the destination node. When a message in the first number of messages is acknowledged, the first congestion window is slid to accommodate the messages to be sent and the messages to be sent that have been accommodated in the first congestion window are sent.
[0515] In step 4120, the switching node marks the packets based on the buffer queue within the switching node.
[0516] There is at least one switching node between the source node and the destination node. Both the congestion mark and the unobstructed mark are obtained by the switching node marking the packets based on the buffer queue within the switching node.
[0517] In one embodiment, the congestion mark and the free flow mark are obtained by the switching node by marking packets based on the queue length within the switching node in the following manner:
[0518] When the length of the buffer queue within the switching node is less than or equal to the length of the first queue, a pass-through flag is added to the packet;
[0519] When the length of the buffer queue within the switching node is greater than or equal to the length of the second queue, a congestion flag is added to the packet, wherein the length of the second queue is greater than the length of the first queue;
[0520] When the length of the buffer queue of the switching node is greater than the length of the first queue and less than the length of the second queue, a congestion mark is added to the packet with a first probability, and a smooth pass mark is added to the packet with the complement of the first probability. The complement of the first probability is the difference between 1 and the first probability. The first probability changes linearly with the queue length between the length of the first queue and the length of the second queue.
[0521] In step 4131, when it is determined that a predetermined time period has elapsed since the last acknowledgment was sent, the destination node determines a first quantity and a second quantity based on the messages received within the predetermined time period, and generates and sends an acknowledgment based on the first quantity and the second quantity.
[0522] In step 4132, when a predetermined time period has not elapsed since the last acknowledgment was sent and a predetermined number of messages have been received, the destination node determines a first quantity and a second quantity based on the predetermined number of messages, and generates and sends an acknowledgment based on the first quantity and the second quantity.
[0523] In step 4141, the source node receives the acknowledgment response returned by the destination node; and obtains the first sequence composed of the acknowledgment responses received within the first period.
[0524] In one embodiment, the first period is determined by: obtaining the number of acknowledgment responses received per unit time; obtaining the real-time performance of the service to which the message belongs; and determining the first period based on the number of acknowledgment responses and the real-time performance.
[0525] In step 4142, the source node takes the first acknowledgment response in the first sequence as the acknowledgment response to be examined and initializes the statistical label probability.
[0526] In step 4143, the source node updates the statistical label probability based on the first and second quantities in the confirmed responses to be examined.
[0527] In one embodiment, updating the statistical marker probability based on the first and second quantities in the confirmed responses to be examined includes: initializing the first and second count values to 1 respectively; when the first count value is less than or equal to the first quantity, increasing the statistical marker probability using a first marker probability increase method and increasing the first count value, and returning to the step of increasing the statistical marker probability using the first marker probability increase method when the first count value is less than or equal to the first quantity, until the first count value is greater than the first quantity; when the second count value is less than or equal to the second quantity, decreasing the statistical marker probability using a first marker probability decrease method and increasing the second count value, and returning to the step of decreasing the statistical marker probability using the first marker probability decrease method when the second count value is less than or equal to the second quantity, until the second count value is greater than the second quantity.
[0528] In one embodiment, when the first count value is less than or equal to the first quantity, the statistical mark probability is increased using the first mark probability increase method, which can be achieved in the following way: when the first count value is less than or equal to the first quantity, a first parameter is obtained, the first parameter being a value between 0 and 1; step 1620, the difference between 1 and the first parameter is used as a second parameter; step 1630, the product of the statistical mark probability and the second parameter is added to the first parameter to obtain the increased statistical mark probability.
[0529] In one embodiment, when the second count value is less than or equal to the second quantity, the statistical mark probability is reduced using the first mark probability reduction method, which can be achieved in the following way: when the second count value is less than or equal to the second quantity, a first parameter is obtained, the first parameter being a value between 0 and 1; step 1720, the difference between 1 and the first parameter is used as the second parameter; step 1730, the product of the statistical mark probability and the second parameter is used as the reduced statistical mark probability.
[0530] In step 4144, the source node updates the confirmed response to be examined based on the next confirmed response to be examined in the first sequence, and returns to the step of updating the statistical label probability based on the first and second quantities in the confirmed responses to be examined, until the first sequence does not contain the next confirmed response to be examined.
[0531] In step 4151, the lengths of the first queue and the second queue are obtained.
[0532] In one embodiment, the length of the first queue is between 0 and 10 KB.
[0533] In one embodiment, the second queue length is obtained by: obtaining the bandwidth and idle delay of the switching node; determining the delay-bandwidth product of the switching node based on the bandwidth and idle delay; determining a first coefficient based on the maximum delay of the service to which the packet belongs; and determining the second queue length based on the first coefficient and the delay-bandwidth product.
[0534] In step 4152, the critical marker probability corresponding to the second queue length is obtained.
[0535] In step 4153, the statistical queue length is determined based on the statistical labeling probability, the first queue length, the second queue length, and the critical labeling probability.
[0536] In one embodiment, the statistical queue length is determined based on the statistical labeling probability, the first queue length, the second queue length, and the critical labeling probability. This can be achieved by: determining a first length difference between the second queue length and the first queue length; determining a first ratio between the statistical labeling probability and the critical labeling probability; and determining the statistical queue length based on the first queue length, the first length difference, and the first ratio.
[0537] In step 4161, the load of the switching nodes in the first cycle is determined based on the statistical queue length.
[0538] In one embodiment, the load of the switching node in the first period is determined based on the statistical queue length, which can be achieved by: obtaining the queue weight coefficient and the queue fluctuation damping coefficient; determining the second length difference between the statistical queue length of the current first period and the statistical queue length of the previous first period; and determining the load of the switching node in the first period based on the queue weight coefficient, the statistical queue length, the queue fluctuation damping coefficient, and the second length difference.
[0539] In step 4162, the port bandwidth of the switching node is obtained.
[0540] In step 4163, the overload rate of the switching node in the first cycle is determined based on the load and port bandwidth.
[0541] In one embodiment, the overload rate of the switching node in the first cycle is determined based on the load and port bandwidth, which can be achieved by: determining the first product of the port bandwidth and the first cycle; and determining the ratio of the load and the first product as the overload rate.
[0542] In step 4171, when the overload rate of the previous first cycle is greater than a preset value, when the confirmation response is received for the first time in the current first cycle, the sliding window length of the first congestion sliding window is shortened based on the overload rate.
[0543] In one embodiment, when the acknowledgment response is received for the first time in the current first cycle, the slide length of the first congestion slide window is shortened based on the overload rate. This can be achieved by: when the acknowledgment response is received for the first time in the current first cycle, determining a first sum of a first value and the overload rate; and using the ratio of the slide length of the first congestion slide window to the first sum as the shortened slide length of the first congestion slide window.
[0544] In one embodiment, when the overload rate of the previous first cycle is greater than a preset value, and when the acknowledgment response is received for the first time in the current first cycle, after shortening the sliding window length of the first congestion sliding window based on the overload rate, the congestion control method further includes: when the overload rate of the previous first cycle is greater than the preset value, resetting the cumulative value of the acknowledgment response to zero.
[0545] In step 4172, when the overload rate of the previous first cycle is less than or equal to a preset value, the cumulative value of the confirmation response is increased each time a confirmation response is received in the current first cycle.
[0546] In one embodiment, when the overload rate of the previous first cycle is less than or equal to a preset value, the cumulative value of the acknowledgment response is increased each time an acknowledgment response is received in the current first cycle. This can be achieved in the following way: when the overload rate of the previous first cycle is less than or equal to the preset value, the cumulative value of the acknowledgment response is increased each time an acknowledgment response is received in the current first cycle; when the cumulative value of the acknowledgment response has not reached the predetermined cumulative value, the sliding window length of the extended first congestion sliding window is determined based on a first extension method; when the cumulative value of the acknowledgment response reaches the predetermined cumulative value, the sliding window length of the extended first congestion sliding window is determined based on a second extension method.
[0547] In one embodiment, when the cumulative value of confirmed responses has not reached a predetermined cumulative value, the extended window length of the first congestion window is determined based on the first extension method. This can be achieved as follows: when the cumulative value of confirmed responses has not reached the predetermined cumulative value, a second quantity in the confirmed responses is obtained; a third count value is initialized to 1; when the third count value is less than or equal to the second quantity, the ratio of the additive windowing coefficient to the length of the first congestion window is used as the window length increment, and the length of the first congestion window is added to the window length increment to obtain the extended window length of the first congestion window; the third count value is incremented by 1, and the step of using the ratio of the additive windowing coefficient to the length of the first congestion window as the window length increment when the third count value is less than or equal to the second quantity is returned, until the third count value is greater than the second quantity.
[0548] In one embodiment, when the cumulative value of confirmed responses reaches a predetermined cumulative value, the extended window length of the first congestion window is determined based on the second extension method. This can be achieved as follows: when the cumulative value of confirmed responses reaches the predetermined cumulative value, a second quantity in the confirmed responses is obtained; a third count value is initialized to 1; when the third count value is less than or equal to the second quantity, the product of a predetermined multiple and the length of the first congestion window is used as the extended window length of the first congestion window; the third count value is incremented by 1, and the step of using the product of a predetermined multiple and the length of the first congestion window as the extended window length is returned when the third count value is less than or equal to the second quantity, until the third count value is greater than the second quantity.
[0549] The apparatus and device according to embodiments of this disclosure will now be described.
[0550] It is understood that although the steps in the above flowcharts are shown sequentially according to the arrows, these steps are not necessarily executed in the order indicated by the arrows. Unless explicitly stated in this embodiment, there is no strict order restriction on the execution of these steps, and they can be executed in other orders. Moreover, at least some steps in the above flowcharts may include multiple steps or multiple stages. These steps or stages are not necessarily completed at the same time, but can be executed at different times. The execution order of these steps or stages is not necessarily sequential, but can be performed alternately or in turn with other steps or at least some of the steps or stages in other steps.
[0551] It should be noted that in various specific embodiments of this application, when processing data related to object characteristics, such as object attribute information or sets of attribute information, is required, the object's permission or consent will be obtained first. Furthermore, the collection, use, and processing of this data will comply with relevant laws, regulations, and standards. In addition, when embodiments of this application require obtaining object attribute information, separate permission or consent from the object will be obtained through pop-ups or redirection to a confirmation page. Only after obtaining the object's separate permission or consent will the necessary object-related data for the proper functioning of these embodiments be acquired.
[0552] Figure 42 is a schematic diagram of the structure of a congestion control device 4200 provided in an embodiment of this disclosure. The congestion control device 4200 is disposed in the source node and includes:
[0553] The first sending unit 4210 is configured to send a message to the destination node based on a first congestion window. The first congestion window is a window that moves in the queue of messages to be sent. The first congestion window is used to indicate a first number of messages to be sent to the destination node. When a message in the first number of messages is acknowledged, the first congestion window is slid to accommodate the message to be sent and the message to be sent that is accommodated in the first congestion window is sent.
[0554] The first receiving unit 4220 is configured to receive an acknowledgment response returned by the destination node. The acknowledgment response includes a first number of packets carrying congestion flags and a second number of packets carrying unobstructed flags. An exchange node is provided between the source node and the destination node. Both the congestion flag and the unobstructed flag are obtained by the exchange node marking the packets received by the exchange node based on the buffer queue within the exchange node.
[0555] The first determining unit 4230 is configured to determine the overload rate of the switching nodes based on a first quantity and a second quantity;
[0556] The update unit 4240 is configured to update the first congestion window based on the overload rate, wherein the number of packets to be sent is controlled by the updated first congestion window.
[0557] In some embodiments, the first determining unit 4230 is specifically configured to: when the first period is reached, determine the statistical marking probability of the exchange nodes in the first period based on the first quantity and the second quantity; determine the statistical queue length of the exchange nodes in the first period based on the statistical marking probability; and determine the overload rate of the exchange nodes in the first period based on the statistical queue length.
[0558] In some embodiments, the first determining unit 4230 is specifically configured to: obtain a first sequence of acknowledgments received within a first period; take the first acknowledgment in the first sequence as the acknowledgment to be examined and initialize the statistical label probability; update the statistical label probability based on the first quantity and the second quantity of the acknowledgments to be examined; update the acknowledgment to be examined based on the next acknowledgment in the first sequence, and return to the step of updating the statistical label probability based on the first quantity and the second quantity of the acknowledgments to be examined, until the first sequence does not contain the next acknowledgment of the acknowledgment to be examined.
[0559] In some embodiments, the first determining unit 4230 is specifically configured to: initialize the first count value and the second count value to 1 respectively; when the first count value is less than or equal to the first quantity, increase the statistical marking probability using the first marking probability increase method and increase the first count value, and return to the step of increasing the statistical marking probability using the first marking probability increase method when the first count value is less than or equal to the first quantity, until the first count value is greater than the first quantity; when the second count value is less than or equal to the second quantity, decrease the statistical marking probability using the first marking probability decrease method and increase the second count value, and return to the step of decreasing the statistical marking probability using the first marking probability decrease method when the second count value is less than or equal to the second quantity, until the second count value is greater than the second quantity.
[0560] In some embodiments, the first determining unit 4230 is specifically configured to: when the first count value is less than or equal to the first quantity, obtain the first parameter, the first parameter being a value between 0 and 1; take the difference between 1 and the first parameter as the second parameter; add the product of the statistical label probability and the second parameter to the first parameter to obtain the increased statistical label probability.
[0561] In some embodiments, the first determining unit 4230 is specifically configured to: when the second count value is less than or equal to the second quantity, obtain a first parameter, the first parameter being a value between 0 and 1; use the difference between 1 and the first parameter as a second parameter; and use the product of the statistical label probability and the second parameter as the reduced statistical label probability.
[0562] In some embodiments, the first period is determined by: obtaining the number of acknowledgment responses received per unit time; obtaining the real-time performance of the service to which the message belongs; the first determining unit 4230 is specifically configured to: determine the first period based on the number of acknowledgment responses and the real-time performance.
[0563] In some embodiments, the congestion mark and the unobstructed mark are obtained by the switching node based on the buffer queue within the switching node in the following manner: when the length of the buffer queue within the switching node is less than or equal to the length of the first queue, an unobstructed mark is added to the packet; when the length of the buffer queue within the switching node is greater than or equal to the length of the second queue, a congestion mark is added to the packet, wherein the length of the second queue is greater than the length of the first queue; when the length of the buffer queue within the switching node is greater than the length of the first queue and less than the length of the second queue, a congestion mark is added to the packet with a first probability, and an unobstructed mark is added to the packet with the complement of the first probability, wherein the complement of the first probability is the difference between 1 and the first probability, and the first probability changes linearly with the queue length between the length of the first queue and the length of the second queue.
[0564] In some embodiments, the first determining unit 4230 is specifically configured to: obtain the length of the first queue and the length of the second queue; obtain the critical marking probability corresponding to the length of the second queue; and determine the length of the statistical queue based on the statistical marking probability, the length of the first queue, the length of the second queue, and the critical marking probability.
[0565] In some embodiments, the first determining unit 4230 is specifically configured to: determine a first length difference between the second queue length and the first queue length; determine a first ratio between the statistical label probability and the critical label probability; and determine the statistical queue length based on the first queue length, the first length difference, and the first ratio.
[0566] In some embodiments, the length of the first queue is between 0 and 10 KB.
[0567] In some embodiments, the first determining unit 4230 is specifically configured to: obtain the bandwidth and idle delay of the switching node; determine the delay-bandwidth product of the switching node based on the bandwidth and idle delay; determine a first coefficient based on the maximum delay of the service to which the packet belongs; and determine a second queue length based on the first coefficient and the delay-bandwidth product.
[0568] In some embodiments, the first determining unit 4230 is specifically configured to: determine the load of the switching node in the first period based on the statistical queue length; obtain the port bandwidth of the switching node; and determine the overload rate of the switching node in the first period based on the load, port bandwidth, and the first period.
[0569] In some embodiments, the first determining unit 4230 is specifically configured to: obtain the queue weight coefficient and the queue fluctuation damping coefficient; determine the second height difference between the statistical queue length of the current first cycle and the statistical queue length of the previous first cycle; and determine the load of the switching node in the first cycle based on the queue weight coefficient, the statistical queue length, the queue fluctuation damping coefficient, and the second height difference.
[0570] In some embodiments, the first determining unit 4230 is specifically configured to: determine the first product of the port bandwidth and the first cycle; and determine the ratio of the load and the first product as the overload rate.
[0571] In some embodiments, the update unit 4240 is specifically configured to: when the overload rate of the previous first cycle is greater than a preset value, shorten the sliding window length of the first congestion window based on the overload rate when the confirmation response is received for the first time in the current first cycle; when the overload rate of the previous first cycle is less than or equal to the preset value, extend the sliding window length of the first congestion window each time an confirmation response is received in the current first cycle.
[0572] In some embodiments, the update unit 4240 is specifically configured to: when the acknowledgment response is received for the first time in the current first cycle, determine the first sum of the first value and the overload rate; and use the ratio of the window length of the first congestion window to the first sum as the window length of the shortened first congestion window.
[0573] In some embodiments, when the overload rate of the previous first cycle is greater than a preset value, and when the confirmation response is received for the first time in the current first cycle, after shortening the sliding window length of the first congestion sliding window based on the overload rate, the update unit 4240 is further configured to: when the overload rate of the previous first cycle is greater than the preset value, reset the cumulative value of the confirmation response to zero.
[0574] The update unit 4240 is specifically configured as follows: when the overload rate of the previous first cycle is less than or equal to a preset value, the cumulative value of the confirmation response is increased every time a confirmation response is received in the current first cycle; when the cumulative value of the confirmation response has not reached the predetermined cumulative value, the sliding window length of the extended first congestion sliding window is determined based on the first extension method; when the cumulative value of the confirmation response reaches the predetermined cumulative value, the sliding window length of the extended first congestion sliding window is determined based on the second extension method.
[0575] In some embodiments, the update unit 4240 is specifically configured to: when the cumulative value of the confirmation response has not reached a predetermined cumulative value, obtain the second quantity in the confirmation response; initialize the third count value to 1; when the third count value is less than or equal to the second quantity, use the ratio of the additive windowing coefficient to the length of the first congestion window as the window length increment, and add the length of the first congestion window to the window length increment to obtain the extended window length of the first congestion window; increment the third count value by 1, and return to the step of using the ratio of the additive windowing coefficient to the length of the first congestion window as the window length increment when the third count value is less than or equal to the second quantity, until the third count value is greater than the second quantity.
[0576] In some embodiments, the update unit 4240 is specifically configured to: when the cumulative value of the confirmation response reaches a predetermined cumulative value, obtain the second quantity in the confirmation response; initialize the third count value to 1; when the third count value is less than or equal to the second quantity, use the product of a predetermined multiple and the length of the first congestion window as the extended window length of the first congestion window; increment the third count value by 1, and return to the step of using the product of a predetermined multiple and the length of the first congestion window as the extended window length of the first congestion window when the third count value is less than or equal to the second quantity, until the third count value is greater than the second quantity.
[0577] In some embodiments, at least one switching node is multiple switching nodes, and a message is sent to the destination node through one of the multiple switching nodes; the acknowledgment response includes a first number and a second number corresponding to each switching node.
[0578] The first determining unit 4230 is specifically configured to: determine the overload rate of each switching node based on the first quantity and the second quantity corresponding to each switching node;
[0579] The update unit 4240 is specifically configured to update the first congestion sliding window corresponding to each switching node based on the overload rate of each switching node.
[0580] In some embodiments, a congestion marker or a free flow marker is recorded in the message corresponding to the switching node identifier;
[0581] The first and second counts are generated by the destination node in the following manner: the fourth and fifth counts corresponding to each switching node identifier are initialized to 0, wherein the fourth count indicates the number of packets for which the switching node corresponding to the switching node identifier has added a congestion flag, and the fifth count indicates the number of packets for which the switching node corresponding to the switching node identifier has added a smooth flag; when a packet is received, if the packet contains a congestion flag corresponding to the switching node identifier, the fourth count corresponding to the switching node identifier is incremented by 1; when a packet is received, if the packet contains a smooth flag corresponding to the switching node identifier, the fifth count corresponding to the switching node identifier is incremented by 1; when a predetermined condition is met, the fourth count is determined as the first count, and the fifth count is determined as the second count.
[0582] In some embodiments, the acknowledgment response is sent by the destination node in the following manner: when it is determined that a predetermined time period has elapsed since the last acknowledgment response was sent, a first quantity and a second quantity are determined based on the messages received within the predetermined time period, and an acknowledgment response is generated and sent based on the first quantity and the second quantity; when no predetermined time period has elapsed since the last acknowledgment response was sent, and a predetermined number of messages are received, a first quantity and a second quantity are determined based on the predetermined number of messages, and an acknowledgment response is generated and sent based on the first quantity and the second quantity.
[0583] Figure 43 is a schematic diagram of the structure of a congestion control device 4300 provided in an embodiment of this disclosure. The congestion control device 4300 is disposed in the destination node and includes:
[0584] The second receiving unit 4310 is configured to receive messages sent by the source node;
[0585] The second determining unit 4320 is configured to, when it is determined that a predetermined time period has elapsed since the last acknowledgment was sent, determine a first number of packets carrying congestion flags and a second number of packets carrying unobstructed flags based on the packets received within the predetermined time period, and generate an acknowledgment response based on the first and second numbers, and return the acknowledgment response to the source node. Here, there is an exchange node between the source node and the destination node, and both the congestion flag and the unobstructed flag are obtained by the exchange node marking the packets received by the exchange node based on the buffer queue within the exchange node.
[0586] The third determining unit 4330 is configured to determine a first quantity and a second quantity based on the predetermined number of messages when a predetermined time period has not elapsed since the last acknowledgment was sent and a predetermined number of messages have been received, and to generate an acknowledgment response based on the first quantity and the second quantity, and return the acknowledgment response to the source node.
[0587] Referring to Figure 44, which is a partial structural block diagram of a terminal implementing the congestion control method of this disclosure, the terminal includes: 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, etc. Those skilled in the art will understand that the terminal structure shown in Figure 44 does not constitute a limitation on a mobile phone or computer, and may include more or fewer components than shown, or combine certain components, or have different component arrangements.
[0588] RF circuit 4410 can be used for receiving and sending signals during information transmission or calls. In particular, it receives downlink information from the base station and processes it with processor 4480; in addition, it sends uplink data to the base station.
[0589] The memory 4415 can be used to store software programs and modules. The processor 4480 executes various functional applications and data processing of the content terminal by running the software programs and modules stored in the memory 4415.
[0590] The input unit 4430 can be used to receive input numeric or character information, and to generate key signal inputs related to the settings and function control of the content terminal. Specifically, the input unit 4430 may include a touch panel 4431 and other input devices 4432.
[0591] Display unit 4440 can be used to display input or provided information, as well as various menus of the content terminal. Display unit 4440 may include display panel 4441.
[0592] Audio circuitry 4460, speaker 4461, and microphone 4462 provide an audio interface.
[0593] In this embodiment, the processor 4480 included in the terminal can execute the congestion control method of the previous embodiment.
[0594] The terminals disclosed in this embodiment include, but are not limited to, mobile phones, computers, intelligent voice interaction devices, smart home appliances, vehicle terminals, and aircraft. The embodiments of this invention can be applied to various scenarios, including but not limited to content recommendation and data filtering.
[0595] Figure 45 is a partial structural block diagram of a server implementing the congestion control method of this disclosure. The server can vary significantly due to different configurations or performance, and may include one or more Central Processing Units (CPUs) 4522 (e.g., one or more processors) and a memory 4532, and one or more storage media 4530 (e.g., one or more mass storage devices) for storing application programs 4542 or data 4544. The memory 4532 and storage media 4530 may be temporary or persistent storage. The program stored in the storage media 4530 may include one or more modules (not shown in the figure), each module including a series of instruction operations on the server. Furthermore, the CPU 4522 may be configured to communicate with the storage media 4530 and execute the series of instruction operations in the storage media 4530 on the server.
[0596] The server may 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 Server™, Mac OS X™, Unix™, Linux™, FreeBSD™, etc.
[0597] The central processing unit 4522 in the server can be used to execute the congestion control method of the present disclosure embodiments.
[0598] This disclosure also provides a computer-readable storage medium for storing program code for executing the congestion control methods of the foregoing embodiments.
[0599] This disclosure also provides a computer program product comprising a computer program. A processor of a computer device reads and executes the computer program, causing the computer device to perform the congestion control method described above.
[0600] The terms “first,” “second,” “third,” “fourth,” etc. (if present) in this disclosure and the foregoing drawings are used to distinguish similar terms and are not necessarily used to describe a particular order or sequence. It should be understood that such use of data can be interchanged where appropriate so that embodiments of this disclosure described herein can be implemented, for example, in orders other than those illustrated or described herein. Furthermore, the terms “comprising” and “including,” and any variations thereof, are intended to cover non-exclusive inclusion; for example, a process, method, system, product, or apparatus that includes a series of steps or units is not necessarily limited to those steps or units explicitly listed, but may include other steps or units not explicitly listed or inherent to such processes, methods, products, or apparatuses.
[0601] It should be understood that in this disclosure, "at least one item" refers to one or more items, and "more than one item" refers to two or more items. "And / or" is used to describe the relationship between related content, indicating that three relationships can exist. For example, "A and / or B" can represent three cases: only A exists, only B exists, and both A and B exist simultaneously, where A and B can be singular or plural. The character " / " generally indicates that the preceding and following related content are in an "or" relationship. "At least one of the following" or similar expressions refer to any combination of these items, including any combination of single or plural items. For example, at least one of a, b, or c can represent: 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.
[0602] It should be understood that in the description of the embodiments disclosed herein, "multiple" means two or more, "greater than", "less than", "exceeding" etc. are understood to exclude the number itself, and "above", "below", "within" etc. are understood to include the number itself.
[0603] In the embodiments provided in this disclosure, it should be understood that the disclosed systems, apparatuses, and methods can be implemented in other ways. For example, the apparatus embodiments described above are merely illustrative; for instance, the division of units is only a logical functional division, and in actual implementation, there may be other division methods. For example, multiple units or components may be combined or integrated into another system, or some features may be ignored or not executed. The couplings or direct couplings or communication connections shown or discussed may be indirect couplings or communication connections between apparatuses or units through some interfaces, and may be electrical, mechanical, or other forms.
[0604] The units described as separate components may or may not be physically separate. The components shown as units may or may not be physical units; that is, they may be located in one place or distributed across multiple network units. Some or all of the units can be selected to achieve the purpose of this embodiment according to actual needs.
[0605] Furthermore, the functional units in the various embodiments of this disclosure can be integrated into one processing unit, or each unit can exist physically separately, or two or more units can be integrated into one unit. The integrated unit can be implemented in hardware or as a software functional unit.
[0606] If the integrated unit is implemented as a software functional unit and sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of this disclosure, in essence, or the part that contributes to the prior art, or all or part of the technical solution, can be embodied in the form of a software product. This computer software product is stored in a storage medium and includes several instructions to cause a computer device (which may be a personal computer, server 130, or network device, etc.) to execute all or part of the steps of the methods of the various embodiments of this disclosure. The aforementioned storage medium includes various media capable of storing program code, such as a USB flash drive, a portable hard drive, a read-only memory (ROM), a random access memory (RAM), a magnetic disk, or an optical disk.
[0607] It should also be understood that the various implementation methods provided in this disclosure can be combined arbitrarily to achieve different technical effects.
[0608] The above is a detailed description of the embodiments of this disclosure. However, this disclosure is not limited to the above embodiments. Those skilled in the art can make various equivalent modifications or substitutions without departing from the spirit of this disclosure. All such equivalent modifications or substitutions are included within the scope defined by the claims of this disclosure.
Claims
1. A congestion control method applied to a source node, the congestion control method comprising: A message is sent to the destination node based on a first congestion window, wherein the first congestion window is a window that moves in the queue of messages to be sent. The first congestion window is used to indicate a first number of messages to be sent to the destination node. When a message in the first number of messages is acknowledged, the first congestion window is slid to accommodate the message to be sent and the message to be sent that is accommodated in the first congestion window is sent. The acknowledgment response returned by the destination node is received. The acknowledgment response includes a first number of packets carrying congestion flags and a second number of packets carrying unobstructed flags. A switching node is provided between the source node and the destination node. Both the congestion flag and the unobstructed flag are obtained by the switching node by marking the packets received by the switching node based on the buffer queue within the switching node. The overload rate of the switching node is determined based on the first quantity and the second quantity; The first congestion window is updated based on the overload rate, wherein the number of packets to be sent that are accommodated in the updated first congestion window is controlled.
2. The congestion control method according to claim 1, wherein, Determining the overload rate of the switching node based on the first quantity and the second quantity includes: When the first cycle is reached, the statistical labeling probability of the exchange node in the first cycle is determined based on the first quantity and the second quantity; Based on the statistical label probability, the statistical queue length of the exchange node in the first period is determined; Based on the statistical queue length, the overload rate of the switching node in the first period is determined.
3. The congestion control method according to claim 2, wherein, When the first period is reached, determining the statistical labeling probability of the exchange node in the first period based on the first quantity and the second quantity includes: Obtain a first sequence consisting of the confirmation responses received within the first period; The first acknowledgment response in the first sequence is taken as the acknowledgment response to be examined, and the statistical label probability is initialized. The statistical label probability is updated based on the first and second quantities in the confirmed responses to be examined; Update the confirmation response to be examined based on the next confirmation response in the first sequence, and return to the step of updating the statistical marker probability based on the first quantity and the second quantity in the confirmation responses to be examined, until the first sequence does not contain the next confirmation response to the confirmation response to be examined.
4. The congestion control method according to claim 3, wherein, The step of updating the statistical marker probability based on the first quantity and the second quantity in the confirmed responses to be examined includes: Initialize the first and second count values to 1 respectively; When the first count value is less than or equal to the first quantity, the statistical mark probability is increased using the first mark probability increase method, and the first count value is increased. Then, the step of increasing the statistical mark probability using the first mark probability increase method when the first count value is less than or equal to the first quantity is returned until the first count value is greater than the first quantity. When the second count value is less than or equal to the second quantity, the statistical mark probability is reduced using the first mark probability reduction method, and the second count value is increased. Then, the step of reducing the statistical mark probability using the first mark probability reduction method when the second count value is less than or equal to the second quantity is returned until the second count value is greater than the second quantity.
5. The congestion control method according to claim 4, wherein, When the first count value is less than or equal to the first quantity, the statistical marker probability is increased using the first marker probability increase method, including: When the first count value is less than or equal to the first quantity, the first parameter is obtained, where the first parameter is a value between 0 and 1; The difference between 1 and the first parameter is used as the second parameter; The product of the statistical label probability and the second parameter is added to the first parameter to obtain the increased statistical label probability.
6. The congestion control method according to claim 4, wherein, When the second count value is less than or equal to the second quantity, the statistical label probability is reduced using the first label probability reduction method, including: When the second count value is less than or equal to the second quantity, obtain the first parameter, which is a value between 0 and 1; The difference between 1 and the first parameter is used as the second parameter; The product of the statistical label probability and the second parameter is used as the reduced statistical label probability.
7. The congestion control method according to any one of claims 2-6, wherein, The congestion flag and the unobstructed flag are obtained by the switching node by marking the packets based on the buffer queue within the switching node in the following manner: When the length of the buffer queue within the switching node is less than or equal to the length of the first queue, the unobstructed flag is added to the message. When the length of the buffer queue within the switching node is greater than or equal to the length of the second queue, the congestion flag is added to the packet, wherein the length of the second queue is greater than the length of the first queue; When the length of the buffer queue of the switching node is greater than the length of the first queue and less than the length of the second queue, the congestion mark is added to the packet with a first probability, and the smooth flow mark is added to the packet with the complement of the first probability, wherein the complement of the first probability is the difference between 1 and the first probability, and the first probability changes linearly with the queue length between the length of the first queue and the length of the second queue.
8. The congestion control method according to claim 7, wherein, Determining the statistical queue height of the exchange node in the first period based on the statistical marker probability includes: Obtain the length of the first queue and the length of the second queue; Obtain the critical marker probability corresponding to the length of the second queue; The statistical queue length is determined based on the statistical labeling probability, the first queue length, the second queue length, and the critical labeling probability.
9. The congestion control method according to any one of claims 2-8, wherein, Determining the overload rate of the switching node in the first period based on the statistical queue length includes: Based on the statistical queue length, the load of the switching node in the first period is determined; Obtain the port bandwidth of the switching node; Based on the load and the port bandwidth, the overload rate of the switching node in the first period is determined.
10. The congestion control method according to any one of claims 1-9, wherein, The step of updating the first congestion window based on the overload rate includes: When the overload rate of the previous first cycle is greater than a preset value, when the confirmation response is received for the first time in the current first cycle, the sliding window length of the first congestion sliding window is shortened based on the overload rate. When the overload rate of the previous first cycle is less than or equal to the preset value, the sliding window length of the first congestion sliding window is extended each time the acknowledgment response is received in the current first cycle.
11. The congestion control method according to claim 10, wherein, The step of shortening the sliding window length of the first congestion window based on the overload rate when the acknowledgment response is received for the first time in the current first cycle includes: When the confirmation response is received for the first time in the current first cycle, a first sum of the first value and the overload rate is determined; The ratio of the length of the first congestion window to the sum of the first values is used as the shortened length of the first congestion window.
11. The congestion control method according to claim 10, wherein, when the overload rate of the previous first cycle is greater than a preset value, after shortening the sliding window length of the first congestion sliding window based on the overload rate when the acknowledgment response is received for the first time in the current first cycle, the congestion control method further includes: When the overload rate of the previous first cycle is greater than the preset value, the cumulative response value will be reset to zero; and / or, When the overload rate of the previous first cycle is less than or equal to the preset value, the length of the first congestion window is extended each time an acknowledgment response is received in the current first cycle, including: When the overload rate of the previous first cycle is less than or equal to the preset value, the cumulative value of the confirmation response is increased each time the confirmation response is received in the current first cycle. When the cumulative value of the confirmation response does not reach the predetermined cumulative value, the extended length of the first congestion sliding window is determined based on the first extension method; When the cumulative value of the confirmation response reaches the predetermined cumulative value, the extended length of the first congestion sliding window is determined based on the second extension method.
12. The congestion control method according to any one of claims 1-11, wherein, When there are multiple switching nodes, the message is sent to the destination node through one of the multiple switching nodes; the acknowledgment response includes the first number and the second number corresponding to each switching node; Determining the overload rate of the switching node based on the first quantity and the second quantity includes: determining the overload rate of each switching node based on the first quantity and the second quantity corresponding to each switching node; and / or, The step of updating the first congestion window based on the overload rate includes: updating the first congestion window corresponding to each switching node based on the overload rate of each switching node.
13. The congestion control method according to any one of claims 1-12, wherein, The confirmation response is sent by the destination node in the following manner: When it is determined that a predetermined time period has elapsed since the last acknowledgment was sent, the first quantity and the second quantity are determined based on the messages received within the predetermined time period, and the acknowledgment is generated and sent based on the first quantity and the second quantity; When a predetermined time period has not elapsed since the last acknowledgment was sent, and a predetermined number of messages have been received, the first quantity and the second quantity are determined based on the predetermined number of messages, and the acknowledgment is generated and sent based on the first quantity and the second quantity.
14. A congestion control method applied to a destination node, the congestion control method comprising: Receive messages sent by the source node; When it is determined that a predetermined time period has elapsed since the last acknowledgment was sent, based on the packets received within the predetermined time period, a first number of packets carrying congestion flags and a second number of packets carrying unobstructed flags are determined, and an acknowledgment is generated based on the first number and the second number and returned to the source node. Here, a switching node is provided between the source node and the destination node, and the congestion flag and the unobstructed flag are both obtained by the switching node by marking the packets received by the switching node based on the buffer queue within the switching node. When a predetermined time period has not elapsed since the last acknowledgment was sent, and a predetermined number of messages have been received, the first quantity and the second quantity are determined based on the predetermined number of messages, and an acknowledgment is generated based on the first quantity and the second quantity, and the acknowledgment is returned to the source node.
15. A congestion control method applied to a source node, the congestion control method further comprising: A message is sent to the destination node based on a first congestion window, wherein the first congestion window is a window that moves in the queue of messages to be sent. The first congestion window is used to indicate a first number of messages to be sent to the destination node. When a message in the first number of messages is acknowledged, the first congestion window is slid to accommodate the message to be sent and the message to be sent that is accommodated in the first congestion window is sent. The system receives the acknowledgment response returned by the destination node. The acknowledgment response includes the overload rate of the switching node. A switching node is provided between the source node and the destination node. The switching node marks the packets based on the buffer queue within the switching node to obtain congestion tags and unobstructed tags. The overload rate is determined by the destination node based on a first number of packets with congestion tags and a second number of packets carrying unobstructed tags. The first congestion window is updated based on the overload rate, wherein the number of packets to be sent that are accommodated in the updated first congestion window is controlled.
16. A congestion control method applied to a destination node, the congestion control method further comprising: Receive messages sent by the source node; When a predetermined time period has elapsed since the last acknowledgment was sent, based on the packets received within the predetermined time period, a first number of packets carrying congestion flags and a second number of packets carrying unobstructed flags are determined. Based on the first number and the second number, the overload rate of the switching node is determined. An acknowledgment is generated based on the overload rate and returned to the source node. Here, a switching node is provided between the source node and the destination node. Both the congestion flag and the unobstructed flag are obtained by the switching node marking the packets received by the switching node based on the buffer queue within the switching node. When a predetermined time period has elapsed since the last acknowledgment was sent and a predetermined number of messages have been received, the first quantity and the second quantity are determined based on the predetermined number of messages, and the overload rate of the switching node is determined based on the first quantity and the second quantity. An acknowledgment is generated based on the overload rate and returned to the source node.
17. A congestion control device, disposed in a source node, the device comprising: The first sending unit is configured to send a message to a destination node based on a first congestion window, wherein the first congestion window is a window that moves in a queue of messages to be sent, and the first congestion window is used to indicate a first number of messages to be sent to the destination node. When a message in the first number of messages is acknowledged, the first congestion window is slid to accommodate the message to be sent, and the message to be sent that is accommodated in the first congestion window is sent. The first receiving unit is configured to receive the acknowledgment response returned by the destination node. The acknowledgment response includes a first number of packets carrying congestion flags and a second number of packets carrying unobstructed flags. A switching node is provided between the source node and the destination node. Both the congestion flag and the unobstructed flag are obtained by the switching node by marking the packets received by the switching node based on the buffer queue within the switching node. The first determining unit is configured to determine the overload rate of the switching node based on the first quantity and the second quantity; The update unit is configured to update the first congestion window based on the overload rate, wherein the number of packets to be sent that are accommodated in the updated first congestion window is controlled.
18. A congestion control device, disposed in a destination node, the device comprising: The second receiving unit is configured to receive messages sent by the source node; The second determining unit is configured to, when a predetermined time period has elapsed since the last acknowledgment was sent, determine a first number of packets carrying congestion flags and a second number of packets carrying unobstructed flags based on the packets received within the predetermined time period, and generate an acknowledgment based on the first number and the second number, and return the acknowledgment to the source node. The source node and the destination node are connected by a switching node, and both the congestion flag and the unobstructed flag are obtained by the switching node marking the packets received by the switching node based on a buffer queue within the switching node. The third determining unit is configured to, when a predetermined time period has not elapsed since the last acknowledgment was sent and a predetermined number of messages have been received, determine the first quantity and the second quantity based on the predetermined number of messages, generate an acknowledgment based on the first quantity and the second quantity, and return the acknowledgment to the source node.
19. An electronic device comprising a memory and a processor, the memory storing a computer program, the processor executing the computer program to implement the congestion control method according to any one of claims 1-17.
20. A computer-readable storage medium storing a computer program that, when executed by a processor, implements the congestion control method according to any one of claims 1-17.
21. 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-17.
Citation Information
Patent Citations
Congestion detection method and device, streaming media transmission system, electronic equipment and medium
CN115378832A
Congestion window determination method, device and system
CN115484210A
Method and system for controlling congestion in data center based on network load
CN115883463A
Network congestion data processing method, device and system and computer equipment
CN116155811A
Congestion control method and device, electronic equipment and medium
CN118869600A