US20190140952A1 - Bottleneck bandwidth and round-trip propagation time (bbr) congestion control with random early detection (red) - Google Patents
Bottleneck bandwidth and round-trip propagation time (bbr) congestion control with random early detection (red) Download PDFInfo
- Publication number
- US20190140952A1 US20190140952A1 US15/805,989 US201715805989A US2019140952A1 US 20190140952 A1 US20190140952 A1 US 20190140952A1 US 201715805989 A US201715805989 A US 201715805989A US 2019140952 A1 US2019140952 A1 US 2019140952A1
- Authority
- US
- United States
- Prior art keywords
- priority
- bbr
- traffic
- pacing
- congestion
- 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.)
- Granted
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 9
- 238000000034 method Methods 0.000 claims abstract description 35
- 238000004891 communication Methods 0.000 claims description 10
- 238000007493 shaping process Methods 0.000 claims description 10
- 230000001413 cellular effect Effects 0.000 claims description 5
- 230000001960 triggered effect Effects 0.000 description 12
- 230000007774 longterm Effects 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 5
- 230000001934 delay Effects 0.000 description 4
- 230000002452 interceptive effect Effects 0.000 description 4
- 238000012935 Averaging Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000009499 grossing Methods 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
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
-
- 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/24—Traffic characterised by specific attributes, e.g. priority or QoS
-
- H04L67/28—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
Definitions
- the present teachings disclose methods and systems to deal with congestion control for a Bottleneck Bandwidth and Round-trip propagation time (BBR) Transmission Control Protocol (TCP) data flow in conjunction with other flow control systems, such as, a Random Early Detection (RED) system, a window size control system or the like.
- BBR TCP flow traverses a connection flow controlled by a RED congestion control.
- the present teachings may be used on an intermediate network node that obfuscates an actual bottleneck link from a sender.
- an intermediate node may be a satellite gateway such that a BBR TCP flow traverses a satellite communication link subject to RED congestion control by the satellite provider.
- the BBR TCP flow transmits the bulk of traffic to a Very Small Aperture Terminal (VSAT).
- VSAT Very Small Aperture Terminal
- an intermediate node may be a cellular base station such that a BBR TCP flow traverses a cellular link subject to RED congestion control.
- the BBR TCP flow transmits the bulk of traffic to a User Terminal (UT) receiving service by the cellular link.
- UT User Terminal
- BBR Bandwidth and Round-trip propagation time
- TCP congestion control for the in-flight data of the send is based on a window size determined by both the sender and the receiver.
- the sender shrinks the window size if it sees missing ACKs; ACKs that are presumably due to packet drops on the path as a result of congestion. Based on such a feature of the sender, intentionally dropping a packet at an intermediate node could alleviate congestion on the path. Random Early Detection (RED) is based on such a mechanism.
- US Patent Publication Number 2013/0136000 incorporated herein by reference in its entirety discloses a conventional teaching.
- BBR differs from conventional TCP congestion control in the sense that it is not sensitive to a packet drop.
- BBR alters a sending rate based on received ACKs, unlike conventional TCP congestion control, randomly dropping a single packet does not affect BBR's sending rate.
- a missing ACK could essentially cut a transmission rate of the sender by half.
- data flows using BBR are referred to as BBR traffic while data flows not using BBR are referred to as non-BBR traffic.
- a High Throughput Satellite may use a congestion control scheme such as RED.
- RED is applied at an Internet Gateway (IPGW) of the HTS to flow control the incoming traffic to the Performance-Enhancing Proxy (PEP).
- IPGW Internet Gateway
- PEP Performance-Enhancing Proxy
- the IPGW randomly drops packets of all flow sessions to push back TCP traffic during congestion. This is assuming all TCP sources follow the conventional congestion control.
- BBR traffic could accumulate at the IPGW (since random dropping would not affect its sending rate) and cause issues to non-BBR traffic.
- BBR traffic does not push back due to a packet drop
- RED would be triggered more frequently when BBR traffic takes more buffer space, resulting in less non-BBR incoming traffic, and consequently lowering a throughput of non-BBR flows compared to BBR flows.
- the present teachings address flow control of BBR traffic, or combined BBR and non-BBR traffic at an intermediate node intended to improve the end-to-end performance of the TCP protocol, for example, by hiding or sheltering a relatively slow link in the communications path from a sender to a receiver at or behind a User Terminal (UT).
- an intermediate node include, but are not limited to, the IPGW, an aggregator, a base station, a performance enhancing proxy, or the like.
- the present teachings disclose simultaneous flow control for BBR and non-BBR traffic in a RED based congestion control configuration.
- the present teachings coexist with RED congestion control intended to pace the ACKs of a BBR flow such that the sending rate of the BBR traffic can be reduced.
- the BBR congestion control is per priority per UT basis.
- the flows of a particular priority of a UT with a higher delay may be selected.
- ACKs of the selected flows are paced such that the ACK produced data rate is less than the actual throughput provided by the data flow scheduler.
- the sender sends a smaller rate based on the received ACKs.
- the present teachings run on top of or alongside RED.
- the present teachings utilize output from RED as an input.
- RED is independent and there is no impact or change to the existing congestion control.
- flow control could consist of both BBR and non-BBR flows, and the present teachings work for this case.
- there is no performance impact on non-BBR flows even if the present teachings are triggered to apply on non-BBR traffic during congestion.
- the method including: associating one or more traffic flows of a priority to one of the one or more UTs; detecting a traffic congestion for the priority; performing Random Early Detection (RED) congestion control for the priority to relieve the traffic congestion; selecting, for the priority, a User Terminal (UT) with a perceived delay greater than a high threshold; and controlling, by priority, the traffic flows associated with the selected UT.
- RED Random Early Detection
- the intermediate node including: a flow scheduler to associate one or more traffic flows of a priority to one of the one or more UTs, and to detect a traffic congestion for the priority; a Random Early Detection (RED) congestion control to perform congestion control for the priority to relieve the traffic congestion; a BBR Congestion Control to select, for the priority, a User Terminal (UT) with a perceived delay greater than a high threshold; and a control module to pace, by priority, the traffic flows associated with the selected UT.
- a flow scheduler to associate one or more traffic flows of a priority to one of the one or more UTs, and to detect a traffic congestion for the priority
- RED Random Early Detection
- BBR Congestion Control to select, for the priority, a User Terminal (UT) with a perceived delay greater than a high threshold
- a control module to pace, by priority, the traffic flows associated with the
- FIG. 1 illustrates a system of congestion control for a Bottleneck Bandwidth and Round-trip propagation time (BBR) flow of a User Terminal (UT), according to various embodiments.
- BBR Round-trip propagation time
- FIG. 2 illustrates a flowchart of an exemplary method for congestion control of a Bottleneck Bandwidth and Round-trip propagation time (BBR) flow, according to some embodiments.
- BBR Round-trip propagation time
- FIG. 3 illustrates exemplary pseudo code for selecting a BBR candidate and determining a pacing factor (especially on pacing down)
- FIG. 4 illustrates an exemplary system for providing pacing on ACK queues according to various embodiments.
- the present teachings disclose congestion control with RED and BBR.
- BBR traffic can be flow controlled during congestion inline with RED based congestion control.
- the present teachings disclose a method for selecting a BBR traffic candidate and perform pacing thereupon.
- the present teachings also disclose a method for calculating or determining an ACK rate when performing BBR congestion control.
- Congestion control includes aspects of identification and control.
- control of congestion may be performed by scaling the incoming traffic, for example, by pacing of Acknowledgements (ACKs), to shape the incoming traffic rate to emulate the bottleneck link that has been obfuscated, or the like.
- ACKs Acknowledgements
- the present teachings disclose a pacing of ACKs embodiment in detail including disclosing a calculation of a pacing factor and a throughput by priority.
- a shaping factor may be based on calculations of the pacing factor.
- the shaping factor may be the pacing factor.
- the shaping factor may be used to shape the incoming traffic of a congested User Terminal (UT) to emulate the calculated throughput by priority.
- UT congested User Terminal
- BBR congestion control kicks in by selecting BBR candidates and pacing ACKs for the BBR candidates.
- the present teachings may be performed on a per priority per UT basis.
- the UT's traffic flows may include both BBR and non-BBR flows, and the present teachings work for this case.
- there is no performance impact on non-BBR flows even if the ACK pacing is triggered to apply on them during congestion.
- FIG. 1 illustrates a system of congestion control for a Bottleneck Bandwidth and Round-trip propagation time (BBR) flow of a User Terminal (UT), according to various embodiments.
- BBR Round-trip propagation time
- a system 100 providing congestion control for BBR traffic includes a sender 120 , an intermediate node 110 , a Random Early Detection (RED) congestion control module 102 , a flow scheduler module 104 , a BBR congestion control module 106 , an ACK pacing module 108 , task queues 112 and output queues 114 .
- RED Random Early Detection
- the RED module 102 may continuously measure a perceived delay of all data queued in an intermediate node. If the perceived delay is greater than a threshold, a dropping probability is calculated.
- the intermediate node 110 applies the dropping probability to packets arriving at the task queues 112 . If a packet is dropped, a respective sender 120 will be missing an ACK. By randomly dropping packets, the intermediate node 110 signals the senders 120 to reduce the data rate. Since dropping is randomly applied to all packets, the dropping ensures data flows are scaled down in rate with equal chances. In response to the missing ACK, for a non-BBR traffic flow, the respective sender 120 will reduce its transmission rate.
- the missing ACKs are not effective to reduce a transmission rate of a BBR traffic flow sender 120 .
- BBR traffic does not scale down rate due to a missing ACK.
- the BBR traffic may keep on taking buffer at the TSK queues 112 , thus more frequently triggering the RED congestion control 102 to scale down non-BBR traffic.
- the uneven effectiveness of the RED congestion control 102 ultimately compresses non-BBR throughput, resulting in an unfair bandwidth usage among UTs.
- BBR taking excessive buffer may be avoided by pacing BBR flows based on an average throughput of the flows provided by the flow scheduler 104 .
- the throughput rate of a UT can change over time.
- Flow control based on the average throughput of the flows may cause undesired remaining data of BBR traffic in queues.
- the present teachings disclosed a more comprehensive approach that integrates RED congestion control and scheduling.
- the BBR congestion control module 106 may include a common buffer, such as the ACK pacing module 108 , to queue ACK packets.
- the TSK queues module 102 may send ACK packets to the ACK pacing module 108 , instead of directly or immediately returning the ACK packets back to senders 120 .
- the BBR congestion control module 106 may determine when and how to pace the ACKs such that the overall congestion control is running safely and smoothly.
- an average (long-term) RED dropping probability is considered as an indicator of consistent congestion.
- the long-term RED probability is greater than a threshold, the system 100 is determined to be in consistent congestion.
- BBR congestion control may also be imposed at per priority.
- the BBR congestion control 106 may be continuously provided (by measuring, calculating, receiving, or the like) an average throughput rate, and a total queued data amount per priority of each UT as inputs, for example, by the flow scheduler 104 .
- the BBR module 106 may continuously evaluate a perceived delay per priority of each UT.
- the BBR congestion control 106 may request pacing of the ACKs of that particular UT/flow. Since each ACK includes a record of a packet size, the ACK pacing module 108 may flow control or limit an identified flow to a certain data rate by summing the packet sizes in the associated ACKs.
- the BBR congestion control 106 may reduce pacing or pace down such that the pacing rate is smaller than or in line with the throughput rate of a downstream resource.
- the present teachings disclosed a gradual pacing up for recovering a paced rate, for example, when the system becomes uncongested.
- the BBR congestion control 106 may completely relieve pacing, meaning ACKs are not queued.
- the ACKs may be queued per priority for UT by the ACK pacing module 108 .
- Generally pacing down applies to all priorities, for example, Interactive, Streaming, and Bulk.
- the pacing of a BBR flow for a UT can be temporary, meaning pacing will be finished once a delay target is reached.
- the system 100 includes a RED based congestion control module 102 .
- RED may be an indicator of overall system congestion.
- individual delay of each UT at a priority level may be evaluated.
- BBR congestion control 106 may be operated per priority level for a single UT.
- UTs having a greater delay than a high threshold are considered a BBR flow candidate and may be subject to a Pacing Down operation for decreasing an ACK queue size as a result of reducing an incoming rate.
- the high threshold is set to be greater than a minimum delay threshold for triggering RED.
- the low threshold is generally below the minimum delay threshold for RED.
- a pacing timeout is used when Pacing Down.
- the ACK rate is smaller than the average throughput rate provided by the scheduler 104 .
- Pacing Down of a UT generally is only triggered when the RED congestion control 102 indicates a consistent congestion.
- consistent congestion is determined based on the condition that the long-term RED probability is larger than a threshold. In an exceptional case, Pacing Down may be triggered when a UT's perceived delay of a priority is much greater even when the system 100 is uncongested.
- the ACK rate may be set to equal to the average throughput rate; if the system 100 is not congested, the ACK rate save will not be held, meaning ACKs are immediately released.
- FIG. 2 illustrates a flowchart of an exemplary method for congestion control of a Bottleneck Bandwidth and Round-trip propagation time (BBR) flow, according to some embodiments.
- BBR Round-trip propagation time
- a method 200 for congestion control of a BBR flow includes an operation 210 for providing congestion indication per priority.
- the method 200 may include an operation 214 for selecting a UT as a Pacing down candidate when the UT's perceived delay is greater than a high threshold. This will likely be an exceptional case.
- the method 200 may include an operation 216 for releasing all pending ACKs for an uncongested priority.
- the method 200 may include an operation 220 for detecting a congested priority.
- BBR congestion control is per priority level or in other words if congestion is detected at the Streaming priority (and not for Bulk), then the detecting of the congestion and subsequent remedies such as Pacing Down are for the flows or ACKs associated with the Streaming priority.
- the method 200 may include an operation 220 for performing RED Congestion Control for the priority.
- the method 200 may include an operation 224 for selecting a BBR candidate with perceived delay greater than a high threshold.
- the method 200 may include an operation 226 for Releasing ACKs for non-BBR candidate UTs when priority is congested.
- the method 200 may include an operation 230 for pacing (or controlling or scaling) down the BBR candidate.
- Pacing Down may include pacing ACKs such that the ACK rate is smaller than the average throughput rate of a UT.
- Operation 230 for Pacing down may include an operation 232 for stopping the Pacing Down until the perceived delay is smaller than a low threshold.
- Operation 230 for Pacing down may include an operation 234 for stopping the Pacing Down when a timeout is triggered.
- Operation 230 for Pacing down may include an operation 236 for identifying and controlling a BBR flow for the traffic flows associated with the BBR candidate. In operation 236 , the controlling may control only the ACKs associated with the identified BBR flow.
- the method 200 may include an operation 240 for finishing pacing down.
- Operation 240 may include an operation 242 for setting the ACK rate equal to the throughput rate of the corresponding priority when the system is congested.
- Operation 240 may include an operation 244 for releasing the ACKs when the system is uncongested.
- Operation 240 may include an operation 246 for re-entering Pacing Down when the system is congested and perceived delay is greater than a high threshold.
- Pacing Down is finished, if the system is congested (as indicated by RED), the ACK rate is set equal to the throughput rate (of the corresponding priority); if the system is uncongested, the ACK is released immediately.
- the method 200 may include an operation 250 for completing the operation 240 for Pacing Down UTs, when the system changes from congested to uncongested.
- a non-BBR may be selected for pacing if the criteria are met.
- Pacing Down is imposed during congestion. Without limitation, this occurs as the non-BBR traffic follows RED congestion control.
- RED When RED is triggered, the input rate of a UT is reduced while the throughput rate may keep the same, thus fewer ACKs will be generated. Setting an ACK rate as a certain fraction of throughput rate may happen to be a similar result that RED brings.
- the present teachings also disclose a system and method for determining a BBR candidate and its associated pacing factor, and determining an ACK rate with priorities.
- some of the input variables needed are provided by other modules, particularly, the long-term RED dropping probability, the total backlog and the average throughput rate of a UT. These can be obtained from the RED congestion control 106 and the flow scheduler 104 modules.
- t Denotes the time tick for BBR congestion control.
- the time tick is 20 ms by default.
- this RED dropping probability may be an existing variable for a RED congestion control, for example, at a satellite gateway, an intermediary node, a PEP, or the like.
- BBR congestion control may focus at a priority level of a flow.
- RED is a per priority indicator with different thresholds on delays.
- the throughput at the UT level is reasonably consistent and comparable among different UTs with different rate plans.
- the BBR congestion control derives, calculates or measures the estimated delay per priority for a UT and uses different delay thresholds for different priorities.
- the flow scheduler 104 may collect an average throughput per priority for each UT and for the UT as a whole by summing up the traffic demand across priorities.
- the equations derived in the following are generic, applicable to both priority and UT. The equations drop the discussion of the priority index for convenience. BBR congestion control may be performed by calculating the following variables.
- the backlog may be obtained by taking the most recent snapshot of the backlog.
- the RED module may calculate and provide the smoothed throughput and backlog values.
- a EMA,i (t) ⁇ 0, i 1, . . . , N.
- D LT,i (t) a perceived longer-term average delay
- D LT,i (t) mean[D LT,i (t ⁇ T win-BBR +1:t)].
- criteria for determining a BBR candidate and pacing factor may include:
- Exemplary status variables to reflect each UT's state with regard to determining BBR candidates, Pacing Down rates, etc. are illustrated in the following table and are per priority.
- d BBR,1 (k) and d BBR,2 (k) be the delay thresholds 1 and 2 for priority k.
- the present teachings drop (k) for demonstration convenience.
- the above criteria can be expressed as (for priority k):
- P Drop _ LT avg (t) be the derived average long-term RED drop probability at time t for a priority.
- the exemplary default value for k 2 maybe 0.75 or 0.80. Since the RED min and max delays are defined in RED algorithm, the present teachings separately configure d BBR,1 and d BBR,2 based on the formula.
- pacing down finishing module in every BBR checking period, if an identified BBR UT is in Pacing Down state, and when the evaluated long term delay D LT,i (t) is smaller than a delay target, this UT may exit Pacing Down state.
- the pacing down finishing module may be expressed as:
- the present teachings use a few status variables to reflect each UT's state with regard to BBR candidate determination, Pacing Down, etc. These variables are:
- BBR_Candidate(i,t): for UT#i at time t, if determined as BBR, set the value as 1; otherwise, 0. Initial value 0.
- FIG. 3 illustrates exemplary pseudo code for selecting a BBR candidate and determining a pacing factor (especially on pacing down).
- a UT's BBR status may be only temporary in the sense that it is BBR only when it runs a BBR session.
- FIG. 4 illustrates an exemplary system for providing pacing on ACK queues according to various embodiments.
- FIG. 4 illustrates a system 400 for applying a pacing factor to ACKs.
- a sending rate of BBR traffic in the system 400 is based on a received ACK rate for each priority.
- an incoming packet may be received and queued in TSK queues 412 .
- a TSK may handle one session flow. As such, there can be multiple TSK queues 412 for one UT. For each priority, corresponding packets from TSK queues 412 may be multiplexed per priority in a MUX queue 430 .
- a flow scheduler 410 performs a dequeuing operation at the MUX queue 430 to forward a dequeued packet to a destination output 422 , for example, a satellite link, a wireless link, a terrestrial line, or the like. The scheduler 410 may evaluate each UT's throughput rate per priority and as a whole.
- the scheduler 410 may also evaluate a queueing profile, such as queue size per priority, RED variables, etc., and feed the needed variables to BBR congestion control 406 . Based on the inputs from the scheduler 410 , the BBR congestion control 406 determines BBR candidates and corresponding pacing factors 408 for each priority of a UT.
- a queueing profile such as queue size per priority, RED variables, etc.
- the system 400 may maintain ACK queues 432 , one queue per priority, e.g., Interactive, Streaming and Bulk.
- a UT is not determined as a BBR candidate for a priority, then no ACK queueing is needed for this non-candidate priority. That means the ACK packets come and go without buffering in the ACK queues 432 .
- the ACK packets are queued in ACK queues 432 and dequeuing is performed based on the pacing factors 408 and a throughput rate 438 for the priority at an ACK sender 434 back to a sender/source 420 of the incoming packet.
- the throughput rate 438 per priority may be set by the flow scheduler 410 .
- BBR congestion control is not performed (unless a very exceptional case when the perceived delay of a UT is very big).
- the pacing factor 408 is derived for a BBR candidate of a certain priority, and the ACK rate 436 is determined by the UT's throughput rate at that priority multiplied by the corresponding pacing factor.
- the maximum value for the pacing factor is one, thus during pacing, the ACK rate would be less than or equal to the throughput rate.
- a smaller timing unit may reduce the ACK delay due to pacing. If the timing for BBR congestion control is 20 ms, then ACK pacing can be 20 ms, 10 ms, 5 ms, or the like.
- R k (t) be the ACK pacing rate
- R k (t) PF k (t) ⁇ A k (t).
- a k (t) is the actual averaged throughput rate, not the allocation or the bandwidth based on weight. So summing up A k (t) may give the total throughput rate of a UT. So the ACK rate pacing procedure is given below:
- V k ⁇ R k (t) If V k ⁇ R k (t), the dequeue R k (t) from V k . Rounding up is preferred. If V k ⁇ R k (t), dequeue all ACK packets. Keep a timer on each ACK packet. If the timer expires, release this ACK. As ACKs are enqueued in First In First Out (FIFO), the timer expiration should also be FIFO.
- An exemplary default timer maybe 1000 ms.
- the ACKs may also flow with the reclassification. This means ACKs may be in different ACK queues before sending them out. Due to possibly different pacing rates of ACK queues, the ACKs may be out of order. ACKs being delivered out of order can have side effects of slowing down traffic. But this side effect should be temporary because the ACKs will be settled with a new pacing rate after re-classification.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
Description
- The present teachings disclose methods and systems to deal with congestion control for a Bottleneck Bandwidth and Round-trip propagation time (BBR) Transmission Control Protocol (TCP) data flow in conjunction with other flow control systems, such as, a Random Early Detection (RED) system, a window size control system or the like. In some embodiments, a BBR TCP flow traverses a connection flow controlled by a RED congestion control. The present teachings may be used on an intermediate network node that obfuscates an actual bottleneck link from a sender.
- In some embodiments, an intermediate node may be a satellite gateway such that a BBR TCP flow traverses a satellite communication link subject to RED congestion control by the satellite provider. In some embodiments, the BBR TCP flow transmits the bulk of traffic to a Very Small Aperture Terminal (VSAT).
- In some embodiments, an intermediate node may be a cellular base station such that a BBR TCP flow traverses a cellular link subject to RED congestion control. In some embodiments, the BBR TCP flow transmits the bulk of traffic to a User Terminal (UT) receiving service by the cellular link.
- Recently Google initiated and proposed a new congestion control for Transmission Control Protocol (TCP) flows. The new congestion control known as the BBR is based on measuring two parameters that characterize a path, namely, Bottleneck Bandwidth and Round-trip propagation time (BBR). In BBR, a sender measures the bottleneck bandwidth and Round Trip Time (RTT) via received acknowledgments (ACKs). Data inflight of the sender is essentially based on the product of the measured bandwidth and RTT. In addition, BBR paces the sending rate using the in-flight data amount and the RTT.
- Conventional TCP congestion control for the in-flight data of the send is based on a window size determined by both the sender and the receiver. The sender shrinks the window size if it sees missing ACKs; ACKs that are presumably due to packet drops on the path as a result of congestion. Based on such a feature of the sender, intentionally dropping a packet at an intermediate node could alleviate congestion on the path. Random Early Detection (RED) is based on such a mechanism. US Patent Publication Number 2013/0136000 incorporated herein by reference in its entirety discloses a conventional teaching.
- BBR differs from conventional TCP congestion control in the sense that it is not sensitive to a packet drop. Although BBR alters a sending rate based on received ACKs, unlike conventional TCP congestion control, randomly dropping a single packet does not affect BBR's sending rate. In contrast, conventionally, a missing ACK could essentially cut a transmission rate of the sender by half. In the present teachings, data flows using BBR are referred to as BBR traffic while data flows not using BBR are referred to as non-BBR traffic.
- A High Throughput Satellite (HTS) may use a congestion control scheme such as RED. RED is applied at an Internet Gateway (IPGW) of the HTS to flow control the incoming traffic to the Performance-Enhancing Proxy (PEP). The IPGW randomly drops packets of all flow sessions to push back TCP traffic during congestion. This is assuming all TCP sources follow the conventional congestion control. However, when a significant amount of BBR traffic is received and ACKed by the IPGW, during congestion, the BBR traffic could accumulate at the IPGW (since random dropping would not affect its sending rate) and cause issues to non-BBR traffic. As BBR traffic does not push back due to a packet drop, RED would be triggered more frequently when BBR traffic takes more buffer space, resulting in less non-BBR incoming traffic, and consequently lowering a throughput of non-BBR flows compared to BBR flows.
- This Summary is provided to introduce a selection of concepts in a simplified form that is further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
- The present teachings address flow control of BBR traffic, or combined BBR and non-BBR traffic at an intermediate node intended to improve the end-to-end performance of the TCP protocol, for example, by hiding or sheltering a relatively slow link in the communications path from a sender to a receiver at or behind a User Terminal (UT). Examples of such an intermediate node include, but are not limited to, the IPGW, an aggregator, a base station, a performance enhancing proxy, or the like.
- The present teachings disclose simultaneous flow control for BBR and non-BBR traffic in a RED based congestion control configuration. The present teachings coexist with RED congestion control intended to pace the ACKs of a BBR flow such that the sending rate of the BBR traffic can be reduced. In some embodiments, the BBR congestion control is per priority per UT basis. During congestion, when the average RED rate is non-zero (greater than a threshold), the flows of a particular priority of a UT with a higher delay may be selected. ACKs of the selected flows are paced such that the ACK produced data rate is less than the actual throughput provided by the data flow scheduler. As a result, for a BBR flow, the sender sends a smaller rate based on the received ACKs. On the other hand, during congestion, the ACKs are not paced for all traffic flows. In general, the present teachings run on top of or alongside RED. In some embodiments, the present teachings utilize output from RED as an input. In some embodiments, RED is independent and there is no impact or change to the existing congestion control. For a selected priority of a UT, flow control could consist of both BBR and non-BBR flows, and the present teachings work for this case. In some embodiments, there is no performance impact on non-BBR flows even if the present teachings are triggered to apply on non-BBR traffic during congestion.
- A method for controlling congestion of traffic, by one of one or more User Terminals (UTs), traversing an intermediate node. The method including: associating one or more traffic flows of a priority to one of the one or more UTs; detecting a traffic congestion for the priority; performing Random Early Detection (RED) congestion control for the priority to relieve the traffic congestion; selecting, for the priority, a User Terminal (UT) with a perceived delay greater than a high threshold; and controlling, by priority, the traffic flows associated with the selected UT.
- An intermediate node to control congestion of traffic, by one of one or more User Terminals (UTs), traversing the intermediate node. The intermediate node including: a flow scheduler to associate one or more traffic flows of a priority to one of the one or more UTs, and to detect a traffic congestion for the priority; a Random Early Detection (RED) congestion control to perform congestion control for the priority to relieve the traffic congestion; a BBR Congestion Control to select, for the priority, a User Terminal (UT) with a perceived delay greater than a high threshold; and a control module to pace, by priority, the traffic flows associated with the selected UT.
- Additional features will be set forth in the description that follows, and in part will be apparent from the description, or may be learned by practice of what is described.
- In order to describe the manner in which the above-recited and other advantages and features may be obtained, a more particular description is provided below and will be rendered by reference to specific embodiments thereof which are illustrated in the appended drawings. Understanding that these drawings depict only typical embodiments and are not, therefore, to be considered to be limiting of its scope, implementations will be described and explained with additional specificity and detail through the use of the accompanying drawings.
-
FIG. 1 illustrates a system of congestion control for a Bottleneck Bandwidth and Round-trip propagation time (BBR) flow of a User Terminal (UT), according to various embodiments. -
FIG. 2 illustrates a flowchart of an exemplary method for congestion control of a Bottleneck Bandwidth and Round-trip propagation time (BBR) flow, according to some embodiments. -
FIG. 3 illustrates exemplary pseudo code for selecting a BBR candidate and determining a pacing factor (especially on pacing down) -
FIG. 4 illustrates an exemplary system for providing pacing on ACK queues according to various embodiments. - Throughout the drawings and the detailed description, unless otherwise described, the same drawing reference numerals will be understood to refer to the same elements, features, and structures. The relative size and depiction of these elements may be exaggerated for clarity, illustration, and convenience.
- Embodiments are discussed in detail below. While specific implementations are discussed, it should be understood that this is done for illustration purposes only. A person skilled in the relevant art will recognize that other components and configurations may be used without parting from the spirit and scope of the subject matter of this disclosure.
- The terminology used herein is for describing particular embodiments only and is not intended to be limiting of the present disclosure. As used herein, the singular forms “a,” “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. Furthermore, the use of the terms a, an, etc. does not denote a limitation of quantity but rather denotes the presence of at least one of the referenced item. The use of the terms “first,” “second,” and the like does not imply any particular order, but they are included to either identify individual elements or to distinguish one element from another. It will be further understood that the terms “comprises” and/or “comprising”, or “includes” and/or “including” when used in this specification, specify the presence of stated features, regions, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, regions, integers, steps, operations, elements, components, and/or groups thereof. Although some features may be described with respect to individual exemplary embodiments, aspects need not be limited thereto such that features from one or more exemplary embodiments may be combinable with other features from one or more exemplary embodiments.
- The present teachings disclose congestion control with RED and BBR. BBR traffic can be flow controlled during congestion inline with RED based congestion control. Particularly, the present teachings disclose a method for selecting a BBR traffic candidate and perform pacing thereupon. The present teachings also disclose a method for calculating or determining an ACK rate when performing BBR congestion control.
- Congestion control includes aspects of identification and control. In some embodiments, control of congestion may be performed by scaling the incoming traffic, for example, by pacing of Acknowledgements (ACKs), to shape the incoming traffic rate to emulate the bottleneck link that has been obfuscated, or the like. The present teachings disclose a pacing of ACKs embodiment in detail including disclosing a calculation of a pacing factor and a throughput by priority. In some embodiments, a shaping factor may be based on calculations of the pacing factor. In some embodiments, the shaping factor may be the pacing factor. The shaping factor may be used to shape the incoming traffic of a congested User Terminal (UT) to emulate the calculated throughput by priority.
- This approach works in conjunction with but independently from RED. In some embodiments, only when RED is triggered, BBR congestion control kicks in by selecting BBR candidates and pacing ACKs for the BBR candidates. The present teachings may be performed on a per priority per UT basis. For a selected priority of a UT, the UT's traffic flows may include both BBR and non-BBR flows, and the present teachings work for this case. In exemplary embodiments, there is no performance impact on non-BBR flows even if the ACK pacing is triggered to apply on them during congestion.
-
FIG. 1 illustrates a system of congestion control for a Bottleneck Bandwidth and Round-trip propagation time (BBR) flow of a User Terminal (UT), according to various embodiments. - In
FIG. 1 , asystem 100 providing congestion control for BBR traffic includes asender 120, an intermediate node 110, a Random Early Detection (RED)congestion control module 102, aflow scheduler module 104, a BBR congestion control module 106, anACK pacing module 108,task queues 112 andoutput queues 114. When incoming data packets arrive at the intermediate node 110, they are immediately acknowledged (ACKed) to thesender 120 and queued in theTSK queues 112. TheRED module 102 may continuously measure a perceived delay of all data queued in an intermediate node. If the perceived delay is greater than a threshold, a dropping probability is calculated. The intermediate node 110 applies the dropping probability to packets arriving at thetask queues 112. If a packet is dropped, arespective sender 120 will be missing an ACK. By randomly dropping packets, the intermediate node 110 signals thesenders 120 to reduce the data rate. Since dropping is randomly applied to all packets, the dropping ensures data flows are scaled down in rate with equal chances. In response to the missing ACK, for a non-BBR traffic flow, therespective sender 120 will reduce its transmission rate. - The missing ACKs are not effective to reduce a transmission rate of a BBR
traffic flow sender 120. BBR traffic does not scale down rate due to a missing ACK. During congestion, the BBR traffic may keep on taking buffer at theTSK queues 112, thus more frequently triggering theRED congestion control 102 to scale down non-BBR traffic. The uneven effectiveness of theRED congestion control 102 ultimately compresses non-BBR throughput, resulting in an unfair bandwidth usage among UTs. In some embodiments, BBR taking excessive buffer may be avoided by pacing BBR flows based on an average throughput of the flows provided by theflow scheduler 104. However, as the network of thesystem 100 is dynamic, the throughput rate of a UT can change over time. Flow control based on the average throughput of the flows may cause undesired remaining data of BBR traffic in queues. As such, the present teachings disclosed a more comprehensive approach that integrates RED congestion control and scheduling. - The BBR congestion control module 106 may include a common buffer, such as the
ACK pacing module 108, to queue ACK packets. TheTSK queues module 102 may send ACK packets to theACK pacing module 108, instead of directly or immediately returning the ACK packets back tosenders 120. The BBR congestion control module 106 may determine when and how to pace the ACKs such that the overall congestion control is running safely and smoothly. - In the present teachings, generally, an average (long-term) RED dropping probability is considered as an indicator of consistent congestion. When the long-term RED probability is greater than a threshold, the
system 100 is determined to be in consistent congestion. In exemplary embodiments, when consistent congestion is detected, BBR traffic needs to be interfered with. As RED is generally imposed at per priority with different delay thresholds, in exemplary embodiments BBR congestion control may also be imposed at per priority. The BBR congestion control 106 may be continuously provided (by measuring, calculating, receiving, or the like) an average throughput rate, and a total queued data amount per priority of each UT as inputs, for example, by theflow scheduler 104. The BBR module 106 may continuously evaluate a perceived delay per priority of each UT. During congestion of the system 100 (or in some embodiments even when the system is uncongested), when a UT's perceived delay of a priority is greater than a threshold, the BBR congestion control 106 may request pacing of the ACKs of that particular UT/flow. Since each ACK includes a record of a packet size, theACK pacing module 108 may flow control or limit an identified flow to a certain data rate by summing the packet sizes in the associated ACKs. - For the average throughput rate of a priority for the UT, the BBR congestion control 106 may reduce pacing or pace down such that the pacing rate is smaller than or in line with the throughput rate of a downstream resource. In some embodiments, the present teachings disclosed a gradual pacing up for recovering a paced rate, for example, when the system becomes uncongested. When uncongested, the BBR congestion control 106 may completely relieve pacing, meaning ACKs are not queued. When congested, the ACKs may be queued per priority for UT by the
ACK pacing module 108. Generally pacing down applies to all priorities, for example, Interactive, Streaming, and Bulk. The pacing of a BBR flow for a UT can be temporary, meaning pacing will be finished once a delay target is reached. - In exemplary embodiments, the
system 100 includes a RED basedcongestion control module 102. RED may be an indicator of overall system congestion. In addition to RED, individual delay of each UT at a priority level may be evaluated. Thus BBR congestion control 106 may be operated per priority level for a single UT. UTs having a greater delay than a high threshold are considered a BBR flow candidate and may be subject to a Pacing Down operation for decreasing an ACK queue size as a result of reducing an incoming rate. The high threshold is set to be greater than a minimum delay threshold for triggering RED. Once a UT is in a Pacing Down process, the UT's ACK rate will be slowed until the perceived delay is smaller than a low threshold. The low threshold is generally below the minimum delay threshold for RED. In some embodiments, a pacing timeout is used when Pacing Down. In Pacing Down, the ACK rate is smaller than the average throughput rate provided by thescheduler 104. Pacing Down of a UT generally is only triggered when theRED congestion control 102 indicates a consistent congestion. In exemplary embodiments, consistent congestion is determined based on the condition that the long-term RED probability is larger than a threshold. In an exceptional case, Pacing Down may be triggered when a UT's perceived delay of a priority is much greater even when thesystem 100 is uncongested. When the Pacing Down of a UT is finished and thesystem 100 is still congested, the ACK rate may be set to equal to the average throughput rate; if thesystem 100 is not congested, the ACK rate save will not be held, meaning ACKs are immediately released. -
FIG. 2 illustrates a flowchart of an exemplary method for congestion control of a Bottleneck Bandwidth and Round-trip propagation time (BBR) flow, according to some embodiments. - A
method 200 for congestion control of a BBR flow includes anoperation 210 for providing congestion indication per priority. Themethod 200 may include anoperation 214 for selecting a UT as a Pacing down candidate when the UT's perceived delay is greater than a high threshold. This will likely be an exceptional case. Themethod 200 may include anoperation 216 for releasing all pending ACKs for an uncongested priority. - The
method 200 may include anoperation 220 for detecting a congested priority. Inoperation 220, BBR congestion control is per priority level or in other words if congestion is detected at the Streaming priority (and not for Bulk), then the detecting of the congestion and subsequent remedies such as Pacing Down are for the flows or ACKs associated with the Streaming priority. Themethod 200 may include anoperation 220 for performing RED Congestion Control for the priority. Themethod 200 may include anoperation 224 for selecting a BBR candidate with perceived delay greater than a high threshold. In some embodiments, themethod 200 may include anoperation 226 for Releasing ACKs for non-BBR candidate UTs when priority is congested. - The
method 200 may include anoperation 230 for pacing (or controlling or scaling) down the BBR candidate. Pacing Down may include pacing ACKs such that the ACK rate is smaller than the average throughput rate of a UT.Operation 230 for Pacing down may include anoperation 232 for stopping the Pacing Down until the perceived delay is smaller than a low threshold.Operation 230 for Pacing down may include anoperation 234 for stopping the Pacing Down when a timeout is triggered.Operation 230 for Pacing down may include anoperation 236 for identifying and controlling a BBR flow for the traffic flows associated with the BBR candidate. Inoperation 236, the controlling may control only the ACKs associated with the identified BBR flow. - The
method 200 may include anoperation 240 for finishing pacing down.Operation 240 may include anoperation 242 for setting the ACK rate equal to the throughput rate of the corresponding priority when the system is congested.Operation 240 may include anoperation 244 for releasing the ACKs when the system is uncongested.Operation 240 may include anoperation 246 for re-entering Pacing Down when the system is congested and perceived delay is greater than a high threshold. When Pacing Down is finished, if the system is congested (as indicated by RED), the ACK rate is set equal to the throughput rate (of the corresponding priority); if the system is uncongested, the ACK is released immediately. - In some embodiments, the
method 200 may include anoperation 250 for completing theoperation 240 for Pacing Down UTs, when the system changes from congested to uncongested. - Presently there is no explicit indication (e.g., something in the header of a BBR packet) to indicate whether a data flow is BBR or not. As such a non-BBR may be selected for pacing if the criteria are met. However, there should no or a minor performance impact to non-BBR traffic if Pacing Down is imposed during congestion. Without limitation, this occurs as the non-BBR traffic follows RED congestion control. When RED is triggered, the input rate of a UT is reduced while the throughput rate may keep the same, thus fewer ACKs will be generated. Setting an ACK rate as a certain fraction of throughput rate may happen to be a similar result that RED brings.
- The present teachings also disclose a system and method for determining a BBR candidate and its associated pacing factor, and determining an ACK rate with priorities. In exemplary embodiments, some of the input variables needed are provided by other modules, particularly, the long-term RED dropping probability, the total backlog and the average throughput rate of a UT. These can be obtained from the RED congestion control 106 and the
flow scheduler 104 modules. - Denote t as the time tick for BBR congestion control. In exemplary embodiments, the time tick is 20 ms by default. Denote PDrop _ LT (k)(t) the long-term average RED dropping probability for traffic priority k, k=1, . . . , K, where K is the number of priorities for an intermediate node. In exemplary embodiments, this RED dropping probability may be an existing variable for a RED congestion control, for example, at a satellite gateway, an intermediary node, a PEP, or the like.
- In some embodiments, BBR congestion control may focus at a priority level of a flow. RED is a per priority indicator with different thresholds on delays. In general, the throughput at the UT level is reasonably consistent and comparable among different UTs with different rate plans. One can reasonably expect BBR traffic with a consistent input rate to cause a longer task queue, and as such one can infer that the throughput rate per priority is also consistent when BBR is present. To provide BBR congestion control per priority, the BBR congestion control derives, calculates or measures the estimated delay per priority for a UT and uses different delay thresholds for different priorities.
- The
flow scheduler 104 may collect an average throughput per priority for each UT and for the UT as a whole by summing up the traffic demand across priorities. The equations derived in the following are generic, applicable to both priority and UT. The equations drop the discussion of the priority index for convenience. BBR congestion control may be performed by calculating the following variables. - Denote Ai(t), i=1, . . . , N, where N is the number of UTs, A is the recorded throughput rate at time t, typically based on an exemplary 20 ms frame, or 100 ms interval, whichever is available. If both intervals are available, a throughput that matches closest to the time tick used by the flow control module is preferable, for example, a 20 ms frame may be preferable as time tick t is 20 ms). The smoothed average throughput rate may be expressed as AEMA,i(t)=α1·Ai(t−1)+(1−α1)·AEMA,i(t−1), i=1, . . . , N, where the smoothing factor α1 has an exemplary default value of α1=0.02.
- Similarly, let Qi(t), i=1, . . . , N, be the backlog of a UT i at time t. The backlog may be obtained by taking the most recent snapshot of the backlog. The smoothed average backlog at time t for UT i may be expressed as QEMA,i(t)=α2·Qi(t)+(1−α2)·QEMA,i(t−1), i=1, . . . , N, where the smoothing factor α2 has an exemplary default value of α2=0.1. In some embodiments, the RED module may calculate and provide the smoothed throughput and backlog values.
- Let a perceived average delay be denoted by Di(t) for UT i, i=1, . . . , N, N is the total number of UTs, which can be expressed as
-
- AEMA,i(t)≠0, i=1, . . . , N.
- Let a perceived longer-term average delay be denoted by DLT,i(t), by averaging Di(t) over a certain period Twin-BBR. The default value is Twin-BBR=50 (20 ms units)=1000 ms. So DLT,i(t)=mean[DLT,i(t−Twin-BBR+1:t)].When t<Twin-BBR, do averaging over the past time.
- In some embodiments, criteria for determining a BBR candidate and pacing factor may include:
-
- If the long-term RED dropping probability is larger than a dropping rate threshold and a UT's both short and long-term perceived delays of a priority are larger than
delay threshold 1, then this UT is a BBR candidate. - Independently, if a UT's short-term and long-term delays are both larger than delay threshold 2, then this UT is a BBR candidate.
- Given a BBR candidate, the pacing factor may be equal to or less than one is calculated. When entering Packing Down procedure, the less than one pacing factor is adopted until either the perceived delay reaches the target or times out. The pacing factor is applied to the ACK rate.
- After reaching target or timeout, the pacing factor is set back to one.
- BBR candidates are at the priority level, for example, a UT can be BBR candidate for Streaming, Bulk, or both. Pacing at each priority is independent.
- If the long-term RED dropping probability is larger than a dropping rate threshold and a UT's both short and long-term perceived delays of a priority are larger than
- Exemplary status variables to reflect each UT's state with regard to determining BBR candidates, Pacing Down rates, etc. are illustrated in the following table and are per priority.
-
Initial Variable Type Description value Range BBR_Candidate(i,t) Int for UT#i at time t, if determined 0 0 or 1 as BBR, set the value as 1; otherwise, 0. BBR_Timer_release(i,t) Int when UT #i enters BBR Pacing 0 Between Down, this variable counts BBR_Time_out down from BBR_Time_out to 0 and 0 (somehow randomized to avoid synchronization) BBR_Pacing_factor(i,t) real when use #i is in pacing, the 1 [0, 1] ACK rate = BBR_Pacing_factor(i,t) * Avg_throughput_rate of UT #i at time t - Let denote Pdrop,TH (k) a threshold to determine congestion at priority k, k=1, . . . , K, K=3, meaning, for example, Interactive, Streaming, and Bulk. Exemplary default values for the priorities may be Pdrop,TH (k)=0.002 for k=1, . . . , K. Let dBBR,1 (k) and dBBR,2 (k) be the
delay thresholds 1 and 2 for priority k. As there is no cross priority operation, the present teachings drop (k) for demonstration convenience. The above criteria can be expressed as (for priority k): -
IF [P Drop _ LT avg(t)≥P drop,TH AND D i(t)>=d BBR,1 AND D LT,i(t)>=d BBR,1] OR [D i(t)>=d BBR,2 AND D LT,i(t)>=d BBR,2] - A UT i may be a BBR candidate at priority (k) that may be stored in an exemplary variable, BBR_Candidate (i,t)=1.
- Let PDrop _ LT avg (t) be the derived average long-term RED drop probability at time t for a priority. As such, dBBR,1=k1*DRED,Min and dBBR,2=DRED,Min+k2*(DRED,Max−DRED,Min).
- Let k1 be a configured parameter with an exemplary default value of k1=1.25. The exemplary default value for k2 maybe 0.75 or 0.80. Since the RED min and max delays are defined in RED algorithm, the present teachings separately configure dBBR,1 and dBBR,2 based on the formula.
- The BBR candidate check may be performed periodically, with a default configured interval of Tcheck-BBR=15 units=300 ms. If a UT is determined to be a BBR candidate, the UT will enter Pacing Down procedure until either the perceived delay is less than a threshold, or a preconfigured timeout. This time-out is denoted as BBT_Time_out with an exemplary default value of BBR_Time_out=100 units=2000 ms. BBR_Time_out may be different for different priorities, and such may be a per priority configuration parameter.
- In exemplary embodiments, in every BBR checking period, if an identified BBR UT is in Pacing Down state, and when the evaluated long term delay DLT,i(t) is smaller than a delay target, this UT may exit Pacing Down state. The pacing down finishing module may be expressed as:
-
DLT,i (t) dBBR,Tar IF <= Set BBR_Timer_release(i,t)=0; BBR_Pacing_factor(i,t)=min[PF_max, BBR_Packing_factor(i,t− 1)*(1+pacing_step_up)]; If BBR_Pacing_factor(i,t)==1 BBR_Candidate(i,t)=0; End End - The delay target may be denoted as dBBR,Tar=k3·DRED,Min, where exemplary values for k3 are 0.75 or 0.80. PF_max may be the maximum pacing factor with an exemplary default value of PF_max=1. PF_max may be applied to all priorities.
- The present teachings use a few status variables to reflect each UT's state with regard to BBR candidate determination, Pacing Down, etc. These variables are:
- BBR_Candidate(i,t): for UT#i at time t, if determined as BBR, set the value as 1; otherwise, 0. Initial value=0.
- BBR_Timer_release(i,t): when UT #i enters BBR Pacing Down, this variable counts down from BBR_Time_out. If the delay target is achieved, this value is set to zero. When The initial value=0.
- BBR_Pacing_factor(i,t): when use #i is in pacing, the ACK rate=BBR_Pacing_factor(i,t)*Avg_throughput_rate of UT #i at time t. The initial value=1.
-
FIG. 3 illustrates exemplary pseudo code for selecting a BBR candidate and determining a pacing factor (especially on pacing down). - A UT's BBR status may be only temporary in the sense that it is BBR only when it runs a BBR session.
-
FIG. 4 illustrates an exemplary system for providing pacing on ACK queues according to various embodiments. -
FIG. 4 illustrates asystem 400 for applying a pacing factor to ACKs. In exemplary embodiments, a sending rate of BBR traffic in thesystem 400 is based on a received ACK rate for each priority. - In the
system 400, an incoming packet may be received and queued inTSK queues 412. A TSK may handle one session flow. As such, there can bemultiple TSK queues 412 for one UT. For each priority, corresponding packets fromTSK queues 412 may be multiplexed per priority in aMUX queue 430. In exemplary embodiments, aflow scheduler 410 performs a dequeuing operation at theMUX queue 430 to forward a dequeued packet to adestination output 422, for example, a satellite link, a wireless link, a terrestrial line, or the like. Thescheduler 410 may evaluate each UT's throughput rate per priority and as a whole. Thescheduler 410 may also evaluate a queueing profile, such as queue size per priority, RED variables, etc., and feed the needed variables toBBR congestion control 406. Based on the inputs from thescheduler 410, theBBR congestion control 406 determines BBR candidates andcorresponding pacing factors 408 for each priority of a UT. - The
system 400 may maintainACK queues 432, one queue per priority, e.g., Interactive, Streaming and Bulk. In exemplary embodiments, if a UT is not determined as a BBR candidate for a priority, then no ACK queueing is needed for this non-candidate priority. That means the ACK packets come and go without buffering in theACK queues 432. If a UT is determined as BBR candidate for a priority, then the ACK packets are queued inACK queues 432 and dequeuing is performed based on the pacing factors 408 and athroughput rate 438 for the priority at anACK sender 434 back to a sender/source 420 of the incoming packet. In exemplary embodiments, thethroughput rate 438 per priority may be set by theflow scheduler 410. In some embodiments, if RED congestion control (not shown) is not triggered by theflow scheduler 410, then BBR congestion control is not performed (unless a very exceptional case when the perceived delay of a UT is very big). When RED congestion control is triggered at a priority (for example, at a system level as compared to a UT level), thepacing factor 408 is derived for a BBR candidate of a certain priority, and theACK rate 436 is determined by the UT's throughput rate at that priority multiplied by the corresponding pacing factor. The maximum value for the pacing factor is one, thus during pacing, the ACK rate would be less than or equal to the throughput rate. - Let Vk be the data volume of a UT labeled by the ACK in priority k, k=1, . . . , K, K is the number of priorities. In exemplary embodiments, K=3 corresponding to Interactive, Streaming, and Bulk. In exemplary embodiments, there may be no pacing for real-time and management packets. We illustrate without an index of the UT as pacing is per UT. Let PFk(t) and Ak(t) denote the pacing factor and throughput at time t for priority k, k=1, . . . , M, M=3. The timing on an ACK rate may not necessarily be the same as the BBR congestion control. A smaller timing unit may reduce the ACK delay due to pacing. If the timing for BBR congestion control is 20 ms, then ACK pacing can be 20 ms, 10 ms, 5 ms, or the like. Let Rk(t) be the ACK pacing rate, then Rk(t)=PFk(t)·Ak(t). Ak(t) is the actual averaged throughput rate, not the allocation or the bandwidth based on weight. So summing up Ak(t) may give the total throughput rate of a UT. So the ACK rate pacing procedure is given below:
- When RED is not triggered, no pacing for the ACK queue.
- When RED is triggered, at each time interval, evaluate the volume of each ACK queue in data volume that packets carry. The time interval is for ACK dequeuing. Rk(t) will be in this time interval.
- If Vk≥Rk(t), the dequeue Rk(t) from Vk. Rounding up is preferred. If Vk<Rk(t), dequeue all ACK packets. Keep a timer on each ACK packet. If the timer expires, release this ACK. As ACKs are enqueued in First In First Out (FIFO), the timer expiration should also be FIFO. An exemplary default timer maybe 1000 ms.
- When a flow is re-classified, the ACKs may also flow with the reclassification. This means ACKs may be in different ACK queues before sending them out. Due to possibly different pacing rates of ACK queues, the ACKs may be out of order. ACKs being delivered out of order can have side effects of slowing down traffic. But this side effect should be temporary because the ACKs will be settled with a new pacing rate after re-classification.
- Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims. Other configurations of the described embodiments are part of the scope of this disclosure. Further, implementations consistent with the subject matter of this disclosure may have more or fewer acts than as described, or may implement acts in a different order than as shown. Accordingly, the appended claims and their legal equivalents should only define the invention, rather than any specific examples given.
Claims (20)
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/805,989 US10735324B2 (en) | 2017-11-07 | 2017-11-07 | Bottleneck bandwidth and round-trip propagation time (BBR) congestion control with random early detection (RED) |
DE112018005429.2T DE112018005429T5 (en) | 2017-11-07 | 2018-10-26 | BOTTOM BANDWIDTH AND ROUND TIME OVERLOAD CONTROL WITH RANDOM EARLY DETECTION |
GB2006912.6A GB2581722B (en) | 2017-11-07 | 2018-10-26 | Bottleneck bandwidth and round-trip propagation time (BBR) congestion control with random early detection (RED) |
PCT/US2018/057839 WO2019094211A1 (en) | 2017-11-07 | 2018-10-26 | Bottleneck bandwidth and round-trip propagation time (bbr) congestion control with random early detection (red) |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/805,989 US10735324B2 (en) | 2017-11-07 | 2017-11-07 | Bottleneck bandwidth and round-trip propagation time (BBR) congestion control with random early detection (RED) |
Publications (2)
Publication Number | Publication Date |
---|---|
US20190140952A1 true US20190140952A1 (en) | 2019-05-09 |
US10735324B2 US10735324B2 (en) | 2020-08-04 |
Family
ID=64277878
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/805,989 Active 2038-01-07 US10735324B2 (en) | 2017-11-07 | 2017-11-07 | Bottleneck bandwidth and round-trip propagation time (BBR) congestion control with random early detection (RED) |
Country Status (4)
Country | Link |
---|---|
US (1) | US10735324B2 (en) |
DE (1) | DE112018005429T5 (en) |
GB (1) | GB2581722B (en) |
WO (1) | WO2019094211A1 (en) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110290428A (en) * | 2019-06-26 | 2019-09-27 | 腾讯科技(深圳)有限公司 | A kind of jamming control method, device, terminal and storage medium |
CN110365600A (en) * | 2019-07-30 | 2019-10-22 | 广州市百果园信息技术有限公司 | A kind of jamming control method based on BBR, device, equipment and storage medium |
CN114422443A (en) * | 2022-01-24 | 2022-04-29 | 西安电子科技大学 | A TCP Congestion Control Method for Satellite Networks Based on Bandwidth Estimation and Congestion Prediction |
US11483249B2 (en) * | 2020-09-29 | 2022-10-25 | Edgecast Inc. | Systems and methods for dynamic optimization of network congestion control |
US11503615B2 (en) | 2019-12-31 | 2022-11-15 | Hughes Network Systems, Llc | Bandwidth allocation using machine learning |
US11689944B2 (en) | 2019-12-31 | 2023-06-27 | Hughes Network Systems, Llc | Traffic flow classification using machine learning |
JP7638537B2 (en) | 2019-08-08 | 2025-03-04 | デジェロ ラブス インコーポレイテッド | System and method for managing data packet communications - Patents.com |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018140018A1 (en) * | 2017-01-26 | 2018-08-02 | Hitachi, Ltd. | User-driven network traffic shaping |
US11271912B2 (en) * | 2019-09-27 | 2022-03-08 | Envistacom, Llc | Anonymous communication over virtual, modular, and distributed satellite communications network |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0031535D0 (en) * | 2000-12-22 | 2001-02-07 | Nokia Networks Oy | Traffic congestion |
US8203956B1 (en) | 2008-08-28 | 2012-06-19 | Raytheon Bbn Technologies Corp. | Method and apparatus providing a precedence drop quality of service (PDQoS) |
US8705357B2 (en) * | 2011-11-29 | 2014-04-22 | Hughes Network Systems, Llc | Method and system for controlling TCP traffic with random early detection and window size adjustments |
US9515942B2 (en) * | 2012-03-15 | 2016-12-06 | Intel Corporation | Method and system for access point congestion detection and reduction |
US9088905B2 (en) * | 2012-04-23 | 2015-07-21 | Hughes Network Systems, Llc | Method and apparatus for load balancing on a priority level basis over shared communications channels of a communications system |
US9319329B2 (en) * | 2013-10-14 | 2016-04-19 | Google Inc. | Pacing enhanced packet forwarding/switching and congestion avoidance |
JP6701196B2 (en) | 2014-12-10 | 2020-05-27 | ノキア ソリューションズ アンド ネットワークス オサケユキチュア | Enhancement of quality of experience (QoE) in communication |
US10523571B2 (en) * | 2015-03-30 | 2019-12-31 | British Telecommunications Public Limited Company | Processing data items in a communications network |
-
2017
- 2017-11-07 US US15/805,989 patent/US10735324B2/en active Active
-
2018
- 2018-10-26 GB GB2006912.6A patent/GB2581722B/en active Active
- 2018-10-26 WO PCT/US2018/057839 patent/WO2019094211A1/en active Application Filing
- 2018-10-26 DE DE112018005429.2T patent/DE112018005429T5/en active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110290428A (en) * | 2019-06-26 | 2019-09-27 | 腾讯科技(深圳)有限公司 | A kind of jamming control method, device, terminal and storage medium |
CN110365600A (en) * | 2019-07-30 | 2019-10-22 | 广州市百果园信息技术有限公司 | A kind of jamming control method based on BBR, device, equipment and storage medium |
JP7638537B2 (en) | 2019-08-08 | 2025-03-04 | デジェロ ラブス インコーポレイテッド | System and method for managing data packet communications - Patents.com |
US11503615B2 (en) | 2019-12-31 | 2022-11-15 | Hughes Network Systems, Llc | Bandwidth allocation using machine learning |
US11689944B2 (en) | 2019-12-31 | 2023-06-27 | Hughes Network Systems, Llc | Traffic flow classification using machine learning |
US12047994B2 (en) | 2019-12-31 | 2024-07-23 | Hughes Network Systems, Llc | Bandwidth allocation using machine learning |
US11483249B2 (en) * | 2020-09-29 | 2022-10-25 | Edgecast Inc. | Systems and methods for dynamic optimization of network congestion control |
CN114422443A (en) * | 2022-01-24 | 2022-04-29 | 西安电子科技大学 | A TCP Congestion Control Method for Satellite Networks Based on Bandwidth Estimation and Congestion Prediction |
Also Published As
Publication number | Publication date |
---|---|
GB2581722A8 (en) | 2020-10-07 |
GB2581722B (en) | 2022-02-09 |
US10735324B2 (en) | 2020-08-04 |
GB202006912D0 (en) | 2020-06-24 |
WO2019094211A1 (en) | 2019-05-16 |
DE112018005429T5 (en) | 2020-08-13 |
GB2581722A (en) | 2020-08-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10735324B2 (en) | Bottleneck bandwidth and round-trip propagation time (BBR) congestion control with random early detection (RED) | |
US10659367B2 (en) | System and method for rate-based packet transmission over a network | |
US10218620B2 (en) | Methods and nodes for congestion control | |
EP1382219B1 (en) | Method and device for robust real-time estimation of bottleneck bandwidth | |
US8031602B2 (en) | Estimating wireless processing device queue length and estimating signal reception quality in a wireless network | |
EP2087662B1 (en) | A method and a system for down link control in a cellular telephony system | |
EP1704684B1 (en) | Method and device for controlling a queue buffer | |
US20090010165A1 (en) | Apparatus and method for limiting packet transmission rate in communication system | |
EP3257206A1 (en) | Ethernet congestion control and prevention | |
US20130170342A1 (en) | Data communication systems and methods | |
CN107453848A (en) | Data transferring method and data link | |
US20070286070A1 (en) | Method and Device for Controlling a Queue Buffer | |
US20110292800A1 (en) | Systems and Methods For Controlling Data Transmission Rates | |
EP3028419A1 (en) | Fast friendly start for a data flow | |
KR20150074018A (en) | System and method for a tcp mapper | |
US8908524B2 (en) | Method of congestion detection in a cellular radio system | |
US9391898B2 (en) | Non-congestive loss in HSPA congestion control | |
US20130188511A1 (en) | Method and system for controlling transmission rate of datagrams in a packet-switched network | |
Chen et al. | Congestion-aware mac layer adaptation to improve video teleconferencing over wi-fi | |
CN105162717B (en) | A kind of control method and system for RDSS satellite communication system Inbound traffics | |
CN118337704A (en) | Congestion control method and system thereof | |
Tekala et al. | Throughput analysis of Scalable TCP congestion control | |
Lee et al. | Enhancing TCP throughput and fairness with a timer-based transmission control over heterogeneous networks | |
Pötsch et al. | The Verus Protocol | |
Wu et al. | Resolving Bufferbloat Problem in 802.11 n WLAN by Weakening MAC Loss Recovery for TCP Stream |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: HUGHES NETWORK SYSTEMS, LLC, MARYLAND Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:TORRES, ROB;XU, JUN;GUPTA, VIVEK;SIGNING DATES FROM 20171101 TO 20171106;REEL/FRAME:044057/0164 |
|
FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
AS | Assignment |
Owner name: WELLS FARGO BANK, NATIONAL ASSOCIATION - AS COLLAT Free format text: SECURITY INTEREST;ASSIGNOR:HUGHES NETWORK SYSTEMS, LLC;REEL/FRAME:044966/0156 Effective date: 20180215 Owner name: WELLS FARGO BANK, NATIONAL ASSOCIATION - AS COLLATERAL AGENT, NEW YORK Free format text: SECURITY INTEREST;ASSIGNOR:HUGHES NETWORK SYSTEMS, LLC;REEL/FRAME:044966/0156 Effective date: 20180215 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
AS | Assignment |
Owner name: U.S. BANK NATIONAL ASSOCIATION, MINNESOTA Free format text: ASSIGNMENT OF PATENT SECURITY AGREEMENTS;ASSIGNOR:WELLS FARGO BANK, NATIONAL ASSOCIATION;REEL/FRAME:050600/0314 Effective date: 20191001 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE AFTER FINAL ACTION FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
AS | Assignment |
Owner name: U.S. BANK NATIONAL ASSOCIATION, MINNESOTA Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION NUMBER 15649418 PREVIOUSLY RECORDED ON REEL 050600 FRAME 0314. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT OF PATENT SECURITY AGREEMENTS;ASSIGNOR:WELLS FARGO, NATIONAL BANK ASSOCIATION;REEL/FRAME:053703/0367 Effective date: 20191001 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |