WO2019210725A1 - 拥塞控制方法、装置、设备及存储介质 - Google Patents
拥塞控制方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- WO2019210725A1 WO2019210725A1 PCT/CN2019/074385 CN2019074385W WO2019210725A1 WO 2019210725 A1 WO2019210725 A1 WO 2019210725A1 CN 2019074385 W CN2019074385 W CN 2019074385W WO 2019210725 A1 WO2019210725 A1 WO 2019210725A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- value
- congestion
- data packets
- packet
- messages
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/27—Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/19—Flow control; Congestion control at layers above the network layer
- H04L47/193—Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L5/00—Arrangements affording multiple use of the transmission path
- H04L5/003—Arrangements for allocating sub-channels of the transmission path
- H04L5/0053—Allocation of signalling, i.e. of overhead other than pilot signals
- H04L5/0055—Physical resource allocation for ACK/NACK
Definitions
- the present application relates to the field of network communication technologies, and in particular, to a congestion control method, apparatus, device, and storage medium.
- the connected transmitting end uses the Data Center Quantized Congestion Notification (DCQCN) as a congestion control policy according to the message returned by the receiving end, and adjusts the sending rate of the transmitting end according to the policy, thereby controlling Connected data transmission to avoid congestion in the connection.
- DCQCN Data Center Quantized Congestion Notification
- this congestion control strategy does not guarantee the stability of data transmission, and the transmission performance of the connection is poor.
- the specific performance is that during the data transmission process, the probability of congestion is high and the packet loss is easy, and the packet loss rate is high.
- the present application provides a congestion control method, apparatus, device, and storage medium, which can more accurately adjust a congestion window of a transmitting end, and use such a congestion window to transmit data, which can reduce the probability of congestion of a connection, and does not control the switching node.
- the switching node has a stable and shallow queue depth of the data to be forwarded, thereby reducing packet loss in the network and improving network stability.
- the present application provides a congestion control method, where the congestion control method includes:
- the sender sends a plurality of data packets to the receiving end in a congestion window through a connection with the receiving end.
- the number of the plurality of data packets is a first value, and the first value is a value of the connected congestion window, where The connection is in a congestion avoidance state;
- the sender receives a plurality of packets from the receiving end corresponding to all data packets or partial data packets in the plurality of data packets, the plurality of packets including one or more first packets, and one Or a plurality of second messages, the first message is used to indicate that the connection is congested when transmitting one or more data packets in the plurality of data packets, and the second message is used to indicate that the connection is in one of transmitting a plurality of data packets.
- the transmitting end adjusts the congestion window according to the plurality of packets to adjust the value of the congestion window to the second value, wherein the first message of the plurality of packets causes the value of the congestion window Decrease, the second of the plurality of messages increases the value of the congestion window.
- the first packet and the second packet corresponding to a congestion window may affect the congestion window, and the second value may be greater than or less than the first value, and even in some cases, the first value and The second value can be equal.
- connection is congested when transmitting one or more packets in multiple packets.
- one or more data packets may be determined to be congested by one of the connected switching nodes or the receiving end during transmission; correspondingly, the connection is transmitted in multiple data packets.
- One or more data packets are not congested.
- one or more data packets may not be obtained or generated by any one of the switching nodes and the receiving end during the transmission process to indicate congestion. Information.
- a first message may correspond to one or more data packets, and a second message may also correspond to one or more data packets.
- the second message may be the acknowledgement character ACK (Acknowledge) of the data packet, or the like.
- the first message may also be a message in a special format to indicate network congestion. For example, it may be a Congestion Notification Packet (CNP).
- CNP Congestion Notification Packet
- the multiple packets may be feedback messages, and each message is further used to indicate that a certain number of data packets in the multiple data packets arrive at the receiving end, and the number is one or more;
- the packet carries a congestion feedback identifier, and the second packet does not carry a congestion feedback identifier.
- the first packet indicates network congestion through the congestion indicator.
- the congestion identifier may be a label or the like that is marked in the ACK based on the Explicit Congestion Notification Echo technology.
- the queue depth of the switching node is always maintained at a stable value, ensuring that there are always data packets in the queue, and also can improve the bandwidth utilization of the network, so that the network maintains high-bandwidth data transmission.
- a first packet of the plurality of packets reduces a value of the congestion window by a third value
- a second packet of the plurality of packets increases a value of the congestion window by a fourth value.
- the third value is related to the number of data packets indicated by a first message
- the fourth value is related to the number of data packets indicated by a second message.
- the number of data packets indicated by the first message and the number of data packets indicated by the second message may reflect a more accurate degree of network congestion.
- the transmitting end adjusts the value of the congestion window to reduce the third value related to the number of data packets indicated by the first packet, and increases the fourth value related to the number of data packets indicated by the second packet, which can further improve the congestion window adjustment.
- the fineness of the switch makes the queue depth control of the switching node more precise, further reducing packet loss and improving the stability of the network.
- the second value is a first value, an inverse of the first sum, and a sum of the second sum
- the first sum is a third value corresponding to each of the plurality of packets.
- the added sum, the second sum is the sum of the fourth values corresponding to each of the plurality of messages.
- the fourth value is also related to the first value and the increase coefficient.
- the sending end adjusts the congestion window according to the multiple packets, including: the amount of the first packet that causes the congestion window to decrease according to the number of the first packet, and the second packet The number and the amount by which each second message increases the value of the congestion window, calculates a second value, and the transmitting end adjusts the value of the congestion window from the first value to the second value. After the second value is calculated based on the plurality of messages, the second value is adjusted, so that it is easier to adjust the congestion window too frequently.
- the method further includes: sending, to the receiving end of the connection, a plurality of data packets of a second value.
- the present application provides a congestion control apparatus, including: a sending module, configured to send, by using a connection with a receiving end, multiple data packets to a receiving end in a congestion window, where the number of multiple data packets is a first value, where the first value is a value of a connected congestion window, wherein the connection is in a congestion avoidance state; and the receiving module is configured to receive, by the receiving end, multiple corresponding to all or a plurality of data packets in the plurality of data packets a message, the plurality of messages including one or more first messages, and one or more second messages, the first message being used to indicate that the connection is when one or more data packets of the plurality of data packets are transmitted Congested, the second message is used to indicate that the connection is not congested when transmitting one or more data packets in the plurality of data packets; the control module is configured to adjust the congestion window according to the plurality of packets to adjust the value of the congestion window to The second value, wherein the first of
- the first packet is a congestion notification message CNP
- the second packet is a confirmation character ACK.
- multiple packets are feedback packets, and each feedback packet is further used to indicate that a certain number of data packets in multiple data packets arrive at the receiving end, and the number is one or more; the first packet The congestion feedback identifier is carried, and the second packet does not carry the congestion feedback identifier.
- a first packet of the plurality of packets reduces a value of the congestion window by a third value
- a second packet of the plurality of packets increases a value of the congestion window by a fourth value.
- the third value is related to the number of data packets indicated by a first message
- the fourth value is related to the number of data packets indicated by a second message.
- the second value is a first value, an inverse of the first sum, and a sum of the second sum
- the first sum is a third value corresponding to each of the plurality of packets.
- the added sum, the second sum is the sum of the fourth values corresponding to each of the plurality of messages.
- control module is configured to reduce a value of the congestion window by a third value according to one of the plurality of packets, and adjust the value of the congestion window according to the plurality of packets; and A second message in the message increases the value of the congestion window by a fourth value.
- control module is configured to reduce the value of the congestion window by using the first packet according to the number of the first packet, and the second packet, according to the number of the first packet.
- the number and the amount by which each second message increases the value of the congestion window calculates a second value, and adjusts the value of the congestion window from the first value to the second value.
- the sending module is further configured to send, to the receiving end of the connection, a plurality of data packets of a second value.
- the fourth value is also related to the first value and the increase coefficient.
- the increase coefficient may be a preset value.
- the second aspect and the congestion control apparatus in each of the possible implementations of the second aspect can also achieve the same technical effects as the congestion control method in the above technical solution.
- the present application provides an apparatus including a storage medium, a processing circuit, and a communication interface; the storage medium is configured to store an executable program; and the processing circuit is configured to read an executable program stored in the storage medium to be in a communication interface
- the congestion control method in the above technical solution is implemented.
- the sending of the data packet, the receiving of the message, and the like can be implemented by the processing circuit calling the communication interface, and the processing circuit can specifically implement the step of adjusting the congestion window.
- the device provided by the present application can achieve the same technical effects as the congestion control method in the above technical solution.
- the present application provides a storage medium on which a program is stored.
- the congestion control method in the above technical solution is implemented, and the congestion control method in the above technical solution can be achieved.
- FIG. 1 is a schematic diagram of a network application scenario in an embodiment of the present application
- FIG. 3 is a schematic diagram of a positive correlation between a congestion identifier setting probability and a queue depth according to an embodiment of the present application
- FIG. 5 is a schematic structural diagram of a device according to an embodiment of the present application.
- FIG. 6 is a schematic structural diagram of a congestion control apparatus according to an embodiment of the present invention.
- the present invention provides a congestion control method, device, device, and storage medium, which can be applied to a Transmission Control Protocol/User Datagram Protocol (TCP/UDP) layer and a network protocol in a communication protocol stack.
- TCP/UDP Transmission Control Protocol/User Datagram Protocol
- RoCE Remote Protocol Access over Converged Ethernet
- IP Internet Protocol
- Ethernet Switch Ethernet Switch
- Host Channel Adapter host channel adapter
- RDMA Remote Direct Memory Access
- the congestion control method of the present application can be applied to a scenario of RDMA data access.
- the user terminal writes data directly to the memory of the remote server, and no kernel intervention and memory copy occur during the data writing process.
- FIG. 1 is a schematic diagram of a network application scenario in an embodiment of the present application.
- the application cache ie Application Buffers
- data can be accessed from the application cache through the user's Sockets Application Programming Interface (Sockets API) into the operating system kernel (ie Kernel), in the operating system kernel through sockets (ie Sockets), The Transmission Control Protocol (TCP), the Fourth Edition Network Protocol/Sixth Edition Network Protocol (ie, IPv4/IPv6), and the Network Device (Network Device) reach the Device Driver in the operating system kernel.
- Sockets API Sockets API
- TCP Transmission Control Protocol
- IPv4/IPv6 Fourth Edition Network Protocol/Sixth Edition Network Protocol
- Network Device Network Device
- the data can also be accessed from the application cache through the remote memory directly to the Remote Direct Memory Access Verbs Application Programming Interface (RDMA Verbs API) to enter the operating system kernel, using the operating system kernel.
- RDMA Verbs API Remote Direct Memory Access Verbs Application Programming Interface
- the function of the Kernel Bypass directly reaches the device driver in the operating system kernel and implements Remote Direct Memory Access (RDMA).
- the cache headers (ie, the Buffers Headers) in the operating system kernel can store the actual memory address of the data, the data type, the linked list of the cache header, the data status, the data tag, and the like, and are not limited herein.
- the operating system kernel can interact with the wireless bandwidth technology switch (InfiniBand) using the infinite bandwidth technology (ie InfiniBand) through the server-installed Host Channel Adapter (HCA).
- the operating system kernel can also utilize the Internet Wide Area Remote Direct Memory Access Protocol (iWARP) and Remote Direct Memory Access over Converged Ethernet through the host channel adapter.
- iWARP Internet Wide Area Remote Direct Memory Access Protocol
- RoCE Remote Direct Memory Access over Converged Ethernet
- the data flow of the congestion control method in the embodiment of the present application relates to the portion of the dotted line frame shown in FIG. 1, that is, the network protocol and the transmission control protocol, and the data circulation between the switching node and the transmitting end.
- the technical solution of the present application relates to a three-terminal interaction scenario, that is, a transmitting end, a switching node, and a receiving end.
- the technical improvement of the present application may still be used at the transmitting end, and the switching node and the receiving end may still use the existing The way in the technology is given.
- the switching node can be a router, a switch, etc.
- the sending end can be a server, a terminal, a cloud platform, or even some network devices, such as an intelligent network card.
- the congestion control method in the embodiment of the present application may mark the congestion feedback identifier obtained according to the transmission control protocol according to a network protocol, such as a congestion identifier marked according to the fourth edition network protocol or the sixth edition network protocol.
- the congestion control method in the embodiment of the present application is used to adjust the value of the congestion window of the transmitting end.
- the congestion control method in the embodiment of the present application is used to adjust the value of the congestion window of the transmitting end.
- the congestion control method in the embodiment of the present application is mainly applied to a sender in a connection.
- the sender, the switching node, and the receiving end are included in one connection.
- the sender can send the data packet to the switching node, and the data packet enters the queue in the switching node.
- the switching node can be used to set the congestion identification of the data packet (ie, marking).
- the switching node sends the data packets to the receiving end in turn according to the order of the data packets in the queue.
- the receiving end sends a message to the sending end according to the received data packet.
- the sender modulates the value of the congestion window according to the message.
- FIG. 2 is a flowchart of a congestion control method in an embodiment of the present application. As shown in FIG. 2, the congestion control method includes steps S101 to S106. For ease of understanding, the flow is explained by a three-way interaction process.
- the number of the multiple data packets sent by the sending end is the first value, and the first value is the value of the connected congestion window.
- the connection is in a congestion avoidance (ie, Congestion Avoidance) state.
- the sending end sends multiple data packets to the receiving end through the switching node. That is to say, the transmitting end sends multiple data packets to the switching node, and the switching node sends the multiple data packets to the receiving end.
- step S102 the switching node receives a plurality of data packets, and sets a probability according to the congestion identifier so that the data packet indicates that the connection is congested or indicates that the connection is not congested, and the data packet is sent to the receiving end.
- the data packet indicates that the connection is congested, indicating that the connection is congested when transmitting one or more data packets in multiple data packets.
- a packet indicating that the connection is not congested means that the connection is not congested when transmitting one or more packets in multiple packets.
- a congestion identifier can be set for a data packet, and a data packet carrying a congestion identifier indicates connection congestion.
- the congestion is marked on the third layer of the network, that is, the IP layer, that is, it is marked on the IP header of the data packet.
- the congestion flag indicates that the network is congested.
- the congestion identifier can be a congestion experience (CE).
- CE is 11 set on the header of the IP packet.
- a packet that does not carry a congestion identifier indicates that the connection is not congested. It should be noted that the queue depth of the switching node is in the normal range of the queue, and the congestion identifier setting probability is positively correlated with the queue depth.
- the queue depth of the switching node is the number of packets waiting to be sent.
- the normal range of the queue and the bandwidth delay product, the maximum value of the normal range of the queue, the minimum value of the normal range of the queue, the increase coefficient, the maximum setting probability of the congestion identifier, the third value corresponding to the first message, and the slow start ( That is, one or more of the parameters such as the fifth value corresponding to the second message received by the transmitting end in the state of the "Slow Start" state.
- the Slow Start state is the state in which the connection is established for an initial period of time.
- the slow start state begins with the connection establishment and ends after the first message is received by the sender for the first time. The related descriptions of the first message and the second message will be described in detail below.
- the congestion identifier setting probability may be linearly positively correlated with the queue depth, or may be a nonlinear positive correlation.
- FIG. 3 is a schematic diagram of a congestion identifier setting probability and a queue depth positive correlation in the embodiment of the present application.
- the abscissa is the queue depth and the ordinate is the probability of setting the congestion flag.
- the minimum value of the normal range of the queue be Kmin
- the maximum value of the normal range of the queue be Kmax.
- the queue depth is greater than or equal to Kmin
- the queue depth is less than or equal to Kmax
- the congestion identifier setting probability is linearly positively correlated with the queue depth. If the queue depth is less than Kmin, the congestion identifier setting probability is 0. If the queue depth is greater than Kmax, the congestion identifier setting probability is 100%.
- step S103 the receiving end generates a plurality of packets according to all the data packets or partial data packets in the plurality of data packets, and sends a plurality of packets to the transmitting end.
- the receiving end may use all the data packets in the received multiple data packets as the basis for generating the message.
- the sender sends 100 packets to the receiver. Of the 100 packets, 20 packets indicate connection congestion and 80 packets indicate that the connection is not congested. According to the 100 data packets, multiple packets can be generated and sent to the sender.
- the receiving end may also use part of the received data packets as the basis for generating the message.
- the sender sends 100 packets to the receiver. Of the 100 packets, 20 packets indicate connection congestion and 80 packets indicate that the connection is not congested.
- the receiving end can select 60 data packets in 100 data packets randomly or according to a certain rule. According to the selected 60 data packets, multiple packets are generated and sent to the sender.
- the plurality of messages includes one or more first messages, and one or more second messages.
- the first message is used to indicate that the connection is congested when transmitting one or more data packets in the plurality of data packets.
- the second message is used to indicate that the connection is not congested when transmitting one or more data packets in the plurality of data packets.
- the first message may be a special message used to indicate network congestion, such as a dedicated Congestion Notification Packet (CNP).
- CNP Congestion Notification Packet
- the second message may be an acknowledgement character (ACK) of the data packet.
- ACK acknowledgement character
- multiple messages may be feedback messages.
- Each feedback message can also be used to indicate that a certain number of data packets in a plurality of data packets reach the receiving end. Among them, a certain number is one or more. That is, each feedback message can correspond to one or more data packets.
- the first packet carries a congestion feedback identifier, and the congestion feedback identifier indicates that the connection is congested when transmitting one or more data packets in multiple data packets.
- the congestion feedback identifier may be a label or the like that is marked in the ACK based on the Explicit Congestion Notification Echo technology.
- the congestion feedback identifier may be marked in the packet according to the congestion identifier, and the packet marking the congestion feedback identifier is the first packet.
- the receiving end receives the data packet sent by the switching node, and if the IP packet header of the data packet is marked with a congestion identifier, the congestion feedback may be identified in the fourth layer of the network, that is, the TCP layer marking, and may be marked on the TCP packet header.
- the congestion feedback identifier of the first packet may be specifically an Explicit Congestion Notification Echo (ECE).
- ECE Explicit Congestion Notification Echo
- ECE is 1 set on the header of a TCP packet.
- the second packet does not carry the congestion feedback identifier, that is, the second packet generated by the receiving end does not mark the congestion feedback packet.
- step S104 the transmitting end receives all the data packets or a plurality of packets corresponding to the partial data packets in the plurality of data packets.
- step S105 the transmitting end adjusts the congestion window according to the plurality of messages to adjust the value of the congestion window to the second value.
- the sender receives multiple packets, and can parse multiple packets to determine the first packet and the second packet of the multiple packets. For example, if the packet is a feedback packet, the sender parses the feedback packet after receiving the feedback packet. If the congestion feedback identifier is obtained by parsing the feedback packet, the packet is determined to be the first packet. If the congestion feedback identifier is not obtained by parsing the feedback packet, the packet is determined to be the second packet.
- the first message causes the value of the congestion window to decrease, and the second message increases the value of the congestion window.
- one of the plurality of messages reduces the value of the congestion window by a third value.
- a second message of the plurality of messages increases the value of the congestion window by a fourth value.
- the third value is related to the number of packets indicated by a first message.
- the fourth value is related to the number of packets indicated by a second message.
- the third value is positively correlated with the number of data packets indicated by a first message; the fourth value is positively correlated with the number of data packets indicated by a second message.
- the third value corresponding to the first packet corresponding to the N data packets is N times the third value corresponding to the first packet corresponding to one data packet.
- the fourth value corresponding to the second packet corresponding to the N data packets is N times the fourth value corresponding to the second packet corresponding to one data packet.
- N is a positive integer.
- the receiving end sets each of the first message and the second message to correspond to a fixed number of data packets, and the fixed number is one or more. Then, the third value corresponding to each first message is equal. The fourth value corresponding to each second message is equal. For example, each first packet corresponds to two data packets indicating that the connection is congested, and a first packet corresponding to the data packet indicating that the connection is congested can adjust the value of the congestion window to be reduced by ⁇ , and each first report The third value corresponding to the text is 2 ⁇ .
- Each second packet corresponds to two data packets indicating that the connection is not congested, and a second packet corresponding to the data packet indicating that the connection is not congested can adjust the value of the congestion window to be ⁇ , and each second report The fourth value corresponding to the text is 2 ⁇ . It should be noted that the number of data packets corresponding to the first packet and the number of data packets corresponding to the second packet may be the same or different, and are not limited herein.
- the receiving end may not limit the number of data packets corresponding to each first message and the number of data packets corresponding to each second message.
- the sender receives two first packets and two second packets.
- the first first message corresponds to one data packet
- the second first message corresponds to two data packets.
- the first message corresponding to the data packet indicating the connection congestion can adjust the value of the congestion window to be reduced by ⁇ .
- the third value corresponding to the first first message is ⁇ .
- the third value corresponding to the second first message is 2 ⁇ .
- the first second message corresponds to two data packets
- the second second message corresponds to one data packet.
- a second message corresponding to the data packet indicating that the connection is not congested can adjust the value of the congestion window to be increased by ⁇ . Then the fourth value corresponding to the first second message is 2 ⁇ . The fourth value corresponding to the second second message is ⁇ .
- Each message can correspond to one or more data packets.
- the number of packets corresponding to each message can be the same.
- the number of packets corresponding to the message may be preset between the receiving end and the transmitting end, for example, each packet is preset to correspond to one data packet. For another example, two packets corresponding to each message are preset.
- the number of packets corresponding to each message can also be different.
- the number of data packets can be set in the idle byte of the message.
- the first message may be a special message dedicated to indicating congestion when connecting one or more data packets in multiple data packets, and the special message may correspond to one for indicating connection congestion.
- the setting corresponding to the number of data packets indicating that the connection is congested corresponding to the special message may refer to the setting of the number of data packets corresponding to the above-mentioned ordinary message.
- a packet is generated for each data packet, which can implement fine-grained transmission rate control at the transmitting end, thereby improving the accuracy of congestion control.
- the computational cost of the resource consumption of the congestion control it is possible to appropriately set two or more data packets to share one message, thereby achieving a balance between the calculation cost and the congestion control precision.
- the congestion window in the process of adjusting the congestion window, each time the sender receives a message, the congestion window can be adjusted according to the message in real time. If one of the plurality of packets received by the sending end is the first packet, the value of the congestion window is decreased according to the received first packet, and the third packet is corresponding to the first packet. value. If one of the plurality of packets received by the receiving end is the second packet, the value of the congestion window is increased according to the received second packet, and the fourth packet is corresponding to the second packet. value.
- the first packet corresponding to the data packet connected to the congestion can adjust the reduction amount of the congestion window (that is, the third value corresponding to the first packet of one data packet),
- the second packet corresponding to the data packet indicating that the connection is not congested can adjust the value of the congestion window (the fourth value corresponding to the second packet of the data packet), and can be advanced according to the specific work scenario and work requirements. set up.
- the fourth value is also related to the first value and the increase factor.
- the fourth value corresponding to the second message corresponding to one data packet is a quotient of the increase coefficient and the first value.
- the fourth value corresponding to the second message corresponding to one data packet is ⁇ ; the increasing coefficient is ⁇ ; the first value is Cwnd1.
- the increase factor can also be set according to the specific work scene and work requirements. Then the relationship between the above parameters is as shown in the formula (1):
- the second value in the above description is the value of the congestion window after the message is received by the transmitting end for all the messages in a congestion window.
- the second value is the sum of the first value, the inverse of the first sum, and the second sum.
- the first sum is a sum of third values corresponding to each of the plurality of packets.
- the second sum is a sum of the fourth values corresponding to each of the plurality of messages.
- the sender receives a first message and two second messages.
- the first value is Cwnd1; the second value is Cwnd2; the third value corresponding to the first message is ⁇ 1 ; the fourth value corresponding to the first second message is ⁇ 1 ; the second second message corresponds to The fourth value is ⁇ 2 .
- the receiving end generates, according to the congestion identifier of the data packet of one congestion window, a first packet indicating that the connection is congested when transmitting one or more data packets in the multiple data packets, and Represents a second message that is concatenated when transmitting one or more packets in multiple packets.
- the transmitting end proportionally reduces and increases the value of the congestion window according to the first packet and the second packet in the plurality of packets, thereby performing finer adjustment on the value of the congestion window.
- the Lyapunov balance point exists in the adjustment of the congestion window.
- the queue depth of the switching node is controlled to reach a shallow stable queue depth.
- the fourth value corresponding to the second packet corresponding to one data packet is represented by the formula (1); the congestion identifier setting probability is p; and the value of the congestion window at the time t is Cwnd(t), then the time t is passed.
- the value of the Cwnd(t+Rtt) of the congestion window of a Round-trip Time (RTT) is shown in Equation (3):
- ⁇ is the increase coefficient in the above description.
- ⁇ is the fourth value corresponding to the second message corresponding to one data packet.
- K is the difference between the maximum value of the queue depth and the minimum value of the queue depth.
- the queue depth in the switching node When the Lyapunov equilibrium point is reached, the queue depth in the switching node will be stably maintained at a shallow stable queue depth Q.
- the queue depth in the switching node fluctuates greatly, and the queue depth is very large, and the queue depth can reach 100 to 256. Due to the limited queue cache in the switching node, the queue depth is large, causing the queue buffer in the switching node to be tight, and the delay in the data transmission process is increased, so that the packet loss rate is increased.
- the transmitting end proportionally reduces and increases the value of the congestion window according to the first packet and the second packet in the process of continuously adjusting the congestion window. The value of the congestion window can be stably maintained at a shallow stable queue depth.
- the stable queue depth in the embodiment of the present application can reach 10 to 20.
- the stable queue depth is shallow, leaving enough queue cache for the switch node.
- the delay in the data transmission process is reduced, the packet loss rate is more controllable, and the damage of the network performance such as the packet loss rate by the sudden factors is more resistant, so that the data transmission is more stable and the quality is more secure.
- the congestion window can be controlled more accurately without using a complex mechanism such as a priority-based flow control (PFC).
- PFC priority-based flow control
- the stability of the network On the basis of avoiding stability problems such as deadlock, the stability of the network can be ensured, thereby improving the quality of network services.
- the stable queue depth is not 0, that is, the data packet always exists in the queue, and high network bandwidth utilization can be ensured. Thereby achieving a coordinated balance of low latency and high network bandwidth utilization during data transmission.
- TCP Transmission Control Protocol
- DCQCN Data Center Quantized Congestion Notification
- the bandwidth of the algorithm of the present application is significantly higher than that of the TCP algorithm and the DCQCN algorithm
- the queue depth of the algorithm of the present application is significantly lower than that of the TCP algorithm and the DCQCN algorithm, and the queue depth is effectively controlled, and the variation is small, which can ensure the pole. Low packet loss rate.
- the queue depth is always maintained at a stable queue depth value, which can further improve the bandwidth utilization of the network.
- step S106 the transmitting end sends a plurality of data packets of the second value to the receiving end of the connection.
- the transmitting end After adjusting the value of the congestion window, in the process of sending the data packet in the next congestion window, the transmitting end sends the adjusted second number of data packets to the switching node to adjust the queue depth of the switching node.
- the above connection may also be in a slow start state.
- the connection of the transmitting end Before the step S101, that is, before the connection of the transmitting end is in the congestion avoiding state, the connection of the transmitting end is in a slow start (ie, Slow Start) state.
- the slow start state begins with the initial establishment of the connection, and ends after the first message that the connection end indicates that the connection is congested for the first time.
- the transmitting end may send a plurality of data packets to the receiving end of the connection in the slow start state according to the sixth value of the congestion window of the connection in the slow start state.
- the number of multiple data packets in the connection in the slow start state is the sixth value described above.
- the sending end sends the data packet to the receiving end through the switching node. That is to say, the transmitting end first sends the data packet to the switching node, and the switching node sets the probability according to the congestion identifier so that the data packet indicates that the connection is congested or indicates that the connection is not congested, and the data packet is sent to the receiving end.
- the receiving end generates a slow start message according to the data packet.
- the slow start packet is a packet corresponding to multiple data packets in the connection in the slow start state.
- the slow start message includes a first message and an integer number of second messages.
- the receiving end sends the first packet and the second packet to the sending end.
- the sender adjusts the congestion window according to each message in the slow start message in the connection in the slow start state to adjust the value of the congestion window to the first value.
- Each packet in the slow start message has the same function as the packet in the connection of the congestion avoidance state described above. It should be noted that in the connection in the slow start state, each first message reduces the congestion window by a third value. Each second message increases the congestion window by a fifth value.
- the connection in the congestion avoidance state begins after the first message that the sender receives the congestion feedback identifier for the first time.
- the value of the congestion window is continuously adjusted in the connection in the slow start state, and the value of the congestion window when the slow start state is terminated is the value of the congestion window at the start of the connection in the congestion avoidance state.
- the following describes an adjustment algorithm for the value of the congestion window in the congestion control method from the slow start state to the congestion avoidance state.
- the third value corresponding to the first packet corresponding to one data packet in the connection in the slow start state is ⁇ ; the fifth value corresponding to the second packet corresponding to one data packet in the connection in the slow start state is ⁇ ;
- the third value corresponding to the first packet corresponding to one data packet in the connection of the congestion avoidance state is ⁇ ;
- the fourth value corresponding to the second packet corresponding to one data packet in the connection in the congestion avoidance state is ⁇ .
- the first two packets and the first packet are both in the slow start state, and the remaining first packet and the second packet are in the congestion avoidance state.
- the value of the next congestion window that is, the second value Cwnd2 is Cwnd3-2 ⁇ -4 ⁇ +4 ⁇ ( ⁇ /Cwnd1).
- the above parameters ⁇ , ⁇ , and ⁇ may be used in the above-mentioned calculation manner or other in the data transmission before, for example, the networking process or the connection establishment process according to the network topology and network parameters.
- the calculation mode is determined, it is configured as a system parameter, and can be directly used in the process of connecting the transmission data (such as the process starting from S101 or the slow start state described above).
- the desired stable queue depth Q can be set in advance, ⁇ , ⁇ , and ⁇ can be set to achieve the desired stable queue depth Q, and ⁇ , ⁇ , and ⁇ are configured as system parameters.
- the process of the congestion control method in the embodiment of the present application will be described below by way of an example.
- Set the congestion window value initially sent by the sender to 100 that is, the congestion window initially sent by the sender is 100 packets.
- the initial queue depth is 20.
- the initial congestion identifier setting probability is 10%.
- the sender will send 100 packets to the switching node according to the initial congestion window value of 100.
- the switching node sets a data packet indicating that the connection is congested and a packet indicating that the connection is not congested according to the initial congestion identification setting probability of 10%, and the 100 data packets include 90 data packets indicating that the connection is not congested and 10 indicating connection congestion. Packet.
- the receiving end receives 90 data packets indicating that the connection is not congested and 10 data packets indicating connection congestion, and generates 90 packets indicating that the connection is not congested when transmitting one or more data packets in the plurality of data packets, and 10 A message that is congested when connecting one or more packets in multiple packets is not represented.
- the transmitting end receives 90 messages indicating that the connection is not congested when transmitting one or more data packets in the plurality of data packets, and 10 indicating one or more data packets connected to transmit the plurality of data packets.
- the message is congested and the first congestion window value is adjusted.
- the adjusted congestion window value is 100+1.0 ⁇ (90/100)-0.5 ⁇ 10 ⁇ 96. For the calculation method of the adjusted congestion window value, refer to the above formula (3).
- the value adjustment of the second congestion window the sender will send 96 data packets to the switching node according to the first adjusted congestion window value 96. As the congestion window value decreases, the queue depth also decreases accordingly.
- the switching node sets a data packet indicating that the connection is congested and a packet indicating that the connection is not congested according to the congestion identifier setting probability 8%, and the 96 data packets include 88 data packets indicating that the connection is not congested and eight data indicating that the connection is congested. package.
- the receiving end receives 88 data packets indicating that the connection is not congested and 8 data packets indicating that the connection is congested, and generates 88 packets indicating that the connection is not congested when transmitting one or more data packets in the plurality of data packets, and 8 Represents a message that is congested when it is transmitting one or more packets in multiple packets.
- the transmitting end receives 88 messages indicating that the connection is not congested when transmitting one or more data packets in the plurality of data packets, and 8 indicating one or more data packets connected to transmit the plurality of data packets.
- the message is congested and the second congestion window value is adjusted.
- the adjusted congestion window value is 96+1.0 ⁇ (88/96)-0.5 ⁇ 8 ⁇ 93.
- the value of the third congestion window is adjusted: the sender will send 93 packets to the switching node according to the second adjusted congestion window value 93. As the congestion window value decreases, the queue depth also decreases accordingly.
- the switching node sets the data packet indicating that the connection is congested and the data packet indicating that the connection is not congested according to the congestion identifier setting probability of 6.5%, and the 93 data packets include 87 data packets indicating that the connection is not congested and six data indicating that the connection is congested. package.
- the receiving end receives 87 data packets indicating that the connection is not congested and 6 data packets indicating connection congestion, and generates 87 packets indicating that the connection is not congested when transmitting one or more data packets in the plurality of data packets, and 6 Represents a message that is congested when it is transmitting one or more packets in multiple packets.
- the transmitting end receives 87 packets sent by the receiving end to indicate that the connection is not congested when transmitting one or more data packets in the plurality of data packets, and 6 indicates that one or more data packets connected to the plurality of data packets are connected.
- the message is congested and the third congestion window value is adjusted.
- the adjusted congestion window value is 93+1.0 ⁇ (87/93)-0.5 ⁇ 6 ⁇ 91.
- the value adjustment of the eighth congestion window the sender will send 86 data packets to the switching node according to the seventh adjusted congestion window value 86. As the congestion window value decreases, the queue depth also decreases accordingly.
- the switching node sets the data packet indicating the connection congestion and the data packet indicating that the connection is not congested according to the congestion identifier setting probability 3%, and the 86 data packets include 83 data packets indicating that the connection is not congested and three data indicating that the connection is congested. package.
- the receiving end receives 83 data packets indicating that the connection is not congested and three data packets indicating that the connection is congested, and generates 83 packets indicating that the connection is not congested when transmitting one or more data packets in the plurality of data packets, and three Represents a message that is congested when it is transmitting one or more packets in multiple packets.
- the sender receives 83 messages indicating that the connection is not congested when transmitting one or more data packets in the plurality of data packets, and three messages indicating that one or more data packets are connected in the transmission of the plurality of data packets.
- the message is congested and the eighth congestion window value is adjusted.
- the adjusted congestion window value is 86 + 1.0 ⁇ (83 / 86) - 0.5 ⁇ 3 ⁇ 85.
- the transmitting end will send 85 data packets to the switching node according to the eighth adjusted congestion window value 85.
- the switching node sets the data packet indicating that the connection is congested and the data packet indicating that the connection is not congested according to the congestion identifier setting probability of 2.5%, and the 85 data packets include 83 data packets indicating that the connection is not congested and two data indicating that the connection is congested. package.
- the receiving end receives 83 data packets indicating that the connection is not congested and two data packets indicating that the connection is congested, and generates 83 packets indicating that the connection is not congested when transmitting one or more data packets in the plurality of data packets, and two Represents a message that is congested when it is transmitting one or more packets in multiple packets.
- the sender receives 83 messages indicating that the connection is not congested when transmitting one or more data packets in the plurality of data packets, and two messages indicating that one or more data packets are connected in the transmission of the plurality of data packets. Congested messages and adjustments to the ninth congestion window value.
- the adjusted congestion window value is 85 + 1.0 ⁇ (83 / 85) - 0.5 ⁇ 2 ⁇ 85.
- the queue depth is stable to 5, and no large fluctuations occur. Therefore, a small stable queue depth is ensured, and sufficient queue buffer is reserved for the switching node, which reduces the delay in the data transmission process, thereby reducing the packet loss rate.
- FIG. 4 is a flowchart of a congestion control method according to an embodiment of the present application.
- the congestion control method shown in Figure 4 is applied to the sender of a connection.
- the congestion control method includes steps S201 to S203.
- step S201 the transmitting end sends a plurality of data packets to the connected receiving end in a congestion window through a connection with the receiving end.
- the number of the plurality of data packets is a first value, and the first value is a value of the connected congestion window. Among them, the connection is in a congestion avoidance state.
- step S202 the transmitting end receives a plurality of messages from the receiving end corresponding to all data packets or partial data packets in the plurality of data packets.
- the plurality of messages include one or more first messages, and one or more second messages, where the first message is used to indicate that the connection is congested when transmitting one or more data packets in the multiple data packets.
- the second message is used to indicate that the connection is not congested when transmitting one or more data packets in the plurality of data packets.
- step S203 the transmitting end adjusts the congestion window according to the plurality of messages to adjust the value of the congestion window to the second value.
- the first packet of the plurality of packets reduces the congestion window.
- One of the plurality of messages, the second message causes the congestion window to increase.
- FIG. 5 is a schematic structural diagram of a device 30 according to an embodiment of the present application.
- the device includes a processor 31, a memory 32, and a network card 33.
- the network card 33 may include processing circuits (such as an ASIC circuit, an FPGA, a DSP, etc., the processing circuit is illustrated as a processing chip 331 in FIG. 5), and a storage medium 332 and a communication interface 333.
- network card 33 may also include a connection interface (the connection interface is illustrated in FIG. 5 as an external component connection quick interface 334).
- the congestion control method in the above embodiment can be applied to the network card 33. That is, the storage medium 332 in the network card 33 is used to store programs.
- the processing chip 331 is for executing a program, and when the program is executed by the processing chip 332, the congestion control method in the above embodiment can be implemented.
- the external component connection quick interface 334 is used to connect the network card 33 to the device 30.
- the communication interface 333 is called by the processing chip 331 to cause the network card to transmit a data packet to other devices and receive the above-mentioned message.
- the storage medium 332 can also be used to store the parameters involved in the congestion control method, such as the third value ⁇ corresponding to the first packet corresponding to one data packet in the connection in the slow start state, and one data packet in the connection in the slow start state.
- the fourth value ⁇ corresponding to the second message, the third value ⁇ corresponding to the first message corresponding to one data packet in the connection in the congestion avoidance state, and the second report corresponding to one data packet in the connection in the congestion avoidance state The fifth value ⁇ corresponding to the text, and the value of the congestion window and other parameters.
- the network card described in FIG. 5 can be installed on various devices. The present application does not limit the structure of the device, and FIG. 5 is only for illustrative purposes.
- the method described in the present application can also be applied to a chip or other device, which is similar in composition to a network card, including a storage medium, a processing circuit, and a communication interface, and is electrically connected between the three.
- a network card including a storage medium, a processing circuit, and a communication interface, and is electrically connected between the three.
- the congestion control method in the above embodiment may be applied to the device 30.
- the memory 32 in the device is equivalent to a storage medium for storing a program.
- the processor 31 corresponds to a processing circuit for executing a program in the storage medium, and when the program is executed by the processor 31, the congestion control method described in the present application can be realized.
- the memory 32 in the device belongs to one of the storage media, and the processor 31 belongs to one of the processing circuits.
- the network card 33 can be considered as an implementation of the communication interface of the device 30.
- the communication interface of the device 30 may further include a hardware device such as an antenna.
- the communication interface is mainly used to implement communication between modules, devices, units and/or devices in the embodiments of the present application. Input devices and/or output devices can also be accessed via the communication interface.
- the processor 31 described above may include a central processing unit (CPU), or an specific integrated circuit (ASIC), or may be configured to implement one or more integrated circuits of embodiments of the present application.
- CPU central processing unit
- ASIC specific integrated circuit
- Memory 32 can include mass storage for data or instructions.
- memory 32 may comprise a HDD, a floppy disk drive, a flash memory, an optical disk, a magneto-optical disk, a magnetic tape, or a universal serial bus (USB) drive, or a combination of two or more of these.
- Memory 32 may include removable or non-removable (or fixed) media, where appropriate.
- Memory 32 may be internal or external to device 30, where appropriate.
- memory 32 is a non-volatile solid state memory.
- memory 32 includes a read only memory (ROM).
- the ROM may be a mask programmed ROM, a programmable ROM (PROM), an erasable PROM (EPROM), an electrically erasable PROM (EEPROM), an electrically rewritable ROM (EAROM) or flash memory or A combination of two or more of these.
- PROM programmable ROM
- EPROM erasable PROM
- EEPROM electrically erasable PROM
- EAROM electrically rewritable ROM
- flash memory or A combination of two or more of these.
- device 30 also includes a bus 35. As shown in FIG. 5, processor 31, memory 32, and network card 33 are connected by bus 34 and communicate with each other.
- Bus 34 includes hardware, software, or both, coupling the components of the device together.
- bus 34 may include an accelerated graphics port (AGP) or other graphics bus, an enhanced industry standard architecture (EISA) bus, a front side bus (FSB), a super transfer (HT) interconnect, an industry standard architecture (ISA) Bus, Infinite Bandwidth Interconnect, Low Pin Count (LPC) Bus, Memory Bus, Micro Channel Architecture (MCA) Bus, Peripheral Component Interconnect (PCI) Bus, PCI-Express (PCI-X) Bus, Serial Advanced Technical Attachment (SATA) bus, Video Electronics Standards Association Local (VLB) bus or other suitable bus or a combination of two or more of these.
- Bus 34 may include one or more buses, where appropriate. Although a particular bus is described and illustrated in this application, the present application contemplates any suitable bus or interconnect.
- the embodiment of the present application further provides a storage medium on which a program is stored.
- the program is implemented by the processing circuit to implement the congestion control method as described in the present application.
- a storage medium may include any medium that can store or transfer information. Examples of storage media include electronic circuits, semiconductor memory devices, ROM, flash memory, erasable ROM (EROM), floppy disks, CD-ROMs, optical disks, hard disks, fiber optic media, radio frequency (RF) links, and the like.
- Programs, code segments can be downloaded via a computer network such as the Internet, an intranet, and the like.
- FIG. 6 is a schematic structural diagram of a congestion control apparatus according to an embodiment of the present invention.
- the congestion control apparatus 400 includes a transmitting module 401, a receiving module 402, and a control module 403.
- the sending module 401 and the receiving module 402 can execute the executable code in the storage medium by the processing circuit, and invoke the communication interface
- the control module 403 can execute the executable program in the storage medium through the processing circuit, regarding the processing circuit and the storage medium.
- the communication interface For the specific form of the communication interface, reference may be made to the description corresponding to FIG. 5.
- FIG. 5 With regard to other implementation details and advantageous effects of the apparatus shown in Figure 6, please refer to the description of the present application.
- the sending module 401 is configured to send, by using a connection with the receiving end, multiple data packets to the receiving end in a congestion window.
- the sending module 401 is further configured to send, to the receiving end of the connection, a plurality of data packets of a second value.
- the receiving module 402 is configured to receive, from the receiving end, multiple messages corresponding to all data packets or partial data packets in the multiple data packets.
- the plurality of messages include one or more first messages, and one or more second messages, where the first message is used to indicate that the connection is congested when transmitting one or more data packets in the plurality of data packets, The second message is used to indicate that the connection is not congested when transmitting one or more data packets in multiple data packets.
- the first message is a congestion notification message and the second message is a confirmation character.
- the plurality of messages are feedback messages.
- Each feedback message is also used to indicate that a certain number of data packets in the plurality of data packets arrive at the receiving end. A certain number is one or more.
- the first packet carries a congestion feedback identifier, and the second packet does not carry a congestion feedback identifier.
- the control module 403 is configured to adjust the congestion window according to the plurality of messages to adjust the value of the congestion window to the second value.
- the first packet of the plurality of packets reduces the value of the congestion window, and the second packet of the plurality of packets increases the value of the congestion window.
- the first message of the plurality of messages reduces the value of the congestion window by a third value
- the second message of the plurality of messages increases the value of the congestion window by a fourth value.
- the third value is related to the number of data packets indicated by a first message
- the fourth value is related to the number of data packets indicated by a second message.
- control module 403 is configured to reduce the value of the congestion window by a third value according to one of the plurality of messages; and according to the multiple A second message in the message increases the value of the congestion window by a fourth value.
- control module 403 is configured to reduce the value of the congestion window by each first message according to the number of the first message, the second message. The number and the amount by which each second message increases the value of the congestion window, calculates a second value, and adjusts the value of the congestion window from the first value to the second value.
- the second value is a sum of the first value, the inverse of the first sum, and the sum of the second sum, and the first sum is a sum of the third values corresponding to each of the plurality of packets, the first And a sum of the fourth values corresponding to each of the plurality of messages.
- the fourth value is also related to the first value and the increase factor.
- the increase coefficient may be a preset value.
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种拥塞控制方法、装置、设备及存储介质,涉及网络通信领域。拥塞控制方法包括:根据拥塞窗口的第一值,向接收端发送第一值个数据包。接收多个数据包中的全部数据包或者部分数据包对应的多个报文,该多个报文包括一个或多个第一报文,以及一个或多个第二报文。发送端根据多个报文调整拥塞窗口,以将拥塞窗口的值调整到第二值。利用本发明的技术方案能够减小网络中的丢包,提高网络的稳定性。
Description
本申请涉及网络通信技术领域,尤其涉及一种拥塞控制方法、装置、设备及存储介质。
随着网络通信技术的发展,云计算和大数据服务越来越多地被应用在各个方面。为了满足大量用户对云计算和大数据服务的要求,建立了大量的数据中心(Data Center,DC)。在每个数据中心内部都存在大量的通过数据中心网络连接的服务器。服务器可提供的很多应用服务均需要低延迟的网络,比如在线搜索、社交网络等应用服务。
现有的流控方法,连接的发送端根据接收端返回的报文,使用数据中心量化拥塞通知(Data Center Quantized Congestion Notification,DCQCN)作为拥塞控制策略,根据该策略调整发送端的发送速率,从而控制连接的数据传输以避免连接中拥塞的发生。然而这种拥塞控制策略,并不能保证数据传输的稳定性,连接的传输性能差,具体表现为,数据传输过程中,拥塞发生的概率高以及容易丢包,丢包率高。
发明内容
本申请提供了一种拥塞控制方法、装置、设备及存储介质,能够更准确地调整发送端的拥塞窗口,使用这样的拥塞窗口发送数据,可以降低连接发生拥塞的概率,在不对交换节点做控制的情况下,使交换节点具有稳定而较浅的待转发数据的队列深度,从而减小网络中的丢包,提高网络的稳定性。
第一方面,本申请提供了一种拥塞控制方法,拥塞控制方法包括:
发送端通过与接收端之间的连接(link),在一个拥塞窗口内向接收端发送多个数据包,多个数据包的数目为第一值,第一值为连接的拥塞窗口的值,其中,连接处于拥塞避免状态;发送端接收来自接收端的与多个数据包中的全部数据包或者部分数据包对应的多个报文,多个报文包括一个或多个第一报文,以及一个或多个第二报文,第一报文用于表示连接在传输多个数据包中的一个或多个数据包时拥塞,第二报文用于表示连接在传输多个数据包中的一个或多个数据包时不拥塞;发送端根据多个报文调整拥塞窗口,以将拥塞窗口的值调整到第二值,其中,多个报文中的第一报文,使拥塞窗口的值减小,多个报文中的第二报文,使拥塞窗口的值增加。
由于上述方法中,一个拥塞窗口对应的第一报文和第二报文都会对该拥塞窗口产生影响,则,第二值可以大于或者小于第一值,甚至在一些情况下,第一值和第二值可以相等。
以及,连接在传输多个数据包中的一个或多个数据包时拥塞。一种实现方式下,可以是,一个或多个数据包在传输的过程中,被该连接的某一个交换节点,或者接收端确定为发生拥塞;相应的,连接在传输多个数据包中的一个或多个数据包时不拥塞,一种实现方式下,可以是,一个或多个数据包在传输的过程中,被该连接任一交换节点以及接收端都未得到或生成用于指示拥塞的信息。
一个第一报文可以对应一个或多个数据包,一个第二报文也可以对应一个或多个数据包。第二报文可以是数据包的确认字符ACK(Acknowledge),或者其他。第一报文也可以是使用一个专门格式的报文以指示网络拥塞。例如可以是拥塞通知报文(Congestion Notification Packet,CNP)。
一种实现方式下,该多个报文可以都是反馈报文,每个报文还用于指示多个数据包中一定数目的数据包到达接收端,一定数目为一个或多个;第一报文携带拥塞反馈标识,第二报文不携带拥塞反馈标识。第一报文通过拥塞标识表示网络拥塞。例如该拥塞标识可以是基于显示拥塞通知反馈(Explicit Congestion Notification Echo)技术在ACK中打上的标签等。
第一报文对应和第二报文共同反映综合的网络拥塞程度的严重性,发送端可根据第一报文和第二报文共同反映综合的网络拥塞程度的严重性,有比例的减小和增加拥塞窗口的值。实现对拥塞窗口值的精细调整,从而使得网络能够快速对网络拥塞做出反应。在发送端对拥塞窗口的值的不断调整中,使得交换节点的队列深度得到控制,可达到一个较浅稳定的队列深度,减小网络中的丢包,避免网络性能出现跳变,提高了网络的稳定性。保证交换节点的队列缓存充足,降低了数据传输过程中的延时。而且,交换节点的队列深度始终保持在一个稳定的数值上,保证队列中一直存在数据包,也能够提高网络的带宽利用率,使网络保持高带宽的数据传输。一种实现方式下,多个报文中的一个第一报文,使拥塞窗口的值减小第三值,多个报文中的一个第二报文,使拥塞窗口的值增加第四值,第三值与一个第一报文指示的数据包的数目相关,第四值与一个第二报文指示的数据包的数目相关。
第一报文指示的数据包的数目和第二报文指示的数据包的数目,可进体现更加精确的网络拥塞的程度。发送端调整拥塞窗口的值减小与第一报文指示的数据包的数目相关的第三值,增加与第二报文指示的数据包的数目相关的第四值,能够进一步提高拥塞窗口调整的精细度,即使得交换节点的队列深度控制更加精准,进一步减少丢包,并提高网络的稳定性。
一种实现方式下,第二值为第一值、第一和的相反数与第二和的加和,第一和为多个报文中的每个第一报文对应的第三值相加的和,第二和为多个报文中的每个第二报文对应的第四值相加的和。
在一种可能的实现方式中,第四值还与第一值和增加系数相关。
一种实现方式下,发送端根据多个报文调整拥塞窗口,包括:发送端根据多个报文中的一个第一报文,将拥塞窗口的值减小第三值;以及发送端根据多个报文中的一个第二报文,将拥塞窗口的值增加第四值。实时对拥塞窗口的值进行调整,保证了拥塞窗口的值调整的及时性,能够进一步提高网络对网络拥塞做出反应的速度,进一步提高网络的稳定性。
一种实现方式下,发送端根据多个报文调整拥塞窗口,包括:发送端根据第一报文的数目,每个第一报文使拥塞窗口的值减小的量,第二报文的数目以及每个第二报文使拥塞窗口的值增加的量,计算出第二值,发送端将拥塞窗口的值从第一值调整到第二值。待基于该多个报文计算出第二值后,再调整,这样可以避免过于频繁地调整拥塞窗口,更加简便。
一种实现方式下,该方法还包括:向连接的接收端发送数目为第二值的多个数据包。
第二方面,本申请提供了一种拥塞控制装置,包括:发送模块,用于通过与接收端之间的连接,在一个拥塞窗口内向接收端发送多个数据包,多个数据包的数目为第一值,第一值为连接的拥塞窗口的值,其中,连接处于拥塞避免状态;接收模块,用于接收来自接收端的与多个数据包中的全部数据包或者部分数据包对应的多个报文,多个报文包括一个或多个第一报文,以及一个或多个第二报文,第一报文用于表示连接在传输多个数据包中的一个或多个数据包时拥塞,第二报文用于表示连接在传输多个数据包中的一个或多个数据包时不拥塞;控制模块,用于根据多个报文调整拥塞窗口,以将拥塞窗口的值调整到第二值,其中,多个报文中的第一报文,使拥塞窗口的值减小,多个报文中的第二报文,使拥塞窗口的值增加。
一种实现方式下,第一报文为拥塞通知报文CNP,第二报文为确认字符ACK。
一种实现方式下,多个报文为反馈报文,每个反馈报文还用于指示多个数据包中一定数 目的数据包到达接收端,一定数目为一个或多个;第一报文携带拥塞反馈标识,第二报文不携带拥塞反馈标识。
一种实现方式下,多个报文中的一个第一报文,使拥塞窗口的值减小第三值,多个报文中的一个第二报文,使拥塞窗口的值增加第四值,第三值与一个第一报文指示的数据包的数目相关,第四值与一个第二报文指示的数据包的数目相关。
一种实现方式下,第二值为第一值、第一和的相反数与第二和的加和,第一和为多个报文中的每个第一报文对应的第三值相加的和,第二和为多个报文中的每个第二报文对应的第四值相加的和。
一种实现方式下,在根据多个报文调整拥塞窗口的方面,控制模块用于根据多个报文中的一个第一报文,将拥塞窗口的值减小第三值;以及根据多个报文中的一个第二报文,将拥塞窗口的值增加第四值。
一种实现方式下,在根据多个报文调整拥塞窗口的方面,控制模块用于根据第一报文的数目,每个第一报文使拥塞窗口的值减小的量,第二报文的数目以及每个第二报文使拥塞窗口的值增加的量,计算出第二值,以及将拥塞窗口的值从第一值调整到第二值。
一种实现方式下,发送模块还用于向连接的接收端发送数目为第二值的多个数据包。
在一种可能的实现方式中,第四值还与第一值和增加系数相关。其中增加系数可以是预设的值。
第二方面以及第二方面的各个可能的实现方式中的拥塞控制装置也可达到与上述技术方案中的拥塞控制方法相同的技术效果。
第三方面,本申请提供了一种设备,包括存储介质、处理电路和通信接口;存储介质用于存储可执行程序;处理电路用于读取存储介质中存储的可执行程序,以在通信接口的配合下执行上述技术方案中的拥塞控制方法。其中,数据包的发送、报文的接收等均可由处理电路调用通信接口来实现,处理电路具体可实现调整拥塞窗口的步骤。本申请提供的设备可达到与上述技术方案中的拥塞控制方法相同的技术效果。
第四方面,本申请提供了一种存储介质,存储介质上存储有程序;程序被处理电路执行时实现如上述技术方案中的拥塞控制方法,可达到与上述技术方案中的拥塞控制方法相同的技术效果。
图1为本申请实施例中一种网络应用场景图;
图2为本申请实施例中的一种拥塞控制方法的流程图;
图3为本申请实施例中一种拥塞标识设置概率与队列深度正相关的示意图;
图4为本申请实施例中一种拥塞控制方法的流程图;
图5为本申请实施例中一种设备的结构示意图;
图6为本发明实施例中一种拥塞控制装置的结构示意图。
本申请提供了一种拥塞控制方法、装置、设备及存储介质,可应用于通信协议栈中的传输控制协议/用户数据报协议(Transmission Control Protocol/User Datagram Protocol,TCP/UDP)层和网络协议(Internet Protocol,IP)层,以及以太网交换机(即Ethernet Switch)和与主机通道适配器(即Host Channel Adapter)之间的基于融合以太网的远程内存直接访问(Remote Direct Memory Access over Converged Ethernet,RoCE)。例如,一个典型的本申请的技术方案的应用场景,就是远程内存直接访问(Remote Direct Memory Access, RDMA)网络。在一个示例中,本申请中的拥塞控制方法可应用于RDMA数据存取的场景中。比如,用户终端将数据直接写入远程服务器的内存,在数据写入的过程中无内核干预和内存拷贝发生。RDMA可降低远程服务器侧数据处理的延迟。在以太网中,用户终端先将数据以数据包的形式发送至交换节点,再由交换节点将数据包发送至远程服务器。在数据存储至远程服务器的过程中,数据快速移动到了远程服务器的存储器中,数据交换的过程并没有经过远程服务器的中央处理器,从而减少了数据传输时远程服务器的中央处理器的开销。数据在用户终端和交换节点中的传输即可采用本申请中的拥塞控制方法。
图1为本申请实施例中一种网络应用场景图。如图1所示,应用缓存(即Application Buffers)为应用程序中的用户缓存空间。一方面,数据可从应用缓存通过用户的套接字应用程序编程接口(Sockets Application Programming Interface,Sockets API)进入操作系统内核(即Kernel),在操作系统内核中通过套接字(即Sockets)、传输控制协议(Transmission Control Protocol,TCP)、第四版网络协议/第六版网络协议(即IPv4/IPv6)、网络设备(即Network Device),到达操作系统内核中的设备驱动(Device Driver)。另一方面,数据也可从应用缓存通过远程内存直接访问应用于直接内存存取的应用程序编程接口(Remote Direct Memory Access Verbs Application Programming Interface,RDMA Verbs API)进入操作系统内核,利用操作系统内核旁路(即Kernel Bypass)功能,直接到达操作系统内核中的设备驱动,实现了远程内存直接访问(Remote Direct Memory Access,RDMA)。操作系统内核中的缓存标头(即Buffers Headers)可存储数据实际的内存地址、数据类型、缓存标头所在的链表、数据状态、数据标记等,在此并不限定。操作系统内核可通过服务器安装的主机通道适配器(Host Channel Adapter,HCA)利用无限带宽技术(即InfiniBand)与无线带宽技术交换器(InfiniBand)进行数据交互。操作系统内核还可通过主机通道适配器利用互联网的广域远程内存直接访问协议(Internet Wide Area Remote Direct Memory Access Protocol,iWARP)、基于融合以太网的远程内存直接访问(Remote Direct Memory Access over Converged Ethernet,RoCE)等技术与以太网交换机进行数据交互。
本申请实施例中拥塞控制方法的数据流动涉及图1所示的虚线框中的部分,即涉及网络协议和传输控制协议,以及交换节点和发送端之间的数据流通。应理解,本申请的技术方案涉及三端交互场景,即发送端,交换节点和接收端,但是一种实现方式下,本申请的技术改进在发送端,交换节点和接收端可以仍然使用现有技术中的方式给予配合。交换节点可以是路由器,交换机等,发送端可以是服务器,终端,云平台,甚至是某些网络设备,如智能网卡。比如,本申请实施例中拥塞控制方法可根据网络协议,比如根据第四版网络协议或第六版网络协议标记的拥塞标识,标记根据传输控制协议得到的拥塞反馈标识。根据报文,采用本申请实施例中的拥塞控制方法,调整发送端的拥塞窗口的值。又比如,在服务器(即发送端)与以太网交换机(即交换节点)之间的RoCE过程中采用本申请实施例中的拥塞控制方法,调整发送端的拥塞窗口的值。
本申请实施例中的拥塞控制方法主要应用于一个连接中的发送端。在一个连接中包括发送端、交换节点和接收端。发送端可将数据包发送至交换节点,数据包进入交换节点中的队列。交换节点可用于对数据包进行拥塞标识的设置(即打标)。交换节点按照队列中数据包的排列顺序,将数据包依次向接收端发送。接收端依据接收到的数据包向发送端发送报文。发送端根据报文调制拥塞窗口的值。
图2为本申请实施例中的一种拥塞控制方法的流程图。如图2所示,拥塞控制方法包括步骤S101至步骤S106,为了便于理解,以三方交互的流程进行说明。
在步骤S101中,发送端通过与接收端之间的连接,在一个拥塞窗口内向交换节点发送多个数据包。
其中,发送端发送的这多个数据包的数目即为第一值,第一值为连接的拥塞窗口的值。该连接处于拥塞避免(即Congestion Avoidance)状态。具体的,发送端通过交换节点向接收端发送多个数据包。也就是说,发送端将多个数据包向交换节点发送,交换节点再将这多个数据包向接收端发送。
在步骤S102中,交换节点接收多个数据包,按照拥塞标识设置概率使得数据包指示连接拥塞或指示连接不拥塞,并将数据包发送至接收端。
这里数据包指示连接拥塞即表示连接在传输多个数据包中的一个或多个数据包时拥塞。数据包指示连接不拥塞即表示连接在传输多个数据包中的一个或多个数据包时不拥塞。
在一个示例中,可为数据包设置拥塞标识,携带拥塞标识的数据包指示连接拥塞。将拥塞标识在网络第三层即IP层标记,即标记在数据包的IP包头上。拥塞标识表征网络发生拥塞。比如,拥塞标识可以为拥塞经历(Congestion Experienced,CE)。例如,CE为IP数据包的包头上设置的11。不携带拥塞标识的数据包指示连接不拥塞。需要说明的是,交换节点的队列深度位于队列正常范围内,拥塞标识设置概率与队列深度正相关。交换节点的队列深度为等待发送的数据包的数目。在一个示例中,队列正常范围与带宽延时积、队列正常范围的最大值、队列正常范围的最小值、增加系数、拥塞标识最大设置概率、第一报文对应的第三值、慢启动(即Slow Start)状态中发送端接收到的第二报文对应的第五值等参数中的一个或多个相关。慢启动(即Slow Start)状态为连接建立初始的一段时间内的状态。慢启动状态开始于连接建立,终止于发送端首次接收到第一报文之后。第一报文和第二报文的相关说明将会在下面具体介绍。
交换节点的队列深度位于队列正常范围内的情况下,拥塞标识设置概率与队列深度可线性正相关,也可为非线性正相关。比如,图3为本申请实施例中一种拥塞标识设置概率与队列深度正相关的示意图。如图3所示,横坐标为队列深度,纵坐标为拥塞标识设置概率。设队列正常范围的最小值为Kmin,队列正常范围的最大值为Kmax。队列深度大于或等于Kmin,且队列深度小于或等于Kmax,拥塞标识设置概率与队列深度线性正相关。队列深度小于Kmin,则拥塞标识设置概率为0。队列深度大于Kmax,则拥塞标识设置概率为100%。
在步骤S103中,接收端根据多个数据包中的全部数据包或者部分数据包,生成多个报文,并向发送端发送多个报文。
在一个示例中,接收端可将接收到的多个数据包中的全部数据包作为生成报文的依据。比如,发送端向接收端发送了100个数据包。在这100个数据包中,20个数据包指示连接拥塞,80个数据包指示连接不拥塞。则可根据这100个数据包,生成多个报文,并向发送端发送。
在另一个示例中,接收端也可将接收到的多个数据包中的部分数据包作为生成报文的依据。比如,发送端向接收端发送了100个数据包。在这100个数据包中,20个数据包指示连接拥塞,80个数据包指示连接不拥塞。接收端可随机或按照某种规律在100个数据包中选取60个数据包。根据选取的60个数据包,生成多个报文,并向发送端发送。
其中,多个报文包括一个或多个第一报文,以及一个或多个第二报文。第一报文用于表示连接在传输多个数据包中的一个或多个数据包时拥塞。第二报文用于表示连接在传输多个数据包中的一个或多个数据包时不拥塞。
在一个示例中,第一报文可以为用于指示网络拥塞而使用的一个专门的报文,例如专门 的拥塞通知报文(Congestion Notification Packet,CNP)等。第二报文可以是数据包的确认字符(Acknowledge,ACK)。
在另一个示例中,多个报文可以为反馈报文。每个反馈报文还可用于指示多个数据包中一定数目的数据包达到接收端。其中,一定数目为一个或多个。也就是说,每个反馈报文可对应一个或多个数据包。在多个报文为反馈报文的情况下,第一报文携带拥塞反馈标识,通过拥塞反馈标识表示连接在传输多个数据包中的一个或多个数据包时拥塞。例如该拥塞反馈标识可以是基于显示拥塞通知反馈(Explicit Congestion Notification Echo)技术在ACK中打上的标签等。具体的,拥塞反馈标识可根据拥塞标识在报文中标记,标记拥塞反馈标识的报文即为第一报文。具体的,接收端接收到交换节点发送来的数据包,若数据包的IP包头标记有拥塞标识,则可将拥塞反馈标识在网络第四层即TCP层标记,可标记在TCP包头上。第一报文的拥塞反馈标识可具体为显式拥塞通知反馈(Explicit Congestion Notification Echo,ECE)。例如,ECE为TCP数据包的包头上设置的1。第二报文不携带拥塞反馈标识,即接收端生成的第二报文中并不标记拥塞反馈报文。
在步骤S104中,发送端接收多个数据包中的全部数据包或部分数据包对应的多个报文。
在步骤S105中,发送端根据多个报文调整拥塞窗口,以将拥塞窗口的值调整到第二值。
发送端接收多个报文,可对多个报文进行解析,从而确定多个报文中的第一报文和第二报文。比如,报文为反馈报文,则发送端接收到反馈报文后,对反馈报文进行解析。若解析反馈报文得到拥塞反馈标识,则确定该报文为第一报文。若解析反馈报文未得到拥塞反馈标识,则确定该报文为第二报文。
第一报文使拥塞窗口的值减小,第二报文使拥塞窗口的值增大。比如,多个报文中的一个第一报文,使拥塞窗口的值减小第三值。多个报文中的一个第二报文,使拥塞窗口的值增加第四值。第三值与一个第一报文指示的数据包的数目相关。第四值与一个第二报文指示的数据包的数目相关。在一个示例中,第三值与一个第一报文指示的数据包的数目正相关;第四值与一个第二报文指示的数据包的数目正相关。
比如,对应N个数据包的第一报文所对应的第三值,为对应一个数据包的第一报文所对应的第三值的N倍。对应N个数据包的第二报文所对应的第四值,为对应一个数据包的第二报文所对应的第四值的N倍。其中,N为正整数。
在一个示例中,接收端设置每个第一报文和第二报文均各自对应固定数目个数据包,固定数目为一个或多个。则每个第一报文对应的第三值均相等。每个第二报文对应的第四值相等。比如,每个第一报文均对应两个指示连接拥塞的数据包,一个指示连接拥塞的数据包对应的第一报文可调整拥塞窗口的值的减少量为β,则每个第一报文对应的第三值为2β。每个第二报文均对应两个指示连接不拥塞的数据包,一个指示连接不拥塞的数据包对应的第二报文可调整拥塞窗口的值的增加量为θ,则每个第二报文对应的第四值为2θ。需要说明的是,第一报文对应的数据包数目与第二报文对应的数据包数目可以相同,也可以不同,在此并不限定。
在另一个示例中,接收端可不限定每个第一报文对应的数据包的数目和每个第二报文对应的数据包的数目。比如,处于拥塞避免状态的连接中发送端接收到两个第一报文和两个第二报文。第一个第一报文对应一个数据包,第二个第一报文对应两个数据包。一个指示连接拥塞的数据包对应的第一报文可调整拥塞窗口的值的减少量为β。则第一个第一报文对应的第三值为β。第二个第一报文对应的第三值为2β。第一个第二报文对应两个数据包,第二个第二报文对应一个数据包。一个指示连接不拥塞的数据包对应的第二报文可调整拥塞窗口 的值的增加量为θ。则第一条第二报文对应的第四值为2θ。第二条第二报文对应的第四值为θ。
每个报文可对应一个或多个数据包。每个报文对应的数据包数目可以相同。报文对应数据包的数目可在接收端与发送端之间预先设定,比如,预先设定每个报文对应一个数据包。又比如,预先设定每个报文对应两个数据包。每个报文对应的数据包数目也可以不同。可在报文中的空闲字节中设置数据包数目位,通过解析报文,读取数据包数目位上的信息,确定报文对应的数据包数目。需要说明的是,第一报文可以为特殊的专用于表示连接在传输多个数据包中的一个或多个数据包时拥塞的报文,该特殊的报文可对应一个用于表示连接拥塞的数据包,或者对应多个专用于表示连接拥塞的数据包。该特殊的报文对应的专用于表示连接拥塞的数据包的数目的设置可参考与上述普通的报文对应的数据包的数目的设置。
针对每一个数据包各生成一个报文,可实现发送端的细粒度发送速率控制,从而提高拥塞控制的精度。但考虑到拥塞控制的资源占用等计算代价,可适当设置两个以上的数据包共享一条报文,从而达到计算代价和拥塞控制精度的平衡。
在一个示例中,在调整拥塞窗口的过程中,发送端每接收到一个报文,就可实时根据该报文进行拥塞窗口的调整。若发送端接收到的多个报文中的一个报文为第一报文,则根据接收到的这一个第一报文,将拥塞窗口的值减小与该第一报文对应的第三值。若发送端接收端到的多个报文中一个报文为第二报文,则根据接收到的这一个第二报文,将拥塞窗口的值增大与该第二报文对应的第四值。
需要说明的是,上述说明内容中的一个指示连接拥塞的数据包对应的第一报文可调整拥塞窗口的值的减少量(即对应一个数据包的第一报文对应的第三值),以及一个指示连接不拥塞的数据包对应的第二报文可调整拥塞窗口的值的增加量(即对应一个数据包的第二报文对应的第四值)可根据具体工作场景和工作需求预先设定。在一个示例中,第四值还与第一值和增加系数相关。比如,对应一个数据包的第二报文对应的第四值为增加系数与第一值的商。设对应一个数据包的第二报文对应的第四值为θ;增加系数为γ;第一值为Cwnd1。增加系数也可根据具体工作场景和工作需求设定。则上述参数之间的关系如算式(1)所示:
θ=γ/Cwnd1 (1)
在具体操作中,发送端可根据第一报文的数目、每个第一报文使拥塞窗口的值减小的量、第二报文的数目以及每个第二报文使拥塞窗口的值增加的量,计算出第二值。发送端得到第二值,将拥塞窗口的值从第一值调整到第二值。根据第一报文的数目,以及每个第一报文使拥塞窗口的值减小的量,可以得到所有第一报文使拥塞窗口的值减小的总量。根据第二报文的数目,以及每个第二报文使拥塞窗口的值增加的量,可以得到所有第二报文使拥塞窗口的值增加的总量。根据所有第一报文使拥塞窗口的值减小的总量、所有第二报文使拥塞窗口的值增加的总量以及拥塞窗口的值,可以得到第二值。
也就是说,上述说明中的第二值为发送端接收到一个拥塞窗口所有报文多次调整后的拥塞窗口的值。比如,第二值为第一值、第一和的相反数与第二和的加和。其中,第一和为多个报文中的每个第一报文对应的第三值的加和。第二和为多个报文中的每个第二报文对应的第四值的加和。例如,处于拥塞避免状态的连接中一个拥塞窗口中,发送端接收到一个第一报文和两个第二报文。假设第一值为Cwnd1;第二值为Cwnd2;第一报文对应的第三值为β
1;第一个第二报文对应的第四值为θ
1;第二个第二报文对应的第四值为θ
2。则可以得到算式(2)如下:
Cwnd2=Cwnd1-β
1+θ
1+θ
2 (2)
本申请实施例中的拥塞控制方法中,接收端根据一个拥塞窗口的数据包的拥塞标识,生成表示连接在传输多个数据包中的一个或多个数据包时拥塞的第一报文,和表示连接在传输多个数据包中的一个或多个数据包时不拥塞的第二报文。发送端根据多个报文中的第一报文和第二报文,有比例的减小和增加拥塞窗口的值,从而对拥塞窗口的值进行更精细的调整。在本申请实施例中,拥塞窗口的调整中存在李雅普诺夫平衡点,在对拥塞窗口的值的不断调整中,使得交换节点的队列深度得到控制,达到较浅的一个稳定队列深度。
比如,设对应一个数据包的第二报文对应的第四值如算式(1)所示;拥塞标识设置概率为p;时刻t的拥塞窗口的值为Cwnd(t),则在时刻t经过一个往返时延(Round-trip Time,RTT)的拥塞窗口的值Cwnd(t+Rtt)计算见算式(3):
Cwnd(t+Rtt)=Cwnd(t)+γ×(1-p)-β×Cwnd(t)×p (3)
其中,γ为上述说明内容中的增加系数。β为对应一个数据包的第二报文对应的第四值。
根据算式(3)可以得到算式(4),算式(4)如下:
(dCwnd/dt)=(1/RTT)×[(γ/Cwnd)×(1-p)-β×p] (4)
令∑(dCwnd/dt)=0,可得,∑Cwnd=(nγ/β)[(1/p)-1]。其中,n为网络链路流的数目。当∑Cwnd等于带宽延时积(Bandwidth-Delay Product,BDP)时达到李雅普诺夫平衡点,可计算得到较小的稳定队列深度Q,具体计算如下:
Q=(K×nγ)/[(BDP×β)+nγ] (5)
其中,K为队列深度的最大值与队列深度的最小值的差值。
达到李雅普诺夫平衡点的情况下,交换节点中队列深度将稳定维持在较浅的稳定队列深度Q。在现有技术中,交换节点中的队列深度上下波动非常大,且队列深度非常大,队列深度可达到100至256。由于交换节点中的队列缓存有限,队列深度大导致交换节点中的队列缓存紧张,数据传输过程中的延时增大,使得丢包率增高。采用本申请实施例的拥塞控制方法,发送端在不断调整拥塞窗口的过程中,按照第一报文和第二报文,有比例地减小和增加拥塞窗口的值。使得拥塞窗口的值可稳定维持在一个较浅的稳定队列深度,比如,本申请实施例中的稳定队列深度可达到10至20。稳定队列深度较浅,为交换节点留出了足够的队列缓存。从而降低了数据传输过程中的延时,使得丢包率更加可控,而更能抗击突发因素对丢包率等网络性能的破坏,使得数据传输更加稳定,质量更有保障,。而且,采用本申请实施例中的拥塞控制方法,可以在不启用基于优先级的流控控制(Priority-based Flow Control,PFC)等复杂机制的情况下,更加精确地对拥塞窗口进行控制,提高网络的稳定性。可在避免死锁等稳定性问题的基础上,保证网络的稳定性,从而提升网络服务质量。
而且,在本申请实施例中,稳定队列深度不为0的情况下,即保证队列中一直存在数据包,也可保证较高的网络带宽利用率。从而达到了数据传输过程中延时低和网络带宽利用率高的协调平衡。
比如,在一个示例中,在相同网络条件下采用传输控制协议(Transmission Control Protocol,TCP)算法、数据中心量化拥塞通知(Data Center Quantized Congestion Notification,DCQCN)算法和本申请方案算法的效果如表一所示:
| 利用的带宽 | 队列深度 | |
| TCP算法 | 13.8Gbps | 0至256 |
| DCQCN算法 | 25.2Gbps | 0至100 |
| 本申请方案算法 | 35.9Gbps | 0至20 |
表一
可以得知,本申请方案算法的带宽明显高于TCP算法和DCQCN算法,且本申请方案算法的队列深度明显低于TCP算法和DCQCN算法,且队列深度得到有效控制,变化较小,可保证极低丢包率。而且,队列深度始终保持在一个稳定的队列深度值上,也能够进一步提高网络的带宽的利用率。
在步骤S106中,发送端向连接的接收端发送数目为第二值的多个数据包。
调整拥塞窗口的值后,在下一个拥塞窗口发送数据包的过程中,发送端向交换节点发送调整后得到的第二值数目个数据包,以调整交换节点的队列深度。
在另一个实施例中,上述连接还可处于慢启动状态。在步骤S101之前,即在发送端的连接处于拥塞避免状态之前,发送端的连接处于慢启动(即Slow Start)状态。慢启动状态开始于连接初始建立,终止于发送端首次接收到表示连接拥塞的第一报文之后。在慢启动状态中,发送端可根据处于慢启动状态的连接的拥塞窗口的第六值,向处于慢启动状态的连接的接收端发送多个数据包。处于慢启动状态的连接中的多个数据包的数目为上述第六值。
具体的,发送端通过交换节点向接收端发送数据包。也就是说,发送端先将数据包发送至交换节点,交换节点按照拥塞标识设置概率使得数据包指示连接拥塞或指示连接不拥塞,并将数据包发送至接收端。接收端根据数据包,生成慢启动报文。其中,慢启动报文为处于慢启动状态的连接中多个数据包对应的报文。慢启动报文包括一个第一报文和整数个第二报文。接收端将第一报文和第二报文发送至发送端。发送端根据处于慢启动状态的连接中的慢启动报文中的每一个报文调整拥塞窗口,以将拥塞窗口的值调整至第一值。
慢启动报文中的每个报文的作用与上述拥塞避免状态的连接中的报文基本相同。需要注意的是,在处于慢启动状态的连接中,每一个第一报文,使拥塞窗口减小第三值。每一个第二报文,使拥塞窗口增加第五值。
在慢启动状态终止后,可切换至拥塞避免状态。处于拥塞避免状态的连接开始于发送端首次接收到携带拥塞反馈标识的第一报文之后。在处于慢启动状态的连接中不断调整拥塞窗口的值,慢启动状态终止时拥塞窗口的值即为处于拥塞避免状态的连接开始时的拥塞窗口的值。
为了便于理解,下面举例说明从慢启动状态到拥塞避免状态的整个过程中拥塞控制方法中拥塞窗口的值的调整算法。
假设处于慢启动状态的连接中对应一个数据包的第一报文对应的第三值为β;处于慢启动状态的连接中对应一个数据包的第二报文对应的第五值为α;处于拥塞避免状态的连接中对应一个数据包的第一报文对应的第三值为β;处于拥塞避免状态的连接中对应一个数据包的第二报文对应的第四值为θ。设θ如算式(1)所示。假设一个拥塞窗口中,发送端接收到了10条报文。每条报文均对应一个数据包。其中,10条报文按顺序分别为第二报文、第二报文、第一报文、第二报文、第一报文、第一报文、第二报文、第二报文、第一报文和第二报文。
则前两条第二报文和第一条第一报文均为处于慢启动状态的连接中的报文,剩余部分的第一报文和第二报文均为处于拥塞避免状态的连接中的报文。设第六值为Cwnd3,则第一值Cwnd1的计算可如算式(6)所示:
Cwnd1=Cwnd3+α+α-β=Cwnd3-2×α-β (6)
第二值Cwnd2的计算可如算式(7)所示:
Cwnd2=Cwnd1+(γ/Cwnd1)-β-β+(γ/Cwnd1)+(γ/Cwnd1)-β+(γ/Cwnd1)=Cwnd3-2×α-4×β+4×(γ/Cwnd1) (7)
则经过一个拥塞窗口不断的调整,下一拥塞窗口的值即第二值Cwnd2为Cwnd3-2×α-4×β+4×(γ/Cwnd1)。
需要理解的是,上述的参数α,β和γ,可以根据网络的拓扑和网络参数等信息,先在数据传输前,例如组网过程中,或者连接建立过程中使用上述举例的计算方式或者其他计算方式确定后,作为系统参数配置好,在连接传输数据的过程中(如上文描述的从S101开始的过程,或者慢启动状态中),直接使用即可。又例如,可预先设置期望的稳定队列深度Q,设置可达到期望的稳定队列深度Q的α,β和γ,并将α,β和γ作为系统参数配置。
下面将以一实例说明本申请实施例中拥塞控制方法的过程。设置发送端初始发送的拥塞窗口值为100,即发送端初始发送的拥塞窗口为100个数据包。队列深度的最小值Kmin=0,队列深度的最大值Kmax=40。初始的队列深度为20。初始的拥塞标识设置概率为10%。对应一个数据包的第一报文的第三值β=0.5,增加系数γ=1.0。在队列正常范围内,拥塞标识设置概率的曲线公式为y=0.005x,其中,y为拥塞标识设置概率,x为队列深度。假设,每个数据包均对应一条报文。
第一次拥塞窗口的值调整:发送端将根据初始的拥塞窗口值100,将100个数据包发送至交换节点。交换节点按照初始的拥塞标识设置概率10%设置用于指示连接拥塞的数据包和指示连接不拥塞的数据包,则100个数据包包括90个指示连接不拥塞的数据包和10个指示连接拥塞的数据包。接收端接收90个指示连接不拥塞的数据包和10个指示连接拥塞的数据包,生成90个表示连接在传输多个数据包中的一个或多个数据包时不拥塞的报文和10个未表示连接在传输多个数据包中的一个或多个数据包时拥塞的报文。发送端接收接收端发送的90个表示连接在传输多个数据包中的一个或多个数据包时不拥塞的报文和10个表示连接在传输多个数据包中的一个或多个数据包时拥塞的报文,并进行第一次拥塞窗口值的调整。调整后的拥塞窗口值为100+1.0×(90/100)-0.5×10≈96。调整后的拥塞窗口值的计算方法具体可参见上述算式(3)。
第二次拥塞窗口的值调整:发送端将根据第一次调整后的拥塞窗口值96,将96个数据包发送至交换节点。由于拥塞窗口值减小,因此队列深度也对应减小。计算第二次拥塞窗口值调整所需的拥塞标识设置概率为[20-(100-96)]×0.05=8%。交换节点按照拥塞标识设置概率8%设置用于指示连接拥塞的数据包和指示连接不拥塞的数据包,则96个数据包包括88个指示连接不拥塞的数据包和8个指示连接拥塞的数据包。接收端接收88个指示连接不拥塞的数据包和8个指示连接拥塞的数据包,生成88个表示连接在传输多个数据包中的一个或多个数据包时不拥塞的报文和8个表示连接在传输多个数据包中的一个或多个数据包时拥塞的报文。发送端接收接收端发送的88个表示连接在传输多个数据包中的一个或多个数据包时不拥塞的报文和8个表示连接在传输多个数据包中的一个或多个数据包时拥塞的报文,并进行第二次拥塞窗口值的调整。调整后的拥塞窗口值为96+1.0×(88/96)-0.5×8≈93。
第三次拥塞窗口的值调整:发送端将根据第二次调整后的拥塞窗口值93,将93个数据包发送至交换节点。由于拥塞窗口值减小,因此队列深度也对应减小。计算第二次拥塞窗口值调整所需的拥塞标识设置概率为[20-(100-93)]×0.05=6.5%。交换节点按照拥塞标识设置概率6.5%设置用于指示连接拥塞的数据包和指示连接不拥塞的数据包,则93个数据包包括87个指示连接不拥塞的数据包和6个指示连接拥塞的数据包。接收端接收87个指示连接不拥塞的数据包和6个指示连接拥塞的数据包,生成87个表示连接在传输多个数据包中的一个或多个数据包时不拥塞的报文和6个表示连接在传输多个数据包中的一个或多个数据包时拥塞的报文。发送端接收接收端发送的87条表示连接在传输多个数据包中的一个或多个数据包 时不拥塞的报文和6条表示连接在传输多个数据包中的一个或多个数据包时拥塞的报文,并进行第三次拥塞窗口值的调整。调整后的拥塞窗口值为93+1.0×(87/93)-0.5×6≈91。
依次类推,直至第八次拥塞窗口的值调整。
第八次拥塞窗口的值调整:发送端将根据第七次调整后的拥塞窗口值86,将86个数据包发送至交换节点。由于拥塞窗口值减小,因此队列深度也对应减小。计算第二次拥塞窗口值调整所需的拥塞标识设置概率为[20-(100-86)]×0.05=3%。交换节点按照拥塞标识设置概率3%设置用于指示连接拥塞的数据包和指示连接不拥塞的数据包,则86个数据包包括83个指示连接不拥塞的数据包和3个指示连接拥塞的数据包。接收端接收83个指示连接不拥塞的数据包和3个指示连接拥塞的数据包,生成83个表示连接在传输多个数据包中的一个或多个数据包时不拥塞的报文和3个表示连接在传输多个数据包中的一个或多个数据包时拥塞的报文。发送端接收接收端发送的83个表示连接在传输多个数据包中的一个或多个数据包时不拥塞的报文和3个表示连接在传输多个数据包中的一个或多个数据包时拥塞的报文,并进行第八次拥塞窗口值的调整。调整后的拥塞窗口值为86+1.0×(83/86)-0.5×3≈85。
第九次拥塞窗口的值调整:发送端将根据第八次调整后的拥塞窗口值85,将85个数据包发送至交换节点。由于拥塞窗口值减小,因此队列深度也对应减小。计算第二次拥塞窗口值调整所需的拥塞标识设置概率为[20-(100-85)]×0.05=2.5%。交换节点按照拥塞标识设置概率2.5%设置用于指示连接拥塞的数据包和指示连接不拥塞的数据包,则85个数据包包括83个指示连接不拥塞的数据包和2个指示连接拥塞的数据包。接收端接收83个指示连接不拥塞的数据包和2个指示连接拥塞的数据包,生成83个表示连接在传输多个数据包中的一个或多个数据包时不拥塞的报文和2个表示连接在传输多个数据包中的一个或多个数据包时拥塞的报文。发送端接收接收端发送的83个表示连接在传输多个数据包中的一个或多个数据包时不拥塞的报文和2个表示连接在传输多个数据包中的一个或多个数据包时拥塞的报文,并进行第九次拥塞窗口值的调整。调整后的拥塞窗口值为85+1.0×(83/85)-0.5×2≈85。
依次类推,在之后的拥塞窗口的值调整中,队列深度稳定为5,不再发生较大波动。从而保证了较小的稳定队列深度,为交换节点留出了足够的队列缓存,降低了数据传输过程中的延时,从而降低了丢包率。
下面将以发送端为执行主体说明本申请实施例中拥塞控制方法的实施步骤。图4为本申请实施例中一种拥塞控制方法的流程图。图4所示的拥塞控制方法应用于一个连接的发送端。如图4所示,拥塞控制方法包括步骤S201至步骤S203。
在步骤S201中,发送端通过与接收端之间的连接,在一个拥塞窗口内向连接的接收端发送多个数据包。
其中,多个数据包的数目为第一值,第一值为连接的拥塞窗口的值。其中,连接处于拥塞避免状态。
在步骤S202中,发送端接收来自接收端的与多个数据包中的全部数据包或者部分数据包对应的多个报文。
其中,多个报文包括一个或多个第一报文,以及一个或多个第二报文,第一报文用于表示连接在传输多个数据包中的一个或多个数据包时拥塞,第二报文用于表示连接在传输多个数据包中的一个或多个数据包时不拥塞。
在步骤S203中,发送端根据多个报文调整拥塞窗口,以将拥塞窗口的值调整到第二值。
其中,多个报文中的一个第一报文,使拥塞窗口减小。多个报文中的一个第二报文,使拥塞窗口增加。
上述步骤S201至步骤S203的相关说明请参见上述实施例中步骤S101至步骤S106的相关说明,在此不再赘述。
下面介绍本申请实施例中的一种网卡以及一种设备,例如该设备可以是终端或者服务器,甚至是某些网络设备,例如云平台等。图5为本申请实施例中一种设备30的结构示意图。如图5所示,设备包括处理器31、存储器32和网卡33。其中网卡33可包括处理电路(例如ASIC电路,FPGA,DSP等,图5中将处理电路示意为处理芯片331)、和存储介质332和通信接口333。在一个示例中,网卡33还可包括连接接口(图5中将连接接口示意为外部组件连接快速接口334)。在一个示例中,上述实施例中的拥塞控制方法可应用于网卡33。也就是说,网卡33中的存储介质332用于存储程序。处理芯片331用于执行程序,程序被处理芯片332执行时可实现上述实施例中的拥塞控制方法。外部组件连接快速接口334用于将网卡33连接在设备30上。通信接口333被处理芯片331调用,使得网卡向其他设备发送数据包,以及接收上述的报文。存储介质332还可用于存储拥塞控制方法涉及到的参数,比如处于慢启动状态的连接中对应一个数据包的第一报文对应的第三值β、处于慢启动状态的连接中对应一个数据包的第二报文对应的第四值θ、处于拥塞避免状态的连接中对应一个数据包的第一报文对应的第三值β、处于拥塞避免状态的连接中对应一个数据包的第二报文对应的第五值α,以及拥塞窗口的值等参数。需理解,图5中描述的网卡可以安装在各种设备上,本申请不限定设备的结构,图5只做示意性说明。
应理解的是,类似于网卡,本申请所描述的方法还可以应用于芯片或者其他装置,这些装置的构成类似网卡,包括存储介质,处理电路和通信接口,且三者之间电连接,以实现本申请上述的方法,本申请不再赘述。
在另一个示例中,上述实施例中的拥塞控制方法可应用于设备30。也就是说,设备中的存储器32相当于用于存储程序的存储介质。处理器31相当于用于执行存储介质中的程序的处理电路,程序被处理器31执行时可实现本申请所记载的拥塞控制方法。设备中的存储器32属于存储介质中的一种,处理器31属于处理电路的一种。而网卡33则可认为是设备30的通信接口一种实现。一种实现方式下,设备30的通信接口还可以包括天线等硬件器件。通信接口主要用于实现本申请实施例中各模块、装置、单元和/或设备之间的通信。也可通过通信接口接入输入设备和/或输出设备。
上述处理器31可以包括中央处理器(CPU),或者特定集成电路(ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。
存储器32可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器32可包括HDD、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器32可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器32可在设备30的内部或外部。在特定实施例中,存储器32是非易失性固态存储器。在特定实施例中,存储器32包括只读存储器(ROM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。
处理器31通过读取存储器32中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于执行上述各个实施例中的发送端的拥塞控制方法。
在一个示例中,设备30还包括总线35其中,如图5所示,处理器31、存储器32、网卡33通过总线34连接并完成相互间的通信。
总线34包括硬件、软件或两者,将设备的部件彼此耦接在一起。举例来说而非限制,总 线34可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线34可包括一个或多个总线。尽管本申请实施例描述和示出了特定的总线,但本申请考虑任何合适的总线或互连。
本申请实施例还提供了一种存储介质,该存储介质上存储有程序。程序被处理电路执行时实现如本申请所记载的拥塞控制方法。存储介质可以包括能够存储或传输信息的任何介质。存储介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。程序、代码段可以经由诸如因特网、内联网等的计算机网络被下载。
图6为本发明实施例中一种拥塞控制装置的结构示意图。如图6所示,拥塞控制装置400包括发送模块401、接收模块402和控制模块403。其中,发送模块401和接收模块402可以通过处理电路执行存储介质中的可执行代码,调用通信接口实现,控制模块403可以通过处理电路执行存储介质中的可执行程序实现,关于处理电路、存储介质和通信接口的具体形态,可以参考图5对应的描述。关于图6所示装置的其他实现细节和有益效果的描述,请参考本申请的记载。
发送模块401,用于通过与接收端之间的连接,在一个拥塞窗口内向接收端发送多个数据包。
其中,多个数据包的数目为第一值。第一值为连接的拥塞窗口的值。其中,连接处于拥塞避免状态。
在一个示例中,发送模块401还用于向连接的接收端发送数目为第二值的多个数据包。
接收模块402,用于接收来自接收端的与多个数据包中的全部数据包或者部分数据包对应的多个报文。
多个报文包括一个或多个第一报文,以及一个或多个第二报文,第一报文用于表示连接在传输多个数据包中的一个或多个数据包时拥塞,第二报文用于表示连接在传输多个数据包中的一个或多个数据包时不拥塞。
在一个示例中,第一报文为拥塞通知报文,第二报文为确认字符。
在另一个示例中,多个报文为反馈报文。每个反馈报文还用于指示多个数据包中一定数目的数据包到达接收端。一定数目为一个或多个。第一报文携带拥塞反馈标识,第二报文不携带拥塞反馈标识。
控制模块403,用于根据多个报文调整拥塞窗口,以将拥塞窗口的值调整到第二值。
其中,多个报文中的第一报文,使拥塞窗口的值减小,多个报文中的第二报文,使拥塞窗口的值增加。
在一个示例中,多个报文中的一个第一报文,使拥塞窗口的值减小第三值,多个报文中的一个第二报文,使拥塞窗口的值增加第四值,第三值与一个第一报文指示的数据包的数目相关,第四值与一个第二报文指示的数据包的数目相关。
在一个示例中,在根据多个报文调整拥塞窗口的方面,控制模块403用于根据多个报文中的一个第一报文,将拥塞窗口的值减小第三值;以及根据多个报文中的一个第二报文,将拥塞窗口的值增加第四值。
在一个示例中,在根据多个报文调整拥塞窗口的方面,控制模块403用于根据第一报文 的数目,每个第一报文使拥塞窗口的值减小的量,第二报文的数目以及每个第二报文使拥塞窗口的值增加的量,计算出第二值,以及将拥塞窗口的值从第一值调整到第二值。
上述第二值为第一值、第一和的相反数与第二和的加和,第一和为多个报文中的每个第一报文对应的第三值相加的和,第二和为多个报文中的每个第二报文对应的第四值相加的和。
在一个示例中,第四值还与第一值和增加系数相关。其中增加系数可以是预设的值。
本说明书的各个部分均采用递进的方式进行描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点介绍的都是与其他实施例不同之处。尤其,对于装置实施例、设备实施例和存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例部分的说明即可。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (18)
- 一种拥塞控制方法,其特征在于,所述拥塞控制方法包括:所述发送端通过与接收端之间的连接,在一个拥塞窗口内向所述接收端发送多个数据包,所述多个数据包的数目为第一值,所述第一值为所述连接的拥塞窗口的值,其中,所述连接处于拥塞避免状态;所述发送端接收来自接收端的与所述多个数据包中的全部数据包或者部分数据包对应的多个报文,所述多个报文包括一个或多个第一报文,以及一个或多个第二报文,所述第一报文用于表示所述连接在传输所述多个数据包中的一个或多个数据包时拥塞,所述第二报文用于表示所述连接在传输所述多个数据包中的一个或多个数据包时不拥塞;所述发送端根据所述多个报文调整所述拥塞窗口,以将所述拥塞窗口的值调整到第二值,其中,所述多个报文中的第一报文,使所述拥塞窗口的值减小,所述多个报文中的第二报文,使所述拥塞窗口的值增加。
- 根据权利要求1所述的方法,其特征在于,所述第一报文为拥塞通知报文CNP,所述第二报文为确认字符ACK。
- 根据权利要求1所述的方法,其特征在于,所述多个报文为反馈报文,每个所述反馈报文还用于指示所述多个数据包中一定数目的数据包到达所述接收端,所述一定数目为一个或多个;所述第一报文携带拥塞反馈标识,所述第二报文不携带拥塞反馈标识。
- 根据权利要求3所述的方法,其特征在于,所述多个报文中的一个第一报文,使所述拥塞窗口的值减小第三值,所述多个报文中的一个第二报文,使所述拥塞窗口的值增加第四值,所述第三值与一个所述第一报文指示的数据包的数目相关,所述第四值与一个所述第二报文指示的数据包的数目相关。
- 根据权利要求3或4所述的方法,其特征在于,所述第二值为所述第一值、第一和的相反数与第二和的加和,所述第一和为所述多个报文中的每个第一报文对应的第三值相加的和,所述第二和为所述多个报文中的每个第二报文对应的第四值相加的和。
- 根据权利要求3所述的方法,其特征在于,所述发送端根据所述多个报文调整所述拥塞窗口,包括:所述发送端根据所述多个报文中的一个所述第一报文,将所述拥塞窗口的值减小所述第三值;以及所述发送端根据所述多个报文中的一个所述第二报文,将所述拥塞窗口的值增加所述第四值。
- 根据权利要求3所述的方法,其特征在于,所述发送端根据所述多个报文调整所述拥塞窗口,包括:所述发送端根据所述第一报文的数目,每个所述第一报文使所述拥塞窗口的值减小的量,所述第二报文的数目以及每个所述第二报文使所述拥塞窗口的值增加的量,计算出所述第二值,所述发送端将所述拥塞窗口的值从所述第一值调整到所述第二值。
- 根据权利要求1至7中任意一项所述的方法,其特征在于,所述方法还包括:所述发送端向所述连接的接收端发送数目为所述第二值的多个数据包。
- 一种拥塞控制装置,其特征在于,包括:发送模块,用于通过与接收端之间的连接,在一个拥塞窗口内向所述接收端发送多个数 据包,所述多个数据包的数目为第一值,所述第一值为所述连接的拥塞窗口的值,其中,所述连接处于拥塞避免状态;接收模块,用于接收来自接收端的与所述多个数据包中的全部数据包或者部分数据包对应的多个报文,所述多个报文包括一个或多个第一报文,以及一个或多个第二报文,所述第一报文用于表示所述连接在传输所述多个数据包中的一个或多个数据包时拥塞,所述第二报文用于表示所述连接在传输所述多个数据包中的一个或多个数据包时不拥塞;控制模块,用于根据所述多个报文调整所述拥塞窗口,以将所述拥塞窗口的值调整到第二值,其中,所述多个报文中的第一报文,使所述拥塞窗口的值减小,所述多个报文中的第二报文,使所述拥塞窗口的值增加。
- 根据权利要求9所述的装置,其特征在于,所述第一报文为拥塞通知报文CNP,所述第二报文为确认字符ACK。
- 根据权利要求9所述的装置,其特征在于,所述多个报文为反馈报文,每个所述反馈报文还用于指示所述多个数据包中一定数目的数据包到达所述接收端,所述一定数目为一个或多个;所述第一报文携带拥塞反馈标识,所述第二报文不携带拥塞反馈标识。
- 根据权利要求11所述的装置,其特征在于,所述多个报文中的一个第一报文,使所述拥塞窗口的值减小第三值,所述多个报文中的一个第二报文,使所述拥塞窗口的值增加第四值,所述第三值与一个所述第一报文指示的数据包的数目相关,所述第四值与一个所述第二报文指示的数据包的数目相关。
- 根据权利要求12所述的装置,其特征在于,所述第二值为所述第一值、第一和的相反数与第二和的加和,所述第一和为所述多个报文中的每个第一报文对应的第三值相加的和,所述第二和为所述多个报文中的每个第二报文对应的第四值相加的和。
- 根据权利要求12所述的装置,其特征在于,在根据所述多个报文调整所述拥塞窗口的方面,所述控制模块用于根据所述多个报文中的一个所述第一报文,将所述拥塞窗口的值减小所述第三值;以及根据所述多个报文中的一个所述第二报文,将所述拥塞窗口的值增加所述第四值。
- 根据权利要求12所述的装置,其特征在于,在根据所述多个报文调整所述拥塞窗口的方面,所述控制模块用于根据所述第一报文的数目,每个所述第一报文使所述拥塞窗口的值减小的量,所述第二报文的数目以及每个所述第二报文使所述拥塞窗口的值增加的量,计算出所述第二值,以及将所述拥塞窗口的值从所述第一值调整到所述第二值。
- 根据权利要求9至15中任意一项所述的装置,其特征在于,所述发送模块还用于向所述连接的接收端发送数目为所述第二值的多个数据包。
- 一种设备,其特征在于,包括存储介质、处理电路和通信接口;所述存储介质用于存储可执行程序;所述处理电路用于读取所述存储介质中存储的可执行程序,以在所述通信接口的配合下,执行权利要求1至8任意一项所述的拥塞控制方法。
- 一种存储介质,其特征在于,所述存储介质上存储有程序;所述程序被处理电路执行时实现如权利要求1至8任意一项所述的拥塞控制方法。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| EP19796402.6A EP3780520A4 (en) | 2018-05-04 | 2019-02-01 | OVERLOAD CONTROL PROCEDURE, DEVICE AND DEVICE AND STORAGE MEDIUM |
| US17/087,931 US11838208B2 (en) | 2018-05-04 | 2020-11-03 | Congestion control method and apparatus, device, and storage medium |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201810421769.9A CN110445722B (zh) | 2018-05-04 | 2018-05-04 | 拥塞控制方法、装置、设备及存储介质 |
| CN201810421769.9 | 2018-05-04 |
Related Child Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US17/087,931 Continuation US11838208B2 (en) | 2018-05-04 | 2020-11-03 | Congestion control method and apparatus, device, and storage medium |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2019210725A1 true WO2019210725A1 (zh) | 2019-11-07 |
Family
ID=68386242
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/CN2019/074385 Ceased WO2019210725A1 (zh) | 2018-05-04 | 2019-02-01 | 拥塞控制方法、装置、设备及存储介质 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US11838208B2 (zh) |
| EP (1) | EP3780520A4 (zh) |
| CN (2) | CN110445722B (zh) |
| WO (1) | WO2019210725A1 (zh) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2021147704A1 (zh) * | 2020-01-23 | 2021-07-29 | 华为技术有限公司 | 拥塞控制方法及装置 |
| WO2022042386A1 (zh) * | 2020-08-26 | 2022-03-03 | 华为技术有限公司 | 一种控制报文发送的方法、网路设备和系统 |
Families Citing this family (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US12273270B2 (en) | 2020-01-28 | 2025-04-08 | Intel Corporation | Congestion management techniques |
| CN113726671B (zh) * | 2020-05-26 | 2023-06-30 | 华为技术有限公司 | 一种网络拥塞控制方法及相关产品 |
| CN111628999B (zh) * | 2020-05-27 | 2022-07-26 | 网络通信与安全紫金山实验室 | 一种基于sdn的fast-cnp数据传输方法及系统 |
| CN114143827B (zh) | 2020-09-03 | 2024-11-29 | 华为技术有限公司 | RoCE网络拥塞控制的方法及相关装置 |
| CN114285803A (zh) * | 2020-09-18 | 2022-04-05 | 华为技术有限公司 | 拥塞控制方法和装置 |
| US12301476B2 (en) | 2020-12-26 | 2025-05-13 | Intel Corporation | Resource consumption control |
| CN113014499B (zh) * | 2021-02-22 | 2022-05-17 | 腾讯科技(深圳)有限公司 | 一种数据传输方法、装置、电子设备及存储介质 |
| CN115086236B (zh) * | 2021-03-11 | 2024-11-08 | 中国电信股份有限公司 | 调整数据转发队列的方法、装置及计算机可读存储介质 |
| US20220311711A1 (en) * | 2021-09-23 | 2022-09-29 | Intel Corporation | Congestion control based on network telemetry |
| CN113949651B (zh) | 2021-11-01 | 2023-04-07 | 北京百度网讯科技有限公司 | 网络传输方法、装置、设备、存储介质 |
| CN115883463B (zh) * | 2022-11-14 | 2026-03-24 | 北京邮电大学 | 基于网络负载的数据中心内拥塞控制方法和系统 |
| CN120263863A (zh) * | 2024-01-04 | 2025-07-04 | 华为技术有限公司 | 一种远程直接内存访问方法及相关装置、系统 |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN103051555A (zh) * | 2013-01-05 | 2013-04-17 | 北京航空航天大学 | 基于网络有效带宽和ecn机制的tcp拥塞控制方法 |
| CN103297346A (zh) * | 2013-06-12 | 2013-09-11 | 北京航空航天大学 | 一种基于ecn机制的tcp友好速率控制方法 |
| US20140126357A1 (en) * | 2012-11-02 | 2014-05-08 | Lockheed Martin Corporation | Ecn-enabled multicast protocol for wireless communication systems under blockage |
| CN103905327A (zh) * | 2012-12-25 | 2014-07-02 | 中国科学院声学研究所 | 一种基于流状态信息的内容中心网络拥塞控制方法及系统 |
Family Cites Families (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20060250949A1 (en) * | 2005-03-30 | 2006-11-09 | At&T Corp. | Loss tolerant transmission control protocol |
| US7760642B2 (en) * | 2007-03-12 | 2010-07-20 | Citrix Systems, Inc. | Systems and methods for providing quality of service precedence in TCP congestion control |
| US9001663B2 (en) * | 2010-02-26 | 2015-04-07 | Microsoft Corporation | Communication transport optimized for data center environment |
| JP2011188429A (ja) * | 2010-03-11 | 2011-09-22 | Kyocera Corp | 無線通信装置 |
| CN101964755B (zh) * | 2010-11-03 | 2012-03-07 | 中南大学 | 高带宽延时网络中基于带宽估计的显式拥塞控制方法 |
| CN101977151B (zh) * | 2010-11-09 | 2012-10-03 | 中南大学 | 一种用于高丢包率广域网环境下的拥塞控制方法 |
| CN102204182B (zh) * | 2010-12-29 | 2013-09-11 | 华为技术有限公司 | 一种数据传输的拥塞控制方法及装置 |
| US9106546B1 (en) * | 2012-07-26 | 2015-08-11 | Google Inc. | Explicit congestion notification in mixed fabric network communications |
| CN103581035B (zh) * | 2012-08-01 | 2016-12-21 | 华为技术有限公司 | 一种多径tcp拥塞控制的方法、装置及系统 |
| CN104796350B (zh) * | 2015-04-29 | 2018-03-09 | 广西大学 | 一种基于连续报文标记的多路径tcp拥塞控制方法 |
| US10237376B2 (en) * | 2015-09-29 | 2019-03-19 | Mellanox Technologies, Ltd. | Hardware-based congestion control for TCP traffic |
| CN107800642A (zh) * | 2016-08-31 | 2018-03-13 | 北京金山云网络技术有限公司 | 一种拥塞控制方法及装置 |
-
2018
- 2018-05-04 CN CN201810421769.9A patent/CN110445722B/zh active Active
- 2018-05-04 CN CN202111306880.1A patent/CN114157603A/zh active Pending
-
2019
- 2019-02-01 WO PCT/CN2019/074385 patent/WO2019210725A1/zh not_active Ceased
- 2019-02-01 EP EP19796402.6A patent/EP3780520A4/en active Pending
-
2020
- 2020-11-03 US US17/087,931 patent/US11838208B2/en active Active
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20140126357A1 (en) * | 2012-11-02 | 2014-05-08 | Lockheed Martin Corporation | Ecn-enabled multicast protocol for wireless communication systems under blockage |
| CN103905327A (zh) * | 2012-12-25 | 2014-07-02 | 中国科学院声学研究所 | 一种基于流状态信息的内容中心网络拥塞控制方法及系统 |
| CN103051555A (zh) * | 2013-01-05 | 2013-04-17 | 北京航空航天大学 | 基于网络有效带宽和ecn机制的tcp拥塞控制方法 |
| CN103297346A (zh) * | 2013-06-12 | 2013-09-11 | 北京航空航天大学 | 一种基于ecn机制的tcp友好速率控制方法 |
Non-Patent Citations (1)
| Title |
|---|
| See also references of EP3780520A4 * |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2021147704A1 (zh) * | 2020-01-23 | 2021-07-29 | 华为技术有限公司 | 拥塞控制方法及装置 |
| US12395431B2 (en) | 2020-01-23 | 2025-08-19 | Huawei Technologies Co., Ltd. | Congestion control method and apparatus |
| WO2022042386A1 (zh) * | 2020-08-26 | 2022-03-03 | 华为技术有限公司 | 一种控制报文发送的方法、网路设备和系统 |
| US12081433B2 (en) | 2020-08-26 | 2024-09-03 | Huawei Technologies Co., Ltd. | Method, network device, and system for controlling packet sending |
Also Published As
| Publication number | Publication date |
|---|---|
| CN114157603A (zh) | 2022-03-08 |
| CN110445722A (zh) | 2019-11-12 |
| US11838208B2 (en) | 2023-12-05 |
| EP3780520A4 (en) | 2021-05-19 |
| US20210051102A1 (en) | 2021-02-18 |
| EP3780520A1 (en) | 2021-02-17 |
| CN110445722B (zh) | 2021-10-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| WO2019210725A1 (zh) | 拥塞控制方法、装置、设备及存储介质 | |
| US10826830B2 (en) | Congestion processing method, host, and system | |
| CN108418767B (zh) | 数据传输方法、设备及计算机存储介质 | |
| CN113726671B (zh) | 一种网络拥塞控制方法及相关产品 | |
| CN110677221B (zh) | 重传控制方法、通信接口和电子设备 | |
| US20060203730A1 (en) | Method and system for reducing end station latency in response to network congestion | |
| WO2020042624A1 (zh) | 传输速率控制方法、装置、发送设备和接收设备 | |
| WO2020063003A1 (zh) | 拥塞控制方法和网络设备 | |
| CN114979011B (zh) | 一种应用于园区网络的拥塞控制方法 | |
| CN109218222B (zh) | 一种实现发送端调速的方法、装置和系统 | |
| US10897725B2 (en) | System and method for managing data transfer between two different data stream protocols | |
| WO2020192397A1 (zh) | 一种发送设备的调整方法和通信装置 | |
| CN101599965A (zh) | 基于测量的自适应高速信息传输协议 | |
| WO2021008562A1 (zh) | 流速控制方法和装置 | |
| WO2017097201A1 (zh) | 一种数据传输方法、发送装置及接收装置 | |
| CN105359472A (zh) | 一种用于OpenFlow网络的数据处理方法和装置 | |
| CN105933242A (zh) | 一种提高数据中心tcp响应速度的方法及系统 | |
| CN115022419B (zh) | 一种自动调整mss的方法、装置和存储介质 | |
| CN114390054A (zh) | 一种核心网网络加速方法、电子设备及计算机存储介质 | |
| WO2024082238A1 (zh) | 通信方法、装置、设备以及存储介质 | |
| CN114285803A (zh) | 拥塞控制方法和装置 | |
| CN112995048A (zh) | 数据中心网络的阻塞控制与调度融合方法及终端设备 | |
| CN100486249C (zh) | 一种调整传输控制协议接收窗口的方法 | |
| CN118282967A (zh) | 网络拥塞控制方法、系统、装置、产品及电子设备 | |
| CN113630337A (zh) | 数据流接纳方法、装置及系统、计算机可读存储介质 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 19796402 Country of ref document: EP Kind code of ref document: A1 |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| ENP | Entry into the national phase |
Ref document number: 2019796402 Country of ref document: EP Effective date: 20201103 |