BIC TCP

BIC TCP (Binary Increase Congestion control) is one of the congestion control algorithms that can be used for Transmission Control Protocol (TCP). BIC is optimized for high speed networks with high latency: so-called "long fat networks". For these networks, BIC has significant advantage over previous congestion control schemes in correcting for severely underutilized bandwidth.[1]

BIC implements a unique congestion window (cwnd) algorithm. This algorithm tries to find the maximum cwnd by searching in three parts: binary search increase, additive increase, and slow start. When a network failure occurs, the BIC uses multiplicative decrease in correcting the cwnd.[2]

BIC TCP is implemented and used by default in Linux kernels 2.6.8 and above. The default implementation was again changed to CUBIC TCP in the 2.6.19 version.

Algorithm

Define the following variables:

 Smax:    the maximum increment
 Smin:    the minimum increment
 wmax:    the maximum window size  
 β:       multiplicative window decrease factor
 cwnd:    congestion window size  
 bic_inc: window increment per RTT (round trip time)

At every RTT interval update cwnd with the following:

If no packets are dropped, the congestion window (cwnd) increases in three distinct ways: binary search increase, additive increase, and slow start. In each step, one is used as an increment.

One step of increasing cwnd:

 if (cwnd < wmax)          // binary search OR additive
   bic_inc = (wmax - cwnd) / 2;
 else                     // slow start OR additive
   bic_inc = cwnd - wmax;
 if (bic_inc > Smax)      // additive
   bic_inc = Smax;
 else if (bic_inc < Smin) // binary search OR slow start
   bic_inc = Smin;
 cwnd = cwnd + (bic_inc / cwnd);

If one or more packets are dropped, the cwnd is reduced using multiplicative decrease. This requires β, which is used in decreasing cwnd by (100×β)%. In the case of two flows, one with a large cwnd and the other a small cwnd, fast convergence is used to decrease the greater cwnd flow's wmax at a greater rate than the smaller cwnd's flow to allow faster convergence of the greater cwnd's flow when increasing its cwnd.

One step of decreasing cwnd:

 if (cwnd < wmax) // fast convergence
   wmax = cwnd * (2-β) / 2;
 else 
   wmax = cwnd;
 cwnd = cwnd * (1-β);
gollark: Troubling.
gollark: <@332271551481118732> review draft:```Dear Mrs McGough,Given the current pandemic situation, and the school's mitigations to deal with this, I think it would be sensible to consider allowing sixth-form students (and potentially others) to remote-learn a few (2?) days a week.The new policies, such as staying in fixed areas of the school, shortened lunch breaks, the lack of vending machine access, and extracurricular activities being rescheduled, while necessary to ensure safety, seem as if they will introduce significant hassle and complexity to life at school.I think that part-time remote learning is a decent partial solution to this, with additional benefits like keeping possible virus spread even lower due to fewer people being physically present. While it could introduce additional work for teachers, they may have to prepare work for those out of school due to the virus anyway, and sixth form is apparently meant to include more self-directed work than other school years.Please consider my suggestion,Oliver Marks```
gollark: Rust isn't as popular.
gollark: No, Ferris has been around for years, and also ew.
gollark: https://www.rust-lang.org/

See also

References

  1. "BIC FAQ". www4.ncsu.edu. Retrieved December 25, 2018.
  2. "Binary increase congestion control (BIC) for fast long-distance networks - IEEE Conference Publication". doi:10.1109/INFCOM.2004.1354672. Cite journal requires |journal= (help)
  • Home Page.


This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.