Multi-path congestion control method and apparatus, chip, network interface card, and device

By dynamically allocating tokens based on path priority and round-trip delay analysis in multipath control, the problems of low resource consumption and low transmission efficiency in traditional multipath control algorithms are solved, and load balancing and network performance improvement are achieved.

WO2025237023A1PCT designated stage Publication Date: 2025-11-20SHENZHEN JAGUAR MICROSYSTEMS CO LTD +1

Patent Information

Application Number
PCT/CN2025/090686
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2024-05-11
Filing Date
2025-04-23
Publication Date
2025-11-20

AI Technical Summary

Technical Problem

Traditional multipath control algorithms consume excessive resources and have low transmission efficiency because each path calculates bandwidth independently, which may lead to packet backlog and affect network performance.

Method used

By analyzing path priority and round-trip delay, the traffic to be balanced is determined, and the number of tokens is allocated to each path to control the transmission of packets on different paths, thereby achieving load balancing and improving transmission efficiency.

Benefits of technology

It reduces the consumption of additional computing resources, avoids message backlog, improves network transmission efficiency and bandwidth utilization, and reduces traffic completion time.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2025090686_20112025_PF_FP_ABST
    Figure CN2025090686_20112025_PF_FP_ABST
Patent Text Reader

Abstract

The present application relates to a multi-path congestion control method and apparatus, a chip, a network interface card, and a computer device. The method comprises: under the condition that a token allocation request is received, on the basis of the priority information of M paths, determining N path combinations to be balanced; for each path combination, analyzing traffic to be balanced of a first path and a second path within the current period on the basis of respective round-trip delay of the first path and the second path within a previous period, and determining the number of tokens of the first path and the number of tokens of the second path on the basis of the traffic to be balanced; and feeding back the number of tokens of each path to hardware to instruct the hardware to transmit a message on the basis of the number of tokens of each path. Use of the present method can transfer traffic on a path having a large congestion degree to a path having a small congestion degree, and balance the messages on multiple paths within a next period, thereby achieving load balancing on different paths, and improving the message transmission efficiency and the bandwidth utilization rate of the whole link.
Need to check novelty before this filing date? Find Prior Art

Description

Multi-path congestion control method, device, chip, network interface card and equipment

[0001] Related applications

[0002] The present application claims priority to the Chinese patent application No. 2024105817173, filed on May 11, 2024, entitled "Multi-path congestion control method, device, chip, network interface card and equipment", the contents of which are hereby incorporated by reference in its entirety. TECHNICAL FIELD

[0003] The present application relates to the technical field of data communication, in particular to a multi-path congestion control method, device, chip, network interface card and computer equipment. BACKGROUND

[0004] Multi-path transmission refers to that, without the need for upper-layer service awareness, a network transmission layer utilizes multiple different physical links to transmit packet data in parallel, so as to achieve the network performance goals of high throughput, low latency and high reliability. However, the bandwidth, latency and congestion of different physical links are different, and when the receiving end receives the data packet of the fast sub-flow, it needs to wait for the data packet of the slow sub-flow, which affects the transmission efficiency, and in the extreme case, the multi-path transmission performance can be lower than that of single-path transmission. Therefore, it is necessary to rely on a multi-path congestion control algorithm to schedule the transmission of data packets on different links, so as to improve the transmission efficiency.

[0005] A traditional multi-path control algorithm, such as the Westwood algorithm, schedules the number of packets to different paths in proportion to the bandwidth of the paths. In the implementation of the algorithm, each path maintains its own independent sending buffer, sending window and congestion window. Each path executes congestion control processes such as slow start, congestion avoidance and fast retransmission according to various congestion signals. The destination generates a SACK (Selective Acknowledgment) packet according to the shared receive buffer of each path. After receiving the SACK packet, each path updates the sending window and calculates the path bandwidth. When there is data to be sent, the scheduler saves the packet in the buffer of the selected path according to the proportion of the path bandwidth, and the subsequent congestion control algorithm of the path determines when to send the packet out.

[0006] The traditional multi-path control algorithm has the following problems: since the bandwidth of each path is calculated independently, additional computing resources are consumed; since the transmission rates of each path are inconsistent, it can cause the backlog of packets allocated to the path but not sent in the path buffer, affecting the packet transmission efficiency. SUMMARY

[0007] According to various embodiments disclosed in the present application, a multi-path congestion control method, device, chip, network interface card and computer device are provided.

[0008] In a first aspect, the present application provides a multi-path congestion control method, comprising:

[0009] In the case of receiving a token allocation request, N path combinations to be balanced are determined based on priority information of M paths; the path combination is composed of two paths with different priorities in the M paths; the N path combinations include non-repeated paths;

[0010] For each path combination, the two paths in the path combination are respectively taken as a first path and a second path, the to-be-balanced traffic of the first path and the second path in the current period is analyzed according to the round-trip delay of the first path and the second path in the previous period, and the number of tokens of the first path and the number of tokens of the second path are determined according to the to-be-balanced traffic.

[0011] The number of tokens of each path is fed back to the hardware to instruct the hardware to transmit the packet based on the number of tokens of each path.

[0012] In a second aspect, the present application further provides a multi-path congestion control device, comprising:

[0013] The combination module is configured to, in the case of receiving a token allocation request, determine N path combinations to be balanced based on priority information of M paths; the path combination is composed of two paths with different priorities in the M paths; the N path combinations include non-repeated paths.

[0014] The determination module is configured to, for each path combination, take the two paths in the path combination as a first path and a second path respectively, analyze the to-be-balanced traffic of the first path and the second path in the current period according to the round-trip delay of the first path and the second path in the previous period, and determine the number of tokens of the first path and the number of tokens of the second path according to the to-be-balanced traffic.

[0015] The control module is configured to feed back the number of tokens of each path to the hardware to instruct the hardware to transmit the packet based on the number of tokens of each path.

[0016] In a third aspect, the present application further provides a chip comprising a memory and a processor, the memory stores computer readable instructions, and the processor implements the following steps when executing the computer readable instructions:

[0017] In the case of receiving a token allocation request, N path combinations to be balanced are determined based on priority information of M paths; the path combination is composed of two paths with different priorities in the M paths; the N path combinations include non-repeated paths.

[0018] For each path combination, taking two paths in the path combination as a first path and a second path respectively, analyzing to-be-equalized traffics of the first path and the second path in a current period according to respective round trip delays of the first path and the second path in a previous period, determining a token quantity of the first path and a token quantity of the second path according to the to-be-equalized traffics;

[0019] The token quantities of the paths are fed back to the hardware to instruct the hardware to transmit the packets based on the token quantities of the paths.

[0020] In a fourth aspect, the present application also provides a network interface card, which comprises the chip and a plurality of interfaces, and the chip communicates with the outside through the interfaces.

[0021] In a fifth aspect, the present application also provides a computer device, which comprises a processor and the network interface card, the network interface card is used to schedule the packets to the processor or to process the packets itself, and the processor is used to process the packets scheduled by the network interface card. BRIEF DESCRIPTION OF DRAWINGS

[0022] In order to more clearly illustrate the technical solutions in the embodiments of the present application or the prior art, the drawings needed to be used in the embodiments or the prior art description will be briefly introduced below. Obviously, the drawings in the following description are only embodiments of the present application, and other drawings can be obtained by those skilled in the art without creative effort on the basis of the disclosed drawings.

[0023] FIG. 1 is a schematic diagram of an architecture of a data center network according to one or more embodiments;

[0024] FIG. 2 is a schematic diagram of a flow of a multi-path congestion control method according to one or more embodiments;

[0025] FIG. 3 is a schematic diagram of a flow of a transmission rate adjustment step according to one or more embodiments;

[0026] FIG. 4 is a schematic diagram of a flow of a priority configuration step according to one or more embodiments;

[0027] FIG. 5 is a schematic diagram of an interaction flow of a multi-path control unit according to one or more embodiments;

[0028] FIG. 6 is a schematic diagram of a working flow of a multi-path control unit according to one or more embodiments;

[0029] FIG. 7 is a structural block diagram of a multi-path congestion control apparatus according to one or more embodiments;

[0030] FIG. 8 is an internal structural diagram of a computer device according to one or more embodiments. DETAILED DESCRIPTION

[0031] In order to make the objectives, technical solutions and advantages of the present application clearer, the present application will be further described in detail below with reference to the accompanying drawings and embodiments. It should be understood that the specific embodiments described herein are only used to explain the present application and should not be used to limit the present application.

[0032] Referring to FIG. 1, FIG. 1 is a schematic diagram of an architecture of a data center network according to an embodiment of the present application. The data center network includes a plurality of switching devices (S1-S6 shown in FIG. 1) and a plurality of host devices (H1-H8 shown in FIG. 1). The host devices can transmit packets through a plurality of transmission paths, for example, as shown in FIG. 1, the host H1 and the host H8 transmit packets through the path 1 and the path 2.

[0033] In an implementation, the multi-path mode relies on an Equal-Cost Multi-Path (ECMP) routing mechanism. When forwarding data, the switching devices in the data center network perform hash processing on a five-tuple (src_ip, src_port, protocol, dst_port, dst_ip) to map different flows to different paths. The src_ip refers to a source Internet Protocol (IP) address, the src_port refers to a source port number, the protocol refers to a protocol type, the dst_port refers to a destination port number, and the dst_ip refers to a destination IP address. In the multi-path mode, different packets of the same flow can be sent to different paths by setting different src_port. Optionally, the maximum number of paths that can be supported by the same flow is a source configurable parameter.

[0034] In an implementation, the types of the switching devices are different according to the architecture of the data center network. Optionally, for a three-layer architecture network, the switching devices in FIG. 1 can be access switches, aggregation switches or core switches. Optionally, for a Leaf-spine architecture network, the switching devices in FIG. 1 can be Leaf switches or Spine switches.

[0035] In an exemplary embodiment, as shown in FIG. 2, a multi-path congestion control method is provided, which is applied to a multi-path control unit, the multi-path control unit acts on the data center network as shown in FIG. 1, and the multi-path control unit can be disposed on a chip or a network interface card (referred to as a network card in the embodiments of the present application). The present embodiment does not limit this. The multi-path congestion control method includes:

[0036] In step 202, in response to receiving the token allocation request, N path combinations to be balanced are determined based on priority information of the M paths; each path combination is composed of two paths with different priorities from the M paths; and the N path combinations include non-repeated paths.

[0037] A token is a virtual information package. The amount of data transmitted through a path can be controlled by allocating tokens to the path. It can be understood that the hardware maintains available tokens corresponding to each path. When a message needs to be transmitted through a path, a certain number of tokens are consumed from the available tokens corresponding to the path, and the number of consumed tokens is consistent with the data amount of the message. A token allocation request is information sent by the hardware to request the multi-path control unit to allocate available tokens to each path. When the available tokens of the M paths are insufficient for transmitting the message, the hardware sends a token allocation request to the multi-path control unit, and applies for available tokens for the M paths based on the token allocation request to perform the message transmission task on the multi-path. M is the number of paths that can be supported by the same flow configured at the source end.

[0038] The priority information refers to the priority processing level set in advance for each path. The higher the priority of a path, the earlier the path is called in the message transmission task.

[0039] In an implementation manner, the priority information of the M paths is set based on the bandwidth of the M paths. The larger the bandwidth of a path, the higher the priority of the path. In an implementation manner, the priority information of the M paths is set based on the congestion degree of the M paths in the previous period. The larger the congestion degree of a path, the lower the priority of the path. Alternatively, the priority information of the M paths is set based on the congestion queue length of the M paths in the previous period. The larger the congestion queue length of a path, the lower the priority of the path. In an implementation manner, the priority information of the M paths is set based on the round-trip delay of the M paths in the previous period. The larger the round-trip delay of a path, the lower the priority of the path. It can be understood that the M paths are divided into N path combinations with non-repeated paths, and the priorities of the two paths in each path combination are different. In an implementation manner, the M paths are randomly combined to obtain the N path combinations. In an implementation manner, the M paths are sorted in priority order to obtain a path set, the first and last elements of the path set are combined, and the first and last elements are repeatedly combined until the number of elements in the path set is less than or equal to 1 to obtain the N path combinations. N is an integer greater than or equal to 1 and less than or equal to M / 2.

[0040] In step 204, for each path combination, two paths in the path combination are respectively taken as a first path and a second path, and based on the round-trip time of the first path and the second path in the previous period, the traffic to be balanced of the first path and the second path in the current period is analyzed, and the number of tokens of the first path and the number of tokens of the second path are determined according to the traffic to be balanced.

[0041] The path combination is composed of the first path and the second path, and based on the respective round-trip time (RTT) of the first path and the second path, the difference in data amount of the congestion queue of the first path and the second path in the previous period is measured, and the traffic to be balanced is determined according to the difference in data amount (the difference in data amount can be taken as the traffic to be balanced, or the difference in data amount can be multiplied by a set proportion to obtain the traffic to be balanced), and the token allocation is performed in the first path and the second path according to the traffic to be balanced, so that the traffic on the path with a large congestion degree can be transferred to the path with a small congestion degree. The previous period refers to the most recent complete period before the current time, and the current period refers to the current period stage. In an implementation manner, the period is an RTT detection period, which refers to a period formed by the multi-path control unit sending an RTT detection packet, receiving an RTT detection response packet, and processing based on the RTT detection response packet.

[0042] The number of tokens refers to the number of available tokens allocated to the path. Alternatively, the number of tokens of the first path (the path with a higher priority in the path combination) is determined according to token_avg+1 / 2×token_diff_once, and the number of tokens of the second path (the path with a lower priority in the path combination) is determined according to token_avg-1 / 2×token_diff_once, where token_diff_once is the traffic to be balanced.

[0043] In step 206, the number of tokens of each path is fed back to the hardware to instruct the hardware to transmit the packet based on the number of tokens of each path.

[0044] The multi-path control unit allocates the number of tokens of the M paths to the hardware to instruct the hardware to set the available tokens of the M paths according to the number of tokens, when a packet needs to be transmitted through a path, a certain number of tokens are consumed from the available tokens corresponding to the path, and when the available tokens of the M paths are insufficient to send a new packet, a token allocation request is sent to the multi-path control unit again to apply for new available tokens.

[0045] In an implementation, there can be other paths (assuming path P) in the M paths other than the paths included in the N path combinations. The token average number token_avg allocated to the M paths in the current period is determined, and the token average number token_avg is taken as the token number of path P. In an implementation, the multi-path control unit feeds back the priority information of the M paths and the token number of each path to the hardware to instruct the hardware to transmit the packet according to the priority information of the M paths and the token number of each path. The priority information is used to constrain the hardware to preferentially use the paths with small RTT and high priority to send the packet, and after the available tokens of the paths with high priority are exhausted, the packet is sent using the paths with lower priority. The token number is used to constrain the number of packets that can be sent by each path. If there are still packets to be sent after the token average of the M paths is consumed, a token allocation request needs to be sent to the multi-path control unit again.

[0046] It can be understood that the multi-path control unit works based on the request-response model, the hardware reports an event request to the multi-path control unit, the multi-path control unit fills in the response after executing the algorithm logic processing, and feeds back to the hardware to realize the multi-path congestion control. Compared with the way of storing the packet in the path buffer after allocating the path in the traditional multi-path control algorithm, the token is set for data transmission in the embodiment, and the packet on the multi-path is balanced in the next period, which can avoid the accumulation of the packet in the path buffer, thereby improving the packet transmission efficiency.

[0047] In the above multi-path congestion control method, the round-trip delay is used as the basis to quantify the congestion size of the multi-path in the previous period, and no additional computing resources are consumed by each path to calculate the bandwidth; the traffic to be balanced between paths with different priorities is analyzed, and the token number is allocated to each path based on the traffic to be balanced, which can transfer the traffic on the path with large congestion degree to the path with small congestion degree, balance the packet on the multi-path in the next period, realize load balancing on different paths, and improve the packet transmission efficiency and the bandwidth utilization of the overall link.

[0048] In an example embodiment, the priority of the first path is greater than the priority of the second path; and the to-be-balanced traffics of the first path and the second path in the current period are analyzed according to the round trip delays of the first path and the second path in the previous period, including: obtaining a delay difference value between the round trip delay of the first path in the previous period and the round trip delay of the second path in the previous period; determining a data amount difference value between the congestion queue of the first path and the congestion queue of the second path based on the delay difference value and the bandwidth of the bottleneck link; determining a contribution proportion of the transmission rate of the second path in the previous period to the congestion queue of the second path according to the total transmission rate in the previous period, the historical token number of the second path, the historical total token number of the M paths, and the bandwidth of the bottleneck link; and determining the to-be-balanced traffics of the first path and the second path in the current period based on the data amount difference value and the contribution proportion.

[0049] The delay difference value rtt_diff = rtt_tail - rtt_head, reflecting the difference between the congestion queues of the first path and the second path, rtt_tail being the round trip delay of the first path in the previous period and rtt_head being the round trip delay of the second path in the previous period.

[0050] The data amount difference value queue_diff = C x rtt_diff between the congestion queue of the first path and the congestion queue of the second path, C being the bandwidth of the bottleneck link. The bandwidth of the bottleneck link refers to the bandwidth corresponding to the link of the congestion bottleneck point, i.e. the highest data rate that can be transmitted by the link of the congestion bottleneck point.

[0051] In an implementation, the contribution proportion of the transmission rate of the second path in the previous period to the congestion queue of the second path can be a fixed proportion set based on experience.

[0052] The historical token quantity of the second path refers to the token quantity allocated by the multi-path control unit for the second path last time, which can be understood as the token quantity allocated by the multi-path control unit for the second path when the multi-path control unit last received a token allocation request. The historical total token quantity of the M paths refers to the total token quantity allocated by the multi-path control unit for the M paths last time, which can be understood as the total token quantity allocated by the multi-path control unit for the M paths when the multi-path control unit last received a token allocation request. The contribution ratio of the transmission rate of the second path in the previous period to the congestion queue formed by the second path is cong_ratio=(total_rate_last×token_tail / token_total_last) / C, where total_rate_last refers to the total transmission rate in the previous period, token_tail refers to the historical token quantity, token_total_last refers to the historical total token quantity of the M paths, and C is the bandwidth of the bottleneck link. (total_rate_last×token_tail / token_total_last) is used to determine the transmission rate of the second path in the previous period. Based on the ratio between the transmission rate of the second path in the previous period and the bandwidth of the bottleneck link, the influence degree of the transmission rate of the second path in the previous period on the formation of the congestion queue, i.e., the contribution ratio, can be estimated. Compared with the fixed ratio set based on experience, the way of determining the contribution ratio based on the related parameters in the previous period in the embodiment is more in line with the actual situation, and the accuracy of the to-be-balanced traffic is improved.

[0053] The to-be-balanced traffic refers to the estimated token difference of the first path and the second path in the current period. The to-be-balanced traffic of the first path and the second path in the current period is token_diff=queue_diff×cong_ratio=total_rate_last×rtt_diff×token_tail / token_total_last. Based on the data quantity difference and the contribution ratio, the traffic of the congestion queue formed by the second path can be balanced to the first path with a smaller congestion degree.

[0054] It can be understood that the implementation of the traditional MPTCP (MultiPath TCP) scheme needs to reserve a large amount of sending buffer and receiving buffer for each path, which is not suitable for use in on-chip resource scarce scenarios such as RDMA (Remote Direct Memory Access). Since each path needs to maintain a congestion control context, when there are many paths in a data center network, the maintenance of these congestion control contexts is difficult. In the embodiment, the same congestion control context (cc_context) is used for multiple paths, which effectively reduces the occupation of the congestion control context to the card cache resources, and further supports the implementation on a large-scale traffic multi-path framework. In an implementation manner, the congestion control context of the embodiment includes the round-trip delay of each path in the previous period, the total transmission rate in the previous period, the historical token quantity of each path, the historical minimum round-trip delay, the historical round-trip delay smoothing value and the like. In the embodiment, the congestion size is reasonably quantified, and the to-be-balanced traffic is determined, the token quantity is allocated to each path based on the to-be-balanced traffic, the traffic on the path with large congestion degree can be transferred to the path with small congestion degree, the messages on the multiple paths in the next period are balanced, the load balancing on different paths is realized, and the message transmission efficiency and the bandwidth utilization of the overall link are improved.

[0055] In an exemplary embodiment, determining the token quantity of the first path and the token quantity of the second path according to the to-be-balanced traffic comprises: determining a total token quantity of a current period according to a total transmission rate of the current period and a token allocation time interval; determining a token average quantity of M paths according to the total token quantity; determining a single-period balanced traffic according to the to-be-balanced traffic, the token allocation time interval and a historical minimum round-trip delay; increasing the token average quantity based on the single-period balanced traffic to obtain the token quantity of the first path; and reducing the token average quantity based on the single-period balanced traffic to obtain the token quantity of the second path.

[0056] The total token quantity of the current period token_total = total_rate × token_interval is determined, where total_rate is the total transmission rate of the current period, and token_interval is the token allocation time interval, which is the time interval from the current time to the last time when the token is issued. It can be understood that the total token quantity, that is, the total available token quantity of the M paths, is the cumulative value of the multi-path rate during two token application periods, which can realize accurate conversion from rate to token.

[0057] The token average quantity token_avg = token_total / M of each path is determined.

[0058] Determine a single-cycle equalization traffic token_diff_once = token_diff x token_interval / rtt_mp_min. The single-cycle equalization traffic refers to the token difference value of a single distribution, token_diff is the traffic to be equalized, and rtt_mp_min is the historical minimum round-trip delay. In this way, the size of the traffic to be balanced between the first path and the second path in each RTT probe cycle can be determined.

[0059] In an implementation, the token average is increased to obtain the token quantity of the first path in the following manner: token_head = token_avg + 1 / 2 x token_diff_once. The token average is decreased to obtain the token quantity of the second path in the following manner: token_tail = token_avg - token_diff_once / 2.

[0060] In an implementation, the token quantity of the first path (the path with higher priority in the path combination) is determined in the following manner: token_head = min(token_avg + token_diff_once / 2, token_avg x 2). The token quantity of the second path (the path with lower priority in the path combination) is determined in the following manner: token_tail = max[token_avg - token_diff_once / 2, 0]. Since the cycle equalization traffic is too large, the token quantity can be negative, causing an error in congestion control. The above manner can avoid such errors.

[0061] In an exemplary embodiment, as shown in FIG. 3, before determining the total token quantity of the current cycle according to the total transmission rate of the current cycle and the token allocation time interval, the method further comprises:

[0062] Step 302: Determine the current congestion state according to the round-trip delay of the target path in the previous cycle; the target path is the path with the highest priority in the M paths.

[0063] The current congestion state is evaluated based on the round-trip delay of the target path in the previous cycle. In an implementation, one or more RTT thresholds are preset, and the round-trip delay of the target path in the previous cycle is compared with the RTT threshold, and the current congestion state is determined according to the comparison result. The RTT threshold can be set according to the historical performance of the network, the expected normal delay, the service demand, etc. For example, if the round-trip delay in the previous cycle is higher than the set warning threshold, it indicates that there is congestion in the current congestion state, and if the round-trip delay in the previous cycle is higher than the set congestion threshold, it indicates that the congestion is serious in the current congestion state.

[0064] It can be understood that, in the M paths, the target path has the highest priority and the best transmission performance. The current congestion state is evaluated based on the round-trip delay of the path with the best transmission performance in the M paths, so that the available bandwidth in the multi-path can be maximally utilized, and the message transmission efficiency is improved.

[0065] In step 304, the total transmission rate of the previous period is adjusted according to the current congestion state to obtain the total transmission rate of the current period.

[0066] There are preset rate adjustment strategies corresponding to different congestion states. In one or more implementations, the corresponding rate adjustment strategy is determined according to the current congestion state, and the rate adjustment strategy is executed to adjust the total transmission rate of the previous period to obtain the total transmission rate of the current period.

[0067] In an implementation, in the case where the current congestion state represents a low congestion level (the round-trip delay of the target path in the previous period is less than a first preset threshold), a rate adjustment strategy of maintaining the rate or reducing the rate is adopted; in the case where the current congestion state represents a high congestion level (the round-trip delay of the target path in the previous period is greater than a second preset threshold, and the second preset threshold is greater than or equal to the first preset threshold), a rate adjustment strategy of increasing the rate is adopted.

[0068] In an implementation, to avoid overreaction, the upper limit of the number of times of adjusting the transmission rate is 1 within each RTT detection period (the length of the RTT detection period can be set as the historical minimum round-trip delay).

[0069] In an implementation, in the current period, the multi-path control unit records the total transmission rate before adjustment and the total transmission rate of the current period by executing the step of adjusting the total transmission rate, and in the case where a token allocation request is received, the recorded parameters are used to allocate the number of tokens to the M paths.

[0070] In this embodiment, the congestion state is determined based on the optimal path, so that a more optimal transmission rate can be determined. Compared with the traditional single-path transmission, this embodiment can improve the network performance and reduce the flow completion time (FCT). Through this embodiment, the congestion state of the network can be monitored in real time, the transmission rate can be dynamically adjusted, and the transmission rate can be accurately converted into the number of tokens allocated to the hardware, which helps to improve the overall network performance and improve the message transmission efficiency.

[0071] In an exemplary embodiment, step 302 comprises: comparing the round-trip delay of the target path in the previous period with the historical minimum round-trip delay to obtain a congestion detection result; comparing the round-trip delay of the target path in the previous period with the historical round-trip delay smoothing value to obtain a congestion trend detection result; and determining the current congestion state according to the congestion detection result and the congestion trend detection result.

[0072] In an implementation, the priority information of the M paths is set based on the round-trip delays of the M paths in the previous period, and the path with a larger round-trip delay has a lower priority. The path with the minimum round-trip delay among the M paths is taken as the target path, and the minimum value of the round-trip delays of the M paths is taken as the multi-path RTT, i.e., rtt_mp = min(rtt_path0, rtt_path1, …, rtt_pathM). The historical minimum round-trip delay is the historical minimum value of rtt_mp, denoted as rtt_mp_min, and is used to represent the best RTT since the multi-path self-probing. The historical round-trip delay smoothing value is the historical smoothing value of rtt_mp, denoted as rtt_mp_his. Optionally, rtt_mp_min is taken as a reference value of the non-congestion RTT, and is used to detect whether congestion exists in the multi-path; and rtt_mp_his is taken as a reference value of the congestion change, and is used to detect the change trend of the multi-path congestion.

[0073] The round-trip delay of the target path in the previous period is compared with rtt_mp_min and rtt_mp_his respectively, and the current congestion state is determined according to the comparison result, which is used to represent whether congestion exists and the change trend of the congestion.

[0074] In an exemplary embodiment, the current congestion state is determined according to the congestion detection result and the congestion trend detection result, comprising: if the round-trip delay of the target path in the previous period is greater than the historical minimum round-trip delay, and the round-trip delay of the target path in the previous period is not less than the historical round-trip delay smoothing value, then the current congestion state is determined as a first state; if the round-trip delay of the target path in the previous period is less than the historical round-trip delay smoothing value, then the current congestion state is determined as a second state; and if the round-trip delay of the target path in the previous period is equal to the historical minimum round-trip delay, and the round-trip delay of the target path in the previous period is equal to the historical round-trip delay smoothing value, then the current congestion state is determined as a third state.

[0075] If the RTT detected by any path is greater than the historical minimum round-trip delay, it is determined that the path has a congestion queue, and the path is a congestion path. If the RTT detected by any path is greater than the historical round-trip delay smoothing value, it is indicated that the congestion tends to increase. If the RTT detected by any path is equal to the historical round-trip delay smoothing value, it is indicated that the congestion tends to remain stable. If the RTT detected by any path is less than the historical round-trip delay smoothing value, it is indicated that the congestion tends to decrease. The first state is used to represent that the congestion exists, the congestion tends to increase or remains stable. The second state is used to represent that the congestion tends to decrease. The third state is used to represent that the congestion remains stable and the congestion is equal to the historical minimum.

[0076] Referring to Table 1, Table 1 shows a congestion state detection result, and "X" in Table 1 indicates that the situation does not exist.

[0077] Table 1:

[0078] If rtt mp > rtt mp min and rtt mp > rtt mp his, it is indicated that the congestion exists and the congestion tends to increase, and the current congestion state is determined to be the first state. If rtt mp > rtt mp min and rtt mp = rtt mp his, it is indicated that the congestion exists and the congestion remains stable, and the current congestion state is determined to be the first state. If rtt mp > rtt mp min and rtt mp < rtt mp his, it is indicated that the congestion exists and the congestion tends to decrease, and the current congestion state is determined to be the second state. If rtt mp = rtt mp min and rtt mp = rtt mp his, it is indicated that the congestion may exist, the congestion remains stable, and the congestion is equal to the historical minimum, and the current congestion state is determined to be the third state. If rtt mp = rtt mp min and rtt mp < rtt mp his, it is indicated that the congestion may exist, the congestion tends to decrease, and the congestion is equal to the historical minimum, and the current congestion state is determined to be the second state. If rtt mp < rtt mp min and rtt mp < rtt mp his, it is indicated that the congestion may exist, the congestion tends to decrease, and the congestion is equal to the historical minimum, and the current congestion state is determined to be the second state.

[0079] In an exemplary embodiment, step 304 comprises: in the case that the current congestion state is the first state, performing a speed reduction adjustment on the total transmission rate of the previous period to obtain the total transmission rate of the current period; in the case that the current congestion state is the second state, taking the total transmission rate of the previous period as the total transmission rate of the current period; and in the case that the current congestion state is the third state, performing a speed increase adjustment on the total transmission rate of the previous period to obtain the total transmission rate of the current period.

[0080] When the congestion of the optimal path exists, tends to increase or remains stable, the speed reduction adjustment is performed; when the congestion of the optimal path tends to decrease, the total transmission rate remains unchanged; when the congestion of the optimal path remains stable and the congestion is equal to the historical minimum, the speed increase adjustment is performed.

[0081] Referring to Table 2, Table 2 shows a rate adjustment mode. The rate adjustment formula follows the mechanism of AIMD (additive increase, multiplicative decrease), which can be replaced by other speed-up and speed-down adjustment formulas in one or more implementations, and the embodiment is not limited in this regard.

[0082] Table 2:

[0083] It can be understood that beta in Table 2 is a pre-set adjustment ratio, and ai_rate is a pre-set adjustment parameter value, which can be set according to actual needs.

[0084] In an exemplary embodiment, based on the priority information of the M paths, N path combinations to be balanced are determined, including: based on the priority information of the M paths, the M paths are sorted in priority order to obtain a path set; the i th path and the M-i+1 th path in the path set form a path combination to be balanced; i is an integer greater than or equal to 1 and less than or equal to M.

[0085] The priority order can be from high to low, or from low to high, and the embodiment is not limited in this regard. The i th path and the M-i+1 th path in the path set form a path combination to be balanced, for example, the first path and the last path form a path combination, and the second path and the M-1 th path form a path combination. In this way, the traffic between the path with the highest priority and the path with the lowest priority is balanced, which can further improve the load balancing efficiency.

[0086] In an implementation, the first and last elements in the path set form a path combination to be balanced, and step 204 is performed on the path combination to determine the number of tokens corresponding to the two paths in the path combination. The first and last elements used are removed from the path set to obtain a target path set, and the first and last elements in the target path set form a path combination to be balanced, and step 204 is continued to be executed. In this way, the number of elements in the path set is less than or equal to 1.

[0087] In an exemplary embodiment, as shown in FIG. 4, before determining N path combinations to be balanced based on the priority information of the M paths, the method further includes:

[0088] At step 402, the hardware uploads a probe response message, wherein the probe response message includes M pieces of path round-trip delays in the previous period.

[0089] The multi-path control unit sends a probe instruction in the previous period, and the hardware probes the round-trip delays of the M paths in the previous period based on the probe instruction. After the probing is completed, the hardware uploads a probe response message to the multi-path control unit.

[0090] At step 404, the M paths are prioritized according to the round-trip delays of the M paths in the previous period, and priority information of the M paths is obtained.

[0091] Since the paths used in the multi-path mode in the data center network are equivalent paths, i.e., the delays are the same, the congestion of each path can be analyzed by analyzing the round-trip delay of the target path in the previous period. The round-trip delay is probed by the hardware, and the path priority is set based on the round-trip delay. The larger the round-trip delay, the greater the congestion degree and the poorer the transmission performance, and the lower the priority. The smaller the round-trip delay, the smaller the congestion degree and the better the transmission performance, and the higher the priority.

[0092] It can be understood that in each period, the multi-path control unit sends a probe instruction to the hardware, the hardware performs the probing task and uploads a probe response message, the multi-path control unit determines the priority information according to the response, and feeds back the priority information to the hardware to instruct the hardware to select paths based on the priority information of the M paths to transmit the message, and preferentially use the paths with small round-trip delays and high priorities to transmit the message.

[0093] In an implementation mode, before step 202, the multi-path control unit performs steps 302 and 304. Before step 302, the multi-path control unit performs steps 402 and 404. That is, the multi-path control unit sets the path priority according to the probe response message, and then adjusts the transmission rate based on the round-trip delay, and allocates the token quantity to each path according to the priority information, the round-trip delay, and the transmission rate before and after the adjustment. The multi-path control unit can also perform the above steps simultaneously or in other orders, which is not limited in the embodiment.

[0094] In an exemplary embodiment, after the token quantity of the first path and the token quantity of the second path are determined according to the to-be-balanced traffic, the method further comprises: feeding back the priority information of the M paths, the token quantity of each path, and the probe instruction of the current period to the hardware to instruct the hardware to transmit the message based on the priority information of each path and the token quantity of each path, and to probe the round-trip delays of the M paths in the current period based on the probe instruction.

[0095] The multi-path control unit feeds back the priority information of the M paths and the token quantity of each path to the hardware to instruct the hardware to transmit the packet according to the priority information of the M paths and the token quantity of each path. The priority information is used to restrict the hardware to preferentially use the path with a small RTT and a high priority to transmit the packet, and after the available token of the path with a high priority is exhausted, the path with a lower priority is used to transmit the packet. The token quantity is used to restrict the quantity of packets that can be transmitted by each path. If there are still packets to be transmitted after the tokens of the M paths are exhausted, a token allocation request needs to be sent to the multi-path control unit again. The multi-path control unit also feeds back the probe indication of the current period to the hardware, and informs the hardware to perform a new RTT probe task through the probe indication. It can be understood that after the hardware completes the probe, the probe response packet of the current period is uploaded to the multi-path control unit, and a new round of multi-path congestion control is performed by the multi-path control unit based on the information carried in the probe response packet. In this way, dynamic control of the multi-path is realized, which can reduce the data transmission delay and improve the overall performance of the network.

[0096] In an implementation manner, in the probe starting stage, since the RTT of the M paths is not probed, a path is randomly selected to transmit the packet, all tokens are issued to the path, and the RTT of the M paths is probed, token = init_rate x token_interval, init_rate is an initial total transmission rate, and token_interval is a token allocation time interval. Both init_rate and token_interval can be set values. In the probe starting stage, only one path is used to transmit the packet, which can avoid uncontrollable packet disordering caused by the difference in path congestion degree.

[0097] The traditional MPTCP scheme is implemented based on a window, cannot perceive the round-trip delay of the packet in each path, cannot confirm the path priority, and can cause the packet in a slow path to be preferentially arrived, thereby causing disordered packets. Generally, a suitable disorder receiver mechanism needs to be configured to solve the non-packet loss disorder problem caused by the multi-path transmission of the same flow. In the embodiment, the path priority is set based on the round-trip delay, the hardware is restricted to preferentially use the path with a small RTT and a high priority to transmit the packet, and the quantity of disordered packets can be effectively reduced, so that the multi-path framework can be used in cooperation with a receiver end with a relatively simple disorder receiver mechanism.

[0098] In the embodiment, the priority of the path is set based on the round-trip delay, and the token quantity of each path is allocated based on the traffic to be balanced, so that the packet transmission efficiency is improved and the quantity of disordered packets is reduced.

[0099] In an exemplary embodiment, referring to FIG. 5, which illustrates an interaction flow of a multi-path control unit. The multi-path control unit communicates with hardware through a software and hardware interface, and the hardware includes a packet scheduling module, a packet sending module, and a packet receiving module. The hardware can be a hardware logic circuit or an integrated circuit.

[0100] The multi-path control unit uses RTT as a congestion detection signal. After the packet receiving module of the hardware receives an RTT probe response packet on a certain path of a flow, it reports an event request to the multi-path control unit. The multi-path control unit performs congestion analysis based on the RTT of the multi-path (the multi-path shown in FIG. 5 is path 1 and path 2) and adjusts the transmission rate of the multi-path. The multi-path control unit can indicate initiation of a new RTT probe in the event response sent to the hardware.

[0101] Before sending a packet, the packet sending module of the hardware detects that the number of tokens of the multi-path is insufficient, and applies for available tokens to the multi-path control unit.

[0102] The multi-path control unit responds to the token request event, calculates the corresponding tokens in combination with the round-trip time, transmission rate, and other influencing parameters of the multi-path, and issues the tokens. Optionally, the tokens are issued while updating the path priority in the event response and indicating initiation of a new RTT probe.

[0103] After receiving the event response, the packet scheduling module of the hardware instructs the packet sending module to send packets in the multi-path according to the priority and the number of tokens. Referring to FIG. 5, for the to-be-sent packets of flow 1, path 1 and path 2 are used for sending, the priority of path 1 is priority_path1=0, the number of tokens of path 1 is token_path1=6, the priority of path 2 is priority_path2=1, and the number of tokens of path 2 is token_path2=4. The priority of path 1 is higher than that of path 2, and path 1 is used to send packets first. After the available tokens are exhausted, path 2 is used to send packets.

[0104] If the tokens of the multi-path are all consumed, and there are still to-be-sent packets, the packet sending module needs to send a token allocation request to the multi-path control unit again.

[0105] In an exemplary embodiment, referring to FIG. 6, which illustrates a working flow of a multi-path control unit. The multi-path control unit works based on a request-response model. The hardware reports an event request to the multi-path control unit, the multi-path control unit fills in a response after executing algorithm logic processing, and feeds back the event response to the hardware, thereby realizing multi-path congestion control.

[0106] The multi-path control unit is used to execute a multi-path algorithm (MP-CC, Multi-Path Congestion Control). The event responses of the multi-path control unit mainly include path priority, available tokens, and RTT probe indication. The path priority restricts the hardware to preferentially use a path with a small RTT and a high priority to send a packet. When the available tokens of the path with a high priority are exhausted, the hardware uses a path with a lower priority to send a packet. The available tokens restrict the number of packets that can be sent by each path. The RTT probe indication indicates that the hardware currently needs to perform a new RTT probe task (i.e., send an RTT probe packet). Assuming that the network card hardware register configuration has enabled the multi-path mode, the execution stage of the multi-path control unit can be divided into the following three stages: a probe start stage, a congestion analysis stage, and a token distribution stage.

[0107] In the probe start stage, the multi-path control unit receives a first event request, and the event is a NEW_FLOW_EVENT event (new flow event). The NEW_FLOW_EVENT event includes the number of currently enabled paths (M paths) of the multi-path. The multi-path control unit needs to perform algorithm context parameter initialization, first priority determination, and token issuance. Since the RTT of the M paths has not been probed, a path can be randomly selected to send a packet, all tokens token are issued for the path, and RTT probes are performed on the M paths. token = init_rate × token_interval, init_rate is an initial total transmission rate, and token_interval is a token distribution time interval. After the first RTT information is probed, the multi-path control unit enters the congestion analysis stage.

[0108] In the congestion analysis stage, the multi-path control unit receives an RTT_TX_EVENT event (RTT probe sending event) and an RTT_RX_EVENT event (RTT probe receiving event). In response to the RTT_TX_EVENT event, the multi-path control unit records the path_tx_timestamp of each path, which marks the sending time of the RTT probe packet, and is used for subsequent determination of the round-trip time. In response to the RTT_RX_EVENT event, the multi-path control unit obtains the number of paths and the path ID, takes the path with the minimum RTT in the M paths as the target path, takes the minimum value of the RTT in the M paths as the multi-path RTT, i.e., rtt_mp = min(rtt_path0, rtt_path1, …, rtt_pathM). The rtt_mp is compared with a historical minimum round-trip time rtt_mp_min and a historical round-trip time smoothing value rtt_mp_his, respectively. According to the comparison result, the current congestion state is determined, and the multi-path total transmission rate is adjusted according to the current congestion state. Optionally, a new RTT probe indication is initiated to probe the RTT of the specified path.

[0109] In the token distribution phase, the multi-path control unit receives a TOKEN_REQ_EVENT event (token request event), the hardware sends a token allocation request to the multi-path control unit when the available tokens of the M paths are insufficient to send the packet, and applies for available tokens for the M paths based on the token allocation request to perform the packet sending task on the multi-path. The multi-path control unit allocates the number of tokens for each path based on steps 202 to 206. Optionally, a new RTT probe instruction is indicated to probe the RTT of the specified path.

[0110] It should be understood that, although each step in the flowchart involved in each embodiment as described above is displayed in sequence according to the arrow, these steps are not necessarily executed in the order indicated by the arrow. Unless otherwise specified herein, the execution of these steps is not strictly limited in sequence, and these steps can be executed in other orders. Moreover, at least part of the steps in the flowchart involved in each embodiment as described above can include multiple steps or stages, which are not necessarily executed at the same time, but can be executed at different times, and the execution order of these steps or stages is not necessarily sequential, but can be alternately executed with at least part of other steps or steps or stages in other steps.

[0111] Based on the same inventive concept, the embodiments of the present application also provide a multi-path congestion control device for implementing the above-mentioned multi-path congestion control method. The implementation scheme of the device for solving the problem is similar to the implementation scheme described in the above method, so the specific limitations in one or more multi-path congestion control device embodiments provided below can refer to the limitations of the multi-path congestion control method in the above text, which will not be repeated here.

[0112] In an exemplary embodiment, as shown in FIG. 7, a multi-path congestion control device is provided, comprising:

[0113] The combination module 702 is configured to, in the case of receiving a token allocation request, determine N path combinations to be balanced based on the priority information of the M paths; the path combination is composed of two paths with different priorities in the M paths; and the N path combinations include non-repeated paths.

[0114] The determination module 704 is configured to, for each path combination, take the two paths in the path combination as a first path and a second path respectively, analyze the to-be-balanced traffic of the first path and the second path in the current period according to the respective round-trip delays of the first path and the second path in the previous period, and determine the number of tokens of the first path and the number of tokens of the second path according to the to-be-balanced traffic.

[0115] The control module 706 is configured to feed back the token quantity of each path to the hardware to instruct the hardware to transmit the packet based on the token quantity of each path.

[0116] In the multi-path congestion control device, the return delay is used to quantify the congestion size of the multi-path in the previous period, and no additional computing resources are consumed for each path to calculate the bandwidth. The token quantity is allocated to each path based on the to-be-balanced traffic between the paths with different priorities, the traffic on the path with large congestion degree is transferred to the path with small congestion degree, the packets in the multi-path in the next period are balanced, the load balancing on different paths is achieved, and the packet transmission efficiency and the bandwidth utilization of the overall link are improved.

[0117] In an example embodiment, the priority of the first path is greater than the priority of the second path; the determination module 704 is further configured to obtain a delay difference value between the return delay of the first path in the previous period and the return delay of the second path in the previous period; determine a data quantity difference value between the congestion queue of the first path and the congestion queue of the second path based on the delay difference value and the bandwidth of the bottleneck link; determine a contribution proportion of the transmission rate of the second path in the previous period to the formation of the congestion queue of the second path according to the total transmission rate in the previous period, the historical token quantity of the second path, the historical total token quantity of the M paths, and the bandwidth of the bottleneck link; and determine the to-be-balanced traffic of the first path and the second path in the current period based on the data quantity difference value and the contribution proportion.

[0118] In an example embodiment, the determination module 704 is further configured to determine a total token quantity in the current period according to the total transmission rate in the current period and the time interval of token allocation; determine a token average quantity of the M paths according to the total token quantity; determine a single-period balanced traffic according to the to-be-balanced traffic, the time interval of token allocation, and the historical minimum return delay; increase the token average quantity based on the single-period balanced traffic to obtain the token quantity of the first path; and decrease the token average quantity based on the single-period balanced traffic to obtain the token quantity of the second path.

[0119] In an example embodiment, the multi-path congestion control device further comprises a rate adjustment module.

[0120] The rate adjustment module is configured to determine a current congestion state according to the return delay of the target path in the previous period; the target path is the path with the highest priority among the M paths; and adjust the total transmission rate in the previous period according to the current congestion state to obtain the total transmission rate in the current period.

[0121] In an example embodiment, the rate adjustment module is further configured to compare the round-trip delay of the target path in the previous period with the historical minimum round-trip delay to obtain a congestion detection result; compare the round-trip delay of the target path in the previous period with the historical round-trip delay smoothing value to obtain a congestion trend detection result; and determine the current congestion state according to the congestion detection result and the congestion trend detection result.

[0122] In an example embodiment, the rate adjustment module is further configured to determine that the current congestion state is a first state if the round-trip delay of the target path in the previous period is greater than the historical minimum round-trip delay and the round-trip delay of the target path in the previous period is not less than the historical round-trip delay smoothing value; determine that the current congestion state is a second state if the round-trip delay of the target path in the previous period is less than the historical round-trip delay smoothing value; and determine that the current congestion state is a third state if the round-trip delay of the target path in the previous period is equal to the historical minimum round-trip delay and the round-trip delay of the target path in the previous period is equal to the historical round-trip delay smoothing value.

[0123] In an example embodiment, the rate adjustment module is further configured to, if the current congestion state is the first state, perform a speed reduction adjustment on the total transmission rate in the previous period to obtain the total transmission rate in the current period; if the current congestion state is the second state, use the total transmission rate in the previous period as the total transmission rate in the current period; and if the current congestion state is the third state, perform a speed increase adjustment on the total transmission rate in the previous period to obtain the total transmission rate in the current period.

[0124] In an example embodiment, the combination module 702 is further configured to sort the M paths according to priority order based on the priority information of the M paths to obtain a path set; and combine an i th path and an M-i+1 th path in the path set to obtain a path combination to be balanced; i is an integer greater than or equal to 1 and less than or equal to M.

[0125] In an example embodiment, the multi-path congestion control device further comprises a priority determination module.

[0126] The priority determination module is configured to receive a probe response packet uploaded by hardware, the probe response packet comprising round-trip delays of the M paths in the previous period respectively; and perform priority sorting on the M paths according to the round-trip delays of the M paths in the previous period respectively to obtain priority information of the M paths.

[0127] In an example embodiment, the control module 706 is further configured to feed back, to the hardware, the priority information of the M paths, the token quantity of each path, and the probe indication of the current period, to instruct the hardware to transmit the packet based on the priority information of each path and the token quantity of each path, and to probe the round trip delay of the M paths in the current period based on the probe indication.

[0128] Each module in the multi-path congestion control apparatus can be implemented by software, hardware, or a combination thereof, in whole or in part. Each module can be embedded in or independent of a processor in a computer device in hardware form, or stored in a memory in a computer device in software form, so as to be invoked and executed by a processor to perform the operations corresponding to each module.

[0129] In an example embodiment, a computer device, which can be a server, is provided, and an internal structure diagram of the computer device can be as shown in FIG. 8. The computer device includes a processor, a memory, an input / output interface (I / O), and a communication interface. The processor, the memory, and the input / output interface are connected through a system bus, and the communication interface is connected to the system bus through the input / output interface. The processor of the computer device is configured to provide computing and control capabilities. The memory of the computer device includes a non-volatile storage medium and an internal memory. The non-volatile storage medium stores an operating system and computer readable instructions. The internal memory provides an environment for running the operating system and the computer readable instructions in the non-volatile storage medium. The input / output interface of the computer device is configured to exchange information between the processor and external devices. The communication interface of the computer device is configured to communicate with external terminals through a network connection. The computer readable instructions are executed by the processor to implement a multi-path congestion control method.

[0130] Those skilled in the art can understand that the structure shown in FIG. 8 is only a block diagram of part of the structure related to the scheme of the present application, and does not constitute a limitation on the computer device to which the scheme of the present application is applied. Specifically, the computer device can include more or fewer components than those shown in the figure, or combine certain components, or have a different arrangement of components.

[0131] In one example embodiment, a chip is provided, comprising a memory and a processor, the memory storing computer readable instructions, the processor implementing the following steps when executing the computer readable instructions: in a case where a token allocation request is received, determining N path combinations to be balanced based on priority information of M paths; a path combination is composed of two paths with different priorities in the M paths; the N path combinations include paths without repetition; for each path combination, taking the two paths in the path combination as a first path and a second path respectively, analyzing to-be-balanced traffics of the first path and the second path in a current period according to round trip delays of the first path and the second path in a previous period, and determining a token quantity of the first path and a token quantity of the second path according to the to-be-balanced traffics; and feeding back the token quantities of the paths to hardware to instruct the hardware to transmit packets based on the token quantities of the paths.

[0132] In one embodiment, the processor further implements the following steps when executing the computer readable instructions: obtaining a delay difference value between the round trip delay of the first path in the previous period and the round trip delay of the second path in the previous period; determining a data quantity difference value between a congestion queue of the first path and a congestion queue of the second path based on the delay difference value and a bandwidth of a bottleneck link; determining a contribution proportion of a transmission rate of the second path in the previous period to the congestion queue of the second path according to a total transmission rate in the previous period, a historical token quantity of the second path, a historical total token quantity of the M paths, and the bandwidth of the bottleneck link; and determining to-be-balanced traffics of the first path and the second path in the current period based on the data quantity difference value and the contribution proportion.

[0133] In one embodiment, the processor further implements the following steps when executing the computer readable instructions: determining a total token quantity in the current period according to a total transmission rate in the current period and a time interval of token allocation; determining a token average quantity of the M paths according to the total token quantity; determining a single-period balanced traffic according to the to-be-balanced traffics, the time interval of token allocation, and a historical minimum round trip delay; increasing the token average quantity based on the single-period balanced traffic to obtain the token quantity of the first path; and decreasing the token average quantity based on the single-period balanced traffic to obtain the token quantity of the second path.

[0134] In one embodiment, the processor further implements the following steps when executing the computer readable instructions: determining a current congestion state according to a round trip delay of a target path in a previous period; the target path being a path with the highest priority in the M paths; and adjusting a total transmission rate in the previous period according to the current congestion state to obtain a total transmission rate in the current period.

[0135] In one embodiment, the processor, when executing the computer-readable instructions, further implements the following steps: comparing the round-trip delay of the target path in the previous period with the historical minimum round-trip delay to obtain a congestion detection result; comparing the round-trip delay of the target path in the previous period with the historical round-trip delay smoothing value to obtain a congestion trend detection result; and determining the current congestion state according to the congestion detection result and the congestion trend detection result.

[0136] In one embodiment, the processor, when executing the computer-readable instructions, further implements the following steps: if the round-trip delay of the target path in the previous period is greater than the historical minimum round-trip delay and the round-trip delay of the target path in the previous period is not less than the historical round-trip delay smoothing value, determining that the current congestion state is a first state; if the round-trip delay of the target path in the previous period is less than the historical round-trip delay smoothing value, determining that the current congestion state is a second state; and if the round-trip delay of the target path in the previous period is equal to the historical minimum round-trip delay and the round-trip delay of the target path in the previous period is equal to the historical round-trip delay smoothing value, determining that the current congestion state is a third state.

[0137] In one embodiment, the processor, when executing the computer-readable instructions, further implements the following steps: in the case that the current congestion state is the first state, performing a speed reduction adjustment on the total transmission rate in the previous period to obtain the total transmission rate in the current period; in the case that the current congestion state is the second state, taking the total transmission rate in the previous period as the total transmission rate in the current period; and in the case that the current congestion state is the third state, performing a speed increase adjustment on the total transmission rate in the previous period to obtain the total transmission rate in the current period.

[0138] In one embodiment, the processor, when executing the computer-readable instructions, further implements the following steps: based on the priority information of the M paths, sorting the M paths in a priority order to obtain a path set; and constructing a path combination to be balanced by the i th path and the M-i+1 th path in the path set; i is an integer greater than or equal to 1 and less than or equal to M.

[0139] In one embodiment, the processor, when executing the computer-readable instructions, further implements the following steps: receiving a probe response message uploaded by the hardware, the probe response message including the round-trip delay of each of the M paths in the previous period; and according to the round-trip delay of each of the M paths in the previous period, performing a priority sorting on the M paths to obtain the priority information of the M paths.

[0140] In one embodiment, the processor, when executing the computer-readable instructions, further implements the following steps: feeding back, to the hardware, the priority information of the M paths, the token quantity of each path, and a probe indication of the current period, to instruct the hardware to perform transmission on the messages based on the priority information of each path and the token quantity of each path, and to perform a probe on the round-trip delay of the M paths in the current period based on the probe indication.

[0141] In one embodiment, a network interface card is provided, which comprises a chip as in any of the above embodiments and a plurality of interfaces through which the chip communicates externally.

[0142] In one embodiment, a computer device is provided, which comprises a processor and a network interface card as above for dispatching packets to the processor or the network interface card itself for processing, and the processor is configured to process the packets dispatched by the network interface card.

[0143] Those skilled in the art can understand that all or part of the processes in the above-mentioned embodiment methods can be completed by instructing relevant hardware through computer readable instructions, and the computer readable instructions can be stored in a non-volatile computer readable storage medium. When the computer readable instructions are executed, the processes of the above-mentioned embodiments of each method can be included. Any reference to memory, database or other medium used in each embodiment provided by the present application can include at least one of non-volatile memory and volatile memory. The non-volatile memory can include read-only memory (Read-Only Memory, ROM), magnetic tape, floppy disk, flash memory, optical storage, high-density embedded non-volatile memory, resistive random access memory (Resistive Random Access Memory, ReRAM), magnetoresistive random access memory (Magnetoresistive Random Access Memory, MRAM), ferroelectric memory (Ferroelectric Random Access Memory, FRAM), phase change memory (Phase Change Memory, PCM), graphene memory, etc. The volatile memory can include random access memory (Random Access Memory, RAM) or external cache memory, etc. As an illustration but not limitation, the RAM can be in various forms, such as static random access memory (Static Random Access Memory, SRAM) or dynamic random access memory (Dynamic Random Access Memory, DRAM), etc. The database involved in each embodiment provided by the present application can include at least one of a relational database and a non-relational database. The non-relational database can include a distributed database based on a block chain, etc., without limitation. The processor involved in each embodiment provided by the present application can be a general-purpose processor, a central processing unit, a graphics processing unit, a digital signal processor, a programmable logic device, a data processing logic device based on quantum computing, an artificial intelligence (Artificial Intelligence, AI) processor, etc., without limitation.

[0144] Any technical features in the above embodiments can be combined, and for the sake of brevity, not all possible combinations are described, however, any combination of the technical features is considered to be within the scope of the present application. The above embodiments only express several implementation manners of the present application, and the description is more specific and detailed, but it should not be understood as a limitation on the patent scope of the present application. It should be pointed out that, for those skilled in the art, without departing from the concept of the present application, some modifications and improvements can be made, which are all within the protection scope of the present application. Therefore, the protection scope of the present application should be subject to the appended claims.

Claims

A method of multi-path congestion control, wherein, The method comprises: In the case of receiving a token allocation request, determining N path combinations to be balanced based on priority information of M paths; the path combination is composed of two paths with different priorities in the M paths; the N path combinations include non-repeated paths; For each path combination, taking the two paths in the path combination as a first path and a second path respectively, analyzing the to-be-balanced traffic of the first path and the second path in the current period according to the round-trip delay of the first path and the second path in the previous period, and determining the number of tokens of the first path and the number of tokens of the second path according to the to-be-balanced traffic; The token number of each path is fed back to the hardware to instruct the hardware to transmit the message based on the token number of each path. The method of claim 1, wherein The priority of the first path is greater than the priority of the second path; The to-be-balanced traffic of the first path and the second path in the current period is analyzed according to the round-trip delay of the first path and the second path in the previous period, comprising: Obtaining a time delay difference value between the round-trip delay of the first path in the previous period and the round-trip delay of the second path in the previous period; Based on the time delay difference value and the bandwidth of the bottleneck link, determining a data amount difference value between the congestion queue of the first path and the congestion queue of the second path; According to the total transmission rate of the previous period, the historical token number of the second path, the historical total token number of the M paths, and the bandwidth of the bottleneck link, determining the contribution proportion of the transmission rate of the second path in the previous period to the formation of the congestion queue of the second path; Based on the data amount difference value and the contribution proportion, the to-be-balanced traffic of the first path and the second path in the current period is determined. The method of claim 2, wherein, The number of tokens of the first path and the number of tokens of the second path are determined according to the to-be-balanced traffic, comprising: According to the total transmission rate of the current period and the time interval of token allocation, the total number of tokens in the current period is determined; According to the total number of tokens, the token average number of the M paths is determined; According to the to-be-balanced traffic, the time interval of token allocation, and the historical minimum round-trip delay, the single-period balanced traffic is determined; Based on the single-period balanced traffic, the token average number is increased to obtain the token number of the first path; Based on the single-period balanced traffic, the token average number is reduced to obtain the token number of the second path. The method of claim 3, wherein, Before determining the total number of tokens in the current period according to the total transmission rate of the current period and the time interval of token allocation, the method further comprises: determining the current congestion state according to the round-trip delay of the target path in the previous period; the target path is the path with the highest priority in the M paths; adjusting the total transmission rate of the previous period according to the current congestion state to obtain the total transmission rate of the current period. The method of claim 4, wherein, The current congestion state is determined according to the round-trip delay of the target path in the previous period, comprising: comparing the round-trip delay of the target path in the previous period with the historical minimum round-trip delay to obtain a congestion detection result; The target path round trip delay in the previous period is compared with the historical round trip delay smooth value to obtain a congestion trend detection result; According to the congestion detection result and the congestion trend detection result, a current congestion state is determined. The method of claim 5, wherein, The determination of the current congestion state according to the congestion detection result and the congestion trend detection result comprises: If the target path round trip delay in the previous period is greater than the historical minimum round trip delay, and the target path round trip delay in the previous period is not less than the historical round trip delay smooth value, the current congestion state is determined as a first state; If the target path round trip delay in the previous period is less than the historical round trip delay smooth value, the current congestion state is determined as a second state; If the target path round trip delay in the previous period is equal to the historical minimum round trip delay, and the target path round trip delay in the previous period is equal to the historical round trip delay smooth value, the current congestion state is determined as a third state. The method of claim 6, wherein, The adjustment of the total transmission rate in the previous period according to the current congestion state to obtain the total transmission rate in the current period comprises: In the case that the current congestion state is the first state, the total transmission rate in the previous period is adjusted at a reduced speed to obtain the total transmission rate in the current period; In the case that the current congestion state is the second state, the total transmission rate in the previous period is taken as the total transmission rate in the current period; In the case that the current congestion state is the third state, the total transmission rate in the previous period is adjusted at an increased speed to obtain the total transmission rate in the current period. The method according to any one of claims 1 to 7, wherein The determination of N path combinations to be balanced based on the priority information of the M paths comprises: The M paths are sorted according to the priority order based on the priority information of the M paths to obtain a path set; The i th path and the M-i+1 th path in the path set form a path combination to be balanced; i is an integer greater than or equal to 1 and less than or equal to M. The method according to any one of claims 1 to 7, wherein Before the determination of N path combinations to be balanced based on the priority information of the M paths, the method further comprises: Receiving a probe response message uploaded by hardware, wherein the probe response message includes the round trip delay of each of the M paths in the previous period; According to the round trip delay of each of the M paths in the previous period, the M paths are sorted according to the priority to obtain the priority information of the M paths. The method according to any one of claims 1 to 7, wherein After the determination of the token quantity of the first path and the token quantity of the second path according to the traffic to be balanced, the method further comprises: The priority information of the M paths, the token quantity of each path, and the probe indication in the current period are fed back to the hardware to instruct the hardware to transmit the message based on the priority information of each path and the token quantity of each path, and to probe the round trip delay of the M paths in the current period based on the probe indication. A multipath congestion control apparatus, wherein, The device comprises: The combination module is configured to, when receiving a token allocation request, determine N path combinations to be balanced based on the priority information of the M paths; the path combination is formed by two paths with different priorities in the M paths; and the N path combinations include non-repeated paths. The determining module is configured to, for each path combination, take two paths in the path combination as a first path and a second path respectively, analyze to-be-balanced traffics of the first path and the second path in a current period according to respective round trip delays of the first path and the second path in a previous period, and determine a token quantity of the first path and a token quantity of the second path according to the to-be-balanced traffics. The control module is configured to feed back the token quantities of the paths to hardware to instruct the hardware to transmit the packets based on the token quantities of the paths. A chip comprising a memory and a processor, the memory storing computer readable instructions, wherein, The processor executes the computer-readable instructions to implement the steps of the method in any one of claims 1 to 10. A network interface card, wherein, The network interface card comprises the chip in claim 12 and a plurality of interfaces, and the chip communicates with the outside through the interfaces. A computer device, wherein, The computer device comprises a processor and the network interface card in claim 13, the network interface card is configured to schedule the packets to the processor or to process the packets by itself, and the processor is configured to process the packets scheduled by the network interface card. The processor executes the computer-readable instructions to implement the steps of the method in any one of claims 1 to 10. The network interface card comprises the chip in claim 12 and a plurality of interfaces, and the chip communicates with the outside through the interfaces. The computer device comprises a processor and the network interface card in claim 13, the network interface card is configured to schedule the packets to the processor or to process the packets by itself, and the processor is configured to process the packets scheduled by the network interface card.

Citation Information

Patent Citations

  • Message transmission method and network device

    CN109218215A

  • Flow control method and device

    CN110768913A

  • Congested link processing method and device and network controller

    CN115865812A

  • Multi-path congestion control method and device, chip, network interface card and equipment

    CN118509374A

  • Flexible load balancing on multipath networks

    US20230246966A1

Cited By

  • A request injection method, apparatus, control hardware and system on chip

    CN122412362A